|
@@ -0,0 +1,1691 @@
|
|
|
+// SPDX-License-Identifier: GPL-2.0-only
|
|
|
+/*
|
|
|
+ * Copyright (c) 2020-2022, The Linux Foundation. All rights reserved.
|
|
|
+ * Copyright (c) 2024 Qualcomm Innovation Center, Inc. All rights reserved.
|
|
|
+ */
|
|
|
+
|
|
|
+#include <soc/qcom/of_common.h>
|
|
|
+
|
|
|
+#include "msm_vidc_control.h"
|
|
|
+#include "msm_vidc_volcano.h"
|
|
|
+#include "msm_vidc_platform.h"
|
|
|
+#include "msm_vidc_debug.h"
|
|
|
+#include "msm_vidc_iris2.h"
|
|
|
+#include "hfi_property.h"
|
|
|
+#include "hfi_command.h"
|
|
|
+#include "venus_hfi.h"
|
|
|
+
|
|
|
+/* version: major[24:31], minor[16:23], revision[0:15] */
|
|
|
+#define DRIVER_VERSION 0x04000000
|
|
|
+#define DEFAULT_VIDEO_CONCEAL_COLOR_BLACK 0x8020010
|
|
|
+#define MAX_BASE_LAYER_PRIORITY_ID 63
|
|
|
+#define MAX_OP_POINT 31
|
|
|
+#define MAX_BITRATE 160000000
|
|
|
+#define MAX_BITRATE_V1 100000000
|
|
|
+#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_BYTE_SIZE_V1 \
|
|
|
+ ((MAX_BITRATE_V1) >> 3)
|
|
|
+#define MAX_SLICE_MB_SIZE \
|
|
|
+ (((4096 + 15) >> 4) * ((2160 + 15) >> 4))
|
|
|
+#define MAX_LTR_FRAME_COUNT 2
|
|
|
+
|
|
|
+#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
|
|
|
+
|
|
|
+#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_volcano[] = {
|
|
|
+ {
|
|
|
+ .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_volcano[] = {
|
|
|
+ {
|
|
|
+ .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_volcano[] = {
|
|
|
+ {
|
|
|
+ .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_volcano[] = {
|
|
|
+ {
|
|
|
+ .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_volcano[] = {
|
|
|
+ {
|
|
|
+ .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_volcano_v0[] = {
|
|
|
+ /* {type, value} */
|
|
|
+ {ENC_CODECS, H264 | HEVC | HEIC},
|
|
|
+ {DEC_CODECS, H264 | HEVC | VP9 | HEIC},
|
|
|
+ {MAX_SESSION_COUNT, 16},
|
|
|
+ {MAX_NUM_720P_SESSIONS, 16},
|
|
|
+ {MAX_NUM_1080P_SESSIONS, 16},
|
|
|
+ {MAX_NUM_4K_SESSIONS, 4},
|
|
|
+ {MAX_SECURE_SESSION_COUNT, 3},
|
|
|
+ {MAX_RT_MBPF, 130560}, /* (4 * ((3840*2176)/256)) */
|
|
|
+ {MAX_MBPF, 139264}, /* (4 * ((4096*2176)/256)) */
|
|
|
+ /* max_load 3840x2176@120fps*/
|
|
|
+ /* Concurrency: UHD@30 decode + UHD@30 encode */
|
|
|
+ {MAX_MBPS, 3916800},
|
|
|
+ {MAX_IMAGE_MBPF, 1048576}, /* (16384x16384)/256 */
|
|
|
+ {MAX_MBPF_HQ, 8160}, /* ((1920x1088)/256) */
|
|
|
+ {MAX_MBPS_HQ, 244800}, /* ((1920x1088)/256)@30fps */
|
|
|
+ {MAX_MBPF_B_FRAME, 32640}, /* 3840x2176/256 */
|
|
|
+ {MAX_MBPS_B_FRAME, 979200}, /* 3840x2176/256 MBs@30fps */
|
|
|
+ {MAX_MBPS_ALL_INTRA, 489600}, /* ((1920x1088)/256)@60fps */
|
|
|
+ {MAX_ENH_LAYER_COUNT, 5},
|
|
|
+ {NUM_VPP_PIPE, 2},
|
|
|
+ {SW_PC, 1},
|
|
|
+ {FW_UNLOAD, 0},
|
|
|
+ {HW_RESPONSE_TIMEOUT, HW_RESPONSE_TIMEOUT_VALUE}, /* 1000 ms */
|
|
|
+ {SW_PC_DELAY, SW_PC_DELAY_VALUE }, /* 1500 ms (>HW_RESPONSE_TIMEOUT)*/
|
|
|
+ {FW_UNLOAD_DELAY, FW_UNLOAD_DELAY_VALUE }, /* 3000 ms (>SW_PC_DELAY)*/
|
|
|
+ {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, 0},
|
|
|
+ {DEVICE_CAPS, V4L2_CAP_VIDEO_M2M_MPLANE | V4L2_CAP_META_CAPTURE |
|
|
|
+ V4L2_CAP_STREAMING},
|
|
|
+ {SUPPORTS_SYNX_FENCE, 1},
|
|
|
+ {SUPPORTS_REQUESTS, 0},
|
|
|
+};
|
|
|
+
|
|
|
+static struct msm_platform_inst_capability instance_cap_data_volcano_v0[] = {
|
|
|
+ /* {cap, domain, codec,
|
|
|
+ * min, max, step_or_mask, value,
|
|
|
+ * v4l2_id,
|
|
|
+ * hfi_id,
|
|
|
+ * flags}
|
|
|
+ */
|
|
|
+
|
|
|
+ {FRAME_WIDTH, DEC, CODECS_ALL, 96, 4096, 1, 1920},
|
|
|
+
|
|
|
+ {FRAME_WIDTH, ENC, CODECS_ALL, 128, 4096, 1, 1920},
|
|
|
+
|
|
|
+ {FRAME_WIDTH, ENC, HEIC, 128, 16384, 1, 16384},
|
|
|
+
|
|
|
+ {LOSSLESS_FRAME_WIDTH, ENC, H264|HEVC, 128, 4096, 1, 1920},
|
|
|
+
|
|
|
+ {SECURE_FRAME_WIDTH, DEC, CODECS_ALL, 96, 4096, 1, 1920},
|
|
|
+
|
|
|
+ {SECURE_FRAME_WIDTH, ENC, CODECS_ALL, 128, 4096, 1, 1920},
|
|
|
+
|
|
|
+ {FRAME_HEIGHT, DEC, CODECS_ALL, 96, 4096, 1, 1080},
|
|
|
+
|
|
|
+ {FRAME_HEIGHT, ENC, CODECS_ALL, 128, 4096, 1, 1080},
|
|
|
+
|
|
|
+ {FRAME_HEIGHT, ENC, HEIC, 128, 16384, 1, 16384},
|
|
|
+
|
|
|
+ {LOSSLESS_FRAME_HEIGHT, ENC, CODECS_ALL, 128, 4096, 1, 1080},
|
|
|
+
|
|
|
+ {SECURE_FRAME_HEIGHT, DEC, CODECS_ALL, 96, 4096, 1, 1080},
|
|
|
+
|
|
|
+ {SECURE_FRAME_HEIGHT, ENC, CODECS_ALL, 128, 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,
|
|
|
+ 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},
|
|
|
+
|
|
|
+ {PIX_FMTS, DEC, VP9,
|
|
|
+ MSM_VIDC_FMT_NV12,
|
|
|
+ MSM_VIDC_FMT_TP10C,
|
|
|
+ MSM_VIDC_FMT_NV12 | MSM_VIDC_FMT_NV21 | MSM_VIDC_FMT_NV12C |
|
|
|
+ MSM_VIDC_FMT_P010 | MSM_VIDC_FMT_TP10C,
|
|
|
+ MSM_VIDC_FMT_NV12C},
|
|
|
+
|
|
|
+ {MIN_BUFFERS_INPUT, ENC | DEC, CODECS_ALL, 0, 64, 1, 4,
|
|
|
+ V4L2_CID_MIN_BUFFERS_FOR_OUTPUT,
|
|
|
+ 0,
|
|
|
+ CAP_FLAG_VOLATILE},
|
|
|
+
|
|
|
+ {MIN_BUFFERS_INPUT, ENC | DEC, HEIC, 0, 64, 1, 1,
|
|
|
+ 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},
|
|
|
+
|
|
|
+ /* (4096 * 2176) / 256 */
|
|
|
+ {MBPF, ENC, CODECS_ALL, 64, 34816, 1, 34816},
|
|
|
+
|
|
|
+ /* ((16384x16384)/256) */
|
|
|
+ {MBPF, ENC, HEIC, 64, 1048576, 1, 1048576},
|
|
|
+
|
|
|
+ /* (4 * ((4096 * 2176)/256) */
|
|
|
+ {MBPF, DEC, CODECS_ALL, 36, 139264, 1, 139264},
|
|
|
+
|
|
|
+ /* (4096 * 2176) / 256 */
|
|
|
+ {MBPF, DEC, VP9, 36, 34816, 1, 34816},
|
|
|
+
|
|
|
+ /* ((8192x8192)/256) */
|
|
|
+ {MBPF, DEC, HEIC, 64, 262144, 1, 262144 },
|
|
|
+
|
|
|
+ /* (4096 * 2176) / 256 */
|
|
|
+ {LOSSLESS_MBPF, ENC, H264 | HEVC, 64, 34816, 1, 34816},
|
|
|
+
|
|
|
+ /* Batch Mode Decode */
|
|
|
+ /* BATCH_MBPF + 2 is done for chipsets other than lanai
|
|
|
+ * due to timeline constraints since msm_vidc_allow_decode_batch
|
|
|
+ * has checks to allow batching for less than BATCH_MBPF.
|
|
|
+ * Same applies for BATCH_FPS.
|
|
|
+ */
|
|
|
+ /* (1920 * 1088) / 256 */
|
|
|
+ {BATCH_MBPF, DEC, H264 | HEVC | VP9, 64, 8162, 1, 8162},
|
|
|
+
|
|
|
+ {BATCH_FPS, DEC, H264 | HEVC | VP9, 1, 61, 1, 61},
|
|
|
+
|
|
|
+ /* (4096 * 2176) / 256 */
|
|
|
+ {SECURE_MBPF, ENC | DEC, H264 | HEVC | VP9, 64, 34816, 1, 34816},
|
|
|
+
|
|
|
+ {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, 326389, 326389, 1, 326389},
|
|
|
+
|
|
|
+ {MB_CYCLES_FW_VPP, ENC | DEC, CODECS_ALL, 44156, 44156, 1, 44156},
|
|
|
+
|
|
|
+ {ENC_RING_BUFFER_COUNT, ENC, CODECS_ALL,
|
|
|
+ 0, 0, 1, 0},
|
|
|
+
|
|
|
+ {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,
|
|
|
+ 160000000, 1, 160000000},
|
|
|
+
|
|
|
+ {ALLINTRA_MAX_BITRATE, ENC, H264 | HEVC, 0,
|
|
|
+ 160000000, 1, 160000000},
|
|
|
+
|
|
|
+ {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 | 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,
|
|
|
+ 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,
|
|
|
+ CAP_FLAG_OUTPUT_PORT},
|
|
|
+
|
|
|
+ {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, 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) - 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 - 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_INPUT_PORT | CAP_FLAG_DYNAMIC_ALLOWED},
|
|
|
+
|
|
|
+ {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 | 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,
|
|
|
+ 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 | 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_6_0,
|
|
|
+ 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,
|
|
|
+ BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_1) |
|
|
|
+ BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_2) |
|
|
|
+ BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_2_1) |
|
|
|
+ BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_3) |
|
|
|
+ BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_3_1) |
|
|
|
+ BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_4) |
|
|
|
+ BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_4_1) |
|
|
|
+ BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_5) |
|
|
|
+ BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_5_1) |
|
|
|
+ BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_5_2) |
|
|
|
+ BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_6),
|
|
|
+ V4L2_MPEG_VIDEO_HEVC_LEVEL_6,
|
|
|
+ V4L2_CID_MPEG_VIDEO_HEVC_LEVEL,
|
|
|
+ HFI_PROP_LEVEL,
|
|
|
+ CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU},
|
|
|
+
|
|
|
+ {LEVEL, DEC, VP9,
|
|
|
+ V4L2_MPEG_VIDEO_VP9_LEVEL_1_0,
|
|
|
+ V4L2_MPEG_VIDEO_VP9_LEVEL_5_2,
|
|
|
+ BIT(V4L2_MPEG_VIDEO_VP9_LEVEL_1_0) |
|
|
|
+ BIT(V4L2_MPEG_VIDEO_VP9_LEVEL_1_1) |
|
|
|
+ BIT(V4L2_MPEG_VIDEO_VP9_LEVEL_2_0) |
|
|
|
+ BIT(V4L2_MPEG_VIDEO_VP9_LEVEL_2_1) |
|
|
|
+ BIT(V4L2_MPEG_VIDEO_VP9_LEVEL_3_0) |
|
|
|
+ BIT(V4L2_MPEG_VIDEO_VP9_LEVEL_3_1) |
|
|
|
+ BIT(V4L2_MPEG_VIDEO_VP9_LEVEL_4_0) |
|
|
|
+ BIT(V4L2_MPEG_VIDEO_VP9_LEVEL_4_1) |
|
|
|
+ BIT(V4L2_MPEG_VIDEO_VP9_LEVEL_5_0) |
|
|
|
+ BIT(V4L2_MPEG_VIDEO_VP9_LEVEL_5_1) |
|
|
|
+ BIT(V4L2_MPEG_VIDEO_VP9_LEVEL_5_2),
|
|
|
+ V4L2_MPEG_VIDEO_VP9_LEVEL_5_2,
|
|
|
+ V4L2_CID_MPEG_VIDEO_VP9_LEVEL,
|
|
|
+ HFI_PROP_LEVEL,
|
|
|
+ CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU},
|
|
|
+ {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 | 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_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_2, 1,
|
|
|
+ MSM_VIDC_PIPE_2,
|
|
|
+ 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},
|
|
|
+
|
|
|
+ {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_volcano_v0[] = {
|
|
|
+ /* {cap, domain, codec,
|
|
|
+ * parents,
|
|
|
+ * children,
|
|
|
+ * adjust, set}
|
|
|
+ */
|
|
|
+
|
|
|
+ {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, 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, META_TRANSCODING_STAT_INFO},
|
|
|
+ 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},
|
|
|
+
|
|
|
+ {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},
|
|
|
+
|
|
|
+ {B_FRAME, ENC, H264 | HEVC,
|
|
|
+ {ALL_INTRA},
|
|
|
+ msm_vidc_adjust_b_frame,
|
|
|
+ msm_vidc_set_u32},
|
|
|
+
|
|
|
+ {B_FRAME, ENC, HEIC,
|
|
|
+ {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, H264 | 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 | 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},
|
|
|
+
|
|
|
+ {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 | 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},
|
|
|
+
|
|
|
+ {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, H264 | HEVC | VP9,
|
|
|
+ {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},
|
|
|
+
|
|
|
+ {ALL_INTRA, ENC, H264 | HEVC,
|
|
|
+ {LTR_COUNT, IR_PERIOD, SLICE_MODE, BIT_RATE},
|
|
|
+ msm_vidc_adjust_all_intra,
|
|
|
+ NULL},
|
|
|
+};
|
|
|
+
|
|
|
+/* Default UBWC config for LPDDR5 */
|
|
|
+static struct msm_vidc_ubwc_config_data ubwc_config_volcano[] = {
|
|
|
+ UBWC_CONFIG(8, 32, 15, 0, 1, 1, 1),
|
|
|
+};
|
|
|
+
|
|
|
+static struct msm_vidc_format_capability format_data_volcano = {
|
|
|
+ .codec_info = codec_data_volcano,
|
|
|
+ .codec_info_size = ARRAY_SIZE(codec_data_volcano),
|
|
|
+ .color_format_info = color_format_data_volcano,
|
|
|
+ .color_format_info_size = ARRAY_SIZE(color_format_data_volcano),
|
|
|
+ .color_prim_info = color_primaries_data_volcano,
|
|
|
+ .color_prim_info_size = ARRAY_SIZE(color_primaries_data_volcano),
|
|
|
+ .transfer_char_info = transfer_char_data_volcano,
|
|
|
+ .transfer_char_info_size = ARRAY_SIZE(transfer_char_data_volcano),
|
|
|
+ .matrix_coeff_info = matrix_coeff_data_volcano,
|
|
|
+ .matrix_coeff_info_size = ARRAY_SIZE(matrix_coeff_data_volcano),
|
|
|
+};
|
|
|
+static const struct msm_vidc_platform_data volcano_data_v0 = {
|
|
|
+ /* caps related resorces */
|
|
|
+ .core_data = core_data_volcano_v0,
|
|
|
+ .core_data_size = ARRAY_SIZE(core_data_volcano_v0),
|
|
|
+ .inst_cap_data = instance_cap_data_volcano_v0,
|
|
|
+ .inst_cap_data_size = ARRAY_SIZE(instance_cap_data_volcano_v0),
|
|
|
+ .inst_cap_dependency_data = instance_cap_dependency_data_volcano_v0,
|
|
|
+ .inst_cap_dependency_data_size = ARRAY_SIZE(instance_cap_dependency_data_volcano_v0),
|
|
|
+ .csc_data.vpe_csc_custom_bias_coeff = vpe_csc_custom_bias_coeff,
|
|
|
+ .csc_data.vpe_csc_custom_matrix_coeff = vpe_csc_custom_matrix_coeff,
|
|
|
+ .csc_data.vpe_csc_custom_limit_coeff = vpe_csc_custom_limit_coeff,
|
|
|
+ .ubwc_config = ubwc_config_volcano,
|
|
|
+ .format_data = &format_data_volcano,
|
|
|
+};
|
|
|
+
|
|
|
+int msm_vidc_volcano_check_ddr_type(
|
|
|
+ struct msm_vidc_platform_data *platform_data, u32 hbb_override_val)
|
|
|
+{
|
|
|
+ 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;
|
|
|
+ }
|
|
|
+
|
|
|
+ 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;
|
|
|
+
|
|
|
+ d_vpr_h("%s: initialize volcano", __func__);
|
|
|
+
|
|
|
+ core->platform->data = volcano_data_v0;
|
|
|
+
|
|
|
+ rc = msm_vidc_volcano_check_ddr_type(&core->platform->data, 0xe);
|
|
|
+ if (rc)
|
|
|
+ return rc;
|
|
|
+
|
|
|
+ return rc;
|
|
|
+}
|
|
|
+
|
|
|
+int msm_vidc_init_platform_volcano(struct msm_vidc_core *core)
|
|
|
+{
|
|
|
+ int rc = 0;
|
|
|
+
|
|
|
+ rc = msm_vidc_init_data(core);
|
|
|
+ if (rc)
|
|
|
+ return rc;
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|