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
8642323c
Commit
8642323c
authored
Mar 03, 2013
by
Felix Paul Kühne
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
audioqueue: improve TimeGet implementation
This shall meliorate the playback experience for high latency inputs.
parent
36302e03
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
19 additions
and
4 deletions
+19
-4
modules/audio_output/audioqueue.c
modules/audio_output/audioqueue.c
+19
-4
No files found.
modules/audio_output/audioqueue.c
View file @
8642323c
...
...
@@ -45,6 +45,8 @@ struct aout_sys_t
AudioQueueRef
audioQueueRef
;
AudioQueueTimelineRef
timelineRef
;
bool
b_started
;
mtime_t
i_played_length
;
int
i_rate
;
float
f_volume
;
...
...
@@ -169,6 +171,8 @@ static int Start(audio_output_t *p_aout, audio_sample_format_t *restrict fmt)
AudioSessionSetActive
(
true
);
#endif
p_aout
->
sys
->
b_started
=
true
;
p_aout
->
time_get
=
TimeGet
;
p_aout
->
play
=
Play
;
p_aout
->
pause
=
Pause
;
...
...
@@ -243,9 +247,11 @@ static void Flush(audio_output_t *p_aout, bool wait)
else
AudioQueueStop
(
p_aout
->
sys
->
audioQueueRef
,
true
);
p_aout
->
sys
->
b_started
=
false
;
p_aout
->
sys
->
i_played_length
=
0
;
AudioQueueStart
(
p_aout
->
sys
->
audioQueueRef
,
NULL
);
AudioQueueCreateTimeline
(
p_aout
->
sys
->
audioQueueRef
,
&
p_aout
->
sys
->
timelineRef
);
p_aout
->
sys
->
b_started
=
true
;
}
static
int
TimeGet
(
audio_output_t
*
p_aout
,
mtime_t
*
restrict
delay
)
...
...
@@ -257,11 +263,20 @@ static int TimeGet(audio_output_t *p_aout, mtime_t *restrict delay)
if
(
status
!=
noErr
)
return
-
1
;
if
(
b_discontinuity
)
bool
b_started
=
p_aout
->
sys
->
b_started
;
if
(
!
b_started
)
return
-
1
;
if
(
b_discontinuity
)
{
msg_Dbg
(
p_aout
,
"detected output discontinuity"
);
return
-
1
;
}
mtime_t
i_pos
=
(
mtime_t
)
outTimeStamp
.
mSampleTime
*
CLOCK_FREQ
/
p_aout
->
sys
->
i_rate
;
*
delay
=
p_aout
->
sys
->
i_played_length
-
i_pos
;
return
0
;
if
(
i_pos
>
0
)
{
*
delay
=
p_aout
->
sys
->
i_played_length
-
i_pos
;
return
0
;
}
else
return
-
1
;
}
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