Commit Graph

65 Commits

Author SHA1 Message Date
Vlad Popa
d59b506c84 CSD: remove unused library
Test: manual build
Bug: 209491695
Change-Id: I4eabeb92c0882db61bb530b438e59fb990d3c351
2023-10-31 12:33:20 -07:00
Shunkai Yao
0d523099ac 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
Change-Id: Ic9d8afc1d4e19e4243c66065b0a5d29156632851
2023-10-18 19:29:12 +00:00
Lorena Torres-Huerta
dc40dfd675 audio: Parse module configurations from the APM XML files am: 394e2527b5 am: 55acd0beaf am: e67e7a04f4
Original change: https://android-review.googlesource.com/c/platform/hardware/interfaces/+/2794105

Change-Id: I81ba6bf19cf60d1c5360ef6b84abefe29b95fc2d
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2023-10-18 19:16:24 +00: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
1261ff4f9b Merge changes from topic "revert-2770886-AidlAudioHalModuleConfig-FQCMWOWMCH" into main am: 03a2fbc6a3 am: fb1d459f09 am: 9868600b48 am: 9ed9a05578 am: 0cfcc0f2f9
Original change: https://android-review.googlesource.com/c/platform/hardware/interfaces/+/2786757

Change-Id: I6b5a7c2db6ee69a63abc9897bb9c1716157f641e
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2023-10-14 01:35:36 +00: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
Lorena Torres-Huerta
feba04d900 audio: Parse module configurations from the APM XML files am: 00a7307862 am: 8c04b54e05 am: e8f7b43dc6 am: 395beaa6e1 am: 99addf244e
Original change: https://android-review.googlesource.com/c/platform/hardware/interfaces/+/2363149

Change-Id: I52ddf8fcec0930f465171fd134addac4f5d6c472
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2023-10-13 19:12:27 +00: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
Vlad Popa
ce33864049 CSD: Add default AIDL HAL implementation
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
2023-10-05 11:25:09 -07:00
David Li
b089c0cfee audio: Fix remote submix module device ports handling
- 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
2023-08-10 14:37:31 -07:00
Mikhail Naganov
cf824f65c8 audio: Implement the major functionality of the primary CF HAL
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
2023-08-07 13:38:50 -07:00
Mikhail Naganov
b03b5c4a06 aosp aidl bluetooth audio hal implementation
Bug: 228804498
Test: atest VtsHalAudioCoreTargetTest
Change-Id: Id5fb60fe53ead9f5d2e6ecbb9988a23835cf2509
2023-08-02 21:42:01 +05:30
Mikhail Naganov
43a85cfb2b audio: Add a helper class to simplify legacy HALs migration
Since in the C and HIDL APIs the method for opening a stream
receives the device to connect to, some legacy HAL implementations
took an advantage of that. In AIDL APIs device port connection
process is more dynamic and independent of the stream creation.

To simplify porting of legacy implementations to AIDL, a helper
class StreamSwitcher is added. It emulates the legacy behavior
by allowing to postpone the stream implementation creation until
the connected device is known. Until that moment, it exposes
to the client a stub implementation of the stream interface.

Bug: 264712385
Bug: 286914845
Test: atest VtsHalAudioCoreTargetTest
Change-Id: Ie8ae0338fd22f705e00a34e56a7fa235eda5ed9e
2023-07-24 16:40:39 -07:00
Mikhail Naganov
f0ad731bb9 Merge changes I392933f8,I5e4da0c3,I2134b15e into main
* changes:
  audio: Add optional 'DriverInterface::getPosition' method.
  audio: Create ModulePrimary and ModuleStub
  audio: Move tinyALSA-specific code to Module/StreamAlsa
2023-07-13 20:10:10 +00:00
Mikhail Naganov
521fc49fba audio: Create ModulePrimary and ModuleStub
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
2023-07-13 11:25:23 -07:00
Mikhail Naganov
c337a8799b audio: Move tinyALSA-specific code to Module/StreamAlsa
Extract code interacting with tinyALSA which is not
specific to USB into "abstract" module and stream
implementations ModuleAlsa and StreamAlsa. Also, move
utility code which does not need module or stream
context into Utils.

This facilitates implementation of the CF core HAL which
also uses tinyALSA, allowing to share common code.

Bug: 264712385
Test: atest VtsHalAudioCoreTargetTest

