diff --git a/bindings/python/vlc_input.c b/bindings/python/vlc_input.c index 2dd74697b4..424013f171 100644 --- a/bindings/python/vlc_input.c +++ b/bindings/python/vlc_input.c @@ -162,10 +162,183 @@ vlcInput_get_fps( PyObject *self, PyObject *args ) return Py_BuildValue( "f", f_ret ); } +static PyObject * +vlcInput_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_input, &ex ); + LIBVLC_EXCEPT; + return Py_BuildValue( "i", i_ret ); +} + +static PyObject * +vlcInput_audio_set_track( PyObject *self, PyObject *args ) +{ + libvlc_exception_t ex; + int i_track; + + if( !PyArg_ParseTuple( args, "i", &i_track ) ) + return NULL; + + LIBVLC_TRY; + libvlc_audio_set_track( LIBVLC_INPUT->p_input, i_track, &ex ); + LIBVLC_EXCEPT; + Py_INCREF( Py_None ); + return Py_None; +} + +static PyObject * +vlcInput_toggle_fullscreen( PyObject *self, PyObject *args ) +{ + libvlc_exception_t ex; + + LIBVLC_TRY; + libvlc_toggle_fullscreen( LIBVLC_INPUT->p_input, &ex); + LIBVLC_EXCEPT; + Py_INCREF( Py_None ); + return Py_None; +} + +static PyObject * +vlcInput_set_fullscreen( PyObject *self, PyObject *args ) +{ + libvlc_exception_t ex; + int i_fullscreen; + + if( !PyArg_ParseTuple( args, "i", &i_fullscreen ) ) + return NULL; + + LIBVLC_TRY; + libvlc_set_fullscreen( LIBVLC_INPUT->p_input, i_fullscreen, &ex); + LIBVLC_EXCEPT; + Py_INCREF( Py_None ); + return Py_None; +} + +static PyObject * +vlcInput_get_fullscreen( PyObject *self, PyObject *args ) +{ + libvlc_exception_t ex; + int i_ret; + + LIBVLC_TRY; + i_ret = libvlc_get_fullscreen( LIBVLC_INPUT->p_input, &ex); + LIBVLC_EXCEPT; + return Py_BuildValue( "i", i_ret ); +} + +static PyObject * +vlcInput_get_height( PyObject *self, PyObject *args ) +{ + libvlc_exception_t ex; + int i_ret; + + LIBVLC_TRY; + i_ret = libvlc_video_get_height( LIBVLC_INPUT->p_input, &ex); + LIBVLC_EXCEPT; + return Py_BuildValue( "i", i_ret ); +} + +static PyObject * +vlcInput_get_width( PyObject *self, PyObject *args ) +{ + libvlc_exception_t ex; + int i_ret; + + LIBVLC_TRY; + i_ret = libvlc_video_get_width( LIBVLC_INPUT->p_input, &ex); + LIBVLC_EXCEPT; + return Py_BuildValue( "i", i_ret ); +} + +static PyObject * +vlcInput_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_input, &ex); + LIBVLC_EXCEPT; + o_ret=Py_BuildValue( "s", psz_ret ); + free( psz_ret ); + return o_ret; +} + +static PyObject * +vlcInput_set_aspect_ratio( PyObject *self, PyObject *args ) +{ + libvlc_exception_t ex; + char* psz_ratio; + + if( !PyArg_ParseTuple( args, "s", &psz_ratio ) ) + return NULL; + + LIBVLC_TRY; + libvlc_video_set_aspect_ratio( LIBVLC_INPUT->p_input, psz_ratio, &ex); + LIBVLC_EXCEPT; + free( psz_ratio ); + Py_INCREF( Py_None ); + return Py_None; +} + +static PyObject * +vlcInput_video_take_snapshot( PyObject *self, PyObject *args ) +{ + libvlc_exception_t ex; + char* psz_filename; + + if( !PyArg_ParseTuple( args, "s", &psz_filename ) ) + return NULL; + + LIBVLC_TRY; + libvlc_video_take_snapshot( LIBVLC_INPUT->p_input, psz_filename, &ex); + LIBVLC_EXCEPT; + Py_INCREF( Py_None ); + return Py_None; +} + +static PyObject * +vlcInput_video_resize( PyObject *self, PyObject *args ) +{ + libvlc_exception_t ex; + int i_width; + int i_height; + + if( !PyArg_ParseTuple( args, "ii", &i_width, &i_height ) ) + return NULL; + + LIBVLC_TRY; + libvlc_video_resize( LIBVLC_INPUT->p_input, i_width, i_height, &ex); + LIBVLC_EXCEPT; + Py_INCREF( Py_None ); + return Py_None; +} + +static PyObject * +vlcInput_video_reparent( PyObject *self, PyObject *args ) +{ + libvlc_exception_t ex; + WINDOWHANDLE i_visual; + int i_ret; + + if( !PyArg_ParseTuple( args, "i", &i_visual ) ) + return NULL; + + LIBVLC_TRY; + i_ret = libvlc_video_reparent( LIBVLC_INPUT->p_input, i_visual, &ex); + LIBVLC_EXCEPT; + return Py_BuildValue( "i", i_ret ); +} + static PyMethodDef vlcInput_methods[] = { { "get_length", vlcInput_get_length, METH_VARARGS, - "get_length() -> long" }, + "get_length() -> long " }, { "get_time", vlcInput_get_time, METH_VARARGS, "get_time() -> long" }, { "set_time", vlcInput_set_time, METH_VARARGS, @@ -186,6 +359,31 @@ static PyMethodDef vlcInput_methods[] = "has_vout() -> int" }, { "get_fps", vlcInput_get_fps, METH_VARARGS, "get_fps() -> float" }, + { "audio_get_track", vlcInput_audio_get_track, METH_VARARGS, + "audio_get_track() -> int Get current audio track" }, + { "audio_set_track", vlcInput_audio_set_track, METH_VARARGS, + "audio_set_track(int) Set current audio track" }, + { "toggle_fullscreen", vlcInput_toggle_fullscreen, METH_VARARGS, + "toggle_fullscreen() Toggle fullscreen status on video output" }, + { "set_fullscreen", vlcInput_set_fullscreen, METH_VARARGS, + "set_fullscreen(bool) Enable or disable fullscreen on a video output" }, + { "get_fullscreen", vlcInput_get_fullscreen, METH_VARARGS, + "get_fullscreen() -> bool Get current fullscreen status" }, + { "get_height", vlcInput_get_height, METH_VARARGS, + "get_height() -> int Get current video height" }, + { "get_width", vlcInput_get_width, METH_VARARGS, + "get_width() -> int Get current video width" }, + { "get_aspect_ratio", vlcInput_get_aspect_ratio, METH_VARARGS, + "get_aspect_ratio() -> str Get current video aspect ratio" }, + { "set_aspect_ratio", vlcInput_set_aspect_ratio, METH_VARARGS, + "set_aspect_ratio(str) Set new video aspect ratio" }, + { "video_take_snapshot", vlcInput_video_take_snapshot, METH_VARARGS, + "video_take_snapshot(filename=str) Take a snapshot of the current video window" }, + { "video_resize", vlcInput_video_resize, METH_VARARGS, + "video_resize(width=int, height=int) Resize the current video output window" }, + { "video_reparent", vlcInput_video_reparent, METH_VARARGS, + "video_reparent(visual=int) change the parent for the current video output" }, + { NULL } /* Sentinel */ }; diff --git a/bindings/python/vlc_instance.c b/bindings/python/vlc_instance.c index 1e41964439..6bf3e9ed96 100644 --- a/bindings/python/vlc_instance.c +++ b/bindings/python/vlc_instance.c @@ -123,6 +123,24 @@ 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 * @@ -416,6 +434,37 @@ vlcInstance_audio_set_volume( PyObject *self, PyObject *args ) return Py_None; } +static PyObject * +vlcInstance_audio_get_channel( PyObject *self, PyObject *args ) +{ + libvlc_exception_t ex; + char* psz_ret; + PyObject* o_ret; + + LIBVLC_TRY; + psz_ret = libvlc_audio_get_channel( LIBVLC_INSTANCE->p_instance, &ex ); + LIBVLC_EXCEPT; + o_ret=Py_BuildValue( "s", psz_ret ); + free( psz_ret ); + return o_ret; +} + +static PyObject * +vlcInstance_audio_set_channel( PyObject *self, PyObject *args ) +{ + libvlc_exception_t ex; + char* psz_channel; + + if( !PyArg_ParseTuple( args, "s", &psz_channel ) ) + return NULL; + + LIBVLC_TRY; + libvlc_audio_set_channel( LIBVLC_INSTANCE->p_instance, psz_channel, &ex ); + LIBVLC_EXCEPT; + Py_INCREF( Py_None ); + return Py_None; +} + /* vlm_add_broadcast : name, input MRL, output MRL Keywords: options, enable, loop */ static PyObject * @@ -595,7 +644,7 @@ vlcInstance_vlm_stop_media( PyObject *self, PyObject *args ) { libvlc_exception_t ex; char* psz_name; - + if( !PyArg_ParseTuple( args, "s", &psz_name ) ) return NULL; @@ -622,11 +671,48 @@ vlcInstance_vlm_pause_media( PyObject *self, PyObject *args ) return Py_None; } +static PyObject * +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; + + LIBVLC_TRY; + libvlc_vlm_seek_media( LIBVLC_INSTANCE->p_instance, psz_name, f_percentage, &ex); + LIBVLC_EXCEPT; + Py_INCREF( Py_None ); + return Py_None; +} + +static PyObject * +vlcInstance_vlm_show_media( PyObject *self, PyObject *args ) +{ + libvlc_exception_t ex; + char* psz_name; + char* psz_ret; + PyObject* o_ret; + + if( !PyArg_ParseTuple( args, "s", &psz_name ) ) + return NULL; + LIBVLC_TRY; + psz_ret = libvlc_vlm_show_media( LIBVLC_INSTANCE->p_instance, psz_name, &ex ); + LIBVLC_EXCEPT; + o_ret = Py_BuildValue( "s", psz_ret ); + free( psz_ret ); + return o_ret; +} + /* Method table */ static PyMethodDef vlcInstance_methods[] = { { "get_vlc_id", vlcInstance_get_vlc_id, METH_VARARGS, "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, @@ -663,7 +749,10 @@ static PyMethodDef vlcInstance_methods[] = "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() -> int Get current audio channel" }, + { "audio_set_channel", vlcInstance_audio_set_channel, METH_VARARGS, + "audio_set_channel(int) Set current audio channel" }, { "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, @@ -679,11 +768,15 @@ static PyMethodDef vlcInstance_methods[] = { "vlm_change_media", vlcInstance_vlm_change_media, METH_VARARGS | METH_KEYWORDS, "vlm_change_media(name=str, input=str, output=str, options=list, enable=int, loop=int) Change the broadcast parameters" }, { "vlm_play_media", vlcInstance_vlm_play_media, METH_VARARGS, - "vlm_play_media(name=str)" }, + "vlm_play_media(name=str) Plays the named broadcast." }, { "vlm_stop_media", vlcInstance_vlm_stop_media, METH_VARARGS, - "vlm_stop_media(name=str)" }, + "vlm_stop_media(name=str) Stops the named broadcast." }, { "vlm_pause_media", vlcInstance_vlm_pause_media, METH_VARARGS, - "vlm_pause_media(name=str)" }, + "vlm_pause_media(name=str) Pauses the named broadcast." }, + { "vlm_seek_media", vlcInstance_vlm_seek_media, METH_VARARGS, + "vlm_seek_media(name=str, percentage=float) Seeks in the named broadcast." }, + { "vlm_show_media", vlcInstance_vlm_show_media, METH_VARARGS, + "vlm_show_media(name=str) Return information of the named broadcast." }, { NULL, NULL, 0, NULL }, };