video: driver: Add support for AV1 dynamic frame resolution change
AV1 bitstream frames can have different resolutions than sequence resolutions. Subscribe to BITSTREAM_RESOLUTION and CROP_OFFSETS metadatas and exopose them to clients so that clients can receive per-frame resolution and crop. Change-Id: I7c0503f25ddde201979d13ff18028681f685d649 Signed-off-by: Mihir Ganu <quic_mganu@quicinc.com>
Этот коммит содержится в:
@@ -1491,6 +1491,18 @@ static struct msm_platform_inst_capability instance_data_kalama[] = {
|
||||
0,
|
||||
HFI_PROP_AV1_SUPER_BLOCK_ENABLED},
|
||||
|
||||
{META_BITSTREAM_RESOLUTION, DEC, AV1,
|
||||
V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE,
|
||||
1, V4L2_MPEG_MSM_VIDC_DISABLE,
|
||||
V4L2_CID_MPEG_VIDC_METADATA_BITSTREAM_RESOLUTION,
|
||||
HFI_PROP_BITSTREAM_RESOLUTION},
|
||||
|
||||
{META_CROP_OFFSETS, DEC, AV1,
|
||||
V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE,
|
||||
1, V4L2_MPEG_MSM_VIDC_DISABLE,
|
||||
V4L2_CID_MPEG_VIDC_METADATA_CROP_OFFSETS,
|
||||
HFI_PROP_CROP_OFFSETS},
|
||||
|
||||
{META_LTR_MARK_USE, ENC, H264|HEVC,
|
||||
V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE,
|
||||
1, V4L2_MPEG_MSM_VIDC_DISABLE,
|
||||
|
@@ -114,7 +114,9 @@ static inline bool is_output_meta_enabled(struct msm_vidc_inst *inst)
|
||||
bool enabled = false;
|
||||
|
||||
if (is_decode_session(inst)) {
|
||||
enabled = (inst->capabilities->cap[META_DPB_MISR].value ||
|
||||
enabled = (inst->capabilities->cap[META_BITSTREAM_RESOLUTION].value ||
|
||||
inst->capabilities->cap[META_CROP_OFFSETS].value ||
|
||||
inst->capabilities->cap[META_DPB_MISR].value ||
|
||||
inst->capabilities->cap[META_OPB_MISR].value ||
|
||||
inst->capabilities->cap[META_INTERLACE].value ||
|
||||
inst->capabilities->cap[META_CONCEALED_MB_CNT].value ||
|
||||
|
@@ -472,6 +472,8 @@ enum msm_vidc_inst_capability_type {
|
||||
FILM_GRAIN,
|
||||
SUPER_BLOCK,
|
||||
ALL_INTRA,
|
||||
META_BITSTREAM_RESOLUTION,
|
||||
META_CROP_OFFSETS,
|
||||
META_LTR_MARK_USE,
|
||||
META_DPB_MISR,
|
||||
META_OPB_MISR,
|
||||
|
@@ -1183,6 +1183,8 @@ static int msm_vdec_subscribe_metadata(struct msm_vidc_inst *inst,
|
||||
u32 i, count = 0;
|
||||
struct msm_vidc_inst_capability *capability;
|
||||
static const u32 metadata_list[] = {
|
||||
META_BITSTREAM_RESOLUTION,
|
||||
META_CROP_OFFSETS,
|
||||
META_DPB_MISR,
|
||||
META_OPB_MISR,
|
||||
META_INTERLACE,
|
||||
|
@@ -80,7 +80,9 @@ static bool is_meta_ctrl(u32 id)
|
||||
id == V4L2_CID_MPEG_VIDC_METADATA_SUBFRAME_OUTPUT ||
|
||||
id == V4L2_CID_MPEG_VIDC_METADATA_ROI_INFO ||
|
||||
id == V4L2_CID_MPEG_VIDC_METADATA_TIMESTAMP ||
|
||||
id == V4L2_CID_MPEG_VIDC_METADATA_ENC_QP_METADATA);
|
||||
id == V4L2_CID_MPEG_VIDC_METADATA_ENC_QP_METADATA ||
|
||||
id == V4L2_CID_MPEG_VIDC_METADATA_BITSTREAM_RESOLUTION ||
|
||||
id == V4L2_CID_MPEG_VIDC_METADATA_CROP_OFFSETS);
|
||||
}
|
||||
|
||||
static const char *const mpeg_video_rate_control[] = {
|
||||
|
@@ -168,6 +168,8 @@ static const struct msm_vidc_cap_name cap_name_arr[] = {
|
||||
{FILM_GRAIN, "FILM_GRAIN" },
|
||||
{SUPER_BLOCK, "SUPER_BLOCK" },
|
||||
{ALL_INTRA, "ALL_INTRA" },
|
||||
{META_BITSTREAM_RESOLUTION, "META_BITSTREAM_RESOLUTION" },
|
||||
{META_CROP_OFFSETS, "META_CROP_OFFSETS" },
|
||||
{META_LTR_MARK_USE, "META_LTR_MARK_USE" },
|
||||
{META_DPB_MISR, "META_DPB_MISR" },
|
||||
{META_OPB_MISR, "META_OPB_MISR" },
|
||||
|
@@ -123,6 +123,10 @@ enum v4l2_mpeg_vidc_blur_types {
|
||||
(V4L2_CID_MPEG_VIDC_BASE + 0x22)
|
||||
#define V4L2_CID_MPEG_VIDC_MIN_BITSTREAM_SIZE_OVERWRITE \
|
||||
(V4L2_CID_MPEG_VIDC_BASE + 0x23)
|
||||
#define V4L2_CID_MPEG_VIDC_METADATA_BITSTREAM_RESOLUTION \
|
||||
(V4L2_CID_MPEG_VIDC_BASE + 0x24)
|
||||
#define V4L2_CID_MPEG_VIDC_METADATA_CROP_OFFSETS \
|
||||
(V4L2_CID_MPEG_VIDC_BASE + 0x25)
|
||||
|
||||
/* Encoder Super frame control */
|
||||
#define V4L2_CID_MPEG_VIDC_SUPERFRAME (V4L2_CID_MPEG_VIDC_BASE + 0x28)
|
||||
@@ -296,6 +300,8 @@ struct msm_vidc_metapayload_header {
|
||||
__u32 reserved[3];
|
||||
};
|
||||
enum v4l2_mpeg_vidc_metadata {
|
||||
METADATA_BITSTREAM_RESOLUTION = 0x03000103,
|
||||
METADATA_CROP_OFFSETS = 0x03000105,
|
||||
METADATA_LTR_MARK_USE_DETAILS = 0x03000137,
|
||||
METADATA_SEQ_HEADER_NAL = 0x0300014a,
|
||||
METADATA_DPB_LUMA_CHROMA_MISR = 0x03000153,
|
||||
|
Ссылка в новой задаче
Block a user