Revert submission 2835831-e-ac3-joc remote submix
Reason for revert: Droidmonitor created revert due to b/370533763. Will be verifying through ABTD before submission.
Reverted changes: /q/submissionid:2835831-e-ac3-joc+remote+submix
Change-Id: I52e74ea0191f2820ba6c06b82040757d9e45097e
If the values(format, sample rate, channel mask) are left as unset, they
will be null. In that case, when using them will require checking
nullablitiy to avoid crash.
Bug: 323255506
Test: make and boot
Change-Id: Ic66bf0b6f53750ff8700e531cca13f03fbb72936
This reverts commit ce9767a966.
Please see the comment on aosp/2832731. This configuration
leads to anomalous framework behavior.
Bug: 311830316
Test: atest audiorouting_tests
Change-Id: I5be3ac18819e297aa199c5a0f5d2e85758448b4b
Align the behavior of the new implementation with the legacy
implementation in the case when the client opens multiple
input streams on the same remote submix device.
Reduce the HAL buffer size to match legacy behavior.
Bug: 264712385
Test: atest CtsVirtualDevicesTestCases --test-filter=".*VirtualAudioTest.*"
(cherry picked from commit a83c8a5518)
Change-Id: I6f5e6a2c133059c66269b1bdd8a30392db282c4d
Align the behavior of the new implementation with the legacy
implementation in the case when the client opens multiple
input streams on the same remote submix device.
Reduce the HAL buffer size to match legacy behavior.
Bug: 264712385
Test: atest CtsVirtualDevicesTestCases --test-filter=".*VirtualAudioTest.*"
Change-Id: Ia86a8480495693595dbb501ec58e5d1d238abab2
Similar to the primary module implementation, align the time
spent in the transfer operation with the duration of audio.
Change the read operation to ingest as much data as possible
during the audio burst duration.
Ensure that checking the existence of a SubmixRoute and adding
a new one is an atomic operation.
Minor improvements to avoid extra synchronization.
In the configuration, change the limit of max open streams to 10
to match the legacy implementation.
Bug: 302132812
Test: atest CtsMediaAudioTestCases --test-filter=".*AudioPlaybackCaptureTest#testPlaybackCaptureDoS"
Change-Id: Iccb6aaac46c039551c3d5f7760b1459168d9cfe5
In the configuration, remove "mono" channel masks.
The legacy implementation always used stereo, the framework
handles channel conversion. Otherwise, the input may
be opened with a different channel mask from the output.
In 'prepareToClose', close the output side of the route.
The framework may close the "old" output stream after
it has opened a new one. A call to 'prepareToClose' means
that the framework thread is already shutting down, thus
it is safe to shut down the route.
Bug: 302036943
Test: atest audioeffect_analysis
Change-Id: I95b57807f2559ef681da822b3cab4ea6b4340143
For external (non-attached) device ports that have dynamic
profiles, 'connectedProfiles' must be provided. They are
used when 'ModuleDebug.simulateDeviceConnections' is enabled.
Bug: 205884982
Test: atest VtsHalAudioCoreTargetTest
(cherry picked from commit a29393db39)
Change-Id: I69707d610c34f8f1eae9ef81768b76c40e985c0f
Added a virtual method Module::getMicrophoneInfos
so that vendor implementations can provide actual
data about device microphones. This information
is not part of the APM config file.
Bug: 205884982
Test: atest VtsHalAudioCoreTargetTestTest
(cherry picked from commit dc9d1a4b42)
Change-Id: I3ea9ba8da79fd29f8d69c5a575a57851d73df7b8
The default implementation now loads the HAL configuration
from the legacy XML configuration file which was previously
consumed by the framework directly.
Note that errors in the config file will lead to crash
of the XML parser, pointing out to the source of the problem.
IMPORTANT NOTES:
- Never use untested legacy config files with production
devices.
- Make sure that all possible configurations (for example,
BT offload on/off) are tested.
Bug: 205884982
Test: atest VtsHalAudioCoreTargetTest
(cherry picked from commit 00a7307862)
Change-Id: Id1002cb065e7cc19bdd520aca15b3fe5d39e5853
For external (non-attached) device ports that have dynamic
profiles, 'connectedProfiles' must be provided. They are
used when 'ModuleDebug.simulateDeviceConnections' is enabled.
Bug: 205884982
Test: atest VtsHalAudioCoreTargetTest
Change-Id: Ic82e47abc50e2958ed93f5d4d18082b569ecb67b
Added a virtual method Module::getMicrophoneInfos
so that vendor implementations can provide actual
data about device microphones. This information
is not part of the APM config file.
Bug: 205884982
Test: atest VtsHalAudioCoreTargetTestTest
Change-Id: I4b650ae221ba866421bbf8500ad8c17f04bc4aa7
The default implementation now loads the HAL configuration
from the legacy XML configuration file which was previously
consumed by the framework directly.
Note that errors in the config file will lead to crash
of the XML parser, pointing out to the source of the problem.
IMPORTANT NOTES:
- Never use untested legacy config files with production
devices.
- Make sure that all possible configurations (for example,
BT offload on/off) are tested.
Bug: 205884982
Test: atest VtsHalAudioCoreTargetTest
Change-Id: I01e4cd77a284d7df64ecb0c0b21cb16abfa0f6c5
Some device ports are connected via ADSP which takes care
of the actual audio configuration (format, channels, SR),
for example the built-in speaker and mic ports, as well
as some external devices like analog headsets.
In the legacy implementation, such device ports did not have
any profiles specified. Allow the same behavior in the AIDL
implementation. To ensure correctness, device ports with no
profiles must be routable to mix ports that have profiles
specified. This requirement is fulfilled in legacy configs.
Bug: 266124463
Test: atest VtsHalAudioCoreTargetTest
Test: atest audiosystem_tests audiorouting_tests
Test: atest CtsMediaAudioTestCases
Change-Id: Iaccd1e8ef2a5af9a5f8bae453905d01c6b7fdc28
Since libaudiohal@aidl reports that the most current legacy C API
version is supported by the HAL, the audio server uses a different
logic for telephony scenarios than for the HIDL HAL. This involves
opening more streams on the same mix port. Allow opening
an unlimited number of streams. However, keep the number of active
streams to be `1`.
Bug: 302132812
Test: atest CtsMediaAudioTestCases --test-filter=".*AudioNativeTest.*"
Test: atest CtsMediaAudioTestCases --test-filter=".*CallAudioInterceptionTest.*"
Change-Id: I896398fca73f28d28d9397d00751394c969531b4
The legacy configuration was interesting because although the
xml config file only listed 48000 Hz SR and
AUDIO_CHANNEL_OUT_STEREO channel mask, the implementation
allowed a range of SRs and MONO channel mask. The framework was
liberally allowing requests for other SRs to go to the r_submix
HAL, even without having them listed in the xml config
file. However, since libaudiohal@aidl is more strict in matching
configuration requests to port capabilities, we need to list all
channels masks and SRs suported by the legacy HAL explicitly.
However, we need to limit the amount of profiles to avoid
extra load when passing them via AudioPolicyService.listAudioPorts,
thus remove other PCM types.
Also, to match the hard limit on the number of routes in the legacy
implementation, set "maxOpen/ActiveStreamCount" for mix ports.
Bug: 286914845
Bug: 300990644
Test: atest VtsHalAudioCoreTargetTest
Test: atest android.media.audio.cts.AudioPlaybackCaptureTest
Change-Id: I4a8c7d016662d92ab5e73bc67d94aaac6570e59a
Point-to-point connections (analog, HDMI, SPDIF) do not use
a device address. Reflect that in `GenerateUniqueDeviceAddress`.
Add an analog headset into the test configuration.
Bug: 300648357
Test: atest VtsHalAudioCoreTargetTest
Change-Id: Id1d0b1b60df40c2474fe3151067152b8e0a261c3
- remove the default address "0" for IN_SUBMIX and OUT_SUBMIX;
- remove the profiles in the device port and assign profiles when
connecting;
- make remote submix input to use "virtual" connection type,
same as the output;
- fix ModuleConfig in VTS to avoid returning devices with virtual
connections as "external devices" because they can actually
be connected even when connection simulation is disabled;
- fix TryConnectMissingDevice VTS test to disconnect the device
if the operation has unexpectedly succeeded.
Bug: 286914845
Bug: 294976817
Test: atest VtsHalAudioCoreTargetTest
Change-Id: Ife11c9c356d1b5dc587d08cef47294e3b29f65c5
Change audio worker threads priority to ..._URGENT_AUDIO to match
the coupled thread in the audio flinger.
Set SCHED_FIFO scheduler for FAST threads (also to match AF fast
mixer/capture threads). In order to enable that, grand SYS_NICE
capability to the HAL service process and provide "getTid"
function in the StreamWorker class. For testing, add a "FAST"
output to the "stub" module in the HAL configuration.
Bug: 286914845
Test: atest libaudioaidlcommon_test
Test: atest VtsHalAudioCoreTargetTest
Test: adb shell ps -A -T -o PID,TID,NI,PCY,PRI,RTPRIO,SCHED,CMD
for the HAL service process during VTS test. For regular
"reader"/"writer" threads should see 'NI 19, PRI 38',
for FAST "writer" should see 'NI -19, PRI 43, RTPRIO 3, SCH 1'
Change-Id: Iab7e21ebc139ff11cf9b7f4a1645960db8dadd43
Core HAL changes:
1. Add StreamPrimary implemented via StreamAlsa.
2. Align the configuration with the HIDL HAL.
3. Fix position retrieval vs. standby call.
4. Fix sleeps in StreamAlsa.
VTS changes:
1. Use several bursts for stream I/O test scenarios that check
observable position increase. This is because the position may
not be available until a couple of transfers have been made.
2. Do not require position increase for the scenarios that do
not make several bursts. As specified above, the position may
not have been increased for the ALSA case. Whereas, using
multiple bursts in all scenarios will increase test time, and
make the state machine transitions graph more complicated.
3. Hook up the test config file to shut down audioserver during
VTS tests, fix the test config file.
Bug: 286914845
Test: atest VtsHalAudioCoreTargetTest
Test: compare APM dumps for AIDL vs. HIDL
Change-Id: I85271564c664fa40008d60e82b32eaa66a99c68f
Make 'Module' more abstract by moving stream creation
methods to more concrete 'ModulePrimary' and 'ModuleStub'.
'ModulePrimary' is now closer to the CF primary module:
it was stripped off USB devices from its configuration,
these got moved to 'ModuleUsb', and got rid of BT A2DP
and LE interfaces, these will be on 'ModuleBluetooth'.
Note that 'ModulePrimary' still uses stub streams, this
will be changed in subsequent patches.
'ModuleStub' is what 'Module' used to be, just a module
for improving test coverage. It includes simulation of
offload streams and dummy BT objects.
Bug: 264712385
Test: atest VtsHalAudioCoreTargetTest
Change-Id: I5e4da0c32c00d65688f2eda78b2c79594e4e4671
Fill in address for remote submix devices. Specify correct
connection type for the remote submix output.
Avoid logging entire HAL Engine Config.
Bug: 205884982
Test: atest VtsHalAudioCoreTargetTest
Change-Id: I246435e4d3b848b5d0ad9810d13f650603eac76d
These utilities are for types generated from AIDL. Since
the types end up in the 'aidl' namespace (NDK backend), it makes
sense to keep the utilities in the same namespace.
While changing the namespace, I've found numerous useless
includes of 'Utils.h' and removing them, also reorganizing
lists of includes along the way to match the style guide.
Bug: 205884982
Test: m
Test: atest --test-mapping hardware/interfaces/audio/aidl/TEST_MAPPING
Change-Id: Ib23b47092364046f632f9503b92b9baff5b902f5
These parcelables are also used by the framework.
Bug: 263964254
Test: atest VtsHalAudioCoreTargetTest
Change-Id: Ib30b69c325040e474fb58a8e7e515912fccab4c7
Merged-In: Ib30b69c325040e474fb58a8e7e515912fccab4c7
The framework expects that "built-in mic" has address "bottom",
and the "buitl-in back mic" has address "back". This logic
will be incorporated into the XML to AIDL serializer later.
Bug: 205884982
Test: enable AIDL audio HAL on CF and run `atest CtsMediaAudioTestCases`
Change-Id: I5052b312b673e18e3148f917487b1f90a1e04ba6
This is to simplify switching of cuttlefish to
the AIDL implementation. Split out 'r_submix' module.
Add all IModule instance names to the compatibility
matrix.
Bug: 205884982
Test: atest VtsHalAudioCoreTargetTest
Change-Id: I424db14257281671eea87aa743deb778ca75f388
Add 'MicrophoneInfo' and 'MicrophoneDynamicInfo' parcelables.
Add IModule.getMicrophones method.
Add following methods to IStreamIn:
- getActiveMicrophonesIds;
- get/setMicrophoneDirection;
- get/setMicrophoneFieldDimension.
Provide trivial implementations and VTS.
Also slightly refactor port retrieval from ModuleConfig
to unify common queries.
Bug: 205884982
Test: atest VtsHalAudioCoreTargetTest
Change-Id: I472c7733e2a331a67cea613cd9218889eff06a43
Added utility functions for operating on positional
bit flags.
Moved retrieval of offload mix ports to ModuleConfig
utility class.
Clarify the names of read/write tests.
Bug: 205884982
Test: atest VtsHalAudioCoreTargetTest
Change-Id: Id20881c2e62bc1b95d8fc3c268f99e36337dce7a
- Add compressed offload mix port into default implementation.
- Require AudioOffloadInfo to be passed to IModule.openOutputStream
for compressed offload port configs.
- Update VTS to handle compressed offload.
Bug: 205884982
Test: atest VtsHalAudioCoreTargetTest
Merged-In: I118b2c04bff12b64a7cac4dc2c88217a6a270046
Change-Id: I118b2c04bff12b64a7cac4dc2c88217a6a270046
(cherry picked from commit 975ea3ae89)
Add methods 'IModule.connect/disconnectExternalDevice' which inform
audio HAL about connection / disconnection of an external
non-attached device. Add method 'getAudioRoutesForPort' to
retrieve only routes that include the specified port.
Update the behavior of 'getAudioPorts' and 'getAudioRoutes'
indicating that the result may change due to instantiation
of new device ports for connected external devices.
Clarify behavior of 'IModule.setAudioPortConfig' that it can not
work with device ports with no profiles.
Add debug flags structure 'ModuleDebug' and method
'IModule.setModuleDebug' to control the debugging aspects. VTS
tests use these flags to test HAL behavior which would otherwise
require human intervention.
Update the default implementation and VTS for the AIDL changes.
Bug: 205884982
Test: atest VtsHalAudioCoreTargetTest
Merged-In: Iad5f7009e283729206f88b6278c8992f7f8a92a2
Change-Id: Iad5f7009e283729206f88b6278c8992f7f8a92a2