video: driver: Add support to handle GOP and its dependencies
Add support to below mentioned properties: - HFI_PROP_LAYER_ENCODING_TYPE - HFI_PROP_LAYER_COUNT - HFI_PROP_MAX_GOP_FRAMES - HFI_PROP_MAX_B_FRAMES. Change-Id: I3be975a48dc668d0ec83f6ff13837488fc570b78 Signed-off-by: Akshata Sahukar <asahukar@codeaurora.org>
Cette révision appartient à :
@@ -60,6 +60,7 @@ static struct msm_platform_core_capability core_data_waipio[] = {
|
||||
{MAX_MBPS_HQ, 489600}, /* ((1920x1088)/256)@60fps */
|
||||
{MAX_MBPF_B_FRAME, 32640}, /* 3840x2176/256 */
|
||||
{MAX_MBPS_B_FRAME, 1958400}, /* 3840x2176/256 MBs@60fps */
|
||||
{MAX_ENH_LAYER_COUNT, 5},
|
||||
{NUM_VPP_PIPE, 4},
|
||||
{SW_PC, 1},
|
||||
{SW_PC_DELAY, 20000}, /* 20000 ms (>HW_RESPONSE_TIMEOUT)*/
|
||||
@@ -193,12 +194,6 @@ static struct msm_platform_inst_capability instance_data_waipio[] = {
|
||||
{SCALE_X, DEC, H264|HEVC|VP9, 65536, 65536, 1, 65536},
|
||||
{SCALE_Y, ENC, H264|HEVC, 8192, 65536, 1, 8192},
|
||||
{SCALE_Y, DEC, H264|HEVC|VP9, 65536, 65536, 1, 65536},
|
||||
{B_FRAME, ENC, H264|HEVC,
|
||||
V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE,
|
||||
1, V4L2_MPEG_MSM_VIDC_DISABLE,
|
||||
V4L2_CID_MPEG_VIDEO_B_FRAMES,
|
||||
HFI_PROP_MAX_B_FRAMES,
|
||||
CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT},
|
||||
|
||||
{MB_CYCLES_VSP, ENC, CODECS_ALL, 25, 25, 1, 25},
|
||||
{MB_CYCLES_VSP, DEC, CODECS_ALL, 25, 25, 1, 25},
|
||||
@@ -328,7 +323,8 @@ 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},
|
||||
{LTR_COUNT, IR_RANDOM, TIME_DELTA_BASED_RC, I_FRAME_QP,
|
||||
ENH_LAYER_COUNT},
|
||||
msm_vidc_adjust_bitrate_mode, msm_vidc_set_u32_enum},
|
||||
|
||||
{BITRATE_MODE, ENC, HEVC,
|
||||
@@ -343,7 +339,7 @@ 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, CONSTANT_QUALITY},
|
||||
I_FRAME_QP, CONSTANT_QUALITY, ENH_LAYER_COUNT},
|
||||
msm_vidc_adjust_bitrate_mode, msm_vidc_set_u32_enum},
|
||||
|
||||
{LOSSLESS, ENC, HEVC|HEIC,
|
||||
@@ -375,14 +371,14 @@ static struct msm_platform_inst_capability instance_data_waipio[] = {
|
||||
{BITRATE_MODE}, {0},
|
||||
NULL, msm_vidc_set_constant_quality},
|
||||
|
||||
// TODO: GOP dependencies
|
||||
{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_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},
|
||||
{0},
|
||||
msm_vidc_adjust_gop_size, msm_vidc_set_gop_size},
|
||||
|
||||
{GOP_CLOSURE, ENC, H264|HEVC,
|
||||
V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE,
|
||||
@@ -390,6 +386,15 @@ static struct msm_platform_inst_capability instance_data_waipio[] = {
|
||||
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 | CAP_FLAG_DYNAMIC_ALLOWED,
|
||||
{ENH_LAYER_COUNT},
|
||||
{0},
|
||||
msm_vidc_adjust_b_frame, msm_vidc_set_u32},
|
||||
|
||||
{BLUR_TYPES, ENC, CODECS_ALL,
|
||||
VIDC_BLUR_NONE, VIDC_BLUR_ADAPTIVE, 1, VIDC_BLUR_NONE,
|
||||
V4L2_CID_MPEG_VIDC_VIDEO_BLUR_TYPES,
|
||||
@@ -662,8 +667,7 @@ static struct msm_platform_inst_capability instance_data_waipio[] = {
|
||||
HFI_PROP_QP_PACKED,
|
||||
CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT},
|
||||
|
||||
// TODO: Enable while reveiwing support for layer encoding
|
||||
{HIER_CODING_TYPE, ENC, HEVC,
|
||||
{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) |
|
||||
@@ -671,12 +675,9 @@ static struct msm_platform_inst_capability instance_data_waipio[] = {
|
||||
V4L2_MPEG_VIDEO_HEVC_HIERARCHICAL_CODING_P,
|
||||
V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_TYPE,
|
||||
HFI_PROP_LAYER_ENCODING_TYPE,
|
||||
CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU,
|
||||
{0}, {0},
|
||||
NULL, NULL},
|
||||
CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU},
|
||||
|
||||
/* TODO(AS) - ctrl init failing. Need to fix
|
||||
{HIER_CODING_TYPE, ENC, H264,
|
||||
{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) |
|
||||
@@ -684,29 +685,32 @@ static struct msm_platform_inst_capability instance_data_waipio[] = {
|
||||
V4L2_MPEG_VIDEO_H264_HIERARCHICAL_CODING_P,
|
||||
V4L2_CID_MPEG_VIDEO_H264_HIERARCHICAL_CODING_TYPE,
|
||||
HFI_PROP_LAYER_ENCODING_TYPE,
|
||||
CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU},
|
||||
*/
|
||||
CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU},
|
||||
|
||||
//TODO (AS)
|
||||
{HIER_CODING, ENC, H264,
|
||||
{LAYER_ENABLE, ENC, H264,
|
||||
V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE,
|
||||
1, V4L2_MPEG_MSM_VIDC_DISABLE,
|
||||
V4L2_CID_MPEG_VIDEO_H264_HIERARCHICAL_CODING,
|
||||
HFI_PROP_LAYER_ENCODING_TYPE,
|
||||
CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT},
|
||||
CAP_FLAG_OUTPUT_PORT},
|
||||
|
||||
// TODO: add relationship with GOP_SIZE in caps
|
||||
{HIER_CODING_LAYER, ENC, HEVC,
|
||||
{ENH_LAYER_COUNT, ENC, HEVC,
|
||||
0, 5, 1, 0,
|
||||
V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_LAYER,
|
||||
HFI_PROP_LAYER_COUNT,
|
||||
CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT},
|
||||
CAP_FLAG_OUTPUT_PORT | CAP_FLAG_DYNAMIC_ALLOWED,
|
||||
{BITRATE_MODE},
|
||||
{GOP_SIZE, B_FRAME},
|
||||
msm_vidc_adjust_layer_count, msm_vidc_set_layer_count_and_type},
|
||||
|
||||
{HIER_CODING_LAYER, ENC, H264,
|
||||
0, 6, 1, 0,
|
||||
{ENH_LAYER_COUNT, ENC, H264,
|
||||
0, 5, 1, 0,
|
||||
V4L2_CID_MPEG_VIDEO_H264_HIERARCHICAL_CODING_LAYER,
|
||||
HFI_PROP_LAYER_COUNT,
|
||||
CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT},
|
||||
CAP_FLAG_OUTPUT_PORT | CAP_FLAG_DYNAMIC_ALLOWED,
|
||||
{BITRATE_MODE},
|
||||
{GOP_SIZE, B_FRAME},
|
||||
msm_vidc_adjust_layer_count, msm_vidc_set_layer_count_and_type},
|
||||
|
||||
{L0_BR, ENC, HEVC,
|
||||
1, 220000000, 1, 20000000,
|
||||
|
Référencer dans un nouveau ticket
Bloquer un utilisateur