diff --git a/msm/vidc/msm_vidc.c b/msm/vidc/msm_vidc.c index 8243a1a88737..7f78071d585d 100644 --- a/msm/vidc/msm_vidc.c +++ b/msm/vidc/msm_vidc.c @@ -366,7 +366,7 @@ int msm_vidc_qbuf(void *instance, struct media_device *mdev, int rc = 0; unsigned int i = 0; struct buf_queue *q = NULL; - u64 timestamp_us = 0; + s64 timestamp_us = 0; u32 cr = 0; if (!inst || !inst->core || !b || !valid_v4l2_buffer(b, inst)) { @@ -430,7 +430,7 @@ int msm_vidc_qbuf(void *instance, struct media_device *mdev, && b->type == INPUT_MPLANE) b->flags |= V4L2_BUF_FLAG_PERF_MODE; - timestamp_us = (u64)((b->timestamp.tv_sec * 1000000ULL) + + timestamp_us = (s64)((b->timestamp.tv_sec * 1000000) + b->timestamp.tv_usec); if (is_decode_session(inst) && b->type == INPUT_MPLANE) { if (inst->flush_timestamps) diff --git a/msm/vidc/msm_vidc_common.c b/msm/vidc/msm_vidc_common.c index f92584b6a485..652334c646c4 100644 --- a/msm/vidc/msm_vidc_common.c +++ b/msm/vidc/msm_vidc_common.c @@ -7600,7 +7600,7 @@ void msm_comm_release_timestamps(struct msm_vidc_inst *inst) mutex_unlock(&inst->timestamps.lock); } -int msm_comm_store_timestamp(struct msm_vidc_inst *inst, u64 timestamp_us, +int msm_comm_store_timestamp(struct msm_vidc_inst *inst, s64 timestamp_us, bool is_eos) { struct msm_vidc_timestamps *entry, *node, *prev = NULL; @@ -7794,8 +7794,8 @@ int msm_comm_fetch_ts_framerate(struct msm_vidc_inst *inst, if (!(b->flags & V4L2_BUF_FLAG_END_OF_SUBFRAME)) node->is_valid = false; - b->timestamp.tv_sec = node->timestamp_us / 1000000ull; - b->timestamp.tv_usec = node->timestamp_us % 1000000ull; + b->timestamp.tv_sec = node->timestamp_us / 1000000; + b->timestamp.tv_usec = node->timestamp_us % 1000000; b->m.planes[0].reserved[MSM_VIDC_FRAMERATE] = node->framerate; break; } diff --git a/msm/vidc/msm_vidc_common.h b/msm/vidc/msm_vidc_common.h index 7880f6d7a5d7..e46c5bbd9f62 100644 --- a/msm/vidc/msm_vidc_common.h +++ b/msm/vidc/msm_vidc_common.h @@ -400,7 +400,7 @@ int msm_comm_set_cvp_skip_ratio(struct msm_vidc_inst *inst, uint32_t capture_rate, uint32_t cvp_rate); int msm_comm_fetch_ts_framerate(struct msm_vidc_inst *inst, struct v4l2_buffer *b); -int msm_comm_store_timestamp(struct msm_vidc_inst *inst, u64 timestamp_us, +int msm_comm_store_timestamp(struct msm_vidc_inst *inst, s64 timestamp_us, bool is_eos); void msm_comm_release_timestamps(struct msm_vidc_inst *inst); u32 msm_comm_get_max_framerate(struct msm_vidc_inst *inst); diff --git a/msm/vidc/msm_vidc_internal.h b/msm/vidc/msm_vidc_internal.h index f57f36e455c9..e04ac940ace2 100644 --- a/msm/vidc/msm_vidc_internal.h +++ b/msm/vidc/msm_vidc_internal.h @@ -236,7 +236,7 @@ struct msm_vidc_codec { struct msm_vidc_timestamps { struct list_head list; - u64 timestamp_us; + s64 timestamp_us; u32 framerate; bool is_valid; bool is_eos;