Commit 3b41ca7d authored by Filippo Carone's avatar Filippo Carone

initial structures for libvlc callbacks (code adapted from git pdherbemont_branch)

parent dc2c11a1
......@@ -34,6 +34,7 @@
#define _LIBVLC_H 1
#include <vlc/vlc.h>
#include <vlc/libvlc_structures.h>
# ifdef __cplusplus
extern "C" {
......@@ -48,13 +49,6 @@ extern "C" {
* @{
*/
typedef struct
{
int b_raised;
int i_code;
char *psz_message;
} libvlc_exception_t;
/**
* Initialize an exception structure. This can be called several times to reuse
* an exception structure.
......@@ -103,9 +97,6 @@ VLC_PUBLIC_API char* libvlc_exception_get_message( libvlc_exception_t *p_excepti
* @{
*/
/** This structure is opaque. It represents a libvlc instance */
typedef struct libvlc_instance_t libvlc_instance_t;
/**
* Create an initialized libvlc instance
* \param argc the number of arguments
......@@ -139,13 +130,6 @@ VLC_PUBLIC_API void libvlc_destroy( libvlc_instance_t *, libvlc_exception_t * );
* @{
*/
typedef struct {
int i_id;
char * psz_uri;
char * psz_name;
} libvlc_playlist_item_t;
/**
* Set loop variable
*/
......@@ -308,24 +292,6 @@ VLC_PUBLIC_API int libvlc_input_get_state ( libvlc_input_t *, libvl
* @{
*/
/**
* Downcast to this general type as placeholder for a platform specific one, such as:
* Drawable on X11,
* CGrafPort on MacOSX,
* HWND on win32
*/
typedef int libvlc_drawable_t;
/**
* Rectangle type for video geometry
*/
typedef struct
{
int top, left;
int bottom, right;
}
libvlc_rectangle_t;
/**
* Does this input have a video output ?
* \param p_input the input
......@@ -745,22 +711,6 @@ VLC_PUBLIC_API LIBVLC_VLM_GET_MEDIA_ATTRIBUTE( seekable, int, Bool, 0);
* @{
*/
/** This structure is opaque. It represents a libvlc log instance */
typedef struct libvlc_log_t libvlc_log_t;
/** This structure is opaque. It represents a libvlc log iterator */
typedef struct libvlc_log_iterator_t libvlc_log_iterator_t;
typedef struct libvlc_log_message_t
{
unsigned sizeof_msg; /* sizeof() of message structure, must be filled in by user */
int i_severity; /* 0=INFO, 1=ERR, 2=WARN, 3=DBG */
const char *psz_type; /* module type */
const char *psz_name; /* module name */
const char *psz_header; /* optional header */
const char *psz_message; /* message */
} libvlc_log_message_t;
/**
* Returns the VLC messaging verbosity level
* \param p_instance libvlc instance
......@@ -839,6 +789,44 @@ VLC_PUBLIC_API libvlc_log_message_t *libvlc_log_iterator_next( libvlc_log_iterat
/** @} */
/*****************************************************************************
* Callbacks handling
*****************************************************************************/
/** defgroup libvlc_callbacks Callbacks
* \ingroup libvlc
* LibVLC Event Callbacks
* @{
*/
/**
* Register for a callback notification
* \param p_instance the libvlc instance
* \param i_event_type the desired event mask to which we want to listen
* \param pf_callback function the function to call when an_Event occurs
* \param p_e an initialized exception pointer
*/
/* void libvlc_callback_register_for_eventtype( libvlc_instance_t *p_instance, */
/* libvlc_event_type_t i_event_type, */
/* libvlc_callback_t pf_callback, */
/* libvlc_exception_t *p_e ); */
/**
* Unregister a callback notification
* \param p_instance the libvlc instance
* \param i_event_type the desired event mask to which we want to unregister
* \param pf_function the function to call when an_Event occurs
* \param p_e an initialized exception pointer
*/
/* void libvlc_callback_unregister_for_eventtype( libvlc_instance_t *p_instance, */
/* libvlc_event_type_t i_event_type, */
/* libvlc_callback_t pf_function, */
/* libvlc_exception_t *p_e ); */
/** @} */
# ifdef __cplusplus
}
# endif
......
/*****************************************************************************
* libvlc.h: libvlc_* new external API structures
*****************************************************************************
* Copyright (C) 1998-2007 the VideoLAN team
* $Id $
*
* Authors: Filippo Carone <littlejohn@videolan.org>
*
* 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 _LIBVLC_STRUCTURES_H
#define _LIBVLC_STRUCTURES_H 1
#include <vlc/vlc.h>
# ifdef __cplusplus
extern "C" {
# endif
/** This structure is opaque. It represents a libvlc instance */
typedef struct libvlc_instance_t libvlc_instance_t;
/** defgroup libvlc_exception Exceptions
* \ingroup libvlc
* LibVLC Exceptions handling
* @{
*/
typedef struct
{
int b_raised;
int i_code;
char *psz_message;
} libvlc_exception_t;
/**@} */
/*****************************************************************************
* Playlist
*****************************************************************************/
/** defgroup libvlc_playlist Playlist
* \ingroup libvlc
* LibVLC Playlist handling
* @{
*/
typedef struct {
int i_id;
char * psz_uri;
char * psz_name;
} libvlc_playlist_item_t;
/**@} */
/*****************************************************************************
* Video
*****************************************************************************/
/** defgroup libvlc_video Video
* \ingroup libvlc
* LibVLC Video handling
* @{
*/
/**
* Downcast to this general type as placeholder for a platform specific one, such as:
* Drawable on X11,
* CGrafPort on MacOSX,
* HWND on win32
*/
typedef int libvlc_drawable_t;
/**
* Rectangle type for video geometry
*/
typedef struct
{
int top, left;
int bottom, right;
}
libvlc_rectangle_t;
/**@} */
/*****************************************************************************
* Message log handling
*****************************************************************************/
/** defgroup libvlc_log Log
* \ingroup libvlc
* LibVLC Message Logging
* @{
*/
/** This structure is opaque. It represents a libvlc log instance */
typedef struct libvlc_log_t libvlc_log_t;
/** This structure is opaque. It represents a libvlc log iterator */
typedef struct libvlc_log_iterator_t libvlc_log_iterator_t;
typedef struct libvlc_log_message_t
{
unsigned sizeof_msg; /* sizeof() of message structure, must be filled in by user */
int i_severity; /* 0=INFO, 1=ERR, 2=WARN, 3=DBG */
const char *psz_type; /* module type */
const char *psz_name; /* module name */
const char *psz_header; /* optional header */
const char *psz_message; /* message */
} libvlc_log_message_t;
/**@} */
/*****************************************************************************
* Callbacks handling
*****************************************************************************/
/** defgroup libvlc_callbacks Callbacks
* \ingroup libvlc
* LibVLC Event Callbacks
* @{
*/
/**
* Available events:
* - VOLUME_CHANGED
* - INPUT_POSITION_CHANGED
*/
typedef enum {
VOLUME_CHANGED,
INPUT_POSITION_CHANGED,
} libvlc_event_type_t;
typedef struct
{
libvlc_event_type_t type;
char reserved[8]; /* For future use */
} libvlc_event_t;
typedef void ( *libvlc_callback_t )( struct libvlc_instance_t *, libvlc_event_t * );
/**@} */
# ifdef __cplusplus
}
# endif
#endif
......@@ -30,7 +30,8 @@ extern "C" {
# endif
#include <vlc/vlc.h>
#include <vlc/libvlc_structures.h>
/***************************************************************************
* Internal creation and destruction functions
***************************************************************************/
......@@ -46,14 +47,29 @@ VLC_EXPORT (int, libvlc_InternalAddIntf, ( libvlc_int_t *, const char *, vlc_boo
* Opaque structures for libvlc API
***************************************************************************/
struct libvlc_callback_entry_t
{
libvlc_callback_t callback;
libvlc_event_type_t eventType;
};
struct libvlc_callback_entry_list_t
{
struct libvlc_callback_entry_t *elmt;
struct libvlc_callback_entry_list_t *next;
struct libvlc_callback_entry_list_t *prev;
};
struct libvlc_instance_t
{
libvlc_int_t *p_libvlc_int;
vlm_t *p_vlm;
int b_playlist_locked;
vlc_mutex_t instance_lock;
struct libvlc_callback_entry_list_t * p_callback_list;
};
struct libvlc_input_t
{
int i_input_id; ///< Input object id. We don't use a pointer to
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment