[Mesa-dev] [PATCH 3/5] st/omx/dec/h265: decoder size should follow from sps

Leo Liu leo.liu at amd.com
Fri Sep 23 16:32:55 UTC 2016


So that it will pass correct size to width(height)_in_samples in
uvd message buffer.

Signed-off-by: Leo Liu <leo.liu at amd.com>
---
 src/gallium/state_trackers/omx/vid_dec.h      |  2 ++
 src/gallium/state_trackers/omx/vid_dec_h265.c | 13 ++++++-------
 2 files changed, 8 insertions(+), 7 deletions(-)

diff --git a/src/gallium/state_trackers/omx/vid_dec.h b/src/gallium/state_trackers/omx/vid_dec.h
index ebb35a3..35a5758 100644
--- a/src/gallium/state_trackers/omx/vid_dec.h
+++ b/src/gallium/state_trackers/omx/vid_dec.h
@@ -100,6 +100,8 @@ DERIVEDCLASS(vid_dec_PrivateType, omx_base_filter_PrivateType)
       struct { \
          unsigned temporal_id; \
          unsigned level_idc; \
+         unsigned pic_width_in_luma_samples; \
+         unsigned pic_height_in_luma_samples; \
          bool IdrPicFlag; \
          int slice_prev_poc; \
          void *ref_pic_set_list; \
diff --git a/src/gallium/state_trackers/omx/vid_dec_h265.c b/src/gallium/state_trackers/omx/vid_dec_h265.c
index 2396da3..fc8bf3d 100644
--- a/src/gallium/state_trackers/omx/vid_dec_h265.c
+++ b/src/gallium/state_trackers/omx/vid_dec_h265.c
@@ -458,9 +458,11 @@ static void seq_parameter_set(vid_dec_PrivateType *priv, struct vl_rbsp *rbsp)
    if (sps->chroma_format_idc == 3)
       sps->separate_colour_plane_flag = vl_rbsp_u(rbsp, 1);
 
-   sps->pic_width_in_luma_samples = vl_rbsp_ue(rbsp);
+   priv->codec_data.h265.pic_width_in_luma_samples =
+      sps->pic_width_in_luma_samples = vl_rbsp_ue(rbsp);
 
-   sps->pic_height_in_luma_samples = vl_rbsp_ue(rbsp);
+   priv->codec_data.h265.pic_height_in_luma_samples =
+      sps->pic_height_in_luma_samples = vl_rbsp_ue(rbsp);
 
    /* conformance_window_flag */
    if (vl_rbsp_u(rbsp, 1)) {
@@ -641,16 +643,13 @@ static void vid_dec_h265_BeginFrame(vid_dec_PrivateType *priv)
 
    if (!priv->codec) {
       struct pipe_video_codec templat = {};
-      omx_base_video_PortType *port;
 
-      port = (omx_base_video_PortType *)
-         priv->ports[OMX_BASE_FILTER_INPUTPORT_INDEX];
       templat.profile = priv->profile;
       templat.entrypoint = PIPE_VIDEO_ENTRYPOINT_BITSTREAM;
       templat.chroma_format = PIPE_VIDEO_CHROMA_FORMAT_420;
       templat.expect_chunked_decode = true;
-      templat.width = align(port->sPortParam.format.video.nFrameWidth, 4);
-      templat.height = align(port->sPortParam.format.video.nFrameHeight, 4);
+      templat.width = priv->codec_data.h265.pic_width_in_luma_samples;
+      templat.height = priv->codec_data.h265.pic_height_in_luma_samples;
       templat.level =  priv->codec_data.h265.level_idc;
       priv->codec = priv->pipe->create_video_codec(priv->pipe, &templat);
    }
-- 
2.7.4



More information about the mesa-dev mailing list