Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
V
vlc-1.1
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Redmine
Redmine
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Metrics
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
videolan
vlc-1.1
Commits
528f1c64
Commit
528f1c64
authored
Jan 14, 2008
by
Olivier Aubert
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
python bindings: begin to complete the libvlc API bindings. Cf TODO for what is left to be done.
parent
22d8f2ec
Changes
6
Show whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
1253 additions
and
96 deletions
+1253
-96
bindings/python/TODO
bindings/python/TODO
+579
-0
bindings/python/vlc_input.c
bindings/python/vlc_input.c
+297
-75
bindings/python/vlc_instance.c
bindings/python/vlc_instance.c
+68
-9
bindings/python/vlc_mediadescriptor.c
bindings/python/vlc_mediadescriptor.c
+275
-0
bindings/python/vlc_module.c
bindings/python/vlc_module.c
+17
-7
bindings/python/vlcglue.h
bindings/python/vlcglue.h
+17
-5
No files found.
bindings/python/TODO
0 → 100644
View file @
528f1c64
API not yet implemented (from svn rev. 24237)
---------------------------------------------
VLC_PUBLIC_API libvlc_media_descriptor_t * libvlc_media_descriptor_new_as_node(
libvlc_instance_t *p_instance,
const char * psz_name,
libvlc_exception_t *p_e );
VLC_PUBLIC_API libvlc_tag_t
libvlc_media_descriptor_tag_at_index_for_key( libvlc_media_descriptor_t *p_md,
int i,
const char * key,
libvlc_exception_t *p_e );
VLC_PUBLIC_API libvlc_media_list_t *
libvlc_media_descriptor_subitems( libvlc_media_descriptor_t *p_md,
libvlc_exception_t *p_e );
VLC_PUBLIC_API libvlc_event_manager_t *
libvlc_media_descriptor_event_manager( libvlc_media_descriptor_t * p_md,
libvlc_exception_t * p_e );
VLC_PUBLIC_API void
libvlc_media_descriptor_set_user_data( libvlc_media_descriptor_t * p_md,
void * p_new_user_data,
libvlc_exception_t * p_e);
VLC_PUBLIC_API void *
libvlc_media_descriptor_get_user_data( libvlc_media_descriptor_t * p_md,
libvlc_exception_t * p_e);
/** Get the Event Manager from which the media instance send event.
* \param p_mi the Media Instance
*/
VLC_PUBLIC_API libvlc_event_manager_t * libvlc_media_instance_event_manager ( libvlc_media_instance_t *, libvlc_exception_t * );
/*****************************************************************************
* Tag Query
*****************************************************************************/
/** defgroup libvlc_tag_query Tag Query
* \ingroup libvlc
* LibVLC Tag query
* @{
*/
VLC_PUBLIC_API libvlc_tag_query_t *
libvlc_tag_query_new( libvlc_instance_t *, libvlc_exception_t * );
VLC_PUBLIC_API void
libvlc_tag_query_release( libvlc_tag_query_t * );
VLC_PUBLIC_API void
libvlc_tag_query_retain( libvlc_tag_query_t * );
VLC_PUBLIC_API void
libvlc_tag_query_set_match_tag_and_key( libvlc_tag_query_t * p_q,
libvlc_tag_t tag,
char * psz_tag_key,
libvlc_exception_t * );
VLC_PUBLIC_API vlc_bool_t
libvlc_tag_query_match( libvlc_tag_query_t *, libvlc_media_descriptor_t *,
libvlc_exception_t * );
/** @} */
/*****************************************************************************
* Media List
*****************************************************************************/
/** defgroup libvlc_media_list MediaList
* \ingroup libvlc
* LibVLC Media List
* @{
*/
VLC_PUBLIC_API libvlc_media_list_t *
libvlc_media_list_new( libvlc_instance_t *, libvlc_exception_t * );
VLC_PUBLIC_API void
libvlc_media_list_release( libvlc_media_list_t * );
VLC_PUBLIC_API void
libvlc_media_list_retain( libvlc_media_list_t * );
VLC_PUBLIC_API void
libvlc_media_list_add_file_content( libvlc_media_list_t * p_mlist,
const char * psz_uri,
libvlc_exception_t * p_e );
VLC_PUBLIC_API void
libvlc_media_list_set_media_descriptor( libvlc_media_list_t *,
libvlc_media_descriptor_t *,
libvlc_exception_t *);
VLC_PUBLIC_API libvlc_media_descriptor_t *
libvlc_media_list_media_descriptor( libvlc_media_list_t *,
libvlc_exception_t *);
VLC_PUBLIC_API void
libvlc_media_list_add_media_descriptor( libvlc_media_list_t *,
libvlc_media_descriptor_t *,
libvlc_exception_t * );
VLC_PUBLIC_API void
libvlc_media_list_insert_media_descriptor( libvlc_media_list_t *,
libvlc_media_descriptor_t *,
int,
libvlc_exception_t * );
VLC_PUBLIC_API void
libvlc_media_list_remove_index( libvlc_media_list_t *, int,
libvlc_exception_t * );
VLC_PUBLIC_API int
libvlc_media_list_count( libvlc_media_list_t * p_mlist,
libvlc_exception_t * p_e );
VLC_PUBLIC_API libvlc_media_descriptor_t *
libvlc_media_list_item_at_index( libvlc_media_list_t *, int,
libvlc_exception_t * );
VLC_PUBLIC_API int
libvlc_media_list_index_of_item( libvlc_media_list_t *,
libvlc_media_descriptor_t *,
libvlc_exception_t * );
/* This indicates if this media list is read-only from a user point of view */
VLC_PUBLIC_API vlc_bool_t
libvlc_media_list_is_readonly( libvlc_media_list_t * p_mlist );
VLC_PUBLIC_API void
libvlc_media_list_lock( libvlc_media_list_t * );
VLC_PUBLIC_API void
libvlc_media_list_unlock( libvlc_media_list_t * );
VLC_PUBLIC_API libvlc_media_list_view_t *
libvlc_media_list_flat_view( libvlc_media_list_t *,
libvlc_exception_t * );
VLC_PUBLIC_API libvlc_media_list_view_t *
libvlc_media_list_hierarchical_view( libvlc_media_list_t *,
libvlc_exception_t * );
VLC_PUBLIC_API libvlc_media_list_view_t *
libvlc_media_list_hierarchical_node_view( libvlc_media_list_t *,
libvlc_exception_t * );
VLC_PUBLIC_API libvlc_event_manager_t *
libvlc_media_list_event_manager( libvlc_media_list_t *,
libvlc_exception_t * );
/** @} */
/*****************************************************************************
* Media List View
*****************************************************************************/
/** defgroup libvlc_media_list_view MediaListView
* \ingroup libvlc
* LibVLC Media List View
* @{ */
VLC_PUBLIC_API void
libvlc_media_list_view_retain( libvlc_media_list_view_t * p_mlv );
VLC_PUBLIC_API void
libvlc_media_list_view_release( libvlc_media_list_view_t * p_mlv );
VLC_PUBLIC_API libvlc_event_manager_t *
libvlc_media_list_view_event_manager( libvlc_media_list_view_t * p_mlv );
VLC_PUBLIC_API int
libvlc_media_list_view_count( libvlc_media_list_view_t * p_mlv,
libvlc_exception_t * p_e );
VLC_PUBLIC_API libvlc_media_descriptor_t *
libvlc_media_list_view_item_at_index( libvlc_media_list_view_t * p_mlv,
int index,
libvlc_exception_t * p_e );
VLC_PUBLIC_API libvlc_media_list_view_t *
libvlc_media_list_view_children_at_index( libvlc_media_list_view_t * p_mlv,
int index,
libvlc_exception_t * p_e );
VLC_PUBLIC_API int
libvlc_media_list_view_index_of_item( libvlc_media_list_view_t * p_mlv,
libvlc_media_descriptor_t * p_md,
libvlc_exception_t * p_e );
VLC_PUBLIC_API void
libvlc_media_list_view_insert_at_index( libvlc_media_list_view_t * p_mlv,
libvlc_media_descriptor_t * p_md,
int index,
libvlc_exception_t * p_e );
VLC_PUBLIC_API void
libvlc_media_list_view_remove_at_index( libvlc_media_list_view_t * p_mlv,
int index,
libvlc_exception_t * p_e );
VLC_PUBLIC_API void
libvlc_media_list_view_add_item( libvlc_media_list_view_t * p_mlv,
libvlc_media_descriptor_t * p_md,
libvlc_exception_t * p_e );
VLC_PUBLIC_API libvlc_media_list_t *
libvlc_media_list_view_parent_media_list( libvlc_media_list_view_t * p_mlv,
libvlc_exception_t * p_e );
/** @} */
/*****************************************************************************
* Dynamic Media List (Deprecated)
*****************************************************************************/
/** defgroup libvlc_media_list MediaList
* \ingroup libvlc
* LibVLC Media List
* @{ */
VLC_PUBLIC_API libvlc_dynamic_media_list_t *
libvlc_dynamic_media_list_new( libvlc_media_list_t * p_mlist,
libvlc_tag_query_t * p_query,
libvlc_tag_t tag,
libvlc_exception_t * p_e );
VLC_PUBLIC_API void
libvlc_dynamic_media_list_release( libvlc_dynamic_media_list_t * p_dmlist );
VLC_PUBLIC_API void
libvlc_dynamic_media_list_retain( libvlc_dynamic_media_list_t * p_dmlist );
libvlc_media_list_t *
libvlc_dynamic_media_list_media_list( libvlc_dynamic_media_list_t * p_dmlist,
libvlc_exception_t * p_e );
/** @} */
/*****************************************************************************
* Media Library
*****************************************************************************/
/** defgroup libvlc_media_library Media Library
* \ingroup libvlc
* LibVLC Media Library
* @{
*/
VLC_PUBLIC_API libvlc_media_library_t *
libvlc_media_library_new( libvlc_instance_t * p_inst,
libvlc_exception_t * p_e );
VLC_PUBLIC_API void
libvlc_media_library_release( libvlc_media_library_t * p_mlib );
VLC_PUBLIC_API void
libvlc_media_library_retain( libvlc_media_library_t * p_mlib );
VLC_PUBLIC_API void
libvlc_media_library_load( libvlc_media_library_t * p_mlib,
libvlc_exception_t * p_e );
VLC_PUBLIC_API void
libvlc_media_library_save( libvlc_media_library_t * p_mlib,
libvlc_exception_t * p_e );
VLC_PUBLIC_API libvlc_media_list_t *
libvlc_media_library_media_list( libvlc_media_library_t * p_mlib,
libvlc_exception_t * p_e );
/** @} */
/*****************************************************************************
* Media List Player
*****************************************************************************/
/** defgroup libvlc_media_list_player MediaListPlayer
* \ingroup libvlc
* LibVLC Media List Player
* @{
*/
VLC_PUBLIC_API libvlc_media_list_player_t *
libvlc_media_list_player_new( libvlc_instance_t * p_instance,
libvlc_exception_t * p_e );
VLC_PUBLIC_API void
libvlc_media_list_player_release( libvlc_media_list_player_t * p_mlp );
VLC_PUBLIC_API void
libvlc_media_list_player_set_media_instance(
libvlc_media_list_player_t * p_mlp,
libvlc_media_instance_t * p_mi,
libvlc_exception_t * p_e );
VLC_PUBLIC_API void
libvlc_media_list_player_set_media_list(
libvlc_media_list_player_t * p_mlp,
libvlc_media_list_t * p_mlist,
libvlc_exception_t * p_e );
VLC_PUBLIC_API void
libvlc_media_list_player_play( libvlc_media_list_player_t * p_mlp,
libvlc_exception_t * p_e );
VLC_PUBLIC_API void
libvlc_media_list_player_pause( libvlc_media_list_player_t * p_mlp,
libvlc_exception_t * p_e );
VLC_PUBLIC_API vlc_bool_t
libvlc_media_list_player_is_playing( libvlc_media_list_player_t * p_mlp,
libvlc_exception_t * p_e );
VLC_PUBLIC_API libvlc_state_t
libvlc_media_list_player_get_state( libvlc_media_list_player_t * p_mlp,
libvlc_exception_t * p_e );
VLC_PUBLIC_API void
libvlc_media_list_player_play_item_at_index(
libvlc_media_list_player_t * p_mlp,
int i_index,
libvlc_exception_t * p_e );
VLC_PUBLIC_API void
libvlc_media_list_player_play_item(
libvlc_media_list_player_t * p_mlp,
libvlc_media_descriptor_t * p_md,
libvlc_exception_t * p_e );
VLC_PUBLIC_API void
libvlc_media_list_player_stop( libvlc_media_list_player_t * p_mlp,
libvlc_exception_t * p_e );
VLC_PUBLIC_API void
libvlc_media_list_player_next( libvlc_media_list_player_t * p_mlp,
libvlc_exception_t * p_e );
/** @} */
/**
* Get current crop filter geometry
* \param p_input the input
* \param p_exception an initialized exception
* \return the crop filter geometry
*/
VLC_PUBLIC_API char *libvlc_video_get_crop_geometry( libvlc_media_instance_t *, libvlc_exception_t * );
/**
* Set new crop filter geometry
* \param p_input the input
* \param psz_geometry new crop filter geometry
* \param p_exception an initialized exception
*/
VLC_PUBLIC_API void libvlc_video_set_crop_geometry( libvlc_media_instance_t *, char *, libvlc_exception_t * );
/**
* Toggle teletext transparent status on video output
* \param p_input the input
* \param p_exception an initialized exception
*/
VLC_PUBLIC_API void libvlc_toggle_teletext( libvlc_media_instance_t *, libvlc_exception_t * );
/**
* Get current teletext page requested.
* \param p_input the input
* \param p_exception an initialized exception
* \return the current teletext page requested.
*/
VLC_PUBLIC_API int libvlc_video_get_teletext( libvlc_media_instance_t *, libvlc_exception_t * );
/**
* Set new teletext page to retrieve
* \param p_input the input
* \param i_page teletex page number requested
* \param p_exception an initialized exception
*/
VLC_PUBLIC_API void libvlc_video_set_teletext( libvlc_media_instance_t *, int, libvlc_exception_t * );
/**
* Take a snapshot of the current video window
* If i_width AND i_height is 0, original size is used
* if i_width XOR i_height is 0, original aspect-ratio is preserved
* \param p_input the input
* \param psz_filepath the path where to save the screenshot to
* \param i_width the snapshot's width
* \param i_height the snapshot's height
* \param p_exception an initialized exception
*/
VLC_PUBLIC_API void libvlc_video_take_snapshot( libvlc_media_instance_t *, char *,unsigned int, unsigned int, libvlc_exception_t * );
/**
* Tell windowless video output to redraw rectangular area (MacOS X only)
* \param p_instance libvlc instance
* \param area coordinates within video drawable
* \param p_exception an initialized exception
*/
VLC_PUBLIC_API void libvlc_video_redraw_rectangle( libvlc_media_instance_t *, const libvlc_rectangle_t *, libvlc_exception_t * );
* Set the default video output viewport for a windowless video output (MacOS X only)
* this settings will be used as default for all video outputs
* \param p_instance libvlc instance
* \param view coordinates within video drawable
* \param clip coordinates within video drawable
* \param p_exception an initialized exception
*/
VLC_PUBLIC_API void libvlc_video_set_viewport( libvlc_instance_t *, const libvlc_rectangle_t *, const libvlc_rectangle_t *, libvlc_exception_t * );
/** @} */
/**
* Get number of available audio tracks
* \param p_mi media instance
* \param p_e an initialized exception
* \return the number of available audio tracks (int)
*/
VLC_PUBLIC_API int libvlc_audio_get_track_count( libvlc_media_instance_t *, libvlc_exception_t * );
/**
+ * Get current audio track
+ * \param p_input input instance
+ * \param p_exception an initialized exception
+ * \return the audio track (int)
+ */
VLC_PUBLIC_API int libvlc_audio_get_track( libvlc_media_instance_t *, libvlc_exception_t * );
/**
* Set current audio track
* \param p_input input instance
* \param i_track the track (int)
* \param p_exception an initialized exception
*/
VLC_PUBLIC_API void libvlc_audio_set_track( libvlc_media_instance_t *, int, libvlc_exception_t * );
/*****************************************************************************
* Services/Media Discovery
*****************************************************************************/
/** defgroup libvlc_media_discoverer Media Discoverer
* \ingroup libvlc
* LibVLC Media Discoverer
* @{
*/
VLC_PUBLIC_API libvlc_media_discoverer_t *
libvlc_media_discoverer_new_from_name( libvlc_instance_t * p_inst,
const char * psz_name,
libvlc_exception_t * p_e );
VLC_PUBLIC_API void libvlc_media_discoverer_release( libvlc_media_discoverer_t * p_mdis );
VLC_PUBLIC_API char * libvlc_media_discoverer_localized_name( libvlc_media_discoverer_t * p_mdis );
VLC_PUBLIC_API libvlc_media_list_t * libvlc_media_discoverer_media_list( libvlc_media_discoverer_t * p_mdis );
VLC_PUBLIC_API libvlc_event_manager_t *
libvlc_media_discoverer_event_manager( libvlc_media_discoverer_t * p_mdis );
VLC_PUBLIC_API vlc_bool_t
libvlc_media_discoverer_is_running( libvlc_media_discoverer_t * p_mdis );
/*****************************************************************************
* Message log handling
*****************************************************************************/
/** defgroup libvlc_log Log
* \ingroup libvlc
* LibVLC Message Logging
* @{
*/
/**
* Returns the VLC messaging verbosity level
* \param p_instance libvlc instance
* \param exception an initialized exception pointer
*/
VLC_PUBLIC_API unsigned libvlc_get_log_verbosity( const libvlc_instance_t *p_instance,
libvlc_exception_t *p_e );
/**
* Set the VLC messaging verbosity level
* \param p_log libvlc log instance
* \param exception an initialized exception pointer
*/
VLC_PUBLIC_API void libvlc_set_log_verbosity( libvlc_instance_t *p_instance, unsigned level,
libvlc_exception_t *p_e );
/**
* Open an instance to VLC message log
* \param p_instance libvlc instance
* \param exception an initialized exception pointer
*/
VLC_PUBLIC_API libvlc_log_t *libvlc_log_open( libvlc_instance_t *, libvlc_exception_t *);
/**
* Close an instance of VLC message log
* \param p_log libvlc log instance
* \param exception an initialized exception pointer
*/
VLC_PUBLIC_API void libvlc_log_close( libvlc_log_t *, libvlc_exception_t *);
/**
* Returns the number of messages in log
* \param p_log libvlc log instance
* \param exception an initialized exception pointer
*/
VLC_PUBLIC_API unsigned libvlc_log_count( const libvlc_log_t *, libvlc_exception_t *);
/**
* Clear all messages in log
* the log should be cleared on a regular basis to avoid clogging
* \param p_log libvlc log instance
* \param exception an initialized exception pointer
*/
VLC_PUBLIC_API void libvlc_log_clear( libvlc_log_t *, libvlc_exception_t *);
/**
* Allocate and returns a new iterator to messages in log
* \param p_log libvlc log instance
* \param exception an initialized exception pointer
*/
VLC_PUBLIC_API libvlc_log_iterator_t *libvlc_log_get_iterator( const libvlc_log_t *, libvlc_exception_t *);
/**
* Releases a previoulsy allocated iterator
* \param p_log libvlc log iterator
* \param exception an initialized exception pointer
*/
VLC_PUBLIC_API void libvlc_log_iterator_free( libvlc_log_iterator_t *p_iter, libvlc_exception_t *p_e );
/**
* Returns whether log iterator has more messages
* \param p_log libvlc log iterator
* \param exception an initialized exception pointer
*/
VLC_PUBLIC_API int libvlc_log_iterator_has_next( const libvlc_log_iterator_t *p_iter, libvlc_exception_t *p_e );
/**
* Returns next log message
* the content of message must not be freed
* \param p_log libvlc log iterator
* \param exception an initialized exception pointer
*/
VLC_PUBLIC_API libvlc_log_message_t *libvlc_log_iterator_next( libvlc_log_iterator_t *p_iter,
struct libvlc_log_message_t *buffer,
libvlc_exception_t *p_e );
/** @} */
/*****************************************************************************
* Event handling
*****************************************************************************/
/** defgroup libvlc_callbacks Callbacks
* \ingroup libvlc
* LibVLC Events
* @{
*/
/**
* Register for an event notification
* \param p_event_manager the event manager to which you want to attach to
* Generally it is obtained by vlc_my_object_event_manager() where my_object
* Is the object you want to listen to.
* \param i_event_type the desired event to which we want to listen
* \param f_callback the function to call when i_event_type occurs
* \param user_data user provided data to carry with the event
* \param p_e an initialized exception pointer
*/
VLC_PUBLIC_API void libvlc_event_attach( libvlc_event_manager_t *p_event_manager,
libvlc_event_type_t i_event_type,
libvlc_callback_t f_callback,
void *user_data,
libvlc_exception_t *p_e );
/**
* Unregister an event notification
* \param p_event_manager the event manager
* \param i_event_type the desired event to which we want to unregister
* \param f_callback the function to call when i_event_type occurs
* \param p_e an initialized exception pointer
*/
VLC_PUBLIC_API void libvlc_event_detach( libvlc_event_manager_t *p_event_manager,
libvlc_event_type_t i_event_type,
libvlc_callback_t f_callback,
void *p_user_data,
libvlc_exception_t *p_e );
/**
* Get an event type name
* \param i_event_type the desired event
*/
VLC_PUBLIC_API const char * libvlc_event_type_name( libvlc_event_type_t event_type );
bindings/python/vlc_input.c
View file @
528f1c64
...
...
@@ -27,29 +27,29 @@
***********************************************************************/
static
PyObject
*
vlc
Input
_get_length
(
PyObject
*
self
,
PyObject
*
args
)
vlc
MediaInstance
_get_length
(
PyObject
*
self
,
PyObject
*
args
)
{
libvlc_exception_t
ex
;
vlc_int64_t
i_ret
;
LIBVLC_TRY
;
i_ret
=
libvlc_media_instance_get_length
(
LIBVLC_
INPUT
->
p_md
,
&
ex
);
i_ret
=
libvlc_media_instance_get_length
(
LIBVLC_
MEDIAINSTANCE
->
p_mi
,
&
ex
);
LIBVLC_EXCEPT
;
return
Py_BuildValue
(
"L"
,
i_ret
);
}
static
PyObject
*
vlc
Input
_get_time
(
PyObject
*
self
,
PyObject
*
args
)
vlc
MediaInstance
_get_time
(
PyObject
*
self
,
PyObject
*
args
)
{
libvlc_exception_t
ex
;
vlc_int64_t
i_ret
;
LIBVLC_TRY
;
i_ret
=
libvlc_media_instance_get_time
(
LIBVLC_
INPUT
->
p_md
,
&
ex
);
i_ret
=
libvlc_media_instance_get_time
(
LIBVLC_
MEDIAINSTANCE
->
p_mi
,
&
ex
);
LIBVLC_EXCEPT
;
return
Py_BuildValue
(
"L"
,
i_ret
);
}
static
PyObject
*
vlc
Input
_set_time
(
PyObject
*
self
,
PyObject
*
args
)
vlc
MediaInstance
_set_time
(
PyObject
*
self
,
PyObject
*
args
)
{
libvlc_exception_t
ex
;
vlc_int64_t
i_time
;
...
...
@@ -58,25 +58,25 @@ vlcInput_set_time( PyObject *self, PyObject *args )
return
NULL
;
LIBVLC_TRY
;
libvlc_media_instance_set_time
(
LIBVLC_
INPUT
->
p_md
,
i_time
,
&
ex
);
libvlc_media_instance_set_time
(
LIBVLC_
MEDIAINSTANCE
->
p_mi
,
i_time
,
&
ex
);
LIBVLC_EXCEPT
;
Py_INCREF
(
Py_None
);
return
Py_None
;
}
static
PyObject
*
vlc
Input
_get_position
(
PyObject
*
self
,
PyObject
*
args
)
vlc
MediaInstance
_get_position
(
PyObject
*
self
,
PyObject
*
args
)
{
libvlc_exception_t
ex
;
float
f_ret
;
LIBVLC_TRY
;
f_ret
=
libvlc_media_instance_get_position
(
LIBVLC_
INPUT
->
p_md
,
&
ex
);
f_ret
=
libvlc_media_instance_get_position
(
LIBVLC_
MEDIAINSTANCE
->
p_mi
,
&
ex
);
LIBVLC_EXCEPT
;
return
Py_BuildValue
(
"f"
,
f_ret
);
}
static
PyObject
*
vlc
Input
_set_position
(
PyObject
*
self
,
PyObject
*
args
)
vlc
MediaInstance
_set_position
(
PyObject
*
self
,
PyObject
*
args
)
{
libvlc_exception_t
ex
;
float
f_pos
;
...
...
@@ -85,36 +85,36 @@ vlcInput_set_position( PyObject *self, PyObject *args )
return
NULL
;
LIBVLC_TRY
;
libvlc_media_instance_set_position
(
LIBVLC_
INPUT
->
p_md
,
f_pos
,
&
ex
);
libvlc_media_instance_set_position
(
LIBVLC_
MEDIAINSTANCE
->
p_mi
,
f_pos
,
&
ex
);
LIBVLC_EXCEPT
;
Py_INCREF
(
Py_None
);
return
Py_None
;
}
static
PyObject
*
vlc
Input
_will_play
(
PyObject
*
self
,
PyObject
*
args
)
vlc
MediaInstance
_will_play
(
PyObject
*
self
,
PyObject
*
args
)
{
libvlc_exception_t
ex
;
int
i_ret
;
LIBVLC_TRY
;
i_ret
=
libvlc_media_instance_will_play
(
LIBVLC_
INPUT
->
p_md
,
&
ex
);
i_ret
=
libvlc_media_instance_will_play
(
LIBVLC_
MEDIAINSTANCE
->
p_mi
,
&
ex
);
LIBVLC_EXCEPT
;
return
Py_BuildValue
(
"i"
,
i_ret
);
}
static
PyObject
*
vlc
Input
_get_rate
(
PyObject
*
self
,
PyObject
*
args
)
vlc
MediaInstance
_get_rate
(
PyObject
*
self
,
PyObject
*
args
)
{
libvlc_exception_t
ex
;
float
f_ret
;
LIBVLC_TRY
;
f_ret
=
libvlc_media_instance_get_rate
(
LIBVLC_
INPUT
->
p_md
,
&
ex
);
f_ret
=
libvlc_media_instance_get_rate
(
LIBVLC_
MEDIAINSTANCE
->
p_mi
,
&
ex
);
LIBVLC_EXCEPT
;
return
Py_BuildValue
(
"f"
,
f_ret
);
}
static
PyObject
*
vlc
Input
_set_rate
(
PyObject
*
self
,
PyObject
*
args
)
vlc
MediaInstance
_set_rate
(
PyObject
*
self
,
PyObject
*
args
)
{
libvlc_exception_t
ex
;
float
f_rate
;
...
...
@@ -123,59 +123,59 @@ vlcInput_set_rate( PyObject *self, PyObject *args )
return
NULL
;
LIBVLC_TRY
;
libvlc_media_instance_set_rate
(
LIBVLC_
INPUT
->
p_md
,
f_rate
,
&
ex
);
libvlc_media_instance_set_rate
(
LIBVLC_
MEDIAINSTANCE
->
p_mi
,
f_rate
,
&
ex
);
LIBVLC_EXCEPT
;
Py_INCREF
(
Py_None
);
return
Py_None
;
}
static
PyObject
*
vlc
Input
_get_state
(
PyObject
*
self
,
PyObject
*
args
)
vlc
MediaInstance
_get_state
(
PyObject
*
self
,
PyObject
*
args
)
{
libvlc_exception_t
ex
;
int
i_ret
;
LIBVLC_TRY
;
i_ret
=
libvlc_media_instance_get_state
(
LIBVLC_
INPUT
->
p_md
,
&
ex
);
i_ret
=
libvlc_media_instance_get_state
(
LIBVLC_
MEDIAINSTANCE
->
p_mi
,
&
ex
);
LIBVLC_EXCEPT
;
return
Py_BuildValue
(
"i"
,
i_ret
);
}
static
PyObject
*
vlc
Input
_has_vout
(
PyObject
*
self
,
PyObject
*
args
)
vlc
MediaInstance
_has_vout
(
PyObject
*
self
,
PyObject
*
args
)
{
libvlc_exception_t
ex
;
int
i_ret
;
LIBVLC_TRY
;
i_ret
=
libvlc_media_instance_has_vout
(
LIBVLC_
INPUT
->
p_md
,
&
ex
);
i_ret
=
libvlc_media_instance_has_vout
(
LIBVLC_
MEDIAINSTANCE
->
p_mi
,
&
ex
);
LIBVLC_EXCEPT
;
return
Py_BuildValue
(
"i"
,
i_ret
);
}
static
PyObject
*
vlc
Input
_get_fps
(
PyObject
*
self
,
PyObject
*
args
)
vlc
MediaInstance
_get_fps
(
PyObject
*
self
,
PyObject
*
args
)
{
libvlc_exception_t
ex
;
float
f_ret
;
LIBVLC_TRY
;
f_ret
=
libvlc_media_instance_get_fps
(
LIBVLC_
INPUT
->
p_md
,
&
ex
);
f_ret
=
libvlc_media_instance_get_fps
(
LIBVLC_
MEDIAINSTANCE
->
p_mi
,
&
ex
);
LIBVLC_EXCEPT
;
return
Py_BuildValue
(
"f"
,
f_ret
);
}
static
PyObject
*
vlc
Input
_audio_get_track
(
PyObject
*
self
,
PyObject
*
args
)
vlc
MediaInstance
_audio_get_track
(
PyObject
*
self
,
PyObject
*
args
)
{
libvlc_exception_t
ex
;
int
i_ret
;
LIBVLC_TRY
;
i_ret
=
libvlc_audio_get_track
(
LIBVLC_
INPUT
->
p_md
,
&
ex
);
i_ret
=
libvlc_audio_get_track
(
LIBVLC_
MEDIAINSTANCE
->
p_mi
,
&
ex
);
LIBVLC_EXCEPT
;
return
Py_BuildValue
(
"i"
,
i_ret
);
}
static
PyObject
*
vlc
Input
_audio_set_track
(
PyObject
*
self
,
PyObject
*
args
)
vlc
MediaInstance
_audio_set_track
(
PyObject
*
self
,
PyObject
*
args
)
{
libvlc_exception_t
ex
;
int
i_track
;
...
...
@@ -184,26 +184,67 @@ vlcInput_audio_set_track( PyObject *self, PyObject *args )
return
NULL
;
LIBVLC_TRY
;
libvlc_audio_set_track
(
LIBVLC_
INPUT
->
p_md
,
i_track
,
&
ex
);
libvlc_audio_set_track
(
LIBVLC_
MEDIAINSTANCE
->
p_mi
,
i_track
,
&
ex
);
LIBVLC_EXCEPT
;
Py_INCREF
(
Py_None
);
return
Py_None
;
}
static
PyObject
*
vlc
Input_toggle_fullscreen
(
PyObject
*
self
,
PyObject
*
args
)
vlc
MediaInstance_get_chapter
(
PyObject
*
self
,
PyObject
*
args
)
{
libvlc_exception_t
ex
;
int
i_ret
;
LIBVLC_TRY
;
i_ret
=
libvlc_media_instance_get_chapter
(
LIBVLC_MEDIAINSTANCE
->
p_mi
,
&
ex
);
LIBVLC_EXCEPT
;
return
Py_BuildValue
(
"i"
,
i_ret
);
}
static
PyObject
*
vlcMediaInstance_get_chapter_count
(
PyObject
*
self
,
PyObject
*
args
)
{
libvlc_exception_t
ex
;
int
i_ret
;
LIBVLC_TRY
;
libvlc_toggle_fullscreen
(
LIBVLC_INPUT
->
p_md
,
&
ex
);
i_ret
=
libvlc_media_instance_get_chapter_count
(
LIBVLC_MEDIAINSTANCE
->
p_mi
,
&
ex
);
LIBVLC_EXCEPT
;
return
Py_BuildValue
(
"i"
,
i_ret
);
}
static
PyObject
*
vlcMediaInstance_set_chapter
(
PyObject
*
self
,
PyObject
*
args
)
{
libvlc_exception_t
ex
;
int
i_chapter
;
if
(
!
PyArg_ParseTuple
(
args
,
"i"
,
&
i_chapter
)
)
return
NULL
;
LIBVLC_TRY
;
libvlc_media_instance_set_chapter
(
LIBVLC_MEDIAINSTANCE
->
p_mi
,
i_chapter
,
&
ex
);
LIBVLC_EXCEPT
;
Py_INCREF
(
Py_None
);
return
Py_None
;
}
static
PyObject
*
vlcInput_set_fullscreen
(
PyObject
*
self
,
PyObject
*
args
)
vlcMediaInstance_toggle_fullscreen
(
PyObject
*
self
,
PyObject
*
args
)
{
libvlc_exception_t
ex
;
LIBVLC_TRY
;
libvlc_toggle_fullscreen
(
LIBVLC_MEDIAINSTANCE
->
p_mi
,
&
ex
);
LIBVLC_EXCEPT
;
Py_INCREF
(
Py_None
);
return
Py_None
;
}
static
PyObject
*
vlcMediaInstance_set_fullscreen
(
PyObject
*
self
,
PyObject
*
args
)
{
libvlc_exception_t
ex
;
int
i_fullscreen
;
...
...
@@ -212,57 +253,57 @@ vlcInput_set_fullscreen( PyObject *self, PyObject *args )
return
NULL
;
LIBVLC_TRY
;
libvlc_set_fullscreen
(
LIBVLC_
INPUT
->
p_md
,
i_fullscreen
,
&
ex
);
libvlc_set_fullscreen
(
LIBVLC_
MEDIAINSTANCE
->
p_mi
,
i_fullscreen
,
&
ex
);
LIBVLC_EXCEPT
;
Py_INCREF
(
Py_None
);
return
Py_None
;
}
static
PyObject
*
vlc
Input
_get_fullscreen
(
PyObject
*
self
,
PyObject
*
args
)
vlc
MediaInstance
_get_fullscreen
(
PyObject
*
self
,
PyObject
*
args
)
{
libvlc_exception_t
ex
;
int
i_ret
;
LIBVLC_TRY
;
i_ret
=
libvlc_get_fullscreen
(
LIBVLC_
INPUT
->
p_md
,
&
ex
);
i_ret
=
libvlc_get_fullscreen
(
LIBVLC_
MEDIAINSTANCE
->
p_mi
,
&
ex
);
LIBVLC_EXCEPT
;
return
Py_BuildValue
(
"i"
,
i_ret
);
}
static
PyObject
*
vlc
Input
_get_height
(
PyObject
*
self
,
PyObject
*
args
)
vlc
MediaInstance
_get_height
(
PyObject
*
self
,
PyObject
*
args
)
{
libvlc_exception_t
ex
;
int
i_ret
;
LIBVLC_TRY
;
i_ret
=
libvlc_video_get_height
(
LIBVLC_
INPUT
->
p_md
,
&
ex
);
i_ret
=
libvlc_video_get_height
(
LIBVLC_
MEDIAINSTANCE
->
p_mi
,
&
ex
);
LIBVLC_EXCEPT
;
return
Py_BuildValue
(
"i"
,
i_ret
);
}
static
PyObject
*
vlc
Input
_get_width
(
PyObject
*
self
,
PyObject
*
args
)
vlc
MediaInstance
_get_width
(
PyObject
*
self
,
PyObject
*
args
)
{
libvlc_exception_t
ex
;
int
i_ret
;
LIBVLC_TRY
;
i_ret
=
libvlc_video_get_width
(
LIBVLC_
INPUT
->
p_md
,
&
ex
);
i_ret
=
libvlc_video_get_width
(
LIBVLC_
MEDIAINSTANCE
->
p_mi
,
&
ex
);
LIBVLC_EXCEPT
;
return
Py_BuildValue
(
"i"
,
i_ret
);
}
static
PyObject
*
vlc
Input
_get_aspect_ratio
(
PyObject
*
self
,
PyObject
*
args
)
vlc
MediaInstance
_get_aspect_ratio
(
PyObject
*
self
,
PyObject
*
args
)
{
libvlc_exception_t
ex
;
char
*
psz_ret
;
PyObject
*
o_ret
;
LIBVLC_TRY
;
psz_ret
=
libvlc_video_get_aspect_ratio
(
LIBVLC_
INPUT
->
p_md
,
&
ex
);
psz_ret
=
libvlc_video_get_aspect_ratio
(
LIBVLC_
MEDIAINSTANCE
->
p_mi
,
&
ex
);
LIBVLC_EXCEPT
;
o_ret
=
Py_BuildValue
(
"s"
,
psz_ret
);
free
(
psz_ret
);
...
...
@@ -270,7 +311,7 @@ vlcInput_get_aspect_ratio( PyObject *self, PyObject *args )
}
static
PyObject
*
vlc
Input
_set_aspect_ratio
(
PyObject
*
self
,
PyObject
*
args
)
vlc
MediaInstance
_set_aspect_ratio
(
PyObject
*
self
,
PyObject
*
args
)
{
libvlc_exception_t
ex
;
char
*
psz_ratio
;
...
...
@@ -279,7 +320,7 @@ vlcInput_set_aspect_ratio( PyObject *self, PyObject *args )
return
NULL
;
LIBVLC_TRY
;
libvlc_video_set_aspect_ratio
(
LIBVLC_
INPUT
->
p_md
,
psz_ratio
,
&
ex
);
libvlc_video_set_aspect_ratio
(
LIBVLC_
MEDIAINSTANCE
->
p_mi
,
psz_ratio
,
&
ex
);
LIBVLC_EXCEPT
;
free
(
psz_ratio
);
Py_INCREF
(
Py_None
);
...
...
@@ -287,7 +328,7 @@ vlcInput_set_aspect_ratio( PyObject *self, PyObject *args )
}
static
PyObject
*
vlc
Input
_video_take_snapshot
(
PyObject
*
self
,
PyObject
*
args
)
vlc
MediaInstance
_video_take_snapshot
(
PyObject
*
self
,
PyObject
*
args
)
{
libvlc_exception_t
ex
;
char
*
psz_filename
;
...
...
@@ -296,14 +337,14 @@ vlcInput_video_take_snapshot( PyObject *self, PyObject *args )
return
NULL
;
LIBVLC_TRY
;
libvlc_video_take_snapshot
(
LIBVLC_
INPUT
->
p_md
,
psz_filename
,
0
,
0
,
&
ex
);
libvlc_video_take_snapshot
(
LIBVLC_
MEDIAINSTANCE
->
p_mi
,
psz_filename
,
0
,
0
,
&
ex
);
LIBVLC_EXCEPT
;
Py_INCREF
(
Py_None
);
return
Py_None
;
}
static
PyObject
*
vlc
Input
_video_resize
(
PyObject
*
self
,
PyObject
*
args
)
vlc
MediaInstance
_video_resize
(
PyObject
*
self
,
PyObject
*
args
)
{
libvlc_exception_t
ex
;
int
i_width
;
...
...
@@ -313,14 +354,14 @@ vlcInput_video_resize( PyObject *self, PyObject *args )
return
NULL
;
LIBVLC_TRY
;
libvlc_video_resize
(
LIBVLC_
INPUT
->
p_md
,
i_width
,
i_height
,
&
ex
);
libvlc_video_resize
(
LIBVLC_
MEDIAINSTANCE
->
p_mi
,
i_width
,
i_height
,
&
ex
);
LIBVLC_EXCEPT
;
Py_INCREF
(
Py_None
);
return
Py_None
;
}
static
PyObject
*
vlc
Input
_video_reparent
(
PyObject
*
self
,
PyObject
*
args
)
vlc
MediaInstance
_video_reparent
(
PyObject
*
self
,
PyObject
*
args
)
{
libvlc_exception_t
ex
;
WINDOWHANDLE
i_visual
;
...
...
@@ -330,69 +371,250 @@ vlcInput_video_reparent( PyObject *self, PyObject *args )
return
NULL
;
LIBVLC_TRY
;
i_ret
=
libvlc_video_reparent
(
LIBVLC_INPUT
->
p_md
,
i_visual
,
&
ex
);
i_ret
=
libvlc_video_reparent
(
LIBVLC_MEDIAINSTANCE
->
p_mi
,
i_visual
,
&
ex
);
LIBVLC_EXCEPT
;
return
Py_BuildValue
(
"i"
,
i_ret
);
}
static
PyObject
*
vlcMediaInstance_is_seekable
(
PyObject
*
self
,
PyObject
*
args
)
{
libvlc_exception_t
ex
;
int
i_ret
;
LIBVLC_TRY
;
i_ret
=
libvlc_media_instance_is_seekable
(
LIBVLC_MEDIAINSTANCE
->
p_mi
,
&
ex
);
LIBVLC_EXCEPT
;
return
Py_BuildValue
(
"i"
,
i_ret
);
}
static
PyObject
*
vlcMediaInstance_can_pause
(
PyObject
*
self
,
PyObject
*
args
)
{
libvlc_exception_t
ex
;
int
i_ret
;
LIBVLC_TRY
;
i_ret
=
libvlc_media_instance_can_pause
(
LIBVLC_MEDIAINSTANCE
->
p_mi
,
&
ex
);
LIBVLC_EXCEPT
;
return
Py_BuildValue
(
"i"
,
i_ret
);
}
static
PyMethodDef
vlcInput_methods
[]
=
static
PyObject
*
vlcMediaInstance_play
(
PyObject
*
self
,
PyObject
*
args
)
{
{
"get_length"
,
vlcInput_get_length
,
METH_VARARGS
,
libvlc_exception_t
ex
;
LIBVLC_TRY
;
libvlc_media_instance_play
(
LIBVLC_MEDIAINSTANCE
->
p_mi
,
&
ex
);
LIBVLC_EXCEPT
;
Py_INCREF
(
Py_None
);
return
Py_None
;
}
static
PyObject
*
vlcMediaInstance_pause
(
PyObject
*
self
,
PyObject
*
args
)
{
libvlc_exception_t
ex
;
LIBVLC_TRY
;
libvlc_media_instance_pause
(
LIBVLC_MEDIAINSTANCE
->
p_mi
,
&
ex
);
LIBVLC_EXCEPT
;
Py_INCREF
(
Py_None
);
return
Py_None
;
}
static
PyObject
*
vlcMediaInstance_stop
(
PyObject
*
self
,
PyObject
*
args
)
{
libvlc_exception_t
ex
;
LIBVLC_TRY
;
libvlc_media_instance_stop
(
LIBVLC_MEDIAINSTANCE
->
p_mi
,
&
ex
);
LIBVLC_EXCEPT
;
Py_INCREF
(
Py_None
);
return
Py_None
;
}
static
PyObject
*
vlcMediaInstance_set_drawable
(
PyObject
*
self
,
PyObject
*
args
)
{
libvlc_exception_t
ex
;
int
i_drawable
;
if
(
!
PyArg_ParseTuple
(
args
,
"i"
,
&
i_drawable
)
)
return
NULL
;
LIBVLC_TRY
;
libvlc_media_instance_set_drawable
(
LIBVLC_MEDIAINSTANCE
->
p_mi
,
(
libvlc_drawable_t
)
i_drawable
,
&
ex
);
LIBVLC_EXCEPT
;
Py_INCREF
(
Py_None
);
return
Py_None
;
}
static
PyObject
*
vlcMediaInstance_set_media_descriptor
(
PyObject
*
self
,
PyObject
*
args
)
{
libvlc_exception_t
ex
;
PyObject
*
py_param
=
NULL
;
if
(
!
PyArg_ParseTuple
(
args
,
"O"
,
&
py_param
)
)
return
NULL
;
if
(
PyObject_TypeCheck
(
py_param
,
&
vlcMediaDescriptor_Type
)
==
1
)
{
LIBVLC_TRY
;
libvlc_media_instance_set_media_descriptor
(
LIBVLC_MEDIAINSTANCE
->
p_mi
,
((
vlcMediaDescriptor
*
)
py_param
)
->
p_md
,
&
ex
);
LIBVLC_EXCEPT
;
}
else
{
PyObject
*
py_exc
=
vlcInstance_Exception
;
PyErr_SetString
(
py_exc
,
"vlc.MediaDescriptor parameter needed"
);
return
NULL
;
}
return
NULL
;
}
static
PyObject
*
vlcMediaInstance_get_media_descriptor
(
PyObject
*
self
,
PyObject
*
args
)
{
libvlc_exception_t
ex
;
libvlc_media_descriptor_t
*
p_md
;
vlcMediaDescriptor
*
p_ret
;
LIBVLC_TRY
;
p_md
=
libvlc_media_instance_get_media_descriptor
(
LIBVLC_MEDIAINSTANCE
->
p_mi
,
&
ex
);
LIBVLC_EXCEPT
;
if
(
!
p_md
)
{
Py_INCREF
(
Py_None
);
return
Py_None
;
}
else
{
p_ret
=
PyObject_New
(
vlcMediaDescriptor
,
&
vlcMediaDescriptor_Type
);
p_ret
->
p_md
=
p_md
;
Py_INCREF
(
p_ret
);
/* Ah bon ? */
return
(
PyObject
*
)
p_ret
;
}
}
static
PyObject
*
vlcMediaInstance_get_spu
(
PyObject
*
self
,
PyObject
*
args
)
{
libvlc_exception_t
ex
;
int
i_ret
;
LIBVLC_TRY
;
i_ret
=
libvlc_video_get_spu
(
LIBVLC_MEDIAINSTANCE
->
p_mi
,
&
ex
);
LIBVLC_EXCEPT
;
return
Py_BuildValue
(
"i"
,
i_ret
);
}
static
PyObject
*
vlcMediaInstance_set_spu
(
PyObject
*
self
,
PyObject
*
args
)
{
libvlc_exception_t
ex
;
int
i_spu
;
if
(
!
PyArg_ParseTuple
(
args
,
"i"
,
&
i_spu
)
)
return
NULL
;
LIBVLC_TRY
;
libvlc_video_set_spu
(
LIBVLC_MEDIAINSTANCE
->
p_mi
,
i_spu
,
&
ex
);
LIBVLC_EXCEPT
;
Py_INCREF
(
Py_None
);
return
Py_None
;
}
static
PyMethodDef
vlcMediaInstance_methods
[]
=
{
{
"get_length"
,
vlcMediaInstance_get_length
,
METH_VARARGS
,
"get_length() -> long "
},
{
"get_time"
,
vlc
Input
_get_time
,
METH_VARARGS
,
{
"get_time"
,
vlc
MediaInstance
_get_time
,
METH_VARARGS
,
"get_time() -> long"
},
{
"set_time"
,
vlc
Input
_set_time
,
METH_VARARGS
,
{
"set_time"
,
vlc
MediaInstance
_set_time
,
METH_VARARGS
,
"set_time(long)"
},
{
"get_position"
,
vlc
Input
_get_position
,
METH_VARARGS
,
{
"get_position"
,
vlc
MediaInstance
_get_position
,
METH_VARARGS
,
"get_position() -> float"
},
{
"set_position"
,
vlc
Input
_set_position
,
METH_VARARGS
,
{
"set_position"
,
vlc
MediaInstance
_set_position
,
METH_VARARGS
,
"set_position(float)"
},
{
"will_play"
,
vlc
Input
_will_play
,
METH_VARARGS
,
{
"will_play"
,
vlc
MediaInstance
_will_play
,
METH_VARARGS
,
"will_play() -> int"
},
{
"get_rate"
,
vlcInput_get_rate
,
METH_VARARGS
,
{
"is_seekable"
,
vlcMediaInstance_is_seekable
,
METH_VARARGS
,
"is_seekable() -> int"
},
{
"can_pause"
,
vlcMediaInstance_can_pause
,
METH_VARARGS
,
"can_pause() -> int"
},
{
"get_rate"
,
vlcMediaInstance_get_rate
,
METH_VARARGS
,
"get_rate() -> float"
},
{
"set_rate"
,
vlc
Input
_set_rate
,
METH_VARARGS
,
{
"set_rate"
,
vlc
MediaInstance
_set_rate
,
METH_VARARGS
,
"set_rate(float)"
},
{
"get_state"
,
vlc
Input
_get_state
,
METH_VARARGS
,
{
"get_state"
,
vlc
MediaInstance
_get_state
,
METH_VARARGS
,
"get_state() -> int"
},
{
"has_vout"
,
vlc
Input
_has_vout
,
METH_VARARGS
,
{
"has_vout"
,
vlc
MediaInstance
_has_vout
,
METH_VARARGS
,
"has_vout() -> int"
},
{
"get_fps"
,
vlc
Input
_get_fps
,
METH_VARARGS
,
{
"get_fps"
,
vlc
MediaInstance
_get_fps
,
METH_VARARGS
,
"get_fps() -> float"
},
{
"audio_get_track"
,
vlc
Input
_audio_get_track
,
METH_VARARGS
,
{
"audio_get_track"
,
vlc
MediaInstance
_audio_get_track
,
METH_VARARGS
,
"audio_get_track() -> int Get current audio track"
},
{
"audio_set_track"
,
vlc
Input
_audio_set_track
,
METH_VARARGS
,
{
"audio_set_track"
,
vlc
MediaInstance
_audio_set_track
,
METH_VARARGS
,
"audio_set_track(int) Set current audio track"
},
{
"toggle_fullscreen"
,
vlc
Input
_toggle_fullscreen
,
METH_VARARGS
,
{
"toggle_fullscreen"
,
vlc
MediaInstance
_toggle_fullscreen
,
METH_VARARGS
,
"toggle_fullscreen() Toggle fullscreen status on video output"
},
{
"set_fullscreen"
,
vlc
Input
_set_fullscreen
,
METH_VARARGS
,
{
"set_fullscreen"
,
vlc
MediaInstance
_set_fullscreen
,
METH_VARARGS
,
"set_fullscreen(bool) Enable or disable fullscreen on a video output"
},
{
"get_fullscreen"
,
vlc
Input
_get_fullscreen
,
METH_VARARGS
,
{
"get_fullscreen"
,
vlc
MediaInstance
_get_fullscreen
,
METH_VARARGS
,
"get_fullscreen() -> bool Get current fullscreen status"
},
{
"get_height"
,
vlc
Input
_get_height
,
METH_VARARGS
,
{
"get_height"
,
vlc
MediaInstance
_get_height
,
METH_VARARGS
,
"get_height() -> int Get current video height"
},
{
"get_width"
,
vlc
Input
_get_width
,
METH_VARARGS
,
{
"get_width"
,
vlc
MediaInstance
_get_width
,
METH_VARARGS
,
"get_width() -> int Get current video width"
},
{
"get_aspect_ratio"
,
vlc
Input
_get_aspect_ratio
,
METH_VARARGS
,
{
"get_aspect_ratio"
,
vlc
MediaInstance
_get_aspect_ratio
,
METH_VARARGS
,
"get_aspect_ratio() -> str Get current video aspect ratio"
},
{
"set_aspect_ratio"
,
vlc
Input
_set_aspect_ratio
,
METH_VARARGS
,
{
"set_aspect_ratio"
,
vlc
MediaInstance
_set_aspect_ratio
,
METH_VARARGS
,
"set_aspect_ratio(str) Set new video aspect ratio"
},
{
"video_take_snapshot"
,
vlc
Input
_video_take_snapshot
,
METH_VARARGS
,
{
"video_take_snapshot"
,
vlc
MediaInstance
_video_take_snapshot
,
METH_VARARGS
,
"video_take_snapshot(filename=str) Take a snapshot of the current video window"
},
{
"video_resize"
,
vlc
Input
_video_resize
,
METH_VARARGS
,
{
"video_resize"
,
vlc
MediaInstance
_video_resize
,
METH_VARARGS
,
"video_resize(width=int, height=int) Resize the current video output window"
},
{
"video_reparent"
,
vlc
Input
_video_reparent
,
METH_VARARGS
,
{
"video_reparent"
,
vlc
MediaInstance
_video_reparent
,
METH_VARARGS
,
"video_reparent(visual=int) change the parent for the current video output"
},
{
"play"
,
vlcMediaInstance_play
,
METH_VARARGS
,
"play() Play the media instance"
},
{
"pause"
,
vlcMediaInstance_pause
,
METH_VARARGS
,
"pause() Pause the media instance"
},
{
"stop"
,
vlcMediaInstance_stop
,
METH_VARARGS
,
"stop() Stop the media instance"
},
{
"set_drawable"
,
vlcMediaInstance_set_drawable
,
METH_VARARGS
,
"set_drawable() Set the drawable id"
},
{
"get_chapter"
,
vlcMediaInstance_get_chapter
,
METH_VARARGS
,
"get_chapter() -> int Get current chapter"
},
{
"set_chapter"
,
vlcMediaInstance_set_chapter
,
METH_VARARGS
,
"set_chapter(int) Set current chapter"
},
{
"get_chapter_count"
,
vlcMediaInstance_get_chapter_count
,
METH_VARARGS
,
"get_chapter_count() -> int Get current chapter count"
},
{
"set_mediadescriptor"
,
vlcMediaInstance_set_media_descriptor
,
METH_VARARGS
,
"set_mediadescriptor(vlc.MediaDescriptor) Set the media descriptor that will be used by the media_instance"
},
{
"get_mediadescriptor"
,
vlcMediaInstance_get_media_descriptor
,
METH_VARARGS
,
"get_mediadescriptor() -> vlc.MediaDescriptor Get the media descriptor used by the media_instance (if any)."
},
{
"get_spu"
,
vlcMediaInstance_get_spu
,
METH_VARARGS
,
"get_spu() -> int Get current video subtitle"
},
{
"set_spu"
,
vlcMediaInstance_set_spu
,
METH_VARARGS
,
"set_spu(int) Set new video subtitle"
},
{
NULL
}
/* Sentinel */
};
static
PyTypeObject
vlc
Input
_Type
=
static
PyTypeObject
vlc
MediaInstance
_Type
=
{
PyObject_HEAD_INIT
(
NULL
)
0
,
/*ob_size*/
"vlc.
Input
"
,
/*tp_name*/
sizeof
(
vlc
Input
_Type
),
/*tp_basicsize*/
"vlc.
MediaInstance
"
,
/*tp_name*/
sizeof
(
vlc
MediaInstance
_Type
),
/*tp_basicsize*/
0
,
/*tp_itemsize*/
0
,
/*tp_dealloc*/
0
,
/*tp_print*/
...
...
@@ -410,14 +632,14 @@ static PyTypeObject vlcInput_Type =
0
,
/*tp_setattro*/
0
,
/*tp_as_buffer*/
Py_TPFLAGS_DEFAULT
|
Py_TPFLAGS_BASETYPE
,
/*tp_flags*/
"vlc.
Input
object
\n\n
It cannot be instanciated standalone, it must be obtained from an existing vlc.Instance object"
,
/* tp_doc */
"vlc.
MediaInstance
object
\n\n
It cannot be instanciated standalone, it must be obtained from an existing vlc.Instance object"
,
/* tp_doc */
0
,
/* tp_traverse */
0
,
/* tp_clear */
0
,
/* tp_richcompare */
0
,
/* tp_weaklistoffset */
0
,
/* tp_iter */
0
,
/* tp_iternext */
vlc
Input
_methods
,
/* tp_methods */
vlc
MediaInstance
_methods
,
/* tp_methods */
0
,
/* tp_members */
0
,
/* tp_getset */
0
,
/* tp_base */
...
...
bindings/python/vlc_instance.c
View file @
528f1c64
...
...
@@ -315,18 +315,18 @@ vlcInstance_playlist_delete_item( PyObject *self, PyObject *args )
}
static
PyObject
*
vlcInstance_playlist_get_
input
(
PyObject
*
self
,
PyObject
*
args
)
vlcInstance_playlist_get_
media_instance
(
PyObject
*
self
,
PyObject
*
args
)
{
libvlc_exception_t
ex
;
libvlc_media_instance_t
*
p_m
d
;
vlc
Input
*
p_ret
;
libvlc_media_instance_t
*
p_m
i
;
vlc
MediaInstance
*
p_ret
;
LIBVLC_TRY
;
p_m
d
=
libvlc_playlist_get_media_instance
(
LIBVLC_INSTANCE
->
p_instance
,
&
ex
);
p_m
i
=
libvlc_playlist_get_media_instance
(
LIBVLC_INSTANCE
->
p_instance
,
&
ex
);
LIBVLC_EXCEPT
;
p_ret
=
PyObject_New
(
vlc
Input
,
&
vlcInput
_Type
);
p_ret
->
p_m
d
=
p_md
;
p_ret
=
PyObject_New
(
vlc
MediaInstance
,
&
vlcMediaInstance
_Type
);
p_ret
->
p_m
i
=
p_mi
;
Py_INCREF
(
p_ret
);
/* Ah bon ? */
return
(
PyObject
*
)
p_ret
;
}
...
...
@@ -348,6 +348,19 @@ vlcInstance_video_set_parent( PyObject *self, PyObject *args )
return
Py_None
;
}
static
PyObject
*
vlcInstance_video_get_parent
(
PyObject
*
self
,
PyObject
*
args
)
{
libvlc_exception_t
ex
;
libvlc_drawable_t
i_ret
;
LIBVLC_TRY
;
i_ret
=
libvlc_video_get_parent
(
LIBVLC_INSTANCE
->
p_instance
,
&
ex
);
LIBVLC_EXCEPT
;
return
Py_BuildValue
(
"L"
,
i_ret
);
}
static
PyObject
*
vlcInstance_video_set_size
(
PyObject
*
self
,
PyObject
*
args
)
{
...
...
@@ -566,6 +579,23 @@ vlcInstance_vlm_set_input( PyObject *self, PyObject *args )
return
Py_None
;
}
static
PyObject
*
vlcInstance_vlm_add_input
(
PyObject
*
self
,
PyObject
*
args
)
{
libvlc_exception_t
ex
;
char
*
psz_name
;
char
*
psz_input
;
if
(
!
PyArg_ParseTuple
(
args
,
"ss"
,
&
psz_name
,
&
psz_input
)
)
return
NULL
;
LIBVLC_TRY
;
libvlc_vlm_add_input
(
LIBVLC_INSTANCE
->
p_instance
,
psz_name
,
psz_input
,
&
ex
);
LIBVLC_EXCEPT
;
Py_INCREF
(
Py_None
);
return
Py_None
;
}
static
PyObject
*
vlcInstance_vlm_set_loop
(
PyObject
*
self
,
PyObject
*
args
)
{
...
...
@@ -702,6 +732,27 @@ vlcInstance_vlm_show_media( PyObject *self, PyObject *args )
return
o_ret
;
}
static
PyObject
*
vlcInstance_media_descriptor_new
(
PyObject
*
self
,
PyObject
*
args
)
{
libvlc_exception_t
ex
;
libvlc_media_descriptor_t
*
p_md
;
char
*
psz_mrl
=
NULL
;
vlcMediaDescriptor
*
p_ret
;
if
(
!
PyArg_ParseTuple
(
args
,
"s"
,
&
psz_mrl
)
)
return
NULL
;
LIBVLC_TRY
;
p_md
=
libvlc_media_descriptor_new
(
LIBVLC_INSTANCE
->
p_instance
,
psz_mrl
,
&
ex
);
LIBVLC_EXCEPT
;
p_ret
=
PyObject_New
(
vlcMediaDescriptor
,
&
vlcMediaDescriptor_Type
);
p_ret
->
p_md
=
p_md
;
Py_INCREF
(
p_ret
);
/* Ah bon ? */
return
(
PyObject
*
)
p_ret
;
}
/* Method table */
static
PyMethodDef
vlcInstance_methods
[]
=
{
...
...
@@ -729,10 +780,12 @@ static PyMethodDef vlcInstance_methods[] =
"playlist_add(mrl=str, name=str, options=list) -> int Add a new item to the playlist. options is a list of strings."
},
{
"playlist_delete_item"
,
vlcInstance_playlist_delete_item
,
METH_VARARGS
,
"playlist_delete_item(id=int) Delete the given item"
},
{
"playlist_get_
input"
,
vlcInstance_playlist_get_input
,
METH_VARARGS
,
"playlist_get_
input() -> object Return the current input
"
},
{
"playlist_get_
media_instance"
,
vlcInstance_playlist_get_media_instance
,
METH_VARARGS
,
"playlist_get_
media_instance() -> object Return the current media instance
"
},
{
"video_set_parent"
,
vlcInstance_video_set_parent
,
METH_VARARGS
,
"video_set_parent(xid=int) Set the parent xid or HWND"
},
"video_set_parent(xid=int) Set the parent xid/HWND/CGrafPort"
},
{
"video_get_parent"
,
vlcInstance_video_get_parent
,
METH_VARARGS
,
"video_get_parent(xid=int) Get the parent xid/HWND/CGrafPort"
},
{
"video_set_size"
,
vlcInstance_video_set_size
,
METH_VARARGS
,
"video_set_size(width=int, height=int) Set the video width and height"
},
{
"audio_toggle_mute"
,
vlcInstance_audio_toggle_mute
,
METH_VARARGS
,
...
...
@@ -749,6 +802,10 @@ static PyMethodDef vlcInstance_methods[] =
"audio_get_channel() -> int Get current audio channel"
},
{
"audio_set_channel"
,
vlcInstance_audio_set_channel
,
METH_VARARGS
,
"audio_set_channel(int) Set current audio channel"
},
{
"media_descriptor_new"
,
vlcInstance_media_descriptor_new
,
METH_VARARGS
,
"media_descriptor_new(str) -> object Create a media descriptor with the given mrl."
},
{
"vlm_add_broadcast"
,
vlcInstance_vlm_add_broadcast
,
METH_VARARGS
|
METH_KEYWORDS
,
"vlm_add_broadcast(name=str, input=str, output=str, options=list, enable=int, loop=int) Add a new broadcast"
},
{
"vlm_del_media"
,
vlcInstance_vlm_del_media
,
METH_VARARGS
,
...
...
@@ -759,6 +816,8 @@ static PyMethodDef vlcInstance_methods[] =
"vlm_set_output(name=str, output=str) Set the output"
},
{
"vlm_set_input"
,
vlcInstance_vlm_set_input
,
METH_VARARGS
,
"vlm_set_input(name=str, output=str) Set the input"
},
{
"vlm_add_input"
,
vlcInstance_vlm_add_input
,
METH_VARARGS
,
"vlm_add_input(name=str, output=str) Add a media's input MRL"
},
{
"vlm_set_loop"
,
vlcInstance_vlm_set_loop
,
METH_VARARGS
,
"vlm_set_loop(name=str, loop=int) Change the looping value"
},
{
"vlm_change_media"
,
vlcInstance_vlm_change_media
,
METH_VARARGS
|
METH_KEYWORDS
,
...
...
bindings/python/vlc_mediadescriptor.c
0 → 100644
View file @
528f1c64
/*****************************************************************************
* vlc_mediadescriptor.c: vlc.MediaDescriptor binding
*****************************************************************************
* Copyright (C) 2007 the VideoLAN team
* $Id: vlc_input.c 22643 2007-10-17 13:30:02Z funman $
*
* Authors: Olivier Aubert <oaubert at liris.cnrs.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
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
*****************************************************************************/
#include "vlcglue.h"
/***********************************************************************
* vlc.MediaDescriptor
***********************************************************************/
static
void
vlcMediaDescriptor_dealloc
(
PyObject
*
self
)
{
libvlc_media_descriptor_release
(
LIBVLC_MEDIADESCRIPTOR
->
p_md
);
PyObject_DEL
(
self
);
}
static
PyObject
*
vlcMediaDescriptor_add_option
(
PyObject
*
self
,
PyObject
*
args
)
{
libvlc_exception_t
ex
;
char
*
psz_options
=
NULL
;
if
(
!
PyArg_ParseTuple
(
args
,
"s"
,
&
psz_options
)
)
return
NULL
;
LIBVLC_TRY
;
libvlc_media_descriptor_add_option
(
LIBVLC_MEDIADESCRIPTOR
->
p_md
,
psz_options
,
&
ex
);
LIBVLC_EXCEPT
;
Py_INCREF
(
Py_None
);
return
Py_None
;
}
static
PyObject
*
vlcMediaDescriptor_get_mrl
(
PyObject
*
self
,
PyObject
*
args
)
{
libvlc_exception_t
ex
;
char
*
psz_mrl
;
PyObject
*
o_ret
;
LIBVLC_TRY
;
psz_mrl
=
libvlc_media_descriptor_get_mrl
(
LIBVLC_MEDIADESCRIPTOR
->
p_md
,
&
ex
);
LIBVLC_EXCEPT
;
o_ret
=
Py_BuildValue
(
"s"
,
psz_mrl
);
free
(
psz_mrl
);
return
o_ret
;
}
static
PyObject
*
vlcMediaDescriptor_get_state
(
PyObject
*
self
,
PyObject
*
args
)
{
libvlc_exception_t
ex
;
libvlc_state_t
i_state
;
LIBVLC_TRY
;
i_state
=
libvlc_media_descriptor_get_state
(
LIBVLC_MEDIADESCRIPTOR
->
p_md
,
&
ex
);
LIBVLC_EXCEPT
;
/* FIXME: return the defined state constant */
return
Py_BuildValue
(
"i"
,
i_state
);
}
static
PyObject
*
vlcMediaDescriptor_add_tag
(
PyObject
*
self
,
PyObject
*
args
)
{
libvlc_exception_t
ex
;
char
*
psz_key
;
char
*
psz_tag
;
if
(
!
PyArg_ParseTuple
(
args
,
"ss"
,
&
psz_key
,
&
psz_tag
)
)
return
NULL
;
LIBVLC_TRY
;
libvlc_media_descriptor_add_tag
(
LIBVLC_MEDIADESCRIPTOR
->
p_md
,
psz_key
,
(
libvlc_tag_t
)
psz_tag
,
&
ex
);
LIBVLC_EXCEPT
;
Py_INCREF
(
Py_None
);
return
Py_None
;
}
static
PyObject
*
vlcMediaDescriptor_remove_tag
(
PyObject
*
self
,
PyObject
*
args
)
{
libvlc_exception_t
ex
;
char
*
psz_key
;
char
*
psz_tag
;
if
(
!
PyArg_ParseTuple
(
args
,
"ss"
,
&
psz_key
,
&
psz_tag
)
)
return
NULL
;
LIBVLC_TRY
;
libvlc_media_descriptor_remove_tag
(
LIBVLC_MEDIADESCRIPTOR
->
p_md
,
psz_key
,
(
libvlc_tag_t
)
psz_tag
,
&
ex
);
LIBVLC_EXCEPT
;
Py_INCREF
(
Py_None
);
return
Py_None
;
}
static
PyObject
*
vlcMediaDescriptor_tags_count_for_key
(
PyObject
*
self
,
PyObject
*
args
)
{
libvlc_exception_t
ex
;
char
*
psz_tag
;
int
i_ret
;
if
(
!
PyArg_ParseTuple
(
args
,
"s"
,
&
psz_tag
)
)
return
NULL
;
LIBVLC_TRY
;
i_ret
=
libvlc_media_descriptor_tags_count_for_key
(
LIBVLC_MEDIADESCRIPTOR
->
p_md
,
psz_tag
,
&
ex
);
LIBVLC_EXCEPT
;
return
Py_BuildValue
(
"i"
,
i_ret
);
}
static
PyObject
*
vlcMediaDescriptor_get_duration
(
PyObject
*
self
,
PyObject
*
args
)
{
libvlc_exception_t
ex
;
libvlc_time_t
i_ret
;
LIBVLC_TRY
;
i_ret
=
libvlc_media_descriptor_get_duration
(
LIBVLC_MEDIADESCRIPTOR
->
p_md
,
&
ex
);
LIBVLC_EXCEPT
;
return
Py_BuildValue
(
"L"
,
i_ret
);
}
static
PyObject
*
vlcMediaDescriptor_media_instance_new
(
PyObject
*
self
,
PyObject
*
args
)
{
libvlc_exception_t
ex
;
libvlc_media_instance_t
*
p_mi
;
vlcMediaInstance
*
p_ret
;
LIBVLC_TRY
;
p_mi
=
libvlc_media_instance_new_from_media_descriptor
(
LIBVLC_MEDIADESCRIPTOR
->
p_md
,
&
ex
);
LIBVLC_EXCEPT
;
p_ret
=
PyObject_New
(
vlcMediaInstance
,
&
vlcMediaInstance_Type
);
p_ret
->
p_mi
=
p_mi
;
Py_INCREF
(
p_ret
);
/* Ah bon ? */
return
(
PyObject
*
)
p_ret
;
}
static
PyObject
*
vlcMediaDescriptor_is_preparsed
(
PyObject
*
self
,
PyObject
*
args
)
{
libvlc_exception_t
ex
;
int
i_ret
;
LIBVLC_TRY
;
i_ret
=
libvlc_media_descriptor_is_preparsed
(
LIBVLC_MEDIADESCRIPTOR
->
p_md
,
&
ex
);
LIBVLC_EXCEPT
;
return
Py_BuildValue
(
"L"
,
i_ret
);
}
static
PyObject
*
vlcMediaDescriptor_get_meta
(
PyObject
*
self
,
PyObject
*
args
)
{
libvlc_exception_t
ex
;
char
*
psz_meta
=
NULL
;
char
*
psz_ret
=
NULL
;
PyObject
*
o_ret
;
int
i_index
=
-
1
;
int
i_loop
=
0
;
static
const
char
*
meta_names
[]
=
{
"Title"
,
"Artist"
,
"Genre"
,
"Copyright"
,
"Album"
,
"TrackNumber"
,
"Description"
,
"Rating"
,
"Date"
,
"Setting"
,
"URL"
,
"Language"
,
"NowPlaying"
,
"Publisher"
,
"EncodedBy"
,
"ArtworkURL"
,
"TrackID"
,
NULL
};
if
(
!
PyArg_ParseTuple
(
args
,
"s"
,
&
psz_meta
)
)
return
NULL
;
while
(
!
meta_names
[
i_loop
]
)
{
if
(
!
strncmp
(
meta_names
[
i_loop
],
psz_meta
,
strlen
(
meta_names
[
i_loop
]))
)
{
i_index
=
i_loop
;
break
;
}
}
if
(
i_index
<
0
)
{
PyObject
*
py_exc
=
vlcInstance_Exception
;
PyErr_SetString
(
py_exc
,
"Unknown meta attribute"
);
return
NULL
;
}
LIBVLC_TRY
;
psz_ret
=
libvlc_media_descriptor_get_meta
(
LIBVLC_MEDIADESCRIPTOR
->
p_md
,
i_index
,
&
ex
);
LIBVLC_EXCEPT
;
o_ret
=
Py_BuildValue
(
"s"
,
psz_ret
);
free
(
psz_ret
);
return
o_ret
;
}
static
PyMethodDef
vlcMediaDescriptor_methods
[]
=
{
{
"add_option"
,
vlcMediaDescriptor_add_option
,
METH_VARARGS
,
"add_option(str) Add an option to the media descriptor."
},
{
"get_mrl"
,
vlcMediaDescriptor_get_mrl
,
METH_VARARGS
,
"get_mrl() -> str"
},
{
"get_state"
,
vlcMediaDescriptor_get_state
,
METH_VARARGS
,
"get_state() -> int"
},
{
"add_tag"
,
vlcMediaDescriptor_add_tag
,
METH_VARARGS
,
"add_tag(key=str, tag=str) Add tag to the media descriptor."
},
{
"remove_tag"
,
vlcMediaDescriptor_remove_tag
,
METH_VARARGS
,
"remove_tag(key=str, tag=str) Remove tag from the media descriptor."
},
{
"tags_count_for_key"
,
vlcMediaDescriptor_tags_count_for_key
,
METH_VARARGS
,
"tags_count_for_key(str) ."
},
{
"get_duration"
,
vlcMediaDescriptor_get_duration
,
METH_VARARGS
,
"get_duration() -> int"
},
{
"mediainstance_new"
,
vlcMediaDescriptor_media_instance_new
,
METH_VARARGS
,
"mediainstance_new() -> vlc.MediaInstance Create a Media Instance object from a Media Descriptor"
},
{
"is_preparsed"
,
vlcMediaDescriptor_is_preparsed
,
METH_VARARGS
,
"is_preparsed() -> int"
},
{
"get_meta"
,
vlcMediaDescriptor_get_meta
,
METH_VARARGS
,
"get_meta(str) -> str Read the meta of the media descriptor."
},
{
NULL
}
/* Sentinel */
};
static
PyTypeObject
vlcMediaDescriptor_Type
=
{
PyObject_HEAD_INIT
(
NULL
)
0
,
/*ob_size*/
"vlc.MediaDescriptor"
,
/*tp_name*/
sizeof
(
vlcMediaDescriptor_Type
),
/*tp_basicsize*/
0
,
/*tp_itemsize*/
vlcMediaDescriptor_dealloc
,
/*tp_dealloc*/
0
,
/*tp_print*/
0
,
/*tp_getattr*/
0
,
/*tp_setattr*/
0
,
/*tp_compare*/
0
,
/*tp_repr*/
0
,
/*tp_as_number*/
0
,
/*tp_as_sequence*/
0
,
/*tp_as_mapping*/
0
,
/*tp_hash */
0
,
/*tp_call*/
0
,
/*tp_str*/
0
,
/*tp_getattro*/
0
,
/*tp_setattro*/
0
,
/*tp_as_buffer*/
Py_TPFLAGS_DEFAULT
|
Py_TPFLAGS_BASETYPE
,
/*tp_flags*/
"vlc.MediaDescriptor object."
,
/* tp_doc */
0
,
/* tp_traverse */
0
,
/* tp_clear */
0
,
/* tp_richcompare */
0
,
/* tp_weaklistoffset */
0
,
/* tp_iter */
0
,
/* tp_iternext */
vlcMediaDescriptor_methods
,
/* tp_methods */
0
,
/* tp_members */
0
,
/* tp_getset */
0
,
/* tp_base */
0
,
/* tp_dict */
0
,
/* tp_descr_get */
0
,
/* tp_descr_set */
0
,
/* tp_dictoffset */
0
,
/* tp_init */
0
,
/* tp_alloc */
0
,
/* tp_new */
};
bindings/python/vlc_module.c
View file @
528f1c64
...
...
@@ -47,8 +47,10 @@ initvlc( void )
{
PyObject
*
p_module
;
vlcInput_Type
.
tp_new
=
PyType_GenericNew
;
vlcInput_Type
.
tp_alloc
=
PyType_GenericAlloc
;
vlcMediaInstance_Type
.
tp_new
=
PyType_GenericNew
;
vlcMediaInstance_Type
.
tp_alloc
=
PyType_GenericAlloc
;
vlcMediaDescriptor_Type
.
tp_new
=
PyType_GenericNew
;
vlcMediaDescriptor_Type
.
tp_alloc
=
PyType_GenericAlloc
;
p_module
=
Py_InitModule3
(
"vlc"
,
vlc_methods
,
"VLC media player embedding module."
);
...
...
@@ -62,7 +64,9 @@ initvlc( void )
return
;
if
(
PyType_Ready
(
&
vlcInstance_Type
)
<
0
)
return
;
if
(
PyType_Ready
(
&
vlcInput_Type
)
<
0
)
if
(
PyType_Ready
(
&
vlcMediaInstance_Type
)
<
0
)
return
;
if
(
PyType_Ready
(
&
vlcMediaDescriptor_Type
)
<
0
)
return
;
/* Exceptions */
...
...
@@ -115,9 +119,12 @@ initvlc( void )
Py_INCREF
(
&
vlcInstance_Type
);
PyModule_AddObject
(
p_module
,
"Instance"
,
(
PyObject
*
)
&
vlcInstance_Type
);
Py_INCREF
(
&
vlcInput_Type
);
PyModule_AddObject
(
p_module
,
"Input"
,
(
PyObject
*
)
&
vlcInput_Type
);
Py_INCREF
(
&
vlcMediaInstance_Type
);
PyModule_AddObject
(
p_module
,
"MediaInstance"
,
(
PyObject
*
)
&
vlcMediaInstance_Type
);
Py_INCREF
(
&
vlcMediaDescriptor_Type
);
PyModule_AddObject
(
p_module
,
"MediaDescriptor"
,
(
PyObject
*
)
&
vlcMediaDescriptor_Type
);
/* Constants */
PyModule_AddIntConstant
(
p_module
,
"AbsolutePosition"
,
...
...
@@ -133,6 +140,7 @@ initvlc( void )
mediacontrol_SampleCount
);
PyModule_AddIntConstant
(
p_module
,
"MediaTime"
,
mediacontrol_MediaTime
);
PyModule_AddIntConstant
(
p_module
,
"PlayingStatus"
,
mediacontrol_PlayingStatus
);
PyModule_AddIntConstant
(
p_module
,
"PauseStatus"
,
...
...
@@ -147,6 +155,7 @@ initvlc( void )
mediacontrol_EndStatus
);
PyModule_AddIntConstant
(
p_module
,
"UndefinedStatus"
,
mediacontrol_UndefinedStatus
);
}
...
...
@@ -159,7 +168,7 @@ void * fast_memcpy( void * to, const void * from, size_t len )
/* Horrible hack... Please do not look. Temporary workaround for the
forward declaration mess of python types (cf vlcglue.h). If we do a
separate compilation, we have to declare some types as extern. But
the recommended way to forward declare types in python is
the recommended way to forward declare
d
types in python is
static... I am sorting the mess but in the meantime, this will
produce a working python module.
*/
...
...
@@ -167,3 +176,4 @@ void * fast_memcpy( void * to, const void * from, size_t len )
#include "vlc_position.c"
#include "vlc_instance.c"
#include "vlc_input.c"
#include "vlc_mediadescriptor.c"
bindings/python/vlcglue.h
View file @
528f1c64
...
...
@@ -113,21 +113,33 @@ typedef struct
}
PyPosition
;
/**********************************************************************
* vlc.
Input
Object
* vlc.
MediaInstance
Object
**********************************************************************/
typedef
struct
{
PyObject_HEAD
libvlc_media_instance_t
*
p_md
;
}
vlcInput
;
libvlc_media_instance_t
*
p_mi
;
}
vlcMediaInstance
;
/**********************************************************************
* vlc.MediaDescriptor Object
**********************************************************************/
typedef
struct
{
PyObject_HEAD
libvlc_media_descriptor_t
*
p_md
;
}
vlcMediaDescriptor
;
/* Forward declarations */
staticforward
PyTypeObject
MediaControl_Type
;
staticforward
PyTypeObject
PyPosition_Type
;
staticforward
PyTypeObject
vlcInstance_Type
;
staticforward
PyTypeObject
vlcInput_Type
;
staticforward
PyTypeObject
vlcMediaInstance_Type
;
staticforward
PyTypeObject
vlcMediaDescriptor_Type
;
#define LIBVLC_INPUT ((vlcInput*)self)
#define LIBVLC_INSTANCE ((vlcInstance*)self)
#define LIBVLC_MEDIAINSTANCE ((vlcMediaInstance*)self)
#define LIBVLC_MEDIADESCRIPTOR ((vlcMediaDescriptor*)self)
#define LIBVLC_TRY libvlc_exception_init( &ex );
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment