Commit graph

2428 commits

Author SHA1 Message Date
Mikhail Naganov
d664a63cf4 Fix after aosp/2836447
Update 'memset' in StreamPrimary to fill the entire buffer.

Bug: 302132812
Bug: 302587331
Test: atest CtsMediaAudioTestCases
Change-Id: I6c2e0fc9ab49b35a9484ac3a900aefa9aa98315c
2023-11-27 17:31:04 -08:00
Shunkai Yao
012e3d6861 Merge "Effect AIDL: skip volume checking" into main am: a1d092a818
Original change: https://android-review.googlesource.com/c/platform/hardware/interfaces/+/2848053

Change-Id: I3211d82b5ef07eb905557c604ba6ea1f83ab2456
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2023-11-27 20:45:00 +00:00
Shunkai Yao
a1d092a818 Merge "Effect AIDL: skip volume checking" into main 2023-11-27 20:03:49 +00:00
Mikhail Naganov
3bb96fe48b Merge "audio: Adjust default impl for non-RT audio behavior of AVD" into main am: 8062a77307
Original change: https://android-review.googlesource.com/c/platform/hardware/interfaces/+/2836447

Change-Id: I645533b75063f3e80717afa5427262f65289f63a
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2023-11-27 18:51:26 +00:00
Mikhail Naganov
8062a77307 Merge "audio: Adjust default impl for non-RT audio behavior of AVD" into main 2023-11-27 18:50:48 +00:00
David Li
1a56fdda2d Effect AIDL: skip volume checking
Bug: 310751043
Test: atest VtsHalAudioEffectTargetTest
Change-Id: I1b8b32ba7cd33ac3c00637ca86e041f1f58c69f3
Merged-In: I1b8b32ba7cd33ac3c00637ca86e041f1f58c69f3
2023-11-27 16:52:54 +00:00
Shunkai Yao
a3c120c31a Merge "Add Headtracking connection mode for Spatializer AIDL" into main am: 17017a2aa4
Original change: https://android-review.googlesource.com/c/platform/hardware/interfaces/+/2835087

Change-Id: I9103d611f4e116f908744158f832ea95f3e83d52
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2023-11-18 01:34:30 +00:00
Mikhail Naganov
6c419352c2 audio: Adjust default impl for non-RT audio behavior of AVD
The default implementation of the primary HAL is intended to
work with the AVD. Current implementation of virtualized audio
I/O on AVD falls behind actual hardware in terms of I/O timing.
This is not tolerated by CTS tests which are tailored for
real hardware.

Make the primary HAL implementation more resilient to irregular
ALSA read/write behavior on AVD by prolonging I/O time, or
skipping operations when falling behind expected time.

Bug: 302132812
Bug: 302587331
Test: atest CtsMediaAudioTestCases
Change-Id: Ia290d9541a8a0e22d28024f7930ef554396d63c6
2023-11-17 13:39:28 -08:00
Shunkai Yao
d5b19ea384 Add Headtracking connection mode for Spatializer AIDL
Bug: 311474218
Test: m android.hardware.audio.effect-update-api
Test: m
Change-Id: I2578cc37f55000d881211048a10256e67aa26532
2023-11-17 04:27:23 +00:00
Treehugger Robot
41d67f2327 Merge "audio: Add a missing include to ModuleConfig.cpp" into main am: 035672eb61
Original change: https://android-review.googlesource.com/c/platform/hardware/interfaces/+/2825166

Change-Id: I90eaeaa59f12726b035dc001e7e4602a0b74aaa8
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2023-11-16 20:27:21 +00:00
Treehugger Robot
035672eb61 Merge "audio: Add a missing include to ModuleConfig.cpp" into main 2023-11-16 19:47:54 +00:00
Mikhail Naganov
ba113931bd Merge "audio: Fix remote submix configuration and 'prepareToClose'" into main am: 8a4394f8b8
Original change: https://android-review.googlesource.com/c/platform/hardware/interfaces/+/2825161

Change-Id: I370c8367226ef33724605f22354f8b3008becd41
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2023-11-15 16:45:37 +00:00
Mikhail Naganov
8a4394f8b8 Merge "audio: Fix remote submix configuration and 'prepareToClose'" into main 2023-11-15 16:10:04 +00:00
Andy Hung
9f1b5aceac Merge "frameCountFromDurationUs: Avoid integer overflow" into main am: 4cf75592a3
Original change: https://android-review.googlesource.com/c/platform/hardware/interfaces/+/2824592

Change-Id: Ide582f21f71dce662bc9d1ad617c47fc183140eb
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2023-11-15 04:05:40 +00:00
Andy Hung
4cf75592a3 Merge "frameCountFromDurationUs: Avoid integer overflow" into main 2023-11-15 03:31:58 +00:00
Mikhail Naganov
6198ad3883 audio: Add a missing include to ModuleConfig.cpp
This module uses logging, however it did not include
the corresponding header.

Bug: 308706390
Test: build source tree
Change-Id: I1b3b5d8c5118b4f56cb0fe0c2bafd1ff30a6ca41
Merged-In: I1b3b5d8c5118b4f56cb0fe0c2bafd1ff30a6ca41
2023-11-14 01:52:09 +00:00
Shunkai Yao
a1bbe741af Merge "Effect AIDL: add Spatializer aidl in audio effect HAL" into main am: 69bc4e0711
Original change: https://android-review.googlesource.com/c/platform/hardware/interfaces/+/2486775

Change-Id: I09ae828de8aac51d8a788a73fc25bd96541cdc89
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2023-11-13 19:07:26 +00:00
Michael Chan
76f06f2c6a frameCountFromDurationUs: Avoid integer overflow
Change-Id: Ifbeab2724172f0adc113d6f8852a6f8ae7870817
2023-11-13 16:53:36 +11:00
Shunkai Yao
992b009bc5 Effect AIDL: add Spatializer aidl in audio effect HAL
Spatializer is a union representing parameters for audio spatialization effects

Bug: 273373363
Test: Build
Change-Id: I6e8414238256903aeae171c5b7b7a98fe5f96f89
2023-11-10 05:33:58 +00:00
Mikhail Naganov
2ebe3906ad audio: Fix remote submix configuration and 'prepareToClose'
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
2023-11-09 14:33:37 -08:00
William Escande
e76315b139 Merge "Add defaults for audio AIDL interfaces" into main 2023-11-08 19:06:32 +00:00
feiyuchen
17c0fe507e Add "system" group to Audio HAL
needed for using EdgeTpu.
Due to this code goes to AOSP, please see CL details and test result in b/289097511#comment24.

Bug: 289097511
Change-Id: Ie0969309346cd85b4bb8ac71860a529710c73345
2023-11-08 17:24:21 +00:00
Shunkai Yao
ca63a36695 Merge "Add defaults for audio AIDL interfaces" into aosp-main-future 2023-11-08 01:41:21 +00:00
Bart Van Assche
a0234940b3 audio: VtsHalAudioCoreModuleTargetTest: Convert a SIGSEGV into an assertion failure
Convert the following segmentation fault into an assertion failure:

 signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x0000000000000000
 Cause: null pointer dereference
 9 total frames
 backtrace:
       #00 pc 000000000020e532  /data/local/tmp/VtsHalAudioCoreTargetTest/x86_64/VtsHalAudioCoreTargetTest (AudioCoreModuleBase::TearDownImpl()+114) (BuildId: f1bb3c414cf012ccd7d268b4e0c7fefe)
       #01 pc 00000000001c890a  /data/local/tmp/VtsHalAudioCoreTargetTest/x86_64/VtsHalAudioCoreTargetTest (AudioCoreModule::TearDown()+106) (BuildId: f1bb3c414cf012ccd7d268b4e0c7fefe)
       #02 pc 00000000002b62a8  /data/local/tmp/VtsHalAudioCoreTargetTest/x86_64/VtsHalAudioCoreTargetTest (testing::TestInfo::Run()+424) (BuildId: f1bb3c414cf012ccd7d268b4e0c7fefe)
       #03 pc 00000000002b6de4  /data/local/tmp/VtsHalAudioCoreTargetTest/x86_64/VtsHalAudioCoreTargetTest (testing::TestSuite::Run()+804) (BuildId: f1bb3c414cf012ccd7d268b4e0c7fefe)
       #04 pc 00000000002c5c7e  /data/local/tmp/VtsHalAudioCoreTargetTest/x86_64/VtsHalAudioCoreTargetTest (testing::internal::UnitTestImpl::RunAllTests()+2622) (BuildId: f1bb3c414cf012ccd7d268b4e0c7fefe)
       #05 pc 00000000002c50cc  /data/local/tmp/VtsHalAudioCoreTargetTest/x86_64/VtsHalAudioCoreTargetTest (testing::UnitTest::Run()+140) (BuildId: f1bb3c414cf012ccd7d268b4e0c7fefe)
       #06 pc 00000000001c86f0  /data/local/tmp/VtsHalAudioCoreTargetTest/x86_64/VtsHalAudioCoreTargetTest (RUN_ALL_TESTS()+16) (BuildId: f1bb3c414cf012ccd7d268b4e0c7fefe)
       #07 pc 00000000001c8669  /data/local/tmp/VtsHalAudioCoreTargetTest/x86_64/VtsHalAudioCoreTargetTest (main+137) (BuildId: f1bb3c414cf012ccd7d268b4e0c7fefe)
       #08 pc 00000000000547e9  /apex/com.android.runtime/lib64/bionic/libc.so (__libc_init+89) (BuildId: e5ef3cc48c1e014ffb7dbbcfc7f9d475)

