summaryrefslogtreecommitdiffstats
path: root/media/libmedia/AudioTrack.cpp
diff options
context:
space:
mode:
authorEric Laurent <elaurent@google.com>2014-12-15 14:33:13 -0800
committerRachad Alao <rachad@google.com>2014-12-16 01:38:34 +0000
commitd1f69b0b17acbd96987ecb2f3378abd394d05903 (patch)
treee3061c609dfaa2c217bb79a8d85e4571e8bd0d3d /media/libmedia/AudioTrack.cpp
parent8ddb02230d02968d471aa41b22433957c38827c0 (diff)
downloadframeworks_av-d1f69b0b17acbd96987ecb2f3378abd394d05903.zip
frameworks_av-d1f69b0b17acbd96987ecb2f3378abd394d05903.tar.gz
frameworks_av-d1f69b0b17acbd96987ecb2f3378abd394d05903.tar.bz2
audioflinger: implement pause/resume for direct outputs
Extend pause/resume support to direct output threads (was only for offload threads). If the HAL implements pause/resume, track pause/resume is forwarded to the HAL. Pause, flush, resume sequence is respected by executing the HAL calls in the playback thread (same as offload). Make sure the track flags on client side are consistent with the flags on server side. Bug: 17883772. Change-Id: I89b360d69818f7a9204bd36e3ec63a79e106ecf1
Diffstat (limited to 'media/libmedia/AudioTrack.cpp')
-rw-r--r--media/libmedia/AudioTrack.cpp5
1 files changed, 5 insertions, 0 deletions
diff --git a/media/libmedia/AudioTrack.cpp b/media/libmedia/AudioTrack.cpp
index d9c3177..389aacc 100644
--- a/media/libmedia/AudioTrack.cpp
+++ b/media/libmedia/AudioTrack.cpp
@@ -335,6 +335,11 @@ status_t AudioTrack::set(
((flags | AUDIO_OUTPUT_FLAG_DIRECT) & ~AUDIO_OUTPUT_FLAG_FAST);
}
+ // force direct flag if HW A/V sync requested
+ if ((flags & AUDIO_OUTPUT_FLAG_HW_AV_SYNC) != 0) {
+ flags = (audio_output_flags_t)(flags | AUDIO_OUTPUT_FLAG_DIRECT);
+ }
+
if (flags & AUDIO_OUTPUT_FLAG_DIRECT) {
if (audio_is_linear_pcm(format)) {
mFrameSize = channelCount * audio_bytes_per_sample(format);