Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
V
vlc-gpu
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-gpu
Commits
e3c6b242
Commit
e3c6b242
authored
Jun 04, 2008
by
Rémi Denis-Courmont
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Remove sout-keep from the input code
It needs to be done by the parent (VLM or playlist)
parent
f2852bcf
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
8 additions
and
108 deletions
+8
-108
src/input/input.c
src/input/input.c
+8
-106
src/input/input_internal.h
src/input/input_internal.h
+0
-2
No files found.
src/input/input.c
View file @
e3c6b242
...
...
@@ -87,9 +87,6 @@ static void SlaveSeek( input_thread_t *p_input );
static
void
InputMetaUser
(
input_thread_t
*
p_input
,
vlc_meta_t
*
p_meta
);
static
void
InputUpdateMeta
(
input_thread_t
*
p_input
,
vlc_meta_t
*
p_meta
);
static
sout_instance_t
*
SoutFind
(
vlc_object_t
*
p_parent
,
input_item_t
*
p_item
,
bool
*
);
static
void
SoutKeep
(
sout_instance_t
*
);
static
void
DemuxMeta
(
input_thread_t
*
p_input
,
vlc_meta_t
*
p_meta
,
demux_t
*
p_demux
);
static
void
AccessMeta
(
input_thread_t
*
p_input
,
vlc_meta_t
*
p_meta
);
static
void
AppendAttachment
(
int
*
pi_attachment
,
input_attachment_t
***
ppp_attachment
,
...
...
@@ -185,8 +182,6 @@ static input_thread_t *Create( vlc_object_t *p_parent, input_item_t *p_item,
TAB_INIT
(
p_input
->
p
->
i_attachment
,
p_input
->
p
->
attachment
);
p_input
->
p
->
p_es_out
=
NULL
;
p_input
->
p
->
p_sout
=
NULL
;
p_input
->
p
->
b_owns_its_sout
=
true
;
p_input
->
p
->
b_sout_keep
=
false
;
p_input
->
p
->
b_out_pace_control
=
false
;
p_input
->
i_pts_delay
=
0
;
...
...
@@ -293,10 +288,7 @@ static input_thread_t *Create( vlc_object_t *p_parent, input_item_t *p_item,
/* */
if
(
p_sout
)
{
p_input
->
p
->
p_sout
=
p_sout
;
p_input
->
p
->
b_owns_its_sout
=
false
;
}
memset
(
&
p_input
->
p
->
counters
,
0
,
sizeof
(
p_input
->
p
->
counters
)
);
vlc_mutex_init
(
&
p_input
->
p
->
counters
.
counters_lock
);
...
...
@@ -320,13 +312,8 @@ static void Destructor( input_thread_t * p_input )
stats_TimerDump
(
p_input
,
STATS_TIMER_INPUT_LAUNCHING
);
stats_TimerClean
(
p_input
,
STATS_TIMER_INPUT_LAUNCHING
);
#ifdef ENABLE_SOUT
if
(
priv
->
b_owns_its_sout
&&
priv
->
p_sout
)
{
if
(
priv
->
b_sout_keep
)
SoutKeep
(
priv
->
p_sout
);
else
sout_DeleteInstance
(
priv
->
p_sout
);
}
if
(
priv
->
p_sout
)
sout_DeleteInstance
(
priv
->
p_sout
);
#endif
vlc_gc_decref
(
p_input
->
p
->
input
.
p_item
);
...
...
@@ -347,15 +334,7 @@ static void Destructor( input_thread_t * p_input )
input_thread_t
*
__input_CreateThread
(
vlc_object_t
*
p_parent
,
input_item_t
*
p_item
)
{
bool
b_sout_keep
;
sout_instance_t
*
p_sout
=
SoutFind
(
p_parent
,
p_item
,
&
b_sout_keep
);
input_thread_t
*
p_input
=
__input_CreateThreadExtended
(
p_parent
,
p_item
,
NULL
,
p_sout
);
if
(
!
p_input
&&
p_sout
)
SoutKeep
(
p_sout
);
p_input
->
p
->
b_sout_keep
=
b_sout_keep
;
return
p_input
;
return
__input_CreateThreadExtended
(
p_parent
,
p_item
,
NULL
,
NULL
);
}
/* */
...
...
@@ -395,18 +374,11 @@ input_thread_t *__input_CreateThreadExtended( vlc_object_t *p_parent,
int
__input_Read
(
vlc_object_t
*
p_parent
,
input_item_t
*
p_item
,
bool
b_block
)
{
bool
b_sout_keep
;
sout_instance_t
*
p_sout
=
SoutFind
(
p_parent
,
p_item
,
&
b_sout_keep
);
input_thread_t
*
p_input
;
p_input
=
Create
(
p_parent
,
p_item
,
NULL
,
false
,
p_sout
);
p_input
=
Create
(
p_parent
,
p_item
,
NULL
,
false
,
NULL
);
if
(
!
p_input
)
{
if
(
p_sout
)
SoutKeep
(
p_sout
);
return
VLC_EGENERIC
;
}
p_input
->
p
->
b_sout_keep
=
b_sout_keep
;
if
(
b_block
)
{
...
...
@@ -499,8 +471,10 @@ void input_StopThread( input_thread_t *p_input )
sout_instance_t
*
input_DetachSout
(
input_thread_t
*
p_input
)
{
p_input
->
p
->
b_owns_its_sout
=
false
;
return
p_input
->
p
->
p_sout
;
sout_instance_t
*
p_sout
=
p_input
->
p
->
p_sout
;
vlc_object_detach
(
p_sout
);
p_input
->
p
->
p_sout
=
NULL
;
return
p_sout
;
}
/*****************************************************************************
...
...
@@ -1390,78 +1364,6 @@ static void End( input_thread_t * p_input )
p_input
->
b_dead
=
true
;
}
static
sout_instance_t
*
SoutFind
(
vlc_object_t
*
p_parent
,
input_item_t
*
p_item
,
bool
*
pb_sout_keep
)
{
bool
b_keep_sout
=
var_CreateGetBool
(
p_parent
,
"sout-keep"
);
sout_instance_t
*
p_sout
=
NULL
;
int
i
;
/* Search sout-keep options
* XXX it has to be done here, but it is duplicated work :( */
vlc_mutex_lock
(
&
p_item
->
lock
);
for
(
i
=
0
;
i
<
p_item
->
i_options
;
i
++
)
{
const
char
*
psz_option
=
p_item
->
ppsz_options
[
i
];
if
(
!
psz_option
)
continue
;
if
(
*
psz_option
==
':'
)
psz_option
++
;
if
(
!
strcmp
(
psz_option
,
"sout-keep"
)
)
b_keep_sout
=
true
;
else
if
(
!
strcmp
(
psz_option
,
"no-sout-keep"
)
||
!
strcmp
(
psz_option
,
"nosout-keep"
)
)
b_keep_sout
=
false
;
}
vlc_mutex_unlock
(
&
p_item
->
lock
);
/* Find a potential sout to reuse
* XXX it might be unusable but this will be checked later */
if
(
b_keep_sout
)
{
playlist_t
*
p_playlist
=
vlc_object_find
(
p_parent
->
p_libvlc
,
VLC_OBJECT_PLAYLIST
,
FIND_CHILD
);
if
(
p_playlist
)
{
vlc_mutex_lock
(
&
p_playlist
->
gc_lock
);
p_sout
=
vlc_object_find
(
p_playlist
,
VLC_OBJECT_SOUT
,
FIND_CHILD
);
if
(
p_sout
)
{
if
(
p_sout
->
p_parent
!=
VLC_OBJECT
(
p_playlist
)
)
{
vlc_object_release
(
p_sout
);
p_sout
=
NULL
;
}
else
{
vlc_object_detach
(
p_sout
);
/* Remove it from the GC */
vlc_object_release
(
p_sout
);
}
}
vlc_mutex_unlock
(
&
p_playlist
->
gc_lock
);
vlc_object_release
(
p_playlist
);
}
}
if
(
pb_sout_keep
)
*
pb_sout_keep
=
b_keep_sout
;
return
p_sout
;
}
static
void
SoutKeep
(
sout_instance_t
*
p_sout
)
{
playlist_t
*
p_playlist
=
vlc_object_find
(
p_sout
,
VLC_OBJECT_PLAYLIST
,
FIND_PARENT
);
if
(
p_playlist
)
{
msg_Dbg
(
p_sout
,
"sout has been kept"
);
vlc_object_attach
(
p_sout
,
p_playlist
);
vlc_object_release
(
p_playlist
);
}
else
sout_DeleteInstance
(
p_sout
);
}
/*****************************************************************************
* Control
*****************************************************************************/
...
...
src/input/input_internal.h
View file @
e3c6b242
...
...
@@ -104,9 +104,7 @@ struct input_thread_private_t
/* Output */
es_out_t
*
p_es_out
;
sout_instance_t
*
p_sout
;
/* XXX Move it to es_out ? */
bool
b_sout_keep
;
bool
b_out_pace_control
;
/* idem ? */
bool
b_owns_its_sout
;
/* Main input properties */
input_source_t
input
;
...
...
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