Commit Graph

1876 Commits

Author SHA1 Message Date
Treehugger Robot
03a07174dd Merge "Support custom effect type UUID in audio effect AIDL example service" into main 2023-07-15 00:56:10 +00:00
Shunkai Yao
80e5850d82 Support custom effect type UUID in audio effect AIDL example service
Parse custom effect type uuid in audio_effects_config.xml, so OEM can
add effect types without changing code

Bug: 271500140
Test: atest --test-mapping hardware/interfaces/audio/aidl/vts:presubmit
Change-Id: I558958cc42c6c4a304e0ab1239ddefec9575a5af
2023-07-14 23:57:21 +00:00
Peter Yoon
918a6a5ce9 audio: Allow Module subclasses to customize Configuration
When a vendor HAL reuses libaudioserviceexampleimpl,
a subclass of Module cannot change Configuration.

This change adds virtual method Module::initializeConfig(),
then a vendor HAL can override it to load custom Configuration.

Test: atest VtsHalAudioCoreTargetTest
Change-Id: I63fa8d70f3c4e13c8938070ee5431ebefd36bb58
2023-07-15 05:50:27 +09: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
704aec434e audio: Add optional 'DriverInterface::getPosition' method.
This is a method which can be optionally implemented
by a stream in case it can provide more exact position,
for example by taking into account data in intermediate
buffers.

Implemented this method for StreamAlsa and StreamRemoteSubmix.

Bug: 264712385
Test: atest VtsHalAudioCoreTargetTest
Change-Id: I392933f8f6b22d784726925199db00dcb0313648
2023-07-13 11:25:47 -07: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
01fa9e8874 Merge "vts: getParameters only if parameters are supported" into main 2023-07-12 15:27:31 +00:00
Mikhail Naganov
8460fa1ff5 Fix audio/aidl/TEST_MAPPING
A non-existent test module VtsHalAudioCoreConfigTargetTest
was added by accident. This is a test class, not a module.

Bug: 290793450
Test: atest com.android.tradefed.presubmit.TestMappingsValidation
Change-Id: Icc40ec7fb956dcb85342266540ce8f17240da36b
2023-07-11 16:56:59 -07:00
Jaideep Sharma
b985903e16 vts: getParameters only if parameters are supported
1) Validate specific parameters before open call,
   send only if parameters are supported.
2) GetParameters only if parameters are in range.

Bug: 288510312
Test: run vts VtsHalNSTargetTest, VtsHalAECTargetTest

Change-Id: Idb20d819b3eb8a4ba56b4d50311c1aa7659f3616
2023-07-10 13:13:42 +05:30
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
Mikhail Naganov
49712b56d8 audio: Add DriverInterface::start method
This method is used to bring out the hardware from standby.
It replaces the ad hoc 'exitStandby' method in StreamUsb.

Streamlined StreamUsb code to avoid locking during transfers.

Updated StreamRemoteSubmix to use 'start'.

Added extra checks to StreamStub to ensure that 'init/shutdown'
and 'standby/start' methods are called as expected. This allows
removing extra checks from non-stub stream implementations.

Bug: 205884982
Test: atest VtsHalAudioCoreTargetTest
Change-Id: I3615a7ca99cb4f1e149dcbfbc912f2ed58fb033f
2023-06-30 13:41:55 -07:00
Treehugger Robot
12e6f0c42e Merge "Audio : Add remote submix stream implementation" 2023-06-30 16:11:17 +00:00
Treehugger Robot
a2d5a26476 Merge "vts: Don't excercise data path for offloaded/bypass effects" 2023-06-30 12:55:47 +00: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
Shunkai Yao
beef909697 Support passing entire effect_param_t as vendor extension
Replace the UUID toString with hex version

Bug: 271500140
Test: Enable AIDL
Test: atest libAudioHalEffectParamTest
Change-Id: I79a5db25dc45774821a9a9a6bcda77c04e9da90d
2023-06-29 18:18:20 +00:00
Jaideep Sharma
cba428627a vts: Don't excercise data path for offloaded/bypass effects
Incase of offload effects or effects running in bypass mode
data is not handled by effect module, in those cases skip the
testcases to excercise data path.

Bug: 287590880
Test: run vts -m VtsHalAudioEffectTargetTest

Change-Id: I76155f8997b415bc96242f995ccc2e33c8989dc5
2023-06-28 04:47:30 +00:00
Mikhail Naganov
9d16a6ac10 audio: Allow Module subclasses to customize stream creation
Since specializations of the 'Module' class likely need
to provide their own specializations for streams, provide
virtual methods for them.

Bug: 282568751
Test: atest VtsHalAudioCoreTargetTest
Change-Id: Iddb1bff9f11bc867aba61897ea2f8b9bc3c27544
2023-06-26 17:32:01 -07:00
Mikhail Naganov
d5554cfae2 audio: Refactor streams implementation
Simplify the experience of implementing stream variants.
Stream class now exposes two interfaces: DriverInterface
and StreamCommonInterface, which represent the two
aspects of its usage: via the FMQ on the worker thread,
and via IStreamCommon Binder interface.

