mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-02 07:58:07 +02:00
st/omx/dec: disable tunnel for size different case
When the video coded size is different from frame size, we need the result buffers are same as coded size, which are not size compatible with encode required size, so that simply use no tunnel for this case instead of frame by frame converting. Signed-off-by: Leo Liu <leo.liu@amd.com> Cc: 13.0 <mesa-stable@lists.freedesktop.org>
This commit is contained in:
parent
d9b2c4048d
commit
06e3cd6a45
3 changed files with 11 additions and 1 deletions
|
|
@ -621,7 +621,7 @@ static void vid_dec_FrameDecoded(OMX_COMPONENTTYPE *comp, OMX_BUFFERHEADERTYPE*
|
|||
}
|
||||
|
||||
if (input->pInputPortPrivate) {
|
||||
if (output->pInputPortPrivate) {
|
||||
if (output->pInputPortPrivate && !priv->disable_tunnel) {
|
||||
struct pipe_video_buffer *tmp, *vbuf, *new_vbuf;
|
||||
|
||||
tmp = output->pOutputPortPrivate;
|
||||
|
|
|
|||
|
|
@ -129,6 +129,7 @@ DERIVEDCLASS(vid_dec_PrivateType, omx_base_filter_PrivateType)
|
|||
bool frame_started; \
|
||||
unsigned bytes_left; \
|
||||
const void *slice; \
|
||||
bool disable_tunnel; \
|
||||
struct vl_compositor compositor; \
|
||||
struct vl_compositor_state cstate;
|
||||
ENDCLASS(vid_dec_PrivateType)
|
||||
|
|
|
|||
|
|
@ -614,6 +614,8 @@ static void vid_dec_h265_BeginFrame(vid_dec_PrivateType *priv)
|
|||
|
||||
if (!priv->codec) {
|
||||
struct pipe_video_codec templat = {};
|
||||
omx_base_video_PortType *port = (omx_base_video_PortType *)
|
||||
priv->ports[OMX_BASE_FILTER_INPUTPORT_INDEX];
|
||||
|
||||
templat.profile = priv->profile;
|
||||
templat.entrypoint = PIPE_VIDEO_ENTRYPOINT_BITSTREAM;
|
||||
|
|
@ -623,6 +625,13 @@ static void vid_dec_h265_BeginFrame(vid_dec_PrivateType *priv)
|
|||
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);
|
||||
|
||||
/* disable transcode tunnel if video size is different from coded size */
|
||||
if (priv->codec_data.h265.pic_width_in_luma_samples !=
|
||||
port->sPortParam.format.video.nFrameWidth ||
|
||||
priv->codec_data.h265.pic_height_in_luma_samples !=
|
||||
port->sPortParam.format.video.nFrameHeight)
|
||||
priv->disable_tunnel = true;
|
||||
}
|
||||
|
||||
vid_dec_NeedTarget(priv);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue