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
7b3f256f
Commit
7b3f256f
authored
Aug 15, 2008
by
Pierre d'Herbemont
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
codecleanup: de-static-inline a bunch of input_item functions.
parent
d11fd0d1
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
206 additions
and
166 deletions
+206
-166
include/vlc_input.h
include/vlc_input.h
+18
-166
src/input/item.c
src/input/item.c
+172
-0
src/libvlccore.sym
src/libvlccore.sym
+16
-0
No files found.
include/vlc_input.h
View file @
7b3f256f
...
...
@@ -103,52 +103,15 @@ struct input_item_t
#define ITEM_TYPE_NODE 8
#define ITEM_TYPE_NUMBER 9
static
inline
void
input_item_CopyOptions
(
input_item_t
*
p_parent
,
input_item_t
*
p_child
)
{
int
i
;
for
(
i
=
0
;
i
<
p_parent
->
i_options
;
i
++
)
{
char
*
psz_option
=
strdup
(
p_parent
->
ppsz_options
[
i
]
);
if
(
!
strcmp
(
psz_option
,
"meta-file"
)
)
{
free
(
psz_option
);
continue
;
}
p_child
->
i_options
++
;
p_child
->
ppsz_options
=
(
char
**
)
realloc
(
p_child
->
ppsz_options
,
p_child
->
i_options
*
sizeof
(
char
*
)
);
p_child
->
ppsz_options
[
p_child
->
i_options
-
1
]
=
psz_option
;
p_child
->
optflagc
++
;
p_child
->
optflagv
=
(
uint8_t
*
)
realloc
(
p_child
->
optflagv
,
p_child
->
optflagc
);
p_child
->
optflagv
[
p_child
->
optflagc
-
1
]
=
p_parent
->
optflagv
[
i
];
}
}
static
inline
void
input_item_SetName
(
input_item_t
*
p_item
,
const
char
*
psz_name
)
{
free
(
p_item
->
psz_name
);
p_item
->
psz_name
=
strdup
(
psz_name
);
}
VLC_EXPORT
(
void
,
input_item_CopyOptions
,
(
input_item_t
*
p_parent
,
input_item_t
*
p_child
)
);
VLC_EXPORT
(
void
,
input_item_SetName
,
(
input_item_t
*
p_item
,
const
char
*
psz_name
)
);
/* This won't hold the item, but can tell to interested third parties
* Like the playlist, that there is a new sub item. With this design
* It is not the input item's responsability to keep all the ref of
* the input item children. */
static
inline
void
input_item_AddSubItem
(
input_item_t
*
p_parent
,
input_item_t
*
p_child
)
{
vlc_event_t
event
;
VLC_EXPORT
(
void
,
input_item_AddSubItem
,
(
input_item_t
*
p_parent
,
input_item_t
*
p_child
)
);
p_parent
->
i_type
=
ITEM_TYPE_PLAYLIST
;
/* Notify interested third parties */
event
.
type
=
vlc_InputItemSubItemAdded
;
event
.
u
.
input_item_subitem_added
.
p_new_child
=
p_child
;
vlc_event_send
(
&
p_parent
->
event_manager
,
&
event
);
}
/* Flags handled past input_item_AddOpt() */
#define VLC_INPUT_OPTION_TRUSTED 0x2
...
...
@@ -157,136 +120,25 @@ static inline void input_item_AddSubItem( input_item_t *p_parent,
#define VLC_INPUT_OPTION_UNIQUE 0x100
VLC_EXPORT
(
int
,
input_item_AddOpt
,
(
input_item_t
*
,
const
char
*
str
,
unsigned
flags
)
);
static
inline
int
input_item_AddOption
(
input_item_t
*
item
,
const
char
*
str
)
{
return
input_item_AddOpt
(
item
,
str
,
VLC_INPUT_OPTION_TRUSTED
);
}
static
inline
int
input_item_HasErrorWhenReading
(
input_item_t
*
item
)
{
return
item
->
b_error_when_reading
;
}
VLC_EXPORT
(
int
,
input_item_AddOption
,
(
input_item_t
*
item
,
const
char
*
str
)
);
VLC_EXPORT
(
int
,
input_item_AddOption
,
(
input_item_t
*
item
,
const
char
*
str
)
);
VLC_EXPORT
(
bool
,
input_item_HasErrorWhenReading
,
(
input_item_t
*
item
)
);
VLC_EXPORT
(
void
,
input_item_SetMeta
,
(
input_item_t
*
p_i
,
vlc_meta_type_t
meta_type
,
const
char
*
psz_val
));
static
inline
bool
input_item_MetaMatch
(
input_item_t
*
p_i
,
vlc_meta_type_t
meta_type
,
const
char
*
psz
)
{
vlc_mutex_lock
(
&
p_i
->
lock
);
if
(
!
p_i
->
p_meta
)
{
vlc_mutex_unlock
(
&
p_i
->
lock
);
return
false
;
}
const
char
*
meta
=
vlc_meta_Get
(
p_i
->
p_meta
,
meta_type
);
bool
ret
=
meta
&&
strcasestr
(
meta
,
psz
);
vlc_mutex_unlock
(
&
p_i
->
lock
);
return
ret
;
}
static
inline
char
*
input_item_GetMeta
(
input_item_t
*
p_i
,
vlc_meta_type_t
meta_type
)
{
char
*
psz
=
NULL
;
vlc_mutex_lock
(
&
p_i
->
lock
);
if
(
!
p_i
->
p_meta
)
{
vlc_mutex_unlock
(
&
p_i
->
lock
);
return
NULL
;
}
if
(
vlc_meta_Get
(
p_i
->
p_meta
,
meta_type
)
)
psz
=
strdup
(
vlc_meta_Get
(
p_i
->
p_meta
,
meta_type
)
);
vlc_mutex_unlock
(
&
p_i
->
lock
);
return
psz
;
}
static
inline
char
*
input_item_GetName
(
input_item_t
*
p_i
)
{
vlc_mutex_lock
(
&
p_i
->
lock
);
char
*
psz_s
=
p_i
->
psz_name
?
strdup
(
p_i
->
psz_name
)
:
NULL
;
vlc_mutex_unlock
(
&
p_i
->
lock
);
return
psz_s
;
}
static
inline
char
*
input_item_GetURI
(
input_item_t
*
p_i
)
{
vlc_mutex_lock
(
&
p_i
->
lock
);
char
*
psz_s
=
p_i
->
psz_uri
?
strdup
(
p_i
->
psz_uri
)
:
NULL
;
vlc_mutex_unlock
(
&
p_i
->
lock
);
return
psz_s
;
}
static
inline
void
input_item_SetURI
(
input_item_t
*
p_i
,
char
*
psz_uri
)
{
vlc_mutex_lock
(
&
p_i
->
lock
);
free
(
p_i
->
psz_uri
);
p_i
->
psz_uri
=
strdup
(
psz_uri
);
vlc_mutex_unlock
(
&
p_i
->
lock
);
}
static
inline
mtime_t
input_item_GetDuration
(
input_item_t
*
p_i
)
{
vlc_mutex_lock
(
&
p_i
->
lock
);
mtime_t
i_duration
=
p_i
->
i_duration
;
vlc_mutex_unlock
(
&
p_i
->
lock
);
return
i_duration
;
}
VLC_EXPORT
(
bool
,
input_item_HasErrorWhenReading
,
(
input_item_t
*
item
)
);
static
inline
void
input_item_SetDuration
(
input_item_t
*
p_i
,
mtime_t
i_duration
)
{
bool
send_event
=
false
;
VLC_EXPORT
(
bool
,
input_item_MetaMatch
,
(
input_item_t
*
p_i
,
vlc_meta_type_t
meta_type
,
const
char
*
psz
)
);
VLC_EXPORT
(
char
*
,
input_item_GetMeta
,
(
input_item_t
*
p_i
,
vlc_meta_type_t
meta_type
)
);
VLC_EXPORT
(
char
*
,
input_item_GetName
,
(
input_item_t
*
p_i
)
);
VLC_EXPORT
(
char
*
,
input_item_GetURI
,
(
input_item_t
*
p_i
)
);
VLC_EXPORT
(
void
,
input_item_SetURI
,
(
input_item_t
*
p_i
,
char
*
psz_uri
));
VLC_EXPORT
(
mtime_t
,
input_item_GetDuration
,
(
input_item_t
*
p_i
)
);
VLC_EXPORT
(
void
,
input_item_SetDuration
,
(
input_item_t
*
p_i
,
mtime_t
i_duration
));
VLC_EXPORT
(
bool
,
input_item_IsPreparsed
,
(
input_item_t
*
p_i
));
VLC_EXPORT
(
bool
,
input_item_IsArtFetched
,
(
input_item_t
*
p_i
));
VLC_EXPORT
(
const
vlc_meta_t
*
,
input_item_GetMetaObject
,
(
input_item_t
*
p_i
));
VLC_EXPORT
(
void
,
input_item_MetaMerge
,
(
input_item_t
*
p_i
,
const
vlc_meta_t
*
p_new_meta
));
vlc_mutex_lock
(
&
p_i
->
lock
);
if
(
p_i
->
i_duration
!=
i_duration
)
{
p_i
->
i_duration
=
i_duration
;
send_event
=
true
;
}
vlc_mutex_unlock
(
&
p_i
->
lock
);
if
(
send_event
==
true
)
{
vlc_event_t
event
;
event
.
type
=
vlc_InputItemDurationChanged
;
event
.
u
.
input_item_duration_changed
.
new_duration
=
i_duration
;
vlc_event_send
(
&
p_i
->
event_manager
,
&
event
);
}
return
;
}
static
inline
bool
input_item_IsPreparsed
(
input_item_t
*
p_i
)
{
return
p_i
->
p_meta
?
p_i
->
p_meta
->
i_status
&
ITEM_PREPARSED
:
false
;
}
static
inline
bool
input_item_IsArtFetched
(
input_item_t
*
p_i
)
{
return
p_i
->
p_meta
?
p_i
->
p_meta
->
i_status
&
ITEM_ART_FETCHED
:
false
;
}
static
inline
const
vlc_meta_t
*
input_item_GetMetaObject
(
input_item_t
*
p_i
)
{
if
(
!
p_i
->
p_meta
)
p_i
->
p_meta
=
vlc_meta_New
();
return
p_i
->
p_meta
;
}
static
inline
void
input_item_MetaMerge
(
input_item_t
*
p_i
,
const
vlc_meta_t
*
p_new_meta
)
{
if
(
!
p_i
->
p_meta
)
p_i
->
p_meta
=
vlc_meta_New
();
vlc_meta_Merge
(
p_i
->
p_meta
,
p_new_meta
);
}
#define input_item_SetTitle( item, b ) input_item_SetMeta( item, vlc_meta_Title, b )
#define input_item_SetArtist( item, b ) input_item_SetMeta( item, vlc_meta_Artist, b )
...
...
src/input/item.c
View file @
7b3f256f
...
...
@@ -156,6 +156,178 @@ input_item_t *input_GetItem( input_thread_t *p_input )
return
p_input
->
p
->
input
.
p_item
;
}
void
input_item_CopyOptions
(
input_item_t
*
p_parent
,
input_item_t
*
p_child
)
{
int
i
;
for
(
i
=
0
;
i
<
p_parent
->
i_options
;
i
++
)
{
char
*
psz_option
=
strdup
(
p_parent
->
ppsz_options
[
i
]
);
if
(
!
strcmp
(
psz_option
,
"meta-file"
)
)
{
free
(
psz_option
);
continue
;
}
p_child
->
i_options
++
;
p_child
->
ppsz_options
=
(
char
**
)
realloc
(
p_child
->
ppsz_options
,
p_child
->
i_options
*
sizeof
(
char
*
)
);
p_child
->
ppsz_options
[
p_child
->
i_options
-
1
]
=
psz_option
;
p_child
->
optflagc
++
;
p_child
->
optflagv
=
(
uint8_t
*
)
realloc
(
p_child
->
optflagv
,
p_child
->
optflagc
);
p_child
->
optflagv
[
p_child
->
optflagc
-
1
]
=
p_parent
->
optflagv
[
i
];
}
}
void
input_item_SetName
(
input_item_t
*
p_item
,
const
char
*
psz_name
)
{
free
(
p_item
->
psz_name
);
p_item
->
psz_name
=
strdup
(
psz_name
);
}
/* This won't hold the item, but can tell to interested third parties
* Like the playlist, that there is a new sub item. With this design
* It is not the input item's responsability to keep all the ref of
* the input item children. */
void
input_item_AddSubItem
(
input_item_t
*
p_parent
,
input_item_t
*
p_child
)
{
vlc_event_t
event
;
p_parent
->
i_type
=
ITEM_TYPE_PLAYLIST
;
/* Notify interested third parties */
event
.
type
=
vlc_InputItemSubItemAdded
;
event
.
u
.
input_item_subitem_added
.
p_new_child
=
p_child
;
vlc_event_send
(
&
p_parent
->
event_manager
,
&
event
);
}
int
input_item_AddOption
(
input_item_t
*
item
,
const
char
*
str
)
{
return
input_item_AddOpt
(
item
,
str
,
VLC_INPUT_OPTION_TRUSTED
);
}
bool
input_item_HasErrorWhenReading
(
input_item_t
*
item
)
{
return
item
->
b_error_when_reading
;
}
bool
input_item_MetaMatch
(
input_item_t
*
p_i
,
vlc_meta_type_t
meta_type
,
const
char
*
psz
)
{
vlc_mutex_lock
(
&
p_i
->
lock
);
if
(
!
p_i
->
p_meta
)
{
vlc_mutex_unlock
(
&
p_i
->
lock
);
return
false
;
}
const
char
*
meta
=
vlc_meta_Get
(
p_i
->
p_meta
,
meta_type
);
bool
ret
=
meta
&&
strcasestr
(
meta
,
psz
);
vlc_mutex_unlock
(
&
p_i
->
lock
);
return
ret
;
}
char
*
input_item_GetMeta
(
input_item_t
*
p_i
,
vlc_meta_type_t
meta_type
)
{
char
*
psz
=
NULL
;
vlc_mutex_lock
(
&
p_i
->
lock
);
if
(
!
p_i
->
p_meta
)
{
vlc_mutex_unlock
(
&
p_i
->
lock
);
return
NULL
;
}
if
(
vlc_meta_Get
(
p_i
->
p_meta
,
meta_type
)
)
psz
=
strdup
(
vlc_meta_Get
(
p_i
->
p_meta
,
meta_type
)
);
vlc_mutex_unlock
(
&
p_i
->
lock
);
return
psz
;
}
char
*
input_item_GetName
(
input_item_t
*
p_i
)
{
vlc_mutex_lock
(
&
p_i
->
lock
);
char
*
psz_s
=
p_i
->
psz_name
?
strdup
(
p_i
->
psz_name
)
:
NULL
;
vlc_mutex_unlock
(
&
p_i
->
lock
);
return
psz_s
;
}
char
*
input_item_GetURI
(
input_item_t
*
p_i
)
{
vlc_mutex_lock
(
&
p_i
->
lock
);
char
*
psz_s
=
p_i
->
psz_uri
?
strdup
(
p_i
->
psz_uri
)
:
NULL
;
vlc_mutex_unlock
(
&
p_i
->
lock
);
return
psz_s
;
}
void
input_item_SetURI
(
input_item_t
*
p_i
,
char
*
psz_uri
)
{
vlc_mutex_lock
(
&
p_i
->
lock
);
free
(
p_i
->
psz_uri
);
p_i
->
psz_uri
=
strdup
(
psz_uri
);
vlc_mutex_unlock
(
&
p_i
->
lock
);
}
mtime_t
input_item_GetDuration
(
input_item_t
*
p_i
)
{
vlc_mutex_lock
(
&
p_i
->
lock
);
mtime_t
i_duration
=
p_i
->
i_duration
;
vlc_mutex_unlock
(
&
p_i
->
lock
);
return
i_duration
;
}
void
input_item_SetDuration
(
input_item_t
*
p_i
,
mtime_t
i_duration
)
{
bool
send_event
=
false
;
vlc_mutex_lock
(
&
p_i
->
lock
);
if
(
p_i
->
i_duration
!=
i_duration
)
{
p_i
->
i_duration
=
i_duration
;
send_event
=
true
;
}
vlc_mutex_unlock
(
&
p_i
->
lock
);
if
(
send_event
==
true
)
{
vlc_event_t
event
;
event
.
type
=
vlc_InputItemDurationChanged
;
event
.
u
.
input_item_duration_changed
.
new_duration
=
i_duration
;
vlc_event_send
(
&
p_i
->
event_manager
,
&
event
);
}
return
;
}
bool
input_item_IsPreparsed
(
input_item_t
*
p_i
)
{
return
p_i
->
p_meta
?
p_i
->
p_meta
->
i_status
&
ITEM_PREPARSED
:
false
;
}
bool
input_item_IsArtFetched
(
input_item_t
*
p_i
)
{
return
p_i
->
p_meta
?
p_i
->
p_meta
->
i_status
&
ITEM_ART_FETCHED
:
false
;
}
const
vlc_meta_t
*
input_item_GetMetaObject
(
input_item_t
*
p_i
)
{
if
(
!
p_i
->
p_meta
)
p_i
->
p_meta
=
vlc_meta_New
();
return
p_i
->
p_meta
;
}
void
input_item_MetaMerge
(
input_item_t
*
p_i
,
const
vlc_meta_t
*
p_new_meta
)
{
if
(
!
p_i
->
p_meta
)
p_i
->
p_meta
=
vlc_meta_New
();
vlc_meta_Merge
(
p_i
->
p_meta
,
p_new_meta
);
}
/**
* Get a info item from a given category in a given input item.
*
...
...
src/libvlccore.sym
View file @
7b3f256f
...
...
@@ -150,11 +150,27 @@ input_get_event_manager
input_GetItem
input_item_AddInfo
input_item_AddOpt
input_item_AddOption
input_item_AddSubItem
input_item_CopyOptions
__input_item_GetById
input_item_GetDuration
input_item_GetInfo
input_item_GetMeta
input_item_GetMetaObject
input_item_GetName
input_item_GetURI
input_item_HasErrorWhenReading
input_item_IsArtFetched
input_item_IsPreparsed
input_item_MetaMatch
input_item_MetaMerge
__input_item_NewExt
input_item_NewWithType
input_item_SetDuration
input_item_SetMeta
input_item_SetName
input_item_SetURI
input_MetaTypeToLocalizedString
__input_Preparse
__input_Read
...
...
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