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
661a6c13
Commit
661a6c13
authored
Feb 03, 2006
by
Clément Stenac
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Play and add (Refs:#457)
parent
6df78501
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
146 additions
and
14 deletions
+146
-14
include/vlc/libvlc.h
include/vlc/libvlc.h
+39
-1
src/control/core.c
src/control/core.c
+7
-1
src/control/playlist.c
src/control/playlist.c
+55
-2
test/NativeLibvlcTest.py
test/NativeLibvlcTest.py
+3
-0
test/native_libvlc/native_libvlc_test.c
test/native_libvlc/native_libvlc_test.c
+38
-10
test/pyunit.h
test/pyunit.h
+4
-0
No files found.
include/vlc/libvlc.h
View file @
661a6c13
...
...
@@ -67,8 +67,21 @@ void libvlc_exception_init( libvlc_exception_t *p_exception );
* \return 0 if no exception raised, 1 else
*/
int
libvlc_exception_raised
(
libvlc_exception_t
*
p_exception
);
/**
* Raise an exception
* \param p_exception the exception to raise
* \param psz_message the exception message
*/
void
libvlc_exception_raise
(
libvlc_exception_t
*
p_exception
,
char
*
psz_message
);
/**
* Clear an exception object so it can be reused.
* The exception object must be initialized
* \param p_exception the exception to clear
*/
void
libvlc_exception_clear
(
libvlc_exception_t
*
);
/**
* Get exception message
* \param p_exception the exception to query
...
...
@@ -123,11 +136,13 @@ void libvlc_destroy( libvlc_instance_t *);
* Start playing. You can give some additionnal playlist item options
* that will be added to the item before playing it.
* \param p_instance the instance
* \param i_id the item to play. If this is a negative number, the next
* item will be selected. Else, the item with the given ID will be played
* \param i_options the number of options to add to the item
* \param ppsz_options the options to add to the item
* \param p_exception an initialized exception
*/
void
libvlc_playlist_play
(
libvlc_instance_t
*
,
int
,
char
**
,
void
libvlc_playlist_play
(
libvlc_instance_t
*
,
int
,
int
,
char
**
,
libvlc_exception_t
*
);
/**
...
...
@@ -158,6 +173,29 @@ void libvlc_playlist_next( libvlc_instance_t *, libvlc_exception_t * );
*/
void
libvlc_playlist_prev
(
libvlc_instance_t
*
,
libvlc_exception_t
*
);
/**
* Add an item at the end of the playlist
* If you need more advanced options, \see libvlc_playlist_add_extended
* \param p_instance the instance
* \param psz_uri the URI to open, using VLC format
* \param psz_name a name that you might want to give or NULL
* \return the identifier of the new item
*/
int
libvlc_playlist_add
(
libvlc_instance_t
*
,
const
char
*
,
const
char
*
,
libvlc_exception_t
*
);
/**
* Add an item at the end of the playlist, with additional input options
* \param p_instance the instance
* \param psz_uri the URI to open, using VLC format
* \param psz_name a name that you might want to give or NULL
* \param i_options the number of options to add
* \param ppsz_options strings representing the options to add
* \return the identifier of the new item
*/
int
libvlc_playlist_add_extended
(
libvlc_instance_t
*
,
const
char
*
,
const
char
*
,
int
,
const
char
**
,
libvlc_exception_t
*
);
...
...
src/control/core.c
View file @
661a6c13
...
...
@@ -35,6 +35,13 @@ inline void libvlc_exception_init( libvlc_exception_t *p_exception )
p_exception
->
psz_message
=
NULL
;
}
void
libvlc_exception_clear
(
libvlc_exception_t
*
p_exception
)
{
if
(
p_exception
->
psz_message
)
free
(
p_exception
->
psz_message
);
p_exception
->
b_raised
=
0
;
}
inline
int
libvlc_exception_raised
(
libvlc_exception_t
*
p_exception
)
{
return
p_exception
->
b_raised
;
...
...
@@ -58,7 +65,6 @@ inline void libvlc_exception_raise( libvlc_exception_t *p_exception,
p_exception
->
psz_message
=
strdup
(
psz_message
);
}
libvlc_instance_t
*
libvlc_new
(
int
argc
,
char
**
argv
,
libvlc_exception_t
*
p_exception
)
{
...
...
src/control/playlist.c
View file @
661a6c13
...
...
@@ -26,7 +26,7 @@
#include <vlc/intf.h>
void
libvlc_playlist_play
(
libvlc_instance_t
*
p_instance
,
void
libvlc_playlist_play
(
libvlc_instance_t
*
p_instance
,
int
i_id
,
int
i_options
,
char
**
ppsz_options
,
libvlc_exception_t
*
p_exception
)
{
...
...
@@ -37,7 +37,42 @@ void libvlc_playlist_play( libvlc_instance_t *p_instance,
libvlc_exception_raise
(
p_exception
,
"Empty playlist"
);
return
;
}
playlist_Play
(
p_instance
->
p_playlist
);
if
(
i_id
>=
0
)
{
/* Always use the current view when using libvlc */
playlist_view_t
*
p_view
;
playlist_item_t
*
p_item
;
if
(
p_instance
->
p_playlist
->
status
.
i_view
==
-
1
)
{
playlist_Control
(
p_instance
->
p_playlist
,
PLAYLIST_GOTO
,
i_id
);
}
p_view
=
playlist_ViewFind
(
p_instance
->
p_playlist
,
p_instance
->
p_playlist
->
status
.
i_view
);
if
(
!
p_view
)
{
libvlc_exception_raise
(
p_exception
,
"Unable to find current playlist view "
);
return
;
}
p_item
=
playlist_ItemGetById
(
p_instance
->
p_playlist
,
i_id
);
if
(
!
p_item
)
{
libvlc_exception_raise
(
p_exception
,
"Unable to find item "
);
return
;
}
playlist_Control
(
p_instance
->
p_playlist
,
PLAYLIST_VIEWPLAY
,
p_instance
->
p_playlist
->
status
.
i_view
,
p_view
->
p_root
,
p_item
);
}
else
{
playlist_Play
(
p_instance
->
p_playlist
);
}
}
void
libvlc_playlist_stop
(
libvlc_instance_t
*
p_instance
,
...
...
@@ -55,6 +90,24 @@ void libvlc_playlist_clear( libvlc_instance_t *p_instance,
playlist_Clear
(
p_instance
->
p_playlist
);
}
int
libvlc_playlist_add
(
libvlc_instance_t
*
p_instance
,
const
char
*
psz_uri
,
const
char
*
psz_name
,
libvlc_exception_t
*
p_exception
)
{
return
libvlc_playlist_add_extended
(
p_instance
,
psz_uri
,
psz_name
,
0
,
NULL
,
p_exception
);
}
int
libvlc_playlist_add_extended
(
libvlc_instance_t
*
p_instance
,
const
char
*
psz_uri
,
const
char
*
psz_name
,
int
i_options
,
const
char
**
ppsz_options
,
libvlc_exception_t
*
p_exception
)
{
return
playlist_AddExt
(
p_instance
->
p_playlist
,
psz_uri
,
psz_name
,
PLAYLIST_INSERT
,
PLAYLIST_END
,
-
1
,
ppsz_options
,
i_options
);
}
libvlc_input_t
*
libvlc_playlist_get_input
(
libvlc_instance_t
*
p_instance
,
libvlc_exception_t
*
p_exception
)
...
...
test/NativeLibvlcTest.py
View file @
661a6c13
...
...
@@ -10,3 +10,6 @@ class NativeLibvlcTestCase( unittest.TestCase ):
def
testStartup
(
self
):
"""Checks creation/destroy of libvlc"""
native_libvlc_test
.
create_destroy
()
def
testPlaylist
(
self
):
"""Checks basic playlist interaction"""
native_libvlc_test
.
playlist_test
()
test/native_libvlc/native_libvlc_test.c
View file @
661a6c13
...
...
@@ -23,28 +23,56 @@ static PyObject *exception_test( PyObject *self, PyObject *args )
static
PyObject
*
create_destroy
(
PyObject
*
self
,
PyObject
*
args
)
{
libvlc_instance_t
*
p_instance
;
char
*
argv
[]
=
{
};
libvlc_instance_t
*
p_instance
;
char
*
argv
[]
=
{
"vlc"
,
"--quiet"
};
libvlc_exception_t
exception
;
libvlc_exception_init
(
&
exception
);
libvlc_exception_t
exception
;
libvlc_exception_init
(
&
exception
);
p_instance
=
libvlc_new
(
0
,
argv
,
&
exception
);
p_instance
=
libvlc_new
(
2
,
argv
,
&
exception
);
ASSERT
(
p_instance
!=
NULL
,
"Instance creation failed"
);
ASSERT
(
p_instance
!=
NULL
,
"Instance creation failed"
);
ASSERT
(
!
libvlc_exception_raised
(
&
exception
),
ASSERT
(
!
libvlc_exception_raised
(
&
exception
),
"Exception raised while creating instance"
);
libvlc_destroy
(
p_instance
);
libvlc_destroy
(
p_instance
);
Py_INCREF
(
Py_None
);
return
Py_None
;
Py_INCREF
(
Py_None
);
return
Py_None
;
}
static
PyObject
*
playlist_test
(
PyObject
*
self
,
PyObject
*
args
)
{
libvlc_instance_t
*
p_instance
;
char
*
argv
[]
=
{
"vlc"
,
"--quiet"
};
int
i_id
;
libvlc_exception_t
exception
;
libvlc_exception_init
(
&
exception
);
p_instance
=
libvlc_new
(
2
,
argv
,
&
exception
);
libvlc_playlist_play
(
p_instance
,
0
,
0
,
argv
,
&
exception
);
ASSERT
(
libvlc_exception_raised
(
&
exception
),
"Playlist empty and exception not raised"
);
libvlc_exception_clear
(
&
exception
);
i_id
=
libvlc_playlist_add
(
p_instance
,
"test"
,
NULL
,
&
exception
);
ASSERT_EXCEPTION
;
ASSERT
(
i_id
>
0
,
"Returned identifier is <= 0"
);
Py_INCREF
(
Py_None
);
return
Py_None
;
}
static
PyMethodDef
native_libvlc_test_methods
[]
=
{
DEF_METHOD
(
create_destroy
,
"Create and destroy"
)
DEF_METHOD
(
exception_test
,
"Test Exception handling"
)
DEF_METHOD
(
playlist_test
,
"Test Playlist interaction"
)
{
NULL
,
NULL
,
0
,
NULL
}
};
...
...
test/pyunit.h
View file @
661a6c13
...
...
@@ -6,4 +6,8 @@
Py_InitModule( #module, module##_methods ); \
}
#define ASSERT_EXCEPTION if( libvlc_exception_raised( &exception ) ) { \
if( libvlc_exception_get_message( &exception ) ) PyErr_SetString( PyExc_AssertionError, libvlc_exception_get_message( &exception ) ); \
else PyErr_SetString( PyExc_AssertionError, "Exception raised" ); return NULL; }
#define DEF_METHOD( method, desc ) { #method, method, METH_VARARGS, desc},
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