Commit graph

816 commits

Author SHA1 Message Date
Steven Moreland
c2a2995047 Merge "./update-makefiles.sh, for union changes/memory" am: 00daede4d5 am: 0942e33017
am: 87fe284668

Change-Id: I3a331b5e1c5418426a084f1c7bfe436214a1b68f
2019-11-26 15:00:11 -08:00
Treehugger Robot
00daede4d5 Merge "./update-makefiles.sh, for union changes/memory" 2019-11-26 22:47:34 +00:00
jiabin
5da42a3e3a Use audio containers from libaudiofoundation.
It is suggested to do so according to Vector.h and SortedVector.h.
At framework side, there are audio containers such as FormatVector,
ChannelMaskSet, SampleRateSet to replace the usage of Vector
SortedVector for audio stuff. In default hal implementation, we can
use these audio containers to replace Vector and SortedVector.

Bug: 135621476
Test: play/record audio
Change-Id: I4d985327fb76cd06afe241860d8b592abcbfe4f2
Merged-In: I4d985327fb76cd06afe241860d8b592abcbfe4f2
2019-11-26 11:41:24 -08:00
jiabin
797b5b45fc Add libaudiofoundation.
Some classes, e.g. AudioGain, in libaudiofoundation, which are used by
libaudiopolicycomponent, will require libaudiofoundation as a shared
library to avoid link error when building.

Bug: 135621476
Test: make
Change-Id: I8732bdab37d8afd866fe03a74db3dc564fea1ad2
Merged-In: I8732bdab37d8afd866fe03a74db3dc564fea1ad2
2019-11-26 11:29:34 -08:00
Steven Moreland
7696aa885f ./update-makefiles.sh, for union changes/memory
Many more types can be used in Java.

Bug: 143566068
Test: N/A
Change-Id: Ie18e1e0f9c22f2ea15b755df3b048c9d651c4945
2019-11-26 09:24:31 -08:00
TreeHugger Robot
1b863c2f9d Merge "Refactor for audio device type in conversion." 2019-11-25 20:04:44 +00:00
Mikhail Naganov
e74d8746cf Merge changes from topic "upstream-close-fixes" am: 7663233f5c am: b6d82825e0
am: 88e9203701

Change-Id: If85dd058799aede5b0770e52b0185d3405f44269
2019-11-25 07:40:37 -08:00
Mikhail Naganov
c48c24bbc9 audio: Factor out IStream operations into a helper class am: 422afc131a am: b0b24baabf
am: b15071a05e

Change-Id: I983c466c2abe0c69fd67105f4dbdfe59e1112757
2019-11-25 07:40:33 -08:00
Mikhail Naganov
7e241b350b audio: Cleanup VTS tests am: 13b99b4cf4 am: 740cb65b21
am: 598db7088c

Change-Id: I0ec9112a79bd66c506228c8b7bc56931c0847536
2019-11-25 07:40:29 -08:00
jiabin
98fd544712 Refactor for audio device type in conversion.
As audio device type can not be used as bit mask any more, refactoring
audio device type usages in conversion from/to HAL. Use a set of audio
device types instead of bit mask.

Bug: 135621476
Test: atest VtsHalAudioV5_0TargetTest
Change-Id: I1a0f574744f855bb1684cd28613571399781abbc
2019-11-22 16:44:34 -08:00
TreeHugger Robot
947a2172e0 Merge "audio effect: Avoid using stack-allocated arrays" 2019-11-22 02:18:26 +00:00
Mikhail Naganov
2a652cec4b audio effect: Avoid using stack-allocated arrays
This is to prevent OOB write in case when a sufficiently
large HIDL vector is provided via a HwBinder call.

Bug: 143787559
Test: atest VtsHalAudioEffectV5_0TargetTest
Change-Id: I6ea78804a5a3ed7a245929d3de47580b12c0da9a
2019-11-21 14:05:45 -08:00
Mikhail Naganov
ed261bbfb1 audio: Add check to IDevice.close for currently opened streams
IDevice.close must not proceed if there are streams
that are currently opened on this device.

