Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
V
vlc-1.1
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-1.1
Commits
e7e8927b
Commit
e7e8927b
authored
Oct 04, 2008
by
Lukas Durfina
Committed by
Pierre d'Herbemont
Oct 11, 2008
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
libvlc: better title/chapter handling
Signed-off-by:
Pierre d'Herbemont
<
pdherbemont@videolan.org
>
parent
d7fc7b2d
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
201 additions
and
12 deletions
+201
-12
include/vlc/libvlc.h
include/vlc/libvlc.h
+63
-9
include/vlc/libvlc_events.h
include/vlc/libvlc_events.h
+7
-1
src/control/event.c
src/control/event.c
+1
-0
src/control/media_player.c
src/control/media_player.c
+124
-2
src/libvlc.sym
src/libvlc.sym
+6
-0
No files found.
include/vlc/libvlc.h
View file @
e7e8927b
...
...
@@ -268,7 +268,7 @@ VLC_PUBLIC_API void libvlc_media_add_option(
/**
* Retain a reference to a media descriptor object (libvlc_media_t). Use
* libvlc_media_release() to decrement the reference count of a
* libvlc_media_release() to decrement the reference count of a
* media descriptor object.
*
* \param p_meta_desc a media descriptor object.
...
...
@@ -381,8 +381,8 @@ VLC_PUBLIC_API int
libvlc_exception_t
*
p_e
);
/**
* Sets media descriptor's user_data. user_data is specialized data
* accessed by the host application, VLC.framework uses it as a pointer to
* Sets media descriptor's user_data. user_data is specialized data
* accessed by the host application, VLC.framework uses it as a pointer to
* an native object that references a libvlc_media_t pointer
*
* \param p_md media descriptor object
...
...
@@ -395,8 +395,8 @@ VLC_PUBLIC_API void
libvlc_exception_t
*
p_e
);
/**
* Get media descriptor's user_data. user_data is specialized data
* accessed by the host application, VLC.framework uses it as a pointer to
* Get media descriptor's user_data. user_data is specialized data
* accessed by the host application, VLC.framework uses it as a pointer to
* an native object that references a libvlc_media_t pointer
*
* \param p_md media descriptor object
...
...
@@ -439,8 +439,8 @@ VLC_PUBLIC_API libvlc_media_player_t * libvlc_media_player_new_from_media( libvl
/**
* Release a media_player after use
* Decrement the reference count of a media player object. If the
* reference count is 0, then libvlc_media_player_release() will
* release the media player object. If the media player object
* reference count is 0, then libvlc_media_player_release() will
* release the media player object. If the media player object
* has been released, then it should not be used again.
*
* \param p_mi the Media Player to free
...
...
@@ -455,7 +455,7 @@ VLC_PUBLIC_API void libvlc_media_player_release( libvlc_media_player_t * );
*/
VLC_PUBLIC_API
void
libvlc_media_player_retain
(
libvlc_media_player_t
*
);
/**
/**
* Set the media that will be used by the media_player. If any,
* previous md will be released.
*
...
...
@@ -605,6 +605,60 @@ VLC_PUBLIC_API int libvlc_media_player_get_chapter( libvlc_media_player_t *, lib
VLC_PUBLIC_API
int
libvlc_media_player_get_chapter_count
(
libvlc_media_player_t
*
,
libvlc_exception_t
*
);
VLC_PUBLIC_API
int
libvlc_media_player_will_play
(
libvlc_media_player_t
*
,
libvlc_exception_t
*
);
/**
* Get title chapter count
*
* \param p_mi the Media Player
* \param i_title title
* \param p_e an initialized exception pointer
* \return number of chapters in title
*/
VLC_PUBLIC_API
int
libvlc_media_player_get_chapter_count_for_title
(
libvlc_media_player_t
*
,
int
,
libvlc_exception_t
*
);
/**
* Set movie title
*
* \param p_mi the Media Player
* \param i_title title number to play
* \param p_e an initialized exception pointer
*/
VLC_PUBLIC_API
void
libvlc_media_player_set_title
(
libvlc_media_player_t
*
,
int
,
libvlc_exception_t
*
);
/**
* Get movie title
*
* \param p_mi the Media Player
* \param p_e an initialized exception pointer
* \return title number currently playing
*/
VLC_PUBLIC_API
int
libvlc_media_player_get_title
(
libvlc_media_player_t
*
,
libvlc_exception_t
*
);
/**
* Get movie title count
*
* \param p_mi the Media Player
* \param p_e an initialized exception pointer
* \return title number count
*/
VLC_PUBLIC_API
int
libvlc_media_player_get_title_count
(
libvlc_media_player_t
*
,
libvlc_exception_t
*
);
/**
* Set previous chapter
*
* \param p_mi the Media Player
* \param p_e an initialized exception pointer
*/
VLC_PUBLIC_API
void
libvlc_media_player_previous_chapter
(
libvlc_media_player_t
*
,
libvlc_exception_t
*
);
/**
* Set next chapter
*
* \param p_mi the Media Player
* \param p_e an initialized exception pointer
*/
VLC_PUBLIC_API
void
libvlc_media_player_next_chapter
(
libvlc_media_player_t
*
,
libvlc_exception_t
*
);
/**
* Get movie play rate
*
...
...
@@ -1052,7 +1106,7 @@ VLC_PUBLIC_API void
/**
* Retain a reference to a media library object. This function will
* increment the reference counting for this object. Use
* increment the reference counting for this object. Use
* libvlc_media_library_release() to decrement the reference count.
*
* \param p_mlib media library object
...
...
include/vlc/libvlc_events.h
View file @
e7e8927b
...
...
@@ -82,7 +82,9 @@ typedef enum libvlc_event_type_t {
libvlc_MediaListPlayerStopped
,
libvlc_MediaDiscovererStarted
,
libvlc_MediaDiscovererEnded
libvlc_MediaDiscovererEnded
,
libvlc_MediaPlayerTitleChanged
}
libvlc_event_type_t
;
...
...
@@ -135,6 +137,10 @@ typedef struct libvlc_event_t
libvlc_time_t
new_time
;
}
media_player_time_changed
;
struct
{
int
new_title
;
}
media_player_title_changed
;
struct
{
libvlc_time_t
new_seekable
;
}
media_player_seekable_changed
;
...
...
src/control/event.c
View file @
e7e8927b
...
...
@@ -249,6 +249,7 @@ static const char event_type_to_name[][35] =
EVENT
(
libvlc_MediaPlayerBackward
),
EVENT
(
libvlc_MediaPlayerEndReached
),
EVENT
(
libvlc_MediaPlayerTimeChanged
),
EVENT
(
libvlc_MediaPlayerTitleChanged
),
EVENT
(
libvlc_MediaPlayerPositionChanged
),
EVENT
(
libvlc_MediaPlayerSeekableChanged
),
EVENT
(
libvlc_MediaPlayerPausableChanged
),
...
...
src/control/media_player.c
View file @
e7e8927b
...
...
@@ -370,6 +370,8 @@ libvlc_media_player_new( libvlc_instance_t * p_libvlc_instance,
libvlc_MediaPlayerPositionChanged
,
p_e
);
libvlc_event_manager_register_event_type
(
p_mi
->
p_event_manager
,
libvlc_MediaPlayerTimeChanged
,
p_e
);
libvlc_event_manager_register_event_type
(
p_mi
->
p_event_manager
,
libvlc_MediaPlayerTitleChanged
,
p_e
);
libvlc_event_manager_register_event_type
(
p_mi
->
p_event_manager
,
libvlc_MediaPlayerSeekableChanged
,
p_e
);
libvlc_event_manager_register_event_type
(
p_mi
->
p_event_manager
,
...
...
@@ -857,7 +859,7 @@ int libvlc_media_player_get_chapter(
p_input_thread
=
libvlc_get_input_thread
(
p_mi
,
p_e
);
if
(
!
p_input_thread
)
return
-
1
.
0
;
return
-
1
;
var_Get
(
p_input_thread
,
"chapter"
,
&
val
);
vlc_object_release
(
p_input_thread
);
...
...
@@ -874,7 +876,7 @@ int libvlc_media_player_get_chapter_count(
p_input_thread
=
libvlc_get_input_thread
(
p_mi
,
p_e
);
if
(
!
p_input_thread
)
return
-
1
.
0
;
return
-
1
;
var_Change
(
p_input_thread
,
"chapter"
,
VLC_VAR_CHOICESCOUNT
,
&
val
,
NULL
);
vlc_object_release
(
p_input_thread
);
...
...
@@ -882,6 +884,126 @@ int libvlc_media_player_get_chapter_count(
return
val
.
i_int
;
}
int
libvlc_media_player_get_chapter_count_for_title
(
libvlc_media_player_t
*
p_mi
,
int
i_title
,
libvlc_exception_t
*
p_e
)
{
input_thread_t
*
p_input_thread
;
vlc_value_t
val
;
p_input_thread
=
libvlc_get_input_thread
(
p_mi
,
p_e
);
if
(
!
p_input_thread
)
return
-
1
;
char
*
psz_name
=
NULL
;
if
(
asprintf
(
psz_name
,
"title %2i"
,
i_title
)
==
-
1
)
{
vlc_object_release
(
p_input_thread
);
return
-
1
;
}
var_Change
(
p_input_thread
,
psz_name
,
VLC_VAR_CHOICESCOUNT
,
&
val
,
NULL
);
vlc_object_release
(
p_input_thread
);
free
(
psz_name
);
return
val
.
i_int
;
}
void
libvlc_media_player_set_title
(
libvlc_media_player_t
*
p_mi
,
int
i_title
,
libvlc_exception_t
*
p_e
)
{
input_thread_t
*
p_input_thread
;
vlc_value_t
val
;
val
.
i_int
=
i_title
;
p_input_thread
=
libvlc_get_input_thread
(
p_mi
,
p_e
);
if
(
!
p_input_thread
)
return
;
var_Set
(
p_input_thread
,
"title"
,
val
);
vlc_object_release
(
p_input_thread
);
//send event
libvlc_event_t
event
;
event
.
type
=
libvlc_MediaPlayerTitleChanged
;
event
.
u
.
media_player_title_changed
.
new_title
=
i_title
;
libvlc_event_send
(
p_mi
->
p_event_manager
,
&
event
);
}
int
libvlc_media_player_get_title
(
libvlc_media_player_t
*
p_mi
,
libvlc_exception_t
*
p_e
)
{
input_thread_t
*
p_input_thread
;
vlc_value_t
val
;
p_input_thread
=
libvlc_get_input_thread
(
p_mi
,
p_e
);
if
(
!
p_input_thread
)
return
-
1
;
var_Get
(
p_input_thread
,
"title"
,
&
val
);
vlc_object_release
(
p_input_thread
);
return
val
.
i_int
;
}
int
libvlc_media_player_get_title_count
(
libvlc_media_player_t
*
p_mi
,
libvlc_exception_t
*
p_e
)
{
input_thread_t
*
p_input_thread
;
vlc_value_t
val
;
p_input_thread
=
libvlc_get_input_thread
(
p_mi
,
p_e
);
if
(
!
p_input_thread
)
return
-
1
;
var_Change
(
p_input_thread
,
"title"
,
VLC_VAR_CHOICESCOUNT
,
&
val
,
NULL
);
vlc_object_release
(
p_input_thread
);
return
val
.
i_int
;
}
void
libvlc_media_player_next_chapter
(
libvlc_media_player_t
*
p_mi
,
libvlc_exception_t
*
p_e
)
{
input_thread_t
*
p_input_thread
;
p_input_thread
=
libvlc_get_input_thread
(
p_mi
,
p_e
);
if
(
!
p_input_thread
)
return
;
int
i_type
=
var_Type
(
p_input_thread
,
"next-chapter"
);
vlc_value_t
val
;
val
.
b_bool
=
true
;
var_Set
(
p_input_thread
,
(
i_type
&
VLC_VAR_TYPE
)
!=
0
?
"next-chapter"
:
"next-title"
,
val
);
vlc_object_release
(
p_input_thread
);
}
void
libvlc_media_player_previous_chapter
(
libvlc_media_player_t
*
p_mi
,
libvlc_exception_t
*
p_e
)
{
input_thread_t
*
p_input_thread
;
p_input_thread
=
libvlc_get_input_thread
(
p_mi
,
p_e
);
if
(
!
p_input_thread
)
return
;
int
i_type
=
var_Type
(
p_input_thread
,
"next-chapter"
);
vlc_value_t
val
;
val
.
b_bool
=
true
;
var_Set
(
p_input_thread
,
(
i_type
&
VLC_VAR_TYPE
)
!=
0
?
"prev-chapter"
:
"prev-title"
,
val
);
vlc_object_release
(
p_input_thread
);
}
float
libvlc_media_player_get_fps
(
libvlc_media_player_t
*
p_mi
,
libvlc_exception_t
*
p_e
)
...
...
src/libvlc.sym
View file @
e7e8927b
...
...
@@ -110,6 +110,7 @@ libvlc_media_player_destroy
libvlc_media_player_event_manager
libvlc_media_player_get_chapter
libvlc_media_player_get_chapter_count
libvlc_media_player_get_chapter_count_for_title
libvlc_media_player_get_drawable
libvlc_media_player_get_fps
libvlc_media_player_get_length
...
...
@@ -118,13 +119,17 @@ libvlc_media_player_get_position
libvlc_media_player_get_rate
libvlc_media_player_get_state
libvlc_media_player_get_time
libvlc_media_player_get_title
libvlc_media_player_get_title_count
libvlc_media_player_has_vout
libvlc_media_player_is_seekable
libvlc_media_player_new
libvlc_media_player_new_from_input_thread
libvlc_media_player_new_from_media
libvlc_media_player_next_chapter
libvlc_media_player_pause
libvlc_media_player_play
libvlc_media_player_previous_chapter
libvlc_media_player_release
libvlc_media_player_retain
libvlc_media_player_set_chapter
...
...
@@ -133,6 +138,7 @@ libvlc_media_player_set_media
libvlc_media_player_set_position
libvlc_media_player_set_rate
libvlc_media_player_set_time
libvlc_media_player_set_title
libvlc_media_player_stop
libvlc_media_player_will_play
libvlc_media_release
...
...
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