Bug: 308687042
Change-Id: I2d528dd9cf0f59bcd6b0e485b4f6141320d89a81
Signed-off-by: Bart Van Assche <bvanassche@google.com>
2023-11-07 13:12:35 -08:00
Shunkai Yao
95732c6cb9 Add defaults for audio AIDL interfaces
- with defaults user don't have to change their Android.bp when there is
  a update
- update AIDL audio interfaces with android.media.audio.common.types
- update Spatialization and HeadTracking AIDL usage

Bug: 273373363
Bug: 293370815
Test: m
Test: lunch panther-trunk_staging-userdebug; m; test Bluetooth Audio
(cherry picked from https://googleplex-android-review.googlesource.com/q/commit:1977a4a664cc71e1d9841a01573b63793f88ae59)
Merged-In: Ic9d8afc1d4e19e4243c66065b0a5d29156632851
Change-Id: Ic9d8afc1d4e19e4243c66065b0a5d29156632851
2023-11-07 18:18:24 +00:00
Bart Van Assche
0fde783476 audio: AudioHalBinderServiceUtil: Make a log message more informative
If a timeout happens, report the name of the service for which the
timeout happens.

Change-Id: Iad0076071f06f0ca5e53e07b1ef97e25e7bae887
Signed-off-by: Bart Van Assche <bvanassche@google.com>
2023-11-06 16:14:15 -08:00
Bart Van Assche
17b3201259 audio: Change mDeathHandler from a member into a local variable
Since no data is retained in mDeathHandler across member function calls,
it should be a local variable instead of a member variable.

Change-Id: I58d6cc511a21e0e7f430b3cf528faba072e02ec7
Signed-off-by: Bart Van Assche <bvanassche@google.com>
2023-11-06 16:01:16 -08:00
Bart Van Assche
a76d4d8899 audio: Simplify AudioHalBinderServiceUtil::waitForFired()
Return the std::condition::wait_for() return value instead of reading
the variable 'fired' again. See also
https://en.cppreference.com/w/cpp/thread/condition_variable/wait_for.

Change-Id: I48c270f5446f61b2ad828b19a1fc294737a123dd
Signed-off-by: Bart Van Assche <bvanassche@google.com>
2023-11-06 16:01:16 -08:00
Shunkai Yao
195d3d6915 Add defaults for audio AIDL interfaces
- with defaults user don't have to change their Android.bp when there is
  a update
- update AIDL audio interfaces with android.media.audio.common.types
- update Spatialization and HeadTracking AIDL usage

Bug: 273373363
Bug: 293370815
Test: m
Test: lunch panther-trunk_staging-userdebug; m; test Bluetooth Audio
Change-Id: Ic9d8afc1d4e19e4243c66065b0a5d29156632851
Merged-In: Ic9d8afc1d4e19e4243c66065b0a5d29156632851
2023-11-06 19:14:32 +00:00
Mikhail Naganov
3143e6930b Merge changes Ic51d603d,Ia50def0d,I22f65b8b,I8ce9f230,Id8455eb1, ... into main
* changes:
  audio: Query minimum buffer size before opening streams
  audio: Implement getters for hardware mixer controls
  audio: Clean up and fix the bluetooth HAL module
  audio: Provide a way for Module to specify nominal latency
  audio: Fix default remote submix HAL implementation and VTS
  CSD: Add default AIDL HAL implementation
2023-11-06 17:01:00 +00:00
Mikhail Naganov
95f2277730 audio: Query minimum buffer size before opening streams
The proper way to obtain the minimum buffer size when
opening a stream is to retrieve it from the patch. Thus,
a patch must be established prior to opening a stream.
This step was often skipped by VTS tests, they were
providing a fixed stream buffer size which might not
work for all HAL module implementations.

Created a helper class `StreamFixture` which handles
all necessary steps for opening a stream. Overhauled
tests to use this class.

Also, remove special treatment of remote submix devices
by ModuleConfig.

Bug: 300735639
Test: atest VtsHalAudioCoreTargetTest
Change-Id: Ic51d603d2bb8ff0fd62434bd16fc02c51326fc42
2023-11-03 14:11:09 -07:00
Mikhail Naganov
49bcb92670 audio: Implement getters for hardware mixer controls
The VTS test for volume accessors first determines whether
the accessor is supported by calling the getter. The getter
must return `UNSUPPORTED_OPERATION` if the control is not
supported. For this reason, wire the getter to the hardware
mixer implementation.

Bug: 302132812
Test: atest VtsHalAudioCoreTargetTest
Change-Id: Ia50def0d076b6d3c46db55123186eab34bbbb954
2023-11-03 13:57:36 -07:00
Mikhail Naganov
55045b5fce audio: Clean up and fix the bluetooth HAL module
Fix the issue with retrieving BluetoothA2dp and BluetoothLe
instances access.

In 'Module::connectExternalDevice', always call
'populateConnectedDevicePort' to allow the module implementation
to cancel device connection.

Move frame count calculation into Utils.
Clean up includes and 'using' directives.

Bug: 302132812
Test: atest VtsHalAudioCoreTargetTest
Change-Id: I22f65b8bcdcdd9bcd67a8290520eb4a465d4c720
2023-11-03 13:57:20 -07:00
Mikhail Naganov
1350187c6b audio: Provide a way for Module to specify nominal latency
The latency figure depends on the module implementation.
Instead of using a hardcoded value, each module should be
able to specify its own value. This value is then used
for calculating the minimum buffer size.

Set the nominal latency of the primary (CF) module to a high
value since the virtual device implementation fails CTS tests
if it attempts to pretend that it provides low latency.

Bug: 302132812
Test: atest CtsMediaAudioTestCases --test-filter=".*AudioTrackTest.*"
Test: atest CtsMediaAudioTestCases --test-filter=".*AudioRecordTest.*"
Change-Id: I8ce9f230378eea787c9b3c7ce3660c1e4e7bc895
2023-11-03 13:50:07 -07:00
Mikhail Naganov
2aab766d05 audio: Fix default remote submix HAL implementation and VTS
The implementation had duplicated code in 'transfer', which already
present in 'outWrite'.

Cleaned up delay calculations and logging.

Fixed the VTS to send 'prepareToClose' before attempting to join
the worker. Otherwise, the worker could be stuck on a blocking
operation due to inactivity of the other party and join would never
happen.

Bug: 302132812
Test: atest VtsHalAudioCoreTargetTest --test-filter="*AudioModuleRemoteSubmix*"
Change-Id: Id8455eb12d1d2999dc0bc7b64f0d70a61a177598
2023-11-03 13:49:59 -07:00
Vlad Popa
7c6c214049 CSD: remove unused library
Test: manual build
Bug: 209491695

Change-Id: I4eabeb92c0882db61bb530b438e59fb990d3c351
Merged-In: I4eabeb92c0882db61bb530b438e59fb990d3c351
2023-11-01 02:40:25 +00:00
Mikhail Naganov
3c8b6ce171 CSD: Add default AIDL HAL implementation
** Partial upstream of ag/24854732. Only the interface part is
** included.

This should enable the sound dose gts on cuttlefish devices. The sound
dose HAL uses the internal MelProcessor to compute the MELs which are
reported to the framework.

Test: atest GtsAudioTestCases:SoundDoseTest
Bug: 301527435
Change-Id: Ifc505a0171bc8b4d3f5cf65d950fa5c0f812087f
Merged-In: Ifc505a0171bc8b4d3f5cf65d950fa5c0f812087f
2023-10-31 11:38:43 -07:00
Treehugger Robot
309d65f0c4 Merge "LoudnessEnhancer: Added test cases to validate effect processing." into main 2023-10-31 17:04:05 +00:00
Sneha Patil
496e4415b0 LoudnessEnhancer: Added test cases to validate effect processing.
Added test to verify increase in loudness with gains.
Added test to verify that outputs are 0 for INT_MIN gain value.

Bug: 305866207
Test: atest VtsHalLoudnessEnhancerTargetTest
Change-Id: I6e87f5bf6f268980b6cc9af4b7a191657f117eb5
2023-10-31 11:58:02 +05:30
Shunkai Yao
4a0e25ba6f Merge "audio: Add VTS execution tracer" into main 2023-10-30 16:13:44 +00:00
Sadaf Ebrahimi
0fd834c749 Merge "Edit tests to adjust with changes in libxml2 upgrade" into main 2023-10-30 15:06:55 +00:00
Sadaf Ebrahimi
8029a0567c Adjust with changes in libxml2 upgrade
Bug: http://b/307806447
Test: TreeHugger
Change-Id: I474ca3539a2443ad0b1f590f27aa53a7279798e1
2023-10-30 15:06:32 +00:00
Sadaf Ebrahimi
351f681ec8 Edit tests to adjust with changes in libxml2 upgrade
Bug: http://b/307806447
Test: TreeHugger
Change-Id: I5978fb6b11538ac254b971fada17cfbbcc5360cf
2023-10-30 15:06:26 +00:00
Jaideep Sharma
7449841dc5 audio: Add VTS execution tracer
Add Execution listener in VTS tests to get information
about test execution steps like, start, stop and failure messages
in logcat message.

Bug: 287168985
Test: run vts-hal-audio

Change-Id: Ie69a7bf78076c17d7b623d75748fa0fdbdba6b1e
2023-10-27 20:02:42 +00:00
Shunkai Yao
48415986d9 Merge "Fix cts Pre/post Processing failures on Cuttlefish aidl" into main 2023-10-18 23:01:54 +00:00
Shunkai Yao
12179c335f Fix cts Pre/post Processing failures on Cuttlefish aidl
Bug: 295055755
Test: atest android.media.audio.cts.AudioPreProcessingTest
Test: atest android.media.audio.cts.DynamicsProcessingTest
Change-Id: Ia887a6c51ec13b9bb01581065c9272a7e02dad1f
2023-10-18 15:46:05 +00:00
Mikhail Naganov
fc35ca3d32 audio: Use hardcoded r_submix configuration with XML
There are several reasons why parsing the canonical XML
configuration for the remote submix module will not work
correctly (see the commend in the code).

Since de facto all vendors use the canonical configuration
XML for the remote submix, substitute parsing it with
a correct hardcoded version.

Bug: 205884982
Test: atest VtsHalAudioCoreTargetTest
(cherry picked from commit ea604d50de)
Change-Id: Ib9d9da25d315ff4ce36c1870241fb61d95fcca88
2023-10-17 19:54:38 -07:00
Lorena Torres-Huerta
f7492518c7 audio: Set connectedProfiles for non-attached device ports.
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
2023-10-17 19:54:29 -07:00
Lorena Torres-Huerta
533cc78aab audio: Populate MicrophoneInfo with vendor data
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
2023-10-17 19:54:13 -07:00
Mikhail Naganov
cc21b6f2e6 audio: Implement proper parsing of masks in XsdcConversion
Since the parsed XML uses compliant separator for lists
in attribute values, there is no need to use legacy
'maskFromString' function.

Bug: 305281224
Test: atest VtsHalAudioCoreTargetTest
Change-Id: Ib257fd010b923ac651931e5976f9b1363d693f1b
2023-10-17 19:53:55 -07:00
Lorena Torres-Huerta
394e2527b5 audio: Parse module configurations from the APM XML files
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
2023-10-17 19:48:24 -07:00
Mikhail Naganov
af75a679c9 Revert "audio: Parse module configurations from the APM XML files"
Revert submission 2770886-AidlAudioHalModuleConfig

Reason for revert: Breaks BluetoothInstrumentationTests on main downstream

Reverted changes: /q/submissionid:2770886-AidlAudioHalModuleConfig

Bug: 305291602
Change-Id: I0076c88877943d9498f90c477e78a2be5d390150
2023-10-13 23:38:25 +00:00
Mikhail Naganov
5eea7fb0d7 Revert "audio: Populate MicrophoneInfo with vendor data"
Revert submission 2770886-AidlAudioHalModuleConfig

Reason for revert: Breaks BluetoothInstrumentationTests on main downstream

Reverted changes: /q/submissionid:2770886-AidlAudioHalModuleConfig

Bug: 305291602
Change-Id: I01a4d22056507f9047c4fead21c9a75bfa153a46
2023-10-13 23:38:25 +00:00
Mikhail Naganov
006a136ea7 Revert "audio: Set connectedProfiles for non-attached device ports."
Revert submission 2770886-AidlAudioHalModuleConfig

Reason for revert: Breaks BluetoothInstrumentationTests on main downstream

Reverted changes: /q/submissionid:2770886-AidlAudioHalModuleConfig

Bug: 305291602
Change-Id: Id325171baeabd61d244e5f15c37f7d14402bd426
2023-10-13 23:38:25 +00:00
Mikhail Naganov
567d0de485 Revert "audio: Use hardcoded r_submix configuration with XML"
Revert submission 2770886-AidlAudioHalModuleConfig

Reason for revert: Breaks BluetoothInstrumentationTests on main downstream

Reverted changes: /q/submissionid:2770886-AidlAudioHalModuleConfig

Bug: 305291602
Change-Id: I7f51ab94f5d42ac052e9900ddd0cc69a33856820
2023-10-13 23:38:25 +00:00
Mikhail Naganov
ea604d50de audio: Use hardcoded r_submix configuration with XML
There are several reasons why parsing the canonical XML
configuration for the remote submix module will not work
correctly (see the commend in the code).

Since de facto all vendors use the canonical configuration
XML for the remote submix, substitute parsing it with
a correct hardcoded version.

Bug: 205884982
Test: atest VtsHalAudioCoreTargetTest
Change-Id: Iddebf9baa73e8dc90ada1c9b1783c513abb59420
2023-10-11 19:38:49 -07:00
Lorena Torres-Huerta
a29393db39 audio: Set connectedProfiles for non-attached device ports.
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
2023-10-11 19:38:12 -07:00
Lorena Torres-Huerta
dc9d1a4b42 audio: Populate MicrophoneInfo with vendor data
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
2023-10-11 19:36:38 -07:00
Lorena Torres-Huerta
00a7307862 audio: Parse module configurations from the APM XML files
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
2023-10-11 18:31:25 -07:00
Mikhail Naganov
e3dcd057d9 Merge "audio: Allow "dynamic" profiles for device ports" into main 2023-10-11 17:32:22 +00:00
Mikhail Naganov
84bcc049e6 audio: Allow "dynamic" profiles for device ports
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
2023-10-10 15:15:50 -07:00
Mikhail Naganov
81b8fb2841 audio: Set 'maxOpenStreamCount' to unlimited for input ports am: 8dbc51158f
Original change: https://android-review.googlesource.com/c/platform/hardware/interfaces/+/2768032

Change-Id: I0f917bd3a39d08659e7b6d9c49ea4cc03f7c2db6
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2023-10-02 23:58:05 +00:00
Mikhail Naganov
8dbc51158f audio: Set 'maxOpenStreamCount' to unlimited for input ports
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
2023-10-02 15:19:03 -07:00
Mikhail Naganov
63d294c196 Merge changes I7df6e323,I0e3412b9 into main am: 0da62dd023
Original change: https://android-review.googlesource.com/c/platform/hardware/interfaces/+/2767897

Change-Id: I5def5e9262b8dfec9131f2d2bd184634956e6aae
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2023-10-02 19:56:23 +00:00
Mikhail Naganov
0da62dd023 Merge changes I7df6e323,I0e3412b9 into main
* changes:
  audio: Fix notification of streams of the device change
  audio: Fix update of an existing patch
2023-10-02 18:06:44 +00:00
Mikhail Naganov
89a8ea964d audio: Fix notification of streams of the device change
Replace the incorrect logic which was considering each
port individually with the correct logic which considers
a connection of a mix port to device ports.

Bug: 302573756
Test: atest VtsHalAudioCoreTargetTest
Change-Id: I7df6e32315945897d88923ea4d9744e590e85dfd
2023-09-29 17:05:23 -07:00
Mikhail Naganov
dc41773ba3 audio: Fix update of an existing patch
The code for updating the existing patch did not modify
the patch stored in the module's list of patches.

Added a test which switches the patch to another port
config and validates that 'Module.getAudioPatches' returns
the updated patch.

Bug: 302573756
Test: atest VtsHalAudioCoreTargetTest
Change-Id: I0e3412b9387cd451436a48af116dc5a940d868cf
2023-09-29 17:05:13 -07:00
Treehugger Robot
35a06a8adc Merge "Audio : Add OpenInputMultipleTimes VTS for r_submix" into main am: afdfa1d079
Original change: https://android-review.googlesource.com/c/platform/hardware/interfaces/+/2762796

Change-Id: I466944898bbcc4e2c9b5e6f43994bee0a49b6b0e
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2023-09-28 21:43:47 +00:00
Treehugger Robot
afdfa1d079 Merge "Audio : Add OpenInputMultipleTimes VTS for r_submix" into main 2023-09-28 20:53:33 +00:00
Shraddha Basantwani
21980e5196 Audio : Add OpenInputMultipleTimes VTS for r_submix
Bug: 286914845
Test: atest AudioModuleRemoteSubmix

Change-Id: I8ae78db42274d8e17408ad6d5300cda7de134985
2023-09-28 07:20:30 +00:00
Mikhail Naganov
a4998f64cd Merge "audio: Align Module::getMmapPolicyInfos behavior with legacy" into main am: b9c4bd4ea5
Original change: https://android-review.googlesource.com/c/platform/hardware/interfaces/+/2763851

Change-Id: I2d35697637c6a8ff08eecd48b5dd44faae11bfc1
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2023-09-27 21:49:37 +00:00
Mikhail Naganov
8506491475 audio: Align Module::getMmapPolicyInfos behavior with legacy
When there are no device ports supporting MMAP,
Module::getMmapPolicyInfos have to return 'Policy::NEVER'
so that the AAudio code does not attempt to use
the AAudio service. This aligns with the use of sysprops
by the HIDL implementation.

Update AudioCoreModule#GetMmapPolicyInfos test to use
the same logic for determining MMAP support as the framework
uses.

This makes CtsNativeMediaAAudioTest cases passing with
the AIDL HAL on Cuttlefish.

Bug: 302049825
Test: atest VtsHalAudioCoreTargetTest
Test: atest CtsNativeMediaAAudioTest [w/AIDL enabled on CF]
Change-Id: Ie58c408f6f648a8a03b6a5d92118b90061389c50
2023-09-26 17:20:58 -07:00
Mikhail Naganov
4991074eba Merge "audio: Fix connection between alsa_device_profile and _proxy" into main am: f69e0b6795
Original change: https://android-review.googlesource.com/c/platform/hardware/interfaces/+/2760046

Change-Id: I1203693e0bd17f89326b99b7ff60c4fea75809d1
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2023-09-25 17:11:27 +00:00
Mikhail Naganov
f69e0b6795 Merge "audio: Fix connection between alsa_device_profile and _proxy" into main 2023-09-25 16:00:00 +00:00
Treehugger Robot
b616f1844b Merge "audio: Fix Effect worker thread" into main am: 542110eebe
Original change: https://android-review.googlesource.com/c/platform/hardware/interfaces/+/2757106

Change-Id: I61aa81f240dac4184c1600b624b4f8d27756ef6e
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2023-09-22 17:16:53 +00:00
Treehugger Robot
542110eebe Merge "audio: Fix Effect worker thread" into main 2023-09-22 16:40:06 +00:00
Mikhail Naganov
5d2bfbac33 audio: Fix connection between alsa_device_profile and _proxy
alsa_device_proxy keeps a pointer to alsa_device_proxy,
but does not own it. Thus, the lifetime of the proxy must
be no less than of the proxy. In the legacy USB HAL impl
they were stored together (struct alsa_device_info).
Implement an equivalent class (DeviceProxy) in ALSA utils.

Bug: 264712385
Bug: 298712227
Test: atest VtsHalAudioCoreTargetTest
Change-Id: I4e36701752afb3f35664b6f2ad1acda5719be1ea
2023-09-21 17:44:54 -07:00
Shunkai Yao
dcfc268767 Merge "Effect AIDL: correct some code format" into main am: 697e3f89a7
Original change: https://android-review.googlesource.com/c/platform/hardware/interfaces/+/2757992

Change-Id: Ie617eee8dbf3eda1c2c90d4014d1fe0a0e359d79
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2023-09-21 21:23:33 +00:00
Shunkai Yao
8771cecb99 Effect AIDL: correct some code format
Bug: 300735428
Test: atest VtsHalAudioEffectTargetTest
Change-Id: Ic4c925ea14e08418e56ad108468f61b049280f70
2023-09-21 17:58:42 +00:00
Jaideep Sharma
632b1cd048 audio: Fix Effect worker thread
When a effect is closed and reopened from framework,
mExit and mStop states are not reset,that causes
threadloop to exit and eventually blocks framework
as FMQs are never filled from effects HAL.

Reset the state of mExit and mStop on every time when
thread is created, so open->close->open kind of
scenarios can be handled.

Bug: 301214647
Test: run vts-hal-audio

Change-Id: If54c8fa62827e5f28e620dd841d638028149b1b8
2023-09-21 03:11:00 +00:00
Treehugger Robot
c39ed27778 Merge "Effect AIDL: Skipping vts test case if its not supported by effect" into main am: 4f2a709416
Original change: https://android-review.googlesource.com/c/platform/hardware/interfaces/+/2755205

Change-Id: Iabf41d3f3b8ad56a106da445fcf613788d142e63
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2023-09-20 17:38:17 +00:00
Treehugger Robot
4f2a709416 Merge "Effect AIDL: Skipping vts test case if its not supported by effect" into main 2023-09-20 16:57:23 +00:00
Shunkai Yao
92cd748451 Effect AIDL: Skipping vts test case if its not supported by effect
Check audioModeIndication/audioSourceIndication/volume flags and only
test if they are supported

Bug: 300735428
Test: atest VtsHalAudioEffectTargetTest
Change-Id: I539b408fcdb73c25984ec8f39b401475a3ccab69
2023-09-19 21:31:22 +00:00
Treehugger Robot
cb1900c8a7 Merge "audio: Match the r_submix configuration to the legacy impl" into main am: 65747f7ccb
Original change: https://android-review.googlesource.com/c/platform/hardware/interfaces/+/2755271

Change-Id: I480ad6a21f409bdbe86096ee38916ed6e4ba2c1d
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2023-09-19 01:51:28 +00:00
Mikhail Naganov
21d4b9608a audio: Match the r_submix configuration to the legacy impl
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
2023-09-18 17:35:52 -07:00
Mikhail Naganov
f494fb43a9 Merge "audio: Improve testing of point-to-point connections" into main am: 049a82e5d9
Original change: https://android-review.googlesource.com/c/platform/hardware/interfaces/+/2753112

Change-Id: I2bd9cef92786b85abe73d6092ea6960ec8c27d91
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2023-09-18 17:06:02 +00:00
Mikhail Naganov
fe47b00628 audio: Improve testing of point-to-point connections
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
2023-09-15 18:58:17 -07:00
Mikhail Naganov
e3b1829528 Merge "audio: Fix handling of external devices disconnection" into main am: a39e854ef5
Original change: https://android-review.googlesource.com/c/platform/hardware/interfaces/+/2751285

Change-Id: I3a293e643158e46881c8e574dc3ef38682a736a7
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2023-09-14 20:43:59 +00:00
Mikhail Naganov
0e128dd3fe audio: Fix handling of external devices disconnection
A mix port can be patched to multiple connected device ports. Thus, when
disconnecting an external device and removing the connected port, the
profiles of the mix port can only be cleared iff there are no more
connected device ports patched to it, and it did not have profiles prior to
connection of the first device.

Enhanced VTS tests to catch this problem in the HAL implementations. Also,
ensure that audio ports and audio routes do not change after the test
finishes. This ensures that tests can't affect each other.

Bug: 298175108
Test: atest audiosystem_tests
Test: atest VtsHalAudioCoreTargetTest
Change-Id: Ia666b874958fb260513fc2b8cd20a823953ec679
2023-09-13 19:41:46 -07:00
Tomasz Wasilczyk
7ccd2acee4 Merge "Don't depend on String8 cast to C string [audio]" into main am: ecc3e1af82
Original change: https://android-review.googlesource.com/c/platform/hardware/interfaces/+/2748354

Change-Id: Icd46864cc50f72142d6c2962e84d67f5807420b4
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2023-09-13 19:39:37 +00:00
Tomasz Wasilczyk
ecc3e1af82 Merge "Don't depend on String8 cast to C string [audio]" into main 2023-09-13 19:00:43 +00:00
Treehugger Robot
7a47d43c4b Merge "AHAL: fix stack overflow when connecting usb device." into main am: d105a13b24
Original change: https://android-review.googlesource.com/c/platform/hardware/interfaces/+/2748878

Change-Id: Ie7cba8d772f12c8eccbb57fed1010f2349d97a75
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2023-09-13 18:00:55 +00:00
Tomasz Wasilczyk
98d280bc29 Don't depend on String8 cast to C string [audio]
Bug: 295394788
Test: m checkbuild
Change-Id: I73acbfad6da4f18566f6b11889e83679deeaa2b8
2023-09-13 04:22:00 +00:00
jiabin
3580f42df4 AHAL: fix stack overflow when connecting usb device.
Bug: 300146600
Test: manually
(cherry picked from https://googleplex-android-review.googlesource.com/q/commit:1e467c28493e6306dc48d5822db8ea7cc7d28fbc)
Merged-In: Ic904a5f9d4d61a2b7dc896ed593c12da4793f1cb
Change-Id: Ic904a5f9d4d61a2b7dc896ed593c12da4793f1cb
2023-09-12 23:11:16 +00:00
Mikhail Naganov
6695dae23c Merge "audio: Mitigate double receiving of the "exit" command" into main am: f0ffa20975
Original change: https://android-review.googlesource.com/c/platform/hardware/interfaces/+/2748875

Change-Id: I2658ef61f0e395fe43952912c8a9cdd5117ce255
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2023-09-12 22:51:03 +00:00
Mikhail Naganov
f0ffa20975 Merge "audio: Mitigate double receiving of the "exit" command" into main 2023-09-12 21:41:40 +00:00
Mikhail Naganov
f9c141dfb6 Merge changes I19a08bf2,Ibab914e5 into main am: 63f2d84e68
Original change: https://android-review.googlesource.com/c/platform/hardware/interfaces/+/2731393

Change-Id: I79dc596b022d69ac6519328ebc19d4660de1c770
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2023-09-12 21:16:41 +00:00
Mikhail Naganov
63f2d84e68 Merge changes I19a08bf2,Ibab914e5 into main
* changes:
  Audio : Add 3 VTS test cases for remote submix module
  r_submix : Fix minor issues in AIDL implementation
2023-09-12 20:37:33 +00:00
Mikhail Naganov
0e7bcae462 audio: Mitigate double receiving of the "exit" command
In rare cases, a worker thread from a new stream created
via StreamSwitcher can read again from the command FMQ
the "exit" command which was sent to the worker of
the previous stream.

The underlying reason for that has to be investigated.
For now, mitigate the issue by salting the cookie of
the "exit" command with the worker's TID.

Bug: 300130515
Test: atest VtsHalAudioCoreTargetTest
Change-Id: Ie7d2e847e8b39414ffd31afd64e32d4c9a292c03
2023-09-12 12:45:20 -07:00
Shraddha Basantwani
343db5e85e Audio : Add 3 VTS test cases for remote submix module
1. OutputDoesNotBlockWhenNoInput
2. OutputDoesNotBlockWhenInputStuck
3. OutputAndInput

Bug: 286914845
Test: atest AudioModuleRemoteSubmix

Change-Id: I19a08bf2bf39131a70a867280c758b5ef001c024
2023-09-12 16:40:06 +00:00