- int i_index, i_chroma;
- char *psz_chroma;
- picture_t *p_pic;
- vlc_bool_t b_chroma = 0;
-
- psz_chroma = config_GetPsz( p_vout, "dummy-chroma" );
- if( psz_chroma )
- {
- if( strlen( psz_chroma ) >= 4 )
- {
- i_chroma = VLC_FOURCC( psz_chroma[0], psz_chroma[1],
- psz_chroma[2], psz_chroma[3] );
- b_chroma = 1;
- }
-
- free( psz_chroma );
- }
-
- I_OUTPUTPICTURES = 0;
-
- /* Initialize the output structure */
- if( b_chroma )
- {
- msg_Dbg( p_vout, "forcing chroma 0x%.8x (%4.4s)",
- i_chroma, (char*)&i_chroma );
- p_vout->output.i_chroma = i_chroma;
- if ( i_chroma == VLC_FOURCC( 'R', 'G', 'B', '2' ) )
- {
- p_vout->output.pf_setpalette = SetPalette;
- }
- 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;
- }
- else
- {
- /* Use same chroma as input */
- p_vout->output.i_chroma = p_vout->render.i_chroma;
- p_vout->output.i_rmask = p_vout->render.i_rmask;
- p_vout->output.i_gmask = p_vout->render.i_gmask;
- p_vout->output.i_bmask = p_vout->render.i_bmask;
- 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;
- }
-
- /* Try to initialize DUMMY_MAX_DIRECTBUFFERS direct buffers */
- while( I_OUTPUTPICTURES < DUMMY_MAX_DIRECTBUFFERS )
- {
- p_pic = NULL;
-
- /* Find an empty picture slot */
- for( i_index = 0 ; i_index < VOUT_MAX_PICTURES ; i_index++ )
- {
- if( p_vout->p_picture[ i_index ].i_status == FREE_PICTURE )
- {
- p_pic = p_vout->p_picture + i_index;
- break;
- }
- }
-
- /* Allocate the picture */
- if( p_pic == NULL )
- {
- break;
- }
-
- vout_AllocatePicture( VLC_OBJECT(p_vout), p_pic, p_vout->output.i_chroma,
- p_vout->output.i_width, p_vout->output.i_height,
- p_vout->output.i_aspect );
-
- if( p_pic->i_planes == 0 )
- {
- break;
- }
-
- p_pic->i_status = DESTROYED_PICTURE;
- p_pic->i_type = DIRECT_PICTURE;
-
- PP_OUTPUTPICTURE[ I_OUTPUTPICTURES ] = p_pic;