Bug: 114451103
Test: atest VtsHalAudioV6_0TargetTest
Change-Id: I61d81bc0333098c341d5d551bf59331e49fcf682
2019-11-21 12:32:09 -08:00
Mikhail Naganov
422afc131a audio: Factor out IStream operations into a helper class
Bug: 114451103
Test: atest VtsHalAudioV5_0TargetTest
      atest VtsHalAudioV6_0TargetTest

Change-Id: I7c1b16df2b52fd5279ff1f431bfc7269fb9cd8f6
2019-11-21 11:01:28 -08:00
Mikhail Naganov
13b99b4cf4 audio: Cleanup VTS tests
Remove getSupported*AudioConfig methods as they were always
returning empty vector, and for V6 test parameter generation
has been changed.

Test: atest VtsHalAudioV5_0TargetTest
Change-Id: Ib6f53c52b3ee2769cb02730d02decd97390fe091
2019-11-21 11:01:18 -08:00
Mikhail Naganov
a4b693f5da Audio VTS: Fix MMAP tests
Ensure stream test runs for output MMAP profiles.

Enhance checks for MMAP buffer size.

Bug: 144575694
Test: atest VtsHalAudioV6_0TargetTest
Change-Id: I93e66b12c93c466d661e65c4dbbb5deb32772848
Merged-In: I93e66b12c93c466d661e65c4dbbb5deb32772848
2019-11-21 10:57:19 -08:00
Mikhail Naganov
d041930df9 Audio V6 wrapper: IDevice|IStream|IEffect.close releases HAL resource
Fixed behavior of IStream|IEffect.close to release the underlying
HAL resource synchronously. This is to avoid adding artificial
delays in VTS that become totally unpractical in V6.

Added clarification about expected client behavior for
IStream|IEffect.close w.r.t. audio data transfer.

Added IDevice.close method which releases HAL device resource.

Updated VTS tests to remove delays in V6.

Bug: 114451103
Bug: 141989952
Test: atest VtsHalAudioV6_0TargetTest
Change-Id: I439f0f923c091af2ab234d15ca847cfade341f25
Merged-In: I439f0f923c091af2ab234d15ca847cfade341f25
2019-11-21 10:56:25 -08:00
Lloyd Pique
43286a882b Merge "audio: Remove redundant PrintTo definitions" am: 7582ba18ee am: c93cb2e4b4
am: b72d057e24

Change-Id: I759f0e3a808780eb8b686d2553efeb96e46c3b7f
2019-11-20 15:02:12 -08:00
Lloyd Pique
97bc3fba7b audio: Remove redundant PrintTo definitions
hidl-gen now generates them for use by all Google Tests, calling
toString().

The local audio PrintTo definitions in PrettyPrintAudioTypes.h are now
redundant with the generated versions, and the entire header can be
removed.

Test: Verified the generated PrintTo functions work in a different GTest
Change-Id: I80d100907e3c6c638608b0b8b34232b02decac19
2019-11-19 14:45:32 -08:00
TreeHugger Robot
dda33b5d7a Merge "Audio V6 wrapper: IDevice|IStream|IEffect.close releases HAL resource" 2019-11-19 21:00:41 +00:00
TreeHugger Robot
594090a5b1 Merge "Audio VTS: Fix MMAP tests" 2019-11-19 19:56:46 +00:00
Mikhail Naganov
a70e4317e6 Audio VTS: Fix MMAP tests
Ensure stream test runs for output MMAP profiles.

Enhance checks for MMAP buffer size.

Bug: 144575694
Test: atest VtsHalAudioV6_0TargetTest
Change-Id: I93e66b12c93c466d661e65c4dbbb5deb32772848
2019-11-18 11:53:39 -08:00
Mikhail Naganov
7623ed9258 Audio V6 wrapper: IDevice|IStream|IEffect.close releases HAL resource
Fixed behavior of IStream|IEffect.close to release the underlying
HAL resource synchronously. This is to avoid adding artificial
delays in VTS that become totally unpractical in V6.

