Commit Graph

34 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
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
Glenn Kasten
13091fe19a Use audio_session_t consistently
Bug: 27562099
Change-Id: I608f72515b2aea93c784f0df15fe4af9859aebdf
2016-03-09 15:41:34 -08: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
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
3f56a10cc3 Rename setStreamOutput to invalidateStream
And simplify by removing the unused I/O handle parameter 'output'.

Change-Id: Ie9c4df17a7378066312d4ed8790fda7a9125c95e
2014-02-28 11:55:58 -08: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
Jean-Michel Trivi
2661f346ab Audio policy exposes stream remote activity
Bug 7485803

Change-Id: Ib9ad2338d9e0c5f816de8d56d7b41c3771c0a8c3
2013-02-11 10:17:04 -08:00
Jean-Michel Trivi
20c7f50cd5 Support querying active record sources
Add support for querying whether there is currently a recording
 underway from the specified audio source.

Bug 7314859

Change-Id: I270f27eff4dcf1cc179089859a4c690140825ad1
2012-10-10 12:23:17 -07:00
Glenn Kasten
d72e517056 Merge "Add comment" 2012-07-25 15:46:14 -07:00
Glenn Kasten
e57a2d2ec6 Add comment
Change-Id: Idc2890ebc10c0e6a116bc7c8872cd379e1cf3e25
2012-07-25 14:57:16 -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
a635449697 Use audio_channel_mask_t consistently
Change-Id: Ib832c0b707b1e0b82adf4ab3d4d18a2dc459d240
2012-06-25 10:45:43 -07:00
Eric Laurent
da4b0b26d1 rename audio policy output flags.
Change-Id: I965fa9bcba45f223f2f2cbc4adccfb5491414c8b
2012-04-18 13:58:44 -07:00
Eric Laurent
c65a2fe392 audio policy: load audio hw modules.
Added methods to audio_policy_service_ops to load an audio hw module.

Added methods to open an output or input stream on a particualr module.

Change-Id: Ia0618053bec9978c1b7d2a5f6c02b78209557256
2012-04-03 19:47:04 -07:00
Glenn Kasten
0cacd8d44b Update comments
Change-Id: I123d9baeceda13608cc01eda6a19e13822258dc0
2012-04-01 13:43:02 -07:00
Eric Laurent
83c62ce4e3 audio policy: use audio_devices_t when appropriate
Change-Id: Iee57cf5c3bdfefd981e1ed5958df10171f8716e6
2012-03-08 13:45:03 -08:00
Glenn Kasten
2be4db4a95 Merge "Use audio_in_acoustics_t consistently" 2012-02-03 08:31:11 -08:00
Glenn Kasten
114c2fd2d3 Use audio_in_acoustics_t consistently
Change-Id: Id49ad9631092db8c9ace0f45db918f708b0b32e9
2012-01-27 12:51:17 -08:00
Glenn Kasten
ae2e42b244 Use audio_source_t consistently
Change-Id: Ie25ddeb091646b7e24149b3b23a18ce0807e1891
2012-01-26 16:47:25 -08:00
Glenn Kasten
ea84c55f2c Merge "Use audio_format_t consistently" 2012-01-20 14:50:29 -08:00
Glenn Kasten
080a80212b Audio policy HAL set_ringer_mode is deprecated
Change-Id: If0f82d5c1cb9a0faf70f5a8434f68cdc39784ee6
2012-01-18 15:15:07 -08:00
Eric Laurent
d4cf73b362 Merge "audio policy: manage stream volume per device" 2012-01-17 17:34:53 -08:00
Glenn Kasten
fad1f606a2 Merge "set_mode and set_phone_state now take audio_mode_t" 2012-01-17 11:33:22 -08:00
Eric Laurent
ca20b17b41 audio policy: manage stream volume per device
Improve volume management by keeping track of volume for each type
of device independently.

Added functions at the audio policy interface to set and get stream volume
for a particular device.

Change-Id: Ic8899e82e48193cb65b3673e9d20383efed943b5
2012-01-17 09:10:45 -08:00
Glenn Kasten
5161a847dd Use audio_stream_type_t consistently
Change-Id: I1e92f018a07e4b1b73ef8d4de461ef1e08bc48e7
2012-01-12 16:55:03 -08:00
Glenn Kasten
fe79eb3f06 Use audio_format_t consistently
Was sometimes int or uint32_t

Change-Id: Ib3d82f5aefeda371c0439e43e72737a54882f519
2012-01-12 14:55:57 -08:00
Glenn Kasten
6df641e269 set_mode and set_phone_state now take audio_mode_t
Change-Id: I12a3a5ad6c3cadc6b9de8281f78edfef53908e2d
2012-01-12 10:06:24 -08:00
Eric Laurent
78d2c69af4 audio policy: register effect CPU on enable
Added a method on audio policy interface to register
audio effect CPU usage on enable and unregister on disable
instead of when the effect is created or destroyed.

Change-Id: Iee20bf70fee7302f817ec4c7d9bf7640caca2e95
2011-08-11 08:48:25 -07:00
Dima Zavin
3bc15860a9 hardware: drop the _hal suffixes from audio.h and audio_policy.h
Change-Id: Ib9bfc4049cf350f72af3ee577ce4756ac4118cfc
Signed-off-by: Dima Zavin <dima@android.com>
2011-06-13 18:12:17 -07:00
Dima Zavin
1199865d0c hardware: move audio_policy.h to system/
Change-Id: I392c5f91db88ca923dead7202064169edc1cc0c7
Signed-off-by: Dima Zavin <dima@android.com>
2011-06-13 18:10:06 -07:00
Dima Zavin
f1504dbca3 libhardware: add audio defines and HAL headers
Change-Id: Iae523059834c252f0d39f7efc6e15832e6273101
Signed-off-by: Dima Zavin <dima@android.com>
2011-04-27 14:08:57 -07:00