diff --git a/sys/v4l2/gstv4l2bufferpool.c b/sys/v4l2/gstv4l2bufferpool.c index c13bb1efd2..b8c61bac56 100644 --- a/sys/v4l2/gstv4l2bufferpool.c +++ b/sys/v4l2/gstv4l2bufferpool.c @@ -30,6 +30,8 @@ #include #include +#include "gst/video/video.h" + #include #include "gstv4l2src.h" #include "gstv4l2sink.h" @@ -545,6 +547,12 @@ gst_v4l2_buffer_pool_dqbuf (GstV4l2BufferPool * pool) GST_V4L2_BUFFER_POOL_UNLOCK (pool); + /* set top/bottom field first if v4l2_buffer has the information */ + if (buffer.field == V4L2_FIELD_INTERLACED_TB) + GST_BUFFER_FLAG_SET (pool_buffer, GST_VIDEO_BUFFER_TFF); + if (buffer.field == V4L2_FIELD_INTERLACED_BT) + GST_BUFFER_FLAG_UNSET (pool_buffer, GST_VIDEO_BUFFER_TFF); + /* this can change at every frame, esp. with jpeg */ GST_BUFFER_SIZE (pool_buffer) = buffer.bytesused;