From b1a132ad57c384f0d2fe4a22cf0d7de0817b1bc7 Mon Sep 17 00:00:00 2001 From: Shi Zhongbo Date: Mon, 10 Aug 2020 13:52:36 +0800 Subject: [PATCH] msm: vidc: revise timestamp data type to s64 Revise internal timestamp data type from u64 to s64 in case of negative timestamps. Change-Id: Ib026d504a08ce5ac67d1d962b671c37637761321 Signed-off-by: Shi Zhongbo --- msm/vidc/msm_vidc.c | 4 ++-- msm/vidc/msm_vidc_common.c | 6 +++--- msm/vidc/msm_vidc_common.h | 2 +- msm/vidc/msm_vidc_internal.h | 2 +- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/msm/vidc/msm_vidc.c b/msm/vidc/msm_vidc.c index 8243a1a887378..7f78071d585d0 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 f92584b6a4854..652334c646c46 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 7880f6d7a5d75..e46c5bbd9f622 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 f57f36e455c96..e04ac940ace2a 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;