video: driver: update required fields of stream parm struct
- Set capability for capture and output plane. - Update denominator and numerator of timeperframe structure to default values if set with zero. Fixes: v4l2-compliance: testParm(VIDIOC_S/G_PARM) for encoder. Change-Id: Ib9d92f07fc526a11253ac5d1adc1b639eef3632e Signed-off-by: Dikshita Agarwal <dikshita@codeaurora.org>
Tento commit je obsažen v:
@@ -1535,18 +1535,22 @@ int msm_venc_s_param(struct msm_vidc_inst *inst,
|
||||
timeperframe = &s_parm->parm.output.timeperframe;
|
||||
max_rate = capability->cap[OPERATING_RATE].max >> 16;
|
||||
default_rate = capability->cap[OPERATING_RATE].value >> 16;
|
||||
s_parm->parm.output.capability = V4L2_CAP_TIMEPERFRAME;
|
||||
} else {
|
||||
timeperframe = &s_parm->parm.capture.timeperframe;
|
||||
is_frame_rate = true;
|
||||
max_rate = capability->cap[FRAME_RATE].max >> 16;
|
||||
default_rate = capability->cap[FRAME_RATE].value >> 16;
|
||||
s_parm->parm.capture.capability = V4L2_CAP_TIMEPERFRAME;
|
||||
}
|
||||
|
||||
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;
|
||||
i_vpr_e(inst, "%s: type %s, invalid rate, update with default\n",
|
||||
__func__, v4l2_type_name(s_parm->type));
|
||||
if (!timeperframe->numerator)
|
||||
timeperframe->numerator = 1;
|
||||
if (!timeperframe->denominator)
|
||||
timeperframe->denominator = default_rate;
|
||||
}
|
||||
|
||||
us_per_frame = timeperframe->numerator * (u64)USEC_PER_SEC;
|
||||
@@ -1561,7 +1565,6 @@ int msm_venc_s_param(struct msm_vidc_inst *inst,
|
||||
input_rate = (u64)USEC_PER_SEC;
|
||||
do_div(input_rate, us_per_frame);
|
||||
|
||||
set_default:
|
||||
i_vpr_h(inst, "%s: type %s, %s value %d\n",
|
||||
__func__, v4l2_type_name(s_parm->type),
|
||||
is_frame_rate ? "frame rate" : "operating rate", input_rate);
|
||||
@@ -1643,11 +1646,13 @@ int msm_venc_g_param(struct msm_vidc_inst *inst,
|
||||
timeperframe->numerator = 1;
|
||||
timeperframe->denominator =
|
||||
capability->cap[OPERATING_RATE].value >> 16;
|
||||
s_parm->parm.output.capability = V4L2_CAP_TIMEPERFRAME;
|
||||
} else {
|
||||
timeperframe = &s_parm->parm.capture.timeperframe;
|
||||
timeperframe->numerator = 1;
|
||||
timeperframe->denominator =
|
||||
capability->cap[FRAME_RATE].value >> 16;
|
||||
s_parm->parm.capture.capability = V4L2_CAP_TIMEPERFRAME;
|
||||
}
|
||||
|
||||
i_vpr_h(inst, "%s: type %s, num %u denom %u\n",
|
||||
|
Odkázat v novém úkolu
Zablokovat Uživatele