/*
|
* Copyright (C) 2016 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.
|
*/
|
|
package android.hardware.audio@2.0;
|
|
import android.hardware.audio.common@2.0;
|
|
enum Result : int32_t {
|
OK,
|
NOT_INITIALIZED,
|
INVALID_ARGUMENTS,
|
INVALID_STATE,
|
NOT_SUPPORTED
|
};
|
|
@export(name="audio_drain_type_t", value_prefix="AUDIO_DRAIN_")
|
enum AudioDrain : int32_t {
|
/** drain() returns when all data has been played. */
|
ALL,
|
/**
|
* drain() returns a short time before all data from the current track has
|
* been played to give time for gapless track switch.
|
*/
|
EARLY_NOTIFY
|
};
|
|
/**
|
* A substitute for POSIX timespec.
|
*/
|
struct TimeSpec {
|
uint64_t tvSec; // seconds
|
uint64_t tvNSec; // nanoseconds
|
};
|
|
/**
|
* IEEE 802 MAC address.
|
*/
|
typedef uint8_t[6] MacAddress;
|
|
struct ParameterValue {
|
string key;
|
string value;
|
};
|
|
/**
|
* Specifies a device in case when several devices of the same type
|
* can be connected (e.g. BT A2DP, USB).
|
*/
|
struct DeviceAddress {
|
AudioDevice device; // discriminator
|
union Address {
|
MacAddress mac; // used for BLUETOOTH_A2DP_*
|
uint8_t[4] ipv4; // used for IP
|
struct Alsa {
|
int32_t card;
|
int32_t device;
|
} alsa; // used for USB_*
|
} address;
|
string busAddress; // used for BUS
|
string rSubmixAddress; // used for REMOTE_SUBMIX
|
};
|
|
/**
|
* Mmap buffer descriptor returned by IStream.createMmapBuffer().
|
* Used by streams opened in mmap mode.
|
*/
|
struct MmapBufferInfo {
|
memory sharedMemory; // mmap memory buffer
|
int32_t bufferSizeFrames; // total buffer size in frames
|
int32_t burstSizeFrames; // transfer size granularity in frames
|
};
|
|
/**
|
* Mmap buffer read/write position returned by IStream.getMmapPosition().
|
* Used by streams opened in mmap mode.
|
*/
|
struct MmapPosition {
|
int64_t timeNanoseconds; // time stamp in ns, CLOCK_MONOTONIC
|
int32_t positionFrames; // increasing 32 bit frame count reset when IStream.stop() is called
|
};
|
|
/**
|
* The message queue flags used to synchronize reads and writes from
|
* message queues used by StreamIn and StreamOut.
|
*/
|
enum MessageQueueFlagBits : uint32_t {
|
NOT_EMPTY = 1 << 0,
|
NOT_FULL = 1 << 1
|
};
|