Commit Graph

247 Commits

Author SHA1 Message Date
Mikhail Naganov
10fc96386e audio: Implement more accurate timing for the stub stream
Stub output stream is like a /dev/null audio device, however
for synchronous transfers it must block for the duration of
the audio chunk being transferred. Implement more accurate
accounting for the blocking time using the same approach as
employed by the remote submix stream implementation.

Bug: 356719263
Test: atest CtsNativeMediaAAudioTestCases
      on aosp_cf_x86_64_auto target
Change-Id: I137aed397246bcf2b5ef6789aa4d2d27ead64467
2024-08-21 11:34:05 -07:00
Mikhail Naganov
0413d077f7 audio: Fix stream cleanup sequence
Move the cleanup of the stream worker thread from '~StreamCommonImpl'
up to concrete stream implementations. This is because when
the worker thread is stopping, it calls 'DriverInterface::shutdown'
method of the stream. At the time when '~StreamCommonImpl' is
running, the concrete stream class has already been destroyed.

The cleanup actually only happens in the case when the client
did not close the stream properly via 'IStreamCommon.close', or
when the stream creation has failed in the middle.

Bug: 355804294
Test: atest VtsHalAudioCoreTargetTest
Change-Id: Ie86f682af202976ed48d24338b2dffcfd20d9a76
2024-08-15 14:18:51 -07:00
Shraddha Basantwani
0a981d36cf Audio Effect : Add base implementation of commandImpl method
Removing code repeatation and moving this method to base class.
Effect implementations can override enable, disable and reset methods.

Bug: 305866207
Test: atest --test-mapping hardware/interfaces/audio/aidl/vts:presubmit
Change-Id: Iceb7ad51185d6f6bd2b6d70a5a1dd51e7bd37276
2024-07-30 05:23:02 +00:00
Mikhail Naganov
657284d4ef audio: Use 'join' instead of 'stop' for stream workers
Calling 'stop' can cause the worker thread to terminate
before it handles the 'halReservedExit' command. This should
be avoided because a proper exit sequence may do cleanups.
Since all stream workers must handle the 'halReservedExit'
command, use of 'stop' should not be needed (if the thread
code gets stuck on a call to drivers, calling 'stop' will
not interrupt this), thus it is being replaced by 'join'.

Bug: 344482249
Test: atest CtsMediaAudioTestCases
Test: atest VtsHalAudioCoreTargetTest
Change-Id: If13f7239423657b80091239ff67e7fe350957e2e
Merged-In: If13f7239423657b80091239ff67e7fe350957e2e
2024-07-24 08:53:19 -07:00
François Gaffie
ed095e62ab Restore Default Device Effects support with AIDL AudioHAL
Bug: 329395147
Test: atest CtsMediaAudioTestCases
Test: atest --test-mapping hardware/interfaces/audio/aidl/vts:presubmit

Change-Id: I0f4f680b4db4eaa69d6c6e9e7b897631ed94928b
Signed-off-by: François Gaffie <francois.gaffie@renault.com>
2024-07-18 23:16:43 +00:00
Treehugger Robot
f28b8e809c Merge "audio: fix mmap output" into main 2024-06-27 01:07:49 +00:00
Kuowei Li
53a8d4d62e audio: fix mmap output
1. add createMmapBuffer() for vendor to override and create mmap fd.
2. add refineMmapPosition() for vendor to override and update
latency in mmap case.
3. fix testcases position check in mmap case.

Bug: 274456992
Bug: 345591089
Test: atest VtsHalAudioCoreTargetTest
Change-Id: Ie63fdd47c0ddc563d84699dfdf6d4e9b72b5af43
2024-06-26 16:51:31 -07:00
Xin Li
64e598ce2b Merge Android 24Q2 Release (ab/11526283) to aosp-main-future
Bug: 337098550
Merged-In: I53a278f1317f5307441103dc42dc5be6f20d7075
Change-Id: I3a53ebf7339cdb886d3c1b733b8eee1847f8832a
2024-05-24 08:28:04 -07:00
Shunkai Yao
fbb29ced9f Improve effect AIDL HAL logging
Bug: 333407024
Test: atest --test-mapping hardware/interfaces/audio/aidl/vts:presubmit
Change-Id: Ie983c4360488a6047bd284c20bf9899d38b4273e
2024-05-09 22:34:10 +00:00
Shunkai Yao
ef683a9c60 Use customized event flag for data FMQ not_empty to avoid conflict
also update VTS data path test skipping for offload effects

