vulkan/video: move parsing longterm rps in h265 slice parsing.
authorHyunjun Ko <zzoon@igalia.com>
Thu, 15 Jun 2023 06:41:20 +0000 (15:41 +0900)
committerHyunjun Ko <zzoon@igalia.com>
Wed, 21 Jun 2023 10:24:08 +0000 (19:24 +0900)
It was just by mistake.

Fixes: efdcacb230 ("vulkan/video: add to parse h265 slice.")

Signed-off-by: Hyunjun Ko <zzoon@igalia.com>
Reviewed-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/23688>

src/vulkan/runtime/vk_video.c

index 703a6c6..713e4a2 100644 (file)
@@ -647,35 +647,6 @@ vk_video_parse_h265_slice_header(const struct VkVideoDecodeInfoKHR *frame_info,
             }
          }
 
-         if (sps->flags.long_term_ref_pics_present_flag) {
-            unsigned num_lt_sps = 0;
-
-            if (sps->num_long_term_ref_pics_sps > 0)
-               num_lt_sps = vl_rbsp_ue(&rbsp);
-
-            unsigned num_lt_pics = vl_rbsp_ue(&rbsp);
-            unsigned num_refs = num_lt_pics + num_lt_sps;
-
-            for (unsigned i = 0; i < num_refs; i++) {
-               if (i < num_lt_sps) {
-                  if (sps->num_long_term_ref_pics_sps > 1)
-                     /* lt_idx_sps */
-                     vl_rbsp_u(&rbsp,
-                           util_logbase2_ceil(sps->num_long_term_ref_pics_sps));
-               } else {
-                  /* poc_lsb_lt */
-                  vl_rbsp_u(&rbsp, sps->log2_max_pic_order_cnt_lsb_minus4 + 4);
-                  /* used_by_curr_pic_lt_flag */
-                  vl_rbsp_u(&rbsp, 1);
-               }
-
-               /* poc_msb_present */
-               if (vl_rbsp_u(&rbsp, 1)) {
-                  /* delta_poc_msb_cycle_lt */
-                  vl_rbsp_ue(&rbsp);
-               }
-            }
-         }
       } else {
          unsigned num_st_rps = sps->num_short_term_ref_pic_sets;
 
@@ -685,6 +656,35 @@ vk_video_parse_h265_slice_header(const struct VkVideoDecodeInfoKHR *frame_info,
             vl_rbsp_u(&rbsp, numbits);
       }
 
+      if (sps->flags.long_term_ref_pics_present_flag) {
+         unsigned num_lt_sps = 0;
+
+         if (sps->num_long_term_ref_pics_sps > 0)
+            num_lt_sps = vl_rbsp_ue(&rbsp);
+
+         unsigned num_lt_pics = vl_rbsp_ue(&rbsp);
+         unsigned num_refs = num_lt_pics + num_lt_sps;
+
+         for (unsigned i = 0; i < num_refs; i++) {
+            if (i < num_lt_sps) {
+               if (sps->num_long_term_ref_pics_sps > 1)
+                  /* lt_idx_sps */
+                  vl_rbsp_u(&rbsp,
+                        util_logbase2_ceil(sps->num_long_term_ref_pics_sps));
+            } else {
+               /* poc_lsb_lt */
+               vl_rbsp_u(&rbsp, sps->log2_max_pic_order_cnt_lsb_minus4 + 4);
+               /* used_by_curr_pic_lt_flag */
+               vl_rbsp_u(&rbsp, 1);
+            }
+
+            /* poc_msb_present */
+            if (vl_rbsp_u(&rbsp, 1)) {
+               /* delta_poc_msb_cycle_lt */
+               vl_rbsp_ue(&rbsp);
+            }
+         }
+      }
 
       if (sps->flags.sps_temporal_mvp_enabled_flag)
          params->temporal_mvp_enable = vl_rbsp_u(&rbsp, 1);