msm: vidc: Drop Frame logic

Change the filled length of the buffer to 0 with
BUFFERFLAG_DROP_FRAME & BUFFERFLAG_DECODE_ONLY set so that the
driver's client can resubmit the buffers instead of sending to
display.

CRs-Fixed: 2016195
Change-Id: I294b14b45391e8bf620afc0b19cdf64ef690fd20
Signed-off-by: Umesh Pandey <umeshp@codeaurora.org>
diff --git a/drivers/media/platform/msm/vidc/msm_vidc_common.c b/drivers/media/platform/msm/vidc/msm_vidc_common.c
index 4f5309d..302c306 100644
--- a/drivers/media/platform/msm/vidc/msm_vidc_common.c
+++ b/drivers/media/platform/msm/vidc/msm_vidc_common.c
@@ -2441,6 +2441,9 @@
 
 	if (vb) {
 		vbuf = to_vb2_v4l2_buffer(vb);
+		if (fill_buf_done->flags1 & HAL_BUFFERFLAG_DROP_FRAME ||
+			fill_buf_done->flags1 & HAL_BUFFERFLAG_DECODEONLY)
+			fill_buf_done->filled_len1 = 0;
 		vb->planes[0].bytesused = fill_buf_done->filled_len1;
 		vb->planes[0].data_offset = fill_buf_done->offset1;
 		if (vb->planes[0].data_offset > vb->planes[0].length)
@@ -2492,7 +2495,8 @@
 			vbuf->flags |= V4L2_QCOM_BUF_FLAG_IDRFRAME;
 		if (fill_buf_done->flags1 & HAL_BUFFERFLAG_EOSEQ)
 			vbuf->flags |= V4L2_QCOM_BUF_FLAG_EOSEQ;
-		if (fill_buf_done->flags1 & HAL_BUFFERFLAG_DECODEONLY)
+		if (fill_buf_done->flags1 & HAL_BUFFERFLAG_DECODEONLY ||
+			fill_buf_done->flags1 & HAL_BUFFERFLAG_DROP_FRAME)
 			vbuf->flags |= V4L2_QCOM_BUF_FLAG_DECODEONLY;
 		if (fill_buf_done->flags1 & HAL_BUFFERFLAG_DATACORRUPT)
 			vbuf->flags |= V4L2_QCOM_BUF_DATA_CORRUPT;
@@ -2579,7 +2583,7 @@
 		goto err_seq_hdr_done;
 	}
 	vbuf = to_vb2_v4l2_buffer(vb);
-//	vb->timestamp = (u64) ns_to_timeval(0);
+	vb->timestamp = 0;
 
 	vb->planes[0].bytesused = fill_buf_done->filled_len1;
 	vb->planes[0].data_offset = fill_buf_done->offset1;