diff mbox series

[FFmpeg-devel,v3,10/11] lavc/vaapi_hevc: Set correct rps type for scc

Message ID 20230103125952.2707824-10-fei.w.wang@intel.com
State New
Headers show
Series [FFmpeg-devel,v3,01/11] lavc/hevc_ps: remove profile limitation of pps_range_extensions() | 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 fail Make fate failed

Commit Message

Wang, Fei W Jan. 3, 2023, 12:59 p.m. UTC
From: Linjie Fu <linjie.fu@intel.com>

According to 8.1.3 and 8.3.2.

Signed-off-by: Linjie Fu <linjie.justin.fu@gmail.com>
Signed-off-by: Fei Wang <fei.w.wang@intel.com>
---
 libavcodec/vaapi_hevc.c | 4 ++++
 1 file changed, 4 insertions(+)

Comments

Wang, Fei W Jan. 11, 2023, 2:37 a.m. UTC | #1
> -----Original Message-----
> From: Wang, Fei W <fei.w.wang@intel.com>
> Sent: Tuesday, January 3, 2023 9:00 PM
> To: ffmpeg-devel@ffmpeg.org
> Cc: Linjie Fu <linjie.fu@intel.com>; Linjie Fu <linjie.justin.fu@gmail.com>; Wang,
> Fei W <fei.w.wang@intel.com>
> Subject: [FFmpeg-devel][PATCH v3 10/11] lavc/vaapi_hevc: Set correct rps type
> for scc
> 
> From: Linjie Fu <linjie.fu@intel.com>
> 
> According to 8.1.3 and 8.3.2.
> 
> Signed-off-by: Linjie Fu <linjie.justin.fu@gmail.com>
> Signed-off-by: Fei Wang <fei.w.wang@intel.com>
> ---
>  libavcodec/vaapi_hevc.c | 4 ++++
>  1 file changed, 4 insertions(+)
> 
> diff --git a/libavcodec/vaapi_hevc.c b/libavcodec/vaapi_hevc.c index
> c10617a81a..29c75e88f0 100644
> --- a/libavcodec/vaapi_hevc.c
> +++ b/libavcodec/vaapi_hevc.c
> @@ -71,6 +71,7 @@ static void fill_vaapi_pic(VAPictureHEVC *va_pic, const
> HEVCFrame *pic, int rps_  static int find_frame_rps_type(const HEVCContext *h,
> const HEVCFrame *pic)  {
>      VASurfaceID pic_surf = ff_vaapi_get_surface_id(pic->frame);
> +    const HEVCFrame *current_picture = h->ref;
>      int i;
> 
>      for (i = 0; i < h->rps[ST_CURR_BEF].nb_refs; i++) { @@ -88,6 +89,9 @@ static
> int find_frame_rps_type(const HEVCContext *h, const HEVCFrame *pic)
>              return VA_PICTURE_HEVC_RPS_LT_CURR;
>      }
> 
> +    if (h->ps.pps->pps_curr_pic_ref_enabled_flag && current_picture->poc ==
> pic->poc)
> +        return VA_PICTURE_HEVC_LONG_TERM_REFERENCE;
> +

FATE test report fail in patchwork:
https://patchwork.ffmpeg.org/project/ffmpeg/patch/20230103125952.2707824-10-fei.w.wang@intel.com/
	make: *** [fate-hevc-conformance-PS_A_VIDYO_3] Error 1
cpu_flags(raw) = 0x000813DB
cpu_flags_str(raw) = mmx mmxext sse sse2 sse3 ssse3 sse4.1 sse4.2 cmov aesni
cpu_flags(effective) = 0x000813DB
cpu_flags_str(effective) = mmx mmxext sse sse2 sse3 ssse3 sse4.1 sse4.2 cmov aesni
threads = 1 (cpu_count = 5)
make: Target 'fate' not remade because of errors.

Checked locally, no this problem. The patch only change vaapi hevc decoder, should not cause the FATE fail(Only native decoder will be used in FATE?). Assume wrong report in patchwork. 

Thanks
Fei

>      return 0;
>  }
> 
> --
> 2.25.1
diff mbox series

Patch

diff --git a/libavcodec/vaapi_hevc.c b/libavcodec/vaapi_hevc.c
index c10617a81a..29c75e88f0 100644
--- a/libavcodec/vaapi_hevc.c
+++ b/libavcodec/vaapi_hevc.c
@@ -71,6 +71,7 @@  static void fill_vaapi_pic(VAPictureHEVC *va_pic, const HEVCFrame *pic, int rps_
 static int find_frame_rps_type(const HEVCContext *h, const HEVCFrame *pic)
 {
     VASurfaceID pic_surf = ff_vaapi_get_surface_id(pic->frame);
+    const HEVCFrame *current_picture = h->ref;
     int i;
 
     for (i = 0; i < h->rps[ST_CURR_BEF].nb_refs; i++) {
@@ -88,6 +89,9 @@  static int find_frame_rps_type(const HEVCContext *h, const HEVCFrame *pic)
             return VA_PICTURE_HEVC_RPS_LT_CURR;
     }
 
+    if (h->ps.pps->pps_curr_pic_ref_enabled_flag && current_picture->poc == pic->poc)
+        return VA_PICTURE_HEVC_LONG_TERM_REFERENCE;
+
     return 0;
 }