video: driver: Modify decode order and some misc changes
- Account for V4L2_CID_MPEG_MFC51_VIDEO_DECODER_H264_DISPLAY_DELAY ctrl value to decide HFI_PROP_DECODE_ORDER_OUTPUT property value. - Set encoder run time properties on raw port - Some logging changes. Change-Id: I5eef81b484e81b69031854a3a8665de4be7f98f9 Signed-off-by: Akshata Sahukar <asahukar@codeaurora.org>
This commit is contained in:
@@ -312,7 +312,8 @@ static struct msm_platform_inst_capability instance_data_waipio[] = {
|
|||||||
1, MAX_BITRATE, 1, DEFAULT_BITRATE,
|
1, MAX_BITRATE, 1, DEFAULT_BITRATE,
|
||||||
V4L2_CID_MPEG_VIDEO_BITRATE,
|
V4L2_CID_MPEG_VIDEO_BITRATE,
|
||||||
HFI_PROP_TOTAL_BITRATE,
|
HFI_PROP_TOTAL_BITRATE,
|
||||||
CAP_FLAG_OUTPUT_PORT | CAP_FLAG_DYNAMIC_ALLOWED,
|
CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT |
|
||||||
|
CAP_FLAG_DYNAMIC_ALLOWED,
|
||||||
{ENH_LAYER_COUNT, BITRATE_MODE}, {PEAK_BITRATE},
|
{ENH_LAYER_COUNT, BITRATE_MODE}, {PEAK_BITRATE},
|
||||||
msm_vidc_adjust_bitrate, msm_vidc_set_bitrate},
|
msm_vidc_adjust_bitrate, msm_vidc_set_bitrate},
|
||||||
|
|
||||||
@@ -374,7 +375,8 @@ static struct msm_platform_inst_capability instance_data_waipio[] = {
|
|||||||
1, MAX_CONSTANT_QUALITY, 1, 90,
|
1, MAX_CONSTANT_QUALITY, 1, 90,
|
||||||
V4L2_CID_MPEG_VIDEO_CONSTANT_QUALITY,
|
V4L2_CID_MPEG_VIDEO_CONSTANT_QUALITY,
|
||||||
HFI_PROP_CONSTANT_QUALITY,
|
HFI_PROP_CONSTANT_QUALITY,
|
||||||
CAP_FLAG_OUTPUT_PORT | CAP_FLAG_DYNAMIC_ALLOWED,
|
CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT |
|
||||||
|
CAP_FLAG_DYNAMIC_ALLOWED,
|
||||||
{BITRATE_MODE}, {0},
|
{BITRATE_MODE}, {0},
|
||||||
NULL, msm_vidc_set_constant_quality},
|
NULL, msm_vidc_set_constant_quality},
|
||||||
|
|
||||||
@@ -382,7 +384,8 @@ static struct msm_platform_inst_capability instance_data_waipio[] = {
|
|||||||
0, INT_MAX, 1, 2 * DEFAULT_FPS - 1,
|
0, INT_MAX, 1, 2 * DEFAULT_FPS - 1,
|
||||||
V4L2_CID_MPEG_VIDEO_GOP_SIZE,
|
V4L2_CID_MPEG_VIDEO_GOP_SIZE,
|
||||||
HFI_PROP_MAX_GOP_FRAMES,
|
HFI_PROP_MAX_GOP_FRAMES,
|
||||||
CAP_FLAG_OUTPUT_PORT | CAP_FLAG_DYNAMIC_ALLOWED,
|
CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT |
|
||||||
|
CAP_FLAG_DYNAMIC_ALLOWED,
|
||||||
{ENH_LAYER_COUNT},
|
{ENH_LAYER_COUNT},
|
||||||
{0},
|
{0},
|
||||||
msm_vidc_adjust_gop_size, msm_vidc_set_gop_size},
|
msm_vidc_adjust_gop_size, msm_vidc_set_gop_size},
|
||||||
@@ -539,7 +542,8 @@ static struct msm_platform_inst_capability instance_data_waipio[] = {
|
|||||||
(DEFAULT_BITRATE / PERCENT_PEAK_BITRATE_INCREASED)),
|
(DEFAULT_BITRATE / PERCENT_PEAK_BITRATE_INCREASED)),
|
||||||
V4L2_CID_MPEG_VIDEO_BITRATE_PEAK,
|
V4L2_CID_MPEG_VIDEO_BITRATE_PEAK,
|
||||||
HFI_PROP_TOTAL_PEAK_BITRATE,
|
HFI_PROP_TOTAL_PEAK_BITRATE,
|
||||||
CAP_FLAG_OUTPUT_PORT | CAP_FLAG_DYNAMIC_ALLOWED,
|
CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT |
|
||||||
|
CAP_FLAG_DYNAMIC_ALLOWED,
|
||||||
{BITRATE_MODE, BIT_RATE},
|
{BITRATE_MODE, BIT_RATE},
|
||||||
{0},
|
{0},
|
||||||
msm_vidc_adjust_peak_bitrate,
|
msm_vidc_adjust_peak_bitrate,
|
||||||
@@ -625,18 +629,12 @@ static struct msm_platform_inst_capability instance_data_waipio[] = {
|
|||||||
MIN_QP_10BIT, MAX_QP, 1, MAX_QP,
|
MIN_QP_10BIT, MAX_QP, 1, MAX_QP,
|
||||||
V4L2_CID_MPEG_VIDEO_HEVC_B_FRAME_MAX_QP},
|
V4L2_CID_MPEG_VIDEO_HEVC_B_FRAME_MAX_QP},
|
||||||
|
|
||||||
{HEVC_HIER_QP, ENC, HEVC|HEIC,
|
|
||||||
V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE,
|
|
||||||
1, V4L2_MPEG_MSM_VIDC_DISABLE,
|
|
||||||
V4L2_CID_MPEG_VIDEO_HEVC_HIER_QP,
|
|
||||||
HFI_PROP_QP_PACKED,
|
|
||||||
CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT},
|
|
||||||
|
|
||||||
{I_FRAME_QP, ENC, HEVC|HEIC,
|
{I_FRAME_QP, ENC, HEVC|HEIC,
|
||||||
MIN_QP_10BIT, MAX_QP, 1, DEFAULT_QP,
|
MIN_QP_10BIT, MAX_QP, 1, DEFAULT_QP,
|
||||||
V4L2_CID_MPEG_VIDEO_HEVC_I_FRAME_QP,
|
V4L2_CID_MPEG_VIDEO_HEVC_I_FRAME_QP,
|
||||||
HFI_PROP_QP_PACKED,
|
HFI_PROP_QP_PACKED,
|
||||||
CAP_FLAG_OUTPUT_PORT | CAP_FLAG_DYNAMIC_ALLOWED,
|
CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT |
|
||||||
|
CAP_FLAG_DYNAMIC_ALLOWED,
|
||||||
{PIX_FMTS, BITRATE_MODE}, {0},
|
{PIX_FMTS, BITRATE_MODE}, {0},
|
||||||
msm_vidc_adjust_hevc_frame_qp, msm_vidc_set_frame_qp},
|
msm_vidc_adjust_hevc_frame_qp, msm_vidc_set_frame_qp},
|
||||||
|
|
||||||
@@ -644,7 +642,8 @@ static struct msm_platform_inst_capability instance_data_waipio[] = {
|
|||||||
MIN_QP_8BIT, MAX_QP, 1, DEFAULT_QP,
|
MIN_QP_8BIT, MAX_QP, 1, DEFAULT_QP,
|
||||||
V4L2_CID_MPEG_VIDEO_H264_I_FRAME_QP,
|
V4L2_CID_MPEG_VIDEO_H264_I_FRAME_QP,
|
||||||
HFI_PROP_QP_PACKED,
|
HFI_PROP_QP_PACKED,
|
||||||
CAP_FLAG_OUTPUT_PORT | CAP_FLAG_DYNAMIC_ALLOWED,
|
CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT |
|
||||||
|
CAP_FLAG_DYNAMIC_ALLOWED,
|
||||||
{BITRATE_MODE}, {0},
|
{BITRATE_MODE}, {0},
|
||||||
NULL, msm_vidc_set_frame_qp},
|
NULL, msm_vidc_set_frame_qp},
|
||||||
|
|
||||||
@@ -664,12 +663,6 @@ static struct msm_platform_inst_capability instance_data_waipio[] = {
|
|||||||
MIN_QP_8BIT, MAX_QP, 1, DEFAULT_QP,
|
MIN_QP_8BIT, MAX_QP, 1, DEFAULT_QP,
|
||||||
V4L2_CID_MPEG_VIDEO_H264_B_FRAME_QP},
|
V4L2_CID_MPEG_VIDEO_H264_B_FRAME_QP},
|
||||||
|
|
||||||
{HIER_LAYER_QP, ENC, H264,
|
|
||||||
0, 0x0060033, 1, 20,
|
|
||||||
V4L2_CID_MPEG_VIDEO_H264_HIERARCHICAL_CODING_LAYER_QP,
|
|
||||||
HFI_PROP_QP_PACKED,
|
|
||||||
CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT},
|
|
||||||
|
|
||||||
{LAYER_TYPE, ENC, HEVC,
|
{LAYER_TYPE, ENC, HEVC,
|
||||||
V4L2_MPEG_VIDEO_HEVC_HIERARCHICAL_CODING_B,
|
V4L2_MPEG_VIDEO_HEVC_HIERARCHICAL_CODING_B,
|
||||||
V4L2_MPEG_VIDEO_HEVC_HIERARCHICAL_CODING_P,
|
V4L2_MPEG_VIDEO_HEVC_HIERARCHICAL_CODING_P,
|
||||||
@@ -701,7 +694,8 @@ static struct msm_platform_inst_capability instance_data_waipio[] = {
|
|||||||
0, 5, 1, 0,
|
0, 5, 1, 0,
|
||||||
V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_LAYER,
|
V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_LAYER,
|
||||||
HFI_PROP_LAYER_COUNT,
|
HFI_PROP_LAYER_COUNT,
|
||||||
CAP_FLAG_OUTPUT_PORT | CAP_FLAG_DYNAMIC_ALLOWED,
|
CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT |
|
||||||
|
CAP_FLAG_DYNAMIC_ALLOWED,
|
||||||
{BITRATE_MODE},
|
{BITRATE_MODE},
|
||||||
{GOP_SIZE, B_FRAME, BIT_RATE},
|
{GOP_SIZE, B_FRAME, BIT_RATE},
|
||||||
msm_vidc_adjust_layer_count, msm_vidc_set_layer_count_and_type},
|
msm_vidc_adjust_layer_count, msm_vidc_set_layer_count_and_type},
|
||||||
@@ -710,7 +704,8 @@ static struct msm_platform_inst_capability instance_data_waipio[] = {
|
|||||||
0, 5, 1, 0,
|
0, 5, 1, 0,
|
||||||
V4L2_CID_MPEG_VIDEO_H264_HIERARCHICAL_CODING_LAYER,
|
V4L2_CID_MPEG_VIDEO_H264_HIERARCHICAL_CODING_LAYER,
|
||||||
HFI_PROP_LAYER_COUNT,
|
HFI_PROP_LAYER_COUNT,
|
||||||
CAP_FLAG_OUTPUT_PORT | CAP_FLAG_DYNAMIC_ALLOWED,
|
CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT |
|
||||||
|
CAP_FLAG_DYNAMIC_ALLOWED,
|
||||||
{BITRATE_MODE},
|
{BITRATE_MODE},
|
||||||
{GOP_SIZE, B_FRAME, BIT_RATE},
|
{GOP_SIZE, B_FRAME, BIT_RATE},
|
||||||
msm_vidc_adjust_layer_count, msm_vidc_set_layer_count_and_type},
|
msm_vidc_adjust_layer_count, msm_vidc_set_layer_count_and_type},
|
||||||
@@ -723,7 +718,8 @@ static struct msm_platform_inst_capability instance_data_waipio[] = {
|
|||||||
1, MAX_BITRATE, 1, DEFAULT_BITRATE,
|
1, MAX_BITRATE, 1, DEFAULT_BITRATE,
|
||||||
V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L0_BR,
|
V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L0_BR,
|
||||||
HFI_PROP_BITRATE_LAYER1,
|
HFI_PROP_BITRATE_LAYER1,
|
||||||
CAP_FLAG_OUTPUT_PORT | CAP_FLAG_DYNAMIC_ALLOWED,
|
CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT |
|
||||||
|
CAP_FLAG_DYNAMIC_ALLOWED,
|
||||||
{0}, {0},
|
{0}, {0},
|
||||||
msm_vidc_adjust_bitrate, msm_vidc_set_bitrate},
|
msm_vidc_adjust_bitrate, msm_vidc_set_bitrate},
|
||||||
|
|
||||||
@@ -731,7 +727,8 @@ static struct msm_platform_inst_capability instance_data_waipio[] = {
|
|||||||
1, MAX_BITRATE, 1, DEFAULT_BITRATE,
|
1, MAX_BITRATE, 1, DEFAULT_BITRATE,
|
||||||
V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L1_BR,
|
V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L1_BR,
|
||||||
HFI_PROP_BITRATE_LAYER2,
|
HFI_PROP_BITRATE_LAYER2,
|
||||||
CAP_FLAG_OUTPUT_PORT | CAP_FLAG_DYNAMIC_ALLOWED,
|
CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT |
|
||||||
|
CAP_FLAG_DYNAMIC_ALLOWED,
|
||||||
{0}, {0},
|
{0}, {0},
|
||||||
msm_vidc_adjust_bitrate, msm_vidc_set_bitrate},
|
msm_vidc_adjust_bitrate, msm_vidc_set_bitrate},
|
||||||
|
|
||||||
@@ -739,7 +736,8 @@ static struct msm_platform_inst_capability instance_data_waipio[] = {
|
|||||||
1, MAX_BITRATE, 1, DEFAULT_BITRATE,
|
1, MAX_BITRATE, 1, DEFAULT_BITRATE,
|
||||||
V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L2_BR,
|
V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L2_BR,
|
||||||
HFI_PROP_BITRATE_LAYER3,
|
HFI_PROP_BITRATE_LAYER3,
|
||||||
CAP_FLAG_OUTPUT_PORT | CAP_FLAG_DYNAMIC_ALLOWED,
|
CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT |
|
||||||
|
CAP_FLAG_DYNAMIC_ALLOWED,
|
||||||
{0}, {0},
|
{0}, {0},
|
||||||
msm_vidc_adjust_bitrate, msm_vidc_set_bitrate},
|
msm_vidc_adjust_bitrate, msm_vidc_set_bitrate},
|
||||||
|
|
||||||
@@ -747,7 +745,8 @@ static struct msm_platform_inst_capability instance_data_waipio[] = {
|
|||||||
1, MAX_BITRATE, 1, DEFAULT_BITRATE,
|
1, MAX_BITRATE, 1, DEFAULT_BITRATE,
|
||||||
V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L3_BR,
|
V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L3_BR,
|
||||||
HFI_PROP_BITRATE_LAYER4,
|
HFI_PROP_BITRATE_LAYER4,
|
||||||
CAP_FLAG_OUTPUT_PORT | CAP_FLAG_DYNAMIC_ALLOWED,
|
CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT |
|
||||||
|
CAP_FLAG_DYNAMIC_ALLOWED,
|
||||||
{0}, {0},
|
{0}, {0},
|
||||||
msm_vidc_adjust_bitrate, msm_vidc_set_bitrate},
|
msm_vidc_adjust_bitrate, msm_vidc_set_bitrate},
|
||||||
|
|
||||||
@@ -755,7 +754,8 @@ static struct msm_platform_inst_capability instance_data_waipio[] = {
|
|||||||
1, MAX_BITRATE, 1, DEFAULT_BITRATE,
|
1, MAX_BITRATE, 1, DEFAULT_BITRATE,
|
||||||
V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L4_BR,
|
V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L4_BR,
|
||||||
HFI_PROP_BITRATE_LAYER5,
|
HFI_PROP_BITRATE_LAYER5,
|
||||||
CAP_FLAG_OUTPUT_PORT | CAP_FLAG_DYNAMIC_ALLOWED,
|
CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT |
|
||||||
|
CAP_FLAG_DYNAMIC_ALLOWED,
|
||||||
{0}, {0},
|
{0}, {0},
|
||||||
msm_vidc_adjust_bitrate, msm_vidc_set_bitrate},
|
msm_vidc_adjust_bitrate, msm_vidc_set_bitrate},
|
||||||
|
|
||||||
@@ -763,7 +763,8 @@ static struct msm_platform_inst_capability instance_data_waipio[] = {
|
|||||||
1, MAX_BITRATE, 1, DEFAULT_BITRATE,
|
1, MAX_BITRATE, 1, DEFAULT_BITRATE,
|
||||||
V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L5_BR,
|
V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L5_BR,
|
||||||
HFI_PROP_BITRATE_LAYER6,
|
HFI_PROP_BITRATE_LAYER6,
|
||||||
CAP_FLAG_OUTPUT_PORT | CAP_FLAG_DYNAMIC_ALLOWED,
|
CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT |
|
||||||
|
CAP_FLAG_DYNAMIC_ALLOWED,
|
||||||
{0}, {0},
|
{0}, {0},
|
||||||
msm_vidc_adjust_bitrate, msm_vidc_set_bitrate},
|
msm_vidc_adjust_bitrate, msm_vidc_set_bitrate},
|
||||||
|
|
||||||
@@ -771,7 +772,8 @@ static struct msm_platform_inst_capability instance_data_waipio[] = {
|
|||||||
1, MAX_BITRATE, 1, DEFAULT_BITRATE,
|
1, MAX_BITRATE, 1, DEFAULT_BITRATE,
|
||||||
V4L2_CID_MPEG_VIDEO_H264_HIER_CODING_L0_BR,
|
V4L2_CID_MPEG_VIDEO_H264_HIER_CODING_L0_BR,
|
||||||
HFI_PROP_BITRATE_LAYER1,
|
HFI_PROP_BITRATE_LAYER1,
|
||||||
CAP_FLAG_OUTPUT_PORT | CAP_FLAG_DYNAMIC_ALLOWED,
|
CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT |
|
||||||
|
CAP_FLAG_DYNAMIC_ALLOWED,
|
||||||
{0}, {0},
|
{0}, {0},
|
||||||
msm_vidc_adjust_bitrate, msm_vidc_set_bitrate},
|
msm_vidc_adjust_bitrate, msm_vidc_set_bitrate},
|
||||||
|
|
||||||
@@ -779,7 +781,8 @@ static struct msm_platform_inst_capability instance_data_waipio[] = {
|
|||||||
1, MAX_BITRATE, 1, DEFAULT_BITRATE,
|
1, MAX_BITRATE, 1, DEFAULT_BITRATE,
|
||||||
V4L2_CID_MPEG_VIDEO_H264_HIER_CODING_L1_BR,
|
V4L2_CID_MPEG_VIDEO_H264_HIER_CODING_L1_BR,
|
||||||
HFI_PROP_BITRATE_LAYER2,
|
HFI_PROP_BITRATE_LAYER2,
|
||||||
CAP_FLAG_OUTPUT_PORT | CAP_FLAG_DYNAMIC_ALLOWED,
|
CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT |
|
||||||
|
CAP_FLAG_DYNAMIC_ALLOWED,
|
||||||
{0}, {0},
|
{0}, {0},
|
||||||
msm_vidc_adjust_bitrate, msm_vidc_set_bitrate},
|
msm_vidc_adjust_bitrate, msm_vidc_set_bitrate},
|
||||||
|
|
||||||
@@ -787,7 +790,8 @@ static struct msm_platform_inst_capability instance_data_waipio[] = {
|
|||||||
1, MAX_BITRATE, 1, DEFAULT_BITRATE,
|
1, MAX_BITRATE, 1, DEFAULT_BITRATE,
|
||||||
V4L2_CID_MPEG_VIDEO_H264_HIER_CODING_L2_BR,
|
V4L2_CID_MPEG_VIDEO_H264_HIER_CODING_L2_BR,
|
||||||
HFI_PROP_BITRATE_LAYER3,
|
HFI_PROP_BITRATE_LAYER3,
|
||||||
CAP_FLAG_OUTPUT_PORT | CAP_FLAG_DYNAMIC_ALLOWED,
|
CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT |
|
||||||
|
CAP_FLAG_DYNAMIC_ALLOWED,
|
||||||
{0}, {0},
|
{0}, {0},
|
||||||
msm_vidc_adjust_bitrate, msm_vidc_set_bitrate},
|
msm_vidc_adjust_bitrate, msm_vidc_set_bitrate},
|
||||||
|
|
||||||
@@ -795,7 +799,8 @@ static struct msm_platform_inst_capability instance_data_waipio[] = {
|
|||||||
1, MAX_BITRATE, 1, DEFAULT_BITRATE,
|
1, MAX_BITRATE, 1, DEFAULT_BITRATE,
|
||||||
V4L2_CID_MPEG_VIDEO_H264_HIER_CODING_L3_BR,
|
V4L2_CID_MPEG_VIDEO_H264_HIER_CODING_L3_BR,
|
||||||
HFI_PROP_BITRATE_LAYER4,
|
HFI_PROP_BITRATE_LAYER4,
|
||||||
CAP_FLAG_OUTPUT_PORT | CAP_FLAG_DYNAMIC_ALLOWED,
|
CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT |
|
||||||
|
CAP_FLAG_DYNAMIC_ALLOWED,
|
||||||
{0}, {0},
|
{0}, {0},
|
||||||
msm_vidc_adjust_bitrate, msm_vidc_set_bitrate},
|
msm_vidc_adjust_bitrate, msm_vidc_set_bitrate},
|
||||||
|
|
||||||
@@ -803,7 +808,8 @@ static struct msm_platform_inst_capability instance_data_waipio[] = {
|
|||||||
1, MAX_BITRATE, 1, DEFAULT_BITRATE,
|
1, MAX_BITRATE, 1, DEFAULT_BITRATE,
|
||||||
V4L2_CID_MPEG_VIDEO_H264_HIER_CODING_L4_BR,
|
V4L2_CID_MPEG_VIDEO_H264_HIER_CODING_L4_BR,
|
||||||
HFI_PROP_BITRATE_LAYER5,
|
HFI_PROP_BITRATE_LAYER5,
|
||||||
CAP_FLAG_OUTPUT_PORT | CAP_FLAG_DYNAMIC_ALLOWED,
|
CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT |
|
||||||
|
CAP_FLAG_DYNAMIC_ALLOWED,
|
||||||
{0}, {0},
|
{0}, {0},
|
||||||
msm_vidc_adjust_bitrate, msm_vidc_set_bitrate},
|
msm_vidc_adjust_bitrate, msm_vidc_set_bitrate},
|
||||||
|
|
||||||
@@ -811,7 +817,8 @@ static struct msm_platform_inst_capability instance_data_waipio[] = {
|
|||||||
1, MAX_BITRATE, 1, DEFAULT_BITRATE,
|
1, MAX_BITRATE, 1, DEFAULT_BITRATE,
|
||||||
V4L2_CID_MPEG_VIDEO_H264_HIER_CODING_L5_BR,
|
V4L2_CID_MPEG_VIDEO_H264_HIER_CODING_L5_BR,
|
||||||
HFI_PROP_BITRATE_LAYER6,
|
HFI_PROP_BITRATE_LAYER6,
|
||||||
CAP_FLAG_OUTPUT_PORT | CAP_FLAG_DYNAMIC_ALLOWED,
|
CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT |
|
||||||
|
CAP_FLAG_DYNAMIC_ALLOWED,
|
||||||
{0}, {0},
|
{0}, {0},
|
||||||
msm_vidc_adjust_bitrate, msm_vidc_set_bitrate},
|
msm_vidc_adjust_bitrate, msm_vidc_set_bitrate},
|
||||||
|
|
||||||
@@ -1063,13 +1070,13 @@ static struct msm_platform_inst_capability instance_data_waipio[] = {
|
|||||||
1, V4L2_MPEG_MSM_VIDC_DISABLE,
|
1, V4L2_MPEG_MSM_VIDC_DISABLE,
|
||||||
V4L2_CID_MPEG_MFC51_VIDEO_DECODER_H264_DISPLAY_DELAY_ENABLE,
|
V4L2_CID_MPEG_MFC51_VIDEO_DECODER_H264_DISPLAY_DELAY_ENABLE,
|
||||||
HFI_PROP_DECODE_ORDER_OUTPUT,
|
HFI_PROP_DECODE_ORDER_OUTPUT,
|
||||||
CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT},
|
CAP_FLAG_ROOT | CAP_FLAG_INPUT_PORT},
|
||||||
|
|
||||||
{DISPLAY_DELAY, DEC, H264|HEVC|VP9,
|
{DISPLAY_DELAY, DEC, H264|HEVC|VP9,
|
||||||
0, 1, 1, 0,
|
0, 1, 1, 0,
|
||||||
V4L2_CID_MPEG_MFC51_VIDEO_DECODER_H264_DISPLAY_DELAY,
|
V4L2_CID_MPEG_MFC51_VIDEO_DECODER_H264_DISPLAY_DELAY,
|
||||||
HFI_PROP_DECODE_ORDER_OUTPUT,
|
HFI_PROP_DECODE_ORDER_OUTPUT,
|
||||||
CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT},
|
CAP_FLAG_ROOT | CAP_FLAG_INPUT_PORT},
|
||||||
|
|
||||||
/* conceal color */
|
/* conceal color */
|
||||||
{CONCEAL_COLOR_8BIT, DEC, CODECS_ALL, 0x0, 0xff3fcff, 1,
|
{CONCEAL_COLOR_8BIT, DEC, CODECS_ALL, 0x0, 0xff3fcff, 1,
|
||||||
@@ -1304,7 +1311,8 @@ static struct msm_platform_inst_capability instance_data_waipio[] = {
|
|||||||
1, MAX_CONSTANT_QUALITY, 1, 100,
|
1, MAX_CONSTANT_QUALITY, 1, 100,
|
||||||
V4L2_CID_MPEG_VIDEO_CONSTANT_QUALITY,
|
V4L2_CID_MPEG_VIDEO_CONSTANT_QUALITY,
|
||||||
HFI_PROP_CONSTANT_QUALITY,
|
HFI_PROP_CONSTANT_QUALITY,
|
||||||
CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT | CAP_FLAG_DYNAMIC_ALLOWED,
|
CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT |
|
||||||
|
CAP_FLAG_DYNAMIC_ALLOWED,
|
||||||
{BITRATE_MODE}, {0},
|
{BITRATE_MODE}, {0},
|
||||||
NULL, msm_vidc_set_constant_quality},
|
NULL, msm_vidc_set_constant_quality},
|
||||||
{GRID, ENC, HEIC,
|
{GRID, ENC, HEIC,
|
||||||
@@ -1319,7 +1327,8 @@ static struct msm_platform_inst_capability instance_data_waipio[] = {
|
|||||||
0, INT_MAX, 1, 0 /* all intra */,
|
0, INT_MAX, 1, 0 /* all intra */,
|
||||||
V4L2_CID_MPEG_VIDEO_GOP_SIZE,
|
V4L2_CID_MPEG_VIDEO_GOP_SIZE,
|
||||||
HFI_PROP_MAX_GOP_FRAMES,
|
HFI_PROP_MAX_GOP_FRAMES,
|
||||||
CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT | CAP_FLAG_DYNAMIC_ALLOWED,
|
CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT |
|
||||||
|
CAP_FLAG_INPUT_PORT | CAP_FLAG_DYNAMIC_ALLOWED,
|
||||||
{0}, {0},
|
{0}, {0},
|
||||||
NULL, msm_vidc_set_u32},
|
NULL, msm_vidc_set_u32},
|
||||||
{B_FRAME, ENC, HEIC,
|
{B_FRAME, ENC, HEIC,
|
||||||
|
@@ -79,8 +79,6 @@ int msm_vidc_set_session_priority(void *instance,
|
|||||||
enum msm_vidc_inst_capability_type cap_id);
|
enum msm_vidc_inst_capability_type cap_id);
|
||||||
int msm_vidc_set_s32(void *instance,
|
int msm_vidc_set_s32(void *instance,
|
||||||
enum msm_vidc_inst_capability_type cap_id);
|
enum msm_vidc_inst_capability_type cap_id);
|
||||||
int msm_vidc_set_array(void *instance,
|
|
||||||
enum msm_vidc_inst_capability_type cap_id);
|
|
||||||
int msm_vidc_set_q16(void *instance,
|
int msm_vidc_set_q16(void *instance,
|
||||||
enum msm_vidc_inst_capability_type cap_id);
|
enum msm_vidc_inst_capability_type cap_id);
|
||||||
int msm_vidc_set_v4l2_properties(struct msm_vidc_inst *inst);
|
int msm_vidc_set_v4l2_properties(struct msm_vidc_inst *inst);
|
||||||
|
@@ -372,11 +372,9 @@ enum msm_vidc_inst_capability_type {
|
|||||||
I_FRAME_MAX_QP,
|
I_FRAME_MAX_QP,
|
||||||
P_FRAME_MAX_QP,
|
P_FRAME_MAX_QP,
|
||||||
B_FRAME_MAX_QP,
|
B_FRAME_MAX_QP,
|
||||||
HEVC_HIER_QP,
|
|
||||||
I_FRAME_QP,
|
I_FRAME_QP,
|
||||||
P_FRAME_QP,
|
P_FRAME_QP,
|
||||||
B_FRAME_QP,
|
B_FRAME_QP,
|
||||||
HIER_LAYER_QP,
|
|
||||||
LAYER_TYPE,
|
LAYER_TYPE,
|
||||||
LAYER_ENABLE,
|
LAYER_ENABLE,
|
||||||
ENH_LAYER_COUNT,
|
ENH_LAYER_COUNT,
|
||||||
|
@@ -588,14 +588,17 @@ static int msm_vdec_set_output_order(struct msm_vidc_inst *inst,
|
|||||||
enum msm_vidc_port_type port)
|
enum msm_vidc_port_type port)
|
||||||
{
|
{
|
||||||
int rc = 0;
|
int rc = 0;
|
||||||
u32 output_order;
|
u32 output_order = 0;
|
||||||
|
|
||||||
if (port != INPUT_PORT) {
|
if (port != INPUT_PORT) {
|
||||||
i_vpr_e(inst, "%s: invalid port %d\n", __func__, port);
|
i_vpr_e(inst, "%s: invalid port %d\n", __func__, port);
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
output_order = inst->capabilities->cap[DISPLAY_DELAY_ENABLE].value;
|
if (inst->capabilities->cap[DISPLAY_DELAY_ENABLE].value &&
|
||||||
|
!inst->capabilities->cap[DISPLAY_DELAY].value)
|
||||||
|
output_order = 1;
|
||||||
|
|
||||||
i_vpr_h(inst, "%s: output order: %d", __func__, output_order);
|
i_vpr_h(inst, "%s: output order: %d", __func__, output_order);
|
||||||
rc = venus_hfi_session_property(inst,
|
rc = venus_hfi_session_property(inst,
|
||||||
HFI_PROP_DECODE_ORDER_OUTPUT,
|
HFI_PROP_DECODE_ORDER_OUTPUT,
|
||||||
|
@@ -111,11 +111,12 @@ static u32 msm_vidc_get_port_info(struct msm_vidc_inst *inst,
|
|||||||
|
|
||||||
if (capability->cap[cap_id].flags & CAP_FLAG_INPUT_PORT &&
|
if (capability->cap[cap_id].flags & CAP_FLAG_INPUT_PORT &&
|
||||||
capability->cap[cap_id].flags & CAP_FLAG_OUTPUT_PORT) {
|
capability->cap[cap_id].flags & CAP_FLAG_OUTPUT_PORT) {
|
||||||
i_vpr_e(inst,
|
if (inst->vb2q[OUTPUT_PORT].streaming)
|
||||||
"%s: both ports enabled. Default port set: BITSTREAM\n",
|
return get_hfi_port(inst, INPUT_PORT);
|
||||||
__func__);
|
else
|
||||||
return HFI_PORT_BITSTREAM;
|
return get_hfi_port(inst, OUTPUT_PORT);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (capability->cap[cap_id].flags & CAP_FLAG_INPUT_PORT)
|
if (capability->cap[cap_id].flags & CAP_FLAG_INPUT_PORT)
|
||||||
return get_hfi_port(inst, INPUT_PORT);
|
return get_hfi_port(inst, INPUT_PORT);
|
||||||
else if (capability->cap[cap_id].flags & CAP_FLAG_OUTPUT_PORT)
|
else if (capability->cap[cap_id].flags & CAP_FLAG_OUTPUT_PORT)
|
||||||
@@ -149,9 +150,9 @@ static int msm_vidc_packetize_control(struct msm_vidc_inst *inst,
|
|||||||
{
|
{
|
||||||
int rc = 0;
|
int rc = 0;
|
||||||
|
|
||||||
i_vpr_l(inst,
|
i_vpr_h(inst,
|
||||||
"%s: hfi_id: %#x, value: %#x\n", func,
|
"set cap: name: %24s, cap value: %#10x, hfi: %#10x\n",
|
||||||
inst->capabilities->cap[cap_id].hfi_id,
|
cap_name(cap_id), inst->capabilities->cap[cap_id].value,
|
||||||
*(s64 *)hfi_val);
|
*(s64 *)hfi_val);
|
||||||
|
|
||||||
rc = venus_hfi_session_property(inst,
|
rc = venus_hfi_session_property(inst,
|
||||||
@@ -163,8 +164,8 @@ static int msm_vidc_packetize_control(struct msm_vidc_inst *inst,
|
|||||||
sizeof(payload_size));
|
sizeof(payload_size));
|
||||||
if (rc)
|
if (rc)
|
||||||
i_vpr_e(inst,
|
i_vpr_e(inst,
|
||||||
"%s: failed to set cap_id: %d to fw\n",
|
"%s: failed to set cap[%d] %s to fw\n",
|
||||||
__func__, cap_id);
|
__func__, cap_id, cap_name(cap_id));
|
||||||
|
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
@@ -199,8 +200,8 @@ static int msm_vidc_add_capid_to_list(struct msm_vidc_inst *inst,
|
|||||||
list_for_each_entry(curr_node, &inst->firmware.list, list) {
|
list_for_each_entry(curr_node, &inst->firmware.list, list) {
|
||||||
if (curr_node->cap_id == cap_id) {
|
if (curr_node->cap_id == cap_id) {
|
||||||
i_vpr_l(inst,
|
i_vpr_l(inst,
|
||||||
"%s: cap %d already present in FW_LIST\n",
|
"%s: cap[%d] %s already present in FW_LIST\n",
|
||||||
__func__, cap_id);
|
__func__, cap_id, cap_name(cap_id));
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -294,8 +295,8 @@ static int msm_vidc_get_parent_value(struct msm_vidc_inst* inst,
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
i_vpr_e(inst,
|
i_vpr_e(inst,
|
||||||
"%s: missing parent %d for cap %d, please correct database\n",
|
"%s: missing parent %d for cap[%d] %s, fix database\n",
|
||||||
func, parent, cap);
|
func, parent, cap, cap_name(cap));
|
||||||
rc = -EINVAL;
|
rc = -EINVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -312,8 +313,8 @@ static int msm_vidc_adjust_hevc_qp(struct msm_vidc_inst *inst,
|
|||||||
|
|
||||||
if (!(inst->codec == MSM_VIDC_HEVC || inst->codec == MSM_VIDC_HEIC)) {
|
if (!(inst->codec == MSM_VIDC_HEVC || inst->codec == MSM_VIDC_HEIC)) {
|
||||||
i_vpr_e(inst,
|
i_vpr_e(inst,
|
||||||
"%s: incorrect entry in database for cap %d. fix the database\n",
|
"%s: incorrect cap[%d] %s entry in database, fix database\n",
|
||||||
__func__, cap_id);
|
__func__, cap_id, cap_name(cap_id));
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -394,8 +395,8 @@ static int msm_vidc_adjust_dynamic_property(struct msm_vidc_inst *inst,
|
|||||||
*/
|
*/
|
||||||
if (!(capability->cap[cap_id].flags & CAP_FLAG_DYNAMIC_ALLOWED)) {
|
if (!(capability->cap[cap_id].flags & CAP_FLAG_DYNAMIC_ALLOWED)) {
|
||||||
i_vpr_e(inst,
|
i_vpr_e(inst,
|
||||||
"%s: dynamic setting of cap_id %d is not allowed\n",
|
"%s: dynamic setting of cap[%d] %s is not allowed\n",
|
||||||
__func__, cap_id);
|
__func__, cap_id, cap_name(cap_id));
|
||||||
msm_vidc_change_inst_state(inst, MSM_VIDC_ERROR, __func__);
|
msm_vidc_change_inst_state(inst, MSM_VIDC_ERROR, __func__);
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
@@ -406,8 +407,9 @@ static int msm_vidc_adjust_dynamic_property(struct msm_vidc_inst *inst,
|
|||||||
*/
|
*/
|
||||||
if (!ctrl && !capability->cap[cap_id].adjust) {
|
if (!ctrl && !capability->cap[cap_id].adjust) {
|
||||||
i_vpr_e(inst,
|
i_vpr_e(inst,
|
||||||
"%s: child cap %d must have ajdust function\n",
|
"%s: child cap[%d] %s must have ajdust function\n",
|
||||||
__func__, capability->cap[cap_id].cap);
|
__func__, capability->cap[cap_id].cap,
|
||||||
|
cap_name(capability->cap[cap_id].cap));
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
prev_value = capability->cap[cap_id].value;
|
prev_value = capability->cap[cap_id].value;
|
||||||
@@ -512,8 +514,8 @@ int msm_vidc_ctrl_init(struct msm_vidc_inst *inst)
|
|||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
i_vpr_h(inst,
|
i_vpr_h(inst,
|
||||||
"%s: cap idx %d, value %d min %d max %d step_or_mask %#x flags %#x v4l2_id %#x hfi_id %#x\n",
|
"%s: cap[%d] %24s, value %d min %d max %d step_or_mask %#x flags %#x v4l2_id %#x hfi_id %#x\n",
|
||||||
__func__, idx,
|
__func__, idx, cap_name(idx),
|
||||||
capability->cap[idx].value,
|
capability->cap[idx].value,
|
||||||
capability->cap[idx].min,
|
capability->cap[idx].min,
|
||||||
capability->cap[idx].max,
|
capability->cap[idx].max,
|
||||||
@@ -687,8 +689,8 @@ int msm_v4l2_op_s_ctrl(struct v4l2_ctrl *ctrl)
|
|||||||
if (inst->vb2q[OUTPUT_PORT].streaming &&
|
if (inst->vb2q[OUTPUT_PORT].streaming &&
|
||||||
!(capability->cap[cap_id].flags & CAP_FLAG_DYNAMIC_ALLOWED)) {
|
!(capability->cap[cap_id].flags & CAP_FLAG_DYNAMIC_ALLOWED)) {
|
||||||
i_vpr_e(inst,
|
i_vpr_e(inst,
|
||||||
"%s: dynamic setting of cap_id %d is not allowed\n",
|
"%s: dynamic setting of cap[%d] %s is not allowed\n",
|
||||||
__func__, cap_id);
|
__func__, cap_id, cap_name(cap_id));
|
||||||
return -EBUSY;
|
return -EBUSY;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1584,11 +1586,10 @@ int msm_vidc_set_header_mode(void *instance,
|
|||||||
if (hdr_metadata)
|
if (hdr_metadata)
|
||||||
hfi_value |= HFI_SEQ_HEADER_METADATA;
|
hfi_value |= HFI_SEQ_HEADER_METADATA;
|
||||||
|
|
||||||
i_vpr_h(inst, "set cap: name: %24s, value: %#10x, hfi: %#10x\n", cap_name(cap_id),
|
|
||||||
inst->capabilities->cap[cap_id].value, hfi_value);
|
|
||||||
|
|
||||||
rc = msm_vidc_packetize_control(inst, cap_id, HFI_PAYLOAD_U32_ENUM,
|
rc = msm_vidc_packetize_control(inst, cap_id, HFI_PAYLOAD_U32_ENUM,
|
||||||
&hfi_value, sizeof(u32), __func__);
|
&hfi_value, sizeof(u32), __func__);
|
||||||
|
if (rc)
|
||||||
|
return rc;
|
||||||
|
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
@@ -1616,11 +1617,10 @@ int msm_vidc_set_deblock_mode(void *instance,
|
|||||||
alpha = inst->capabilities->cap[LF_ALPHA].value + lf_offset;
|
alpha = inst->capabilities->cap[LF_ALPHA].value + lf_offset;
|
||||||
hfi_value = (alpha << 16) | (beta << 8) | lf_mode;
|
hfi_value = (alpha << 16) | (beta << 8) | lf_mode;
|
||||||
|
|
||||||
i_vpr_h(inst, "set cap: name: %24s, value: %#10x, hfi: %#10x\n", cap_name(cap_id),
|
|
||||||
inst->capabilities->cap[cap_id].value, hfi_value);
|
|
||||||
|
|
||||||
rc = msm_vidc_packetize_control(inst, cap_id, HFI_PAYLOAD_32_PACKED,
|
rc = msm_vidc_packetize_control(inst, cap_id, HFI_PAYLOAD_32_PACKED,
|
||||||
&hfi_value, sizeof(u32), __func__);
|
&hfi_value, sizeof(u32), __func__);
|
||||||
|
if (rc)
|
||||||
|
return rc;
|
||||||
|
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
@@ -1647,11 +1647,10 @@ int msm_vidc_set_constant_quality(void *instance,
|
|||||||
|
|
||||||
hfi_value = inst->capabilities->cap[cap_id].value;
|
hfi_value = inst->capabilities->cap[cap_id].value;
|
||||||
|
|
||||||
i_vpr_h(inst, "set cap: name: %24s, value: %#10x, hfi: %#10x\n", cap_name(cap_id),
|
|
||||||
inst->capabilities->cap[cap_id].value, hfi_value);
|
|
||||||
|
|
||||||
rc = msm_vidc_packetize_control(inst, cap_id, HFI_PAYLOAD_U32,
|
rc = msm_vidc_packetize_control(inst, cap_id, HFI_PAYLOAD_U32,
|
||||||
&hfi_value, sizeof(u32), __func__);
|
&hfi_value, sizeof(u32), __func__);
|
||||||
|
if (rc)
|
||||||
|
return rc;
|
||||||
|
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
@@ -1678,11 +1677,10 @@ int msm_vidc_set_vbr_related_properties(void *instance,
|
|||||||
|
|
||||||
hfi_value = inst->capabilities->cap[cap_id].value;
|
hfi_value = inst->capabilities->cap[cap_id].value;
|
||||||
|
|
||||||
i_vpr_h(inst, "set cap: name: %24s, value: %#10x, hfi: %#10x\n", cap_name(cap_id),
|
|
||||||
inst->capabilities->cap[cap_id].value, hfi_value);
|
|
||||||
|
|
||||||
rc = msm_vidc_packetize_control(inst, cap_id, HFI_PAYLOAD_U32,
|
rc = msm_vidc_packetize_control(inst, cap_id, HFI_PAYLOAD_U32,
|
||||||
&hfi_value, sizeof(u32), __func__);
|
&hfi_value, sizeof(u32), __func__);
|
||||||
|
if (rc)
|
||||||
|
return rc;
|
||||||
|
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
@@ -1710,11 +1708,10 @@ int msm_vidc_set_cbr_related_properties(void *instance,
|
|||||||
|
|
||||||
hfi_value = inst->capabilities->cap[cap_id].value;
|
hfi_value = inst->capabilities->cap[cap_id].value;
|
||||||
|
|
||||||
i_vpr_h(inst, "set cap: name: %24s, value: %#10x, hfi: %#10x\n", cap_name(cap_id),
|
|
||||||
inst->capabilities->cap[cap_id].value, hfi_value);
|
|
||||||
|
|
||||||
rc = msm_vidc_packetize_control(inst, cap_id, HFI_PAYLOAD_U32,
|
rc = msm_vidc_packetize_control(inst, cap_id, HFI_PAYLOAD_U32,
|
||||||
&hfi_value, sizeof(u32), __func__);
|
&hfi_value, sizeof(u32), __func__);
|
||||||
|
if (rc)
|
||||||
|
return rc;
|
||||||
|
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
@@ -1731,16 +1728,18 @@ int msm_vidc_set_use_and_mark_ltr(void *instance,
|
|||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!inst->capabilities->cap[LTR_COUNT].value)
|
if (!inst->capabilities->cap[LTR_COUNT].value) {
|
||||||
|
i_vpr_h(inst, "%s: ltr count is 0, cap %s is not set\n",
|
||||||
|
__func__, cap_name(cap_id));
|
||||||
return 0;
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
hfi_value = inst->capabilities->cap[cap_id].value;
|
hfi_value = inst->capabilities->cap[cap_id].value;
|
||||||
|
|
||||||
i_vpr_h(inst, "set cap: name: %24s, value: %#10x, hfi: %#10x\n", cap_name(cap_id),
|
|
||||||
inst->capabilities->cap[cap_id].value, hfi_value);
|
|
||||||
|
|
||||||
rc = msm_vidc_packetize_control(inst, cap_id, HFI_PAYLOAD_U32,
|
rc = msm_vidc_packetize_control(inst, cap_id, HFI_PAYLOAD_U32,
|
||||||
&hfi_value, sizeof(u32), __func__);
|
&hfi_value, sizeof(u32), __func__);
|
||||||
|
if (rc)
|
||||||
|
return rc;
|
||||||
|
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
@@ -1772,8 +1771,12 @@ int msm_vidc_set_min_qp(void *instance,
|
|||||||
capability->cap[B_FRAME_MIN_QP].flags & CAP_FLAG_CLIENT_SET;
|
capability->cap[B_FRAME_MIN_QP].flags & CAP_FLAG_CLIENT_SET;
|
||||||
|
|
||||||
client_qp_enable = i_qp_enable | p_qp_enable << 1 | b_qp_enable << 2;
|
client_qp_enable = i_qp_enable | p_qp_enable << 1 | b_qp_enable << 2;
|
||||||
if (!client_qp_enable)
|
if (!client_qp_enable) {
|
||||||
|
i_vpr_h(inst,
|
||||||
|
"%s: client did not set min qp, cap %s is not set\n",
|
||||||
|
__func__, cap_name(cap_id));
|
||||||
return 0;
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
if (is_10bit_colorformat(capability->cap[PIX_FMTS].value))
|
if (is_10bit_colorformat(capability->cap[PIX_FMTS].value))
|
||||||
offset = 12;
|
offset = 12;
|
||||||
@@ -1795,11 +1798,10 @@ int msm_vidc_set_min_qp(void *instance,
|
|||||||
hfi_value = i_frame_qp | p_frame_qp << 8 | b_frame_qp << 16 |
|
hfi_value = i_frame_qp | p_frame_qp << 8 | b_frame_qp << 16 |
|
||||||
client_qp_enable << 24;
|
client_qp_enable << 24;
|
||||||
|
|
||||||
i_vpr_h(inst, "set cap: name: %24s, value: %#10x, hfi: %#10x\n", cap_name(cap_id),
|
|
||||||
inst->capabilities->cap[cap_id].value, hfi_value);
|
|
||||||
|
|
||||||
rc = msm_vidc_packetize_control(inst, cap_id, HFI_PAYLOAD_32_PACKED,
|
rc = msm_vidc_packetize_control(inst, cap_id, HFI_PAYLOAD_32_PACKED,
|
||||||
&hfi_value, sizeof(u32), __func__);
|
&hfi_value, sizeof(u32), __func__);
|
||||||
|
if (rc)
|
||||||
|
return rc;
|
||||||
|
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
@@ -1831,8 +1833,12 @@ int msm_vidc_set_max_qp(void *instance,
|
|||||||
capability->cap[B_FRAME_MIN_QP].flags & CAP_FLAG_CLIENT_SET;
|
capability->cap[B_FRAME_MIN_QP].flags & CAP_FLAG_CLIENT_SET;
|
||||||
|
|
||||||
client_qp_enable = i_qp_enable | p_qp_enable << 1 | b_qp_enable << 2;
|
client_qp_enable = i_qp_enable | p_qp_enable << 1 | b_qp_enable << 2;
|
||||||
if (!client_qp_enable)
|
if (!client_qp_enable) {
|
||||||
|
i_vpr_h(inst,
|
||||||
|
"%s: client did not set max qp, cap %s is not set\n",
|
||||||
|
__func__, cap_name(cap_id));
|
||||||
return 0;
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
if (is_10bit_colorformat(capability->cap[PIX_FMTS].value))
|
if (is_10bit_colorformat(capability->cap[PIX_FMTS].value))
|
||||||
offset = 12;
|
offset = 12;
|
||||||
@@ -1854,11 +1860,10 @@ int msm_vidc_set_max_qp(void *instance,
|
|||||||
hfi_value = i_frame_qp | p_frame_qp << 8 | b_frame_qp << 16 |
|
hfi_value = i_frame_qp | p_frame_qp << 8 | b_frame_qp << 16 |
|
||||||
client_qp_enable << 24;
|
client_qp_enable << 24;
|
||||||
|
|
||||||
i_vpr_h(inst, "set cap: name: %24s, value: %#10x, hfi: %#10x\n", cap_name(cap_id),
|
|
||||||
inst->capabilities->cap[cap_id].value, hfi_value);
|
|
||||||
|
|
||||||
rc = msm_vidc_packetize_control(inst, cap_id, HFI_PAYLOAD_32_PACKED,
|
rc = msm_vidc_packetize_control(inst, cap_id, HFI_PAYLOAD_32_PACKED,
|
||||||
&hfi_value, sizeof(u32), __func__);
|
&hfi_value, sizeof(u32), __func__);
|
||||||
|
if (rc)
|
||||||
|
return rc;
|
||||||
|
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
@@ -1898,8 +1903,12 @@ int msm_vidc_set_frame_qp(void *instance,
|
|||||||
}
|
}
|
||||||
|
|
||||||
client_qp_enable = i_qp_enable | p_qp_enable << 1 | b_qp_enable << 2;
|
client_qp_enable = i_qp_enable | p_qp_enable << 1 | b_qp_enable << 2;
|
||||||
if (!client_qp_enable)
|
if (!client_qp_enable) {
|
||||||
|
i_vpr_h(inst,
|
||||||
|
"%s: client did not set frame qp, cap %s is not set\n",
|
||||||
|
__func__, cap_name(cap_id));
|
||||||
return 0;
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
if (is_10bit_colorformat(capab->cap[PIX_FMTS].value))
|
if (is_10bit_colorformat(capab->cap[PIX_FMTS].value))
|
||||||
offset = 12;
|
offset = 12;
|
||||||
@@ -1911,11 +1920,10 @@ int msm_vidc_set_frame_qp(void *instance,
|
|||||||
hfi_value = i_frame_qp | p_frame_qp << 8 | b_frame_qp << 16 |
|
hfi_value = i_frame_qp | p_frame_qp << 8 | b_frame_qp << 16 |
|
||||||
client_qp_enable << 24;
|
client_qp_enable << 24;
|
||||||
|
|
||||||
i_vpr_h(inst, "set cap: name: %24s, value: %#10x, hfi: %#10x\n", cap_name(cap_id),
|
|
||||||
inst->capabilities->cap[cap_id].value, hfi_value);
|
|
||||||
|
|
||||||
rc = msm_vidc_packetize_control(inst, cap_id, HFI_PAYLOAD_32_PACKED,
|
rc = msm_vidc_packetize_control(inst, cap_id, HFI_PAYLOAD_32_PACKED,
|
||||||
&hfi_value, sizeof(u32), __func__);
|
&hfi_value, sizeof(u32), __func__);
|
||||||
|
if (rc)
|
||||||
|
return rc;
|
||||||
|
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
@@ -1939,11 +1947,10 @@ int msm_vidc_set_req_sync_frame(void *instance,
|
|||||||
else
|
else
|
||||||
hfi_value = HFI_SYNC_FRAME_REQUEST_WITHOUT_SEQ_HDR;
|
hfi_value = HFI_SYNC_FRAME_REQUEST_WITHOUT_SEQ_HDR;
|
||||||
|
|
||||||
i_vpr_h(inst, "set cap: name: %24s, value: %#10x, hfi: %#10x\n", cap_name(cap_id),
|
|
||||||
inst->capabilities->cap[cap_id].value, hfi_value);
|
|
||||||
|
|
||||||
rc = msm_vidc_packetize_control(inst, cap_id, HFI_PAYLOAD_U32_ENUM,
|
rc = msm_vidc_packetize_control(inst, cap_id, HFI_PAYLOAD_U32_ENUM,
|
||||||
&hfi_value, sizeof(u32), __func__);
|
&hfi_value, sizeof(u32), __func__);
|
||||||
|
if (rc)
|
||||||
|
return rc;
|
||||||
|
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
@@ -1969,11 +1976,10 @@ int msm_vidc_set_chroma_qp_index_offset(void *instance,
|
|||||||
chroma_qp = inst->capabilities->cap[cap_id].value + offset;
|
chroma_qp = inst->capabilities->cap[cap_id].value + offset;
|
||||||
hfi_value = chroma_qp_offset_mode | chroma_qp << 8 | chroma_qp << 16 ;
|
hfi_value = chroma_qp_offset_mode | chroma_qp << 8 | chroma_qp << 16 ;
|
||||||
|
|
||||||
i_vpr_h(inst, "set cap: name: %24s, value: %#10x, hfi: %#10x\n", cap_name(cap_id),
|
|
||||||
inst->capabilities->cap[cap_id].value, hfi_value);
|
|
||||||
|
|
||||||
rc = msm_vidc_packetize_control(inst, cap_id, HFI_PAYLOAD_32_PACKED,
|
rc = msm_vidc_packetize_control(inst, cap_id, HFI_PAYLOAD_32_PACKED,
|
||||||
&hfi_value, sizeof(u32), __func__);
|
&hfi_value, sizeof(u32), __func__);
|
||||||
|
if (rc)
|
||||||
|
return rc;
|
||||||
|
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
@@ -1994,7 +2000,7 @@ int msm_vidc_set_slice_count(void* instance,
|
|||||||
slice_mode = inst->capabilities->cap[SLICE_MODE].value;
|
slice_mode = inst->capabilities->cap[SLICE_MODE].value;
|
||||||
|
|
||||||
if (slice_mode == V4L2_MPEG_VIDEO_MULTI_SLICE_MODE_SINGLE) {
|
if (slice_mode == V4L2_MPEG_VIDEO_MULTI_SLICE_MODE_SINGLE) {
|
||||||
i_vpr_l(inst, "%s: slice mode is: %u, ignore setting to fw\n",
|
i_vpr_h(inst, "%s: slice mode is: %u, ignore setting to fw\n",
|
||||||
__func__, slice_mode);
|
__func__, slice_mode);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@@ -2005,11 +2011,11 @@ int msm_vidc_set_slice_count(void* instance,
|
|||||||
hfi_value = inst->capabilities->cap[SLICE_MAX_BYTES].value;
|
hfi_value = inst->capabilities->cap[SLICE_MAX_BYTES].value;
|
||||||
set_cap_id = SLICE_MAX_BYTES;
|
set_cap_id = SLICE_MAX_BYTES;
|
||||||
}
|
}
|
||||||
i_vpr_h(inst, "set cap: name: %24s, value: %#10x, hfi: %#10x\n", cap_name(cap_id),
|
|
||||||
inst->capabilities->cap[cap_id].value, hfi_value);
|
|
||||||
|
|
||||||
rc = msm_vidc_packetize_control(inst, set_cap_id, HFI_PAYLOAD_U32,
|
rc = msm_vidc_packetize_control(inst, set_cap_id, HFI_PAYLOAD_U32,
|
||||||
&hfi_value, sizeof(u32), __func__);
|
&hfi_value, sizeof(u32), __func__);
|
||||||
|
if (rc)
|
||||||
|
return rc;
|
||||||
|
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
@@ -2033,11 +2039,11 @@ int msm_vidc_set_nal_length(void* instance,
|
|||||||
if (rc)
|
if (rc)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
i_vpr_h(inst, "set cap: name: %24s, value: %#10x, hfi: %#10x\n", cap_name(cap_id),
|
|
||||||
inst->capabilities->cap[cap_id].value, hfi_value);
|
|
||||||
|
|
||||||
rc = msm_vidc_packetize_control(inst, cap_id, HFI_PAYLOAD_U32_ENUM,
|
rc = msm_vidc_packetize_control(inst, cap_id, HFI_PAYLOAD_U32_ENUM,
|
||||||
&hfi_value, sizeof(u32), __func__);
|
&hfi_value, sizeof(u32), __func__);
|
||||||
|
if (rc)
|
||||||
|
return rc;
|
||||||
|
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
@@ -2077,9 +2083,6 @@ int msm_vidc_set_layer_count_and_type(void *instance,
|
|||||||
/* hfi baselayer starts from 1 */
|
/* hfi baselayer starts from 1 */
|
||||||
hfi_layer_count = inst->capabilities->cap[ENH_LAYER_COUNT].value + 1;
|
hfi_layer_count = inst->capabilities->cap[ENH_LAYER_COUNT].value + 1;
|
||||||
|
|
||||||
i_vpr_h(inst, "set cap: name: %24s, value: %#10x, hfi: %#10x\n", cap_name(cap_id),
|
|
||||||
inst->capabilities->cap[cap_id].value, hfi_layer_count);
|
|
||||||
|
|
||||||
rc = msm_vidc_packetize_control(inst, cap_id, HFI_PAYLOAD_U32,
|
rc = msm_vidc_packetize_control(inst, cap_id, HFI_PAYLOAD_U32,
|
||||||
&hfi_layer_count, sizeof(u32), __func__);
|
&hfi_layer_count, sizeof(u32), __func__);
|
||||||
if (rc)
|
if (rc)
|
||||||
@@ -2111,11 +2114,11 @@ int msm_vidc_set_gop_size(void *instance,
|
|||||||
}
|
}
|
||||||
|
|
||||||
hfi_value = inst->capabilities->cap[GOP_SIZE].value;
|
hfi_value = inst->capabilities->cap[GOP_SIZE].value;
|
||||||
i_vpr_h(inst, "set cap: name: %24s, value: %#10x, hfi: %#10x\n", cap_name(cap_id),
|
|
||||||
inst->capabilities->cap[cap_id].value, hfi_value);
|
|
||||||
|
|
||||||
rc = msm_vidc_packetize_control(inst, cap_id, HFI_PAYLOAD_U32,
|
rc = msm_vidc_packetize_control(inst, cap_id, HFI_PAYLOAD_U32,
|
||||||
&hfi_value, sizeof(u32), __func__);
|
&hfi_value, sizeof(u32), __func__);
|
||||||
|
if (rc)
|
||||||
|
return rc;
|
||||||
|
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
@@ -2181,12 +2184,10 @@ int msm_vidc_set_bitrate(void *instance,
|
|||||||
|
|
||||||
set_total_bitrate:
|
set_total_bitrate:
|
||||||
hfi_value = inst->capabilities->cap[BIT_RATE].value;
|
hfi_value = inst->capabilities->cap[BIT_RATE].value;
|
||||||
|
|
||||||
i_vpr_h(inst, "set cap: name: %24s, value: %#10x, hfi: %#10x\n", cap_name(cap_id),
|
|
||||||
inst->capabilities->cap[cap_id].value, hfi_value);
|
|
||||||
|
|
||||||
rc = msm_vidc_packetize_control(inst, BIT_RATE, HFI_PAYLOAD_U32,
|
rc = msm_vidc_packetize_control(inst, BIT_RATE, HFI_PAYLOAD_U32,
|
||||||
&hfi_value, sizeof(u32), __func__);
|
&hfi_value, sizeof(u32), __func__);
|
||||||
|
if (rc)
|
||||||
|
return rc;
|
||||||
exit:
|
exit:
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
@@ -2205,11 +2206,10 @@ int msm_vidc_set_session_priority(void *instance,
|
|||||||
|
|
||||||
hfi_value = (inst->capabilities->cap[cap_id].value * 2) + inst->priority_level;
|
hfi_value = (inst->capabilities->cap[cap_id].value * 2) + inst->priority_level;
|
||||||
|
|
||||||
i_vpr_h(inst, "set cap: name: %24s, value: %#10x, hfi: %#10x\n", cap_name(cap_id),
|
|
||||||
inst->capabilities->cap[cap_id].value, hfi_value);
|
|
||||||
|
|
||||||
rc = msm_vidc_packetize_control(inst, cap_id, HFI_PAYLOAD_U32,
|
rc = msm_vidc_packetize_control(inst, cap_id, HFI_PAYLOAD_U32,
|
||||||
&hfi_value, sizeof(u32), __func__);
|
&hfi_value, sizeof(u32), __func__);
|
||||||
|
if (rc)
|
||||||
|
return rc;
|
||||||
|
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
@@ -2260,11 +2260,10 @@ int msm_vidc_set_q16(void *instance,
|
|||||||
|
|
||||||
hfi_value = inst->capabilities->cap[cap_id].value;
|
hfi_value = inst->capabilities->cap[cap_id].value;
|
||||||
|
|
||||||
i_vpr_h(inst, "set cap: name: %24s, value: %#10x, hfi: %#10x\n", cap_name(cap_id),
|
|
||||||
inst->capabilities->cap[cap_id].value, hfi_value);
|
|
||||||
|
|
||||||
rc = msm_vidc_packetize_control(inst, cap_id, HFI_PAYLOAD_Q16,
|
rc = msm_vidc_packetize_control(inst, cap_id, HFI_PAYLOAD_Q16,
|
||||||
&hfi_value, sizeof(u32), __func__);
|
&hfi_value, sizeof(u32), __func__);
|
||||||
|
if (rc)
|
||||||
|
return rc;
|
||||||
|
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
@@ -2288,11 +2287,11 @@ int msm_vidc_set_u32(void *instance,
|
|||||||
} else {
|
} else {
|
||||||
hfi_value = inst->capabilities->cap[cap_id].value;
|
hfi_value = inst->capabilities->cap[cap_id].value;
|
||||||
}
|
}
|
||||||
i_vpr_h(inst, "set cap: name: %24s, value: %#10x, hfi: %#10x\n", cap_name(cap_id),
|
|
||||||
inst->capabilities->cap[cap_id].value, hfi_value);
|
|
||||||
|
|
||||||
rc = msm_vidc_packetize_control(inst, cap_id, HFI_PAYLOAD_U32,
|
rc = msm_vidc_packetize_control(inst, cap_id, HFI_PAYLOAD_U32,
|
||||||
&hfi_value, sizeof(u32), __func__);
|
&hfi_value, sizeof(u32), __func__);
|
||||||
|
if (rc)
|
||||||
|
return rc;
|
||||||
|
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
@@ -2313,11 +2312,10 @@ int msm_vidc_set_u32_enum(void *instance,
|
|||||||
if (rc)
|
if (rc)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
||||||
i_vpr_h(inst, "set cap: name: %24s, value: %#10x, hfi: %#10x\n", cap_name(cap_id),
|
|
||||||
inst->capabilities->cap[cap_id].value, hfi_value);
|
|
||||||
|
|
||||||
rc = msm_vidc_packetize_control(inst, cap_id, HFI_PAYLOAD_U32_ENUM,
|
rc = msm_vidc_packetize_control(inst, cap_id, HFI_PAYLOAD_U32_ENUM,
|
||||||
&hfi_value, sizeof(u32), __func__);
|
&hfi_value, sizeof(u32), __func__);
|
||||||
|
if (rc)
|
||||||
|
return rc;
|
||||||
|
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
@@ -2335,58 +2333,10 @@ int msm_vidc_set_s32(void *instance,
|
|||||||
}
|
}
|
||||||
hfi_value = inst->capabilities->cap[cap_id].value;
|
hfi_value = inst->capabilities->cap[cap_id].value;
|
||||||
|
|
||||||
i_vpr_h(inst, "set cap: name: %24s, value: %#10x, hfi: %#10x\n", cap_name(cap_id),
|
|
||||||
inst->capabilities->cap[cap_id].value, hfi_value);
|
|
||||||
|
|
||||||
rc = msm_vidc_packetize_control(inst, cap_id, HFI_PAYLOAD_S32,
|
rc = msm_vidc_packetize_control(inst, cap_id, HFI_PAYLOAD_S32,
|
||||||
&hfi_value, sizeof(s32), __func__);
|
&hfi_value, sizeof(s32), __func__);
|
||||||
|
if (rc)
|
||||||
return rc;
|
return rc;
|
||||||
}
|
|
||||||
|
|
||||||
/* Please ignore this function for now. TO DO*/
|
|
||||||
int msm_vidc_set_array(void *instance,
|
|
||||||
enum msm_vidc_inst_capability_type cap_id)
|
|
||||||
{
|
|
||||||
int rc = 0;
|
|
||||||
struct msm_vidc_inst_capability *capability;
|
|
||||||
struct msm_vidc_core *core;
|
|
||||||
|
|
||||||
struct msm_vidc_inst *inst = (struct msm_vidc_inst *)instance;
|
|
||||||
|
|
||||||
if (!inst || !inst->core || !inst->capabilities) {
|
|
||||||
d_vpr_e("%s: invalid params\n", __func__);
|
|
||||||
return -EINVAL;
|
|
||||||
}
|
|
||||||
|
|
||||||
capability = inst->capabilities;
|
|
||||||
core = (struct msm_vidc_core *)inst->core;
|
|
||||||
|
|
||||||
switch (cap_id) {
|
|
||||||
/*
|
|
||||||
* Needed if any control needs to be packed into a structure
|
|
||||||
* and sent for packetization.
|
|
||||||
* payload types may be:
|
|
||||||
* STRUCTURE, BLOB, STRING, PACKED, ARRAY,
|
|
||||||
*
|
|
||||||
case BITRATE_MODE:
|
|
||||||
i_vpr_h(inst, "%s: %d\n", __func__, hfi_value);
|
|
||||||
hfi_create_packet(inst->packet, inst->packet_size,
|
|
||||||
offset,
|
|
||||||
capability->cap[cap_id].hfi_id,
|
|
||||||
HFI_HOST_FLAGS_NONE, HFI_PAYLOAD_ENUM,
|
|
||||||
HFI_PORT_NONE, core->packet_id++,
|
|
||||||
&capability->cap[PROFILE].value, sizeof(u32));
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
default:
|
|
||||||
i_vpr_e(inst,
|
|
||||||
"%s: Unknown cap id %d, cannot set to fw\n",
|
|
||||||
__func__, cap_id);
|
|
||||||
rc = -EINVAL;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
@@ -116,11 +116,9 @@ static const struct msm_vidc_cap_name cap_name_arr[] = {
|
|||||||
{I_FRAME_MAX_QP, "I_FRAME_MAX_QP" },
|
{I_FRAME_MAX_QP, "I_FRAME_MAX_QP" },
|
||||||
{P_FRAME_MAX_QP, "P_FRAME_MAX_QP" },
|
{P_FRAME_MAX_QP, "P_FRAME_MAX_QP" },
|
||||||
{B_FRAME_MAX_QP, "B_FRAME_MAX_QP" },
|
{B_FRAME_MAX_QP, "B_FRAME_MAX_QP" },
|
||||||
{HEVC_HIER_QP, "HEVC_HIER_QP" },
|
|
||||||
{I_FRAME_QP, "I_FRAME_QP" },
|
{I_FRAME_QP, "I_FRAME_QP" },
|
||||||
{P_FRAME_QP, "P_FRAME_QP" },
|
{P_FRAME_QP, "P_FRAME_QP" },
|
||||||
{B_FRAME_QP, "B_FRAME_QP" },
|
{B_FRAME_QP, "B_FRAME_QP" },
|
||||||
{HIER_LAYER_QP, "HIER_LAYER_QP" },
|
|
||||||
{LAYER_TYPE, "LAYER_TYPE" },
|
{LAYER_TYPE, "LAYER_TYPE" },
|
||||||
{LAYER_ENABLE, "LAYER_ENABLE" },
|
{LAYER_ENABLE, "LAYER_ENABLE" },
|
||||||
{ENH_LAYER_COUNT, "ENH_LAYER_COUNT" },
|
{ENH_LAYER_COUNT, "ENH_LAYER_COUNT" },
|
||||||
|
Reference in New Issue
Block a user