* [FFmpeg-devel] [PATCH v6 0/4] Remove chained ogg stream header packets from the demuxer
@ 2025-05-19 14:46 Romain Beauxis
2025-05-19 14:46 ` [FFmpeg-devel] [PATCH v6 1/4] libavformat/oggdec.{c, h}: Add new_extradata, use it to pass extradata to the next decoded packet Romain Beauxis
` (3 more replies)
0 siblings, 4 replies; 9+ messages in thread
From: Romain Beauxis @ 2025-05-19 14:46 UTC (permalink / raw)
To: ffmpeg-devel; +Cc: Romain Beauxis
## Changes since last revision:
* Patches for opus and flac have been comitted.
* Split up code refactorization and new extradata mechanism.
* Added full header+setup as extradata passed down to the vorbis
decoder.
Romain Beauxis (4):
libavformat/oggdec.{c,h}: Add new_extradata, use it to pass extradata
to the next decoded packet.
ogg/vorbis: factor out header processing logic.
ogg/vorbis: implement header packet skip in chained ogg bitstreams.
libavformat/oggdec.h: Change paket function documentation to return 1
on header packets only.
libavcodec/vorbis_parser.h | 11 ++
libavcodec/vorbisdec.c | 76 ++++++----
libavformat/oggdec.c | 11 ++
libavformat/oggdec.h | 6 +-
libavformat/oggparsevorbis.c | 167 +++++++++++++++------
tests/ref/fate/ogg-vorbis-chained-meta.txt | 3 -
6 files changed, 191 insertions(+), 83 deletions(-)
--
2.39.5 (Apple Git-154)
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
^ permalink raw reply [flat|nested] 9+ messages in thread
* [FFmpeg-devel] [PATCH v6 1/4] libavformat/oggdec.{c, h}: Add new_extradata, use it to pass extradata to the next decoded packet.
2025-05-19 14:46 [FFmpeg-devel] [PATCH v6 0/4] Remove chained ogg stream header packets from the demuxer Romain Beauxis
@ 2025-05-19 14:46 ` Romain Beauxis
2025-05-19 14:46 ` [FFmpeg-devel] [PATCH v6 2/4] ogg/vorbis: factor out header processing logic Romain Beauxis
` (2 subsequent siblings)
3 siblings, 0 replies; 9+ messages in thread
From: Romain Beauxis @ 2025-05-19 14:46 UTC (permalink / raw)
To: ffmpeg-devel; +Cc: Romain Beauxis
---
libavformat/oggdec.c | 11 +++++++++++
libavformat/oggdec.h | 2 ++
2 files changed, 13 insertions(+)
diff --git a/libavformat/oggdec.c b/libavformat/oggdec.c
index 5557eb4a14..cb77cdd994 100644
--- a/libavformat/oggdec.c
+++ b/libavformat/oggdec.c
@@ -77,6 +77,7 @@ static void free_stream(AVFormatContext *s, int i)
av_freep(&stream->private);
av_freep(&stream->new_metadata);
+ av_freep(&stream->new_extradata);
}
//FIXME We could avoid some structure duplication
@@ -888,6 +889,16 @@ retry:
os->new_metadata_size = 0;
}
+ if (os->new_extradata) {
+ ret = av_packet_add_side_data(pkt, AV_PKT_DATA_NEW_EXTRADATA,
+ os->new_extradata, os->new_extradata_size);
+ if (ret < 0)
+ return ret;
+
+ os->new_extradata = NULL;
+ os->new_extradata_size = 0;
+ }
+
return psize;
}
diff --git a/libavformat/oggdec.h b/libavformat/oggdec.h
index bc670d0f1e..5083de646c 100644
--- a/libavformat/oggdec.h
+++ b/libavformat/oggdec.h
@@ -94,6 +94,8 @@ struct ogg_stream {
int end_trimming; ///< set the number of packets to drop from the end
uint8_t *new_metadata;
size_t new_metadata_size;
+ uint8_t *new_extradata;
+ size_t new_extradata_size;
void *private;
};
--
2.39.5 (Apple Git-154)
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
^ permalink raw reply [flat|nested] 9+ messages in thread
* [FFmpeg-devel] [PATCH v6 2/4] ogg/vorbis: factor out header processing logic.
2025-05-19 14:46 [FFmpeg-devel] [PATCH v6 0/4] Remove chained ogg stream header packets from the demuxer Romain Beauxis
2025-05-19 14:46 ` [FFmpeg-devel] [PATCH v6 1/4] libavformat/oggdec.{c, h}: Add new_extradata, use it to pass extradata to the next decoded packet Romain Beauxis
@ 2025-05-19 14:46 ` Romain Beauxis
2025-05-19 14:46 ` [FFmpeg-devel] [PATCH v6 3/4] ogg/vorbis: implement header packet skip in chained ogg bitstreams Romain Beauxis
2025-05-19 14:46 ` [FFmpeg-devel] [PATCH v6 4/4] libavformat/oggdec.h: Change paket function documentation to return 1 on header packets only Romain Beauxis
3 siblings, 0 replies; 9+ messages in thread
From: Romain Beauxis @ 2025-05-19 14:46 UTC (permalink / raw)
To: ffmpeg-devel; +Cc: Romain Beauxis
---
libavformat/oggparsevorbis.c | 104 ++++++++++++++++++++---------------
1 file changed, 60 insertions(+), 44 deletions(-)
diff --git a/libavformat/oggparsevorbis.c b/libavformat/oggparsevorbis.c
index 9f50ab9ffc..62cc2da6de 100644
--- a/libavformat/oggparsevorbis.c
+++ b/libavformat/oggparsevorbis.c
@@ -293,6 +293,62 @@ static int vorbis_update_metadata(AVFormatContext *s, int idx)
return ret;
}
+static int vorbis_parse_header(AVFormatContext *s, AVStream *st,
+ const uint8_t *p, unsigned int psize)
+{
+ unsigned blocksize, bs0, bs1;
+ int srate;
+ int channels;
+
+ if (psize != 30)
+ return AVERROR_INVALIDDATA;
+
+ p += 7; /* skip "\001vorbis" tag */
+
+ if (bytestream_get_le32(&p) != 0) /* vorbis_version */
+ return AVERROR_INVALIDDATA;
+
+ channels = bytestream_get_byte(&p);
+ if (st->codecpar->ch_layout.nb_channels &&
+ channels != st->codecpar->ch_layout.nb_channels) {
+ av_log(s, AV_LOG_ERROR, "Channel change is not supported\n");
+ return AVERROR_PATCHWELCOME;
+ }
+ st->codecpar->ch_layout.nb_channels = channels;
+ srate = bytestream_get_le32(&p);
+ p += 4; // skip maximum bitrate
+ st->codecpar->bit_rate = bytestream_get_le32(&p); // nominal bitrate
+ p += 4; // skip minimum bitrate
+
+ blocksize = bytestream_get_byte(&p);
+ bs0 = blocksize & 15;
+ bs1 = blocksize >> 4;
+
+ if (bs0 > bs1)
+ return AVERROR_INVALIDDATA;
+ if (bs0 < 6 || bs1 > 13)
+ return AVERROR_INVALIDDATA;
+
+ if (bytestream_get_byte(&p) != 1) /* framing_flag */
+ return AVERROR_INVALIDDATA;
+
+ st->codecpar->codec_type = AVMEDIA_TYPE_AUDIO;
+ st->codecpar->codec_id = AV_CODEC_ID_VORBIS;
+
+ if (srate > 0) {
+ if (st->codecpar->sample_rate &&
+ srate != st->codecpar->sample_rate) {
+ av_log(s, AV_LOG_ERROR, "Sample rate change is not supported\n");
+ return AVERROR_PATCHWELCOME;
+ }
+
+ st->codecpar->sample_rate = srate;
+ avpriv_set_pts_info(st, 64, 1, srate);
+ }
+
+ return 1;
+}
+
static int vorbis_header(AVFormatContext *s, int idx)
{
struct ogg *ogg = s->priv_data;
@@ -329,50 +385,10 @@ static int vorbis_header(AVFormatContext *s, int idx)
priv->packet[pkt_type >> 1] = av_memdup(os->buf + os->pstart, os->psize);
if (!priv->packet[pkt_type >> 1])
return AVERROR(ENOMEM);
- if (os->buf[os->pstart] == 1) {
- const uint8_t *p = os->buf + os->pstart + 7; /* skip "\001vorbis" tag */
- unsigned blocksize, bs0, bs1;
- int srate;
- int channels;
-
- if (os->psize != 30)
- return AVERROR_INVALIDDATA;
-
- if (bytestream_get_le32(&p) != 0) /* vorbis_version */
- return AVERROR_INVALIDDATA;
-
- channels = bytestream_get_byte(&p);
- if (st->codecpar->ch_layout.nb_channels &&
- channels != st->codecpar->ch_layout.nb_channels) {
- av_log(s, AV_LOG_ERROR, "Channel change is not supported\n");
- return AVERROR_PATCHWELCOME;
- }
- st->codecpar->ch_layout.nb_channels = channels;
- srate = bytestream_get_le32(&p);
- p += 4; // skip maximum bitrate
- st->codecpar->bit_rate = bytestream_get_le32(&p); // nominal bitrate
- p += 4; // skip minimum bitrate
-
- blocksize = bytestream_get_byte(&p);
- bs0 = blocksize & 15;
- bs1 = blocksize >> 4;
-
- if (bs0 > bs1)
- return AVERROR_INVALIDDATA;
- if (bs0 < 6 || bs1 > 13)
- return AVERROR_INVALIDDATA;
-
- if (bytestream_get_byte(&p) != 1) /* framing_flag */
- return AVERROR_INVALIDDATA;
-
- st->codecpar->codec_type = AVMEDIA_TYPE_AUDIO;
- st->codecpar->codec_id = AV_CODEC_ID_VORBIS;
-
- if (srate > 0) {
- st->codecpar->sample_rate = srate;
- avpriv_set_pts_info(st, 64, 1, srate);
- }
- } else if (os->buf[os->pstart] == 3) {
+ if (pkt_type == 1)
+ return vorbis_parse_header(s, st, os->buf + os->pstart, os->psize);
+
+ if (pkt_type == 3) {
if (vorbis_update_metadata(s, idx) >= 0 && priv->len[1] > 10) {
unsigned new_len;
--
2.39.5 (Apple Git-154)
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
^ permalink raw reply [flat|nested] 9+ messages in thread
* [FFmpeg-devel] [PATCH v6 3/4] ogg/vorbis: implement header packet skip in chained ogg bitstreams.
2025-05-19 14:46 [FFmpeg-devel] [PATCH v6 0/4] Remove chained ogg stream header packets from the demuxer Romain Beauxis
2025-05-19 14:46 ` [FFmpeg-devel] [PATCH v6 1/4] libavformat/oggdec.{c, h}: Add new_extradata, use it to pass extradata to the next decoded packet Romain Beauxis
2025-05-19 14:46 ` [FFmpeg-devel] [PATCH v6 2/4] ogg/vorbis: factor out header processing logic Romain Beauxis
@ 2025-05-19 14:46 ` Romain Beauxis
2025-05-20 21:45 ` Michael Niedermayer
2025-05-19 14:46 ` [FFmpeg-devel] [PATCH v6 4/4] libavformat/oggdec.h: Change paket function documentation to return 1 on header packets only Romain Beauxis
3 siblings, 1 reply; 9+ messages in thread
From: Romain Beauxis @ 2025-05-19 14:46 UTC (permalink / raw)
To: ffmpeg-devel; +Cc: Romain Beauxis
---
libavcodec/vorbis_parser.h | 11 ++++
libavcodec/vorbisdec.c | 76 +++++++++++++---------
libavformat/oggparsevorbis.c | 63 +++++++++++++++++-
tests/ref/fate/ogg-vorbis-chained-meta.txt | 3 -
4 files changed, 116 insertions(+), 37 deletions(-)
diff --git a/libavcodec/vorbis_parser.h b/libavcodec/vorbis_parser.h
index 789932ac49..b176fe536c 100644
--- a/libavcodec/vorbis_parser.h
+++ b/libavcodec/vorbis_parser.h
@@ -30,6 +30,17 @@
typedef struct AVVorbisParseContext AVVorbisParseContext;
+/**
+ * Used by the vorbis parser to pass new chained stream headers
+ * as extradata.
+ */
+typedef struct vorbis_new_extradata {
+ uint8_t *header;
+ size_t header_size;
+ uint8_t *setup;
+ size_t setup_size;
+} vorbis_new_extradata;
+
/**
* Allocate and initialize the Vorbis parser using headers in the extradata.
*/
diff --git a/libavcodec/vorbisdec.c b/libavcodec/vorbisdec.c
index adbd726183..c9bbc60b49 100644
--- a/libavcodec/vorbisdec.c
+++ b/libavcodec/vorbisdec.c
@@ -43,6 +43,7 @@
#include "vorbis.h"
#include "vorbisdsp.h"
#include "vorbis_data.h"
+#include "vorbis_parser.h"
#include "xiph.h"
#define V_NB_BITS 8
@@ -1778,47 +1779,60 @@ static int vorbis_decode_frame(AVCodecContext *avctx, AVFrame *frame,
GetBitContext *gb = &vc->gb;
float *channel_ptrs[255];
int i, len, ret;
+ size_t new_extradata_size;
+ vorbis_new_extradata *new_extradata;
+ const uint8_t *header;
+ const uint8_t *setup;
ff_dlog(NULL, "packet length %d \n", buf_size);
- if (*buf == 1 && buf_size > 7) {
- if ((ret = init_get_bits8(gb, buf + 1, buf_size - 1)) < 0)
- return ret;
+ new_extradata = (vorbis_new_extradata *)av_packet_get_side_data(
+ avpkt, AV_PKT_DATA_NEW_EXTRADATA, &new_extradata_size);
- vorbis_free(vc);
- if ((ret = vorbis_parse_id_hdr(vc))) {
- av_log(avctx, AV_LOG_ERROR, "Id header corrupt.\n");
- vorbis_free(vc);
- return ret;
- }
+ if (new_extradata) {
+ header = new_extradata->header;
+ setup = new_extradata->setup;
- av_channel_layout_uninit(&avctx->ch_layout);
- if (vc->audio_channels > 8) {
- avctx->ch_layout.order = AV_CHANNEL_ORDER_UNSPEC;
- avctx->ch_layout.nb_channels = vc->audio_channels;
- } else {
- av_channel_layout_copy(&avctx->ch_layout, &ff_vorbis_ch_layouts[vc->audio_channels - 1]);
- }
+ if (header && *header == 1 && new_extradata->header_size > 7) {
+ if ((ret = init_get_bits8(
+ gb, header + 1,
+ new_extradata->header_size - 1)) < 0)
+ return ret;
- avctx->sample_rate = vc->audio_samplerate;
- return buf_size;
- }
+ vorbis_free(vc);
+ if ((ret = vorbis_parse_id_hdr(vc))) {
+ av_log(avctx, AV_LOG_ERROR, "Id header corrupt.\n");
+ vorbis_free(vc);
+ return ret;
+ }
- if (*buf == 3 && buf_size > 7) {
- av_log(avctx, AV_LOG_DEBUG, "Ignoring comment header\n");
- return buf_size;
- }
+ av_channel_layout_uninit(&avctx->ch_layout);
+ if (vc->audio_channels > 8) {
+ avctx->ch_layout.order = AV_CHANNEL_ORDER_UNSPEC;
+ avctx->ch_layout.nb_channels = vc->audio_channels;
+ } else {
+ av_channel_layout_copy(
+ &avctx->ch_layout,
+ &ff_vorbis_ch_layouts[vc->audio_channels - 1]);
+ }
- if (*buf == 5 && buf_size > 7 && vc->channel_residues && !vc->modes) {
- if ((ret = init_get_bits8(gb, buf + 1, buf_size - 1)) < 0)
- return ret;
+ avctx->sample_rate = vc->audio_samplerate;
+ return buf_size;
+ }
- if ((ret = vorbis_parse_setup_hdr(vc))) {
- av_log(avctx, AV_LOG_ERROR, "Setup header corrupt.\n");
- vorbis_free(vc);
- return ret;
+ if (setup && *setup == 5 && new_extradata->setup_size > 7 &&
+ vc->channel_residues && !vc->modes) {
+ if ((ret = init_get_bits8(
+ gb, setup + 1,
+ new_extradata->setup_size - 1)) < 0)
+ return ret;
+
+ if ((ret = vorbis_parse_setup_hdr(vc))) {
+ av_log(avctx, AV_LOG_ERROR, "Setup header corrupt.\n");
+ vorbis_free(vc);
+ return ret;
+ }
}
- return buf_size;
}
if (!vc->channel_residues || !vc->modes) {
diff --git a/libavformat/oggparsevorbis.c b/libavformat/oggparsevorbis.c
index 62cc2da6de..ee2e01f468 100644
--- a/libavformat/oggparsevorbis.c
+++ b/libavformat/oggparsevorbis.c
@@ -255,12 +255,19 @@ static void vorbis_cleanup(AVFormatContext *s, int idx)
struct ogg *ogg = s->priv_data;
struct ogg_stream *os = ogg->streams + idx;
struct oggvorbis_private *priv = os->private;
+ vorbis_new_extradata *new_extradata;
int i;
if (os->private) {
av_vorbis_parse_free(&priv->vp);
for (i = 0; i < 3; i++)
av_freep(&priv->packet[i]);
}
+
+ if (os->new_extradata) {
+ new_extradata = (vorbis_new_extradata *)os->new_extradata;
+ av_freep(&new_extradata->header);
+ av_freep(&new_extradata->setup);
+ }
}
static int vorbis_update_metadata(AVFormatContext *s, int idx)
@@ -433,7 +440,10 @@ static int vorbis_packet(AVFormatContext *s, int idx)
struct ogg *ogg = s->priv_data;
struct ogg_stream *os = ogg->streams + idx;
struct oggvorbis_private *priv = os->private;
+ vorbis_new_extradata *new_extradata;
int duration, flags = 0;
+ int skip_packet = 0;
+ int ret;
if (!priv->vp)
return AVERROR_INVALIDDATA;
@@ -496,10 +506,57 @@ static int vorbis_packet(AVFormatContext *s, int idx)
if (duration < 0) {
os->pflags |= AV_PKT_FLAG_CORRUPT;
return 0;
- } else if (flags & VORBIS_FLAG_COMMENT) {
- vorbis_update_metadata(s, idx);
+ }
+
+ if (flags & VORBIS_FLAG_HEADER) {
+ ret = vorbis_parse_header(s, s->streams[idx], os->buf + os->pstart, os->psize);
+ if (ret < 0)
+ return ret;
+
+ ret = av_reallocp(&os->new_extradata, sizeof(vorbis_new_extradata));
+ if (ret < 0)
+ return ret;
+
+ os->new_extradata_size = sizeof(vorbis_new_extradata);
+ new_extradata = (vorbis_new_extradata *)os->new_extradata;
+
+ ret = av_reallocp(&new_extradata->header, os->psize);
+ if (ret < 0)
+ return ret;
+
+ memcpy(new_extradata->header, os->buf + os->pstart, os->psize);
+ new_extradata->header_size = os->psize;
+
+ skip_packet = 1;
+ }
+
+ if (flags & VORBIS_FLAG_COMMENT) {
+ ret = vorbis_update_metadata(s, idx);
+ if (ret < 0)
+ return ret;
+
flags = 0;
+ skip_packet = 1;
}
+
+ if (flags & VORBIS_FLAG_SETUP) {
+ ret = av_reallocp(&os->new_extradata, sizeof(vorbis_new_extradata));
+ if (ret < 0)
+ return ret;
+
+ os->new_extradata_size = sizeof(vorbis_new_extradata);
+ new_extradata = (vorbis_new_extradata *)os->new_extradata;
+
+ ret = av_reallocp(&new_extradata->setup, os->psize);
+ if (ret < 0)
+ return ret;
+
+ memcpy(new_extradata->setup, os->buf + os->pstart, os->psize);
+ new_extradata->setup_size = os->psize;
+
+ skip_packet = 1;
+ }
+
os->pduration = duration;
}
@@ -521,7 +578,7 @@ static int vorbis_packet(AVFormatContext *s, int idx)
priv->final_duration += os->pduration;
}
- return 0;
+ return skip_packet;
}
const struct ogg_codec ff_vorbis_codec = {
diff --git a/tests/ref/fate/ogg-vorbis-chained-meta.txt b/tests/ref/fate/ogg-vorbis-chained-meta.txt
index b7a97c90e2..1206f86c1f 100644
--- a/tests/ref/fate/ogg-vorbis-chained-meta.txt
+++ b/tests/ref/fate/ogg-vorbis-chained-meta.txt
@@ -6,10 +6,7 @@ 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: 0, packet DTS: 0
Stream ID: 0, new metadata: encoder=Lavc61.19.100 libvorbis:title=Second Stream
-Stream ID: 0, packet PTS: 0, packet DTS: 0
-Stream ID: 0, packet PTS: 0, packet DTS: 0
Stream ID: 0, frame PTS: 0, metadata: N/A
Stream ID: 0, packet PTS: 128, packet DTS: 128
Stream ID: 0, frame PTS: 128, metadata: N/A
--
2.39.5 (Apple Git-154)
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
^ permalink raw reply [flat|nested] 9+ messages in thread
* [FFmpeg-devel] [PATCH v6 4/4] libavformat/oggdec.h: Change paket function documentation to return 1 on header packets only.
2025-05-19 14:46 [FFmpeg-devel] [PATCH v6 0/4] Remove chained ogg stream header packets from the demuxer Romain Beauxis
` (2 preceding siblings ...)
2025-05-19 14:46 ` [FFmpeg-devel] [PATCH v6 3/4] ogg/vorbis: implement header packet skip in chained ogg bitstreams Romain Beauxis
@ 2025-05-19 14:46 ` Romain Beauxis
3 siblings, 0 replies; 9+ messages in thread
From: Romain Beauxis @ 2025-05-19 14:46 UTC (permalink / raw)
To: ffmpeg-devel; +Cc: Romain Beauxis
---
libavformat/oggdec.h | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/libavformat/oggdec.h b/libavformat/oggdec.h
index 5083de646c..c15fbe738e 100644
--- a/libavformat/oggdec.h
+++ b/libavformat/oggdec.h
@@ -42,8 +42,8 @@ struct ogg_codec {
* Attempt to process a packet as a data packet
* @return < 0 (AVERROR) code or -1 on error
* == 0 if the packet was a regular data packet.
- * == 0 or 1 if the packet was a header from a chained bitstream.
- * (1 will cause the packet to be skiped in calling code (ogg_packet())
+ * == 1 if the packet was a header from a chained bitstream.
+ * This will cause the packet to be skiped in calling code (ogg_packet()
*/
int (*packet)(AVFormatContext *, int);
/**
--
2.39.5 (Apple Git-154)
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [FFmpeg-devel] [PATCH v6 3/4] ogg/vorbis: implement header packet skip in chained ogg bitstreams.
2025-05-19 14:46 ` [FFmpeg-devel] [PATCH v6 3/4] ogg/vorbis: implement header packet skip in chained ogg bitstreams Romain Beauxis
@ 2025-05-20 21:45 ` Michael Niedermayer
2025-05-20 22:45 ` Romain Beauxis
0 siblings, 1 reply; 9+ messages in thread
From: Michael Niedermayer @ 2025-05-20 21:45 UTC (permalink / raw)
To: FFmpeg development discussions and patches
[-- Attachment #1.1: Type: text/plain, Size: 1519 bytes --]
On Mon, May 19, 2025 at 09:46:38AM -0500, Romain Beauxis wrote:
> ---
> libavcodec/vorbis_parser.h | 11 ++++
> libavcodec/vorbisdec.c | 76 +++++++++++++---------
> libavformat/oggparsevorbis.c | 63 +++++++++++++++++-
> tests/ref/fate/ogg-vorbis-chained-meta.txt | 3 -
> 4 files changed, 116 insertions(+), 37 deletions(-)
breaks fate here (normal x86-64 ubuntu)
--- ./tests/ref/fate/ogg-vorbis-chained-meta.txt 2025-05-20 23:42:32.043927021 +0200
+++ tests/data/fate/ogg-vorbis-chained-meta 2025-05-20 23:43:07.908216645 +0200
@@ -7,8 +7,4 @@
Stream ID: 0, frame PTS: 704, metadata: N/A
Stream ID: 0, packet PTS: 0, packet DTS: 0
Stream ID: 0, new metadata: encoder=Lavc61.19.100 libvorbis:title=Second Stream
-Stream ID: 0, frame PTS: 0, metadata: N/A
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
Test ogg-vorbis-chained-meta failed. Look at tests/data/fate/ogg-vorbis-chained-meta.err for details.
make: *** [tests/Makefile:316: fate-ogg-vorbis-chained-meta] Error 1
[...]
--
Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB
Frequently ignored answer#1 FFmpeg bugs should be sent to our bugtracker. User
questions about the command line tools should be sent to the ffmpeg-user ML.
And questions about how to use libav* should be sent to the libav-user ML.
[-- Attachment #1.2: signature.asc --]
[-- Type: application/pgp-signature, Size: 195 bytes --]
[-- Attachment #2: Type: text/plain, Size: 251 bytes --]
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [FFmpeg-devel] [PATCH v6 3/4] ogg/vorbis: implement header packet skip in chained ogg bitstreams.
2025-05-20 21:45 ` Michael Niedermayer
@ 2025-05-20 22:45 ` Romain Beauxis
2025-05-21 7:53 ` Michael Niedermayer
0 siblings, 1 reply; 9+ messages in thread
From: Romain Beauxis @ 2025-05-20 22:45 UTC (permalink / raw)
To: FFmpeg development discussions and patches
Le mar. 20 mai 2025 à 16:46, Michael Niedermayer
<michael@niedermayer.cc> a écrit :
>
> On Mon, May 19, 2025 at 09:46:38AM -0500, Romain Beauxis wrote:
> > ---
> > libavcodec/vorbis_parser.h | 11 ++++
> > libavcodec/vorbisdec.c | 76 +++++++++++++---------
> > libavformat/oggparsevorbis.c | 63 +++++++++++++++++-
> > tests/ref/fate/ogg-vorbis-chained-meta.txt | 3 -
> > 4 files changed, 116 insertions(+), 37 deletions(-)
>
> breaks fate here (normal x86-64 ubuntu)
>
> --- ./tests/ref/fate/ogg-vorbis-chained-meta.txt 2025-05-20 23:42:32.043927021 +0200
> +++ tests/data/fate/ogg-vorbis-chained-meta 2025-05-20 23:43:07.908216645 +0200
> @@ -7,8 +7,4 @@
> Stream ID: 0, frame PTS: 704, metadata: N/A
> Stream ID: 0, packet PTS: 0, packet DTS: 0
> Stream ID: 0, new metadata: encoder=Lavc61.19.100 libvorbis:title=Second Stream
> -Stream ID: 0, frame PTS: 0, metadata: N/A
> 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
> Test ogg-vorbis-chained-meta failed. Look at tests/data/fate/ogg-vorbis-chained-meta.err for details.
> make: *** [tests/Makefile:316: fate-ogg-vorbis-chained-meta] Error 1
I'm not sure what I'm looking at. Is that the output of running the FATE tests?
This diff is already included in the patch:
```
% git show 37370e99451cf0750d5304764ba9031b80e5b3e0 tests/
commit 37370e99451cf0750d5304764ba9031b80e5b3e0 (HEAD)
Author: Romain Beauxis <romain.beauxis@gmail.com>
Date: Sat May 17 12:59:40 2025 -0500
ogg/vorbis: implement header packet skip in chained ogg bitstreams.
diff --git a/tests/ref/fate/ogg-vorbis-chained-meta.txt
b/tests/ref/fate/ogg-vorbis-chained-meta.txt
index b7a97c90e2..1206f86c1f 100644
--- a/tests/ref/fate/ogg-vorbis-chained-meta.txt
+++ b/tests/ref/fate/ogg-vorbis-chained-meta.txt
@@ -6,10 +6,7 @@ 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: 0, packet DTS: 0
Stream ID: 0, new metadata: encoder=Lavc61.19.100 libvorbis:title=Second Stream
-Stream ID: 0, packet PTS: 0, packet DTS: 0
-Stream ID: 0, packet PTS: 0, packet DTS: 0
Stream ID: 0, frame PTS: 0, metadata: N/A
Stream ID: 0, packet PTS: 128, packet DTS: 128
Stream ID: 0, frame PTS: 128, metadata: N/A
```
> [...]
> --
> Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB
>
> Frequently ignored answer#1 FFmpeg bugs should be sent to our bugtracker. User
> questions about the command line tools should be sent to the ffmpeg-user ML.
> And questions about how to use libav* should be sent to the libav-user ML.
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel@ffmpeg.org
> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>
> To unsubscribe, visit link above, or email
> ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [FFmpeg-devel] [PATCH v6 3/4] ogg/vorbis: implement header packet skip in chained ogg bitstreams.
2025-05-20 22:45 ` Romain Beauxis
@ 2025-05-21 7:53 ` Michael Niedermayer
2025-05-21 14:51 ` Romain Beauxis
0 siblings, 1 reply; 9+ messages in thread
From: Michael Niedermayer @ 2025-05-21 7:53 UTC (permalink / raw)
To: FFmpeg development discussions and patches
[-- Attachment #1.1: Type: text/plain, Size: 2985 bytes --]
Hi Romain
On Tue, May 20, 2025 at 05:45:01PM -0500, Romain Beauxis wrote:
> Le mar. 20 mai 2025 à 16:46, Michael Niedermayer
> <michael@niedermayer.cc> a écrit :
> >
> > On Mon, May 19, 2025 at 09:46:38AM -0500, Romain Beauxis wrote:
> > > ---
> > > libavcodec/vorbis_parser.h | 11 ++++
> > > libavcodec/vorbisdec.c | 76 +++++++++++++---------
> > > libavformat/oggparsevorbis.c | 63 +++++++++++++++++-
> > > tests/ref/fate/ogg-vorbis-chained-meta.txt | 3 -
> > > 4 files changed, 116 insertions(+), 37 deletions(-)
> >
> > breaks fate here (normal x86-64 ubuntu)
> >
> > --- ./tests/ref/fate/ogg-vorbis-chained-meta.txt 2025-05-20 23:42:32.043927021 +0200
> > +++ tests/data/fate/ogg-vorbis-chained-meta 2025-05-20 23:43:07.908216645 +0200
> > @@ -7,8 +7,4 @@
> > Stream ID: 0, frame PTS: 704, metadata: N/A
> > Stream ID: 0, packet PTS: 0, packet DTS: 0
> > Stream ID: 0, new metadata: encoder=Lavc61.19.100 libvorbis:title=Second Stream
> > -Stream ID: 0, frame PTS: 0, metadata: N/A
> > 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
> > Test ogg-vorbis-chained-meta failed. Look at tests/data/fate/ogg-vorbis-chained-meta.err for details.
> > make: *** [tests/Makefile:316: fate-ogg-vorbis-chained-meta] Error 1
>
> I'm not sure what I'm looking at. Is that the output of running the FATE tests?
yes
probably was make fate-ogg-vorbis-chained-meta
>
> This diff is already included in the patch:
>
> ```
> % git show 37370e99451cf0750d5304764ba9031b80e5b3e0 tests/
> commit 37370e99451cf0750d5304764ba9031b80e5b3e0 (HEAD)
> Author: Romain Beauxis <romain.beauxis@gmail.com>
> Date: Sat May 17 12:59:40 2025 -0500
>
> ogg/vorbis: implement header packet skip in chained ogg bitstreams.
>
> diff --git a/tests/ref/fate/ogg-vorbis-chained-meta.txt
> b/tests/ref/fate/ogg-vorbis-chained-meta.txt
> index b7a97c90e2..1206f86c1f 100644
> --- a/tests/ref/fate/ogg-vorbis-chained-meta.txt
> +++ b/tests/ref/fate/ogg-vorbis-chained-meta.txt
> @@ -6,10 +6,7 @@ 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: 0, packet DTS: 0
> Stream ID: 0, new metadata: encoder=Lavc61.19.100 libvorbis:title=Second Stream
> -Stream ID: 0, packet PTS: 0, packet DTS: 0
> -Stream ID: 0, packet PTS: 0, packet DTS: 0
> Stream ID: 0, frame PTS: 0, metadata: N/A
> Stream ID: 0, packet PTS: 128, packet DTS: 128
> Stream ID: 0, frame PTS: 128, metadata: N/A
These 2 diffs are not the same
thx
[...]
--
Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB
You can kill me, but you cannot change the truth.
[-- Attachment #1.2: signature.asc --]
[-- Type: application/pgp-signature, Size: 195 bytes --]
[-- Attachment #2: Type: text/plain, Size: 251 bytes --]
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [FFmpeg-devel] [PATCH v6 3/4] ogg/vorbis: implement header packet skip in chained ogg bitstreams.
2025-05-21 7:53 ` Michael Niedermayer
@ 2025-05-21 14:51 ` Romain Beauxis
0 siblings, 0 replies; 9+ messages in thread
From: Romain Beauxis @ 2025-05-21 14:51 UTC (permalink / raw)
To: FFmpeg development discussions and patches
Le mer. 21 mai 2025 à 02:53, Michael Niedermayer <michael@niedermayer.cc> a
écrit :
>
> Hi Romain
>
> On Tue, May 20, 2025 at 05:45:01PM -0500, Romain Beauxis wrote:
> > Le mar. 20 mai 2025 à 16:46, Michael Niedermayer
> > <michael@niedermayer.cc> a écrit :
> > >
> > > On Mon, May 19, 2025 at 09:46:38AM -0500, Romain Beauxis wrote:
> > > > ---
> > > > libavcodec/vorbis_parser.h | 11 ++++
> > > > libavcodec/vorbisdec.c | 76
+++++++++++++---------
> > > > libavformat/oggparsevorbis.c | 63 +++++++++++++++++-
> > > > tests/ref/fate/ogg-vorbis-chained-meta.txt | 3 -
> > > > 4 files changed, 116 insertions(+), 37 deletions(-)
> > >
> > > breaks fate here (normal x86-64 ubuntu)
> > >
> > > --- ./tests/ref/fate/ogg-vorbis-chained-meta.txt 2025-05-20
23:42:32.043927021 +0200
> > > +++ tests/data/fate/ogg-vorbis-chained-meta 2025-05-20
23:43:07.908216645 +0200
> > > @@ -7,8 +7,4 @@
> > > Stream ID: 0, frame PTS: 704, metadata: N/A
> > > Stream ID: 0, packet PTS: 0, packet DTS: 0
> > > Stream ID: 0, new metadata: encoder=Lavc61.19.100
libvorbis:title=Second Stream
> > > -Stream ID: 0, frame PTS: 0, metadata: N/A
> > > 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
> > > Test ogg-vorbis-chained-meta failed. Look at
tests/data/fate/ogg-vorbis-chained-meta.err for details.
> > > make: *** [tests/Makefile:316: fate-ogg-vorbis-chained-meta] Error 1
> >
> > I'm not sure what I'm looking at. Is that the output of running the
FATE tests?
>
> yes
> probably was make fate-ogg-vorbis-chained-meta
Woof thanks for catching that indeed. One `return` statement had snuck into
my refactorization. About to push a fixed series.
>
> >
> > This diff is already included in the patch:
> >
> > ```
> > % git show 37370e99451cf0750d5304764ba9031b80e5b3e0 tests/
> > commit 37370e99451cf0750d5304764ba9031b80e5b3e0 (HEAD)
> > Author: Romain Beauxis <romain.beauxis@gmail.com>
> > Date: Sat May 17 12:59:40 2025 -0500
> >
> > ogg/vorbis: implement header packet skip in chained ogg bitstreams.
> >
> > diff --git a/tests/ref/fate/ogg-vorbis-chained-meta.txt
> > b/tests/ref/fate/ogg-vorbis-chained-meta.txt
> > index b7a97c90e2..1206f86c1f 100644
> > --- a/tests/ref/fate/ogg-vorbis-chained-meta.txt
> > +++ b/tests/ref/fate/ogg-vorbis-chained-meta.txt
> > @@ -6,10 +6,7 @@ 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: 0, packet DTS: 0
> > Stream ID: 0, new metadata: encoder=Lavc61.19.100
libvorbis:title=Second Stream
> > -Stream ID: 0, packet PTS: 0, packet DTS: 0
> > -Stream ID: 0, packet PTS: 0, packet DTS: 0
> > Stream ID: 0, frame PTS: 0, metadata: N/A
> > Stream ID: 0, packet PTS: 128, packet DTS: 128
> > Stream ID: 0, frame PTS: 128, metadata: N/A
>
> These 2 diffs are not the same
>
> thx
>
> [...]
> --
> Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB
>
> You can kill me, but you cannot change the truth.
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel@ffmpeg.org
> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>
> To unsubscribe, visit link above, or email
> ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2025-05-21 14:51 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2025-05-19 14:46 [FFmpeg-devel] [PATCH v6 0/4] Remove chained ogg stream header packets from the demuxer Romain Beauxis
2025-05-19 14:46 ` [FFmpeg-devel] [PATCH v6 1/4] libavformat/oggdec.{c, h}: Add new_extradata, use it to pass extradata to the next decoded packet Romain Beauxis
2025-05-19 14:46 ` [FFmpeg-devel] [PATCH v6 2/4] ogg/vorbis: factor out header processing logic Romain Beauxis
2025-05-19 14:46 ` [FFmpeg-devel] [PATCH v6 3/4] ogg/vorbis: implement header packet skip in chained ogg bitstreams Romain Beauxis
2025-05-20 21:45 ` Michael Niedermayer
2025-05-20 22:45 ` Romain Beauxis
2025-05-21 7:53 ` Michael Niedermayer
2025-05-21 14:51 ` Romain Beauxis
2025-05-19 14:46 ` [FFmpeg-devel] [PATCH v6 4/4] libavformat/oggdec.h: Change paket function documentation to return 1 on header packets only Romain Beauxis
Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
This inbox may be cloned and mirrored by anyone:
git clone --mirror https://master.gitmailbox.com/ffmpegdev/0 ffmpegdev/git/0.git
# If you have public-inbox 1.1+ installed, you may
# initialize and index your mirror using the following commands:
public-inbox-init -V2 ffmpegdev ffmpegdev/ https://master.gitmailbox.com/ffmpegdev \
ffmpegdev@gitmailbox.com
public-inbox-index ffmpegdev
Example config snippet for mirrors.
AGPL code for this site: git clone https://public-inbox.org/public-inbox.git