Commit eefa4b76 authored by Mark Thompson's avatar Mark Thompson

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 89725a85)
parent c667c097
...@@ -800,6 +800,8 @@ static int vaapi_encode_h264_init_sequence_params(AVCodecContext *avctx) ...@@ -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.direct_8x8_inference_flag = 1;
vseq->seq_fields.bits.log2_max_frame_num_minus4 = 4; vseq->seq_fields.bits.log2_max_frame_num_minus4 = 4;
vseq->seq_fields.bits.pic_order_cnt_type = 0; 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 || if (avctx->width != ctx->surface_width ||
avctx->height != ctx->surface_height) { avctx->height != ctx->surface_height) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment