From 4179a9e5c42cd75faac70723907f6adf86710caa Mon Sep 17 00:00:00 2001 From: Laurent Aimar Date: Sat, 16 May 2009 21:21:11 +0200 Subject: [PATCH] Added video_format_Setup to replace vout_InitFormat. --- include/vlc_es.h | 6 +++ src/libvlccore.sym | 1 + src/misc/es_format.c | 74 +++++++++++++++++++++++++++++++ src/video_output/vout_pictures.c | 76 +------------------------------- 4 files changed, 82 insertions(+), 75 deletions(-) diff --git a/include/vlc_es.h b/include/vlc_es.h index 224617fef0..c315c5fb92 100644 --- a/include/vlc_es.h +++ b/include/vlc_es.h @@ -171,6 +171,12 @@ static inline void video_format_Clean( video_format_t *p_src ) 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 */ diff --git a/src/libvlccore.sym b/src/libvlccore.sym index 1bf4afc61d..d18db7eb84 100644 --- a/src/libvlccore.sym +++ b/src/libvlccore.sym @@ -423,6 +423,7 @@ var_SetChecked __var_TriggerCallback __var_Type video_format_FixRgb +video_format_Setup vlc_avcodec_mutex vlc_b64_decode vlc_b64_decode_binary diff --git a/src/misc/es_format.c b/src/misc/es_format.c index e6a81cf95c..d5eaa471f8 100644 --- a/src/misc/es_format.c +++ b/src/misc/es_format.c @@ -128,6 +128,80 @@ void video_format_FixRgb( video_format_t *p_fmt ) 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, int i_cat, vlc_fourcc_t i_codec ) { diff --git a/src/video_output/vout_pictures.c b/src/video_output/vout_pictures.c index 3e500cdb44..29b250054a 100644 --- a/src/video_output/vout_pictures.c +++ b/src/video_output/vout_pictures.c @@ -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, int i_width, int i_height, int i_aspect ) { - p_format->i_chroma = i_chroma; - 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; - } + video_format_Setup( p_format, i_chroma, i_width, i_height, i_aspect ); } /** -- 2.39.2