1
0
mirror of https://github.com/FFmpeg/FFmpeg.git synced 2025-11-23 21:54:53 +02:00

Don't reset last{pts,dts} on new sequentialized ogg streams.

This fixes PTS/DTS discontinuity on sequentialized ogg streams.
This commit is contained in:
Romain Beauxis
2025-09-30 20:23:04 -05:00
committed by Lynne
parent 59db32b433
commit f2b9b1923d
5 changed files with 30 additions and 22 deletions

View File

@@ -237,8 +237,10 @@ static int ogg_replace_stream(AVFormatContext *s, uint32_t serial, char *magic,
os->serial = serial; os->serial = serial;
os->lastpts = 0; os->lastpts = 0;
os->lastdts = 0; os->lastdts = 0;
os->flags = 0;
os->start_trimming = 0; os->start_trimming = 0;
os->end_trimming = 0; os->end_trimming = 0;
os->replace = 1;
return i; return i;
} }
@@ -879,6 +881,11 @@ retry:
os->end_trimming = 0; os->end_trimming = 0;
} }
if (os->replace) {
os->replace = 0;
pkt->dts = pkt->pts = AV_NOPTS_VALUE;
}
if (os->new_metadata) { if (os->new_metadata) {
ret = av_packet_add_side_data(pkt, AV_PKT_DATA_STRINGS_METADATA, ret = av_packet_add_side_data(pkt, AV_PKT_DATA_STRINGS_METADATA,
os->new_metadata, os->new_metadata_size); os->new_metadata, os->new_metadata_size);

View File

@@ -92,6 +92,7 @@ struct ogg_stream {
int nb_header; ///< set to the number of parsed headers int nb_header; ///< set to the number of parsed headers
int start_trimming; ///< set the number of packets to drop from the start int start_trimming; ///< set the number of packets to drop from the start
int end_trimming; ///< set the number of packets to drop from the end int end_trimming; ///< set the number of packets to drop from the end
int replace; // < set to 1 after initializing a new chained stream
uint8_t *new_metadata; uint8_t *new_metadata;
size_t new_metadata_size; size_t new_metadata_size;
uint8_t *new_extradata; uint8_t *new_extradata;

View File

@@ -4,8 +4,8 @@ Stream ID: 0, new metadata: encoder=Lavc61.19.100 flac:title=First Stream
Stream ID: 0, frame PTS: 0, metadata: N/A Stream ID: 0, frame PTS: 0, metadata: N/A
Stream ID: 0, packet PTS: 4608, packet DTS: 4608 Stream ID: 0, packet PTS: 4608, packet DTS: 4608
Stream ID: 0, frame PTS: 4608, metadata: N/A Stream ID: 0, frame PTS: 4608, metadata: N/A
Stream ID: 0, packet PTS: 0, packet DTS: 0 Stream ID: 0, packet PTS: 8820, packet DTS: 8820
Stream ID: 0, new metadata: encoder=Lavc61.19.100 flac:title=Second Stream Stream ID: 0, new metadata: encoder=Lavc61.19.100 flac:title=Second Stream
Stream ID: 0, frame PTS: 0, metadata: encoder=Lavc61.19.100 flac:title=Second Stream Stream ID: 0, frame PTS: 8820, metadata: encoder=Lavc61.19.100 flac:title=Second Stream
Stream ID: 0, packet PTS: 4608, packet DTS: 4608 Stream ID: 0, packet PTS: 13428, packet DTS: 13428
Stream ID: 0, frame PTS: 4608, metadata: N/A Stream ID: 0, frame PTS: 13428, metadata: N/A

View File

@@ -12,16 +12,16 @@ Stream ID: 0, packet PTS: 3528, packet DTS: 3528
Stream ID: 0, frame PTS: 3528, metadata: N/A Stream ID: 0, frame PTS: 3528, metadata: N/A
Stream ID: 0, packet PTS: 4488, packet DTS: 4488 Stream ID: 0, packet PTS: 4488, packet DTS: 4488
Stream ID: 0, frame PTS: 4488, metadata: N/A Stream ID: 0, frame PTS: 4488, metadata: N/A
Stream ID: 0, packet PTS: -312, packet DTS: -312 Stream ID: 0, packet PTS: 4800, packet DTS: 4800
Stream ID: 0, new metadata: encoder=Lavc61.19.100 libopus:title=Second Stream Stream ID: 0, new metadata: encoder=Lavc61.19.100 libopus:title=Second Stream
Stream ID: 0, frame PTS: -312, metadata: encoder=Lavc61.19.100 libopus:title=Second Stream Stream ID: 0, frame PTS: 4800, metadata: encoder=Lavc61.19.100 libopus:title=Second Stream
Stream ID: 0, packet PTS: 648, packet DTS: 648 Stream ID: 0, packet PTS: 5760, packet DTS: 5760
Stream ID: 0, frame PTS: 648, metadata: N/A Stream ID: 0, frame PTS: 5760, metadata: N/A
Stream ID: 0, packet PTS: 1608, packet DTS: 1608 Stream ID: 0, packet PTS: 6720, packet DTS: 6720
Stream ID: 0, frame PTS: 1608, metadata: N/A Stream ID: 0, frame PTS: 6720, metadata: N/A
Stream ID: 0, packet PTS: 2568, packet DTS: 2568 Stream ID: 0, packet PTS: 7680, packet DTS: 7680
Stream ID: 0, frame PTS: 2568, metadata: N/A Stream ID: 0, frame PTS: 7680, metadata: N/A
Stream ID: 0, packet PTS: 3528, packet DTS: 3528 Stream ID: 0, packet PTS: 8640, packet DTS: 8640
Stream ID: 0, frame PTS: 3528, metadata: N/A Stream ID: 0, frame PTS: 8640, metadata: N/A
Stream ID: 0, packet PTS: 4488, packet DTS: 4488 Stream ID: 0, packet PTS: 9600, packet DTS: 9600
Stream ID: 0, frame PTS: 4488, metadata: N/A Stream ID: 0, frame PTS: 9600, metadata: N/A

View File

@@ -5,10 +5,10 @@ Stream ID: 0, packet PTS: 128, packet DTS: 128
Stream ID: 0, frame PTS: 128, metadata: N/A Stream ID: 0, frame PTS: 128, metadata: N/A
Stream ID: 0, packet PTS: 704, packet DTS: 704 Stream ID: 0, packet PTS: 704, packet DTS: 704
Stream ID: 0, frame PTS: 704, metadata: N/A Stream ID: 0, frame PTS: 704, metadata: N/A
Stream ID: 0, packet PTS: 0, packet DTS: 0 Stream ID: 0, packet PTS: 1323, packet DTS: 1323
Stream ID: 0, new metadata: encoder=Lavc61.19.100 libvorbis:title=Second Stream Stream ID: 0, new metadata: encoder=Lavc61.19.100 libvorbis:title=Second Stream
Stream ID: 0, frame PTS: 0, metadata: encoder=Lavc61.19.100 libvorbis:title=Second Stream Stream ID: 0, frame PTS: 1323, metadata: encoder=Lavc61.19.100 libvorbis:title=Second Stream
Stream ID: 0, packet PTS: 128, packet DTS: 128 Stream ID: 0, packet PTS: 1451, packet DTS: 1451
Stream ID: 0, frame PTS: 128, metadata: N/A Stream ID: 0, frame PTS: 1451, metadata: N/A
Stream ID: 0, packet PTS: 704, packet DTS: 704 Stream ID: 0, packet PTS: 2027, packet DTS: 2027
Stream ID: 0, frame PTS: 704, metadata: N/A Stream ID: 0, frame PTS: 2027, metadata: N/A