Change-Id: I2134b15e970c78e8a48b254e15199b8207a8ab34
2023-07-13 11:24:52 -07:00
Mikhail Naganov
724b24f895 audio: Fix default surround sound config
Ensure that all formats returned by
AudioPolicyConfigXmlConverter::getDefaultSurroundSoundConfig
can be converted into legacy values.

Bug: 290116634
Test: atest audio_policy_config_xml_converter_tests
Change-Id: I3a46ea5ee4805f719c8977064c9d8d681a75cff2
2023-07-06 13:51:37 -07:00
Shraddha Basantwani
6bb696370b Audio : Add remote submix stream implementation
Bug: 286914845
Test: atest VtsHalAudioCoreTargetTest
Change-Id: Ia477458193ade9068eaf56e953ab670fee53cc7d
2023-06-30 09:05:50 +00:00
Lorena Torres-Huerta
aa8f76af92 audio: Provide code for parsing surround sound config from XML
The main change is to convert the result of parsing from XSDC
types to AIDL, and add a VTS test for IConfig.getSurroundSoundConfig.

Extra changes:
  - add 'Unchecked' suffix to conversion functions that do not
    wrap the result into ConversionResult;
  - enable more compile-time checks for the default AIDL service,
    fix issues found.

Bug: 205884982
Test: atest VtsHalAudioCoreTargetTest
Change-Id: Icf578b8d28647e6355ed5328599c77d2ca1234f9
2023-05-16 18:00:14 -07:00
Mikhail Naganov
b511b8aa21 audio: Enable more compile time checks in the default impl
Enable "-Wall, Wextra, Werror, Wthread-safety",
fix discovered issues.

Bug: 205884982
Test: m
Change-Id: I0a8d3095dd24dbb3bc7cf6569c1f71945cd55168
2023-05-16 17:54:30 -07:00
Mikhail Naganov
776e65e35f Update visibility of libaudioserviceexampleimpl
In order for vendors to be able to use this library
it needs to have public visibility.

Bug: 205884982
Test: m
Change-Id: Idd47c942ee1e97372047ec1b44bcd996d454e3e2
2023-03-15 09:29:16 -07:00
Mikhail Naganov
e48e5737f3 audio: Make I/O operations in default stub more realistic
1. Increase the minimum buffer size to 256 frames. This is
   more realistic than 16 frames: 256 frames is ~5ms @ 48 kHz.

2. Make transfer delay in the stub module dependent on the frame
   count for synchronous transfers.

Bug: 270154517
Test: atest VtsHalAudioCoreTargetTest
Test: atest android.media.audio.cts.LoudnessEnhancerTest (w/AIDL enabled)
Change-Id: If968e30d145b52220f4dc3c33af48dbc163c78cd
2023-03-06 18:51:03 -08:00
Mikhail Naganov
79cb295819 Merge "audio: Make libaudioserviceexampleimpl just 'library'" 2023-03-03 00:00:08 +00:00
Mikhail Naganov
d48a13b1bd audio: Make libaudioserviceexampleimpl just 'library'
Remove the '_static' suffix to allow vendors compile
it as a dynamic library if needed.

Add missing dependency on SoundDose interface libs.

Bug: 205884982
Test: m
Change-Id: Id85945c7c680d1a718e2d692ffd435f30c029521
2023-03-02 14:14:05 -08:00
jiabin
783c48b00e AHAL: support volume control for USB audio HAL.
Use mixer control to support master mute, master volume and hardware
volume for USB audio HAL.

Bug: 266216550
Test: atest VtsHalAudioCoreTargetTest
Change-Id: Iad544ba517cbfc778ebdf96dd161944886383b73
2023-03-01 22:10:34 +00:00
jiabin
253bd32b04 AOSP AIDL USB audio HAL implementation.
Bug: 266216550
Test: atest VtsHalAudioCoreTargetTest
Change-Id: I82e053d3f6a918cafe0d43b030f724f63a99eb2a
2023-02-02 18:39:26 +00:00
Shunkai Yao
52ba4dc148 Effect AIDL: remove the shared_lib dependency for example binary
They will be dlopen so no need to add the shared_lib dependency.
But we need to add them as PRODUCT_PACKAGES in base_vendor.mk

Bug: 258124419
Test: build and boot cuttlefish, change effect lib path in Android.bp
and audio_effects_config.xml and bootup.

Change-Id: Ia3b9bef9b5ed86921d80adcc0ce2296f50939370
2023-02-02 03:19:53 +00:00
Shunkai Yao
f1f15a1e86 Merge "Audio AIDL : Add libeffects reverb implementation uuids" 2023-01-11 19:06:32 +00:00
Mikhail Naganov
f429c03d49 audio: Generalize stream implementations
This allows for more code reuse and composability when
implementing streams for a particular audio "backend."

