X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=include%2Fvlc_es.h;h=ad45797bfa591d6a4f77f7d33900f7dabdde1bc1;hb=c7d6aad63acbb25785b77fdee040b095db2018e1;hp=c8d3051c0aa7f9e39e154da4a5e15b6affb544d4;hpb=62b9f5b0251b41dbcb2a38902e03fc70cf3677ab;p=vlc diff --git a/include/vlc_es.h b/include/vlc_es.h index c8d3051c0a..ad45797bfa 100644 --- a/include/vlc_es.h +++ b/include/vlc_es.h @@ -21,28 +21,12 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. *****************************************************************************/ -#if !defined( __LIBVLC__ ) - #error You are not libvlc or one of its plugins. You cannot include this file -#endif - -#ifndef _VLC_ES_H -#define _VLC_ES_H 1 - -#ifdef WORDS_BIGENDIAN -# define VLC_FOURCC( a, b, c, d ) \ - ( ((uint32_t)d) | ( ((uint32_t)c) << 8 ) \ - | ( ((uint32_t)b) << 16 ) | ( ((uint32_t)a) << 24 ) ) -# define VLC_TWOCC( a, b ) \ - ( (uint16_t)(b) | ( (uint16_t)(a) << 8 ) ) - -#else -# define VLC_FOURCC( a, b, c, d ) \ - ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \ - | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) ) -# define VLC_TWOCC( a, b ) \ - ( (uint16_t)(a) | ( (uint16_t)(b) << 8 ) ) +#ifndef VLC_ES_H +#define VLC_ES_H 1 -#endif +/* FIXME: i'm not too sure about this include but it fixes compilation of + * video chromas -- dionoea */ +#include "vlc_common.h" /** * \file @@ -146,6 +130,9 @@ struct video_format_t unsigned int i_frame_rate_base; /**< frame rate denominator */ int i_rmask, i_gmask, i_bmask; /**< color masks for RGB chroma */ + int i_rrshift, i_lrshift; + int i_rgshift, i_lgshift; + int i_rbshift, i_lbshift; video_palette_t *p_palette; /**< video palette from demuxer */ }; @@ -224,107 +211,36 @@ struct es_format_t }; /* ES Categories */ -#define UNKNOWN_ES 0x00 -#define VIDEO_ES 0x01 -#define AUDIO_ES 0x02 -#define SPU_ES 0x03 -#define NAV_ES 0x04 - -static inline void es_format_Init( es_format_t *fmt, - int i_cat, vlc_fourcc_t i_codec ) -{ - fmt->i_cat = i_cat; - fmt->i_codec = i_codec; - fmt->i_id = -1; - fmt->i_group = 0; - fmt->i_priority = 0; - fmt->psz_language = NULL; - fmt->psz_description = NULL; - - fmt->i_extra_languages = 0; - fmt->p_extra_languages = NULL; - - memset( &fmt->audio, 0, sizeof(audio_format_t) ); - memset( &fmt->audio_replay_gain, 0, sizeof(audio_replay_gain_t) ); - memset( &fmt->video, 0, sizeof(video_format_t) ); - memset( &fmt->subs, 0, sizeof(subs_format_t) ); - - fmt->b_packetized = true; - fmt->i_bitrate = 0; - fmt->i_extra = 0; - fmt->p_extra = NULL; -} - -static inline int es_format_Copy( es_format_t *dst, const es_format_t *src ) +enum es_format_category_e { - int i; - memcpy( dst, src, sizeof( es_format_t ) ); - if( src->psz_language ) - dst->psz_language = strdup( src->psz_language ); - if( src->psz_description ) - dst->psz_description = strdup( src->psz_description ); - if( src->i_extra > 0 ) - { - dst->i_extra = src->i_extra; - dst->p_extra = malloc( src->i_extra ); - memcpy( dst->p_extra, src->p_extra, src->i_extra ); - } - else - { - dst->i_extra = 0; - dst->p_extra = NULL; - } + UNKNOWN_ES = 0x00, + VIDEO_ES = 0x01, + AUDIO_ES = 0x02, + SPU_ES = 0x03, + NAV_ES = 0x04, +}; - if( src->subs.psz_encoding ) - dst->subs.psz_encoding = strdup( src->subs.psz_encoding ); +/** + * This function will fill all RGB shift from RGB masks. + */ +VLC_EXPORT( void, video_format_FixRgb, ( video_format_t * ) ); - if( src->video.p_palette ) - { - dst->video.p_palette = - (video_palette_t*)malloc( sizeof( video_palette_t ) ); - memcpy( dst->video.p_palette, src->video.p_palette, - sizeof( video_palette_t ) ); - } - - dst->i_extra_languages = src->i_extra_languages; - if( dst->i_extra_languages ) - dst->p_extra_languages = (extra_languages_t*) - malloc(dst->i_extra_languages * sizeof(*dst->p_extra_languages )); - for( i = 0; i < dst->i_extra_languages; i++ ) { - if( src->p_extra_languages[i].psz_language ) - dst->p_extra_languages[i].psz_language = strdup( src->p_extra_languages[i].psz_language ); - else - dst->p_extra_languages[i].psz_language = NULL; - if( src->p_extra_languages[i].psz_description ) - dst->p_extra_languages[i].psz_description = strdup( src->p_extra_languages[i].psz_description ); - else - dst->p_extra_languages[i].psz_description = NULL; - } - return VLC_SUCCESS; -} - -static inline void es_format_Clean( es_format_t *fmt ) -{ - free( fmt->psz_language ); - free( fmt->psz_description ); +/** + * This funtion will initialize a es_format_t structure. + */ +VLC_EXPORT( void, es_format_Init, ( es_format_t *, int i_cat, vlc_fourcc_t i_codec ) ); - if( fmt->i_extra > 0 ) free( fmt->p_extra ); +/** + * This functions will copy a es_format_t. + */ +VLC_EXPORT( int, es_format_Copy, ( es_format_t *p_dst, const es_format_t *p_src ) ); - free( fmt->video.p_palette ); - free( fmt->subs.psz_encoding ); +/** + * This function will clean up a es_format_t and relasing all associated + * resources. + * You can call it multiple times on the same structure. + */ +VLC_EXPORT( void, es_format_Clean, ( es_format_t *fmt ) ); - if( fmt->i_extra_languages > 0 && fmt->p_extra_languages ) - { - int i; - for( i = 0; i < fmt->i_extra_languages; i++ ) - { - free( fmt->p_extra_languages[i].psz_language ); - free( fmt->p_extra_languages[i].psz_description ); - } - free( fmt->p_extra_languages ); - } - - /* es_format_Clean can be called multiple times */ - memset( fmt, 0, sizeof(*fmt) ); -} #endif +