summaryrefslogtreecommitdiff
authorNanxin Qin <nanxin.qin@amlogic.com>2020-03-31 10:38:32 (GMT)
committer Hui Zhang <hui.zhang@amlogic.com>2020-04-02 06:13:39 (GMT)
commit1d3640170408a26af93d76496333889498073af8 (patch)
tree1f92bed7509c97ded01e514d34f14a2bec54513c
parent77ca17156ba6cb57ac3fa9bb785cf06397f6cf40 (diff)
downloadmedia_modules-1d3640170408a26af93d76496333889498073af8.zip
media_modules-1d3640170408a26af93d76496333889498073af8.tar.gz
media_modules-1d3640170408a26af93d76496333889498073af8.tar.bz2
v4l: fixed the issue of enum framesize. [1/1]
PD#SH-2866 Problem: can not playback 4k source on the platform linux. Solution: 1. add type of picture format for enum frameszie. 2. change the value of stepwise to avoid pic size not match. Verify: w200 Change-Id: I336dea84062f79e3cd2d875cfb64bf4781cfa8de Signed-off-by: Nanxin Qin <nanxin.qin@amlogic.com>
Diffstat
-rw-r--r--drivers/amvdec_ports/aml_vcodec_dec.c51
1 files changed, 36 insertions, 15 deletions
diff --git a/drivers/amvdec_ports/aml_vcodec_dec.c b/drivers/amvdec_ports/aml_vcodec_dec.c
index c3af7cf..80f73be 100644
--- a/drivers/amvdec_ports/aml_vcodec_dec.c
+++ b/drivers/amvdec_ports/aml_vcodec_dec.c
@@ -121,38 +121,58 @@ static struct aml_video_fmt aml_video_formats[] = {
static const struct aml_codec_framesizes aml_vdec_framesizes[] = {
{
.fourcc = V4L2_PIX_FMT_H264,
- .stepwise = { AML_VDEC_MIN_W, AML_VDEC_MAX_W, 8,
- AML_VDEC_MIN_H, AML_VDEC_MAX_H, 8 },
+ .stepwise = { AML_VDEC_MIN_W, AML_VDEC_MAX_W, 2,
+ AML_VDEC_MIN_H, AML_VDEC_MAX_H, 2},
},
{
.fourcc = V4L2_PIX_FMT_HEVC,
- .stepwise = { AML_VDEC_MIN_W, AML_VDEC_MAX_W, 8,
- AML_VDEC_MIN_H, AML_VDEC_MAX_H, 8 },
+ .stepwise = { AML_VDEC_MIN_W, AML_VDEC_MAX_W, 2,
+ AML_VDEC_MIN_H, AML_VDEC_MAX_H, 2},
},
{
.fourcc = V4L2_PIX_FMT_VP9,
- .stepwise = { AML_VDEC_MIN_W, AML_VDEC_MAX_W, 8,
- AML_VDEC_MIN_H, AML_VDEC_MAX_H, 8 },
+ .stepwise = { AML_VDEC_MIN_W, AML_VDEC_MAX_W, 2,
+ AML_VDEC_MIN_H, AML_VDEC_MAX_H, 2},
},
{
.fourcc = V4L2_PIX_FMT_MPEG1,
- .stepwise = { AML_VDEC_MIN_W, AML_VDEC_MAX_W, 8,
- AML_VDEC_MIN_H, AML_VDEC_MAX_H, 8 },
+ .stepwise = { AML_VDEC_MIN_W, AML_VDEC_MAX_W, 2,
+ AML_VDEC_MIN_H, AML_VDEC_MAX_H, 2},
},
{
.fourcc = V4L2_PIX_FMT_MPEG2,
- .stepwise = { AML_VDEC_MIN_W, AML_VDEC_MAX_W, 8,
- AML_VDEC_MIN_H, AML_VDEC_MAX_H, 8 },
+ .stepwise = { AML_VDEC_MIN_W, AML_VDEC_MAX_W, 2,
+ AML_VDEC_MIN_H, AML_VDEC_MAX_H, 2},
},
{
.fourcc = V4L2_PIX_FMT_MPEG4,
- .stepwise = { AML_VDEC_MIN_W, AML_VDEC_MAX_W, 8,
- AML_VDEC_MIN_H, AML_VDEC_MAX_H, 8 },
+ .stepwise = { AML_VDEC_MIN_W, AML_VDEC_MAX_W, 2,
+ AML_VDEC_MIN_H, AML_VDEC_MAX_H, 2},
},
{
.fourcc = V4L2_PIX_FMT_MJPEG,
- .stepwise = { AML_VDEC_MIN_W, AML_VDEC_MAX_W, 8,
- AML_VDEC_MIN_H, AML_VDEC_MAX_H, 8 },
+ .stepwise = { AML_VDEC_MIN_W, AML_VDEC_MAX_W, 2,
+ AML_VDEC_MIN_H, AML_VDEC_MAX_H, 2},
+ },
+ {
+ .fourcc = V4L2_PIX_FMT_NV21,
+ .stepwise = { AML_VDEC_MIN_W, AML_VDEC_MAX_W, 2,
+ AML_VDEC_MIN_H, AML_VDEC_MAX_H, 2},
+ },
+ {
+ .fourcc = V4L2_PIX_FMT_NV21M,
+ .stepwise = { AML_VDEC_MIN_W, AML_VDEC_MAX_W, 2,
+ AML_VDEC_MIN_H, AML_VDEC_MAX_H, 2},
+ },
+ {
+ .fourcc = V4L2_PIX_FMT_NV12,
+ .stepwise = { AML_VDEC_MIN_W, AML_VDEC_MAX_W, 2,
+ AML_VDEC_MIN_H, AML_VDEC_MAX_H, 2},
+ },
+ {
+ .fourcc = V4L2_PIX_FMT_NV12M,
+ .stepwise = { AML_VDEC_MIN_W, AML_VDEC_MAX_W, 2,
+ AML_VDEC_MIN_H, AML_VDEC_MAX_H, 2},
},
};
@@ -1721,7 +1741,8 @@ static int vidioc_enum_framesizes(struct file *file, void *priv,
int i = 0;
struct aml_vcodec_ctx *ctx = fh_to_ctx(priv);
- v4l_dbg(ctx, V4L_DEBUG_CODEC_PROT, "%s\n", __func__);
+ v4l_dbg(ctx, V4L_DEBUG_CODEC_PROT, "%s, idx: %d, pix fmt: %x\n",
+ __func__, fsize->index, fsize->pixel_format);
if (fsize->index != 0)
return -EINVAL;