The existing "stub" code has been moved to StreamStub* files.

Bug: 264712385
Test: atest VtsHalAudioCoreTargetTest
Change-Id: I97fd41f87eb6d01e1d57f0d70a86d3b2b3555837
2023-01-10 19:18:42 +00:00
Shraddha Basantwani
b83ec07797 Audio AIDL : Add libeffects reverb implementation uuids
Bug: 258124419
Test: atest VtsHalEnvironmentalReverbTest
      atest VtsHalPresetReverbTargetTest

Change-Id: Ifa858ab002ee815f59b8582e5427eca566226fa2
2023-01-10 15:50:11 +05:30
Ram Mohan
e4064cebba DynamicsProcessing: Add AIDL placeholder implementation and its unit test
Update audio_effects_config.xml to use libeffect dynamicsProcessing
implementation.

Bug: 258124419
Test: atest VtsHalDynamicsProcessingTargetTest
Test: atest VtsHalAudioEffectTargetTest

Change-Id: If93d084be383b716ff950faf1c3e23d6c1edaa66
2023-01-06 23:00:09 +00:00
Mikhail Naganov
10c6fe2b8f audio: Add IBluetooth core interface
This interface corresponds to BT-specific functions
of the IPrimaryDevice in the HIDL HAL.

Bug: 205884982
Test: atest VtsHalAudioCoreTargetTest
Change-Id: I5f52d65e06f42e1a5fb2e51d27b79e94fe423eaa
2023-01-03 18:23:33 +00:00
Vlad Popa
2afbd1e549 Refactor the ISoundDose.aidl interface
This refactoring is fixing the hal_implementation_test workaround from
aosp/2363076. Adjusted the package name to match the aidl_interface and
declared the ISoundDose interface types only.

Test: VtsHalSoundDoseFactoryTargetTest, VtsHalAudioCoreTargetTest,
hal_implementation_test
Bug: 263388737

Change-Id: Ibce4cd95aaf600de2096179f137243939114ba6a
Merged-In: Ibce4cd95aaf600de2096179f137243939114ba6a
2022-12-28 18:01:01 +01:00
Shunkai Yao
883d75b6f9 Effect AIDL Refine effect test parameter combination list
Add effects implementation shared lib dependency.

Bug: 258124419
Test: atest VtsHalVisualizerTargetTest
Test: atest VtsHalAECTargetTest
Test: atest VtsHalAGCTargetTest
Test: atest VtsHalNSTargetTest
Change-Id: I58be0b789b08c9211a6bc79e8fc3c21d9658dd4a
2022-12-27 23:25:23 +00:00
Shunkai Yao
e39cd36545 Effect AIDL Add visualizer libeffect implementation
Bug: 258124419
Test: atest VtsHalVisualizerTargetTest
Change-Id: I4ad827a4e8951a16738580ecf91fe1b9cf65cc20
2022-12-22 17:10:03 +00:00
Shraddha Basantwani
ae7dde5d10 Audio AIDL : Add libeffects haptic generator implementation uuid
Bug: 258124419
Test: atest VtsHalHapticGeneratorTargetTest

Change-Id: I09abbc7a74d1e75f18bd1fbb4f1c2276a420eb20
2022-12-22 01:01:18 +05:30
Treehugger Robot
b02f80b5c4 Merge "Audio AIDL : Add libeffects downmix implementation uuid" 2022-12-20 15:08:55 +00:00
Treehugger Robot
1ad0ff0f79 Merge "Downmix: Add AIDL placeholder implementation and vts test" 2022-12-20 04:39:34 +00:00
Shunkai Yao
2af598bfa5 Merge "Audio AIDL : Add libeffects loudness enhancer implementation uuid" 2022-12-19 21:15:33 +00:00
Shraddha Basantwani
4ff8698a25 Audio AIDL : Add libeffects downmix implementation uuid
Bug: 258124419
Test: atest VtsHalDownmixTargetTest

Change-Id: I32d415d83e0a068efbea93ef4c2af3403db0f0a5
2022-12-19 15:31:54 +05:30
Sham Rathod
40f55bd520 Downmix: Add AIDL placeholder implementation and vts test
Bug: 258124419
Test: atest VtsHalDownmixTargetTest

