video: driver: remove support of s_parm/g_parm for decoder
remove support of s_parm/g_parm for decoder Change-Id: I5b35b33610eb96bbfc26181c8c249316ee65b31b
Bu işleme şunda yer alıyor:
@@ -19,10 +19,6 @@ int msm_vdec_s_fmt(struct msm_vidc_inst *inst, struct v4l2_format *f);
|
||||
int msm_vdec_g_fmt(struct msm_vidc_inst *inst, struct v4l2_format *f);
|
||||
int msm_vdec_s_selection(struct msm_vidc_inst* inst, struct v4l2_selection* s);
|
||||
int msm_vdec_g_selection(struct msm_vidc_inst* inst, struct v4l2_selection* s);
|
||||
int msm_vdec_s_param(struct msm_vidc_inst *inst,
|
||||
struct v4l2_streamparm *s_parm);
|
||||
int msm_vdec_g_param(struct msm_vidc_inst *inst,
|
||||
struct v4l2_streamparm *s_parm);
|
||||
int msm_vdec_subscribe_event(struct msm_vidc_inst *inst,
|
||||
const struct v4l2_event_subscription *sub);
|
||||
int msm_vdec_enum_fmt(struct msm_vidc_inst *inst, struct v4l2_fmtdesc *f);
|
||||
|
@@ -2508,100 +2508,6 @@ int msm_vdec_g_selection(struct msm_vidc_inst* inst, struct v4l2_selection* s)
|
||||
return 0;
|
||||
}
|
||||
|
||||
int msm_vdec_s_param(struct msm_vidc_inst *inst,
|
||||
struct v4l2_streamparm *s_parm)
|
||||
{
|
||||
int rc = 0;
|
||||
struct msm_vidc_inst_capability *capability = NULL;
|
||||
struct v4l2_fract *timeperframe = NULL;
|
||||
u32 q16_rate, max_rate, default_rate;
|
||||
u64 us_per_frame = 0, input_rate = 0;
|
||||
bool is_frame_rate = false;
|
||||
|
||||
if (!inst || !s_parm) {
|
||||
d_vpr_e("%s: invalid params\n", __func__);
|
||||
return -EINVAL;
|
||||
}
|
||||
capability = inst->capabilities;
|
||||
|
||||
if (s_parm->type == V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE) {
|
||||
timeperframe = &s_parm->parm.output.timeperframe;
|
||||
max_rate = capability->cap[FRAME_RATE].max >> 16;
|
||||
default_rate = capability->cap[FRAME_RATE].value >> 16;
|
||||
is_frame_rate = true;
|
||||
} else {
|
||||
timeperframe = &s_parm->parm.capture.timeperframe;
|
||||
max_rate = capability->cap[OPERATING_RATE].max >> 16;
|
||||
default_rate = capability->cap[OPERATING_RATE].value >> 16;
|
||||
}
|
||||
|
||||
if (!timeperframe->denominator || !timeperframe->numerator) {
|
||||
i_vpr_e(inst, "%s: type %s, invalid rate\n", __func__,
|
||||
v4l2_type_name(s_parm->type));
|
||||
input_rate = default_rate;
|
||||
goto set_default;
|
||||
}
|
||||
|
||||
us_per_frame = timeperframe->numerator * (u64)USEC_PER_SEC;
|
||||
do_div(us_per_frame, timeperframe->denominator);
|
||||
|
||||
if (!us_per_frame) {
|
||||
i_vpr_e(inst, "%s: us_per_frame is zero\n", __func__);
|
||||
rc = -EINVAL;
|
||||
goto exit;
|
||||
}
|
||||
|
||||
input_rate = (u64)USEC_PER_SEC;
|
||||
do_div(input_rate, us_per_frame);
|
||||
|
||||
set_default:
|
||||
i_vpr_h(inst, "%s: type %s, %s value %llu\n",
|
||||
__func__, v4l2_type_name(s_parm->type),
|
||||
is_frame_rate ? "frame rate" : "operating rate", input_rate);
|
||||
|
||||
q16_rate = (u32)input_rate << 16;
|
||||
msm_vidc_update_cap_value(inst, is_frame_rate ? FRAME_RATE : OPERATING_RATE,
|
||||
q16_rate, __func__);
|
||||
|
||||
if (is_frame_rate)
|
||||
capability->cap[FRAME_RATE].flags |= CAP_FLAG_CLIENT_SET;
|
||||
else
|
||||
capability->cap[OPERATING_RATE].flags |= CAP_FLAG_CLIENT_SET;
|
||||
|
||||
exit:
|
||||
return rc;
|
||||
}
|
||||
|
||||
int msm_vdec_g_param(struct msm_vidc_inst *inst,
|
||||
struct v4l2_streamparm *s_parm)
|
||||
{
|
||||
struct msm_vidc_inst_capability *capability = NULL;
|
||||
struct v4l2_fract *timeperframe = NULL;
|
||||
|
||||
if (!inst || !s_parm) {
|
||||
d_vpr_e("%s: invalid params\n", __func__);
|
||||
return -EINVAL;
|
||||
}
|
||||
capability = inst->capabilities;
|
||||
|
||||
if (s_parm->type == V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE) {
|
||||
timeperframe = &s_parm->parm.output.timeperframe;
|
||||
timeperframe->numerator = 1;
|
||||
timeperframe->denominator =
|
||||
capability->cap[FRAME_RATE].value >> 16;
|
||||
} else {
|
||||
timeperframe = &s_parm->parm.capture.timeperframe;
|
||||
timeperframe->numerator = 1;
|
||||
timeperframe->denominator =
|
||||
capability->cap[OPERATING_RATE].value >> 16;
|
||||
}
|
||||
|
||||
i_vpr_h(inst, "%s: type %u, num %u denom %u\n",
|
||||
__func__, s_parm->type, timeperframe->numerator,
|
||||
timeperframe->denominator);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int msm_vdec_subscribe_event(struct msm_vidc_inst *inst,
|
||||
const struct v4l2_event_subscription *sub)
|
||||
{
|
||||
|
@@ -350,10 +350,13 @@ int msm_vidc_s_param(void *instance, struct v4l2_streamparm *param)
|
||||
param->type != V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE)
|
||||
return -EINVAL;
|
||||
|
||||
if (is_decode_session(inst))
|
||||
rc = msm_vdec_s_param(instance, param);
|
||||
else if (is_encode_session(inst))
|
||||
if (is_encode_session(inst)) {
|
||||
rc = msm_venc_s_param(instance, param);
|
||||
} else {
|
||||
i_vpr_e(inst, "%s: invalid domain %#x\n",
|
||||
__func__, inst->domain);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
return rc;
|
||||
}
|
||||
@@ -373,10 +376,13 @@ int msm_vidc_g_param(void *instance, struct v4l2_streamparm *param)
|
||||
param->type != V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE)
|
||||
return -EINVAL;
|
||||
|
||||
if (is_decode_session(inst))
|
||||
rc = msm_vdec_g_param(instance, param);
|
||||
else if (is_encode_session(inst))
|
||||
if (is_encode_session(inst)) {
|
||||
rc = msm_venc_g_param(instance, param);
|
||||
} else {
|
||||
i_vpr_e(inst, "%s: invalid domain %#x\n",
|
||||
__func__, inst->domain);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
return rc;
|
||||
}
|
||||
|
Yeni konuda referans
Bir kullanıcı engelle