author | Nanxin 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) |
commit | 1d3640170408a26af93d76496333889498073af8 (patch) | |
tree | 1f92bed7509c97ded01e514d34f14a2bec54513c | |
parent | 77ca17156ba6cb57ac3fa9bb785cf06397f6cf40 (diff) | |
download | media_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>
-rw-r--r-- | drivers/amvdec_ports/aml_vcodec_dec.c | 51 |
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; |