[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20250704-iris-video-encoder-v1-4-b6ce24e273cf@quicinc.com>
Date: Fri, 4 Jul 2025 13:23:04 +0530
From: Dikshita Agarwal <quic_dikshita@...cinc.com>
To: Vikash Garodia <quic_vgarodia@...cinc.com>,
Abhinav Kumar
<abhinav.kumar@...ux.dev>,
Bryan O'Donoghue <bryan.odonoghue@...aro.org>,
Mauro Carvalho Chehab <mchehab@...nel.org>,
Hans Verkuil
<hverkuil@...all.nl>,
Stefan Schmidt <stefan.schmidt@...aro.org>,
"Vedang
Nagar" <quic_vnagar@...cinc.com>
CC: <linux-media@...r.kernel.org>, <linux-arm-msm@...r.kernel.org>,
<linux-kernel@...r.kernel.org>,
Dikshita Agarwal <quic_dikshita@...cinc.com>
Subject: [PATCH 04/25] media: iris: Fix buffer timestamp handling
The internal driver logic operates with timestamps in microseconds
while the buffer timestamp received by vb2 is in nanosecond, this
mismatch in units causing issue in buffer handling.
Update the timestamp handling logic by converting the buffer timestamp
to microseconds before using it internally in driver for all the
timestamp assignments, comparisons, and metadata handling.
Fixes: 17f2a485ca67 ("media: iris: implement vb2 ops for buf_queue and firmware response")
Signed-off-by: Dikshita Agarwal <quic_dikshita@...cinc.com>
---
drivers/media/platform/qcom/iris/iris_buffer.c | 6 +++---
drivers/media/platform/qcom/iris/iris_vdec.c | 1 +
2 files changed, 4 insertions(+), 3 deletions(-)
diff --git a/drivers/media/platform/qcom/iris/iris_buffer.c b/drivers/media/platform/qcom/iris/iris_buffer.c
index 9f664c241149362d44d3a8fa65e2266f9c2e80e0..809ce77744f996c23dc07ef9ecb3e8e92b709850 100644
--- a/drivers/media/platform/qcom/iris/iris_buffer.c
+++ b/drivers/media/platform/qcom/iris/iris_buffer.c
@@ -579,14 +579,14 @@ iris_helper_find_buf(struct iris_inst *inst, u32 type, u32 idx)
return v4l2_m2m_dst_buf_remove_by_idx(m2m_ctx, idx);
}
-static void iris_get_ts_metadata(struct iris_inst *inst, u64 timestamp_ns,
+static void iris_get_ts_metadata(struct iris_inst *inst, u64 timestamp_us,
struct vb2_v4l2_buffer *vbuf)
{
u32 mask = V4L2_BUF_FLAG_TIMECODE | V4L2_BUF_FLAG_TSTAMP_SRC_MASK;
u32 i;
for (i = 0; i < ARRAY_SIZE(inst->tss); ++i) {
- if (inst->tss[i].ts_ns != timestamp_ns)
+ if (inst->tss[i].ts_us != timestamp_us)
continue;
vbuf->flags &= ~mask;
@@ -653,7 +653,7 @@ int iris_vb2_buffer_done(struct iris_inst *inst, struct iris_buffer *buf)
}
state = VB2_BUF_STATE_DONE;
- vb2->timestamp = buf->timestamp;
+ vb2->timestamp = buf->timestamp * NSEC_PER_USEC;
v4l2_m2m_buf_done(vbuf, state);
return 0;
diff --git a/drivers/media/platform/qcom/iris/iris_vdec.c b/drivers/media/platform/qcom/iris/iris_vdec.c
index d670b51c5839d1fad54d34f373cf71d5f3973a96..05340e201e6538b9599387cdd57814005b904e76 100644
--- a/drivers/media/platform/qcom/iris/iris_vdec.c
+++ b/drivers/media/platform/qcom/iris/iris_vdec.c
@@ -561,6 +561,7 @@ iris_vdec_vb2_buffer_to_driver(struct vb2_buffer *vb2, struct iris_buffer *buf)
buf->data_size = vb2->planes[0].bytesused - vb2->planes[0].data_offset;
buf->flags = vbuf->flags;
buf->timestamp = vb2->timestamp;
+ do_div(buf->timestamp, NSEC_PER_USEC);
buf->attr = 0;
return 0;
--
2.34.1
Powered by blists - more mailing lists