@@ -764,6 +764,7 @@ static int vaapi_encode_h265_init_picture_params(AVCodecContext *avctx,
VAAPIEncodePicture *prev = pic->prev;
VAAPIEncodeH265Picture *hprev = prev ? prev->priv_data : NULL;
VAEncPictureParameterBufferHEVC *vpic = pic->codec_picture_params;
+ int is_ref = pic->is_reference;
int i, j = 0;
if (pic->type == PICTURE_TYPE_IDR) {
@@ -949,22 +950,22 @@ static int vaapi_encode_h265_init_picture_params(AVCodecContext *avctx,
case PICTURE_TYPE_IDR:
vpic->pic_fields.bits.idr_pic_flag = 1;
vpic->pic_fields.bits.coding_type = 1;
- vpic->pic_fields.bits.reference_pic_flag = 1;
+ vpic->pic_fields.bits.reference_pic_flag = is_ref;
break;
case PICTURE_TYPE_I:
vpic->pic_fields.bits.idr_pic_flag = 0;
vpic->pic_fields.bits.coding_type = 1;
- vpic->pic_fields.bits.reference_pic_flag = 1;
+ vpic->pic_fields.bits.reference_pic_flag = is_ref;
break;
case PICTURE_TYPE_P:
vpic->pic_fields.bits.idr_pic_flag = 0;
vpic->pic_fields.bits.coding_type = 2;
- vpic->pic_fields.bits.reference_pic_flag = 1;
+ vpic->pic_fields.bits.reference_pic_flag = is_ref;
break;
case PICTURE_TYPE_B:
vpic->pic_fields.bits.idr_pic_flag = 0;
vpic->pic_fields.bits.coding_type = 3;
- vpic->pic_fields.bits.reference_pic_flag = 0;
+ vpic->pic_fields.bits.reference_pic_flag = is_ref;
break;
default:
av_assert0(0 && "invalid picture type");