Input/output streams now inherit the concrete stream
variant, and implement interface methods specific for
IStreamIn and IStreamOut.

Added DriverInterface::shutdown method which is called
on the worker thread prior to the exit.

Bug: 282568751
Test: atest VtsHalAudioCoreTargetTest
Change-Id: I5bf8da2f22b27f0e284a41fc30b920d87ac2936c
2023-06-26 17:32:01 -07:00
Mikhail Naganov
75b59dfb4e audio: Propagate errors from Driver::setConnectedDevices
Plumb propagation of errors reported by the implementations
of DriverInterface::setConnectedDevices up to the Module.
This allows returning the reported errors from the corresponding
IModule interface methods. Implement handling of errors
from connection state update by the Module implementation.

When updating streams about the connection status
ensure that the list of connected devices is not empty.

Also, add an extra check to AudioStreamIn#ActiveMicrophones
to validate the size of the returned active microphones
list.

Bug: 282568751
Test: atest VtsHalAudioCoreTargetTest
Change-Id: I62a422d95c37a672fce4ad221bea435cc7b4ebfa
2023-06-26 17:32:01 -07:00
Mikhail Naganov
26dc9add8d audio: Enable use of 'expected_utils' for ScopedAStatus
Add necessary helper functions and use
RETURN_STATUS_IF_ERROR where possible.

Bug: 282568751
Test: atest VtsHalAudioCoreTargetTest
Change-Id: If68c995da0e5e0cb2e9c142ba40af6503ff628b2
2023-06-26 17:32:01 -07:00
Mikhail Naganov
b42a69ef68 audio: Pass flags and I/O handle to StreamContext
Vendor implementations may need to see the value of flags
and the I/O handle of the mix port used to open the stream.

Bug: 282568751
Test: atest VtsHalAudioCoreTargetTest
Change-Id: If1f346793f3b3a725bc19358909f5b461cb159c1
2023-06-26 17:32:01 -07:00
Mikhail Naganov
57f0dcf78d audio: Facilitate extension of Module class by vendors
Make interface methods protected so that subclasses can
augment them.

Provide getters for private fields.

Bug: 282568751
Test: atest VtsHalAudioCoreTargetTest
Change-Id: I0e4810f8a4c816c4f673139816e9768f6dc8da7c
2023-06-26 17:32:01 -07:00
Shunkai Yao
9e60e635bf Format VTS test code
Bug: 287430121
Test: atest VtsHalAudioEffectTargetTest
Change-Id: Iecc0c9388c6596cf5a25918f8f0af0495b2133a6
2023-06-23 04:34:50 +00:00
Jaideep Sharma
e4c7a96789 aidl: Improve Effect VTS naming
Use uuid in hexadecimal format in testcase name.

Change-Id: Ib687b6617060e4400a767f23ca0b26cece4005f1
2023-06-16 05:58:43 +00:00
Yu Liu
e989964b89 Remove duplcated static libgtest
Bug: 284287101
Test: locally build
Change-Id: Ia7fbf101eff850a2d128f17ad3fdefe6da99a987
2023-06-05 12:47:39 -07:00
Jooyung Han
ee8374606a Merge "Set root elements for xsd_config modules" 2023-05-30 03:58:25 +00:00
Mikhail Naganov
310b1c6e7e audio: Add more legacy channel masks for the input direction
This is in order to achieve a better parity both with
legacy output channel masks and AIDL channel layouts.
The change only affects the XSD schema used to generate
a parser for legacy configuration files.

Bug: 283542128
Test: atest audio_aidl_conversion_tests
Change-Id: Ic69b94f6ec650e0814f0200dbef219567eac9fe2
2023-05-22 13:52:50 -07:00
Jooyung Han
16d5af6755 Set root elements for xsd_config modules
This reduces the code size by not generating unnecessary code for
non-root elements.

Bug: 283700992
Test: m
Change-Id: I23bd5c2a0ccc40fded3ca08155ead5f4680c2ed9
2023-05-22 16:43:12 +09:00
Mikhail Naganov
3755134720 audio: Fix the comment about threading of DriverInterface::init
'DriverInterface::init' is called on the same thread as other
interface methods (the worker thread), except
for 'setConnectedDevices'. Update the comment to reflect this,
and rearrange the methods order in the interface.

Bug: 283463913
Test: m
Change-Id: I8937506d20ff8233b4b934c421173ce2bec9d43e
2023-05-19 20:08:53 -07: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
Shunkai Yao
492dc40711 Merge "Implement AIDL effect IFacotry::queryProcessing" 2023-05-16 22:38:43 +00:00
Shunkai Yao
5824efbe84 Implement AIDL effect IFacotry::queryProcessing
Bug: 281572768
Test: atest --test-mapping hardware/interfaces/audio/aidl/vts:presubmit
Change-Id: I0166786d531437ef52690b92067766879b043a1d
Merged-In: I0166786d531437ef52690b92067766879b043a1d
2023-05-15 23:13:07 +00:00
Mikhail Naganov
26526f15e3 audio: Update hardwired configuration
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
2023-05-12 19:44:26 -07:00
Treehugger Robot
2ba43ea9f3 Merge "Remove Descriptor proxy field from individual effect" 2023-05-10 17:37:29 +00:00
Mikhail Naganov
a273cdde84 audio VTS: Update 7.0/PolicyConfig
The call to instantiate PolicyConfig was updated
in Iced9d665d018853c4b2a50f4471a545af7bf60bb, however
the version of PolicyConfig class for HIDL HAL 7.x
was not updated accordingly

