mirror of
https://github.com/torvalds/linux.git
synced 2026-05-30 18:13:41 +02:00
media: cedrus: Add support for additional output formats
If VPU supports untiled output, it actually supports several different YUV 4:2:0 layouts, namely NV12, NV21, YUV420 and YVU420. Add support for all of them. Signed-off-by: Jernej Skrabec <jernej.skrabec@siol.net> Reviewed-by: Paul Kocialkowski <paulk@sys-base.io> Signed-off-by: Nicolas Dufresne <nicolas.dufresne@collabora.com> Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl> [hverkuil: add 'default' case to switch to fix warning with old compiler]
This commit is contained in:
parent
b245bd0eb4
commit
193cd0fd5a
|
|
@ -86,9 +86,26 @@ void cedrus_dst_format_set(struct cedrus_dev *dev,
|
|||
|
||||
switch (fmt->pixelformat) {
|
||||
case V4L2_PIX_FMT_NV12:
|
||||
case V4L2_PIX_FMT_NV21:
|
||||
case V4L2_PIX_FMT_YUV420:
|
||||
case V4L2_PIX_FMT_YVU420:
|
||||
chroma_size = ALIGN(width, 16) * ALIGN(height, 16) / 2;
|
||||
|
||||
reg = VE_PRIMARY_OUT_FMT_NV12;
|
||||
switch (fmt->pixelformat) {
|
||||
case V4L2_PIX_FMT_NV12:
|
||||
reg = VE_PRIMARY_OUT_FMT_NV12;
|
||||
break;
|
||||
case V4L2_PIX_FMT_NV21:
|
||||
reg = VE_PRIMARY_OUT_FMT_NV21;
|
||||
break;
|
||||
case V4L2_PIX_FMT_YUV420:
|
||||
reg = VE_PRIMARY_OUT_FMT_YU12;
|
||||
break;
|
||||
case V4L2_PIX_FMT_YVU420:
|
||||
default:
|
||||
reg = VE_PRIMARY_OUT_FMT_YV12;
|
||||
break;
|
||||
}
|
||||
cedrus_write(dev, VE_PRIMARY_OUT_FMT, reg);
|
||||
|
||||
reg = chroma_size / 2;
|
||||
|
|
|
|||
|
|
@ -64,6 +64,21 @@ static struct cedrus_format cedrus_formats[] = {
|
|||
.pixelformat = V4L2_PIX_FMT_NV12_32L32,
|
||||
.directions = CEDRUS_DECODE_DST,
|
||||
},
|
||||
{
|
||||
.pixelformat = V4L2_PIX_FMT_NV21,
|
||||
.directions = CEDRUS_DECODE_DST,
|
||||
.capabilities = CEDRUS_CAPABILITY_UNTILED,
|
||||
},
|
||||
{
|
||||
.pixelformat = V4L2_PIX_FMT_YUV420,
|
||||
.directions = CEDRUS_DECODE_DST,
|
||||
.capabilities = CEDRUS_CAPABILITY_UNTILED,
|
||||
},
|
||||
{
|
||||
.pixelformat = V4L2_PIX_FMT_YVU420,
|
||||
.directions = CEDRUS_DECODE_DST,
|
||||
.capabilities = CEDRUS_CAPABILITY_UNTILED,
|
||||
},
|
||||
};
|
||||
|
||||
#define CEDRUS_FORMATS_COUNT ARRAY_SIZE(cedrus_formats)
|
||||
|
|
@ -140,6 +155,9 @@ void cedrus_prepare_format(struct v4l2_pix_format *pix_fmt)
|
|||
break;
|
||||
|
||||
case V4L2_PIX_FMT_NV12:
|
||||
case V4L2_PIX_FMT_NV21:
|
||||
case V4L2_PIX_FMT_YUV420:
|
||||
case V4L2_PIX_FMT_YVU420:
|
||||
/* 16-aligned stride. */
|
||||
bytesperline = ALIGN(width, 16);
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user