video: driver: add private control definitions

Add private control macros and update old private
control macro usage with newly added macros.

Change-Id: Ie07fa28d74860bbd4de45fdcf746c1990c811aec
Signed-off-by: Akshata Sahukar <asahukar@codeaurora.org>
This commit is contained in:
Akshata Sahukar
2020-10-21 18:31:25 -07:00
committed by Gerrit - the friendly Code Review server
parent 4d9b29ebf3
commit 7fe61f51d3
6 changed files with 138 additions and 72 deletions

View File

@@ -113,20 +113,21 @@ static struct msm_platform_inst_capability instance_data_waipio[] = {
{MIN_BUFFERS_OUTPUT, ENC|DEC, CODECS_ALL, 0, 64, 1, 4, {MIN_BUFFERS_OUTPUT, ENC|DEC, CODECS_ALL, 0, 64, 1, 4,
V4L2_CID_MIN_BUFFERS_FOR_CAPTURE}, V4L2_CID_MIN_BUFFERS_FOR_CAPTURE},
{DECODE_ORDER, DEC, CODECS_ALL, 0, 1, 1, 0, {DECODE_ORDER, DEC, CODECS_ALL, 0, 1, 1, 0,
V4L2_CID_MPEG_VIDC_VIDEO_DECODE_ORDER, V4L2_CID_MPEG_MFC51_VIDEO_DECODER_H264_DISPLAY_DELAY_ENABLE,
HFI_PROP_DECODE_ORDER_OUTPUT}, HFI_PROP_DECODE_ORDER_OUTPUT},
{THUMBNAIL_MODE, DEC, CODECS_ALL, 0, 1, 1, 0, {THUMBNAIL_MODE, DEC, CODECS_ALL, 0, 1, 1, 0,
V4L2_CID_MPEG_VIDC_VIDEO_SYNC_FRAME_DECODE, V4L2_CID_MPEG_VIDC_THUMBNAIL_MODE,
HFI_PROP_THUMBNAIL_MODE}, HFI_PROP_THUMBNAIL_MODE},
{SECURE_MODE, ENC|DEC, CODECS_ALL, 0, 1, 1, 0, {SECURE_MODE, ENC|DEC, CODECS_ALL, 0, 1, 1, 0,
V4L2_CID_MPEG_VIDC_VIDEO_SECURE, V4L2_CID_MPEG_VIDC_SECURE,
HFI_PROP_SECURE}, HFI_PROP_SECURE},
{LOWLATENCY_MODE, ENC|DEC, CODECS_ALL, 0, 1, 1, 0, {LOWLATENCY_MODE, ENC|DEC, CODECS_ALL, 0, 1, 1, 0,
V4L2_CID_MPEG_VIDC_VIDEO_LOWLATENCY_MODE}, V4L2_CID_MPEG_VIDC_LOWLATENCY_REQUEST},
{LOWLATENCY_HINT, DEC, CODECS_ALL, 0, 1, 1, 0, /* {LOWLATENCY_HINT, DEC, CODECS_ALL, 0, 1, 1, 0,
V4L2_CID_MPEG_VIDC_VIDEO_LOWLATENCY_HINT}, V4L2_CID_MPEG_VIDC_VIDEO_LOWLATENCY_HINT},
{BUF_SIZE_LIMIT, ENC|DEC, CODECS_ALL, 0, 0x0fffffff, 1, 0, {BUF_SIZE_LIMIT, ENC|DEC, CODECS_ALL, 0, 0x0fffffff, 1, 0,
V4L2_CID_MPEG_VIDC_VIDEO_BUFFER_SIZE_LIMIT}, V4L2_CID_MPEG_VIDC_VIDEO_BUFFER_SIZE_LIMIT},
*/
/* (8192 * 4320) / 256 */ /* (8192 * 4320) / 256 */
{MBPF, ENC|DEC, CODECS_ALL, 64, 138240, 1, 138240}, {MBPF, ENC|DEC, CODECS_ALL, 64, 138240, 1, 138240},

View File

@@ -141,8 +141,8 @@ static int msm_vdec_set_bit_depth(struct msm_vidc_inst *inst,
} }
colorformat = inst->fmts[OUTPUT_PORT].fmt.pix_mp.pixelformat; colorformat = inst->fmts[OUTPUT_PORT].fmt.pix_mp.pixelformat;
if (colorformat == V4L2_PIX_FMT_NV12_P010 || if (colorformat == V4L2_PIX_FMT_VIDC_P010 ||
colorformat == V4L2_PIX_FMT_NV12_TP10_UBWC) colorformat == V4L2_PIX_FMT_VIDC_TP10C)
bitdepth = 10 << 16 | 10; bitdepth = 10 << 16 | 10;
rc = venus_hfi_session_property(inst, rc = venus_hfi_session_property(inst,
HFI_PROP_LUMA_CHROMA_BIT_DEPTH, HFI_PROP_LUMA_CHROMA_BIT_DEPTH,
@@ -289,8 +289,8 @@ static int msm_vdec_set_colorformat(struct msm_vidc_inst *inst,
} }
pixelformat = inst->fmts[OUTPUT_PORT].fmt.pix_mp.pixelformat; pixelformat = inst->fmts[OUTPUT_PORT].fmt.pix_mp.pixelformat;
if (pixelformat != V4L2_PIX_FMT_NV12_UBWC && if (pixelformat != V4L2_PIX_FMT_VIDC_NV12C &&
pixelformat != V4L2_PIX_FMT_NV12_TP10_UBWC) { pixelformat != V4L2_PIX_FMT_VIDC_TP10C) {
s_vpr_e(inst->sid, "%s: invalid pixelformat %#x\n", s_vpr_e(inst->sid, "%s: invalid pixelformat %#x\n",
__func__, pixelformat); __func__, pixelformat);
return -EINVAL; return -EINVAL;
@@ -990,7 +990,7 @@ int msm_vdec_s_fmt(struct msm_vidc_inst *inst, struct v4l2_format *f)
} }
fmt = &inst->fmts[INPUT_META_PORT]; fmt = &inst->fmts[INPUT_META_PORT];
fmt->type = INPUT_META_PLANE; fmt->type = INPUT_META_PLANE;
fmt->fmt.meta.dataformat = V4L2_PIX_FMT_VIDC_META; fmt->fmt.meta.dataformat = V4L2_META_FMT_VIDC;
fmt->fmt.meta.buffersize = call_session_op(core, buffer_size, fmt->fmt.meta.buffersize = call_session_op(core, buffer_size,
inst, MSM_VIDC_BUF_INPUT_META); inst, MSM_VIDC_BUF_INPUT_META);
inst->buffers.input_meta.min_count = inst->buffers.input_meta.min_count =
@@ -1057,7 +1057,7 @@ int msm_vdec_s_fmt(struct msm_vidc_inst *inst, struct v4l2_format *f)
} }
fmt = &inst->fmts[OUTPUT_META_PORT]; fmt = &inst->fmts[OUTPUT_META_PORT];
fmt->type = OUTPUT_META_PLANE; fmt->type = OUTPUT_META_PLANE;
fmt->fmt.meta.dataformat = V4L2_PIX_FMT_VIDC_META; fmt->fmt.meta.dataformat = V4L2_META_FMT_VIDC;
fmt->fmt.meta.buffersize = call_session_op(core, buffer_size, fmt->fmt.meta.buffersize = call_session_op(core, buffer_size,
inst, MSM_VIDC_BUF_OUTPUT_META); inst, MSM_VIDC_BUF_OUTPUT_META);
inst->buffers.output_meta.min_count = inst->buffers.output_meta.min_count =
@@ -1154,7 +1154,7 @@ int msm_vdec_enum_fmt(struct msm_vidc_inst *inst, struct v4l2_fmtdesc *f)
strlcpy(f->description, "colorformat", sizeof(f->description)); strlcpy(f->description, "colorformat", sizeof(f->description));
} else if (f->type == INPUT_META_PLANE || f->type == OUTPUT_META_PLANE) { } else if (f->type == INPUT_META_PLANE || f->type == OUTPUT_META_PLANE) {
if (!f->index) { if (!f->index) {
f->pixelformat = V4L2_PIX_FMT_VIDC_META; f->pixelformat = V4L2_META_FMT_VIDC;
strlcpy(f->description, "metadata", sizeof(f->description)); strlcpy(f->description, "metadata", sizeof(f->description));
} else { } else {
return -EINVAL; return -EINVAL;
@@ -1206,7 +1206,7 @@ int msm_vdec_inst_init(struct msm_vidc_inst *inst)
f = &inst->fmts[INPUT_META_PORT]; f = &inst->fmts[INPUT_META_PORT];
f->type = INPUT_META_PLANE; f->type = INPUT_META_PLANE;
f->fmt.meta.dataformat = V4L2_PIX_FMT_VIDC_META; f->fmt.meta.dataformat = V4L2_META_FMT_VIDC;
f->fmt.meta.buffersize = call_session_op(core, buffer_size, f->fmt.meta.buffersize = call_session_op(core, buffer_size,
inst, MSM_VIDC_BUF_INPUT_META); inst, MSM_VIDC_BUF_INPUT_META);
inst->buffers.input_meta.min_count = inst->buffers.input.min_count; inst->buffers.input_meta.min_count = inst->buffers.input.min_count;
@@ -1216,7 +1216,7 @@ int msm_vdec_inst_init(struct msm_vidc_inst *inst)
f = &inst->fmts[OUTPUT_PORT]; f = &inst->fmts[OUTPUT_PORT];
f->type = OUTPUT_MPLANE; f->type = OUTPUT_MPLANE;
f->fmt.pix_mp.pixelformat = V4L2_PIX_FMT_NV12_UBWC; f->fmt.pix_mp.pixelformat = V4L2_PIX_FMT_VIDC_NV12C;
f->fmt.pix_mp.width = VENUS_Y_STRIDE( f->fmt.pix_mp.width = VENUS_Y_STRIDE(
v4l2_colorformat_to_media(f->fmt.pix_mp.pixelformat, __func__), v4l2_colorformat_to_media(f->fmt.pix_mp.pixelformat, __func__),
DEFAULT_WIDTH); DEFAULT_WIDTH);
@@ -1238,7 +1238,7 @@ int msm_vdec_inst_init(struct msm_vidc_inst *inst)
f = &inst->fmts[OUTPUT_META_PORT]; f = &inst->fmts[OUTPUT_META_PORT];
f->type = OUTPUT_META_PLANE; f->type = OUTPUT_META_PLANE;
f->fmt.meta.dataformat = V4L2_PIX_FMT_VIDC_META; f->fmt.meta.dataformat = V4L2_META_FMT_VIDC;
f->fmt.meta.buffersize = call_session_op(core, buffer_size, f->fmt.meta.buffersize = call_session_op(core, buffer_size,
inst, MSM_VIDC_BUF_OUTPUT_META); inst, MSM_VIDC_BUF_OUTPUT_META);
inst->buffers.output_meta.min_count = inst->buffers.output.min_count; inst->buffers.output_meta.min_count = inst->buffers.output.min_count;

View File

@@ -80,8 +80,8 @@ static int msm_venc_set_colorformat(struct msm_vidc_inst *inst,
} }
pixelformat = inst->fmts[INPUT_PORT].fmt.pix_mp.pixelformat; pixelformat = inst->fmts[INPUT_PORT].fmt.pix_mp.pixelformat;
if (pixelformat != V4L2_PIX_FMT_NV12_UBWC && if (pixelformat != V4L2_PIX_FMT_VIDC_NV12C &&
pixelformat != V4L2_PIX_FMT_NV12_TP10_UBWC) { pixelformat != V4L2_PIX_FMT_VIDC_TP10C) {
s_vpr_e(inst->sid, "%s: invalid pixelformat %#x\n", s_vpr_e(inst->sid, "%s: invalid pixelformat %#x\n",
__func__, pixelformat); __func__, pixelformat);
return -EINVAL; return -EINVAL;
@@ -753,7 +753,7 @@ int msm_venc_s_fmt(struct msm_vidc_inst *inst, struct v4l2_format *f)
} }
fmt = &inst->fmts[INPUT_META_PORT]; fmt = &inst->fmts[INPUT_META_PORT];
fmt->type = INPUT_META_PLANE; fmt->type = INPUT_META_PLANE;
fmt->fmt.meta.dataformat = V4L2_PIX_FMT_VIDC_META; fmt->fmt.meta.dataformat = V4L2_META_FMT_VIDC;
fmt->fmt.meta.buffersize = call_session_op(core, buffer_size, fmt->fmt.meta.buffersize = call_session_op(core, buffer_size,
inst, MSM_VIDC_BUF_INPUT_META); inst, MSM_VIDC_BUF_INPUT_META);
inst->buffers.input_meta.min_count = inst->buffers.input_meta.min_count =
@@ -830,7 +830,7 @@ int msm_venc_s_fmt(struct msm_vidc_inst *inst, struct v4l2_format *f)
} }
fmt = &inst->fmts[OUTPUT_META_PORT]; fmt = &inst->fmts[OUTPUT_META_PORT];
fmt->type = OUTPUT_META_PLANE; fmt->type = OUTPUT_META_PLANE;
fmt->fmt.meta.dataformat = V4L2_PIX_FMT_VIDC_META; fmt->fmt.meta.dataformat = V4L2_META_FMT_VIDC;
fmt->fmt.meta.buffersize = call_session_op(core, buffer_size, fmt->fmt.meta.buffersize = call_session_op(core, buffer_size,
inst, MSM_VIDC_BUF_OUTPUT_META); inst, MSM_VIDC_BUF_OUTPUT_META);
inst->buffers.output_meta.min_count = inst->buffers.output_meta.min_count =
@@ -927,7 +927,7 @@ int msm_venc_enum_fmt(struct msm_vidc_inst *inst, struct v4l2_fmtdesc *f)
strlcpy(f->description, "colorformat", sizeof(f->description)); strlcpy(f->description, "colorformat", sizeof(f->description));
} else if (f->type == INPUT_META_PLANE || f->type == OUTPUT_META_PLANE) { } else if (f->type == INPUT_META_PLANE || f->type == OUTPUT_META_PLANE) {
if (!f->index) { if (!f->index) {
f->pixelformat = V4L2_PIX_FMT_VIDC_META; f->pixelformat = V4L2_META_FMT_VIDC;
strlcpy(f->description, "metadata", sizeof(f->description)); strlcpy(f->description, "metadata", sizeof(f->description));
} else { } else {
return -EINVAL; return -EINVAL;
@@ -977,7 +977,7 @@ int msm_venc_inst_init(struct msm_vidc_inst *inst)
f = &inst->fmts[OUTPUT_META_PORT]; f = &inst->fmts[OUTPUT_META_PORT];
f->type = OUTPUT_META_PLANE; f->type = OUTPUT_META_PLANE;
f->fmt.meta.dataformat = V4L2_PIX_FMT_VIDC_META; f->fmt.meta.dataformat = V4L2_META_FMT_VIDC;
f->fmt.meta.buffersize = call_session_op(core, buffer_size, f->fmt.meta.buffersize = call_session_op(core, buffer_size,
inst, MSM_VIDC_BUF_OUTPUT_META); inst, MSM_VIDC_BUF_OUTPUT_META);
inst->buffers.output_meta.min_count = inst->buffers.output.min_count; inst->buffers.output_meta.min_count = inst->buffers.output.min_count;
@@ -987,7 +987,7 @@ int msm_venc_inst_init(struct msm_vidc_inst *inst)
f = &inst->fmts[INPUT_PORT]; f = &inst->fmts[INPUT_PORT];
f->type = INPUT_MPLANE; f->type = INPUT_MPLANE;
f->fmt.pix_mp.pixelformat = V4L2_PIX_FMT_NV12_UBWC; f->fmt.pix_mp.pixelformat = V4L2_PIX_FMT_VIDC_NV12C;
f->fmt.pix_mp.width = VENUS_Y_STRIDE( f->fmt.pix_mp.width = VENUS_Y_STRIDE(
v4l2_colorformat_to_media(f->fmt.pix_mp.pixelformat, __func__), v4l2_colorformat_to_media(f->fmt.pix_mp.pixelformat, __func__),
DEFAULT_WIDTH); DEFAULT_WIDTH);
@@ -1009,7 +1009,7 @@ int msm_venc_inst_init(struct msm_vidc_inst *inst)
f = &inst->fmts[INPUT_META_PORT]; f = &inst->fmts[INPUT_META_PORT];
f->type = INPUT_META_PLANE; f->type = INPUT_META_PLANE;
f->fmt.meta.dataformat = V4L2_PIX_FMT_VIDC_META; f->fmt.meta.dataformat = V4L2_META_FMT_VIDC;
f->fmt.meta.buffersize = call_session_op(core, buffer_size, f->fmt.meta.buffersize = call_session_op(core, buffer_size,
inst, MSM_VIDC_BUF_INPUT_META); inst, MSM_VIDC_BUF_INPUT_META);
inst->buffers.input_meta.min_count = inst->buffers.input.min_count; inst->buffers.input_meta.min_count = inst->buffers.input.min_count;

View File

@@ -72,22 +72,18 @@ static const char * const * msm_vidc_get_qmenu_type(
static const char *msm_vidc_get_priv_ctrl_name(u32 sid, u32 control_id) static const char *msm_vidc_get_priv_ctrl_name(u32 sid, u32 control_id)
{ {
switch (control_id) { switch (control_id) {
case V4L2_CID_MPEG_VIDC_VIDEO_DECODE_ORDER: case V4L2_CID_MPEG_VIDC_THUMBNAIL_MODE:
return "Decode Order";
case V4L2_CID_MPEG_VIDC_VIDEO_SYNC_FRAME_DECODE:
return "Sync Frame Decode"; return "Sync Frame Decode";
case V4L2_CID_MPEG_VIDC_VIDEO_SECURE: case V4L2_CID_MPEG_VIDC_SECURE:
return "Secure Mode"; return "Secure Mode";
case V4L2_CID_MPEG_VIDC_VIDEO_LOWLATENCY_MODE: case V4L2_CID_MPEG_VIDC_LOWLATENCY_REQUEST:
return "Low Latency Mode"; return "Low Latency Mode";
/* TODO(AS)
case V4L2_CID_MPEG_VIDC_VIDEO_LOWLATENCY_HINT: case V4L2_CID_MPEG_VIDC_VIDEO_LOWLATENCY_HINT:
return "Low Latency Hint"; return "Low Latency Hint";
case V4L2_CID_MPEG_VIDC_VIDEO_BUFFER_SIZE_LIMIT: case V4L2_CID_MPEG_VIDC_VIDEO_BUFFER_SIZE_LIMIT:
return "Buffer Size Limit"; return "Buffer Size Limit";
case V4L2_CID_MPEG_VIDEO_BITRATE_MODE: */
return "Video Bitrate Control";
case V4L2_CID_MPEG_VIDEO_HEVC_SIZE_OF_LENGTH_FIELD:
return "NAL Format";
default: default:
s_vpr_e(sid, "%s: ctrl name not available for ctrl id %#x\n", s_vpr_e(sid, "%s: ctrl name not available for ctrl id %#x\n",
__func__, control_id); __func__, control_id);

View File

@@ -173,16 +173,16 @@ enum msm_vidc_colorformat_type v4l2_colorformat_to_driver(u32 v4l2_colorformat,
case V4L2_PIX_FMT_NV21: case V4L2_PIX_FMT_NV21:
colorformat = MSM_VIDC_FMT_NV21; colorformat = MSM_VIDC_FMT_NV21;
break; break;
case V4L2_PIX_FMT_NV12_UBWC: case V4L2_PIX_FMT_VIDC_NV12C:
colorformat = MSM_VIDC_FMT_NV12_UBWC; colorformat = MSM_VIDC_FMT_NV12_UBWC;
break; break;
case V4L2_PIX_FMT_NV12_TP10_UBWC: case V4L2_PIX_FMT_VIDC_TP10C:
colorformat = MSM_VIDC_FMT_NV12_TP10_UBWC; colorformat = MSM_VIDC_FMT_NV12_TP10_UBWC;
break; break;
case V4L2_PIX_FMT_RGBA8888_UBWC: case V4L2_PIX_FMT_VIDC_ARGB32C:
colorformat = MSM_VIDC_FMT_RGBA8888_UBWC; colorformat = MSM_VIDC_FMT_RGBA8888_UBWC;
break; break;
case V4L2_PIX_FMT_NV12_P010: case V4L2_PIX_FMT_VIDC_P010:
colorformat = MSM_VIDC_FMT_NV12_P010; colorformat = MSM_VIDC_FMT_NV12_P010;
break; break;
default: default:
@@ -206,16 +206,16 @@ u32 v4l2_colorformat_from_driver(enum msm_vidc_colorformat_type colorformat,
v4l2_colorformat = V4L2_PIX_FMT_NV21; v4l2_colorformat = V4L2_PIX_FMT_NV21;
break; break;
case MSM_VIDC_FMT_NV12_UBWC: case MSM_VIDC_FMT_NV12_UBWC:
v4l2_colorformat = V4L2_PIX_FMT_NV12_UBWC; v4l2_colorformat = V4L2_PIX_FMT_VIDC_NV12C;
break; break;
case MSM_VIDC_FMT_NV12_TP10_UBWC: case MSM_VIDC_FMT_NV12_TP10_UBWC:
v4l2_colorformat = V4L2_PIX_FMT_NV12_TP10_UBWC; v4l2_colorformat = V4L2_PIX_FMT_VIDC_TP10C;
break; break;
case MSM_VIDC_FMT_RGBA8888_UBWC: case MSM_VIDC_FMT_RGBA8888_UBWC:
v4l2_colorformat = V4L2_PIX_FMT_RGBA8888_UBWC; v4l2_colorformat = V4L2_PIX_FMT_VIDC_ARGB32C;
break; break;
case MSM_VIDC_FMT_NV12_P010: case MSM_VIDC_FMT_NV12_P010:
v4l2_colorformat = V4L2_PIX_FMT_NV12_P010; v4l2_colorformat = V4L2_PIX_FMT_VIDC_P010;
break; break;
default: default:
d_vpr_e("%s: invalid driver color format %#x\n", d_vpr_e("%s: invalid driver color format %#x\n",
@@ -232,15 +232,13 @@ u32 v4l2_colorformat_to_media(u32 v4l2_fmt, const char *func)
return COLOR_FMT_NV12; return COLOR_FMT_NV12;
case V4L2_PIX_FMT_NV21: case V4L2_PIX_FMT_NV21:
return COLOR_FMT_NV21; return COLOR_FMT_NV21;
case V4L2_PIX_FMT_NV12_512: case V4L2_PIX_FMT_VIDC_P010:
return COLOR_FMT_NV12_512;
case V4L2_PIX_FMT_NV12_P010:
return COLOR_FMT_P010; return COLOR_FMT_P010;
case V4L2_PIX_FMT_NV12_UBWC: case V4L2_PIX_FMT_VIDC_NV12C:
return COLOR_FMT_NV12_UBWC; return COLOR_FMT_NV12_UBWC;
case V4L2_PIX_FMT_NV12_TP10_UBWC: case V4L2_PIX_FMT_VIDC_TP10C:
return COLOR_FMT_NV12_BPP10_UBWC; return COLOR_FMT_NV12_BPP10_UBWC;
case V4L2_PIX_FMT_RGBA8888_UBWC: case V4L2_PIX_FMT_VIDC_ARGB32C:
return COLOR_FMT_RGBA8888_UBWC; return COLOR_FMT_RGBA8888_UBWC;
default: default:
d_vpr_e("%s: invalid v4l2 color fmt: %#x, set default (NV12)", d_vpr_e("%s: invalid v4l2 color fmt: %#x, set default (NV12)",

View File

@@ -9,35 +9,106 @@
#include <linux/types.h> #include <linux/types.h>
#include <linux/v4l2-controls.h> #include <linux/v4l2-controls.h>
/* vendor color format start */ /*
/* UBWC 8-bit Y/CbCr 4:2:0 */ * supported standard color formats
#define V4L2_PIX_FMT_NV12_UBWC v4l2_fourcc('Q', '1', '2', '8') * V4L2_PIX_FMT_NV12 Y/CbCr 4:2:0
/* NV12_512 8-bit Y/CbCr 4:2:0 */ * NV21?? // TODO: jdas
#define V4L2_PIX_FMT_NV12_512 v4l2_fourcc('Q', '5', '1', '2') * V4L2_PIX_FMT_ARGB32 ARGB-8-8-8-8
/* NV12 10-bit Y/CbCr 4:2:0 */ */
#define V4L2_PIX_FMT_NV12_P010 v4l2_fourcc('Q', 'P', '1', '0') /* Below are additional color formats */
/* UBWC 10-bit Y/CbCr 4:2:0 */ /* 12 Y/CbCr 4:2:0 compressed */
#define V4L2_PIX_FMT_NV12_TP10_UBWC v4l2_fourcc('Q', 'T', 'P', '0') #define V4L2_PIX_FMT_VIDC_NV12C v4l2_fourcc('Q', '1', '2', 'C')
#define V4L2_PIX_FMT_RGBA8888_UBWC v4l2_fourcc('Q', 'R', 'G', 'B') /* Y/CbCr 4:2:0, 10 bits per channel compressed */
/* Y/CbCr 4:2:0 P10 Venus */ #define V4L2_PIX_FMT_VIDC_TP10C v4l2_fourcc('Q', '1', '0', 'C')
#define V4L2_PIX_FMT_VIDC_META v4l2_fourcc('Q', 'M', 'E', 'T') /* Y/CbCr 4:2:0, 10 bits per channel */
/* vendor color format end */ #define V4L2_PIX_FMT_VIDC_P010 v4l2_fourcc('P', '0', '1', '0')
/* 32 ARGB-8-8-8-8 compressed */
#define V4L2_PIX_FMT_VIDC_ARGB32C v4l2_fourcc('Q', '2', '4', 'C')
#define V4L2_META_FMT_VIDC v4l2_fourcc('Q', 'M', 'E', 'T')
/* vendor controls start */ /* vendor controls start */
#define V4L2_CID_MPEG_MSM_VIDC_BASE (V4L2_CTRL_CLASS_MPEG | 0x2000) #define V4L2_CID_MPEG_VIDC_BASE (V4L2_CTRL_CLASS_MPEG | 0x2000)
#define V4L2_CID_MPEG_VIDC_VIDEO_DECODE_ORDER \ #define V4L2_CID_MPEG_VIDC_SECURE (V4L2_CID_MPEG_VIDC_BASE + 0x1)
(V4L2_CID_MPEG_MSM_VIDC_BASE + 0x1) /* HEIC encoder and decoder */
#define V4L2_CID_MPEG_VIDC_VIDEO_SYNC_FRAME_DECODE \ #define V4L2_CID_MPEG_VIDC_HEIC (V4L2_CID_MPEG_VIDC_BASE + 0x2)
(V4L2_CID_MPEG_MSM_VIDC_BASE + 0x2) #define V4L2_CID_MPEG_VIDC_LOWLATENCY_REQUEST (V4L2_CID_MPEG_VIDC_BASE + 0x3)
#define V4L2_CID_MPEG_VIDC_VIDEO_SECURE \ /* FIXme: */
(V4L2_CID_MPEG_MSM_VIDC_BASE + 0x3) #define V4L2_CID_MPEG_VIDC_CODEC_CONFIG (V4L2_CID_MPEG_VIDC_BASE + 0x4)
#define V4L2_CID_MPEG_VIDC_VIDEO_LOWLATENCY_MODE \ /* thumbnail decoding */
(V4L2_CID_MPEG_MSM_VIDC_BASE + 0x4) #define V4L2_CID_MPEG_VIDC_THUMBNAIL_MODE (V4L2_CID_MPEG_VIDC_BASE + 0x4)
#define V4L2_CID_MPEG_VIDC_VIDEO_LOWLATENCY_HINT \ /* B frame min/max qp */
(V4L2_CID_MPEG_MSM_VIDC_BASE + 0x5) #define V4L2_CID_MPEG_VIDC_B_FRAME_MIN_QP (V4L2_CID_MPEG_VIDC_BASE + 0x5)
#define V4L2_CID_MPEG_VIDC_VIDEO_BUFFER_SIZE_LIMIT \ #define V4L2_CID_MPEG_VIDC_B_FRAME_MAX_QP (V4L2_CID_MPEG_VIDC_BASE + 0x6)
(V4L2_CID_MPEG_MSM_VIDC_BASE + 0x6) /* LTR controls */
#define V4L2_CID_MPEG_VIDC_LTRCOUNT (V4L2_CID_MPEG_VIDC_BASE + 0x7)
#define V4L2_CID_MPEG_VIDC_USELTRFRAME (V4L2_CID_MPEG_VIDC_BASE + 0x8)
#define V4L2_CID_MPEG_VIDC_MARKLTRFRAME (V4L2_CID_MPEG_VIDC_BASE + 0x9)
/* Base layer priority id value */
#define V4L2_CID_MPEG_VIDC_BASELAYER_PRIORITY (V4L2_CID_MPEG_VIDC_BASE + 0xA)
/* Encoder Intra refresh period */
#define V4L2_CID_MPEG_VIDC_INTRA_REFRESH_PERIOD (V4L2_CID_MPEG_VIDC_BASE + 0xB)
#define V4L2_CID_MPEG_VIDC_AU_DELIMITER (V4L2_CID_MPEG_VIDC_BASE + 0xC)
#define V4L2_CID_MPEG_VIDC_TIME_DELTA_BASED_RC (V4L2_CID_MPEG_VIDC_BASE + 0xD)
/* Encoder quality controls */
#define V4L2_CID_MPEG_VIDC_CONTENT_ADAPTIVE_CODING \
(V4L2_CID_MPEG_VIDC_BASE + 0xE)
#define V4L2_CID_MPEG_VIDC_QUALITY_BITRATE_BOOST \
(V4L2_CID_MPEG_VIDC_BASE + 0xF)
#define V4L2_CID_MPEG_VIDC_VIDEO_BLUR_TYPES \
(V4L2_CID_MPEG_VIDC_BASE + 0x10)
enum v4l2_mpeg_vidc_blur_types {
VIDC_BLUR_NONE = 0x0,
VIDC_BLUR_EXTERNAL = 0x1,
VIDC_BLUR_ADAPTIVE = 0x2,
};
/* (blur width) << 16 | (blur height) */
#define V4L2_CID_MPEG_VIDC_VIDEO_BLUR_RESOLUTION \
(V4L2_CID_MPEG_VIDC_BASE + 0x11)
/* TODO: jdas: compound control for matrix */
#define V4L2_CID_MPEG_VIDC_VIDEO_VPE_CSC_CUSTOM_MATRIX \
(V4L2_CID_MPEG_VIDC_BASE + 0x12)
/* various Metadata - encoder & decoder */
#define V4L2_CID_MPEG_VIDC_METADATA_ENABLE \
(V4L2_CID_MPEG_VIDC_BASE + 0x13)
#define V4L2_CID_MPEG_VIDC_METADATA_DISABLE \
(V4L2_CID_MPEG_VIDC_BASE + 0x14)
enum v4l2_mpeg_vidc_metapayload_header_flags {
METADATA_FLAGS_NONE = 0,
METADATA_FLAGS_TOP_FIELD = (1 << 0),
METADATA_FLAGS_BOTTOM_FIELD = (1 << 1),
};
struct msm_vidc_metabuf_header {
__u32 count;
__u32 size;
__u32 version;
__u32 reserved[5];
};
struct msm_vidc_metapayload_header {
__u32 type;
__u32 size;
__u32 version;
__u32 offset;
__u32 flags;
__u32 reserved[3];
};
enum v4l2_mpeg_vidc_metadata {
METADATA_LTR_MARK_USE_DETAILS = 0x03000137,
METADATA_METADATA_SEQ_HEADER_NAL = 0x0300014a,
METADATA_DPB_LUMA_CHROMA_MISR = 0x03000153,
METADATA_OPB_LUMA_CHROMA_MISR = 0x03000154,
METADATA_INTERLACE = 0x03000156,
METADATA_CONEALED_MB_COUNT = 0x0300015f,
METADATA_HISTOGRAM_INFO = 0x03000161,
METADATA_SEI_MASTERING_DISPLAY_COLOUR = 0x03000163,
METADATA_SEI_CONTENT_LIGHT_LEVEL = 0x03000164,
METADATA_HDR10PLUS = 0x03000165,
METADATA_EVA_STATS = 0x03000167,
METADATA_BUFFER_TAG = 0x0300016b,
METADATA_SUBFRAME_OUTPUT = 0x0300016d,
METADATA_ROI_INFO = 0x03000173,
};
/* vendor controls end */ /* vendor controls end */