[FFmpeg-devel] [PATCH 1/2] avformat/mux: Warn if the muxers bitexact flag is not set but it looks as if the user wants it set

Michael Niedermayer michael at niedermayer.cc
Mon Aug 24 02:22:20 CEST 2015


On Sun, Aug 23, 2015 at 11:52:37AM +0200, Andreas Cadhalpun wrote:
> On 23.08.2015 11:09, Michael Niedermayer wrote:
> > From: Michael Niedermayer <michael at niedermayer.cc>
> > 
> > Note: I doubt requiring this in the future is a good idea
> > See: [FFmpeg-devel] [PATCH 3/4] fate: add -fflags +bitexact to the relevant targets
> > Signed-off-by: Michael Niedermayer <michael at niedermayer.cc>
> > ---
> >  libavformat/mux.c |    7 ++++++-
> >  1 file changed, 6 insertions(+), 1 deletion(-)
> > 
> > diff --git a/libavformat/mux.c b/libavformat/mux.c
> > index 81c4676..77a24cc 100644
> > --- a/libavformat/mux.c
> > +++ b/libavformat/mux.c
> > @@ -250,10 +250,15 @@ static int init_muxer(AVFormatContext *s, AVDictionary **options)
> >          (ret = av_opt_set_dict2(s->priv_data, &tmp, AV_OPT_SEARCH_CHILDREN)) < 0)
> >          goto fail;
> >  
> > +    if (s->nb_streams && s->streams[0]->codec->flags & AV_CODEC_FLAG_BITEXACT) {
> > +        if (!(s->flags & AVFMT_FLAG_BITEXACT))
> > +            av_log(s, AV_LOG_WARNING, "Muxer bitexact flag is not set, please set AVFormatContext.flags |= AVFMT_FLAG_BITEXACT.\n"
> > +                                      "This will become mandatory with future API cleanup\n"
> > +            );
> 
> Such a warning is probably a good idea.
> However, either it should be removed together with FF_API_LAVF_BITEXACT
> (which only makes sense if we keep FF_API_LAVF_BITEXACT until next time)
> or the warning has to change, when FF_API_LAVF_BITEXACT is disabled.
> Saying 'future API cleanup', when the cleanup already happened seems wrong.

is below diff better: ?
iam quite unsure how to word this

using the exact same system as FF_API_OLD_FILTER_OPTS is tricky as
there is a semantic difference
"codec->flags & AV_CODEC_FLAG_BITEXACT" is not deprecated as in
FF_API_OLD_FILTER_OPTS
Currently storing a bitexact stream in a container makes the
container bitexact. with FF_API_LAVF_BITEXACT==0 this would no longer
be the case and the user would have to explicitly switch the muxer
into bitexact mode in addition to the encoder to get a bitexact
result.

--- a/libavformat/mux.c
+++ b/libavformat/mux.c
@@ -250,10 +250,17 @@ static int init_muxer(AVFormatContext *s, AVDictionary **options)
         (ret = av_opt_set_dict2(s->priv_data, &tmp, AV_OPT_SEARCH_CHILDREN)) < 0)
         goto fail;

+    if (s->nb_streams && s->streams[0]->codec->flags & AV_CODEC_FLAG_BITEXACT) {
+        if (!(s->flags & AVFMT_FLAG_BITEXACT))
+            av_log(s, AV_LOG_WARNING, "Muxer bitexact flag is not set, please set AVFormatContext.flags |= AVFMT_FLAG_BITEXACT.\n"
+#if FF_API_LAVF_BITEXACT
+                                      "This will become mandatory with future API cleanup\n"
+#endif
+            );
 #if FF_API_LAVF_BITEXACT
-    if (s->nb_streams && s->streams[0]->codec->flags & AV_CODEC_FLAG_BITEXACT)
         s->flags |= AVFMT_FLAG_BITEXACT;
 #endif
+    }

     // some sanity checks
     if (s->nb_streams == 0 && !(of->flags & AVFMT_NOSTREAMS)) {

[...]

-- 
Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

I have often repented speaking, but never of holding my tongue.
-- Xenocrates
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 181 bytes
Desc: Digital signature
URL: <http://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20150824/b7ecf946/attachment.sig>


More information about the ffmpeg-devel mailing list