diff --git a/Kbuild b/Kbuild index a5c21993d5..d636d128a5 100644 --- a/Kbuild +++ b/Kbuild @@ -8,12 +8,6 @@ LINUXINCLUDE += -include $(VIDEO_ROOT)/config/waipio_video.h \ -I$(VIDEO_ROOT)/driver/platform/waipio/inc endif -ifeq ($(CONFIG_ARCH_DIWALI), y) -include $(VIDEO_ROOT)/config/diwali_video.conf -LINUXINCLUDE += -include $(VIDEO_ROOT)/config/diwali_video.h \ - -I$(VIDEO_ROOT)/driver/platform/diwali/inc -endif - ifeq ($(CONFIG_ARCH_KALAMA), y) include $(VIDEO_ROOT)/config/kalama_video.conf LINUXINCLUDE += -include $(VIDEO_ROOT)/config/kalama_video.h \ @@ -37,10 +31,6 @@ ifeq ($(CONFIG_MSM_VIDC_KALAMA), y) msm_video-objs += driver/platform/kalama/src/msm_vidc_kalama.o endif -ifeq ($(CONFIG_MSM_VIDC_DIWALI), y) -msm_video-objs += driver/platform/diwali/src/msm_vidc_diwali.o -endif - ifeq ($(CONFIG_MSM_VIDC_IRIS2), y) LINUXINCLUDE += -I$(VIDEO_ROOT)/driver/variant/iris2/inc msm_video-objs += driver/variant/iris2/src/msm_vidc_buffer_iris2.o \ diff --git a/config/diwali_video.conf b/config/diwali_video.conf deleted file mode 100644 index 07ec494289..0000000000 --- a/config/diwali_video.conf +++ /dev/null @@ -1,4 +0,0 @@ -# SPDX-License-Identifier: GPL-2.0-only - -export CONFIG_MSM_VIDC_DIWALI=y -export CONFIG_MSM_VIDC_IRIS2=y \ No newline at end of file diff --git a/config/diwali_video.h b/config/diwali_video.h deleted file mode 100644 index cc48c7248d..0000000000 --- a/config/diwali_video.h +++ /dev/null @@ -1,7 +0,0 @@ -/* SPDX-License-Identifier: GPL-2.0-only */ -/* - * Copyright (c) 2020-2021,, The Linux Foundation. All rights reserved. - */ - -#define CONFIG_MSM_VIDC_DIWALI 1 -#define CONFIG_MSM_VIDC_IRIS2 1 \ No newline at end of file diff --git a/driver/platform/diwali/inc/msm_vidc_diwali.h b/driver/platform/diwali/inc/msm_vidc_diwali.h deleted file mode 100644 index ce904fb52c..0000000000 --- a/driver/platform/diwali/inc/msm_vidc_diwali.h +++ /dev/null @@ -1,26 +0,0 @@ -/* SPDX-License-Identifier: GPL-2.0-only */ -/* - * Copyright (c) 2021 Qualcomm Innovation Center, Inc. All rights reserved. - * Copyright (c) 2020-2021, The Linux Foundation. All rights reserved. - */ - -#ifndef _MSM_VIDC_DIWALI_H_ -#define _MSM_VIDC_DIWALI_H_ - -#include "msm_vidc_core.h" - -#if defined(CONFIG_MSM_VIDC_DIWALI) -int msm_vidc_init_platform_diwali(struct msm_vidc_core *core, struct device *dev); -int msm_vidc_deinit_platform_diwali(struct msm_vidc_core *core, struct device *dev); -#else -int msm_vidc_init_platform_diwali(struct msm_vidc_core *core, struct device *dev) -{ - return -EINVAL; -} -int msm_vidc_deinit_platform_diwali(struct msm_vidc_core *core, struct device *dev) -{ - return -EINVAL; -} -#endif - -#endif // _MSM_VIDC_DIWALI_H_ diff --git a/driver/platform/diwali/src/msm_vidc_diwali.c b/driver/platform/diwali/src/msm_vidc_diwali.c deleted file mode 100644 index 365374581b..0000000000 --- a/driver/platform/diwali/src/msm_vidc_diwali.c +++ /dev/null @@ -1,5203 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0-only -/* - * Copyright (c) 2021 Qualcomm Innovation Center, Inc. All rights reserved. - * Copyright (c) 2020-2021, The Linux Foundation. All rights reserved. - */ - -#include -#include -#include - -#include "msm_vidc_diwali.h" -#include "msm_vidc_platform.h" -#include "msm_vidc_debug.h" -#include "msm_vidc_internal.h" -#include "msm_vidc_core.h" -#include "msm_vidc_control.h" -#include "hfi_property.h" -#include "msm_vidc_dt.h" - -#define DEFAULT_VIDEO_CONCEAL_COLOR_BLACK 0x8020010 -#define MINIMUM_FPS 1 -#define MAXIMUM_FPS 480 -#define MAXIMUM_FPS_V2 240 -#define MAX_LTR_FRAME_COUNT 2 -#define MAX_BASE_LAYER_PRIORITY_ID 63 -#define MIN_CHROMA_QP_OFFSET -12 -#define MAX_CHROMA_QP_OFFSET 0 -#define MAX_BITRATE 160000000 -#define MAX_BITRATE_V1 100000000 -#define DEFAULT_BITRATE 20000000 -#define MIN_QP_10BIT -12 -#define MIN_QP_8BIT 0 -#define MAX_QP 51 -#define DEFAULT_QP 20 -#define MAX_CONSTANT_QUALITY 100 -#define MIN_SLICE_BYTE_SIZE 512 -#define MAX_SLICE_BYTE_SIZE \ - ((MAX_BITRATE) >> 3) -#define MAX_SLICE_BYTE_SIZE_V1 \ - ((MAX_BITRATE_V1) >> 3) -#define MAX_SLICE_MB_SIZE \ - (((4096 + 15) >> 4) * ((2304 + 15) >> 4)) - -#define UBWC_CONFIG(mc, ml, hbb, bs1, bs2, bs3, bsp) \ -{ \ - .max_channels = mc, \ - .mal_length = ml, \ - .highest_bank_bit = hbb, \ - .bank_swzl_level = bs1, \ - .bank_swz2_level = bs2, \ - .bank_swz3_level = bs3, \ - .bank_spreading = bsp, \ -} - -#define EFUSE_ENTRY(sa, s, m, sh, p) \ -{ \ - .start_address = sa, \ - .size = s, \ - .mask = m, \ - .shift = sh, \ - .purpose = p \ -} - -#define DDR_TYPE_LPDDR4 0x6 -#define DDR_TYPE_LPDDR4X 0x7 -#define DDR_TYPE_LPDDR5 0x8 -#define DDR_TYPE_LPDDR5X 0x9 - -#define ENC MSM_VIDC_ENCODER -#define DEC MSM_VIDC_DECODER -#define H264 MSM_VIDC_H264 -#define HEVC MSM_VIDC_HEVC -#define VP9 MSM_VIDC_VP9 -#define HEIC MSM_VIDC_HEIC -#define CODECS_ALL (H264 | HEVC | VP9 | HEIC) - -static struct msm_platform_core_capability core_data_diwali_v0[] = { - /* {type, value} */ - {ENC_CODECS, H264|HEVC|HEIC}, - {DEC_CODECS, H264|HEVC|VP9|HEIC}, - {MAX_SESSION_COUNT, 16}, - {MAX_NUM_720P_SESSIONS, 16}, - {MAX_NUM_1080P_SESSIONS, 8}, - {MAX_NUM_4K_SESSIONS, 4}, - {MAX_NUM_8K_SESSIONS, 1}, - {MAX_SECURE_SESSION_COUNT, 3}, - {MAX_RT_MBPF, 138240}, /* ((8192x4320)/256) */ - {MAX_MBPF, 175104}, /* (8192x4320)/256 + (4096x2304)/256*/ - /* max_load 3840x2176@120fps which is greater than 7680x4320@30fps */ - /* Concurrency: UHD@30 decode + uhd@30 encode */ - {MAX_MBPS, 3916800}, - {MAX_IMAGE_MBPF, 1048576}, /* (16384x16384)/256 */ - {MAX_MBPF_HQ, 8160}, /* ((1920x1088)/256) */ - {MAX_MBPS_HQ, 244800}, /* ((1920x1088)/256)@30fps */ - {MAX_MBPF_B_FRAME, 32640}, /* 3840x2176/256 */ - {MAX_MBPS_B_FRAME, 979200}, /* 3840x2176/256 MBs@30fps */ - {MAX_MBPS_ALL_INTRA, 489600}, /* ((1920x1088)/256)@60fps */ - {MAX_ENH_LAYER_COUNT, 5}, - {NUM_VPP_PIPE, 2}, - {SW_PC, 1}, - {FW_UNLOAD, 0}, - {HW_RESPONSE_TIMEOUT, HW_RESPONSE_TIMEOUT_VALUE}, /* 1000 ms */ - {SW_PC_DELAY, SW_PC_DELAY_VALUE }, /* 1500 ms (>HW_RESPONSE_TIMEOUT)*/ - {FW_UNLOAD_DELAY, FW_UNLOAD_DELAY_VALUE }, /* 3000 ms (>SW_PC_DELAY)*/ - // TODO: review below entries, and if required rename as PREFETCH - {PREFIX_BUF_COUNT_PIX, 18}, - {PREFIX_BUF_SIZE_PIX, 13434880}, /* Calculated by VIDEO_RAW_BUFFER_SIZE for 4096x2160 UBWC */ - {PREFIX_BUF_COUNT_NON_PIX, 1}, - {PREFIX_BUF_SIZE_NON_PIX, 209715200}, /* - * Internal buffer size is calculated for secure decode session - * of resolution 4k (4096x2160) - * Internal buf size = calculate_scratch_size() + - * calculate_scratch1_size() + calculate_persist1_size() - * Take maximum between VP9 10bit, HEVC 10bit, AVC secure - * decoder sessions - */ - {PAGEFAULT_NON_FATAL, 1}, - {PAGETABLE_CACHING, 0}, - {DCVS, 1}, - {DECODE_BATCH, 1}, - {DECODE_BATCH_TIMEOUT, 200}, - {STATS_TIMEOUT_MS, 2000}, - {AV_SYNC_WINDOW_SIZE, 40}, - {NON_FATAL_FAULTS, 1}, - {ENC_AUTO_FRAMERATE, 1}, - {MMRM, 0}, -}; - -static struct msm_platform_core_capability core_data_diwali_v1[] = { - /* {type, value} */ - {ENC_CODECS, H264|HEVC|HEIC}, - {DEC_CODECS, H264|HEVC|VP9|HEIC}, - {MAX_SESSION_COUNT, 16}, - {MAX_NUM_720P_SESSIONS, 16}, - {MAX_NUM_1080P_SESSIONS, 8}, - {MAX_NUM_4K_SESSIONS, 4}, - {MAX_SECURE_SESSION_COUNT, 3}, - {MAX_RT_MBPF, 130560}, /* ((3840x2176)/256) x 4 */ - {MAX_MBPF, 147456}, /* ((4096x2304)/256) x 4 */ - /* Concurrency: UHD@30 decode + uhd@30 encode */ - {MAX_MBPS, 2211840}, /* max_load 4096x2304@60fps */ - {MAX_IMAGE_MBPF, 1048576}, /* (16384x16384)/256 */ - {MAX_MBPF_HQ, 8160}, /* ((1920x1088)/256) */ - {MAX_MBPS_HQ, 244800}, /* ((1920x1088)/256)@30fps */ - {MAX_MBPF_B_FRAME, 32640}, /* 3840x2176/256 */ - {MAX_MBPS_B_FRAME, 979200}, /* 3840x2176/256 MBs@30fps */ - {MAX_MBPS_ALL_INTRA, 489600}, /* ((1920x1088)/256)@60fps */ - {MAX_ENH_LAYER_COUNT, 5}, - {NUM_VPP_PIPE, 2}, - {SW_PC, 1}, - {FW_UNLOAD, 0}, - {HW_RESPONSE_TIMEOUT, HW_RESPONSE_TIMEOUT_VALUE}, /* 1000 ms */ - {SW_PC_DELAY, SW_PC_DELAY_VALUE }, /* 1500 ms (>HW_RESPONSE_TIMEOUT)*/ - {FW_UNLOAD_DELAY, FW_UNLOAD_DELAY_VALUE }, /* 3000 ms (>SW_PC_DELAY)*/ - // TODO: review below entries, and if required rename as PREFETCH - {PREFIX_BUF_COUNT_PIX, 18}, - {PREFIX_BUF_SIZE_PIX, 13434880}, /* Calculated by VIDEO_RAW_BUFFER_SIZE for 4096x2160 UBWC */ - {PREFIX_BUF_COUNT_NON_PIX, 1}, - {PREFIX_BUF_SIZE_NON_PIX, 209715200}, /* - * Internal buffer size is calculated for secure decode session - * of resolution 4k (4096x2160) - * Internal buf size = calculate_scratch_size() + - * calculate_scratch1_size() + calculate_persist1_size() - * Take maximum between VP9 10bit, HEVC 10bit, AVC secure - * decoder sessions - */ - {PAGEFAULT_NON_FATAL, 1}, - {PAGETABLE_CACHING, 0}, - {DCVS, 1}, - {DECODE_BATCH, 1}, - {DECODE_BATCH_TIMEOUT, 200}, - {STATS_TIMEOUT_MS, 2000}, - {AV_SYNC_WINDOW_SIZE, 40}, - {NON_FATAL_FAULTS, 1}, - {ENC_AUTO_FRAMERATE, 1}, - {MMRM, 0}, -}; - -static struct msm_platform_core_capability core_data_diwali_v2[] = { - /* {type, value} */ - {ENC_CODECS, H264|HEVC|HEIC}, - {DEC_CODECS, H264|HEVC|VP9|HEIC}, - {MAX_SESSION_COUNT, 16}, - {MAX_NUM_720P_SESSIONS, 16}, - {MAX_NUM_1080P_SESSIONS, 8}, - {MAX_NUM_4K_SESSIONS, 4}, - {MAX_SECURE_SESSION_COUNT, 3}, - {MAX_RT_MBPF, 97920}, /* ((3840x2176)/256) x 3 */ - {MAX_MBPF, 110592}, /* ((4096x2304)/256) x 3 */ - /* Concurrency: UHD@30 decode + 1080p@30 encode */ - {MAX_MBPS, 1105920}, /* max_load 4096x2304@30fps*/ - {MAX_IMAGE_MBPF, 1048576}, /* (16384x16384)/256 */ - {MAX_MBPF_HQ, 8160}, /* ((1920x1088)/256) */ - {MAX_MBPS_HQ, 244800}, /* ((1920x1088)/256)@30fps */ - {MAX_MBPF_B_FRAME, 32640}, /* 3840x2176/256 */ - {MAX_MBPS_B_FRAME, 979200}, /* 3840x2176/256 MBs@30fps */ - {MAX_MBPS_ALL_INTRA, 489600}, /* ((1920x1088)/256)@60fps */ - {MAX_ENH_LAYER_COUNT, 5}, - {NUM_VPP_PIPE, 2}, - {SW_PC, 1}, - {FW_UNLOAD, 0}, - {HW_RESPONSE_TIMEOUT, HW_RESPONSE_TIMEOUT_VALUE}, /* 1000 ms */ - {SW_PC_DELAY, SW_PC_DELAY_VALUE }, /* 1500 ms (>HW_RESPONSE_TIMEOUT)*/ - {FW_UNLOAD_DELAY, FW_UNLOAD_DELAY_VALUE }, /* 3000 ms (>SW_PC_DELAY)*/ - // TODO: review below entries, and if required rename as PREFETCH - {PREFIX_BUF_COUNT_PIX, 18}, - {PREFIX_BUF_SIZE_PIX, 13434880}, /* Calculated by VIDEO_RAW_BUFFER_SIZE for 4096x2160 UBWC */ - {PREFIX_BUF_COUNT_NON_PIX, 1}, - {PREFIX_BUF_SIZE_NON_PIX, 209715200}, /* - * Internal buffer size is calculated for secure decode session - * of resolution 4k (4096x2160) - * Internal buf size = calculate_scratch_size() + - * calculate_scratch1_size() + calculate_persist1_size() - * Take maximum between VP9 10bit, HEVC 10bit, AVC secure - * decoder sessions - */ - {PAGEFAULT_NON_FATAL, 1}, - {PAGETABLE_CACHING, 0}, - {DCVS, 1}, - {DECODE_BATCH, 0}, - {DECODE_BATCH_TIMEOUT, 200}, - {STATS_TIMEOUT_MS, 2000}, - {AV_SYNC_WINDOW_SIZE, 40}, - {NON_FATAL_FAULTS, 1}, - {ENC_AUTO_FRAMERATE, 1}, - {MMRM, 0}, -}; - -static struct msm_platform_inst_capability instance_data_diwali_v0[] = { - /* {cap, domain, codec, - * min, max, step_or_mask, value, - * v4l2_id, - * hfi_id, - * flags, - * parents, - * children, - * adjust, set} - */ - - {FRAME_WIDTH, DEC, CODECS_ALL, 96, 8192, 1, 1920}, - {FRAME_WIDTH, DEC, VP9, 96, 4096, 1, 1920}, - {FRAME_WIDTH, ENC, CODECS_ALL, 128, 4096, 1, 1920}, - {LOSSLESS_FRAME_WIDTH, ENC, H264|HEVC, 128, 4096, 1, 1920}, - {SECURE_FRAME_WIDTH, DEC, H264|HEVC|VP9, 96, 4096, 1, 1920}, - {SECURE_FRAME_WIDTH, ENC, H264|HEVC, 128, 4096, 1, 1920}, - {FRAME_HEIGHT, DEC, CODECS_ALL, 96, 8192, 1, 1080}, - {FRAME_HEIGHT, DEC, VP9, 96, 4096, 1, 1080}, - {FRAME_HEIGHT, ENC, CODECS_ALL, 128, 4096, 1, 1080}, - {LOSSLESS_FRAME_HEIGHT, ENC, H264|HEVC, 128, 4096, 1, 1080}, - {SECURE_FRAME_HEIGHT, DEC, H264|HEVC|VP9, 96, 4096, 1, 1080}, - {SECURE_FRAME_HEIGHT, ENC, H264|HEVC, 128, 4096, 1, 1080}, - {PIX_FMTS, ENC, H264, - MSM_VIDC_FMT_NV12, - MSM_VIDC_FMT_NV12C, - MSM_VIDC_FMT_NV12 | MSM_VIDC_FMT_NV21 | MSM_VIDC_FMT_NV12C, - /* Since CTSEncodeDecode test cannot handle BT 709LR, - * disabled HW RGBA encoding. - * | MSM_VIDC_FMT_RGBA8888 | MSM_VIDC_FMT_RGBA8888C, - */ - MSM_VIDC_FMT_NV12C, - 0, 0, - 0, - {0}, - {META_ROI_INFO}}, - {PIX_FMTS, ENC, HEVC, - MSM_VIDC_FMT_NV12, - MSM_VIDC_FMT_TP10C, - MSM_VIDC_FMT_NV12 | MSM_VIDC_FMT_NV21 | MSM_VIDC_FMT_NV12C | - MSM_VIDC_FMT_P010 | MSM_VIDC_FMT_TP10C, - /* Since CTSEncodeDecode test cannot handle BT 709LR, - * disabled HW RGBA encoding. - * | MSM_VIDC_FMT_RGBA8888 | MSM_VIDC_FMT_RGBA8888C, - */ - MSM_VIDC_FMT_NV12C, - 0, 0, - 0, - {0}, - {/* Do not change order of META_ROI_INFO, MIN_QUALITY, BLUR_TYPES - * Since parent -> children relationship for these cap_ids is - * as follows: - * META_ROI_INFO -> MIN_QUALITY -> BLUR_TYPES - */ - PROFILE, MIN_FRAME_QP, MAX_FRAME_QP, I_FRAME_QP, P_FRAME_QP, - B_FRAME_QP, META_ROI_INFO, MIN_QUALITY, BLUR_TYPES}}, - - {PIX_FMTS, DEC, HEVC|HEIC, - MSM_VIDC_FMT_NV12, - MSM_VIDC_FMT_TP10C, - MSM_VIDC_FMT_NV12 | MSM_VIDC_FMT_NV21 | MSM_VIDC_FMT_NV12C | - MSM_VIDC_FMT_P010 | MSM_VIDC_FMT_TP10C, - MSM_VIDC_FMT_NV12C, - 0, 0, - 0, - {0}, - {PROFILE}}, - - {PIX_FMTS, DEC, H264, - MSM_VIDC_FMT_NV12, - MSM_VIDC_FMT_NV12C, - MSM_VIDC_FMT_NV12 | MSM_VIDC_FMT_NV21 | MSM_VIDC_FMT_NV12C, - MSM_VIDC_FMT_NV12C}, - - {PIX_FMTS, DEC, VP9, - MSM_VIDC_FMT_NV12, - MSM_VIDC_FMT_TP10C, - MSM_VIDC_FMT_NV12 | MSM_VIDC_FMT_NV21 | MSM_VIDC_FMT_NV12C | - MSM_VIDC_FMT_P010 | MSM_VIDC_FMT_TP10C, - MSM_VIDC_FMT_NV12C}, - - {MIN_BUFFERS_INPUT, ENC|DEC, CODECS_ALL, 0, 64, 1, 4, - V4L2_CID_MIN_BUFFERS_FOR_OUTPUT}, - {MIN_BUFFERS_OUTPUT, ENC|DEC, CODECS_ALL, - 0, 64, 1, 4, - V4L2_CID_MIN_BUFFERS_FOR_CAPTURE, - HFI_PROP_BUFFER_FW_MIN_OUTPUT_COUNT, - CAP_FLAG_OUTPUT_PORT}, - - /* (4096 * 2304) / 256 */ - {MBPF, ENC, CODECS_ALL, 64, 36864, 1, 36864}, - /* (8192 * 4320) / 256 */ - {MBPF, DEC, CODECS_ALL, 36, 138240, 1, 138240}, - /* (4096 * 2304) / 256 */ - {MBPF, DEC, VP9, 36, 36864, 1, 36864}, - /* (4096 * 2304) / 256 */ - {LOSSLESS_MBPF, ENC, H264|HEVC, 64, 36864, 1, 36864}, - /* Batch Mode Decode */ - /* (1920 * 1088) / 256 */ - {BATCH_MBPF, DEC, H264|HEVC|VP9, 64, 8160, 1, 8160}, - {BATCH_FPS, DEC, H264|HEVC|VP9, 1, 120, 1, 60}, - /* (4096 * 2304) / 256 */ - {SECURE_MBPF, ENC|DEC, H264|HEVC|VP9, 64, 36864, 1, 36864}, - /* ((4096 * 2304) / 256) * 60 fps */ - {MBPS, ENC, CODECS_ALL, 64, 2211840, 1, 2211840}, - /* ((3840 * 2176) / 256) * 120 fps */ - {MBPS, DEC, CODECS_ALL, 36, 3916800, 1, 3916800}, - /* ((4096 * 2304) / 256) * 60 */ - {MBPS, DEC, VP9, 36, 2211840, 1, 2211840}, - /* ((1920 * 1088) / 256) * 30 fps */ - {POWER_SAVE_MBPS, ENC, CODECS_ALL, 0, 244800, 1, 244800}, - - {FRAME_RATE, ENC, CODECS_ALL, - (MINIMUM_FPS << 16), (MAXIMUM_FPS << 16), - 1, (DEFAULT_FPS << 16), - 0, - HFI_PROP_FRAME_RATE, - CAP_FLAG_OUTPUT_PORT, - {0}, {0}, - NULL, msm_vidc_set_q16}, - - {FRAME_RATE, DEC, CODECS_ALL, - (MINIMUM_FPS << 16), (MAXIMUM_FPS << 16), - 1, (DEFAULT_FPS << 16)}, - - {FRAME_RATE, DEC, VP9, - (MINIMUM_FPS << 16), (MAXIMUM_VP9_FPS << 16), - 1, (DEFAULT_FPS << 16)}, - - {OPERATING_RATE, ENC|DEC, CODECS_ALL, - (MINIMUM_FPS << 16), (MAXIMUM_FPS << 16), - 1, (DEFAULT_FPS << 16)}, - - {OPERATING_RATE, DEC, VP9, - (MINIMUM_FPS << 16), (MAXIMUM_VP9_FPS << 16), - 1, (DEFAULT_FPS << 16)}, - - {SCALE_FACTOR, ENC, H264|HEVC, 1, 8, 1, 8}, - - {MB_CYCLES_VSP, ENC, CODECS_ALL, 25, 25, 1, 25}, - {MB_CYCLES_VSP, DEC, CODECS_ALL, 25, 25, 1, 25}, - {MB_CYCLES_VSP, DEC, VP9, 60, 60, 1, 60}, - {MB_CYCLES_VPP, ENC, CODECS_ALL, 675, 675, 1, 675}, - {MB_CYCLES_VPP, DEC, CODECS_ALL, 200, 200, 1, 200}, - {MB_CYCLES_LP, ENC, CODECS_ALL, 320, 320, 1, 320}, - {MB_CYCLES_LP, DEC, CODECS_ALL, 200, 200, 1, 200}, - {MB_CYCLES_FW, ENC|DEC, CODECS_ALL, 326389, 326389, 1, 326389}, - {MB_CYCLES_FW_VPP, ENC|DEC, CODECS_ALL, 44156, 44156, 1, 44156}, - - {SECURE_MODE, ENC|DEC, H264|HEVC|VP9, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, - V4L2_CID_MPEG_VIDC_SECURE, - HFI_PROP_SECURE, - CAP_FLAG_NONE, - {0}, - {0}, - NULL, msm_vidc_set_u32}, - - {TS_REORDER, DEC, H264|HEVC, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, - V4L2_CID_MPEG_VIDC_TS_REORDER}, - - {HFLIP, ENC, CODECS_ALL, - V4L2_MPEG_MSM_VIDC_DISABLE, - V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, - V4L2_CID_HFLIP, - HFI_PROP_FLIP, - CAP_FLAG_OUTPUT_PORT | - CAP_FLAG_INPUT_PORT | CAP_FLAG_DYNAMIC_ALLOWED, - {0}, - {0}, - NULL, msm_vidc_set_flip}, - - {VFLIP, ENC, CODECS_ALL, - V4L2_MPEG_MSM_VIDC_DISABLE, - V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, - V4L2_CID_VFLIP, - HFI_PROP_FLIP, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT | - CAP_FLAG_DYNAMIC_ALLOWED, - {0}, - {0}, - NULL, msm_vidc_set_flip}, - - {ROTATION, ENC, CODECS_ALL, - 0, 270, 90, 0, - V4L2_CID_ROTATE, - HFI_PROP_ROTATION, - CAP_FLAG_OUTPUT_PORT, - {0}, - {0}, - NULL, msm_vidc_set_rotation}, - - {SUPER_FRAME, ENC, H264|HEVC, - 0, 32, 1, 0, - V4L2_CID_MPEG_VIDC_SUPERFRAME, 0, - CAP_FLAG_NONE, - {0}, - {INPUT_BUF_HOST_MAX_COUNT, OUTPUT_BUF_HOST_MAX_COUNT}, - NULL, NULL}, - - {SLICE_INTERFACE, DEC, CODECS_ALL, - 0, 0, 0, 0, - V4L2_CID_MPEG_VIDEO_DECODER_SLICE_INTERFACE, - 0}, - - {HEADER_MODE, ENC, CODECS_ALL, - V4L2_MPEG_VIDEO_HEADER_MODE_SEPARATE, - V4L2_MPEG_VIDEO_HEADER_MODE_JOINED_WITH_1ST_FRAME, - BIT(V4L2_MPEG_VIDEO_HEADER_MODE_SEPARATE) | - BIT(V4L2_MPEG_VIDEO_HEADER_MODE_JOINED_WITH_1ST_FRAME), - V4L2_MPEG_VIDEO_HEADER_MODE_SEPARATE, - V4L2_CID_MPEG_VIDEO_HEADER_MODE, - HFI_PROP_SEQ_HEADER_MODE, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU, - {0}, {0}, - NULL, msm_vidc_set_header_mode}, - - {PREPEND_SPSPPS_TO_IDR, ENC, CODECS_ALL, - V4L2_MPEG_MSM_VIDC_DISABLE, - V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, - V4L2_CID_MPEG_VIDEO_PREPEND_SPSPPS_TO_IDR}, - - {META_SEQ_HDR_NAL, ENC, CODECS_ALL, - V4L2_MPEG_MSM_VIDC_DISABLE, - V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, - V4L2_CID_MPEG_VIDC_METADATA_SEQ_HEADER_NAL}, - - {WITHOUT_STARTCODE, ENC, CODECS_ALL, - V4L2_MPEG_MSM_VIDC_DISABLE, - V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, - V4L2_CID_MPEG_VIDEO_HEVC_WITHOUT_STARTCODE, - HFI_PROP_NAL_LENGTH_FIELD, - CAP_FLAG_OUTPUT_PORT, - {0}, {0}, - NULL, msm_vidc_set_nal_length}, - - {NAL_LENGTH_FIELD, ENC, CODECS_ALL, - V4L2_MPEG_VIDEO_HEVC_SIZE_0, - V4L2_MPEG_VIDEO_HEVC_SIZE_4, - BIT(V4L2_MPEG_VIDEO_HEVC_SIZE_0) | - BIT(V4L2_MPEG_VIDEO_HEVC_SIZE_4), - V4L2_MPEG_VIDEO_HEVC_SIZE_0, - V4L2_CID_MPEG_VIDEO_HEVC_SIZE_OF_LENGTH_FIELD, - HFI_PROP_NAL_LENGTH_FIELD, - CAP_FLAG_MENU | CAP_FLAG_OUTPUT_PORT}, - - /* TODO: Firmware introduced enumeration type for this - * with and without seq header. - */ - {REQUEST_I_FRAME, ENC, H264|HEVC, - 0, 0, 0, 0, - V4L2_CID_MPEG_VIDEO_FORCE_KEY_FRAME, - HFI_PROP_REQUEST_SYNC_FRAME, - CAP_FLAG_INPUT_PORT | CAP_FLAG_DYNAMIC_ALLOWED, - {0}, {0}, - NULL, msm_vidc_set_req_sync_frame}, - - /* Enc: Keeping CABAC and CAVLC as same bitrate. - * Dec: there's no use of Bitrate cap - */ - {BIT_RATE, ENC, H264|HEVC, - 1, MAX_BITRATE, 1, DEFAULT_BITRATE, - V4L2_CID_MPEG_VIDEO_BITRATE, - HFI_PROP_TOTAL_BITRATE, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT | - CAP_FLAG_DYNAMIC_ALLOWED, - {ENH_LAYER_COUNT, BITRATE_MODE}, {PEAK_BITRATE}, - msm_vidc_adjust_bitrate, msm_vidc_set_bitrate}, - - {BITRATE_MODE, ENC, H264, - V4L2_MPEG_VIDEO_BITRATE_MODE_VBR, - V4L2_MPEG_VIDEO_BITRATE_MODE_CBR, - BIT(V4L2_MPEG_VIDEO_BITRATE_MODE_VBR) | - BIT(V4L2_MPEG_VIDEO_BITRATE_MODE_CBR), - V4L2_MPEG_VIDEO_BITRATE_MODE_VBR, - V4L2_CID_MPEG_VIDEO_BITRATE_MODE, - HFI_PROP_RATE_CONTROL, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU, - {0}, - {LTR_COUNT, IR_RANDOM, TIME_DELTA_BASED_RC, I_FRAME_QP, - P_FRAME_QP, B_FRAME_QP, ENH_LAYER_COUNT, BIT_RATE, - CONTENT_ADAPTIVE_CODING, BITRATE_BOOST, MIN_QUALITY, - VBV_DELAY, PEAK_BITRATE,SLICE_MODE, META_ROI_INFO, - BLUR_TYPES, LOWLATENCY_MODE}, - msm_vidc_adjust_bitrate_mode, msm_vidc_set_u32_enum}, - - {BITRATE_MODE, ENC, HEVC, - V4L2_MPEG_VIDEO_BITRATE_MODE_VBR, - V4L2_MPEG_VIDEO_BITRATE_MODE_CQ, - BIT(V4L2_MPEG_VIDEO_BITRATE_MODE_VBR) | - BIT(V4L2_MPEG_VIDEO_BITRATE_MODE_CBR) | - BIT(V4L2_MPEG_VIDEO_BITRATE_MODE_CQ), - V4L2_MPEG_VIDEO_BITRATE_MODE_VBR, - V4L2_CID_MPEG_VIDEO_BITRATE_MODE, - HFI_PROP_RATE_CONTROL, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU, - {0}, - {LTR_COUNT, IR_RANDOM, TIME_DELTA_BASED_RC, I_FRAME_QP, - P_FRAME_QP, B_FRAME_QP, CONSTANT_QUALITY, ENH_LAYER_COUNT, - CONTENT_ADAPTIVE_CODING, BIT_RATE, - BITRATE_BOOST, MIN_QUALITY, VBV_DELAY, - PEAK_BITRATE, SLICE_MODE, META_ROI_INFO, BLUR_TYPES, - LOWLATENCY_MODE}, - msm_vidc_adjust_bitrate_mode, msm_vidc_set_u32_enum}, - - {LOSSLESS, ENC, HEVC, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, - V4L2_CID_MPEG_VIDEO_HEVC_LOSSLESS_CU}, - - {FRAME_SKIP_MODE, ENC, H264|HEVC|HEIC, - V4L2_MPEG_VIDEO_FRAME_SKIP_MODE_DISABLED, - V4L2_MPEG_VIDEO_FRAME_SKIP_MODE_BUF_LIMIT, - BIT(V4L2_MPEG_VIDEO_FRAME_SKIP_MODE_DISABLED) | - BIT(V4L2_MPEG_VIDEO_FRAME_SKIP_MODE_LEVEL_LIMIT) | - BIT(V4L2_MPEG_VIDEO_FRAME_SKIP_MODE_BUF_LIMIT), - V4L2_MPEG_VIDEO_FRAME_SKIP_MODE_DISABLED, - V4L2_CID_MPEG_VIDEO_FRAME_SKIP_MODE, - 0, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU}, - - {FRAME_RC_ENABLE, ENC, H264|HEVC|HEIC, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_ENABLE, - V4L2_CID_MPEG_VIDEO_FRAME_RC_ENABLE}, - - {CONSTANT_QUALITY, ENC, HEVC, - 1, MAX_CONSTANT_QUALITY, 1, 90, - V4L2_CID_MPEG_VIDEO_CONSTANT_QUALITY, - HFI_PROP_CONSTANT_QUALITY, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT | - CAP_FLAG_DYNAMIC_ALLOWED, - {BITRATE_MODE}, {0}, - NULL, msm_vidc_set_constant_quality}, - - {GOP_SIZE, ENC, CODECS_ALL, - 0, INT_MAX, 1, 2 * DEFAULT_FPS - 1, - V4L2_CID_MPEG_VIDEO_GOP_SIZE, - HFI_PROP_MAX_GOP_FRAMES, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT | - CAP_FLAG_DYNAMIC_ALLOWED, - {ENH_LAYER_COUNT}, - {ALL_INTRA}, - msm_vidc_adjust_gop_size, msm_vidc_set_gop_size}, - - {GOP_CLOSURE, ENC, H264|HEVC, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_ENABLE, - V4L2_CID_MPEG_VIDEO_GOP_CLOSURE, - 0}, - - {B_FRAME, ENC, H264|HEVC, - 0, 7, 1, 0, - V4L2_CID_MPEG_VIDEO_B_FRAMES, - HFI_PROP_MAX_B_FRAMES, - CAP_FLAG_OUTPUT_PORT, - {ENH_LAYER_COUNT}, - {ALL_INTRA}, - msm_vidc_adjust_b_frame, msm_vidc_set_u32}, - - {BLUR_TYPES, ENC, H264|HEVC, - VIDC_BLUR_NONE, VIDC_BLUR_ADAPTIVE, - BIT(VIDC_BLUR_NONE) | BIT(VIDC_BLUR_EXTERNAL) | BIT(VIDC_BLUR_ADAPTIVE), - VIDC_BLUR_ADAPTIVE, - V4L2_CID_MPEG_VIDC_VIDEO_BLUR_TYPES, - HFI_PROP_BLUR_TYPES, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU, - {PIX_FMTS, BITRATE_MODE, CONTENT_ADAPTIVE_CODING, MIN_QUALITY}, - {BLUR_RESOLUTION}, - msm_vidc_adjust_blur_type, msm_vidc_set_u32_enum}, - - {BLUR_RESOLUTION, ENC, CODECS_ALL, - 0, S32_MAX, 1, 0, - V4L2_CID_MPEG_VIDC_VIDEO_BLUR_RESOLUTION, - HFI_PROP_BLUR_RESOLUTION, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT | - CAP_FLAG_DYNAMIC_ALLOWED, - {BLUR_TYPES}, - {0}, - msm_vidc_adjust_blur_resolution, msm_vidc_set_blur_resolution}, - - {CSC, ENC, CODECS_ALL, - V4L2_MPEG_MSM_VIDC_DISABLE, - V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, - 0, - HFI_PROP_CSC}, - - {CSC_CUSTOM_MATRIX, ENC, CODECS_ALL, - V4L2_MPEG_MSM_VIDC_DISABLE, - V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, - V4L2_CID_MPEG_VIDC_VIDEO_VPE_CSC_CUSTOM_MATRIX, - HFI_PROP_CSC_MATRIX, - CAP_FLAG_OUTPUT_PORT, - {0}, {0}, - NULL, msm_vidc_set_csc_custom_matrix}, - - {LOWLATENCY_MODE, ENC, H264 | HEVC, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, - V4L2_CID_MPEG_VIDC_LOWLATENCY_REQUEST, - 0, - CAP_FLAG_NONE, - {BITRATE_MODE}, - {STAGE}, - msm_vidc_adjust_lowlatency_mode, NULL}, - - {LOWLATENCY_MODE, DEC, H264|HEVC|VP9, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, - V4L2_CID_MPEG_VIDC_LOWLATENCY_REQUEST, - HFI_PROP_SEQ_CHANGE_AT_SYNC_FRAME, - CAP_FLAG_INPUT_PORT | CAP_FLAG_DYNAMIC_ALLOWED}, - - {LTR_COUNT, ENC, H264|HEVC, - 0, 2, 1, 0, - V4L2_CID_MPEG_VIDEO_LTR_COUNT, - HFI_PROP_LTR_COUNT, - CAP_FLAG_OUTPUT_PORT, - {BITRATE_MODE, ALL_INTRA}, {0}, - msm_vidc_adjust_ltr_count, msm_vidc_set_u32}, - - {USE_LTR, ENC, H264|HEVC, - INVALID_DEFAULT_MARK_OR_USE_LTR, - ((1 << MAX_LTR_FRAME_COUNT) - 1), - 1, INVALID_DEFAULT_MARK_OR_USE_LTR, - V4L2_CID_MPEG_VIDEO_USE_LTR_FRAMES, - HFI_PROP_LTR_USE, - CAP_FLAG_INPUT_PORT | CAP_FLAG_DYNAMIC_ALLOWED, - {0}, {0}, - msm_vidc_adjust_use_ltr, msm_vidc_set_use_and_mark_ltr}, - - {MARK_LTR, ENC, H264|HEVC, - INVALID_DEFAULT_MARK_OR_USE_LTR, - (MAX_LTR_FRAME_COUNT - 1), - 1, INVALID_DEFAULT_MARK_OR_USE_LTR, - V4L2_CID_MPEG_VIDEO_FRAME_LTR_INDEX, - HFI_PROP_LTR_MARK, - CAP_FLAG_INPUT_PORT | CAP_FLAG_DYNAMIC_ALLOWED, - {0}, {0}, - msm_vidc_adjust_mark_ltr, msm_vidc_set_use_and_mark_ltr}, - - {BASELAYER_PRIORITY, ENC, H264, - 0, MAX_BASE_LAYER_PRIORITY_ID, 1, 0, - V4L2_CID_MPEG_VIDEO_BASELAYER_PRIORITY_ID, - HFI_PROP_BASELAYER_PRIORITYID, - CAP_FLAG_OUTPUT_PORT}, - - {IR_RANDOM, ENC, H264|HEVC, - 0, INT_MAX, 1, 0, - V4L2_CID_MPEG_VIDC_INTRA_REFRESH_PERIOD, - HFI_PROP_IR_RANDOM_PERIOD, - CAP_FLAG_OUTPUT_PORT, - {BITRATE_MODE, ALL_INTRA}, {0}, - msm_vidc_adjust_ir_random, msm_vidc_set_u32}, - - {AU_DELIMITER, ENC, H264|HEVC, - V4L2_MPEG_MSM_VIDC_DISABLE, - V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, - V4L2_CID_MPEG_VIDEO_AU_DELIMITER, - HFI_PROP_AUD, - CAP_FLAG_OUTPUT_PORT, - {0}, {0}, - NULL, msm_vidc_set_u32}, - - {TIME_DELTA_BASED_RC, ENC, CODECS_ALL, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_ENABLE, - V4L2_CID_MPEG_VIDC_TIME_DELTA_BASED_RC, - HFI_PROP_TIME_DELTA_BASED_RATE_CONTROL, - CAP_FLAG_OUTPUT_PORT, - {BITRATE_MODE}, {0}, - msm_vidc_adjust_delta_based_rc, msm_vidc_set_u32}, - - {CONTENT_ADAPTIVE_CODING, ENC, H264|HEVC, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_ENABLE, - V4L2_CID_MPEG_VIDC_CONTENT_ADAPTIVE_CODING, - HFI_PROP_CONTENT_ADAPTIVE_CODING, - CAP_FLAG_OUTPUT_PORT, - {BITRATE_MODE, MIN_QUALITY}, - {BLUR_TYPES}, - msm_vidc_adjust_cac, - msm_vidc_set_vbr_related_properties}, - - {BITRATE_BOOST, ENC, H264|HEVC, - 0, MAX_BITRATE_BOOST, 25, MAX_BITRATE_BOOST, - V4L2_CID_MPEG_VIDC_QUALITY_BITRATE_BOOST, - HFI_PROP_BITRATE_BOOST, - CAP_FLAG_OUTPUT_PORT, - {BITRATE_MODE, MIN_QUALITY}, - {0}, - msm_vidc_adjust_bitrate_boost, - msm_vidc_set_vbr_related_properties}, - - {MIN_QUALITY, ENC, H264, - 0, MAX_SUPPORTED_MIN_QUALITY, 70, MAX_SUPPORTED_MIN_QUALITY, - 0, - HFI_PROP_MAINTAIN_MIN_QUALITY, - CAP_FLAG_OUTPUT_PORT, - {BITRATE_MODE, ENH_LAYER_COUNT, META_ROI_INFO}, - {CONTENT_ADAPTIVE_CODING, BITRATE_BOOST, BLUR_TYPES}, - msm_vidc_adjust_min_quality, - msm_vidc_set_vbr_related_properties}, - - {MIN_QUALITY, ENC, HEVC, - 0, MAX_SUPPORTED_MIN_QUALITY, 70, MAX_SUPPORTED_MIN_QUALITY, - 0, - HFI_PROP_MAINTAIN_MIN_QUALITY, - CAP_FLAG_OUTPUT_PORT, - {BITRATE_MODE, PIX_FMTS, ENH_LAYER_COUNT, - META_ROI_INFO}, - {CONTENT_ADAPTIVE_CODING, BITRATE_BOOST, BLUR_TYPES}, - msm_vidc_adjust_min_quality, - msm_vidc_set_vbr_related_properties}, - - {VBV_DELAY, ENC, H264|HEVC, - 200, 300, 100, 300, - V4L2_CID_MPEG_VIDEO_VBV_DELAY, - HFI_PROP_VBV_DELAY, - CAP_FLAG_OUTPUT_PORT, - {BITRATE_MODE}, - {0}, - NULL, msm_vidc_set_cbr_related_properties}, - - {PEAK_BITRATE, ENC, H264|HEVC, - /* default peak bitrate is 10% larger than avrg bitrate */ - 1, MAX_BITRATE, 1, DEFAULT_BITRATE, - V4L2_CID_MPEG_VIDEO_BITRATE_PEAK, - HFI_PROP_TOTAL_PEAK_BITRATE, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT | - CAP_FLAG_DYNAMIC_ALLOWED, - {BITRATE_MODE, BIT_RATE}, - {0}, - msm_vidc_adjust_peak_bitrate, - msm_vidc_set_cbr_related_properties}, - - {MIN_FRAME_QP, ENC, H264, - MIN_QP_8BIT, MAX_QP, 1, MIN_QP_8BIT, - V4L2_CID_MPEG_VIDEO_H264_MIN_QP, - HFI_PROP_MIN_QP_PACKED, - CAP_FLAG_OUTPUT_PORT, - {0}, {0}, - NULL, msm_vidc_set_min_qp}, - - {MIN_FRAME_QP, ENC, HEVC|HEIC, - MIN_QP_10BIT, MAX_QP, 1, MIN_QP_10BIT, - V4L2_CID_MPEG_VIDEO_HEVC_MIN_QP, - HFI_PROP_MIN_QP_PACKED, - CAP_FLAG_OUTPUT_PORT, - {PIX_FMTS}, {0}, - msm_vidc_adjust_hevc_min_qp, msm_vidc_set_min_qp}, - - {I_FRAME_MIN_QP, ENC, H264, - MIN_QP_8BIT, MAX_QP, 1, MIN_QP_8BIT, - V4L2_CID_MPEG_VIDEO_H264_I_FRAME_MIN_QP}, - - {I_FRAME_MIN_QP, ENC, HEVC|HEIC, - MIN_QP_10BIT, MAX_QP, 1, MIN_QP_10BIT, - V4L2_CID_MPEG_VIDEO_HEVC_I_FRAME_MIN_QP}, - - {P_FRAME_MIN_QP, ENC, H264, - MIN_QP_8BIT, MAX_QP, 1, MIN_QP_8BIT, - V4L2_CID_MPEG_VIDEO_H264_P_FRAME_MIN_QP}, - - {P_FRAME_MIN_QP, ENC, HEVC|HEIC, - MIN_QP_10BIT, MAX_QP, 1, MIN_QP_10BIT, - V4L2_CID_MPEG_VIDEO_HEVC_P_FRAME_MIN_QP}, - - {B_FRAME_MIN_QP, ENC, H264, - MIN_QP_8BIT, MAX_QP, 1, MIN_QP_8BIT, - V4L2_CID_MPEG_VIDEO_H264_B_FRAME_MIN_QP}, - - {B_FRAME_MIN_QP, ENC, HEVC|HEIC, - MIN_QP_10BIT, MAX_QP, 1, MIN_QP_10BIT, - V4L2_CID_MPEG_VIDEO_HEVC_B_FRAME_MIN_QP}, - - {MAX_FRAME_QP, ENC, H264, - MIN_QP_8BIT, MAX_QP, 1, MAX_QP, - V4L2_CID_MPEG_VIDEO_H264_MAX_QP, - HFI_PROP_MAX_QP_PACKED, - CAP_FLAG_OUTPUT_PORT, - {0}, {0}, - NULL, msm_vidc_set_max_qp}, - - {MAX_FRAME_QP, ENC, HEVC|HEIC, - MIN_QP_10BIT, MAX_QP, 1, MAX_QP, - V4L2_CID_MPEG_VIDEO_HEVC_MAX_QP, - HFI_PROP_MAX_QP_PACKED, - CAP_FLAG_OUTPUT_PORT, - {PIX_FMTS}, {0}, - msm_vidc_adjust_hevc_max_qp, msm_vidc_set_max_qp}, - - {I_FRAME_MAX_QP, ENC, H264, - MIN_QP_8BIT, MAX_QP, 1, MAX_QP, - V4L2_CID_MPEG_VIDEO_H264_I_FRAME_MAX_QP}, - - {I_FRAME_MAX_QP, ENC, HEVC|HEIC, - MIN_QP_10BIT, MAX_QP, 1, MAX_QP, - V4L2_CID_MPEG_VIDEO_HEVC_I_FRAME_MAX_QP}, - - {P_FRAME_MAX_QP, ENC, H264, - MIN_QP_8BIT, MAX_QP, 1, MAX_QP, - V4L2_CID_MPEG_VIDEO_H264_P_FRAME_MAX_QP}, - - {P_FRAME_MAX_QP, ENC, HEVC|HEIC, - MIN_QP_10BIT, MAX_QP, 1, MAX_QP, - V4L2_CID_MPEG_VIDEO_HEVC_P_FRAME_MAX_QP}, - - {B_FRAME_MAX_QP, ENC, H264, - MIN_QP_8BIT, MAX_QP, 1, MAX_QP, - V4L2_CID_MPEG_VIDEO_H264_B_FRAME_MAX_QP}, - - {B_FRAME_MAX_QP, ENC, HEVC|HEIC, - MIN_QP_10BIT, MAX_QP, 1, MAX_QP, - V4L2_CID_MPEG_VIDEO_HEVC_B_FRAME_MAX_QP}, - - {I_FRAME_QP, ENC, HEVC, - MIN_QP_10BIT, MAX_QP, 1, DEFAULT_QP, - V4L2_CID_MPEG_VIDEO_HEVC_I_FRAME_QP, - HFI_PROP_QP_PACKED, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT | - CAP_FLAG_DYNAMIC_ALLOWED, - {PIX_FMTS, BITRATE_MODE}, {0}, - msm_vidc_adjust_hevc_i_frame_qp, msm_vidc_set_frame_qp}, - - {I_FRAME_QP, ENC, H264, - MIN_QP_8BIT, MAX_QP, 1, DEFAULT_QP, - V4L2_CID_MPEG_VIDEO_H264_I_FRAME_QP, - HFI_PROP_QP_PACKED, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT | - CAP_FLAG_DYNAMIC_ALLOWED, - {BITRATE_MODE}, {0}, - NULL, msm_vidc_set_frame_qp}, - - {P_FRAME_QP, ENC, HEVC, - MIN_QP_10BIT, MAX_QP, 1, DEFAULT_QP, - V4L2_CID_MPEG_VIDEO_HEVC_P_FRAME_QP, - HFI_PROP_QP_PACKED, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT | - CAP_FLAG_DYNAMIC_ALLOWED, - {PIX_FMTS, BITRATE_MODE}, {0}, - msm_vidc_adjust_hevc_p_frame_qp, msm_vidc_set_frame_qp}, - - {P_FRAME_QP, ENC, H264, - MIN_QP_8BIT, MAX_QP, 1, DEFAULT_QP, - V4L2_CID_MPEG_VIDEO_H264_P_FRAME_QP, - HFI_PROP_QP_PACKED, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT | - CAP_FLAG_DYNAMIC_ALLOWED, - {BITRATE_MODE}, {0}, - NULL, msm_vidc_set_frame_qp}, - - {B_FRAME_QP, ENC, HEVC, - MIN_QP_10BIT, MAX_QP, 1, DEFAULT_QP, - V4L2_CID_MPEG_VIDEO_HEVC_B_FRAME_QP, - HFI_PROP_QP_PACKED, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT | - CAP_FLAG_DYNAMIC_ALLOWED, - {PIX_FMTS, BITRATE_MODE}, {0}, - msm_vidc_adjust_hevc_b_frame_qp, msm_vidc_set_frame_qp}, - - {B_FRAME_QP, ENC, H264, - MIN_QP_8BIT, MAX_QP, 1, DEFAULT_QP, - V4L2_CID_MPEG_VIDEO_H264_B_FRAME_QP, - HFI_PROP_QP_PACKED, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT | - CAP_FLAG_DYNAMIC_ALLOWED, - {BITRATE_MODE}, {0}, - NULL, msm_vidc_set_frame_qp}, - - {LAYER_TYPE, ENC, HEVC, - V4L2_MPEG_VIDEO_HEVC_HIERARCHICAL_CODING_B, - V4L2_MPEG_VIDEO_HEVC_HIERARCHICAL_CODING_P, - BIT(V4L2_MPEG_VIDEO_HEVC_HIERARCHICAL_CODING_B) | - BIT(V4L2_MPEG_VIDEO_HEVC_HIERARCHICAL_CODING_P), - V4L2_MPEG_VIDEO_HEVC_HIERARCHICAL_CODING_P, - V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_TYPE, - HFI_PROP_LAYER_ENCODING_TYPE, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU}, - - {LAYER_TYPE, ENC, H264, - V4L2_MPEG_VIDEO_H264_HIERARCHICAL_CODING_B, - V4L2_MPEG_VIDEO_H264_HIERARCHICAL_CODING_P, - BIT(V4L2_MPEG_VIDEO_H264_HIERARCHICAL_CODING_B) | - BIT(V4L2_MPEG_VIDEO_H264_HIERARCHICAL_CODING_P), - V4L2_MPEG_VIDEO_H264_HIERARCHICAL_CODING_P, - V4L2_CID_MPEG_VIDEO_H264_HIERARCHICAL_CODING_TYPE, - HFI_PROP_LAYER_ENCODING_TYPE, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU}, - - {LAYER_ENABLE, ENC, H264, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, - V4L2_CID_MPEG_VIDEO_H264_HIERARCHICAL_CODING, - HFI_PROP_LAYER_ENCODING_TYPE, - CAP_FLAG_OUTPUT_PORT}, - - {ENH_LAYER_COUNT, ENC, HEVC, - 0, 5, 1, 0, - V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_LAYER, - HFI_PROP_LAYER_COUNT, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT | - CAP_FLAG_DYNAMIC_ALLOWED, - {BITRATE_MODE, META_EVA_STATS}, - {GOP_SIZE, B_FRAME, BIT_RATE, MIN_QUALITY}, - msm_vidc_adjust_layer_count, msm_vidc_set_layer_count_and_type}, - - {ENH_LAYER_COUNT, ENC, H264, - 0, 5, 1, 0, - V4L2_CID_MPEG_VIDEO_H264_HIERARCHICAL_CODING_LAYER, - HFI_PROP_LAYER_COUNT, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT | - CAP_FLAG_DYNAMIC_ALLOWED, - {BITRATE_MODE, META_EVA_STATS}, - {GOP_SIZE, B_FRAME, BIT_RATE, MIN_QUALITY}, - msm_vidc_adjust_layer_count, msm_vidc_set_layer_count_and_type}, - - /* - * layer bitrate is treated as BIT_RATE cap sibling and - * is handled in bitrate adjust and set functions - */ - {L0_BR, ENC, HEVC, - 1, MAX_BITRATE, 1, DEFAULT_BITRATE, - V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L0_BR, - HFI_PROP_BITRATE_LAYER1, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT | - CAP_FLAG_DYNAMIC_ALLOWED, - {0}, {0}, - msm_vidc_adjust_dynamic_layer_bitrate, - msm_vidc_set_dynamic_layer_bitrate}, - - {L1_BR, ENC, HEVC, - 1, MAX_BITRATE, 1, DEFAULT_BITRATE, - V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L1_BR, - HFI_PROP_BITRATE_LAYER2, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT | - CAP_FLAG_DYNAMIC_ALLOWED, - {0}, {0}, - msm_vidc_adjust_dynamic_layer_bitrate, - msm_vidc_set_dynamic_layer_bitrate}, - - {L2_BR, ENC, HEVC, - 1, MAX_BITRATE, 1, DEFAULT_BITRATE, - V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L2_BR, - HFI_PROP_BITRATE_LAYER3, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT | - CAP_FLAG_DYNAMIC_ALLOWED, - {0}, {0}, - msm_vidc_adjust_dynamic_layer_bitrate, - msm_vidc_set_dynamic_layer_bitrate}, - - {L3_BR, ENC, HEVC, - 1, MAX_BITRATE, 1, DEFAULT_BITRATE, - V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L3_BR, - HFI_PROP_BITRATE_LAYER4, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT | - CAP_FLAG_DYNAMIC_ALLOWED, - {0}, {0}, - msm_vidc_adjust_dynamic_layer_bitrate, - msm_vidc_set_dynamic_layer_bitrate}, - - {L4_BR, ENC, HEVC, - 1, MAX_BITRATE, 1, DEFAULT_BITRATE, - V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L4_BR, - HFI_PROP_BITRATE_LAYER5, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT | - CAP_FLAG_DYNAMIC_ALLOWED, - {0}, {0}, - msm_vidc_adjust_dynamic_layer_bitrate, - msm_vidc_set_dynamic_layer_bitrate}, - - {L5_BR, ENC, HEVC, - 1, MAX_BITRATE, 1, DEFAULT_BITRATE, - V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L5_BR, - HFI_PROP_BITRATE_LAYER6, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT | - CAP_FLAG_DYNAMIC_ALLOWED, - {0}, {0}, - msm_vidc_adjust_dynamic_layer_bitrate, - msm_vidc_set_dynamic_layer_bitrate}, - - {L0_BR, ENC, H264, - 1, MAX_BITRATE, 1, DEFAULT_BITRATE, - V4L2_CID_MPEG_VIDEO_H264_HIER_CODING_L0_BR, - HFI_PROP_BITRATE_LAYER1, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT | - CAP_FLAG_DYNAMIC_ALLOWED, - {0}, {0}, - msm_vidc_adjust_dynamic_layer_bitrate, - msm_vidc_set_dynamic_layer_bitrate}, - - {L1_BR, ENC, H264, - 1, MAX_BITRATE, 1, DEFAULT_BITRATE, - V4L2_CID_MPEG_VIDEO_H264_HIER_CODING_L1_BR, - HFI_PROP_BITRATE_LAYER2, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT | - CAP_FLAG_DYNAMIC_ALLOWED, - {0}, {0}, - msm_vidc_adjust_dynamic_layer_bitrate, - msm_vidc_set_dynamic_layer_bitrate}, - - {L2_BR, ENC, H264, - 1, MAX_BITRATE, 1, DEFAULT_BITRATE, - V4L2_CID_MPEG_VIDEO_H264_HIER_CODING_L2_BR, - HFI_PROP_BITRATE_LAYER3, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT | - CAP_FLAG_DYNAMIC_ALLOWED, - {0}, {0}, - msm_vidc_adjust_dynamic_layer_bitrate, - msm_vidc_set_dynamic_layer_bitrate}, - - {L3_BR, ENC, H264, - 1, MAX_BITRATE, 1, DEFAULT_BITRATE, - V4L2_CID_MPEG_VIDEO_H264_HIER_CODING_L3_BR, - HFI_PROP_BITRATE_LAYER4, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT | - CAP_FLAG_DYNAMIC_ALLOWED, - {0}, {0}, - msm_vidc_adjust_dynamic_layer_bitrate, - msm_vidc_set_dynamic_layer_bitrate}, - - {L4_BR, ENC, H264, - 1, MAX_BITRATE, 1, DEFAULT_BITRATE, - V4L2_CID_MPEG_VIDEO_H264_HIER_CODING_L4_BR, - HFI_PROP_BITRATE_LAYER5, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT | - CAP_FLAG_DYNAMIC_ALLOWED, - {0}, {0}, - msm_vidc_adjust_dynamic_layer_bitrate, - msm_vidc_set_dynamic_layer_bitrate}, - - {L5_BR, ENC, H264, - 1, MAX_BITRATE, 1, DEFAULT_BITRATE, - V4L2_CID_MPEG_VIDEO_H264_HIER_CODING_L5_BR, - HFI_PROP_BITRATE_LAYER6, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT | - CAP_FLAG_DYNAMIC_ALLOWED, - {0}, {0}, - msm_vidc_adjust_dynamic_layer_bitrate, - msm_vidc_set_dynamic_layer_bitrate}, - - {ENTROPY_MODE, ENC, H264, - V4L2_MPEG_VIDEO_H264_ENTROPY_MODE_CAVLC, - V4L2_MPEG_VIDEO_H264_ENTROPY_MODE_CABAC, - BIT(V4L2_MPEG_VIDEO_H264_ENTROPY_MODE_CAVLC) | - BIT(V4L2_MPEG_VIDEO_H264_ENTROPY_MODE_CABAC), - V4L2_MPEG_VIDEO_H264_ENTROPY_MODE_CABAC, - V4L2_CID_MPEG_VIDEO_H264_ENTROPY_MODE, - HFI_PROP_CABAC_SESSION, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU, - {PROFILE}, - {0}, - msm_vidc_adjust_entropy_mode, msm_vidc_set_u32}, - - {ENTROPY_MODE, DEC, H264|HEVC|VP9, - V4L2_MPEG_VIDEO_H264_ENTROPY_MODE_CAVLC, - V4L2_MPEG_VIDEO_H264_ENTROPY_MODE_CABAC, - BIT(V4L2_MPEG_VIDEO_H264_ENTROPY_MODE_CAVLC) | - BIT(V4L2_MPEG_VIDEO_H264_ENTROPY_MODE_CABAC), - V4L2_MPEG_VIDEO_H264_ENTROPY_MODE_CABAC, - 0, - HFI_PROP_CABAC_SESSION}, - - /* H264 does not support 10 bit, PIX_FMTS would not be a Parent for this */ - {PROFILE, ENC, H264, - V4L2_MPEG_VIDEO_H264_PROFILE_BASELINE, - V4L2_MPEG_VIDEO_H264_PROFILE_CONSTRAINED_HIGH, - BIT(V4L2_MPEG_VIDEO_H264_PROFILE_BASELINE) | - BIT(V4L2_MPEG_VIDEO_H264_PROFILE_CONSTRAINED_HIGH) | - BIT(V4L2_MPEG_VIDEO_H264_PROFILE_CONSTRAINED_BASELINE) | - BIT(V4L2_MPEG_VIDEO_H264_PROFILE_MAIN) | - BIT(V4L2_MPEG_VIDEO_H264_PROFILE_HIGH), - V4L2_MPEG_VIDEO_H264_PROFILE_HIGH, - V4L2_CID_MPEG_VIDEO_H264_PROFILE, - HFI_PROP_PROFILE, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU, - {0}, - {ENTROPY_MODE, TRANSFORM_8X8}, - NULL, msm_vidc_set_u32_enum}, - - {PROFILE, DEC, H264, - V4L2_MPEG_VIDEO_H264_PROFILE_BASELINE, - V4L2_MPEG_VIDEO_H264_PROFILE_CONSTRAINED_HIGH, - BIT(V4L2_MPEG_VIDEO_H264_PROFILE_BASELINE) | - BIT(V4L2_MPEG_VIDEO_H264_PROFILE_CONSTRAINED_HIGH) | - BIT(V4L2_MPEG_VIDEO_H264_PROFILE_CONSTRAINED_BASELINE) | - BIT(V4L2_MPEG_VIDEO_H264_PROFILE_MAIN) | - BIT(V4L2_MPEG_VIDEO_H264_PROFILE_HIGH), - V4L2_MPEG_VIDEO_H264_PROFILE_HIGH, - V4L2_CID_MPEG_VIDEO_H264_PROFILE, - HFI_PROP_PROFILE, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU, - {0}, - {ENTROPY_MODE}, - NULL, msm_vidc_set_u32_enum}, - - {PROFILE, ENC|DEC, HEVC|HEIC, - V4L2_MPEG_VIDEO_HEVC_PROFILE_MAIN, - V4L2_MPEG_VIDEO_HEVC_PROFILE_MAIN_10_STILL_PICTURE, - BIT(V4L2_MPEG_VIDEO_HEVC_PROFILE_MAIN) | - BIT(V4L2_MPEG_VIDEO_HEVC_PROFILE_MAIN_STILL_PICTURE) | - BIT(V4L2_MPEG_VIDEO_HEVC_PROFILE_MAIN_10) | - BIT(V4L2_MPEG_VIDEO_HEVC_PROFILE_MAIN_10_STILL_PICTURE), - V4L2_MPEG_VIDEO_HEVC_PROFILE_MAIN, - V4L2_CID_MPEG_VIDEO_HEVC_PROFILE, - HFI_PROP_PROFILE, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU, - {PIX_FMTS}, - {0}, - msm_vidc_adjust_profile, msm_vidc_set_u32_enum}, - - {PROFILE, DEC, VP9, - V4L2_MPEG_VIDEO_VP9_PROFILE_0, - V4L2_MPEG_VIDEO_VP9_PROFILE_2, - BIT(V4L2_MPEG_VIDEO_VP9_PROFILE_0) | - BIT(V4L2_MPEG_VIDEO_VP9_PROFILE_2), - V4L2_MPEG_VIDEO_VP9_PROFILE_0, - V4L2_CID_MPEG_VIDEO_VP9_PROFILE, - HFI_PROP_PROFILE, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU, - {0}, - {0}, - NULL, msm_vidc_set_u32_enum}, - - {LEVEL, DEC, VP9, - V4L2_MPEG_VIDEO_VP9_LEVEL_1_0, - V4L2_MPEG_VIDEO_VP9_LEVEL_5_2, - BIT(V4L2_MPEG_VIDEO_VP9_LEVEL_1_0) | - BIT(V4L2_MPEG_VIDEO_VP9_LEVEL_1_1) | - BIT(V4L2_MPEG_VIDEO_VP9_LEVEL_2_0) | - BIT(V4L2_MPEG_VIDEO_VP9_LEVEL_2_1) | - BIT(V4L2_MPEG_VIDEO_VP9_LEVEL_3_0) | - BIT(V4L2_MPEG_VIDEO_VP9_LEVEL_3_1) | - BIT(V4L2_MPEG_VIDEO_VP9_LEVEL_4_0) | - BIT(V4L2_MPEG_VIDEO_VP9_LEVEL_4_1) | - BIT(V4L2_MPEG_VIDEO_VP9_LEVEL_5_0) | - BIT(V4L2_MPEG_VIDEO_VP9_LEVEL_5_1) | - BIT(V4L2_MPEG_VIDEO_VP9_LEVEL_5_2), - V4L2_MPEG_VIDEO_VP9_LEVEL_5_2, - V4L2_CID_MPEG_VIDEO_VP9_LEVEL, - HFI_PROP_LEVEL, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU, - {0}, - {0}, - NULL, msm_vidc_set_u32_enum}, - - {LEVEL, DEC, H264, - V4L2_MPEG_VIDEO_H264_LEVEL_1_0, - V4L2_MPEG_VIDEO_H264_LEVEL_6_0, - BIT(V4L2_MPEG_VIDEO_H264_LEVEL_1_0) | - BIT(V4L2_MPEG_VIDEO_H264_LEVEL_1B) | - BIT(V4L2_MPEG_VIDEO_H264_LEVEL_1_1) | - BIT(V4L2_MPEG_VIDEO_H264_LEVEL_1_2) | - BIT(V4L2_MPEG_VIDEO_H264_LEVEL_1_3) | - BIT(V4L2_MPEG_VIDEO_H264_LEVEL_2_0) | - BIT(V4L2_MPEG_VIDEO_H264_LEVEL_2_1) | - BIT(V4L2_MPEG_VIDEO_H264_LEVEL_2_2) | - BIT(V4L2_MPEG_VIDEO_H264_LEVEL_3_0) | - BIT(V4L2_MPEG_VIDEO_H264_LEVEL_3_1) | - BIT(V4L2_MPEG_VIDEO_H264_LEVEL_3_2) | - BIT(V4L2_MPEG_VIDEO_H264_LEVEL_4_0) | - BIT(V4L2_MPEG_VIDEO_H264_LEVEL_4_1) | - BIT(V4L2_MPEG_VIDEO_H264_LEVEL_4_2) | - BIT(V4L2_MPEG_VIDEO_H264_LEVEL_5_0) | - BIT(V4L2_MPEG_VIDEO_H264_LEVEL_5_1) | - BIT(V4L2_MPEG_VIDEO_H264_LEVEL_5_2) | - BIT(V4L2_MPEG_VIDEO_H264_LEVEL_6_0), - V4L2_MPEG_VIDEO_H264_LEVEL_6_0, - V4L2_CID_MPEG_VIDEO_H264_LEVEL, - HFI_PROP_LEVEL, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU, - {0}, - {0}, - NULL, msm_vidc_set_u32_enum}, - - {LEVEL, ENC, H264, - V4L2_MPEG_VIDEO_H264_LEVEL_1_0, - V4L2_MPEG_VIDEO_H264_LEVEL_6_0, - BIT(V4L2_MPEG_VIDEO_H264_LEVEL_1_0) | - BIT(V4L2_MPEG_VIDEO_H264_LEVEL_1B) | - BIT(V4L2_MPEG_VIDEO_H264_LEVEL_1_1) | - BIT(V4L2_MPEG_VIDEO_H264_LEVEL_1_2) | - BIT(V4L2_MPEG_VIDEO_H264_LEVEL_1_3) | - BIT(V4L2_MPEG_VIDEO_H264_LEVEL_2_0) | - BIT(V4L2_MPEG_VIDEO_H264_LEVEL_2_1) | - BIT(V4L2_MPEG_VIDEO_H264_LEVEL_2_2) | - BIT(V4L2_MPEG_VIDEO_H264_LEVEL_3_0) | - BIT(V4L2_MPEG_VIDEO_H264_LEVEL_3_1) | - BIT(V4L2_MPEG_VIDEO_H264_LEVEL_3_2) | - BIT(V4L2_MPEG_VIDEO_H264_LEVEL_4_0) | - BIT(V4L2_MPEG_VIDEO_H264_LEVEL_4_1) | - BIT(V4L2_MPEG_VIDEO_H264_LEVEL_4_2) | - BIT(V4L2_MPEG_VIDEO_H264_LEVEL_5_0) | - BIT(V4L2_MPEG_VIDEO_H264_LEVEL_5_1) | - BIT(V4L2_MPEG_VIDEO_H264_LEVEL_5_2) | - BIT(V4L2_MPEG_VIDEO_H264_LEVEL_6_0), - V4L2_MPEG_VIDEO_H264_LEVEL_6_0, - V4L2_CID_MPEG_VIDEO_H264_LEVEL, - HFI_PROP_LEVEL, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU, - {0}, - {0}, - NULL, msm_vidc_set_level}, - - {LEVEL, DEC, HEVC|HEIC, - V4L2_MPEG_VIDEO_HEVC_LEVEL_1, - V4L2_MPEG_VIDEO_HEVC_LEVEL_6, - BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_1) | - BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_2) | - BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_2_1) | - BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_3) | - BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_3_1) | - BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_4) | - BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_4_1) | - BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_5) | - BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_5_1) | - BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_5_2) | - BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_6), - V4L2_MPEG_VIDEO_HEVC_LEVEL_6, - V4L2_CID_MPEG_VIDEO_HEVC_LEVEL, - HFI_PROP_LEVEL, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU, - {0}, - {0}, - NULL, msm_vidc_set_u32_enum}, - - {LEVEL, ENC, HEVC|HEIC, - V4L2_MPEG_VIDEO_HEVC_LEVEL_1, - V4L2_MPEG_VIDEO_HEVC_LEVEL_5_2, - BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_1) | - BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_2) | - BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_2_1) | - BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_3) | - BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_3_1) | - BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_4) | - BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_4_1) | - BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_5) | - BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_5_1) | - BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_5_2), - V4L2_MPEG_VIDEO_HEVC_LEVEL_5_2, - V4L2_CID_MPEG_VIDEO_HEVC_LEVEL, - HFI_PROP_LEVEL, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU, - {0}, - {0}, - NULL, msm_vidc_set_level}, - - /* TODO: Bring the VP9 Level upstream GKI change, and level cap here: - * go/videogki - */ - - {HEVC_TIER, ENC|DEC, HEVC, - V4L2_MPEG_VIDEO_HEVC_TIER_MAIN, - V4L2_MPEG_VIDEO_HEVC_TIER_HIGH, - BIT(V4L2_MPEG_VIDEO_HEVC_TIER_MAIN) | - BIT(V4L2_MPEG_VIDEO_HEVC_TIER_HIGH), - V4L2_MPEG_VIDEO_HEVC_TIER_HIGH, - V4L2_CID_MPEG_VIDEO_HEVC_TIER, - HFI_PROP_TIER, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU, - {0}, - {0}, - NULL, msm_vidc_set_u32_enum}, - - {LF_MODE, ENC, H264, - V4L2_MPEG_VIDEO_H264_LOOP_FILTER_MODE_ENABLED, - DB_H264_DISABLE_SLICE_BOUNDARY, - BIT(V4L2_MPEG_VIDEO_H264_LOOP_FILTER_MODE_ENABLED) | - BIT(V4L2_MPEG_VIDEO_H264_LOOP_FILTER_MODE_DISABLED) | - BIT(DB_H264_DISABLE_SLICE_BOUNDARY), - V4L2_MPEG_VIDEO_H264_LOOP_FILTER_MODE_ENABLED, - V4L2_CID_MPEG_VIDEO_H264_LOOP_FILTER_MODE, - HFI_PROP_DEBLOCKING_MODE, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU, - {0}, {0}, - NULL, msm_vidc_set_deblock_mode}, - - {LF_MODE, ENC, HEVC|HEIC, - V4L2_MPEG_VIDEO_HEVC_LOOP_FILTER_MODE_DISABLED, - DB_HEVC_DISABLE_SLICE_BOUNDARY, - BIT(V4L2_MPEG_VIDEO_HEVC_LOOP_FILTER_MODE_DISABLED) | - BIT(V4L2_MPEG_VIDEO_HEVC_LOOP_FILTER_MODE_ENABLED) | - BIT(DB_HEVC_DISABLE_SLICE_BOUNDARY), - V4L2_MPEG_VIDEO_HEVC_LOOP_FILTER_MODE_ENABLED, - V4L2_CID_MPEG_VIDEO_HEVC_LOOP_FILTER_MODE, - HFI_PROP_DEBLOCKING_MODE, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU, - {0}, {0}, - NULL, msm_vidc_set_deblock_mode}, - - {LF_ALPHA, ENC, H264, - -6, 6, 1, 0, - V4L2_CID_MPEG_VIDEO_H264_LOOP_FILTER_ALPHA}, - - {LF_ALPHA, ENC, HEVC|HEIC, - -6, 6, 1, 0, - V4L2_CID_MPEG_VIDEO_HEVC_LF_TC_OFFSET_DIV2}, - - {LF_BETA, ENC, H264, - -6, 6, 1, 0, - V4L2_CID_MPEG_VIDEO_H264_LOOP_FILTER_BETA}, - - {LF_BETA, ENC, HEVC|HEIC, - -6, 6, 1, 0, - V4L2_CID_MPEG_VIDEO_HEVC_LF_BETA_OFFSET_DIV2}, - - {SLICE_MODE, ENC, H264|HEVC|HEIC, - V4L2_MPEG_VIDEO_MULTI_SLICE_MODE_SINGLE, - V4L2_MPEG_VIDEO_MULTI_SLICE_MODE_MAX_BYTES, - BIT(V4L2_MPEG_VIDEO_MULTI_SLICE_MODE_SINGLE) | - BIT(V4L2_MPEG_VIDEO_MULTI_SLICE_MODE_MAX_MB) | - BIT(V4L2_MPEG_VIDEO_MULTI_SLICE_MODE_MAX_BYTES), - V4L2_MPEG_VIDEO_MULTI_SLICE_MODE_SINGLE, - V4L2_CID_MPEG_VIDEO_MULTI_SLICE_MODE, - 0, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU, - {BITRATE_MODE, ALL_INTRA}, {0}, - msm_vidc_adjust_slice_count, msm_vidc_set_slice_count}, - - {SLICE_MAX_BYTES, ENC, H264|HEVC|HEIC, - MIN_SLICE_BYTE_SIZE, MAX_SLICE_BYTE_SIZE, - 1, MIN_SLICE_BYTE_SIZE, - V4L2_CID_MPEG_VIDEO_MULTI_SLICE_MAX_BYTES, - HFI_PROP_MULTI_SLICE_BYTES_COUNT, - CAP_FLAG_OUTPUT_PORT}, - - {SLICE_MAX_MB, ENC, H264|HEVC|HEIC, - 1, MAX_SLICE_MB_SIZE, 1, 1, - V4L2_CID_MPEG_VIDEO_MULTI_SLICE_MAX_MB, - HFI_PROP_MULTI_SLICE_MB_COUNT, - CAP_FLAG_OUTPUT_PORT}, - - // TODO: MB level RC - mapping - {MB_RC, ENC, H264|HEVC, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_ENABLE, - V4L2_CID_MPEG_VIDEO_MB_RC_ENABLE, - 0, - CAP_FLAG_OUTPUT_PORT}, - - {TRANSFORM_8X8, ENC, H264, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_ENABLE, - V4L2_CID_MPEG_VIDEO_H264_8X8_TRANSFORM, - HFI_PROP_8X8_TRANSFORM, - CAP_FLAG_OUTPUT_PORT, - {PROFILE}, {0}, - msm_vidc_adjust_transform_8x8, msm_vidc_set_u32}, - - {CHROMA_QP_INDEX_OFFSET, ENC, HEVC, - MIN_CHROMA_QP_OFFSET, MAX_CHROMA_QP_OFFSET, - 1, MAX_CHROMA_QP_OFFSET, - V4L2_CID_MPEG_VIDEO_H264_CHROMA_QP_INDEX_OFFSET, - HFI_PROP_CHROMA_QP_OFFSET, - CAP_FLAG_OUTPUT_PORT, - {0}, {0}, - msm_vidc_adjust_chroma_qp_index_offset, - msm_vidc_set_chroma_qp_index_offset}, - - {DISPLAY_DELAY_ENABLE, DEC, H264|HEVC|VP9, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, - V4L2_CID_MPEG_VIDEO_DEC_DISPLAY_DELAY_ENABLE, - HFI_PROP_DECODE_ORDER_OUTPUT, - CAP_FLAG_INPUT_PORT, - {0}, {OUTPUT_ORDER}, - NULL, NULL}, - - {DISPLAY_DELAY, DEC, H264|HEVC|VP9, - 0, 1, 1, 0, - V4L2_CID_MPEG_VIDEO_DEC_DISPLAY_DELAY, - HFI_PROP_DECODE_ORDER_OUTPUT, - CAP_FLAG_INPUT_PORT, - {0}, {OUTPUT_ORDER}, - NULL, NULL}, - - {OUTPUT_ORDER, DEC, H264|HEVC|VP9, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, - 0, - HFI_PROP_DECODE_ORDER_OUTPUT, - CAP_FLAG_INPUT_PORT, - {THUMBNAIL_MODE, DISPLAY_DELAY, DISPLAY_DELAY_ENABLE}, - {0}, - msm_vidc_adjust_output_order, msm_vidc_set_u32}, - - {INPUT_BUF_HOST_MAX_COUNT, ENC|DEC, CODECS_ALL, - DEFAULT_MAX_HOST_BUF_COUNT, DEFAULT_MAX_HOST_BURST_BUF_COUNT, - 1, DEFAULT_MAX_HOST_BUF_COUNT, - 0, - HFI_PROP_BUFFER_HOST_MAX_COUNT, - CAP_FLAG_INPUT_PORT, - {0}, {0}, - msm_vidc_adjust_input_buf_host_max_count, msm_vidc_set_u32}, - - {INPUT_BUF_HOST_MAX_COUNT, ENC, H264|HEVC, - DEFAULT_MAX_HOST_BUF_COUNT, DEFAULT_MAX_HOST_BURST_BUF_COUNT, - 1, DEFAULT_MAX_HOST_BUF_COUNT, - 0, - HFI_PROP_BUFFER_HOST_MAX_COUNT, - CAP_FLAG_INPUT_PORT, - {SUPER_FRAME}, {0}, - msm_vidc_adjust_input_buf_host_max_count, msm_vidc_set_u32}, - - {OUTPUT_BUF_HOST_MAX_COUNT, ENC|DEC, CODECS_ALL, - DEFAULT_MAX_HOST_BUF_COUNT, DEFAULT_MAX_HOST_BURST_BUF_COUNT, - 1, DEFAULT_MAX_HOST_BUF_COUNT, - 0, - HFI_PROP_BUFFER_HOST_MAX_COUNT, - CAP_FLAG_OUTPUT_PORT, - {0}, {0}, - msm_vidc_adjust_output_buf_host_max_count, msm_vidc_set_u32}, - - {OUTPUT_BUF_HOST_MAX_COUNT, ENC, H264|HEVC, - DEFAULT_MAX_HOST_BUF_COUNT, DEFAULT_MAX_HOST_BURST_BUF_COUNT, - 1, DEFAULT_MAX_HOST_BUF_COUNT, - 0, - HFI_PROP_BUFFER_HOST_MAX_COUNT, - CAP_FLAG_OUTPUT_PORT, - {SUPER_FRAME}, {0}, - msm_vidc_adjust_output_buf_host_max_count, msm_vidc_set_u32}, - - /* conceal color */ - {CONCEAL_COLOR_8BIT, DEC, CODECS_ALL, 0x0, 0xff3fcff, 1, - DEFAULT_VIDEO_CONCEAL_COLOR_BLACK, - V4L2_CID_MPEG_VIDEO_MUTE_YUV, - HFI_PROP_CONCEAL_COLOR_8BIT, - CAP_FLAG_INPUT_PORT, - {0}, {0}, - NULL, msm_vidc_set_u32_packed}, - - {CONCEAL_COLOR_10BIT, DEC, CODECS_ALL, 0x0, 0x3fffffff, 1, - DEFAULT_VIDEO_CONCEAL_COLOR_BLACK, - V4L2_CID_MPEG_VIDEO_MUTE_YUV, - HFI_PROP_CONCEAL_COLOR_10BIT, - CAP_FLAG_INPUT_PORT, - {0}, {0}, - NULL, msm_vidc_set_u32_packed}, - - // TODO - {STAGE, DEC|ENC, CODECS_ALL, - MSM_VIDC_STAGE_1, - MSM_VIDC_STAGE_2, 1, - MSM_VIDC_STAGE_2, - 0, - HFI_PROP_STAGE, - 0, - {0}, {0}, - NULL, msm_vidc_set_stage}, - - {STAGE, ENC, H264 | HEVC, - MSM_VIDC_STAGE_1, - MSM_VIDC_STAGE_2, 1, - MSM_VIDC_STAGE_2, - 0, - HFI_PROP_STAGE, - CAP_FLAG_NONE, - {LOWLATENCY_MODE}, {0}, - NULL, msm_vidc_set_stage}, - - {PIPE, DEC|ENC, CODECS_ALL, - MSM_VIDC_PIPE_1, - MSM_VIDC_PIPE_2, 1, - MSM_VIDC_PIPE_2, - 0, - HFI_PROP_PIPE, - 0, - {0}, {0}, - NULL, msm_vidc_set_pipe}, - {POC, DEC, H264, 0, 18, 1, 1}, - {QUALITY_MODE, ENC, CODECS_ALL, - MSM_VIDC_MAX_QUALITY_MODE, - MSM_VIDC_POWER_SAVE_MODE, 1, - MSM_VIDC_POWER_SAVE_MODE}, - - {CODED_FRAMES, DEC, H264|HEVC|HEIC, - CODED_FRAMES_PROGRESSIVE, CODED_FRAMES_INTERLACE, - 1, CODED_FRAMES_PROGRESSIVE, - 0, - HFI_PROP_CODED_FRAMES}, - - {BIT_DEPTH, DEC, CODECS_ALL, BIT_DEPTH_8, BIT_DEPTH_10, 1, BIT_DEPTH_8, - 0, - HFI_PROP_LUMA_CHROMA_BIT_DEPTH}, - - {CODEC_CONFIG, DEC, H264|HEVC|HEIC, 0, 1, 1, 0, - V4L2_CID_MPEG_VIDC_CODEC_CONFIG, 0, - CAP_FLAG_DYNAMIC_ALLOWED}, - - {BITSTREAM_SIZE_OVERWRITE, DEC, CODECS_ALL, 0, INT_MAX, 1, 0, - V4L2_CID_MPEG_VIDC_MIN_BITSTREAM_SIZE_OVERWRITE}, - - {THUMBNAIL_MODE, DEC, CODECS_ALL, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, - V4L2_CID_MPEG_VIDC_THUMBNAIL_MODE, - HFI_PROP_THUMBNAIL_MODE, - CAP_FLAG_INPUT_PORT, - {0}, {OUTPUT_ORDER}, - NULL, msm_vidc_set_u32}, - - {DEFAULT_HEADER, DEC, CODECS_ALL, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, - 0, - HFI_PROP_DEC_DEFAULT_HEADER}, - - {RAP_FRAME, DEC, CODECS_ALL, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_ENABLE, - 0, - HFI_PROP_DEC_START_FROM_RAP_FRAME, - CAP_FLAG_INPUT_PORT, - {0}, {0}, - NULL, msm_vidc_set_u32}, - - {SEQ_CHANGE_AT_SYNC_FRAME, DEC, CODECS_ALL, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_ENABLE, - 0, - HFI_PROP_SEQ_CHANGE_AT_SYNC_FRAME, - CAP_FLAG_INPUT_PORT | CAP_FLAG_DYNAMIC_ALLOWED}, - - {PRIORITY, DEC|ENC, CODECS_ALL, - 0, 2, 1, 1, - V4L2_CID_MPEG_VIDC_PRIORITY, - HFI_PROP_SESSION_PRIORITY, - CAP_FLAG_DYNAMIC_ALLOWED, - {0}, {0}, - msm_vidc_adjust_session_priority, msm_vidc_set_session_priority}, - - {ENC_IP_CR, ENC, CODECS_ALL, - 0, S32_MAX, 1, 0, - V4L2_CID_MPEG_VIDC_ENC_INPUT_COMPRESSION_RATIO, - 0, CAP_FLAG_DYNAMIC_ALLOWED}, - - {DPB_LIST, DEC, CODECS_ALL, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, - 0, - HFI_PROP_DPB_LIST, - CAP_FLAG_OUTPUT_PORT, - {0}, {0}, - NULL, NULL}, - - {ALL_INTRA, ENC, H264|HEVC, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, - 0, - 0, - CAP_FLAG_OUTPUT_PORT, - {GOP_SIZE, B_FRAME}, - {LTR_COUNT, IR_RANDOM, SLICE_MODE}, - msm_vidc_adjust_all_intra, NULL}, - - {META_LTR_MARK_USE, ENC, H264|HEVC, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, - V4L2_CID_MPEG_VIDC_METADATA_LTR_MARK_USE_DETAILS, - HFI_PROP_LTR_MARK_USE_DETAILS}, - - {META_SEQ_HDR_NAL, ENC, CODECS_ALL, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, - V4L2_CID_MPEG_VIDC_METADATA_SEQ_HEADER_NAL, - HFI_PROP_METADATA_SEQ_HEADER_NAL}, - - {META_DPB_MISR, DEC, CODECS_ALL, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, - V4L2_CID_MPEG_VIDC_METADATA_DPB_LUMA_CHROMA_MISR, - HFI_PROP_DPB_LUMA_CHROMA_MISR}, - - {META_OPB_MISR, DEC, CODECS_ALL, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, - V4L2_CID_MPEG_VIDC_METADATA_OPB_LUMA_CHROMA_MISR, - HFI_PROP_OPB_LUMA_CHROMA_MISR}, - - {META_INTERLACE, DEC, H264, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, - V4L2_CID_MPEG_VIDC_METADATA_INTERLACE, - HFI_PROP_INTERLACE_INFO}, - - {META_TIMESTAMP, DEC | ENC, CODECS_ALL, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, - V4L2_CID_MPEG_VIDC_METADATA_TIMESTAMP, - HFI_PROP_TIMESTAMP}, - - {META_CONCEALED_MB_CNT, DEC, CODECS_ALL, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, - V4L2_CID_MPEG_VIDC_METADATA_CONCEALED_MB_COUNT, - HFI_PROP_CONEALED_MB_COUNT}, - - {META_HIST_INFO, DEC, CODECS_ALL, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, - V4L2_CID_MPEG_VIDC_METADATA_HISTOGRAM_INFO, - HFI_PROP_HISTOGRAM_INFO}, - - {META_SEI_MASTERING_DISP, DEC|ENC, HEVC|HEIC, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, - V4L2_CID_MPEG_VIDC_METADATA_SEI_MASTERING_DISPLAY_COLOUR, - HFI_PROP_SEI_MASTERING_DISPLAY_COLOUR}, - - {META_SEI_CLL, DEC|ENC, HEVC|HEIC, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, - V4L2_CID_MPEG_VIDC_METADATA_SEI_CONTENT_LIGHT_LEVEL, - HFI_PROP_SEI_CONTENT_LIGHT_LEVEL}, - - {META_HDR10PLUS, DEC | ENC, HEVC|HEIC, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, - V4L2_CID_MPEG_VIDC_METADATA_HDR10PLUS, - HFI_PROP_SEI_HDR10PLUS_USERDATA}, - - {META_EVA_STATS, ENC, CODECS_ALL, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, - V4L2_CID_MPEG_VIDC_METADATA_EVA_STATS, - HFI_PROP_EVA_STAT_INFO, - 0, - {0}, - {ENH_LAYER_COUNT}}, - - {META_BUF_TAG, DEC | ENC, CODECS_ALL, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, - V4L2_CID_MPEG_VIDC_METADATA_BUFFER_TAG, - HFI_PROP_BUFFER_TAG}, - - {META_DPB_TAG_LIST, DEC, CODECS_ALL, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, - V4L2_CID_MPEG_VIDC_METADATA_DPB_TAG_LIST, - HFI_PROP_DPB_TAG_LIST}, - - {META_OUTPUT_BUF_TAG, DEC, CODECS_ALL, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, - 0, - HFI_PROP_BUFFER_TAG}, - - {META_SUBFRAME_OUTPUT, DEC, CODECS_ALL, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, - V4L2_CID_MPEG_VIDC_METADATA_SUBFRAME_OUTPUT, - HFI_PROP_SUBFRAME_OUTPUT}, - - {META_ENC_QP_METADATA, ENC, CODECS_ALL, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, - V4L2_CID_MPEG_VIDC_METADATA_ENC_QP_METADATA, - HFI_PROP_ENC_QP_METADATA}, - - {META_ROI_INFO, ENC, CODECS_ALL, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, - V4L2_CID_MPEG_VIDC_METADATA_ROI_INFO, - HFI_PROP_ROI_INFO, - CAP_FLAG_INPUT_PORT, - {BITRATE_MODE, PIX_FMTS}, - {0}, - msm_vidc_adjust_roi_info, NULL}, - - {META_ROI_INFO, ENC, H264|HEVC, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, - V4L2_CID_MPEG_VIDC_METADATA_ROI_INFO, - HFI_PROP_ROI_INFO, - CAP_FLAG_INPUT_PORT, - {BITRATE_MODE, PIX_FMTS}, - {MIN_QUALITY}, - msm_vidc_adjust_roi_info, NULL}, - - {META_DEC_QP_METADATA, DEC, CODECS_ALL, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, - V4L2_CID_MPEG_VIDC_METADATA_DEC_QP_METADATA, - HFI_PROP_DEC_QP_METADATA}, - - /* configure image properties */ - {FRAME_WIDTH, ENC, HEIC, 128, 16384, 1, 16384}, - {FRAME_HEIGHT, ENC, HEIC, 128, 16384, 1, 16384}, - {MIN_BUFFERS_INPUT, ENC|DEC, HEIC, 0, 64, 1, 1, - V4L2_CID_MIN_BUFFERS_FOR_OUTPUT}, - {MBPF, DEC, HEIC, 36, 262144, 1, 262144 }, /* ((8192x8192)/256) */ - {MBPF, ENC, HEIC, 64, 1048576, 1, 1048576}, /* ((16384x16384)/256) */ - {MBPS, DEC, HEIC, 36, 262144, 1, 262144 }, /* ((8192x8192)/256)@1fps */ - {MBPS, ENC, HEIC, 64, 1048576, 1, 1048576}, /* ((16384x16384)/256)@1fps */ - {BITRATE_MODE, ENC, HEIC, - V4L2_MPEG_VIDEO_BITRATE_MODE_CQ, - V4L2_MPEG_VIDEO_BITRATE_MODE_CQ, - BIT(V4L2_MPEG_VIDEO_BITRATE_MODE_CQ), - V4L2_MPEG_VIDEO_BITRATE_MODE_CQ, - V4L2_CID_MPEG_VIDEO_BITRATE_MODE, - HFI_PROP_RATE_CONTROL, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU, - {0}, - {TIME_DELTA_BASED_RC, CONSTANT_QUALITY}, - msm_vidc_adjust_bitrate_mode, msm_vidc_set_u32_enum}, - {TIME_DELTA_BASED_RC, ENC, HEIC, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, - V4L2_CID_MPEG_VIDC_TIME_DELTA_BASED_RC, - HFI_PROP_TIME_DELTA_BASED_RATE_CONTROL, - CAP_FLAG_OUTPUT_PORT, - {BITRATE_MODE}, {0}, - msm_vidc_adjust_delta_based_rc, msm_vidc_set_u32}, - {CONSTANT_QUALITY, ENC, HEIC, - 1, MAX_CONSTANT_QUALITY, 1, 100, - V4L2_CID_MPEG_VIDEO_CONSTANT_QUALITY, - HFI_PROP_CONSTANT_QUALITY, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT | - CAP_FLAG_DYNAMIC_ALLOWED, - {BITRATE_MODE}, {0}, - NULL, msm_vidc_set_constant_quality}, - {GRID, ENC, HEIC, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_ENABLE, - 0, - HFI_PROP_HEIC_GRID_ENABLE, - CAP_FLAG_OUTPUT_PORT, - {0}, {0}, - NULL, msm_vidc_set_u32}, - {GOP_SIZE, ENC, HEIC, - 0, INT_MAX, 1, 0 /* all intra */, - V4L2_CID_MPEG_VIDEO_GOP_SIZE, - HFI_PROP_MAX_GOP_FRAMES, - CAP_FLAG_OUTPUT_PORT | - CAP_FLAG_INPUT_PORT | CAP_FLAG_DYNAMIC_ALLOWED, - {0}, {0}, - NULL, msm_vidc_set_u32}, - {B_FRAME, ENC, HEIC, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, - V4L2_CID_MPEG_VIDEO_B_FRAMES, - HFI_PROP_MAX_B_FRAMES, - CAP_FLAG_OUTPUT_PORT, - {0}, {0}, - NULL, msm_vidc_set_u32}, - {PIX_FMTS, ENC, HEIC, - MSM_VIDC_FMT_NV12, - MSM_VIDC_FMT_P010, - MSM_VIDC_FMT_NV12 | MSM_VIDC_FMT_P010, - MSM_VIDC_FMT_NV12, - 0, 0, - 0, - {0}, - {PROFILE}}, - {HEVC_TIER, ENC|DEC, HEIC, - V4L2_MPEG_VIDEO_HEVC_TIER_MAIN, - V4L2_MPEG_VIDEO_HEVC_TIER_MAIN, - BIT(V4L2_MPEG_VIDEO_HEVC_TIER_MAIN), - V4L2_MPEG_VIDEO_HEVC_TIER_MAIN, - V4L2_CID_MPEG_VIDEO_HEVC_TIER, - HFI_PROP_TIER, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU, - {0}, - {0}, - NULL, msm_vidc_set_u32_enum}, - {FRAME_RATE, ENC, HEIC, - (MINIMUM_FPS << 16), (MAXIMUM_FPS << 16), - 1, (MINIMUM_FPS << 16), - 0, - HFI_PROP_FRAME_RATE, - CAP_FLAG_OUTPUT_PORT, - {0}, {0}, - NULL, msm_vidc_set_q16}, - {META_SUBFRAME_OUTPUT, ENC, HEIC, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, - V4L2_CID_MPEG_VIDC_METADATA_SUBFRAME_OUTPUT, - HFI_PROP_SUBFRAME_OUTPUT}, - {COMPLEXITY, ENC, H264 | HEVC, - 0, 100, - 1, 100, - V4L2_CID_MPEG_VIDC_VENC_COMPLEXITY}, - {META_MAX_NUM_REORDER_FRAMES, DEC, HEVC | H264, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, - V4L2_CID_MPEG_VIDC_METADATA_MAX_NUM_REORDER_FRAMES, - HFI_PROP_MAX_NUM_REORDER_FRAMES}, -}; - -static struct msm_platform_inst_capability instance_data_diwali_v1[] = { - /* {cap, domain, codec, - * min, max, step_or_mask, value, - * v4l2_id, - * hfi_id, - * flags, - * parents, - * children, - * adjust, set} - */ - - {FRAME_WIDTH, DEC, CODECS_ALL, 96, 4096, 1, 1920}, - {FRAME_WIDTH, ENC, CODECS_ALL, 128, 4096, 1, 1920}, - {LOSSLESS_FRAME_WIDTH, ENC, H264|HEVC, 128, 4096, 1, 1920}, - {SECURE_FRAME_WIDTH, DEC, H264|HEVC|VP9, 96, 4096, 1, 1920}, - {SECURE_FRAME_WIDTH, ENC, H264|HEVC, 128, 4096, 1, 1920}, - {FRAME_HEIGHT, DEC, CODECS_ALL, 96, 4096, 1, 1080}, - {FRAME_HEIGHT, ENC, CODECS_ALL, 128, 4096, 1, 1080}, - {LOSSLESS_FRAME_HEIGHT, ENC, H264|HEVC, 128, 4096, 1, 1080}, - {SECURE_FRAME_HEIGHT, DEC, H264|HEVC|VP9, 96, 4096, 1, 1080}, - {SECURE_FRAME_HEIGHT, ENC, H264|HEVC, 128, 4096, 1, 1080}, - {PIX_FMTS, ENC, H264, - MSM_VIDC_FMT_NV12, - MSM_VIDC_FMT_NV12C, - MSM_VIDC_FMT_NV12 | MSM_VIDC_FMT_NV21 | MSM_VIDC_FMT_NV12C, - /* Since CTSEncodeDecode test cannot handle BT 709LR, - * disabled HW RGBA encoding. - * | MSM_VIDC_FMT_RGBA8888 | MSM_VIDC_FMT_RGBA8888C, - */ - MSM_VIDC_FMT_NV12C, - 0, 0, - 0, - {0}, - {META_ROI_INFO}}, - {PIX_FMTS, ENC, HEVC, - MSM_VIDC_FMT_NV12, - MSM_VIDC_FMT_TP10C, - MSM_VIDC_FMT_NV12 | MSM_VIDC_FMT_NV21 | MSM_VIDC_FMT_NV12C | - MSM_VIDC_FMT_P010 | MSM_VIDC_FMT_TP10C, - /* Since CTSEncodeDecode test cannot handle BT 709LR, - * disabled HW RGBA encoding. - * | MSM_VIDC_FMT_RGBA8888 | MSM_VIDC_FMT_RGBA8888C, - */ - MSM_VIDC_FMT_NV12C, - 0, 0, - 0, - {0}, - {/* Do not change order of META_ROI_INFO, MIN_QUALITY, BLUR_TYPES - * Since parent -> children relationship for these cap_ids is - * as follows: - * META_ROI_INFO -> MIN_QUALITY -> BLUR_TYPES - */ - PROFILE, MIN_FRAME_QP, MAX_FRAME_QP, I_FRAME_QP, P_FRAME_QP, - B_FRAME_QP, META_ROI_INFO, MIN_QUALITY, BLUR_TYPES}}, - - {PIX_FMTS, DEC, HEVC|HEIC, - MSM_VIDC_FMT_NV12, - MSM_VIDC_FMT_TP10C, - MSM_VIDC_FMT_NV12 | MSM_VIDC_FMT_NV21 | MSM_VIDC_FMT_NV12C | - MSM_VIDC_FMT_P010 | MSM_VIDC_FMT_TP10C, - MSM_VIDC_FMT_NV12C, - 0, 0, - 0, - {0}, - {PROFILE}}, - - {PIX_FMTS, DEC, H264, - MSM_VIDC_FMT_NV12, - MSM_VIDC_FMT_NV12C, - MSM_VIDC_FMT_NV12 | MSM_VIDC_FMT_NV21 | MSM_VIDC_FMT_NV12C, - MSM_VIDC_FMT_NV12C}, - - {PIX_FMTS, DEC, VP9, - MSM_VIDC_FMT_NV12, - MSM_VIDC_FMT_TP10C, - MSM_VIDC_FMT_NV12 | MSM_VIDC_FMT_NV21 | MSM_VIDC_FMT_NV12C | - MSM_VIDC_FMT_P010 | MSM_VIDC_FMT_TP10C, - MSM_VIDC_FMT_NV12C}, - - {MIN_BUFFERS_INPUT, ENC|DEC, CODECS_ALL, 0, 64, 1, 4, - V4L2_CID_MIN_BUFFERS_FOR_OUTPUT}, - {MIN_BUFFERS_OUTPUT, ENC|DEC, CODECS_ALL, - 0, 64, 1, 4, - V4L2_CID_MIN_BUFFERS_FOR_CAPTURE, - HFI_PROP_BUFFER_FW_MIN_OUTPUT_COUNT, - CAP_FLAG_OUTPUT_PORT}, - - /* (4096 * 2304) / 256 */ - {MBPF, ENC, CODECS_ALL, 64, 36864, 1, 36864}, - /* (4096 * 2304) / 256 */ - {MBPF, DEC, CODECS_ALL, 36, 36864, 1, 36864}, - /* (4096 * 2304) / 256 */ - {LOSSLESS_MBPF, ENC, H264|HEVC, 64, 36864, 1, 36864}, - /* Batch Mode Decode */ - /* (1920 * 1088) / 256 */ - {BATCH_MBPF, DEC, H264|HEVC|VP9, 64, 8160, 1, 8160}, - {BATCH_FPS, DEC, H264|HEVC|VP9, 1, 120, 1, 60}, - /* (4096 * 2304) / 256 */ - {SECURE_MBPF, ENC|DEC, H264|HEVC|VP9, 64, 36864, 1, 36864}, - /* ((4096 * 2304) / 256) * 60 fps */ - {MBPS, ENC, CODECS_ALL, 64, 2211840, 1, 2211840}, - /* ((4096 * 2304) / 256) * 60 fps */ - {MBPS, DEC, CODECS_ALL, 36, 2211840, 1, 2211840}, - /* ((1920 * 1088) / 256) * 30 fps */ - {POWER_SAVE_MBPS, ENC, CODECS_ALL, 0, 244800, 1, 244800}, - - {FRAME_RATE, ENC, CODECS_ALL, - (MINIMUM_FPS << 16), (MAXIMUM_FPS << 16), - 1, (DEFAULT_FPS << 16), - 0, - HFI_PROP_FRAME_RATE, - CAP_FLAG_OUTPUT_PORT, - {0}, {0}, - NULL, msm_vidc_set_q16}, - - {FRAME_RATE, DEC, CODECS_ALL, - (MINIMUM_FPS << 16), (MAXIMUM_FPS << 16), - 1, (DEFAULT_FPS << 16)}, - - {FRAME_RATE, DEC, VP9, - (MINIMUM_FPS << 16), (MAXIMUM_VP9_FPS << 16), - 1, (DEFAULT_FPS << 16)}, - - {OPERATING_RATE, ENC|DEC, CODECS_ALL, - (MINIMUM_FPS << 16), (MAXIMUM_FPS << 16), - 1, (DEFAULT_FPS << 16)}, - - {OPERATING_RATE, DEC, VP9, - (MINIMUM_FPS << 16), (MAXIMUM_VP9_FPS << 16), - 1, (DEFAULT_FPS << 16)}, - - {SCALE_FACTOR, ENC, H264|HEVC, 1, 8, 1, 8}, - - {MB_CYCLES_VSP, ENC, CODECS_ALL, 25, 25, 1, 25}, - {MB_CYCLES_VSP, DEC, CODECS_ALL, 25, 25, 1, 25}, - {MB_CYCLES_VSP, DEC, VP9, 60, 60, 1, 60}, - {MB_CYCLES_VPP, ENC, CODECS_ALL, 675, 675, 1, 675}, - {MB_CYCLES_VPP, DEC, CODECS_ALL, 200, 200, 1, 200}, - {MB_CYCLES_LP, ENC, CODECS_ALL, 320, 320, 1, 320}, - {MB_CYCLES_LP, DEC, CODECS_ALL, 200, 200, 1, 200}, - {MB_CYCLES_FW, ENC|DEC, CODECS_ALL, 326389, 326389, 1, 326389}, - {MB_CYCLES_FW_VPP, ENC|DEC, CODECS_ALL, 44156, 44156, 1, 44156}, - - {SECURE_MODE, ENC|DEC, H264|HEVC|VP9, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, - V4L2_CID_MPEG_VIDC_SECURE, - HFI_PROP_SECURE, - CAP_FLAG_NONE, - {0}, - {0}, - NULL, msm_vidc_set_u32}, - - {HFLIP, ENC, CODECS_ALL, - V4L2_MPEG_MSM_VIDC_DISABLE, - V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, - V4L2_CID_HFLIP, - HFI_PROP_FLIP, - CAP_FLAG_OUTPUT_PORT | - CAP_FLAG_INPUT_PORT | CAP_FLAG_DYNAMIC_ALLOWED, - {0}, - {0}, - NULL, msm_vidc_set_flip}, - - {VFLIP, ENC, CODECS_ALL, - V4L2_MPEG_MSM_VIDC_DISABLE, - V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, - V4L2_CID_VFLIP, - HFI_PROP_FLIP, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT | - CAP_FLAG_DYNAMIC_ALLOWED, - {0}, - {0}, - NULL, msm_vidc_set_flip}, - - {ROTATION, ENC, CODECS_ALL, - 0, 270, 90, 0, - V4L2_CID_ROTATE, - HFI_PROP_ROTATION, - CAP_FLAG_OUTPUT_PORT, - {0}, - {0}, - NULL, msm_vidc_set_rotation}, - - {SUPER_FRAME, ENC, H264|HEVC, - 0, 32, 1, 0, - V4L2_CID_MPEG_VIDC_SUPERFRAME, 0, - CAP_FLAG_NONE, - {0}, - {INPUT_BUF_HOST_MAX_COUNT, OUTPUT_BUF_HOST_MAX_COUNT}, - NULL, NULL}, - - {SLICE_INTERFACE, DEC, CODECS_ALL, - 0, 0, 0, 0, - V4L2_CID_MPEG_VIDEO_DECODER_SLICE_INTERFACE, - 0}, - - {HEADER_MODE, ENC, CODECS_ALL, - V4L2_MPEG_VIDEO_HEADER_MODE_SEPARATE, - V4L2_MPEG_VIDEO_HEADER_MODE_JOINED_WITH_1ST_FRAME, - BIT(V4L2_MPEG_VIDEO_HEADER_MODE_SEPARATE) | - BIT(V4L2_MPEG_VIDEO_HEADER_MODE_JOINED_WITH_1ST_FRAME), - V4L2_MPEG_VIDEO_HEADER_MODE_SEPARATE, - V4L2_CID_MPEG_VIDEO_HEADER_MODE, - HFI_PROP_SEQ_HEADER_MODE, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU, - {0}, {0}, - NULL, msm_vidc_set_header_mode}, - - {PREPEND_SPSPPS_TO_IDR, ENC, CODECS_ALL, - V4L2_MPEG_MSM_VIDC_DISABLE, - V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, - V4L2_CID_MPEG_VIDEO_PREPEND_SPSPPS_TO_IDR}, - - {META_SEQ_HDR_NAL, ENC, CODECS_ALL, - V4L2_MPEG_MSM_VIDC_DISABLE, - V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, - V4L2_CID_MPEG_VIDC_METADATA_SEQ_HEADER_NAL}, - - {WITHOUT_STARTCODE, ENC, CODECS_ALL, - V4L2_MPEG_MSM_VIDC_DISABLE, - V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, - V4L2_CID_MPEG_VIDEO_HEVC_WITHOUT_STARTCODE, - HFI_PROP_NAL_LENGTH_FIELD, - CAP_FLAG_OUTPUT_PORT, - {0}, {0}, - NULL, msm_vidc_set_nal_length}, - - {NAL_LENGTH_FIELD, ENC, CODECS_ALL, - V4L2_MPEG_VIDEO_HEVC_SIZE_0, - V4L2_MPEG_VIDEO_HEVC_SIZE_4, - BIT(V4L2_MPEG_VIDEO_HEVC_SIZE_0) | - BIT(V4L2_MPEG_VIDEO_HEVC_SIZE_4), - V4L2_MPEG_VIDEO_HEVC_SIZE_0, - V4L2_CID_MPEG_VIDEO_HEVC_SIZE_OF_LENGTH_FIELD, - HFI_PROP_NAL_LENGTH_FIELD, - CAP_FLAG_MENU | CAP_FLAG_OUTPUT_PORT}, - - /* TODO: Firmware introduced enumeration type for this - * with and without seq header. - */ - {REQUEST_I_FRAME, ENC, H264|HEVC, - 0, 0, 0, 0, - V4L2_CID_MPEG_VIDEO_FORCE_KEY_FRAME, - HFI_PROP_REQUEST_SYNC_FRAME, - CAP_FLAG_INPUT_PORT | CAP_FLAG_DYNAMIC_ALLOWED, - {0}, {0}, - NULL, msm_vidc_set_req_sync_frame}, - - /* Enc: Keeping CABAC and CAVLC as same bitrate. - * Dec: there's no use of Bitrate cap - */ - {BIT_RATE, ENC, H264|HEVC, - 1, MAX_BITRATE_V1, 1, DEFAULT_BITRATE, - V4L2_CID_MPEG_VIDEO_BITRATE, - HFI_PROP_TOTAL_BITRATE, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT | - CAP_FLAG_DYNAMIC_ALLOWED, - {ENH_LAYER_COUNT, BITRATE_MODE}, {PEAK_BITRATE}, - msm_vidc_adjust_bitrate, msm_vidc_set_bitrate}, - - {BITRATE_MODE, ENC, H264, - V4L2_MPEG_VIDEO_BITRATE_MODE_VBR, - V4L2_MPEG_VIDEO_BITRATE_MODE_CBR, - BIT(V4L2_MPEG_VIDEO_BITRATE_MODE_VBR) | - BIT(V4L2_MPEG_VIDEO_BITRATE_MODE_CBR), - V4L2_MPEG_VIDEO_BITRATE_MODE_VBR, - V4L2_CID_MPEG_VIDEO_BITRATE_MODE, - HFI_PROP_RATE_CONTROL, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU, - {0}, - {LTR_COUNT, IR_RANDOM, TIME_DELTA_BASED_RC, I_FRAME_QP, - P_FRAME_QP, B_FRAME_QP, ENH_LAYER_COUNT, BIT_RATE, - CONTENT_ADAPTIVE_CODING, BITRATE_BOOST, MIN_QUALITY, - VBV_DELAY, PEAK_BITRATE,SLICE_MODE, META_ROI_INFO, - BLUR_TYPES, LOWLATENCY_MODE}, - msm_vidc_adjust_bitrate_mode, msm_vidc_set_u32_enum}, - - {BITRATE_MODE, ENC, HEVC, - V4L2_MPEG_VIDEO_BITRATE_MODE_VBR, - V4L2_MPEG_VIDEO_BITRATE_MODE_CQ, - BIT(V4L2_MPEG_VIDEO_BITRATE_MODE_VBR) | - BIT(V4L2_MPEG_VIDEO_BITRATE_MODE_CBR) | - BIT(V4L2_MPEG_VIDEO_BITRATE_MODE_CQ), - V4L2_MPEG_VIDEO_BITRATE_MODE_VBR, - V4L2_CID_MPEG_VIDEO_BITRATE_MODE, - HFI_PROP_RATE_CONTROL, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU, - {0}, - {LTR_COUNT, IR_RANDOM, TIME_DELTA_BASED_RC, I_FRAME_QP, - P_FRAME_QP, B_FRAME_QP, CONSTANT_QUALITY, ENH_LAYER_COUNT, - CONTENT_ADAPTIVE_CODING, BIT_RATE, - BITRATE_BOOST, MIN_QUALITY, VBV_DELAY, - PEAK_BITRATE, SLICE_MODE, META_ROI_INFO, BLUR_TYPES, - LOWLATENCY_MODE}, - msm_vidc_adjust_bitrate_mode, msm_vidc_set_u32_enum}, - - {LOSSLESS, ENC, HEVC, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, - V4L2_CID_MPEG_VIDEO_HEVC_LOSSLESS_CU}, - - {FRAME_SKIP_MODE, ENC, H264|HEVC|HEIC, - V4L2_MPEG_VIDEO_FRAME_SKIP_MODE_DISABLED, - V4L2_MPEG_VIDEO_FRAME_SKIP_MODE_BUF_LIMIT, - BIT(V4L2_MPEG_VIDEO_FRAME_SKIP_MODE_DISABLED) | - BIT(V4L2_MPEG_VIDEO_FRAME_SKIP_MODE_LEVEL_LIMIT) | - BIT(V4L2_MPEG_VIDEO_FRAME_SKIP_MODE_BUF_LIMIT), - V4L2_MPEG_VIDEO_FRAME_SKIP_MODE_DISABLED, - V4L2_CID_MPEG_VIDEO_FRAME_SKIP_MODE, - 0, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU}, - - {FRAME_RC_ENABLE, ENC, H264|HEVC|HEIC, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_ENABLE, - V4L2_CID_MPEG_VIDEO_FRAME_RC_ENABLE}, - - {CONSTANT_QUALITY, ENC, HEVC, - 1, MAX_CONSTANT_QUALITY, 1, 90, - V4L2_CID_MPEG_VIDEO_CONSTANT_QUALITY, - HFI_PROP_CONSTANT_QUALITY, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT | - CAP_FLAG_DYNAMIC_ALLOWED, - {BITRATE_MODE}, {0}, - NULL, msm_vidc_set_constant_quality}, - - {GOP_SIZE, ENC, CODECS_ALL, - 0, INT_MAX, 1, 2 * DEFAULT_FPS - 1, - V4L2_CID_MPEG_VIDEO_GOP_SIZE, - HFI_PROP_MAX_GOP_FRAMES, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT | - CAP_FLAG_DYNAMIC_ALLOWED, - {ENH_LAYER_COUNT}, - {ALL_INTRA}, - msm_vidc_adjust_gop_size, msm_vidc_set_gop_size}, - - {GOP_CLOSURE, ENC, H264|HEVC, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_ENABLE, - V4L2_CID_MPEG_VIDEO_GOP_CLOSURE, - 0}, - - {B_FRAME, ENC, H264|HEVC, - 0, 7, 1, 0, - V4L2_CID_MPEG_VIDEO_B_FRAMES, - HFI_PROP_MAX_B_FRAMES, - CAP_FLAG_OUTPUT_PORT, - {ENH_LAYER_COUNT}, - {ALL_INTRA}, - msm_vidc_adjust_b_frame, msm_vidc_set_u32}, - - {BLUR_TYPES, ENC, H264|HEVC, - VIDC_BLUR_NONE, VIDC_BLUR_ADAPTIVE, - BIT(VIDC_BLUR_NONE) | BIT(VIDC_BLUR_EXTERNAL) | BIT(VIDC_BLUR_ADAPTIVE), - VIDC_BLUR_ADAPTIVE, - V4L2_CID_MPEG_VIDC_VIDEO_BLUR_TYPES, - HFI_PROP_BLUR_TYPES, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU, - {PIX_FMTS, BITRATE_MODE, CONTENT_ADAPTIVE_CODING, MIN_QUALITY}, - {BLUR_RESOLUTION}, - msm_vidc_adjust_blur_type, msm_vidc_set_u32_enum}, - - {BLUR_RESOLUTION, ENC, CODECS_ALL, - 0, S32_MAX, 1, 0, - V4L2_CID_MPEG_VIDC_VIDEO_BLUR_RESOLUTION, - HFI_PROP_BLUR_RESOLUTION, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT | - CAP_FLAG_DYNAMIC_ALLOWED, - {BLUR_TYPES}, - {0}, - msm_vidc_adjust_blur_resolution, msm_vidc_set_blur_resolution}, - - {CSC, ENC, CODECS_ALL, - V4L2_MPEG_MSM_VIDC_DISABLE, - V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, - 0, - HFI_PROP_CSC}, - - {CSC_CUSTOM_MATRIX, ENC, CODECS_ALL, - V4L2_MPEG_MSM_VIDC_DISABLE, - V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, - V4L2_CID_MPEG_VIDC_VIDEO_VPE_CSC_CUSTOM_MATRIX, - HFI_PROP_CSC_MATRIX, - CAP_FLAG_OUTPUT_PORT, - {0}, {0}, - NULL, msm_vidc_set_csc_custom_matrix}, - - {LOWLATENCY_MODE, ENC, H264 | HEVC, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, - V4L2_CID_MPEG_VIDC_LOWLATENCY_REQUEST, - 0, - CAP_FLAG_NONE, - {BITRATE_MODE}, - {STAGE}, - msm_vidc_adjust_lowlatency_mode, NULL}, - - {LOWLATENCY_MODE, DEC, H264|HEVC|VP9, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, - V4L2_CID_MPEG_VIDC_LOWLATENCY_REQUEST, - HFI_PROP_SEQ_CHANGE_AT_SYNC_FRAME, - CAP_FLAG_INPUT_PORT | CAP_FLAG_DYNAMIC_ALLOWED}, - - {LTR_COUNT, ENC, H264|HEVC, - 0, 2, 1, 0, - V4L2_CID_MPEG_VIDEO_LTR_COUNT, - HFI_PROP_LTR_COUNT, - CAP_FLAG_OUTPUT_PORT, - {BITRATE_MODE, ALL_INTRA}, {0}, - msm_vidc_adjust_ltr_count, msm_vidc_set_u32}, - - {USE_LTR, ENC, H264|HEVC, - INVALID_DEFAULT_MARK_OR_USE_LTR, - ((1 << MAX_LTR_FRAME_COUNT) - 1), - 1, INVALID_DEFAULT_MARK_OR_USE_LTR, - V4L2_CID_MPEG_VIDEO_USE_LTR_FRAMES, - HFI_PROP_LTR_USE, - CAP_FLAG_INPUT_PORT | CAP_FLAG_DYNAMIC_ALLOWED, - {0}, {0}, - msm_vidc_adjust_use_ltr, msm_vidc_set_use_and_mark_ltr}, - - {MARK_LTR, ENC, H264|HEVC, - INVALID_DEFAULT_MARK_OR_USE_LTR, - (MAX_LTR_FRAME_COUNT - 1), - 1, INVALID_DEFAULT_MARK_OR_USE_LTR, - V4L2_CID_MPEG_VIDEO_FRAME_LTR_INDEX, - HFI_PROP_LTR_MARK, - CAP_FLAG_INPUT_PORT | CAP_FLAG_DYNAMIC_ALLOWED, - {0}, {0}, - msm_vidc_adjust_mark_ltr, msm_vidc_set_use_and_mark_ltr}, - - {BASELAYER_PRIORITY, ENC, H264, - 0, MAX_BASE_LAYER_PRIORITY_ID, 1, 0, - V4L2_CID_MPEG_VIDEO_BASELAYER_PRIORITY_ID, - HFI_PROP_BASELAYER_PRIORITYID, - CAP_FLAG_OUTPUT_PORT}, - - {IR_RANDOM, ENC, H264|HEVC, - 0, INT_MAX, 1, 0, - V4L2_CID_MPEG_VIDC_INTRA_REFRESH_PERIOD, - HFI_PROP_IR_RANDOM_PERIOD, - CAP_FLAG_OUTPUT_PORT, - {BITRATE_MODE, ALL_INTRA}, {0}, - msm_vidc_adjust_ir_random, msm_vidc_set_u32}, - - {AU_DELIMITER, ENC, H264|HEVC, - V4L2_MPEG_MSM_VIDC_DISABLE, - V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, - V4L2_CID_MPEG_VIDEO_AU_DELIMITER, - HFI_PROP_AUD, - CAP_FLAG_OUTPUT_PORT, - {0}, {0}, - NULL, msm_vidc_set_u32}, - - {TIME_DELTA_BASED_RC, ENC, CODECS_ALL, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_ENABLE, - V4L2_CID_MPEG_VIDC_TIME_DELTA_BASED_RC, - HFI_PROP_TIME_DELTA_BASED_RATE_CONTROL, - CAP_FLAG_OUTPUT_PORT, - {BITRATE_MODE}, {0}, - msm_vidc_adjust_delta_based_rc, msm_vidc_set_u32}, - - {CONTENT_ADAPTIVE_CODING, ENC, H264|HEVC, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_ENABLE, - V4L2_CID_MPEG_VIDC_CONTENT_ADAPTIVE_CODING, - HFI_PROP_CONTENT_ADAPTIVE_CODING, - CAP_FLAG_OUTPUT_PORT, - {BITRATE_MODE, MIN_QUALITY}, - {BLUR_TYPES}, - msm_vidc_adjust_cac, - msm_vidc_set_vbr_related_properties}, - - {BITRATE_BOOST, ENC, H264|HEVC, - 0, MAX_BITRATE_BOOST, 25, MAX_BITRATE_BOOST, - V4L2_CID_MPEG_VIDC_QUALITY_BITRATE_BOOST, - HFI_PROP_BITRATE_BOOST, - CAP_FLAG_OUTPUT_PORT, - {BITRATE_MODE, MIN_QUALITY}, - {0}, - msm_vidc_adjust_bitrate_boost, - msm_vidc_set_vbr_related_properties}, - - {MIN_QUALITY, ENC, H264, - 0, MAX_SUPPORTED_MIN_QUALITY, 70, MAX_SUPPORTED_MIN_QUALITY, - 0, - HFI_PROP_MAINTAIN_MIN_QUALITY, - CAP_FLAG_OUTPUT_PORT, - {BITRATE_MODE, ENH_LAYER_COUNT, META_ROI_INFO}, - {CONTENT_ADAPTIVE_CODING, BITRATE_BOOST, BLUR_TYPES}, - msm_vidc_adjust_min_quality, - msm_vidc_set_vbr_related_properties}, - - {MIN_QUALITY, ENC, HEVC, - 0, MAX_SUPPORTED_MIN_QUALITY, 70, MAX_SUPPORTED_MIN_QUALITY, - 0, - HFI_PROP_MAINTAIN_MIN_QUALITY, - CAP_FLAG_OUTPUT_PORT, - {BITRATE_MODE, PIX_FMTS, ENH_LAYER_COUNT, - META_ROI_INFO}, - {CONTENT_ADAPTIVE_CODING, BITRATE_BOOST, BLUR_TYPES}, - msm_vidc_adjust_min_quality, - msm_vidc_set_vbr_related_properties}, - - {VBV_DELAY, ENC, H264|HEVC, - 200, 300, 100, 300, - V4L2_CID_MPEG_VIDEO_VBV_DELAY, - HFI_PROP_VBV_DELAY, - CAP_FLAG_OUTPUT_PORT, - {BITRATE_MODE}, - {0}, - NULL, msm_vidc_set_cbr_related_properties}, - - {PEAK_BITRATE, ENC, H264|HEVC, - /* default peak bitrate is 10% larger than avrg bitrate */ - 1, MAX_BITRATE_V1, 1, DEFAULT_BITRATE, - V4L2_CID_MPEG_VIDEO_BITRATE_PEAK, - HFI_PROP_TOTAL_PEAK_BITRATE, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT | - CAP_FLAG_DYNAMIC_ALLOWED, - {BITRATE_MODE, BIT_RATE}, - {0}, - msm_vidc_adjust_peak_bitrate, - msm_vidc_set_cbr_related_properties}, - - {MIN_FRAME_QP, ENC, H264, - MIN_QP_8BIT, MAX_QP, 1, MIN_QP_8BIT, - V4L2_CID_MPEG_VIDEO_H264_MIN_QP, - HFI_PROP_MIN_QP_PACKED, - CAP_FLAG_OUTPUT_PORT, - {0}, {0}, - NULL, msm_vidc_set_min_qp}, - - {MIN_FRAME_QP, ENC, HEVC|HEIC, - MIN_QP_10BIT, MAX_QP, 1, MIN_QP_10BIT, - V4L2_CID_MPEG_VIDEO_HEVC_MIN_QP, - HFI_PROP_MIN_QP_PACKED, - CAP_FLAG_OUTPUT_PORT, - {PIX_FMTS}, {0}, - msm_vidc_adjust_hevc_min_qp, msm_vidc_set_min_qp}, - - {I_FRAME_MIN_QP, ENC, H264, - MIN_QP_8BIT, MAX_QP, 1, MIN_QP_8BIT, - V4L2_CID_MPEG_VIDEO_H264_I_FRAME_MIN_QP}, - - {I_FRAME_MIN_QP, ENC, HEVC|HEIC, - MIN_QP_10BIT, MAX_QP, 1, MIN_QP_10BIT, - V4L2_CID_MPEG_VIDEO_HEVC_I_FRAME_MIN_QP}, - - {P_FRAME_MIN_QP, ENC, H264, - MIN_QP_8BIT, MAX_QP, 1, MIN_QP_8BIT, - V4L2_CID_MPEG_VIDEO_H264_P_FRAME_MIN_QP}, - - {P_FRAME_MIN_QP, ENC, HEVC|HEIC, - MIN_QP_10BIT, MAX_QP, 1, MIN_QP_10BIT, - V4L2_CID_MPEG_VIDEO_HEVC_P_FRAME_MIN_QP}, - - {B_FRAME_MIN_QP, ENC, H264, - MIN_QP_8BIT, MAX_QP, 1, MIN_QP_8BIT, - V4L2_CID_MPEG_VIDEO_H264_B_FRAME_MIN_QP}, - - {B_FRAME_MIN_QP, ENC, HEVC|HEIC, - MIN_QP_10BIT, MAX_QP, 1, MIN_QP_10BIT, - V4L2_CID_MPEG_VIDEO_HEVC_B_FRAME_MIN_QP}, - - {MAX_FRAME_QP, ENC, H264, - MIN_QP_8BIT, MAX_QP, 1, MAX_QP, - V4L2_CID_MPEG_VIDEO_H264_MAX_QP, - HFI_PROP_MAX_QP_PACKED, - CAP_FLAG_OUTPUT_PORT, - {0}, {0}, - NULL, msm_vidc_set_max_qp}, - - {MAX_FRAME_QP, ENC, HEVC|HEIC, - MIN_QP_10BIT, MAX_QP, 1, MAX_QP, - V4L2_CID_MPEG_VIDEO_HEVC_MAX_QP, - HFI_PROP_MAX_QP_PACKED, - CAP_FLAG_OUTPUT_PORT, - {PIX_FMTS}, {0}, - msm_vidc_adjust_hevc_max_qp, msm_vidc_set_max_qp}, - - {I_FRAME_MAX_QP, ENC, H264, - MIN_QP_8BIT, MAX_QP, 1, MAX_QP, - V4L2_CID_MPEG_VIDEO_H264_I_FRAME_MAX_QP}, - - {I_FRAME_MAX_QP, ENC, HEVC|HEIC, - MIN_QP_10BIT, MAX_QP, 1, MAX_QP, - V4L2_CID_MPEG_VIDEO_HEVC_I_FRAME_MAX_QP}, - - {P_FRAME_MAX_QP, ENC, H264, - MIN_QP_8BIT, MAX_QP, 1, MAX_QP, - V4L2_CID_MPEG_VIDEO_H264_P_FRAME_MAX_QP}, - - {P_FRAME_MAX_QP, ENC, HEVC|HEIC, - MIN_QP_10BIT, MAX_QP, 1, MAX_QP, - V4L2_CID_MPEG_VIDEO_HEVC_P_FRAME_MAX_QP}, - - {B_FRAME_MAX_QP, ENC, H264, - MIN_QP_8BIT, MAX_QP, 1, MAX_QP, - V4L2_CID_MPEG_VIDEO_H264_B_FRAME_MAX_QP}, - - {B_FRAME_MAX_QP, ENC, HEVC|HEIC, - MIN_QP_10BIT, MAX_QP, 1, MAX_QP, - V4L2_CID_MPEG_VIDEO_HEVC_B_FRAME_MAX_QP}, - - {I_FRAME_QP, ENC, HEVC, - MIN_QP_10BIT, MAX_QP, 1, DEFAULT_QP, - V4L2_CID_MPEG_VIDEO_HEVC_I_FRAME_QP, - HFI_PROP_QP_PACKED, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT | - CAP_FLAG_DYNAMIC_ALLOWED, - {PIX_FMTS, BITRATE_MODE}, {0}, - msm_vidc_adjust_hevc_i_frame_qp, msm_vidc_set_frame_qp}, - - {I_FRAME_QP, ENC, H264, - MIN_QP_8BIT, MAX_QP, 1, DEFAULT_QP, - V4L2_CID_MPEG_VIDEO_H264_I_FRAME_QP, - HFI_PROP_QP_PACKED, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT | - CAP_FLAG_DYNAMIC_ALLOWED, - {BITRATE_MODE}, {0}, - NULL, msm_vidc_set_frame_qp}, - - {P_FRAME_QP, ENC, HEVC, - MIN_QP_10BIT, MAX_QP, 1, DEFAULT_QP, - V4L2_CID_MPEG_VIDEO_HEVC_P_FRAME_QP, - HFI_PROP_QP_PACKED, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT | - CAP_FLAG_DYNAMIC_ALLOWED, - {PIX_FMTS, BITRATE_MODE}, {0}, - msm_vidc_adjust_hevc_p_frame_qp, msm_vidc_set_frame_qp}, - - {P_FRAME_QP, ENC, H264, - MIN_QP_8BIT, MAX_QP, 1, DEFAULT_QP, - V4L2_CID_MPEG_VIDEO_H264_P_FRAME_QP, - HFI_PROP_QP_PACKED, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT | - CAP_FLAG_DYNAMIC_ALLOWED, - {BITRATE_MODE}, {0}, - NULL, msm_vidc_set_frame_qp}, - - {B_FRAME_QP, ENC, HEVC, - MIN_QP_10BIT, MAX_QP, 1, DEFAULT_QP, - V4L2_CID_MPEG_VIDEO_HEVC_B_FRAME_QP, - HFI_PROP_QP_PACKED, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT | - CAP_FLAG_DYNAMIC_ALLOWED, - {PIX_FMTS, BITRATE_MODE}, {0}, - msm_vidc_adjust_hevc_b_frame_qp, msm_vidc_set_frame_qp}, - - {B_FRAME_QP, ENC, H264, - MIN_QP_8BIT, MAX_QP, 1, DEFAULT_QP, - V4L2_CID_MPEG_VIDEO_H264_B_FRAME_QP, - HFI_PROP_QP_PACKED, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT | - CAP_FLAG_DYNAMIC_ALLOWED, - {BITRATE_MODE}, {0}, - NULL, msm_vidc_set_frame_qp}, - - {LAYER_TYPE, ENC, HEVC, - V4L2_MPEG_VIDEO_HEVC_HIERARCHICAL_CODING_B, - V4L2_MPEG_VIDEO_HEVC_HIERARCHICAL_CODING_P, - BIT(V4L2_MPEG_VIDEO_HEVC_HIERARCHICAL_CODING_B) | - BIT(V4L2_MPEG_VIDEO_HEVC_HIERARCHICAL_CODING_P), - V4L2_MPEG_VIDEO_HEVC_HIERARCHICAL_CODING_P, - V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_TYPE, - HFI_PROP_LAYER_ENCODING_TYPE, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU}, - - {LAYER_TYPE, ENC, H264, - V4L2_MPEG_VIDEO_H264_HIERARCHICAL_CODING_B, - V4L2_MPEG_VIDEO_H264_HIERARCHICAL_CODING_P, - BIT(V4L2_MPEG_VIDEO_H264_HIERARCHICAL_CODING_B) | - BIT(V4L2_MPEG_VIDEO_H264_HIERARCHICAL_CODING_P), - V4L2_MPEG_VIDEO_H264_HIERARCHICAL_CODING_P, - V4L2_CID_MPEG_VIDEO_H264_HIERARCHICAL_CODING_TYPE, - HFI_PROP_LAYER_ENCODING_TYPE, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU}, - - {LAYER_ENABLE, ENC, H264, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, - V4L2_CID_MPEG_VIDEO_H264_HIERARCHICAL_CODING, - HFI_PROP_LAYER_ENCODING_TYPE, - CAP_FLAG_OUTPUT_PORT}, - - {ENH_LAYER_COUNT, ENC, HEVC, - 0, 5, 1, 0, - V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_LAYER, - HFI_PROP_LAYER_COUNT, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT | - CAP_FLAG_DYNAMIC_ALLOWED, - {BITRATE_MODE, META_EVA_STATS}, - {GOP_SIZE, B_FRAME, BIT_RATE, MIN_QUALITY}, - msm_vidc_adjust_layer_count, msm_vidc_set_layer_count_and_type}, - - {ENH_LAYER_COUNT, ENC, H264, - 0, 5, 1, 0, - V4L2_CID_MPEG_VIDEO_H264_HIERARCHICAL_CODING_LAYER, - HFI_PROP_LAYER_COUNT, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT | - CAP_FLAG_DYNAMIC_ALLOWED, - {BITRATE_MODE, META_EVA_STATS}, - {GOP_SIZE, B_FRAME, BIT_RATE, MIN_QUALITY}, - msm_vidc_adjust_layer_count, msm_vidc_set_layer_count_and_type}, - - /* - * layer bitrate is treated as BIT_RATE cap sibling and - * is handled in bitrate adjust and set functions - */ - {L0_BR, ENC, HEVC, - 1, MAX_BITRATE_V1, 1, DEFAULT_BITRATE, - V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L0_BR, - HFI_PROP_BITRATE_LAYER1, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT | - CAP_FLAG_DYNAMIC_ALLOWED, - {0}, {0}, - msm_vidc_adjust_dynamic_layer_bitrate, - msm_vidc_set_dynamic_layer_bitrate}, - - {L1_BR, ENC, HEVC, - 1, MAX_BITRATE_V1, 1, DEFAULT_BITRATE, - V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L1_BR, - HFI_PROP_BITRATE_LAYER2, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT | - CAP_FLAG_DYNAMIC_ALLOWED, - {0}, {0}, - msm_vidc_adjust_dynamic_layer_bitrate, - msm_vidc_set_dynamic_layer_bitrate}, - - {L2_BR, ENC, HEVC, - 1, MAX_BITRATE_V1, 1, DEFAULT_BITRATE, - V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L2_BR, - HFI_PROP_BITRATE_LAYER3, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT | - CAP_FLAG_DYNAMIC_ALLOWED, - {0}, {0}, - msm_vidc_adjust_dynamic_layer_bitrate, - msm_vidc_set_dynamic_layer_bitrate}, - - {L3_BR, ENC, HEVC, - 1, MAX_BITRATE_V1, 1, DEFAULT_BITRATE, - V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L3_BR, - HFI_PROP_BITRATE_LAYER4, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT | - CAP_FLAG_DYNAMIC_ALLOWED, - {0}, {0}, - msm_vidc_adjust_dynamic_layer_bitrate, - msm_vidc_set_dynamic_layer_bitrate}, - - {L4_BR, ENC, HEVC, - 1, MAX_BITRATE_V1, 1, DEFAULT_BITRATE, - V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L4_BR, - HFI_PROP_BITRATE_LAYER5, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT | - CAP_FLAG_DYNAMIC_ALLOWED, - {0}, {0}, - msm_vidc_adjust_dynamic_layer_bitrate, - msm_vidc_set_dynamic_layer_bitrate}, - - {L5_BR, ENC, HEVC, - 1, MAX_BITRATE_V1, 1, DEFAULT_BITRATE, - V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L5_BR, - HFI_PROP_BITRATE_LAYER6, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT | - CAP_FLAG_DYNAMIC_ALLOWED, - {0}, {0}, - msm_vidc_adjust_dynamic_layer_bitrate, - msm_vidc_set_dynamic_layer_bitrate}, - - {L0_BR, ENC, H264, - 1, MAX_BITRATE_V1, 1, DEFAULT_BITRATE, - V4L2_CID_MPEG_VIDEO_H264_HIER_CODING_L0_BR, - HFI_PROP_BITRATE_LAYER1, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT | - CAP_FLAG_DYNAMIC_ALLOWED, - {0}, {0}, - msm_vidc_adjust_dynamic_layer_bitrate, - msm_vidc_set_dynamic_layer_bitrate}, - - {L1_BR, ENC, H264, - 1, MAX_BITRATE_V1, 1, DEFAULT_BITRATE, - V4L2_CID_MPEG_VIDEO_H264_HIER_CODING_L1_BR, - HFI_PROP_BITRATE_LAYER2, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT | - CAP_FLAG_DYNAMIC_ALLOWED, - {0}, {0}, - msm_vidc_adjust_dynamic_layer_bitrate, - msm_vidc_set_dynamic_layer_bitrate}, - - {L2_BR, ENC, H264, - 1, MAX_BITRATE_V1, 1, DEFAULT_BITRATE, - V4L2_CID_MPEG_VIDEO_H264_HIER_CODING_L2_BR, - HFI_PROP_BITRATE_LAYER3, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT | - CAP_FLAG_DYNAMIC_ALLOWED, - {0}, {0}, - msm_vidc_adjust_dynamic_layer_bitrate, - msm_vidc_set_dynamic_layer_bitrate}, - - {L3_BR, ENC, H264, - 1, MAX_BITRATE_V1, 1, DEFAULT_BITRATE, - V4L2_CID_MPEG_VIDEO_H264_HIER_CODING_L3_BR, - HFI_PROP_BITRATE_LAYER4, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT | - CAP_FLAG_DYNAMIC_ALLOWED, - {0}, {0}, - msm_vidc_adjust_dynamic_layer_bitrate, - msm_vidc_set_dynamic_layer_bitrate}, - - {L4_BR, ENC, H264, - 1, MAX_BITRATE_V1, 1, DEFAULT_BITRATE, - V4L2_CID_MPEG_VIDEO_H264_HIER_CODING_L4_BR, - HFI_PROP_BITRATE_LAYER5, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT | - CAP_FLAG_DYNAMIC_ALLOWED, - {0}, {0}, - msm_vidc_adjust_dynamic_layer_bitrate, - msm_vidc_set_dynamic_layer_bitrate}, - - {L5_BR, ENC, H264, - 1, MAX_BITRATE_V1, 1, DEFAULT_BITRATE, - V4L2_CID_MPEG_VIDEO_H264_HIER_CODING_L5_BR, - HFI_PROP_BITRATE_LAYER6, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT | - CAP_FLAG_DYNAMIC_ALLOWED, - {0}, {0}, - msm_vidc_adjust_dynamic_layer_bitrate, - msm_vidc_set_dynamic_layer_bitrate}, - - {ENTROPY_MODE, ENC, H264, - V4L2_MPEG_VIDEO_H264_ENTROPY_MODE_CAVLC, - V4L2_MPEG_VIDEO_H264_ENTROPY_MODE_CABAC, - BIT(V4L2_MPEG_VIDEO_H264_ENTROPY_MODE_CAVLC) | - BIT(V4L2_MPEG_VIDEO_H264_ENTROPY_MODE_CABAC), - V4L2_MPEG_VIDEO_H264_ENTROPY_MODE_CABAC, - V4L2_CID_MPEG_VIDEO_H264_ENTROPY_MODE, - HFI_PROP_CABAC_SESSION, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU, - {PROFILE}, - {0}, - msm_vidc_adjust_entropy_mode, msm_vidc_set_u32}, - - {ENTROPY_MODE, DEC, H264|HEVC|VP9, - V4L2_MPEG_VIDEO_H264_ENTROPY_MODE_CAVLC, - V4L2_MPEG_VIDEO_H264_ENTROPY_MODE_CABAC, - BIT(V4L2_MPEG_VIDEO_H264_ENTROPY_MODE_CAVLC) | - BIT(V4L2_MPEG_VIDEO_H264_ENTROPY_MODE_CABAC), - V4L2_MPEG_VIDEO_H264_ENTROPY_MODE_CABAC, - 0, - HFI_PROP_CABAC_SESSION}, - - /* H264 does not support 10 bit, PIX_FMTS would not be a Parent for this */ - {PROFILE, ENC, H264, - V4L2_MPEG_VIDEO_H264_PROFILE_BASELINE, - V4L2_MPEG_VIDEO_H264_PROFILE_CONSTRAINED_HIGH, - BIT(V4L2_MPEG_VIDEO_H264_PROFILE_BASELINE) | - BIT(V4L2_MPEG_VIDEO_H264_PROFILE_CONSTRAINED_HIGH) | - BIT(V4L2_MPEG_VIDEO_H264_PROFILE_CONSTRAINED_BASELINE) | - BIT(V4L2_MPEG_VIDEO_H264_PROFILE_MAIN) | - BIT(V4L2_MPEG_VIDEO_H264_PROFILE_HIGH), - V4L2_MPEG_VIDEO_H264_PROFILE_HIGH, - V4L2_CID_MPEG_VIDEO_H264_PROFILE, - HFI_PROP_PROFILE, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU, - {0}, - {ENTROPY_MODE, TRANSFORM_8X8}, - NULL, msm_vidc_set_u32_enum}, - - {PROFILE, DEC, H264, - V4L2_MPEG_VIDEO_H264_PROFILE_BASELINE, - V4L2_MPEG_VIDEO_H264_PROFILE_CONSTRAINED_HIGH, - BIT(V4L2_MPEG_VIDEO_H264_PROFILE_BASELINE) | - BIT(V4L2_MPEG_VIDEO_H264_PROFILE_CONSTRAINED_HIGH) | - BIT(V4L2_MPEG_VIDEO_H264_PROFILE_CONSTRAINED_BASELINE) | - BIT(V4L2_MPEG_VIDEO_H264_PROFILE_MAIN) | - BIT(V4L2_MPEG_VIDEO_H264_PROFILE_HIGH), - V4L2_MPEG_VIDEO_H264_PROFILE_HIGH, - V4L2_CID_MPEG_VIDEO_H264_PROFILE, - HFI_PROP_PROFILE, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU, - {0}, - {ENTROPY_MODE}, - NULL, msm_vidc_set_u32_enum}, - - {PROFILE, ENC|DEC, HEVC|HEIC, - V4L2_MPEG_VIDEO_HEVC_PROFILE_MAIN, - V4L2_MPEG_VIDEO_HEVC_PROFILE_MAIN_10_STILL_PICTURE, - BIT(V4L2_MPEG_VIDEO_HEVC_PROFILE_MAIN) | - BIT(V4L2_MPEG_VIDEO_HEVC_PROFILE_MAIN_STILL_PICTURE) | - BIT(V4L2_MPEG_VIDEO_HEVC_PROFILE_MAIN_10) | - BIT(V4L2_MPEG_VIDEO_HEVC_PROFILE_MAIN_10_STILL_PICTURE), - V4L2_MPEG_VIDEO_HEVC_PROFILE_MAIN, - V4L2_CID_MPEG_VIDEO_HEVC_PROFILE, - HFI_PROP_PROFILE, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU, - {PIX_FMTS}, - {0}, - msm_vidc_adjust_profile, msm_vidc_set_u32_enum}, - - {PROFILE, DEC, VP9, - V4L2_MPEG_VIDEO_VP9_PROFILE_0, - V4L2_MPEG_VIDEO_VP9_PROFILE_2, - BIT(V4L2_MPEG_VIDEO_VP9_PROFILE_0) | - BIT(V4L2_MPEG_VIDEO_VP9_PROFILE_2), - V4L2_MPEG_VIDEO_VP9_PROFILE_0, - V4L2_CID_MPEG_VIDEO_VP9_PROFILE, - HFI_PROP_PROFILE, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU, - {0}, - {0}, - NULL, msm_vidc_set_u32_enum}, - - {LEVEL, DEC, VP9, - V4L2_MPEG_VIDEO_VP9_LEVEL_1_0, - V4L2_MPEG_VIDEO_VP9_LEVEL_5_2, - BIT(V4L2_MPEG_VIDEO_VP9_LEVEL_1_0) | - BIT(V4L2_MPEG_VIDEO_VP9_LEVEL_1_1) | - BIT(V4L2_MPEG_VIDEO_VP9_LEVEL_2_0) | - BIT(V4L2_MPEG_VIDEO_VP9_LEVEL_2_1) | - BIT(V4L2_MPEG_VIDEO_VP9_LEVEL_3_0) | - BIT(V4L2_MPEG_VIDEO_VP9_LEVEL_3_1) | - BIT(V4L2_MPEG_VIDEO_VP9_LEVEL_4_0) | - BIT(V4L2_MPEG_VIDEO_VP9_LEVEL_4_1) | - BIT(V4L2_MPEG_VIDEO_VP9_LEVEL_5_0) | - BIT(V4L2_MPEG_VIDEO_VP9_LEVEL_5_1) | - BIT(V4L2_MPEG_VIDEO_VP9_LEVEL_5_2), - V4L2_MPEG_VIDEO_VP9_LEVEL_5_2, - V4L2_CID_MPEG_VIDEO_VP9_LEVEL, - HFI_PROP_LEVEL, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU, - {0}, - {0}, - NULL, msm_vidc_set_u32_enum}, - - {LEVEL, DEC, H264, - V4L2_MPEG_VIDEO_H264_LEVEL_1_0, - V4L2_MPEG_VIDEO_H264_LEVEL_6_0, - BIT(V4L2_MPEG_VIDEO_H264_LEVEL_1_0) | - BIT(V4L2_MPEG_VIDEO_H264_LEVEL_1B) | - BIT(V4L2_MPEG_VIDEO_H264_LEVEL_1_1) | - BIT(V4L2_MPEG_VIDEO_H264_LEVEL_1_2) | - BIT(V4L2_MPEG_VIDEO_H264_LEVEL_1_3) | - BIT(V4L2_MPEG_VIDEO_H264_LEVEL_2_0) | - BIT(V4L2_MPEG_VIDEO_H264_LEVEL_2_1) | - BIT(V4L2_MPEG_VIDEO_H264_LEVEL_2_2) | - BIT(V4L2_MPEG_VIDEO_H264_LEVEL_3_0) | - BIT(V4L2_MPEG_VIDEO_H264_LEVEL_3_1) | - BIT(V4L2_MPEG_VIDEO_H264_LEVEL_3_2) | - BIT(V4L2_MPEG_VIDEO_H264_LEVEL_4_0) | - BIT(V4L2_MPEG_VIDEO_H264_LEVEL_4_1) | - BIT(V4L2_MPEG_VIDEO_H264_LEVEL_4_2) | - BIT(V4L2_MPEG_VIDEO_H264_LEVEL_5_0) | - BIT(V4L2_MPEG_VIDEO_H264_LEVEL_5_1) | - BIT(V4L2_MPEG_VIDEO_H264_LEVEL_5_2) | - BIT(V4L2_MPEG_VIDEO_H264_LEVEL_6_0), - V4L2_MPEG_VIDEO_H264_LEVEL_6_0, - V4L2_CID_MPEG_VIDEO_H264_LEVEL, - HFI_PROP_LEVEL, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU, - {0}, - {0}, - NULL, msm_vidc_set_u32_enum}, - - {LEVEL, ENC, H264, - V4L2_MPEG_VIDEO_H264_LEVEL_1_0, - V4L2_MPEG_VIDEO_H264_LEVEL_6_0, - BIT(V4L2_MPEG_VIDEO_H264_LEVEL_1_0) | - BIT(V4L2_MPEG_VIDEO_H264_LEVEL_1B) | - BIT(V4L2_MPEG_VIDEO_H264_LEVEL_1_1) | - BIT(V4L2_MPEG_VIDEO_H264_LEVEL_1_2) | - BIT(V4L2_MPEG_VIDEO_H264_LEVEL_1_3) | - BIT(V4L2_MPEG_VIDEO_H264_LEVEL_2_0) | - BIT(V4L2_MPEG_VIDEO_H264_LEVEL_2_1) | - BIT(V4L2_MPEG_VIDEO_H264_LEVEL_2_2) | - BIT(V4L2_MPEG_VIDEO_H264_LEVEL_3_0) | - BIT(V4L2_MPEG_VIDEO_H264_LEVEL_3_1) | - BIT(V4L2_MPEG_VIDEO_H264_LEVEL_3_2) | - BIT(V4L2_MPEG_VIDEO_H264_LEVEL_4_0) | - BIT(V4L2_MPEG_VIDEO_H264_LEVEL_4_1) | - BIT(V4L2_MPEG_VIDEO_H264_LEVEL_4_2) | - BIT(V4L2_MPEG_VIDEO_H264_LEVEL_5_0) | - BIT(V4L2_MPEG_VIDEO_H264_LEVEL_5_1) | - BIT(V4L2_MPEG_VIDEO_H264_LEVEL_5_2) | - BIT(V4L2_MPEG_VIDEO_H264_LEVEL_6_0), - V4L2_MPEG_VIDEO_H264_LEVEL_6_0, - V4L2_CID_MPEG_VIDEO_H264_LEVEL, - HFI_PROP_LEVEL, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU, - {0}, - {0}, - NULL, msm_vidc_set_level}, - - {LEVEL, DEC, HEVC|HEIC, - V4L2_MPEG_VIDEO_HEVC_LEVEL_1, - V4L2_MPEG_VIDEO_HEVC_LEVEL_5_2, - BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_1) | - BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_2) | - BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_2_1) | - BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_3) | - BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_3_1) | - BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_4) | - BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_4_1) | - BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_5) | - BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_5_1) | - BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_5_2), - V4L2_MPEG_VIDEO_HEVC_LEVEL_5_2, - V4L2_CID_MPEG_VIDEO_HEVC_LEVEL, - HFI_PROP_LEVEL, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU, - {0}, - {0}, - NULL, msm_vidc_set_u32_enum}, - - {LEVEL, ENC, HEVC|HEIC, - V4L2_MPEG_VIDEO_HEVC_LEVEL_1, - V4L2_MPEG_VIDEO_HEVC_LEVEL_5_2, - BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_1) | - BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_2) | - BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_2_1) | - BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_3) | - BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_3_1) | - BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_4) | - BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_4_1) | - BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_5) | - BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_5_1) | - BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_5_2), - V4L2_MPEG_VIDEO_HEVC_LEVEL_5_2, - V4L2_CID_MPEG_VIDEO_HEVC_LEVEL, - HFI_PROP_LEVEL, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU, - {0}, - {0}, - NULL, msm_vidc_set_level}, - - /* TODO: Bring the VP9 Level upstream GKI change, and level cap here: - * go/videogki - */ - - {HEVC_TIER, ENC|DEC, HEVC, - V4L2_MPEG_VIDEO_HEVC_TIER_MAIN, - V4L2_MPEG_VIDEO_HEVC_TIER_HIGH, - BIT(V4L2_MPEG_VIDEO_HEVC_TIER_MAIN) | - BIT(V4L2_MPEG_VIDEO_HEVC_TIER_HIGH), - V4L2_MPEG_VIDEO_HEVC_TIER_HIGH, - V4L2_CID_MPEG_VIDEO_HEVC_TIER, - HFI_PROP_TIER, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU, - {0}, - {0}, - NULL, msm_vidc_set_u32_enum}, - - {LF_MODE, ENC, H264, - V4L2_MPEG_VIDEO_H264_LOOP_FILTER_MODE_ENABLED, - DB_H264_DISABLE_SLICE_BOUNDARY, - BIT(V4L2_MPEG_VIDEO_H264_LOOP_FILTER_MODE_ENABLED) | - BIT(V4L2_MPEG_VIDEO_H264_LOOP_FILTER_MODE_DISABLED) | - BIT(DB_H264_DISABLE_SLICE_BOUNDARY), - V4L2_MPEG_VIDEO_H264_LOOP_FILTER_MODE_ENABLED, - V4L2_CID_MPEG_VIDEO_H264_LOOP_FILTER_MODE, - HFI_PROP_DEBLOCKING_MODE, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU, - {0}, {0}, - NULL, msm_vidc_set_deblock_mode}, - - {LF_MODE, ENC, HEVC|HEIC, - V4L2_MPEG_VIDEO_HEVC_LOOP_FILTER_MODE_DISABLED, - DB_HEVC_DISABLE_SLICE_BOUNDARY, - BIT(V4L2_MPEG_VIDEO_HEVC_LOOP_FILTER_MODE_DISABLED) | - BIT(V4L2_MPEG_VIDEO_HEVC_LOOP_FILTER_MODE_ENABLED) | - BIT(DB_HEVC_DISABLE_SLICE_BOUNDARY), - V4L2_MPEG_VIDEO_HEVC_LOOP_FILTER_MODE_ENABLED, - V4L2_CID_MPEG_VIDEO_HEVC_LOOP_FILTER_MODE, - HFI_PROP_DEBLOCKING_MODE, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU, - {0}, {0}, - NULL, msm_vidc_set_deblock_mode}, - - {LF_ALPHA, ENC, H264, - -6, 6, 1, 0, - V4L2_CID_MPEG_VIDEO_H264_LOOP_FILTER_ALPHA}, - - {LF_ALPHA, ENC, HEVC|HEIC, - -6, 6, 1, 0, - V4L2_CID_MPEG_VIDEO_HEVC_LF_TC_OFFSET_DIV2}, - - {LF_BETA, ENC, H264, - -6, 6, 1, 0, - V4L2_CID_MPEG_VIDEO_H264_LOOP_FILTER_BETA}, - - {LF_BETA, ENC, HEVC|HEIC, - -6, 6, 1, 0, - V4L2_CID_MPEG_VIDEO_HEVC_LF_BETA_OFFSET_DIV2}, - - {SLICE_MODE, ENC, H264|HEVC|HEIC, - V4L2_MPEG_VIDEO_MULTI_SLICE_MODE_SINGLE, - V4L2_MPEG_VIDEO_MULTI_SLICE_MODE_MAX_BYTES, - BIT(V4L2_MPEG_VIDEO_MULTI_SLICE_MODE_SINGLE) | - BIT(V4L2_MPEG_VIDEO_MULTI_SLICE_MODE_MAX_MB) | - BIT(V4L2_MPEG_VIDEO_MULTI_SLICE_MODE_MAX_BYTES), - V4L2_MPEG_VIDEO_MULTI_SLICE_MODE_SINGLE, - V4L2_CID_MPEG_VIDEO_MULTI_SLICE_MODE, - 0, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU, - {BITRATE_MODE, ALL_INTRA}, {0}, - msm_vidc_adjust_slice_count, msm_vidc_set_slice_count}, - - {SLICE_MAX_BYTES, ENC, H264|HEVC|HEIC, - MIN_SLICE_BYTE_SIZE, MAX_SLICE_BYTE_SIZE_V1, - 1, MIN_SLICE_BYTE_SIZE, - V4L2_CID_MPEG_VIDEO_MULTI_SLICE_MAX_BYTES, - HFI_PROP_MULTI_SLICE_BYTES_COUNT, - CAP_FLAG_OUTPUT_PORT}, - - {SLICE_MAX_MB, ENC, H264|HEVC|HEIC, - 1, MAX_SLICE_MB_SIZE, 1, 1, - V4L2_CID_MPEG_VIDEO_MULTI_SLICE_MAX_MB, - HFI_PROP_MULTI_SLICE_MB_COUNT, - CAP_FLAG_OUTPUT_PORT}, - - // TODO: MB level RC - mapping - {MB_RC, ENC, H264|HEVC, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_ENABLE, - V4L2_CID_MPEG_VIDEO_MB_RC_ENABLE, - 0, - CAP_FLAG_OUTPUT_PORT}, - - {TRANSFORM_8X8, ENC, H264, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_ENABLE, - V4L2_CID_MPEG_VIDEO_H264_8X8_TRANSFORM, - HFI_PROP_8X8_TRANSFORM, - CAP_FLAG_OUTPUT_PORT, - {PROFILE}, {0}, - msm_vidc_adjust_transform_8x8, msm_vidc_set_u32}, - - {CHROMA_QP_INDEX_OFFSET, ENC, HEVC, - MIN_CHROMA_QP_OFFSET, MAX_CHROMA_QP_OFFSET, - 1, MAX_CHROMA_QP_OFFSET, - V4L2_CID_MPEG_VIDEO_H264_CHROMA_QP_INDEX_OFFSET, - HFI_PROP_CHROMA_QP_OFFSET, - CAP_FLAG_OUTPUT_PORT, - {0}, {0}, - msm_vidc_adjust_chroma_qp_index_offset, - msm_vidc_set_chroma_qp_index_offset}, - - {DISPLAY_DELAY_ENABLE, DEC, H264|HEVC|VP9, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, - V4L2_CID_MPEG_VIDEO_DEC_DISPLAY_DELAY_ENABLE, - HFI_PROP_DECODE_ORDER_OUTPUT, - CAP_FLAG_INPUT_PORT, - {0}, {OUTPUT_ORDER}, - NULL, NULL}, - - {DISPLAY_DELAY, DEC, H264|HEVC|VP9, - 0, 1, 1, 0, - V4L2_CID_MPEG_VIDEO_DEC_DISPLAY_DELAY, - HFI_PROP_DECODE_ORDER_OUTPUT, - CAP_FLAG_INPUT_PORT, - {0}, {OUTPUT_ORDER}, - NULL, NULL}, - - {OUTPUT_ORDER, DEC, H264|HEVC|VP9, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, - 0, - HFI_PROP_DECODE_ORDER_OUTPUT, - CAP_FLAG_INPUT_PORT, - {THUMBNAIL_MODE, DISPLAY_DELAY, DISPLAY_DELAY_ENABLE}, - {0}, - msm_vidc_adjust_output_order, msm_vidc_set_u32}, - - {INPUT_BUF_HOST_MAX_COUNT, ENC|DEC, CODECS_ALL, - DEFAULT_MAX_HOST_BUF_COUNT, DEFAULT_MAX_HOST_BURST_BUF_COUNT, - 1, DEFAULT_MAX_HOST_BUF_COUNT, - 0, - HFI_PROP_BUFFER_HOST_MAX_COUNT, - CAP_FLAG_INPUT_PORT, - {0}, {0}, - msm_vidc_adjust_input_buf_host_max_count, msm_vidc_set_u32}, - - {INPUT_BUF_HOST_MAX_COUNT, ENC, H264|HEVC, - DEFAULT_MAX_HOST_BUF_COUNT, DEFAULT_MAX_HOST_BURST_BUF_COUNT, - 1, DEFAULT_MAX_HOST_BUF_COUNT, - 0, - HFI_PROP_BUFFER_HOST_MAX_COUNT, - CAP_FLAG_INPUT_PORT, - {SUPER_FRAME}, {0}, - msm_vidc_adjust_input_buf_host_max_count, msm_vidc_set_u32}, - - {OUTPUT_BUF_HOST_MAX_COUNT, ENC|DEC, CODECS_ALL, - DEFAULT_MAX_HOST_BUF_COUNT, DEFAULT_MAX_HOST_BURST_BUF_COUNT, - 1, DEFAULT_MAX_HOST_BUF_COUNT, - 0, - HFI_PROP_BUFFER_HOST_MAX_COUNT, - CAP_FLAG_OUTPUT_PORT, - {0}, {0}, - msm_vidc_adjust_output_buf_host_max_count, msm_vidc_set_u32}, - - {OUTPUT_BUF_HOST_MAX_COUNT, ENC, H264|HEVC, - DEFAULT_MAX_HOST_BUF_COUNT, DEFAULT_MAX_HOST_BURST_BUF_COUNT, - 1, DEFAULT_MAX_HOST_BUF_COUNT, - 0, - HFI_PROP_BUFFER_HOST_MAX_COUNT, - CAP_FLAG_OUTPUT_PORT, - {SUPER_FRAME}, {0}, - msm_vidc_adjust_output_buf_host_max_count, msm_vidc_set_u32}, - - /* conceal color */ - {CONCEAL_COLOR_8BIT, DEC, CODECS_ALL, 0x0, 0xff3fcff, 1, - DEFAULT_VIDEO_CONCEAL_COLOR_BLACK, - V4L2_CID_MPEG_VIDEO_MUTE_YUV, - HFI_PROP_CONCEAL_COLOR_8BIT, - CAP_FLAG_INPUT_PORT, - {0}, {0}, - NULL, msm_vidc_set_u32_packed}, - - {CONCEAL_COLOR_10BIT, DEC, CODECS_ALL, 0x0, 0x3fffffff, 1, - DEFAULT_VIDEO_CONCEAL_COLOR_BLACK, - V4L2_CID_MPEG_VIDEO_MUTE_YUV, - HFI_PROP_CONCEAL_COLOR_10BIT, - CAP_FLAG_INPUT_PORT, - {0}, {0}, - NULL, msm_vidc_set_u32_packed}, - - // TODO - {STAGE, DEC|ENC, CODECS_ALL, - MSM_VIDC_STAGE_1, - MSM_VIDC_STAGE_2, 1, - MSM_VIDC_STAGE_2, - 0, - HFI_PROP_STAGE, - 0, - {0}, {0}, - NULL, msm_vidc_set_stage}, - - {STAGE, ENC, H264 | HEVC, - MSM_VIDC_STAGE_1, - MSM_VIDC_STAGE_2, 1, - MSM_VIDC_STAGE_2, - 0, - HFI_PROP_STAGE, - CAP_FLAG_NONE, - {LOWLATENCY_MODE}, {0}, - NULL, msm_vidc_set_stage}, - - {PIPE, DEC|ENC, CODECS_ALL, - MSM_VIDC_PIPE_1, - MSM_VIDC_PIPE_2, 1, - MSM_VIDC_PIPE_2, - 0, - HFI_PROP_PIPE, - 0, - {0}, {0}, - NULL, msm_vidc_set_pipe}, - {POC, DEC, H264, 0, 18, 1, 1}, - {QUALITY_MODE, ENC, CODECS_ALL, - MSM_VIDC_MAX_QUALITY_MODE, - MSM_VIDC_POWER_SAVE_MODE, 1, - MSM_VIDC_POWER_SAVE_MODE}, - - {CODED_FRAMES, DEC, H264|HEVC|HEIC, - CODED_FRAMES_PROGRESSIVE, CODED_FRAMES_INTERLACE, - 1, CODED_FRAMES_PROGRESSIVE, - 0, - HFI_PROP_CODED_FRAMES}, - - {BIT_DEPTH, DEC, CODECS_ALL, BIT_DEPTH_8, BIT_DEPTH_10, 1, BIT_DEPTH_8, - 0, - HFI_PROP_LUMA_CHROMA_BIT_DEPTH}, - - {CODEC_CONFIG, DEC, H264|HEVC|HEIC, 0, 1, 1, 0, - V4L2_CID_MPEG_VIDC_CODEC_CONFIG, 0, - CAP_FLAG_DYNAMIC_ALLOWED}, - - {BITSTREAM_SIZE_OVERWRITE, DEC, CODECS_ALL, 0, INT_MAX, 1, 0, - V4L2_CID_MPEG_VIDC_MIN_BITSTREAM_SIZE_OVERWRITE}, - - {THUMBNAIL_MODE, DEC, CODECS_ALL, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, - V4L2_CID_MPEG_VIDC_THUMBNAIL_MODE, - HFI_PROP_THUMBNAIL_MODE, - CAP_FLAG_INPUT_PORT, - {0}, {OUTPUT_ORDER}, - NULL, msm_vidc_set_u32}, - - {DEFAULT_HEADER, DEC, CODECS_ALL, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, - 0, - HFI_PROP_DEC_DEFAULT_HEADER}, - - {RAP_FRAME, DEC, CODECS_ALL, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_ENABLE, - 0, - HFI_PROP_DEC_START_FROM_RAP_FRAME, - CAP_FLAG_INPUT_PORT, - {0}, {0}, - NULL, msm_vidc_set_u32}, - - {SEQ_CHANGE_AT_SYNC_FRAME, DEC, CODECS_ALL, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_ENABLE, - 0, - HFI_PROP_SEQ_CHANGE_AT_SYNC_FRAME, - CAP_FLAG_INPUT_PORT | CAP_FLAG_DYNAMIC_ALLOWED}, - - {PRIORITY, DEC|ENC, CODECS_ALL, - 0, 2, 1, 1, - V4L2_CID_MPEG_VIDC_PRIORITY, - HFI_PROP_SESSION_PRIORITY, - CAP_FLAG_DYNAMIC_ALLOWED, - {0}, {0}, - msm_vidc_adjust_session_priority, msm_vidc_set_session_priority}, - - {ENC_IP_CR, ENC, CODECS_ALL, - 0, S32_MAX, 1, 0, - V4L2_CID_MPEG_VIDC_ENC_INPUT_COMPRESSION_RATIO, - 0, CAP_FLAG_DYNAMIC_ALLOWED}, - - {DPB_LIST, DEC, CODECS_ALL, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, - 0, - HFI_PROP_DPB_LIST, - CAP_FLAG_OUTPUT_PORT, - {0}, {0}, - NULL, NULL}, - - {ALL_INTRA, ENC, H264|HEVC, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, - 0, - 0, - CAP_FLAG_OUTPUT_PORT, - {GOP_SIZE, B_FRAME}, - {LTR_COUNT, IR_RANDOM, SLICE_MODE}, - msm_vidc_adjust_all_intra, NULL}, - - {META_LTR_MARK_USE, ENC, H264|HEVC, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, - V4L2_CID_MPEG_VIDC_METADATA_LTR_MARK_USE_DETAILS, - HFI_PROP_LTR_MARK_USE_DETAILS}, - - {META_SEQ_HDR_NAL, ENC, CODECS_ALL, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, - V4L2_CID_MPEG_VIDC_METADATA_SEQ_HEADER_NAL, - HFI_PROP_METADATA_SEQ_HEADER_NAL}, - - {META_DPB_MISR, DEC, CODECS_ALL, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, - V4L2_CID_MPEG_VIDC_METADATA_DPB_LUMA_CHROMA_MISR, - HFI_PROP_DPB_LUMA_CHROMA_MISR}, - - {META_OPB_MISR, DEC, CODECS_ALL, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, - V4L2_CID_MPEG_VIDC_METADATA_OPB_LUMA_CHROMA_MISR, - HFI_PROP_OPB_LUMA_CHROMA_MISR}, - - {META_INTERLACE, DEC, H264, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, - V4L2_CID_MPEG_VIDC_METADATA_INTERLACE, - HFI_PROP_INTERLACE_INFO}, - - {META_TIMESTAMP, DEC | ENC, CODECS_ALL, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, - V4L2_CID_MPEG_VIDC_METADATA_TIMESTAMP, - HFI_PROP_TIMESTAMP}, - - {META_CONCEALED_MB_CNT, DEC, CODECS_ALL, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, - V4L2_CID_MPEG_VIDC_METADATA_CONCEALED_MB_COUNT, - HFI_PROP_CONEALED_MB_COUNT}, - - {META_HIST_INFO, DEC, CODECS_ALL, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, - V4L2_CID_MPEG_VIDC_METADATA_HISTOGRAM_INFO, - HFI_PROP_HISTOGRAM_INFO}, - - {META_SEI_MASTERING_DISP, DEC|ENC, HEVC|HEIC, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, - V4L2_CID_MPEG_VIDC_METADATA_SEI_MASTERING_DISPLAY_COLOUR, - HFI_PROP_SEI_MASTERING_DISPLAY_COLOUR}, - - {META_SEI_CLL, DEC|ENC, HEVC|HEIC, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, - V4L2_CID_MPEG_VIDC_METADATA_SEI_CONTENT_LIGHT_LEVEL, - HFI_PROP_SEI_CONTENT_LIGHT_LEVEL}, - - {META_HDR10PLUS, DEC | ENC, HEVC|HEIC, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, - V4L2_CID_MPEG_VIDC_METADATA_HDR10PLUS, - HFI_PROP_SEI_HDR10PLUS_USERDATA}, - - {META_EVA_STATS, ENC, CODECS_ALL, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, - V4L2_CID_MPEG_VIDC_METADATA_EVA_STATS, - HFI_PROP_EVA_STAT_INFO, - 0, - {0}, - {ENH_LAYER_COUNT}}, - - {META_BUF_TAG, DEC | ENC, CODECS_ALL, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, - V4L2_CID_MPEG_VIDC_METADATA_BUFFER_TAG, - HFI_PROP_BUFFER_TAG}, - - {META_DPB_TAG_LIST, DEC, CODECS_ALL, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, - V4L2_CID_MPEG_VIDC_METADATA_DPB_TAG_LIST, - HFI_PROP_DPB_TAG_LIST}, - - {META_OUTPUT_BUF_TAG, DEC, CODECS_ALL, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, - 0, - HFI_PROP_BUFFER_TAG}, - - {META_SUBFRAME_OUTPUT, DEC, CODECS_ALL, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, - V4L2_CID_MPEG_VIDC_METADATA_SUBFRAME_OUTPUT, - HFI_PROP_SUBFRAME_OUTPUT}, - - {META_ENC_QP_METADATA, ENC, CODECS_ALL, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, - V4L2_CID_MPEG_VIDC_METADATA_ENC_QP_METADATA, - HFI_PROP_ENC_QP_METADATA}, - - {META_ROI_INFO, ENC, CODECS_ALL, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, - V4L2_CID_MPEG_VIDC_METADATA_ROI_INFO, - HFI_PROP_ROI_INFO, - CAP_FLAG_INPUT_PORT, - {BITRATE_MODE, PIX_FMTS}, - {0}, - msm_vidc_adjust_roi_info, NULL}, - - {META_ROI_INFO, ENC, H264|HEVC, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, - V4L2_CID_MPEG_VIDC_METADATA_ROI_INFO, - HFI_PROP_ROI_INFO, - CAP_FLAG_INPUT_PORT, - {BITRATE_MODE, PIX_FMTS}, - {MIN_QUALITY}, - msm_vidc_adjust_roi_info, NULL}, - - {META_DEC_QP_METADATA, DEC, CODECS_ALL, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, - V4L2_CID_MPEG_VIDC_METADATA_DEC_QP_METADATA, - HFI_PROP_DEC_QP_METADATA}, - - /* configure image properties */ - {FRAME_WIDTH, ENC, HEIC, 128, 16384, 1, 16384}, - {FRAME_HEIGHT, ENC, HEIC, 128, 16384, 1, 16384}, - {MIN_BUFFERS_INPUT, ENC|DEC, HEIC, 0, 64, 1, 1, - V4L2_CID_MIN_BUFFERS_FOR_OUTPUT}, - {MBPF, DEC, HEIC, 36, 65536, 1, 65536 }, /* ((4096x4096)/256) */ - {MBPF, ENC, HEIC, 64, 1048576, 1, 1048576}, /* ((16384x16384)/256) */ - {MBPS, DEC, HEIC, 36, 65536, 1, 65536 }, /* ((4096x4096)/256)@1fps */ - {MBPS, ENC, HEIC, 64, 1048576, 1, 1048576}, /* ((16384x16384)/256)@1fps */ - {BITRATE_MODE, ENC, HEIC, - V4L2_MPEG_VIDEO_BITRATE_MODE_CQ, - V4L2_MPEG_VIDEO_BITRATE_MODE_CQ, - BIT(V4L2_MPEG_VIDEO_BITRATE_MODE_CQ), - V4L2_MPEG_VIDEO_BITRATE_MODE_CQ, - V4L2_CID_MPEG_VIDEO_BITRATE_MODE, - HFI_PROP_RATE_CONTROL, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU, - {0}, - {TIME_DELTA_BASED_RC, CONSTANT_QUALITY}, - msm_vidc_adjust_bitrate_mode, msm_vidc_set_u32_enum}, - {TIME_DELTA_BASED_RC, ENC, HEIC, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, - V4L2_CID_MPEG_VIDC_TIME_DELTA_BASED_RC, - HFI_PROP_TIME_DELTA_BASED_RATE_CONTROL, - CAP_FLAG_OUTPUT_PORT, - {BITRATE_MODE}, {0}, - msm_vidc_adjust_delta_based_rc, msm_vidc_set_u32}, - {CONSTANT_QUALITY, ENC, HEIC, - 1, MAX_CONSTANT_QUALITY, 1, 100, - V4L2_CID_MPEG_VIDEO_CONSTANT_QUALITY, - HFI_PROP_CONSTANT_QUALITY, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT | - CAP_FLAG_DYNAMIC_ALLOWED, - {BITRATE_MODE}, {0}, - NULL, msm_vidc_set_constant_quality}, - {GRID, ENC, HEIC, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_ENABLE, - 0, - HFI_PROP_HEIC_GRID_ENABLE, - CAP_FLAG_OUTPUT_PORT, - {0}, {0}, - NULL, msm_vidc_set_u32}, - {GOP_SIZE, ENC, HEIC, - 0, INT_MAX, 1, 0 /* all intra */, - V4L2_CID_MPEG_VIDEO_GOP_SIZE, - HFI_PROP_MAX_GOP_FRAMES, - CAP_FLAG_OUTPUT_PORT | - CAP_FLAG_INPUT_PORT | CAP_FLAG_DYNAMIC_ALLOWED, - {0}, {0}, - NULL, msm_vidc_set_u32}, - {B_FRAME, ENC, HEIC, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, - V4L2_CID_MPEG_VIDEO_B_FRAMES, - HFI_PROP_MAX_B_FRAMES, - CAP_FLAG_OUTPUT_PORT, - {0}, {0}, - NULL, msm_vidc_set_u32}, - {PIX_FMTS, ENC, HEIC, - MSM_VIDC_FMT_NV12, - MSM_VIDC_FMT_P010, - MSM_VIDC_FMT_NV12 | MSM_VIDC_FMT_P010, - MSM_VIDC_FMT_NV12, - 0, 0, - 0, - {0}, - {PROFILE}}, - {HEVC_TIER, ENC|DEC, HEIC, - V4L2_MPEG_VIDEO_HEVC_TIER_MAIN, - V4L2_MPEG_VIDEO_HEVC_TIER_MAIN, - BIT(V4L2_MPEG_VIDEO_HEVC_TIER_MAIN), - V4L2_MPEG_VIDEO_HEVC_TIER_MAIN, - V4L2_CID_MPEG_VIDEO_HEVC_TIER, - HFI_PROP_TIER, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU, - {0}, - {0}, - NULL, msm_vidc_set_u32_enum}, - {FRAME_RATE, ENC, HEIC, - (MINIMUM_FPS << 16), (MAXIMUM_FPS << 16), - 1, (MINIMUM_FPS << 16), - 0, - HFI_PROP_FRAME_RATE, - CAP_FLAG_OUTPUT_PORT, - {0}, {0}, - NULL, msm_vidc_set_q16}, - {META_SUBFRAME_OUTPUT, ENC, HEIC, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, - V4L2_CID_MPEG_VIDC_METADATA_SUBFRAME_OUTPUT, - HFI_PROP_SUBFRAME_OUTPUT}, - {COMPLEXITY, ENC, H264 | HEVC, - 0, 100, - 1, 100, - V4L2_CID_MPEG_VIDC_VENC_COMPLEXITY}, - {META_MAX_NUM_REORDER_FRAMES, DEC, HEVC | H264, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, - V4L2_CID_MPEG_VIDC_METADATA_MAX_NUM_REORDER_FRAMES, - HFI_PROP_MAX_NUM_REORDER_FRAMES}, -}; - -static struct msm_platform_inst_capability instance_data_diwali_v2[] = { - /* {cap, domain, codec, - * min, max, step_or_mask, value, - * v4l2_id, - * hfi_id, - * flags, - * parents, - * children, - * adjust, set} - */ - - {FRAME_WIDTH, DEC, CODECS_ALL, 96, 4096, 1, 1920}, - {FRAME_WIDTH, ENC, CODECS_ALL, 128, 4096, 1, 1920}, - {LOSSLESS_FRAME_WIDTH, ENC, H264|HEVC, 128, 4096, 1, 1920}, - {SECURE_FRAME_WIDTH, DEC, H264|HEVC|VP9, 96, 4096, 1, 1920}, - {SECURE_FRAME_WIDTH, ENC, H264|HEVC, 128, 4096, 1, 1920}, - {FRAME_HEIGHT, DEC, CODECS_ALL, 96, 4096, 1, 1080}, - {FRAME_HEIGHT, ENC, CODECS_ALL, 128, 4096, 1, 1080}, - {LOSSLESS_FRAME_HEIGHT, ENC, H264|HEVC, 128, 4096, 1, 1080}, - {SECURE_FRAME_HEIGHT, DEC, H264|HEVC|VP9, 96, 4096, 1, 1080}, - {SECURE_FRAME_HEIGHT, ENC, H264|HEVC, 128, 4096, 1, 1080}, - {PIX_FMTS, ENC, H264, - MSM_VIDC_FMT_NV12, - MSM_VIDC_FMT_NV12C, - MSM_VIDC_FMT_NV12 | MSM_VIDC_FMT_NV21 | MSM_VIDC_FMT_NV12C, - /* Since CTSEncodeDecode test cannot handle BT 709LR, - * disabled HW RGBA encoding. - * | MSM_VIDC_FMT_RGBA8888 | MSM_VIDC_FMT_RGBA8888C, - */ - MSM_VIDC_FMT_NV12C, - 0, 0, - 0, - {0}, - {META_ROI_INFO}}, - {PIX_FMTS, ENC, HEVC, - MSM_VIDC_FMT_NV12, - MSM_VIDC_FMT_TP10C, - MSM_VIDC_FMT_NV12 | MSM_VIDC_FMT_NV21 | MSM_VIDC_FMT_NV12C | - MSM_VIDC_FMT_P010 | MSM_VIDC_FMT_TP10C, - /* Since CTSEncodeDecode test cannot handle BT 709LR, - * disabled HW RGBA encoding. - * | MSM_VIDC_FMT_RGBA8888 | MSM_VIDC_FMT_RGBA8888C, - */ - MSM_VIDC_FMT_NV12C, - 0, 0, - 0, - {0}, - {/* Do not change order of META_ROI_INFO, MIN_QUALITY, BLUR_TYPES - * Since parent -> children relationship for these cap_ids is - * as follows: - * META_ROI_INFO -> MIN_QUALITY -> BLUR_TYPES - */ - PROFILE, MIN_FRAME_QP, MAX_FRAME_QP, I_FRAME_QP, P_FRAME_QP, - B_FRAME_QP, META_ROI_INFO, MIN_QUALITY, BLUR_TYPES}}, - - {PIX_FMTS, DEC, HEVC|HEIC, - MSM_VIDC_FMT_NV12, - MSM_VIDC_FMT_TP10C, - MSM_VIDC_FMT_NV12 | MSM_VIDC_FMT_NV21 | MSM_VIDC_FMT_NV12C | - MSM_VIDC_FMT_P010 | MSM_VIDC_FMT_TP10C, - MSM_VIDC_FMT_NV12C, - 0, 0, - 0, - {0}, - {PROFILE}}, - - {PIX_FMTS, DEC, H264, - MSM_VIDC_FMT_NV12, - MSM_VIDC_FMT_NV12C, - MSM_VIDC_FMT_NV12 | MSM_VIDC_FMT_NV21 | MSM_VIDC_FMT_NV12C, - MSM_VIDC_FMT_NV12C}, - - {PIX_FMTS, DEC, VP9, - MSM_VIDC_FMT_NV12, - MSM_VIDC_FMT_TP10C, - MSM_VIDC_FMT_NV12 | MSM_VIDC_FMT_NV21 | MSM_VIDC_FMT_NV12C | - MSM_VIDC_FMT_P010 | MSM_VIDC_FMT_TP10C, - MSM_VIDC_FMT_NV12C}, - - {MIN_BUFFERS_INPUT, ENC|DEC, CODECS_ALL, 0, 64, 1, 4, - V4L2_CID_MIN_BUFFERS_FOR_OUTPUT}, - {MIN_BUFFERS_OUTPUT, ENC|DEC, CODECS_ALL, - 0, 64, 1, 4, - V4L2_CID_MIN_BUFFERS_FOR_CAPTURE, - HFI_PROP_BUFFER_FW_MIN_OUTPUT_COUNT, - CAP_FLAG_OUTPUT_PORT}, - - /* (4096 * 2304) / 256 */ - {MBPF, ENC, CODECS_ALL, 64, 36864, 1, 36864}, - /* (4096 * 2304) / 256 */ - {MBPF, DEC, CODECS_ALL, 36, 36864, 1, 36864}, - /* (4096 * 2304) / 256 */ - {LOSSLESS_MBPF, ENC, H264|HEVC, 64, 36864, 1, 36864}, - /* (4096 * 2304) / 256 */ - {SECURE_MBPF, ENC|DEC, H264|HEVC|VP9, 64, 36864, 1, 36864}, - /* ((4096 * 2304) / 256) * 30 fps */ - {MBPS, ENC, CODECS_ALL, 64, 1105920, 1, 1105920}, - /* ((4096 * 2176) / 256) * 30 fps */ - {MBPS, DEC, CODECS_ALL, 36, 1105920, 1, 1105920}, - /* ((1920 * 1088) / 256) * 30 fps */ - {POWER_SAVE_MBPS, ENC, CODECS_ALL, 0, 244800, 1, 244800}, - - {FRAME_RATE, ENC, CODECS_ALL, - (MINIMUM_FPS<< 16), (MAXIMUM_FPS_V2 << 16), - 1, (DEFAULT_FPS << 16), - 0, - HFI_PROP_FRAME_RATE, - CAP_FLAG_OUTPUT_PORT, - {0}, {0}, - NULL, msm_vidc_set_q16}, - - {FRAME_RATE, DEC, CODECS_ALL, - (MINIMUM_FPS << 16), (MAXIMUM_FPS_V2 << 16), - 1, (DEFAULT_FPS << 16)}, - - {FRAME_RATE, DEC, VP9, - (MINIMUM_FPS << 16), (MAXIMUM_VP9_FPS << 16), - 1, (DEFAULT_FPS << 16)}, - - {OPERATING_RATE, ENC|DEC, CODECS_ALL, - (MINIMUM_FPS<< 16), (MAXIMUM_FPS_V2 << 16), - 1, (DEFAULT_FPS << 16)}, - - {OPERATING_RATE, DEC, VP9, - (MINIMUM_FPS << 16), (MAXIMUM_VP9_FPS << 16), - 1, (DEFAULT_FPS << 16)}, - - {SCALE_FACTOR, ENC, H264|HEVC, 1, 8, 1, 8}, - - {MB_CYCLES_VSP, ENC, CODECS_ALL, 25, 25, 1, 25}, - {MB_CYCLES_VSP, DEC, CODECS_ALL, 25, 25, 1, 25}, - {MB_CYCLES_VSP, DEC, VP9, 60, 60, 1, 60}, - {MB_CYCLES_VPP, ENC, CODECS_ALL, 675, 675, 1, 675}, - {MB_CYCLES_VPP, DEC, CODECS_ALL, 200, 200, 1, 200}, - {MB_CYCLES_LP, ENC, CODECS_ALL, 320, 320, 1, 320}, - {MB_CYCLES_LP, DEC, CODECS_ALL, 200, 200, 1, 200}, - {MB_CYCLES_FW, ENC|DEC, CODECS_ALL, 326389, 326389, 1, 326389}, - {MB_CYCLES_FW_VPP, ENC|DEC, CODECS_ALL, 44156, 44156, 1, 44156}, - - {SECURE_MODE, ENC|DEC, H264|HEVC|VP9, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, - V4L2_CID_MPEG_VIDC_SECURE, - HFI_PROP_SECURE, - CAP_FLAG_NONE, - {0}, - {0}, - NULL, msm_vidc_set_u32}, - - {HFLIP, ENC, CODECS_ALL, - V4L2_MPEG_MSM_VIDC_DISABLE, - V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, - V4L2_CID_HFLIP, - HFI_PROP_FLIP, - CAP_FLAG_OUTPUT_PORT | - CAP_FLAG_INPUT_PORT | CAP_FLAG_DYNAMIC_ALLOWED, - {0}, - {0}, - NULL, msm_vidc_set_flip}, - - {VFLIP, ENC, CODECS_ALL, - V4L2_MPEG_MSM_VIDC_DISABLE, - V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, - V4L2_CID_VFLIP, - HFI_PROP_FLIP, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT | - CAP_FLAG_DYNAMIC_ALLOWED, - {0}, - {0}, - NULL, msm_vidc_set_flip}, - - {ROTATION, ENC, CODECS_ALL, - 0, 270, 90, 0, - V4L2_CID_ROTATE, - HFI_PROP_ROTATION, - CAP_FLAG_OUTPUT_PORT, - {0}, - {0}, - NULL, msm_vidc_set_rotation}, - - {SUPER_FRAME, ENC, H264|HEVC, - 0, 32, 1, 0, - V4L2_CID_MPEG_VIDC_SUPERFRAME, 0, - CAP_FLAG_NONE, - {0}, - {INPUT_BUF_HOST_MAX_COUNT, OUTPUT_BUF_HOST_MAX_COUNT}, - NULL, NULL}, - - {SLICE_INTERFACE, DEC, CODECS_ALL, - 0, 0, 0, 0, - V4L2_CID_MPEG_VIDEO_DECODER_SLICE_INTERFACE, - 0}, - - {HEADER_MODE, ENC, CODECS_ALL, - V4L2_MPEG_VIDEO_HEADER_MODE_SEPARATE, - V4L2_MPEG_VIDEO_HEADER_MODE_JOINED_WITH_1ST_FRAME, - BIT(V4L2_MPEG_VIDEO_HEADER_MODE_SEPARATE) | - BIT(V4L2_MPEG_VIDEO_HEADER_MODE_JOINED_WITH_1ST_FRAME), - V4L2_MPEG_VIDEO_HEADER_MODE_SEPARATE, - V4L2_CID_MPEG_VIDEO_HEADER_MODE, - HFI_PROP_SEQ_HEADER_MODE, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU, - {0}, {0}, - NULL, msm_vidc_set_header_mode}, - - {PREPEND_SPSPPS_TO_IDR, ENC, CODECS_ALL, - V4L2_MPEG_MSM_VIDC_DISABLE, - V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, - V4L2_CID_MPEG_VIDEO_PREPEND_SPSPPS_TO_IDR}, - - {META_SEQ_HDR_NAL, ENC, CODECS_ALL, - V4L2_MPEG_MSM_VIDC_DISABLE, - V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, - V4L2_CID_MPEG_VIDC_METADATA_SEQ_HEADER_NAL}, - - {WITHOUT_STARTCODE, ENC, CODECS_ALL, - V4L2_MPEG_MSM_VIDC_DISABLE, - V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, - V4L2_CID_MPEG_VIDEO_HEVC_WITHOUT_STARTCODE, - HFI_PROP_NAL_LENGTH_FIELD, - CAP_FLAG_OUTPUT_PORT, - {0}, {0}, - NULL, msm_vidc_set_nal_length}, - - {NAL_LENGTH_FIELD, ENC, CODECS_ALL, - V4L2_MPEG_VIDEO_HEVC_SIZE_0, - V4L2_MPEG_VIDEO_HEVC_SIZE_4, - BIT(V4L2_MPEG_VIDEO_HEVC_SIZE_0) | - BIT(V4L2_MPEG_VIDEO_HEVC_SIZE_4), - V4L2_MPEG_VIDEO_HEVC_SIZE_0, - V4L2_CID_MPEG_VIDEO_HEVC_SIZE_OF_LENGTH_FIELD, - HFI_PROP_NAL_LENGTH_FIELD, - CAP_FLAG_MENU | CAP_FLAG_OUTPUT_PORT}, - - /* TODO: Firmware introduced enumeration type for this - * with and without seq header. - */ - {REQUEST_I_FRAME, ENC, H264|HEVC, - 0, 0, 0, 0, - V4L2_CID_MPEG_VIDEO_FORCE_KEY_FRAME, - HFI_PROP_REQUEST_SYNC_FRAME, - CAP_FLAG_INPUT_PORT | CAP_FLAG_DYNAMIC_ALLOWED, - {0}, {0}, - NULL, msm_vidc_set_req_sync_frame}, - - /* Enc: Keeping CABAC and CAVLC as same bitrate. - * Dec: there's no use of Bitrate cap - */ - {BIT_RATE, ENC, H264|HEVC, - 1, MAX_BITRATE_V1, 1, DEFAULT_BITRATE, - V4L2_CID_MPEG_VIDEO_BITRATE, - HFI_PROP_TOTAL_BITRATE, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT | - CAP_FLAG_DYNAMIC_ALLOWED, - {ENH_LAYER_COUNT, BITRATE_MODE}, {PEAK_BITRATE}, - msm_vidc_adjust_bitrate, msm_vidc_set_bitrate}, - - {BITRATE_MODE, ENC, H264, - V4L2_MPEG_VIDEO_BITRATE_MODE_VBR, - V4L2_MPEG_VIDEO_BITRATE_MODE_CBR, - BIT(V4L2_MPEG_VIDEO_BITRATE_MODE_VBR) | - BIT(V4L2_MPEG_VIDEO_BITRATE_MODE_CBR), - V4L2_MPEG_VIDEO_BITRATE_MODE_VBR, - V4L2_CID_MPEG_VIDEO_BITRATE_MODE, - HFI_PROP_RATE_CONTROL, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU, - {0}, - {LTR_COUNT, IR_RANDOM, TIME_DELTA_BASED_RC, I_FRAME_QP, - P_FRAME_QP, B_FRAME_QP, ENH_LAYER_COUNT, BIT_RATE, - CONTENT_ADAPTIVE_CODING, BITRATE_BOOST, MIN_QUALITY, - VBV_DELAY, PEAK_BITRATE,SLICE_MODE, META_ROI_INFO, - BLUR_TYPES, LOWLATENCY_MODE}, - msm_vidc_adjust_bitrate_mode, msm_vidc_set_u32_enum}, - - {BITRATE_MODE, ENC, HEVC, - V4L2_MPEG_VIDEO_BITRATE_MODE_VBR, - V4L2_MPEG_VIDEO_BITRATE_MODE_CQ, - BIT(V4L2_MPEG_VIDEO_BITRATE_MODE_VBR) | - BIT(V4L2_MPEG_VIDEO_BITRATE_MODE_CBR) | - BIT(V4L2_MPEG_VIDEO_BITRATE_MODE_CQ), - V4L2_MPEG_VIDEO_BITRATE_MODE_VBR, - V4L2_CID_MPEG_VIDEO_BITRATE_MODE, - HFI_PROP_RATE_CONTROL, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU, - {0}, - {LTR_COUNT, IR_RANDOM, TIME_DELTA_BASED_RC, I_FRAME_QP, - P_FRAME_QP, B_FRAME_QP, CONSTANT_QUALITY, ENH_LAYER_COUNT, - CONTENT_ADAPTIVE_CODING, BIT_RATE, - BITRATE_BOOST, MIN_QUALITY, VBV_DELAY, - PEAK_BITRATE, SLICE_MODE, META_ROI_INFO, BLUR_TYPES, - LOWLATENCY_MODE}, - msm_vidc_adjust_bitrate_mode, msm_vidc_set_u32_enum}, - - {LOSSLESS, ENC, HEVC, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, - V4L2_CID_MPEG_VIDEO_HEVC_LOSSLESS_CU}, - - {FRAME_SKIP_MODE, ENC, H264|HEVC|HEIC, - V4L2_MPEG_VIDEO_FRAME_SKIP_MODE_DISABLED, - V4L2_MPEG_VIDEO_FRAME_SKIP_MODE_BUF_LIMIT, - BIT(V4L2_MPEG_VIDEO_FRAME_SKIP_MODE_DISABLED) | - BIT(V4L2_MPEG_VIDEO_FRAME_SKIP_MODE_LEVEL_LIMIT) | - BIT(V4L2_MPEG_VIDEO_FRAME_SKIP_MODE_BUF_LIMIT), - V4L2_MPEG_VIDEO_FRAME_SKIP_MODE_DISABLED, - V4L2_CID_MPEG_VIDEO_FRAME_SKIP_MODE, - 0, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU}, - - {FRAME_RC_ENABLE, ENC, H264|HEVC|HEIC, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_ENABLE, - V4L2_CID_MPEG_VIDEO_FRAME_RC_ENABLE}, - - {CONSTANT_QUALITY, ENC, HEVC, - 1, MAX_CONSTANT_QUALITY, 1, 90, - V4L2_CID_MPEG_VIDEO_CONSTANT_QUALITY, - HFI_PROP_CONSTANT_QUALITY, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT | - CAP_FLAG_DYNAMIC_ALLOWED, - {BITRATE_MODE}, {0}, - NULL, msm_vidc_set_constant_quality}, - - {GOP_SIZE, ENC, CODECS_ALL, - 0, INT_MAX, 1, 2 * DEFAULT_FPS - 1, - V4L2_CID_MPEG_VIDEO_GOP_SIZE, - HFI_PROP_MAX_GOP_FRAMES, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT | - CAP_FLAG_DYNAMIC_ALLOWED, - {ENH_LAYER_COUNT}, - {ALL_INTRA}, - msm_vidc_adjust_gop_size, msm_vidc_set_gop_size}, - - {GOP_CLOSURE, ENC, H264|HEVC, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_ENABLE, - V4L2_CID_MPEG_VIDEO_GOP_CLOSURE, - 0}, - - {B_FRAME, ENC, H264|HEVC, - 0, 7, 1, 0, - V4L2_CID_MPEG_VIDEO_B_FRAMES, - HFI_PROP_MAX_B_FRAMES, - CAP_FLAG_OUTPUT_PORT, - {ENH_LAYER_COUNT}, - {ALL_INTRA}, - msm_vidc_adjust_b_frame, msm_vidc_set_u32}, - - {BLUR_TYPES, ENC, H264|HEVC, - VIDC_BLUR_NONE, VIDC_BLUR_ADAPTIVE, - BIT(VIDC_BLUR_NONE) | BIT(VIDC_BLUR_EXTERNAL) | BIT(VIDC_BLUR_ADAPTIVE), - VIDC_BLUR_ADAPTIVE, - V4L2_CID_MPEG_VIDC_VIDEO_BLUR_TYPES, - HFI_PROP_BLUR_TYPES, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU, - {PIX_FMTS, BITRATE_MODE, CONTENT_ADAPTIVE_CODING, MIN_QUALITY}, - {BLUR_RESOLUTION}, - msm_vidc_adjust_blur_type, msm_vidc_set_u32_enum}, - - {BLUR_RESOLUTION, ENC, CODECS_ALL, - 0, S32_MAX, 1, 0, - V4L2_CID_MPEG_VIDC_VIDEO_BLUR_RESOLUTION, - HFI_PROP_BLUR_RESOLUTION, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT | - CAP_FLAG_DYNAMIC_ALLOWED, - {BLUR_TYPES}, - {0}, - msm_vidc_adjust_blur_resolution, msm_vidc_set_blur_resolution}, - - {CSC, ENC, CODECS_ALL, - V4L2_MPEG_MSM_VIDC_DISABLE, - V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, - 0, - HFI_PROP_CSC}, - - {CSC_CUSTOM_MATRIX, ENC, CODECS_ALL, - V4L2_MPEG_MSM_VIDC_DISABLE, - V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, - V4L2_CID_MPEG_VIDC_VIDEO_VPE_CSC_CUSTOM_MATRIX, - HFI_PROP_CSC_MATRIX, - CAP_FLAG_OUTPUT_PORT, - {0}, {0}, - NULL, msm_vidc_set_csc_custom_matrix}, - - {LOWLATENCY_MODE, ENC, H264 | HEVC, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, - V4L2_CID_MPEG_VIDC_LOWLATENCY_REQUEST, - 0, - CAP_FLAG_NONE, - {BITRATE_MODE}, - {STAGE}, - msm_vidc_adjust_lowlatency_mode, NULL}, - - {LOWLATENCY_MODE, DEC, H264|HEVC|VP9, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, - V4L2_CID_MPEG_VIDC_LOWLATENCY_REQUEST, - HFI_PROP_SEQ_CHANGE_AT_SYNC_FRAME, - CAP_FLAG_INPUT_PORT | CAP_FLAG_DYNAMIC_ALLOWED}, - - {LTR_COUNT, ENC, H264|HEVC, - 0, 2, 1, 0, - V4L2_CID_MPEG_VIDEO_LTR_COUNT, - HFI_PROP_LTR_COUNT, - CAP_FLAG_OUTPUT_PORT, - {BITRATE_MODE, ALL_INTRA}, {0}, - msm_vidc_adjust_ltr_count, msm_vidc_set_u32}, - - {USE_LTR, ENC, H264|HEVC, - INVALID_DEFAULT_MARK_OR_USE_LTR, - ((1 << MAX_LTR_FRAME_COUNT) - 1), - 1, INVALID_DEFAULT_MARK_OR_USE_LTR, - V4L2_CID_MPEG_VIDEO_USE_LTR_FRAMES, - HFI_PROP_LTR_USE, - CAP_FLAG_INPUT_PORT | CAP_FLAG_DYNAMIC_ALLOWED, - {0}, {0}, - msm_vidc_adjust_use_ltr, msm_vidc_set_use_and_mark_ltr}, - - {MARK_LTR, ENC, H264|HEVC, - INVALID_DEFAULT_MARK_OR_USE_LTR, - (MAX_LTR_FRAME_COUNT - 1), - 1, INVALID_DEFAULT_MARK_OR_USE_LTR, - V4L2_CID_MPEG_VIDEO_FRAME_LTR_INDEX, - HFI_PROP_LTR_MARK, - CAP_FLAG_INPUT_PORT | CAP_FLAG_DYNAMIC_ALLOWED, - {0}, {0}, - msm_vidc_adjust_mark_ltr, msm_vidc_set_use_and_mark_ltr}, - - {BASELAYER_PRIORITY, ENC, H264, - 0, MAX_BASE_LAYER_PRIORITY_ID, 1, 0, - V4L2_CID_MPEG_VIDEO_BASELAYER_PRIORITY_ID, - HFI_PROP_BASELAYER_PRIORITYID, - CAP_FLAG_OUTPUT_PORT}, - - {IR_RANDOM, ENC, H264|HEVC, - 0, INT_MAX, 1, 0, - V4L2_CID_MPEG_VIDC_INTRA_REFRESH_PERIOD, - HFI_PROP_IR_RANDOM_PERIOD, - CAP_FLAG_OUTPUT_PORT, - {BITRATE_MODE, ALL_INTRA}, {0}, - msm_vidc_adjust_ir_random, msm_vidc_set_u32}, - - {AU_DELIMITER, ENC, H264|HEVC, - V4L2_MPEG_MSM_VIDC_DISABLE, - V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, - V4L2_CID_MPEG_VIDEO_AU_DELIMITER, - HFI_PROP_AUD, - CAP_FLAG_OUTPUT_PORT, - {0}, {0}, - NULL, msm_vidc_set_u32}, - - {TIME_DELTA_BASED_RC, ENC, CODECS_ALL, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_ENABLE, - V4L2_CID_MPEG_VIDC_TIME_DELTA_BASED_RC, - HFI_PROP_TIME_DELTA_BASED_RATE_CONTROL, - CAP_FLAG_OUTPUT_PORT, - {BITRATE_MODE}, {0}, - msm_vidc_adjust_delta_based_rc, msm_vidc_set_u32}, - - {CONTENT_ADAPTIVE_CODING, ENC, H264|HEVC, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_ENABLE, - V4L2_CID_MPEG_VIDC_CONTENT_ADAPTIVE_CODING, - HFI_PROP_CONTENT_ADAPTIVE_CODING, - CAP_FLAG_OUTPUT_PORT, - {BITRATE_MODE, MIN_QUALITY}, - {BLUR_TYPES}, - msm_vidc_adjust_cac, - msm_vidc_set_vbr_related_properties}, - - {BITRATE_BOOST, ENC, H264|HEVC, - 0, MAX_BITRATE_BOOST, 25, MAX_BITRATE_BOOST, - V4L2_CID_MPEG_VIDC_QUALITY_BITRATE_BOOST, - HFI_PROP_BITRATE_BOOST, - CAP_FLAG_OUTPUT_PORT, - {BITRATE_MODE, MIN_QUALITY}, - {0}, - msm_vidc_adjust_bitrate_boost, - msm_vidc_set_vbr_related_properties}, - - {MIN_QUALITY, ENC, H264, - 0, MAX_SUPPORTED_MIN_QUALITY, 70, MAX_SUPPORTED_MIN_QUALITY, - 0, - HFI_PROP_MAINTAIN_MIN_QUALITY, - CAP_FLAG_OUTPUT_PORT, - {BITRATE_MODE, ENH_LAYER_COUNT, META_ROI_INFO}, - {CONTENT_ADAPTIVE_CODING, BITRATE_BOOST, BLUR_TYPES}, - msm_vidc_adjust_min_quality, - msm_vidc_set_vbr_related_properties}, - - {MIN_QUALITY, ENC, HEVC, - 0, MAX_SUPPORTED_MIN_QUALITY, 70, MAX_SUPPORTED_MIN_QUALITY, - 0, - HFI_PROP_MAINTAIN_MIN_QUALITY, - CAP_FLAG_OUTPUT_PORT, - {BITRATE_MODE, PIX_FMTS, ENH_LAYER_COUNT, - META_ROI_INFO}, - {CONTENT_ADAPTIVE_CODING, BITRATE_BOOST, BLUR_TYPES}, - msm_vidc_adjust_min_quality, - msm_vidc_set_vbr_related_properties}, - - {VBV_DELAY, ENC, H264|HEVC, - 200, 300, 100, 300, - V4L2_CID_MPEG_VIDEO_VBV_DELAY, - HFI_PROP_VBV_DELAY, - CAP_FLAG_OUTPUT_PORT, - {BITRATE_MODE}, - {0}, - NULL, msm_vidc_set_cbr_related_properties}, - - {PEAK_BITRATE, ENC, H264|HEVC, - /* default peak bitrate is 10% larger than avrg bitrate */ - 1, MAX_BITRATE_V1, 1, DEFAULT_BITRATE, - V4L2_CID_MPEG_VIDEO_BITRATE_PEAK, - HFI_PROP_TOTAL_PEAK_BITRATE, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT | - CAP_FLAG_DYNAMIC_ALLOWED, - {BITRATE_MODE, BIT_RATE}, - {0}, - msm_vidc_adjust_peak_bitrate, - msm_vidc_set_cbr_related_properties}, - - {MIN_FRAME_QP, ENC, H264, - MIN_QP_8BIT, MAX_QP, 1, MIN_QP_8BIT, - V4L2_CID_MPEG_VIDEO_H264_MIN_QP, - HFI_PROP_MIN_QP_PACKED, - CAP_FLAG_OUTPUT_PORT, - {0}, {0}, - NULL, msm_vidc_set_min_qp}, - - {MIN_FRAME_QP, ENC, HEVC|HEIC, - MIN_QP_10BIT, MAX_QP, 1, MIN_QP_10BIT, - V4L2_CID_MPEG_VIDEO_HEVC_MIN_QP, - HFI_PROP_MIN_QP_PACKED, - CAP_FLAG_OUTPUT_PORT, - {PIX_FMTS}, {0}, - msm_vidc_adjust_hevc_min_qp, msm_vidc_set_min_qp}, - - {I_FRAME_MIN_QP, ENC, H264, - MIN_QP_8BIT, MAX_QP, 1, MIN_QP_8BIT, - V4L2_CID_MPEG_VIDEO_H264_I_FRAME_MIN_QP}, - - {I_FRAME_MIN_QP, ENC, HEVC|HEIC, - MIN_QP_10BIT, MAX_QP, 1, MIN_QP_10BIT, - V4L2_CID_MPEG_VIDEO_HEVC_I_FRAME_MIN_QP}, - - {P_FRAME_MIN_QP, ENC, H264, - MIN_QP_8BIT, MAX_QP, 1, MIN_QP_8BIT, - V4L2_CID_MPEG_VIDEO_H264_P_FRAME_MIN_QP}, - - {P_FRAME_MIN_QP, ENC, HEVC|HEIC, - MIN_QP_10BIT, MAX_QP, 1, MIN_QP_10BIT, - V4L2_CID_MPEG_VIDEO_HEVC_P_FRAME_MIN_QP}, - - {B_FRAME_MIN_QP, ENC, H264, - MIN_QP_8BIT, MAX_QP, 1, MIN_QP_8BIT, - V4L2_CID_MPEG_VIDEO_H264_B_FRAME_MIN_QP}, - - {B_FRAME_MIN_QP, ENC, HEVC|HEIC, - MIN_QP_10BIT, MAX_QP, 1, MIN_QP_10BIT, - V4L2_CID_MPEG_VIDEO_HEVC_B_FRAME_MIN_QP}, - - {MAX_FRAME_QP, ENC, H264, - MIN_QP_8BIT, MAX_QP, 1, MAX_QP, - V4L2_CID_MPEG_VIDEO_H264_MAX_QP, - HFI_PROP_MAX_QP_PACKED, - CAP_FLAG_OUTPUT_PORT, - {0}, {0}, - NULL, msm_vidc_set_max_qp}, - - {MAX_FRAME_QP, ENC, HEVC|HEIC, - MIN_QP_10BIT, MAX_QP, 1, MAX_QP, - V4L2_CID_MPEG_VIDEO_HEVC_MAX_QP, - HFI_PROP_MAX_QP_PACKED, - CAP_FLAG_OUTPUT_PORT, - {PIX_FMTS}, {0}, - msm_vidc_adjust_hevc_max_qp, msm_vidc_set_max_qp}, - - {I_FRAME_MAX_QP, ENC, H264, - MIN_QP_8BIT, MAX_QP, 1, MAX_QP, - V4L2_CID_MPEG_VIDEO_H264_I_FRAME_MAX_QP}, - - {I_FRAME_MAX_QP, ENC, HEVC|HEIC, - MIN_QP_10BIT, MAX_QP, 1, MAX_QP, - V4L2_CID_MPEG_VIDEO_HEVC_I_FRAME_MAX_QP}, - - {P_FRAME_MAX_QP, ENC, H264, - MIN_QP_8BIT, MAX_QP, 1, MAX_QP, - V4L2_CID_MPEG_VIDEO_H264_P_FRAME_MAX_QP}, - - {P_FRAME_MAX_QP, ENC, HEVC|HEIC, - MIN_QP_10BIT, MAX_QP, 1, MAX_QP, - V4L2_CID_MPEG_VIDEO_HEVC_P_FRAME_MAX_QP}, - - {B_FRAME_MAX_QP, ENC, H264, - MIN_QP_8BIT, MAX_QP, 1, MAX_QP, - V4L2_CID_MPEG_VIDEO_H264_B_FRAME_MAX_QP}, - - {B_FRAME_MAX_QP, ENC, HEVC|HEIC, - MIN_QP_10BIT, MAX_QP, 1, MAX_QP, - V4L2_CID_MPEG_VIDEO_HEVC_B_FRAME_MAX_QP}, - - {I_FRAME_QP, ENC, HEVC, - MIN_QP_10BIT, MAX_QP, 1, DEFAULT_QP, - V4L2_CID_MPEG_VIDEO_HEVC_I_FRAME_QP, - HFI_PROP_QP_PACKED, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT | - CAP_FLAG_DYNAMIC_ALLOWED, - {PIX_FMTS, BITRATE_MODE}, {0}, - msm_vidc_adjust_hevc_i_frame_qp, msm_vidc_set_frame_qp}, - - {I_FRAME_QP, ENC, H264, - MIN_QP_8BIT, MAX_QP, 1, DEFAULT_QP, - V4L2_CID_MPEG_VIDEO_H264_I_FRAME_QP, - HFI_PROP_QP_PACKED, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT | - CAP_FLAG_DYNAMIC_ALLOWED, - {BITRATE_MODE}, {0}, - NULL, msm_vidc_set_frame_qp}, - - {P_FRAME_QP, ENC, HEVC, - MIN_QP_10BIT, MAX_QP, 1, DEFAULT_QP, - V4L2_CID_MPEG_VIDEO_HEVC_P_FRAME_QP, - HFI_PROP_QP_PACKED, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT | - CAP_FLAG_DYNAMIC_ALLOWED, - {PIX_FMTS, BITRATE_MODE}, {0}, - msm_vidc_adjust_hevc_p_frame_qp, msm_vidc_set_frame_qp}, - - {P_FRAME_QP, ENC, H264, - MIN_QP_8BIT, MAX_QP, 1, DEFAULT_QP, - V4L2_CID_MPEG_VIDEO_H264_P_FRAME_QP, - HFI_PROP_QP_PACKED, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT | - CAP_FLAG_DYNAMIC_ALLOWED, - {BITRATE_MODE}, {0}, - NULL, msm_vidc_set_frame_qp}, - - {B_FRAME_QP, ENC, HEVC, - MIN_QP_10BIT, MAX_QP, 1, DEFAULT_QP, - V4L2_CID_MPEG_VIDEO_HEVC_B_FRAME_QP, - HFI_PROP_QP_PACKED, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT | - CAP_FLAG_DYNAMIC_ALLOWED, - {PIX_FMTS, BITRATE_MODE}, {0}, - msm_vidc_adjust_hevc_b_frame_qp, msm_vidc_set_frame_qp}, - - {B_FRAME_QP, ENC, H264, - MIN_QP_8BIT, MAX_QP, 1, DEFAULT_QP, - V4L2_CID_MPEG_VIDEO_H264_B_FRAME_QP, - HFI_PROP_QP_PACKED, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT | - CAP_FLAG_DYNAMIC_ALLOWED, - {BITRATE_MODE}, {0}, - NULL, msm_vidc_set_frame_qp}, - - {LAYER_TYPE, ENC, HEVC, - V4L2_MPEG_VIDEO_HEVC_HIERARCHICAL_CODING_B, - V4L2_MPEG_VIDEO_HEVC_HIERARCHICAL_CODING_P, - BIT(V4L2_MPEG_VIDEO_HEVC_HIERARCHICAL_CODING_B) | - BIT(V4L2_MPEG_VIDEO_HEVC_HIERARCHICAL_CODING_P), - V4L2_MPEG_VIDEO_HEVC_HIERARCHICAL_CODING_P, - V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_TYPE, - HFI_PROP_LAYER_ENCODING_TYPE, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU}, - - {LAYER_TYPE, ENC, H264, - V4L2_MPEG_VIDEO_H264_HIERARCHICAL_CODING_B, - V4L2_MPEG_VIDEO_H264_HIERARCHICAL_CODING_P, - BIT(V4L2_MPEG_VIDEO_H264_HIERARCHICAL_CODING_B) | - BIT(V4L2_MPEG_VIDEO_H264_HIERARCHICAL_CODING_P), - V4L2_MPEG_VIDEO_H264_HIERARCHICAL_CODING_P, - V4L2_CID_MPEG_VIDEO_H264_HIERARCHICAL_CODING_TYPE, - HFI_PROP_LAYER_ENCODING_TYPE, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU}, - - {LAYER_ENABLE, ENC, H264, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, - V4L2_CID_MPEG_VIDEO_H264_HIERARCHICAL_CODING, - HFI_PROP_LAYER_ENCODING_TYPE, - CAP_FLAG_OUTPUT_PORT}, - - {ENH_LAYER_COUNT, ENC, HEVC, - 0, 5, 1, 0, - V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_LAYER, - HFI_PROP_LAYER_COUNT, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT | - CAP_FLAG_DYNAMIC_ALLOWED, - {BITRATE_MODE, META_EVA_STATS}, - {GOP_SIZE, B_FRAME, BIT_RATE, MIN_QUALITY}, - msm_vidc_adjust_layer_count, msm_vidc_set_layer_count_and_type}, - - {ENH_LAYER_COUNT, ENC, H264, - 0, 5, 1, 0, - V4L2_CID_MPEG_VIDEO_H264_HIERARCHICAL_CODING_LAYER, - HFI_PROP_LAYER_COUNT, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT | - CAP_FLAG_DYNAMIC_ALLOWED, - {BITRATE_MODE, META_EVA_STATS}, - {GOP_SIZE, B_FRAME, BIT_RATE, MIN_QUALITY}, - msm_vidc_adjust_layer_count, msm_vidc_set_layer_count_and_type}, - - /* - * layer bitrate is treated as BIT_RATE cap sibling and - * is handled in bitrate adjust and set functions - */ - {L0_BR, ENC, HEVC, - 1, MAX_BITRATE_V1, 1, DEFAULT_BITRATE, - V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L0_BR, - HFI_PROP_BITRATE_LAYER1, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT | - CAP_FLAG_DYNAMIC_ALLOWED, - {0}, {0}, - msm_vidc_adjust_dynamic_layer_bitrate, - msm_vidc_set_dynamic_layer_bitrate}, - - {L1_BR, ENC, HEVC, - 1, MAX_BITRATE_V1, 1, DEFAULT_BITRATE, - V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L1_BR, - HFI_PROP_BITRATE_LAYER2, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT | - CAP_FLAG_DYNAMIC_ALLOWED, - {0}, {0}, - msm_vidc_adjust_dynamic_layer_bitrate, - msm_vidc_set_dynamic_layer_bitrate}, - - {L2_BR, ENC, HEVC, - 1, MAX_BITRATE_V1, 1, DEFAULT_BITRATE, - V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L2_BR, - HFI_PROP_BITRATE_LAYER3, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT | - CAP_FLAG_DYNAMIC_ALLOWED, - {0}, {0}, - msm_vidc_adjust_dynamic_layer_bitrate, - msm_vidc_set_dynamic_layer_bitrate}, - - {L3_BR, ENC, HEVC, - 1, MAX_BITRATE_V1, 1, DEFAULT_BITRATE, - V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L3_BR, - HFI_PROP_BITRATE_LAYER4, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT | - CAP_FLAG_DYNAMIC_ALLOWED, - {0}, {0}, - msm_vidc_adjust_dynamic_layer_bitrate, - msm_vidc_set_dynamic_layer_bitrate}, - - {L4_BR, ENC, HEVC, - 1, MAX_BITRATE_V1, 1, DEFAULT_BITRATE, - V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L4_BR, - HFI_PROP_BITRATE_LAYER5, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT | - CAP_FLAG_DYNAMIC_ALLOWED, - {0}, {0}, - msm_vidc_adjust_dynamic_layer_bitrate, - msm_vidc_set_dynamic_layer_bitrate}, - - {L5_BR, ENC, HEVC, - 1, MAX_BITRATE_V1, 1, DEFAULT_BITRATE, - V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L5_BR, - HFI_PROP_BITRATE_LAYER6, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT | - CAP_FLAG_DYNAMIC_ALLOWED, - {0}, {0}, - msm_vidc_adjust_dynamic_layer_bitrate, - msm_vidc_set_dynamic_layer_bitrate}, - - {L0_BR, ENC, H264, - 1, MAX_BITRATE_V1, 1, DEFAULT_BITRATE, - V4L2_CID_MPEG_VIDEO_H264_HIER_CODING_L0_BR, - HFI_PROP_BITRATE_LAYER1, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT | - CAP_FLAG_DYNAMIC_ALLOWED, - {0}, {0}, - msm_vidc_adjust_dynamic_layer_bitrate, - msm_vidc_set_dynamic_layer_bitrate}, - - {L1_BR, ENC, H264, - 1, MAX_BITRATE_V1, 1, DEFAULT_BITRATE, - V4L2_CID_MPEG_VIDEO_H264_HIER_CODING_L1_BR, - HFI_PROP_BITRATE_LAYER2, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT | - CAP_FLAG_DYNAMIC_ALLOWED, - {0}, {0}, - msm_vidc_adjust_dynamic_layer_bitrate, - msm_vidc_set_dynamic_layer_bitrate}, - - {L2_BR, ENC, H264, - 1, MAX_BITRATE_V1, 1, DEFAULT_BITRATE, - V4L2_CID_MPEG_VIDEO_H264_HIER_CODING_L2_BR, - HFI_PROP_BITRATE_LAYER3, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT | - CAP_FLAG_DYNAMIC_ALLOWED, - {0}, {0}, - msm_vidc_adjust_dynamic_layer_bitrate, - msm_vidc_set_dynamic_layer_bitrate}, - - {L3_BR, ENC, H264, - 1, MAX_BITRATE_V1, 1, DEFAULT_BITRATE, - V4L2_CID_MPEG_VIDEO_H264_HIER_CODING_L3_BR, - HFI_PROP_BITRATE_LAYER4, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT | - CAP_FLAG_DYNAMIC_ALLOWED, - {0}, {0}, - msm_vidc_adjust_dynamic_layer_bitrate, - msm_vidc_set_dynamic_layer_bitrate}, - - {L4_BR, ENC, H264, - 1, MAX_BITRATE_V1, 1, DEFAULT_BITRATE, - V4L2_CID_MPEG_VIDEO_H264_HIER_CODING_L4_BR, - HFI_PROP_BITRATE_LAYER5, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT | - CAP_FLAG_DYNAMIC_ALLOWED, - {0}, {0}, - msm_vidc_adjust_dynamic_layer_bitrate, - msm_vidc_set_dynamic_layer_bitrate}, - - {L5_BR, ENC, H264, - 1, MAX_BITRATE_V1, 1, DEFAULT_BITRATE, - V4L2_CID_MPEG_VIDEO_H264_HIER_CODING_L5_BR, - HFI_PROP_BITRATE_LAYER6, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT | - CAP_FLAG_DYNAMIC_ALLOWED, - {0}, {0}, - msm_vidc_adjust_dynamic_layer_bitrate, - msm_vidc_set_dynamic_layer_bitrate}, - - {ENTROPY_MODE, ENC, H264, - V4L2_MPEG_VIDEO_H264_ENTROPY_MODE_CAVLC, - V4L2_MPEG_VIDEO_H264_ENTROPY_MODE_CABAC, - BIT(V4L2_MPEG_VIDEO_H264_ENTROPY_MODE_CAVLC) | - BIT(V4L2_MPEG_VIDEO_H264_ENTROPY_MODE_CABAC), - V4L2_MPEG_VIDEO_H264_ENTROPY_MODE_CABAC, - V4L2_CID_MPEG_VIDEO_H264_ENTROPY_MODE, - HFI_PROP_CABAC_SESSION, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU, - {PROFILE}, - {0}, - msm_vidc_adjust_entropy_mode, msm_vidc_set_u32}, - - {ENTROPY_MODE, DEC, H264|HEVC|VP9, - V4L2_MPEG_VIDEO_H264_ENTROPY_MODE_CAVLC, - V4L2_MPEG_VIDEO_H264_ENTROPY_MODE_CABAC, - BIT(V4L2_MPEG_VIDEO_H264_ENTROPY_MODE_CAVLC) | - BIT(V4L2_MPEG_VIDEO_H264_ENTROPY_MODE_CABAC), - V4L2_MPEG_VIDEO_H264_ENTROPY_MODE_CABAC, - 0, - HFI_PROP_CABAC_SESSION}, - - /* H264 does not support 10 bit, PIX_FMTS would not be a Parent for this */ - {PROFILE, ENC, H264, - V4L2_MPEG_VIDEO_H264_PROFILE_BASELINE, - V4L2_MPEG_VIDEO_H264_PROFILE_CONSTRAINED_HIGH, - BIT(V4L2_MPEG_VIDEO_H264_PROFILE_BASELINE) | - BIT(V4L2_MPEG_VIDEO_H264_PROFILE_CONSTRAINED_HIGH) | - BIT(V4L2_MPEG_VIDEO_H264_PROFILE_CONSTRAINED_BASELINE) | - BIT(V4L2_MPEG_VIDEO_H264_PROFILE_MAIN) | - BIT(V4L2_MPEG_VIDEO_H264_PROFILE_HIGH), - V4L2_MPEG_VIDEO_H264_PROFILE_HIGH, - V4L2_CID_MPEG_VIDEO_H264_PROFILE, - HFI_PROP_PROFILE, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU, - {0}, - {ENTROPY_MODE, TRANSFORM_8X8}, - NULL, msm_vidc_set_u32_enum}, - - {PROFILE, DEC, H264, - V4L2_MPEG_VIDEO_H264_PROFILE_BASELINE, - V4L2_MPEG_VIDEO_H264_PROFILE_CONSTRAINED_HIGH, - BIT(V4L2_MPEG_VIDEO_H264_PROFILE_BASELINE) | - BIT(V4L2_MPEG_VIDEO_H264_PROFILE_CONSTRAINED_HIGH) | - BIT(V4L2_MPEG_VIDEO_H264_PROFILE_CONSTRAINED_BASELINE) | - BIT(V4L2_MPEG_VIDEO_H264_PROFILE_MAIN) | - BIT(V4L2_MPEG_VIDEO_H264_PROFILE_HIGH), - V4L2_MPEG_VIDEO_H264_PROFILE_HIGH, - V4L2_CID_MPEG_VIDEO_H264_PROFILE, - HFI_PROP_PROFILE, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU, - {0}, - {ENTROPY_MODE}, - NULL, msm_vidc_set_u32_enum}, - - {PROFILE, ENC|DEC, HEVC|HEIC, - V4L2_MPEG_VIDEO_HEVC_PROFILE_MAIN, - V4L2_MPEG_VIDEO_HEVC_PROFILE_MAIN_10_STILL_PICTURE, - BIT(V4L2_MPEG_VIDEO_HEVC_PROFILE_MAIN) | - BIT(V4L2_MPEG_VIDEO_HEVC_PROFILE_MAIN_STILL_PICTURE) | - BIT(V4L2_MPEG_VIDEO_HEVC_PROFILE_MAIN_10) | - BIT(V4L2_MPEG_VIDEO_HEVC_PROFILE_MAIN_10_STILL_PICTURE), - V4L2_MPEG_VIDEO_HEVC_PROFILE_MAIN, - V4L2_CID_MPEG_VIDEO_HEVC_PROFILE, - HFI_PROP_PROFILE, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU, - {PIX_FMTS}, - {0}, - msm_vidc_adjust_profile, msm_vidc_set_u32_enum}, - - {PROFILE, DEC, VP9, - V4L2_MPEG_VIDEO_VP9_PROFILE_0, - V4L2_MPEG_VIDEO_VP9_PROFILE_2, - BIT(V4L2_MPEG_VIDEO_VP9_PROFILE_0) | - BIT(V4L2_MPEG_VIDEO_VP9_PROFILE_2), - V4L2_MPEG_VIDEO_VP9_PROFILE_0, - V4L2_CID_MPEG_VIDEO_VP9_PROFILE, - HFI_PROP_PROFILE, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU, - {0}, - {0}, - NULL, msm_vidc_set_u32_enum}, - - {LEVEL, DEC, VP9, - V4L2_MPEG_VIDEO_VP9_LEVEL_1_0, - V4L2_MPEG_VIDEO_VP9_LEVEL_5_1, - BIT(V4L2_MPEG_VIDEO_VP9_LEVEL_1_0) | - BIT(V4L2_MPEG_VIDEO_VP9_LEVEL_1_1) | - BIT(V4L2_MPEG_VIDEO_VP9_LEVEL_2_0) | - BIT(V4L2_MPEG_VIDEO_VP9_LEVEL_2_1) | - BIT(V4L2_MPEG_VIDEO_VP9_LEVEL_3_0) | - BIT(V4L2_MPEG_VIDEO_VP9_LEVEL_3_1) | - BIT(V4L2_MPEG_VIDEO_VP9_LEVEL_4_0) | - BIT(V4L2_MPEG_VIDEO_VP9_LEVEL_4_1) | - BIT(V4L2_MPEG_VIDEO_VP9_LEVEL_5_0) | - BIT(V4L2_MPEG_VIDEO_VP9_LEVEL_5_1), - V4L2_MPEG_VIDEO_VP9_LEVEL_5_1, - V4L2_CID_MPEG_VIDEO_VP9_LEVEL, - HFI_PROP_LEVEL, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU, - {0}, - {0}, - NULL, msm_vidc_set_u32_enum}, - - {LEVEL, DEC, H264, - V4L2_MPEG_VIDEO_H264_LEVEL_1_0, - V4L2_MPEG_VIDEO_H264_LEVEL_5_2, - BIT(V4L2_MPEG_VIDEO_H264_LEVEL_1_0) | - BIT(V4L2_MPEG_VIDEO_H264_LEVEL_1B) | - BIT(V4L2_MPEG_VIDEO_H264_LEVEL_1_1) | - BIT(V4L2_MPEG_VIDEO_H264_LEVEL_1_2) | - BIT(V4L2_MPEG_VIDEO_H264_LEVEL_1_3) | - BIT(V4L2_MPEG_VIDEO_H264_LEVEL_2_0) | - BIT(V4L2_MPEG_VIDEO_H264_LEVEL_2_1) | - BIT(V4L2_MPEG_VIDEO_H264_LEVEL_2_2) | - BIT(V4L2_MPEG_VIDEO_H264_LEVEL_3_0) | - BIT(V4L2_MPEG_VIDEO_H264_LEVEL_3_1) | - BIT(V4L2_MPEG_VIDEO_H264_LEVEL_3_2) | - BIT(V4L2_MPEG_VIDEO_H264_LEVEL_4_0) | - BIT(V4L2_MPEG_VIDEO_H264_LEVEL_4_1) | - BIT(V4L2_MPEG_VIDEO_H264_LEVEL_4_2) | - BIT(V4L2_MPEG_VIDEO_H264_LEVEL_5_0) | - BIT(V4L2_MPEG_VIDEO_H264_LEVEL_5_1) | - BIT(V4L2_MPEG_VIDEO_H264_LEVEL_5_2), - V4L2_MPEG_VIDEO_H264_LEVEL_5_2, - V4L2_CID_MPEG_VIDEO_H264_LEVEL, - HFI_PROP_LEVEL, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU, - {0}, - {0}, - NULL, msm_vidc_set_u32_enum}, - - {LEVEL, ENC, H264, - V4L2_MPEG_VIDEO_H264_LEVEL_1_0, - V4L2_MPEG_VIDEO_H264_LEVEL_5_2, - BIT(V4L2_MPEG_VIDEO_H264_LEVEL_1_0) | - BIT(V4L2_MPEG_VIDEO_H264_LEVEL_1B) | - BIT(V4L2_MPEG_VIDEO_H264_LEVEL_1_1) | - BIT(V4L2_MPEG_VIDEO_H264_LEVEL_1_2) | - BIT(V4L2_MPEG_VIDEO_H264_LEVEL_1_3) | - BIT(V4L2_MPEG_VIDEO_H264_LEVEL_2_0) | - BIT(V4L2_MPEG_VIDEO_H264_LEVEL_2_1) | - BIT(V4L2_MPEG_VIDEO_H264_LEVEL_2_2) | - BIT(V4L2_MPEG_VIDEO_H264_LEVEL_3_0) | - BIT(V4L2_MPEG_VIDEO_H264_LEVEL_3_1) | - BIT(V4L2_MPEG_VIDEO_H264_LEVEL_3_2) | - BIT(V4L2_MPEG_VIDEO_H264_LEVEL_4_0) | - BIT(V4L2_MPEG_VIDEO_H264_LEVEL_4_1) | - BIT(V4L2_MPEG_VIDEO_H264_LEVEL_4_2) | - BIT(V4L2_MPEG_VIDEO_H264_LEVEL_5_0) | - BIT(V4L2_MPEG_VIDEO_H264_LEVEL_5_1) | - BIT(V4L2_MPEG_VIDEO_H264_LEVEL_5_2), - V4L2_MPEG_VIDEO_H264_LEVEL_5_2, - V4L2_CID_MPEG_VIDEO_H264_LEVEL, - HFI_PROP_LEVEL, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU, - {0}, - {0}, - NULL, msm_vidc_set_level}, - - {LEVEL, DEC, HEVC|HEIC, - V4L2_MPEG_VIDEO_HEVC_LEVEL_1, - V4L2_MPEG_VIDEO_HEVC_LEVEL_5_1, - BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_1) | - BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_2) | - BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_2_1) | - BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_3) | - BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_3_1) | - BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_4) | - BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_4_1) | - BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_5) | - BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_5_1), - V4L2_MPEG_VIDEO_HEVC_LEVEL_5_1, - V4L2_CID_MPEG_VIDEO_HEVC_LEVEL, - HFI_PROP_LEVEL, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU, - {0}, - {0}, - NULL, msm_vidc_set_u32_enum}, - - {LEVEL, ENC, HEVC|HEIC, - V4L2_MPEG_VIDEO_HEVC_LEVEL_1, - V4L2_MPEG_VIDEO_HEVC_LEVEL_5_1, - BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_1) | - BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_2) | - BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_2_1) | - BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_3) | - BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_3_1) | - BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_4) | - BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_4_1) | - BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_5) | - BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_5_1), - V4L2_MPEG_VIDEO_HEVC_LEVEL_5_1, - V4L2_CID_MPEG_VIDEO_HEVC_LEVEL, - HFI_PROP_LEVEL, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU, - {0}, - {0}, - NULL, msm_vidc_set_level}, - - /* TODO: Bring the VP9 Level upstream GKI change, and level cap here: - * go/videogki - */ - - {HEVC_TIER, ENC|DEC, HEVC, - V4L2_MPEG_VIDEO_HEVC_TIER_MAIN, - V4L2_MPEG_VIDEO_HEVC_TIER_HIGH, - BIT(V4L2_MPEG_VIDEO_HEVC_TIER_MAIN) | - BIT(V4L2_MPEG_VIDEO_HEVC_TIER_HIGH), - V4L2_MPEG_VIDEO_HEVC_TIER_HIGH, - V4L2_CID_MPEG_VIDEO_HEVC_TIER, - HFI_PROP_TIER, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU, - {0}, - {0}, - NULL, msm_vidc_set_u32_enum}, - - {LF_MODE, ENC, H264, - V4L2_MPEG_VIDEO_H264_LOOP_FILTER_MODE_ENABLED, - DB_H264_DISABLE_SLICE_BOUNDARY, - BIT(V4L2_MPEG_VIDEO_H264_LOOP_FILTER_MODE_ENABLED) | - BIT(V4L2_MPEG_VIDEO_H264_LOOP_FILTER_MODE_DISABLED) | - BIT(DB_H264_DISABLE_SLICE_BOUNDARY), - V4L2_MPEG_VIDEO_H264_LOOP_FILTER_MODE_ENABLED, - V4L2_CID_MPEG_VIDEO_H264_LOOP_FILTER_MODE, - HFI_PROP_DEBLOCKING_MODE, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU, - {0}, {0}, - NULL, msm_vidc_set_deblock_mode}, - - {LF_MODE, ENC, HEVC|HEIC, - V4L2_MPEG_VIDEO_HEVC_LOOP_FILTER_MODE_DISABLED, - DB_HEVC_DISABLE_SLICE_BOUNDARY, - BIT(V4L2_MPEG_VIDEO_HEVC_LOOP_FILTER_MODE_DISABLED) | - BIT(V4L2_MPEG_VIDEO_HEVC_LOOP_FILTER_MODE_ENABLED) | - BIT(DB_HEVC_DISABLE_SLICE_BOUNDARY), - V4L2_MPEG_VIDEO_HEVC_LOOP_FILTER_MODE_ENABLED, - V4L2_CID_MPEG_VIDEO_HEVC_LOOP_FILTER_MODE, - HFI_PROP_DEBLOCKING_MODE, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU, - {0}, {0}, - NULL, msm_vidc_set_deblock_mode}, - - {LF_ALPHA, ENC, H264, - -6, 6, 1, 0, - V4L2_CID_MPEG_VIDEO_H264_LOOP_FILTER_ALPHA}, - - {LF_ALPHA, ENC, HEVC|HEIC, - -6, 6, 1, 0, - V4L2_CID_MPEG_VIDEO_HEVC_LF_TC_OFFSET_DIV2}, - - {LF_BETA, ENC, H264, - -6, 6, 1, 0, - V4L2_CID_MPEG_VIDEO_H264_LOOP_FILTER_BETA}, - - {LF_BETA, ENC, HEVC|HEIC, - -6, 6, 1, 0, - V4L2_CID_MPEG_VIDEO_HEVC_LF_BETA_OFFSET_DIV2}, - - {SLICE_MODE, ENC, H264|HEVC|HEIC, - V4L2_MPEG_VIDEO_MULTI_SLICE_MODE_SINGLE, - V4L2_MPEG_VIDEO_MULTI_SLICE_MODE_MAX_BYTES, - BIT(V4L2_MPEG_VIDEO_MULTI_SLICE_MODE_SINGLE) | - BIT(V4L2_MPEG_VIDEO_MULTI_SLICE_MODE_MAX_MB) | - BIT(V4L2_MPEG_VIDEO_MULTI_SLICE_MODE_MAX_BYTES), - V4L2_MPEG_VIDEO_MULTI_SLICE_MODE_SINGLE, - V4L2_CID_MPEG_VIDEO_MULTI_SLICE_MODE, - 0, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU, - {BITRATE_MODE, ALL_INTRA}, {0}, - msm_vidc_adjust_slice_count, msm_vidc_set_slice_count}, - - {SLICE_MAX_BYTES, ENC, H264|HEVC|HEIC, - MIN_SLICE_BYTE_SIZE, MAX_SLICE_BYTE_SIZE_V1, - 1, MIN_SLICE_BYTE_SIZE, - V4L2_CID_MPEG_VIDEO_MULTI_SLICE_MAX_BYTES, - HFI_PROP_MULTI_SLICE_BYTES_COUNT, - CAP_FLAG_OUTPUT_PORT}, - - {SLICE_MAX_MB, ENC, H264|HEVC|HEIC, - 1, MAX_SLICE_MB_SIZE, 1, 1, - V4L2_CID_MPEG_VIDEO_MULTI_SLICE_MAX_MB, - HFI_PROP_MULTI_SLICE_MB_COUNT, - CAP_FLAG_OUTPUT_PORT}, - - // TODO: MB level RC - mapping - {MB_RC, ENC, H264|HEVC, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_ENABLE, - V4L2_CID_MPEG_VIDEO_MB_RC_ENABLE, - 0, - CAP_FLAG_OUTPUT_PORT}, - - {TRANSFORM_8X8, ENC, H264, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_ENABLE, - V4L2_CID_MPEG_VIDEO_H264_8X8_TRANSFORM, - HFI_PROP_8X8_TRANSFORM, - CAP_FLAG_OUTPUT_PORT, - {PROFILE}, {0}, - msm_vidc_adjust_transform_8x8, msm_vidc_set_u32}, - - {CHROMA_QP_INDEX_OFFSET, ENC, HEVC, - MIN_CHROMA_QP_OFFSET, MAX_CHROMA_QP_OFFSET, - 1, MAX_CHROMA_QP_OFFSET, - V4L2_CID_MPEG_VIDEO_H264_CHROMA_QP_INDEX_OFFSET, - HFI_PROP_CHROMA_QP_OFFSET, - CAP_FLAG_OUTPUT_PORT, - {0}, {0}, - msm_vidc_adjust_chroma_qp_index_offset, - msm_vidc_set_chroma_qp_index_offset}, - - {DISPLAY_DELAY_ENABLE, DEC, H264|HEVC|VP9, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, - V4L2_CID_MPEG_VIDEO_DEC_DISPLAY_DELAY_ENABLE, - HFI_PROP_DECODE_ORDER_OUTPUT, - CAP_FLAG_INPUT_PORT, - {0}, {OUTPUT_ORDER}, - NULL, NULL}, - - {DISPLAY_DELAY, DEC, H264|HEVC|VP9, - 0, 1, 1, 0, - V4L2_CID_MPEG_VIDEO_DEC_DISPLAY_DELAY, - HFI_PROP_DECODE_ORDER_OUTPUT, - CAP_FLAG_INPUT_PORT, - {0}, {OUTPUT_ORDER}, - NULL, NULL}, - - {OUTPUT_ORDER, DEC, H264|HEVC|VP9, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, - 0, - HFI_PROP_DECODE_ORDER_OUTPUT, - CAP_FLAG_INPUT_PORT, - {THUMBNAIL_MODE, DISPLAY_DELAY, DISPLAY_DELAY_ENABLE}, - {0}, - msm_vidc_adjust_output_order, msm_vidc_set_u32}, - - {INPUT_BUF_HOST_MAX_COUNT, ENC|DEC, CODECS_ALL, - DEFAULT_MAX_HOST_BUF_COUNT, DEFAULT_MAX_HOST_BURST_BUF_COUNT, - 1, DEFAULT_MAX_HOST_BUF_COUNT, - 0, - HFI_PROP_BUFFER_HOST_MAX_COUNT, - CAP_FLAG_INPUT_PORT, - {0}, {0}, - msm_vidc_adjust_input_buf_host_max_count, msm_vidc_set_u32}, - - {INPUT_BUF_HOST_MAX_COUNT, ENC, H264|HEVC, - DEFAULT_MAX_HOST_BUF_COUNT, DEFAULT_MAX_HOST_BURST_BUF_COUNT, - 1, DEFAULT_MAX_HOST_BUF_COUNT, - 0, - HFI_PROP_BUFFER_HOST_MAX_COUNT, - CAP_FLAG_INPUT_PORT, - {SUPER_FRAME}, {0}, - msm_vidc_adjust_input_buf_host_max_count, msm_vidc_set_u32}, - - {OUTPUT_BUF_HOST_MAX_COUNT, ENC|DEC, CODECS_ALL, - DEFAULT_MAX_HOST_BUF_COUNT, DEFAULT_MAX_HOST_BURST_BUF_COUNT, - 1, DEFAULT_MAX_HOST_BUF_COUNT, - 0, - HFI_PROP_BUFFER_HOST_MAX_COUNT, - CAP_FLAG_OUTPUT_PORT, - {0}, {0}, - msm_vidc_adjust_output_buf_host_max_count, msm_vidc_set_u32}, - - {OUTPUT_BUF_HOST_MAX_COUNT, ENC, H264|HEVC, - DEFAULT_MAX_HOST_BUF_COUNT, DEFAULT_MAX_HOST_BURST_BUF_COUNT, - 1, DEFAULT_MAX_HOST_BUF_COUNT, - 0, - HFI_PROP_BUFFER_HOST_MAX_COUNT, - CAP_FLAG_OUTPUT_PORT, - {SUPER_FRAME}, {0}, - msm_vidc_adjust_output_buf_host_max_count, msm_vidc_set_u32}, - - /* conceal color */ - {CONCEAL_COLOR_8BIT, DEC, CODECS_ALL, 0x0, 0xff3fcff, 1, - DEFAULT_VIDEO_CONCEAL_COLOR_BLACK, - V4L2_CID_MPEG_VIDEO_MUTE_YUV, - HFI_PROP_CONCEAL_COLOR_8BIT, - CAP_FLAG_INPUT_PORT, - {0}, {0}, - NULL, msm_vidc_set_u32_packed}, - - {CONCEAL_COLOR_10BIT, DEC, CODECS_ALL, 0x0, 0x3fffffff, 1, - DEFAULT_VIDEO_CONCEAL_COLOR_BLACK, - V4L2_CID_MPEG_VIDEO_MUTE_YUV, - HFI_PROP_CONCEAL_COLOR_10BIT, - CAP_FLAG_INPUT_PORT, - {0}, {0}, - NULL, msm_vidc_set_u32_packed}, - - // TODO - {STAGE, DEC|ENC, CODECS_ALL, - MSM_VIDC_STAGE_1, - MSM_VIDC_STAGE_2, 1, - MSM_VIDC_STAGE_2, - 0, - HFI_PROP_STAGE, - 0, - {0}, {0}, - NULL, msm_vidc_set_stage}, - - {STAGE, ENC, H264 | HEVC, - MSM_VIDC_STAGE_1, - MSM_VIDC_STAGE_2, 1, - MSM_VIDC_STAGE_2, - 0, - HFI_PROP_STAGE, - CAP_FLAG_NONE, - {LOWLATENCY_MODE}, {0}, - NULL, msm_vidc_set_stage}, - - {PIPE, DEC|ENC, CODECS_ALL, - MSM_VIDC_PIPE_1, - MSM_VIDC_PIPE_2, 1, - MSM_VIDC_PIPE_2, - 0, - HFI_PROP_PIPE, - 0, - {0}, {0}, - NULL, msm_vidc_set_pipe}, - {POC, DEC, H264, 0, 18, 1, 1}, - {QUALITY_MODE, ENC, CODECS_ALL, - MSM_VIDC_MAX_QUALITY_MODE, - MSM_VIDC_POWER_SAVE_MODE, 1, - MSM_VIDC_POWER_SAVE_MODE}, - - {CODED_FRAMES, DEC, H264|HEVC|HEIC, - CODED_FRAMES_PROGRESSIVE, CODED_FRAMES_INTERLACE, - 1, CODED_FRAMES_PROGRESSIVE, - 0, - HFI_PROP_CODED_FRAMES}, - - {BIT_DEPTH, DEC, CODECS_ALL, BIT_DEPTH_8, BIT_DEPTH_10, 1, BIT_DEPTH_8, - 0, - HFI_PROP_LUMA_CHROMA_BIT_DEPTH}, - - {CODEC_CONFIG, DEC, H264|HEVC|HEIC, 0, 1, 1, 0, - V4L2_CID_MPEG_VIDC_CODEC_CONFIG, 0, - CAP_FLAG_DYNAMIC_ALLOWED}, - - {BITSTREAM_SIZE_OVERWRITE, DEC, CODECS_ALL, 0, INT_MAX, 1, 0, - V4L2_CID_MPEG_VIDC_MIN_BITSTREAM_SIZE_OVERWRITE}, - - {THUMBNAIL_MODE, DEC, CODECS_ALL, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, - V4L2_CID_MPEG_VIDC_THUMBNAIL_MODE, - HFI_PROP_THUMBNAIL_MODE, - CAP_FLAG_INPUT_PORT, - {0}, {OUTPUT_ORDER}, - NULL, msm_vidc_set_u32}, - - {DEFAULT_HEADER, DEC, CODECS_ALL, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, - 0, - HFI_PROP_DEC_DEFAULT_HEADER}, - - {RAP_FRAME, DEC, CODECS_ALL, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_ENABLE, - 0, - HFI_PROP_DEC_START_FROM_RAP_FRAME, - CAP_FLAG_INPUT_PORT, - {0}, {0}, - NULL, msm_vidc_set_u32}, - - {SEQ_CHANGE_AT_SYNC_FRAME, DEC, CODECS_ALL, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_ENABLE, - 0, - HFI_PROP_SEQ_CHANGE_AT_SYNC_FRAME, - CAP_FLAG_INPUT_PORT | CAP_FLAG_DYNAMIC_ALLOWED}, - - {PRIORITY, DEC|ENC, CODECS_ALL, - 0, 2, 1, 1, - V4L2_CID_MPEG_VIDC_PRIORITY, - HFI_PROP_SESSION_PRIORITY, - CAP_FLAG_DYNAMIC_ALLOWED, - {0}, {0}, - msm_vidc_adjust_session_priority, msm_vidc_set_session_priority}, - - {ENC_IP_CR, ENC, CODECS_ALL, - 0, S32_MAX, 1, 0, - V4L2_CID_MPEG_VIDC_ENC_INPUT_COMPRESSION_RATIO, - 0, CAP_FLAG_DYNAMIC_ALLOWED}, - - {DPB_LIST, DEC, CODECS_ALL, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, - 0, - HFI_PROP_DPB_LIST, - CAP_FLAG_OUTPUT_PORT, - {0}, {0}, - NULL, NULL}, - - {ALL_INTRA, ENC, H264|HEVC, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, - 0, - 0, - CAP_FLAG_OUTPUT_PORT, - {GOP_SIZE, B_FRAME}, - {LTR_COUNT, IR_RANDOM, SLICE_MODE}, - msm_vidc_adjust_all_intra, NULL}, - - {META_LTR_MARK_USE, ENC, H264|HEVC, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, - V4L2_CID_MPEG_VIDC_METADATA_LTR_MARK_USE_DETAILS, - HFI_PROP_LTR_MARK_USE_DETAILS}, - - {META_SEQ_HDR_NAL, ENC, CODECS_ALL, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, - V4L2_CID_MPEG_VIDC_METADATA_SEQ_HEADER_NAL, - HFI_PROP_METADATA_SEQ_HEADER_NAL}, - - {META_DPB_MISR, DEC, CODECS_ALL, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, - V4L2_CID_MPEG_VIDC_METADATA_DPB_LUMA_CHROMA_MISR, - HFI_PROP_DPB_LUMA_CHROMA_MISR}, - - {META_OPB_MISR, DEC, CODECS_ALL, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, - V4L2_CID_MPEG_VIDC_METADATA_OPB_LUMA_CHROMA_MISR, - HFI_PROP_OPB_LUMA_CHROMA_MISR}, - - {META_INTERLACE, DEC, H264, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, - V4L2_CID_MPEG_VIDC_METADATA_INTERLACE, - HFI_PROP_INTERLACE_INFO}, - - {META_TIMESTAMP, DEC | ENC, CODECS_ALL, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, - V4L2_CID_MPEG_VIDC_METADATA_TIMESTAMP, - HFI_PROP_TIMESTAMP}, - - {META_CONCEALED_MB_CNT, DEC, CODECS_ALL, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, - V4L2_CID_MPEG_VIDC_METADATA_CONCEALED_MB_COUNT, - HFI_PROP_CONEALED_MB_COUNT}, - - {META_HIST_INFO, DEC, CODECS_ALL, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, - V4L2_CID_MPEG_VIDC_METADATA_HISTOGRAM_INFO, - HFI_PROP_HISTOGRAM_INFO}, - - {META_SEI_MASTERING_DISP, DEC|ENC, HEVC|HEIC, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, - V4L2_CID_MPEG_VIDC_METADATA_SEI_MASTERING_DISPLAY_COLOUR, - HFI_PROP_SEI_MASTERING_DISPLAY_COLOUR}, - - {META_SEI_CLL, DEC|ENC, HEVC|HEIC, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, - V4L2_CID_MPEG_VIDC_METADATA_SEI_CONTENT_LIGHT_LEVEL, - HFI_PROP_SEI_CONTENT_LIGHT_LEVEL}, - - {META_HDR10PLUS, DEC | ENC, HEVC|HEIC, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, - V4L2_CID_MPEG_VIDC_METADATA_HDR10PLUS, - HFI_PROP_SEI_HDR10PLUS_USERDATA}, - - {META_EVA_STATS, ENC, CODECS_ALL, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, - V4L2_CID_MPEG_VIDC_METADATA_EVA_STATS, - HFI_PROP_EVA_STAT_INFO, - 0, - {0}, - {ENH_LAYER_COUNT}}, - - {META_BUF_TAG, DEC | ENC, CODECS_ALL, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, - V4L2_CID_MPEG_VIDC_METADATA_BUFFER_TAG, - HFI_PROP_BUFFER_TAG}, - - {META_DPB_TAG_LIST, DEC, CODECS_ALL, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, - V4L2_CID_MPEG_VIDC_METADATA_DPB_TAG_LIST, - HFI_PROP_DPB_TAG_LIST}, - - {META_OUTPUT_BUF_TAG, DEC, CODECS_ALL, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, - 0, - HFI_PROP_BUFFER_TAG}, - - {META_SUBFRAME_OUTPUT, DEC, CODECS_ALL, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, - V4L2_CID_MPEG_VIDC_METADATA_SUBFRAME_OUTPUT, - HFI_PROP_SUBFRAME_OUTPUT}, - - {META_ENC_QP_METADATA, ENC, CODECS_ALL, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, - V4L2_CID_MPEG_VIDC_METADATA_ENC_QP_METADATA, - HFI_PROP_ENC_QP_METADATA}, - - {META_ROI_INFO, ENC, CODECS_ALL, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, - V4L2_CID_MPEG_VIDC_METADATA_ROI_INFO, - HFI_PROP_ROI_INFO, - CAP_FLAG_INPUT_PORT, - {BITRATE_MODE, PIX_FMTS}, - {0}, - msm_vidc_adjust_roi_info, NULL}, - - {META_ROI_INFO, ENC, H264|HEVC, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, - V4L2_CID_MPEG_VIDC_METADATA_ROI_INFO, - HFI_PROP_ROI_INFO, - CAP_FLAG_INPUT_PORT, - {BITRATE_MODE, PIX_FMTS}, - {MIN_QUALITY}, - msm_vidc_adjust_roi_info, NULL}, - - {META_DEC_QP_METADATA, DEC, CODECS_ALL, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, - V4L2_CID_MPEG_VIDC_METADATA_DEC_QP_METADATA, - HFI_PROP_DEC_QP_METADATA}, - - /* configure image properties */ - {FRAME_WIDTH, ENC, HEIC, 128, 16384, 1, 16384}, - {FRAME_HEIGHT, ENC, HEIC, 128, 16384, 1, 16384}, - {MIN_BUFFERS_INPUT, ENC|DEC, HEIC, 0, 64, 1, 1, - V4L2_CID_MIN_BUFFERS_FOR_OUTPUT}, - {MBPF, DEC, HEIC, 36, 65536, 1, 65536 }, /* ((4096x4096)/256) */ - {MBPF, ENC, HEIC, 64, 1048576, 1, 1048576}, /* ((16384x16384)/256) */ - {MBPS, DEC, HEIC, 36, 65536, 1, 65536 }, /* ((4096x4096)/256)@1fps */ - {MBPS, ENC, HEIC, 64, 1048576, 1, 1048576}, /* ((16384x16384)/256)@1fps */ - {BITRATE_MODE, ENC, HEIC, - V4L2_MPEG_VIDEO_BITRATE_MODE_CQ, - V4L2_MPEG_VIDEO_BITRATE_MODE_CQ, - BIT(V4L2_MPEG_VIDEO_BITRATE_MODE_CQ), - V4L2_MPEG_VIDEO_BITRATE_MODE_CQ, - V4L2_CID_MPEG_VIDEO_BITRATE_MODE, - HFI_PROP_RATE_CONTROL, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU, - {0}, - {TIME_DELTA_BASED_RC, CONSTANT_QUALITY}, - msm_vidc_adjust_bitrate_mode, msm_vidc_set_u32_enum}, - {TIME_DELTA_BASED_RC, ENC, HEIC, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, - V4L2_CID_MPEG_VIDC_TIME_DELTA_BASED_RC, - HFI_PROP_TIME_DELTA_BASED_RATE_CONTROL, - CAP_FLAG_OUTPUT_PORT, - {BITRATE_MODE}, {0}, - msm_vidc_adjust_delta_based_rc, msm_vidc_set_u32}, - {CONSTANT_QUALITY, ENC, HEIC, - 1, MAX_CONSTANT_QUALITY, 1, 100, - V4L2_CID_MPEG_VIDEO_CONSTANT_QUALITY, - HFI_PROP_CONSTANT_QUALITY, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT | - CAP_FLAG_DYNAMIC_ALLOWED, - {BITRATE_MODE}, {0}, - NULL, msm_vidc_set_constant_quality}, - {GRID, ENC, HEIC, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_ENABLE, - 0, - HFI_PROP_HEIC_GRID_ENABLE, - CAP_FLAG_OUTPUT_PORT, - {0}, {0}, - NULL, msm_vidc_set_u32}, - {GOP_SIZE, ENC, HEIC, - 0, INT_MAX, 1, 0 /* all intra */, - V4L2_CID_MPEG_VIDEO_GOP_SIZE, - HFI_PROP_MAX_GOP_FRAMES, - CAP_FLAG_OUTPUT_PORT | - CAP_FLAG_INPUT_PORT | CAP_FLAG_DYNAMIC_ALLOWED, - {0}, {0}, - NULL, msm_vidc_set_u32}, - {B_FRAME, ENC, HEIC, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, - V4L2_CID_MPEG_VIDEO_B_FRAMES, - HFI_PROP_MAX_B_FRAMES, - CAP_FLAG_OUTPUT_PORT, - {0}, {0}, - NULL, msm_vidc_set_u32}, - {PIX_FMTS, ENC, HEIC, - MSM_VIDC_FMT_NV12, - MSM_VIDC_FMT_P010, - MSM_VIDC_FMT_NV12 | MSM_VIDC_FMT_P010, - MSM_VIDC_FMT_NV12, - 0, 0, - 0, - {0}, - {PROFILE}}, - {HEVC_TIER, ENC|DEC, HEIC, - V4L2_MPEG_VIDEO_HEVC_TIER_MAIN, - V4L2_MPEG_VIDEO_HEVC_TIER_MAIN, - BIT(V4L2_MPEG_VIDEO_HEVC_TIER_MAIN), - V4L2_MPEG_VIDEO_HEVC_TIER_MAIN, - V4L2_CID_MPEG_VIDEO_HEVC_TIER, - HFI_PROP_TIER, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU, - {0}, - {0}, - NULL, msm_vidc_set_u32_enum}, - {FRAME_RATE, ENC, HEIC, - (MINIMUM_FPS << 16), (MAXIMUM_FPS_V2 << 16), - 1, (MINIMUM_FPS << 16), - 0, - HFI_PROP_FRAME_RATE, - CAP_FLAG_OUTPUT_PORT, - {0}, {0}, - NULL, msm_vidc_set_q16}, - {META_SUBFRAME_OUTPUT, ENC, HEIC, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, - V4L2_CID_MPEG_VIDC_METADATA_SUBFRAME_OUTPUT, - HFI_PROP_SUBFRAME_OUTPUT}, - {COMPLEXITY, ENC, H264 | HEVC, - 0, 100, - 1, 100, - V4L2_CID_MPEG_VIDC_VENC_COMPLEXITY}, - {META_MAX_NUM_REORDER_FRAMES, DEC, HEVC | H264, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, - V4L2_CID_MPEG_VIDC_METADATA_MAX_NUM_REORDER_FRAMES, - HFI_PROP_MAX_NUM_REORDER_FRAMES}, -}; - -static struct allowed_clock_rates_table clock_data_diwali_v1[] = { - {240000000}, {338000000}, {366000000} -}; - -static struct allowed_clock_rates_table clock_data_diwali_v2[] = { - {200000000} -}; - -/* - * Custom conversion coefficients for resolution: 176x144 negative - * coeffs are converted to s4.9 format - * (e.g. -22 converted to ((1 << 13) - 22) - * 3x3 transformation matrix coefficients in s4.9 fixed point format - */ -static u32 vpe_csc_custom_matrix_coeff[MAX_MATRIX_COEFFS] = { - 440, 8140, 8098, 0, 460, 52, 0, 34, 463 -}; - -/* offset coefficients in s9 fixed point format */ -static u32 vpe_csc_custom_bias_coeff[MAX_BIAS_COEFFS] = { - 53, 0, 4 -}; - -/* clamping value for Y/U/V([min,max] for Y/U/V) */ -static u32 vpe_csc_custom_limit_coeff[MAX_LIMIT_COEFFS] = { - 16, 235, 16, 240, 16, 240 -}; - -/* Default UBWC config for LPDDR5 */ -static struct msm_vidc_ubwc_config_data ubwc_config_diwali[] = { - UBWC_CONFIG(8, 32, 15, 0, 1, 1, 1), -}; - -/* Default bus bandwidth for non_real time session based on priority */ -static u32 bus_bw_nrt[] = { - 15000000, - 11000000, -}; - -static struct msm_vidc_efuse_data efuse_data_diwali[] = { - /* IRIS_4K60_FMAX_LIMIT_EFUSE - max 4K@60 */ - EFUSE_ENTRY(0x221C811C, 4, 0x80, 0x7, SKU_VERSION), - /* IRIS_MULTIPIPE_DISABLE - max 4K@30 */ - EFUSE_ENTRY(0x221C8118, 4, 0x80, 0x6, SKU_VERSION), -}; - -static const struct msm_vidc_platform_data diwali_data = { - .core_data = core_data_diwali_v0, - .core_data_size = ARRAY_SIZE(core_data_diwali_v0), - .instance_data = instance_data_diwali_v0, - .instance_data_size = ARRAY_SIZE(instance_data_diwali_v0), - .csc_data.vpe_csc_custom_bias_coeff = vpe_csc_custom_bias_coeff, - .csc_data.vpe_csc_custom_matrix_coeff = vpe_csc_custom_matrix_coeff, - .csc_data.vpe_csc_custom_limit_coeff = vpe_csc_custom_limit_coeff, - .ubwc_config = ubwc_config_diwali, - .bus_bw_nrt = bus_bw_nrt, - .efuse_data = efuse_data_diwali, - .efuse_data_size = ARRAY_SIZE(efuse_data_diwali), - .sku_version = 0, -}; - -static int msm_vidc_read_efuse(struct msm_vidc_core *core) -{ - int rc = 0; - void __iomem *base; - u32 i = 0, efuse = 0, efuse_data_count = 0; - struct msm_vidc_efuse_data *efuse_data = NULL; - struct msm_vidc_platform_data *platform_data; - - if (!core || !core->platform || !core->pdev) { - d_vpr_e("%s: invalid params\n", __func__); - return -EINVAL; - } - - platform_data = &core->platform->data; - efuse_data = platform_data->efuse_data; - efuse_data_count = platform_data->efuse_data_size; - - if (!efuse_data) - return 0; - - for (i = 0; i < efuse_data_count; i++) { - switch ((efuse_data[i]).purpose) { - case SKU_VERSION: - base = devm_ioremap(&core->pdev->dev, (efuse_data[i]).start_address, - (efuse_data[i]).size); - if (!base) { - d_vpr_e("failed efuse: start %#x, size %d\n", - (efuse_data[i]).start_address, - (efuse_data[i]).size); - return -EINVAL; - } else { - efuse = readl_relaxed(base); - platform_data->sku_version = - (efuse & (efuse_data[i]).mask) >> - (efuse_data[i]).shift; - } - break; - default: - break; - } - if (platform_data->sku_version) { - d_vpr_h("efuse 0x%x, platform version 0x%x\n", - efuse, platform_data->sku_version); - break; - } - } - return rc; -} - -static void msm_vidc_ddr_ubwc_config( - struct msm_vidc_platform_data *platform_data, u32 hbb_override_val) -{ - uint32_t ddr_type = DDR_TYPE_LPDDR5; - - ddr_type = of_fdt_get_ddrtype(); - if (ddr_type == -ENOENT) { - d_vpr_e("Failed to get ddr type, use LPDDR5\n"); - } - - if (platform_data->ubwc_config && - (ddr_type == DDR_TYPE_LPDDR4 || - ddr_type == DDR_TYPE_LPDDR4X)) - platform_data->ubwc_config->highest_bank_bit = hbb_override_val; - - d_vpr_h("DDR Type 0x%x hbb 0x%x\n", - ddr_type, platform_data->ubwc_config ? - platform_data->ubwc_config->highest_bank_bit : -1); -} - -static int msm_vidc_init_data(struct msm_vidc_core *core) -{ - int rc = 0, i = 0; - struct msm_vidc_platform_data *platform_data = NULL; - - if (!core || !core->platform || !core->dt) { - d_vpr_e("%s: invalid params\n", __func__); - return -EINVAL; - } - d_vpr_h("%s: initialize diwali data\n", __func__); - - core->platform->data = diwali_data; - platform_data = &core->platform->data; - - /* Check for sku version */ - rc = msm_vidc_read_efuse(core); - if (rc) { - d_vpr_e("%s: Failed to read efuse\n", __func__); - return rc; - } - - if (platform_data->sku_version == SKU_VERSION_1) { - platform_data->core_data = core_data_diwali_v1; - platform_data->core_data_size = - ARRAY_SIZE(core_data_diwali_v1); - platform_data->instance_data = instance_data_diwali_v1; - platform_data->instance_data_size = - ARRAY_SIZE(instance_data_diwali_v1); - /* Overide with SKU clock data into dt */ - core->dt->allowed_clks_tbl = clock_data_diwali_v1; - core->dt->allowed_clks_tbl_size = - ARRAY_SIZE(clock_data_diwali_v1); - } else if (platform_data->sku_version == SKU_VERSION_2) { - platform_data->core_data = core_data_diwali_v2; - platform_data->core_data_size = - ARRAY_SIZE(core_data_diwali_v2); - platform_data->instance_data = instance_data_diwali_v2; - platform_data->instance_data_size = - ARRAY_SIZE(instance_data_diwali_v2); - /* Overide with SKU clock data into dt */ - core->dt->allowed_clks_tbl = clock_data_diwali_v2; - core->dt->allowed_clks_tbl_size = - ARRAY_SIZE(clock_data_diwali_v2); - } - - if (platform_data->sku_version) { - sort(core->dt->allowed_clks_tbl, core->dt->allowed_clks_tbl_size, - sizeof(*core->dt->allowed_clks_tbl), cmp, NULL); - d_vpr_h("Updated allowed clock rates\n"); - for (i = 0; i < core->dt->allowed_clks_tbl_size; i++) - d_vpr_h(" %d\n", core->dt->allowed_clks_tbl[i]); - } - - /* Check for DDR variant */ - msm_vidc_ddr_ubwc_config(&core->platform->data, 0xe); - - return rc; -} - -int msm_vidc_init_platform_diwali(struct msm_vidc_core *core, struct device *dev) -{ - int rc = 0; - - rc = msm_vidc_init_data(core); - if (rc) - return rc; - - return 0; -} - -int msm_vidc_deinit_platform_diwali(struct msm_vidc_core *core, struct device *dev) -{ - /* do nothing */ - return 0; -} diff --git a/driver/platform/kalama/src/msm_vidc_kalama.c b/driver/platform/kalama/src/msm_vidc_kalama.c index 12aed91f41..e471c242b0 100644 --- a/driver/platform/kalama/src/msm_vidc_kalama.c +++ b/driver/platform/kalama/src/msm_vidc_kalama.c @@ -279,13 +279,13 @@ static struct msm_platform_inst_capability instance_data_kalama[] = { NULL, msm_vidc_set_u32}, /* - * Client will enable V4L2_CID_MPEG_VIDC_INPUT_METADATA_OUTBUF_FENCE + * Client will enable V4L2_CID_MPEG_VIDC_METADATA_OUTBUF_FENCE * to get fence_id in input metadata buffer done. */ - {INPUT_META_OUTBUF_FENCE, DEC, CODECS_ALL, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, - V4L2_CID_MPEG_VIDC_INPUT_METADATA_OUTBUF_FENCE, + {META_OUTBUF_FENCE, DEC, CODECS_ALL, + V4L2_MPEG_VIDC_META_DISABLE, V4L2_MPEG_VIDC_META_MAX, + 1, V4L2_MPEG_VIDC_META_DISABLE, + V4L2_CID_MPEG_VIDC_METADATA_OUTBUF_FENCE, HFI_PROP_FENCE}, /* @@ -372,12 +372,6 @@ static struct msm_platform_inst_capability instance_data_kalama[] = { 1, V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_CID_MPEG_VIDEO_PREPEND_SPSPPS_TO_IDR}, - {META_SEQ_HDR_NAL, ENC, CODECS_ALL, - V4L2_MPEG_MSM_VIDC_DISABLE, - V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, - V4L2_CID_MPEG_VIDC_METADATA_SEQ_HEADER_NAL}, - {WITHOUT_STARTCODE, ENC, CODECS_ALL, V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, @@ -1594,14 +1588,14 @@ static struct msm_platform_inst_capability instance_data_kalama[] = { NULL, msm_vidc_set_u32}, {META_BITSTREAM_RESOLUTION, DEC, AV1, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, + V4L2_MPEG_VIDC_META_DISABLE, V4L2_MPEG_VIDC_META_MAX, + 1, V4L2_MPEG_VIDC_META_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_MPEG_VIDC_META_DISABLE, V4L2_MPEG_VIDC_META_MAX, + 1, V4L2_MPEG_VIDC_META_DISABLE, V4L2_CID_MPEG_VIDC_METADATA_CROP_OFFSETS, HFI_PROP_CROP_OFFSETS}, @@ -1633,74 +1627,74 @@ static struct msm_platform_inst_capability instance_data_kalama[] = { NULL, NULL}, {META_LTR_MARK_USE, ENC, H264|HEVC, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, + V4L2_MPEG_VIDC_META_DISABLE, V4L2_MPEG_VIDC_META_MAX, + 1, V4L2_MPEG_VIDC_META_DISABLE, V4L2_CID_MPEG_VIDC_METADATA_LTR_MARK_USE_DETAILS, HFI_PROP_LTR_MARK_USE_DETAILS}, {META_SEQ_HDR_NAL, ENC, CODECS_ALL, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, + V4L2_MPEG_VIDC_META_DISABLE, V4L2_MPEG_VIDC_META_MAX, + 1, V4L2_MPEG_VIDC_META_DISABLE, V4L2_CID_MPEG_VIDC_METADATA_SEQ_HEADER_NAL, HFI_PROP_METADATA_SEQ_HEADER_NAL}, {META_DPB_MISR, DEC, CODECS_ALL, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, + V4L2_MPEG_VIDC_META_DISABLE, V4L2_MPEG_VIDC_META_MAX, + 1, V4L2_MPEG_VIDC_META_DISABLE, V4L2_CID_MPEG_VIDC_METADATA_DPB_LUMA_CHROMA_MISR, HFI_PROP_DPB_LUMA_CHROMA_MISR}, {META_OPB_MISR, DEC, CODECS_ALL, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, + V4L2_MPEG_VIDC_META_DISABLE, V4L2_MPEG_VIDC_META_MAX, + 1, V4L2_MPEG_VIDC_META_DISABLE, V4L2_CID_MPEG_VIDC_METADATA_OPB_LUMA_CHROMA_MISR, HFI_PROP_OPB_LUMA_CHROMA_MISR}, {META_INTERLACE, DEC, H264, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, + V4L2_MPEG_VIDC_META_DISABLE, V4L2_MPEG_VIDC_META_MAX, + 1, V4L2_MPEG_VIDC_META_DISABLE, V4L2_CID_MPEG_VIDC_METADATA_INTERLACE, HFI_PROP_INTERLACE_INFO}, {META_TIMESTAMP, DEC | ENC, CODECS_ALL, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, + V4L2_MPEG_VIDC_META_DISABLE, V4L2_MPEG_VIDC_META_MAX, + 1, V4L2_MPEG_VIDC_META_DISABLE, V4L2_CID_MPEG_VIDC_METADATA_TIMESTAMP, HFI_PROP_TIMESTAMP}, {META_CONCEALED_MB_CNT, DEC, CODECS_ALL, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, + V4L2_MPEG_VIDC_META_DISABLE, V4L2_MPEG_VIDC_META_MAX, + 1, V4L2_MPEG_VIDC_META_DISABLE, V4L2_CID_MPEG_VIDC_METADATA_CONCEALED_MB_COUNT, HFI_PROP_CONEALED_MB_COUNT}, {META_HIST_INFO, DEC, CODECS_ALL, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, + V4L2_MPEG_VIDC_META_DISABLE, V4L2_MPEG_VIDC_META_MAX, + 1, V4L2_MPEG_VIDC_META_DISABLE, V4L2_CID_MPEG_VIDC_METADATA_HISTOGRAM_INFO, HFI_PROP_HISTOGRAM_INFO}, {META_SEI_MASTERING_DISP, DEC|ENC, HEVC|HEIC|AV1, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, + V4L2_MPEG_VIDC_META_DISABLE, V4L2_MPEG_VIDC_META_MAX, + 1, V4L2_MPEG_VIDC_META_DISABLE, V4L2_CID_MPEG_VIDC_METADATA_SEI_MASTERING_DISPLAY_COLOUR, HFI_PROP_SEI_MASTERING_DISPLAY_COLOUR}, {META_SEI_CLL, DEC|ENC, HEVC|HEIC|AV1, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, + V4L2_MPEG_VIDC_META_DISABLE, V4L2_MPEG_VIDC_META_MAX, + 1, V4L2_MPEG_VIDC_META_DISABLE, V4L2_CID_MPEG_VIDC_METADATA_SEI_CONTENT_LIGHT_LEVEL, HFI_PROP_SEI_CONTENT_LIGHT_LEVEL}, {META_HDR10PLUS, DEC | ENC, HEVC|HEIC|AV1, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, + V4L2_MPEG_VIDC_META_DISABLE, V4L2_MPEG_VIDC_META_MAX, + 1, V4L2_MPEG_VIDC_META_DISABLE, V4L2_CID_MPEG_VIDC_METADATA_HDR10PLUS, HFI_PROP_SEI_HDR10PLUS_USERDATA}, {META_EVA_STATS, ENC, CODECS_ALL, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, + V4L2_MPEG_VIDC_META_DISABLE, V4L2_MPEG_VIDC_META_MAX, + 1, V4L2_MPEG_VIDC_META_DISABLE, V4L2_CID_MPEG_VIDC_METADATA_EVA_STATS, HFI_PROP_EVA_STAT_INFO, 0, @@ -1708,38 +1702,38 @@ static struct msm_platform_inst_capability instance_data_kalama[] = { {ENH_LAYER_COUNT}}, {META_BUF_TAG, DEC | ENC, CODECS_ALL, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, + V4L2_MPEG_VIDC_META_DISABLE, V4L2_MPEG_VIDC_META_MAX, + 1, V4L2_MPEG_VIDC_META_DISABLE, V4L2_CID_MPEG_VIDC_METADATA_BUFFER_TAG, HFI_PROP_BUFFER_TAG}, {META_DPB_TAG_LIST, DEC, CODECS_ALL, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, + V4L2_MPEG_VIDC_META_DISABLE, V4L2_MPEG_VIDC_META_MAX, + 1, V4L2_MPEG_VIDC_META_DISABLE, V4L2_CID_MPEG_VIDC_METADATA_DPB_TAG_LIST, HFI_PROP_DPB_TAG_LIST}, {META_OUTPUT_BUF_TAG, DEC, CODECS_ALL, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, + V4L2_MPEG_VIDC_META_DISABLE, V4L2_MPEG_VIDC_META_MAX, + 1, V4L2_MPEG_VIDC_META_DISABLE, 0, HFI_PROP_BUFFER_TAG}, {META_SUBFRAME_OUTPUT, DEC, CODECS_ALL, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, + V4L2_MPEG_VIDC_META_DISABLE, V4L2_MPEG_VIDC_META_MAX, + 1, V4L2_MPEG_VIDC_META_DISABLE, V4L2_CID_MPEG_VIDC_METADATA_SUBFRAME_OUTPUT, HFI_PROP_SUBFRAME_OUTPUT}, {META_ENC_QP_METADATA, ENC, CODECS_ALL, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, + V4L2_MPEG_VIDC_META_DISABLE, V4L2_MPEG_VIDC_META_MAX, + 1, V4L2_MPEG_VIDC_META_DISABLE, V4L2_CID_MPEG_VIDC_METADATA_ENC_QP_METADATA, HFI_PROP_ENC_QP_METADATA}, {META_ROI_INFO, ENC, CODECS_ALL, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, + V4L2_MPEG_VIDC_META_DISABLE, V4L2_MPEG_VIDC_META_MAX, + 1, V4L2_MPEG_VIDC_META_DISABLE, V4L2_CID_MPEG_VIDC_METADATA_ROI_INFO, HFI_PROP_ROI_INFO, CAP_FLAG_INPUT_PORT, @@ -1748,8 +1742,8 @@ static struct msm_platform_inst_capability instance_data_kalama[] = { msm_vidc_adjust_roi_info, NULL}, {META_ROI_INFO, ENC, H264|HEVC, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, + V4L2_MPEG_VIDC_META_DISABLE, V4L2_MPEG_VIDC_META_MAX, + 1, V4L2_MPEG_VIDC_META_DISABLE, V4L2_CID_MPEG_VIDC_METADATA_ROI_INFO, HFI_PROP_ROI_INFO, CAP_FLAG_INPUT_PORT, @@ -1758,8 +1752,8 @@ static struct msm_platform_inst_capability instance_data_kalama[] = { msm_vidc_adjust_roi_info, NULL}, {META_DEC_QP_METADATA, DEC, CODECS_ALL, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, + V4L2_MPEG_VIDC_META_DISABLE, V4L2_MPEG_VIDC_META_MAX, + 1, V4L2_MPEG_VIDC_META_DISABLE, V4L2_CID_MPEG_VIDC_METADATA_DEC_QP_METADATA, HFI_PROP_DEC_QP_METADATA}, @@ -1852,8 +1846,8 @@ static struct msm_platform_inst_capability instance_data_kalama[] = { {0}, {0}, NULL, msm_vidc_set_q16}, {META_SUBFRAME_OUTPUT, ENC, HEIC, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, + V4L2_MPEG_VIDC_META_DISABLE, V4L2_MPEG_VIDC_META_MAX, + 1, V4L2_MPEG_VIDC_META_DISABLE, V4L2_CID_MPEG_VIDC_METADATA_SUBFRAME_OUTPUT, HFI_PROP_SUBFRAME_OUTPUT}, {COMPLEXITY, ENC, H264 | HEVC, @@ -1861,8 +1855,8 @@ static struct msm_platform_inst_capability instance_data_kalama[] = { 1, 100, V4L2_CID_MPEG_VIDC_VENC_COMPLEXITY}, {META_MAX_NUM_REORDER_FRAMES, DEC, HEVC | H264, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, + V4L2_MPEG_VIDC_META_DISABLE, V4L2_MPEG_VIDC_META_MAX, + 1, V4L2_MPEG_VIDC_META_DISABLE, V4L2_CID_MPEG_VIDC_METADATA_MAX_NUM_REORDER_FRAMES, HFI_PROP_MAX_NUM_REORDER_FRAMES}, }; diff --git a/driver/platform/waipio/src/msm_vidc_waipio.c b/driver/platform/waipio/src/msm_vidc_waipio.c index 9ad8d93c66..a7cea9b34e 100644 --- a/driver/platform/waipio/src/msm_vidc_waipio.c +++ b/driver/platform/waipio/src/msm_vidc_waipio.c @@ -332,12 +332,6 @@ static struct msm_platform_inst_capability instance_data_waipio[] = { 1, V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_CID_MPEG_VIDEO_PREPEND_SPSPPS_TO_IDR}, - {META_SEQ_HDR_NAL, ENC, CODECS_ALL, - V4L2_MPEG_MSM_VIDC_DISABLE, - V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, - V4L2_CID_MPEG_VIDC_METADATA_SEQ_HEADER_NAL}, - {WITHOUT_STARTCODE, ENC, CODECS_ALL, V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, @@ -1491,74 +1485,74 @@ static struct msm_platform_inst_capability instance_data_waipio[] = { NULL, NULL}, {META_LTR_MARK_USE, ENC, H264|HEVC, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, + V4L2_MPEG_VIDC_META_DISABLE, V4L2_MPEG_VIDC_META_MAX, + 1, V4L2_MPEG_VIDC_META_DISABLE, V4L2_CID_MPEG_VIDC_METADATA_LTR_MARK_USE_DETAILS, HFI_PROP_LTR_MARK_USE_DETAILS}, {META_SEQ_HDR_NAL, ENC, CODECS_ALL, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, + V4L2_MPEG_VIDC_META_DISABLE, V4L2_MPEG_VIDC_META_MAX, + 1, V4L2_MPEG_VIDC_META_DISABLE, V4L2_CID_MPEG_VIDC_METADATA_SEQ_HEADER_NAL, HFI_PROP_METADATA_SEQ_HEADER_NAL}, {META_DPB_MISR, DEC, CODECS_ALL, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, + V4L2_MPEG_VIDC_META_DISABLE, V4L2_MPEG_VIDC_META_MAX, + 1, V4L2_MPEG_VIDC_META_DISABLE, V4L2_CID_MPEG_VIDC_METADATA_DPB_LUMA_CHROMA_MISR, HFI_PROP_DPB_LUMA_CHROMA_MISR}, {META_OPB_MISR, DEC, CODECS_ALL, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, + V4L2_MPEG_VIDC_META_DISABLE, V4L2_MPEG_VIDC_META_MAX, + 1, V4L2_MPEG_VIDC_META_DISABLE, V4L2_CID_MPEG_VIDC_METADATA_OPB_LUMA_CHROMA_MISR, HFI_PROP_OPB_LUMA_CHROMA_MISR}, {META_INTERLACE, DEC, H264, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, + V4L2_MPEG_VIDC_META_DISABLE, V4L2_MPEG_VIDC_META_MAX, + 1, V4L2_MPEG_VIDC_META_DISABLE, V4L2_CID_MPEG_VIDC_METADATA_INTERLACE, HFI_PROP_INTERLACE_INFO}, {META_TIMESTAMP, DEC | ENC, CODECS_ALL, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, + V4L2_MPEG_VIDC_META_DISABLE, V4L2_MPEG_VIDC_META_MAX, + 1, V4L2_MPEG_VIDC_META_DISABLE, V4L2_CID_MPEG_VIDC_METADATA_TIMESTAMP, HFI_PROP_TIMESTAMP}, {META_CONCEALED_MB_CNT, DEC, CODECS_ALL, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, + V4L2_MPEG_VIDC_META_DISABLE, V4L2_MPEG_VIDC_META_MAX, + 1, V4L2_MPEG_VIDC_META_DISABLE, V4L2_CID_MPEG_VIDC_METADATA_CONCEALED_MB_COUNT, HFI_PROP_CONEALED_MB_COUNT}, {META_HIST_INFO, DEC, CODECS_ALL, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, + V4L2_MPEG_VIDC_META_DISABLE, V4L2_MPEG_VIDC_META_MAX, + 1, V4L2_MPEG_VIDC_META_DISABLE, V4L2_CID_MPEG_VIDC_METADATA_HISTOGRAM_INFO, HFI_PROP_HISTOGRAM_INFO}, {META_SEI_MASTERING_DISP, DEC|ENC, HEVC|HEIC, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, + V4L2_MPEG_VIDC_META_DISABLE, V4L2_MPEG_VIDC_META_MAX, + 1, V4L2_MPEG_VIDC_META_DISABLE, V4L2_CID_MPEG_VIDC_METADATA_SEI_MASTERING_DISPLAY_COLOUR, HFI_PROP_SEI_MASTERING_DISPLAY_COLOUR}, {META_SEI_CLL, DEC|ENC, HEVC|HEIC, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, + V4L2_MPEG_VIDC_META_DISABLE, V4L2_MPEG_VIDC_META_MAX, + 1, V4L2_MPEG_VIDC_META_DISABLE, V4L2_CID_MPEG_VIDC_METADATA_SEI_CONTENT_LIGHT_LEVEL, HFI_PROP_SEI_CONTENT_LIGHT_LEVEL}, {META_HDR10PLUS, DEC | ENC, HEVC|HEIC, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, + V4L2_MPEG_VIDC_META_DISABLE, V4L2_MPEG_VIDC_META_MAX, + 1, V4L2_MPEG_VIDC_META_DISABLE, V4L2_CID_MPEG_VIDC_METADATA_HDR10PLUS, HFI_PROP_SEI_HDR10PLUS_USERDATA}, {META_EVA_STATS, ENC, CODECS_ALL, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, + V4L2_MPEG_VIDC_META_DISABLE, V4L2_MPEG_VIDC_META_MAX, + 1, V4L2_MPEG_VIDC_META_DISABLE, V4L2_CID_MPEG_VIDC_METADATA_EVA_STATS, HFI_PROP_EVA_STAT_INFO, 0, @@ -1566,38 +1560,38 @@ static struct msm_platform_inst_capability instance_data_waipio[] = { {ENH_LAYER_COUNT}}, {META_BUF_TAG, DEC | ENC, CODECS_ALL, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, + V4L2_MPEG_VIDC_META_DISABLE, V4L2_MPEG_VIDC_META_MAX, + 1, V4L2_MPEG_VIDC_META_DISABLE, V4L2_CID_MPEG_VIDC_METADATA_BUFFER_TAG, HFI_PROP_BUFFER_TAG}, {META_DPB_TAG_LIST, DEC, CODECS_ALL, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, + V4L2_MPEG_VIDC_META_DISABLE, V4L2_MPEG_VIDC_META_MAX, + 1, V4L2_MPEG_VIDC_META_DISABLE, V4L2_CID_MPEG_VIDC_METADATA_DPB_TAG_LIST, HFI_PROP_DPB_TAG_LIST}, {META_OUTPUT_BUF_TAG, DEC, CODECS_ALL, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, + V4L2_MPEG_VIDC_META_DISABLE, V4L2_MPEG_VIDC_META_MAX, + 1, V4L2_MPEG_VIDC_META_DISABLE, 0, HFI_PROP_BUFFER_TAG}, {META_SUBFRAME_OUTPUT, DEC, CODECS_ALL, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, + V4L2_MPEG_VIDC_META_DISABLE, V4L2_MPEG_VIDC_META_MAX, + 1, V4L2_MPEG_VIDC_META_DISABLE, V4L2_CID_MPEG_VIDC_METADATA_SUBFRAME_OUTPUT, HFI_PROP_SUBFRAME_OUTPUT}, {META_ENC_QP_METADATA, ENC, CODECS_ALL, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, + V4L2_MPEG_VIDC_META_DISABLE, V4L2_MPEG_VIDC_META_MAX, + 1, V4L2_MPEG_VIDC_META_DISABLE, V4L2_CID_MPEG_VIDC_METADATA_ENC_QP_METADATA, HFI_PROP_ENC_QP_METADATA}, {META_ROI_INFO, ENC, CODECS_ALL, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, + V4L2_MPEG_VIDC_META_DISABLE, V4L2_MPEG_VIDC_META_MAX, + 1, V4L2_MPEG_VIDC_META_DISABLE, V4L2_CID_MPEG_VIDC_METADATA_ROI_INFO, HFI_PROP_ROI_INFO, CAP_FLAG_INPUT_PORT, @@ -1606,8 +1600,8 @@ static struct msm_platform_inst_capability instance_data_waipio[] = { msm_vidc_adjust_roi_info, NULL}, {META_ROI_INFO, ENC, H264|HEVC, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, + V4L2_MPEG_VIDC_META_DISABLE, V4L2_MPEG_VIDC_META_MAX, + 1, V4L2_MPEG_VIDC_META_DISABLE, V4L2_CID_MPEG_VIDC_METADATA_ROI_INFO, HFI_PROP_ROI_INFO, CAP_FLAG_INPUT_PORT, @@ -1616,8 +1610,8 @@ static struct msm_platform_inst_capability instance_data_waipio[] = { msm_vidc_adjust_roi_info, NULL}, {META_DEC_QP_METADATA, DEC, CODECS_ALL, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, + V4L2_MPEG_VIDC_META_DISABLE, V4L2_MPEG_VIDC_META_MAX, + 1, V4L2_MPEG_VIDC_META_DISABLE, V4L2_CID_MPEG_VIDC_METADATA_DEC_QP_METADATA, HFI_PROP_DEC_QP_METADATA}, @@ -1710,8 +1704,8 @@ static struct msm_platform_inst_capability instance_data_waipio[] = { {0}, {0}, NULL, msm_vidc_set_q16}, {META_SUBFRAME_OUTPUT, ENC, HEIC, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, + V4L2_MPEG_VIDC_META_DISABLE, V4L2_MPEG_VIDC_META_MAX, + 1, V4L2_MPEG_VIDC_META_DISABLE, V4L2_CID_MPEG_VIDC_METADATA_SUBFRAME_OUTPUT, HFI_PROP_SUBFRAME_OUTPUT}, {COMPLEXITY, ENC, H264 | HEVC, @@ -1719,8 +1713,8 @@ static struct msm_platform_inst_capability instance_data_waipio[] = { 1, 100, V4L2_CID_MPEG_VIDC_VENC_COMPLEXITY}, {META_MAX_NUM_REORDER_FRAMES, DEC, HEVC | H264, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, + V4L2_MPEG_VIDC_META_DISABLE, V4L2_MPEG_VIDC_META_MAX, + 1, V4L2_MPEG_VIDC_META_DISABLE, V4L2_CID_MPEG_VIDC_METADATA_MAX_NUM_REORDER_FRAMES, HFI_PROP_MAX_NUM_REORDER_FRAMES}, }; diff --git a/driver/vidc/inc/msm_vidc_driver.h b/driver/vidc/inc/msm_vidc_driver.h index e3e69e3865..36e4f3ac16 100644 --- a/driver/vidc/inc/msm_vidc_driver.h +++ b/driver/vidc/inc/msm_vidc_driver.h @@ -8,6 +8,7 @@ #include #include +#include #include "msm_vidc_internal.h" #include "msm_vidc_core.h" #include "msm_vidc_inst.h" @@ -100,18 +101,68 @@ static inline is_internal_buffer(enum msm_vidc_buffer_type buffer_type) buffer_type == MSM_VIDC_BUF_PARTIAL_DATA; } +static inline bool is_meta_rx_inp_enabled(struct msm_vidc_inst *inst, u32 cap) +{ + bool enabled = false; + + if (inst->capabilities->cap[cap].value & V4L2_MPEG_VIDC_META_ENABLE && + inst->capabilities->cap[cap].value & V4L2_MPEG_VIDC_META_RX_INPUT) + enabled = true; + + return enabled; +} + +static inline bool is_meta_rx_out_enabled(struct msm_vidc_inst *inst, u32 cap) +{ + bool enabled = false; + + if (inst->capabilities->cap[cap].value & V4L2_MPEG_VIDC_META_ENABLE && + inst->capabilities->cap[cap].value & V4L2_MPEG_VIDC_META_RX_OUTPUT) + enabled = true; + + return enabled; +} + +static inline bool is_meta_tx_inp_enabled(struct msm_vidc_inst *inst, u32 cap) +{ + bool enabled = false; + + if (inst->capabilities->cap[cap].value & V4L2_MPEG_VIDC_META_ENABLE && + inst->capabilities->cap[cap].value & V4L2_MPEG_VIDC_META_TX_INPUT) + enabled = true; + + return enabled; +} + +static inline bool is_meta_tx_out_enabled(struct msm_vidc_inst *inst, u32 cap) +{ + bool enabled = false; + + if (inst->capabilities->cap[cap].value & V4L2_MPEG_VIDC_META_ENABLE && + inst->capabilities->cap[cap].value & V4L2_MPEG_VIDC_META_TX_OUTPUT) + enabled = true; + + return enabled; +} + static inline bool is_input_meta_enabled(struct msm_vidc_inst *inst) { bool enabled = false; if (is_decode_session(inst)) { - enabled = inst->capabilities->cap[META_BUF_TAG].value ? - true : false; + enabled = is_meta_tx_inp_enabled(inst, META_BUF_TAG) || + is_meta_rx_inp_enabled(inst, META_BUF_TAG) || + is_meta_tx_inp_enabled(inst, META_OUTBUF_FENCE) || + is_meta_rx_inp_enabled(inst, META_OUTBUF_FENCE); } else if (is_encode_session(inst)) { - enabled = (inst->capabilities->cap[META_SEQ_HDR_NAL].value || - inst->capabilities->cap[META_EVA_STATS].value || - inst->capabilities->cap[META_BUF_TAG].value || - inst->capabilities->cap[META_ROI_INFO].value); + enabled = is_meta_tx_inp_enabled(inst, META_SEQ_HDR_NAL) || + is_meta_rx_inp_enabled(inst, META_SEQ_HDR_NAL) || + is_meta_tx_inp_enabled(inst, META_EVA_STATS) || + is_meta_rx_inp_enabled(inst, META_EVA_STATS) || + is_meta_tx_inp_enabled(inst, META_BUF_TAG) || + is_meta_rx_inp_enabled(inst, META_BUF_TAG) || + is_meta_tx_inp_enabled(inst, META_ROI_INFO) || + is_meta_rx_inp_enabled(inst, META_ROI_INFO); } return enabled; } @@ -121,23 +172,37 @@ 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_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 || - inst->capabilities->cap[META_HIST_INFO].value || - inst->capabilities->cap[META_SEI_MASTERING_DISP].value || - inst->capabilities->cap[META_SEI_CLL].value || - inst->capabilities->cap[META_BUF_TAG].value || - inst->capabilities->cap[META_DPB_TAG_LIST].value || - inst->capabilities->cap[META_SUBFRAME_OUTPUT].value || - inst->capabilities->cap[META_MAX_NUM_REORDER_FRAMES].value); + enabled = is_meta_tx_out_enabled(inst, META_BITSTREAM_RESOLUTION) || + is_meta_rx_out_enabled(inst, META_BITSTREAM_RESOLUTION) || + is_meta_tx_out_enabled(inst, META_CROP_OFFSETS) || + is_meta_rx_out_enabled(inst, META_CROP_OFFSETS) || + is_meta_tx_out_enabled(inst, META_DPB_MISR) || + is_meta_rx_out_enabled(inst, META_DPB_MISR) || + is_meta_tx_out_enabled(inst, META_OPB_MISR) || + is_meta_rx_out_enabled(inst, META_OPB_MISR) || + is_meta_tx_out_enabled(inst, META_INTERLACE) || + is_meta_rx_out_enabled(inst, META_INTERLACE) || + is_meta_tx_out_enabled(inst, META_CONCEALED_MB_CNT) || + is_meta_rx_out_enabled(inst, META_CONCEALED_MB_CNT) || + is_meta_tx_out_enabled(inst, META_SEI_MASTERING_DISP) || + is_meta_rx_out_enabled(inst, META_SEI_MASTERING_DISP) || + is_meta_tx_out_enabled(inst, META_SEI_CLL) || + is_meta_rx_out_enabled(inst, META_SEI_CLL) || + is_meta_tx_out_enabled(inst, META_BUF_TAG) || + is_meta_rx_out_enabled(inst, META_BUF_TAG) || + is_meta_tx_out_enabled(inst, META_DPB_TAG_LIST) || + is_meta_rx_out_enabled(inst, META_DPB_TAG_LIST) || + is_meta_tx_out_enabled(inst, META_SUBFRAME_OUTPUT) || + is_meta_rx_out_enabled(inst, META_SUBFRAME_OUTPUT) || + is_meta_tx_out_enabled(inst, META_MAX_NUM_REORDER_FRAMES) || + is_meta_rx_out_enabled(inst, META_MAX_NUM_REORDER_FRAMES); } else if (is_encode_session(inst)) { - enabled = (inst->capabilities->cap[META_LTR_MARK_USE].value || - inst->capabilities->cap[META_BUF_TAG].value); + enabled = is_meta_tx_out_enabled(inst, META_LTR_MARK_USE) || + is_meta_rx_out_enabled(inst, META_LTR_MARK_USE) || + is_meta_tx_out_enabled(inst, META_BUF_TAG) || + is_meta_rx_out_enabled(inst, META_BUF_TAG); } + return enabled; } diff --git a/driver/vidc/inc/msm_vidc_internal.h b/driver/vidc/inc/msm_vidc_internal.h index 2d74f85d11..10397c5095 100644 --- a/driver/vidc/inc/msm_vidc_internal.h +++ b/driver/vidc/inc/msm_vidc_internal.h @@ -376,7 +376,7 @@ enum msm_vidc_inst_capability_type { MB_CYCLES_FW, MB_CYCLES_FW_VPP, SECURE_MODE, - INPUT_META_OUTBUF_FENCE, + META_OUTBUF_FENCE, FENCE_ID, FENCE_FD, TS_REORDER, diff --git a/driver/vidc/src/msm_vdec.c b/driver/vidc/src/msm_vdec.c index a4b1dd83cc..33af65974d 100644 --- a/driver/vidc/src/msm_vdec.c +++ b/driver/vidc/src/msm_vdec.c @@ -932,7 +932,7 @@ 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_input_list[] = { - INPUT_META_OUTBUF_FENCE, + META_OUTBUF_FENCE, /* * when fence enabled, client needs output buffer_tag * in input metadata buffer done. @@ -971,7 +971,7 @@ static int msm_vdec_subscribe_metadata(struct msm_vidc_inst *inst, payload[0] = HFI_MODE_METADATA; if (port == INPUT_PORT) { for (i = 0; i < ARRAY_SIZE(metadata_input_list); i++) { - if (capability->cap[metadata_input_list[i]].value && + if (is_meta_rx_inp_enabled(inst, metadata_input_list[i]) && msm_vidc_allow_metadata(inst, metadata_input_list[i])) { payload[count + 1] = capability->cap[metadata_input_list[i]].hfi_id; @@ -980,7 +980,7 @@ static int msm_vdec_subscribe_metadata(struct msm_vidc_inst *inst, } } else if (port == OUTPUT_PORT) { for (i = 0; i < ARRAY_SIZE(metadata_output_list); i++) { - if (capability->cap[metadata_output_list[i]].value && + if (is_meta_rx_out_enabled(inst, metadata_output_list[i]) && msm_vidc_allow_metadata(inst, metadata_output_list[i])) { payload[count + 1] = capability->cap[metadata_output_list[i]].hfi_id; @@ -1029,7 +1029,7 @@ static int msm_vdec_set_delivery_mode_metadata(struct msm_vidc_inst *inst, if (port == INPUT_PORT) { for (i = 0; i < ARRAY_SIZE(metadata_input_list); i++) { - if (capability->cap[metadata_input_list[i]].value) { + if (is_meta_tx_inp_enabled(inst, metadata_input_list[i])) { payload[count + 1] = capability->cap[metadata_input_list[i]].hfi_id; count++; @@ -1037,7 +1037,7 @@ static int msm_vdec_set_delivery_mode_metadata(struct msm_vidc_inst *inst, } } else if (port == OUTPUT_PORT) { for (i = 0; i < ARRAY_SIZE(metadata_output_list); i++) { - if (capability->cap[metadata_output_list[i]].value && + if (is_meta_tx_out_enabled(inst, metadata_output_list[i]) && msm_vidc_allow_metadata(inst, metadata_output_list[i])) { payload[count + 1] = capability->cap[metadata_output_list[i]].hfi_id; @@ -1069,7 +1069,7 @@ static int msm_vdec_set_delivery_mode_property(struct msm_vidc_inst *inst, u32 i, count = 0; struct msm_vidc_inst_capability *capability; static const u32 property_output_list[] = { - INPUT_META_OUTBUF_FENCE, + META_OUTBUF_FENCE, }; static const u32 property_input_list[] = {}; @@ -1092,6 +1092,20 @@ static int msm_vdec_set_delivery_mode_property(struct msm_vidc_inst *inst, } } else if (port == OUTPUT_PORT) { for (i = 0; i < ARRAY_SIZE(property_output_list); i++) { + if (property_output_list[i] == META_OUTBUF_FENCE && + is_meta_rx_inp_enabled(inst, META_OUTBUF_FENCE)) { + /* + * if output buffer fence enabled via + * META_OUTBUF_FENCE, then driver will send + * fence id via HFI_PROP_FENCE to firmware. + * So enable HFI_PROP_FENCE property as + * delivery mode property. + */ + payload[count + 1] = + capability->cap[property_output_list[i]].hfi_id; + count++; + continue; + } if (capability->cap[property_output_list[i]].value) { payload[count + 1] = capability->cap[property_output_list[i]].hfi_id; @@ -2055,7 +2069,7 @@ int msm_vdec_qbuf(struct msm_vidc_inst *inst, struct vb2_buffer *vb2) } if (vb2->type == OUTPUT_META_PLANE) { - if (inst->capabilities->cap[META_DPB_TAG_LIST].value) { + if (is_meta_rx_out_enabled(inst, META_DPB_TAG_LIST)) { /* * vb2 is not allowing client to pass data in output meta plane. * adjust the bytesused as client will send buffer tag metadata diff --git a/driver/vidc/src/msm_venc.c b/driver/vidc/src/msm_venc.c index d304316c99..6619efb6bd 100644 --- a/driver/vidc/src/msm_venc.c +++ b/driver/vidc/src/msm_venc.c @@ -681,7 +681,8 @@ static int msm_venc_metadata_delivery(struct msm_vidc_inst *inst, u32 payload[32] = {0}; u32 i, count = 0; struct msm_vidc_inst_capability *capability; - static const u32 metadata_list[] = { + static const u32 metadata_output_list[] = {}; + static const u32 metadata_input_list[] = { META_SEI_MASTERING_DISP, META_SEI_CLL, META_HDR10PLUS, @@ -699,12 +700,26 @@ static int msm_venc_metadata_delivery(struct msm_vidc_inst *inst, capability = inst->capabilities; payload[0] = HFI_MODE_METADATA; - for (i = 0; i < ARRAY_SIZE(metadata_list); i++) { - if (capability->cap[metadata_list[i]].value) { - payload[count + 1] = - capability->cap[metadata_list[i]].hfi_id; - count++; + + if (port == INPUT_PORT) { + for (i = 0; i < ARRAY_SIZE(metadata_input_list); i++) { + if (is_meta_tx_inp_enabled(inst, metadata_input_list[i])) { + payload[count + 1] = + capability->cap[metadata_input_list[i]].hfi_id; + count++; + } } + } else if (port == OUTPUT_PORT) { + for (i = 0; i < ARRAY_SIZE(metadata_output_list); i++) { + if (is_meta_tx_out_enabled(inst, metadata_output_list[i])) { + payload[count + 1] = + capability->cap[metadata_output_list[i]].hfi_id; + count++; + } + } + } else { + i_vpr_e(inst, "%s: invalid port: %d\n", __func__, port); + return -EINVAL; } rc = venus_hfi_session_command(inst, @@ -726,7 +741,8 @@ static int msm_venc_metadata_subscription(struct msm_vidc_inst *inst, u32 payload[32] = {0}; u32 i, count = 0; struct msm_vidc_inst_capability *capability; - static const u32 metadata_list[] = { + static const u32 metadata_input_list[] = {}; + static const u32 metadata_output_list[] = { META_LTR_MARK_USE, META_SEQ_HDR_NAL, META_TIMESTAMP, @@ -743,12 +759,26 @@ static int msm_venc_metadata_subscription(struct msm_vidc_inst *inst, capability = inst->capabilities; payload[0] = HFI_MODE_METADATA; - for (i = 0; i < ARRAY_SIZE(metadata_list); i++) { - if (capability->cap[metadata_list[i]].value) { - payload[count + 1] = - capability->cap[metadata_list[i]].hfi_id; - count++; + + if (port == INPUT_PORT) { + for (i = 0; i < ARRAY_SIZE(metadata_input_list); i++) { + if (is_meta_rx_inp_enabled(inst, metadata_input_list[i])) { + payload[count + 1] = + capability->cap[metadata_input_list[i]].hfi_id; + count++; + } } + } else if (port == OUTPUT_PORT) { + for (i = 0; i < ARRAY_SIZE(metadata_output_list); i++) { + if (is_meta_rx_out_enabled(inst, metadata_output_list[i])) { + payload[count + 1] = + capability->cap[metadata_output_list[i]].hfi_id; + count++; + } + } + } else { + i_vpr_e(inst, "%s: invalid port: %d\n", __func__, port); + return -EINVAL; } rc = venus_hfi_session_command(inst, diff --git a/driver/vidc/src/msm_vidc_control.c b/driver/vidc/src/msm_vidc_control.c index 58a7916e04..65a344a14e 100644 --- a/driver/vidc/src/msm_vidc_control.c +++ b/driver/vidc/src/msm_vidc_control.c @@ -82,8 +82,11 @@ static bool is_meta_ctrl(u32 id) 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_DEC_QP_METADATA || id == V4L2_CID_MPEG_VIDC_METADATA_BITSTREAM_RESOLUTION || - id == V4L2_CID_MPEG_VIDC_METADATA_CROP_OFFSETS); + id == V4L2_CID_MPEG_VIDC_METADATA_CROP_OFFSETS || + id == V4L2_CID_MPEG_VIDC_METADATA_MAX_NUM_REORDER_FRAMES || + id == V4L2_CID_MPEG_VIDC_METADATA_OUTBUF_FENCE); } static const char *const mpeg_video_rate_control[] = { @@ -420,18 +423,42 @@ static bool is_parent_available(struct msm_vidc_inst *inst, int msm_vidc_update_cap_value(struct msm_vidc_inst *inst, u32 cap_id, s32 adjusted_val, const char *func) { + int prev_value = 0; + bool is_updated = false; + if (!inst || !inst->capabilities) { d_vpr_e("%s: invalid params\n", __func__); return -EINVAL; } - if (inst->capabilities->cap[cap_id].value != adjusted_val) + prev_value = inst->capabilities->cap[cap_id].value; + + if (is_meta_ctrl(inst->capabilities->cap[cap_id].v4l2_id)) { + /* + * cumulative control value if client set same metadata + * control multiple times. + */ + if (adjusted_val & V4L2_MPEG_VIDC_META_ENABLE) { + /* enable metadata */ + inst->capabilities->cap[cap_id].value |= adjusted_val; + } else { + /* disable metadata */ + inst->capabilities->cap[cap_id].value &= ~adjusted_val; + } + if (prev_value != (prev_value | adjusted_val)) + is_updated = true; + } else { + inst->capabilities->cap[cap_id].value = adjusted_val; + if (prev_value != adjusted_val) + is_updated = true; + } + + if (is_updated) { i_vpr_h(inst, "%s: updated database: name: %s, value: %#x -> %#x\n", func, cap_name(cap_id), - inst->capabilities->cap[cap_id].value, adjusted_val); - - inst->capabilities->cap[cap_id].value = adjusted_val; + prev_value, adjusted_val); + } return 0; } @@ -1047,11 +1074,13 @@ static int msm_vidc_update_static_property(struct msm_vidc_inst *inst, * To subscribe HFI_PROP_DPB_TAG_LIST * data in FBD, HFI_PROP_BUFFER_TAG data * must be delivered via FTB. Hence, update - * META_OUTPUT_BUF_TAG when META_DPB_TAG_LIST - * is updated. + * META_OUTPUT_BUF_TAG to transfer on output port + * when META_DPB_TAG_LIST is enbaled. */ - msm_vidc_update_cap_value(inst, META_OUTPUT_BUF_TAG, - ctrl->val, __func__); + if (is_meta_rx_out_enabled(inst, META_DPB_TAG_LIST)) { + inst->capabilities->cap[META_OUTPUT_BUF_TAG].value |= + V4L2_MPEG_VIDC_META_TX_OUTPUT | V4L2_MPEG_VIDC_META_ENABLE; + } } rc = msm_vidc_update_meta_port_settings(inst); @@ -1754,7 +1783,7 @@ static int msm_vidc_adjust_static_layer_count_and_type(struct msm_vidc_inst *ins goto exit; } - if (!inst->capabilities->cap[META_EVA_STATS].value && + if (!is_meta_tx_inp_enabled(inst, META_EVA_STATS) && hb_requested && (layer_count > 1)) { layer_count = 1; i_vpr_h(inst, @@ -2577,7 +2606,7 @@ int msm_vidc_adjust_min_quality(void *instance, struct v4l2_ctrl *ctrl) goto update_and_exit; } - if (roi_enable) { + if (is_meta_tx_inp_enabled(inst, META_ROI_INFO)) { i_vpr_h(inst, "%s: min quality not supported with roi metadata\n", __func__); @@ -2585,7 +2614,7 @@ int msm_vidc_adjust_min_quality(void *instance, struct v4l2_ctrl *ctrl) goto update_and_exit; } - if (enh_layer_count && inst->hfi_layer_type != HFI_HIER_B) { + if (enh_layer_count > 0 && inst->hfi_layer_type != HFI_HIER_B) { i_vpr_h(inst, "%s: min quality not supported for HP encoding\n", __func__); @@ -2927,7 +2956,7 @@ int msm_vidc_set_header_mode(void *instance, { int rc = 0; struct msm_vidc_inst *inst = (struct msm_vidc_inst *) instance; - int header_mode, prepend_sps_pps, hdr_metadata; + int header_mode, prepend_sps_pps; u32 hfi_value = 0; struct msm_vidc_inst_capability *capability; @@ -2939,7 +2968,6 @@ int msm_vidc_set_header_mode(void *instance, header_mode = capability->cap[cap_id].value; prepend_sps_pps = capability->cap[PREPEND_SPSPPS_TO_IDR].value; - hdr_metadata = capability->cap[META_SEQ_HDR_NAL].value; /* prioritize PREPEND_SPSPPS_TO_IDR mode over other header modes */ if (prepend_sps_pps) @@ -2949,7 +2977,7 @@ int msm_vidc_set_header_mode(void *instance, else hfi_value = HFI_SEQ_HEADER_SEPERATE_FRAME; - if (hdr_metadata) + if (is_meta_rx_inp_enabled(inst, META_SEQ_HDR_NAL)) hfi_value |= HFI_SEQ_HEADER_METADATA; rc = msm_vidc_packetize_control(inst, cap_id, HFI_PAYLOAD_U32_ENUM, diff --git a/driver/vidc/src/msm_vidc_driver.c b/driver/vidc/src/msm_vidc_driver.c index e6200ec2e6..0f6a64924e 100644 --- a/driver/vidc/src/msm_vidc_driver.c +++ b/driver/vidc/src/msm_vidc_driver.c @@ -82,7 +82,7 @@ static const struct msm_vidc_cap_name cap_name_arr[] = { {MB_CYCLES_FW, "MB_CYCLES_FW" }, {MB_CYCLES_FW_VPP, "MB_CYCLES_FW_VPP" }, {SECURE_MODE, "SECURE_MODE" }, - {INPUT_META_OUTBUF_FENCE, "INPUT_META_OUTBUF_FENCE" }, + {META_OUTBUF_FENCE, "META_OUTBUF_FENCE" }, {FENCE_ID, "FENCE_ID" }, {FENCE_FD, "FENCE_FD" }, {TS_REORDER, "TS_REORDER" }, @@ -1425,10 +1425,10 @@ bool msm_vidc_allow_property(struct msm_vidc_inst *inst, u32 hfi_id) } break; case HFI_PROP_FENCE: - if (!inst->capabilities->cap[INPUT_META_OUTBUF_FENCE].value) { + if (!is_meta_rx_inp_enabled(inst, META_OUTBUF_FENCE)) { i_vpr_h(inst, "%s: cap: %24s not enabled, hence not allowed to subscribe\n", - __func__, cap_name(INPUT_META_OUTBUF_FENCE)); + __func__, cap_name(META_OUTBUF_FENCE)); is_allowed = false; } break; @@ -3314,7 +3314,7 @@ int msm_vidc_queue_buffer_single(struct msm_vidc_inst *inst, struct vb2_buffer * if (!buf) return -EINVAL; - if (inst->capabilities->cap[INPUT_META_OUTBUF_FENCE].value && + if (is_meta_rx_inp_enabled(inst, META_OUTBUF_FENCE) && is_output_buffer(buf->type)) { fence = msm_vidc_fence_create(inst); if (!fence) @@ -3795,7 +3795,7 @@ int msm_vidc_buffer_done(struct msm_vidc_inst *inst, if (buf->type == MSM_VIDC_BUF_INPUT_META && inst->capabilities->cap[INPUT_META_VIA_REQUEST].value) { - if (inst->capabilities->cap[INPUT_META_OUTBUF_FENCE].value) + if (is_meta_rx_inp_enabled(inst, META_OUTBUF_FENCE)) return msm_vidc_v4l2_buffer_event(inst, buf); } else { return msm_vidc_vb2_buffer_done(inst, buf); diff --git a/driver/vidc/src/msm_vidc_platform.c b/driver/vidc/src/msm_vidc_platform.c index b6568cb598..3840106459 100644 --- a/driver/vidc/src/msm_vidc_platform.c +++ b/driver/vidc/src/msm_vidc_platform.c @@ -17,9 +17,6 @@ #if defined(CONFIG_MSM_VIDC_KALAMA) #include "msm_vidc_kalama.h" #endif -#if defined(CONFIG_MSM_VIDC_DIWALI) -#include "msm_vidc_diwali.h" -#endif #if defined(CONFIG_MSM_VIDC_IRIS2) #include "msm_vidc_iris2.h" #endif @@ -198,16 +195,6 @@ static int msm_vidc_deinit_platform_variant(struct msm_vidc_core *core, struct d } #endif -#if defined(CONFIG_MSM_VIDC_DIWALI) - if (of_device_is_compatible(dev->of_node, "qcom,msm-vidc-diwali")) { - rc = msm_vidc_deinit_platform_diwali(core, dev); - if (rc) - d_vpr_e("%s: failed msm-vidc-diwali with %d\n", - __func__, rc); - return rc; - } -#endif - return rc; } @@ -239,16 +226,6 @@ static int msm_vidc_init_platform_variant(struct msm_vidc_core *core, struct dev } #endif -#if defined(CONFIG_MSM_VIDC_DIWALI) - if (of_device_is_compatible(dev->of_node, "qcom,msm-vidc-diwali")) { - rc = msm_vidc_init_platform_diwali(core, dev); - if (rc) - d_vpr_e("%s: failed msm-vidc-diwali with %d\n", - __func__, rc); - return rc; - } -#endif - return rc; } diff --git a/driver/vidc/src/venus_hfi.c b/driver/vidc/src/venus_hfi.c index ebd82c96db..79ad1c9b01 100644 --- a/driver/vidc/src/venus_hfi.c +++ b/driver/vidc/src/venus_hfi.c @@ -3523,7 +3523,7 @@ int venus_hfi_queue_buffer(struct msm_vidc_inst *inst, goto unlock; } - if (inst->capabilities->cap[INPUT_META_OUTBUF_FENCE].value && + if (is_meta_rx_inp_enabled(inst, META_OUTBUF_FENCE) && is_output_buffer(buffer->type)) { rc = hfi_create_packet(inst->packet, inst->packet_size, diff --git a/driver/vidc/src/venus_hfi_response.c b/driver/vidc/src/venus_hfi_response.c index 6c2ec98fd8..f25fb92135 100644 --- a/driver/vidc/src/venus_hfi_response.c +++ b/driver/vidc/src/venus_hfi_response.c @@ -1559,7 +1559,7 @@ static int handle_session_property(struct msm_vidc_inst *inst, __func__, payload_ptr[0], inst->capabilities->cap[PIPE].value); break; case HFI_PROP_FENCE: - if (inst->capabilities->cap[INPUT_META_OUTBUF_FENCE].value) { + if (is_meta_rx_inp_enabled(inst, META_OUTBUF_FENCE)) { if (payload_ptr) { fence_id = payload_ptr[0]; rc = msm_vidc_fence_signal(inst, fence_id); diff --git a/include/uapi/vidc/media/v4l2_vidc_extensions.h b/include/uapi/vidc/media/v4l2_vidc_extensions.h index 555a72f88b..0f3615d573 100644 --- a/include/uapi/vidc/media/v4l2_vidc_extensions.h +++ b/include/uapi/vidc/media/v4l2_vidc_extensions.h @@ -89,6 +89,16 @@ enum v4l2_mpeg_vidc_blur_types { (V4L2_CID_MPEG_VIDC_BASE + 0x12) /* various Metadata - encoder & decoder */ +enum v4l2_mpeg_vidc_metadata_bits { + V4L2_MPEG_VIDC_META_DISABLE = 0x0, + V4L2_MPEG_VIDC_META_ENABLE = 0x1, + V4L2_MPEG_VIDC_META_TX_INPUT = 0x2, + V4L2_MPEG_VIDC_META_TX_OUTPUT = 0x4, + V4L2_MPEG_VIDC_META_RX_INPUT = 0x8, + V4L2_MPEG_VIDC_META_RX_OUTPUT = 0x10, + V4L2_MPEG_VIDC_META_MAX = 0x20, +}; + #define V4L2_CID_MPEG_VIDC_METADATA_LTR_MARK_USE_DETAILS \ (V4L2_CID_MPEG_VIDC_BASE + 0x13) #define V4L2_CID_MPEG_VIDC_METADATA_SEQ_HEADER_NAL \ @@ -201,7 +211,7 @@ enum v4l2_mpeg_video_av1_tier { #define V4L2_CID_MPEG_VIDC_INPUT_METADATA_VIA_REQUEST_ENABLE \ (V4L2_CID_MPEG_VIDC_BASE + 0x37) /* Enables Output buffer fence id via input metadata */ -#define V4L2_CID_MPEG_VIDC_INPUT_METADATA_OUTBUF_FENCE \ +#define V4L2_CID_MPEG_VIDC_METADATA_OUTBUF_FENCE \ (V4L2_CID_MPEG_VIDC_BASE + 0x38) /* Control to set fence id to driver in order get corresponding fence fd */ #define V4L2_CID_MPEG_VIDC_SW_FENCE_ID \