OSDN Git Service

HEVC: some variables used later
authorXiang, Haihao <haihao.xiang@intel.com>
Thu, 19 Jun 2014 08:35:00 +0000 (16:35 +0800)
committerXiang, Haihao <haihao.xiang@intel.com>
Sat, 13 Dec 2014 16:42:17 +0000 (00:42 +0800)
Signed-off-by: Xiang, Haihao <haihao.xiang@intel.com>
(cherry picked from commit 4c8834b73dbf3b996b30ad05b140e07e52dd7ab9)

src/gen9_mfd.c
src/gen9_mfd.h

index cfed038..8545d1a 100644 (file)
@@ -29,6 +29,7 @@
 #include "sysdeps.h"
 
 #include <va/va.h>
+#include <va/va_dec_hevc.h>
 
 #include "intel_batchbuffer.h"
 #include "intel_driver.h"
@@ -43,7 +44,21 @@ gen9_hcpd_hevc_decode_init(VADriverContextP ctx,
                            struct decode_state *decode_state,
                            struct gen9_hcpd_context *gen9_hcpd_context)
 {
-    /* FIXME: implement it later */
+    VAPictureParameterBufferHEVC *pic_param;
+
+    assert(decode_state->pic_param && decode_state->pic_param->buffer);
+    pic_param = (VAPictureParameterBufferHEVC *)decode_state->pic_param->buffer;
+
+    gen9_hcpd_context->picture_width_in_pixels = pic_param->pic_width_in_luma_samples;
+    gen9_hcpd_context->picture_height_in_pixels = pic_param->pic_height_in_luma_samples;
+    gen9_hcpd_context->ctb_size = (1 << (pic_param->log2_min_luma_coding_block_size_minus3 +
+                                         3 +
+                                         pic_param->log2_diff_max_min_luma_coding_block_size));
+    gen9_hcpd_context->picture_width_in_ctbs = ALIGN(gen9_hcpd_context->picture_width_in_pixels, gen9_hcpd_context->ctb_size) / gen9_hcpd_context->ctb_size;
+    gen9_hcpd_context->picture_height_in_ctbs = ALIGN(gen9_hcpd_context->picture_height_in_pixels, gen9_hcpd_context->ctb_size) / gen9_hcpd_context->ctb_size;
+    gen9_hcpd_context->min_cb_size = (1 << (pic_param->log2_min_luma_coding_block_size_minus3 + 3));
+    gen9_hcpd_context->picture_width_in_min_cb_minus1 = gen9_hcpd_context->picture_width_in_pixels / gen9_hcpd_context->min_cb_size - 1;
+    gen9_hcpd_context->picture_height_in_min_cb_minus1 = gen9_hcpd_context->picture_height_in_pixels / gen9_hcpd_context->min_cb_size - 1;
 
     return VA_STATUS_SUCCESS;
 }
index 1578ea6..8b2213a 100644 (file)
@@ -40,6 +40,15 @@ struct hw_context;
 struct gen9_hcpd_context
 {
     struct hw_context base;
+
+    uint16_t picture_width_in_pixels;
+    uint16_t picture_height_in_pixels;
+    uint16_t picture_width_in_ctbs;
+    uint16_t picture_height_in_ctbs;
+    uint16_t picture_width_in_min_cb_minus1;
+    uint16_t picture_height_in_min_cb_minus1;
+    uint8_t ctb_size;
+    uint8_t min_cb_size;
 };
 
 #endif /* GEN9_MFD_H */