summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHongwei Wang <hwwang@google.com>2018-11-30 14:14:50 -0800
committerHongwei Wang <hwwang@google.com>2019-01-08 16:00:42 -0800
commit56f287a8b69b3b4a729d7e46a30e2d2559d28364 (patch)
treeac4c14bebff76e7eccc27f40380bf0492730d994
parent5b8c0f7d6f3a7fd668c11bfc1f2a421536b73068 (diff)
downloaddevice_generic_car-56f287a8b69b3b4a729d7e46a30e2d2559d28364.tar.gz
device_generic_car-56f287a8b69b3b4a729d7e46a30e2d2559d28364.tar.bz2
device_generic_car-56f287a8b69b3b4a729d7e46a30e2d2559d28364.zip
Adds multi-zone audio support in emulator
Test: adb shell dumpsys car_service | grep -A72 CarAudioService Bug: 120299880 Bug: 121273516 Change-Id: I1c95b9c95a2c16b55cce90733e54a47076d6198e
-rw-r--r--emulator/audio/audio_policy_configuration.xml17
-rw-r--r--emulator/audio/car_audio_configuration.xml86
-rw-r--r--emulator/audio/car_emulator_audio.mk1
-rw-r--r--emulator/audio/driver/audio_hw.c1
4 files changed, 105 insertions, 0 deletions
diff --git a/emulator/audio/audio_policy_configuration.xml b/emulator/audio/audio_policy_configuration.xml
index 44e4666..d399fee 100644
--- a/emulator/audio/audio_policy_configuration.xml
+++ b/emulator/audio/audio_policy_configuration.xml
@@ -59,6 +59,7 @@
<item>bus5_alarm_out</item>
<item>bus6_notification_out</item>
<item>bus7_system_sound_out</item>
+ <item>bus100_rear_seat</item>
<item>Built-In Mic</item>
<item>Built-In Back Mic</item>
<item>FM Tuner</item>
@@ -113,6 +114,12 @@
samplingRates="48000"
channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
</mixPort>
+ <mixPort name="mixport_bus100_rear_seat" role="source"
+ flags="AUDIO_OUTPUT_FLAG_PRIMARY">
+ <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
+ samplingRates="48000"
+ channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
+ </mixPort>
<mixPort name="primary input" role="sink">
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
samplingRates="8000,11025,12000,16000,22050,24000,32000,44100,48000"
@@ -197,6 +204,15 @@
minValueMB="-3200" maxValueMB="600" defaultValueMB="0" stepValueMB="100"/>
</gains>
</devicePort>
+ <devicePort tagName="bus100_rear_seat" role="sink" type="AUDIO_DEVICE_OUT_BUS"
+ address="bus100_rear_seat">
+ <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
+ samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
+ <gains>
+ <gain name="" mode="AUDIO_GAIN_MODE_JOINT"
+ minValueMB="-3200" maxValueMB="600" defaultValueMB="0" stepValueMB="100"/>
+ </gains>
+ </devicePort>
<devicePort tagName="Built-In Mic" type="AUDIO_DEVICE_IN_BUILTIN_MIC" role="source">
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
samplingRates="8000,11025,12000,16000,22050,24000,32000,44100,48000"
@@ -227,6 +243,7 @@
<route type="mix" sink="bus5_alarm_out" sources="mixport_bus5_alarm_out"/>
<route type="mix" sink="bus6_notification_out" sources="mixport_bus6_notification_out"/>
<route type="mix" sink="bus7_system_sound_out" sources="mixport_bus7_system_sound_out"/>
+ <route type="mix" sink="bus100_rear_seat" sources="mixport_bus100_rear_seat"/>
<route type="mix" sink="primary input" sources="Built-In Mic,Built-In Back Mic"/>
<route type="mix" sink="mixport_tuner0" sources="FM Tuner"/>
</routes>
diff --git a/emulator/audio/car_audio_configuration.xml b/emulator/audio/car_audio_configuration.xml
new file mode 100644
index 0000000..af88932
--- /dev/null
+++ b/emulator/audio/car_audio_configuration.xml
@@ -0,0 +1,86 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2018 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<!--
+ Defines the audio configuration in a car, including
+ - Audio zones
+ - Display to audio zone mappings
+ - Context to audio bus mappings
+ - Volume groups
+ in the car environment.
+-->
+<carAudioConfiguration version="1">
+ <zones>
+ <zone name="primary zone" isPrimary="true">
+ <volumeGroups>
+ <group>
+ <device address="bus0_media_out">
+ <context context="music"/>
+ </device>
+ <device address="bus3_call_ring_out">
+ <context context="call_ring"/>
+ </device>
+ <device address="bus6_notification_out">
+ <context context="notification"/>
+ </device>
+ <device address="bus7_system_sound_out">
+ <context context="system_sound"/>
+ </device>
+ </group>
+ <group>
+ <device address="bus1_navigation_out">
+ <context context="navigation"/>
+ </device>
+ <device address="bus2_voice_command_out">
+ <context context="voice_command"/>
+ </device>
+ </group>
+ <group>
+ <device address="bus4_call_out">
+ <context context="call"/>
+ </device>
+ </group>
+ <group>
+ <device address="bus5_alarm_out">
+ <context context="alarm"/>
+ </device>
+ </group>
+ </volumeGroups>
+ <displays>
+ <display display="primary_display"/>
+ </displays>
+ </zone>
+ <zone name="rear seat zone">
+ <volumeGroups>
+ <group>
+ <device address="bus100_rear_seat">
+ <context context="music"/>
+ <context context="navigation"/>
+ <context context="voice_command"/>
+ <context context="call_ring"/>
+ <context context="call"/>
+ <context context="alarm"/>
+ <context context="notification"/>
+ <context context="system_sound"/>
+ </device>
+ </group>
+ </volumeGroups>
+ <displays>
+ <display display="rear_seat_display"/>
+ </displays>
+ </zone>
+ </zones>
+</carAudioConfiguration>
diff --git a/emulator/audio/car_emulator_audio.mk b/emulator/audio/car_emulator_audio.mk
index b7ccbec..efe7fa4 100644
--- a/emulator/audio/car_emulator_audio.mk
+++ b/emulator/audio/car_emulator_audio.mk
@@ -25,5 +25,6 @@ PRODUCT_COPY_FILES += \
frameworks/av/services/audiopolicy/config/audio_policy_volumes.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_policy_volumes.xml \
frameworks/av/services/audiopolicy/config/default_volume_tables.xml:$(TARGET_COPY_OUT_VENDOR)/etc/default_volume_tables.xml \
device/generic/car/emulator/audio/audio_policy_configuration.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_policy_configuration.xml \
+ device/generic/car/emulator/audio/car_audio_configuration.xml:$(TARGET_COPY_OUT_VENDOR)/etc/car_audio_configuration.xml \
DEVICE_PACKAGE_OVERLAYS += device/generic/car/emulator/audio/overlay
diff --git a/emulator/audio/driver/audio_hw.c b/emulator/audio/driver/audio_hw.c
index 1c17683..8521f7e 100644
--- a/emulator/audio/driver/audio_hw.c
+++ b/emulator/audio/driver/audio_hw.c
@@ -328,6 +328,7 @@ static void out_apply_gain(struct generic_stream_out *out, const void *buffer, s
static ssize_t out_write(struct audio_stream_out *stream, const void *buffer, size_t bytes) {
struct generic_stream_out *out = (struct generic_stream_out *)stream;
+ ALOGV("%s: to device %s", __func__, out->bus_address);
const size_t frames = bytes / audio_stream_out_frame_size(stream);
pthread_mutex_lock(&out->lock);