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>
diff --git a/Android.bp b/Android.bp
index 4766b71..fd138b0 100644
--- a/Android.bp
+++ b/Android.bp
@@ -3,13 +3,11 @@
 cc_library_headers {
     name: "libhardware_headers",
     header_libs: [
-        "libaudio_system_headers",
         "libsystem_headers",
         "libcutils_headers",
         "libbluetooth-types-header",
     ],
     export_header_lib_headers: [
-        "libaudio_system_headers",
         "libsystem_headers",
         "libcutils_headers",
         "libbluetooth-types-header",
diff --git a/include/hardware/audio.h b/include/hardware/audio.h
deleted file mode 100644
index 2d6eb30..0000000
--- a/include/hardware/audio.h
+++ /dev/null
@@ -1,745 +0,0 @@
-/*
- * Copyright (C) 2011 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-
-#ifndef ANDROID_AUDIO_HAL_INTERFACE_H
-#define ANDROID_AUDIO_HAL_INTERFACE_H
-
-#include <stdint.h>
-#include <strings.h>
-#include <sys/cdefs.h>
-#include <sys/types.h>
-#include <time.h>
-
-#include <cutils/bitops.h>
-
-#include <hardware/hardware.h>
-#include <system/audio.h>
-#include <hardware/audio_effect.h>
-
-__BEGIN_DECLS
-
-/**
- * The id of this module
- */
-#define AUDIO_HARDWARE_MODULE_ID "audio"
-
-/**
- * Name of the audio devices to open
- */
-#define AUDIO_HARDWARE_INTERFACE "audio_hw_if"
-
-
-/* Use version 0.1 to be compatible with first generation of audio hw module with version_major
- * hardcoded to 1. No audio module API change.
- */
-#define AUDIO_MODULE_API_VERSION_0_1 HARDWARE_MODULE_API_VERSION(0, 1)
-#define AUDIO_MODULE_API_VERSION_CURRENT AUDIO_MODULE_API_VERSION_0_1
-
-/* First generation of audio devices had version hardcoded to 0. all devices with versions < 1.0
- * will be considered of first generation API.
- */
-#define AUDIO_DEVICE_API_VERSION_0_0 HARDWARE_DEVICE_API_VERSION(0, 0)
-#define AUDIO_DEVICE_API_VERSION_1_0 HARDWARE_DEVICE_API_VERSION(1, 0)
-#define AUDIO_DEVICE_API_VERSION_2_0 HARDWARE_DEVICE_API_VERSION(2, 0)
-#define AUDIO_DEVICE_API_VERSION_3_0 HARDWARE_DEVICE_API_VERSION(3, 0)
-#define AUDIO_DEVICE_API_VERSION_CURRENT AUDIO_DEVICE_API_VERSION_3_0
-/* Minimal audio HAL version supported by the audio framework */
-#define AUDIO_DEVICE_API_VERSION_MIN AUDIO_DEVICE_API_VERSION_2_0
-
-/**************************************/
-
-/**
- *  standard audio parameters that the HAL may need to handle
- */
-
-/**
- *  audio device parameters
- */
-
-/* TTY mode selection */
-#define AUDIO_PARAMETER_KEY_TTY_MODE "tty_mode"
-#define AUDIO_PARAMETER_VALUE_TTY_OFF "tty_off"
-#define AUDIO_PARAMETER_VALUE_TTY_VCO "tty_vco"
-#define AUDIO_PARAMETER_VALUE_TTY_HCO "tty_hco"
-#define AUDIO_PARAMETER_VALUE_TTY_FULL "tty_full"
-
-/* Hearing Aid Compatibility - Telecoil (HAC-T) mode on/off */
-#define AUDIO_PARAMETER_KEY_HAC "HACSetting"
-#define AUDIO_PARAMETER_VALUE_HAC_ON "ON"
-#define AUDIO_PARAMETER_VALUE_HAC_OFF "OFF"
-
-/* A2DP sink address set by framework */
-#define AUDIO_PARAMETER_A2DP_SINK_ADDRESS "a2dp_sink_address"
-
-/* A2DP source address set by framework */
-#define AUDIO_PARAMETER_A2DP_SOURCE_ADDRESS "a2dp_source_address"
-
-/* Bluetooth SCO wideband */
-#define AUDIO_PARAMETER_KEY_BT_SCO_WB "bt_wbs"
-
-/**
- *  audio stream parameters
- */
-
-/* Enable AANC */
-#define AUDIO_PARAMETER_KEY_AANC "aanc_enabled"
-
-/**************************************/
-
-/* common audio stream parameters and operations */
-struct audio_stream {
-
-    /**
-     * Return the sampling rate in Hz - eg. 44100.
-     */
-    uint32_t (*get_sample_rate)(const struct audio_stream *stream);
-
-    /* currently unused - use set_parameters with key
-     *    AUDIO_PARAMETER_STREAM_SAMPLING_RATE
-     */
-    int (*set_sample_rate)(struct audio_stream *stream, uint32_t rate);
-
-    /**
-     * Return size of input/output buffer in bytes for this stream - eg. 4800.
-     * It should be a multiple of the frame size.  See also get_input_buffer_size.
-     */
-    size_t (*get_buffer_size)(const struct audio_stream *stream);
-
-    /**
-     * Return the channel mask -
-     *  e.g. AUDIO_CHANNEL_OUT_STEREO or AUDIO_CHANNEL_IN_STEREO
-     */
-    audio_channel_mask_t (*get_channels)(const struct audio_stream *stream);
-
-    /**
-     * Return the audio format - e.g. AUDIO_FORMAT_PCM_16_BIT
-     */
-    audio_format_t (*get_format)(const struct audio_stream *stream);
-
-    /* currently unused - use set_parameters with key
-     *     AUDIO_PARAMETER_STREAM_FORMAT
-     */
-    int (*set_format)(struct audio_stream *stream, audio_format_t format);
-
-    /**
-     * Put the audio hardware input/output into standby mode.
-     * Driver should exit from standby mode at the next I/O operation.
-     * Returns 0 on success and <0 on failure.
-     */
-    int (*standby)(struct audio_stream *stream);
-
-    /** dump the state of the audio input/output device */
-    int (*dump)(const struct audio_stream *stream, int fd);
-
-    /** Return the set of device(s) which this stream is connected to */
-    audio_devices_t (*get_device)(const struct audio_stream *stream);
-
-    /**
-     * Currently unused - set_device() corresponds to set_parameters() with key
-     * AUDIO_PARAMETER_STREAM_ROUTING for both input and output.
-     * AUDIO_PARAMETER_STREAM_INPUT_SOURCE is an additional information used by
-     * input streams only.
-     */
-    int (*set_device)(struct audio_stream *stream, audio_devices_t device);
-
-    /**
-     * set/get audio stream parameters. The function accepts a list of
-     * parameter key value pairs in the form: key1=value1;key2=value2;...
-     *
-     * Some keys are reserved for standard parameters (See AudioParameter class)
-     *
-     * If the implementation does not accept a parameter change while
-     * the output is active but the parameter is acceptable otherwise, it must
-     * return -ENOSYS.
-     *
-     * The audio flinger will put the stream in standby and then change the
-     * parameter value.
-     */
-    int (*set_parameters)(struct audio_stream *stream, const char *kv_pairs);
-
-    /*
-     * Returns a pointer to a heap allocated string. The caller is responsible
-     * for freeing the memory for it using free().
-     */
-    char * (*get_parameters)(const struct audio_stream *stream,
-                             const char *keys);
-    int (*add_audio_effect)(const struct audio_stream *stream,
-                             effect_handle_t effect);
-    int (*remove_audio_effect)(const struct audio_stream *stream,
-                             effect_handle_t effect);
-};
-typedef struct audio_stream audio_stream_t;
-
-/* type of asynchronous write callback events. Mutually exclusive */
-typedef enum {
-    STREAM_CBK_EVENT_WRITE_READY, /* non blocking write completed */
-    STREAM_CBK_EVENT_DRAIN_READY,  /* drain completed */
-    STREAM_CBK_EVENT_ERROR, /* stream hit some error, let AF take action */
-} stream_callback_event_t;
-
-typedef int (*stream_callback_t)(stream_callback_event_t event, void *param, void *cookie);
-
-/* type of drain requested to audio_stream_out->drain(). Mutually exclusive */
-typedef enum {
-    AUDIO_DRAIN_ALL,            /* drain() returns when all data has been played */
-    AUDIO_DRAIN_EARLY_NOTIFY    /* drain() returns a short time before all data
-                                   from the current track has been played to
-                                   give time for gapless track switch */
-} audio_drain_type_t;
-
-/**
- * audio_stream_out is the abstraction interface for the audio output hardware.
- *
- * It provides information about various properties of the audio output
- * hardware driver.
- */
-
-struct audio_stream_out {
-    /**
-     * Common methods of the audio stream out.  This *must* be the first member of audio_stream_out
-     * as users of this structure will cast a audio_stream to audio_stream_out pointer in contexts
-     * where it's known the audio_stream references an audio_stream_out.
-     */
-    struct audio_stream common;
-
-    /**
-     * Return the audio hardware driver estimated latency in milliseconds.
-     */
-    uint32_t (*get_latency)(const struct audio_stream_out *stream);
-
-    /**
-     * Use this method in situations where audio mixing is done in the
-     * hardware. This method serves as a direct interface with hardware,
-     * allowing you to directly set the volume as apposed to via the framework.
-     * This method might produce multiple PCM outputs or hardware accelerated
-     * codecs, such as MP3 or AAC.
-     */
-    int (*set_volume)(struct audio_stream_out *stream, float left, float right);
-
-    /**
-     * Write audio buffer to driver. Returns number of bytes written, or a
-     * negative status_t. If at least one frame was written successfully prior to the error,
-     * it is suggested that the driver return that successful (short) byte count
-     * and then return an error in the subsequent call.
-     *
-     * If set_callback() has previously been called to enable non-blocking mode
-     * the write() is not allowed to block. It must write only the number of
-     * bytes that currently fit in the driver/hardware buffer and then return
-     * this byte count. If this is less than the requested write size the
-     * callback function must be called when more space is available in the
-     * driver/hardware buffer.
-     */
-    ssize_t (*write)(struct audio_stream_out *stream, const void* buffer,
-                     size_t bytes);
-
-    /* return the number of audio frames written by the audio dsp to DAC since
-     * the output has exited standby
-     */
-    int (*get_render_position)(const struct audio_stream_out *stream,
-                               uint32_t *dsp_frames);
-
-    /**
-     * get the local time at which the next write to the audio driver will be presented.
-     * The units are microseconds, where the epoch is decided by the local audio HAL.
-     */
-    int (*get_next_write_timestamp)(const struct audio_stream_out *stream,
-                                    int64_t *timestamp);
-
-    /**
-     * set the callback function for notifying completion of non-blocking
-     * write and drain.
-     * Calling this function implies that all future write() and drain()
-     * must be non-blocking and use the callback to signal completion.
-     */
-    int (*set_callback)(struct audio_stream_out *stream,
-            stream_callback_t callback, void *cookie);
-
-    /**
-     * Notifies to the audio driver to stop playback however the queued buffers are
-     * retained by the hardware. Useful for implementing pause/resume. Empty implementation
-     * if not supported however should be implemented for hardware with non-trivial
-     * latency. In the pause state audio hardware could still be using power. User may
-     * consider calling suspend after a timeout.
-     *
-     * Implementation of this function is mandatory for offloaded playback.
-     */
-    int (*pause)(struct audio_stream_out* stream);
-
-    /**
-     * Notifies to the audio driver to resume playback following a pause.
-     * Returns error if called without matching pause.
-     *
-     * Implementation of this function is mandatory for offloaded playback.
-     */
-    int (*resume)(struct audio_stream_out* stream);
-
-    /**
-     * Requests notification when data buffered by the driver/hardware has
-     * been played. If set_callback() has previously been called to enable
-     * non-blocking mode, the drain() must not block, instead it should return
-     * quickly and completion of the drain is notified through the callback.
-     * If set_callback() has not been called, the drain() must block until
-     * completion.
-     * If type==AUDIO_DRAIN_ALL, the drain completes when all previously written
-     * data has been played.
-     * If type==AUDIO_DRAIN_EARLY_NOTIFY, the drain completes shortly before all
-     * data for the current track has played to allow time for the framework
-     * to perform a gapless track switch.
-     *
-     * Drain must return immediately on stop() and flush() call
-     *
-     * Implementation of this function is mandatory for offloaded playback.
-     */
-    int (*drain)(struct audio_stream_out* stream, audio_drain_type_t type );
-
-    /**
-     * Notifies to the audio driver to flush the queued data. Stream must already
-     * be paused before calling flush().
-     *
-     * Implementation of this function is mandatory for offloaded playback.
-     */
-   int (*flush)(struct audio_stream_out* stream);
-
-    /**
-     * Return a recent count of the number of audio frames presented to an external observer.
-     * This excludes frames which have been written but are still in the pipeline.
-     * The count is not reset to zero when output enters standby.
-     * Also returns the value of CLOCK_MONOTONIC as of this presentation count.
-     * The returned count is expected to be 'recent',
-     * but does not need to be the most recent possible value.
-     * However, the associated time should correspond to whatever count is returned.
-     * Example:  assume that N+M frames have been presented, where M is a 'small' number.
-     * Then it is permissible to return N instead of N+M,
-     * and the timestamp should correspond to N rather than N+M.
-     * The terms 'recent' and 'small' are not defined.
-     * They reflect the quality of the implementation.
-     *
-     * 3.0 and higher only.
-     */
-    int (*get_presentation_position)(const struct audio_stream_out *stream,
-                               uint64_t *frames, struct timespec *timestamp);
-
-    /**
-     * Called by the framework to start a stream operating in mmap mode.
-     * create_mmap_buffer must be called before calling start()
-     *
-     * \note Function only implemented by streams operating in mmap mode.
-     *
-     * \param[in] stream the stream object.
-     * \return 0 in case of success.
-     *         -ENOSYS if called out of sequence or on non mmap stream
-     */
-    int (*start)(const struct audio_stream_out* stream);
-
-    /**
-     * Called by the framework to stop a stream operating in mmap mode.
-     * Must be called after start()
-     *
-     * \note Function only implemented by streams operating in mmap mode.
-     *
-     * \param[in] stream the stream object.
-     * \return 0 in case of success.
-     *         -ENOSYS if called out of sequence or on non mmap stream
-     */
-    int (*stop)(const struct audio_stream_out* stream);
-
-    /**
-     * Called by the framework to retrieve information on the mmap buffer used for audio
-     * samples transfer.
-     *
-     * \note Function only implemented by streams operating in mmap mode.
-     *
-     * \param[in] stream the stream object.
-     * \param[in] min_size_frames minimum buffer size requested. The actual buffer
-     *        size returned in struct audio_mmap_buffer_info can be larger.
-     * \param[out] info address at which the mmap buffer information should be returned.
-     *
-     * \return 0 if the buffer was allocated.
-     *         -ENODEV in case of initialization error
-     *         -EINVAL if the requested buffer size is too large
-     *         -ENOSYS if called out of sequence (e.g. buffer already allocated)
-     */
-    int (*create_mmap_buffer)(const struct audio_stream_out *stream,
-                              int32_t min_size_frames,
-                              struct audio_mmap_buffer_info *info);
-
-    /**
-     * Called by the framework to read current read/write position in the mmap buffer
-     * with associated time stamp.
-     *
-     * \note Function only implemented by streams operating in mmap mode.
-     *
-     * \param[in] stream the stream object.
-     * \param[out] position address at which the mmap read/write position should be returned.
-     *
-     * \return 0 if the position is successfully returned.
-     *         -ENODATA if the position cannot be retrieved
-     *         -ENOSYS if called before create_mmap_buffer()
-     */
-    int (*get_mmap_position)(const struct audio_stream_out *stream,
-                             struct audio_mmap_position *position);
-};
-typedef struct audio_stream_out audio_stream_out_t;
-
-struct audio_stream_in {
-    /**
-     * Common methods of the audio stream in.  This *must* be the first member of audio_stream_in
-     * as users of this structure will cast a audio_stream to audio_stream_in pointer in contexts
-     * where it's known the audio_stream references an audio_stream_in.
-     */
-    struct audio_stream common;
-
-    /** set the input gain for the audio driver. This method is for
-     *  for future use */
-    int (*set_gain)(struct audio_stream_in *stream, float gain);
-
-    /** Read audio buffer in from audio driver. Returns number of bytes read, or a
-     *  negative status_t. If at least one frame was read prior to the error,
-     *  read should return that byte count and then return an error in the subsequent call.
-     */
-    ssize_t (*read)(struct audio_stream_in *stream, void* buffer,
-                    size_t bytes);
-
-    /**
-     * Return the amount of input frames lost in the audio driver since the
-     * last call of this function.
-     * Audio driver is expected to reset the value to 0 and restart counting
-     * upon returning the current value by this function call.
-     * Such loss typically occurs when the user space process is blocked
-     * longer than the capacity of audio driver buffers.
-     *
-     * Unit: the number of input audio frames
-     */
-    uint32_t (*get_input_frames_lost)(struct audio_stream_in *stream);
-
-    /**
-     * Return a recent count of the number of audio frames received and
-     * the clock time associated with that frame count.
-     *
-     * frames is the total frame count received. This should be as early in
-     *     the capture pipeline as possible. In general,
-     *     frames should be non-negative and should not go "backwards".
-     *
-     * time is the clock MONOTONIC time when frames was measured. In general,
-     *     time should be a positive quantity and should not go "backwards".
-     *
-     * The status returned is 0 on success, -ENOSYS if the device is not
-     * ready/available, or -EINVAL if the arguments are null or otherwise invalid.
-     */
-    int (*get_capture_position)(const struct audio_stream_in *stream,
-                                int64_t *frames, int64_t *time);
-
-    /**
-     * Called by the framework to start a stream operating in mmap mode.
-     * create_mmap_buffer must be called before calling start()
-     *
-     * \note Function only implemented by streams operating in mmap mode.
-     *
-     * \param[in] stream the stream object.
-     * \return 0 in case off success.
-     *         -ENOSYS if called out of sequence or on non mmap stream
-     */
-    int (*start)(const struct audio_stream_in* stream);
-
-    /**
-     * Called by the framework to stop a stream operating in mmap mode.
-     *
-     * \note Function only implemented by streams operating in mmap mode.
-     *
-     * \param[in] stream the stream object.
-     * \return 0 in case of success.
-     *         -ENOSYS if called out of sequence or on non mmap stream
-     */
-    int (*stop)(const struct audio_stream_in* stream);
-
-    /**
-     * Called by the framework to retrieve information on the mmap buffer used for audio
-     * samples transfer.
-     *
-     * \note Function only implemented by streams operating in mmap mode.
-     *
-     * \param[in] stream the stream object.
-     * \param[in] min_size_frames minimum buffer size requested. The actual buffer
-     *        size returned in struct audio_mmap_buffer_info can be larger.
-     * \param[out] info address at which the mmap buffer information should be returned.
-     *
-     * \return 0 if the buffer was allocated.
-     *         -ENODEV in case of initialization error
-     *         -EINVAL if the requested buffer size is too large
-     *         -ENOSYS if called out of sequence (e.g. buffer already allocated)
-     */
-    int (*create_mmap_buffer)(const struct audio_stream_in *stream,
-                              int32_t min_size_frames,
-                              struct audio_mmap_buffer_info *info);
-
-    /**
-     * Called by the framework to read current read/write position in the mmap buffer
-     * with associated time stamp.
-     *
-     * \note Function only implemented by streams operating in mmap mode.
-     *
-     * \param[in] stream the stream object.
-     * \param[out] position address at which the mmap read/write position should be returned.
-     *
-     * \return 0 if the position is successfully returned.
-     *         -ENODATA if the position cannot be retreived
-     *         -ENOSYS if called before mmap_read_position()
-     */
-    int (*get_mmap_position)(const struct audio_stream_in *stream,
-                             struct audio_mmap_position *position);
-};
-typedef struct audio_stream_in audio_stream_in_t;
-
-/**
- * return the frame size (number of bytes per sample).
- *
- * Deprecated: use audio_stream_out_frame_size() or audio_stream_in_frame_size() instead.
- */
-__attribute__((__deprecated__))
-static inline size_t audio_stream_frame_size(const struct audio_stream *s)
-{
-    size_t chan_samp_sz;
-    audio_format_t format = s->get_format(s);
-
-    if (audio_has_proportional_frames(format)) {
-        chan_samp_sz = audio_bytes_per_sample(format);
-        return popcount(s->get_channels(s)) * chan_samp_sz;
-    }
-
-    return sizeof(int8_t);
-}
-
-/**
- * return the frame size (number of bytes per sample) of an output stream.
- */
-static inline size_t audio_stream_out_frame_size(const struct audio_stream_out *s)
-{
-    size_t chan_samp_sz;
-    audio_format_t format = s->common.get_format(&s->common);
-
-    if (audio_has_proportional_frames(format)) {
-        chan_samp_sz = audio_bytes_per_sample(format);
-        return audio_channel_count_from_out_mask(s->common.get_channels(&s->common)) * chan_samp_sz;
-    }
-
-    return sizeof(int8_t);
-}
-
-/**
- * return the frame size (number of bytes per sample) of an input stream.
- */
-static inline size_t audio_stream_in_frame_size(const struct audio_stream_in *s)
-{
-    size_t chan_samp_sz;
-    audio_format_t format = s->common.get_format(&s->common);
-
-    if (audio_has_proportional_frames(format)) {
-        chan_samp_sz = audio_bytes_per_sample(format);
-        return audio_channel_count_from_in_mask(s->common.get_channels(&s->common)) * chan_samp_sz;
-    }
-
-    return sizeof(int8_t);
-}
-
-/**********************************************************************/
-
-/**
- * Every hardware module must have a data structure named HAL_MODULE_INFO_SYM
- * and the fields of this data structure must begin with hw_module_t
- * followed by module specific information.
- */
-struct audio_module {
-    struct hw_module_t common;
-};
-
-struct audio_hw_device {
-    /**
-     * Common methods of the audio device.  This *must* be the first member of audio_hw_device
-     * as users of this structure will cast a hw_device_t to audio_hw_device pointer in contexts
-     * where it's known the hw_device_t references an audio_hw_device.
-     */
-    struct hw_device_t common;
-
-    /**
-     * used by audio flinger to enumerate what devices are supported by
-     * each audio_hw_device implementation.
-     *
-     * Return value is a bitmask of 1 or more values of audio_devices_t
-     *
-     * NOTE: audio HAL implementations starting with
-     * AUDIO_DEVICE_API_VERSION_2_0 do not implement this function.
-     * All supported devices should be listed in audio_policy.conf
-     * file and the audio policy manager must choose the appropriate
-     * audio module based on information in this file.
-     */
-    uint32_t (*get_supported_devices)(const struct audio_hw_device *dev);
-
-    /**
-     * check to see if the audio hardware interface has been initialized.
-     * returns 0 on success, -ENODEV on failure.
-     */
-    int (*init_check)(const struct audio_hw_device *dev);
-
-    /** set the audio volume of a voice call. Range is between 0.0 and 1.0 */
-    int (*set_voice_volume)(struct audio_hw_device *dev, float volume);
-
-    /**
-     * set the audio volume for all audio activities other than voice call.
-     * Range between 0.0 and 1.0. If any value other than 0 is returned,
-     * the software mixer will emulate this capability.
-     */
-    int (*set_master_volume)(struct audio_hw_device *dev, float volume);
-
-    /**
-     * Get the current master volume value for the HAL, if the HAL supports
-     * master volume control.  AudioFlinger will query this value from the
-     * primary audio HAL when the service starts and use the value for setting
-     * the initial master volume across all HALs.  HALs which do not support
-     * this method may leave it set to NULL.
-     */
-    int (*get_master_volume)(struct audio_hw_device *dev, float *volume);
-
-    /**
-     * set_mode is called when the audio mode changes. AUDIO_MODE_NORMAL mode
-     * is for standard audio playback, AUDIO_MODE_RINGTONE when a ringtone is
-     * playing, and AUDIO_MODE_IN_CALL when a call is in progress.
-     */
-    int (*set_mode)(struct audio_hw_device *dev, audio_mode_t mode);
-
-    /* mic mute */
-    int (*set_mic_mute)(struct audio_hw_device *dev, bool state);
-    int (*get_mic_mute)(const struct audio_hw_device *dev, bool *state);
-
-    /* set/get global audio parameters */
-    int (*set_parameters)(struct audio_hw_device *dev, const char *kv_pairs);
-
-    /*
-     * Returns a pointer to a heap allocated string. The caller is responsible
-     * for freeing the memory for it using free().
-     */
-    char * (*get_parameters)(const struct audio_hw_device *dev,
-                             const char *keys);
-
-    /* Returns audio input buffer size according to parameters passed or
-     * 0 if one of the parameters is not supported.
-     * See also get_buffer_size which is for a particular stream.
-     */
-    size_t (*get_input_buffer_size)(const struct audio_hw_device *dev,
-                                    const struct audio_config *config);
-
-    /** This method creates and opens the audio hardware output stream.
-     * The "address" parameter qualifies the "devices" audio device type if needed.
-     * The format format depends on the device type:
-     * - Bluetooth devices use the MAC address of the device in the form "00:11:22:AA:BB:CC"
-     * - USB devices use the ALSA card and device numbers in the form  "card=X;device=Y"
-     * - Other devices may use a number or any other string.
-     */
-
-    int (*open_output_stream)(struct audio_hw_device *dev,
-                              audio_io_handle_t handle,
-                              audio_devices_t devices,
-                              audio_output_flags_t flags,
-                              struct audio_config *config,
-                              struct audio_stream_out **stream_out,
-                              const char *address);
-
-    void (*close_output_stream)(struct audio_hw_device *dev,
-                                struct audio_stream_out* stream_out);
-
-    /** This method creates and opens the audio hardware input stream */
-    int (*open_input_stream)(struct audio_hw_device *dev,
-                             audio_io_handle_t handle,
-                             audio_devices_t devices,
-                             struct audio_config *config,
-                             struct audio_stream_in **stream_in,
-                             audio_input_flags_t flags,
-                             const char *address,
-                             audio_source_t source);
-
-    void (*close_input_stream)(struct audio_hw_device *dev,
-                               struct audio_stream_in *stream_in);
-
-    /** This method dumps the state of the audio hardware */
-    int (*dump)(const struct audio_hw_device *dev, int fd);
-
-    /**
-     * set the audio mute status for all audio activities.  If any value other
-     * than 0 is returned, the software mixer will emulate this capability.
-     */
-    int (*set_master_mute)(struct audio_hw_device *dev, bool mute);
-
-    /**
-     * Get the current master mute status for the HAL, if the HAL supports
-     * master mute control.  AudioFlinger will query this value from the primary
-     * audio HAL when the service starts and use the value for setting the
-     * initial master mute across all HALs.  HALs which do not support this
-     * method may leave it set to NULL.
-     */
-    int (*get_master_mute)(struct audio_hw_device *dev, bool *mute);
-
-    /**
-     * Routing control
-     */
-
-    /* Creates an audio patch between several source and sink ports.
-     * The handle is allocated by the HAL and should be unique for this
-     * audio HAL module. */
-    int (*create_audio_patch)(struct audio_hw_device *dev,
-                               unsigned int num_sources,
-                               const struct audio_port_config *sources,
-                               unsigned int num_sinks,
-                               const struct audio_port_config *sinks,
-                               audio_patch_handle_t *handle);
-
-    /* Release an audio patch */
-    int (*release_audio_patch)(struct audio_hw_device *dev,
-                               audio_patch_handle_t handle);
-
-    /* Fills the list of supported attributes for a given audio port.
-     * As input, "port" contains the information (type, role, address etc...)
-     * needed by the HAL to identify the port.
-     * As output, "port" contains possible attributes (sampling rates, formats,
-     * channel masks, gain controllers...) for this port.
-     */
-    int (*get_audio_port)(struct audio_hw_device *dev,
-                          struct audio_port *port);
-
-    /* Set audio port configuration */
-    int (*set_audio_port_config)(struct audio_hw_device *dev,
-                         const struct audio_port_config *config);
-
-};
-typedef struct audio_hw_device audio_hw_device_t;
-
-/** convenience API for opening and closing a supported device */
-
-static inline int audio_hw_device_open(const struct hw_module_t* module,
-                                       struct audio_hw_device** device)
-{
-    return module->methods->open(module, AUDIO_HARDWARE_INTERFACE,
-                                 TO_HW_DEVICE_T_OPEN(device));
-}
-
-static inline int audio_hw_device_close(struct audio_hw_device* device)
-{
-    return device->common.close(&device->common);
-}
-
-
-__END_DECLS
-
-#endif  // ANDROID_AUDIO_INTERFACE_H
diff --git a/include/hardware/audio_alsaops.h b/include/hardware/audio_alsaops.h
deleted file mode 100644
index 6a17a35..0000000
--- a/include/hardware/audio_alsaops.h
+++ /dev/null
@@ -1,103 +0,0 @@
-/*
- * Copyright (C) 2014 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/* This file contains shared utility functions to handle the tinyalsa
- * implementation for Android internal audio, generally in the hardware layer.
- * Some routines may log a fatal error on failure, as noted.
- */
-
-#ifndef ANDROID_AUDIO_ALSAOPS_H
-#define ANDROID_AUDIO_ALSAOPS_H
-
-#include <log/log.h>
-
-#include <system/audio.h>
-#include <tinyalsa/asoundlib.h>
-
-__BEGIN_DECLS
-
-/* Converts audio_format to pcm_format.
- * Parameters:
- *  format  the audio_format_t to convert
- *
- * Logs a fatal error if format is not a valid convertible audio_format_t.
- */
-static inline enum pcm_format pcm_format_from_audio_format(audio_format_t format)
-{
-    switch (format) {
-#if HAVE_BIG_ENDIAN
-    case AUDIO_FORMAT_PCM_16_BIT:
-        return PCM_FORMAT_S16_BE;
-    case AUDIO_FORMAT_PCM_24_BIT_PACKED:
-        return PCM_FORMAT_S24_3BE;
-    case AUDIO_FORMAT_PCM_32_BIT:
-        return PCM_FORMAT_S32_BE;
-    case AUDIO_FORMAT_PCM_8_24_BIT:
-        return PCM_FORMAT_S24_BE;
-#else
-    case AUDIO_FORMAT_PCM_16_BIT:
-        return PCM_FORMAT_S16_LE;
-    case AUDIO_FORMAT_PCM_24_BIT_PACKED:
-        return PCM_FORMAT_S24_3LE;
-    case AUDIO_FORMAT_PCM_32_BIT:
-        return PCM_FORMAT_S32_LE;
-    case AUDIO_FORMAT_PCM_8_24_BIT:
-        return PCM_FORMAT_S24_LE;
-#endif
-    case AUDIO_FORMAT_PCM_FLOAT:  /* there is no equivalent for float */
-    default:
-        LOG_ALWAYS_FATAL("pcm_format_from_audio_format: invalid audio format %#x", format);
-        return 0;
-    }
-}
-
-/* Converts pcm_format to audio_format.
- * Parameters:
- *  format  the pcm_format to convert
- *
- * Logs a fatal error if format is not a valid convertible pcm_format.
- */
-static inline audio_format_t audio_format_from_pcm_format(enum pcm_format format)
-{
-    switch (format) {
-#if HAVE_BIG_ENDIAN
-    case PCM_FORMAT_S16_BE:
-        return AUDIO_FORMAT_PCM_16_BIT;
-    case PCM_FORMAT_S24_3BE:
-        return AUDIO_FORMAT_PCM_24_BIT_PACKED;
-    case PCM_FORMAT_S24_BE:
-        return AUDIO_FORMAT_PCM_8_24_BIT;
-    case PCM_FORMAT_S32_BE:
-        return AUDIO_FORMAT_PCM_32_BIT;
-#else
-    case PCM_FORMAT_S16_LE:
-        return AUDIO_FORMAT_PCM_16_BIT;
-    case PCM_FORMAT_S24_3LE:
-        return AUDIO_FORMAT_PCM_24_BIT_PACKED;
-    case PCM_FORMAT_S24_LE:
-        return AUDIO_FORMAT_PCM_8_24_BIT;
-    case PCM_FORMAT_S32_LE:
-        return AUDIO_FORMAT_PCM_32_BIT;
-#endif
-    default:
-        LOG_ALWAYS_FATAL("audio_format_from_pcm_format: invalid pcm format %#x", format);
-        return 0;
-    }
-}
-
-__END_DECLS
-
-#endif /* ANDROID_AUDIO_ALSAOPS_H */
diff --git a/include/hardware/audio_effect.h b/include/hardware/audio_effect.h
deleted file mode 100644
index 3366e17..0000000
--- a/include/hardware/audio_effect.h
+++ /dev/null
@@ -1,310 +0,0 @@
-/*
- * Copyright (C) 2011 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-
-#ifndef ANDROID_AUDIO_EFFECT_H
-#define ANDROID_AUDIO_EFFECT_H
-
-#include <errno.h>
-#include <stdint.h>
-#include <strings.h>
-#include <sys/cdefs.h>
-#include <sys/types.h>
-
-#include <cutils/bitops.h>
-
-#include <system/audio_effect.h>
-
-
-__BEGIN_DECLS
-
-
-/////////////////////////////////////////////////
-//      Common Definitions
-/////////////////////////////////////////////////
-
-#define EFFECT_MAKE_API_VERSION(M, m)  (((M)<<16) | ((m) & 0xFFFF))
-#define EFFECT_API_VERSION_MAJOR(v)    ((v)>>16)
-#define EFFECT_API_VERSION_MINOR(v)    ((m) & 0xFFFF)
-
-
-/////////////////////////////////////////////////
-//      Effect control interface
-/////////////////////////////////////////////////
-
-// Effect control interface version 2.0
-#define EFFECT_CONTROL_API_VERSION EFFECT_MAKE_API_VERSION(2,0)
-
-// Effect control interface structure: effect_interface_s
-// The effect control interface is exposed by each effect engine implementation. It consists of
-// a set of functions controlling the configuration, activation and process of the engine.
-// The functions are grouped in a structure of type effect_interface_s.
-//
-// Effect control interface handle: effect_handle_t
-// The effect_handle_t serves two purposes regarding the implementation of the effect engine:
-// - 1 it is the address of a pointer to an effect_interface_s structure where the functions
-// of the effect control API for a particular effect are located.
-// - 2 it is the address of the context of a particular effect instance.
-// A typical implementation in the effect library would define a structure as follows:
-// struct effect_module_s {
-//        const struct effect_interface_s *itfe;
-//        effect_config_t config;
-//        effect_context_t context;
-// }
-// The implementation of EffectCreate() function would then allocate a structure of this
-// type and return its address as effect_handle_t
-typedef struct effect_interface_s **effect_handle_t;
-
-// Effect control interface definition
-struct effect_interface_s {
-    ////////////////////////////////////////////////////////////////////////////////
-    //
-    //    Function:       process
-    //
-    //    Description:    Effect process function. Takes input samples as specified
-    //          (count and location) in input buffer descriptor and output processed
-    //          samples as specified in output buffer descriptor. If the buffer descriptor
-    //          is not specified the function must use either the buffer or the
-    //          buffer provider function installed by the EFFECT_CMD_SET_CONFIG command.
-    //          The effect framework will call the process() function after the EFFECT_CMD_ENABLE
-    //          command is received and until the EFFECT_CMD_DISABLE is received. When the engine
-    //          receives the EFFECT_CMD_DISABLE command it should turn off the effect gracefully
-    //          and when done indicate that it is OK to stop calling the process() function by
-    //          returning the -ENODATA status.
-    //
-    //    NOTE: the process() function implementation should be "real-time safe" that is
-    //      it should not perform blocking calls: malloc/free, sleep, read/write/open/close,
-    //      pthread_cond_wait/pthread_mutex_lock...
-    //
-    //    Input:
-    //          self:       handle to the effect interface this function
-    //              is called on.
-    //          inBuffer:   buffer descriptor indicating where to read samples to process.
-    //              If NULL, use the configuration passed by EFFECT_CMD_SET_CONFIG command.
-    //
-    //          outBuffer:   buffer descriptor indicating where to write processed samples.
-    //              If NULL, use the configuration passed by EFFECT_CMD_SET_CONFIG command.
-    //
-    //    Output:
-    //        returned value:    0 successful operation
-    //                          -ENODATA the engine has finished the disable phase and the framework
-    //                                  can stop calling process()
-    //                          -EINVAL invalid interface handle or
-    //                                  invalid input/output buffer description
-    ////////////////////////////////////////////////////////////////////////////////
-    int32_t (*process)(effect_handle_t self,
-                       audio_buffer_t *inBuffer,
-                       audio_buffer_t *outBuffer);
-    ////////////////////////////////////////////////////////////////////////////////
-    //
-    //    Function:       command
-    //
-    //    Description:    Send a command and receive a response to/from effect engine.
-    //
-    //    Input:
-    //          self:       handle to the effect interface this function
-    //              is called on.
-    //          cmdCode:    command code: the command can be a standardized command defined in
-    //              effect_command_e (see below) or a proprietary command.
-    //          cmdSize:    size of command in bytes
-    //          pCmdData:   pointer to command data
-    //          pReplyData: pointer to reply data
-    //
-    //    Input/Output:
-    //          replySize: maximum size of reply data as input
-    //                      actual size of reply data as output
-    //
-    //    Output:
-    //          returned value: 0       successful operation
-    //                          -EINVAL invalid interface handle or
-    //                                  invalid command/reply size or format according to
-    //                                  command code
-    //              The return code should be restricted to indicate problems related to this API
-    //              specification. Status related to the execution of a particular command should be
-    //              indicated as part of the reply field.
-    //
-    //          *pReplyData updated with command response
-    //
-    ////////////////////////////////////////////////////////////////////////////////
-    int32_t (*command)(effect_handle_t self,
-                       uint32_t cmdCode,
-                       uint32_t cmdSize,
-                       void *pCmdData,
-                       uint32_t *replySize,
-                       void *pReplyData);
-    ////////////////////////////////////////////////////////////////////////////////
-    //
-    //    Function:        get_descriptor
-    //
-    //    Description:    Returns the effect descriptor
-    //
-    //    Input:
-    //          self:       handle to the effect interface this function
-    //              is called on.
-    //
-    //    Input/Output:
-    //          pDescriptor:    address where to return the effect descriptor.
-    //
-    //    Output:
-    //        returned value:    0          successful operation.
-    //                          -EINVAL     invalid interface handle or invalid pDescriptor
-    //        *pDescriptor:     updated with the effect descriptor.
-    //
-    ////////////////////////////////////////////////////////////////////////////////
-    int32_t (*get_descriptor)(effect_handle_t self,
-                              effect_descriptor_t *pDescriptor);
-    ////////////////////////////////////////////////////////////////////////////////
-    //
-    //    Function:       process_reverse
-    //
-    //    Description:    Process reverse stream function. This function is used to pass
-    //          a reference stream to the effect engine. If the engine does not need a reference
-    //          stream, this function pointer can be set to NULL.
-    //          This function would typically implemented by an Echo Canceler.
-    //
-    //    Input:
-    //          self:       handle to the effect interface this function
-    //              is called on.
-    //          inBuffer:   buffer descriptor indicating where to read samples to process.
-    //              If NULL, use the configuration passed by EFFECT_CMD_SET_CONFIG_REVERSE command.
-    //
-    //          outBuffer:   buffer descriptor indicating where to write processed samples.
-    //              If NULL, use the configuration passed by EFFECT_CMD_SET_CONFIG_REVERSE command.
-    //              If the buffer and buffer provider in the configuration received by
-    //              EFFECT_CMD_SET_CONFIG_REVERSE are also NULL, do not return modified reverse
-    //              stream data
-    //
-    //    Output:
-    //        returned value:    0 successful operation
-    //                          -ENODATA the engine has finished the disable phase and the framework
-    //                                  can stop calling process_reverse()
-    //                          -EINVAL invalid interface handle or
-    //                                  invalid input/output buffer description
-    ////////////////////////////////////////////////////////////////////////////////
-    int32_t (*process_reverse)(effect_handle_t self,
-                               audio_buffer_t *inBuffer,
-                               audio_buffer_t *outBuffer);
-};
-
-/////////////////////////////////////////////////
-//      Effect library interface
-/////////////////////////////////////////////////
-
-// Effect library interface version 3.0
-// Note that EffectsFactory.c only checks the major version component, so changes to the minor
-// number can only be used for fully backwards compatible changes
-#define EFFECT_LIBRARY_API_VERSION EFFECT_MAKE_API_VERSION(3,0)
-
-#define AUDIO_EFFECT_LIBRARY_TAG ((('A') << 24) | (('E') << 16) | (('L') << 8) | ('T'))
-
-// Every effect library must have a data structure named AUDIO_EFFECT_LIBRARY_INFO_SYM
-// and the fields of this data structure must begin with audio_effect_library_t
-
-typedef struct audio_effect_library_s {
-    // tag must be initialized to AUDIO_EFFECT_LIBRARY_TAG
-    uint32_t tag;
-    // Version of the effect library API : 0xMMMMmmmm MMMM: Major, mmmm: minor
-    uint32_t version;
-    // Name of this library
-    const char *name;
-    // Author/owner/implementor of the library
-    const char *implementor;
-
-    ////////////////////////////////////////////////////////////////////////////////
-    //
-    //    Function:        create_effect
-    //
-    //    Description:    Creates an effect engine of the specified implementation uuid and
-    //          returns an effect control interface on this engine. The function will allocate the
-    //          resources for an instance of the requested effect engine and return
-    //          a handle on the effect control interface.
-    //
-    //    Input:
-    //          uuid:    pointer to the effect uuid.
-    //          sessionId:  audio session to which this effect instance will be attached.
-    //              All effects created with the same session ID are connected in series and process
-    //              the same signal stream. Knowing that two effects are part of the same effect
-    //              chain can help the library implement some kind of optimizations.
-    //          ioId:   identifies the output or input stream this effect is directed to in
-    //              audio HAL.
-    //              For future use especially with tunneled HW accelerated effects
-    //
-    //    Input/Output:
-    //          pHandle:        address where to return the effect interface handle.
-    //
-    //    Output:
-    //        returned value:    0          successful operation.
-    //                          -ENODEV     library failed to initialize
-    //                          -EINVAL     invalid pEffectUuid or pHandle
-    //                          -ENOENT     no effect with this uuid found
-    //        *pHandle:         updated with the effect interface handle.
-    //
-    ////////////////////////////////////////////////////////////////////////////////
-    int32_t (*create_effect)(const effect_uuid_t *uuid,
-                             int32_t sessionId,
-                             int32_t ioId,
-                             effect_handle_t *pHandle);
-
-    ////////////////////////////////////////////////////////////////////////////////
-    //
-    //    Function:        release_effect
-    //
-    //    Description:    Releases the effect engine whose handle is given as argument.
-    //          All resources allocated to this particular instance of the effect are
-    //          released.
-    //
-    //    Input:
-    //          handle:         handle on the effect interface to be released.
-    //
-    //    Output:
-    //        returned value:    0          successful operation.
-    //                          -ENODEV     library failed to initialize
-    //                          -EINVAL     invalid interface handle
-    //
-    ////////////////////////////////////////////////////////////////////////////////
-    int32_t (*release_effect)(effect_handle_t handle);
-
-    ////////////////////////////////////////////////////////////////////////////////
-    //
-    //    Function:        get_descriptor
-    //
-    //    Description:    Returns the descriptor of the effect engine which implementation UUID is
-    //          given as argument.
-    //
-    //    Input/Output:
-    //          uuid:           pointer to the effect uuid.
-    //          pDescriptor:    address where to return the effect descriptor.
-    //
-    //    Output:
-    //        returned value:    0          successful operation.
-    //                          -ENODEV     library failed to initialize
-    //                          -EINVAL     invalid pDescriptor or uuid
-    //        *pDescriptor:     updated with the effect descriptor.
-    //
-    ////////////////////////////////////////////////////////////////////////////////
-    int32_t (*get_descriptor)(const effect_uuid_t *uuid,
-                              effect_descriptor_t *pDescriptor);
-} audio_effect_library_t;
-
-// Name of the hal_module_info
-#define AUDIO_EFFECT_LIBRARY_INFO_SYM         AELI
-
-// Name of the hal_module_info as a string
-#define AUDIO_EFFECT_LIBRARY_INFO_SYM_AS_STR  "AELI"
-
-__END_DECLS
-
-#endif  // ANDROID_AUDIO_EFFECT_H
diff --git a/include/hardware/audio_policy.h b/include/hardware/audio_policy.h
deleted file mode 100644
index bacb1e5..0000000
--- a/include/hardware/audio_policy.h
+++ /dev/null
@@ -1,457 +0,0 @@
-/*
- * Copyright (C) 2011 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-
-#ifndef ANDROID_AUDIO_POLICY_INTERFACE_H
-#define ANDROID_AUDIO_POLICY_INTERFACE_H
-
-#include <stdint.h>
-#include <sys/cdefs.h>
-#include <sys/types.h>
-
-#include <hardware/hardware.h>
-
-#include <system/audio.h>
-#include <system/audio_policy.h>
-
-__BEGIN_DECLS
-
-/**
- * The id of this module
- */
-#define AUDIO_POLICY_HARDWARE_MODULE_ID "audio_policy"
-
-/**
- * Name of the audio devices to open
- */
-#define AUDIO_POLICY_INTERFACE "policy"
-
-/* ---------------------------------------------------------------------------- */
-
-/*
- * The audio_policy and audio_policy_service_ops structs define the
- * communication interfaces between the platform specific audio policy manager
- * and Android generic audio policy manager.
- * The platform specific audio policy manager must implement methods of the
- * audio_policy struct.
- * This implementation makes use of the audio_policy_service_ops to control
- * the activity and configuration of audio input and output streams.
- *
- * The platform specific audio policy manager is in charge of the audio
- * routing and volume control policies for a given platform.
- * The main roles of this module are:
- *   - keep track of current system state (removable device connections, phone
- *     state, user requests...).
- *   System state changes and user actions are notified to audio policy
- *   manager with methods of the audio_policy.
- *
- *   - process get_output() queries received when AudioTrack objects are
- *     created: Those queries return a handler on an output that has been
- *     selected, configured and opened by the audio policy manager and that
- *     must be used by the AudioTrack when registering to the AudioFlinger
- *     with the createTrack() method.
- *   When the AudioTrack object is released, a release_output() query
- *   is received and the audio policy manager can decide to close or
- *   reconfigure the output depending on other streams using this output and
- *   current system state.
- *
- *   - similarly process get_input() and release_input() queries received from
- *     AudioRecord objects and configure audio inputs.
- *   - process volume control requests: the stream volume is converted from
- *     an index value (received from UI) to a float value applicable to each
- *     output as a function of platform specific settings and current output
- *     route (destination device). It also make sure that streams are not
- *     muted if not allowed (e.g. camera shutter sound in some countries).
- */
-
-/* XXX: this should be defined OUTSIDE of frameworks/base */
-struct effect_descriptor_s;
-
-struct audio_policy {
-    /*
-     * configuration functions
-     */
-
-    /* indicate a change in device connection status */
-    int (*set_device_connection_state)(struct audio_policy *pol,
-                                       audio_devices_t device,
-                                       audio_policy_dev_state_t state,
-                                       const char *device_address);
-
-    /* retrieve a device connection status */
-    audio_policy_dev_state_t (*get_device_connection_state)(
-                                            const struct audio_policy *pol,
-                                            audio_devices_t device,
-                                            const char *device_address);
-
-    /* indicate a change in phone state. Valid phones states are defined
-     * by audio_mode_t */
-    void (*set_phone_state)(struct audio_policy *pol, audio_mode_t state);
-
-    /* deprecated, never called (was "indicate a change in ringer mode") */
-    void (*set_ringer_mode)(struct audio_policy *pol, uint32_t mode,
-                            uint32_t mask);
-
-    /* force using a specific device category for the specified usage */
-    void (*set_force_use)(struct audio_policy *pol,
-                          audio_policy_force_use_t usage,
-                          audio_policy_forced_cfg_t config);
-
-    /* retrieve current device category forced for a given usage */
-    audio_policy_forced_cfg_t (*get_force_use)(const struct audio_policy *pol,
-                                               audio_policy_force_use_t usage);
-
-    /* if can_mute is true, then audio streams that are marked ENFORCED_AUDIBLE
-     * can still be muted. */
-    void (*set_can_mute_enforced_audible)(struct audio_policy *pol,
-                                          bool can_mute);
-
-    /* check proper initialization */
-    int (*init_check)(const struct audio_policy *pol);
-
-    /*
-     * Audio routing query functions
-     */
-
-    /* request an output appropriate for playback of the supplied stream type and
-     * parameters */
-    audio_io_handle_t (*get_output)(struct audio_policy *pol,
-                                    audio_stream_type_t stream,
-                                    uint32_t samplingRate,
-                                    audio_format_t format,
-                                    audio_channel_mask_t channelMask,
-                                    audio_output_flags_t flags,
-                                    const audio_offload_info_t *offloadInfo);
-
-    /* indicates to the audio policy manager that the output starts being used
-     * by corresponding stream. */
-    int (*start_output)(struct audio_policy *pol,
-                        audio_io_handle_t output,
-                        audio_stream_type_t stream,
-                        audio_session_t session);
-
-    /* indicates to the audio policy manager that the output stops being used
-     * by corresponding stream. */
-    int (*stop_output)(struct audio_policy *pol,
-                       audio_io_handle_t output,
-                       audio_stream_type_t stream,
-                       audio_session_t session);
-
-    /* releases the output. */
-    void (*release_output)(struct audio_policy *pol, audio_io_handle_t output);
-
-    /* request an input appropriate for record from the supplied device with
-     * supplied parameters. */
-    audio_io_handle_t (*get_input)(struct audio_policy *pol, audio_source_t inputSource,
-                                   uint32_t samplingRate,
-                                   audio_format_t format,
-                                   audio_channel_mask_t channelMask,
-                                   audio_in_acoustics_t acoustics);
-
-    /* indicates to the audio policy manager that the input starts being used */
-    int (*start_input)(struct audio_policy *pol, audio_io_handle_t input);
-
-    /* indicates to the audio policy manager that the input stops being used. */
-    int (*stop_input)(struct audio_policy *pol, audio_io_handle_t input);
-
-    /* releases the input. */
-    void (*release_input)(struct audio_policy *pol, audio_io_handle_t input);
-
-    /*
-     * volume control functions
-     */
-
-    /* initialises stream volume conversion parameters by specifying volume
-     * index range. The index range for each stream is defined by AudioService. */
-    void (*init_stream_volume)(struct audio_policy *pol,
-                               audio_stream_type_t stream,
-                               int index_min,
-                               int index_max);
-
-    /* sets the new stream volume at a level corresponding to the supplied
-     * index. The index is within the range specified by init_stream_volume() */
-    int (*set_stream_volume_index)(struct audio_policy *pol,
-                                   audio_stream_type_t stream,
-                                   int index);
-
-    /* retrieve current volume index for the specified stream */
-    int (*get_stream_volume_index)(const struct audio_policy *pol,
-                                   audio_stream_type_t stream,
-                                   int *index);
-
-    /* sets the new stream volume at a level corresponding to the supplied
-     * index for the specified device.
-     * The index is within the range specified by init_stream_volume() */
-    int (*set_stream_volume_index_for_device)(struct audio_policy *pol,
-                                   audio_stream_type_t stream,
-                                   int index,
-                                   audio_devices_t device);
-
-    /* retrieve current volume index for the specified stream for the specified device */
-    int (*get_stream_volume_index_for_device)(const struct audio_policy *pol,
-                                   audio_stream_type_t stream,
-                                   int *index,
-                                   audio_devices_t device);
-
-    /* return the strategy corresponding to a given stream type */
-    uint32_t (*get_strategy_for_stream)(const struct audio_policy *pol,
-                                        audio_stream_type_t stream);
-
-    /* return the enabled output devices for the given stream type */
-    audio_devices_t (*get_devices_for_stream)(const struct audio_policy *pol,
-                                       audio_stream_type_t stream);
-
-    /* Audio effect management */
-    audio_io_handle_t (*get_output_for_effect)(struct audio_policy *pol,
-                                            const struct effect_descriptor_s *desc);
-
-    int (*register_effect)(struct audio_policy *pol,
-                           const struct effect_descriptor_s *desc,
-                           audio_io_handle_t output,
-                           uint32_t strategy,
-                           audio_session_t session,
-                           int id);
-
-    int (*unregister_effect)(struct audio_policy *pol, int id);
-
-    int (*set_effect_enabled)(struct audio_policy *pol, int id, bool enabled);
-
-    bool (*is_stream_active)(const struct audio_policy *pol,
-            audio_stream_type_t stream,
-            uint32_t in_past_ms);
-
-    bool (*is_stream_active_remotely)(const struct audio_policy *pol,
-            audio_stream_type_t stream,
-            uint32_t in_past_ms);
-
-    bool (*is_source_active)(const struct audio_policy *pol,
-            audio_source_t source);
-
-    /* dump state */
-    int (*dump)(const struct audio_policy *pol, int fd);
-
-    /* check if offload is possible for given sample rate, bitrate, duration, ... */
-    bool (*is_offload_supported)(const struct audio_policy *pol,
-                                const audio_offload_info_t *info);
-};
-
-
-struct audio_policy_service_ops {
-    /*
-     * Audio output Control functions
-     */
-
-    /* Opens an audio output with the requested parameters.
-     *
-     * The parameter values can indicate to use the default values in case the
-     * audio policy manager has no specific requirements for the output being
-     * opened.
-     *
-     * When the function returns, the parameter values reflect the actual
-     * values used by the audio hardware output stream.
-     *
-     * The audio policy manager can check if the proposed parameters are
-     * suitable or not and act accordingly.
-     */
-    audio_io_handle_t (*open_output)(void *service,
-                                     audio_devices_t *pDevices,
-                                     uint32_t *pSamplingRate,
-                                     audio_format_t *pFormat,
-                                     audio_channel_mask_t *pChannelMask,
-                                     uint32_t *pLatencyMs,
-                                     audio_output_flags_t flags);
-
-    /* creates a special output that is duplicated to the two outputs passed as
-     * arguments. The duplication is performed by
-     * a special mixer thread in the AudioFlinger.
-     */
-    audio_io_handle_t (*open_duplicate_output)(void *service,
-                                               audio_io_handle_t output1,
-                                               audio_io_handle_t output2);
-
-    /* closes the output stream */
-    int (*close_output)(void *service, audio_io_handle_t output);
-
-    /* suspends the output.
-     *
-     * When an output is suspended, the corresponding audio hardware output
-     * stream is placed in standby and the AudioTracks attached to the mixer
-     * thread are still processed but the output mix is discarded.
-     */
-    int (*suspend_output)(void *service, audio_io_handle_t output);
-
-    /* restores a suspended output. */
-    int (*restore_output)(void *service, audio_io_handle_t output);
-
-    /* */
-    /* Audio input Control functions */
-    /* */
-
-    /* opens an audio input
-     * deprecated - new implementations should use open_input_on_module,
-     * and the acoustics parameter is ignored
-     */
-    audio_io_handle_t (*open_input)(void *service,
-                                    audio_devices_t *pDevices,
-                                    uint32_t *pSamplingRate,
-                                    audio_format_t *pFormat,
-                                    audio_channel_mask_t *pChannelMask,
-                                    audio_in_acoustics_t acoustics);
-
-    /* closes an audio input */
-    int (*close_input)(void *service, audio_io_handle_t input);
-
-    /* */
-    /* misc control functions */
-    /* */
-
-    /* set a stream volume for a particular output.
-     *
-     * For the same user setting, a given stream type can have different
-     * volumes for each output (destination device) it is attached to.
-     */
-    int (*set_stream_volume)(void *service,
-                             audio_stream_type_t stream,
-                             float volume,
-                             audio_io_handle_t output,
-                             int delay_ms);
-
-    /* invalidate a stream type, causing a reroute to an unspecified new output */
-    int (*invalidate_stream)(void *service,
-                             audio_stream_type_t stream);
-
-    /* function enabling to send proprietary informations directly from audio
-     * policy manager to audio hardware interface. */
-    void (*set_parameters)(void *service,
-                           audio_io_handle_t io_handle,
-                           const char *kv_pairs,
-                           int delay_ms);
-
-    /* function enabling to receive proprietary informations directly from
-     * audio hardware interface to audio policy manager.
-     *
-     * Returns a pointer to a heap allocated string. The caller is responsible
-     * for freeing the memory for it using free().
-     */
-
-    char * (*get_parameters)(void *service, audio_io_handle_t io_handle,
-                             const char *keys);
-
-    /* request the playback of a tone on the specified stream.
-     * used for instance to replace notification sounds when playing over a
-     * telephony device during a phone call.
-     */
-    int (*start_tone)(void *service,
-                      audio_policy_tone_t tone,
-                      audio_stream_type_t stream);
-
-    int (*stop_tone)(void *service);
-
-    /* set down link audio volume. */
-    int (*set_voice_volume)(void *service,
-                            float volume,
-                            int delay_ms);
-
-    /* move effect to the specified output */
-    int (*move_effects)(void *service,
-                        audio_session_t session,
-                        audio_io_handle_t src_output,
-                        audio_io_handle_t dst_output);
-
-    /* loads an audio hw module.
-     *
-     * The module name passed is the base name of the HW module library, e.g "primary" or "a2dp".
-     * The function returns a handle on the module that will be used to specify a particular
-     * module when calling open_output_on_module() or open_input_on_module()
-     */
-    audio_module_handle_t (*load_hw_module)(void *service,
-                                              const char *name);
-
-    /* Opens an audio output on a particular HW module.
-     *
-     * Same as open_output() but specifying a specific HW module on which the output must be opened.
-     */
-    audio_io_handle_t (*open_output_on_module)(void *service,
-                                     audio_module_handle_t module,
-                                     audio_devices_t *pDevices,
-                                     uint32_t *pSamplingRate,
-                                     audio_format_t *pFormat,
-                                     audio_channel_mask_t *pChannelMask,
-                                     uint32_t *pLatencyMs,
-                                     audio_output_flags_t flags,
-                                     const audio_offload_info_t *offloadInfo);
-
-    /* Opens an audio input on a particular HW module.
-     *
-     * Same as open_input() but specifying a specific HW module on which the input must be opened.
-     * Also removed deprecated acoustics parameter
-     */
-    audio_io_handle_t (*open_input_on_module)(void *service,
-                                    audio_module_handle_t module,
-                                    audio_devices_t *pDevices,
-                                    uint32_t *pSamplingRate,
-                                    audio_format_t *pFormat,
-                                    audio_channel_mask_t *pChannelMask);
-
-};
-
-/**********************************************************************/
-
-/**
- * Every hardware module must have a data structure named HAL_MODULE_INFO_SYM
- * and the fields of this data structure must begin with hw_module_t
- * followed by module specific information.
- */
-typedef struct audio_policy_module {
-    struct hw_module_t common;
-} audio_policy_module_t;
-
-struct audio_policy_device {
-    /**
-     * Common methods of the audio policy device.  This *must* be the first member of
-     * audio_policy_device as users of this structure will cast a hw_device_t to
-     * audio_policy_device pointer in contexts where it's known the hw_device_t references an
-     * audio_policy_device.
-     */
-    struct hw_device_t common;
-
-    int (*create_audio_policy)(const struct audio_policy_device *device,
-                               struct audio_policy_service_ops *aps_ops,
-                               void *service,
-                               struct audio_policy **ap);
-
-    int (*destroy_audio_policy)(const struct audio_policy_device *device,
-                                struct audio_policy *ap);
-};
-
-/** convenience API for opening and closing a supported device */
-
-static inline int audio_policy_dev_open(const hw_module_t* module,
-                                    struct audio_policy_device** device)
-{
-    return module->methods->open(module, AUDIO_POLICY_INTERFACE,
-                                 (hw_device_t**)device);
-}
-
-static inline int audio_policy_dev_close(struct audio_policy_device* device)
-{
-    return device->common.close(&device->common);
-}
-
-
-__END_DECLS
-
-#endif  // ANDROID_AUDIO_POLICY_INTERFACE_H
diff --git a/modules/audio/Android.bp b/modules/audio/Android.bp
index a7467c2..7929c66 100644
--- a/modules/audio/Android.bp
+++ b/modules/audio/Android.bp
@@ -23,7 +23,10 @@
     relative_install_path: "hw",
     proprietary: true,
     srcs: ["audio_hw.c"],
-    header_libs: ["libhardware_headers"],
+    header_libs: [
+        "libhardware_headers",
+        "android.hardware.audio.common.legacy@2.0",
+    ],
     shared_libs: [
         "liblog",
     ],
@@ -41,21 +44,10 @@
     relative_install_path: "hw",
     proprietary: true,
     srcs: ["audio_hw.c"],
-    header_libs: ["libhardware_headers"],
-    shared_libs: [
-        "liblog",
+    header_libs: [
+        "libhardware_headers",
+        "android.hardware.audio.common.legacy@2.0",
     ],
-    cflags: ["-Wall", "-Werror", "-Wno-unused-parameter"],
-}
-
-// The stub audio policy HAL module that can be used as a skeleton for
-// new implementations.
-cc_library_shared {
-    name: "audio_policy.stub",
-    relative_install_path: "hw",
-    proprietary: true,
-    srcs: ["audio_policy.c"],
-    header_libs: ["libhardware_headers"],
     shared_libs: [
         "liblog",
     ],
diff --git a/modules/audio/audio_policy.c b/modules/audio/audio_policy.c
deleted file mode 100644
index 4f9cd5a..0000000
--- a/modules/audio/audio_policy.c
+++ /dev/null
@@ -1,350 +0,0 @@
-/*
- * Copyright (C) 2011 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#define LOG_TAG "audio_policy_default"
-//#define LOG_NDEBUG 0
-
-#include <errno.h>
-#include <stdint.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include <hardware/hardware.h>
-#include <system/audio.h>
-#include <system/audio_policy.h>
-#include <hardware/audio_policy.h>
-
-struct default_ap_module {
-    struct audio_policy_module module;
-};
-
-struct default_ap_device {
-    struct audio_policy_device device;
-};
-
-struct default_audio_policy {
-    struct audio_policy policy;
-
-    struct audio_policy_service_ops *aps_ops;
-    void *service;
-};
-
-static int ap_set_device_connection_state(struct audio_policy *pol,
-                                          audio_devices_t device,
-                                          audio_policy_dev_state_t state,
-                                          const char *device_address)
-{
-    return -ENOSYS;
-}
-
-static audio_policy_dev_state_t ap_get_device_connection_state(
-                                            const struct audio_policy *pol,
-                                            audio_devices_t device,
-                                            const char *device_address)
-{
-    return AUDIO_POLICY_DEVICE_STATE_UNAVAILABLE;
-}
-
-static void ap_set_phone_state(struct audio_policy *pol, audio_mode_t state)
-{
-}
-
-// deprecated, never called
-static void ap_set_ringer_mode(struct audio_policy *pol, uint32_t mode,
-                               uint32_t mask)
-{
-}
-
-static void ap_set_force_use(struct audio_policy *pol,
-                          audio_policy_force_use_t usage,
-                          audio_policy_forced_cfg_t config)
-{
-}
-
-    /* retreive current device category forced for a given usage */
-static audio_policy_forced_cfg_t ap_get_force_use(
-                                               const struct audio_policy *pol,
-                                               audio_policy_force_use_t usage)
-{
-    return AUDIO_POLICY_FORCE_NONE;
-}
-
-/* if can_mute is true, then audio streams that are marked ENFORCED_AUDIBLE
- * can still be muted. */
-static void ap_set_can_mute_enforced_audible(struct audio_policy *pol,
-                                             bool can_mute)
-{
-}
-
-static int ap_init_check(const struct audio_policy *pol)
-{
-    return 0;
-}
-
-static audio_io_handle_t ap_get_output(struct audio_policy *pol,
-                                       audio_stream_type_t stream,
-                                       uint32_t sampling_rate,
-                                       audio_format_t format,
-                                       audio_channel_mask_t channelMask,
-                                       audio_output_flags_t flags,
-                                       const audio_offload_info_t *info)
-{
-    return 0;
-}
-
-static int ap_start_output(struct audio_policy *pol, audio_io_handle_t output,
-                           audio_stream_type_t stream, int session)
-{
-    return -ENOSYS;
-}
-
-static int ap_stop_output(struct audio_policy *pol, audio_io_handle_t output,
-                          audio_stream_type_t stream, int session)
-{
-    return -ENOSYS;
-}
-
-static void ap_release_output(struct audio_policy *pol,
-                              audio_io_handle_t output)
-{
-}
-
-static audio_io_handle_t ap_get_input(struct audio_policy *pol, audio_source_t inputSource,
-                                      uint32_t sampling_rate,
-                                      audio_format_t format,
-                                      audio_channel_mask_t channelMask,
-                                      audio_in_acoustics_t acoustics)
-{
-    return 0;
-}
-
-static int ap_start_input(struct audio_policy *pol, audio_io_handle_t input)
-{
-    return -ENOSYS;
-}
-
-static int ap_stop_input(struct audio_policy *pol, audio_io_handle_t input)
-{
-    return -ENOSYS;
-}
-
-static void ap_release_input(struct audio_policy *pol, audio_io_handle_t input)
-{
-}
-
-static void ap_init_stream_volume(struct audio_policy *pol,
-                                  audio_stream_type_t stream, int index_min,
-                                  int index_max)
-{
-}
-
-static int ap_set_stream_volume_index(struct audio_policy *pol,
-                                      audio_stream_type_t stream,
-                                      int index)
-{
-    return -ENOSYS;
-}
-
-static int ap_get_stream_volume_index(const struct audio_policy *pol,
-                                      audio_stream_type_t stream,
-                                      int *index)
-{
-    return -ENOSYS;
-}
-
-static int ap_set_stream_volume_index_for_device(struct audio_policy *pol,
-                                      audio_stream_type_t stream,
-                                      int index,
-                                      audio_devices_t device)
-{
-    return -ENOSYS;
-}
-
-static int ap_get_stream_volume_index_for_device(const struct audio_policy *pol,
-                                      audio_stream_type_t stream,
-                                      int *index,
-                                      audio_devices_t device)
-{
-    return -ENOSYS;
-}
-
-static uint32_t ap_get_strategy_for_stream(const struct audio_policy *pol,
-                                           audio_stream_type_t stream)
-{
-    return 0;
-}
-
-static audio_devices_t ap_get_devices_for_stream(const struct audio_policy *pol,
-                                          audio_stream_type_t stream)
-{
-    return 0;
-}
-
-static audio_io_handle_t ap_get_output_for_effect(struct audio_policy *pol,
-                                            const struct effect_descriptor_s *desc)
-{
-    return 0;
-}
-
-static int ap_register_effect(struct audio_policy *pol,
-                              const struct effect_descriptor_s *desc,
-                              audio_io_handle_t output,
-                              uint32_t strategy,
-                              int session,
-                              int id)
-{
-    return -ENOSYS;
-}
-
-static int ap_unregister_effect(struct audio_policy *pol, int id)
-{
-    return -ENOSYS;
-}
-
-static int ap_set_effect_enabled(struct audio_policy *pol, int id, bool enabled)
-{
-    return -ENOSYS;
-}
-
-static bool ap_is_stream_active(const struct audio_policy *pol, audio_stream_type_t stream,
-                                uint32_t in_past_ms)
-{
-    return false;
-}
-
-static int ap_dump(const struct audio_policy *pol, int fd)
-{
-    return -ENOSYS;
-}
-
-static bool ap_is_offload_supported(const struct audio_policy *pol,
-                                   const audio_offload_info_t *info)
-{
-    return false;
-}
-
-static int create_default_ap(const struct audio_policy_device *device,
-                             struct audio_policy_service_ops *aps_ops,
-                             void *service,
-                             struct audio_policy **ap)
-{
-    struct default_audio_policy *dap;
-
-    *ap = NULL;
-
-    if (!service || !aps_ops)
-        return -EINVAL;
-
-    dap = (struct default_audio_policy *)calloc(1, sizeof(*dap));
-    if (!dap)
-        return -ENOMEM;
-
-    dap->policy.set_device_connection_state = ap_set_device_connection_state;
-    dap->policy.get_device_connection_state = ap_get_device_connection_state;
-    dap->policy.set_phone_state = ap_set_phone_state;
-    dap->policy.set_ringer_mode = ap_set_ringer_mode;
-    dap->policy.set_force_use = ap_set_force_use;
-    dap->policy.get_force_use = ap_get_force_use;
-    dap->policy.set_can_mute_enforced_audible =
-        ap_set_can_mute_enforced_audible;
-    dap->policy.init_check = ap_init_check;
-    dap->policy.get_output = ap_get_output;
-    dap->policy.start_output = ap_start_output;
-    dap->policy.stop_output = ap_stop_output;
-    dap->policy.release_output = ap_release_output;
-    dap->policy.get_input = ap_get_input;
-    dap->policy.start_input = ap_start_input;
-    dap->policy.stop_input = ap_stop_input;
-    dap->policy.release_input = ap_release_input;
-    dap->policy.init_stream_volume = ap_init_stream_volume;
-    dap->policy.set_stream_volume_index = ap_set_stream_volume_index;
-    dap->policy.get_stream_volume_index = ap_get_stream_volume_index;
-    dap->policy.set_stream_volume_index_for_device = ap_set_stream_volume_index_for_device;
-    dap->policy.get_stream_volume_index_for_device = ap_get_stream_volume_index_for_device;
-    dap->policy.get_strategy_for_stream = ap_get_strategy_for_stream;
-    dap->policy.get_devices_for_stream = ap_get_devices_for_stream;
-    dap->policy.get_output_for_effect = ap_get_output_for_effect;
-    dap->policy.register_effect = ap_register_effect;
-    dap->policy.unregister_effect = ap_unregister_effect;
-    dap->policy.set_effect_enabled = ap_set_effect_enabled;
-    dap->policy.is_stream_active = ap_is_stream_active;
-    dap->policy.dump = ap_dump;
-
-    dap->policy.is_offload_supported = ap_is_offload_supported;
-
-    dap->service = service;
-    dap->aps_ops = aps_ops;
-
-    *ap = &dap->policy;
-    return 0;
-}
-
-static int destroy_default_ap(const struct audio_policy_device *ap_dev,
-                              struct audio_policy *ap)
-{
-    free(ap);
-    return 0;
-}
-
-static int default_ap_dev_close(hw_device_t* device)
-{
-    free(device);
-    return 0;
-}
-
-static int default_ap_dev_open(const hw_module_t* module, const char* name,
-                               hw_device_t** device)
-{
-    struct default_ap_device *dev;
-
-    *device = NULL;
-
-    if (strcmp(name, AUDIO_POLICY_INTERFACE) != 0)
-        return -EINVAL;
-
-    dev = (struct default_ap_device *)calloc(1, sizeof(*dev));
-    if (!dev)
-        return -ENOMEM;
-
-    dev->device.common.tag = HARDWARE_DEVICE_TAG;
-    dev->device.common.version = 0;
-    dev->device.common.module = (hw_module_t *)module;
-    dev->device.common.close = default_ap_dev_close;
-    dev->device.create_audio_policy = create_default_ap;
-    dev->device.destroy_audio_policy = destroy_default_ap;
-
-    *device = &dev->device.common;
-
-    return 0;
-}
-
-static struct hw_module_methods_t default_ap_module_methods = {
-    .open = default_ap_dev_open,
-};
-
-struct default_ap_module HAL_MODULE_INFO_SYM = {
-    .module = {
-        .common = {
-            .tag            = HARDWARE_MODULE_TAG,
-            .version_major  = 1,
-            .version_minor  = 0,
-            .id             = AUDIO_POLICY_HARDWARE_MODULE_ID,
-            .name           = "Default audio policy HAL",
-            .author         = "The Android Open Source Project",
-            .methods        = &default_ap_module_methods,
-        },
-    },
-};
diff --git a/modules/audio_remote_submix/Android.bp b/modules/audio_remote_submix/Android.bp
index c7d018c..578949e 100644
--- a/modules/audio_remote_submix/Android.bp
+++ b/modules/audio_remote_submix/Android.bp
@@ -17,16 +17,15 @@
     relative_install_path: "hw",
     vendor: true,
     srcs: ["audio_hw.cpp"],
-    include_dirs: [
-        "system/media/audio_utils/include",
-    ],
+
     shared_libs: [
         "liblog",
         "libcutils",
         "libutils",
-        "libnbaio_mono",
+        "libnbaio_mono@2.0",
+        "libaudioutils",
     ],
-    static_libs: ["libmedia_helper"],
+    static_libs: ["libmedia_helper@2.0"],
 
     cflags: ["-Wno-unused-parameter"],
 
diff --git a/modules/usbaudio/Android.bp b/modules/usbaudio/Android.bp
index c7d403f..ecc74fb 100644
--- a/modules/usbaudio/Android.bp
+++ b/modules/usbaudio/Android.bp
@@ -25,5 +25,7 @@
         "libalsautils",
     ],
     cflags: ["-Wno-unused-parameter"],
-    header_libs: ["libhardware_headers"],
+    header_libs: [
+        "android.hardware.audio.common.legacy@2.0",
+    ],
 }