OSDN Git Service

msm: vidc: Increase minimum input buffer count for HEVC decode
authorParas Nagda <pnagda@codeaurora.org>
Tue, 29 May 2018 12:20:35 +0000 (17:50 +0530)
committerGerrit - the friendly Code Review server <code-review@localhost>
Fri, 3 Aug 2018 06:06:04 +0000 (23:06 -0700)
Increase minimum input buffer count for HEVC decode to 5 to
avoid hang when the DPB is not full and FW keeps
waiting for FTB although sufficient ETB are being queued.

CRs-Fixed: 2252419

Change-Id: Id344cd896aeac46765e250e715d14a6c835b4221
Signed-off-by: Paras Nagda <pnagda@codeaurora.org>
drivers/media/platform/msm/vidc/msm_vdec.c

index 691fd2b..fc8da8d 100644 (file)
@@ -23,6 +23,7 @@
 
 #define MSM_VDEC_DVC_NAME "msm_vdec_8974"
 #define MIN_NUM_OUTPUT_BUFFERS 4
+#define MIN_NUM_OUTPUT_BUFFERS_HEVC 5
 #define MIN_NUM_CAPTURE_BUFFERS 6
 #define MIN_NUM_THUMBNAIL_MODE_CAPTURE_BUFFERS 1
 #define MAX_NUM_OUTPUT_BUFFERS VB2_MAX_FRAME
@@ -1471,6 +1472,12 @@ static int msm_vdec_queue_setup(struct vb2_queue *q,
                if (*num_buffers < MIN_NUM_OUTPUT_BUFFERS ||
                                *num_buffers > MAX_NUM_OUTPUT_BUFFERS)
                        *num_buffers = MIN_NUM_OUTPUT_BUFFERS;
+
+               if (inst->fmts[OUTPUT_PORT].fourcc ==
+                               V4L2_PIX_FMT_HEVC &&
+                               *num_buffers < MIN_NUM_OUTPUT_BUFFERS_HEVC)
+                       *num_buffers = MIN_NUM_OUTPUT_BUFFERS_HEVC;
+
                for (i = 0; i < *num_planes; i++) {
                        sizes[i] = get_frame_size(inst,
                                        &inst->fmts[OUTPUT_PORT], q->type, i);