@@ -405,7 +405,6 @@ enum venus_inst_modes {
* @tss: timestamp metadata
* @payloads: cache plane payload to use it for clock/BW scaling
* @fps: holds current FPS
- * @timeperframe: holds current time per frame structure
* @fmt_out: a reference to output format structure
* @fmt_cap: a reference to capture format structure
* @num_input_bufs: holds number of input buffers
@@ -476,7 +475,6 @@ struct venus_inst {
struct venus_ts_metadata tss[VIDEO_MAX_FRAME];
unsigned long payloads[VIDEO_MAX_FRAME];
u64 fps;
- struct v4l2_fract timeperframe;
const struct venus_format *fmt_out;
const struct venus_format *fmt_cap;
unsigned int num_input_bufs;
@@ -471,10 +471,12 @@ static int vdec_s_parm(struct file *file, void *fh, struct v4l2_streamparm *a)
return -EINVAL;
memset(cap->reserved, 0, sizeof(cap->reserved));
- if (!timeperframe->denominator)
- timeperframe->denominator = inst->timeperframe.denominator;
- if (!timeperframe->numerator)
- timeperframe->numerator = inst->timeperframe.numerator;
+
+ if (!timeperframe->numerator || !timeperframe->denominator) {
+ timeperframe->numerator = 1;
+ timeperframe->denominator = inst->fps;
+ }
+
cap->readbuffers = 0;
cap->extendedmode = 0;
cap->capability = V4L2_CAP_TIMEPERFRAME;
@@ -488,7 +490,8 @@ static int vdec_s_parm(struct file *file, void *fh, struct v4l2_streamparm *a)
do_div(fps, us_per_frame);
inst->fps = fps;
- inst->timeperframe = *timeperframe;
+ timeperframe->numerator = 1;
+ timeperframe->denominator = inst->fps;
return 0;
}
@@ -1613,8 +1616,6 @@ static void vdec_inst_init(struct venus_inst *inst)
inst->out_width = frame_width_min(inst);
inst->out_height = frame_height_min(inst);
inst->fps = 30;
- inst->timeperframe.numerator = 1;
- inst->timeperframe.denominator = 30;
inst->opb_buftype = HFI_BUFFER_OUTPUT;
}
@@ -401,10 +401,10 @@ static int venc_s_parm(struct file *file, void *fh, struct v4l2_streamparm *a)
memset(out->reserved, 0, sizeof(out->reserved));
- if (!timeperframe->denominator)
- timeperframe->denominator = inst->timeperframe.denominator;
- if (!timeperframe->numerator)
- timeperframe->numerator = inst->timeperframe.numerator;
+ if (!timeperframe->numerator || !timeperframe->denominator) {
+ timeperframe->numerator = 1;
+ timeperframe->denominator = inst->fps;
+ }
out->capability = V4L2_CAP_TIMEPERFRAME;
@@ -417,8 +417,10 @@ static int venc_s_parm(struct file *file, void *fh, struct v4l2_streamparm *a)
fps = (u64)USEC_PER_SEC;
do_div(fps, us_per_frame);
- inst->timeperframe = *timeperframe;
inst->fps = fps;
+ timeperframe->numerator = 1;
+ timeperframe->denominator = inst->fps;
+
return 0;
}
@@ -432,7 +434,8 @@ static int venc_g_parm(struct file *file, void *fh, struct v4l2_streamparm *a)
return -EINVAL;
a->parm.output.capability |= V4L2_CAP_TIMEPERFRAME;
- a->parm.output.timeperframe = inst->timeperframe;
+ a->parm.output.timeperframe.numerator = 1;
+ a->parm.output.timeperframe.denominator = inst->fps;
return 0;
}
@@ -1455,8 +1458,6 @@ static void venc_inst_init(struct venus_inst *inst)
inst->out_width = 1280;
inst->out_height = 720;
inst->fps = 15;
- inst->timeperframe.numerator = 1;
- inst->timeperframe.denominator = 15;
inst->hfi_codec = HFI_VIDEO_CODEC_H264;
}
The driver only cares about whole fps. We can infer the timeperframe from the fps field. Remove the redundant field. Signed-off-by: Ricardo Ribalda <ribalda@chromium.org> --- drivers/media/platform/qcom/venus/core.h | 2 -- drivers/media/platform/qcom/venus/vdec.c | 15 ++++++++------- drivers/media/platform/qcom/venus/venc.c | 17 +++++++++-------- 3 files changed, 17 insertions(+), 17 deletions(-)