diff options
author | Hongwei Wang <hwwang@google.com> | 2018-11-30 14:14:50 -0800 |
---|---|---|
committer | Hongwei Wang <hwwang@google.com> | 2019-01-08 16:00:42 -0800 |
commit | 56f287a8b69b3b4a729d7e46a30e2d2559d28364 (patch) | |
tree | ac4c14bebff76e7eccc27f40380bf0492730d994 | |
parent | 5b8c0f7d6f3a7fd668c11bfc1f2a421536b73068 (diff) | |
download | device_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.xml | 17 | ||||
-rw-r--r-- | emulator/audio/car_audio_configuration.xml | 86 | ||||
-rw-r--r-- | emulator/audio/car_emulator_audio.mk | 1 | ||||
-rw-r--r-- | emulator/audio/driver/audio_hw.c | 1 |
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); |