Commit Graph

68 Commits

Author SHA1 Message Date
Steven Moreland
3556da3b4a Add include/hardware/*.h symlinks.
These are required to build. Separate CL to preserve blame history.

From running 'update-includes.sh' script here.

Bug: 37280010
Test: boot/build (sanity)
Change-Id: Id9c2dc37f674b27b947a9f823bd38a550d64d31b
2023-06-02 23:01:56 +00:00
Steven Moreland
d783cabd4d Split up headers.
This splits headers into three locations:
include - for backwards compatibility, the global include
include_all - for things system/vendor both use
include_vendor - for things that only vendors use

The goal is to gradually have system things stop referencing
(at least most) of these headers.

Bug: 37280010
Test: build (CL on top adds back in symlinks)

Change-Id: Ibf194276b7faa857e1e7605d7719f4e7d873ecba
2023-06-02 23:01:54 +00:00
Mikhail Naganov
5c789ae9e7 Merge "Add audio_hw_device.set_device_connected_state_v7 method" 2022-02-01 20:52:49 +00:00
Mikhail Naganov
521310bc26 Add audio_hw_device.set_device_connected_state_v7 method
Add an interface method for providing extra information
about the connected device.

Bug: 211601178
Test: m
Change-Id: I0868cdfdbe46d1399071967653372b55713843e4
2022-01-31 22:52:21 +00:00
Eric Laurent
e689139808 Audio HAL: Add latency mode APIs
Add APis for controlling the latency mode on an output stream.
Latency mode control is optional but mandated if spatial audio with
head tracking is supported over Bluetooth classic audio link.

Bug: 187446271
Test: make
Change-Id: I30a7f34a265ddac69b283c803b5729770426ebf1
2022-01-27 15:59:06 +01:00
Kuowei Li
a205b6afac audio: add implementation for TV related API
1. AudioDescriptionMixLevel getter/setter.
2. DualMonoMode getter/setter.
3. PlaybackRate getter/setter.

Test: TIS player with instrumented HAL
Test: atest AudioTrackTest#testTunerConfiguration
Test: atest AudioTrackTest#testDualMonoMode
Test: atest AudioTrackTest#testAudioDescriptionMixLevel
Test: atest AudioManagerTest#testGetAdditionalOutputDeviceDelay
Bug: 173482792
Change-Id: Id89dd151797723dbb58a44db48ff05bff3f20e04
2021-01-14 13:01:57 -08:00
Eric Laurent
2e8b8a906d audio HAL: new track metadata version
Add channel mask and audio attributes tags to playback
and record track metadata sent to audio HAL.
Add new HAL methods and structs for use with HALs version 3.2
and above to provide backwards compatibility with old HALs.

Bug: 168751366
Test: make
Change-Id: I30cc3d35f97bb1bc5f80983f6ae85f3e820bf414
2020-12-16 16:09:19 +01:00
jiabin
d651051c81 Add a new API for getting audio_port_v7.
Add a function to audio HAL interface for retrieving audio_port_v7
structure directly. The legacy audio_port structure can always be
converted into audio_port_v7, however the latter may contain more
information.

This function must be supported from legacy HAL version 3.2.

Bug: 160352965
Test: make
Change-Id: I60f2615791c19aed37fdb91328e8bc420bc3419d
2020-10-30 14:09:57 -07:00
jiabin
3b4b33f479 Add a callback for codec format changed.
Bug: 133526565
Test: Manually
Change-Id: Ie7d17c7d9b49394601b4788aa44a8407ebb6f72e
2020-02-24 20:49:23 +00:00
Eric Laurent
26f0adfef1 Audio HAL: Add API to attach an effect to a device
Add a function to audio HAL interface allowing the attachement of an
audio effect to an audio device.
This is used when an audio effect is implemented below the HAL (e.g by an audio DSP)
and is attached/enabled when a particular sink(e.g speaker) or source(e.g mic) device
is selected.
This function must be supported from legacy HAL version 3.1.

Bug: 136294538
Test: make
Change-Id: Id63c83403fef580579c52d92758a552d67c3faec
2019-12-11 13:30:12 -08:00
Paul McLean
fa3ae3ed74 Adding Audio HAL V5: Direction API
Bug: 119137468
Test: Tesbed App

Change-Id: I0dfc773344654f61f2ad9f5e8ed22a96e6b26ad5
2018-12-19 12:00:22 -07:00
Kevin Rocard
0360e255f1 Audio V4: Add metadata update to legacy API
The metadata API was not present in the legacy HAL API
which lots of developer still use.

Test: Check the method is correctly called on each track change
Bug: 38184704
Bug: 69623109
Change-Id: I46a9db5a67baef52844ed85296a529402e00f4cb
Signed-off-by: Kevin Rocard <krocard@google.com>
2018-03-30 11:29:11 -07:00
rago
909a8f988b Support query microphones information.
Get list of all/currently active microphones from input stream.
Part of the device enumeration feature.

Bug: 64038649
Test: Manual Testing and Cts integration test
Change-Id: Ibe231c430186c18ce43497c351b7d3e3b2425811
2018-03-21 14:16:52 -07:00
Kevin Rocard
d55a49a01e Audio V4: Add missing parameter keys
Those keys were used as literal strings
instead of having a declaration.

Bug: 38184704
Test: compile
Change-Id: I45709a4a9120e98014d2a4f763fc17f9ef1267ac
Merged-In: I45709a4a9120e98014d2a4f763fc17f9ef1267ac
Cherry-picked from master
Signed-off-by: Kevin Rocard <krocard@google.com>
2018-03-06 11:30:53 -08:00
Kevin Rocard
c6ec9486d8 Revert "Audio V4: Split system and vendor Audio.h"
This reverts commit fc9e212f01.

Reason for revert: Breaks multiple devices

Change-Id: I816671fd92246f85c97d00819858a74e36e2929d
2018-01-24 06:04:27 +00:00
Kevin Rocard
fc9e212f01 Audio V4: Split system and vendor Audio.h
audio.h and its dependencies (audio-effect.h, sound_trigger.h...)
used to be shared between system and vendor code.

This led to multiple problems:

1) Such sharing contradicts the Treble policy of
strict independence of framework and vendor code.

2) When audio.h was changed, every vendor needed to update
its code in the next release. This meant that audio*.h
headers were mostly changed in backward compatible manner.
Nevertheless, for P the HIDL interface and thus the audio.h
interface are changed in backward incompatible way.
(Some enum are becoming 64 bit long).

3) As the headers were common, some API used only by the framework
needed to be visible to the vendors (mostly enum values).

4) Treble policy is to support at least one previous HAL version

As a result the audio*.h headers are now duplicated,
one set for the framework, and one for the vendor.

Each set will evolve independently. After this split,
the framework-only APIs will be removed from the vendor headers
and vice versa.

The split is implements as such:

 + for system code

    - NOT moving the libaudio_system_headers
      Eg: system/audio.h and system/audio_effects/effect_equalizer.h
          are still in system/media/audio

    - the legacy audio HAL API that were in libhardware headers
          are now in libaudiohal_legacy_headers
      Eg: hardware/audio.h and hardware/audio_effect.h
          are now in frameworks/av/media/libaudiohal/legacy/

 + for vendor code

    - moving libaudio_system_headers and the legacy audio HAL API
          that were in libhardware_headers in
          android.hardware.audio.common.legacy@2.0
      Note that those headers are now versioned, so migrating to a @4.0
          HIDL HAL will mean changing the legacy dependency too.
      Eg: system/audio.h, system/audio-effect.h, hardware/audio.h
          are now in hardware/interfaces/audio/common/2.0/legacy

    - the legacy audio effect HAL API that was in libaudioeffects
          is now moved in android.hardware.audio.effect.legacy@2.0
      Eg: audio_effects/effect*.h are now in
          hardware/interfaces/audio/effect/2.0/legacy

    - the legacy sound trigger HAL API that were in libhardware_headers
          is now moved in android.hardware.soundtrigger.legacy@2.0
      Eg: hardware/sound_trigger.h is now in
          hardware/interfaces/audio/effect/2.0/legacy

libaudioutil being used by both system and vendor, had
to be renamed for system to libaudioutil_system.

Vendor libs that now depend on the audio.h of a specific
version and are not extensively referenced in non google code,
append @2.0 to their name.

Note that headers that are not expected to change in the 4.0 HAL are
left in all-versions folder to avoid duplication.
This is an implementation detail as the versioned libraries export
the all-versions headers.

Note that strict vendor-system separation is enforced by the
build-system. The system headers are not available for vendor
libs and vice-versa.

Note that this patch is split between numerous git repository (>10),
all the commits having the same Change-id for searchability.

Note that audio_policy.h is no longer exposed to vendors
as the legacy audio policy HAL API was never officially supported.
As a result the audiopolicy stub implementation has been removed.

Test: compile taimen-userdebug walleye-userdebug
              sailfish-userdebug marlin-userdebug
              gce_x86_phone-userdebug gce_x86_phone
              full-eng aosp_arm aosp_x86-eng
Test: check that the emulator booted and played audio
Test: full QA on sailfish-userdebug and taimen-userdebug
Bug: 38184704
Change-Id: I950f4e0a55613d72e32eba31bd563cb5bafe2d1a
Signed-off-by: Kevin Rocard <krocard@google.com>
2018-01-20 21:39:40 -08:00
Eric Laurent
262e0f9316 audio HAL: add functions for MMAP stream mode
Bug: 33398120
Test: make marlin-eng

Change-Id: If5f50644e0bdc7757bfcf813bf552f0da648239d
2016-12-15 09:21:34 -08:00
Glenn Kasten
841b9e8783 Declare struct timespec before first use
Test: builds without warnings
Bug: 32747393
Change-Id: Ie59b1e577771c55ccb264f54ead2df953165da90
2016-11-08 15:34:07 -08:00
Mikhail Naganov
2efccdc315 Move audio hw module names to system/
The names of the modules are also used in audio policy configuration
files and thus need to be consistent between HAL and the framework.

Change-Id: I7c57738be40423012c680d68db990a9145f0ee87
Test: make
2016-10-18 14:44:48 -07:00
Mikhail Naganov
f7d1dff1a9 Move parameters that are used by framework to system/audio.h
Change-Id: I4b10d9e35ab190dbdd47480a83b9fc2c7c35339b
Test: make
2016-10-17 17:13:10 -07:00
Colin Cross
6f1a00e29a Avoid C-style cast warnings am: cc8d9f9fcb am: ac416b9ed3 am: 9a786a3044
am: 2b932a434e

Change-Id: I6678be57a6905f7c0e490d4b55874107bf8d6e6d
2016-10-08 01:07:21 +00:00
Colin Cross
2b932a434e Avoid C-style cast warnings am: cc8d9f9fcb am: ac416b9ed3
am: 9a786a3044

Change-Id: I35021c183bb6772c47a0e6ba9d94215dd0728d33
2016-10-08 00:49:03 +00:00
Colin Cross
cc8d9f9fcb Avoid C-style cast warnings
hardware/libhardware/include was being included with -isystem, which
hides warnings.  Use a macro to convert modules to hw_device_t** to call
the open function that works in C++ and C.

Bug: 32018017
Test: m -j
Change-Id: If68bf15581975f1217fcab366cef7bc784894641
2016-10-07 13:10:20 -07:00
vivek mehta
27258e5ce4 audio: add key to control AANC runtime
- add AANC key to enable\disable AANC runtime

Bug: 29111687

Change-Id: I5c64b190b336a834cf6793ed37a511a54c7a202e
2016-08-02 16:57:39 -07:00
Haynes Mathew George
0d46876be9 audio: Add callback event to asynchronously notify error
Add new event to notify error using async callback path

Change-Id: I80a0ff74ea5a6497331a87ee33b2d0a890cbd2db
2016-07-11 17:19:39 -07:00
Phil Burk
c3385fc598 Audio passthrough: call audio_has_proportional_frames() for IEC61937
Bug: 24541671
Bug: 20891646
Bug: 26373761
Change-Id: I44351cfb7cfae16e6b3500add727a2c41b0f4e81
Signed-off-by: Phil Burk <philburk@google.com>
2016-02-11 19:35:26 +00:00
Andy Hung
9904fab472 Add AudioRecord timestamps
Bug: 13569372
Bug: 22886739
Change-Id: Ieca6026254123b46ef1c8a180adb72c347587239
2016-02-10 15:58:16 +00:00
Andy Hung
89d567f1c9 Add mono audio parameter
Bug: 15283594
Bug: 22700363
Change-Id: Ia1806867344a862e794416b2469ccaa38b62d932
2016-01-08 13:58:51 -08:00
Haynes Mathew George
d5f7dbec0c audio: Add audio parameter key for device connect
Add audio parameter key for device connect.

Bug: 17785277
Bug: 19214836
Change-Id: Icd81702634e0bd83645d89c2d65e2b303fc11f8c
(cherry picked from commit 55c07c3418a3bc19a72c4935d8ed57a57074c49a)
2015-01-31 01:42:31 +00:00
Eric Laurent
bc19a3de77 audio: new parameter key for HW A/V sync ID allocation
The HW A/V sync ID is retrieved from the HAL by calling
global get_parameters() with key AUDIO_PARAMETER_HW_AV_SYNC.

After the output stream is opened, the HW A/V sync ID is communicated
by stream set_parameters() with key AUDIO_PARAMETER_STREAM_HW_AV_SYNC.

Bug: 17112525.
Change-Id: Id1e3a3aa1e88d15461a609b381ca8c1902735a29
2014-10-20 09:58:04 -07:00
Paul McLean
2c6196f20c Fix problem with dropouts with multiple USB audio streams.
Bug 17136569

Change-Id: I94bdbe037533a3fd77f249fdd42f4d828d3bf87f
2014-08-28 07:59:03 -07:00
Eric Laurent
4ea9b95684 audio HAL: add parameter to get audio HW sync source
Bug: 16132368.
Change-Id: Id76ce254b73ea11316cc684399de8d9c520c9b9b
2014-08-05 15:02:46 -07:00
Eric Laurent
d1a1b1c4df Add parameter key and values for hearing aid compatibility mode
Change-Id: Ibdbe102bd49dbf228af5d4327b1868849c9d754e
2014-07-30 09:49:04 -07:00
Eric Laurent
f5e2469c02 audio HAL: add parameters to open stream
Pass device address (and audio source for inputs) to
open_output_stream() and open_input_stream() audio HAL functions.

Bug: 14815883.
Change-Id: I5535677db3f3027917a31a7ed5c0a4c6bc013639
2014-07-28 11:38:40 -07:00
Glenn Kasten
7d973adff4 Add audio_input_flags_t to HAL open_input_stream
Change-Id: I3519bfa45809e064d19473ebe6489c5249d306a8
2014-07-16 12:29:35 -07:00
Eric Laurent
c5ae6a0304 audio: different frame size calculation for input and output
Bug: 15000850.
Change-Id: I7813e99a0b7ce613cc3b7d7c95be0525cb2d6c81
2014-07-03 16:51:09 -07:00
Mike Lockwood
2d4d96574e audio: add AUDIO_PARAMETER_A2DP_SOURCE_ADDRESS parameter name
Change-Id: I6eedc25ed16be82a7a875d13774f31a47f0f9443
2014-05-28 11:09:54 -07:00
Eric Laurent
73b8a7414a audio: audio HAL extension for routing and volume control
Added audio HAL functions to control audio routing and audio gain.
Audio HALs above version 3.0 must implement these functions.
These functions will be used by the framework instead of
out_set_parameters("routing"=XXX) for device selection on an output
or input stream.
They will also allow direct connection of input devices to output devices
as well as gain control on devices or streams.

The gain or routing capabilities are exposed in audio_polciy.conf file.

Change-Id: Ic293fd41d492e38e86bdc35e3ad93aa5deb0b48f
2014-05-22 18:24:02 -07:00
Eric Laurent
447cae749c audio HAL: add minimum supported version
Add a definition for the minimum audio HAL version supported
by the audio framework.

Change-Id: Id7df440cc9fcc23b27b61c81bacb569599a20c13
2014-05-22 14:33:55 -07:00
Stewart Miles
84d35492b1 Described restrictions for common HAL object methods.
Inheritance of HAL object is performed by composing a child structure of a
single parent structure located at offset 0 followed by new data members
and function pointers in the child structure.

For example,

struct child {
  struct parent common;
  int a_data_member;
  void (*a_method)(struct child *c, int v);
};

HAL code assumes this layout when accessing child structures given a pointer
to a parent structure such that users write code like the following...

void child_method(struct *parent, int v) {
  struct child * c = (struct child*)parent;
  // do stuff with c
}

Code above will break if a member is added before "common" in "struct child".

This change adds comments that describe the restriction on the location of
parent HAL objects within a derived HAL object.  HAL objects that already
have comments that describe the required location of parent objects are not
modified.

Change-Id: Ibe4300275286ef275b2097534c84f1029d761d87
2014-05-12 12:35:37 -07:00
Glenn Kasten
d930d92c97 Add symbol AUDIO_PARAMETER_KEY_BT_SCO_WB
Change-Id: Ib2cfef74a57467cb01b5e0c44af335f53791e348
2014-04-29 13:35:57 -07:00
Glenn Kasten
22a06b752f Clarify return values of get_presentation_position
Change-Id: I495d7abd7e366849308c66bcaee99554dcd244aa
2013-09-10 09:23:48 -07:00
Glenn Kasten
e25f9ed346 get_presentation_position
Change-Id: Iedc4df9018321d7273eaa862e913ad6d9a844618
2013-08-29 12:05:12 -07:00
Richard Fitzgerald
f37f187bba Add defines and support for audio offload
- Add non-blocking write support, set_callback() function
- Add pause, resume, flush, drain functions to audio output stream
- Add audio parameter defines for compressed audio metadata
- Extend audio_config_t to include an audio_offload_info_t field
- Add is_offload_supported() function to test whether there is
    hardware decode support for a given compressed audio format
- Change audio_stream_frame_size() to handle offloaded streams.
    For an offloaded stream the size is always counted in bytes
    (frame size == 1) and the number of channels is irrelevant.

Change-Id: I5b82c3fdcfa1456502d0042888f166bf02d8d54b
Signed-off-by: Richard Fitzgerald <rf@opensource.wolfsonmicro.com>
Signed-off-by: Eric Laurent <elaurent@google.com>
2013-06-27 17:16:24 -07:00
Eric Laurent
85e08e2625 audio: new audio devices enums
Changed audio device API version to 2.0 because of
new enums for audio input and output devices.

Removed implementations of get_supported_devices() in
stub and usb audio modules.

Change-Id: I09345d38929d931e5015e36d18259f5a5f950298
2012-09-07 10:32:57 -07:00
Jean-Michel Trivi
88b79cb001 Add audio module for remote submix
New definitions of audio devices for remote submix: one representing
  a sink for writing the audio buffers that won't be played directly
  locally, another representing the audio source that can be read from
  to obtain the audio mix.

New audio hardware module encapsulating the submix loop functionality.
  Create a Pipe to serve as non-blocking audio ring buffer between
  the output device (the sink) and the input device (the source).

Change-Id: I527f4721a69ced0430a99ebba3b4db7d419f2bb2
2012-09-06 18:33:04 -07:00
John Grossman
47bf3d7ea5 Extend the audio HAL interface to support get/set master mute
(cherry picked from commit d245968b7ef0be5c776c9aefff3eca9e293d1b35)

> Extend the audio HAL interface to support get/set master mute
>
> Hand merge from ics-aah
>
> > Extend the audio HAL interface to support get/set master mute: DO NOT MERGE
> >
> > Extend the audio HAL interface to allow HALs to optionally support HW
> > level master mute.  This follows the same pattern as master volume and
> > is part of the fix for bug 6828363.  Because of the divergences
> > between ICS and master, this change will need to be merged by hand.
> >
> > Signed-off-by: John Grossman <johngro@google.com>
> > Change-Id: Ica6f5e37e13d13dde60463966f41f271ffa104fd
>
> Change-Id: I5e7aea6d7da0012dcc077281f9077fc04cfb9889
> Signed-off-by: John Grossman <johngro@google.com>

Change-Id: I2011cc5bc41ca7081ce255a4bfba65f36f899bc4
Signed-off-by: John Grossman <johngro@google.com>
2012-08-07 15:59:07 -07:00
Glenn Kasten
48915acb39 struct effect_descriptor_s const correctness
Also struct audio_stream in audio_stream_frame_size

Change-Id: Ie0de708e38a1850c186a8b4eb5f491adc44b3275
2012-07-24 07:53:14 -07:00
Glenn Kasten
34afb68c0c Add screen state parameter
Change-Id: Iead23e0d91dac34d40e9e55f525916b73c31bcb5
2012-06-08 10:49:34 -07:00
Eric Laurent
41eeb4fe9f audio HAL: add definitions for capabilities query
Added definitions for querying supported channel masks, sampling rates and
format with out_get_parameters().

Change-Id: Icb28fcef504c7e0a0b2daeb1bc7e704d20d3b738
2012-06-04 14:18:16 -07:00