Remove playback support on speaker
Only A2DP playback is supported on wearables so remove
audio playback support on speaker if NO_AUDIO_OUT is defined.
Bug: 20134606, 20081871, 20068070
Change-Id: I300bec8e0b645b431c437e57077eaa35d6ad6093
diff --git a/hal/audio_hw.c b/hal/audio_hw.c
index 864ab5c..8b2ac5e 100644
--- a/hal/audio_hw.c
+++ b/hal/audio_hw.c
@@ -1446,6 +1446,23 @@
return -ENOSYS;
}
+#ifdef NO_AUDIO_OUT
+static ssize_t out_write_for_no_output(struct audio_stream_out *stream,
+ const void *buffer, size_t bytes)
+{
+ struct stream_out *out = (struct stream_out *)stream;
+
+ /* No Output device supported other than BT for playback.
+ * Sleep for the amount of buffer duration
+ */
+ pthread_mutex_lock(&out->lock);
+ usleep(bytes * 1000000 / audio_stream_frame_size(&out->stream.common) /
+ out_get_sample_rate(&out->stream.common));
+ pthread_mutex_unlock(&out->lock);
+ return bytes;
+}
+#endif
+
static ssize_t out_write(struct audio_stream_out *stream, const void *buffer,
size_t bytes)
{
@@ -2088,7 +2105,11 @@
out->stream.common.remove_audio_effect = out_remove_audio_effect;
out->stream.get_latency = out_get_latency;
out->stream.set_volume = out_set_volume;
+#ifdef NO_AUDIO_OUT
+ out->stream.write = out_write_for_no_output;
+#else
out->stream.write = out_write;
+#endif
out->stream.get_render_position = out_get_render_position;
out->stream.get_next_write_timestamp = out_get_next_write_timestamp;
out->stream.get_presentation_position = out_get_presentation_position;