Bug: 335547630
Test: atest --test-mapping hardware/interfaces/audio/aidl/vts:presubmit
Change-Id: Ie92f04091658e210dccb7a2d60ebbab14c49fb58
Merged-In: Ie92f04091658e210dccb7a2d60ebbab14c49fb58
2024-05-09 01:07:34 +00:00
Mikhail Naganov
efb45bc792 audio: Allow to inherit Binder RT priority in AIDL
This option is on by default for HIDL interfaces, however
in AIDL it needs to be enabled explicitly.

Bug: 331469541
Test: m
(cherry picked from https://googleplex-android-review.googlesource.com/q/commit:d975a9e6ec0b6f0eeac99673b9b06e11146874ba)
Merged-In: I971185a46da4222160fb04b8b77f805ef0396562
Change-Id: I971185a46da4222160fb04b8b77f805ef0396562
2024-03-27 16:20:33 +00:00
Mikhail Naganov
a41ff5134d audio: Implement blocking in remote submix when there is no sink
The HIDL implementation blocked for the audio buffer duration
when the output side of the remote submix pipe does not have
the sink connected. This behavior was accidentally removed
when fixing b/327220024.

Also, limit the amount of the debug messages displayed when
the sink is shutdown to avoid spamming the syslog.

Bug: 328347445
Test: repro steps from the bug
Test: atest VtsHalAudioCoreTargetTest
Test: atest --test-filter=".*AudioPlaybackCaptureTest.*" CtsMediaAudioTestCases
(cherry picked from https://googleplex-android-review.googlesource.com/q/commit:6507376fb940198e8c39ad6d5345d132b1dd7219)
Merged-In: Ia66cb7b4567d42a41bf4715b7d725d36510ac50c
Change-Id: Ia66cb7b4567d42a41bf4715b7d725d36510ac50c
2024-03-25 16:04:27 +00:00
Mikhail Naganov
222d034461 Merge "audio: Adjust stream buffer size calculation" into main 2024-03-22 03:36:44 +00:00
Mikhail Naganov
cbb2976223 audio: Adjust stream buffer size calculation
When calculating buffer size, use powers of two
for "large" buffers only on SRs >= 44100 Hz.
With lower SRs, sizes rounded up to a multiple
of 2 give too high latency.

Bug: 328432688
Test: repro steps from b/328432688#comment3
Test: atest VtsHalAudioCoreTargetTest
Change-Id: I605ef8507fef030d349e85c33ed0229c9566ddb5
2024-03-21 16:40:30 -07:00
Shunkai Yao
bb35effe0d Audio effect aidl log reduce and level adjust
Bug: 329334917
Test: atest AudioEffectTest
Test: atest CtsMediaAudioTestCases
Test: atest CtsEffectTestCases
Test: audio use cases on pixel AIDL audio hal
Change-Id: I49876924b230f2ac834d3b0e494a03b814c4bb6e
Merged-In: I49876924b230f2ac834d3b0e494a03b814c4bb6e
2024-03-16 00:00:12 +00:00
Xin Li
c4b2f5b564 Merge "Merge Android 14 QPR2 to AOSP main" into main 2024-03-07 06:41:02 +00:00
Mikhail Naganov
55e0afa49a audio: Fix glitching of remote submix
Align behavior with the HIDL implementation. This helps
to prevent glitches in the scenarios that use remote
submix for sending audio externally: Auto and Cast.

Bug: 322247032
Bug: 327220024
Test: Repro steps in b/327220024#comment14
Change-Id: If2e4ebd7145375a268ee5f0e4ab656bb3748b2fe
Merged-In: If2e4ebd7145375a268ee5f0e4ab656bb3748b2fe
2024-03-06 10:09:16 -08:00
Mikhail Naganov
4120b99ab6 audio: Align HAL buffer size logic with the framework
When the framework uses mixers, it rounds up the buffer
size to the frame count which is a multiple of 16.
In the HIDL implementation, this adjustment was done after
the framework thread was already created, and FMQ was
created on the first transfer, using adjusted size. In
the AIDL implementation, the FMQ is created together with
the stream, using the size suggested by the HAL.

Bug: 321233946
Test: verify audio playback over S/W A2DP
(cherry picked from https://googleplex-android-review.googlesource.com/q/commit:f2f9ae08c2ee4e396bbe4b8c7e955bad725ce545)
Merged-In: I35a5479bfc87a290aff09d51415381948857a146
Change-Id: I35a5479bfc87a290aff09d51415381948857a146
2024-03-06 10:09:00 -08:00
Shunkai Yao
5a5a8cbba4 Merge "Add backward compatibility in effect hal default implementation" into main am: 3ed9b6bbce am: 35f4bb6089
Original change: https://android-review.googlesource.com/c/platform/hardware/interfaces/+/2951489

Change-Id: I7802983ea200236e4df30268538d1bf808868ab2
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2024-02-06 19:41:39 +00:00
Shunkai Yao
35f4bb6089 Merge "Add backward compatibility in effect hal default implementation" into main am: 3ed9b6bbce
Original change: https://android-review.googlesource.com/c/platform/hardware/interfaces/+/2951489

Change-Id: If5d00b8810e95e0a870fe455951572d687da33cd
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2024-02-06 18:58:18 +00:00
Shunkai Yao
7e2c3719ff Add backward compatibility in effect hal default implementation
Skipping the reopen sequence for unsupported version
Add member initialize for EffectContext

Bug: 322780092
Test: latest libAudioHal with V1 effect HAL
Test: atest VtsHalAudioEffectTargetTest

Change-Id: I597194e5ebf25566d5adda533e151da2e99781f4
2024-02-05 22:58:54 +00:00
Xin Li
763c473c3d Merge Android 24Q1 Release (ab/11220357)
Bug: 319669529
Merged-In: I976f80006aeb88bde2ae34ca4f9be72cea727d9e
Change-Id: Id94b25af52bd2e2847b6858697ab21cc6ce27aa3
2024-01-30 10:36:50 -08:00
Treehugger Robot
2c1e429d34 Merge "audio: Reduce the interval between BT proxy registration retries" into main am: 320ef27af2 am: 121dcebc4e
Original change: https://android-review.googlesource.com/c/platform/hardware/interfaces/+/2933574

Change-Id: Iaa7c2b48609fe9a65b3fd35fa6a4f12f382886bc
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2024-01-30 01:12:46 +00:00
Treehugger Robot
320ef27af2 Merge "audio: Reduce the interval between BT proxy registration retries" into main 2024-01-29 23:00:57 +00:00
Mikhail Naganov
19de94764d audio: Reduce the interval between BT proxy registration retries
A follow-up for aosp/2929441. The interval between retries
of connecting to BT proxy must be reduced significantly.
Otherwise, in situations when the BT is not connected
(that happens during tests), the resulting long delay causes
failures at the frameowork level due to resulting long
timeout.

Bug: 322820830
Test: atest audiosystem_tests --iterations 100
Change-Id: Idd84cb22b28d109151f98bb5883dca18a9ae928d
2024-01-29 13:40:27 -08:00
Shunkai Yao
56fe00d748 Merge "Update work buffer size with input/output frame size change" into main am: db9b8f08da am: 4ce527e8a9
Original change: https://android-review.googlesource.com/c/platform/hardware/interfaces/+/2925168

Change-Id: I9352ddeadbf19a7cb52bbbaad47c4de1b3cbc091
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2024-01-29 20:07:06 +00:00
Shunkai Yao
db9b8f08da Merge "Update work buffer size with input/output frame size change" into main 2024-01-29 18:51:47 +00:00
Mikhail Naganov
9db9570eec Merge "audio: Add retries for BT proxy port registration" into main am: 3552515d70 am: 2a3bc07b4e
Original change: https://android-review.googlesource.com/c/platform/hardware/interfaces/+/2929441

Change-Id: I616fce4c978a0effecbcee05adadffde05f8d6f2
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2024-01-29 18:37:33 +00:00
Mikhail Naganov
a5c0437327 audio: Add retries for BT proxy port registration
When ModuleBluetooth::createProxy is invoked on BT device
connection, the BT stack may not be fully ready yet,
and port registration can fail. This is an intermittent
state and registration should succeed after retrying.

Bug: 320838889
Test: atest pts-bot:A2DP/SRC/REL/BV-02-I
Change-Id: I0c7cf7c1c6a8ee03ef55b004f89139e3b56ee9cd
2024-01-26 16:19:45 -08:00
Shunkai Yao
08c05dd017 Update work buffer size with input/output frame size change
call process with the minimal of input/output fmq data capacity

Bug: 321543210
Test: atest VtsHalAudioEffectTargetTest
Test: flash to pixel phone and test audio
Change-Id: I0c5087f541dc8526ac733a0c35f0d06f878d78a1
2024-01-26 18:59:13 +00:00
Deyao Ren
e1e6ead010 Merge "Create vendor apex for cuttlefish audio and audio effect" into main am: fe55cba9bb am: 66f0387a35
Original change: https://android-review.googlesource.com/c/platform/hardware/interfaces/+/2863478

Change-Id: Ib31fbc62d5f600d37f5a46fb46af83a1c5efb9e9
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2024-01-17 22:06:18 +00:00
Deyao Ren
0874626d77 Create vendor apex for cuttlefish audio and audio effect
Test: launch cuttlefish, CtsMediaAudioTestCases
Bug: 295803971
Change-Id: I056c3e81662f90207702b47664c23b7ddd1db378
2024-01-17 07:12:07 +00:00
Treehugger Robot
dabe4a7902 Merge "audio: Fix handling of a thread exit command with a bad cookie" into main am: 759fb98667 am: 0ad71fd5fc am: 0e1a0a9328
Original change: https://android-review.googlesource.com/c/platform/hardware/interfaces/+/2908743

Change-Id: I73571a0d39b488d5aedd8162a4ffaa2cb673aef6
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2024-01-13 03:30:37 +00:00
Treehugger Robot
759fb98667 Merge "audio: Fix handling of a thread exit command with a bad cookie" into main 2024-01-13 00:40:04 +00:00
Mikhail Naganov
1850779bc4 audio: Fix handling of a thread exit command with a bad cookie
In case when the command was sent by the HAL itself (from another
thread), the worker thread must not post a reply. The only case
when a reply needs to be posted is in the case when the command
was sent from a VTS test. This case is identified by the fact that
the cookie has value '0'.

Bug: 300181540
Test: atest VtsHalAudioCoreTargetTest
Change-Id: Ifeb0722b5cf7346a694c5a938f6b324f5fa825f1
2024-01-12 13:59:24 -08:00
Shunkai Yao
65c7c7051d Effect AIDL: implement IEffect.reopen
- add IEffect.reopen implementation
- now data MQs can update at runtime, sync
  EffectContext access
- add clang thread annotation

Bug: 302036943
Test: atest VtsHalAudioEffectTargetTest
Test: build and test audio effect on Pixel
Change-Id: I3e9fdc2d5eb50b8c1377e0da75573f0eba7ea3f1
Merged-In: I3e9fdc2d5eb50b8c1377e0da75573f0eba7ea3f1
2024-01-12 17:23:28 +00:00
Shunkai Yao
5b15e005a9 Effect AIDL: add IEffect.reopen to update the effect instances data FMQ
The effect instance may choose to reallocate the input data message
queue under specific conditions. For example, when the input format
changes, requiring an update to the data message queue allocated during
the open time.
In such cases, the effect instance can destroy the existing data message
queue, when the audio framework see a valid status MQ and invalid data MQ,
it call reopen to get the new data message queue.

Bug: 302036943
Test: m android.hardware.audio.effect-update-api, m
Change-Id: Ia245b154176f64bc3cc6e6049bca4f9c68ad482d
Merged-In: Ia245b154176f64bc3cc6e6049bca4f9c68ad482d
2024-01-12 17:23:14 +00:00
Shunkai Yao
0061ab1ae7 Merge "Effect AIDL: implement IEffect.reopen" into main 2024-01-12 16:26:19 +00:00
Shunkai Yao
81bfcda77a Effect AIDL: implement IEffect.reopen
- add IEffect.reopen implementation
- now data MQs can update at runtime, sync
  EffectContext access
- add clang thread annotation

Bug: 302036943
Test: atest VtsHalAudioEffectTargetTest
Test: build and test audio effect on Pixel
Change-Id: I3e9fdc2d5eb50b8c1377e0da75573f0eba7ea3f1
2024-01-10 23:05:43 +00:00
Mikhail Naganov
3daa193aa1 Merge "audio: Improve logging in remote submix module" into main am: 198e8f747c am: 13993da38a am: b3d65cec6c
Original change: https://android-review.googlesource.com/c/platform/hardware/interfaces/+/2901102

Change-Id: Iff8c545935a838b9ca593f2c0344042b115b2d90
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2024-01-10 21:12:38 +00:00
Mikhail Naganov
198e8f747c Merge "audio: Improve logging in remote submix module" into main 2024-01-10 17:53:05 +00:00
Treehugger Robot
ac6b2febe4 Merge "Audio Effect : Add checks to validate the channel count" into main am: a10d3c536f am: 7f56477a4e am: cb2e389605
Original change: https://android-review.googlesource.com/c/platform/hardware/interfaces/+/2902252

Change-Id: I18ec37e502764ea63b7a04fb65f8af69f0b1ac44
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2024-01-10 02:50:59 +00:00
Treehugger Robot
a10d3c536f Merge "Audio Effect : Add checks to validate the channel count" into main 2024-01-10 01:46:59 +00:00
Mikhail Naganov
9eb3314a24 audio: Improve logging in remote submix module
Implement IModule::dump to display the current state in
the audioflinger dump.

Throttle repetitive logging when there is nothing to read.

Remove stale comment for already fixed b/307586684.

Bug: 307586684
Test: adb shell dumpsys media.audio_flinger
Change-Id: I1f1f6e1658d035d46af3a933a825b20a78c7f297
2024-01-09 14:13:15 -08:00
Vlad Popa
e32ffaec3b Merge "CSD: Adjust code to new MelCallback interface" into main 2024-01-09 17:17:32 +00:00
Shraddha Basantwani
a3d4847794 Audio Effect : Add checks to validate the channel count
Bug: 302036943
Test: atest audioeffect_analysis
Change-Id: Ic64394e646fa23e02e499c2f01ef3bd4490450d2
2024-01-09 10:37:54 +00:00
Shunkai Yao
4ee5ce9b0b Merge "Effect AIDL: add IEffect.reopen to update the effect instances data FMQ" into main 2024-01-09 03:50:59 +00:00
Shunkai Yao
e400c835a2 Effect AIDL: add IEffect.reopen to update the effect instances data FMQ
The effect instance may choose to reallocate the input data message
queue under specific conditions. For example, when the input format
changes, requiring an update to the data message queue allocated during
the open time.
In such cases, the effect instance can destroy the existing data message
queue, when the audio framework see a valid status MQ and invalid data MQ,
it call reopen to get the new data message queue.

Bug: 302036943
Test: m android.hardware.audio.effect-update-api, m
Change-Id: Ia245b154176f64bc3cc6e6049bca4f9c68ad482d
2024-01-05 22:51:15 +00:00
Vlad Popa
3ee7690028 CSD: Adjust code to new MelCallback interface
Added the attenuated bool to the callback interface. Not used

Test: trivial
Bug: 315218453
Change-Id: Ibd5e90b0537bfce7d01ee7a3a0e55bc53850a216
2024-01-04 01:53:41 -08:00
Mikhail Naganov
5f8f8cc16b Merge "audio: Fix the type used for timekeeping" into main am: e3ed739865 am: da3b33a4f4 am: 6178a82724
Original change: https://android-review.googlesource.com/c/platform/hardware/interfaces/+/2894924

Change-Id: I6dead6af17b8364d52548c5d73e0984e1341d18e
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2024-01-04 02:38:49 +00:00