amlv4l2dec: CB2 set min width/height to 16 [1/1]
PD#SWPL-181681
Problem:
test YTS 144P case failure. because dw is
VDEC_DW_AFBC_x2_1_4_DW,decoder output video height
is 36 pixel. the min height of src caps is 64. it
causes caps negotiated failure.
Solution:
set nv12,nv21,nm12,nm21 min to 16
Verify:
ap222
Change-Id: I82fb6ac0f5e4ac4b8247c1b9d0e026e452c77983
Signed-off-by: fei.deng <fei.deng@amlogic.com>
diff --git a/src/gstamlv4l2object.c b/src/gstamlv4l2object.c
index 44aaae5..425c4c9 100644
--- a/src/gstamlv4l2object.c
+++ b/src/gstamlv4l2object.c
@@ -2896,8 +2896,19 @@
GST_DEBUG_OBJECT(v4l2object->dbg_obj, "step height: %d",
size.stepwise.step_height);
- w = MAX(size.stepwise.min_width, 1);
- h = MAX(size.stepwise.min_height, 1);
+ if (pixelformat == V4L2_PIX_FMT_NV12 ||
+ pixelformat == V4L2_PIX_FMT_NV21 ||
+ pixelformat == V4L2_PIX_FMT_NV12M ||
+ pixelformat == V4L2_PIX_FMT_NV21M) {
+ GST_DEBUG_OBJECT(v4l2object->dbg_obj,
+ "set %" GST_FOURCC_FORMAT " min width and height to 16",
+ GST_FOURCC_ARGS(pixelformat));
+ w = 16;
+ h = 16;
+ } else {
+ w = MAX(size.stepwise.min_width, 1);
+ h = MAX(size.stepwise.min_height, 1);
+ }
maxw = MIN(size.stepwise.max_width, G_MAXINT);
maxh = MIN(size.stepwise.max_height, G_MAXINT);
@@ -3648,7 +3659,7 @@
break;
case V4L2_PIX_FMT_H264:
{
- if (width > 1920 && height > 1080 && interlace)
+ if (width > 1920 && height > 1080 && !interlace)
double_write = VDEC_DW_AFBC_1_4_DW;
else
double_write = VDEC_DW_NO_AFBC;