Added clarification about expected client behavior for
IStream|IEffect.close w.r.t. audio data transfer.

Added IDevice.close method which releases HAL device resource.

Updated VTS tests to remove delays in V6.

Bug: 114451103
Bug: 141989952
Test: atest VtsHalAudioV6_0TargetTest
Change-Id: I439f0f923c091af2ab234d15ca847cfade341f25
2019-11-18 11:39:26 -08:00
chenhg
b49da5d3c9 Merge "audio: add 'useForVolume' field to 'gain'." am: d0470d9440 am: ce4b75195f
am: 2a2216af6e

Change-Id: Ib50bd6aa1f95cd391c3bcf4484fc78b5f4e50974
2019-11-18 08:53:20 -08:00
chenhg
a53c280301 audio: add 'useForVolume' field to 'gain'.
BUG: 144081761
Test: xmllint --noout --xinclude --schema \
      hardware/interfaces/audio/5.0/config/audio_policy_configuration.xsd \
      frameworks/av/services/audiopolicy/config/audio_policy_configuration*.xml
      xmllint --noout --schema \
      hardware/interfaces/audio/5.0/config/audio_policy_configuration.xsd \
      --xinclude out/target/product/*/vendor/etc/audio_policy_configuration.xml

Change-Id: I0ee9114f750186b479a2ebee5dfcd946d9ef3196
2019-11-15 10:39:58 -08:00
Mikhail Naganov
60bd3ecc5d audio: Run VTS tests for streams of non-primary modules for HAL V6
Implement parsing of AudioPolicyManager config for finding
out supported format configurations of streams. This only applies
when running tests for HAL V6. Previously format configurations
mandated by CDD were used for testing, this does not work well
for non-primary modules.

Fix the following issues found while running the tests
for "r_submix" and "msd" modules:

- IStream::getSupportedFormats must return a status
  to indicate that this capability is not supported by HAL;

- it is allowed for IStream::setDevices to return
  NOT_SUPPORTED status.

Other changes:

- Factor out helper functions for generating format
  configurations;

- Fix generation of the channel mask component in the names
  of tests that use AudioConfig, add sampling rate to test
  names.

Squashed with the following commit to avoid breaking compilation:

audio vts: Remove explicit dependency on the new types

Avoid using the new ChannelMaskSet and SampleRateSet types
directly to simplify upstreaming.

Bug: 141989952
Bug: 141847510
Test: atest VtsHalAudioV5_0TargetTest
      atest VtsHalAudioV6_0TargetTest
            also, run modified V5_0 test using generators for V6_0

Change-Id: If0d330881901908e546baab89f63d3333003e355
Merged-In: If0d330881901908e546baab89f63d3333003e355
2019-11-11 10:29:06 -08:00
TreeHugger Robot
d76fafbae8 Merge "audio vts: Remove explicit dependency on the new types" 2019-11-11 18:00:34 +00:00
Mikhail Naganov
4e9c4061ca audio vts: Remove explicit dependency on the new types
Avoid using the new ChannelMaskSet and SampleRateSet types
directly to simplify upstreaming.

Bug: 141989952
Bug: 141847510
Test: atest VtsHalAudioV5_0TargetTest
Change-Id: I4477334be0375a95d79324a3ab38b03eb3f9998f
2019-11-08 15:17:00 -08:00
Eric Laurent
ac3a62a66a Merge "audio: Add CALL_SCREEN audio mode." 2019-11-08 22:39:10 +00:00
Mikhail Naganov
686af1cc43 audio: Run VTS tests for non-primary modules for HAL V6
Implement parsing of AudioPolicyManager config for finding
out declared modules (IDevice instances) with permanently
attached devices and run tests for them. This only applies
when running tests for HAL V6.

Change class hierarchy to use IDevice interface as much as
possible, only use IPrimaryDevice for its specific methods.

Fix the following issues found while running the tests
for "r_submix" and "msd" modules:

- IDevice::getMicrophones can return NOT_SUPPORTED status;

- IDevice::get/setParameters can return NOT_SUPPORTED.

Other changes:

- Factor out common code for getting devices via DeviceManager;

- Factor out AudioPolicyConfigTest.HasPrimaryModule test from
  SetUp code;

- Add device parameter generator for primary device only.

Bug: 141989952
Bug: 141847510
Test: atest VtsHalAudioV5_0TargetTest
      atest VtsHalAudioV6_0TargetTest
      also, run modified V5_0 test using generators for V6_0

Change-Id: I51cec21670120d8dce75609954a18b886cc0c18d
Merged-In: I51cec21670120d8dce75609954a18b886cc0c18d
2019-11-08 13:49:47 -08:00
Mikhail Naganov
ccd484bb80 audio: Parametrize core VTS tests
Parametrize tests to accept IDevicesFactory instance name
and IDevice instance name. For audio HAL versions 2..5
the factory instance name is taken from the VTS environment,
and the device is always "primary". For the next versions
the factories are discovered by the test, and the devices
are taken from the audio policy configuration
(to be implemented, see added FIXME comments).

Split the Environment class into two versions: for HAL 2..5
and for next versions. They use different base class.

Move device factories and device caching into dedicated
classes DevicesFactoryManager and DeviceManager. They deal
with instance caching and proper release of server resources.

Bug: 141847510
Bug: 141989952
Test: atest VtsHalAudioV5_0TargetTest
      atest VtsHalAudioV6_0TargetTest
Change-Id: I92c44e0c3f900164dded7e9c4bfc642ca2c335db
Merged-In: I92c44e0c3f900164dded7e9c4bfc642ca2c335db
2019-11-08 13:45:45 -08:00
Mikhail Naganov
315ce41a5d audio: Parametrize effect VTS tests for V6.0
Parametrize tests to accept IEffectsFactory instance name.
Discover the instances in the test.

Bug: 141847510
Bug: 141989952
Test: atest VtsHalAudioEffectV5_0TargetTest
      atest VtsHalAudioEffectV6_0TargetTest

Change-Id: Iaf19109fc77a93b211cc3da85c21c0584d4f2b88
Merged-In: Iaf19109fc77a93b211cc3da85c21c0584d4f2b88
2019-11-08 13:45:10 -08:00
TreeHugger Robot
87a728e704 Merge "audio: Run VTS tests for streams of non-primary modules for HAL V6" 2019-11-08 17:25:59 +00:00
TreeHugger Robot
8887b4f5c3 Merge "Update README" 2019-11-08 11:14:49 +00:00
Kevin Rocard
2a515e1c27 Introduce Audio V6
Generate with ./newHal.sh 5.0

+ some typo fix in the .hal
+ some clang-tidy run

This new HAL is an exact copy of the V5.
It will be modified in following patches while R is developed.

Test: push V6 to device and check audio works fine
Bug: 134940862
Change-Id: Ic25d30175032e76e0d3208fb876451de9ae6b7b4
Merged-In: Ic25d30175032e76e0d3208fb876451de9ae6b7b4
Signed-off-by: Kevin Rocard <krocard@google.com>
2019-11-07 14:19:12 -08:00
Kevin Rocard
55a451825c Change some formatting for better script parsing
Test: Compile
Bug: 134940862
Change-Id: Ibbafdcaa6e0bfa8fd2b80f4a6c9ac6ac95058f93
Merged-In: Ibbafdcaa6e0bfa8fd2b80f4a6c9ac6ac95058f93
Signed-off-by: Kevin Rocard <krocard@google.com>
2019-11-07 14:18:45 -08:00
Kevin Rocard
82d3a0b3c7 Script to generate new audio HAL version
Mostly automated script to generate a new Audio HAL major version.

Test: push V6 to device and check audio works fine
Bug: 134940862
Change-Id: I0da621e747eb48e75901a2a10cfc224f33864c3b
Merged-In: I0da621e747eb48e75901a2a10cfc224f33864c3b
Signed-off-by: Kevin Rocard <krocard@google.com>
2019-11-07 14:12:52 -08:00
Kevin Rocard
ad17f58e50 Convert audio HAL service mk to bp and rename the service
The service supports multiple versions and its name should not be
version dependant.

For backward compatibility, keep the target name
android.hardware.audio@2.0-service (32bit only), existing
PRODUCT_PACKAGES do not have to be updated.
New products should depend on android.hardware.audio.service:32.

Additionally migrate to Android.bp, dropping support for
AUDIOSERVER_MULTILIB. Previously the HAL service architecture (32 vs 64)
would be the same as the audio server. This in not wanted as all android
audio HAL are 32 bits.

Bug: 121208203
Test: # Compare following commands before and after patch:
      find $ANDROID_PRODUCT_OUT/vendor -name 'android.hardware.audio*'|xargs file
            adb shell reboot # check device boots to UI and
      # check the HAL restarts after the audioserver is killed
      adb shell ps |grep audio; adb shell killall audioserver; adb shell ps
Change-Id: I25f41735175a6687a051ca1e5a7fee670eb8115e
Merged-In: I25f41735175a6687a051ca1e5a7fee670eb8115e
Signed-off-by: Kevin Rocard <krocard@google.com>
2019-11-07 14:12:30 -08:00
Kevin Rocard
350ce29826 Audio service: Refactor register interface
Remove all per interface version boilerplate.
Adding a new version now requires only including the file
and adding the version name to the list.

Bug: 134940862
Test: adb shell lshal
Change-Id: Ib6b99d7a2c2079d914970fbe804aaf3c78c143ce
Merged-In: Ib6b99d7a2c2079d914970fbe804aaf3c78c143ce
Signed-off-by: Kevin Rocard <krocard@google.com>
2019-11-07 14:11:45 -08:00
Kevin Rocard
c581b41569 Version dependant target should included version in name
As a V6.0 version needs to be created.

Note that this target is not used anywhere explicitly.
There seem to be some magic to "xsd_config", probably has to do with the
package_name.

Bug: 134940862
Test: build
Change-Id: Id6935c5458294981cb778f3647ec01ee34a34e2f
Merged-In: Id6935c5458294981cb778f3647ec01ee34a34e2f
Signed-off-by: Kevin Rocard <krocard@google.com>
2019-11-07 14:11:07 -08:00
Mikhail Naganov
5b8fc1298a audio: Run VTS tests for streams of non-primary modules for HAL V6
Implement parsing of AudioPolicyManager config for finding
out supported format configurations of streams. This only applies
when running tests for HAL V6. Previously format configurations
mandated by CDD were used for testing, this does not work well
for non-primary modules.

Fix the following issues found while running the tests
for "r_submix" and "msd" modules:

- IStream::getSupportedFormats must return a status
  to indicate that this capability is not supported by HAL;

- it is allowed for IStream::setDevices to return
  NOT_SUPPORTED status.

Other changes:

- Factor out helper functions for generating format
  configurations;

- Fix generation of the channel mask component in the names
  of tests that use AudioConfig, add sampling rate to test
  names.

Bug: 141989952
Bug: 141847510
Test: atest VtsHalAudioV5_0TargetTest
      atest VtsHalAudioV6_0TargetTest
            also, run modified V5_0 test using generators for V6_0

Change-Id: If0d330881901908e546baab89f63d3333003e355
2019-11-07 12:53:43 -08:00
Eric Laurent
040bfea972 audio: Add CALL_SCREEN audio mode.
Add new audio mode AudioMode.CALL_SCREEN allowing call screening
to take place while other audio use cases are still active.

Also add audio policy configuration attribute indicating if the
vendor implementation supports this audio mode.

Bug: 140384450
Test: make
Change-Id: I2714a9949f2c45b1f8e5a5c40368a6152bd91572
2019-11-06 12:39:46 -08:00
Steven Moreland
856e1d3874 Merge "update-makefiles.sh: for partial Java pkgs" am: cbd3f444c7 am: 7eebf74e97
am: b2b3af540f

Change-Id: Ib6374f3dc3a00ebcb0fac50bfcd5eda479692565
2019-11-05 11:13:18 -08:00
Steven Moreland
077b73b7ab update-makefiles.sh: for partial Java pkgs
Packages which contain some non-supported Java types can still have
their Java-supported types used in Java.

Bug: 143566068
Test: mma
Change-Id: I2afc5cc8d0a1bd981108ee2b87d6033fd48bdb37
2019-11-04 12:50:41 -08:00
Mikhail Naganov
0479020425 audio: Run VTS tests for non-primary modules for HAL V6
Implement parsing of AudioPolicyManager config for finding
out declared modules (IDevice instances) with permanently
attached devices and run tests for them. This only applies
when running tests for HAL V6.

Change class hierarchy to use IDevice interface as much as
possible, only use IPrimaryDevice for its specific methods.

Fix the following issues found while running the tests
for "r_submix" and "msd" modules:

- IDevice::getMicrophones can return NOT_SUPPORTED status;

- IDevice::get/setParameters can return NOT_SUPPORTED.

Other changes:

- Factor out common code for getting devices via DeviceManager;

- Factor out AudioPolicyConfigTest.HasPrimaryModule test from
  SetUp code;

- Add device parameter generator for primary device only.

Bug: 141989952
Bug: 141847510
Test: atest VtsHalAudioV5_0TargetTest
      atest VtsHalAudioV6_0TargetTest
      also, run modified V5_0 test using generators for V6_0

Change-Id: I51cec21670120d8dce75609954a18b886cc0c18d
2019-11-01 11:29:40 -07:00
Mikhail Naganov
0553d0615c audio: Extract utility functions
Move common code out of the test source.

Test: atest VtsHalAudioV5_0TargetTest
Merged-In: I86cf399029a0a5f3f08c7e82713ae62df03dee3f
Change-Id: I86cf399029a0a5f3f08c7e82713ae62df03dee3f
2019-10-25 15:36:24 -07:00
Mikhail Naganov
8613f809fa audio: Parametrize core VTS tests
Parametrize tests to accept IDevicesFactory instance name
and IDevice instance name. For audio HAL versions 2..5
the factory instance name is taken from the VTS environment,
and the device is always "primary". For the next versions
the factories are discovered by the test, and the devices
are taken from the audio policy configuration
(to be implemented, see added FIXME comments).

Split the Environment class into two versions: for HAL 2..5
and for next versions. They use different base class.

Move device factories and device caching into dedicated
classes DevicesFactoryManager and DeviceManager. They deal
with instance caching and proper release of server resources.

Bug: 141847510
Bug: 141989952
Test: atest VtsHalAudioV5_0TargetTest
      atest VtsHalAudioV6_0TargetTest
Change-Id: I92c44e0c3f900164dded7e9c4bfc642ca2c335db
2019-10-24 16:56:33 -07:00
Mikhail Naganov
bc1d5aa08e audio: Parametrize effect VTS tests for V6.0
Parametrize tests to accept IEffectsFactory instance name.
Discover the instances in the test.

Bug: 141847510
Bug: 141989952
Test: atest VtsHalAudioEffectV5_0TargetTest
      atest VtsHalAudioEffectV6_0TargetTest

Change-Id: Iaf19109fc77a93b211cc3da85c21c0584d4f2b88
2019-10-24 09:20:24 -07:00
Mikhail Naganov
d306cccd0b audio: Extract utility functions
Move common code out of the test source.

Test: atest VtsHalAudioV5_0TargetTest
Change-Id: I86cf399029a0a5f3f08c7e82713ae62df03dee3f
2019-10-24 09:09:09 -07:00
Mikhail Naganov
6469b85899 Merge "Audio VTS: Wait after stream close" am: 1f004177c6 am: 98d63d2b1d am: 91b0183ac1
am: f6d64fbeef

Change-Id: I42154ce2c57075c9e817a35a6596865b26f3c996
2019-10-22 17:26:14 -07:00