Re: [REVIEWv2 PATCH 07/13] vb2: reject output buffers with V4L2_FIELD_ALTERNATE

2014-04-09 Thread Pawel Osciak
On Mon, Apr 7, 2014 at 10:11 PM, Hans Verkuil hverk...@xs4all.nl wrote:
 From: Hans Verkuil hans.verk...@cisco.com

 This is not allowed by the spec and does in fact not make any sense.
 Return -EINVAL if this is the case.

 Signed-off-by: Hans Verkuil hans.verk...@cisco.com

Acked-by: Pawel Osciak pa...@osciak.com

 ---
  drivers/media/v4l2-core/videobuf2-core.c | 13 +
  1 file changed, 13 insertions(+)

 diff --git a/drivers/media/v4l2-core/videobuf2-core.c 
 b/drivers/media/v4l2-core/videobuf2-core.c
 index b7de6be..c662ad9 100644
 --- a/drivers/media/v4l2-core/videobuf2-core.c
 +++ b/drivers/media/v4l2-core/videobuf2-core.c
 @@ -1511,6 +1511,19 @@ static int __buf_prepare(struct vb2_buffer *vb, const 
 struct v4l2_buffer *b)
 dprintk(1, plane parameters verification failed: %d\n, ret);
 return ret;
 }
 +   if (b-field == V4L2_FIELD_ALTERNATE  V4L2_TYPE_IS_OUTPUT(q-type)) 
 {
 +   /*
 +* If the format's field is ALTERNATE, then the buffer's field
 +* should be either TOP or BOTTOM, not ALTERNATE since that
 +* makes no sense. The driver has to know whether the
 +* buffer represents a top or a bottom field in order to
 +* program any DMA correctly. Using ALTERNATE is wrong, since
 +* that just says that it is either a top or a bottom field,
 +* but not which of the two it is.
 +*/
 +   dprintk(1, the field is incorrectly set to ALTERNATE for an 
 output buffer\n);
 +   return -EINVAL;
 +   }

 vb-state = VB2_BUF_STATE_PREPARING;
 vb-v4l2_buf.timestamp.tv_sec = 0;
 --
 1.9.1




-- 
Best regards,
Pawel Osciak
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[REVIEWv2 PATCH 07/13] vb2: reject output buffers with V4L2_FIELD_ALTERNATE

2014-04-07 Thread Hans Verkuil
From: Hans Verkuil hans.verk...@cisco.com

This is not allowed by the spec and does in fact not make any sense.
Return -EINVAL if this is the case.

Signed-off-by: Hans Verkuil hans.verk...@cisco.com
---
 drivers/media/v4l2-core/videobuf2-core.c | 13 +
 1 file changed, 13 insertions(+)

diff --git a/drivers/media/v4l2-core/videobuf2-core.c 
b/drivers/media/v4l2-core/videobuf2-core.c
index b7de6be..c662ad9 100644
--- a/drivers/media/v4l2-core/videobuf2-core.c
+++ b/drivers/media/v4l2-core/videobuf2-core.c
@@ -1511,6 +1511,19 @@ static int __buf_prepare(struct vb2_buffer *vb, const 
struct v4l2_buffer *b)
dprintk(1, plane parameters verification failed: %d\n, ret);
return ret;
}
+   if (b-field == V4L2_FIELD_ALTERNATE  V4L2_TYPE_IS_OUTPUT(q-type)) {
+   /*
+* If the format's field is ALTERNATE, then the buffer's field
+* should be either TOP or BOTTOM, not ALTERNATE since that
+* makes no sense. The driver has to know whether the
+* buffer represents a top or a bottom field in order to
+* program any DMA correctly. Using ALTERNATE is wrong, since
+* that just says that it is either a top or a bottom field,
+* but not which of the two it is.
+*/
+   dprintk(1, the field is incorrectly set to ALTERNATE for an 
output buffer\n);
+   return -EINVAL;
+   }
 
vb-state = VB2_BUF_STATE_PREPARING;
vb-v4l2_buf.timestamp.tv_sec = 0;
-- 
1.9.1

--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html