|
@@ -19,6 +19,7 @@
|
|
|
#define MIN_CHROMA_QP_OFFSET -12
|
|
|
#define MAX_CHROMA_QP_OFFSET 0
|
|
|
#define MAX_BITRATE 220000000
|
|
|
+#define DEFAULT_BITRATE 20000000
|
|
|
#define MIN_QP_10BIT -12
|
|
|
#define MIN_QP_8BIT 0
|
|
|
#define MAX_QP 51
|
|
@@ -308,12 +309,12 @@ static struct msm_platform_inst_capability instance_data_waipio[] = {
|
|
|
* Dec: there's no use of Bitrate cap
|
|
|
*/
|
|
|
{BIT_RATE, ENC, H264|HEVC,
|
|
|
- 1, 220000000, 1, 20000000,
|
|
|
+ 1, MAX_BITRATE, 1, DEFAULT_BITRATE,
|
|
|
V4L2_CID_MPEG_VIDEO_BITRATE,
|
|
|
HFI_PROP_TOTAL_BITRATE,
|
|
|
- CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT | CAP_FLAG_DYNAMIC_ALLOWED,
|
|
|
- {0}, {0},
|
|
|
- NULL, msm_vidc_set_u32},
|
|
|
+ CAP_FLAG_OUTPUT_PORT | CAP_FLAG_DYNAMIC_ALLOWED,
|
|
|
+ {ENH_LAYER_COUNT, BITRATE_MODE}, {PEAK_BITRATE},
|
|
|
+ msm_vidc_adjust_bitrate, msm_vidc_set_bitrate},
|
|
|
|
|
|
{BITRATE_MODE, ENC, H264,
|
|
|
V4L2_MPEG_VIDEO_BITRATE_MODE_VBR,
|
|
@@ -326,7 +327,8 @@ static struct msm_platform_inst_capability instance_data_waipio[] = {
|
|
|
CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU,
|
|
|
{0},
|
|
|
{LTR_COUNT, IR_RANDOM, TIME_DELTA_BASED_RC, I_FRAME_QP,
|
|
|
- ENH_LAYER_COUNT},
|
|
|
+ ENH_LAYER_COUNT, BIT_RATE, CONTENT_ADAPTIVE_CODING,
|
|
|
+ BITRATE_BOOST, MIN_QUALITY, VBV_DELAY, PEAK_BITRATE},
|
|
|
msm_vidc_adjust_bitrate_mode, msm_vidc_set_u32_enum},
|
|
|
|
|
|
{BITRATE_MODE, ENC, HEVC,
|
|
@@ -340,8 +342,11 @@ static struct msm_platform_inst_capability instance_data_waipio[] = {
|
|
|
HFI_PROP_RATE_CONTROL,
|
|
|
CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU,
|
|
|
{0},
|
|
|
- {LTR_COUNT, IR_RANDOM, TIME_DELTA_BASED_RC,
|
|
|
- I_FRAME_QP, CONSTANT_QUALITY, ENH_LAYER_COUNT},
|
|
|
+ {LTR_COUNT, IR_RANDOM, TIME_DELTA_BASED_RC, I_FRAME_QP,
|
|
|
+ CONSTANT_QUALITY, ENH_LAYER_COUNT,
|
|
|
+ CONTENT_ADAPTIVE_CODING, BIT_RATE,
|
|
|
+ BITRATE_BOOST, MIN_QUALITY, VBV_DELAY,
|
|
|
+ PEAK_BITRATE},
|
|
|
msm_vidc_adjust_bitrate_mode, msm_vidc_set_u32_enum},
|
|
|
|
|
|
{LOSSLESS, ENC, HEVC|HEIC,
|
|
@@ -496,17 +501,49 @@ static struct msm_platform_inst_capability instance_data_waipio[] = {
|
|
|
1, V4L2_MPEG_MSM_VIDC_ENABLE,
|
|
|
V4L2_CID_MPEG_VIDC_CONTENT_ADAPTIVE_CODING,
|
|
|
HFI_PROP_CONTENT_ADAPTIVE_CODING,
|
|
|
- CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT},
|
|
|
+ CAP_FLAG_OUTPUT_PORT,
|
|
|
+ {BITRATE_MODE}, {0},
|
|
|
+ NULL, msm_vidc_set_vbr_related_properties},
|
|
|
|
|
|
{BITRATE_BOOST, ENC, H264|HEVC,
|
|
|
- 0, 100, 25, 25,
|
|
|
+ 0, 50, 25, 25,
|
|
|
V4L2_CID_MPEG_VIDC_QUALITY_BITRATE_BOOST,
|
|
|
HFI_PROP_BITRATE_BOOST,
|
|
|
- CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT},
|
|
|
+ CAP_FLAG_OUTPUT_PORT,
|
|
|
+ {BITRATE_MODE},
|
|
|
+ {0},
|
|
|
+ NULL, msm_vidc_set_vbr_related_properties},
|
|
|
+
|
|
|
+ {MIN_QUALITY, ENC, H264|HEVC,
|
|
|
+ 0, 80, 80, 80,
|
|
|
+ V4L2_CID_MPEG_VIDC_MIN_QUALITY,
|
|
|
+ HFI_PROP_MAINTAIN_MIN_QUALITY,
|
|
|
+ CAP_FLAG_OUTPUT_PORT,
|
|
|
+ {BITRATE_MODE},
|
|
|
+ {0},
|
|
|
+ NULL, msm_vidc_set_vbr_related_properties},
|
|
|
|
|
|
{VBV_DELAY, ENC, H264|HEVC,
|
|
|
- 0, 1000, 500, 0,
|
|
|
- V4L2_CID_MPEG_VIDEO_VBV_DELAY},
|
|
|
+ 500, 2000, 500, 500,
|
|
|
+ V4L2_CID_MPEG_VIDEO_VBV_DELAY,
|
|
|
+ HFI_PROP_VBV_DELAY,
|
|
|
+ CAP_FLAG_OUTPUT_PORT,
|
|
|
+ {BITRATE_MODE},
|
|
|
+ {0},
|
|
|
+ NULL, msm_vidc_set_cbr_related_properties},
|
|
|
+
|
|
|
+ {PEAK_BITRATE, ENC, H264|HEVC,
|
|
|
+ /* default peak bitrate is 10% larger than avrg bitrate */
|
|
|
+ 1, MAX_BITRATE, 1,
|
|
|
+ (DEFAULT_BITRATE +
|
|
|
+ (DEFAULT_BITRATE / PERCENT_PEAK_BITRATE_INCREASED)),
|
|
|
+ V4L2_CID_MPEG_VIDEO_BITRATE_PEAK,
|
|
|
+ HFI_PROP_TOTAL_PEAK_BITRATE,
|
|
|
+ CAP_FLAG_OUTPUT_PORT | CAP_FLAG_DYNAMIC_ALLOWED,
|
|
|
+ {BITRATE_MODE, BIT_RATE},
|
|
|
+ {0},
|
|
|
+ msm_vidc_adjust_peak_bitrate,
|
|
|
+ msm_vidc_set_cbr_related_properties},
|
|
|
|
|
|
{MIN_FRAME_QP, ENC, H264,
|
|
|
MIN_QP_8BIT, MAX_QP, 1, MIN_QP_8BIT,
|
|
@@ -627,42 +664,6 @@ static struct msm_platform_inst_capability instance_data_waipio[] = {
|
|
|
MIN_QP_8BIT, MAX_QP, 1, DEFAULT_QP,
|
|
|
V4L2_CID_MPEG_VIDEO_H264_B_FRAME_QP},
|
|
|
|
|
|
- {L0_QP, ENC, HEVC,
|
|
|
- 0, 51, 1, 20,
|
|
|
- V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L0_QP,
|
|
|
- HFI_PROP_QP_PACKED,
|
|
|
- CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT},
|
|
|
-
|
|
|
- {L1_QP, ENC, HEVC,
|
|
|
- 0, 51, 1, 20,
|
|
|
- V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L1_QP,
|
|
|
- HFI_PROP_QP_PACKED,
|
|
|
- CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT},
|
|
|
-
|
|
|
- {L2_QP, ENC, HEVC,
|
|
|
- 0, 51, 1, 20,
|
|
|
- V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L2_QP,
|
|
|
- HFI_PROP_QP_PACKED,
|
|
|
- CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT},
|
|
|
-
|
|
|
- {L3_QP, ENC, HEVC,
|
|
|
- 0, 51, 1, 20,
|
|
|
- V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L3_QP,
|
|
|
- HFI_PROP_QP_PACKED,
|
|
|
- CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT},
|
|
|
-
|
|
|
- {L4_QP, ENC, HEVC,
|
|
|
- 0, 51, 1, 20,
|
|
|
- V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L4_QP,
|
|
|
- HFI_PROP_QP_PACKED,
|
|
|
- CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT},
|
|
|
-
|
|
|
- {L5_QP, ENC, HEVC,
|
|
|
- 0, 51, 1, 20,
|
|
|
- V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L5_QP,
|
|
|
- HFI_PROP_QP_PACKED,
|
|
|
- CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT},
|
|
|
-
|
|
|
{HIER_LAYER_QP, ENC, H264,
|
|
|
0, 0x0060033, 1, 20,
|
|
|
V4L2_CID_MPEG_VIDEO_H264_HIERARCHICAL_CODING_LAYER_QP,
|
|
@@ -701,7 +702,7 @@ static struct msm_platform_inst_capability instance_data_waipio[] = {
|
|
|
HFI_PROP_LAYER_COUNT,
|
|
|
CAP_FLAG_OUTPUT_PORT | CAP_FLAG_DYNAMIC_ALLOWED,
|
|
|
{BITRATE_MODE},
|
|
|
- {GOP_SIZE, B_FRAME},
|
|
|
+ {GOP_SIZE, B_FRAME, BIT_RATE},
|
|
|
msm_vidc_adjust_layer_count, msm_vidc_set_layer_count_and_type},
|
|
|
|
|
|
{ENH_LAYER_COUNT, ENC, H264,
|
|
@@ -710,44 +711,108 @@ static struct msm_platform_inst_capability instance_data_waipio[] = {
|
|
|
HFI_PROP_LAYER_COUNT,
|
|
|
CAP_FLAG_OUTPUT_PORT | CAP_FLAG_DYNAMIC_ALLOWED,
|
|
|
{BITRATE_MODE},
|
|
|
- {GOP_SIZE, B_FRAME},
|
|
|
+ {GOP_SIZE, B_FRAME, BIT_RATE},
|
|
|
msm_vidc_adjust_layer_count, msm_vidc_set_layer_count_and_type},
|
|
|
|
|
|
+ /*
|
|
|
+ * layer bitrate is treated as BIT_RATE cap sibling and
|
|
|
+ * is handled in bitrate adjust and set functions
|
|
|
+ */
|
|
|
{L0_BR, ENC, HEVC,
|
|
|
- 1, 220000000, 1, 20000000,
|
|
|
+ 1, MAX_BITRATE, 1, DEFAULT_BITRATE,
|
|
|
V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L0_BR,
|
|
|
HFI_PROP_BITRATE_LAYER1,
|
|
|
- CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT},
|
|
|
+ CAP_FLAG_OUTPUT_PORT | CAP_FLAG_DYNAMIC_ALLOWED,
|
|
|
+ {0}, {0},
|
|
|
+ msm_vidc_adjust_bitrate, msm_vidc_set_bitrate},
|
|
|
|
|
|
{L1_BR, ENC, HEVC,
|
|
|
- 1, 220000000, 1, 20000000,
|
|
|
+ 1, MAX_BITRATE, 1, DEFAULT_BITRATE,
|
|
|
V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L1_BR,
|
|
|
HFI_PROP_BITRATE_LAYER2,
|
|
|
- CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT},
|
|
|
+ CAP_FLAG_OUTPUT_PORT | CAP_FLAG_DYNAMIC_ALLOWED,
|
|
|
+ {0}, {0},
|
|
|
+ msm_vidc_adjust_bitrate, msm_vidc_set_bitrate},
|
|
|
|
|
|
{L2_BR, ENC, HEVC,
|
|
|
- 1, 220000000, 1, 20000000,
|
|
|
+ 1, MAX_BITRATE, 1, DEFAULT_BITRATE,
|
|
|
V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L2_BR,
|
|
|
HFI_PROP_BITRATE_LAYER3,
|
|
|
- CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT},
|
|
|
+ CAP_FLAG_OUTPUT_PORT | CAP_FLAG_DYNAMIC_ALLOWED,
|
|
|
+ {0}, {0},
|
|
|
+ msm_vidc_adjust_bitrate, msm_vidc_set_bitrate},
|
|
|
|
|
|
{L3_BR, ENC, HEVC,
|
|
|
- 1, 220000000, 1, 20000000,
|
|
|
+ 1, MAX_BITRATE, 1, DEFAULT_BITRATE,
|
|
|
V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L3_BR,
|
|
|
HFI_PROP_BITRATE_LAYER4,
|
|
|
- CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT},
|
|
|
+ CAP_FLAG_OUTPUT_PORT | CAP_FLAG_DYNAMIC_ALLOWED,
|
|
|
+ {0}, {0},
|
|
|
+ msm_vidc_adjust_bitrate, msm_vidc_set_bitrate},
|
|
|
|
|
|
{L4_BR, ENC, HEVC,
|
|
|
- 1, 220000000, 1, 20000000,
|
|
|
+ 1, MAX_BITRATE, 1, DEFAULT_BITRATE,
|
|
|
V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L4_BR,
|
|
|
HFI_PROP_BITRATE_LAYER5,
|
|
|
- CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT},
|
|
|
+ CAP_FLAG_OUTPUT_PORT | CAP_FLAG_DYNAMIC_ALLOWED,
|
|
|
+ {0}, {0},
|
|
|
+ msm_vidc_adjust_bitrate, msm_vidc_set_bitrate},
|
|
|
|
|
|
{L5_BR, ENC, HEVC,
|
|
|
- 1, 220000000, 1, 20000000,
|
|
|
+ 1, MAX_BITRATE, 1, DEFAULT_BITRATE,
|
|
|
V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L5_BR,
|
|
|
HFI_PROP_BITRATE_LAYER6,
|
|
|
- CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT},
|
|
|
+ CAP_FLAG_OUTPUT_PORT | CAP_FLAG_DYNAMIC_ALLOWED,
|
|
|
+ {0}, {0},
|
|
|
+ msm_vidc_adjust_bitrate, msm_vidc_set_bitrate},
|
|
|
+
|
|
|
+ {L0_BR, ENC, H264,
|
|
|
+ 1, MAX_BITRATE, 1, DEFAULT_BITRATE,
|
|
|
+ V4L2_CID_MPEG_VIDEO_H264_HIER_CODING_L0_BR,
|
|
|
+ HFI_PROP_BITRATE_LAYER1,
|
|
|
+ CAP_FLAG_OUTPUT_PORT | CAP_FLAG_DYNAMIC_ALLOWED,
|
|
|
+ {0}, {0},
|
|
|
+ msm_vidc_adjust_bitrate, msm_vidc_set_bitrate},
|
|
|
+
|
|
|
+ {L1_BR, ENC, H264,
|
|
|
+ 1, MAX_BITRATE, 1, DEFAULT_BITRATE,
|
|
|
+ V4L2_CID_MPEG_VIDEO_H264_HIER_CODING_L1_BR,
|
|
|
+ HFI_PROP_BITRATE_LAYER2,
|
|
|
+ CAP_FLAG_OUTPUT_PORT | CAP_FLAG_DYNAMIC_ALLOWED,
|
|
|
+ {0}, {0},
|
|
|
+ msm_vidc_adjust_bitrate, msm_vidc_set_bitrate},
|
|
|
+
|
|
|
+ {L2_BR, ENC, H264,
|
|
|
+ 1, MAX_BITRATE, 1, DEFAULT_BITRATE,
|
|
|
+ V4L2_CID_MPEG_VIDEO_H264_HIER_CODING_L2_BR,
|
|
|
+ HFI_PROP_BITRATE_LAYER3,
|
|
|
+ CAP_FLAG_OUTPUT_PORT | CAP_FLAG_DYNAMIC_ALLOWED,
|
|
|
+ {0}, {0},
|
|
|
+ msm_vidc_adjust_bitrate, msm_vidc_set_bitrate},
|
|
|
+
|
|
|
+ {L3_BR, ENC, H264,
|
|
|
+ 1, MAX_BITRATE, 1, DEFAULT_BITRATE,
|
|
|
+ V4L2_CID_MPEG_VIDEO_H264_HIER_CODING_L3_BR,
|
|
|
+ HFI_PROP_BITRATE_LAYER4,
|
|
|
+ CAP_FLAG_OUTPUT_PORT | CAP_FLAG_DYNAMIC_ALLOWED,
|
|
|
+ {0}, {0},
|
|
|
+ msm_vidc_adjust_bitrate, msm_vidc_set_bitrate},
|
|
|
+
|
|
|
+ {L4_BR, ENC, H264,
|
|
|
+ 1, MAX_BITRATE, 1, DEFAULT_BITRATE,
|
|
|
+ V4L2_CID_MPEG_VIDEO_H264_HIER_CODING_L4_BR,
|
|
|
+ HFI_PROP_BITRATE_LAYER5,
|
|
|
+ CAP_FLAG_OUTPUT_PORT | CAP_FLAG_DYNAMIC_ALLOWED,
|
|
|
+ {0}, {0},
|
|
|
+ msm_vidc_adjust_bitrate, msm_vidc_set_bitrate},
|
|
|
+
|
|
|
+ {L5_BR, ENC, H264,
|
|
|
+ 1, MAX_BITRATE, 1, DEFAULT_BITRATE,
|
|
|
+ V4L2_CID_MPEG_VIDEO_H264_HIER_CODING_L5_BR,
|
|
|
+ HFI_PROP_BITRATE_LAYER6,
|
|
|
+ CAP_FLAG_OUTPUT_PORT | CAP_FLAG_DYNAMIC_ALLOWED,
|
|
|
+ {0}, {0},
|
|
|
+ msm_vidc_adjust_bitrate, msm_vidc_set_bitrate},
|
|
|
|
|
|
{ENTROPY_MODE, ENC, H264,
|
|
|
V4L2_MPEG_VIDEO_H264_ENTROPY_MODE_CAVLC,
|