Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
V
vlc-2-2
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-2-2
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