From 5ba9cf272657c4300008f3c33bc214840b5bc0e6 Mon Sep 17 00:00:00 2001 From: Laurent Aimar Date: Tue, 4 May 2010 21:16:16 +0200 Subject: [PATCH] Splitted out spu_t and related functions to its own header. --- include/vlc_osd.h | 89 +-------------------------------- include/vlc_spu.h | 124 ++++++++++++++++++++++++++++++++++++++++++++++ src/Makefile.am | 1 + 3 files changed, 127 insertions(+), 87 deletions(-) create mode 100644 include/vlc_spu.h diff --git a/include/vlc_osd.h b/include/vlc_osd.h index 036a8525e5..78cec6310a 100644 --- a/include/vlc_osd.h +++ b/include/vlc_osd.h @@ -30,7 +30,8 @@ #ifndef VLC_OSD_H #define VLC_OSD_H 1 -#include "vlc_vout.h" +#include +#include # ifdef __cplusplus extern "C" { @@ -41,92 +42,6 @@ extern "C" { * This file defines SPU subpicture and OSD functions and object types. */ -/********************************************************************** - * Base SPU structures - **********************************************************************/ -/** - * \defgroup spu Subpicture Unit - * This module describes the programming interface for the subpicture unit. - * It includes functions allowing to create/destroy an spu, create/destroy - * subpictures and render them. - * @{ - */ - -#include - -typedef struct spu_private_t spu_private_t; - -/* Default subpicture channel ID */ -#define DEFAULT_CHAN 1 - -/** - * Subpicture unit descriptor - */ -struct spu_t -{ - VLC_COMMON_MEMBERS - - int (*pf_control)( spu_t *, int, va_list ); - - spu_private_t *p; -}; - -enum spu_query_e -{ - SPU_CHANNEL_REGISTER, /* arg1= int * res= */ - SPU_CHANNEL_CLEAR /* arg1= int res= */ -}; - -static inline int spu_vaControl( spu_t *p_spu, int i_query, va_list args ) -{ - if( p_spu->pf_control ) - return p_spu->pf_control( p_spu, i_query, args ); - else - return VLC_EGENERIC; -} - -static inline int spu_Control( spu_t *p_spu, int i_query, ... ) -{ - va_list args; - int i_result; - - va_start( args, i_query ); - i_result = spu_vaControl( p_spu, i_query, args ); - va_end( args ); - return i_result; -} - -VLC_EXPORT( spu_t *, spu_Create, ( vlc_object_t * ) ); -#define spu_Create(a) spu_Create(VLC_OBJECT(a)) -VLC_EXPORT( int, spu_Init, ( spu_t * ) ); -VLC_EXPORT( void, spu_Destroy, ( spu_t * ) ); -void spu_Attach( spu_t *, vlc_object_t *, bool ); - -/** - * This function sends a subpicture to the spu_t core. - * - * You cannot use the provided subpicture anymore. The spu_t core - * will destroy it at its convenience. - */ -VLC_EXPORT( void, spu_DisplaySubpicture, ( spu_t *, subpicture_t * ) ); - -/** - * This function asks the spu_t core a list of subpictures to display. - * - * The returned list can only be used by spu_RenderSubpictures. - */ -VLC_EXPORT( subpicture_t *, spu_SortSubpictures, ( spu_t *, mtime_t render_subtitle_date, bool b_subtitle_only ) ); - -/** - * This function renders a list of subpicture_t on the provided picture. - * - * \param p_fmt_dst is the format of the destination picture. - * \param p_fmt_src is the format of the original(source) video. - */ -VLC_EXPORT( void, spu_RenderSubpictures, ( spu_t *, picture_t *, const video_format_t *p_fmt_dst, subpicture_t *p_list, const video_format_t *p_fmt_src, mtime_t render_subtitle_date ) ); - -/** @}*/ - /********************************************************************** * OSD Menu **********************************************************************/ diff --git a/include/vlc_spu.h b/include/vlc_spu.h new file mode 100644 index 0000000000..c18329484d --- /dev/null +++ b/include/vlc_spu.h @@ -0,0 +1,124 @@ +/***************************************************************************** + * vlc_spu.h: spu_t definition and functions. + ***************************************************************************** + * Copyright (C) 1999-2010 the VideoLAN team + * Copyright (C) 2010 Laurent Aimar + * $Id$ + * + * Authors: Gildas Bazin + * Laurent Aimar + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. + *****************************************************************************/ + +#ifndef VLC_SPU_H +#define VLC_SPU_H 1 + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/********************************************************************** + * Base SPU structures + **********************************************************************/ +/** + * \defgroup spu Subpicture Unit + * This module describes the programming interface for the subpicture unit. + * It includes functions allowing to create/destroy an spu, and render + * subpictures. + * @{ + */ + +typedef struct spu_private_t spu_private_t; + +/* Default subpicture channel ID */ +#define DEFAULT_CHAN 1 + +/** + * Subpicture unit descriptor + */ +struct spu_t +{ + VLC_COMMON_MEMBERS + + int (*pf_control)( spu_t *, int, va_list ); + + spu_private_t *p; +}; + +enum spu_query_e +{ + SPU_CHANNEL_REGISTER, /* arg1= int * res= */ + SPU_CHANNEL_CLEAR /* arg1= int res= */ +}; + +static inline int spu_vaControl( spu_t *p_spu, int i_query, va_list args ) +{ + if( p_spu->pf_control ) + return p_spu->pf_control( p_spu, i_query, args ); + else + return VLC_EGENERIC; +} + +static inline int spu_Control( spu_t *p_spu, int i_query, ... ) +{ + va_list args; + int i_result; + + va_start( args, i_query ); + i_result = spu_vaControl( p_spu, i_query, args ); + va_end( args ); + return i_result; +} + +VLC_EXPORT( spu_t *, spu_Create, ( vlc_object_t * ) ); +#define spu_Create(a) spu_Create(VLC_OBJECT(a)) +VLC_EXPORT( int, spu_Init, ( spu_t * ) ); +VLC_EXPORT( void, spu_Destroy, ( spu_t * ) ); +void spu_Attach( spu_t *, vlc_object_t *, bool ); + +/** + * This function sends a subpicture to the spu_t core. + * + * You cannot use the provided subpicture anymore. The spu_t core + * will destroy it at its convenience. + */ +VLC_EXPORT( void, spu_DisplaySubpicture, ( spu_t *, subpicture_t * ) ); + +/** + * This function asks the spu_t core a list of subpictures to display. + * + * The returned list can only be used by spu_RenderSubpictures. + */ +VLC_EXPORT( subpicture_t *, spu_SortSubpictures, ( spu_t *, mtime_t render_subtitle_date, bool b_subtitle_only ) ); + +/** + * This function renders a list of subpicture_t on the provided picture. + * + * \param p_fmt_dst is the format of the destination picture. + * \param p_fmt_src is the format of the original(source) video. + */ +VLC_EXPORT( void, spu_RenderSubpictures, ( spu_t *, picture_t *, const video_format_t *p_fmt_dst, subpicture_t *p_list, const video_format_t *p_fmt_src, mtime_t render_subtitle_date ) ); + +/** @}*/ + +#ifdef __cplusplus +} +#endif + +#endif /* VLC_SPU_H */ + diff --git a/src/Makefile.am b/src/Makefile.am index d19dc36e7e..33c739bd59 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -91,6 +91,7 @@ pluginsinclude_HEADERS = \ ../include/vlc_services_discovery.h \ ../include/vlc_sql.h \ ../include/vlc_sout.h \ + ../include/vlc_spu.h \ ../include/vlc_stream.h \ ../include/vlc_strings.h \ ../include/vlc_subpicture.h \ -- 2.39.2