From: Christian König <christian.koe...@amd.com> Signed-off-by: Christian König <christian.koe...@amd.com> --- src/gallium/state_trackers/omx/vid_enc.c | 10 +++++++--- src/gallium/state_trackers/omx/vid_enc.h | 1 + 2 files changed, 8 insertions(+), 3 deletions(-)
diff --git a/src/gallium/state_trackers/omx/vid_enc.c b/src/gallium/state_trackers/omx/vid_enc.c index 7633cd6..1e6a189 100644 --- a/src/gallium/state_trackers/omx/vid_enc.c +++ b/src/gallium/state_trackers/omx/vid_enc.c @@ -563,7 +563,7 @@ static OMX_ERRORTYPE vid_enc_MessageHandler(OMX_COMPONENTTYPE* comp, internalReq priv->scale.xWidth : port->sPortParam.format.video.nFrameWidth; templat.height = priv->scale_buffer[priv->current_scale_buffer] ? priv->scale.xHeight : port->sPortParam.format.video.nFrameHeight; - templat.max_references = 1; + templat.max_references = OMX_VID_ENC_P_PERIOD_DEFAULT; priv->codec = priv->s_pipe->create_video_codec(priv->s_pipe, &templat); @@ -907,13 +907,17 @@ static OMX_ERRORTYPE vid_enc_EncodeFrame(omx_base_PortType *port, OMX_BUFFERHEAD } /* -------------- determine picture type --------- */ - if (!(priv->pic_order_cnt % OMX_VID_ENC_IDR_PERIOD_DEFAULT) || priv->force_pic_type.IntraRefreshVOP) { + if (!(priv->pic_order_cnt % OMX_VID_ENC_IDR_PERIOD_DEFAULT) || + priv->force_pic_type.IntraRefreshVOP) { enc_ClearBframes(port, inp); picture_type = PIPE_H264_ENC_PICTURE_TYPE_IDR; priv->force_pic_type.IntraRefreshVOP = OMX_FALSE; priv->frame_num = 0; + } else if (!(priv->pic_order_cnt % OMX_VID_ENC_P_PERIOD_DEFAULT) || + (buf->nFlags & OMX_BUFFERFLAG_EOS)) { + picture_type = PIPE_H264_ENC_PICTURE_TYPE_P; } else { - picture_type = PIPE_H264_ENC_PICTURE_TYPE_P; + picture_type = PIPE_H264_ENC_PICTURE_TYPE_B; } task->pic_order_cnt = priv->pic_order_cnt++; diff --git a/src/gallium/state_trackers/omx/vid_enc.h b/src/gallium/state_trackers/omx/vid_enc.h index 6f6226a..c01c959 100644 --- a/src/gallium/state_trackers/omx/vid_enc.h +++ b/src/gallium/state_trackers/omx/vid_enc.h @@ -60,6 +60,7 @@ #define OMX_VID_ENC_SCALING_WIDTH_DEFAULT 0xffffffff #define OMX_VID_ENC_SCALING_HEIGHT_DEFAULT 0xffffffff #define OMX_VID_ENC_IDR_PERIOD_DEFAULT 1000 +#define OMX_VID_ENC_P_PERIOD_DEFAULT 4 #define OMX_VID_ENC_NUM_SCALING_BUFFERS 4 -- 1.8.3.2 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev