diff --git a/config/anorak_video.conf b/config/anorak_video.conf deleted file mode 100644 index c71011602e..0000000000 --- a/config/anorak_video.conf +++ /dev/null @@ -1,2 +0,0 @@ -export CONFIG_MSM_VIDC_ANORAK=y -export CONFIG_MSM_VIDC_IRIS3=y diff --git a/config/anorak_video.h b/config/anorak_video.h deleted file mode 100644 index f8d5462491..0000000000 --- a/config/anorak_video.h +++ /dev/null @@ -1,8 +0,0 @@ -/* SPDX-License-Identifier: GPL-2.0-only */ -/* - * Copyright (c) 2020-2021, The Linux Foundation. All rights reserved. - * Copyright (c) 2021-2023 Qualcomm Innovation Center, Inc. All rights reserved. - */ - -#define CONFIG_MSM_VIDC_IRIS3 1 -#define CONFIG_MSM_VIDC_ANORAK 1 diff --git a/config/kalama_video.conf b/config/kalama_video.conf index 311ddbf314..545bba0e96 100644 --- a/config/kalama_video.conf +++ b/config/kalama_video.conf @@ -1,2 +1 @@ export CONFIG_MSM_VIDC_KALAMA=y -export CONFIG_MSM_VIDC_IRIS3=y diff --git a/config/kalama_video.h b/config/kalama_video.h index 9e06036401..f5665b1f85 100644 --- a/config/kalama_video.h +++ b/config/kalama_video.h @@ -4,5 +4,4 @@ * Copyright (c) 2021-2023 Qualcomm Innovation Center, Inc. All rights reserved. */ -#define CONFIG_MSM_VIDC_IRIS3 1 #define CONFIG_MSM_VIDC_KALAMA 1 diff --git a/config/pineapple_video.conf b/config/pineapple_video.conf index 176e5533a6..c5ccde9008 100644 --- a/config/pineapple_video.conf +++ b/config/pineapple_video.conf @@ -1,2 +1 @@ export CONFIG_MSM_VIDC_PINEAPPLE=y -export CONFIG_MSM_VIDC_IRIS33=y diff --git a/config/pineapple_video.h b/config/pineapple_video.h index ba96436124..62e7ebd927 100644 --- a/config/pineapple_video.h +++ b/config/pineapple_video.h @@ -4,5 +4,4 @@ * Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved. */ -#define CONFIG_MSM_VIDC_IRIS33 1 #define CONFIG_MSM_VIDC_PINEAPPLE 1 diff --git a/config/waipio_video.conf b/config/waipio_video.conf deleted file mode 100644 index 227440fb21..0000000000 --- a/config/waipio_video.conf +++ /dev/null @@ -1,2 +0,0 @@ -export CONFIG_MSM_VIDC_WAIPIO=y -export CONFIG_MSM_VIDC_IRIS2=y diff --git a/config/waipio_video.h b/config/waipio_video.h deleted file mode 100644 index 90d0f22c07..0000000000 --- a/config/waipio_video.h +++ /dev/null @@ -1,8 +0,0 @@ -/* SPDX-License-Identifier: GPL-2.0-only */ -/* - * Copyright (c) 2020-2021,, The Linux Foundation. All rights reserved. - * Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved. - */ - -#define CONFIG_MSM_VIDC_IRIS2 1 -#define CONFIG_MSM_VIDC_WAIPIO 1 diff --git a/driver/platform/anorak/inc/msm_vidc_anorak.h b/driver/platform/anorak/inc/msm_vidc_anorak.h deleted file mode 100644 index 1189292321..0000000000 --- a/driver/platform/anorak/inc/msm_vidc_anorak.h +++ /dev/null @@ -1,27 +0,0 @@ -/* SPDX-License-Identifier: GPL-2.0-only */ -/* - * Copyright (c) 2020-2021, The Linux Foundation. All rights reserved. - * Copyright (c) 2021-2023 Qualcomm Innovation Center, Inc. All rights reserved. - */ - -#ifndef _MSM_VIDC_ANORAK_H_ -#define _MSM_VIDC_ANORAK_H_ - -#include "msm_vidc_core.h" - -#if defined(CONFIG_MSM_VIDC_ANORAK) -int msm_vidc_init_platform_anorak(struct msm_vidc_core *core, struct device *dev); -int msm_vidc_deinit_platform_anorak(struct msm_vidc_core *core, struct device *dev); -#else -int msm_vidc_init_platform_anorak(struct msm_vidc_core *core, struct device *dev) -{ - return -EINVAL; -} - -int msm_vidc_deinit_platform_anorak(struct msm_vidc_core *core, struct device *dev) -{ - return -EINVAL; -} -#endif - -#endif // _MSM_VIDC_ANORAK_H_ diff --git a/driver/platform/anorak/src/msm_vidc_anorak.c b/driver/platform/anorak/src/msm_vidc_anorak.c deleted file mode 100644 index 2d47824a29..0000000000 --- a/driver/platform/anorak/src/msm_vidc_anorak.c +++ /dev/null @@ -1,2435 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0-only -/* - * Copyright (c) 2020-2021, The Linux Foundation. All rights reserved. - * Copyright (c) 2021-2023 Qualcomm Innovation Center, Inc. All rights reserved. - */ - -#include -#include - -#include -#include - -#include -#include "msm_vidc_anorak.h" -#include "msm_vidc_platform.h" -#include "msm_vidc_debug.h" -#include "msm_vidc_internal.h" -#include "msm_vidc_control_ext.h" -#include "msm_vidc_iris3.h" -#include "hfi_property.h" -#include "hfi_command.h" - -#define DEFAULT_VIDEO_CONCEAL_COLOR_BLACK 0x8020010 -#define MAX_BASE_LAYER_PRIORITY_ID 63 -#define MAX_OP_POINT 31 -#define MAX_BITRATE 220000000 -#define DEFAULT_BITRATE 20000000 -#define MINIMUM_FPS 1 -#define MAXIMUM_FPS 480 -#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_MB_SIZE \ - (((4096 + 15) >> 4) * ((2304 + 15) >> 4)) - -#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 AV1 MSM_VIDC_AV1 -#define HEIC MSM_VIDC_HEIC -#define CODECS_ALL (H264 | HEVC | VP9 | HEIC | AV1) -#define MAXIMUM_OVERRIDE_VP9_FPS 200 - -static struct msm_platform_core_capability core_data_anorak[] = { - /* {type, value} */ - {ENC_CODECS, H264|HEVC|HEIC}, - {DEC_CODECS, H264|HEVC|VP9|AV1|HEIC}, - {MAX_SESSION_COUNT, 16}, - {MAX_NUM_720P_SESSIONS, 16}, - {MAX_NUM_1080P_SESSIONS, 16}, - {MAX_NUM_4K_SESSIONS, 8}, - {MAX_NUM_8K_SESSIONS, 2}, - {MAX_SECURE_SESSION_COUNT, 3}, - {MAX_RT_MBPF, 174080}, /* (8192x4352)/256 + (4096x2176)/256*/ - {MAX_MBPF, 278528}, /* ((8192x4352)/256) * 2 */ - {MAX_MBPS, 7833600}, /* max_load - * 7680x4320@60fps or 3840x2176@240fps - * which is greater than 4096x2176@120fps, - * 8192x4320@48fps - */ - {MAX_IMAGE_MBPF, 1048576}, /* (16384x16384)/256 */ - {MAX_MBPF_HQ, 8160}, /* ((1920x1088)/256) */ - {MAX_MBPS_HQ, 489600}, /* ((1920x1088)/256)@60fps */ - {MAX_MBPF_B_FRAME, 32640}, /* 3840x2176/256 */ - {MAX_MBPS_B_FRAME, 1958400}, /* 3840x2176/256 MBs@60fps */ - {MAX_MBPS_ALL_INTRA, 1044480}, /* 4096x2176/256 MBs@30fps */ - {MAX_ENH_LAYER_COUNT, 5}, - {NUM_VPP_PIPE, 4}, - {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)*/ - {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}, - {DEVICE_CAPS, V4L2_CAP_VIDEO_M2M_MPLANE | V4L2_CAP_META_CAPTURE | - V4L2_CAP_STREAMING}, - {SUPPORTS_REQUESTS, 1}, -}; - -static struct msm_platform_inst_capability instance_cap_data_anorak[] = { - /* {cap, domain, codec, - * min, max, step_or_mask, value, - * v4l2_id, - * hfi_id, - * flags} - */ - - {FRAME_WIDTH, DEC, CODECS_ALL, 96, 8192, 1, 1920}, - - {FRAME_WIDTH, DEC, VP9, 96, 4096, 1, 1920}, - - {FRAME_WIDTH, ENC, CODECS_ALL, 128, 8192, 1, 1920}, - - {FRAME_WIDTH, ENC, HEVC, 96, 8192, 1, 1920}, - - {FRAME_WIDTH, ENC, HEIC, 128, 16384, 1, 16384}, - - {LOSSLESS_FRAME_WIDTH, ENC, CODECS_ALL, 128, 4096, 1, 1920}, - - {LOSSLESS_FRAME_WIDTH, ENC, HEVC, 96, 4096, 1, 1920}, - - {SECURE_FRAME_WIDTH, DEC, CODECS_ALL, 96, 4096, 1, 1920}, - - {SECURE_FRAME_WIDTH, ENC, CODECS_ALL, 128, 4096, 1, 1920}, - - {SECURE_FRAME_WIDTH, ENC, HEVC, 96, 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, 8192, 1, 1080}, - - {FRAME_HEIGHT, ENC, HEVC, 96, 8192, 1, 1080}, - - {FRAME_HEIGHT, ENC, HEIC, 128, 16384, 1, 16384}, - - {LOSSLESS_FRAME_HEIGHT, ENC, CODECS_ALL, 128, 4096, 1, 1080}, - - {LOSSLESS_FRAME_HEIGHT, ENC, HEVC, 96, 4096, 1, 1080}, - - {SECURE_FRAME_HEIGHT, DEC, CODECS_ALL, 96, 4096, 1, 1080}, - - {SECURE_FRAME_HEIGHT, ENC, CODECS_ALL, 128, 4096, 1, 1080}, - - {SECURE_FRAME_HEIGHT, ENC, HEVC, 96, 4096, 1, 1080}, - - {PIX_FMTS, ENC|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, ENC|DEC, HEVC|VP9|AV1, - 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}, - - {PIX_FMTS, ENC, HEIC, - MSM_VIDC_FMT_NV12, - MSM_VIDC_FMT_P010, - MSM_VIDC_FMT_NV12 | MSM_VIDC_FMT_NV21 | MSM_VIDC_FMT_P010, - MSM_VIDC_FMT_NV12}, - - {PIX_FMTS, DEC, 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}, - - {MIN_BUFFERS_INPUT, ENC|DEC, CODECS_ALL, 0, 64, 1, 4, - V4L2_CID_MIN_BUFFERS_FOR_OUTPUT}, - - {MIN_BUFFERS_INPUT, ENC|DEC, HEIC, 0, 64, 1, 1, - 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}, - - /* (8192 * 4320) / 256 */ - {MBPF, ENC, CODECS_ALL, 64, 138240, 1, 138240}, - - {MBPF, ENC, HEVC, 36, 138240, 1, 138240}, - - /* ((16384x16384)/256) */ - {MBPF, ENC, HEIC, 36, 1048576, 1, 1048576}, - - {MBPF, DEC, CODECS_ALL, 36, 138240, 1, 138240}, - - /* (4096 * 2304) / 256 */ - {MBPF, DEC, VP9, 36, 36864, 1, 36864}, - - /* ((8192x8192)/256) */ - {MBPF, DEC, HEIC, 64, 262144, 1, 262144 }, - - /* (4096 * 2304) / 256 */ - {LOSSLESS_MBPF, ENC, H264|HEVC, 64, 36864, 1, 36864}, - - /* Batch Mode Decode */ - /* TODO: update with new values based on updated voltage corner */ - {BATCH_MBPF, DEC, H264|HEVC|VP9|AV1, 64, 34816, 1, 34816}, - - /* (4096 * 2304) / 256 */ - {BATCH_FPS, DEC, H264|HEVC|VP9|AV1, 1, 120, 1, 120}, - - {SECURE_MBPF, ENC|DEC, H264|HEVC|VP9|AV1, 64, 36864, 1, 36864}, - - {SECURE_MBPF, ENC, HEVC, 36, 36864, 1, 36864}, - - {FRAME_RATE, ENC, CODECS_ALL, - (MINIMUM_FPS << 16), (MAXIMUM_FPS << 16), - 1, (DEFAULT_FPS << 16), - 0, - HFI_PROP_FRAME_RATE, - CAP_FLAG_OUTPUT_PORT}, - - {FRAME_RATE, ENC, HEIC, - (MINIMUM_FPS << 16), (MAXIMUM_FPS << 16), - 1, (MINIMUM_FPS << 16), - 0, - HFI_PROP_FRAME_RATE, - CAP_FLAG_OUTPUT_PORT}, - - {FRAME_RATE, DEC, CODECS_ALL, - (MINIMUM_FPS << 16), (MAXIMUM_FPS << 16), - 1, (DEFAULT_FPS << 16), - V4L2_CID_MPEG_VIDC_FRAME_RATE, - 0, - CAP_FLAG_OUTPUT_PORT | - CAP_FLAG_INPUT_PORT | CAP_FLAG_DYNAMIC_ALLOWED}, - - {FRAME_RATE, DEC, VP9, - (MINIMUM_FPS << 16), (MAXIMUM_OVERRIDE_VP9_FPS << 16), - 1, (DEFAULT_FPS << 16), - V4L2_CID_MPEG_VIDC_FRAME_RATE, - 0, - CAP_FLAG_OUTPUT_PORT | - CAP_FLAG_INPUT_PORT | CAP_FLAG_DYNAMIC_ALLOWED}, - - {OPERATING_RATE, ENC, CODECS_ALL, - (MINIMUM_FPS << 16), (MAXIMUM_FPS << 16), - 1, (DEFAULT_FPS << 16)}, - - {OPERATING_RATE, DEC, CODECS_ALL, - (MINIMUM_FPS << 16), (MAXIMUM_FPS << 16), - 1, (DEFAULT_FPS << 16), - V4L2_CID_MPEG_VIDC_OPERATING_RATE, - 0, - CAP_FLAG_OUTPUT_PORT | - CAP_FLAG_INPUT_PORT | CAP_FLAG_DYNAMIC_ALLOWED}, - - {OPERATING_RATE, DEC, VP9, - (MINIMUM_FPS << 16), (MAXIMUM_OVERRIDE_VP9_FPS << 16), - 1, (DEFAULT_FPS << 16), - V4L2_CID_MPEG_VIDC_OPERATING_RATE, - 0, - CAP_FLAG_OUTPUT_PORT | - CAP_FLAG_INPUT_PORT | CAP_FLAG_DYNAMIC_ALLOWED}, - - {INPUT_RATE, ENC|DEC, CODECS_ALL, - (MINIMUM_FPS << 16), INT_MAX, - 1, (DEFAULT_FPS << 16)}, - - {TIMESTAMP_RATE, ENC|DEC, CODECS_ALL, - (MINIMUM_FPS << 16), INT_MAX, - 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|AV1, 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, 489583, 489583, 1, 489583}, - - {MB_CYCLES_FW_VPP, ENC, CODECS_ALL, 48405, 48405, 1, 48405}, - - {MB_CYCLES_FW_VPP, DEC, CODECS_ALL, 66234, 66234, 1, 66234}, - - {CLIENT_ID, ENC|DEC, CODECS_ALL, - INVALID_CLIENT_ID, INT_MAX, 1, INVALID_CLIENT_ID, - V4L2_CID_MPEG_VIDC_CLIENT_ID}, - - {SECURE_MODE, ENC|DEC, H264|HEVC|VP9|AV1, - 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}, - - /* - * Client will enable V4L2_CID_MPEG_VIDC_METADATA_OUTBUF_FENCE - * to get fence_id in input metadata buffer done. - */ - {META_OUTBUF_FENCE, DEC, H264|HEVC|VP9|AV1, - V4L2_MPEG_VIDC_META_DISABLE, - V4L2_MPEG_VIDC_META_ENABLE | V4L2_MPEG_VIDC_META_RX_INPUT, - 0, V4L2_MPEG_VIDC_META_DISABLE, - V4L2_CID_MPEG_VIDC_METADATA_OUTBUF_FENCE, - HFI_PROP_FENCE, - CAP_FLAG_BITMASK | CAP_FLAG_META}, - - /* - * Client to do set_ctrl with FENCE_ID to set fence_id - * and then client will do get_ctrl with FENCE_FD to get - * fence_fd corresponding to client set fence_id. - */ - {FENCE_ID, DEC, CODECS_ALL, - 0, INT_MAX, 1, 0, - V4L2_CID_MPEG_VIDC_SW_FENCE_ID, - 0, - CAP_FLAG_DYNAMIC_ALLOWED | CAP_FLAG_OUTPUT_PORT}, - - {FENCE_FD, DEC, CODECS_ALL, - INVALID_FD, INT_MAX, 1, INVALID_FD, - V4L2_CID_MPEG_VIDC_SW_FENCE_FD}, - - {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}, - - {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}, - - {ROTATION, ENC, CODECS_ALL, - 0, 270, 90, 0, - V4L2_CID_ROTATE, - HFI_PROP_ROTATION, - CAP_FLAG_OUTPUT_PORT}, - - {SUPER_FRAME, ENC, H264|HEVC, - 0, 32, 1, 0, - V4L2_CID_MPEG_VIDC_SUPERFRAME, 0, - CAP_FLAG_NONE}, - - {SLICE_DECODE, DEC, H264|HEVC|AV1, - V4L2_MPEG_MSM_VIDC_DISABLE, - V4L2_MPEG_MSM_VIDC_ENABLE, - 1, - V4L2_MPEG_MSM_VIDC_DISABLE, - V4L2_CID_MPEG_VIDEO_DECODER_SLICE_INTERFACE, - HFI_PROP_SLICE_DECODE, - CAP_FLAG_INPUT_PORT}, - - {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}, - - {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}, - - {VUI_TIMING_INFO, ENC, CODECS_ALL, - V4L2_MPEG_MSM_VIDC_DISABLE, - V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, - V4L2_CID_MPEG_VIDC_VUI_TIMING_INFO, - HFI_PROP_DISABLE_VUI_TIMING_INFO, - CAP_FLAG_OUTPUT_PORT}, - - {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}, - - {WITHOUT_STARTCODE, DEC, AV1, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_DISABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, - V4L2_CID_MPEG_VIDEO_HEVC_WITHOUT_STARTCODE, - HFI_PROP_NAL_LENGTH_FIELD, - CAP_FLAG_INPUT_PORT}, - - {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}, - - /* 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}, - - {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}, - - {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}, - - {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}, - - {CABAC_MAX_BITRATE, ENC, H264|HEVC, 0, - 160000000, 1, 160000000}, - - {CAVLC_MAX_BITRATE, ENC, H264, 0, - 220000000, 1, 220000000}, - - {ALLINTRA_MAX_BITRATE, ENC, H264|HEVC, 0, - 220000000, 1, 220000000}, - - {LOWLATENCY_MAX_BITRATE, ENC, H264|HEVC, 0, - 70000000, 1, 70000000}, - - {NUM_COMV, DEC, CODECS_ALL, - 0, INT_MAX, 1, 0}, - - {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}, - - {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}, - - {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}, - - {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}, - - {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}, - - {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}, - - {BLUR_TYPES, ENC, H264|HEVC, - VIDC_BLUR_NONE, VIDC_BLUR_EXTERNAL, - BIT(VIDC_BLUR_NONE) | BIT(VIDC_BLUR_EXTERNAL), - VIDC_BLUR_NONE, - V4L2_CID_MPEG_VIDC_VIDEO_BLUR_TYPES, - HFI_PROP_BLUR_TYPES, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU}, - - {BLUR_RESOLUTION, ENC, H264|HEVC, - 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}, - - {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}, - - {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}, - - {LOWLATENCY_MODE, DEC, H264|HEVC|VP9|AV1, - 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, MAX_LTR_FRAME_COUNT_2, 1, 0, - V4L2_CID_MPEG_VIDEO_LTR_COUNT, - HFI_PROP_LTR_COUNT, - CAP_FLAG_OUTPUT_PORT}, - - {USE_LTR, ENC, H264|HEVC, - INVALID_DEFAULT_MARK_OR_USE_LTR, - ((1 << MAX_LTR_FRAME_COUNT_2) - 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}, - - {MARK_LTR, ENC, H264|HEVC, - INVALID_DEFAULT_MARK_OR_USE_LTR, - (MAX_LTR_FRAME_COUNT_2 - 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}, - - {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_TYPE, ENC, H264|HEVC, - V4L2_MPEG_VIDEO_VIDC_INTRA_REFRESH_RANDOM, - V4L2_MPEG_VIDEO_VIDC_INTRA_REFRESH_CYCLIC, - BIT(V4L2_MPEG_VIDEO_VIDC_INTRA_REFRESH_RANDOM) | - BIT(V4L2_MPEG_VIDEO_VIDC_INTRA_REFRESH_CYCLIC), - V4L2_MPEG_VIDEO_VIDC_INTRA_REFRESH_RANDOM, - V4L2_CID_MPEG_VIDEO_VIDC_INTRA_REFRESH_TYPE, - 0, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU}, - - {IR_PERIOD, ENC, H264|HEVC, - 0, INT_MAX, 1, 0, - V4L2_CID_MPEG_VIDC_INTRA_REFRESH_PERIOD, - 0, - CAP_FLAG_INPUT_PORT | CAP_FLAG_OUTPUT_PORT | - CAP_FLAG_DYNAMIC_ALLOWED}, - - {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}, - - {TIME_DELTA_BASED_RC, ENC, H264|HEVC, - 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}, - - {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}, - - {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}, - - {REQUEST_PREPROCESS, ENC, H264|HEVC, - MSM_VIDC_PREPROCESS_NONE, - MSM_VIDC_PREPROCESS_TYPE0, - BIT(MSM_VIDC_PREPROCESS_NONE) | - BIT(MSM_VIDC_PREPROCESS_TYPE0), - MSM_VIDC_PREPROCESS_NONE, - 0, HFI_PROP_REQUEST_PREPROCESS, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU}, - - {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}, - - {MIN_QUALITY, ENC, H264|HEVC, - 0, MAX_SUPPORTED_MIN_QUALITY, 70, MAX_SUPPORTED_MIN_QUALITY, - 0, - HFI_PROP_MAINTAIN_MIN_QUALITY, - CAP_FLAG_OUTPUT_PORT}, - - {VBV_DELAY, ENC, H264|HEVC, - 200, 300, 100, 300, - V4L2_CID_MPEG_VIDEO_VBV_DELAY, - HFI_PROP_VBV_DELAY, - CAP_FLAG_OUTPUT_PORT}, - - {PEAK_BITRATE, ENC, H264|HEVC, - /* default peak bitrate is 10% larger than avg 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}, - - {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}, - - {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}, - - {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}, - - {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}, - - {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}, - - {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}, - - {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}, - - {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}, - - {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}, - - {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}, - - {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}, - - {LAYER_ENABLE, ENC, HEVC, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, - 0, - 0, - 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}, - - {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}, - - {ENH_LAYER_COUNT, DEC, AV1, - 0, MAX_OP_POINT, 1, 0, - 0, - HFI_PROP_AV1_OP_POINT, - CAP_FLAG_INPUT_PORT}, - - {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}, - - {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}, - - {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}, - - {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}, - - {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}, - - {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}, - - {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}, - {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}, - - {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}, - - {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}, - - {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}, - - {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}, - - {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}, - - {ENTROPY_MODE, DEC, H264|HEVC|VP9|AV1, - 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}, - - {PROFILE, ENC|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}, - - {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}, - - {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}, - - {PROFILE, DEC, AV1, - V4L2_MPEG_VIDEO_AV1_PROFILE_MAIN, - V4L2_MPEG_VIDEO_AV1_PROFILE_MAIN, - BIT(V4L2_MPEG_VIDEO_AV1_PROFILE_MAIN), - V4L2_MPEG_VIDEO_AV1_PROFILE_MAIN, - V4L2_CID_MPEG_VIDEO_AV1_PROFILE, - HFI_PROP_PROFILE, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU}, - - {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_5_0, - V4L2_CID_MPEG_VIDEO_H264_LEVEL, - HFI_PROP_LEVEL, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU}, - - {LEVEL, ENC, 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_5, - V4L2_CID_MPEG_VIDEO_HEVC_LEVEL, - HFI_PROP_LEVEL, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU}, - - {LEVEL, DEC, H264, - V4L2_MPEG_VIDEO_H264_LEVEL_1_0, - V4L2_MPEG_VIDEO_H264_LEVEL_6_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) | - BIT(V4L2_MPEG_VIDEO_H264_LEVEL_6_0) | - BIT(V4L2_MPEG_VIDEO_H264_LEVEL_6_1) | - BIT(V4L2_MPEG_VIDEO_H264_LEVEL_6_2), - V4L2_MPEG_VIDEO_H264_LEVEL_6_1, - V4L2_CID_MPEG_VIDEO_H264_LEVEL, - HFI_PROP_LEVEL, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU}, - - {LEVEL, DEC, HEVC|HEIC, - V4L2_MPEG_VIDEO_HEVC_LEVEL_1, - V4L2_MPEG_VIDEO_HEVC_LEVEL_6_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) | - BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_6) | - BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_6_1)| - BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_6_2), - V4L2_MPEG_VIDEO_HEVC_LEVEL_6_1, - V4L2_CID_MPEG_VIDEO_HEVC_LEVEL, - HFI_PROP_LEVEL, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU}, - - {LEVEL, DEC, VP9, - V4L2_MPEG_VIDEO_VP9_LEVEL_1_0, - V4L2_MPEG_VIDEO_VP9_LEVEL_6_0, - 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) | - BIT(V4L2_MPEG_VIDEO_VP9_LEVEL_6_0), - V4L2_MPEG_VIDEO_VP9_LEVEL_6_0, - V4L2_CID_MPEG_VIDEO_VP9_LEVEL, - HFI_PROP_LEVEL, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU}, - - {LEVEL, DEC, AV1, - V4L2_MPEG_VIDEO_AV1_LEVEL_2_0, - V4L2_MPEG_VIDEO_AV1_LEVEL_6_1, - BIT(V4L2_MPEG_VIDEO_AV1_LEVEL_2_0) | - BIT(V4L2_MPEG_VIDEO_AV1_LEVEL_2_1) | - BIT(V4L2_MPEG_VIDEO_AV1_LEVEL_2_2) | - BIT(V4L2_MPEG_VIDEO_AV1_LEVEL_2_3) | - BIT(V4L2_MPEG_VIDEO_AV1_LEVEL_3_0) | - BIT(V4L2_MPEG_VIDEO_AV1_LEVEL_3_1) | - BIT(V4L2_MPEG_VIDEO_AV1_LEVEL_3_2) | - BIT(V4L2_MPEG_VIDEO_AV1_LEVEL_3_3) | - BIT(V4L2_MPEG_VIDEO_AV1_LEVEL_4_0) | - BIT(V4L2_MPEG_VIDEO_AV1_LEVEL_4_1) | - BIT(V4L2_MPEG_VIDEO_AV1_LEVEL_4_2) | - BIT(V4L2_MPEG_VIDEO_AV1_LEVEL_4_3) | - BIT(V4L2_MPEG_VIDEO_AV1_LEVEL_5_0) | - BIT(V4L2_MPEG_VIDEO_AV1_LEVEL_5_1) | - BIT(V4L2_MPEG_VIDEO_AV1_LEVEL_5_2) | - BIT(V4L2_MPEG_VIDEO_AV1_LEVEL_5_3) | - BIT(V4L2_MPEG_VIDEO_AV1_LEVEL_6_0) | - BIT(V4L2_MPEG_VIDEO_AV1_LEVEL_6_1), - V4L2_MPEG_VIDEO_AV1_LEVEL_6_1, - V4L2_CID_MPEG_VIDEO_AV1_LEVEL, - HFI_PROP_LEVEL, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU}, - - {AV1_TIER, DEC, AV1, - V4L2_MPEG_VIDEO_AV1_TIER_MAIN, - V4L2_MPEG_VIDEO_AV1_TIER_HIGH, - BIT(V4L2_MPEG_VIDEO_AV1_TIER_MAIN) | - BIT(V4L2_MPEG_VIDEO_AV1_TIER_HIGH), - V4L2_MPEG_VIDEO_AV1_TIER_HIGH, - V4L2_CID_MPEG_VIDEO_AV1_TIER, - HFI_PROP_TIER, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU}, - - {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}, - - {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}, - - {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}, - - {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}, - - {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, - 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}, - - {SLICE_MODE, ENC, HEIC, - V4L2_MPEG_VIDEO_MULTI_SLICE_MODE_SINGLE, - V4L2_MPEG_VIDEO_MULTI_SLICE_MODE_SINGLE, - BIT(V4L2_MPEG_VIDEO_MULTI_SLICE_MODE_SINGLE), - V4L2_MPEG_VIDEO_MULTI_SLICE_MODE_SINGLE, - V4L2_CID_MPEG_VIDEO_MULTI_SLICE_MODE, - 0, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU}, - - {SLICE_MAX_BYTES, ENC, H264|HEVC, - 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, - 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}, - - {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}, - - {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}, - - {DISPLAY_DELAY_ENABLE, DEC, H264|HEVC|VP9|AV1, - 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}, - - {DISPLAY_DELAY, DEC, H264|HEVC|VP9|AV1, - 0, 1, 1, 0, - V4L2_CID_MPEG_VIDEO_DEC_DISPLAY_DELAY, - HFI_PROP_DECODE_ORDER_OUTPUT, - CAP_FLAG_INPUT_PORT}, - - {OUTPUT_ORDER, DEC, H264|HEVC|VP9|AV1, - 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}, - - {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}, - - {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}, - - {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}, - - {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}, - - {STAGE, DEC|ENC, CODECS_ALL, - MSM_VIDC_STAGE_1, - MSM_VIDC_STAGE_2, 1, - MSM_VIDC_STAGE_2, - 0, - HFI_PROP_STAGE}, - - {PIPE, DEC|ENC, CODECS_ALL, - MSM_VIDC_PIPE_1, - MSM_VIDC_PIPE_4, 1, - MSM_VIDC_PIPE_4, - 0, - HFI_PROP_PIPE}, - - {POC, DEC, H264, 0, 2, 1, 1, - 0, - HFI_PROP_PIC_ORDER_CNT_TYPE}, - - {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|AV1, 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}, - - {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}, - - {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, 1 + NRT_PRIORITY_OFFSET, 1, 1 + NRT_PRIORITY_OFFSET, - V4L2_CID_MPEG_VIDC_PRIORITY, - HFI_PROP_SESSION_PRIORITY, - CAP_FLAG_DYNAMIC_ALLOWED}, - - {FIRMWARE_PRIORITY_OFFSET, DEC | ENC, CODECS_ALL, - 1, 1, 1, 1}, - - {CRITICAL_PRIORITY, ENC, CODECS_ALL, - 0, 1, 1, 0, - V4L2_CID_MPEG_VIDC_CRITICAL_PRIORITY}, - - {RESERVE_DURATION, ENC, CODECS_ALL, - 0, INT_MAX, 1, 0, - V4L2_CID_MPEG_VIDC_RESERVE_DURATION, - HFI_CMD_RESERVE, - CAP_FLAG_DYNAMIC_ALLOWED}, - - {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}, - - {FILM_GRAIN, DEC, AV1, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, - V4L2_CID_MPEG_VIDC_AV1D_FILM_GRAIN_PRESENT, - HFI_PROP_AV1_FILM_GRAIN_PRESENT}, - - {SUPER_BLOCK, DEC, AV1, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, - 0, - HFI_PROP_AV1_SUPER_BLOCK_ENABLED}, - - {DRAP, DEC, AV1, - 0, S32_MAX, 1, 0, - 0, - HFI_PROP_AV1_DRAP_CONFIG, - CAP_FLAG_INPUT_PORT}, - - {LAST_FLAG_EVENT_ENABLE, DEC, CODECS_ALL, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, - V4L2_CID_MPEG_VIDC_LAST_FLAG_EVENT_ENABLE}, - - {META_BITSTREAM_RESOLUTION, DEC, AV1, - V4L2_MPEG_VIDC_META_DISABLE, - V4L2_MPEG_VIDC_META_ENABLE | V4L2_MPEG_VIDC_META_RX_INPUT | - V4L2_MPEG_VIDC_META_RX_OUTPUT, - 0, V4L2_MPEG_VIDC_META_DISABLE, - V4L2_CID_MPEG_VIDC_METADATA_BITSTREAM_RESOLUTION, - HFI_PROP_BITSTREAM_RESOLUTION, - CAP_FLAG_BITMASK | CAP_FLAG_META}, - - {META_CROP_OFFSETS, DEC, AV1, - V4L2_MPEG_VIDC_META_DISABLE, - V4L2_MPEG_VIDC_META_ENABLE | V4L2_MPEG_VIDC_META_RX_INPUT | - V4L2_MPEG_VIDC_META_RX_OUTPUT, - 0, V4L2_MPEG_VIDC_META_DISABLE, - V4L2_CID_MPEG_VIDC_METADATA_CROP_OFFSETS, - HFI_PROP_CROP_OFFSETS, - CAP_FLAG_BITMASK | CAP_FLAG_META}, - - {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}, - - {META_LTR_MARK_USE, ENC, H264|HEVC, - V4L2_MPEG_VIDC_META_DISABLE, - V4L2_MPEG_VIDC_META_ENABLE | V4L2_MPEG_VIDC_META_RX_OUTPUT, - 0, V4L2_MPEG_VIDC_META_DISABLE, - V4L2_CID_MPEG_VIDC_METADATA_LTR_MARK_USE_DETAILS, - HFI_PROP_LTR_MARK_USE_DETAILS, - CAP_FLAG_BITMASK | CAP_FLAG_META}, - - {META_SEQ_HDR_NAL, ENC, CODECS_ALL, - V4L2_MPEG_VIDC_META_DISABLE, - V4L2_MPEG_VIDC_META_ENABLE | V4L2_MPEG_VIDC_META_RX_OUTPUT, - 0, V4L2_MPEG_VIDC_META_DISABLE, - V4L2_CID_MPEG_VIDC_METADATA_SEQ_HEADER_NAL, - HFI_PROP_METADATA_SEQ_HEADER_NAL, - CAP_FLAG_BITMASK | CAP_FLAG_META}, - - {META_DPB_MISR, DEC, CODECS_ALL, - V4L2_MPEG_VIDC_META_DISABLE, - V4L2_MPEG_VIDC_META_ENABLE | V4L2_MPEG_VIDC_META_RX_OUTPUT, - 0, V4L2_MPEG_VIDC_META_DISABLE, - V4L2_CID_MPEG_VIDC_METADATA_DPB_LUMA_CHROMA_MISR, - HFI_PROP_DPB_LUMA_CHROMA_MISR, - CAP_FLAG_BITMASK | CAP_FLAG_META}, - - {META_OPB_MISR, DEC, CODECS_ALL, - V4L2_MPEG_VIDC_META_DISABLE, - V4L2_MPEG_VIDC_META_ENABLE | V4L2_MPEG_VIDC_META_RX_OUTPUT, - 0, V4L2_MPEG_VIDC_META_DISABLE, - V4L2_CID_MPEG_VIDC_METADATA_OPB_LUMA_CHROMA_MISR, - HFI_PROP_OPB_LUMA_CHROMA_MISR, - CAP_FLAG_BITMASK | CAP_FLAG_META}, - - {META_INTERLACE, DEC, H264, - V4L2_MPEG_VIDC_META_DISABLE, - V4L2_MPEG_VIDC_META_ENABLE | V4L2_MPEG_VIDC_META_RX_OUTPUT, - 0, V4L2_MPEG_VIDC_META_DISABLE, - V4L2_CID_MPEG_VIDC_METADATA_INTERLACE, - HFI_PROP_INTERLACE_INFO, - CAP_FLAG_BITMASK | CAP_FLAG_META}, - - {META_TIMESTAMP, DEC | ENC, CODECS_ALL, - V4L2_MPEG_VIDC_META_DISABLE, - V4L2_MPEG_VIDC_META_ENABLE | V4L2_MPEG_VIDC_META_RX_OUTPUT, - 0, V4L2_MPEG_VIDC_META_DISABLE, - V4L2_CID_MPEG_VIDC_METADATA_TIMESTAMP, - HFI_PROP_TIMESTAMP, - CAP_FLAG_BITMASK | CAP_FLAG_META}, - - {META_CONCEALED_MB_CNT, DEC, CODECS_ALL, - V4L2_MPEG_VIDC_META_DISABLE, - V4L2_MPEG_VIDC_META_ENABLE | V4L2_MPEG_VIDC_META_RX_OUTPUT, - 0, V4L2_MPEG_VIDC_META_DISABLE, - V4L2_CID_MPEG_VIDC_METADATA_CONCEALED_MB_COUNT, - HFI_PROP_CONEALED_MB_COUNT, - CAP_FLAG_BITMASK | CAP_FLAG_META}, - - {META_HIST_INFO, DEC, HEVC|AV1|VP9, - V4L2_MPEG_VIDC_META_DISABLE, - V4L2_MPEG_VIDC_META_ENABLE | V4L2_MPEG_VIDC_META_RX_OUTPUT, - 0, V4L2_MPEG_VIDC_META_DISABLE, - V4L2_CID_MPEG_VIDC_METADATA_HISTOGRAM_INFO, - HFI_PROP_HISTOGRAM_INFO, - CAP_FLAG_BITMASK | CAP_FLAG_META}, - - {META_TRANSCODING_STAT_INFO, DEC, HEVC|H264, - V4L2_MPEG_VIDC_META_DISABLE, - V4L2_MPEG_VIDC_META_ENABLE | V4L2_MPEG_VIDC_META_RX_OUTPUT, - 0, V4L2_MPEG_VIDC_META_DISABLE, - V4L2_CID_MPEG_VIDC_METADATA_TRANSCODE_STAT_INFO, - HFI_PROP_TRANSCODING_STAT_INFO, - CAP_FLAG_BITMASK | CAP_FLAG_META}, - - {META_TRANSCODING_STAT_INFO, ENC, HEVC|H264, - V4L2_MPEG_VIDC_META_DISABLE, - V4L2_MPEG_VIDC_META_ENABLE | V4L2_MPEG_VIDC_META_TX_INPUT, - 0, V4L2_MPEG_VIDC_META_DISABLE, - V4L2_CID_MPEG_VIDC_METADATA_TRANSCODE_STAT_INFO, - HFI_PROP_TRANSCODING_STAT_INFO, - CAP_FLAG_BITMASK | CAP_FLAG_META}, - - {META_PICTURE_TYPE, DEC, CODECS_ALL, - V4L2_MPEG_VIDC_META_DISABLE, - V4L2_MPEG_VIDC_META_ENABLE | V4L2_MPEG_VIDC_META_RX_INPUT, - 0, V4L2_MPEG_VIDC_META_DISABLE, - V4L2_CID_MPEG_VIDC_METADATA_PICTURE_TYPE, - HFI_PROP_PICTURE_TYPE, - CAP_FLAG_BITMASK | CAP_FLAG_META}, - - {META_SEI_MASTERING_DISP, ENC, HEVC|HEIC, - V4L2_MPEG_VIDC_META_DISABLE, - V4L2_MPEG_VIDC_META_ENABLE | V4L2_MPEG_VIDC_META_TX_INPUT, - 0, V4L2_MPEG_VIDC_META_DISABLE, - V4L2_CID_MPEG_VIDC_METADATA_SEI_MASTERING_DISPLAY_COLOUR, - HFI_PROP_SEI_MASTERING_DISPLAY_COLOUR, - CAP_FLAG_BITMASK | CAP_FLAG_META}, - - {META_SEI_MASTERING_DISP, DEC, HEVC|HEIC|AV1, - V4L2_MPEG_VIDC_META_DISABLE, - V4L2_MPEG_VIDC_META_ENABLE | V4L2_MPEG_VIDC_META_RX_INPUT | - V4L2_MPEG_VIDC_META_RX_OUTPUT, - 0, V4L2_MPEG_VIDC_META_DISABLE, - V4L2_CID_MPEG_VIDC_METADATA_SEI_MASTERING_DISPLAY_COLOUR, - HFI_PROP_SEI_MASTERING_DISPLAY_COLOUR, - CAP_FLAG_BITMASK | CAP_FLAG_META}, - - {META_SEI_CLL, ENC, HEVC|HEIC, - V4L2_MPEG_VIDC_META_DISABLE, - V4L2_MPEG_VIDC_META_ENABLE | V4L2_MPEG_VIDC_META_TX_INPUT, - 0, V4L2_MPEG_VIDC_META_DISABLE, - V4L2_CID_MPEG_VIDC_METADATA_SEI_CONTENT_LIGHT_LEVEL, - HFI_PROP_SEI_CONTENT_LIGHT_LEVEL, - CAP_FLAG_BITMASK | CAP_FLAG_META}, - - {META_SEI_CLL, DEC, HEVC|HEIC|AV1, - V4L2_MPEG_VIDC_META_DISABLE, - V4L2_MPEG_VIDC_META_ENABLE | V4L2_MPEG_VIDC_META_RX_INPUT | - V4L2_MPEG_VIDC_META_RX_OUTPUT, - 0, V4L2_MPEG_VIDC_META_DISABLE, - V4L2_CID_MPEG_VIDC_METADATA_SEI_CONTENT_LIGHT_LEVEL, - HFI_PROP_SEI_CONTENT_LIGHT_LEVEL, - CAP_FLAG_BITMASK | CAP_FLAG_META}, - - {META_HDR10PLUS, ENC, HEVC|HEIC, - V4L2_MPEG_VIDC_META_DISABLE, - V4L2_MPEG_VIDC_META_ENABLE | V4L2_MPEG_VIDC_META_TX_INPUT, - 0, V4L2_MPEG_VIDC_META_DISABLE, - V4L2_CID_MPEG_VIDC_METADATA_HDR10PLUS, - HFI_PROP_SEI_HDR10PLUS_USERDATA, - CAP_FLAG_BITMASK | CAP_FLAG_META}, - - {META_HDR10PLUS, DEC, HEVC|HEIC|AV1, - V4L2_MPEG_VIDC_META_DISABLE, - V4L2_MPEG_VIDC_META_ENABLE | V4L2_MPEG_VIDC_META_RX_INPUT | - V4L2_MPEG_VIDC_META_RX_OUTPUT, - 0, V4L2_MPEG_VIDC_META_DISABLE, - V4L2_CID_MPEG_VIDC_METADATA_HDR10PLUS, - HFI_PROP_SEI_HDR10PLUS_USERDATA, - CAP_FLAG_BITMASK | CAP_FLAG_META}, - - {META_DOLBY_RPU, ENC, HEVC, - V4L2_MPEG_VIDC_META_DISABLE, - V4L2_MPEG_VIDC_META_ENABLE | V4L2_MPEG_VIDC_META_TX_INPUT, - 0, V4L2_MPEG_VIDC_META_DISABLE, - V4L2_CID_MPEG_VIDC_METADATA_DOLBY_RPU, - HFI_PROP_DOLBY_RPU_METADATA, - CAP_FLAG_BITMASK | CAP_FLAG_META}, - - {META_DOLBY_RPU, DEC, H264|HEVC, - V4L2_MPEG_VIDC_META_DISABLE, - V4L2_MPEG_VIDC_META_ENABLE | V4L2_MPEG_VIDC_META_RX_OUTPUT, - 0, V4L2_MPEG_VIDC_META_DISABLE, - V4L2_CID_MPEG_VIDC_METADATA_DOLBY_RPU, - HFI_PROP_DOLBY_RPU_METADATA, - CAP_FLAG_BITMASK | CAP_FLAG_META}, - - {META_EVA_STATS, ENC, CODECS_ALL, - V4L2_MPEG_VIDC_META_DISABLE, - V4L2_MPEG_VIDC_META_ENABLE | V4L2_MPEG_VIDC_META_TX_INPUT, - 0, V4L2_MPEG_VIDC_META_DISABLE, - V4L2_CID_MPEG_VIDC_METADATA_EVA_STATS, - HFI_PROP_EVA_STAT_INFO, - CAP_FLAG_BITMASK | CAP_FLAG_META}, - - {META_BUF_TAG, ENC, CODECS_ALL, - V4L2_MPEG_VIDC_META_DISABLE, - V4L2_MPEG_VIDC_META_ENABLE | V4L2_MPEG_VIDC_META_TX_INPUT | - V4L2_MPEG_VIDC_META_RX_OUTPUT, - 0, V4L2_MPEG_VIDC_META_DISABLE, - V4L2_CID_MPEG_VIDC_METADATA_BUFFER_TAG, - HFI_PROP_BUFFER_TAG, - CAP_FLAG_BITMASK | CAP_FLAG_META}, - - /* - * when fence enabled, client needs output buffer_tag - * in input metadata buffer done. - */ - {META_BUF_TAG, DEC, CODECS_ALL, - V4L2_MPEG_VIDC_META_DISABLE, - V4L2_MPEG_VIDC_META_ENABLE | V4L2_MPEG_VIDC_META_TX_INPUT | - V4L2_MPEG_VIDC_META_TX_OUTPUT | V4L2_MPEG_VIDC_META_RX_INPUT | - V4L2_MPEG_VIDC_META_RX_OUTPUT, - 0, V4L2_MPEG_VIDC_META_DISABLE, - V4L2_CID_MPEG_VIDC_METADATA_BUFFER_TAG, - HFI_PROP_BUFFER_TAG, - CAP_FLAG_BITMASK | CAP_FLAG_META}, - - {META_DPB_TAG_LIST, DEC, CODECS_ALL, - V4L2_MPEG_VIDC_META_DISABLE, - V4L2_MPEG_VIDC_META_ENABLE | V4L2_MPEG_VIDC_META_RX_OUTPUT, - 0, V4L2_MPEG_VIDC_META_DISABLE, - V4L2_CID_MPEG_VIDC_METADATA_DPB_TAG_LIST, - HFI_PROP_DPB_TAG_LIST, - CAP_FLAG_BITMASK | CAP_FLAG_META}, - - {META_SUBFRAME_OUTPUT, ENC, HEIC | H264 | HEVC, - V4L2_MPEG_VIDC_META_DISABLE, - V4L2_MPEG_VIDC_META_ENABLE | V4L2_MPEG_VIDC_META_RX_OUTPUT, - 0, V4L2_MPEG_VIDC_META_DISABLE, - V4L2_CID_MPEG_VIDC_METADATA_SUBFRAME_OUTPUT, - HFI_PROP_SUBFRAME_OUTPUT, - CAP_FLAG_BITMASK | CAP_FLAG_META}, - - {META_SUBFRAME_OUTPUT, DEC, CODECS_ALL, - V4L2_MPEG_VIDC_META_DISABLE, - V4L2_MPEG_VIDC_META_ENABLE | V4L2_MPEG_VIDC_META_RX_OUTPUT, - 0, V4L2_MPEG_VIDC_META_DISABLE, - V4L2_CID_MPEG_VIDC_METADATA_SUBFRAME_OUTPUT, - HFI_PROP_SUBFRAME_OUTPUT, - CAP_FLAG_BITMASK | CAP_FLAG_META}, - - {META_ENC_QP_METADATA, ENC, CODECS_ALL, - V4L2_MPEG_VIDC_META_DISABLE, - V4L2_MPEG_VIDC_META_ENABLE | V4L2_MPEG_VIDC_META_RX_OUTPUT, - 0, V4L2_MPEG_VIDC_META_DISABLE, - V4L2_CID_MPEG_VIDC_METADATA_ENC_QP_METADATA, - HFI_PROP_ENC_QP_METADATA, - CAP_FLAG_BITMASK | CAP_FLAG_META}, - - {META_ROI_INFO, ENC, H264|HEVC, - V4L2_MPEG_VIDC_META_DISABLE, - V4L2_MPEG_VIDC_META_ENABLE | V4L2_MPEG_VIDC_META_TX_INPUT, - 0, V4L2_MPEG_VIDC_META_DISABLE, - V4L2_CID_MPEG_VIDC_METADATA_ROI_INFO, - HFI_PROP_ROI_INFO, - CAP_FLAG_INPUT_PORT | CAP_FLAG_BITMASK | CAP_FLAG_META}, - - {META_SALIENCY_INFO, ENC, H264|HEVC, - V4L2_MPEG_VIDC_META_DISABLE, - V4L2_MPEG_VIDC_META_ENABLE | V4L2_MPEG_VIDC_META_TX_INPUT, - 0, V4L2_MPEG_VIDC_META_DISABLE, - V4L2_CID_MPEG_VIDC_METADATA_SALIENCY_INFO, - HFI_PROP_ROI_AS_SALIENCY_INFO, - CAP_FLAG_INPUT_PORT | CAP_FLAG_BITMASK | CAP_FLAG_META}, - - {META_DEC_QP_METADATA, DEC, CODECS_ALL, - V4L2_MPEG_VIDC_META_DISABLE, - V4L2_MPEG_VIDC_META_ENABLE | V4L2_MPEG_VIDC_META_RX_OUTPUT, - 0, V4L2_MPEG_VIDC_META_DISABLE, - V4L2_CID_MPEG_VIDC_METADATA_DEC_QP_METADATA, - HFI_PROP_DEC_QP_METADATA, - CAP_FLAG_BITMASK | CAP_FLAG_META}, - - {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}, - - {COMPLEXITY, ENC, H264|HEVC, - 0, 100, - 1, DEFAULT_COMPLEXITY, - V4L2_CID_MPEG_VIDC_VENC_COMPLEXITY}, - - {META_MAX_NUM_REORDER_FRAMES, DEC, HEVC | H264, - V4L2_MPEG_VIDC_META_DISABLE, - V4L2_MPEG_VIDC_META_ENABLE | V4L2_MPEG_VIDC_META_RX_OUTPUT, - 0, V4L2_MPEG_VIDC_META_DISABLE, - V4L2_CID_MPEG_VIDC_METADATA_MAX_NUM_REORDER_FRAMES, - HFI_PROP_MAX_NUM_REORDER_FRAMES, - CAP_FLAG_BITMASK | CAP_FLAG_META}, - - {DELIVERY_MODE, ENC, HEVC, - 0, 1, 1, 0, - V4L2_CID_MPEG_VIDC_HEVC_ENCODE_DELIVERY_MODE, - HFI_PROP_ENABLE_SLICE_DELIVERY, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU}, - - {DELIVERY_MODE, ENC, H264, - 0, 1, 1, 0, - V4L2_CID_MPEG_VIDC_H264_ENCODE_DELIVERY_MODE, - HFI_PROP_ENABLE_SLICE_DELIVERY, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU}, -}; - -static struct msm_platform_inst_cap_dependency instance_cap_dependency_data_anorak[] = { - /* {cap, domain, codec, - * parents, - * children, - * adjust, set} - */ - - {PIX_FMTS, ENC, H264, - {META_ROI_INFO, IR_PERIOD}}, - - {PIX_FMTS, ENC, HEVC, - {PROFILE, MIN_FRAME_QP, MAX_FRAME_QP, I_FRAME_QP, P_FRAME_QP, - B_FRAME_QP, META_ROI_INFO, MIN_QUALITY, BLUR_TYPES, IR_PERIOD, - LTR_COUNT}}, - - {PIX_FMTS, ENC, HEIC, - {PROFILE}}, - - {PIX_FMTS, DEC, HEVC|HEIC, - {PROFILE}}, - - {FRAME_RATE, ENC, CODECS_ALL, - {0}, - NULL, - msm_vidc_set_q16}, - - {FRAME_RATE, DEC, CODECS_ALL, - {0}, - msm_vidc_adjust_dec_frame_rate}, - - {OPERATING_RATE, DEC, CODECS_ALL, - {0}, - msm_vidc_adjust_dec_operating_rate}, - - {SECURE_MODE, ENC|DEC, H264|HEVC|VP9|AV1, - {0}, - NULL, - msm_vidc_set_u32}, - - {META_OUTBUF_FENCE, DEC, H264|HEVC|VP9|AV1, - {LOWLATENCY_MODE, SLICE_DECODE}, - msm_vidc_adjust_dec_outbuf_fence, - NULL}, - - {HFLIP, ENC, CODECS_ALL, - {0}, - NULL, - msm_vidc_set_flip}, - - {VFLIP, ENC, CODECS_ALL, - {0}, - NULL, - msm_vidc_set_flip}, - - {ROTATION, ENC, CODECS_ALL, - {0}, - NULL, - msm_vidc_set_rotation}, - - {SUPER_FRAME, ENC, H264|HEVC, - {INPUT_BUF_HOST_MAX_COUNT, OUTPUT_BUF_HOST_MAX_COUNT}, - NULL, - NULL}, - - {SLICE_DECODE, DEC, H264|HEVC|AV1, - {0}, - msm_vidc_adjust_dec_slice_mode, - msm_vidc_set_u32}, - - {HEADER_MODE, ENC, CODECS_ALL, - {0}, - NULL, - msm_vidc_set_header_mode}, - - {WITHOUT_STARTCODE, ENC, CODECS_ALL, - {0}, - NULL, - msm_vidc_set_nal_length}, - - {WITHOUT_STARTCODE, DEC, AV1, - {0}, - NULL, - msm_vidc_set_u32}, - - {REQUEST_I_FRAME, ENC, H264|HEVC, - {0}, - NULL, - msm_vidc_set_req_sync_frame}, - - {BIT_RATE, ENC, H264, - {PEAK_BITRATE, BITRATE_BOOST, L0_BR}, - msm_vidc_adjust_bitrate, - msm_vidc_set_bitrate}, - - {BIT_RATE, ENC, HEVC, - {PEAK_BITRATE, BITRATE_BOOST, L0_BR}, - msm_vidc_adjust_bitrate, - msm_vidc_set_bitrate}, - - {BITRATE_MODE, ENC, H264, - {LTR_COUNT, IR_PERIOD, TIME_DELTA_BASED_RC, I_FRAME_QP, - P_FRAME_QP, B_FRAME_QP, ENH_LAYER_COUNT, BIT_RATE, - META_ROI_INFO, MIN_QUALITY, BITRATE_BOOST, VBV_DELAY, - PEAK_BITRATE, SLICE_MODE, CONTENT_ADAPTIVE_CODING, - BLUR_TYPES, LOWLATENCY_MODE}, - msm_vidc_adjust_bitrate_mode, - msm_vidc_set_u32_enum}, - - {BITRATE_MODE, ENC, HEVC, - {LTR_COUNT, IR_PERIOD, TIME_DELTA_BASED_RC, I_FRAME_QP, - P_FRAME_QP, B_FRAME_QP, CONSTANT_QUALITY, ENH_LAYER_COUNT, - BIT_RATE, META_ROI_INFO, MIN_QUALITY, BITRATE_BOOST, VBV_DELAY, - PEAK_BITRATE, SLICE_MODE, CONTENT_ADAPTIVE_CODING, - BLUR_TYPES, LOWLATENCY_MODE}, - msm_vidc_adjust_bitrate_mode, - msm_vidc_set_u32_enum}, - - {BITRATE_MODE, ENC, HEIC, - {TIME_DELTA_BASED_RC, CONSTANT_QUALITY}, - msm_vidc_adjust_bitrate_mode, - msm_vidc_set_u32_enum}, - - {CONSTANT_QUALITY, ENC, HEVC|HEIC, - {0}, - NULL, - msm_vidc_set_constant_quality}, - - {GOP_SIZE, ENC, CODECS_ALL, - {ALL_INTRA}, - msm_vidc_adjust_gop_size, - msm_vidc_set_gop_size}, - - {GOP_SIZE, ENC, HEIC, - {0}, - NULL, - msm_vidc_set_u32}, - - {B_FRAME, ENC, H264|HEVC, - {ALL_INTRA}, - msm_vidc_adjust_b_frame, - msm_vidc_set_u32}, - - {B_FRAME, ENC, HEIC, - {0}, - NULL, - msm_vidc_set_u32}, - - {BLUR_TYPES, ENC, H264|HEVC, - {BLUR_RESOLUTION}, - msm_vidc_adjust_blur_type, - msm_vidc_set_u32_enum}, - - {BLUR_RESOLUTION, ENC, H264|HEVC, - {0}, - msm_vidc_adjust_blur_resolution, - msm_vidc_set_blur_resolution}, - - {CSC_CUSTOM_MATRIX, ENC, CODECS_ALL, - {0}, - NULL, - msm_vidc_set_csc_custom_matrix}, - - {LOWLATENCY_MODE, ENC, H264 | HEVC, - {STAGE, BIT_RATE}, - msm_vidc_adjust_enc_lowlatency_mode, - NULL}, - - {LOWLATENCY_MODE, DEC, H264|HEVC|VP9|AV1, - {STAGE, SLICE_DECODE}, - msm_vidc_adjust_dec_lowlatency_mode, - NULL}, - - {LTR_COUNT, ENC, H264|HEVC, - {0}, - msm_vidc_adjust_ltr_count, - msm_vidc_set_u32}, - - {USE_LTR, ENC, H264|HEVC, - {0}, - msm_vidc_adjust_use_ltr, - msm_vidc_set_use_and_mark_ltr}, - - {MARK_LTR, ENC, H264|HEVC, - {0}, - msm_vidc_adjust_mark_ltr, - msm_vidc_set_use_and_mark_ltr}, - - {IR_PERIOD, ENC, H264|HEVC, - {0}, - msm_vidc_adjust_ir_period, - msm_vidc_set_ir_period}, - - {AU_DELIMITER, ENC, H264|HEVC, - {0}, - NULL, - msm_vidc_set_u32}, - - {TIME_DELTA_BASED_RC, ENC, CODECS_ALL, - {0}, - msm_vidc_adjust_delta_based_rc, - msm_vidc_set_u32}, - - {CONTENT_ADAPTIVE_CODING, ENC, H264|HEVC, - {REQUEST_PREPROCESS}, - msm_vidc_adjust_brs, - msm_vidc_set_vbr_related_properties}, - - {REQUEST_PREPROCESS, ENC, H264|HEVC, - {0}, - msm_vidc_adjust_preprocess, - msm_vidc_set_preprocess}, - - {BITRATE_BOOST, ENC, H264|HEVC, - {0}, - msm_vidc_adjust_bitrate_boost_iris3, - msm_vidc_set_vbr_related_properties}, - - {MIN_QUALITY, ENC, H264, - {BLUR_TYPES}, - msm_vidc_adjust_min_quality, - msm_vidc_set_vbr_related_properties}, - - {MIN_QUALITY, ENC, HEVC, - {BLUR_TYPES}, - msm_vidc_adjust_min_quality, - msm_vidc_set_vbr_related_properties}, - - {VBV_DELAY, ENC, H264|HEVC, - {0}, - NULL, - msm_vidc_set_cbr_related_properties}, - - {PEAK_BITRATE, ENC, H264|HEVC, - {0}, - msm_vidc_adjust_peak_bitrate, - msm_vidc_set_cbr_related_properties}, - - {MIN_FRAME_QP, ENC, H264, - {0}, - NULL, - msm_vidc_set_min_qp}, - - {MIN_FRAME_QP, ENC, HEVC, - {0}, - msm_vidc_adjust_hevc_min_qp, - msm_vidc_set_min_qp}, - - {MAX_FRAME_QP, ENC, H264, - {0}, - NULL, - msm_vidc_set_max_qp}, - - {MAX_FRAME_QP, ENC, HEVC, - {0}, - msm_vidc_adjust_hevc_max_qp, - msm_vidc_set_max_qp}, - - {I_FRAME_QP, ENC, HEVC, - {0}, - msm_vidc_adjust_hevc_i_frame_qp, - msm_vidc_set_frame_qp}, - - {I_FRAME_QP, ENC, H264, - {0}, - NULL, - msm_vidc_set_frame_qp}, - - {P_FRAME_QP, ENC, HEVC, - {0}, - msm_vidc_adjust_hevc_p_frame_qp, - msm_vidc_set_frame_qp}, - - {P_FRAME_QP, ENC, H264, - {0}, - NULL, - msm_vidc_set_frame_qp}, - - {B_FRAME_QP, ENC, HEVC, - {0}, - msm_vidc_adjust_hevc_b_frame_qp, - msm_vidc_set_frame_qp}, - - {B_FRAME_QP, ENC, H264, - {0}, - NULL, - msm_vidc_set_frame_qp}, - - {LAYER_TYPE, ENC, H264|HEVC, - {CONTENT_ADAPTIVE_CODING, LTR_COUNT}}, - - {LAYER_ENABLE, ENC, H264|HEVC, - {CONTENT_ADAPTIVE_CODING}}, - - {ENH_LAYER_COUNT, ENC, H264|HEVC, - {GOP_SIZE, B_FRAME, BIT_RATE, MIN_QUALITY, SLICE_MODE, - LTR_COUNT}, - msm_vidc_adjust_layer_count, - msm_vidc_set_layer_count_and_type}, - - {ENH_LAYER_COUNT, DEC, AV1, - {0}, - NULL, - msm_vidc_set_u32}, - - {L0_BR, ENC, H264|HEVC, - {L1_BR}, - msm_vidc_adjust_layer_bitrate, - msm_vidc_set_layer_bitrate}, - - {L1_BR, ENC, H264|HEVC, - {L2_BR}, - msm_vidc_adjust_layer_bitrate, - msm_vidc_set_layer_bitrate}, - - {L2_BR, ENC, H264|HEVC, - {L3_BR}, - msm_vidc_adjust_layer_bitrate, - msm_vidc_set_layer_bitrate}, - - {L3_BR, ENC, H264|HEVC, - {L4_BR}, - msm_vidc_adjust_layer_bitrate, - msm_vidc_set_layer_bitrate}, - - {L4_BR, ENC, H264|HEVC, - {L5_BR}, - msm_vidc_adjust_layer_bitrate, - msm_vidc_set_layer_bitrate}, - - {L5_BR, ENC, H264|HEVC, - {0}, - msm_vidc_adjust_layer_bitrate, - msm_vidc_set_layer_bitrate}, - - {ENTROPY_MODE, ENC, H264, - {BIT_RATE}, - msm_vidc_adjust_entropy_mode, - msm_vidc_set_u32}, - - {PROFILE, ENC, H264, - {ENTROPY_MODE, TRANSFORM_8X8}, - NULL, - msm_vidc_set_u32_enum}, - - {PROFILE, DEC, H264, - {ENTROPY_MODE}, - NULL, - msm_vidc_set_u32_enum}, - - {PROFILE, ENC|DEC, HEVC|HEIC, - {0}, - msm_vidc_adjust_profile, - msm_vidc_set_u32_enum}, - - {PROFILE, DEC, VP9|AV1, - {0}, - NULL, - msm_vidc_set_u32_enum}, - - {LEVEL, DEC, CODECS_ALL, - {0}, - NULL, - msm_vidc_set_u32_enum}, - - {LEVEL, ENC, CODECS_ALL, - {0}, - NULL, - msm_vidc_set_level}, - - {AV1_TIER, DEC, AV1, - {0}, - NULL, - msm_vidc_set_u32_enum}, - - {HEVC_TIER, ENC|DEC, HEVC|HEIC, - {0}, - NULL, - msm_vidc_set_u32_enum}, - - {LF_MODE, ENC, CODECS_ALL, - {0}, - NULL, - msm_vidc_set_deblock_mode}, - - {SLICE_MODE, ENC, H264|HEVC, - {STAGE, DELIVERY_MODE}, - msm_vidc_adjust_slice_count, - msm_vidc_set_slice_count}, - - {SLICE_MODE, ENC, HEIC, - {0}, - msm_vidc_adjust_slice_count, - msm_vidc_set_slice_count}, - - {TRANSFORM_8X8, ENC, H264, - {0}, - msm_vidc_adjust_transform_8x8, - msm_vidc_set_u32}, - - {CHROMA_QP_INDEX_OFFSET, ENC, HEVC, - {0}, - msm_vidc_adjust_chroma_qp_index_offset, - msm_vidc_set_chroma_qp_index_offset}, - - {DISPLAY_DELAY_ENABLE, DEC, H264|HEVC|VP9|AV1, - {OUTPUT_ORDER}, - NULL, - NULL}, - - {DISPLAY_DELAY, DEC, H264|HEVC|VP9|AV1, - {OUTPUT_ORDER}, - NULL, - NULL}, - - {OUTPUT_ORDER, DEC, H264|HEVC|VP9|AV1, - {META_OUTBUF_FENCE, SLICE_DECODE}, - msm_vidc_adjust_output_order, - msm_vidc_set_u32}, - - {INPUT_BUF_HOST_MAX_COUNT, ENC|DEC, CODECS_ALL, - {0}, - msm_vidc_adjust_input_buf_host_max_count, - msm_vidc_set_u32}, - - {INPUT_BUF_HOST_MAX_COUNT, ENC, H264|HEVC, - {0}, - msm_vidc_adjust_input_buf_host_max_count, - msm_vidc_set_u32}, - - {OUTPUT_BUF_HOST_MAX_COUNT, ENC|DEC, CODECS_ALL, - {0}, - msm_vidc_adjust_output_buf_host_max_count, - msm_vidc_set_u32}, - - {OUTPUT_BUF_HOST_MAX_COUNT, ENC, H264|HEVC, - {0}, - msm_vidc_adjust_output_buf_host_max_count, - msm_vidc_set_u32}, - - {CONCEAL_COLOR_8BIT, DEC, CODECS_ALL, - {0}, - NULL, - msm_vidc_set_u32_packed}, - - {CONCEAL_COLOR_10BIT, DEC, CODECS_ALL, - {0}, - NULL, - msm_vidc_set_u32_packed}, - - {STAGE, ENC | DEC, CODECS_ALL, - {0}, - NULL, - msm_vidc_set_stage}, - - {STAGE, ENC, H264|HEVC, - {0}, - NULL, - msm_vidc_set_stage}, - - {STAGE, DEC, H264|HEVC|VP9|AV1, - {0}, - NULL, - msm_vidc_set_stage}, - - {PIPE, DEC|ENC, CODECS_ALL, - {0}, - NULL, - msm_vidc_set_pipe}, - - {THUMBNAIL_MODE, DEC, H264|HEVC|VP9|AV1, - {OUTPUT_ORDER}, - NULL, - msm_vidc_set_u32}, - - {THUMBNAIL_MODE, DEC, HEIC, - {0}, - NULL, - msm_vidc_set_u32}, - - {RAP_FRAME, DEC, CODECS_ALL, - {0}, - NULL, - msm_vidc_set_u32}, - - {PRIORITY, DEC|ENC, CODECS_ALL, - {0}, - msm_vidc_adjust_session_priority, - msm_vidc_set_session_priority}, - - {FIRMWARE_PRIORITY_OFFSET, DEC | ENC, CODECS_ALL, - {0}, - NULL, - NULL}, - - {CRITICAL_PRIORITY, ENC, CODECS_ALL, - {0}, - NULL, - NULL}, - - {RESERVE_DURATION, ENC, CODECS_ALL, - {0}, - NULL, - msm_vidc_set_reserve_duration}, - - {DPB_LIST, DEC, CODECS_ALL, - {0}, - NULL, - NULL}, - - {DRAP, DEC, AV1, - {0}, - NULL, - msm_vidc_set_u32}, - - {ALL_INTRA, ENC, H264|HEVC, - {LTR_COUNT, IR_PERIOD, SLICE_MODE, BIT_RATE}, - msm_vidc_adjust_all_intra, - NULL}, - - {META_EVA_STATS, ENC, H264|HEVC, - {ENH_LAYER_COUNT, REQUEST_PREPROCESS}}, - - {META_EVA_STATS, ENC, HEIC, - {0}}, - - {META_ROI_INFO, ENC, H264|HEVC, - {MIN_QUALITY, IR_PERIOD, BLUR_TYPES}, - msm_vidc_adjust_roi_info, - NULL}, - - {GRID, ENC, HEIC, - {0}, - NULL, - msm_vidc_set_u32}, - - {DELIVERY_MODE, ENC, H264|HEVC, - {LOWLATENCY_MODE, OUTPUT_BUF_HOST_MAX_COUNT}, - msm_vidc_adjust_delivery_mode, - msm_vidc_set_u32}, - - {VUI_TIMING_INFO, ENC, CODECS_ALL, - {0}, - NULL, - msm_vidc_set_vui_timing_info}, -}; - -/* Default UBWC config for LPDDR5 */ -static struct msm_vidc_ubwc_config_data ubwc_config_anorak[] = { - UBWC_CONFIG(8, 32, 16, 0, 1, 1, 1), -}; - -/* name, min_kbps, max_kbps */ -static const struct bw_table anorak_bw_table[] = { - { "venus-cnoc", 1000, 1000 }, - { "venus-ddr", 1000, 15000000 }, - { "venus-llcc", 1000, 15000000 }, -}; - -/* name, hw_trigger */ -static const struct regulator_table anorak_regulator_table[] = { - { "iris-ctl", 0 }, - { "vcodec", 1 }, -}; - -/* name, clock id, scaling */ -static const struct clk_table anorak_clk_table[] = { - { "gcc_video_axi0", GCC_VIDEO_AXI0_CLK, 0 }, - { "core_clk", VIDEO_CC_MVS0C_CLK, 0 }, - { "vcodec_clk", VIDEO_CC_MVS0_CLK, 0 }, - { "video_cc_mvs0_clk_src", VIDEO_CC_MVS0_CLK_SRC, 1 }, -}; - -/* name, exclusive_release */ -static const struct clk_rst_table anorak_clk_reset_table[] = { - { "video_axi_reset", 0 }, -}; - -/* name, llcc_id */ -static const struct subcache_table anorak_subcache_table[] = { - { "vidsc0", LLCC_VIDSC0 }, - { "vidvsp", LLCC_VIDVSP }, -}; - -/* name, start, size, secure, dma_coherant, region, dma_mask */ -const struct context_bank_table anorak_context_bank_table[] = { - {"qcom,vidc,cb-ns", 0x25800000, 0xba800000, 0, 1, MSM_VIDC_NON_SECURE, 0 }, - {"qcom,vidc,cb-ns-pxl", 0x00100000, 0xdff00000, 0, 1, MSM_VIDC_NON_SECURE_PIXEL, 0 }, - {"qcom,vidc,cb-sec-pxl", 0x00500000, 0xdfb00000, 1, 0, MSM_VIDC_SECURE_PIXEL, 0 }, - {"qcom,vidc,cb-sec-non-pxl", 0x01000000, 0x24800000, 1, 0, MSM_VIDC_SECURE_NONPIXEL, 0 }, - {"qcom,vidc,cb-sec-bitstream", 0x00500000, 0xdfb00000, 1, 0, MSM_VIDC_SECURE_BITSTREAM, 0 }, -}; - -/* freq */ -static struct freq_table anorak_freq_table[] = { - {533000000}, {444000000}, {366000000}, {338000000}, {240000000} -}; - -/* register, value, mask */ -static const struct reg_preset_table anorak_reg_preset_table[] = { - { 0xB0088, 0x0, 0x11 }, -}; - -static const struct msm_vidc_platform_data anorak_data = { - /* resources dependent on other module */ - .bw_tbl = anorak_bw_table, - .bw_tbl_size = ARRAY_SIZE(anorak_bw_table), - .regulator_tbl = anorak_regulator_table, - .regulator_tbl_size = ARRAY_SIZE(anorak_regulator_table), - .clk_tbl = anorak_clk_table, - .clk_tbl_size = ARRAY_SIZE(anorak_clk_table), - .clk_rst_tbl = anorak_clk_reset_table, - .clk_rst_tbl_size = ARRAY_SIZE(anorak_clk_reset_table), - .subcache_tbl = anorak_subcache_table, - .subcache_tbl_size = ARRAY_SIZE(anorak_subcache_table), - - /* populate context bank */ - .context_bank_tbl = anorak_context_bank_table, - .context_bank_tbl_size = ARRAY_SIZE(anorak_context_bank_table), - - /* platform specific resources */ - .freq_tbl = anorak_freq_table, - .freq_tbl_size = ARRAY_SIZE(anorak_freq_table), - .reg_prst_tbl = anorak_reg_preset_table, - .reg_prst_tbl_size = ARRAY_SIZE(anorak_reg_preset_table), - .fwname = "vpu33_4v", - .pas_id = 9, - .supports_mmrm = 0, - - /* caps related resorces */ - .core_data = core_data_anorak, - .core_data_size = ARRAY_SIZE(core_data_anorak), - .inst_cap_data = instance_cap_data_anorak, - .inst_cap_data_size = ARRAY_SIZE(instance_cap_data_anorak), - .inst_cap_dependency_data = instance_cap_dependency_data_anorak, - .inst_cap_dependency_data_size = ARRAY_SIZE(instance_cap_dependency_data_anorak), - .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_anorak, -}; - -int msm_vidc_anorak_check_ddr_type(void) -{ - u32 ddr_type; - - ddr_type = of_fdt_get_ddrtype(); - if (ddr_type != DDR_TYPE_LPDDR5 && - ddr_type != DDR_TYPE_LPDDR5X) { - d_vpr_e("%s: wrong ddr type %d\n", __func__, ddr_type); - return -EINVAL; - } else { - d_vpr_h("%s: ddr type %d\n", __func__, ddr_type); - } - return 0; -} - -static int msm_vidc_init_data(struct msm_vidc_core *core) -{ - int rc = 0; - - if (!core || !core->platform) { - d_vpr_e("%s: invalid params\n", __func__); - return -EINVAL; - } - d_vpr_h("%s: initialize anorak data\n", __func__); - - core->platform->data = anorak_data; - rc = msm_vidc_anorak_check_ddr_type(); - if (rc) - return rc; - - return rc; -} - -int msm_vidc_init_platform_anorak(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_anorak(struct msm_vidc_core *core, struct device *dev) -{ - /* do nothing */ - return 0; -} diff --git a/driver/platform/common/inc/msm_vidc_platform.h b/driver/platform/common/inc/msm_vidc_platform.h index 9d661bf549..0ef2a03c1d 100644 --- a/driver/platform/common/inc/msm_vidc_platform.h +++ b/driver/platform/common/inc/msm_vidc_platform.h @@ -167,6 +167,14 @@ struct msm_platform_inst_cap_dependency { enum msm_vidc_inst_capability_type cap_id); }; +struct msm_vidc_compat_handle { + const char *compat; + int (*init_platform)(struct msm_vidc_core *core); + int (*deinit_platform)(struct msm_vidc_core *core); + int (*init_iris)(struct msm_vidc_core *core); + int (*deinit_iris)(struct msm_vidc_core *core); +}; + struct msm_vidc_csc_coeff { u32 *vpe_csc_custom_matrix_coeff; u32 *vpe_csc_custom_bias_coeff; @@ -201,7 +209,7 @@ struct msm_vidc_platform_data { unsigned int regulator_tbl_size; const struct pd_table *pd_tbl; unsigned int pd_tbl_size; - const char **opp_tbl; + const char * const *opp_tbl; unsigned int opp_tbl_size; const struct clk_table *clk_tbl; unsigned int clk_tbl_size; diff --git a/driver/platform/common/src/msm_vidc_platform.c b/driver/platform/common/src/msm_vidc_platform.c index 09ee2c7caf..1e9b39d16d 100644 --- a/driver/platform/common/src/msm_vidc_platform.c +++ b/driver/platform/common/src/msm_vidc_platform.c @@ -21,26 +21,17 @@ #include "hfi_property.h" #include "venus_hfi.h" -#if defined(CONFIG_MSM_VIDC_WAIPIO) -#include "msm_vidc_waipio.h" +#if defined(CONFIG_MSM_VIDC_PINEAPPLE) +#include "msm_vidc_pineapple.h" +#include "msm_vidc_iris33.h" #endif #if defined(CONFIG_MSM_VIDC_KALAMA) #include "msm_vidc_kalama.h" -#endif -#if defined(CONFIG_MSM_VIDC_PINEAPPLE) -#include "msm_vidc_pineapple.h" -#endif -#if defined(CONFIG_MSM_VIDC_ANORAK) -#include "msm_vidc_anorak.h" -#endif -#if defined(CONFIG_MSM_VIDC_IRIS2) -#include "msm_vidc_iris2.h" -#endif -#if defined(CONFIG_MSM_VIDC_IRIS3) #include "msm_vidc_iris3.h" #endif -#if defined(CONFIG_MSM_VIDC_IRIS33) -#include "msm_vidc_iris33.h" +#if defined(CONFIG_MSM_VIDC_WAIPIO) +#include "msm_vidc_waipio.h" +#include "msm_vidc_iris2.h" #endif #define CAP_TO_8BIT_QP(a) { \ @@ -214,6 +205,50 @@ static struct v4l2_m2m_ops msm_v4l2_m2m_ops = { .job_abort = msm_v4l2_m2m_job_abort, }; +static const struct msm_vidc_compat_handle compat_handle[] = { +#if defined(CONFIG_MSM_VIDC_PINEAPPLE) + { + .compat = "qcom,sm8650-vidc", + .init_platform = msm_vidc_init_platform_pineapple, + .deinit_platform = msm_vidc_deinit_platform_pineapple, + .init_iris = msm_vidc_init_iris33, + .deinit_iris = msm_vidc_deinit_iris33, + }, + { + .compat = "qcom,sm8650-vidc-v2", + .init_platform = msm_vidc_init_platform_pineapple, + .deinit_platform = msm_vidc_deinit_platform_pineapple, + .init_iris = msm_vidc_init_iris33, + .deinit_iris = msm_vidc_deinit_iris33, + }, +#endif +#if defined(CONFIG_MSM_VIDC_KALAMA) + { + .compat = "qcom,sm8550-vidc", + .init_platform = msm_vidc_init_platform_kalama, + .deinit_platform = msm_vidc_deinit_platform_kalama, + .init_iris = msm_vidc_init_iris3, + .deinit_iris = msm_vidc_deinit_iris3, + }, + { + .compat = "qcom,sm8550-vidc-v2", + .init_platform = msm_vidc_init_platform_kalama, + .deinit_platform = msm_vidc_deinit_platform_kalama, + .init_iris = msm_vidc_init_iris3, + .deinit_iris = msm_vidc_deinit_iris3, + }, +#endif +#if defined(CONFIG_MSM_VIDC_WAIPIO) + { + .compat = "qcom,sm8450-vidc", + .init_platform = msm_vidc_init_platform_waipio, + .deinit_platform = msm_vidc_deinit_platform_waipio, + .init_iris = msm_vidc_init_iris2, + .deinit_iris = msm_vidc_deinit_iris2, + }, +#endif +}; + static int msm_vidc_init_ops(struct msm_vidc_core *core) { if (!core) { @@ -244,179 +279,138 @@ static int msm_vidc_init_ops(struct msm_vidc_core *core) return 0; } -static int msm_vidc_deinit_platform_variant(struct msm_vidc_core *core, struct device *dev) +static int msm_vidc_deinit_platform_variant(struct msm_vidc_core *core) { - int rc = -EINVAL; + struct device *dev = NULL; + int i, rc = 0; - if (!core || !dev) { + if (!core || !core->pdev) { d_vpr_e("%s: Invalid params\n", __func__); return -EINVAL; } + dev = &core->pdev->dev; d_vpr_h("%s()\n", __func__); -#if defined(CONFIG_MSM_VIDC_WAIPIO) - if (of_device_is_compatible(dev->of_node, "qcom,sm8450-vidc")) { - rc = msm_vidc_deinit_platform_waipio(core, dev); - if (rc) - d_vpr_e("%s: failed with %d\n", __func__, rc); - return rc; + /* select platform based on compatible match */ + for (i = 0; i < ARRAY_SIZE(compat_handle); i++) { + if (of_device_is_compatible(dev->of_node, compat_handle[i].compat)) { + rc = compat_handle[i].deinit_platform(core); + if (rc) { + d_vpr_e("%s: (%s) init failed with %d\n", + __func__, compat_handle[i].compat, rc); + return rc; + } + break; + } } -#endif -#if defined(CONFIG_MSM_VIDC_KALAMA) - if (of_device_is_compatible(dev->of_node, "qcom,sm8550-vidc") || - of_device_is_compatible(dev->of_node, "qcom,sm8550-vidc-v2")) { - rc = msm_vidc_deinit_platform_kalama(core, dev); - if (rc) - d_vpr_e("%s: failed with %d\n", __func__, rc); - return rc; + + /* handle unknown compat type */ + if (i == ARRAY_SIZE(compat_handle)) { + d_vpr_e("%s: Unsupported device: (%s)\n", __func__, dev_name(dev)); + return -EINVAL; } -#endif -#if defined(CONFIG_MSM_VIDC_PINEAPPLE) - if (of_device_is_compatible(dev->of_node, "qcom,sm8650-vidc") || - of_device_is_compatible(dev->of_node, "qcom,sm8650-vidc-v2")) { - rc = msm_vidc_deinit_platform_pineapple(core, dev); - if (rc) - d_vpr_e("%s: failed with %d\n", __func__, rc); - return rc; - } -#endif -#if defined(CONFIG_MSM_VIDC_ANORAK) - if (of_device_is_compatible(dev->of_node, "qcom,sxr2230p-vidc")) { - rc = msm_vidc_deinit_platform_anorak(core, dev); - if (rc) - d_vpr_e("%s: failed with %d\n", __func__, rc); - return rc; - } -#endif return rc; } -static int msm_vidc_init_platform_variant(struct msm_vidc_core *core, struct device *dev) +static int msm_vidc_init_platform_variant(struct msm_vidc_core *core) { - int rc = -EINVAL; + struct device *dev = NULL; + int i, rc = 0; - if (!core || !dev) { + if (!core || !core->pdev) { d_vpr_e("%s: Invalid params\n", __func__); return -EINVAL; } + dev = &core->pdev->dev; d_vpr_h("%s()\n", __func__); -#if defined(CONFIG_MSM_VIDC_WAIPIO) - if (of_device_is_compatible(dev->of_node, "qcom,sm8450-vidc")) { - rc = msm_vidc_init_platform_waipio(core, dev); - if (rc) - d_vpr_e("%s: failed with %d\n", __func__, rc); - return rc; + /* select platform based on compatible match */ + for (i = 0; i < ARRAY_SIZE(compat_handle); i++) { + if (of_device_is_compatible(dev->of_node, compat_handle[i].compat)) { + rc = compat_handle[i].init_platform(core); + if (rc) { + d_vpr_e("%s: (%s) init failed with %d\n", + __func__, compat_handle[i].compat, rc); + return rc; + } + break; + } } -#endif -#if defined(CONFIG_MSM_VIDC_KALAMA) - if (of_device_is_compatible(dev->of_node, "qcom,sm8550-vidc") || - of_device_is_compatible(dev->of_node, "qcom,sm8550-vidc-v2")) { - rc = msm_vidc_init_platform_kalama(core, dev); - if (rc) - d_vpr_e("%s: failed with %d\n", __func__, rc); - return rc; + + /* handle unknown compat type */ + if (i == ARRAY_SIZE(compat_handle)) { + d_vpr_e("%s: Unsupported device: (%s)\n", __func__, dev_name(dev)); + return -EINVAL; } -#endif -#if defined(CONFIG_MSM_VIDC_PINEAPPLE) - if (of_device_is_compatible(dev->of_node, "qcom,sm8650-vidc") || - of_device_is_compatible(dev->of_node, "qcom,sm8650-vidc-v2")) { - rc = msm_vidc_init_platform_pineapple(core, dev); - if (rc) - d_vpr_e("%s: failed with %d\n", __func__, rc); - return rc; - } -#endif -#if defined(CONFIG_MSM_VIDC_ANORAK) - if (of_device_is_compatible(dev->of_node, "qcom,sxr2230p-vidc")) { - rc = msm_vidc_init_platform_anorak(core, dev); - if (rc) - d_vpr_e("%s: failed with %d\n", __func__, rc); - return rc; - } -#endif return rc; } -static int msm_vidc_deinit_vpu(struct msm_vidc_core *core, struct device *dev) +static int msm_vidc_deinit_vpu(struct msm_vidc_core *core) { - int rc = -EINVAL; + struct device *dev = NULL; + int i, rc = 0; - if (!core || !dev) { + if (!core || !core->pdev) { d_vpr_e("%s: Invalid params\n", __func__); return -EINVAL; } + dev = &core->pdev->dev; - d_vpr_h("%s()\n", __func__); + /* select platform based on compatible match */ + for (i = 0; i < ARRAY_SIZE(compat_handle); i++) { + if (of_device_is_compatible(dev->of_node, compat_handle[i].compat)) { + rc = compat_handle[i].deinit_iris(core); + if (rc) { + d_vpr_e("%s: (%s) init failed with %d\n", + __func__, compat_handle[i].compat, rc); + return rc; + } + break; + } + } -#if defined(CONFIG_MSM_VIDC_IRIS2) - if (of_device_is_compatible(dev->of_node, "qcom,sm8450-vidc")) { - rc = msm_vidc_deinit_iris2(core); - if (rc) - d_vpr_e("%s: failed with %d\n", __func__, rc); - return rc; + /* handle unknown compat type */ + if (i == ARRAY_SIZE(compat_handle)) { + d_vpr_e("%s: Unsupported device: (%s)\n", __func__, dev_name(dev)); + return -EINVAL; } -#endif -#if defined(CONFIG_MSM_VIDC_IRIS3) - if (of_device_is_compatible(dev->of_node, "qcom,sm8550-vidc") || - of_device_is_compatible(dev->of_node, "qcom,sm8550-vidc-v2")) { - rc = msm_vidc_deinit_iris3(core); - if (rc) - d_vpr_e("%s: failed with %d\n", __func__, rc); - return rc; - } -#endif -#if defined(CONFIG_MSM_VIDC_IRIS33) - if (of_device_is_compatible(dev->of_node, "qcom,sm8650-vidc") || - of_device_is_compatible(dev->of_node, "qcom,sm8650-vidc-v2")) { - rc = msm_vidc_deinit_iris33(core); - if (rc) - d_vpr_e("%s: failed with %d\n", __func__, rc); - return rc; - } -#endif + return rc; } -static int msm_vidc_init_vpu(struct msm_vidc_core *core, struct device *dev) +static int msm_vidc_init_vpu(struct msm_vidc_core *core) { - int rc = -EINVAL; + struct device *dev = NULL; + int i, rc = 0; - if (!core || !dev) { + if (!core || !core->pdev) { d_vpr_e("%s: Invalid params\n", __func__); return -EINVAL; } + dev = &core->pdev->dev; -#if defined(CONFIG_MSM_VIDC_IRIS2) - if (of_device_is_compatible(dev->of_node, "qcom,sm8450-vidc")) { - rc = msm_vidc_init_iris2(core); - if (rc) - d_vpr_e("%s: failed with %d\n", __func__, rc); - return rc; + /* select platform based on compatible match */ + for (i = 0; i < ARRAY_SIZE(compat_handle); i++) { + if (of_device_is_compatible(dev->of_node, compat_handle[i].compat)) { + rc = compat_handle[i].init_iris(core); + if (rc) { + d_vpr_e("%s: (%s) init failed with %d\n", + __func__, compat_handle[i].compat, rc); + return rc; + } + break; + } } -#endif -#if defined(CONFIG_MSM_VIDC_IRIS3) - if (of_device_is_compatible(dev->of_node, "qcom,sm8550-vidc") || - of_device_is_compatible(dev->of_node, "qcom,sm8550-vidc-v2")) { - rc = msm_vidc_init_iris3(core); - if (rc) - d_vpr_e("%s: failed with %d\n", __func__, rc); - return rc; + + /* handle unknown compat type */ + if (i == ARRAY_SIZE(compat_handle)) { + d_vpr_e("%s: Unsupported device: (%s)\n", __func__, dev_name(dev)); + return -EINVAL; } -#endif -#if defined(CONFIG_MSM_VIDC_IRIS33) - if (of_device_is_compatible(dev->of_node, "qcom,sm8650-vidc") || - of_device_is_compatible(dev->of_node, "qcom,sm8650-vidc-v2")) { - rc = msm_vidc_init_iris33(core); - if (rc) - d_vpr_e("%s: failed with %d\n", __func__, rc); - return rc; - } -#endif return rc; } @@ -439,8 +433,8 @@ int msm_vidc_deinit_platform(struct platform_device *pdev) d_vpr_h("%s()\n", __func__); - msm_vidc_deinit_vpu(core, &pdev->dev); - msm_vidc_deinit_platform_variant(core, &pdev->dev); + msm_vidc_deinit_vpu(core); + msm_vidc_deinit_platform_variant(core); msm_vidc_vmem_free((void **)&core->platform); return 0; @@ -479,11 +473,11 @@ int msm_vidc_init_platform(struct platform_device *pdev) if (rc) return rc; - rc = msm_vidc_init_platform_variant(core, &pdev->dev); + rc = msm_vidc_init_platform_variant(core); if (rc) return rc; - rc = msm_vidc_init_vpu(core, &pdev->dev); + rc = msm_vidc_init_vpu(core); if (rc) return rc; diff --git a/driver/platform/kalama/inc/msm_vidc_kalama.h b/driver/platform/kalama/inc/msm_vidc_kalama.h index e9ad036355..8fd11db56c 100644 --- a/driver/platform/kalama/inc/msm_vidc_kalama.h +++ b/driver/platform/kalama/inc/msm_vidc_kalama.h @@ -10,15 +10,15 @@ #include "msm_vidc_core.h" #if defined(CONFIG_MSM_VIDC_KALAMA) -int msm_vidc_init_platform_kalama(struct msm_vidc_core *core, struct device *dev); -int msm_vidc_deinit_platform_kalama(struct msm_vidc_core *core, struct device *dev); +int msm_vidc_init_platform_kalama(struct msm_vidc_core *core); +int msm_vidc_deinit_platform_kalama(struct msm_vidc_core *core); #else -int msm_vidc_init_platform_kalama(struct msm_vidc_core *core, struct device *dev) +int msm_vidc_init_platform_kalama(struct msm_vidc_core *core) { return -EINVAL; } -int msm_vidc_deinit_platform_kalama(struct msm_vidc_core *core, struct device *dev) +int msm_vidc_deinit_platform_kalama(struct msm_vidc_core *core) { return -EINVAL; } diff --git a/driver/platform/kalama/src/kalama.c b/driver/platform/kalama/src/kalama.c deleted file mode 100644 index 547009c089..0000000000 --- a/driver/platform/kalama/src/kalama.c +++ /dev/null @@ -1,1694 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0-only -/* - * Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved. - */ - -#include "msm_vidc_control.h" -#include "msm_vidc_kalama.h" -#include "msm_vidc_platform.h" -#include "msm_vidc_debug.h" -#include "hfi_property.h" -#include "msm_vidc_iris3.h" -#include "hfi_command.h" - -#define DEFAULT_VIDEO_CONCEAL_COLOR_BLACK 0x8020010 -#define MAX_BASE_LAYER_PRIORITY_ID 63 -#define MAX_OP_POINT 31 -#define MAX_BITRATE 245000000 -#define DEFAULT_BITRATE 20000000 -#define MINIMUM_FPS 1 -#define MAXIMUM_FPS 480 -#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_MB_SIZE \ - (((4096 + 15) >> 4) * ((2304 + 15) >> 4)) - -#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 CODECS_ALL (H264 | HEVC | VP9) -#define MAXIMUM_OVERRIDE_VP9_FPS 180 - -#ifndef V4L2_PIX_FMT_QC08C -#define V4L2_PIX_FMT_QC08C v4l2_fourcc('Q', '0', '8', 'C') -#endif - -#ifndef V4L2_PIX_FMT_QC10C -#define V4L2_PIX_FMT_QC10C v4l2_fourcc('Q', '1', '0', 'C') -#endif - -static struct codec_info codec_data_kalama[] = { - { - .v4l2_codec = V4L2_PIX_FMT_H264, - .vidc_codec = MSM_VIDC_H264, - .pixfmt_name = "AVC", - }, - { - .v4l2_codec = V4L2_PIX_FMT_HEVC, - .vidc_codec = MSM_VIDC_HEVC, - .pixfmt_name = "HEVC", - }, - { - .v4l2_codec = V4L2_PIX_FMT_VP9, - .vidc_codec = MSM_VIDC_VP9, - .pixfmt_name = "VP9", - }, -}; - -static struct color_format_info color_format_data_kalama[] = { - { - .v4l2_color_format = V4L2_PIX_FMT_NV12, - .vidc_color_format = MSM_VIDC_FMT_NV12, - .pixfmt_name = "NV12", - }, - { - .v4l2_color_format = V4L2_PIX_FMT_NV21, - .vidc_color_format = MSM_VIDC_FMT_NV21, - .pixfmt_name = "NV21", - }, - { - .v4l2_color_format = V4L2_PIX_FMT_QC08C, - .vidc_color_format = MSM_VIDC_FMT_NV12C, - .pixfmt_name = "NV12C", - }, - { - .v4l2_color_format = V4L2_PIX_FMT_QC10C, - .vidc_color_format = MSM_VIDC_FMT_TP10C, - .pixfmt_name = "TP10C", - }, - { - .v4l2_color_format = V4L2_PIX_FMT_RGBA32, - .vidc_color_format = MSM_VIDC_FMT_RGBA8888, - .pixfmt_name = "RGBA", - }, -}; - -static struct color_primaries_info color_primaries_data_kalama[] = { - { - .v4l2_color_primaries = V4L2_COLORSPACE_DEFAULT, - .vidc_color_primaries = MSM_VIDC_PRIMARIES_RESERVED, - }, - { - .v4l2_color_primaries = V4L2_COLORSPACE_REC709, - .vidc_color_primaries = MSM_VIDC_PRIMARIES_BT709, - }, - { - .v4l2_color_primaries = V4L2_COLORSPACE_470_SYSTEM_M, - .vidc_color_primaries = MSM_VIDC_PRIMARIES_BT470_SYSTEM_M, - }, - { - .v4l2_color_primaries = V4L2_COLORSPACE_470_SYSTEM_BG, - .vidc_color_primaries = MSM_VIDC_PRIMARIES_BT470_SYSTEM_BG, - }, - { - .v4l2_color_primaries = V4L2_COLORSPACE_SMPTE170M, - .vidc_color_primaries = MSM_VIDC_PRIMARIES_BT601_525, - }, - { - .v4l2_color_primaries = V4L2_COLORSPACE_SMPTE240M, - .vidc_color_primaries = MSM_VIDC_PRIMARIES_SMPTE_ST240M, - }, - { - .v4l2_color_primaries = V4L2_COLORSPACE_BT2020, - .vidc_color_primaries = MSM_VIDC_PRIMARIES_BT2020, - }, - { - .v4l2_color_primaries = V4L2_COLORSPACE_DCI_P3, - .vidc_color_primaries = MSM_VIDC_PRIMARIES_SMPTE_RP431_2, - }, -}; - -static struct transfer_char_info transfer_char_data_kalama[] = { - { - .v4l2_transfer_char = V4L2_XFER_FUNC_DEFAULT, - .vidc_transfer_char = MSM_VIDC_TRANSFER_RESERVED, - }, - { - .v4l2_transfer_char = V4L2_XFER_FUNC_709, - .vidc_transfer_char = MSM_VIDC_TRANSFER_BT709, - }, - { - .v4l2_transfer_char = V4L2_XFER_FUNC_SMPTE240M, - .vidc_transfer_char = MSM_VIDC_TRANSFER_SMPTE_ST240M, - }, - { - .v4l2_transfer_char = V4L2_XFER_FUNC_SRGB, - .vidc_transfer_char = MSM_VIDC_TRANSFER_SRGB_SYCC, - }, - { - .v4l2_transfer_char = V4L2_XFER_FUNC_SMPTE2084, - .vidc_transfer_char = MSM_VIDC_TRANSFER_SMPTE_ST2084_PQ, - }, -}; - -static struct matrix_coeff_info matrix_coeff_data_kalama[] = { - { - .v4l2_matrix_coeff = V4L2_YCBCR_ENC_DEFAULT, - .vidc_matrix_coeff = MSM_VIDC_MATRIX_COEFF_RESERVED, - }, - { - .v4l2_matrix_coeff = V4L2_YCBCR_ENC_709, - .vidc_matrix_coeff = MSM_VIDC_MATRIX_COEFF_BT709, - }, - { - .v4l2_matrix_coeff = V4L2_YCBCR_ENC_XV709, - .vidc_matrix_coeff = MSM_VIDC_MATRIX_COEFF_BT709, - }, - { - .v4l2_matrix_coeff = V4L2_YCBCR_ENC_XV601, - .vidc_matrix_coeff = MSM_VIDC_MATRIX_COEFF_BT470_SYS_BG_OR_BT601_625, - }, - { - .v4l2_matrix_coeff = V4L2_YCBCR_ENC_601, - .vidc_matrix_coeff = MSM_VIDC_MATRIX_COEFF_BT601_525_BT1358_525_OR_625, - }, - { - .v4l2_matrix_coeff = V4L2_YCBCR_ENC_SMPTE240M, - .vidc_matrix_coeff = MSM_VIDC_MATRIX_COEFF_SMPTE_ST240, - }, - { - .v4l2_matrix_coeff = V4L2_YCBCR_ENC_BT2020, - .vidc_matrix_coeff = MSM_VIDC_MATRIX_COEFF_BT2020_NON_CONSTANT, - }, - { - .v4l2_matrix_coeff = V4L2_YCBCR_ENC_BT2020_CONST_LUM, - .vidc_matrix_coeff = MSM_VIDC_MATRIX_COEFF_BT2020_CONSTANT, - }, -}; - -static struct msm_platform_core_capability core_data_kalama[] = { - /* {type, value} */ - {ENC_CODECS, H264|HEVC}, - {DEC_CODECS, H264|HEVC|VP9}, - {MAX_SESSION_COUNT, 16}, - {MAX_NUM_720P_SESSIONS, 16}, - {MAX_NUM_1080P_SESSIONS, 16}, - {MAX_NUM_4K_SESSIONS, 8}, - {MAX_NUM_8K_SESSIONS, 2}, - {MAX_RT_MBPF, 174080}, /* (8192x4352)/256 + (4096x2176)/256*/ - {MAX_MBPF, 278528}, /* ((8192x4352)/256) * 2 */ - {MAX_MBPS, 7833600}, /* max_load - * 7680x4320@60fps or 3840x2176@240fps - * which is greater than 4096x2176@120fps, - * 8192x4320@48fps - */ - {MAX_MBPF_HQ, 8160}, /* ((1920x1088)/256) */ - {MAX_MBPS_HQ, 489600}, /* ((1920x1088)/256)@60fps */ - {MAX_MBPF_B_FRAME, 32640}, /* 3840x2176/256 */ - {MAX_MBPS_B_FRAME, 1958400}, /* 3840x2176/256 MBs@60fps */ - {MAX_MBPS_ALL_INTRA, 1044480}, /* 4096x2176/256 MBs@30fps */ - {MAX_ENH_LAYER_COUNT, 5}, - {NUM_VPP_PIPE, 4}, - {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)*/ - {DCVS, 1}, - {DECODE_BATCH, 1}, - {DECODE_BATCH_TIMEOUT, 200}, - {STATS_TIMEOUT_MS, 2000}, - {NON_FATAL_FAULTS, 1}, - {ENC_AUTO_FRAMERATE, 1}, - {DEVICE_CAPS, V4L2_CAP_VIDEO_M2M_MPLANE | V4L2_CAP_STREAMING}, - {SUPPORTS_REQUESTS, 0}, -}; - -static struct msm_platform_inst_capability instance_cap_data_kalama[] = { - /* {cap, domain, codec, - * min, max, step_or_mask, value, - * v4l2_id, - * hfi_id, - * flags} - */ - - {FRAME_WIDTH, DEC, CODECS_ALL, 96, 8192, 1, 1920}, - - {FRAME_WIDTH, DEC, VP9, 96, 4096, 1, 1920}, - - {FRAME_WIDTH, ENC, CODECS_ALL, 128, 8192, 1, 1920}, - - {FRAME_WIDTH, ENC, HEVC, 96, 8192, 1, 1920}, - - {LOSSLESS_FRAME_WIDTH, ENC, CODECS_ALL, 128, 4096, 1, 1920}, - - {LOSSLESS_FRAME_WIDTH, ENC, HEVC, 96, 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, 8192, 1, 1080}, - - {FRAME_HEIGHT, ENC, HEVC, 96, 8192, 1, 1080}, - - {LOSSLESS_FRAME_HEIGHT, ENC, CODECS_ALL, 128, 4096, 1, 1080}, - - {LOSSLESS_FRAME_HEIGHT, ENC, HEVC, 96, 4096, 1, 1080}, - - {PIX_FMTS, ENC|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, ENC|DEC, HEVC|VP9, - MSM_VIDC_FMT_NV12, - MSM_VIDC_FMT_TP10C, - MSM_VIDC_FMT_NV12 | MSM_VIDC_FMT_NV21 | MSM_VIDC_FMT_NV12C | - 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, - 0, - CAP_FLAG_VOLATILE}, - - - {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 | CAP_FLAG_VOLATILE}, - - /* (8192 * 4320) / 256 */ - {MBPF, ENC, CODECS_ALL, 64, 138240, 1, 138240}, - - {MBPF, ENC, HEVC, 36, 138240, 1, 138240}, - - {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 */ - /* TODO: update with new values based on updated voltage corner */ - {BATCH_MBPF, DEC, H264|HEVC|VP9, 64, 34816, 1, 34816}, - - /* (4096 * 2304) / 256 */ - {BATCH_FPS, DEC, H264|HEVC|VP9, 1, 120, 1, 120}, - - {FRAME_RATE, ENC, CODECS_ALL, - (MINIMUM_FPS << 16), (MAXIMUM_FPS << 16), - 1, (DEFAULT_FPS << 16), - 0, - HFI_PROP_FRAME_RATE, - CAP_FLAG_OUTPUT_PORT}, - - {OPERATING_RATE, ENC, CODECS_ALL, - (MINIMUM_FPS << 16), (MAXIMUM_FPS << 16), - 1, (DEFAULT_FPS << 16)}, - - {INPUT_RATE, ENC|DEC, CODECS_ALL, - (MINIMUM_FPS << 16), INT_MAX, - 1, (DEFAULT_FPS << 16)}, - - {TIMESTAMP_RATE, ENC|DEC, CODECS_ALL, - (MINIMUM_FPS << 16), INT_MAX, - 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, 489583, 489583, 1, 489583}, - - {MB_CYCLES_FW_VPP, ENC, CODECS_ALL, 48405, 48405, 1, 48405}, - - {MB_CYCLES_FW_VPP, DEC, CODECS_ALL, 66234, 66234, 1, 66234}, - - {CLIENT_ID, ENC|DEC, CODECS_ALL, - INVALID_CLIENT_ID, INT_MAX, 1, INVALID_CLIENT_ID, - 0}, - - {HFLIP, ENC, CODECS_ALL, - 0, 1, 1, 0, - V4L2_CID_HFLIP, - HFI_PROP_FLIP, - CAP_FLAG_OUTPUT_PORT | - CAP_FLAG_INPUT_PORT | CAP_FLAG_DYNAMIC_ALLOWED}, - - {VFLIP, ENC, CODECS_ALL, - 0, 1, 1, 0, - V4L2_CID_VFLIP, - HFI_PROP_FLIP, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT | - CAP_FLAG_DYNAMIC_ALLOWED}, - - {ROTATION, ENC, CODECS_ALL, - 0, 270, 90, 0, - V4L2_CID_ROTATE, - HFI_PROP_ROTATION, - CAP_FLAG_OUTPUT_PORT}, - - {SUPER_FRAME, ENC, H264|HEVC, - 0, 32, 1, 0, - 0, 0, - CAP_FLAG_NONE}, - - {SLICE_DECODE, 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}, - - {PREPEND_SPSPPS_TO_IDR, ENC, CODECS_ALL, - 0, 1, 1, 0, - V4L2_CID_MPEG_VIDEO_PREPEND_SPSPPS_TO_IDR}, - - {WITHOUT_STARTCODE, ENC, CODECS_ALL, - 0, 1, 1, 0, - V4L2_CID_MPEG_VIDEO_HEVC_WITHOUT_STARTCODE, - HFI_PROP_NAL_LENGTH_FIELD, - CAP_FLAG_OUTPUT_PORT}, - - {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}, - - /* 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}, - - {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}, - - {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}, - - {CABAC_MAX_BITRATE, ENC, H264|HEVC, 0, - 160000000, 1, 160000000}, - - {CAVLC_MAX_BITRATE, ENC, H264, 0, - 220000000, 1, 220000000}, - - {ALLINTRA_MAX_BITRATE, ENC, H264|HEVC, 0, - 245000000, 1, 245000000}, - - {LOWLATENCY_MAX_BITRATE, ENC, H264|HEVC, 0, - 70000000, 1, 70000000}, - - {LOSSLESS, ENC, HEVC, - 0, 1, 1, 0, - V4L2_CID_MPEG_VIDEO_HEVC_LOSSLESS_CU}, - - {FRAME_SKIP_MODE, ENC, H264|HEVC, - 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, - 0, 1, 1, 1, - 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}, - - {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}, - - {GOP_CLOSURE, ENC, H264|HEVC, - 0, 1, 1, 1, - 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}, - - {BLUR_TYPES, ENC, H264|HEVC, - MSM_VIDC_BLUR_NONE, MSM_VIDC_BLUR_EXTERNAL, - BIT(MSM_VIDC_BLUR_NONE) | BIT(MSM_VIDC_BLUR_EXTERNAL), - MSM_VIDC_BLUR_NONE, - 0, - HFI_PROP_BLUR_TYPES, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU}, - - {CSC, ENC, CODECS_ALL, - 0, 1, 1, 0, - 0, - HFI_PROP_CSC}, - - {LOWLATENCY_MODE, ENC, H264|HEVC, - 0, 1, 1, 0, - 0, - 0, - CAP_FLAG_NONE}, - - {LOWLATENCY_MODE, DEC, H264|HEVC|VP9, - 0, 1, 1, 0, - 0, - HFI_PROP_SEQ_CHANGE_AT_SYNC_FRAME, - CAP_FLAG_INPUT_PORT | CAP_FLAG_DYNAMIC_ALLOWED}, - - {LTR_COUNT, ENC, H264|HEVC, - 0, MAX_LTR_FRAME_COUNT_2, 1, 0, - V4L2_CID_MPEG_VIDEO_LTR_COUNT, - HFI_PROP_LTR_COUNT, - CAP_FLAG_OUTPUT_PORT}, - - {USE_LTR, ENC, H264|HEVC, - 0, - ((1 << MAX_LTR_FRAME_COUNT_2) - 1), - 0, 0, - V4L2_CID_MPEG_VIDEO_USE_LTR_FRAMES, - HFI_PROP_LTR_USE, - CAP_FLAG_INPUT_PORT | CAP_FLAG_DYNAMIC_ALLOWED}, - - {MARK_LTR, ENC, H264|HEVC, - INVALID_DEFAULT_MARK_OR_USE_LTR, - (MAX_LTR_FRAME_COUNT_2 - 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}, - - {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}, - - {AU_DELIMITER, ENC, H264|HEVC, - 0, 1, 1, 0, - V4L2_CID_MPEG_VIDEO_AU_DELIMITER, - HFI_PROP_AUD, - CAP_FLAG_OUTPUT_PORT}, - - {CONTENT_ADAPTIVE_CODING, ENC, H264|HEVC, - 0, 1, 1, 1, - 0, - HFI_PROP_CONTENT_ADAPTIVE_CODING, - CAP_FLAG_OUTPUT_PORT}, - - {REQUEST_PREPROCESS, ENC, H264|HEVC, - MSM_VIDC_PREPROCESS_NONE, - MSM_VIDC_PREPROCESS_TYPE0, - BIT(MSM_VIDC_PREPROCESS_NONE) | - BIT(MSM_VIDC_PREPROCESS_TYPE0), - MSM_VIDC_PREPROCESS_NONE, - 0, HFI_PROP_REQUEST_PREPROCESS, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU}, - - {MIN_QUALITY, ENC, H264|HEVC, - 0, MAX_SUPPORTED_MIN_QUALITY, 70, MAX_SUPPORTED_MIN_QUALITY, - 0, - HFI_PROP_MAINTAIN_MIN_QUALITY, - CAP_FLAG_OUTPUT_PORT}, - - {VBV_DELAY, ENC, H264|HEVC, - 200, 300, 100, 300, - V4L2_CID_MPEG_VIDEO_VBV_DELAY, - HFI_PROP_VBV_DELAY, - CAP_FLAG_OUTPUT_PORT}, - - {PEAK_BITRATE, ENC, H264|HEVC, - /* default peak bitrate is 10% larger than avg 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}, - - {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}, - - {MIN_FRAME_QP, ENC, HEVC, - 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}, - - {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, - 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, - 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, - 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}, - - {MAX_FRAME_QP, ENC, HEVC, - MIN_QP_10BIT, MAX_QP, 1, MAX_QP, - V4L2_CID_MPEG_VIDEO_HEVC_MAX_QP, - HFI_PROP_MAX_QP_PACKED, - CAP_FLAG_OUTPUT_PORT}, - - {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, - 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, - 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, - 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}, - - {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}, - - {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}, - - {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}, - - {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}, - - {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}, - - {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, - 0, 1, 1, 0, - V4L2_CID_MPEG_VIDEO_H264_HIERARCHICAL_CODING, - HFI_PROP_LAYER_ENCODING_TYPE, - CAP_FLAG_OUTPUT_PORT}, - - {LAYER_ENABLE, ENC, HEVC, - 0, 1, 1, 0, - 0, - 0, - 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}, - - {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}, - - {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}, - - {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}, - - {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}, - - {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}, - - {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}, - - {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}, - - {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}, - {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}, - - {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}, - - {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}, - - {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}, - - {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}, - - {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}, - - {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}, - - {PROFILE, ENC|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}, - - {PROFILE, ENC|DEC, HEVC, - 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}, - - {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}, - - {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_5_0, - V4L2_CID_MPEG_VIDEO_H264_LEVEL, - HFI_PROP_LEVEL, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU}, - - {LEVEL, ENC, HEVC, - 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_5, - V4L2_CID_MPEG_VIDEO_HEVC_LEVEL, - HFI_PROP_LEVEL, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU}, - - {LEVEL, DEC, H264, - V4L2_MPEG_VIDEO_H264_LEVEL_1_0, - V4L2_MPEG_VIDEO_H264_LEVEL_6_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) | - BIT(V4L2_MPEG_VIDEO_H264_LEVEL_6_0) | - BIT(V4L2_MPEG_VIDEO_H264_LEVEL_6_1) | - BIT(V4L2_MPEG_VIDEO_H264_LEVEL_6_2), - V4L2_MPEG_VIDEO_H264_LEVEL_6_1, - V4L2_CID_MPEG_VIDEO_H264_LEVEL, - HFI_PROP_LEVEL, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU}, - - {LEVEL, DEC, HEVC, - V4L2_MPEG_VIDEO_HEVC_LEVEL_1, - V4L2_MPEG_VIDEO_HEVC_LEVEL_6_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) | - BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_6) | - BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_6_1)| - BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_6_2), - V4L2_MPEG_VIDEO_HEVC_LEVEL_6_1, - V4L2_CID_MPEG_VIDEO_HEVC_LEVEL, - HFI_PROP_LEVEL, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU}, - - {LEVEL, DEC, VP9, - V4L2_MPEG_VIDEO_VP9_LEVEL_1_0, - V4L2_MPEG_VIDEO_VP9_LEVEL_6_0, - 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) | - BIT(V4L2_MPEG_VIDEO_VP9_LEVEL_6_0), - V4L2_MPEG_VIDEO_VP9_LEVEL_6_0, - V4L2_CID_MPEG_VIDEO_VP9_LEVEL, - HFI_PROP_LEVEL, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU}, - - {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}, - - {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}, - - {LF_MODE, ENC, HEVC, - 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}, - - {LF_ALPHA, ENC, H264, - -6, 6, 1, 0, - V4L2_CID_MPEG_VIDEO_H264_LOOP_FILTER_ALPHA}, - - {LF_ALPHA, ENC, HEVC, - -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, - -6, 6, 1, 0, - V4L2_CID_MPEG_VIDEO_HEVC_LF_BETA_OFFSET_DIV2}, - - {SLICE_MODE, ENC, H264|HEVC, - 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}, - - {SLICE_MAX_BYTES, ENC, H264|HEVC, - 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, - 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}, - - {MB_RC, ENC, H264|HEVC, - 0, 1, 1, 1, - V4L2_CID_MPEG_VIDEO_MB_RC_ENABLE, - 0, - CAP_FLAG_OUTPUT_PORT}, - - {TRANSFORM_8X8, ENC, H264, - 0, 1, 1, 1, - V4L2_CID_MPEG_VIDEO_H264_8X8_TRANSFORM, - HFI_PROP_8X8_TRANSFORM, - CAP_FLAG_OUTPUT_PORT}, - - {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}, - - {DISPLAY_DELAY_ENABLE, DEC, H264|HEVC|VP9, - 0, 1, 1, 0, - V4L2_CID_MPEG_VIDEO_DEC_DISPLAY_DELAY_ENABLE, - HFI_PROP_DECODE_ORDER_OUTPUT, - CAP_FLAG_INPUT_PORT}, - - {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}, - - {OUTPUT_ORDER, DEC, H264|HEVC|VP9, - 0, 1, 1, 0, - 0, - HFI_PROP_DECODE_ORDER_OUTPUT, - CAP_FLAG_INPUT_PORT}, - - {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}, - - {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}, - - {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}, - - {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}, - - {STAGE, DEC|ENC, CODECS_ALL, - MSM_VIDC_STAGE_1, - MSM_VIDC_STAGE_2, 1, - MSM_VIDC_STAGE_2, - 0, - HFI_PROP_STAGE}, - - {PIPE, DEC|ENC, CODECS_ALL, - MSM_VIDC_PIPE_1, - MSM_VIDC_PIPE_4, 1, - MSM_VIDC_PIPE_4, - 0, - HFI_PROP_PIPE}, - - {POC, DEC, H264, 0, 2, 1, 1, - 0, - HFI_PROP_PIC_ORDER_CNT_TYPE}, - - {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, - 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, 0, 1, 1, 0, - 0, 0, - CAP_FLAG_DYNAMIC_ALLOWED}, - - {BITSTREAM_SIZE_OVERWRITE, DEC, CODECS_ALL, 0, INT_MAX, 1, 0, - 0}, - - {THUMBNAIL_MODE, DEC, CODECS_ALL, - 0, 1, 1, 0, - 0, - HFI_PROP_THUMBNAIL_MODE, - CAP_FLAG_INPUT_PORT}, - - {DEFAULT_HEADER, DEC, CODECS_ALL, - 0, 1, 1, 0, - 0, - HFI_PROP_DEC_DEFAULT_HEADER}, - - {RAP_FRAME, DEC, CODECS_ALL, - 0, 1, 1, 1, - 0, - HFI_PROP_DEC_START_FROM_RAP_FRAME, - CAP_FLAG_INPUT_PORT}, - - {SEQ_CHANGE_AT_SYNC_FRAME, DEC, CODECS_ALL, - 0, 1, 1, 1, - 0, - HFI_PROP_SEQ_CHANGE_AT_SYNC_FRAME, - CAP_FLAG_INPUT_PORT | CAP_FLAG_DYNAMIC_ALLOWED}, - - {FIRMWARE_PRIORITY_OFFSET, DEC | ENC, CODECS_ALL, - 1, 1, 1, 1}, - - {DPB_LIST, DEC, CODECS_ALL, - 0, 1, 1, 0, - 0, - HFI_PROP_DPB_LIST, - CAP_FLAG_OUTPUT_PORT}, - - {ALL_INTRA, ENC, H264|HEVC, - 0, 1, 1, 0, - 0, - 0, - CAP_FLAG_OUTPUT_PORT}, - - {COMPLEXITY, ENC, H264|HEVC, - 0, 100, - 1, DEFAULT_COMPLEXITY, - 0}, -}; - -static struct msm_platform_inst_cap_dependency instance_cap_dependency_data_kalama[] = { - /* {cap, domain, codec, - * children, - * adjust, set} - */ - - {PIX_FMTS, ENC, H264, - {0}}, - - {PIX_FMTS, ENC, HEVC, - {PROFILE, MIN_FRAME_QP, MAX_FRAME_QP, I_FRAME_QP, P_FRAME_QP, - B_FRAME_QP, MIN_QUALITY, BLUR_TYPES, LTR_COUNT}}, - - {PIX_FMTS, DEC, HEVC, - {PROFILE}}, - - {FRAME_RATE, ENC, CODECS_ALL, - {0}, - NULL, - msm_vidc_set_q16}, - - {HFLIP, ENC, CODECS_ALL, - {0}, - NULL, - msm_vidc_set_flip}, - - {VFLIP, ENC, CODECS_ALL, - {0}, - NULL, - msm_vidc_set_flip}, - - {ROTATION, ENC, CODECS_ALL, - {0}, - NULL, - msm_vidc_set_rotation}, - - {SUPER_FRAME, ENC, H264|HEVC, - {INPUT_BUF_HOST_MAX_COUNT, OUTPUT_BUF_HOST_MAX_COUNT}, - NULL, - NULL}, - - {HEADER_MODE, ENC, CODECS_ALL, - {0}, - NULL, - msm_vidc_set_header_mode}, - - {WITHOUT_STARTCODE, ENC, CODECS_ALL, - {0}, - NULL, - msm_vidc_set_nal_length}, - - {REQUEST_I_FRAME, ENC, H264|HEVC, - {0}, - NULL, - msm_vidc_set_req_sync_frame}, - - {BIT_RATE, ENC, H264, - {PEAK_BITRATE, L0_BR}, - msm_vidc_adjust_bitrate, - msm_vidc_set_bitrate}, - - {BIT_RATE, ENC, HEVC, - {PEAK_BITRATE, L0_BR}, - msm_vidc_adjust_bitrate, - msm_vidc_set_bitrate}, - - {BITRATE_MODE, ENC, H264, - {LTR_COUNT, I_FRAME_QP, P_FRAME_QP, - B_FRAME_QP, ENH_LAYER_COUNT, BIT_RATE, - MIN_QUALITY, VBV_DELAY, - PEAK_BITRATE, SLICE_MODE, CONTENT_ADAPTIVE_CODING, - BLUR_TYPES, LOWLATENCY_MODE}, - msm_vidc_adjust_bitrate_mode, - msm_vidc_set_u32_enum}, - - {BITRATE_MODE, ENC, HEVC, - {LTR_COUNT, I_FRAME_QP, P_FRAME_QP, - B_FRAME_QP, CONSTANT_QUALITY, ENH_LAYER_COUNT, - BIT_RATE, MIN_QUALITY, VBV_DELAY, - PEAK_BITRATE, SLICE_MODE, CONTENT_ADAPTIVE_CODING, - BLUR_TYPES, LOWLATENCY_MODE}, - msm_vidc_adjust_bitrate_mode, - msm_vidc_set_u32_enum}, - - {CONSTANT_QUALITY, ENC, HEVC, - {0}, - NULL, - msm_vidc_set_constant_quality}, - - {GOP_SIZE, ENC, CODECS_ALL, - {ALL_INTRA}, - msm_vidc_adjust_gop_size, - msm_vidc_set_gop_size}, - - {B_FRAME, ENC, H264|HEVC, - {ALL_INTRA}, - msm_vidc_adjust_b_frame, - msm_vidc_set_u32}, - - {BLUR_TYPES, ENC, H264|HEVC, - {0}, - msm_vidc_adjust_blur_type, - msm_vidc_set_u32_enum}, - - {LOWLATENCY_MODE, ENC, H264 | HEVC, - {STAGE, BIT_RATE}, - msm_vidc_adjust_enc_lowlatency_mode, - NULL}, - - {LOWLATENCY_MODE, DEC, H264|HEVC|VP9, - {STAGE}, - msm_vidc_adjust_dec_lowlatency_mode, - NULL}, - - {LTR_COUNT, ENC, H264|HEVC, - {0}, - msm_vidc_adjust_ltr_count, - msm_vidc_set_u32}, - - {USE_LTR, ENC, H264|HEVC, - {0}, - msm_vidc_adjust_use_ltr, - msm_vidc_set_use_and_mark_ltr}, - - {MARK_LTR, ENC, H264|HEVC, - {0}, - msm_vidc_adjust_mark_ltr, - msm_vidc_set_use_and_mark_ltr}, - - {AU_DELIMITER, ENC, H264|HEVC, - {0}, - NULL, - msm_vidc_set_u32}, - - {CONTENT_ADAPTIVE_CODING, ENC, H264|HEVC, - {REQUEST_PREPROCESS}, - msm_vidc_adjust_brs, - msm_vidc_set_vbr_related_properties}, - - {REQUEST_PREPROCESS, ENC, H264|HEVC, - {0}, - msm_vidc_adjust_preprocess, - msm_vidc_set_preprocess}, - - {MIN_QUALITY, ENC, H264, - {BLUR_TYPES}, - msm_vidc_adjust_min_quality, - msm_vidc_set_u32}, - - {MIN_QUALITY, ENC, HEVC, - {BLUR_TYPES}, - msm_vidc_adjust_min_quality, - msm_vidc_set_u32}, - - {VBV_DELAY, ENC, H264|HEVC, - {0}, - NULL, - msm_vidc_set_cbr_related_properties}, - - {PEAK_BITRATE, ENC, H264|HEVC, - {0}, - msm_vidc_adjust_peak_bitrate, - msm_vidc_set_cbr_related_properties}, - - {MIN_FRAME_QP, ENC, H264, - {0}, - NULL, - msm_vidc_set_min_qp}, - - {MIN_FRAME_QP, ENC, HEVC, - {0}, - msm_vidc_adjust_hevc_min_qp, - msm_vidc_set_min_qp}, - - {MAX_FRAME_QP, ENC, H264, - {0}, - NULL, - msm_vidc_set_max_qp}, - - {MAX_FRAME_QP, ENC, HEVC, - {0}, - msm_vidc_adjust_hevc_max_qp, - msm_vidc_set_max_qp}, - - {I_FRAME_QP, ENC, HEVC, - {0}, - msm_vidc_adjust_hevc_i_frame_qp, - msm_vidc_set_frame_qp}, - - {I_FRAME_QP, ENC, H264, - {0}, - NULL, - msm_vidc_set_frame_qp}, - - {P_FRAME_QP, ENC, HEVC, - {0}, - msm_vidc_adjust_hevc_p_frame_qp, - msm_vidc_set_frame_qp}, - - {P_FRAME_QP, ENC, H264, - {0}, - NULL, - msm_vidc_set_frame_qp}, - - {B_FRAME_QP, ENC, HEVC, - {0}, - msm_vidc_adjust_hevc_b_frame_qp, - msm_vidc_set_frame_qp}, - - {B_FRAME_QP, ENC, H264, - {0}, - NULL, - msm_vidc_set_frame_qp}, - - {LAYER_TYPE, ENC, H264, - {CONTENT_ADAPTIVE_CODING}}, - - {LAYER_ENABLE, ENC, H264|HEVC, - {CONTENT_ADAPTIVE_CODING, LTR_COUNT}}, - - {ENH_LAYER_COUNT, ENC, H264|HEVC, - {GOP_SIZE, B_FRAME, BIT_RATE, MIN_QUALITY, LTR_COUNT}, - msm_vidc_adjust_layer_count, - msm_vidc_set_layer_count_and_type}, - - {L0_BR, ENC, H264|HEVC, - {L1_BR}, - msm_vidc_adjust_layer_bitrate, - msm_vidc_set_layer_bitrate}, - - {L1_BR, ENC, H264|HEVC, - {L2_BR}, - msm_vidc_adjust_layer_bitrate, - msm_vidc_set_layer_bitrate}, - - {L2_BR, ENC, H264|HEVC, - {L3_BR}, - msm_vidc_adjust_layer_bitrate, - msm_vidc_set_layer_bitrate}, - - {L3_BR, ENC, H264|HEVC, - {L4_BR}, - msm_vidc_adjust_layer_bitrate, - msm_vidc_set_layer_bitrate}, - - {L4_BR, ENC, H264|HEVC, - {L5_BR}, - msm_vidc_adjust_layer_bitrate, - msm_vidc_set_layer_bitrate}, - - {L5_BR, ENC, H264|HEVC, - {0}, - msm_vidc_adjust_layer_bitrate, - msm_vidc_set_layer_bitrate}, - - {ENTROPY_MODE, ENC, H264, - {BIT_RATE}, - msm_vidc_adjust_entropy_mode, - msm_vidc_set_u32}, - - {PROFILE, ENC, H264, - {ENTROPY_MODE, TRANSFORM_8X8}, - NULL, - msm_vidc_set_u32_enum}, - - {PROFILE, DEC, H264, - {ENTROPY_MODE}, - NULL, - msm_vidc_set_u32_enum}, - - {PROFILE, ENC|DEC, HEVC, - {0}, - msm_vidc_adjust_profile, - msm_vidc_set_u32_enum}, - - {PROFILE, DEC, VP9, - {0}, - NULL, - msm_vidc_set_u32_enum}, - - {LEVEL, DEC, CODECS_ALL, - {0}, - NULL, - msm_vidc_set_u32_enum}, - - {LEVEL, ENC, CODECS_ALL, - {0}, - NULL, - msm_vidc_set_level}, - - {HEVC_TIER, ENC|DEC, HEVC, - {0}, - NULL, - msm_vidc_set_u32_enum}, - - {LF_MODE, ENC, CODECS_ALL, - {0}, - NULL, - msm_vidc_set_deblock_mode}, - - {SLICE_MODE, ENC, H264|HEVC, - {STAGE, DELIVERY_MODE}, - msm_vidc_adjust_slice_count, - msm_vidc_set_slice_count}, - - {TRANSFORM_8X8, ENC, H264, - {0}, - msm_vidc_adjust_transform_8x8, - msm_vidc_set_u32}, - - {CHROMA_QP_INDEX_OFFSET, ENC, HEVC, - {0}, - msm_vidc_adjust_chroma_qp_index_offset, - msm_vidc_set_chroma_qp_index_offset}, - - {DISPLAY_DELAY_ENABLE, DEC, H264|HEVC|VP9, - {OUTPUT_ORDER}, - NULL, - NULL}, - - {DISPLAY_DELAY, DEC, H264|HEVC|VP9, - {OUTPUT_ORDER}, - NULL, - NULL}, - - {OUTPUT_ORDER, DEC, H264|HEVC|VP9, - {0}, - msm_vidc_adjust_output_order, - msm_vidc_set_u32}, - - {INPUT_BUF_HOST_MAX_COUNT, ENC|DEC, CODECS_ALL, - {0}, - msm_vidc_adjust_input_buf_host_max_count, - msm_vidc_set_u32}, - - {INPUT_BUF_HOST_MAX_COUNT, ENC, H264|HEVC, - {0}, - msm_vidc_adjust_input_buf_host_max_count, - msm_vidc_set_u32}, - - {OUTPUT_BUF_HOST_MAX_COUNT, ENC|DEC, CODECS_ALL, - {0}, - msm_vidc_adjust_output_buf_host_max_count, - msm_vidc_set_u32}, - - {OUTPUT_BUF_HOST_MAX_COUNT, ENC, H264|HEVC, - {0}, - msm_vidc_adjust_output_buf_host_max_count, - msm_vidc_set_u32}, - - {CONCEAL_COLOR_8BIT, DEC, CODECS_ALL, - {0}, - NULL, - msm_vidc_set_u32_packed}, - - {CONCEAL_COLOR_10BIT, DEC, CODECS_ALL, - {0}, - NULL, - msm_vidc_set_u32_packed}, - - {STAGE, ENC | DEC, CODECS_ALL, - {0}, - NULL, - msm_vidc_set_stage}, - - {STAGE, ENC, H264|HEVC, - {0}, - NULL, - msm_vidc_set_stage}, - - {STAGE, DEC, H264|HEVC|VP9, - {0}, - NULL, - msm_vidc_set_stage}, - - {PIPE, DEC|ENC, CODECS_ALL, - {0}, - NULL, - msm_vidc_set_pipe}, - - {THUMBNAIL_MODE, DEC, CODECS_ALL, - {OUTPUT_ORDER}, - NULL, - msm_vidc_set_u32}, - - {RAP_FRAME, DEC, CODECS_ALL, - {0}, - NULL, - msm_vidc_set_u32}, - - {FIRMWARE_PRIORITY_OFFSET, DEC | ENC, CODECS_ALL, - {0}, - NULL, - NULL}, - - {DPB_LIST, DEC, CODECS_ALL, - {0}, - NULL, - NULL}, - - {ALL_INTRA, ENC, H264|HEVC, - {LTR_COUNT, SLICE_MODE, BIT_RATE}, - msm_vidc_adjust_all_intra, - NULL}, -}; - -/* Default UBWC config for LPDDR5 */ -static struct msm_vidc_ubwc_config_data ubwc_config_kalama[] = { - UBWC_CONFIG(8, 32, 16, 0, 1, 1, 1), -}; - -static struct msm_vidc_format_capability format_data_kalama = { - .codec_info = codec_data_kalama, - .codec_info_size = ARRAY_SIZE(codec_data_kalama), - .color_format_info = color_format_data_kalama, - .color_format_info_size = ARRAY_SIZE(color_format_data_kalama), - .color_prim_info = color_primaries_data_kalama, - .color_prim_info_size = ARRAY_SIZE(color_primaries_data_kalama), - .transfer_char_info = transfer_char_data_kalama, - .transfer_char_info_size = ARRAY_SIZE(transfer_char_data_kalama), - .matrix_coeff_info = matrix_coeff_data_kalama, - .matrix_coeff_info_size = ARRAY_SIZE(matrix_coeff_data_kalama), -}; - -static const struct msm_vidc_platform_data kalama_data = { - .core_data = core_data_kalama, - .core_data_size = ARRAY_SIZE(core_data_kalama), - .inst_cap_data = instance_cap_data_kalama, - .inst_cap_data_size = ARRAY_SIZE(instance_cap_data_kalama), - .inst_cap_dependency_data = instance_cap_dependency_data_kalama, - .inst_cap_dependency_data_size = ARRAY_SIZE(instance_cap_dependency_data_kalama), - .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_kalama, - .format_data = &format_data_kalama, -}; - -static int msm_vidc_init_data(struct msm_vidc_core *core) -{ - int rc = 0; - - if (!core || !core->platform) { - d_vpr_e("%s: invalid params\n", __func__); - return -EINVAL; - } - d_vpr_h("%s: initialize kalama data\n", __func__); - - core->platform->data = kalama_data; - - return rc; -} - -int msm_vidc_init_platform_kalama(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_kalama(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 4f9cddebdb..684e6552a4 100644 --- a/driver/platform/kalama/src/msm_vidc_kalama.c +++ b/driver/platform/kalama/src/msm_vidc_kalama.c @@ -2656,14 +2656,17 @@ int msm_vidc_kalama_check_ddr_type(void) return 0; } -static int msm_vidc_init_data(struct msm_vidc_core *core, struct device *dev) +static int msm_vidc_init_data(struct msm_vidc_core *core) { + struct device *dev = NULL; int rc = 0; - if (!core || !core->platform || !dev) { + if (!core || !core->pdev || !core->platform) { d_vpr_e("%s: invalid params\n", __func__); return -EINVAL; } + dev = &core->pdev->dev; + d_vpr_h("%s: initialize kalama data\n", __func__); if (of_device_is_compatible(dev->of_node, "qcom,sm8550-vidc-v2")) @@ -2688,18 +2691,18 @@ static int msm_vidc_init_data(struct msm_vidc_core *core, struct device *dev) return rc; } -int msm_vidc_init_platform_kalama(struct msm_vidc_core *core, struct device *dev) +int msm_vidc_init_platform_kalama(struct msm_vidc_core *core) { int rc = 0; - rc = msm_vidc_init_data(core, dev); + rc = msm_vidc_init_data(core); if (rc) return rc; return 0; } -int msm_vidc_deinit_platform_kalama(struct msm_vidc_core *core, struct device *dev) +int msm_vidc_deinit_platform_kalama(struct msm_vidc_core *core) { /* do nothing */ return 0; diff --git a/driver/platform/pineapple/inc/msm_vidc_pineapple.h b/driver/platform/pineapple/inc/msm_vidc_pineapple.h index fbb0c1ca9b..17f16a2b66 100644 --- a/driver/platform/pineapple/inc/msm_vidc_pineapple.h +++ b/driver/platform/pineapple/inc/msm_vidc_pineapple.h @@ -10,15 +10,15 @@ #include "msm_vidc_core.h" #if defined(CONFIG_MSM_VIDC_PINEAPPLE) -int msm_vidc_init_platform_pineapple(struct msm_vidc_core *core, struct device *dev); -int msm_vidc_deinit_platform_pineapple(struct msm_vidc_core *core, struct device *dev); +int msm_vidc_init_platform_pineapple(struct msm_vidc_core *core); +int msm_vidc_deinit_platform_pineapple(struct msm_vidc_core *core); #else -int msm_vidc_init_platform_pineapple(struct msm_vidc_core *core, struct device *dev) +int msm_vidc_init_platform_pineapple(struct msm_vidc_core *core) { return -EINVAL; } -int msm_vidc_deinit_platform_pineapple(struct msm_vidc_core *core, struct device *dev) +int msm_vidc_deinit_platform_pineapple(struct msm_vidc_core *core) { return -EINVAL; } diff --git a/driver/platform/pineapple/src/msm_vidc_pineapple.c b/driver/platform/pineapple/src/msm_vidc_pineapple.c index a20dfdce48..739b2e86f7 100644 --- a/driver/platform/pineapple/src/msm_vidc_pineapple.c +++ b/driver/platform/pineapple/src/msm_vidc_pineapple.c @@ -2664,14 +2664,17 @@ int msm_vidc_pineapple_check_ddr_type(void) return 0; } -static int msm_vidc_init_data(struct msm_vidc_core *core, struct device *dev) +static int msm_vidc_init_data(struct msm_vidc_core *core) { + struct device *dev = NULL; int rc = 0; - if (!core || !core->platform || !dev) { + if (!core || !core->pdev || !core->platform) { d_vpr_e("%s: invalid params\n", __func__); return -EINVAL; } + dev = &core->pdev->dev; + d_vpr_h("%s: initialize pineapple data\n", __func__); core->platform->data = pineapple_data; @@ -2698,18 +2701,18 @@ static int msm_vidc_init_data(struct msm_vidc_core *core, struct device *dev) return rc; } -int msm_vidc_init_platform_pineapple(struct msm_vidc_core *core, struct device *dev) +int msm_vidc_init_platform_pineapple(struct msm_vidc_core *core) { int rc = 0; - rc = msm_vidc_init_data(core, dev); + rc = msm_vidc_init_data(core); if (rc) return rc; return 0; } -int msm_vidc_deinit_platform_pineapple(struct msm_vidc_core *core, struct device *dev) +int msm_vidc_deinit_platform_pineapple(struct msm_vidc_core *core) { /* do nothing */ return 0; diff --git a/driver/platform/pineapple/src/pineapple.c b/driver/platform/pineapple/src/pineapple.c index ce9397e38e..3448cde2a6 100644 --- a/driver/platform/pineapple/src/pineapple.c +++ b/driver/platform/pineapple/src/pineapple.c @@ -1243,82 +1243,64 @@ static struct msm_platform_inst_cap_dependency instance_cap_dependency_data_pine * adjust, set} */ - {PIX_FMTS, ENC, H264, - {0}, - {0}}, - {PIX_FMTS, ENC, HEVC, - {0}, {PROFILE, MIN_FRAME_QP, MAX_FRAME_QP, I_FRAME_QP, P_FRAME_QP, B_FRAME_QP, MIN_QUALITY, BLUR_TYPES, LTR_COUNT}}, {PIX_FMTS, DEC, HEVC, - {0}, {PROFILE}}, {FRAME_RATE, ENC, CODECS_ALL, - {0}, {0}, NULL, msm_vidc_set_q16}, {HFLIP, ENC, CODECS_ALL, - {0}, {0}, NULL, msm_vidc_set_flip}, {VFLIP, ENC, CODECS_ALL, - {0}, {0}, NULL, msm_vidc_set_flip}, {ROTATION, ENC, CODECS_ALL, - {0}, {0}, NULL, msm_vidc_set_rotation}, {SUPER_FRAME, ENC, H264|HEVC, - {0}, {INPUT_BUF_HOST_MAX_COUNT, OUTPUT_BUF_HOST_MAX_COUNT}, NULL, NULL}, {HEADER_MODE, ENC, CODECS_ALL, - {0}, {0}, NULL, msm_vidc_set_header_mode}, {WITHOUT_STARTCODE, ENC, CODECS_ALL, - {0}, {0}, NULL, msm_vidc_set_nal_length}, {REQUEST_I_FRAME, ENC, H264|HEVC, - {0}, {0}, NULL, msm_vidc_set_req_sync_frame}, {BIT_RATE, ENC, H264, - {ENH_LAYER_COUNT, BITRATE_MODE, ENTROPY_MODE, - ALL_INTRA, LOWLATENCY_MODE}, {PEAK_BITRATE, L0_BR}, msm_vidc_adjust_bitrate, msm_vidc_set_bitrate}, {BIT_RATE, ENC, HEVC, - {ENH_LAYER_COUNT, BITRATE_MODE, ALL_INTRA, LOWLATENCY_MODE}, {PEAK_BITRATE, L0_BR}, msm_vidc_adjust_bitrate, msm_vidc_set_bitrate}, {BITRATE_MODE, ENC, H264, - {0}, {LTR_COUNT, I_FRAME_QP, P_FRAME_QP, B_FRAME_QP, ENH_LAYER_COUNT, BIT_RATE, MIN_QUALITY, VBV_DELAY, @@ -1328,7 +1310,6 @@ static struct msm_platform_inst_cap_dependency instance_cap_dependency_data_pine msm_vidc_set_u32_enum}, {BITRATE_MODE, ENC, HEVC, - {0}, {LTR_COUNT, I_FRAME_QP, P_FRAME_QP, B_FRAME_QP, CONSTANT_QUALITY, ENH_LAYER_COUNT, BIT_RATE, MIN_QUALITY, VBV_DELAY, @@ -1338,387 +1319,322 @@ static struct msm_platform_inst_cap_dependency instance_cap_dependency_data_pine msm_vidc_set_u32_enum}, {CONSTANT_QUALITY, ENC, HEVC, - {BITRATE_MODE}, {0}, NULL, msm_vidc_set_constant_quality}, {GOP_SIZE, ENC, CODECS_ALL, - {ENH_LAYER_COUNT}, {ALL_INTRA}, msm_vidc_adjust_gop_size, msm_vidc_set_gop_size}, {B_FRAME, ENC, H264|HEVC, - {ENH_LAYER_COUNT}, {ALL_INTRA}, msm_vidc_adjust_b_frame, msm_vidc_set_u32}, {BLUR_TYPES, ENC, H264|HEVC, - {PIX_FMTS, BITRATE_MODE, MIN_QUALITY}, {0}, msm_vidc_adjust_blur_type, msm_vidc_set_u32_enum}, {LOWLATENCY_MODE, ENC, H264 | HEVC, - {BITRATE_MODE, DELIVERY_MODE}, {STAGE, BIT_RATE}, msm_vidc_adjust_enc_lowlatency_mode, NULL}, {LOWLATENCY_MODE, DEC, H264|HEVC|VP9, - {0}, {STAGE}, msm_vidc_adjust_dec_lowlatency_mode, NULL}, {LTR_COUNT, ENC, H264|HEVC, - {BITRATE_MODE, ALL_INTRA}, {0}, msm_vidc_adjust_ltr_count, msm_vidc_set_u32}, {USE_LTR, ENC, H264|HEVC, - {0}, {0}, msm_vidc_adjust_use_ltr, msm_vidc_set_use_and_mark_ltr}, {MARK_LTR, ENC, H264|HEVC, - {0}, {0}, msm_vidc_adjust_mark_ltr, msm_vidc_set_use_and_mark_ltr}, {AU_DELIMITER, ENC, H264|HEVC, - {0}, {0}, NULL, msm_vidc_set_u32}, {CONTENT_ADAPTIVE_CODING, ENC, H264|HEVC, - {BITRATE_MODE, LAYER_ENABLE, LAYER_TYPE}, {REQUEST_PREPROCESS}, msm_vidc_adjust_brs, msm_vidc_set_vbr_related_properties}, {REQUEST_PREPROCESS, ENC, H264|HEVC, - {CONTENT_ADAPTIVE_CODING}, {0}, msm_vidc_adjust_preprocess, msm_vidc_set_preprocess}, {MIN_QUALITY, ENC, H264, - {BITRATE_MODE, ENH_LAYER_COUNT}, {BLUR_TYPES}, msm_vidc_adjust_min_quality, msm_vidc_set_u32}, {MIN_QUALITY, ENC, HEVC, - {BITRATE_MODE, PIX_FMTS, ENH_LAYER_COUNT}, {BLUR_TYPES}, msm_vidc_adjust_min_quality, msm_vidc_set_u32}, {VBV_DELAY, ENC, H264|HEVC, - {BITRATE_MODE}, {0}, NULL, msm_vidc_set_cbr_related_properties}, {PEAK_BITRATE, ENC, H264|HEVC, - {BITRATE_MODE, BIT_RATE}, {0}, msm_vidc_adjust_peak_bitrate, msm_vidc_set_cbr_related_properties}, {MIN_FRAME_QP, ENC, H264, - {0}, {0}, NULL, msm_vidc_set_min_qp}, {MIN_FRAME_QP, ENC, HEVC, - {PIX_FMTS}, {0}, msm_vidc_adjust_hevc_min_qp, msm_vidc_set_min_qp}, {MAX_FRAME_QP, ENC, H264, - {0}, {0}, NULL, msm_vidc_set_max_qp}, {MAX_FRAME_QP, ENC, HEVC, - {PIX_FMTS}, {0}, msm_vidc_adjust_hevc_max_qp, msm_vidc_set_max_qp}, {I_FRAME_QP, ENC, HEVC, - {PIX_FMTS, BITRATE_MODE}, {0}, msm_vidc_adjust_hevc_i_frame_qp, msm_vidc_set_frame_qp}, {I_FRAME_QP, ENC, H264, - {BITRATE_MODE}, {0}, NULL, msm_vidc_set_frame_qp}, {P_FRAME_QP, ENC, HEVC, - {PIX_FMTS, BITRATE_MODE}, {0}, msm_vidc_adjust_hevc_p_frame_qp, msm_vidc_set_frame_qp}, {P_FRAME_QP, ENC, H264, - {BITRATE_MODE}, {0}, NULL, msm_vidc_set_frame_qp}, {B_FRAME_QP, ENC, HEVC, - {PIX_FMTS, BITRATE_MODE}, {0}, msm_vidc_adjust_hevc_b_frame_qp, msm_vidc_set_frame_qp}, {B_FRAME_QP, ENC, H264, - {BITRATE_MODE}, {0}, NULL, msm_vidc_set_frame_qp}, {LAYER_TYPE, ENC, H264|HEVC, - {0}, {CONTENT_ADAPTIVE_CODING, LTR_COUNT}}, {LAYER_ENABLE, ENC, H264|HEVC, - {0}, {CONTENT_ADAPTIVE_CODING}}, {ENH_LAYER_COUNT, ENC, H264|HEVC, - {BITRATE_MODE}, {GOP_SIZE, B_FRAME, BIT_RATE, MIN_QUALITY, LTR_COUNT}, msm_vidc_adjust_layer_count, msm_vidc_set_layer_count_and_type}, {L0_BR, ENC, H264|HEVC, - {BIT_RATE}, {L1_BR}, msm_vidc_adjust_layer_bitrate, msm_vidc_set_layer_bitrate}, {L1_BR, ENC, H264|HEVC, - {L0_BR}, {L2_BR}, msm_vidc_adjust_layer_bitrate, msm_vidc_set_layer_bitrate}, {L2_BR, ENC, H264|HEVC, - {L1_BR}, {L3_BR}, msm_vidc_adjust_layer_bitrate, msm_vidc_set_layer_bitrate}, {L3_BR, ENC, H264|HEVC, - {L2_BR}, {L4_BR}, msm_vidc_adjust_layer_bitrate, msm_vidc_set_layer_bitrate}, {L4_BR, ENC, H264|HEVC, - {L3_BR}, {L5_BR}, msm_vidc_adjust_layer_bitrate, msm_vidc_set_layer_bitrate}, {L5_BR, ENC, H264|HEVC, - {L4_BR}, {0}, msm_vidc_adjust_layer_bitrate, msm_vidc_set_layer_bitrate}, {ENTROPY_MODE, ENC, H264, - {PROFILE}, {BIT_RATE}, msm_vidc_adjust_entropy_mode, msm_vidc_set_u32}, {PROFILE, ENC, H264, - {0}, {ENTROPY_MODE, TRANSFORM_8X8}, NULL, msm_vidc_set_u32_enum}, {PROFILE, DEC, H264, - {0}, {ENTROPY_MODE}, NULL, msm_vidc_set_u32_enum}, {PROFILE, ENC|DEC, HEVC, - {PIX_FMTS}, {0}, msm_vidc_adjust_profile, msm_vidc_set_u32_enum}, {PROFILE, DEC, VP9, - {0}, {0}, NULL, msm_vidc_set_u32_enum}, {LEVEL, DEC, CODECS_ALL, - {0}, {0}, NULL, msm_vidc_set_u32_enum}, {LEVEL, ENC, CODECS_ALL, - {0}, {0}, NULL, msm_vidc_set_level}, {HEVC_TIER, ENC|DEC, HEVC, - {0}, {0}, NULL, msm_vidc_set_u32_enum}, {LF_MODE, ENC, CODECS_ALL, - {0}, {0}, NULL, msm_vidc_set_deblock_mode}, {SLICE_MODE, ENC, H264|HEVC, - {BITRATE_MODE, ALL_INTRA}, {STAGE, DELIVERY_MODE}, msm_vidc_adjust_slice_count, msm_vidc_set_slice_count}, {TRANSFORM_8X8, ENC, H264, - {PROFILE}, {0}, msm_vidc_adjust_transform_8x8, msm_vidc_set_u32}, {CHROMA_QP_INDEX_OFFSET, ENC, HEVC, - {0}, {0}, msm_vidc_adjust_chroma_qp_index_offset, msm_vidc_set_chroma_qp_index_offset}, {DISPLAY_DELAY_ENABLE, DEC, H264|HEVC|VP9, - {0}, {OUTPUT_ORDER}, NULL, NULL}, {DISPLAY_DELAY, DEC, H264|HEVC|VP9, - {0}, {OUTPUT_ORDER}, NULL, NULL}, {OUTPUT_ORDER, DEC, H264|HEVC|VP9, - {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, - {0}, {0}, msm_vidc_adjust_input_buf_host_max_count, msm_vidc_set_u32}, {INPUT_BUF_HOST_MAX_COUNT, ENC, H264|HEVC, - {SUPER_FRAME}, {0}, msm_vidc_adjust_input_buf_host_max_count, msm_vidc_set_u32}, {OUTPUT_BUF_HOST_MAX_COUNT, ENC|DEC, CODECS_ALL, - {0}, {0}, msm_vidc_adjust_output_buf_host_max_count, msm_vidc_set_u32}, {OUTPUT_BUF_HOST_MAX_COUNT, ENC, H264|HEVC, - {SUPER_FRAME, DELIVERY_MODE}, {0}, msm_vidc_adjust_output_buf_host_max_count, msm_vidc_set_u32}, {CONCEAL_COLOR_8BIT, DEC, CODECS_ALL, - {0}, {0}, NULL, msm_vidc_set_u32_packed}, {CONCEAL_COLOR_10BIT, DEC, CODECS_ALL, - {0}, {0}, NULL, msm_vidc_set_u32_packed}, {STAGE, ENC | DEC, CODECS_ALL, - {0}, {0}, NULL, msm_vidc_set_stage}, {STAGE, ENC, H264|HEVC, - {LOWLATENCY_MODE, SLICE_MODE}, {0}, NULL, msm_vidc_set_stage}, {STAGE, DEC, H264|HEVC|VP9, - {LOWLATENCY_MODE}, {0}, NULL, msm_vidc_set_stage}, {PIPE, DEC|ENC, CODECS_ALL, - {0}, {0}, NULL, msm_vidc_set_pipe}, {THUMBNAIL_MODE, DEC, CODECS_ALL, - {0}, {OUTPUT_ORDER}, NULL, msm_vidc_set_u32}, {RAP_FRAME, DEC, CODECS_ALL, - {0}, {0}, NULL, msm_vidc_set_u32}, {FIRMWARE_PRIORITY_OFFSET, DEC | ENC, CODECS_ALL, - {0}, {0}, NULL, NULL}, {DPB_LIST, DEC, CODECS_ALL, - {0}, {0}, NULL, NULL}, {ALL_INTRA, ENC, H264|HEVC, - {GOP_SIZE, B_FRAME}, {LTR_COUNT, SLICE_MODE, BIT_RATE}, msm_vidc_adjust_all_intra, NULL}, @@ -1790,7 +1706,7 @@ static int msm_vidc_init_data(struct msm_vidc_core *core) return rc; } -int msm_vidc_init_platform_pineapple(struct msm_vidc_core *core, struct device *dev) +int msm_vidc_init_platform_pineapple(struct msm_vidc_core *core) { int rc = 0; @@ -1801,7 +1717,7 @@ int msm_vidc_init_platform_pineapple(struct msm_vidc_core *core, struct device * return 0; } -int msm_vidc_deinit_platform_pineapple(struct msm_vidc_core *core, struct device *dev) +int msm_vidc_deinit_platform_pineapple(struct msm_vidc_core *core) { /* do nothing */ return 0; diff --git a/driver/platform/waipio/inc/msm_vidc_waipio.h b/driver/platform/waipio/inc/msm_vidc_waipio.h index d230587d93..1eebe1ede8 100644 --- a/driver/platform/waipio/inc/msm_vidc_waipio.h +++ b/driver/platform/waipio/inc/msm_vidc_waipio.h @@ -8,15 +8,13 @@ #define _MSM_VIDC_WAIPIO_H_ #include "msm_vidc_core.h" -#if defined(CONFIG_MSM_VIDC_IRIS2) #include "msm_vidc_iris2.h" -#endif #if defined(CONFIG_MSM_VIDC_WAIPIO) struct context_bank_info *msm_vidc_context_bank(struct msm_vidc_core *core, enum msm_vidc_buffer_region region); -int msm_vidc_init_platform_waipio(struct msm_vidc_core *core, struct device *dev); -int msm_vidc_deinit_platform_waipio(struct msm_vidc_core *core, struct device *dev); +int msm_vidc_init_platform_waipio(struct msm_vidc_core *core); +int msm_vidc_deinit_platform_waipio(struct msm_vidc_core *core); #else struct context_bank_info *msm_vidc_context_bank(struct msm_vidc_core *core, enum msm_vidc_buffer_region region) @@ -24,12 +22,12 @@ struct context_bank_info *msm_vidc_context_bank(struct msm_vidc_core *core, return NULL; } -int msm_vidc_init_platform_waipio(struct msm_vidc_core *core, struct device *dev) +int msm_vidc_init_platform_waipio(struct msm_vidc_core *core) { return -EINVAL; } -int msm_vidc_deinit_platform_waipio(struct msm_vidc_core *core, struct device *dev) +int msm_vidc_deinit_platform_waipio(struct msm_vidc_core *core) { return -EINVAL; } diff --git a/driver/platform/waipio/src/msm_vidc_waipio.c b/driver/platform/waipio/src/msm_vidc_waipio.c deleted file mode 100644 index 7a0d473836..0000000000 --- a/driver/platform/waipio/src/msm_vidc_waipio.c +++ /dev/null @@ -1,2172 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0-only -/* - * Copyright (c) 2020-2021, The Linux Foundation. All rights reserved. - * Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved. - */ - -#include -#include - -#include -#include - -#include -#include "msm_vidc_waipio.h" -#include "msm_vidc_platform.h" -#include "msm_vidc_debug.h" -#include "msm_vidc_control_ext.h" -#include "msm_vidc_internal.h" -#include "hfi_property.h" -#include "hfi_command.h" - -#define DEFAULT_VIDEO_CONCEAL_COLOR_BLACK 0x8020010 -#define MAX_LTR_FRAME_COUNT 2 -#define MAX_BASE_LAYER_PRIORITY_ID 63 -#define MAX_BITRATE 220000000 -#define DEFAULT_BITRATE 20000000 -#define MINIMUM_FPS 1 -#define MAXIMUM_FPS 480 -#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_MB_SIZE \ - (((4096 + 15) >> 4) * ((2304 + 15) >> 4)) - -#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) -#define MAXIMUM_OVERRIDE_VP9_FPS 200 - -static struct msm_platform_core_capability core_data_waipio[] = { - /* {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, 16}, - {MAX_NUM_4K_SESSIONS, 8}, - {MAX_NUM_8K_SESSIONS, 2}, - {MAX_SECURE_SESSION_COUNT, 3}, - {MAX_RT_MBPF, 174080}, /* (8192x4352)/256 + (4096x2176)/256*/ - {MAX_MBPF, 278528}, /* ((8192x4352)/256) * 2 */ - {MAX_MBPS, 7833600}, /* max_load - * 7680x4320@60fps or 3840x2176@240fps - * which is greater than 4096x2176@120fps, - * 8192x4320@48fps - */ - {MAX_IMAGE_MBPF, 1048576}, /* (16384x16384)/256 */ - {MAX_MBPF_HQ, 8160}, /* ((1920x1088)/256) */ - {MAX_MBPS_HQ, 489600}, /* ((1920x1088)/256)@60fps */ - {MAX_MBPF_B_FRAME, 32640}, /* 3840x2176/256 */ - {MAX_MBPS_B_FRAME, 1958400}, /* 3840x2176/256 MBs@60fps */ - {MAX_MBPS_ALL_INTRA, 1044480}, /* 4096x2176/256 MBs@30fps */ - {MAX_ENH_LAYER_COUNT, 5}, - {NUM_VPP_PIPE, 4}, - {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)*/ - {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}, - {DEVICE_CAPS, V4L2_CAP_VIDEO_M2M_MPLANE | V4L2_CAP_META_CAPTURE | - V4L2_CAP_STREAMING}, - {SUPPORTS_REQUESTS, 1}, -}; - -static struct msm_platform_inst_capability instance_cap_data_waipio[] = { - /* {cap, domain, codec, - * min, max, step_or_mask, value, - * v4l2_id, - * hfi_id, - * flags} - */ - - {FRAME_WIDTH, DEC, CODECS_ALL, 96, 8192, 1, 1920}, - - {FRAME_WIDTH, DEC, VP9, 96, 4096, 1, 1920}, - - {FRAME_WIDTH, ENC, CODECS_ALL, 128, 8192, 1, 1920}, - - {FRAME_WIDTH, ENC, HEVC, 96, 8192, 1, 1920}, - - {FRAME_WIDTH, ENC, HEIC, 128, 16384, 1, 16384}, - - {LOSSLESS_FRAME_WIDTH, ENC, H264, 128, 4096, 1, 1920}, - - {LOSSLESS_FRAME_WIDTH, ENC, HEVC, 96, 4096, 1, 1920}, - - {SECURE_FRAME_WIDTH, DEC, H264|HEVC|VP9, 96, 4096, 1, 1920}, - - {SECURE_FRAME_WIDTH, ENC, H264, 128, 4096, 1, 1920}, - - {SECURE_FRAME_WIDTH, ENC, HEVC, 96, 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, 8192, 1, 1080}, - - {FRAME_HEIGHT, ENC, HEVC, 96, 8192, 1, 1080}, - - {FRAME_HEIGHT, ENC, HEIC, 128, 16384, 1, 16384}, - - {LOSSLESS_FRAME_HEIGHT, ENC, H264, 128, 4096, 1, 1080}, - - {LOSSLESS_FRAME_HEIGHT, ENC, HEVC, 96, 4096, 1, 1080}, - - {SECURE_FRAME_HEIGHT, DEC, H264|HEVC|VP9, 96, 4096, 1, 1080}, - - {SECURE_FRAME_HEIGHT, ENC, H264, 128, 4096, 1, 1080}, - - {SECURE_FRAME_HEIGHT, ENC, HEVC, 96, 4096, 1, 1080}, - - {PIX_FMTS, ENC|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, ENC|DEC, HEVC|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}, - - {PIX_FMTS, ENC, HEIC, - MSM_VIDC_FMT_NV12, - MSM_VIDC_FMT_P010, - MSM_VIDC_FMT_NV12 | MSM_VIDC_FMT_NV21 | MSM_VIDC_FMT_P010, - MSM_VIDC_FMT_NV12}, - - {PIX_FMTS, DEC, 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}, - - {MIN_BUFFERS_INPUT, ENC|DEC, CODECS_ALL, 0, 64, 1, 4, - V4L2_CID_MIN_BUFFERS_FOR_OUTPUT}, - - {MIN_BUFFERS_INPUT, ENC|DEC, HEIC, 0, 64, 1, 1, - 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}, - - /* (8192 * 4320) / 256 */ - {MBPF, ENC, CODECS_ALL, 64, 138240, 1, 138240}, - - {MBPF, ENC, HEVC, 36, 138240, 1, 138240}, - - /* ((16384x16384)/256) */ - {MBPF, ENC, HEIC, 36, 1048576, 1, 1048576}, - - {MBPF, DEC, CODECS_ALL, 36, 138240, 1, 138240}, - - /* (4096 * 2304) / 256 */ - {MBPF, DEC, VP9, 36, 36864, 1, 36864}, - - /* ((8192x8192)/256) */ - {MBPF, DEC, HEIC, 64, 262144, 1, 262144 }, - - /* (4096 * 2304) / 256 */ - {LOSSLESS_MBPF, ENC, H264|HEVC, 64, 36864, 1, 36864}, - - /* Batch Mode Decode */ - /* TODO: update with new values based on updated voltage corner */ - {BATCH_MBPF, DEC, H264|HEVC|VP9, 64, 34816, 1, 34816}, - - /* (4096 * 2304) / 256 */ - {BATCH_FPS, DEC, H264|HEVC|VP9, 1, 120, 1, 120}, - - {SECURE_MBPF, ENC|DEC, H264|HEVC|VP9, 64, 36864, 1, 36864}, - - {SECURE_MBPF, ENC, HEVC, 36, 36864, 1, 36864}, - - {FRAME_RATE, ENC, CODECS_ALL, - (MINIMUM_FPS << 16), (MAXIMUM_FPS << 16), - 1, (DEFAULT_FPS << 16), - 0, - HFI_PROP_FRAME_RATE, - CAP_FLAG_OUTPUT_PORT}, - - {FRAME_RATE, ENC, HEIC, - (MINIMUM_FPS << 16), (MAXIMUM_FPS << 16), - 1, (MINIMUM_FPS << 16), - 0, - HFI_PROP_FRAME_RATE, - CAP_FLAG_OUTPUT_PORT}, - - {FRAME_RATE, DEC, CODECS_ALL, - (MINIMUM_FPS << 16), (MAXIMUM_FPS << 16), - 1, (DEFAULT_FPS << 16), - V4L2_CID_MPEG_VIDC_FRAME_RATE, - 0, - CAP_FLAG_OUTPUT_PORT | - CAP_FLAG_INPUT_PORT | CAP_FLAG_DYNAMIC_ALLOWED}, - - {FRAME_RATE, DEC, VP9, - (MINIMUM_FPS << 16), (MAXIMUM_OVERRIDE_VP9_FPS << 16), - 1, (DEFAULT_FPS << 16), - V4L2_CID_MPEG_VIDC_FRAME_RATE, - 0, - CAP_FLAG_OUTPUT_PORT | - CAP_FLAG_INPUT_PORT | CAP_FLAG_DYNAMIC_ALLOWED}, - - {OPERATING_RATE, ENC, CODECS_ALL, - (MINIMUM_FPS << 16), (MAXIMUM_FPS << 16), - 1, (DEFAULT_FPS << 16)}, - - {OPERATING_RATE, DEC, CODECS_ALL, - (MINIMUM_FPS << 16), (MAXIMUM_FPS << 16), - 1, (DEFAULT_FPS << 16), - V4L2_CID_MPEG_VIDC_OPERATING_RATE, - 0, - CAP_FLAG_OUTPUT_PORT | - CAP_FLAG_INPUT_PORT | CAP_FLAG_DYNAMIC_ALLOWED}, - - {OPERATING_RATE, DEC, VP9, - (MINIMUM_FPS << 16), (MAXIMUM_OVERRIDE_VP9_FPS << 16), - 1, (DEFAULT_FPS << 16), - V4L2_CID_MPEG_VIDC_OPERATING_RATE, - 0, - CAP_FLAG_OUTPUT_PORT | - CAP_FLAG_INPUT_PORT | CAP_FLAG_DYNAMIC_ALLOWED}, - - {INPUT_RATE, ENC|DEC, CODECS_ALL, - (MINIMUM_FPS << 16), INT_MAX, - 1, (DEFAULT_FPS << 16)}, - - {TIMESTAMP_RATE, ENC|DEC, CODECS_ALL, - (MINIMUM_FPS << 16), INT_MAX, - 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}, - - {META_OUTBUF_FENCE, DEC, H264|HEVC|VP9, - V4L2_MPEG_VIDC_META_DISABLE, - V4L2_MPEG_VIDC_META_DISABLE, - 0, V4L2_MPEG_VIDC_META_DISABLE, - 0, - 0, - CAP_FLAG_BITMASK | CAP_FLAG_META}, - - {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}, - - {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}, - - {ROTATION, ENC, CODECS_ALL, - 0, 270, 90, 0, - V4L2_CID_ROTATE, - HFI_PROP_ROTATION, - CAP_FLAG_OUTPUT_PORT}, - - {SUPER_FRAME, ENC, H264|HEVC, - 0, 32, 1, 0, - V4L2_CID_MPEG_VIDC_SUPERFRAME, 0, - CAP_FLAG_NONE}, - - {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}, - - {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}, - - {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}, - - {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}, - - /* 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}, - - {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}, - - {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}, - - {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}, - - {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}, - - {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}, - - {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}, - - {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}, - - {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}, - - {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}, - - {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}, - - {BLUR_RESOLUTION, ENC, H264|HEVC, - 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}, - - {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}, - - {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}, - - {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}, - - {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}, - - {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}, - - {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_TYPE, ENC, H264|HEVC, - V4L2_MPEG_VIDEO_VIDC_INTRA_REFRESH_RANDOM, - V4L2_MPEG_VIDEO_VIDC_INTRA_REFRESH_RANDOM, - BIT(V4L2_MPEG_VIDEO_VIDC_INTRA_REFRESH_RANDOM), - V4L2_MPEG_VIDEO_VIDC_INTRA_REFRESH_RANDOM, - V4L2_CID_MPEG_VIDEO_VIDC_INTRA_REFRESH_TYPE, - 0, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU}, - - {IR_PERIOD, ENC, H264|HEVC, - 0, INT_MAX, 1, 0, - V4L2_CID_MPEG_VIDC_INTRA_REFRESH_PERIOD, - 0, - CAP_FLAG_INPUT_PORT | CAP_FLAG_OUTPUT_PORT | - CAP_FLAG_DYNAMIC_ALLOWED}, - - {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}, - - {TIME_DELTA_BASED_RC, ENC, H264|HEVC, - 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}, - - {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}, - - {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}, - - {REQUEST_PREPROCESS, ENC, H264|HEVC, - MSM_VIDC_PREPROCESS_NONE, - MSM_VIDC_PREPROCESS_NONE, - BIT(MSM_VIDC_PREPROCESS_NONE), - MSM_VIDC_PREPROCESS_NONE, - 0, HFI_PROP_REQUEST_PREPROCESS, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU}, - - {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}, - - {MIN_QUALITY, ENC, H264|HEVC, - 0, MAX_SUPPORTED_MIN_QUALITY, 70, MAX_SUPPORTED_MIN_QUALITY, - 0, - HFI_PROP_MAINTAIN_MIN_QUALITY, - CAP_FLAG_OUTPUT_PORT}, - - {VBV_DELAY, ENC, H264|HEVC, - 200, 300, 100, 300, - V4L2_CID_MPEG_VIDEO_VBV_DELAY, - HFI_PROP_VBV_DELAY, - CAP_FLAG_OUTPUT_PORT}, - - {PEAK_BITRATE, ENC, H264|HEVC, - /* default peak bitrate is 10% larger than avg 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}, - - {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}, - - {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}, - - {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}, - - {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}, - - {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}, - - {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}, - - {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}, - - {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}, - - {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}, - - {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}, - - {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}, - - {LAYER_ENABLE, ENC, HEVC, - V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, - 1, V4L2_MPEG_MSM_VIDC_DISABLE, - 0, - 0, - 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}, - - {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}, - - {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}, - - {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}, - - {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}, - - {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}, - - {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}, - - {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}, - - {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}, - {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}, - - {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}, - - {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}, - - {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}, - - {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}, - - {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}, - - {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}, - - {PROFILE, ENC|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}, - - {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}, - - {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}, - - {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_5_0, - V4L2_CID_MPEG_VIDEO_H264_LEVEL, - HFI_PROP_LEVEL, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU}, - - {LEVEL, ENC, 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_5, - V4L2_CID_MPEG_VIDEO_HEVC_LEVEL, - HFI_PROP_LEVEL, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU}, - - {LEVEL, DEC, H264, - V4L2_MPEG_VIDEO_H264_LEVEL_1_0, - V4L2_MPEG_VIDEO_H264_LEVEL_6_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) | - BIT(V4L2_MPEG_VIDEO_H264_LEVEL_6_0) | - BIT(V4L2_MPEG_VIDEO_H264_LEVEL_6_1), - V4L2_MPEG_VIDEO_H264_LEVEL_6_1, - V4L2_CID_MPEG_VIDEO_H264_LEVEL, - HFI_PROP_LEVEL, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU}, - - {LEVEL, DEC, HEVC|HEIC, - V4L2_MPEG_VIDEO_HEVC_LEVEL_1, - V4L2_MPEG_VIDEO_HEVC_LEVEL_6_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) | - BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_6) | - BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_6_1), - V4L2_MPEG_VIDEO_HEVC_LEVEL_6_1, - V4L2_CID_MPEG_VIDEO_HEVC_LEVEL, - HFI_PROP_LEVEL, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU}, - - {LEVEL, DEC, VP9, - V4L2_MPEG_VIDEO_VP9_LEVEL_1_0, - V4L2_MPEG_VIDEO_VP9_LEVEL_6_0, - 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) | - BIT(V4L2_MPEG_VIDEO_VP9_LEVEL_6_0), - V4L2_MPEG_VIDEO_VP9_LEVEL_6_0, - V4L2_CID_MPEG_VIDEO_VP9_LEVEL, - HFI_PROP_LEVEL, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU}, - - {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}, - - {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}, - - {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}, - - {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}, - - {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, - 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}, - - {SLICE_MODE, ENC, HEIC, - V4L2_MPEG_VIDEO_MULTI_SLICE_MODE_SINGLE, - V4L2_MPEG_VIDEO_MULTI_SLICE_MODE_SINGLE, - BIT(V4L2_MPEG_VIDEO_MULTI_SLICE_MODE_SINGLE), - V4L2_MPEG_VIDEO_MULTI_SLICE_MODE_SINGLE, - V4L2_CID_MPEG_VIDEO_MULTI_SLICE_MODE, - 0, - CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU}, - - {SLICE_MAX_BYTES, ENC, H264|HEVC, - 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, - 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}, - - {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}, - - {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}, - - {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}, - - {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}, - - {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}, - - {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}, - - {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}, - - {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}, - - {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}, - - {STAGE, DEC|ENC, CODECS_ALL, - MSM_VIDC_STAGE_1, - MSM_VIDC_STAGE_2, 1, - MSM_VIDC_STAGE_2, - 0, - HFI_PROP_STAGE}, - - {PIPE, DEC|ENC, CODECS_ALL, - MSM_VIDC_PIPE_1, - MSM_VIDC_PIPE_4, 1, - MSM_VIDC_PIPE_4, - 0, - HFI_PROP_PIPE}, - - {POC, DEC, H264, 0, 2, 1, 1, - 0, - HFI_PROP_PIC_ORDER_CNT_TYPE}, - - {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}, - - {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}, - - {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, 1 + NRT_PRIORITY_OFFSET, 1, 1 + NRT_PRIORITY_OFFSET, - V4L2_CID_MPEG_VIDC_PRIORITY, - HFI_PROP_SESSION_PRIORITY, - CAP_FLAG_DYNAMIC_ALLOWED}, - - {FIRMWARE_PRIORITY_OFFSET, DEC | ENC, CODECS_ALL, - 1, 1, 1, 1}, - - {CRITICAL_PRIORITY, ENC, CODECS_ALL, - 0, 1, 1, 0, - V4L2_CID_MPEG_VIDC_CRITICAL_PRIORITY}, - - {RESERVE_DURATION, ENC, CODECS_ALL, - 0, INT_MAX, 1, 0, - V4L2_CID_MPEG_VIDC_RESERVE_DURATION, - HFI_CMD_RESERVE, - CAP_FLAG_DYNAMIC_ALLOWED}, - - {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}, - - {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}, - - {META_LTR_MARK_USE, ENC, H264|HEVC, - V4L2_MPEG_VIDC_META_DISABLE, - V4L2_MPEG_VIDC_META_ENABLE | V4L2_MPEG_VIDC_META_RX_OUTPUT, - 0, V4L2_MPEG_VIDC_META_DISABLE, - V4L2_CID_MPEG_VIDC_METADATA_LTR_MARK_USE_DETAILS, - HFI_PROP_LTR_MARK_USE_DETAILS, - CAP_FLAG_BITMASK | CAP_FLAG_META}, - - {META_SEQ_HDR_NAL, ENC, CODECS_ALL, - V4L2_MPEG_VIDC_META_DISABLE, - V4L2_MPEG_VIDC_META_ENABLE | V4L2_MPEG_VIDC_META_RX_OUTPUT, - 0, V4L2_MPEG_VIDC_META_DISABLE, - V4L2_CID_MPEG_VIDC_METADATA_SEQ_HEADER_NAL, - HFI_PROP_METADATA_SEQ_HEADER_NAL, - CAP_FLAG_BITMASK | CAP_FLAG_META}, - - {META_DPB_MISR, DEC, CODECS_ALL, - V4L2_MPEG_VIDC_META_DISABLE, - V4L2_MPEG_VIDC_META_ENABLE | V4L2_MPEG_VIDC_META_RX_OUTPUT, - 0, V4L2_MPEG_VIDC_META_DISABLE, - V4L2_CID_MPEG_VIDC_METADATA_DPB_LUMA_CHROMA_MISR, - HFI_PROP_DPB_LUMA_CHROMA_MISR, - CAP_FLAG_BITMASK | CAP_FLAG_META}, - - {META_OPB_MISR, DEC, CODECS_ALL, - V4L2_MPEG_VIDC_META_DISABLE, - V4L2_MPEG_VIDC_META_ENABLE | V4L2_MPEG_VIDC_META_RX_OUTPUT, - 0, V4L2_MPEG_VIDC_META_DISABLE, - V4L2_CID_MPEG_VIDC_METADATA_OPB_LUMA_CHROMA_MISR, - HFI_PROP_OPB_LUMA_CHROMA_MISR, - CAP_FLAG_BITMASK | CAP_FLAG_META}, - - {META_INTERLACE, DEC, H264, - V4L2_MPEG_VIDC_META_DISABLE, - V4L2_MPEG_VIDC_META_ENABLE | V4L2_MPEG_VIDC_META_RX_OUTPUT, - 0, V4L2_MPEG_VIDC_META_DISABLE, - V4L2_CID_MPEG_VIDC_METADATA_INTERLACE, - HFI_PROP_INTERLACE_INFO, - CAP_FLAG_BITMASK | CAP_FLAG_META}, - - {META_TIMESTAMP, DEC | ENC, CODECS_ALL, - V4L2_MPEG_VIDC_META_DISABLE, - V4L2_MPEG_VIDC_META_ENABLE | V4L2_MPEG_VIDC_META_RX_OUTPUT, - 0, V4L2_MPEG_VIDC_META_DISABLE, - V4L2_CID_MPEG_VIDC_METADATA_TIMESTAMP, - HFI_PROP_TIMESTAMP, - CAP_FLAG_BITMASK | CAP_FLAG_META}, - - {META_CONCEALED_MB_CNT, DEC, CODECS_ALL, - V4L2_MPEG_VIDC_META_DISABLE, - V4L2_MPEG_VIDC_META_ENABLE | V4L2_MPEG_VIDC_META_RX_OUTPUT, - 0, V4L2_MPEG_VIDC_META_DISABLE, - V4L2_CID_MPEG_VIDC_METADATA_CONCEALED_MB_COUNT, - HFI_PROP_CONEALED_MB_COUNT, - CAP_FLAG_BITMASK | CAP_FLAG_META}, - - {META_HIST_INFO, DEC, CODECS_ALL, - V4L2_MPEG_VIDC_META_DISABLE, - V4L2_MPEG_VIDC_META_ENABLE | V4L2_MPEG_VIDC_META_RX_OUTPUT, - 0, V4L2_MPEG_VIDC_META_DISABLE, - V4L2_CID_MPEG_VIDC_METADATA_HISTOGRAM_INFO, - HFI_PROP_HISTOGRAM_INFO, - CAP_FLAG_BITMASK | CAP_FLAG_META}, - - {META_SEI_MASTERING_DISP, ENC, HEVC|HEIC, - V4L2_MPEG_VIDC_META_DISABLE, - V4L2_MPEG_VIDC_META_ENABLE | V4L2_MPEG_VIDC_META_TX_INPUT, - 0, V4L2_MPEG_VIDC_META_DISABLE, - V4L2_CID_MPEG_VIDC_METADATA_SEI_MASTERING_DISPLAY_COLOUR, - HFI_PROP_SEI_MASTERING_DISPLAY_COLOUR, - CAP_FLAG_BITMASK | CAP_FLAG_META}, - - {META_SEI_MASTERING_DISP, DEC, HEVC|HEIC, - V4L2_MPEG_VIDC_META_DISABLE, - V4L2_MPEG_VIDC_META_ENABLE | V4L2_MPEG_VIDC_META_RX_INPUT | - V4L2_MPEG_VIDC_META_RX_OUTPUT, - 0, V4L2_MPEG_VIDC_META_DISABLE, - V4L2_CID_MPEG_VIDC_METADATA_SEI_MASTERING_DISPLAY_COLOUR, - HFI_PROP_SEI_MASTERING_DISPLAY_COLOUR, - CAP_FLAG_BITMASK | CAP_FLAG_META}, - - {META_SEI_CLL, ENC, HEVC|HEIC, - V4L2_MPEG_VIDC_META_DISABLE, - V4L2_MPEG_VIDC_META_ENABLE | V4L2_MPEG_VIDC_META_TX_INPUT, - 0, V4L2_MPEG_VIDC_META_DISABLE, - V4L2_CID_MPEG_VIDC_METADATA_SEI_CONTENT_LIGHT_LEVEL, - HFI_PROP_SEI_CONTENT_LIGHT_LEVEL, - CAP_FLAG_BITMASK | CAP_FLAG_META}, - - {META_SEI_CLL, DEC, HEVC|HEIC, - V4L2_MPEG_VIDC_META_DISABLE, - V4L2_MPEG_VIDC_META_ENABLE | V4L2_MPEG_VIDC_META_RX_INPUT | - V4L2_MPEG_VIDC_META_RX_OUTPUT, - 0, V4L2_MPEG_VIDC_META_DISABLE, - V4L2_CID_MPEG_VIDC_METADATA_SEI_CONTENT_LIGHT_LEVEL, - HFI_PROP_SEI_CONTENT_LIGHT_LEVEL, - CAP_FLAG_BITMASK | CAP_FLAG_META}, - - {META_HDR10PLUS, ENC, HEVC|HEIC, - V4L2_MPEG_VIDC_META_DISABLE, - V4L2_MPEG_VIDC_META_ENABLE | V4L2_MPEG_VIDC_META_TX_INPUT, - 0, V4L2_MPEG_VIDC_META_DISABLE, - V4L2_CID_MPEG_VIDC_METADATA_HDR10PLUS, - HFI_PROP_SEI_HDR10PLUS_USERDATA, - CAP_FLAG_BITMASK | CAP_FLAG_META}, - - {META_HDR10PLUS, DEC, HEVC|HEIC, - V4L2_MPEG_VIDC_META_DISABLE, - V4L2_MPEG_VIDC_META_ENABLE | V4L2_MPEG_VIDC_META_RX_INPUT | - V4L2_MPEG_VIDC_META_RX_OUTPUT, - 0, V4L2_MPEG_VIDC_META_DISABLE, - V4L2_CID_MPEG_VIDC_METADATA_HDR10PLUS, - HFI_PROP_SEI_HDR10PLUS_USERDATA, - CAP_FLAG_BITMASK | CAP_FLAG_META}, - - {META_EVA_STATS, ENC, CODECS_ALL, - V4L2_MPEG_VIDC_META_DISABLE, - V4L2_MPEG_VIDC_META_ENABLE | V4L2_MPEG_VIDC_META_TX_INPUT, - 0, V4L2_MPEG_VIDC_META_DISABLE, - V4L2_CID_MPEG_VIDC_METADATA_EVA_STATS, - HFI_PROP_EVA_STAT_INFO, - CAP_FLAG_BITMASK | CAP_FLAG_META}, - - {META_BUF_TAG, ENC, CODECS_ALL, - V4L2_MPEG_VIDC_META_DISABLE, - V4L2_MPEG_VIDC_META_ENABLE | V4L2_MPEG_VIDC_META_TX_INPUT | - V4L2_MPEG_VIDC_META_RX_OUTPUT, - 0, V4L2_MPEG_VIDC_META_DISABLE, - V4L2_CID_MPEG_VIDC_METADATA_BUFFER_TAG, - HFI_PROP_BUFFER_TAG, - CAP_FLAG_BITMASK | CAP_FLAG_META}, - - {META_BUF_TAG, DEC, CODECS_ALL, - V4L2_MPEG_VIDC_META_DISABLE, - V4L2_MPEG_VIDC_META_ENABLE | V4L2_MPEG_VIDC_META_TX_INPUT | - V4L2_MPEG_VIDC_META_TX_OUTPUT | V4L2_MPEG_VIDC_META_RX_INPUT | - V4L2_MPEG_VIDC_META_RX_OUTPUT, - 0, V4L2_MPEG_VIDC_META_DISABLE, - V4L2_CID_MPEG_VIDC_METADATA_BUFFER_TAG, - HFI_PROP_BUFFER_TAG, - CAP_FLAG_BITMASK | CAP_FLAG_META}, - - {META_DPB_TAG_LIST, DEC, CODECS_ALL, - V4L2_MPEG_VIDC_META_DISABLE, - V4L2_MPEG_VIDC_META_ENABLE | V4L2_MPEG_VIDC_META_RX_OUTPUT, - 0, V4L2_MPEG_VIDC_META_DISABLE, - V4L2_CID_MPEG_VIDC_METADATA_DPB_TAG_LIST, - HFI_PROP_DPB_TAG_LIST, - CAP_FLAG_BITMASK | CAP_FLAG_META}, - - {META_SUBFRAME_OUTPUT, ENC, HEIC, - V4L2_MPEG_VIDC_META_DISABLE, - V4L2_MPEG_VIDC_META_ENABLE | V4L2_MPEG_VIDC_META_RX_OUTPUT, - 0, V4L2_MPEG_VIDC_META_DISABLE, - V4L2_CID_MPEG_VIDC_METADATA_SUBFRAME_OUTPUT, - HFI_PROP_SUBFRAME_OUTPUT, - CAP_FLAG_BITMASK | CAP_FLAG_META}, - - {META_SUBFRAME_OUTPUT, DEC, CODECS_ALL, - V4L2_MPEG_VIDC_META_DISABLE, - V4L2_MPEG_VIDC_META_ENABLE | V4L2_MPEG_VIDC_META_RX_OUTPUT, - 0, V4L2_MPEG_VIDC_META_DISABLE, - V4L2_CID_MPEG_VIDC_METADATA_SUBFRAME_OUTPUT, - HFI_PROP_SUBFRAME_OUTPUT, - CAP_FLAG_BITMASK | CAP_FLAG_META}, - - {META_ENC_QP_METADATA, ENC, CODECS_ALL, - V4L2_MPEG_VIDC_META_DISABLE, - V4L2_MPEG_VIDC_META_ENABLE | V4L2_MPEG_VIDC_META_RX_OUTPUT, - 0, V4L2_MPEG_VIDC_META_DISABLE, - V4L2_CID_MPEG_VIDC_METADATA_ENC_QP_METADATA, - HFI_PROP_ENC_QP_METADATA, - CAP_FLAG_BITMASK | CAP_FLAG_META}, - - {META_ROI_INFO, ENC, CODECS_ALL, - V4L2_MPEG_VIDC_META_DISABLE, - V4L2_MPEG_VIDC_META_ENABLE | V4L2_MPEG_VIDC_META_TX_INPUT, - 0, V4L2_MPEG_VIDC_META_DISABLE, - V4L2_CID_MPEG_VIDC_METADATA_ROI_INFO, - HFI_PROP_ROI_INFO, - CAP_FLAG_INPUT_PORT | CAP_FLAG_BITMASK | CAP_FLAG_META}, - - {META_SALIENCY_INFO, ENC, H264|HEVC, - V4L2_MPEG_VIDC_META_DISABLE, - V4L2_MPEG_VIDC_META_ENABLE | V4L2_MPEG_VIDC_META_TX_INPUT, - 0, V4L2_MPEG_VIDC_META_DISABLE, - V4L2_CID_MPEG_VIDC_METADATA_SALIENCY_INFO, - HFI_PROP_ROI_AS_SALIENCY_INFO, - CAP_FLAG_INPUT_PORT | CAP_FLAG_BITMASK | CAP_FLAG_META}, - - {META_DEC_QP_METADATA, DEC, CODECS_ALL, - V4L2_MPEG_VIDC_META_DISABLE, - V4L2_MPEG_VIDC_META_ENABLE | V4L2_MPEG_VIDC_META_RX_OUTPUT, - 0, V4L2_MPEG_VIDC_META_DISABLE, - V4L2_CID_MPEG_VIDC_METADATA_DEC_QP_METADATA, - HFI_PROP_DEC_QP_METADATA, - CAP_FLAG_BITMASK | CAP_FLAG_META}, - - {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}, - - {COMPLEXITY, ENC, H264 | HEVC, - 0, 100, - 1, DEFAULT_COMPLEXITY, - V4L2_CID_MPEG_VIDC_VENC_COMPLEXITY}, - - {META_MAX_NUM_REORDER_FRAMES, DEC, HEVC | H264, - V4L2_MPEG_VIDC_META_DISABLE, - V4L2_MPEG_VIDC_META_ENABLE | V4L2_MPEG_VIDC_META_RX_OUTPUT, - 0, V4L2_MPEG_VIDC_META_DISABLE, - V4L2_CID_MPEG_VIDC_METADATA_MAX_NUM_REORDER_FRAMES, - HFI_PROP_MAX_NUM_REORDER_FRAMES, - CAP_FLAG_BITMASK | CAP_FLAG_META}, -}; - -static struct msm_platform_inst_cap_dependency instance_cap_dependency_data_waipio[] = { - /* {cap, domain, codec, - * parents, - * children, - * adjust, set} - */ - - {PIX_FMTS, ENC, H264, - {META_ROI_INFO, IR_PERIOD}}, - - {PIX_FMTS, ENC, HEVC, - {PROFILE, MIN_FRAME_QP, MAX_FRAME_QP, I_FRAME_QP, P_FRAME_QP, - B_FRAME_QP, META_ROI_INFO, MIN_QUALITY, BLUR_TYPES, IR_PERIOD}}, - - {PIX_FMTS, ENC, HEIC, - {PROFILE}}, - - {PIX_FMTS, DEC, HEVC|HEIC, - {PROFILE}}, - - {FRAME_RATE, ENC, CODECS_ALL, - {0}, - NULL, - msm_vidc_set_q16}, - - {FRAME_RATE, DEC, CODECS_ALL, - {0}, - msm_vidc_adjust_dec_frame_rate}, - - {OPERATING_RATE, DEC, CODECS_ALL, - {0}, - msm_vidc_adjust_dec_operating_rate}, - - {SECURE_MODE, ENC|DEC, H264|HEVC|VP9, - {0}, - NULL, - msm_vidc_set_u32}, - - {META_OUTBUF_FENCE, DEC, H264|HEVC|VP9, - {LOWLATENCY_MODE}, - NULL, - NULL}, - - {HFLIP, ENC, CODECS_ALL, - {0}, - NULL, - msm_vidc_set_flip}, - - {VFLIP, ENC, CODECS_ALL, - {0}, - NULL, - msm_vidc_set_flip}, - - {ROTATION, ENC, CODECS_ALL, - {0}, - NULL, - msm_vidc_set_rotation}, - - {SUPER_FRAME, ENC, H264|HEVC, - {INPUT_BUF_HOST_MAX_COUNT, OUTPUT_BUF_HOST_MAX_COUNT}, - NULL, - NULL}, - - {HEADER_MODE, ENC, CODECS_ALL, - {0}, - NULL, - msm_vidc_set_header_mode}, - - {WITHOUT_STARTCODE, ENC, CODECS_ALL, - {0}, - NULL, - msm_vidc_set_nal_length}, - - {REQUEST_I_FRAME, ENC, H264|HEVC, - {0}, - NULL, - msm_vidc_set_req_sync_frame}, - - {BIT_RATE, ENC, H264|HEVC, - {PEAK_BITRATE, L0_BR}, - msm_vidc_adjust_bitrate, - msm_vidc_set_bitrate}, - - {BITRATE_MODE, ENC, H264, - {LTR_COUNT, IR_PERIOD, TIME_DELTA_BASED_RC, I_FRAME_QP, - P_FRAME_QP, B_FRAME_QP, ENH_LAYER_COUNT, BIT_RATE, - META_ROI_INFO, MIN_QUALITY, BITRATE_BOOST, VBV_DELAY, - PEAK_BITRATE, SLICE_MODE, CONTENT_ADAPTIVE_CODING, - BLUR_TYPES, LOWLATENCY_MODE}, - msm_vidc_adjust_bitrate_mode, - msm_vidc_set_u32_enum}, - - {BITRATE_MODE, ENC, HEVC, - {LTR_COUNT, IR_PERIOD, TIME_DELTA_BASED_RC, I_FRAME_QP, - P_FRAME_QP, B_FRAME_QP, CONSTANT_QUALITY, ENH_LAYER_COUNT, - BIT_RATE, META_ROI_INFO, MIN_QUALITY, BITRATE_BOOST, VBV_DELAY, - PEAK_BITRATE, SLICE_MODE, CONTENT_ADAPTIVE_CODING, - BLUR_TYPES, LOWLATENCY_MODE}, - msm_vidc_adjust_bitrate_mode, - msm_vidc_set_u32_enum}, - - {BITRATE_MODE, ENC, HEIC, - {TIME_DELTA_BASED_RC, CONSTANT_QUALITY}, - msm_vidc_adjust_bitrate_mode, - msm_vidc_set_u32_enum}, - - {CONSTANT_QUALITY, ENC, HEVC|HEIC, - {0}, - NULL, - msm_vidc_set_constant_quality}, - - {GOP_SIZE, ENC, CODECS_ALL, - {ALL_INTRA}, - msm_vidc_adjust_gop_size, - msm_vidc_set_gop_size}, - - {GOP_SIZE, ENC, HEIC, - {0}, - NULL, - msm_vidc_set_u32}, - - {B_FRAME, ENC, H264|HEVC, - {ALL_INTRA}, - msm_vidc_adjust_b_frame, - msm_vidc_set_u32}, - - {B_FRAME, ENC, HEIC, - {0}, - NULL, - msm_vidc_set_u32}, - - {BLUR_TYPES, ENC, H264|HEVC, - {BLUR_RESOLUTION}, - msm_vidc_adjust_blur_type_iris2, - msm_vidc_set_u32_enum}, - - {BLUR_RESOLUTION, ENC, H264|HEVC, - {0}, - msm_vidc_adjust_blur_resolution, - msm_vidc_set_blur_resolution}, - - {CSC_CUSTOM_MATRIX, ENC, CODECS_ALL, - {0}, - NULL, - msm_vidc_set_csc_custom_matrix}, - - {LOWLATENCY_MODE, ENC, H264 | HEVC, - {STAGE}, - msm_vidc_adjust_enc_lowlatency_mode, - NULL}, - - {LOWLATENCY_MODE, DEC, H264|HEVC|VP9, - {STAGE}, - msm_vidc_adjust_dec_lowlatency_mode, - NULL}, - - {LTR_COUNT, ENC, H264|HEVC, - {0}, - msm_vidc_adjust_ltr_count, - msm_vidc_set_u32}, - - {USE_LTR, ENC, H264|HEVC, - {0}, - msm_vidc_adjust_use_ltr, - msm_vidc_set_use_and_mark_ltr}, - - {MARK_LTR, ENC, H264|HEVC, - {0}, - msm_vidc_adjust_mark_ltr, - msm_vidc_set_use_and_mark_ltr}, - - {IR_PERIOD, ENC, H264|HEVC, - {0}, - msm_vidc_adjust_ir_period, - msm_vidc_set_ir_period}, - - {AU_DELIMITER, ENC, H264|HEVC, - {0}, - NULL, - msm_vidc_set_u32}, - - {TIME_DELTA_BASED_RC, ENC, CODECS_ALL, - {0}, - msm_vidc_adjust_delta_based_rc, - msm_vidc_set_u32}, - - {CONTENT_ADAPTIVE_CODING, ENC, H264|HEVC, - {REQUEST_PREPROCESS}, - msm_vidc_adjust_brs, - msm_vidc_set_vbr_related_properties}, - - {REQUEST_PREPROCESS, ENC, H264|HEVC, - {0}, - msm_vidc_adjust_preprocess, - NULL}, - - {BITRATE_BOOST, ENC, H264|HEVC, - {0}, - msm_vidc_adjust_bitrate_boost, - msm_vidc_set_vbr_related_properties}, - - {MIN_QUALITY, ENC, H264, - {BLUR_TYPES}, - msm_vidc_adjust_min_quality, - msm_vidc_set_vbr_related_properties}, - - {MIN_QUALITY, ENC, HEVC, - {BLUR_TYPES}, - msm_vidc_adjust_min_quality, - msm_vidc_set_vbr_related_properties}, - - {VBV_DELAY, ENC, H264|HEVC, - {0}, - NULL, - msm_vidc_set_cbr_related_properties}, - - {PEAK_BITRATE, ENC, H264|HEVC, - {0}, - msm_vidc_adjust_peak_bitrate, - msm_vidc_set_cbr_related_properties}, - - {MIN_FRAME_QP, ENC, H264, - {0}, - NULL, - msm_vidc_set_min_qp}, - - {MIN_FRAME_QP, ENC, HEVC, - {0}, - msm_vidc_adjust_hevc_min_qp, - msm_vidc_set_min_qp}, - - {MAX_FRAME_QP, ENC, H264, - {0}, - NULL, - msm_vidc_set_max_qp}, - - {MAX_FRAME_QP, ENC, HEVC, - {0}, - msm_vidc_adjust_hevc_max_qp, - msm_vidc_set_max_qp}, - - {I_FRAME_QP, ENC, HEVC, - {0}, - msm_vidc_adjust_hevc_i_frame_qp, - msm_vidc_set_frame_qp}, - - {I_FRAME_QP, ENC, H264, - {0}, - NULL, - msm_vidc_set_frame_qp}, - - {P_FRAME_QP, ENC, HEVC, - {0}, - msm_vidc_adjust_hevc_p_frame_qp, - msm_vidc_set_frame_qp}, - - {P_FRAME_QP, ENC, H264, - {0}, - NULL, - msm_vidc_set_frame_qp}, - - {B_FRAME_QP, ENC, HEVC, - {0}, - msm_vidc_adjust_hevc_b_frame_qp, - msm_vidc_set_frame_qp}, - - {B_FRAME_QP, ENC, H264, - {0}, - NULL, - msm_vidc_set_frame_qp}, - - {LAYER_TYPE, ENC, H264|HEVC, - {CONTENT_ADAPTIVE_CODING}}, - - {LAYER_ENABLE, ENC, H264|HEVC, - {CONTENT_ADAPTIVE_CODING}}, - - {ENH_LAYER_COUNT, ENC, H264|HEVC, - {GOP_SIZE, B_FRAME, BIT_RATE, MIN_QUALITY, SLICE_MODE}, - msm_vidc_adjust_layer_count, - msm_vidc_set_layer_count_and_type}, - - {L0_BR, ENC, H264|HEVC, - {L1_BR}, - msm_vidc_adjust_layer_bitrate, - msm_vidc_set_layer_bitrate}, - - {L1_BR, ENC, H264|HEVC, - {L2_BR}, - msm_vidc_adjust_layer_bitrate, - msm_vidc_set_layer_bitrate}, - - {L2_BR, ENC, H264|HEVC, - {L3_BR}, - msm_vidc_adjust_layer_bitrate, - msm_vidc_set_layer_bitrate}, - - {L3_BR, ENC, H264|HEVC, - {L4_BR}, - msm_vidc_adjust_layer_bitrate, - msm_vidc_set_layer_bitrate}, - - {L4_BR, ENC, H264|HEVC, - {L5_BR}, - msm_vidc_adjust_layer_bitrate, - msm_vidc_set_layer_bitrate}, - - {L5_BR, ENC, H264|HEVC, - {0}, - msm_vidc_adjust_layer_bitrate, - msm_vidc_set_layer_bitrate}, - - {ENTROPY_MODE, ENC, H264, - {0}, - msm_vidc_adjust_entropy_mode, - msm_vidc_set_u32}, - - {PROFILE, ENC, H264, - {ENTROPY_MODE, TRANSFORM_8X8}, - NULL, - msm_vidc_set_u32_enum}, - - {PROFILE, DEC, H264, - {ENTROPY_MODE}, - NULL, - msm_vidc_set_u32_enum}, - - {PROFILE, ENC|DEC, HEVC|HEIC, - {0}, - msm_vidc_adjust_profile, - msm_vidc_set_u32_enum}, - - {PROFILE, DEC, VP9, - {0}, - NULL, - msm_vidc_set_u32_enum}, - - {LEVEL, DEC, CODECS_ALL, - {0}, - NULL, - msm_vidc_set_u32_enum}, - - {LEVEL, ENC, CODECS_ALL, - {0}, - NULL, - msm_vidc_set_level}, - - {HEVC_TIER, ENC|DEC, HEVC|HEIC, - {0}, - NULL, - msm_vidc_set_u32_enum}, - - {LF_MODE, ENC, CODECS_ALL, - {0}, - NULL, - msm_vidc_set_deblock_mode}, - - {SLICE_MODE, ENC, H264|HEVC, - {STAGE}, - msm_vidc_adjust_slice_count, - msm_vidc_set_slice_count}, - - {SLICE_MODE, ENC, HEIC, - {0}, - msm_vidc_adjust_slice_count, - msm_vidc_set_slice_count}, - - {TRANSFORM_8X8, ENC, H264, - {0}, - msm_vidc_adjust_transform_8x8, - msm_vidc_set_u32}, - - {CHROMA_QP_INDEX_OFFSET, ENC, HEVC, - {0}, - msm_vidc_adjust_chroma_qp_index_offset, - msm_vidc_set_chroma_qp_index_offset}, - - {DISPLAY_DELAY_ENABLE, DEC, H264|HEVC|VP9, - {OUTPUT_ORDER}, - NULL, - NULL}, - - {DISPLAY_DELAY, DEC, H264|HEVC|VP9, - {OUTPUT_ORDER}, - NULL, - NULL}, - - {OUTPUT_ORDER, DEC, H264|HEVC|VP9, - {META_OUTBUF_FENCE}, - msm_vidc_adjust_output_order, - msm_vidc_set_u32}, - - {INPUT_BUF_HOST_MAX_COUNT, ENC|DEC, CODECS_ALL, - {0}, - msm_vidc_adjust_input_buf_host_max_count, - msm_vidc_set_u32}, - - {INPUT_BUF_HOST_MAX_COUNT, ENC, H264|HEVC, - {0}, - msm_vidc_adjust_input_buf_host_max_count, - msm_vidc_set_u32}, - - {OUTPUT_BUF_HOST_MAX_COUNT, ENC|DEC, CODECS_ALL, - {0}, - msm_vidc_adjust_output_buf_host_max_count, - msm_vidc_set_u32}, - - {OUTPUT_BUF_HOST_MAX_COUNT, ENC, H264|HEVC, - {0}, - msm_vidc_adjust_output_buf_host_max_count, - msm_vidc_set_u32}, - - {CONCEAL_COLOR_8BIT, DEC, CODECS_ALL, - {0}, - NULL, - msm_vidc_set_u32_packed}, - - {CONCEAL_COLOR_10BIT, DEC, CODECS_ALL, - {0}, - NULL, - msm_vidc_set_u32_packed}, - - {STAGE, ENC|DEC, CODECS_ALL, - {0}, - NULL, - msm_vidc_set_stage}, - - {STAGE, ENC, H264|HEVC, - {0}, - NULL, - msm_vidc_set_stage}, - - {STAGE, DEC, H264|HEVC|VP9, - {0}, - NULL, - msm_vidc_set_stage}, - - {PIPE, DEC|ENC, CODECS_ALL, - {0}, - NULL, - msm_vidc_set_pipe}, - - {THUMBNAIL_MODE, DEC, H264|HEVC|VP9|AV1, - {OUTPUT_ORDER}, - NULL, - msm_vidc_set_u32}, - - {THUMBNAIL_MODE, DEC, HEIC, - {0}, - NULL, - msm_vidc_set_u32}, - - {RAP_FRAME, DEC, CODECS_ALL, - {0}, - NULL, - msm_vidc_set_u32}, - - {PRIORITY, DEC|ENC, CODECS_ALL, - {0}, - msm_vidc_adjust_session_priority, - msm_vidc_set_session_priority}, - - {FIRMWARE_PRIORITY_OFFSET, DEC | ENC, CODECS_ALL, - {0}, - NULL, - NULL}, - - {CRITICAL_PRIORITY, ENC, CODECS_ALL, - {0}, - NULL, - NULL}, - - {RESERVE_DURATION, ENC, CODECS_ALL, - {0}, - NULL, - msm_vidc_set_reserve_duration}, - - {DPB_LIST, DEC, CODECS_ALL, - {0}, - NULL, - NULL}, - - {ALL_INTRA, ENC, H264|HEVC, - {LTR_COUNT, IR_PERIOD, SLICE_MODE}, - msm_vidc_adjust_all_intra, - NULL}, - - {META_EVA_STATS, ENC, H264|HEVC, - {ENH_LAYER_COUNT, REQUEST_PREPROCESS}}, - - {META_EVA_STATS, ENC, HEIC, - {0}}, - - {META_ROI_INFO, ENC, H264|HEVC, - {MIN_QUALITY, IR_PERIOD, BLUR_TYPES}, - msm_vidc_adjust_roi_info, - NULL}, - - {META_ROI_INFO, ENC, HEIC, - {0}, - msm_vidc_adjust_roi_info, - NULL}, - - {GRID, ENC, HEIC, - {0}, - NULL, - msm_vidc_set_u32}, -}; - -/* Default UBWC config for LPDDR5 */ -static struct msm_vidc_ubwc_config_data ubwc_config_waipio[] = { - UBWC_CONFIG(8, 32, 16, 0, 1, 1, 1), -}; - -/* name, min_kbps, max_kbps */ -static const struct bw_table waipio_bw_table[] = { - { "venus-cnoc", 1000, 1000 }, - { "venus-ddr", 1000, 15000000 }, - { "venus-llcc", 1000, 15000000 }, -}; - -/* name, hw_trigger */ -static const struct regulator_table waipio_regulator_table[] = { - { "iris-ctl", 0 }, - { "vcodec", 1 }, -}; - -/* name, clock id, scaling */ -static const struct clk_table waipio_clk_table[] = { - { "gcc_video_axi0", GCC_VIDEO_AXI0_CLK, 0 }, - { "core_clk", VIDEO_CC_MVS0C_CLK, 0 }, - { "vcodec_clk", VIDEO_CC_MVS0_CLK, 0 }, - { "video_cc_mvs0_clk_src", VIDEO_CC_MVS0_CLK_SRC, 1 }, -}; - -/* name, exclusive_release */ -static const struct clk_rst_table waipio_clk_reset_table[] = { - { "video_axi_reset", 0 }, - { "video_core_reset", 0 }, -}; - -/* name, llcc_id */ -static const struct subcache_table waipio_subcache_table[] = { - { "vidsc0", LLCC_VIDSC0 }, -}; - -/* name, start, size, secure, dma_coherant */ -const struct context_bank_table waipio_context_bank_table[] = { - {"qcom,vidc,cb-ns", 0x25800000, 0xba800000, 0, 1, MSM_VIDC_NON_SECURE }, - {"qcom,vidc,cb-ns-pxl", 0x00100000, 0xdff00000, 0, 1, MSM_VIDC_NON_SECURE_PIXEL }, - {"qcom,vidc,cb-sec-pxl", 0x00500000, 0xdfb00000, 1, 0, MSM_VIDC_SECURE_PIXEL }, - {"qcom,vidc,cb-sec-non-pxl", 0x01000000, 0x24800000, 1, 0, MSM_VIDC_SECURE_NONPIXEL }, - {"qcom,vidc,cb-sec-bitstream", 0x00500000, 0xdfb00000, 1, 0, MSM_VIDC_SECURE_BITSTREAM }, -}; - -/* freq */ -static struct freq_table waipio_freq_table[] = { - {444000000}, {366000000}, {338000000}, {239999999} -}; - -/* register, value, mask */ -static const struct reg_preset_table waipio_reg_preset_table[] = { - { 0xB0088, 0x0, 0x11 }, -}; - -static const struct msm_vidc_platform_data waipio_data = { - /* resources dependent on other module */ - .bw_tbl = waipio_bw_table, - .bw_tbl_size = ARRAY_SIZE(waipio_bw_table), - .regulator_tbl = waipio_regulator_table, - .regulator_tbl_size = ARRAY_SIZE(waipio_regulator_table), - .clk_tbl = waipio_clk_table, - .clk_tbl_size = ARRAY_SIZE(waipio_clk_table), - .clk_rst_tbl = waipio_clk_reset_table, - .clk_rst_tbl_size = ARRAY_SIZE(waipio_clk_reset_table), - .subcache_tbl = waipio_subcache_table, - .subcache_tbl_size = ARRAY_SIZE(waipio_subcache_table), - - /* populate context bank */ - .context_bank_tbl = waipio_context_bank_table, - .context_bank_tbl_size = ARRAY_SIZE(waipio_context_bank_table), - - /* platform specific resources */ - .freq_tbl = waipio_freq_table, - .freq_tbl_size = ARRAY_SIZE(waipio_freq_table), - .reg_prst_tbl = waipio_reg_preset_table, - .reg_prst_tbl_size = ARRAY_SIZE(waipio_reg_preset_table), - .fwname = "vpu20_4v", - .pas_id = 9, - .supports_mmrm = 0, - - /* caps related resorces */ - .core_data = core_data_waipio, - .core_data_size = ARRAY_SIZE(core_data_waipio), - .inst_cap_data = instance_cap_data_waipio, - .inst_cap_data_size = ARRAY_SIZE(instance_cap_data_waipio), - .inst_cap_dependency_data = instance_cap_dependency_data_waipio, - .inst_cap_dependency_data_size = ARRAY_SIZE(instance_cap_dependency_data_waipio), - .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_waipio, -}; - -static int msm_vidc_init_data(struct msm_vidc_core *core) -{ - int rc = 0; - - if (!core || !core->platform) { - d_vpr_e("%s: invalid params\n", __func__); - return -EINVAL; - } - d_vpr_h("%s: initialize waipio data\n", __func__); - - core->platform->data = waipio_data; - core->mem_ops = get_mem_ops_ext(); - if (!core->mem_ops) { - d_vpr_e("%s: invalid memory ext ops\n", __func__); - return -EINVAL; - } - core->res_ops = get_res_ops_ext(); - if (!core->res_ops) { - d_vpr_e("%s: invalid resource ext ops\n", __func__); - return -EINVAL; - } - - return rc; -} - -int msm_vidc_init_platform_waipio(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_waipio(struct msm_vidc_core *core, struct device *dev) -{ - /* do nothing */ - return 0; -} diff --git a/driver/platform/waipio/src/waipio.c b/driver/platform/waipio/src/waipio.c index 8cc358d8c7..68e6c2f7b1 100644 --- a/driver/platform/waipio/src/waipio.c +++ b/driver/platform/waipio/src/waipio.c @@ -1750,7 +1750,7 @@ static const struct msm_vidc_platform_data waipio_data = { .format_data = &format_data_waipio, }; -static int msm_vidc_init_data(struct msm_vidc_core *core, struct device *dev) +static int msm_vidc_init_data(struct msm_vidc_core *core) { int rc = 0; @@ -1765,18 +1765,18 @@ static int msm_vidc_init_data(struct msm_vidc_core *core, struct device *dev) return rc; } -int msm_vidc_init_platform_waipio(struct msm_vidc_core *core, struct device *dev) +int msm_vidc_init_platform_waipio(struct msm_vidc_core *core) { int rc = 0; - rc = msm_vidc_init_data(core, dev); + rc = msm_vidc_init_data(core); if (rc) return rc; return 0; } -int msm_vidc_deinit_platform_waipio(struct msm_vidc_core *core, struct device *dev) +int msm_vidc_deinit_platform_waipio(struct msm_vidc_core *core) { /* do nothing */ return 0; diff --git a/driver/variant/iris2/inc/msm_vidc_iris2.h b/driver/variant/iris2/inc/msm_vidc_iris2.h index bf6c4b4840..fcb54a7e82 100644 --- a/driver/variant/iris2/inc/msm_vidc_iris2.h +++ b/driver/variant/iris2/inc/msm_vidc_iris2.h @@ -9,7 +9,7 @@ #include "msm_vidc_core.h" -#if defined(CONFIG_MSM_VIDC_IRIS2) +#if defined(CONFIG_MSM_VIDC_WAIPIO) int msm_vidc_init_iris2(struct msm_vidc_core *core); int msm_vidc_deinit_iris2(struct msm_vidc_core *core); int msm_vidc_adjust_blur_type_iris2(void *instance, struct v4l2_ctrl *ctrl); diff --git a/driver/variant/iris3/inc/msm_vidc_iris3.h b/driver/variant/iris3/inc/msm_vidc_iris3.h index 60e50ba37c..8a4cece4cf 100644 --- a/driver/variant/iris3/inc/msm_vidc_iris3.h +++ b/driver/variant/iris3/inc/msm_vidc_iris3.h @@ -9,7 +9,7 @@ #include "msm_vidc_core.h" -#if defined(CONFIG_MSM_VIDC_IRIS3) +#if defined(CONFIG_MSM_VIDC_KALAMA) int msm_vidc_init_iris3(struct msm_vidc_core *core); int msm_vidc_deinit_iris3(struct msm_vidc_core *core); int msm_vidc_adjust_bitrate_boost_iris3(void *instance, struct v4l2_ctrl *ctrl); diff --git a/driver/variant/iris33/inc/msm_vidc_iris33.h b/driver/variant/iris33/inc/msm_vidc_iris33.h index ee2aaf03f8..af23941d52 100644 --- a/driver/variant/iris33/inc/msm_vidc_iris33.h +++ b/driver/variant/iris33/inc/msm_vidc_iris33.h @@ -9,7 +9,7 @@ #include "msm_vidc_core.h" -#if defined(CONFIG_MSM_VIDC_IRIS33) +#if defined(CONFIG_MSM_VIDC_PINEAPPLE) int msm_vidc_init_iris33(struct msm_vidc_core *core); int msm_vidc_deinit_iris33(struct msm_vidc_core *core); int msm_vidc_adjust_bitrate_boost_iris33(void *instance, struct v4l2_ctrl *ctrl); diff --git a/driver/vidc/src/resources.c b/driver/vidc/src/resources.c index 09bacdf35f..4160707709 100644 --- a/driver/vidc/src/resources.c +++ b/driver/vidc/src/resources.c @@ -351,7 +351,7 @@ static int __init_power_domains(struct msm_vidc_core *core) const struct pd_table *pd_tbl; struct power_domain_set *pds; struct device **opp_vdevs = NULL; - const char **opp_tbl; + const char * const *opp_tbl; u32 pd_count = 0, opp_count = 0, cnt = 0; int rc = 0; diff --git a/msm_video/Kbuild b/msm_video/Kbuild index 611e95d82c..6eb67fcb65 100644 --- a/msm_video/Kbuild +++ b/msm_video/Kbuild @@ -4,80 +4,51 @@ KBUILD_CPPFLAGS += -DCONFIG_MSM_MMRM=1 VIDEO_DRIVER_ABS_PATH := $(VIDEO_ROOT)/msm_video/driver VIDEO_DRIVER_REL_PATH := ../msm_video/driver -ifeq ($(CONFIG_ARCH_WAIPIO), y) -include $(VIDEO_ROOT)/config/waipio_video.conf -LINUXINCLUDE += -include $(VIDEO_ROOT)/config/waipio_video.h \ - -I$(VIDEO_DRIVER_ABS_PATH)/platform/waipio/inc +ifeq ($(CONFIG_ARCH_PINEAPPLE), y) +include $(VIDEO_ROOT)/config/pineapple_video.conf +LINUXINCLUDE += -include $(VIDEO_ROOT)/config/pineapple_video.h endif ifeq ($(CONFIG_ARCH_KALAMA), y) include $(VIDEO_ROOT)/config/kalama_video.conf -LINUXINCLUDE += -include $(VIDEO_ROOT)/config/kalama_video.h \ - -I$(VIDEO_DRIVER_ABS_PATH)/platform/kalama/inc -endif - -ifeq ($(CONFIG_ARCH_PINEAPPLE), y) -include $(VIDEO_ROOT)/config/pineapple_video.conf -LINUXINCLUDE += -include $(VIDEO_ROOT)/config/pineapple_video.h \ - -I$(VIDEO_DRIVER_ABS_PATH)/platform/pineapple/inc -endif - -ifeq ($(CONFIG_ARCH_ANORAK), y) -include $(VIDEO_ROOT)/config/anorak_video.conf -LINUXINCLUDE += -include $(VIDEO_ROOT)/config/anorak_video.h \ - -I$(VIDEO_DRIVER_ABS_PATH)/platform/anorak/inc -endif - -LINUXINCLUDE += -I$(VIDEO_DRIVER_ABS_PATH)/vidc/inc \ - -I$(VIDEO_DRIVER_ABS_PATH)/platform/common/inc \ - -I$(VIDEO_DRIVER_ABS_PATH)/variant/common/inc \ - -I$(VIDEO_ROOT)/include/uapi/vidc - -USERINCLUDE += -I$(VIDEO_ROOT)/include/uapi/vidc/media \ - -I$(VIDEO_ROOT)/include/uapi/vidc - -obj-m += msm_video.o - -ifeq ($(CONFIG_MSM_VIDC_WAIPIO), y) -msm_video-objs += $(VIDEO_DRIVER_REL_PATH)/platform/waipio/src/msm_vidc_waipio.o -endif - -ifeq ($(CONFIG_MSM_VIDC_KALAMA), y) -msm_video-objs += $(VIDEO_DRIVER_REL_PATH)/platform/kalama/src/msm_vidc_kalama.o +LINUXINCLUDE += -include $(VIDEO_ROOT)/config/kalama_video.h endif ifeq ($(CONFIG_MSM_VIDC_PINEAPPLE), y) -msm_video-objs += $(VIDEO_DRIVER_REL_PATH)/platform/pineapple/src/msm_vidc_pineapple.o +LINUXINCLUDE += -I$(VIDEO_DRIVER_ABS_PATH)/platform/pineapple/inc \ + -I$(VIDEO_DRIVER_ABS_PATH)/variant/iris33/inc endif - -ifeq ($(CONFIG_MSM_VIDC_ANORAK), y) -msm_video-objs += $(VIDEO_DRIVER_REL_PATH)/platform/anorak/src/msm_vidc_anorak.o +ifeq ($(CONFIG_MSM_VIDC_KALAMA), y) +LINUXINCLUDE += -I$(VIDEO_DRIVER_ABS_PATH)/platform/kalama/inc \ + -I$(VIDEO_DRIVER_ABS_PATH)/variant/iris3/inc endif +LINUXINCLUDE += -I$(VIDEO_DRIVER_ABS_PATH)/platform/common/inc \ + -I$(VIDEO_DRIVER_ABS_PATH)/variant/common/inc \ + -I$(VIDEO_DRIVER_ABS_PATH)/vidc/inc \ + -I$(VIDEO_ROOT)/include/uapi/vidc -ifeq ($(CONFIG_MSM_VIDC_IRIS2), y) -LINUXINCLUDE += -I$(VIDEO_DRIVER_ABS_PATH)/variant/iris2/inc -msm_video-objs += $(VIDEO_DRIVER_REL_PATH)/variant/iris2/src/msm_vidc_buffer_iris2.o \ - $(VIDEO_DRIVER_REL_PATH)/variant/iris2/src/msm_vidc_power_iris2.o \ - $(VIDEO_DRIVER_REL_PATH)/variant/iris2/src/msm_vidc_iris2.o +USERINCLUDE += -I$(VIDEO_ROOT)/include/uapi/vidc/media \ + -I$(VIDEO_ROOT)/include/uapi/vidc + +obj-m += msm_video.o + +ifeq ($(CONFIG_MSM_VIDC_PINEAPPLE), y) +msm_video-objs += $(VIDEO_DRIVER_REL_PATH)/platform/pineapple/src/msm_vidc_pineapple.o \ + $(VIDEO_DRIVER_REL_PATH)/variant/iris33/src/msm_vidc_buffer_iris33.o \ + $(VIDEO_DRIVER_REL_PATH)/variant/iris33/src/msm_vidc_power_iris33.o \ + $(VIDEO_DRIVER_REL_PATH)/variant/iris33/src/msm_vidc_iris33.o endif - -ifeq ($(CONFIG_MSM_VIDC_IRIS3), y) -LINUXINCLUDE += -I$(VIDEO_DRIVER_ABS_PATH)/variant/iris3/inc -msm_video-objs += $(VIDEO_DRIVER_REL_PATH)/variant/iris3/src/msm_vidc_buffer_iris3.o \ +ifeq ($(CONFIG_MSM_VIDC_KALAMA), y) +msm_video-objs += $(VIDEO_DRIVER_REL_PATH)/platform/kalama/src/msm_vidc_kalama.o \ + $(VIDEO_DRIVER_REL_PATH)/variant/iris3/src/msm_vidc_buffer_iris3.o \ $(VIDEO_DRIVER_REL_PATH)/variant/iris3/src/msm_vidc_power_iris3.o \ $(VIDEO_DRIVER_REL_PATH)/variant/iris3/src/msm_vidc_bus_iris3.o \ $(VIDEO_DRIVER_REL_PATH)/variant/iris3/src/msm_vidc_clock_iris3.o \ $(VIDEO_DRIVER_REL_PATH)/variant/iris3/src/msm_vidc_iris3.o endif - -ifeq ($(CONFIG_MSM_VIDC_IRIS33), y) -LINUXINCLUDE += -I$(VIDEO_DRIVER_ABS_PATH)/variant/iris33/inc -msm_video-objs += $(VIDEO_DRIVER_REL_PATH)/variant/iris33/src/msm_vidc_buffer_iris33.o \ - $(VIDEO_DRIVER_REL_PATH)/variant/iris33/src/msm_vidc_power_iris33.o \ - $(VIDEO_DRIVER_REL_PATH)/variant/iris33/src/msm_vidc_iris33.o -endif - -msm_video-objs += $(VIDEO_DRIVER_REL_PATH)/vidc/src/msm_vidc_v4l2.o \ +msm_video-objs += $(VIDEO_DRIVER_REL_PATH)/platform/common/src/msm_vidc_platform.o \ + $(VIDEO_DRIVER_REL_PATH)/variant/common/src/msm_vidc_variant.o \ + $(VIDEO_DRIVER_REL_PATH)/vidc/src/msm_vidc_v4l2.o \ $(VIDEO_DRIVER_REL_PATH)/vidc/src/msm_vidc_vb2.o \ $(VIDEO_DRIVER_REL_PATH)/vidc/src/msm_vidc.o \ $(VIDEO_DRIVER_REL_PATH)/vidc/src/msm_vdec.o \ @@ -99,6 +70,4 @@ msm_video-objs += $(VIDEO_DRIVER_REL_PATH)/vidc/src/msm_vidc_v4l2.o \ $(VIDEO_DRIVER_REL_PATH)/vidc/src/venus_hfi.o \ $(VIDEO_DRIVER_REL_PATH)/vidc/src/venus_hfi_queue.o \ $(VIDEO_DRIVER_REL_PATH)/vidc/src/hfi_packet.o \ - $(VIDEO_DRIVER_REL_PATH)/vidc/src/venus_hfi_response.o \ - $(VIDEO_DRIVER_REL_PATH)/platform/common/src/msm_vidc_platform.o \ - $(VIDEO_DRIVER_REL_PATH)/variant/common/src/msm_vidc_variant.o + $(VIDEO_DRIVER_REL_PATH)/vidc/src/venus_hfi_response.o diff --git a/video/Kbuild b/video/Kbuild index 624db117d3..2999a18b2b 100644 --- a/video/Kbuild +++ b/video/Kbuild @@ -3,36 +3,35 @@ VIDEO_DRIVER_ABS_PATH := $(VIDEO_ROOT)/video/driver VIDEO_DRIVER_REL_PATH := ../video/driver -ifeq ($(CONFIG_ARCH_KALAMA), y) -include $(VIDEO_ROOT)/config/kalama_video.conf -LINUXINCLUDE += -include $(VIDEO_ROOT)/config/kalama_video.h \ - -I$(VIDEO_DRIVER_ABS_PATH)/platform/kalama/inc +ifeq ($(CONFIG_ARCH_PINEAPPLE), y) +include $(VIDEO_ROOT)/config/pineapple_video.conf +LINUXINCLUDE += -include $(VIDEO_ROOT)/config/pineapple_video.h endif -LINUXINCLUDE += -I$(VIDEO_DRIVER_ABS_PATH)/vidc/inc \ - -I$(VIDEO_DRIVER_ABS_PATH)/platform/common/inc \ - -I$(VIDEO_DRIVER_ABS_PATH)/variant/common/inc \ - -I$(VIDEO_ROOT)/include/uapi/vidc +ifeq ($(CONFIG_MSM_VIDC_PINEAPPLE), y) +LINUXINCLUDE += -I$(VIDEO_DRIVER_ABS_PATH)/platform/pineapple/inc \ + -I$(VIDEO_DRIVER_ABS_PATH)/variant/iris33/inc +endif -USERINCLUDE += -I$(VIDEO_ROOT)/include/uapi/vidc/media \ - -I$(VIDEO_ROOT)/include/uapi/vidc +LINUXINCLUDE += -I$(VIDEO_DRIVER_ABS_PATH)/platform/common/inc \ + -I$(VIDEO_DRIVER_ABS_PATH)/variant/common/inc \ + -I$(VIDEO_DRIVER_ABS_PATH)/vidc/inc \ + -I$(VIDEO_ROOT)/include/uapi/vidc + +USERINCLUDE += -I$(VIDEO_ROOT)/include/uapi/vidc/media \ + -I$(VIDEO_ROOT)/include/uapi/vidc obj-m += video.o -ifeq ($(CONFIG_MSM_VIDC_KALAMA), y) -video-objs += $(VIDEO_DRIVER_REL_PATH)/platform/kalama/src/kalama.o +ifeq ($(CONFIG_MSM_VIDC_PINEAPPLE), y) +video-objs += $(VIDEO_DRIVER_REL_PATH)/platform/pineapple/src/pineapple.o \ + $(VIDEO_DRIVER_REL_PATH)/variant/iris33/src/msm_vidc_buffer_iris33.o \ + $(VIDEO_DRIVER_REL_PATH)/variant/iris33/src/msm_vidc_power_iris33.o \ + $(VIDEO_DRIVER_REL_PATH)/variant/iris33/src/msm_vidc_iris33.o endif - -ifeq ($(CONFIG_MSM_VIDC_IRIS3), y) -LINUXINCLUDE += -I$(VIDEO_DRIVER_ABS_PATH)/variant/iris3/inc -video-objs += $(VIDEO_DRIVER_REL_PATH)/variant/iris3/src/msm_vidc_buffer_iris3.o \ - $(VIDEO_DRIVER_REL_PATH)/variant/iris3/src/msm_vidc_power_iris3.o \ - $(VIDEO_DRIVER_REL_PATH)/variant/iris3/src/msm_vidc_bus_iris3.o \ - $(VIDEO_DRIVER_REL_PATH)/variant/iris3/src/msm_vidc_clock_iris3.o \ - $(VIDEO_DRIVER_REL_PATH)/variant/iris3/src/msm_vidc_iris3.o -endif - -video-objs += $(VIDEO_DRIVER_REL_PATH)/vidc/src/msm_vidc_v4l2.o \ +video-objs += $(VIDEO_DRIVER_REL_PATH)/platform/common/src/msm_vidc_platform.o \ + $(VIDEO_DRIVER_REL_PATH)/variant/common/src/msm_vidc_variant.o \ + $(VIDEO_DRIVER_REL_PATH)/vidc/src/msm_vidc_v4l2.o \ $(VIDEO_DRIVER_REL_PATH)/vidc/src/msm_vidc_vb2.o \ $(VIDEO_DRIVER_REL_PATH)/vidc/src/msm_vidc.o \ $(VIDEO_DRIVER_REL_PATH)/vidc/src/msm_vdec.o \ @@ -51,6 +50,4 @@ video-objs += $(VIDEO_DRIVER_REL_PATH)/vidc/src/msm_vidc_v4l2.o \ $(VIDEO_DRIVER_REL_PATH)/vidc/src/venus_hfi.o \ $(VIDEO_DRIVER_REL_PATH)/vidc/src/venus_hfi_queue.o \ $(VIDEO_DRIVER_REL_PATH)/vidc/src/hfi_packet.o \ - $(VIDEO_DRIVER_REL_PATH)/vidc/src/venus_hfi_response.o \ - $(VIDEO_DRIVER_REL_PATH)/platform/common/src/msm_vidc_platform.o \ - $(VIDEO_DRIVER_REL_PATH)/variant/common/src/msm_vidc_variant.o + $(VIDEO_DRIVER_REL_PATH)/vidc/src/venus_hfi_response.o