Bug: 205884982
Bug: 281450557
Test: atest VtsHalAudioV7_0TargetTest
Test: atest HalAudioV7_0GeneratorTest
Change-Id: Ic7ed6b186e1d0f1ff853f84ad962c1e4acf17a68
2023-05-08 13:17:08 -07:00
Shunkai Yao
e0f32c1dd7 Remove Descriptor proxy field from individual effect
This field should be filled by IFactory implementation

Bug: 271500140
Test: atest --test-mapping hardware/interfaces/audio/aidl/vts:presubmit
Change-Id: I96203b8cd037fd81b0b1d88fc5ca9915df02a919
Merged-In: I96203b8cd037fd81b0b1d88fc5ca9915df02a919
2023-05-03 23:58:29 +00:00
Treehugger Robot
8182edb4ff Merge "Freeze Audio AIDL interfaces" 2023-05-02 23:28:26 +00:00
Treehugger Robot
5a9edcec4c Merge "audio: Use the canonical direction port direction in ModuleUsb" 2023-05-02 17:43:28 +00:00
Mikhail Naganov
9be1cde261 Merge "audio VTS: Update PolicyConfig after AudioPolicyConfig" 2023-05-02 16:34:46 +00:00
Shunkai Yao
dd6ec5291a Freeze Audio AIDL interfaces
Fix Visualizer and Volume type UUID

Bug: 279432911
Test: m
Test: atest --test-mapping hardware/interfaces/audio/aidl/vts:presubmit
Change-Id: I3e7d145aa37fb67d78cf05c06da22f74c0ea07ad
Merged-In: I3e7d145aa37fb67d78cf05c06da22f74c0ea07ad
2023-05-02 00:55:22 +00:00
Mikhail Naganov
64fd6bd779 audio: Use the canonical direction port direction in ModuleUsb
Instead of relying on the device type, use the 'AudioPort.flags'
field to determine the device direction.

Remove 'isUsbInputDeviceType' and 'isUsbOutputtDeviceType'
as they are too specific to particular device type and just
add a maintenance burden.

Bug: 266216550
Test: m
Change-Id: Ia1b9330c2b419a1a4048ed78d914d05c1caf523f
2023-05-01 13:34:51 -07:00
Mikhail Naganov
33a35b5ffb audio VTS: Update PolicyConfig after AudioPolicyConfig
Make necessary changes to use updated AudioPolicyConfig class.

Bug: 205884982
Test: m VtsHalAudioV6_0TargetTest
Test: atest HalAudioV6_0GeneratorTest
Change-Id: Iced9d665d018853c4b2a50f4471a545af7bf60bb
2023-05-01 13:24:05 -07:00
Jiabin Huang
cf210c83b2 AHAL: add more comment for IModule.disconnectExternalDevice
Bug: 277955540
Change-Id: I0d6a73884ab4bcfec62da45124024e8680155144
Test: TH
2023-04-27 23:06:57 +00:00
Treehugger Robot
fe4b88ab73 Merge "Add EventFlag for effect HAL thread processing" 2023-04-13 16:57:44 +00:00
jiabin
768c6f94d6 AHAL: use PCM_FORMAT_INVALID as the termination of format array.
Bug: 266216550
Test: make
Change-Id: Ibe2056eb4fdecb14c3e25daa3dbdd769d6433136
2023-04-12 23:46:55 +00:00
Shunkai Yao
41888a2f07 Add EventFlag for effect HAL thread processing
Bug: 261129656
Test: atest --test-mapping hardware/interfaces/audio/aidl/vts:presubmit

Change-Id: Ibe6052a8c2a182b33e6fe727b8606431dd2f5355
2023-04-11 00:10:50 +00:00
Mikhail Naganov
7b2d12b1f7 audio: Clarify profiles management for external devices
Clarify what should happen to mix port profiles after
connection of an external device. Add a test to verify
this behavior.

Also, add an XML file for the test runner for
VtsHalAudioCoreTargetTest.

Bug: 273252382
Test: atest VtsHalAudioCoreTargetTest
Change-Id: I3381dd29c5922bf31fa3a8ae6fa273597e8333a1
Merged-In: I3381dd29c5922bf31fa3a8ae6fa273597e8333a1
2023-03-30 20:32:00 -07:00
Mikhail Naganov
d5536d9ac6 audio: Add some utility methods, improve logging
Add 'isDefaultAudioFormat' to Utils.h.

Print the module type in 'setModuleDebug'.

Align 'suggestDeviceAddressTag' with framework code.

Bug: 273252382
Test: m
Change-Id: I0248d2e866522a63a745d4af6132b7d2b6a01564
Merged-In: I0248d2e866522a63a745d4af6132b7d2b6a01564
2023-03-30 20:32:00 -07:00