v4l2src: set top field first for interlaced buffers if v4l2 exports it

https://bugzilla.gnome.org/show_bug.cgi?id=634393
This commit is contained in:
Janne Grunau 2010-11-04 19:31:45 +01:00 committed by Tim-Philipp Müller
parent 351ac54822
commit ab69275f4d

View file

@ -30,6 +30,8 @@
#include <string.h>
#include <unistd.h>
#include "gst/video/video.h"
#include <gstv4l2bufferpool.h>
#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;