+ if( v4l2_ioctl( i_fd, VIDIOC_G_FMT, &fmt ) < 0 ) {;}
+ /* Print extra info */
+ msg_Dbg( p_obj, "Driver requires at most %d bytes to store a complete image", fmt.fmt.pix.sizeimage );
+ /* Check interlacing */
+ switch( fmt.fmt.pix.field )
+ {
+ case V4L2_FIELD_NONE:
+ msg_Dbg( p_obj, "Interlacing setting: progressive" );
+ break;
+ case V4L2_FIELD_TOP:
+ msg_Dbg( p_obj, "Interlacing setting: top field only" );
+ break;
+ case V4L2_FIELD_BOTTOM:
+ msg_Dbg( p_obj, "Interlacing setting: bottom field only" );
+ break;
+ case V4L2_FIELD_INTERLACED:
+ msg_Dbg( p_obj, "Interlacing setting: interleaved (bottom top if M/NTSC, top bottom otherwise)" );
+ if( p_sys->i_selected_standard_id == V4L2_STD_NTSC )
+ p_sys->i_block_flags = BLOCK_FLAG_BOTTOM_FIELD_FIRST;
+ else
+ p_sys->i_block_flags = BLOCK_FLAG_TOP_FIELD_FIRST;
+ break;
+ case V4L2_FIELD_SEQ_TB:
+ msg_Dbg( p_obj, "Interlacing setting: sequential top bottom (TODO)" );
+ break;
+ case V4L2_FIELD_SEQ_BT:
+ msg_Dbg( p_obj, "Interlacing setting: sequential bottom top (TODO)" );
+ break;
+ case V4L2_FIELD_ALTERNATE:
+ msg_Dbg( p_obj, "Interlacing setting: alternate fields (TODO)" );
+ p_sys->i_height = p_sys->i_height * 2;
+ break;
+ case V4L2_FIELD_INTERLACED_TB:
+ msg_Dbg( p_obj, "Interlacing setting: interleaved top bottom" );
+ p_sys->i_block_flags = BLOCK_FLAG_TOP_FIELD_FIRST;
+ break;
+ case V4L2_FIELD_INTERLACED_BT:
+ msg_Dbg( p_obj, "Interlacing setting: interleaved bottom top" );
+ p_sys->i_block_flags = BLOCK_FLAG_BOTTOM_FIELD_FIRST;
+ break;
+ default:
+ msg_Warn( p_obj, "Interlacing setting: unknown type (%d)",
+ fmt.fmt.pix.field );
+ break;
+ }
+