The branch, master has been updated
via f2b9b1923d69b50dbd9da3c7e1d1bf74a0b75a2d (commit)
from 59db32b433ea9e7766ec7fac994860ed15d7ed7d (commit)
- Log -----------------------------------------------------------------
commit f2b9b1923d69b50dbd9da3c7e1d1bf74a0b75a2d
Author: Romain Beauxis <[email protected]>
AuthorDate: Tue Sep 30 20:23:04 2025 -0500
Commit: Lynne <[email protected]>
CommitDate: Sun Nov 9 10:46:08 2025 +0000
Don't reset last{pts,dts} on new sequentialized ogg streams.
This fixes PTS/DTS discontinuity on sequentialized ogg streams.
diff --git a/libavformat/oggdec.c b/libavformat/oggdec.c
index 9f3a92a5ea..18ca3a6f68 100644
--- a/libavformat/oggdec.c
+++ b/libavformat/oggdec.c
@@ -237,8 +237,10 @@ static int ogg_replace_stream(AVFormatContext *s, uint32_t
serial, char *magic,
os->serial = serial;
os->lastpts = 0;
os->lastdts = 0;
+ os->flags = 0;
os->start_trimming = 0;
os->end_trimming = 0;
+ os->replace = 1;
return i;
}
@@ -879,6 +881,11 @@ retry:
os->end_trimming = 0;
}
+ if (os->replace) {
+ os->replace = 0;
+ pkt->dts = pkt->pts = AV_NOPTS_VALUE;
+ }
+
if (os->new_metadata) {
ret = av_packet_add_side_data(pkt, AV_PKT_DATA_STRINGS_METADATA,
os->new_metadata, os->new_metadata_size);
diff --git a/libavformat/oggdec.h b/libavformat/oggdec.h
index b051b651e3..f29912bca8 100644
--- a/libavformat/oggdec.h
+++ b/libavformat/oggdec.h
@@ -92,6 +92,7 @@ struct ogg_stream {
int nb_header; ///< set to the number of parsed headers
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 replace; // < set to 1 after initializing a new chained stream
uint8_t *new_metadata;
size_t new_metadata_size;
uint8_t *new_extradata;
diff --git a/tests/ref/fate/ogg-flac-chained-meta.txt
b/tests/ref/fate/ogg-flac-chained-meta.txt
index 5abf37dcee..877b3f3173 100644
--- a/tests/ref/fate/ogg-flac-chained-meta.txt
+++ b/tests/ref/fate/ogg-flac-chained-meta.txt
@@ -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, packet PTS: 4608, packet DTS: 4608
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, frame PTS: 0, metadata: encoder=Lavc61.19.100 flac:title=Second
Stream
-Stream ID: 0, packet PTS: 4608, packet DTS: 4608
-Stream ID: 0, frame PTS: 4608, metadata: N/A
+Stream ID: 0, frame PTS: 8820, metadata: encoder=Lavc61.19.100
flac:title=Second Stream
+Stream ID: 0, packet PTS: 13428, packet DTS: 13428
+Stream ID: 0, frame PTS: 13428, metadata: N/A
diff --git a/tests/ref/fate/ogg-opus-chained-meta.txt
b/tests/ref/fate/ogg-opus-chained-meta.txt
index aad9b83700..5c2b9d0d44 100644
--- a/tests/ref/fate/ogg-opus-chained-meta.txt
+++ b/tests/ref/fate/ogg-opus-chained-meta.txt
@@ -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, packet PTS: 4488, packet DTS: 4488
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, frame PTS: -312, metadata: encoder=Lavc61.19.100
libopus:title=Second Stream
-Stream ID: 0, packet PTS: 648, packet DTS: 648
-Stream ID: 0, frame PTS: 648, metadata: N/A
-Stream ID: 0, packet PTS: 1608, packet DTS: 1608
-Stream ID: 0, frame PTS: 1608, metadata: N/A
-Stream ID: 0, packet PTS: 2568, packet DTS: 2568
-Stream ID: 0, frame PTS: 2568, metadata: N/A
-Stream ID: 0, packet PTS: 3528, packet DTS: 3528
-Stream ID: 0, frame PTS: 3528, metadata: N/A
-Stream ID: 0, packet PTS: 4488, packet DTS: 4488
-Stream ID: 0, frame PTS: 4488, metadata: N/A
+Stream ID: 0, frame PTS: 4800, metadata: encoder=Lavc61.19.100
libopus:title=Second Stream
+Stream ID: 0, packet PTS: 5760, packet DTS: 5760
+Stream ID: 0, frame PTS: 5760, metadata: N/A
+Stream ID: 0, packet PTS: 6720, packet DTS: 6720
+Stream ID: 0, frame PTS: 6720, metadata: N/A
+Stream ID: 0, packet PTS: 7680, packet DTS: 7680
+Stream ID: 0, frame PTS: 7680, metadata: N/A
+Stream ID: 0, packet PTS: 8640, packet DTS: 8640
+Stream ID: 0, frame PTS: 8640, metadata: N/A
+Stream ID: 0, packet PTS: 9600, packet DTS: 9600
+Stream ID: 0, frame PTS: 9600, metadata: N/A
diff --git a/tests/ref/fate/ogg-vorbis-chained-meta.txt
b/tests/ref/fate/ogg-vorbis-chained-meta.txt
index 60d9aeb9fa..5ec756663d 100644
--- a/tests/ref/fate/ogg-vorbis-chained-meta.txt
+++ b/tests/ref/fate/ogg-vorbis-chained-meta.txt
@@ -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, packet PTS: 704, packet DTS: 704
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, frame PTS: 0, metadata: encoder=Lavc61.19.100
libvorbis:title=Second Stream
-Stream ID: 0, packet PTS: 128, packet DTS: 128
-Stream ID: 0, frame PTS: 128, metadata: N/A
-Stream ID: 0, packet PTS: 704, packet DTS: 704
-Stream ID: 0, frame PTS: 704, metadata: N/A
+Stream ID: 0, frame PTS: 1323, metadata: encoder=Lavc61.19.100
libvorbis:title=Second Stream
+Stream ID: 0, packet PTS: 1451, packet DTS: 1451
+Stream ID: 0, frame PTS: 1451, metadata: N/A
+Stream ID: 0, packet PTS: 2027, packet DTS: 2027
+Stream ID: 0, frame PTS: 2027, metadata: N/A
-----------------------------------------------------------------------
Summary of changes:
libavformat/oggdec.c | 7 +++++++
libavformat/oggdec.h | 1 +
tests/ref/fate/ogg-flac-chained-meta.txt | 8 ++++----
tests/ref/fate/ogg-opus-chained-meta.txt | 24 ++++++++++++------------
tests/ref/fate/ogg-vorbis-chained-meta.txt | 12 ++++++------
5 files changed, 30 insertions(+), 22 deletions(-)
hooks/post-receive
--
_______________________________________________
ffmpeg-cvslog mailing list -- [email protected]
To unsubscribe send an email to [email protected]