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
decef1e7
Commit
decef1e7
authored
Feb 02, 2010
by
Jakob Leben
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
xspf: new playlist design
parent
defbc4a4
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
33 additions
and
15 deletions
+33
-15
modules/demux/playlist/xspf.c
modules/demux/playlist/xspf.c
+29
-11
modules/demux/playlist/xspf.h
modules/demux/playlist/xspf.h
+4
-4
No files found.
modules/demux/playlist/xspf.c
View file @
decef1e7
...
@@ -118,7 +118,10 @@ int Demux( demux_t *p_demux )
...
@@ -118,7 +118,10 @@ int Demux( demux_t *p_demux )
}
}
free
(
psz_name
);
free
(
psz_name
);
i_ret
=
parse_playlist_node
(
p_demux
,
p_current_input
,
input_item_node_t
*
p_subitems
=
input_item_node_Create
(
p_current_input
);
i_ret
=
parse_playlist_node
(
p_demux
,
p_subitems
,
p_xml_reader
,
"playlist"
)
?
0
:
-
1
;
p_xml_reader
,
"playlist"
)
?
0
:
-
1
;
for
(
int
i
=
0
;
i
<
p_demux
->
p_sys
->
i_tracklist_entries
;
i
++
)
for
(
int
i
=
0
;
i
<
p_demux
->
p_sys
->
i_tracklist_entries
;
i
++
)
...
@@ -127,9 +130,13 @@ int Demux( demux_t *p_demux )
...
@@ -127,9 +130,13 @@ int Demux( demux_t *p_demux )
if
(
p_new_input
)
if
(
p_new_input
)
{
{
input_item_AddSubItem
(
p_current_input
,
p_new_input
);
input_item_AddSubItem
(
p_current_input
,
p_new_input
);
input_item_node_AppendItem
(
p_subitems
,
p_new_input
);
}
}
}
}
input_item_AddSubItemTree
(
p_subitems
);
input_item_node_Delete
(
p_subitems
);
end:
end:
vlc_gc_decref
(
p_current_input
);
vlc_gc_decref
(
p_current_input
);
if
(
p_xml_reader
)
if
(
p_xml_reader
)
...
@@ -155,6 +162,7 @@ static int Control( demux_t *p_demux, int i_query, va_list args )
...
@@ -155,6 +162,7 @@ static int Control( demux_t *p_demux, int i_query, va_list args )
*/
*/
static
bool
parse_playlist_node
COMPLEX_INTERFACE
static
bool
parse_playlist_node
COMPLEX_INTERFACE
{
{
input_item_t
*
p_input_item
=
p_input_node
->
p_item
;
char
*
psz_name
=
NULL
;
char
*
psz_name
=
NULL
;
char
*
psz_value
=
NULL
;
char
*
psz_value
=
NULL
;
bool
b_version_found
=
false
;
bool
b_version_found
=
false
;
...
@@ -248,7 +256,7 @@ static bool parse_playlist_node COMPLEX_INTERFACE
...
@@ -248,7 +256,7 @@ static bool parse_playlist_node COMPLEX_INTERFACE
{
{
FREE_VALUE
();
FREE_VALUE
();
if
(
p_handler
->
pf_handler
.
cmplx
(
p_demux
,
if
(
p_handler
->
pf_handler
.
cmplx
(
p_demux
,
p_input_
item
,
p_input_
node
,
p_xml_reader
,
p_xml_reader
,
p_handler
->
name
)
)
p_handler
->
name
)
)
{
{
...
@@ -349,8 +357,8 @@ static bool parse_tracklist_node COMPLEX_INTERFACE
...
@@ -349,8 +357,8 @@ static bool parse_tracklist_node COMPLEX_INTERFACE
free
(
psz_eltname
);
free
(
psz_eltname
);
/* parse the track data in a separate function */
/* parse the track data in a separate function */
if
(
parse_track_node
(
p_demux
,
p_input_
item
,
p_xml_reader
,
if
(
parse_track_node
(
p_demux
,
p_input_
node
,
"track"
)
)
p_xml_reader
,
"track"
)
)
i_ntracks
++
;
i_ntracks
++
;
}
}
else
if
(
i_node
==
XML_READER_ENDELEM
)
else
if
(
i_node
==
XML_READER_ENDELEM
)
...
@@ -382,6 +390,7 @@ static bool parse_tracklist_node COMPLEX_INTERFACE
...
@@ -382,6 +390,7 @@ static bool parse_tracklist_node COMPLEX_INTERFACE
*/
*/
static
bool
parse_track_node
COMPLEX_INTERFACE
static
bool
parse_track_node
COMPLEX_INTERFACE
{
{
input_item_t
*
p_input_item
=
p_input_node
->
p_item
;
char
*
psz_name
=
NULL
;
char
*
psz_name
=
NULL
;
char
*
psz_value
=
NULL
;
char
*
psz_value
=
NULL
;
xml_elem_hnd_t
*
p_handler
=
NULL
;
xml_elem_hnd_t
*
p_handler
=
NULL
;
...
@@ -406,6 +415,7 @@ static bool parse_track_node COMPLEX_INTERFACE
...
@@ -406,6 +415,7 @@ static bool parse_track_node COMPLEX_INTERFACE
};
};
input_item_t
*
p_new_input
=
input_item_New
(
p_demux
,
NULL
,
NULL
);
input_item_t
*
p_new_input
=
input_item_New
(
p_demux
,
NULL
,
NULL
);
input_item_node_t
*
p_new_node
=
input_item_node_Create
(
p_new_input
);
if
(
!
p_new_input
)
if
(
!
p_new_input
)
{
{
...
@@ -446,10 +456,12 @@ static bool parse_track_node COMPLEX_INTERFACE
...
@@ -446,10 +456,12 @@ static bool parse_track_node COMPLEX_INTERFACE
if
(
p_handler
->
type
==
COMPLEX_CONTENT
)
if
(
p_handler
->
type
==
COMPLEX_CONTENT
)
{
{
FREE_VALUE
();
FREE_VALUE
();
if
(
p_handler
->
pf_handler
.
cmplx
(
p_demux
,
p_new_input
,
bool
b_res
=
p_handler
->
pf_handler
.
cmplx
(
p_demux
,
p_xml_reader
,
p_new_node
,
p_handler
->
name
)
)
p_xml_reader
,
p_handler
->
name
);
if
(
b_res
)
{
{
p_handler
=
NULL
;
p_handler
=
NULL
;
}
}
...
@@ -497,6 +509,7 @@ static bool parse_track_node COMPLEX_INTERFACE
...
@@ -497,6 +509,7 @@ static bool parse_track_node COMPLEX_INTERFACE
if
(
p_sys
->
i_track_id
<
0
)
if
(
p_sys
->
i_track_id
<
0
)
{
{
input_item_AddSubItem
(
p_input_item
,
p_new_input
);
input_item_AddSubItem
(
p_input_item
,
p_new_input
);
input_item_node_AppendNode
(
p_input_node
,
p_new_node
);
vlc_gc_decref
(
p_new_input
);
vlc_gc_decref
(
p_new_input
);
return
true
;
return
true
;
}
}
...
@@ -647,6 +660,7 @@ static bool set_option SIMPLE_INTERFACE
...
@@ -647,6 +660,7 @@ static bool set_option SIMPLE_INTERFACE
*/
*/
static
bool
parse_extension_node
COMPLEX_INTERFACE
static
bool
parse_extension_node
COMPLEX_INTERFACE
{
{
input_item_t
*
p_input_item
=
p_input_node
->
p_item
;
char
*
psz_name
=
NULL
;
char
*
psz_name
=
NULL
;
char
*
psz_value
=
NULL
;
char
*
psz_value
=
NULL
;
char
*
psz_title
=
NULL
;
char
*
psz_title
=
NULL
;
...
@@ -711,6 +725,8 @@ static bool parse_extension_node COMPLEX_INTERFACE
...
@@ -711,6 +725,8 @@ static bool parse_extension_node COMPLEX_INTERFACE
if
(
p_new_input
)
if
(
p_new_input
)
{
{
input_item_AddSubItem
(
p_input_item
,
p_new_input
);
input_item_AddSubItem
(
p_input_item
,
p_new_input
);
p_input_node
=
input_item_node_AppendItem
(
p_input_node
,
p_new_input
);
p_input_item
=
p_new_input
;
p_input_item
=
p_new_input
;
b_release_input_item
=
true
;
b_release_input_item
=
true
;
}
}
...
@@ -732,6 +748,7 @@ static bool parse_extension_node COMPLEX_INTERFACE
...
@@ -732,6 +748,7 @@ static bool parse_extension_node COMPLEX_INTERFACE
}
}
free
(
psz_application
);
free
(
psz_application
);
/* parse the child elements */
/* parse the child elements */
while
(
xml_ReaderRead
(
p_xml_reader
)
==
1
)
while
(
xml_ReaderRead
(
p_xml_reader
)
==
1
)
{
{
...
@@ -766,7 +783,7 @@ static bool parse_extension_node COMPLEX_INTERFACE
...
@@ -766,7 +783,7 @@ static bool parse_extension_node COMPLEX_INTERFACE
if
(
p_handler
->
type
==
COMPLEX_CONTENT
)
if
(
p_handler
->
type
==
COMPLEX_CONTENT
)
{
{
if
(
p_handler
->
pf_handler
.
cmplx
(
p_demux
,
if
(
p_handler
->
pf_handler
.
cmplx
(
p_demux
,
p_input_
item
,
p_input_
node
,
p_xml_reader
,
p_xml_reader
,
p_handler
->
name
)
)
p_handler
->
name
)
)
{
{
...
@@ -900,7 +917,8 @@ static bool parse_extitem_node COMPLEX_INTERFACE
...
@@ -900,7 +917,8 @@ static bool parse_extitem_node COMPLEX_INTERFACE
p_new_input
=
p_demux
->
p_sys
->
pp_tracklist
[
i_tid
];
p_new_input
=
p_demux
->
p_sys
->
pp_tracklist
[
i_tid
];
if
(
p_new_input
)
if
(
p_new_input
)
{
{
input_item_AddSubItem
(
p_input_item
,
p_new_input
);
input_item_AddSubItem
(
p_input_node
->
p_item
,
p_new_input
);
input_item_node_AppendItem
(
p_input_node
,
p_new_input
);
vlc_gc_decref
(
p_new_input
);
vlc_gc_decref
(
p_new_input
);
p_demux
->
p_sys
->
pp_tracklist
[
i_tid
]
=
NULL
;
p_demux
->
p_sys
->
pp_tracklist
[
i_tid
]
=
NULL
;
}
}
...
@@ -917,7 +935,7 @@ static bool parse_extitem_node COMPLEX_INTERFACE
...
@@ -917,7 +935,7 @@ static bool parse_extitem_node COMPLEX_INTERFACE
*/
*/
static
bool
skip_element
COMPLEX_INTERFACE
static
bool
skip_element
COMPLEX_INTERFACE
{
{
VLC_UNUSED
(
p_demux
);
VLC_UNUSED
(
p_input_
item
);
VLC_UNUSED
(
p_demux
);
VLC_UNUSED
(
p_input_
node
);
while
(
xml_ReaderRead
(
p_xml_reader
)
==
1
)
while
(
xml_ReaderRead
(
p_xml_reader
)
==
1
)
{
{
...
...
modules/demux/playlist/xspf.h
View file @
decef1e7
...
@@ -34,10 +34,10 @@ enum {
...
@@ -34,10 +34,10 @@ enum {
#define SIMPLE_INTERFACE (input_item_t *p_input,\
#define SIMPLE_INTERFACE (input_item_t *p_input,\
const char *psz_name,\
const char *psz_name,\
char *psz_value)
char *psz_value)
#define COMPLEX_INTERFACE (demux_t *p_demux,\
#define COMPLEX_INTERFACE (demux_t
*p_demux,\
input_item_
t *p_input_item
,\
input_item_
node_t *p_input_node
,\
xml_reader_t *p_xml_reader,\
xml_reader_t
*p_xml_reader,\
const char *psz_element)
const char
*psz_element)
/* prototypes */
/* prototypes */
static
bool
parse_playlist_node
COMPLEX_INTERFACE
;
static
bool
parse_playlist_node
COMPLEX_INTERFACE
;
...
...
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