Commit 4179a9e5 authored by Laurent Aimar's avatar Laurent Aimar

Added video_format_Setup to replace vout_InitFormat.

parent b110c387
...@@ -171,6 +171,12 @@ static inline void video_format_Clean( video_format_t *p_src ) ...@@ -171,6 +171,12 @@ static inline void video_format_Clean( video_format_t *p_src )
p_src->p_palette = NULL; p_src->p_palette = NULL;
} }
/**
* It will fill up a video_format_tvideo_format_t using the given arguments.
* Becarefull that the video_format_t must already be initialized.
*/
VLC_EXPORT( void, video_format_Setup, ( video_format_t *, vlc_fourcc_t i_chroma, int i_width, int i_height, int i_aspect ) );
/** /**
* subtitles format description * subtitles format description
*/ */
......
...@@ -423,6 +423,7 @@ var_SetChecked ...@@ -423,6 +423,7 @@ var_SetChecked
__var_TriggerCallback __var_TriggerCallback
__var_Type __var_Type
video_format_FixRgb video_format_FixRgb
video_format_Setup
vlc_avcodec_mutex vlc_avcodec_mutex
vlc_b64_decode vlc_b64_decode
vlc_b64_decode_binary vlc_b64_decode_binary
......
...@@ -128,6 +128,80 @@ void video_format_FixRgb( video_format_t *p_fmt ) ...@@ -128,6 +128,80 @@ void video_format_FixRgb( video_format_t *p_fmt )
p_fmt->i_bmask ); p_fmt->i_bmask );
} }
void video_format_Setup( video_format_t *p_fmt, vlc_fourcc_t i_chroma, int i_width, int i_height, int i_aspect )
{
p_fmt->i_chroma = vlc_fourcc_GetCodec( VIDEO_ES, i_chroma );
p_fmt->i_width =
p_fmt->i_visible_width = i_width;
p_fmt->i_height =
p_fmt->i_visible_height = i_height;
p_fmt->i_x_offset =
p_fmt->i_y_offset = 0;
p_fmt->i_aspect = i_aspect;
switch( p_fmt->i_chroma )
{
case VLC_CODEC_YUVA:
p_fmt->i_bits_per_pixel = 32;
break;
case VLC_CODEC_I444:
case VLC_CODEC_J444:
p_fmt->i_bits_per_pixel = 24;
break;
case VLC_CODEC_I422:
case VLC_CODEC_YUYV:
case VLC_CODEC_YVYU:
case VLC_CODEC_UYVY:
case VLC_CODEC_VYUY:
case VLC_CODEC_J422:
p_fmt->i_bits_per_pixel = 16;
break;
case VLC_CODEC_I440:
case VLC_CODEC_J440:
p_fmt->i_bits_per_pixel = 16;
break;
case VLC_CODEC_I411:
case VLC_CODEC_YV12:
case VLC_CODEC_I420:
case VLC_CODEC_J420:
p_fmt->i_bits_per_pixel = 12;
break;
case VLC_CODEC_I410:
p_fmt->i_bits_per_pixel = 9;
break;
case VLC_CODEC_Y211:
p_fmt->i_bits_per_pixel = 8;
break;
case VLC_CODEC_YUVP:
p_fmt->i_bits_per_pixel = 8;
break;
case VLC_CODEC_RGB32:
case VLC_CODEC_RGBA:
p_fmt->i_bits_per_pixel = 32;
break;
case VLC_CODEC_RGB24:
p_fmt->i_bits_per_pixel = 24;
break;
case VLC_CODEC_RGB15:
case VLC_CODEC_RGB16:
p_fmt->i_bits_per_pixel = 16;
break;
case VLC_CODEC_RGB8:
p_fmt->i_bits_per_pixel = 8;
break;
case VLC_CODEC_GREY:
case VLC_CODEC_RGBP:
p_fmt->i_bits_per_pixel = 8;
break;
default:
p_fmt->i_bits_per_pixel = 0;
break;
}
}
void es_format_Init( es_format_t *fmt, void es_format_Init( es_format_t *fmt,
int i_cat, vlc_fourcc_t i_codec ) int i_cat, vlc_fourcc_t i_codec )
{ {
......
...@@ -605,81 +605,7 @@ int __vout_AllocatePicture( vlc_object_t *p_this, picture_t *p_pic, ...@@ -605,81 +605,7 @@ int __vout_AllocatePicture( vlc_object_t *p_this, picture_t *p_pic,
void vout_InitFormat( video_frame_format_t *p_format, vlc_fourcc_t i_chroma, void vout_InitFormat( video_frame_format_t *p_format, vlc_fourcc_t i_chroma,
int i_width, int i_height, int i_aspect ) int i_width, int i_height, int i_aspect )
{ {
p_format->i_chroma = i_chroma; video_format_Setup( p_format, i_chroma, i_width, i_height, i_aspect );
p_format->i_width = p_format->i_visible_width = i_width;
p_format->i_height = p_format->i_visible_height = i_height;
p_format->i_x_offset = p_format->i_y_offset = 0;
p_format->i_aspect = i_aspect;
#if 0
/* Assume we have square pixels */
if( i_width && i_height )
p_format->i_aspect = i_width * VOUT_ASPECT_FACTOR / i_height;
else
p_format->i_aspect = 0;
#endif
switch( vlc_fourcc_GetCodec( VIDEO_ES, i_chroma ) )
{
case VLC_CODEC_YUVA:
p_format->i_bits_per_pixel = 32;
break;
case VLC_CODEC_I444:
case VLC_CODEC_J444:
p_format->i_bits_per_pixel = 24;
break;
case VLC_CODEC_I422:
case VLC_CODEC_YUYV:
case VLC_CODEC_YVYU:
case VLC_CODEC_UYVY:
case VLC_CODEC_VYUY:
case VLC_CODEC_J422:
p_format->i_bits_per_pixel = 16;
break;
case VLC_CODEC_I440:
case VLC_CODEC_J440:
p_format->i_bits_per_pixel = 16;
break;
case VLC_CODEC_I411:
case VLC_CODEC_YV12:
case VLC_CODEC_I420:
case VLC_CODEC_J420:
p_format->i_bits_per_pixel = 12;
break;
case VLC_CODEC_I410:
p_format->i_bits_per_pixel = 9;
break;
case VLC_CODEC_Y211:
p_format->i_bits_per_pixel = 8;
break;
case VLC_CODEC_YUVP:
p_format->i_bits_per_pixel = 8;
break;
case VLC_CODEC_RGB32:
case VLC_CODEC_RGBA:
p_format->i_bits_per_pixel = 32;
break;
case VLC_CODEC_RGB24:
p_format->i_bits_per_pixel = 24;
break;
case VLC_CODEC_RGB15:
case VLC_CODEC_RGB16:
p_format->i_bits_per_pixel = 16;
break;
case VLC_CODEC_RGB8:
p_format->i_bits_per_pixel = 8;
break;
case VLC_CODEC_GREY:
case VLC_CODEC_RGBP:
p_format->i_bits_per_pixel = 8;
break;
default:
p_format->i_bits_per_pixel = 0;
break;
}
} }
/** /**
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment