]> git.sesse.net Git - vlc/commitdiff
Report interlacing in debug output.
authorAntoine Cellerier <dionoea@videolan.org>
Tue, 31 Mar 2009 17:07:14 +0000 (19:07 +0200)
committerAntoine Cellerier <dionoea@videolan.org>
Tue, 31 Mar 2009 17:15:06 +0000 (19:15 +0200)
modules/access/v4l2.c

index a9b982bb50963d3ff4607fc9b8d604bcffe60f08..33f8299e2631879e1cd438f0d82096a395bf9b46 100644 (file)
@@ -1940,7 +1940,7 @@ static int OpenVideoDev( vlc_object_t *p_obj, demux_sys_t *p_sys, bool b_demux )
 
     fmt.fmt.pix.width = p_sys->i_width;
     fmt.fmt.pix.height = p_sys->i_height;
-    fmt.fmt.pix.field = V4L2_FIELD_INTERLACED;
+    fmt.fmt.pix.field = V4L2_FIELD_NONE;
 
     /* Test and set Chroma */
     fmt.fmt.pix.pixelformat = 0;
@@ -2008,6 +2008,45 @@ static int OpenVideoDev( vlc_object_t *p_obj, demux_sys_t *p_sys, bool b_demux )
     p_sys->i_width = fmt.fmt.pix.width;
     p_sys->i_height = fmt.fmt.pix.height;
 
+    /* Check interlacing */
+    if( v4l2_ioctl( i_fd, VIDIOC_G_FMT, &fmt ) < 0 ) {;}
+    switch( fmt.fmt.pix.field )
+    {
+        case V4L2_FIELD_NONE:
+            msg_Dbg( p_demux, "Interlacing setting: progressive" );
+            break;
+        case V4L2_FIELD_TOP:
+            msg_Dbg( p_demux, "Interlacing setting: top field only" );
+            break;
+        case V4L2_FIELD_BOTTOM:
+            msg_Dbg( p_demux, "Interlacing setting: bottom field only" );
+            break;
+        case V4L2_FIELD_INTERLACED:
+            msg_Dbg( p_demux, "Interlacing setting: interleaved (bottom top if M/NTSC, top bottom otherwise)" );
+            break;
+        case V4L2_FIELD_SEQ_TB:
+            msg_Dbg( p_demux, "Interlacing setting: sequential top bottom" );
+            break;
+        case V4L2_FIELD_SEQ_BT:
+            msg_Dbg( p_demux, "Interlacing setting: sequential bottom top" );
+            break;
+        case V4L2_FIELD_ALTERNATE:
+            msg_Dbg( p_demux, "Interlacing setting: alternate fields" );
+            break;
+        case V4L2_FIELD_INTERLACED_TB:
+            msg_Dbg( p_demux, "Interlacing setting: interleaved top bottom" );
+            break;
+        case V4L2_FIELD_INTERLACED_BT:
+            msg_Dbg( p_demux, "Interlacing setting: interleaved bottom top" );
+            break;
+        default:
+            msg_Warn( p_demux, "Interlacing setting: unknown type (%d)",
+                      fmt.fmt.pix.field );
+            break;
+    }
+    if( fmt.fmt.pix.field != V4L2_FIELD_NONE )
+        msg_Warn( p_demux, "Interlaced inputs haven't been tested. Please report any issue." );
+
     /* Look up final fourcc */
     p_sys->i_fourcc = 0;
     for( int i = 0; v4l2chroma_to_fourcc[i].i_fourcc != 0; i++ )