diff options
author | Mark Thompson <sw@jkqxz.net> | 2017-01-04 23:05:10 +0000 |
---|---|---|
committer | Mark Thompson <sw@jkqxz.net> | 2017-02-08 19:14:05 +0000 |
commit | eefa4b76ee5a1059a36d8bd77b123c2cfbfea604 (patch) | |
tree | 6d5473d781a7d005aa83841576e055c0310c0c25 | |
parent | c667c0979cbc2e04d1d00964b82ac49746caa43c (diff) | |
download | ffmpeg-eefa4b76ee5a1059a36d8bd77b123c2cfbfea604.tar.gz |
vaapi_h264: Scale log2_max_pic_order_cnt_lsb with max_b_frames
Before this change, it was possible to overflow pic_order_cnt_lsb and
generate a stream with invalid POC numbering. This makes sure that
the field is large enough that a single IDR B* P sequence uses fewer
than half the available POC lsb values.
(cherry picked from commit 89725a8512721fffd190021ded2d3f5b42e20e2a)
-rw-r--r-- | libavcodec/vaapi_encode_h264.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/libavcodec/vaapi_encode_h264.c b/libavcodec/vaapi_encode_h264.c index 00d8e6a3bf..b980527917 100644 --- a/libavcodec/vaapi_encode_h264.c +++ b/libavcodec/vaapi_encode_h264.c @@ -800,6 +800,8 @@ static int vaapi_encode_h264_init_sequence_params(AVCodecContext *avctx) vseq->seq_fields.bits.direct_8x8_inference_flag = 1; vseq->seq_fields.bits.log2_max_frame_num_minus4 = 4; vseq->seq_fields.bits.pic_order_cnt_type = 0; + vseq->seq_fields.bits.log2_max_pic_order_cnt_lsb_minus4 = + av_clip(av_log2(avctx->max_b_frames + 1) - 2, 0, 12); if (avctx->width != ctx->surface_width || avctx->height != ctx->surface_height) { |