summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--drivers/media/platform/msm/vidc/msm_venc.c72
1 files changed, 5 insertions, 67 deletions
diff --git a/drivers/media/platform/msm/vidc/msm_venc.c b/drivers/media/platform/msm/vidc/msm_venc.c
index 14b62984eae9..5c9dc6a53223 100644
--- a/drivers/media/platform/msm/vidc/msm_venc.c
+++ b/drivers/media/platform/msm/vidc/msm_venc.c
@@ -1552,52 +1552,6 @@ static int msm_venc_toggle_hier_p(struct msm_vidc_inst *inst, int layers)
return rc;
}
-static int set_bitrate_for_each_layer(struct msm_vidc_inst *inst,
- u32 num_enh_layers, u32 total_bitrate)
-{
- u32 property_id = 0;
- int i = 0, rc = 0;
- struct hfi_device *hdev = NULL;
- struct hal_bitrate bitrate;
- struct hal_enable enable;
- int bitrate_table[3][4] = {
- {50, 50, 0, 0},
- {34, 33, 33, 0},
- {25, 25, 25, 25}
- };
-
- if (!inst || !inst->core || !inst->core->device) {
- dprintk(VIDC_ERR, "%s - invalid input\n", __func__);
- return -EINVAL;
- }
-
- if (!num_enh_layers || num_enh_layers > ARRAY_SIZE(bitrate_table)) {
- dprintk(VIDC_ERR, "%s - invalid number of enh layers: %d\n",
- __func__, num_enh_layers);
- return -EINVAL;
- }
- hdev = inst->core->device;
-
- property_id = HAL_PARAM_VENC_BITRATE_TYPE;
- enable.enable = V4L2_CID_MPEG_VIDC_VIDEO_VENC_BITRATE_ENABLE;
- rc = call_hfi_op(hdev, session_set_property,
- (void *)inst->session, property_id, &enable);
- if (rc) {
- dprintk(VIDC_ERR, "Failed to set layerwise bitrate\n");
- return false;
- }
-
- for (i = 0; !rc && i <= num_enh_layers; i++) {
- property_id = HAL_CONFIG_VENC_TARGET_BITRATE;
- bitrate.bit_rate = (u32)((total_bitrate *
- bitrate_table[num_enh_layers - 1][i]) / 100);
- bitrate.layer_id = i;
- rc = call_hfi_op(hdev, session_set_property,
- (void *)inst->session, property_id, &bitrate);
- }
- return rc;
-}
-
static inline int msm_venc_power_save_mode_enable(struct msm_vidc_inst *inst)
{
u32 rc = 0;
@@ -2269,26 +2223,10 @@ static int try_set_ctrl(struct msm_vidc_inst *inst, struct v4l2_ctrl *ctrl)
}
case V4L2_CID_MPEG_VIDEO_BITRATE:
{
- struct v4l2_ctrl *hier_p = TRY_GET_CTRL(
- V4L2_CID_MPEG_VIDC_VIDEO_HIER_P_NUM_LAYERS);
-
+ property_id = HAL_CONFIG_VENC_TARGET_BITRATE;
+ bitrate.bit_rate = ctrl->val;
bitrate.layer_id = 0;
- if (hier_p->val &&
- inst->fmts[CAPTURE_PORT]->fourcc ==
- V4L2_PIX_FMT_H264) {
- rc = set_bitrate_for_each_layer(inst,
- hier_p->val, ctrl->val);
- if (rc) {
- dprintk(VIDC_ERR,
- "failed to set bitrate for multiple layers\n");
- rc = -EINVAL;
- }
- } else {
- property_id = HAL_CONFIG_VENC_TARGET_BITRATE;
- bitrate.bit_rate = ctrl->val;
- bitrate.layer_id = 0;
- pdata = &bitrate;
- }
+ pdata = &bitrate;
break;
}
case V4L2_CID_MPEG_VIDEO_BITRATE_PEAK:
@@ -3236,8 +3174,8 @@ static int try_set_ext_ctrl(struct msm_vidc_inst *inst,
bitrate.bit_rate = control[i].value;
property_id = HAL_CONFIG_VENC_TARGET_BITRATE;
pdata = &bitrate;
- dprintk(VIDC_DBG, "layerwise bitrate for %d\n",
- i);
+ dprintk(VIDC_DBG, "bitrate for layer(%d)=%d\n",
+ i, bitrate.bit_rate);
rc = call_hfi_op(hdev, session_set_property,
(void *)inst->session, property_id,
pdata);