]> git.sesse.net Git - ffmpeg/commitdiff
h264: add AVOption to set x264_build default
authorwm4 <nfxjfg@googlemail.com>
Sat, 23 Dec 2017 02:13:00 +0000 (03:13 +0100)
committerwm4 <nfxjfg@googlemail.com>
Tue, 26 Dec 2017 01:56:09 +0000 (02:56 +0100)
This provides a generic way to the API user to deal with files that
either lack this SEI, or which have the SEI only in packets not passed
to the decoder (such as the common case of the SEI being in the very
firsat video packet, but decoding is started somewhere in the middle of
the file). Bugs like 840b41b2a643fc8f0617c0370125a19c02c6b586 make this
somewhat of a necessity.

This intentionally uses the version in the SEI instead, if any is found.

libavcodec/h264dec.c

index 1e98765439c16658193b36a0e92d4c9885960a1c..8c9c6d9f3bfb2f13ff9530f2f92453f3de48872f 100644 (file)
@@ -315,7 +315,6 @@ static int h264_init_context(AVCodecContext *avctx, H264Context *h)
     h->flags                 = avctx->flags;
     h->poc.prev_poc_msb      = 1 << 16;
     h->recovery_frame        = -1;
-    h->x264_build            = -1;
     h->frame_recovered       = 0;
     h->poc.prev_frame_num    = -1;
     h->sei.frame_packing.arrangement_cancel_flag = -1;
@@ -1037,6 +1036,7 @@ static const AVOption h264_options[] = {
     { "is_avc", "is avc", OFFSET(is_avc), AV_OPT_TYPE_BOOL, {.i64 = 0}, 0, 1, 0 },
     { "nal_length_size", "nal_length_size", OFFSET(nal_length_size), AV_OPT_TYPE_INT, {.i64 = 0}, 0, 4, 0 },
     { "enable_er", "Enable error resilience on damaged frames (unsafe)", OFFSET(enable_er), AV_OPT_TYPE_BOOL, { .i64 = -1 }, -1, 1, VD },
+    { "x264_build", "Assume this x264 version if no x264 version found in any SEI", OFFSET(x264_build), AV_OPT_TYPE_INT, {.i64 = -1}, -1, INT_MAX, VD },
     { NULL },
 };