Loading drivers/media/platform/msm/vidc/hfi_packetization.c +6 −0 Original line number Diff line number Diff line Loading @@ -164,6 +164,9 @@ enum hal_video_codec vidc_get_hal_codec(u32 hfi_codec) case HFI_VIDEO_CODEC_VP9: hal_codec = HAL_VIDEO_CODEC_VP9; break; case HFI_VIDEO_CODEC_TME: hal_codec = HAL_VIDEO_CODEC_TME; break; default: dprintk(VIDC_INFO, "%s: invalid codec 0x%x\n", __func__, hfi_codec); Loading Loading @@ -220,6 +223,9 @@ u32 vidc_get_hfi_codec(enum hal_video_codec hal_codec) case HAL_VIDEO_CODEC_VP9: hfi_codec = HFI_VIDEO_CODEC_VP9; break; case HAL_VIDEO_CODEC_TME: hfi_codec = HFI_VIDEO_CODEC_TME; break; default: dprintk(VIDC_INFO, "%s: invalid codec 0x%x\n", __func__, hal_codec); Loading drivers/media/platform/msm/vidc/hfi_response_handler.c +9 −0 Original line number Diff line number Diff line Loading @@ -997,6 +997,15 @@ static enum vidc_status hfi_parse_init_done_properties( num_properties--; break; } case HFI_PROPERTY_TME_VERSION_SUPPORTED: { capabilities->tme_version = *((u32 *)(data_ptr + next_offset)); next_offset += sizeof(u32); num_properties--; break; } default: dprintk(VIDC_DBG, "%s: default case - data_ptr %pK, prop_id 0x%x\n", Loading drivers/media/platform/msm/vidc/msm_venc.c +81 −0 Original line number Diff line number Diff line Loading @@ -117,6 +117,17 @@ static const char *const hevc_tier_level[] = { "Level unknown", }; static const char *const tme_profile[] = { "0", "1", "2", "3", }; static const char *const tme_level[] = { "Integer", }; static const char *const hevc_profile[] = { "Main", "Main10", Loading Loading @@ -485,6 +496,46 @@ static struct msm_vidc_ctrl msm_venc_ctrls[] = { ), .qmenu = hevc_tier_level, }, { .id = V4L2_CID_MPEG_VIDC_VIDEO_TME_PROFILE, .name = "TME Profile", .type = V4L2_CTRL_TYPE_MENU, .minimum = V4L2_MPEG_VIDC_VIDEO_TME_PROFILE_0, .maximum = V4L2_MPEG_VIDC_VIDEO_TME_PROFILE_3, .default_value = V4L2_MPEG_VIDC_VIDEO_TME_PROFILE_0, .menu_skip_mask = ~( (1 << V4L2_MPEG_VIDC_VIDEO_TME_PROFILE_0) | (1 << V4L2_MPEG_VIDC_VIDEO_TME_PROFILE_1) | (1 << V4L2_MPEG_VIDC_VIDEO_TME_PROFILE_2) | (1 << V4L2_MPEG_VIDC_VIDEO_TME_PROFILE_3) ), .qmenu = tme_profile, }, { .id = V4L2_CID_MPEG_VIDC_VIDEO_TME_LEVEL, .name = "TME Level", .type = V4L2_CTRL_TYPE_MENU, .minimum = V4L2_MPEG_VIDC_VIDEO_TME_LEVEL_INTEGER, .maximum = V4L2_MPEG_VIDC_VIDEO_TME_LEVEL_INTEGER, .default_value = V4L2_MPEG_VIDC_VIDEO_TME_LEVEL_INTEGER, .menu_skip_mask = ~( (1 << V4L2_MPEG_VIDC_VIDEO_TME_LEVEL_INTEGER) ), .qmenu = tme_level, }, { .id = V4L2_CID_MPEG_VIDC_VIDEO_TME_PAYLOAD_VERSION, .name = "TME Payload Version", .type = V4L2_CTRL_TYPE_INTEGER, .minimum = 0, .maximum = 0xFFFFFFF, .default_value = 0, .step = 1, .menu_skip_mask = 0, .flags = V4L2_CTRL_FLAG_READ_ONLY, .qmenu = NULL, }, { .id = V4L2_CID_MPEG_VIDC_VIDEO_ROTATION, .name = "Rotation", Loading Loading @@ -1064,6 +1115,13 @@ static struct msm_vidc_format venc_formats[] = { .get_frame_size = get_frame_size_tp10_ubwc, .type = OUTPUT_PORT, }, { .name = "TME", .description = "TME MBI format", .fourcc = V4L2_PIX_FMT_TME, .get_frame_size = get_frame_size_compressed, .type = CAPTURE_PORT, }, }; static int msm_venc_set_csc(struct msm_vidc_inst *inst); Loading Loading @@ -1345,6 +1403,29 @@ int msm_venc_s_ctrl(struct msm_vidc_inst *inst, struct v4l2_ctrl *ctrl) temp_ctrl->val); pdata = &profile_level; break; case V4L2_CID_MPEG_VIDC_VIDEO_TME_PROFILE: temp_ctrl = TRY_GET_CTRL(V4L2_CID_MPEG_VIDC_VIDEO_TME_LEVEL); property_id = HAL_PARAM_PROFILE_LEVEL_CURRENT; profile_level.profile = msm_comm_v4l2_to_hal(ctrl->id, ctrl->val); profile_level.level = msm_comm_v4l2_to_hal( V4L2_CID_MPEG_VIDC_VIDEO_TME_LEVEL, temp_ctrl->val); pdata = &profile_level; break; case V4L2_CID_MPEG_VIDC_VIDEO_TME_LEVEL: temp_ctrl = TRY_GET_CTRL(V4L2_CID_MPEG_VIDC_VIDEO_TME_PROFILE); property_id = HAL_PARAM_PROFILE_LEVEL_CURRENT; profile_level.level = msm_comm_v4l2_to_hal(ctrl->id, ctrl->val); profile_level.profile = msm_comm_v4l2_to_hal( V4L2_CID_MPEG_VIDC_VIDEO_TME_PROFILE, temp_ctrl->val); pdata = &profile_level; break; case V4L2_CID_MPEG_VIDC_VIDEO_ROTATION: { property_id = HAL_PARAM_VPE_ROTATION; Loading drivers/media/platform/msm/vidc/msm_vidc.c +3 −0 Original line number Diff line number Diff line Loading @@ -1453,6 +1453,9 @@ static int try_get_ctrl(struct msm_vidc_inst *inst, struct v4l2_ctrl *ctrl) } ctrl->val = bufreq->buffer_count_min_host; break; case V4L2_CID_MPEG_VIDC_VIDEO_TME_PAYLOAD_VERSION: ctrl->val = inst->capability.tme_version; break; default: /* * Other controls aren't really volatile, shouldn't need to Loading drivers/media/platform/msm/vidc/msm_vidc_common.c +29 −2 Original line number Diff line number Diff line Loading @@ -489,6 +489,26 @@ int msm_comm_v4l2_to_hal(int id, int value) default: goto unknown_value; } case V4L2_CID_MPEG_VIDC_VIDEO_TME_PROFILE: switch (value) { case V4L2_MPEG_VIDC_VIDEO_TME_PROFILE_0: return HAL_TME_PROFILE_0; case V4L2_MPEG_VIDC_VIDEO_TME_PROFILE_1: return HAL_TME_PROFILE_1; case V4L2_MPEG_VIDC_VIDEO_TME_PROFILE_2: return HAL_TME_PROFILE_2; case V4L2_MPEG_VIDC_VIDEO_TME_PROFILE_3: return HAL_TME_PROFILE_3; default: goto unknown_value; } case V4L2_CID_MPEG_VIDC_VIDEO_TME_LEVEL: switch (value) { case V4L2_MPEG_VIDC_VIDEO_TME_LEVEL_INTEGER: return HAL_TME_LEVEL_INTEGER; default: goto unknown_value; } case V4L2_CID_MPEG_VIDC_VIDEO_ROTATION: switch (value) { case V4L2_CID_MPEG_VIDC_VIDEO_ROTATION_NONE: Loading Loading @@ -792,7 +812,6 @@ enum hal_video_codec get_hal_codec(int fourcc) case V4L2_PIX_FMT_H264_MVC: codec = HAL_VIDEO_CODEC_MVC; break; case V4L2_PIX_FMT_MPEG1: codec = HAL_VIDEO_CODEC_MPEG1; break; Loading @@ -808,6 +827,9 @@ enum hal_video_codec get_hal_codec(int fourcc) case V4L2_PIX_FMT_HEVC: codec = HAL_VIDEO_CODEC_HEVC; break; case V4L2_PIX_FMT_TME: codec = HAL_VIDEO_CODEC_TME; break; default: dprintk(VIDC_ERR, "Wrong codec: %d\n", fourcc); codec = HAL_UNUSED_CODEC; Loading Loading @@ -1252,6 +1274,9 @@ static int msm_vidc_comm_update_ctrl(struct msm_vidc_inst *inst, static void msm_vidc_comm_update_ctrl_limits(struct msm_vidc_inst *inst) { if (inst->session_type == MSM_VIDC_ENCODER) { if (get_hal_codec(inst->fmts[CAPTURE_PORT].fourcc) == HAL_VIDEO_CODEC_TME) return; msm_vidc_comm_update_ctrl(inst, V4L2_CID_MPEG_VIDC_VIDEO_HYBRID_HIERP_MODE, &inst->capability.hier_p_hybrid); Loading Loading @@ -5698,7 +5723,9 @@ int msm_vidc_comm_s_parm(struct msm_vidc_inst *inst, struct v4l2_streamparm *a) dprintk(VIDC_PROF, "reported fps changed for %pK: %d->%d\n", inst, inst->prop.fps, fps); inst->prop.fps = fps; if (inst->session_type == MSM_VIDC_ENCODER) { if (inst->session_type == MSM_VIDC_ENCODER && get_hal_codec(inst->fmts[CAPTURE_PORT].fourcc) != HAL_VIDEO_CODEC_TME) { frame_rate.frame_rate = inst->prop.fps * BIT(16); frame_rate.buffer_type = HAL_BUFFER_OUTPUT; pdata = &frame_rate; Loading Loading
drivers/media/platform/msm/vidc/hfi_packetization.c +6 −0 Original line number Diff line number Diff line Loading @@ -164,6 +164,9 @@ enum hal_video_codec vidc_get_hal_codec(u32 hfi_codec) case HFI_VIDEO_CODEC_VP9: hal_codec = HAL_VIDEO_CODEC_VP9; break; case HFI_VIDEO_CODEC_TME: hal_codec = HAL_VIDEO_CODEC_TME; break; default: dprintk(VIDC_INFO, "%s: invalid codec 0x%x\n", __func__, hfi_codec); Loading Loading @@ -220,6 +223,9 @@ u32 vidc_get_hfi_codec(enum hal_video_codec hal_codec) case HAL_VIDEO_CODEC_VP9: hfi_codec = HFI_VIDEO_CODEC_VP9; break; case HAL_VIDEO_CODEC_TME: hfi_codec = HFI_VIDEO_CODEC_TME; break; default: dprintk(VIDC_INFO, "%s: invalid codec 0x%x\n", __func__, hal_codec); Loading
drivers/media/platform/msm/vidc/hfi_response_handler.c +9 −0 Original line number Diff line number Diff line Loading @@ -997,6 +997,15 @@ static enum vidc_status hfi_parse_init_done_properties( num_properties--; break; } case HFI_PROPERTY_TME_VERSION_SUPPORTED: { capabilities->tme_version = *((u32 *)(data_ptr + next_offset)); next_offset += sizeof(u32); num_properties--; break; } default: dprintk(VIDC_DBG, "%s: default case - data_ptr %pK, prop_id 0x%x\n", Loading
drivers/media/platform/msm/vidc/msm_venc.c +81 −0 Original line number Diff line number Diff line Loading @@ -117,6 +117,17 @@ static const char *const hevc_tier_level[] = { "Level unknown", }; static const char *const tme_profile[] = { "0", "1", "2", "3", }; static const char *const tme_level[] = { "Integer", }; static const char *const hevc_profile[] = { "Main", "Main10", Loading Loading @@ -485,6 +496,46 @@ static struct msm_vidc_ctrl msm_venc_ctrls[] = { ), .qmenu = hevc_tier_level, }, { .id = V4L2_CID_MPEG_VIDC_VIDEO_TME_PROFILE, .name = "TME Profile", .type = V4L2_CTRL_TYPE_MENU, .minimum = V4L2_MPEG_VIDC_VIDEO_TME_PROFILE_0, .maximum = V4L2_MPEG_VIDC_VIDEO_TME_PROFILE_3, .default_value = V4L2_MPEG_VIDC_VIDEO_TME_PROFILE_0, .menu_skip_mask = ~( (1 << V4L2_MPEG_VIDC_VIDEO_TME_PROFILE_0) | (1 << V4L2_MPEG_VIDC_VIDEO_TME_PROFILE_1) | (1 << V4L2_MPEG_VIDC_VIDEO_TME_PROFILE_2) | (1 << V4L2_MPEG_VIDC_VIDEO_TME_PROFILE_3) ), .qmenu = tme_profile, }, { .id = V4L2_CID_MPEG_VIDC_VIDEO_TME_LEVEL, .name = "TME Level", .type = V4L2_CTRL_TYPE_MENU, .minimum = V4L2_MPEG_VIDC_VIDEO_TME_LEVEL_INTEGER, .maximum = V4L2_MPEG_VIDC_VIDEO_TME_LEVEL_INTEGER, .default_value = V4L2_MPEG_VIDC_VIDEO_TME_LEVEL_INTEGER, .menu_skip_mask = ~( (1 << V4L2_MPEG_VIDC_VIDEO_TME_LEVEL_INTEGER) ), .qmenu = tme_level, }, { .id = V4L2_CID_MPEG_VIDC_VIDEO_TME_PAYLOAD_VERSION, .name = "TME Payload Version", .type = V4L2_CTRL_TYPE_INTEGER, .minimum = 0, .maximum = 0xFFFFFFF, .default_value = 0, .step = 1, .menu_skip_mask = 0, .flags = V4L2_CTRL_FLAG_READ_ONLY, .qmenu = NULL, }, { .id = V4L2_CID_MPEG_VIDC_VIDEO_ROTATION, .name = "Rotation", Loading Loading @@ -1064,6 +1115,13 @@ static struct msm_vidc_format venc_formats[] = { .get_frame_size = get_frame_size_tp10_ubwc, .type = OUTPUT_PORT, }, { .name = "TME", .description = "TME MBI format", .fourcc = V4L2_PIX_FMT_TME, .get_frame_size = get_frame_size_compressed, .type = CAPTURE_PORT, }, }; static int msm_venc_set_csc(struct msm_vidc_inst *inst); Loading Loading @@ -1345,6 +1403,29 @@ int msm_venc_s_ctrl(struct msm_vidc_inst *inst, struct v4l2_ctrl *ctrl) temp_ctrl->val); pdata = &profile_level; break; case V4L2_CID_MPEG_VIDC_VIDEO_TME_PROFILE: temp_ctrl = TRY_GET_CTRL(V4L2_CID_MPEG_VIDC_VIDEO_TME_LEVEL); property_id = HAL_PARAM_PROFILE_LEVEL_CURRENT; profile_level.profile = msm_comm_v4l2_to_hal(ctrl->id, ctrl->val); profile_level.level = msm_comm_v4l2_to_hal( V4L2_CID_MPEG_VIDC_VIDEO_TME_LEVEL, temp_ctrl->val); pdata = &profile_level; break; case V4L2_CID_MPEG_VIDC_VIDEO_TME_LEVEL: temp_ctrl = TRY_GET_CTRL(V4L2_CID_MPEG_VIDC_VIDEO_TME_PROFILE); property_id = HAL_PARAM_PROFILE_LEVEL_CURRENT; profile_level.level = msm_comm_v4l2_to_hal(ctrl->id, ctrl->val); profile_level.profile = msm_comm_v4l2_to_hal( V4L2_CID_MPEG_VIDC_VIDEO_TME_PROFILE, temp_ctrl->val); pdata = &profile_level; break; case V4L2_CID_MPEG_VIDC_VIDEO_ROTATION: { property_id = HAL_PARAM_VPE_ROTATION; Loading
drivers/media/platform/msm/vidc/msm_vidc.c +3 −0 Original line number Diff line number Diff line Loading @@ -1453,6 +1453,9 @@ static int try_get_ctrl(struct msm_vidc_inst *inst, struct v4l2_ctrl *ctrl) } ctrl->val = bufreq->buffer_count_min_host; break; case V4L2_CID_MPEG_VIDC_VIDEO_TME_PAYLOAD_VERSION: ctrl->val = inst->capability.tme_version; break; default: /* * Other controls aren't really volatile, shouldn't need to Loading
drivers/media/platform/msm/vidc/msm_vidc_common.c +29 −2 Original line number Diff line number Diff line Loading @@ -489,6 +489,26 @@ int msm_comm_v4l2_to_hal(int id, int value) default: goto unknown_value; } case V4L2_CID_MPEG_VIDC_VIDEO_TME_PROFILE: switch (value) { case V4L2_MPEG_VIDC_VIDEO_TME_PROFILE_0: return HAL_TME_PROFILE_0; case V4L2_MPEG_VIDC_VIDEO_TME_PROFILE_1: return HAL_TME_PROFILE_1; case V4L2_MPEG_VIDC_VIDEO_TME_PROFILE_2: return HAL_TME_PROFILE_2; case V4L2_MPEG_VIDC_VIDEO_TME_PROFILE_3: return HAL_TME_PROFILE_3; default: goto unknown_value; } case V4L2_CID_MPEG_VIDC_VIDEO_TME_LEVEL: switch (value) { case V4L2_MPEG_VIDC_VIDEO_TME_LEVEL_INTEGER: return HAL_TME_LEVEL_INTEGER; default: goto unknown_value; } case V4L2_CID_MPEG_VIDC_VIDEO_ROTATION: switch (value) { case V4L2_CID_MPEG_VIDC_VIDEO_ROTATION_NONE: Loading Loading @@ -792,7 +812,6 @@ enum hal_video_codec get_hal_codec(int fourcc) case V4L2_PIX_FMT_H264_MVC: codec = HAL_VIDEO_CODEC_MVC; break; case V4L2_PIX_FMT_MPEG1: codec = HAL_VIDEO_CODEC_MPEG1; break; Loading @@ -808,6 +827,9 @@ enum hal_video_codec get_hal_codec(int fourcc) case V4L2_PIX_FMT_HEVC: codec = HAL_VIDEO_CODEC_HEVC; break; case V4L2_PIX_FMT_TME: codec = HAL_VIDEO_CODEC_TME; break; default: dprintk(VIDC_ERR, "Wrong codec: %d\n", fourcc); codec = HAL_UNUSED_CODEC; Loading Loading @@ -1252,6 +1274,9 @@ static int msm_vidc_comm_update_ctrl(struct msm_vidc_inst *inst, static void msm_vidc_comm_update_ctrl_limits(struct msm_vidc_inst *inst) { if (inst->session_type == MSM_VIDC_ENCODER) { if (get_hal_codec(inst->fmts[CAPTURE_PORT].fourcc) == HAL_VIDEO_CODEC_TME) return; msm_vidc_comm_update_ctrl(inst, V4L2_CID_MPEG_VIDC_VIDEO_HYBRID_HIERP_MODE, &inst->capability.hier_p_hybrid); Loading Loading @@ -5698,7 +5723,9 @@ int msm_vidc_comm_s_parm(struct msm_vidc_inst *inst, struct v4l2_streamparm *a) dprintk(VIDC_PROF, "reported fps changed for %pK: %d->%d\n", inst, inst->prop.fps, fps); inst->prop.fps = fps; if (inst->session_type == MSM_VIDC_ENCODER) { if (inst->session_type == MSM_VIDC_ENCODER && get_hal_codec(inst->fmts[CAPTURE_PORT].fourcc) != HAL_VIDEO_CODEC_TME) { frame_rate.frame_rate = inst->prop.fps * BIT(16); frame_rate.buffer_type = HAL_BUFFER_OUTPUT; pdata = &frame_rate; Loading