X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=bindings%2Fpython%2Fvlc_instance.c;h=3e5462a8e83ec7025440f2b5aa478b554879a478;hb=6a2bec6553f6802802e51768a76d7f4f0616a30e;hp=23459be8a1ac429388a4b8f497d639e6a8290f4f;hpb=88fc2c2874b49d4a3619049480e15b0c23113287;p=vlc diff --git a/bindings/python/vlc_instance.c b/bindings/python/vlc_instance.c index 23459be8a1..3e5462a8e8 100644 --- a/bindings/python/vlc_instance.c +++ b/bindings/python/vlc_instance.c @@ -28,9 +28,6 @@ pyoptions_to_args(PyObject *py_options, char*** pppsz_args) { Py_ssize_t i_size; Py_ssize_t i_index; - char** ppsz_args = *pppsz_args; - - ppsz_args = NULL; Py_INCREF( py_options ); if( ! PySequence_Check( py_options ) ) @@ -39,7 +36,9 @@ pyoptions_to_args(PyObject *py_options, char*** pppsz_args) return -1; } i_size = PySequence_Size( py_options ); - ppsz_args = malloc( ( i_size + 1 ) * sizeof( char * ) ); + + char **ppsz_args = *pppsz_args = malloc( ( i_size + 1 ) * sizeof( char * ) ); + if( ! ppsz_args ) { PyErr_SetString( PyExc_MemoryError, "Out of memory" ); @@ -64,8 +63,7 @@ free_args(int i_size, char** ppsz_args) int i_index; for ( i_index = 0; i_index < i_size; i_index++ ) - if( ppsz_args[i_index] ) - free(ppsz_args[i_index]); + free( ppsz_args[i_index] ); free( ppsz_args ); } @@ -82,7 +80,8 @@ vlcInstance_new( PyTypeObject *type, PyObject *args, PyObject *kwds ) char** ppsz_args = NULL; int i_size = 0; - if( PyArg_ParseTuple( args, "O", &py_list ) ) + fprintf(stderr, "Instancianting\n"); + if( PyArg_ParseTuple( args, "|O", &py_list ) ) { i_size = pyoptions_to_args( py_list, &ppsz_args ); if( i_size < 0 ) @@ -121,211 +120,19 @@ vlcInstance_get_vlc_id( PyObject *self, PyObject *args ) return Py_BuildValue( "i", libvlc_get_vlc_id( LIBVLC_INSTANCE->p_instance ) ); } -/* Set loop variable */ -static PyObject * -vlcInstance_playlist_loop( PyObject *self, PyObject *args ) -{ - libvlc_exception_t ex; - int i_loop = 0; - - if( !PyArg_ParseTuple( args, "i", &i_loop ) ) - return NULL; - - LIBVLC_TRY; - libvlc_playlist_loop( LIBVLC_INSTANCE->p_instance, i_loop, &ex ); - LIBVLC_EXCEPT; - - Py_INCREF( Py_None ); - return Py_None; -} - -/* Playlist play. 2 parameters: i_id, the id to play - l_options: a list of options */ static PyObject * -vlcInstance_playlist_play( PyObject *self, PyObject *args ) +vlcInstance_new_media_player( PyObject *self, PyObject *args ) { libvlc_exception_t ex; - int i_id = -1; - PyObject *py_options = NULL; - int i_size = 0; - char** ppsz_args = NULL; - - if( !PyArg_ParseTuple( args, "|iO", &i_id, &py_options ) ) - return NULL; + libvlc_media_player_t *p_mp; + vlcMediaPlayer *p_ret; - if( py_options ) - { - i_size = pyoptions_to_args( py_options, &ppsz_args ); - } - - LIBVLC_TRY; - libvlc_playlist_play( LIBVLC_INSTANCE->p_instance, i_id, i_size, ppsz_args, &ex ); - free_args( i_size, ppsz_args ); - LIBVLC_EXCEPT; - - Py_INCREF( Py_None ); - return Py_None; -} - -static PyObject * -vlcInstance_playlist_pause( PyObject *self, PyObject *args ) -{ - libvlc_exception_t ex; LIBVLC_TRY; - libvlc_playlist_pause( LIBVLC_INSTANCE->p_instance, &ex ); + p_mp = libvlc_media_player_new( LIBVLC_INSTANCE->p_instance, &ex ); LIBVLC_EXCEPT; - Py_INCREF( Py_None ); - return Py_None; -} -static PyObject * -vlcInstance_playlist_isplaying( PyObject *self, PyObject *args ) -{ - libvlc_exception_t ex; - int i_ret; - - LIBVLC_TRY; - i_ret = libvlc_playlist_isplaying( LIBVLC_INSTANCE->p_instance, &ex ); - LIBVLC_EXCEPT; - return Py_BuildValue( "i", i_ret ); -} - -static PyObject * -vlcInstance_playlist_items_count( PyObject *self, PyObject *args ) -{ - libvlc_exception_t ex; - int i_ret; - - LIBVLC_TRY; - i_ret = libvlc_playlist_items_count( LIBVLC_INSTANCE->p_instance, &ex ); - LIBVLC_EXCEPT; - return Py_BuildValue( "i", i_ret ); -} - -static PyObject * -vlcInstance_playlist_stop( PyObject *self, PyObject *args ) -{ - libvlc_exception_t ex; - LIBVLC_TRY; - libvlc_playlist_stop( LIBVLC_INSTANCE->p_instance, &ex ); - LIBVLC_EXCEPT; - Py_INCREF( Py_None ); - return Py_None; -} - -static PyObject * -vlcInstance_playlist_next( PyObject *self, PyObject *args ) -{ - libvlc_exception_t ex; - LIBVLC_TRY; - libvlc_playlist_next( LIBVLC_INSTANCE->p_instance, &ex ); - LIBVLC_EXCEPT; - Py_INCREF( Py_None ); - return Py_None; -} - -static PyObject * -vlcInstance_playlist_prev( PyObject *self, PyObject *args ) -{ - libvlc_exception_t ex; - LIBVLC_TRY; - libvlc_playlist_prev( LIBVLC_INSTANCE->p_instance, &ex ); - LIBVLC_EXCEPT; - Py_INCREF( Py_None ); - return Py_None; -} - -static PyObject * -vlcInstance_playlist_clear( PyObject *self, PyObject *args ) -{ - libvlc_exception_t ex; - LIBVLC_TRY; - libvlc_playlist_clear( LIBVLC_INSTANCE->p_instance, &ex ); - LIBVLC_EXCEPT; - Py_INCREF( Py_None ); - return Py_None; -} - -/* Add a playlist item. Main parameter: URI. - Optional parameters: name, options */ -static PyObject * -vlcInstance_playlist_add( PyObject *self, PyObject *args) -{ - libvlc_exception_t ex; - int i_ret; - char* psz_uri = NULL; - char* psz_name = NULL; - PyObject *py_options = NULL; - int i_size = 0; - char** ppsz_args = NULL; - - if( !PyArg_ParseTuple( args, "s|sO", &psz_uri, &psz_name, &py_options ) ) - return NULL; - - if( !psz_name ) - { - /* Set a default name */ - psz_name = strdup( psz_uri ); - } - - if( py_options ) - { - i_size = pyoptions_to_args( py_options, &ppsz_args ); - } - - LIBVLC_TRY; - if( ppsz_args ) - { - i_ret = libvlc_playlist_add_extended( LIBVLC_INSTANCE->p_instance, - psz_uri, - psz_name, - i_size, - ppsz_args, - &ex ); - free_args( i_size, ppsz_args ); - } - else - { - i_ret = libvlc_playlist_add( LIBVLC_INSTANCE->p_instance, - psz_uri, - psz_name, - &ex ); - } - LIBVLC_EXCEPT; - - return Py_BuildValue( "i", i_ret ); -} - -static PyObject * -vlcInstance_playlist_delete_item( PyObject *self, PyObject *args ) -{ - libvlc_exception_t ex; - int i_id; - int i_ret; - - if( !PyArg_ParseTuple( args, "i", &i_id ) ) - return NULL; - - LIBVLC_TRY; - i_ret = libvlc_playlist_delete_item( LIBVLC_INSTANCE->p_instance, i_id, &ex ); - LIBVLC_EXCEPT; - - return Py_BuildValue( "i", i_ret ); -} - -static PyObject * -vlcInstance_playlist_get_media_instance( PyObject *self, PyObject *args ) -{ - libvlc_exception_t ex; - libvlc_media_instance_t *p_mi; - vlcMediaInstance *p_ret; - - LIBVLC_TRY; - p_mi = libvlc_playlist_get_media_instance( LIBVLC_INSTANCE->p_instance, &ex ); - LIBVLC_EXCEPT; - - p_ret = PyObject_New( vlcMediaInstance, &vlcMediaInstance_Type ); - p_ret->p_mi = p_mi; + p_ret = PyObject_New( vlcMediaPlayer, &vlcMediaPlayer_Type ); + p_ret->p_mp = p_mp; Py_INCREF( p_ret ); /* Ah bon ? */ return ( PyObject * )p_ret; } @@ -495,12 +302,12 @@ vlcInstance_vlm_add_broadcast( PyObject *self, PyObject *args, PyObject *kwds ) &psz_input, &psz_output, &py_options, &i_enable, &i_loop ) ) return NULL; - + if( py_options ) { i_size = pyoptions_to_args( py_options, &ppsz_args ); } - + LIBVLC_TRY; libvlc_vlm_add_broadcast( LIBVLC_INSTANCE->p_instance, psz_name, psz_input, psz_output, @@ -533,7 +340,7 @@ vlcInstance_vlm_set_enabled( PyObject *self, PyObject *args ) libvlc_exception_t ex; char* psz_name; int i_enabled; - + if( !PyArg_ParseTuple( args, "si", &psz_name, &i_enabled ) ) return NULL; @@ -550,7 +357,7 @@ vlcInstance_vlm_set_output( PyObject *self, PyObject *args ) libvlc_exception_t ex; char* psz_name; char* psz_output; - + if( !PyArg_ParseTuple( args, "ss", &psz_name, &psz_output ) ) return NULL; @@ -567,7 +374,7 @@ vlcInstance_vlm_set_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; @@ -584,7 +391,7 @@ 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; @@ -601,7 +408,7 @@ vlcInstance_vlm_set_loop( PyObject *self, PyObject *args ) libvlc_exception_t ex; char* psz_name; int i_loop; - + if( !PyArg_ParseTuple( args, "si", &psz_name, &i_loop ) ) return NULL; @@ -632,12 +439,12 @@ vlcInstance_vlm_change_media( PyObject *self, PyObject *args, PyObject *kwds ) &psz_input, &psz_output, &py_options, &i_enable, &i_loop ) ) return NULL; - + if( py_options ) { i_size = pyoptions_to_args( py_options, &ppsz_args ); } - + LIBVLC_TRY; libvlc_vlm_change_media( LIBVLC_INSTANCE->p_instance, psz_name, psz_input, psz_output, @@ -653,7 +460,7 @@ vlcInstance_vlm_play_media( PyObject *self, PyObject *args ) { libvlc_exception_t ex; char* psz_name; - + if( !PyArg_ParseTuple( args, "s", &psz_name ) ) return NULL; @@ -685,7 +492,7 @@ vlcInstance_vlm_pause_media( PyObject *self, PyObject *args ) { libvlc_exception_t ex; char* psz_name; - + if( !PyArg_ParseTuple( args, "s", &psz_name ) ) return NULL; @@ -702,7 +509,7 @@ vlcInstance_vlm_seek_media( PyObject *self, PyObject *args ) libvlc_exception_t ex; char* psz_name; float f_percentage; - + if( !PyArg_ParseTuple( args, "sf", &psz_name, &f_percentage ) ) return NULL; @@ -732,22 +539,22 @@ vlcInstance_vlm_show_media( PyObject *self, PyObject *args ) } static PyObject * -vlcInstance_media_descriptor_new( PyObject *self, PyObject *args ) +vlcInstance_media_new( PyObject *self, PyObject *args ) { libvlc_exception_t ex; - libvlc_media_descriptor_t *p_md; + libvlc_media_t *p_media; char* psz_mrl = NULL; - vlcMediaDescriptor *p_ret; + vlcMedia *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 ); + p_media = libvlc_media_new( LIBVLC_INSTANCE->p_instance, psz_mrl, &ex ); LIBVLC_EXCEPT; - p_ret = PyObject_New( vlcMediaDescriptor, &vlcMediaDescriptor_Type ); - p_ret->p_md = p_md; + p_ret = PyObject_New( vlcMedia, &vlcMedia_Type ); + p_ret->p_media = p_media; Py_INCREF( p_ret ); /* Ah bon ? */ return ( PyObject * )p_ret; } @@ -755,55 +562,34 @@ vlcInstance_media_descriptor_new( PyObject *self, PyObject *args ) /* Method table */ static PyMethodDef vlcInstance_methods[] = { - { "get_vlc_id", vlcInstance_get_vlc_id, METH_VARARGS, + { "get_vlc_id", vlcInstance_get_vlc_id, METH_NOARGS, "get_vlc_id( ) -> int Get the instance id."}, - { "playlist_loop", vlcInstance_playlist_loop, METH_VARARGS, - "playlist_loop(bool) Set loop variable" }, - { "playlist_play", vlcInstance_playlist_play, METH_VARARGS, - "playlist_play(id=int, options=list) Play the given playlist item (-1 for current item) with optional options (a list of strings)" }, - { "playlist_pause", vlcInstance_playlist_pause, METH_VARARGS, - "playlist_pause() Pause the current stream"}, - { "playlist_isplaying", vlcInstance_playlist_isplaying, METH_VARARGS, - "playlist_isplaying() -> int Return True if the playlist if playing"}, - { "playlist_items_count", vlcInstance_playlist_items_count, METH_VARARGS, - "playlist_items_count() -> int Return the number of items in the playlist"}, - { "playlist_stop", vlcInstance_playlist_stop, METH_VARARGS, - "playlist_stop() Stop the current stream"}, - { "playlist_next", vlcInstance_playlist_next, METH_VARARGS, - "playlist_next() Play the next item"}, - { "playlist_prev", vlcInstance_playlist_prev, METH_VARARGS, - "playlist_prev() Play the previous item"}, - { "playlist_clear", vlcInstance_playlist_clear, METH_VARARGS, - "playlist_clear() Clear the playlist"}, - { "playlist_add", vlcInstance_playlist_add, METH_VARARGS, - "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_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/HWND/CGrafPort"}, - { "video_get_parent", vlcInstance_video_get_parent, METH_VARARGS, - "video_get_parent(xid=int) Get the parent xid/HWND/CGrafPort"}, + { "video_get_parent", vlcInstance_video_get_parent, METH_NOARGS, + "video_get_parent() -> 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, + { "audio_toggle_mute", vlcInstance_audio_toggle_mute, METH_NOARGS, "audio_toggle_mute() Toggle the mute state"}, - { "audio_get_mute", vlcInstance_audio_get_mute, METH_VARARGS, + { "audio_get_mute", vlcInstance_audio_get_mute, METH_NOARGS, "audio_get_mute() -> int Get the mute state"}, { "audio_set_mute", vlcInstance_audio_set_mute, METH_VARARGS, "audio_set_mute(state=int) Set the mute state"}, - { "audio_get_volume", vlcInstance_audio_get_volume, METH_VARARGS, + { "audio_get_volume", vlcInstance_audio_get_volume, METH_NOARGS, "audio_get_volume() -> int Get the audio volume"}, { "audio_set_volume", vlcInstance_audio_set_volume, METH_VARARGS, "audio_set_volume(volume=int) Set the audio volume"}, - { "audio_get_channel", vlcInstance_audio_get_channel, METH_VARARGS, + { "audio_get_channel", vlcInstance_audio_get_channel, METH_NOARGS, "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."}, + { "media_new", vlcInstance_media_new, METH_VARARGS, + "media_new(str) -> object Create a media object with the given mrl."}, + + { "mediaplayer_new", vlcInstance_new_media_player, METH_NOARGS, + "mediaplayer_new() -> object Create a media player."}, { "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" }, @@ -858,7 +644,7 @@ static PyTypeObject vlcInstance_Type = 0, /*tp_setattro*/ 0, /*tp_as_buffer*/ Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, /*tp_flags*/ - "VLC Instance(args)\n\nNote: if args is specified, the first arg is interpreted as an executable name to get the directory of the VLC plugins.", /* tp_doc */ + "VLC Instance(args)", /* tp_doc */ 0, /* tp_traverse */ 0, /* tp_clear */ 0, /* tp_richcompare */