media: venus: Add a handling of QC08C compressed format
This adds QC08C compressed pixel format in the Venus driver, and make it possible to discover from v4l2 clients. Signed-off-by: Stanimir Varbanov <stanimir.varbanov@linaro.org> Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
This commit is contained in:
parent
fc00086ed7
commit
9593126dae
@ -608,6 +608,8 @@ static u32 to_hfi_raw_fmt(u32 v4l2_fmt)
|
||||
return HFI_COLOR_FORMAT_NV12;
|
||||
case V4L2_PIX_FMT_NV21:
|
||||
return HFI_COLOR_FORMAT_NV21;
|
||||
case V4L2_PIX_FMT_QC08C:
|
||||
return HFI_COLOR_FORMAT_NV12_UBWC;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
@ -31,6 +31,10 @@
|
||||
*/
|
||||
static const struct venus_format vdec_formats[] = {
|
||||
{
|
||||
.pixfmt = V4L2_PIX_FMT_QC08C,
|
||||
.num_planes = 1,
|
||||
.type = V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE,
|
||||
}, {
|
||||
.pixfmt = V4L2_PIX_FMT_NV12,
|
||||
.num_planes = 1,
|
||||
.type = V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE,
|
||||
@ -106,6 +110,10 @@ find_format(struct venus_inst *inst, u32 pixfmt, u32 type)
|
||||
!venus_helper_check_codec(inst, fmt[i].pixfmt))
|
||||
return NULL;
|
||||
|
||||
if (V4L2_TYPE_IS_CAPTURE(type) &&
|
||||
!venus_helper_check_format(inst, fmt[i].pixfmt))
|
||||
return NULL;
|
||||
|
||||
return &fmt[i];
|
||||
}
|
||||
|
||||
@ -124,8 +132,12 @@ find_format_by_index(struct venus_inst *inst, unsigned int index, u32 type)
|
||||
|
||||
if (fmt[i].type != type)
|
||||
continue;
|
||||
valid = type != V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE ||
|
||||
venus_helper_check_codec(inst, fmt[i].pixfmt);
|
||||
|
||||
if (V4L2_TYPE_IS_OUTPUT(type))
|
||||
valid = venus_helper_check_codec(inst, fmt[i].pixfmt);
|
||||
else if (V4L2_TYPE_IS_CAPTURE(type))
|
||||
valid = venus_helper_check_format(inst, fmt[i].pixfmt);
|
||||
|
||||
if (k == index && valid)
|
||||
break;
|
||||
if (valid)
|
||||
@ -1527,7 +1539,7 @@ static const struct hfi_inst_ops vdec_hfi_ops = {
|
||||
static void vdec_inst_init(struct venus_inst *inst)
|
||||
{
|
||||
inst->hfi_codec = HFI_VIDEO_CODEC_H264;
|
||||
inst->fmt_out = &vdec_formats[6];
|
||||
inst->fmt_out = &vdec_formats[7];
|
||||
inst->fmt_cap = &vdec_formats[0];
|
||||
inst->width = frame_width_min(inst);
|
||||
inst->height = ALIGN(frame_height_min(inst), 32);
|
||||
|
Loading…
x
Reference in New Issue
Block a user