-/*****************************************************************************
- * Init: initialize Deinterlace video thread output method
- *****************************************************************************/
-static int Init( vout_thread_t *p_vout )
-{
- int i_index;
- picture_t *p_pic;
- video_format_t fmt = {0};
-
- I_OUTPUTPICTURES = 0;
-
- /* Initialize the output structure, full of directbuffers since we want
- * the decoder to output directly to our structures. */
- switch( p_vout->render.i_chroma )
- {
- case VLC_FOURCC('I','4','2','0'):
- case VLC_FOURCC('I','Y','U','V'):
- case VLC_FOURCC('Y','V','1','2'):
- case VLC_FOURCC('I','4','2','2'):
- p_vout->output.i_chroma = p_vout->render.i_chroma;
- p_vout->output.i_width = p_vout->render.i_width;
- p_vout->output.i_height = p_vout->render.i_height;
- p_vout->output.i_aspect = p_vout->render.i_aspect;
- break;
-
- default:
- return VLC_EGENERIC; /* unknown chroma */
- break;
- }
-
- msg_Dbg( p_vout, "spawning the real video output" );
-
- fmt.i_width = fmt.i_visible_width = p_vout->output.i_width;
- fmt.i_height = fmt.i_visible_height = p_vout->output.i_height;
- fmt.i_x_offset = fmt.i_y_offset = 0;
- fmt.i_chroma = p_vout->output.i_chroma;
- fmt.i_aspect = p_vout->output.i_aspect;
- fmt.i_sar_num = p_vout->output.i_aspect * fmt.i_height / fmt.i_width;
- fmt.i_sar_den = VOUT_ASPECT_FACTOR;
-
- switch( p_vout->render.i_chroma )
- {
- case VLC_FOURCC('I','4','2','0'):
- case VLC_FOURCC('I','Y','U','V'):
- case VLC_FOURCC('Y','V','1','2'):
- p_vout->p_sys->p_vout = vout_Create( p_vout, &fmt );
- break;
- default:
- break;
- }
-
- /* Everything failed */
- if( p_vout->p_sys->p_vout == NULL )
- {
- msg_Err( p_vout, "cannot open vout, aborting" );
-
- return VLC_EGENERIC;
- }
-
- ALLOCATE_DIRECTBUFFERS( VOUT_MAX_PICTURES );
-
- ADD_CALLBACKS( p_vout->p_sys->p_vout, SendEvents );
-
- ADD_PARENT_CALLBACKS( SendEventsToChild );