[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