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
c2f9cc44
Commit
c2f9cc44
authored
Nov 02, 2008
by
Laurent Aimar
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Moved input_EsOutGetWakeup to es_out_Control.
parent
d551561d
Changes
3
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
46 additions
and
27 deletions
+46
-27
src/input/es_out.c
src/input/es_out.c
+27
-20
src/input/es_out.h
src/input/es_out.h
+17
-1
src/input/input.c
src/input/input.c
+2
-6
No files found.
src/input/es_out.c
View file @
c2f9cc44
...
...
@@ -327,26 +327,6 @@ es_out_id_t *input_EsOutGetFromID( es_out_t *out, int i_id )
return
NULL
;
}
mtime_t
input_EsOutGetWakeup
(
es_out_t
*
out
)
{
es_out_sys_t
*
p_sys
=
out
->
p_sys
;
input_thread_t
*
p_input
=
p_sys
->
p_input
;
if
(
!
p_sys
->
p_pgrm
)
return
0
;
/* We do not have a wake up date if the input cannot have its speed
* controlled or sout is imposing its own or while buffering
*
* FIXME for !p_input->b_can_pace_control a wkeup time is still needed to avoid too strong buffering */
if
(
!
p_input
->
b_can_pace_control
||
p_input
->
p
->
b_out_pace_control
||
p_sys
->
b_buffering
)
return
0
;
return
input_clock_GetWakeup
(
p_sys
->
p_pgrm
->
p_clock
);
}
void
input_EsOutChangeRate
(
es_out_t
*
out
,
int
i_rate
)
{
es_out_sys_t
*
p_sys
=
out
->
p_sys
;
...
...
@@ -670,6 +650,26 @@ static void EsOutDelete( es_out_t *out )
free
(
out
);
}
static
mtime_t
EsOutGetWakeup
(
es_out_t
*
out
)
{
es_out_sys_t
*
p_sys
=
out
->
p_sys
;
input_thread_t
*
p_input
=
p_sys
->
p_input
;
if
(
!
p_sys
->
p_pgrm
)
return
0
;
/* We do not have a wake up date if the input cannot have its speed
* controlled or sout is imposing its own or while buffering
*
* FIXME for !p_input->b_can_pace_control a wkeup time is still needed to avoid too strong buffering */
if
(
!
p_input
->
b_can_pace_control
||
p_input
->
p
->
b_out_pace_control
||
p_sys
->
b_buffering
)
return
0
;
return
input_clock_GetWakeup
(
p_sys
->
p_pgrm
->
p_clock
);
}
static
void
EsOutDecodersStopBuffering
(
es_out_t
*
out
,
bool
b_forced
)
{
...
...
@@ -2283,6 +2283,13 @@ static int EsOutControlLocked( es_out_t *out, int i_query, va_list args )
return
EsOutProgramDel
(
out
,
i_group
);
}
case
ES_OUT_GET_WAKE_UP
:
{
mtime_t
*
pi_wakeup
=
(
mtime_t
*
)
va_arg
(
args
,
mtime_t
*
);
*
pi_wakeup
=
EsOutGetWakeup
(
out
);
return
VLC_SUCCESS
;
}
default:
msg_Err
(
p_sys
->
p_input
,
"unknown query in es_out_Control"
);
return
VLC_EGENERIC
;
...
...
src/input/es_out.h
View file @
c2f9cc44
...
...
@@ -31,9 +31,25 @@
#include <vlc_common.h>
enum
es_out_query_private_e
{
/* Get date to wait before demuxing more data */
ES_OUT_GET_WAKE_UP
=
ES_OUT_PRIVATE_START
,
/* arg1=mtime_t* res=cannot fail */
};
static
inline
mtime_t
es_out_GetWakeup
(
es_out_t
*
p_out
)
{
mtime_t
i_wu
;
int
i_ret
=
es_out_Control
(
p_out
,
ES_OUT_GET_WAKE_UP
,
&
i_wu
);
assert
(
!
i_ret
);
return
i_wu
;
}
es_out_t
*
input_EsOutNew
(
input_thread_t
*
,
int
i_rate
);
es_out_id_t
*
input_EsOutGetFromID
(
es_out_t
*
,
int
i_id
);
mtime_t
input_EsOutGetWakeup
(
es_out_t
*
);
void
input_EsOutSetDelay
(
es_out_t
*
,
int
i_cat
,
int64_t
);
int
input_EsOutSetRecord
(
es_out_t
*
,
bool
b_record
);
void
input_EsOutChangeRate
(
es_out_t
*
,
int
);
...
...
src/input/input.c
View file @
c2f9cc44
...
...
@@ -754,9 +754,7 @@ static void MainLoop( input_thread_t *p_input )
{
MainLoopDemux
(
p_input
,
&
b_force_update
,
&
i_start_mdate
);
input_EsOutLock
(
p_input
->
p
->
p_es_out
);
i_wakeup
=
input_EsOutGetWakeup
(
p_input
->
p
->
p_es_out
);
input_EsOutUnlock
(
p_input
->
p
->
p_es_out
);
i_wakeup
=
es_out_GetWakeup
(
p_input
->
p
->
p_es_out
);
}
/* */
...
...
@@ -794,11 +792,9 @@ static void MainLoop( input_thread_t *p_input )
/* Check if i_wakeup is still valid */
if
(
i_wakeup
!=
0
)
{
input_EsOutLock
(
p_input
->
p
->
p_es_out
);
mtime_t
i_new_wakeup
=
input_EsOutGetWakeup
(
p_input
->
p
->
p_es_out
);
mtime_t
i_new_wakeup
=
es_out_GetWakeup
(
p_input
->
p
->
p_es_out
);
if
(
!
i_new_wakeup
)
i_wakeup
=
0
;
input_EsOutUnlock
(
p_input
->
p
->
p_es_out
);
}
}
while
(
i_current
<
i_wakeup
);
}
...
...
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