[FFmpeg-cvslog] lavc/vaapi_hevc: fix scaling list duplicate transfer issue.

Jun Zhao git at videolan.org
Wed Nov 23 23:40:09 EET 2016


ffmpeg | branch: master | Jun Zhao <mypopydev at gmail.com> | Tue Nov 22 15:58:50 2016 +0800| [584eea5bf3e40e2dbab986f8e9e8f01c8a4426d2] | committer: Mark Thompson

lavc/vaapi_hevc: fix scaling list duplicate transfer issue.

scaling list is already transfered to raster scan during head parsing,
so no need to transfer it again.

And after this fix, FATE test SLIST_A_Sony_4/SLIST_B_Sony_8/
SLIST_C_Sony_3/SLIST_D_Sony_9 will pass in i965/Skylake.

Signed-off-by: Wang, Yi A <yi.a.wamg at intel.com>
Signed-off-by: Jun Zhao <jun.zhao at intel.com>
Signed-off-by: Mark Thompson <sw at jkqxz.net>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=584eea5bf3e40e2dbab986f8e9e8f01c8a4426d2
---

 libavcodec/vaapi_hevc.c | 12 +++++-------
 1 file changed, 5 insertions(+), 7 deletions(-)

diff --git a/libavcodec/vaapi_hevc.c b/libavcodec/vaapi_hevc.c
index 62f783e..dd43463 100644
--- a/libavcodec/vaapi_hevc.c
+++ b/libavcodec/vaapi_hevc.c
@@ -265,7 +265,7 @@ static int vaapi_hevc_start_frame(AVCodecContext          *avctx,
     VAPictureParameterBufferHEVC *pic_param;
     VAIQMatrixBufferHEVC *iq_matrix;
     ScalingList const * scaling_list;
-    int i, j, pos;
+    int i, j;
 
     ff_dlog(avctx, "vaapi_hevc_start_frame()\n");
 
@@ -293,15 +293,13 @@ static int vaapi_hevc_start_frame(AVCodecContext          *avctx,
 
     for (i = 0; i < 6; ++i) {
         for (j = 0; j < 16; ++j) {
-            pos = 4 * ff_hevc_diag_scan4x4_y[j] + ff_hevc_diag_scan4x4_x[j];
-            iq_matrix->ScalingList4x4[i][j] = scaling_list->sl[0][i][pos];
+            iq_matrix->ScalingList4x4[i][j] = scaling_list->sl[0][i][j];
         }
         for (j = 0; j < 64; ++j) {
-            pos = 8 * ff_hevc_diag_scan8x8_y[j] + ff_hevc_diag_scan8x8_x[j];
-            iq_matrix->ScalingList8x8[i][j] = scaling_list->sl[1][i][pos];
-            iq_matrix->ScalingList16x16[i][j] = scaling_list->sl[2][i][pos];
+            iq_matrix->ScalingList8x8[i][j] = scaling_list->sl[1][i][j];
+            iq_matrix->ScalingList16x16[i][j] = scaling_list->sl[2][i][j];
             if (i < 2) {
-                iq_matrix->ScalingList32x32[i][j] = scaling_list->sl[3][i * 3][pos];
+                iq_matrix->ScalingList32x32[i][j] = scaling_list->sl[3][i * 3][j];
             }
         }
         iq_matrix->ScalingListDC16x16[i] = scaling_list->sl_dc[0][i];



More information about the ffmpeg-cvslog mailing list