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:
Dikshita Agarwal
2021-06-28 12:31:19 +05:30
rodič c7b23776f2
revize 79ac405a32

Zobrazit soubor

@@ -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",