Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
V
vlc
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
Commits
a315f634
Commit
a315f634
authored
Dec 21, 2006
by
Olivier Aubert
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
python bindings: completed libvlc bindings
parent
a77fdc28
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
297 additions
and
6 deletions
+297
-6
bindings/python/vlc_input.c
bindings/python/vlc_input.c
+199
-1
bindings/python/vlc_instance.c
bindings/python/vlc_instance.c
+98
-5
No files found.
bindings/python/vlc_input.c
View file @
a315f634
...
...
@@ -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 */
};
...
...
bindings/python/vlc_instance.c
View file @
a315f634
...
...
@@ -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
},
};
...
...
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