* [FFmpeg-devel] [PATCH v2] ogg/vorbis: implement header packet skip in chained ogg bitstreams.
@ 2025-06-04 16:58 Romain Beauxis
2025-06-10 18:04 ` Romain Beauxis
2025-06-14 22:57 ` Michael Niedermayer
0 siblings, 2 replies; 5+ messages in thread
From: Romain Beauxis @ 2025-06-04 16:58 UTC (permalink / raw)
To: ffmpeg-devel; +Cc: Romain Beauxis, andreas.rheinhardt
This is a redo of 574f634e49847e2225ee50013afebf0de03ef013 using a flat
memory storage for the extradata.
PR review comments addressed:
* Use flat memory bytestream
* Re-use existing xiph extradata layout
---
libavcodec/vorbisdec.c | 42 ++++++++---
libavformat/oggparsevorbis.c | 83 +++++++++++++++++++++-
tests/ref/fate/ogg-vorbis-chained-meta.txt | 3 -
3 files changed, 114 insertions(+), 14 deletions(-)
diff --git a/libavcodec/vorbisdec.c b/libavcodec/vorbisdec.c
index adbd726183..84879462a1 100644
--- a/libavcodec/vorbisdec.c
+++ b/libavcodec/vorbisdec.c
@@ -1778,11 +1778,40 @@ 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;
+ const uint8_t *new_extradata;
+ const uint8_t *header_start[3];
+ int header_len[3] = {0, 0, 0};
+ const uint8_t *header;
+ int header_size = 0;
+ const uint8_t *comment;
+ int comment_size = 0;
+ const uint8_t *setup;
+ int setup_size = 0;
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)
+ new_extradata = av_packet_get_side_data(avpkt, AV_PKT_DATA_NEW_EXTRADATA,
+ &new_extradata_size);
+
+ if (new_extradata) {
+ ret = avpriv_split_xiph_headers(new_extradata, new_extradata_size,
+ 30, header_start, header_len);
+ if (ret < 0)
+ return ret;
+
+ header = header_start[0];
+ header_size = header_len[0];
+
+ comment = header_start[1];
+ comment_size = header_len[1];
+
+ setup = header_start[2];
+ setup_size = header_len[2];
+ }
+
+ if (header_size > 7 && *header == 1) {
+ if ((ret = init_get_bits8(gb, header + 1, header_size - 1)) < 0)
return ret;
vorbis_free(vc);
@@ -1801,16 +1830,14 @@ static int vorbis_decode_frame(AVCodecContext *avctx, AVFrame *frame,
}
avctx->sample_rate = vc->audio_samplerate;
- return buf_size;
}
- if (*buf == 3 && buf_size > 7) {
+ if (comment_size > 7 && *comment == 3) {
av_log(avctx, AV_LOG_DEBUG, "Ignoring comment header\n");
- return buf_size;
}
- if (*buf == 5 && buf_size > 7 && vc->channel_residues && !vc->modes) {
- if ((ret = init_get_bits8(gb, buf + 1, buf_size - 1)) < 0)
+ if (setup_size > 7 && *setup == 5 && vc->channel_residues && !vc->modes) {
+ if ((ret = init_get_bits8(gb, setup + 1, setup_size - 1)) < 0)
return ret;
if ((ret = vorbis_parse_setup_hdr(vc))) {
@@ -1818,7 +1845,6 @@ static int vorbis_decode_frame(AVCodecContext *avctx, AVFrame *frame,
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..7859ec5a51 100644
--- a/libavformat/oggparsevorbis.c
+++ b/libavformat/oggparsevorbis.c
@@ -215,6 +215,12 @@ struct oggvorbis_private {
AVVorbisParseContext *vp;
int64_t final_pts;
int final_duration;
+ uint8_t *header;
+ int header_size;
+ uint8_t *comment;
+ int comment_size;
+ uint8_t *setup;
+ int setup_size;
};
static int fixup_vorbis_headers(AVFormatContext *as,
@@ -260,6 +266,10 @@ static void vorbis_cleanup(AVFormatContext *s, int idx)
av_vorbis_parse_free(&priv->vp);
for (i = 0; i < 3; i++)
av_freep(&priv->packet[i]);
+
+ av_freep(&priv->header);
+ av_freep(&priv->comment);
+ av_freep(&priv->setup);
}
}
@@ -434,6 +444,9 @@ static int vorbis_packet(AVFormatContext *s, int idx)
struct ogg_stream *os = ogg->streams + idx;
struct oggvorbis_private *priv = os->private;
int duration, flags = 0;
+ int skip_packet = 0;
+ int ret, new_extradata_size;
+ PutByteContext pb;
if (!priv->vp)
return AVERROR_INVALIDDATA;
@@ -496,10 +509,50 @@ 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(&priv->header, os->psize);
+ if (ret < 0)
+ return ret;
+
+ memcpy(priv->header, os->buf + os->pstart, os->psize);
+ priv->header_size = os->psize;
+
+ skip_packet = 1;
+ }
+
+ if (flags & VORBIS_FLAG_COMMENT) {
+ ret = vorbis_update_metadata(s, idx);
+ if (ret < 0)
+ return ret;
+
+ ret = av_reallocp(&priv->comment, os->psize);
+ if (ret < 0)
+ return ret;
+
+ memcpy(priv->comment, os->buf + os->pstart, os->psize);
+ priv->comment_size = os->psize;
+
flags = 0;
+ skip_packet = 1;
+ }
+
+ if (flags & VORBIS_FLAG_SETUP) {
+ ret = av_reallocp(&priv->setup, os->psize);
+ if (ret < 0)
+ return ret;
+
+ memcpy(priv->setup, os->buf + os->pstart, os->psize);
+ priv->setup_size = os->psize;
+
+ skip_packet = 1;
}
+
os->pduration = duration;
}
@@ -521,7 +574,31 @@ static int vorbis_packet(AVFormatContext *s, int idx)
priv->final_duration += os->pduration;
}
- return 0;
+ if (priv->header && priv->comment && priv->setup) {
+ new_extradata_size = priv->header_size + priv->comment_size + priv->setup_size + 6;
+
+ ret = av_reallocp(&os->new_extradata, new_extradata_size);
+ if (ret < 0)
+ return ret;
+
+ os->new_extradata_size = new_extradata_size;
+ bytestream2_init_writer(&pb, os->new_extradata, new_extradata_size);
+ bytestream2_put_be16(&pb, priv->header_size);
+ bytestream2_put_buffer(&pb, priv->header, priv->header_size);
+ bytestream2_put_be16(&pb, priv->comment_size);
+ bytestream2_put_buffer(&pb, priv->comment, priv->comment_size);
+ bytestream2_put_be16(&pb, priv->setup_size);
+ bytestream2_put_buffer(&pb, priv->setup, priv->setup_size);
+
+ av_freep(&priv->header);
+ priv->header_size = 0;
+ av_freep(&priv->comment);
+ priv->comment_size = 0;
+ av_freep(&priv->setup);
+ priv->comment_size = 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] 5+ messages in thread
* Re: [FFmpeg-devel] [PATCH v2] ogg/vorbis: implement header packet skip in chained ogg bitstreams.
2025-06-04 16:58 [FFmpeg-devel] [PATCH v2] ogg/vorbis: implement header packet skip in chained ogg bitstreams Romain Beauxis
@ 2025-06-10 18:04 ` Romain Beauxis
2025-06-12 11:35 ` Michael Niedermayer
2025-06-14 22:57 ` Michael Niedermayer
1 sibling, 1 reply; 5+ messages in thread
From: Romain Beauxis @ 2025-06-10 18:04 UTC (permalink / raw)
To: ffmpeg-devel; +Cc: andreas.rheinhardt
Hi all,
Le mer. 4 juin 2025 à 11:58, Romain Beauxis <romain.beauxis@gmail.com> a écrit :
>
> This is a redo of 574f634e49847e2225ee50013afebf0de03ef013 using a flat
> memory storage for the extradata.
>
> PR review comments addressed:
> * Use flat memory bytestream
> * Re-use existing xiph extradata layout
Is there any interest in reviewing this patch?
It's holding the second series that fixes chained ogg stream metadata parsing.
Better support for chained ogg streams would really make life easier
for a bunch of ffmpeg and ffmpeg libraries users.
Thanks,
-- Romain
> ---
> libavcodec/vorbisdec.c | 42 ++++++++---
> libavformat/oggparsevorbis.c | 83 +++++++++++++++++++++-
> tests/ref/fate/ogg-vorbis-chained-meta.txt | 3 -
> 3 files changed, 114 insertions(+), 14 deletions(-)
>
> diff --git a/libavcodec/vorbisdec.c b/libavcodec/vorbisdec.c
> index adbd726183..84879462a1 100644
> --- a/libavcodec/vorbisdec.c
> +++ b/libavcodec/vorbisdec.c
> @@ -1778,11 +1778,40 @@ 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;
> + const uint8_t *new_extradata;
> + const uint8_t *header_start[3];
> + int header_len[3] = {0, 0, 0};
> + const uint8_t *header;
> + int header_size = 0;
> + const uint8_t *comment;
> + int comment_size = 0;
> + const uint8_t *setup;
> + int setup_size = 0;
>
> 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)
> + new_extradata = av_packet_get_side_data(avpkt, AV_PKT_DATA_NEW_EXTRADATA,
> + &new_extradata_size);
> +
> + if (new_extradata) {
> + ret = avpriv_split_xiph_headers(new_extradata, new_extradata_size,
> + 30, header_start, header_len);
> + if (ret < 0)
> + return ret;
> +
> + header = header_start[0];
> + header_size = header_len[0];
> +
> + comment = header_start[1];
> + comment_size = header_len[1];
> +
> + setup = header_start[2];
> + setup_size = header_len[2];
> + }
> +
> + if (header_size > 7 && *header == 1) {
> + if ((ret = init_get_bits8(gb, header + 1, header_size - 1)) < 0)
> return ret;
>
> vorbis_free(vc);
> @@ -1801,16 +1830,14 @@ static int vorbis_decode_frame(AVCodecContext *avctx, AVFrame *frame,
> }
>
> avctx->sample_rate = vc->audio_samplerate;
> - return buf_size;
> }
>
> - if (*buf == 3 && buf_size > 7) {
> + if (comment_size > 7 && *comment == 3) {
> av_log(avctx, AV_LOG_DEBUG, "Ignoring comment header\n");
> - return buf_size;
> }
>
> - if (*buf == 5 && buf_size > 7 && vc->channel_residues && !vc->modes) {
> - if ((ret = init_get_bits8(gb, buf + 1, buf_size - 1)) < 0)
> + if (setup_size > 7 && *setup == 5 && vc->channel_residues && !vc->modes) {
> + if ((ret = init_get_bits8(gb, setup + 1, setup_size - 1)) < 0)
> return ret;
>
> if ((ret = vorbis_parse_setup_hdr(vc))) {
> @@ -1818,7 +1845,6 @@ static int vorbis_decode_frame(AVCodecContext *avctx, AVFrame *frame,
> 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..7859ec5a51 100644
> --- a/libavformat/oggparsevorbis.c
> +++ b/libavformat/oggparsevorbis.c
> @@ -215,6 +215,12 @@ struct oggvorbis_private {
> AVVorbisParseContext *vp;
> int64_t final_pts;
> int final_duration;
> + uint8_t *header;
> + int header_size;
> + uint8_t *comment;
> + int comment_size;
> + uint8_t *setup;
> + int setup_size;
> };
>
> static int fixup_vorbis_headers(AVFormatContext *as,
> @@ -260,6 +266,10 @@ static void vorbis_cleanup(AVFormatContext *s, int idx)
> av_vorbis_parse_free(&priv->vp);
> for (i = 0; i < 3; i++)
> av_freep(&priv->packet[i]);
> +
> + av_freep(&priv->header);
> + av_freep(&priv->comment);
> + av_freep(&priv->setup);
> }
> }
>
> @@ -434,6 +444,9 @@ static int vorbis_packet(AVFormatContext *s, int idx)
> struct ogg_stream *os = ogg->streams + idx;
> struct oggvorbis_private *priv = os->private;
> int duration, flags = 0;
> + int skip_packet = 0;
> + int ret, new_extradata_size;
> + PutByteContext pb;
>
> if (!priv->vp)
> return AVERROR_INVALIDDATA;
> @@ -496,10 +509,50 @@ 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(&priv->header, os->psize);
> + if (ret < 0)
> + return ret;
> +
> + memcpy(priv->header, os->buf + os->pstart, os->psize);
> + priv->header_size = os->psize;
> +
> + skip_packet = 1;
> + }
> +
> + if (flags & VORBIS_FLAG_COMMENT) {
> + ret = vorbis_update_metadata(s, idx);
> + if (ret < 0)
> + return ret;
> +
> + ret = av_reallocp(&priv->comment, os->psize);
> + if (ret < 0)
> + return ret;
> +
> + memcpy(priv->comment, os->buf + os->pstart, os->psize);
> + priv->comment_size = os->psize;
> +
> flags = 0;
> + skip_packet = 1;
> + }
> +
> + if (flags & VORBIS_FLAG_SETUP) {
> + ret = av_reallocp(&priv->setup, os->psize);
> + if (ret < 0)
> + return ret;
> +
> + memcpy(priv->setup, os->buf + os->pstart, os->psize);
> + priv->setup_size = os->psize;
> +
> + skip_packet = 1;
> }
> +
> os->pduration = duration;
> }
>
> @@ -521,7 +574,31 @@ static int vorbis_packet(AVFormatContext *s, int idx)
> priv->final_duration += os->pduration;
> }
>
> - return 0;
> + if (priv->header && priv->comment && priv->setup) {
> + new_extradata_size = priv->header_size + priv->comment_size + priv->setup_size + 6;
> +
> + ret = av_reallocp(&os->new_extradata, new_extradata_size);
> + if (ret < 0)
> + return ret;
> +
> + os->new_extradata_size = new_extradata_size;
> + bytestream2_init_writer(&pb, os->new_extradata, new_extradata_size);
> + bytestream2_put_be16(&pb, priv->header_size);
> + bytestream2_put_buffer(&pb, priv->header, priv->header_size);
> + bytestream2_put_be16(&pb, priv->comment_size);
> + bytestream2_put_buffer(&pb, priv->comment, priv->comment_size);
> + bytestream2_put_be16(&pb, priv->setup_size);
> + bytestream2_put_buffer(&pb, priv->setup, priv->setup_size);
> +
> + av_freep(&priv->header);
> + priv->header_size = 0;
> + av_freep(&priv->comment);
> + priv->comment_size = 0;
> + av_freep(&priv->setup);
> + priv->comment_size = 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] 5+ messages in thread
* Re: [FFmpeg-devel] [PATCH v2] ogg/vorbis: implement header packet skip in chained ogg bitstreams.
2025-06-10 18:04 ` Romain Beauxis
@ 2025-06-12 11:35 ` Michael Niedermayer
2025-06-14 10:39 ` Romain Beauxis
0 siblings, 1 reply; 5+ messages in thread
From: Michael Niedermayer @ 2025-06-12 11:35 UTC (permalink / raw)
To: FFmpeg development discussions and patches
[-- Attachment #1.1: Type: text/plain, Size: 924 bytes --]
Hi Romain
On Tue, Jun 10, 2025 at 01:04:35PM -0500, Romain Beauxis wrote:
> Hi all,
>
>
> Le mer. 4 juin 2025 à 11:58, Romain Beauxis <romain.beauxis@gmail.com> a écrit :
> >
> > This is a redo of 574f634e49847e2225ee50013afebf0de03ef013 using a flat
> > memory storage for the extradata.
> >
> > PR review comments addressed:
> > * Use flat memory bytestream
> > * Re-use existing xiph extradata layout
>
> Is there any interest in reviewing this patch?
maybe you can help review other peoples patches while you wait for someone
to review yours (if everyone does that then reviews should overall occur
quicker)
(i do have a backlog of things atm so i dont think i should add this one
to my todo)
thx
[...]
--
Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB
Asymptotically faster algorithms should always be preferred if you have
asymptotical amounts of data
[-- 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] 5+ messages in thread
* Re: [FFmpeg-devel] [PATCH v2] ogg/vorbis: implement header packet skip in chained ogg bitstreams.
2025-06-12 11:35 ` Michael Niedermayer
@ 2025-06-14 10:39 ` Romain Beauxis
0 siblings, 0 replies; 5+ messages in thread
From: Romain Beauxis @ 2025-06-14 10:39 UTC (permalink / raw)
To: FFmpeg development discussions and patches
Le jeu. 12 juin 2025 à 13:35, Michael Niedermayer <michael@niedermayer.cc>
a écrit :
>
> Hi Romain
Hi,
> On Tue, Jun 10, 2025 at 01:04:35PM -0500, Romain Beauxis wrote:
> > Hi all,
> >
> >
> > Le mer. 4 juin 2025 à 11:58, Romain Beauxis <romain.beauxis@gmail.com>
a écrit :
> > >
> > > This is a redo of 574f634e49847e2225ee50013afebf0de03ef013 using a
flat
> > > memory storage for the extradata.
> > >
> > > PR review comments addressed:
> > > * Use flat memory bytestream
> > > * Re-use existing xiph extradata layout
> >
> > Is there any interest in reviewing this patch?
>
> maybe you can help review other peoples patches while you wait for someone
> to review yours (if everyone does that then reviews should overall occur
> quicker)
> (i do have a backlog of things atm so i dont think i should add this one
> to my todo)
I do appreciate the invite to contribute to reviews and will gladly do so.
I understand how the project needs to balance load and how it's nice to
contribute both ways.
However, I'm still learning the ropes of this code base (and this patch
proves it).
It seems awkward to make this transactional, there's a discrepancy in what
I can provide in terms of senior review and this patch is rather small and
implements exactly what I was asked to do after multiple consultations.
I was hoping it would be easy to review and merge.
Thanks,
-- Romain
_______________________________________________
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] 5+ messages in thread
* Re: [FFmpeg-devel] [PATCH v2] ogg/vorbis: implement header packet skip in chained ogg bitstreams.
2025-06-04 16:58 [FFmpeg-devel] [PATCH v2] ogg/vorbis: implement header packet skip in chained ogg bitstreams Romain Beauxis
2025-06-10 18:04 ` Romain Beauxis
@ 2025-06-14 22:57 ` Michael Niedermayer
1 sibling, 0 replies; 5+ messages in thread
From: Michael Niedermayer @ 2025-06-14 22:57 UTC (permalink / raw)
To: FFmpeg development discussions and patches
[-- Attachment #1.1: Type: text/plain, Size: 1060 bytes --]
On Wed, Jun 04, 2025 at 11:58:52AM -0500, Romain Beauxis wrote:
> This is a redo of 574f634e49847e2225ee50013afebf0de03ef013 using a flat
> memory storage for the extradata.
>
> PR review comments addressed:
> * Use flat memory bytestream
> * Re-use existing xiph extradata layout
>
> ---
> libavcodec/vorbisdec.c | 42 ++++++++---
> libavformat/oggparsevorbis.c | 83 +++++++++++++++++++++-
patches that change both libraries at the same time are suspect
if one depends on changes in the other it needs
minor API version bump and seperate patches so extension of
API and use of it are properly tracked and testable
have not reveiwed the rest of the patch
thx
[...]
--
Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB
The real ebay dictionary, page 1
"Used only once" - "Some unspecified defect prevented a second use"
"In good condition" - "Can be repaird by experienced expert"
"As is" - "You wouldnt want it even if you were payed for it, if you knew ..."
[-- 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] 5+ messages in thread
end of thread, other threads:[~2025-06-14 22:57 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2025-06-04 16:58 [FFmpeg-devel] [PATCH v2] ogg/vorbis: implement header packet skip in chained ogg bitstreams Romain Beauxis
2025-06-10 18:04 ` Romain Beauxis
2025-06-12 11:35 ` Michael Niedermayer
2025-06-14 10:39 ` Romain Beauxis
2025-06-14 22:57 ` Michael Niedermayer
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