vlc/src/libvlc.h

161 lines
4.8 KiB
C
Raw Normal View History

/*****************************************************************************
* libvlc.h: Internal libvlc generic/misc declaration
*****************************************************************************
* Copyright (C) 1999, 2000, 2001, 2002 the VideoLAN team
2007-05-20 00:02:15 +02:00
* Copyright © 2006-2007 Rémi Denis-Courmont
* $Id$
*
* Authors: Vincent Seguin <seguin@via.ecp.fr>
*
* 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
2006-01-13 00:10:04 +01:00
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
*****************************************************************************/
#ifndef LIBVLC_LIBVLC_H
# define LIBVLC_LIBVLC_H 1
extern const char vlc_usage[];
extern const struct hotkey libvlc_hotkeys[];
extern const size_t libvlc_hotkeys_size;
/*
* OS-specific initialization
*/
void system_Init ( libvlc_int_t *, int *, const char *[] );
void system_Configure ( libvlc_int_t *, int *, const char *[] );
void system_End ( libvlc_int_t * );
#if defined( SYS_BEOS )
/* Nothing at the moment, create beos_specific.h when needed */
#elif defined( __APPLE__ )
/* Nothing at the moment, create darwin_specific.h when needed */
#elif defined( WIN32 ) || defined( UNDER_CE )
VLC_EXPORT( const char * , system_VLCPath, (void));
#else
# define system_Init( a, b, c ) (void)0
# define system_Configure( a, b, c ) (void)0
# define system_End( a ) (void)0
#endif
/*
* Threads subsystem
*/
int __vlc_threads_init( vlc_object_t * );
int __vlc_threads_end( vlc_object_t * );
/*
* CPU capabilities
*/
extern uint32_t cpu_flags;
uint32_t CPUCapabilities( void );
/*
* Unicode stuff
*/
/*
* LibVLC objects stuff
*/
extern vlc_object_t *
vlc_custom_create (vlc_object_t *p_this, size_t i_size, int i_type,
const char *psz_type);
2007-05-20 00:02:15 +02:00
/*****************************************************************************
* libvlc_global_data_t (global variable)
*****************************************************************************
* This structure has an unique instance, statically allocated in main and
* never accessed from the outside. It stores once-initialized data such as
* the CPU capabilities or the global lock.
*****************************************************************************/
struct libvlc_global_data_t
{
VLC_COMMON_MEMBERS
vlc_bool_t b_ready; ///< Initialization boolean
/* Object structure data */
int i_counter; ///< object counter
int i_objects; ///< Attached objects count
vlc_object_t ** pp_objects; ///< Array of all objects
module_bank_t * p_module_bank; ///< The module bank
intf_thread_t *p_probe; ///< Devices prober
/* Arch-specific variables */
#if !defined( WIN32 )
vlc_bool_t b_daemon;
#endif
#if defined( SYS_BEOS )
vlc_object_t * p_appthread;
char * psz_vlcpath;
#elif defined( __APPLE__ )
char * psz_vlcpath;
vlc_iconv_t iconv_macosx; /* for HFS+ file names */
vlc_mutex_t iconv_lock;
#elif defined( WIN32 )
char * psz_vlcpath;
#endif
};
libvlc_global_data_t *vlc_global (void);
libvlc_int_t *vlc_current_object (int i_object);
2007-05-20 00:02:15 +02:00
/* Private LibVLC data for each objects */
struct vlc_object_internals_t
{
2007-08-16 20:01:01 +02:00
/* Object variables */
variable_t * p_vars;
2007-08-16 20:01:01 +02:00
vlc_mutex_t var_lock;
int i_vars;
/* Thread properties, if any */
2007-09-16 12:49:43 +02:00
vlc_thread_t thread_id;
vlc_bool_t b_thread;
/* Objects thread synchronization */
int pipes[2];
vlc_spinlock_t spin;
/* Objects management */
unsigned i_refcount;
vlc_destructor_t pf_destructor;
vlc_bool_t b_attached;
};
#define ZOOM_SECTION N_("Zoom")
#define ZOOM_QUARTER_KEY_TEXT N_("1:4 Quarter")
#define ZOOM_HALF_KEY_TEXT N_("1:2 Half")
#define ZOOM_ORIGINAL_KEY_TEXT N_("1:1 Original")
#define ZOOM_DOUBLE_KEY_TEXT N_("2:1 Double")
2007-08-16 20:01:01 +02:00
static inline vlc_object_internals_t *vlc_internals( vlc_object_t *obj )
{
return obj->p_internals;
}
extern module_config_t libvlc_config[];
2007-12-09 20:55:16 +01:00
extern const size_t libvlc_config_count;
2008-02-21 19:46:02 +01:00
/*
* Variables stuff
*/
void var_OptionParse (vlc_object_t *, const char *, bool trusted);
2008-02-21 19:46:02 +01:00
#endif