vlc/src/libvlc.h

181 lines
6.1 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;
/*
* 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_bool_t b_attached;
};
2007-08-16 20:01:01 +02:00
static inline vlc_object_internals_t *vlc_internals( vlc_object_t *obj )
{
return obj->p_internals;
}
2007-12-09 20:55:16 +01:00
/*
* Configuration stuff
*/
#if 0
struct module_config_t
{
int i_type; /* Configuration type */
const char *psz_type; /* Configuration subtype */
const char *psz_name; /* Option name */
char i_short; /* Optional short option name */
const char *psz_text; /* Short comment on the configuration option */
const char *psz_longtext; /* Long comment on the configuration option */
module_value_t value; /* Option value */
module_value_t orig;
module_value_t saved;
module_nvalue_t min;
module_nvalue_t max;
/* Function to call when commiting a change */
vlc_callback_t pf_callback;
void *p_callback_data;
/* Values list */
const char **ppsz_list; /* List of possible values for the option */
int *pi_list; /* Idem for integers */
const char **ppsz_list_text; /* Friendly names for list values */
int i_list; /* Options list size */
/* Actions list */
vlc_callback_t *ppf_action; /* List of possible actions for a config */
const char **ppsz_action_text; /* Friendly names for actions */
int i_action; /* actions list size */
/* Misc */
vlc_mutex_t *p_lock; /* Lock to use when modifying the config */
vlc_bool_t b_dirty; /* Dirty flag to indicate a config change */
vlc_bool_t b_advanced; /* Flag to indicate an advanced option */
vlc_bool_t b_internal; /* Flag to indicate option is not to be shown */
vlc_bool_t b_restart; /* Flag to indicate the option needs a restart */
/* to take effect */
/* Deprecated */
const char *psz_current; /* Good option name */
vlc_bool_t b_strict; /* Transitionnal or strict */
/* Option values loaded from config file */
vlc_bool_t b_autosave; /* Config will be auto-saved at exit time */
vlc_bool_t b_unsaveable; /* Config should be saved */
};
#endif
extern module_config_t libvlc_config[];
2007-12-09 20:55:16 +01:00
extern const size_t libvlc_config_count;
#endif