1/* 2 * Copyright (C) 2016 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17package android.hardware.audio@2.0; 18 19import android.hardware.audio.common@2.0; 20 21enum Result : int32_t { 22 OK, 23 NOT_INITIALIZED, 24 INVALID_ARGUMENTS, 25 INVALID_STATE, 26 NOT_SUPPORTED 27}; 28 29@export(name="audio_drain_type_t", value_prefix="AUDIO_DRAIN_") 30enum AudioDrain : int32_t { 31 /** drain() returns when all data has been played. */ 32 ALL, 33 /** 34 * drain() returns a short time before all data from the current track has 35 * been played to give time for gapless track switch. 36 */ 37 EARLY_NOTIFY 38}; 39 40/** 41 * A substitute for POSIX timespec. 42 */ 43struct TimeSpec { 44 uint64_t tvSec; // seconds 45 uint64_t tvNSec; // nanoseconds 46}; 47 48/** 49 * IEEE 802 MAC address. 50 */ 51typedef uint8_t[6] MacAddress; 52 53struct ParameterValue { 54 string key; 55 string value; 56}; 57 58/** 59 * Specifies a device in case when several devices of the same type 60 * can be connected (e.g. BT A2DP, USB). 61 */ 62struct DeviceAddress { 63 AudioDevice device; // discriminator 64 union Address { 65 MacAddress mac; // used for BLUETOOTH_A2DP_* 66 uint8_t[4] ipv4; // used for IP 67 struct Alsa { 68 int32_t card; 69 int32_t device; 70 } alsa; // used for USB_* 71 } address; 72 string busAddress; // used for BUS 73 string rSubmixAddress; // used for REMOTE_SUBMIX 74}; 75 76/** 77 * Mmap buffer descriptor returned by IStream.createMmapBuffer(). 78 * Used by streams opened in mmap mode. 79 */ 80struct MmapBufferInfo { 81 memory sharedMemory; // mmap memory buffer 82 int32_t bufferSizeFrames; // total buffer size in frames 83 int32_t burstSizeFrames; // transfer size granularity in frames 84}; 85 86/** 87 * Mmap buffer read/write position returned by IStream.getMmapPosition(). 88 * Used by streams opened in mmap mode. 89 */ 90struct MmapPosition { 91 int64_t timeNanoseconds; // time stamp in ns, CLOCK_MONOTONIC 92 int32_t positionFrames; // increasing 32 bit frame count reset when IStream.stop() is called 93}; 94 95/** 96 * The message queue flags used to synchronize reads and writes from 97 * message queues used by StreamIn and StreamOut. 98 */ 99enum MessageQueueFlagBits : uint32_t { 100 NOT_EMPTY = 1 << 0, 101 NOT_FULL = 1 << 1 102}; 103