h264: add AVOption to set x264_build default

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 840b41b2a6 make this
somewhat of a necessity.

This intentionally uses the version in the SEI instead, if any is found.
This commit is contained in:
wm4 2017-12-23 03:13:00 +01:00
parent 4ed66517c6
commit cf57cb3ae4
1 changed files with 1 additions and 1 deletions

View File

@ -315,7 +315,6 @@ static int h264_init_context(AVCodecContext *avctx, H264Context *h)
h->flags = avctx->flags; h->flags = avctx->flags;
h->poc.prev_poc_msb = 1 << 16; h->poc.prev_poc_msb = 1 << 16;
h->recovery_frame = -1; h->recovery_frame = -1;
h->x264_build = -1;
h->frame_recovered = 0; h->frame_recovered = 0;
h->poc.prev_frame_num = -1; h->poc.prev_frame_num = -1;
h->sei.frame_packing.arrangement_cancel_flag = -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 }, { "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 }, { "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 }, { "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 }, { NULL },
}; };