Commit 309f4d62 authored by Sakari Ailus's avatar Sakari Ailus Committed by Mauro Carvalho Chehab
Browse files

[media] v4l: Copy timestamp source flags to destination on m2m devices



Copy the flags containing the timestamp source from source buffer flags to
the destination buffer flags on memory-to-memory devices. This is analogous
to copying the timestamp field from source to destination.

Signed-off-by: default avatarSakari Ailus <sakari.ailus@iki.fi>
Acked-by: default avatarKamil Debski <k.debski@samsung.com>
Signed-off-by: default avatarMauro Carvalho Chehab <m.chehab@samsung.com>
parent 599b0892
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -2829,6 +2829,9 @@ static void coda_finish_encode(struct coda_ctx *ctx)
	}

	dst_buf->v4l2_buf.timestamp = src_buf->v4l2_buf.timestamp;
	dst_buf->v4l2_buf.flags &= ~V4L2_BUF_FLAG_TSTAMP_SRC_MASK;
	dst_buf->v4l2_buf.flags |=
		src_buf->v4l2_buf.flags & V4L2_BUF_FLAG_TSTAMP_SRC_MASK;
	dst_buf->v4l2_buf.timecode = src_buf->v4l2_buf.timecode;

	v4l2_m2m_buf_done(src_buf, VB2_BUF_STATE_DONE);
+4 −0
Original line number Diff line number Diff line
@@ -90,6 +90,10 @@ void gsc_m2m_job_finish(struct gsc_ctx *ctx, int vb_state)
	if (src_vb && dst_vb) {
		dst_vb->v4l2_buf.timestamp = src_vb->v4l2_buf.timestamp;
		dst_vb->v4l2_buf.timecode = src_vb->v4l2_buf.timecode;
		dst_vb->v4l2_buf.flags &= ~V4L2_BUF_FLAG_TSTAMP_SRC_MASK;
		dst_vb->v4l2_buf.flags |=
			src_vb->v4l2_buf.flags
			& V4L2_BUF_FLAG_TSTAMP_SRC_MASK;

		v4l2_m2m_buf_done(src_vb, vb_state);
		v4l2_m2m_buf_done(dst_vb, vb_state);
+3 −0
Original line number Diff line number Diff line
@@ -134,6 +134,9 @@ static void fimc_device_run(void *priv)
		goto dma_unlock;

	dst_vb->v4l2_buf.timestamp = src_vb->v4l2_buf.timestamp;
	dst_vb->v4l2_buf.flags &= ~V4L2_BUF_FLAG_TSTAMP_SRC_MASK;
	dst_vb->v4l2_buf.flags |=
		src_vb->v4l2_buf.flags & V4L2_BUF_FLAG_TSTAMP_SRC_MASK;

	/* Reconfigure hardware if the context has changed. */
	if (fimc->m2m.ctx != ctx) {
+3 −0
Original line number Diff line number Diff line
@@ -208,6 +208,9 @@ static void dma_callback(void *data)
	dst_vb = v4l2_m2m_dst_buf_remove(curr_ctx->m2m_ctx);

	dst_vb->v4l2_buf.timestamp = src_vb->v4l2_buf.timestamp;
	dst_vb->v4l2_buf.flags &= ~V4L2_BUF_FLAG_TSTAMP_SRC_MASK;
	dst_vb->v4l2_buf.flags |=
		src_vb->v4l2_buf.flags & V4L2_BUF_FLAG_TSTAMP_SRC_MASK;
	dst_vb->v4l2_buf.timecode = src_vb->v4l2_buf.timecode;

	v4l2_m2m_buf_done(src_vb, VB2_BUF_STATE_DONE);
+3 −0
Original line number Diff line number Diff line
@@ -239,6 +239,9 @@ static int device_process(struct m2mtest_ctx *ctx,
	memcpy(&out_vb->v4l2_buf.timestamp,
			&in_vb->v4l2_buf.timestamp,
			sizeof(struct timeval));
	out_vb->v4l2_buf.flags &= ~V4L2_BUF_FLAG_TSTAMP_SRC_MASK;
	out_vb->v4l2_buf.flags |=
		in_vb->v4l2_buf.flags & V4L2_BUF_FLAG_TSTAMP_SRC_MASK;

	switch (ctx->mode) {
	case MEM2MEM_HFLIP | MEM2MEM_VFLIP:
Loading