From: Peter Ross <pross@xvid.org>
To: FFmpeg development discussions and patches <ffmpeg-devel@ffmpeg.org>
Subject: Re: [FFmpeg-devel] [PATCHv2 3/4] avcodec/svq1enc: output ident string in extradata field
Date: Thu, 20 Oct 2022 18:46:20 +1100
Message-ID: <Y1D8zAPxwJ5O1eNL@aecf642c91546b177d47b7680ad3cd11> (raw)
In-Reply-To: <4adabb90-7d6a-eb6a-4457-3d62017d7cbf@gmail.com>
[-- Attachment #1.1: Type: text/plain, Size: 3048 bytes --]
On Wed, Oct 19, 2022 at 10:42:39PM -0300, James Almer wrote:
> On 10/19/2022 10:30 PM, Peter Ross wrote:
> > This will enable the acurate identification of FFmpeg produced
> > SVQ1 streams, should there be new bugs found in the encoder.
> > ---
> > libavcodec/svq1enc.c | 9 +++++++++
> > 1 file changed, 9 insertions(+)
> >
> > diff --git a/libavcodec/svq1enc.c b/libavcodec/svq1enc.c
> > index 9bd5a04368..6aacaef88d 100644
> > --- a/libavcodec/svq1enc.c
> > +++ b/libavcodec/svq1enc.c
> > @@ -41,6 +41,7 @@
> > #include "svq1.h"
> > #include "svq1encdsp.h"
> > #include "svq1enc_cb.h"
> > +#include "version.h"
> > #include "libavutil/avassert.h"
> > #include "libavutil/frame.h"
> > @@ -628,6 +629,14 @@ static av_cold int svq1_encode_init(AVCodecContext *avctx)
> > ff_h263_encode_init(&s->m); // mv_penalty
> > + if (!(s->avctx->flags & AV_CODEC_FLAG_BITEXACT)) {
> > + avctx->extradata = av_malloc(sizeof(LIBAVCODEC_IDENT));
> > + if (!avctx->extradata)
> > + return AVERROR(ENOMEM);
> > + memcpy(avctx->extradata, LIBAVCODEC_IDENT, sizeof(LIBAVCODEC_IDENT));
> > + avctx->extradata_size = sizeof(LIBAVCODEC_IDENT);
>
> Can you explain what effect is this meant to have and where? Do or should
> muxers like mp4 and matroska expect extradata from svq1 streams that they
> are meant to write to the output file?
the intention is to populate MOV stsd atom with a unique version number, such
that if another encoder bug is discovered, we can acurately detect the version
of the encoder and apply workarounds. the mov stsd atom is mapped to avctx->extradata.
we already use this approach for other encoders. the MPEG4 ASP video encoder
inserts the codec ident in a free text part of the header. there is no similar
free text space in the SVQ1 bitstream. fortunately the official/binary decoder
ignores the stsd atom, so i propose to use that. the SVQ1 official decoder has
not received updates for a long time and i dont expect it to change. the windows
binaries are marked end of life, and have not recieved update since 2009.
for other file formats, i expect them just to carry the extradata if they can.
this already works fine for avi. in the case of matroska, FFmpeg already inserts
the extradata in a V_QUICKTIME block per the specification
(https://www.matroska.org/technical/codec_specs.html ), so nothing to do there.
however now that i look closely, FFmpeg also adds a custom atom around the extradata
(commit in 8456bd2c0f3b08756f353646fe3b40a6772e665e), and doesn't strip this away
on demux. this is wrong, imho.
it may be worth improving this patch set the following two ways:
1) modify the SVQ1 encoder ident extradata to look like an stsd atom, by
inserting length and tag fields at the beginning.
2) modify the matroska muxer *not* to emit this custom atom for codecs who's
extradta is also in atom format (SVQ1 and SVQ3).
-- Peter
(A907 E02F A6E5 0CD2 34CD 20D2 6760 79C5 AC40 DD6B)
[-- 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".
next prev parent reply other threads:[~2022-10-20 7:46 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-10-20 1:29 [FFmpeg-devel] [PATCHv2 1/4] avcodec/svq1: fix interframe mean VLC symbols Peter Ross
2022-10-20 1:30 ` [FFmpeg-devel] [PATCHv2 2/4] avcodec/svq1enc: do not use ambiguous interframe mean symbols Peter Ross
2022-10-20 1:30 ` [FFmpeg-devel] [PATCHv2 3/4] avcodec/svq1enc: output ident string in extradata field Peter Ross
2022-10-20 1:42 ` James Almer
2022-10-20 7:46 ` Peter Ross [this message]
2022-10-20 19:26 ` Michael Niedermayer
2022-10-20 1:30 ` [FFmpeg-devel] [PATCHv2 4/4] avcodec/svq1dec: detect buggy FFmpeg encoder and apply correction to interframe mean symbols Peter Ross
2022-10-20 19:33 ` [FFmpeg-devel] [PATCHv2 1/4] avcodec/svq1: fix interframe mean VLC symbols Michael Niedermayer
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=Y1D8zAPxwJ5O1eNL@aecf642c91546b177d47b7680ad3cd11 \
--to=pross@xvid.org \
--cc=ffmpeg-devel@ffmpeg.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
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