Change-Id: I6c202d474b738e0e0d242dc91cafa3892b9e9987
2022-12-19 09:15:49 +05:30
Vlad Popa
f4fe41c873 Audio HAL: Add new HAL for sound dose
The new HAL is running as part of the HIDL audio HAL process. It is
meant as a workaround for HAL implementors that can not switch to the
audio AIDL yet and need to certify with IEC62368-1 3rd edition or
EN50332-3. Note that this HAL will be deprecated in the future.

Test: atest VtsHalSoundDoseFactoryTargetTest & flash bluejay-userdebug
Bug: 257937004
Change-Id: Ifbbf235bab58c1ee2f1ea246cf98c9e8966893c0
2022-12-18 10:18:10 +01:00
Vlad Popa
943b7e2b91 Add default implementation and VTS for ISoundDose
The ISoundDose HAL interface is used for reporting the sound dose
relevant information from/to the HAL. This is necessary for all devices
that certify with the IEC62368-1 3rd edition and EN50332-3 standard
for safe hearing.

Bug: 248567177
Test: atest VtsHalAudioCoreTargetTest
Change-Id: Ib89e09243a01cebc2f7996b6b572384a1471867a
Merged-In: Ib89e09243a01cebc2f7996b6b572384a1471867a
(cherry picked from commit 83a2146546)
2022-12-15 19:41:32 +00:00
Shraddha Basantwani
22834eab2c Audio AIDL : Add libeffects loudness enhancer implementation uuid
Bug: 258124419
Test: atest VtsHalLoudnessEnhancerTargetTest

Change-Id: I55449dc58cc65ae8697f2b33e190f3fd6aa5e4f9
2022-12-13 19:32:00 +05:30
Lorena Torres-Huerta
bc585bd986 Default implementation for IConfig engine configuration.
Added XML to AIDL conversion classes that support
audio_policy_engine_configuration and audio_policy_configuration
schemas.

CTS-Coverage-Bug: 261509055
Bug: 242678729
Test: atest VtsHalAudioCoreTargetTest
Change-Id: If47932093af45c5289d070d4893cd10e79593e31
2022-12-08 03:47:24 +00:00
Shunkai Yao
812d5b4ce0 AIDL effect vts test cases refinement
Bug: 255361653
Test: atest VtsHalAudioEffectTargetTest
atest VtsHalAudioEffectFactoryTargetTest
atest VtsHalEqualizerTargetTest

Change-Id: I4d4c4de97a73d4ea6dedd9c9e1733da03860430b
2022-11-18 19:50:24 +00:00
Shunkai Yao
f0c263b547 Use AIDL effect bundle in effectserviceexampleimpl.
Bug: 255361653
Test: atest VtsHalAudioEffectTargetTest
atest VtsHalAudioEffectFactoryTargetTest
atest VtsHalEqualizerTargetTest

Change-Id: Ia50ff5066e007f6a8569114e36f0e4565a6100ea
2022-11-16 18:09:17 +00:00
Shunkai Yao
6c04ef2c55 Merge changes from topic "aidl_audio_effect_8_config"
* changes:
  Add effect config xml parser in AIDL effect factory
  Support effect config parser in effect AIDL
2022-11-14 15:24:01 +00:00
Shunkai Yao
52abf0a662 Support effect config parser in effect AIDL
Bug: 255361653
Test: parse an example audio_effects.xml
atest VtsHalAudioEffectFactoryTargetTest
atest VtsHalAudioEffectTargetTest
atest VtsHalEqualizerTargetTest

Change-Id: I086905bcbe113a56767cae45102c84f5250d348e
2022-11-10 22:38:55 +00:00
Mikhail Naganov
3b125b76aa audio: Add volume/mute, audio mode, and screen state to IModule
Add the following methods to IModule:
 - getTelephony;
 - get/setMasterMute;
 - get/setMasterVolume;
 - get/setMicMute;
 - updateAudioMode;
 - updateScreenRotation;
 - updateScreenState;
The "update..." methods are "informational," the HAL may ignore
them and must not raise any errors.

ITelephony currently contains 2 methods:
 - getSupportedAudioModes;
 - switchAudioMode.
This "switchAudioMode" must validate the argument, and must
switch the HAL to the new mode synchronously.

Implement and add VTS tests.

Bug: 205884982
Test: atest VtsHalAudioCoreTargetTest
Change-Id: I9174c81fe7d16f7068257051ae5e129b15e82648
2022-11-09 18:55:07 +00:00