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
06b57a51
Commit
06b57a51
authored
Jun 14, 2006
by
Clément Stenac
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
* Add a "media-library" option to enable/disable ML
* Add a "playlist-tree" option to force onelevel/catgory mode
parent
efae654e
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
64 additions
and
43 deletions
+64
-43
include/vlc_playlist.h
include/vlc_playlist.h
+26
-31
src/libvlc.h
src/libvlc.h
+21
-1
src/playlist/engine.c
src/playlist/engine.c
+17
-11
No files found.
include/vlc_playlist.h
View file @
06b57a51
...
...
@@ -65,12 +65,13 @@ struct playlist_item_t
uint8_t
i_flags
;
/**< Flags */
};
#define PLAYLIST_SAVE_FLAG 0x01
/**< Must it be saved */
#define PLAYLIST_SKIP_FLAG 0x02
/**< Must playlist skip after it ? */
#define PLAYLIST_DBL_FLAG 0x04
/**< Is it disabled ? */
#define PLAYLIST_RO_FLAG 0x10
/**< Write-enabled ? */
#define PLAYLIST_REMOVE_FLAG 0x20
/**< Remove this item at the end */
#define PLAYLIST_EXPANDED_FLAG 0x40
/**< Expanded node */
#define PLAYLIST_SAVE_FLAG 0x0001
/**< Must it be saved */
#define PLAYLIST_SKIP_FLAG 0x0002
/**< Must playlist skip after it ? */
#define PLAYLIST_DBL_FLAG 0x0004
/**< Is it disabled ? */
#define PLAYLIST_RO_FLAG 0x0008
/**< Write-enabled ? */
#define PLAYLIST_REMOVE_FLAG 0x0010
/**< Remove this item at the end */
#define PLAYLIST_EXPANDED_FLAG 0x0020
/**< Expanded node */
#define PLAYLIST_PREFCAT_FLAG 0x0040
/**< Prefer category */
/**
* Playlist status
...
...
@@ -99,9 +100,7 @@ struct playlist_preparse_t
};
/**
* Structure containing information about the playlist
*/
/** Structure containing information about the playlist */
struct
playlist_t
{
VLC_COMMON_MEMBERS
...
...
@@ -112,38 +111,40 @@ struct playlist_t
/*@{*/
int
i_enabled
;
/**< How many items are enabled ? */
/* Arrays of items */
int
i_size
;
/**< total size of the list */
playlist_item_t
**
pp_items
;
/**< array of pointers to the
* playlist items */
int
i_all_size
;
/**< size of list of items and nodes */
playlist_item_t
**
pp_all_items
;
/**< array of pointers to the
* playlist items and nodes */
int
i_last_playlist_id
;
/**< Last id to an item */
int
i_input_items
;
input_item_t
**
pp_input_items
;
int
i_last_input_id
;
input_item_t
**
pp_input_items
;
in
put_thread_t
*
p_input
;
/**< the input thread associated
* with the current item
*/
in
t
i_last_playlist_id
;
/**< Last id to an item */
int
i_last_input_id
;
/**< Last id on an input
*/
int
i_sort
;
/**< Last sorting applied to the playlist */
int
i_
order
;
/**< Last ordering applied to the playlist */
services_discovery_t
**
pp_sds
;
int
i_
sds
;
/* Predefined items */
playlist_item_t
*
p_root_category
;
playlist_item_t
*
p_root_onelevel
;
playlist_item_t
*
p_local_category
;
/** < "Playlist" in CATEGORY view */
playlist_item_t
*
p_ml_category
;
/** < "Library" in CATEGORY view */
playlist_item_t
*
p_local_onelevel
;
/** < "Playlist" in ONELEVEL view */
playlist_item_t
*
p_ml_onelevel
;
/** < "Library" in ONELEVEL iew */
services_discovery_t
**
pp_sds
;
int
i_sds
;
/* Runtime */
input_thread_t
*
p_input
;
/**< the input thread associated
* with the current item */
int
i_sort
;
/**< Last sorting applied to the playlist */
int
i_order
;
/**< Last ordering applied to the playlist */
mtime_t
i_vout_destroyed_date
;
mtime_t
i_sout_destroyed_date
;
playlist_preparse_t
*
p_preparse
;
/**< Preparser object */
mtime_t
i_vout_destroyed_date
;
mtime_t
i_sout_destroyed_date
;
vlc_mutex_t
gc_lock
;
/**< Lock to protect the garbage collection */
struct
{
/* Current status. These fields are readonly, only the playlist
...
...
@@ -167,14 +168,9 @@ struct playlist_t
vlc_mutex_t
lock
;
/**< Lock to protect request */
}
request
;
playlist_preparse_t
*
p_preparse
;
/**< Preparser object */
vlc_mutex_t
gc_lock
;
/**< Lock to protect the garbage collection */
// Playlist-unrelated fields
interaction_t
*
p_interaction
;
/**< Interaction manager */
global_stats_t
*
p_stats
;
/**< Global statistics */
interaction_t
*
p_interaction
;
/**< Interaction manager */
global_stats_t
*
p_stats
;
/**< Global statistics */
/*@}*/
};
...
...
@@ -183,7 +179,6 @@ struct playlist_add_t
{
int
i_node
;
int
i_item
;
int
i_view
;
int
i_position
;
};
...
...
src/libvlc.h
View file @
06b57a51
...
...
@@ -928,6 +928,21 @@ static char *ppsz_clock_descriptions[] =
#define PAS_LONGTEXT N_( \
"Stop the playlist after each played playlist item." )
#define ML_TEXT N_("Use media library")
#define ML_LONGTEXT N_( \
"The media library is automatically saved and reloaded each time you " \
"start VLC." )
#define PLTREE_TEXT N_("Use playlist tree")
#define PLTREE_LONGTEXT N_( \
"The playlist can use a tree to categorize some items, like the " \
"contents of a directory. \"Default\" means that the tree will only " \
"be used when really needed." )
static
int
pi_pltree_values
[]
=
{
0
,
1
,
2
};
static
char
*
ppsz_pltree_descriptions
[]
=
{
N_
(
"Default"
),
N_
(
"Always"
),
N_
(
"Never"
)
};
/*****************************************************************************
* Hotkeys
****************************************************************************/
...
...
@@ -1549,10 +1564,15 @@ vlc_module_begin();
add_bool
(
"repeat"
,
0
,
NULL
,
REPEAT_TEXT
,
REPEAT_LONGTEXT
,
VLC_FALSE
);
change_short
(
'R'
);
add_bool
(
"play-and-stop"
,
0
,
NULL
,
PAS_TEXT
,
PAS_LONGTEXT
,
VLC_FALSE
);
add_bool
(
"media-library"
,
1
,
NULL
,
ML_TEXT
,
ML_LONGTEXT
,
VLC_FALSE
);
add_integer
(
"playlist-tree"
,
0
,
NULL
,
PLTREE_TEXT
,
PLTREE_LONGTEXT
,
VLC_TRUE
);
change_integer_list
(
pi_pltree_values
,
ppsz_pltree_descriptions
,
0
);
add_string
(
"open"
,
""
,
NULL
,
OPEN_TEXT
,
OPEN_LONGTEXT
,
VLC_FALSE
);
add_bool
(
"auto-preparse"
,
VLC_TRUE
,
NULL
,
PREPARSE_TEXT
,
PREPARSE_LONGTEXT
,
VLC_FALSE
);
add_bool
(
"auto-preparse"
,
VLC_TRUE
,
NULL
,
PREPARSE_TEXT
,
PREPARSE_LONGTEXT
,
VLC_FALSE
);
set_subcategory
(
SUBCAT_PLAYLIST_SD
);
add_module_list_cat
(
"services-discovery"
,
SUBCAT_PLAYLIST_SD
,
NULL
,
...
...
src/playlist/engine.c
View file @
06b57a51
...
...
@@ -77,24 +77,30 @@ playlist_t * playlist_Create( vlc_object_t *p_parent )
/* Create playlist and media library */
p_playlist
->
p_local_category
=
playlist_NodeCreate
(
p_playlist
,
_
(
"Playlist"
),
p_playlist
->
p_root_category
);
p_playlist
->
p_ml_category
=
playlist_NodeCreate
(
p_playlist
,
_
(
"Media Library"
),
p_playlist
->
p_root_category
);
p_playlist
->
p_local_onelevel
=
playlist_NodeCreate
(
p_playlist
,
_
(
"Playlist"
),
p_playlist
->
p_root_onelevel
);
p_playlist
->
p_ml_onelevel
=
playlist_NodeCreate
(
p_playlist
,
_
(
"Media Library"
),
p_playlist
->
p_root_onelevel
);
p_playlist
->
p_local_category
->
i_flags
|=
PLAYLIST_RO_FLAG
;
p_playlist
->
p_ml_category
->
i_flags
|=
PLAYLIST_RO_FLAG
;
p_playlist
->
p_local_onelevel
->
i_flags
|=
PLAYLIST_RO_FLAG
;
p_playlist
->
p_ml_onelevel
->
i_flags
|=
PLAYLIST_RO_FLAG
;
/* This is a hack to find it later. Quite ugly, but I haven't found a
* better way */
/* Link the nodes together. Todo: actually create them from the same input*/
p_playlist
->
p_local_onelevel
->
p_input
->
i_id
=
p_playlist
->
p_local_category
->
p_input
->
i_id
;
p_playlist
->
p_ml_onelevel
->
p_input
->
i_id
=
p_playlist
->
p_ml_category
->
p_input
->
i_id
;
if
(
config_GetInt
(
p_playlist
,
"media-library"
)
)
{
p_playlist
->
p_ml_category
=
playlist_NodeCreate
(
p_playlist
,
_
(
"Media Library"
),
p_playlist
->
p_root_category
);
p_playlist
->
p_ml_onelevel
=
playlist_NodeCreate
(
p_playlist
,
_
(
"Media Library"
),
p_playlist
->
p_root_onelevel
);
p_playlist
->
p_ml_category
->
i_flags
|=
PLAYLIST_RO_FLAG
;
p_playlist
->
p_ml_onelevel
->
i_flags
|=
PLAYLIST_RO_FLAG
;
p_playlist
->
p_ml_onelevel
->
p_input
->
i_id
=
p_playlist
->
p_ml_category
->
p_input
->
i_id
;
}
else
{
p_playlist
->
p_ml_category
=
p_playlist
->
p_ml_onelevel
=
NULL
;
}
/* Initial status */
p_playlist
->
status
.
p_item
=
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