diff mbox series

[FFmpeg-devel,2/2] avcodec/vaapi_encode_h265: use is_reference to fill reference_pic_flag

Message ID 20240227034835.897-2-tong1.wu@intel.com
State New
Headers show
Series [FFmpeg-devel,1/2] avcodec/vaapi_encode_h264: use is_reference to fill reference_pic_flag | expand

Checks

Context Check Description
yinshiyou/make_loongarch64 success Make finished
yinshiyou/make_fate_loongarch64 success Make fate finished
andriy/make_x86 success Make finished
andriy/make_fate_x86 success Make fate finished

Commit Message

Wu, Tong1 Feb. 27, 2024, 3:48 a.m. UTC
From: Tong Wu <tong1.wu@intel.com>

This codec supports FLAG_B_PICTURE_REFERENCES. We need to fill
reference_pic_flag with pic->is_reference.

Signed-off-by: Tong Wu <tong1.wu@intel.com>
---
 libavcodec/vaapi_encode_h265.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

Comments

Xiang, Haihao March 5, 2024, 7:29 a.m. UTC | #1
On Di, 2024-02-27 at 11:48 +0800, tong1.wu-at-intel.com@ffmpeg.org wrote:
> From: Tong Wu <tong1.wu@intel.com>
> 
> This codec supports FLAG_B_PICTURE_REFERENCES. We need to fill
> reference_pic_flag with pic->is_reference.
> 
> Signed-off-by: Tong Wu <tong1.wu@intel.com>
> ---
>  libavcodec/vaapi_encode_h265.c | 8 ++++----
>  1 file changed, 4 insertions(+), 4 deletions(-)
> 
> diff --git a/libavcodec/vaapi_encode_h265.c b/libavcodec/vaapi_encode_h265.c
> index c4aabbf5ed..b5d3468152 100644
> --- a/libavcodec/vaapi_encode_h265.c
> +++ b/libavcodec/vaapi_encode_h265.c
> @@ -949,22 +949,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 = pic->is_reference;
>          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 = pic->is_reference;
>          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 = pic->is_reference;
>          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 = pic->is_reference;

Better to move the assignment out of the switch statement.

Thanks
Haihao

>          break;
>      default:
>          av_assert0(0 && "invalid picture type");
Wu, Tong1 March 5, 2024, 8:06 a.m. UTC | #2
>Subject: Re: [FFmpeg-devel] [PATCH 2/2] avcodec/vaapi_encode_h265: use
>is_reference to fill reference_pic_flag
>
>On Di, 2024-02-27 at 11:48 +0800, tong1.wu-at-intel.com@ffmpeg.org wrote:
>> From: Tong Wu <tong1.wu@intel.com>
>>
>> This codec supports FLAG_B_PICTURE_REFERENCES. We need to fill
>> reference_pic_flag with pic->is_reference.
>>
>> Signed-off-by: Tong Wu <tong1.wu@intel.com>
>> ---
>>  libavcodec/vaapi_encode_h265.c | 8 ++++----
>>  1 file changed, 4 insertions(+), 4 deletions(-)
>>
>> diff --git a/libavcodec/vaapi_encode_h265.c
>b/libavcodec/vaapi_encode_h265.c
>> index c4aabbf5ed..b5d3468152 100644
>> --- a/libavcodec/vaapi_encode_h265.c
>> +++ b/libavcodec/vaapi_encode_h265.c
>> @@ -949,22 +949,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 = pic->is_reference;
>>          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 = pic->is_reference;
>>          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 = pic->is_reference;
>>          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 = pic->is_reference;
>
>Better to move the assignment out of the switch statement.

Sorry I misunderstood. Please see patch V3.

>
>Thanks
>Haihao
>
>>          break;
>>      default:
>>          av_assert0(0 && "invalid picture type");
diff mbox series

Patch

diff --git a/libavcodec/vaapi_encode_h265.c b/libavcodec/vaapi_encode_h265.c
index c4aabbf5ed..b5d3468152 100644
--- a/libavcodec/vaapi_encode_h265.c
+++ b/libavcodec/vaapi_encode_h265.c
@@ -949,22 +949,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 = pic->is_reference;
         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 = pic->is_reference;
         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 = pic->is_reference;
         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 = pic->is_reference;
         break;
     default:
         av_assert0(0 && "invalid picture type");