1e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen/* ------------------------------------------------------------------ 2e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen * Copyright (C) 1998-2009 PacketVideo 3e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen * 4e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen * Licensed under the Apache License, Version 2.0 (the "License"); 5e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen * you may not use this file except in compliance with the License. 6e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen * You may obtain a copy of the License at 7e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen * 8e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen * http://www.apache.org/licenses/LICENSE-2.0 9e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen * 10e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen * Unless required by applicable law or agreed to in writing, software 11e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen * distributed under the License is distributed on an "AS IS" BASIS, 12e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either 13e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen * express or implied. 14e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen * See the License for the specific language governing permissions 15e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen * and limitations under the License. 16e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen * ------------------------------------------------------------------- 17e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen */ 18c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/* 19e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen * Copyright (c) 2008 The Khronos Group Inc. 20e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen * 21c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * Permission is hereby granted, free of charge, to any person obtaining 22c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * a copy of this software and associated documentation files (the 23c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * "Software"), to deal in the Software without restriction, including 24c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * without limitation the rights to use, copy, modify, merge, publish, 25c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * distribute, sublicense, and/or sell copies of the Software, and to 26c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * permit persons to whom the Software is furnished to do so, subject 27e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen * to the following conditions: 28c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * The above copyright notice and this permission notice shall be included 29e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen * in all copies or substantial portions of the Software. 30e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen * 31c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 32c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 33c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 34c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 35c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 36c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 37e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 38c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * 39c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev */ 40c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 41c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** @file OMX_Audio.h - OpenMax IL version 1.1.2 42c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * The structures needed by Audio components to exchange 43c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * parameters and configuration data with the componenmilts. 44c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev */ 45c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 46c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#ifndef OMX_Audio_h 47c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#define OMX_Audio_h 48c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 49c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#ifdef __cplusplus 50c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevextern "C" { 51c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#endif /* __cplusplus */ 52c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 53c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 54c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/* Each OMX header must include all required header files to allow the 55c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * header to compile without errors. The includes below are required 56e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen * for this header file to compile successfully 57c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev */ 58c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 59c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#include <OMX_Core.h> 60c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 61c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** @defgroup midi MIDI 62c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * @ingroup audio 63c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev */ 64e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen 65c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** @defgroup effects Audio effects 66c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * @ingroup audio 67c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev */ 68c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 69c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** @defgroup audio OpenMAX IL Audio Domain 70c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * Structures for OpenMAX IL Audio domain 71c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * @{ 72c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev */ 73c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 74e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen/** Enumeration used to define the possible audio codings. 75e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen * If "OMX_AUDIO_CodingUnused" is selected, the coding selection must 76e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen * be done in a vendor specific way. Since this is for an audio 77e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen * processing element this enum is relevant. However, for another 78c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * type of component other enums would be in this area. 79c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev */ 80c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef enum OMX_AUDIO_CODINGTYPE { 81c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_CodingUnused = 0, /**< Placeholder value when coding is N/A */ 82c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_CodingAutoDetect, /**< auto detection of audio format */ 83c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_CodingPCM, /**< Any variant of PCM coding */ 84c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_CodingADPCM, /**< Any variant of ADPCM encoded data */ 85c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_CodingAMR, /**< Any variant of AMR encoded data */ 86c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_CodingGSMFR, /**< Any variant of GSM fullrate (i.e. GSM610) */ 87c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_CodingGSMEFR, /**< Any variant of GSM Enhanced Fullrate encoded data*/ 88c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_CodingGSMHR, /**< Any variant of GSM Halfrate encoded data */ 89c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_CodingPDCFR, /**< Any variant of PDC Fullrate encoded data */ 90c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_CodingPDCEFR, /**< Any variant of PDC Enhanced Fullrate encoded data */ 91c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_CodingPDCHR, /**< Any variant of PDC Halfrate encoded data */ 92c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_CodingTDMAFR, /**< Any variant of TDMA Fullrate encoded data (TIA/EIA-136-420) */ 93c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_CodingTDMAEFR, /**< Any variant of TDMA Enhanced Fullrate encoded data (TIA/EIA-136-410) */ 94c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_CodingQCELP8, /**< Any variant of QCELP 8kbps encoded data */ 95c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_CodingQCELP13, /**< Any variant of QCELP 13kbps encoded data */ 96c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_CodingEVRC, /**< Any variant of EVRC encoded data */ 97c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_CodingSMV, /**< Any variant of SMV encoded data */ 98c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_CodingG711, /**< Any variant of G.711 encoded data */ 99c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_CodingG723, /**< Any variant of G.723 dot 1 encoded data */ 100c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_CodingG726, /**< Any variant of G.726 encoded data */ 101c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_CodingG729, /**< Any variant of G.729 encoded data */ 102c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_CodingAAC, /**< Any variant of AAC encoded data */ 103c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_CodingMP3, /**< Any variant of MP3 encoded data */ 104c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_CodingSBC, /**< Any variant of SBC encoded data */ 105c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_CodingVORBIS, /**< Any variant of VORBIS encoded data */ 106c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_CodingWMA, /**< Any variant of WMA encoded data */ 107c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_CodingRA, /**< Any variant of RA encoded data */ 108c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_CodingMIDI, /**< Any variant of MIDI encoded data */ 109e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen OMX_AUDIO_CodingFLAC, /**< Any variant of FLAC encoded data */ 110e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen OMX_AUDIO_CodingKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ 111c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_CodingVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ 112c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_CodingMax = 0x7FFFFFFF 113c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_AUDIO_CODINGTYPE; 114c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 115c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 116e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen/** The PortDefinition structure is used to define all of the parameters 117e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen * necessary for the compliant component to setup an input or an output audio 118c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * path. If additional information is needed to define the parameters of the 119c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * port (such as frequency), additional structures must be sent such as the 120c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * OMX_AUDIO_PARAM_PCMMODETYPE structure to supply the extra parameters for the port. 121c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev */ 122c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef struct OMX_AUDIO_PORTDEFINITIONTYPE { 123c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_STRING cMIMEType; /**< MIME type of data for the port */ 124c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_NATIVE_DEVICETYPE pNativeRender; /** < platform specific reference 125e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen for an output device, 126c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev otherwise this field is 0 */ 127e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen OMX_BOOL bFlagErrorConcealment; /**< Turns on error concealment if it is 128c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev supported by the OMX component */ 129e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen OMX_AUDIO_CODINGTYPE eEncoding; /**< Type of data expected for this 130c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev port (e.g. PCM, AMR, MP3, etc) */ 131c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_AUDIO_PORTDEFINITIONTYPE; 132c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 133c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 134c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** Port format parameter. This structure is used to enumerate 135c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * the various data input/output format supported by the port. 136c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev */ 137c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef struct OMX_AUDIO_PARAM_PORTFORMATTYPE { 138c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nSize; /**< size of the structure in bytes */ 139c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ 140c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nPortIndex; /**< Indicates which port to set */ 141c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nIndex; /**< Indicates the enumeration index for the format from 0x0 to N-1 */ 142c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_CODINGTYPE eEncoding; /**< Type of data expected for this port (e.g. PCM, AMR, MP3, etc) */ 143c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_AUDIO_PARAM_PORTFORMATTYPE; 144c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 145c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 146e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen/** PCM mode type */ 147e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chentypedef enum OMX_AUDIO_PCMMODETYPE { 148e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen OMX_AUDIO_PCMModeLinear = 0, /**< Linear PCM encoded data */ 149e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen OMX_AUDIO_PCMModeALaw, /**< A law PCM encoded data (G.711) */ 150e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen OMX_AUDIO_PCMModeMULaw, /**< Mu law PCM encoded data (G.711) */ 151e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen OMX_AUDIO_PCMModeKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ 152c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_PCMModeVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ 153e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen OMX_AUDIO_PCMModeMax = 0x7FFFFFFF 154e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen} OMX_AUDIO_PCMMODETYPE; 155c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 156c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 157c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef enum OMX_AUDIO_CHANNELTYPE { 158c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_ChannelNone = 0x0, /**< Unused or empty */ 159c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_ChannelLF = 0x1, /**< Left front */ 160c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_ChannelRF = 0x2, /**< Right front */ 161c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_ChannelCF = 0x3, /**< Center front */ 162c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_ChannelLS = 0x4, /**< Left surround */ 163c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_ChannelRS = 0x5, /**< Right surround */ 164c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_ChannelLFE = 0x6, /**< Low frequency effects */ 165c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_ChannelCS = 0x7, /**< Back surround */ 166c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_ChannelLR = 0x8, /**< Left rear. */ 167c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_ChannelRR = 0x9, /**< Right rear. */ 168e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen OMX_AUDIO_ChannelKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ 169c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_ChannelVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ 170e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen OMX_AUDIO_ChannelMax = 0x7FFFFFFF 171c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_AUDIO_CHANNELTYPE; 172c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 173c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#define OMX_AUDIO_MAXCHANNELS 16 /**< maximum number distinct audio channels that a buffer may contain */ 174c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#define OMX_MIN_PCMPAYLOAD_MSEC 5 /**< Minimum audio buffer payload size for uncompressed (PCM) audio */ 175c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 176e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen/** PCM format description */ 177e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chentypedef struct OMX_AUDIO_PARAM_PCMMODETYPE { 178e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen OMX_U32 nSize; /**< Size of this structure, in Bytes */ 179e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ 180e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen OMX_U32 nPortIndex; /**< port that this structure applies to */ 181e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen OMX_U32 nChannels; /**< Number of channels (e.g. 2 for stereo) */ 182e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen OMX_NUMERICALDATATYPE eNumData; /**< indicates PCM data as signed or unsigned */ 183e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen OMX_ENDIANTYPE eEndian; /**< indicates PCM data as little or big endian */ 184e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen OMX_BOOL bInterleaved; /**< True for normal interleaved data; false for 185e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen non-interleaved data (e.g. block data) */ 186e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen OMX_U32 nBitPerSample; /**< Bit per sample */ 187e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen OMX_U32 nSamplingRate; /**< Sampling rate of the source data. Use 0 for 188e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen variable or unknown sampling rate. */ 189e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen OMX_AUDIO_PCMMODETYPE ePCMMode; /**< PCM mode enumeration */ 190c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_CHANNELTYPE eChannelMapping[OMX_AUDIO_MAXCHANNELS]; /**< Slot i contains channel defined by eChannelMap[i] */ 191c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 192e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen} OMX_AUDIO_PARAM_PCMMODETYPE; 193c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 194c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 195c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** Audio channel mode. This is used by both AAC and MP3, although the names are more appropriate 196e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen * for the MP3. For example, JointStereo for MP3 is CouplingChannels for AAC. 197c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev */ 198c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef enum OMX_AUDIO_CHANNELMODETYPE { 199e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen OMX_AUDIO_ChannelModeStereo = 0, /**< 2 channels, the bitrate allocation between those 200c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev two channels changes accordingly to each channel information */ 201e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen OMX_AUDIO_ChannelModeJointStereo, /**< mode that takes advantage of what is common between 202c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 2 channels for higher compression gain */ 203e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen OMX_AUDIO_ChannelModeDual, /**< 2 mono-channels, each channel is encoded with half 204c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev the bitrate of the overall bitrate */ 205c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_ChannelModeMono, /**< Mono channel mode */ 206e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen OMX_AUDIO_ChannelModeKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ 207c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_ChannelModeVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ 208c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_ChannelModeMax = 0x7FFFFFFF 209c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_AUDIO_CHANNELMODETYPE; 210c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 211c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 212c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef enum OMX_AUDIO_MP3STREAMFORMATTYPE { 213c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_MP3StreamFormatMP1Layer3 = 0, /**< MP3 Audio MPEG 1 Layer 3 Stream format */ 214c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_MP3StreamFormatMP2Layer3, /**< MP3 Audio MPEG 2 Layer 3 Stream format */ 215c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_MP3StreamFormatMP2_5Layer3, /**< MP3 Audio MPEG2.5 Layer 3 Stream format */ 216e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen OMX_AUDIO_MP3StreamFormatKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ 217c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_MP3StreamFormatVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ 218c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_MP3StreamFormatMax = 0x7FFFFFFF 219c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_AUDIO_MP3STREAMFORMATTYPE; 220c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 221c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** MP3 params */ 222c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef struct OMX_AUDIO_PARAM_MP3TYPE { 223c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nSize; /**< size of the structure in bytes */ 224c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ 225c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nPortIndex; /**< port that this structure applies to */ 226c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nChannels; /**< Number of channels */ 227c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nBitRate; /**< Bit rate of the input data. Use 0 for variable 228c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev rate or unknown bit rates */ 229c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nSampleRate; /**< Sampling rate of the source data. Use 0 for 230c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev variable or unknown sampling rate. */ 231c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nAudioBandWidth; /**< Audio band width (in Hz) to which an encoder should 232c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev limit the audio signal. Use 0 to let encoder decide */ 233c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_CHANNELMODETYPE eChannelMode; /**< Channel mode enumeration */ 234c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_MP3STREAMFORMATTYPE eFormat; /**< MP3 stream format */ 235c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_AUDIO_PARAM_MP3TYPE; 236c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 237c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 238c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef enum OMX_AUDIO_AACSTREAMFORMATTYPE { 239c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_AACStreamFormatMP2ADTS = 0, /**< AAC Audio Data Transport Stream 2 format */ 240c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_AACStreamFormatMP4ADTS, /**< AAC Audio Data Transport Stream 4 format */ 241c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_AACStreamFormatMP4LOAS, /**< AAC Low Overhead Audio Stream format */ 242c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_AACStreamFormatMP4LATM, /**< AAC Low overhead Audio Transport Multiplex */ 243c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_AACStreamFormatADIF, /**< AAC Audio Data Interchange Format */ 244c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_AACStreamFormatMP4FF, /**< AAC inside MPEG-4/ISO File Format */ 245c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_AACStreamFormatRAW, /**< AAC Raw Format */ 246e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen OMX_AUDIO_AACStreamFormatKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ 247c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_AACStreamFormatVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ 248c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_AACStreamFormatMax = 0x7FFFFFFF 249c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_AUDIO_AACSTREAMFORMATTYPE; 250c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 251c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 252c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** AAC mode type. Note that the term profile is used with the MPEG-2 253c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * standard and the term object type and profile is used with MPEG-4 */ 254c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef enum OMX_AUDIO_AACPROFILETYPE{ 255c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_AACObjectNull = 0, /**< Null, not used */ 256c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_AACObjectMain = 1, /**< AAC Main object */ 257c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_AACObjectLC, /**< AAC Low Complexity object (AAC profile) */ 258c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_AACObjectSSR, /**< AAC Scalable Sample Rate object */ 259c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_AACObjectLTP, /**< AAC Long Term Prediction object */ 260c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_AACObjectHE, /**< AAC High Efficiency (object type SBR, HE-AAC profile) */ 261c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_AACObjectScalable, /**< AAC Scalable object */ 262c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_AACObjectERLC = 17, /**< ER AAC Low Complexity object (Error Resilient AAC-LC) */ 263c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_AACObjectLD = 23, /**< AAC Low Delay object (Error Resilient) */ 264c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_AACObjectHE_PS = 29, /**< AAC High Efficiency with Parametric Stereo coding (HE-AAC v2, object type PS) */ 265e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen OMX_AUDIO_AACObjectELD = 39, /** AAC Enhanced Low Delay. NOTE: Pending Khronos standardization **/ 266e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen OMX_AUDIO_AACObjectKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ 267c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_AACObjectVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ 268c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_AACObjectMax = 0x7FFFFFFF 269c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_AUDIO_AACPROFILETYPE; 270c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 271c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 272c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** AAC tool usage (for nAACtools in OMX_AUDIO_PARAM_AACPROFILETYPE). 273c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * Required for encoder configuration and optional as decoder info output. 274c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * For MP3, OMX_AUDIO_CHANNELMODETYPE is sufficient. */ 275c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#define OMX_AUDIO_AACToolNone 0x00000000 /**< no AAC tools allowed (encoder config) or active (decoder info output) */ 276c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#define OMX_AUDIO_AACToolMS 0x00000001 /**< MS: Mid/side joint coding tool allowed or active */ 277c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#define OMX_AUDIO_AACToolIS 0x00000002 /**< IS: Intensity stereo tool allowed or active */ 278c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#define OMX_AUDIO_AACToolTNS 0x00000004 /**< TNS: Temporal Noise Shaping tool allowed or active */ 279c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#define OMX_AUDIO_AACToolPNS 0x00000008 /**< PNS: MPEG-4 Perceptual Noise substitution tool allowed or active */ 280c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#define OMX_AUDIO_AACToolLTP 0x00000010 /**< LTP: MPEG-4 Long Term Prediction tool allowed or active */ 281c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#define OMX_AUDIO_AACToolAll 0x7FFFFFFF /**< all AAC tools allowed or active (*/ 282c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 283c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** MPEG-4 AAC error resilience (ER) tool usage (for nAACERtools in OMX_AUDIO_PARAM_AACPROFILETYPE). 284c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * Required for ER encoder configuration and optional as decoder info output */ 285c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#define OMX_AUDIO_AACERNone 0x00000000 /**< no AAC ER tools allowed/used */ 286c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#define OMX_AUDIO_AACERVCB11 0x00000001 /**< VCB11: Virtual Code Books for AAC section data */ 287c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#define OMX_AUDIO_AACERRVLC 0x00000002 /**< RVLC: Reversible Variable Length Coding */ 288c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#define OMX_AUDIO_AACERHCR 0x00000004 /**< HCR: Huffman Codeword Reordering */ 289c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#define OMX_AUDIO_AACERAll 0x7FFFFFFF /**< all AAC ER tools allowed/used */ 290c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 291c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 292c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** AAC params */ 293c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef struct OMX_AUDIO_PARAM_AACPROFILETYPE { 294c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nSize; /**< Size of this structure, in Bytes */ 295c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ 296c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nPortIndex; /**< Port that this structure applies to */ 297c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nChannels; /**< Number of channels */ 298c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nSampleRate; /**< Sampling rate of the source data. Use 0 for 299c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev variable or unknown sampling rate. */ 300c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nBitRate; /**< Bit rate of the input data. Use 0 for variable 301c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev rate or unknown bit rates */ 302c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nAudioBandWidth; /**< Audio band width (in Hz) to which an encoder should 303c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev limit the audio signal. Use 0 to let encoder decide */ 304c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nFrameLength; /**< Frame length (in audio samples per channel) of the codec. 305c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev Can be 1024 or 960 (AAC-LC), 2048 (HE-AAC), 480 or 512 (AAC-LD). 306c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev Use 0 to let encoder decide */ 307c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nAACtools; /**< AAC tool usage */ 308c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nAACERtools; /**< MPEG-4 AAC error resilience tool usage */ 309c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_AACPROFILETYPE eAACProfile; /**< AAC profile enumeration */ 310c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_AACSTREAMFORMATTYPE eAACStreamFormat; /**< AAC stream format enumeration */ 311c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_CHANNELMODETYPE eChannelMode; /**< Channel mode enumeration */ 312c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_AUDIO_PARAM_AACPROFILETYPE; 313c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 314c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 315c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** VORBIS params */ 316c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef struct OMX_AUDIO_PARAM_VORBISTYPE { 317c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nSize; /**< size of the structure in bytes */ 318c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ 319c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nPortIndex; /**< port that this structure applies to */ 320c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nChannels; /**< Number of channels */ 321c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nBitRate; /**< Bit rate of the encoded data data. Use 0 for variable 322c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev rate or unknown bit rates. Encoding is set to the 323c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev bitrate closest to specified value (in bps) */ 324c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nMinBitRate; /**< Sets minimum bitrate (in bps). */ 325c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nMaxBitRate; /**< Sets maximum bitrate (in bps). */ 326c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 327c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nSampleRate; /**< Sampling rate of the source data. Use 0 for 328c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev variable or unknown sampling rate. */ 329c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nAudioBandWidth; /**< Audio band width (in Hz) to which an encoder should 330c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev limit the audio signal. Use 0 to let encoder decide */ 331c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_S32 nQuality; /**< Sets encoding quality to n, between -1 (low) and 10 (high). 332c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev In the default mode of operation, teh quality level is 3. 333c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev Normal quality range is 0 - 10. */ 334c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_BOOL bManaged; /**< Set bitrate management mode. This turns off the 335c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev normal VBR encoding, but allows hard or soft bitrate 336c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev constraints to be enforced by the encoder. This mode can 337c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev be slower, and may also be lower quality. It is 338c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev primarily useful for streaming. */ 339e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen OMX_BOOL bDownmix; /**< Downmix input from stereo to mono (has no effect on 340e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen non-stereo streams). Useful for lower-bitrate encoding. */ 341c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_AUDIO_PARAM_VORBISTYPE; 342c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 343c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 344e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen/** FLAC params */ 345e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chentypedef struct OMX_AUDIO_PARAM_FLACTYPE { 346e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen OMX_U32 nSize; /**< size of the structure in bytes */ 347e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ 348e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen OMX_U32 nPortIndex; /**< port that this structure applies to */ 349e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen OMX_U32 nChannels; /**< Number of channels */ 350e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen OMX_U32 nSampleRate; /**< Sampling rate of the source data. Use 0 for 351e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen unknown sampling rate. */ 352e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen OMX_U32 nCompressionLevel;/**< FLAC compression level, from 0 (fastest compression) 353e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen to 8 (highest compression */ 354e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen} OMX_AUDIO_PARAM_FLACTYPE; 355e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen 356e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen 357c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** WMA Version */ 358c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef enum OMX_AUDIO_WMAFORMATTYPE { 359c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_WMAFormatUnused = 0, /**< format unused or unknown */ 360c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_WMAFormat7, /**< Windows Media Audio format 7 */ 361c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_WMAFormat8, /**< Windows Media Audio format 8 */ 362c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_WMAFormat9, /**< Windows Media Audio format 9 */ 363e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen OMX_AUDIO_WMAFormatKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ 364c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_WMAFormatVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ 365c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_WMAFormatMax = 0x7FFFFFFF 366c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_AUDIO_WMAFORMATTYPE; 367c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 368c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 369c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** WMA Profile */ 370c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef enum OMX_AUDIO_WMAPROFILETYPE { 371c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_WMAProfileUnused = 0, /**< profile unused or unknown */ 372c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_WMAProfileL1, /**< Windows Media audio version 9 profile L1 */ 373c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_WMAProfileL2, /**< Windows Media audio version 9 profile L2 */ 374c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_WMAProfileL3, /**< Windows Media audio version 9 profile L3 */ 375e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen OMX_AUDIO_WMAProfileKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ 376c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_WMAProfileVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ 377c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_WMAProfileMax = 0x7FFFFFFF 378c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_AUDIO_WMAPROFILETYPE; 379c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 380c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 381c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** WMA params */ 382c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef struct OMX_AUDIO_PARAM_WMATYPE { 383c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nSize; /**< size of the structure in bytes */ 384c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ 385c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nPortIndex; /**< port that this structure applies to */ 386c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U16 nChannels; /**< Number of channels */ 387c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nBitRate; /**< Bit rate of the input data. Use 0 for variable 388c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev rate or unknown bit rates */ 389c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_WMAFORMATTYPE eFormat; /**< Version of WMA stream / data */ 390c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_WMAPROFILETYPE eProfile; /**< Profile of WMA stream / data */ 391c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nSamplingRate; /**< Sampling rate of the source data */ 392c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U16 nBlockAlign; /**< is the block alignment, or block size, in bytes of the audio codec */ 393c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U16 nEncodeOptions; /**< WMA Type-specific data */ 394c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nSuperBlockAlign; /**< WMA Type-specific data */ 395c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_AUDIO_PARAM_WMATYPE; 396c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 397e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen/** 398c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * RealAudio format 399c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev */ 400c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef enum OMX_AUDIO_RAFORMATTYPE { 401c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_RAFormatUnused = 0, /**< Format unused or unknown */ 402c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_RA8, /**< RealAudio 8 codec */ 403c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_RA9, /**< RealAudio 9 codec */ 404c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_RA10_AAC, /**< MPEG-4 AAC codec for bitrates of more than 128kbps */ 405c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_RA10_CODEC, /**< RealAudio codec for bitrates less than 128 kbps */ 406c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_RA10_LOSSLESS, /**< RealAudio Lossless */ 407c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_RA10_MULTICHANNEL, /**< RealAudio Multichannel */ 408c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_RA10_VOICE, /**< RealAudio Voice for bitrates below 15 kbps */ 409e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen OMX_AUDIO_RAFormatKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ 410c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_RAFormatVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ 411c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_VIDEO_RAFormatMax = 0x7FFFFFFF 412c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_AUDIO_RAFORMATTYPE; 413c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 414e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen/** RA (Real Audio) params */ 415e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chentypedef struct OMX_AUDIO_PARAM_RATYPE { 416e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen OMX_U32 nSize; /**< Size of this structure, in Bytes */ 417e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ 418e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen OMX_U32 nPortIndex; /**< Port that this structure applies to */ 419e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen OMX_U32 nChannels; /**< Number of channels */ 420e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen OMX_U32 nSamplingRate; /**< is the sampling rate of the source data */ 421e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen OMX_U32 nBitsPerFrame; /**< is the value for bits per frame */ 422e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen OMX_U32 nSamplePerFrame; /**< is the value for samples per frame */ 423e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen OMX_U32 nCouplingQuantBits; /**< is the number of coupling quantization bits in the stream */ 424e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen OMX_U32 nCouplingStartRegion; /**< is the coupling start region in the stream */ 425e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen OMX_U32 nNumRegions; /**< is the number of regions value */ 426c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_RAFORMATTYPE eFormat; /**< is the RealAudio audio format */ 427e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen} OMX_AUDIO_PARAM_RATYPE; 428c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 429c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 430c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** SBC Allocation Method Type */ 431c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef enum OMX_AUDIO_SBCALLOCMETHODTYPE { 432c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_SBCAllocMethodLoudness, /**< Loudness allocation method */ 433c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_SBCAllocMethodSNR, /**< SNR allocation method */ 434e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen OMX_AUDIO_SBCAllocMethodKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ 435c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_SBCAllocMethodVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ 436c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_SBCAllocMethodMax = 0x7FFFFFFF 437c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_AUDIO_SBCALLOCMETHODTYPE; 438c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 439c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 440c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** SBC params */ 441c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef struct OMX_AUDIO_PARAM_SBCTYPE { 442c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nSize; /**< size of the structure in bytes */ 443c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ 444c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nPortIndex; /**< port that this structure applies to */ 445c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nChannels; /**< Number of channels */ 446c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nBitRate; /**< Bit rate of the input data. Use 0 for variable 447c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev rate or unknown bit rates */ 448c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nSampleRate; /**< Sampling rate of the source data. Use 0 for 449c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev variable or unknown sampling rate. */ 450c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nBlocks; /**< Number of blocks */ 451c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nSubbands; /**< Number of subbands */ 452c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nBitPool; /**< Bitpool value */ 453c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_BOOL bEnableBitrate; /**< Use bitrate value instead of bitpool */ 454c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_CHANNELMODETYPE eChannelMode; /**< Channel mode enumeration */ 455c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_SBCALLOCMETHODTYPE eSBCAllocType; /**< SBC Allocation method type */ 456c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_AUDIO_PARAM_SBCTYPE; 457c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 458c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 459e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen/** ADPCM stream format parameters */ 460e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chentypedef struct OMX_AUDIO_PARAM_ADPCMTYPE { 461e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen OMX_U32 nSize; /**< size of the structure in bytes */ 462e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ 463e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen OMX_U32 nPortIndex; /**< port that this structure applies to */ 464e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen OMX_U32 nChannels; /**< Number of channels in the data stream (not 465e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen necessarily the same as the number of channels 466e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen to be rendered. */ 467e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen OMX_U32 nBitsPerSample; /**< Number of bits in each sample */ 468e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen OMX_U32 nSampleRate; /**< Sampling rate of the source data. Use 0 for 469e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen variable or unknown sampling rate. */ 470e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen} OMX_AUDIO_PARAM_ADPCMTYPE; 471c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 472c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 473c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** G723 rate */ 474c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef enum OMX_AUDIO_G723RATE { 475c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_G723ModeUnused = 0, /**< AMRNB Mode unused / unknown */ 476c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_G723ModeLow, /**< 5300 bps */ 477c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_G723ModeHigh, /**< 6300 bps */ 478e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen OMX_AUDIO_G723ModeKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ 479c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_G723ModeVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ 480c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_G723ModeMax = 0x7FFFFFFF 481c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_AUDIO_G723RATE; 482c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 483c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 484c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** G723 - Sample rate must be 8 KHz */ 485e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chentypedef struct OMX_AUDIO_PARAM_G723TYPE { 486e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen OMX_U32 nSize; /**< size of the structure in bytes */ 487e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ 488e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen OMX_U32 nPortIndex; /**< port that this structure applies to */ 489e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen OMX_U32 nChannels; /**< Number of channels in the data stream (not 490e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen necessarily the same as the number of channels 491e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen to be rendered. */ 492e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen OMX_BOOL bDTX; /**< Enable Discontinuous Transmisssion */ 493c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_G723RATE eBitRate; /**< todo: Should this be moved to a config? */ 494e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen OMX_BOOL bHiPassFilter; /**< Enable High Pass Filter */ 495e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen OMX_BOOL bPostFilter; /**< Enable Post Filter */ 496e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen} OMX_AUDIO_PARAM_G723TYPE; 497c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 498c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 499c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** ITU G726 (ADPCM) rate */ 500c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef enum OMX_AUDIO_G726MODE { 501c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_G726ModeUnused = 0, /**< G726 Mode unused / unknown */ 502c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_G726Mode16, /**< 16 kbps */ 503c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_G726Mode24, /**< 24 kbps */ 504c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_G726Mode32, /**< 32 kbps, most common rate, also G721 */ 505c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_G726Mode40, /**< 40 kbps */ 506e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen OMX_AUDIO_G726ModeKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ 507c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_G726ModeVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ 508c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_G726ModeMax = 0x7FFFFFFF 509c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_AUDIO_G726MODE; 510c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 511c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 512e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen/** G.726 stream format parameters - must be at 8KHz */ 513e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chentypedef struct OMX_AUDIO_PARAM_G726TYPE { 514e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen OMX_U32 nSize; /**< size of the structure in bytes */ 515e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ 516e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen OMX_U32 nPortIndex; /**< port that this structure applies to */ 517e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen OMX_U32 nChannels; /**< Number of channels in the data stream (not 518e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen necessarily the same as the number of channels 519e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen to be rendered. */ 520c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_G726MODE eG726Mode; 521e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen} OMX_AUDIO_PARAM_G726TYPE; 522c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 523c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 524c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** G729 coder type */ 525c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef enum OMX_AUDIO_G729TYPE { 526c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_G729 = 0, /**< ITU G.729 encoded data */ 527c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_G729A, /**< ITU G.729 annex A encoded data */ 528c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_G729B, /**< ITU G.729 with annex B encoded data */ 529c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_G729AB, /**< ITU G.729 annexes A and B encoded data */ 530e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen OMX_AUDIO_G729KhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ 531c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_G729VendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ 532c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_G729Max = 0x7FFFFFFF 533c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_AUDIO_G729TYPE; 534c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 535c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 536c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** G729 stream format parameters - fixed 6KHz sample rate */ 537c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef struct OMX_AUDIO_PARAM_G729TYPE { 538c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nSize; /**< size of the structure in bytes */ 539c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ 540c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nPortIndex; /**< port that this structure applies to */ 541c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nChannels; /**< Number of channels in the data stream (not 542c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev necessarily the same as the number of channels 543c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev to be rendered. */ 544c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_BOOL bDTX; /**< Enable Discontinuous Transmisssion */ 545c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_G729TYPE eBitType; 546c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_AUDIO_PARAM_G729TYPE; 547c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 548c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 549e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen/** AMR Frame format */ 550e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chentypedef enum OMX_AUDIO_AMRFRAMEFORMATTYPE { 551e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen OMX_AUDIO_AMRFrameFormatConformance = 0, /**< Frame Format is AMR Conformance 552e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen (Standard) Format */ 553e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen OMX_AUDIO_AMRFrameFormatIF1, /**< Frame Format is AMR Interface 554e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen Format 1 */ 555e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen OMX_AUDIO_AMRFrameFormatIF2, /**< Frame Format is AMR Interface 556e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen Format 2*/ 557e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen OMX_AUDIO_AMRFrameFormatFSF, /**< Frame Format is AMR File Storage 558e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen Format */ 559e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen OMX_AUDIO_AMRFrameFormatRTPPayload, /**< Frame Format is AMR Real-Time 560e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen Transport Protocol Payload Format */ 561e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen OMX_AUDIO_AMRFrameFormatITU, /**< Frame Format is ITU Format (added at Motorola request) */ 562e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen OMX_AUDIO_AMRFrameFormatKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ 563c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_AMRFrameFormatVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ 564e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen OMX_AUDIO_AMRFrameFormatMax = 0x7FFFFFFF 565e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen} OMX_AUDIO_AMRFRAMEFORMATTYPE; 566c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 567c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 568c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** AMR band mode */ 569c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef enum OMX_AUDIO_AMRBANDMODETYPE { 570c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_AMRBandModeUnused = 0, /**< AMRNB Mode unused / unknown */ 571c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_AMRBandModeNB0, /**< AMRNB Mode 0 = 4750 bps */ 572c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_AMRBandModeNB1, /**< AMRNB Mode 1 = 5150 bps */ 573e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen OMX_AUDIO_AMRBandModeNB2, /**< AMRNB Mode 2 = 5900 bps */ 574c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_AMRBandModeNB3, /**< AMRNB Mode 3 = 6700 bps */ 575c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_AMRBandModeNB4, /**< AMRNB Mode 4 = 7400 bps */ 576c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_AMRBandModeNB5, /**< AMRNB Mode 5 = 7950 bps */ 577c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_AMRBandModeNB6, /**< AMRNB Mode 6 = 10200 bps */ 578c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_AMRBandModeNB7, /**< AMRNB Mode 7 = 12200 bps */ 579c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_AMRBandModeWB0, /**< AMRWB Mode 0 = 6600 bps */ 580c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_AMRBandModeWB1, /**< AMRWB Mode 1 = 8850 bps */ 581e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen OMX_AUDIO_AMRBandModeWB2, /**< AMRWB Mode 2 = 12650 bps */ 582e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen OMX_AUDIO_AMRBandModeWB3, /**< AMRWB Mode 3 = 14250 bps */ 583c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_AMRBandModeWB4, /**< AMRWB Mode 4 = 15850 bps */ 584c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_AMRBandModeWB5, /**< AMRWB Mode 5 = 18250 bps */ 585c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_AMRBandModeWB6, /**< AMRWB Mode 6 = 19850 bps */ 586c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_AMRBandModeWB7, /**< AMRWB Mode 7 = 23050 bps */ 587e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen OMX_AUDIO_AMRBandModeWB8, /**< AMRWB Mode 8 = 23850 bps */ 588e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen OMX_AUDIO_AMRBandModeKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ 589c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_AMRBandModeVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ 590c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_AMRBandModeMax = 0x7FFFFFFF 591c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_AUDIO_AMRBANDMODETYPE; 592e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen 593e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen 594e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen/** AMR Discontinuous Transmission mode */ 595e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chentypedef enum OMX_AUDIO_AMRDTXMODETYPE { 596e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen OMX_AUDIO_AMRDTXModeOff = 0, /**< AMR Discontinuous Transmission Mode is disabled */ 597e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen OMX_AUDIO_AMRDTXModeOnVAD1, /**< AMR Discontinuous Transmission Mode using 598e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen Voice Activity Detector 1 (VAD1) is enabled */ 599e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen OMX_AUDIO_AMRDTXModeOnVAD2, /**< AMR Discontinuous Transmission Mode using 600e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen Voice Activity Detector 2 (VAD2) is enabled */ 601e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen OMX_AUDIO_AMRDTXModeOnAuto, /**< The codec will automatically select between 602e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen Off, VAD1 or VAD2 modes */ 603c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 604c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_AMRDTXasEFR, /**< DTX as EFR instead of AMR standard (3GPP 26.101, frame type =8,9,10) */ 605c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 606e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen OMX_AUDIO_AMRDTXModeKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ 607c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_AMRDTXModeVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ 608e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen OMX_AUDIO_AMRDTXModeMax = 0x7FFFFFFF 609e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen} OMX_AUDIO_AMRDTXMODETYPE; 610e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen 611c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 612c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** AMR params */ 613c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef struct OMX_AUDIO_PARAM_AMRTYPE { 614c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nSize; /**< size of the structure in bytes */ 615c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ 616c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nPortIndex; /**< port that this structure applies to */ 617c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nChannels; /**< Number of channels */ 618c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nBitRate; /**< Bit rate read only field */ 619e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen OMX_AUDIO_AMRBANDMODETYPE eAMRBandMode; /**< AMR Band Mode enumeration */ 620c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_AMRDTXMODETYPE eAMRDTXMode; /**< AMR DTX Mode enumeration */ 621c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_AMRFRAMEFORMATTYPE eAMRFrameFormat; /**< AMR frame format enumeration */ 622c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_AUDIO_PARAM_AMRTYPE; 623c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 624c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 625c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** GSM_FR (ETSI 06.10, 3GPP 46.010) stream format parameters */ 626c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef struct OMX_AUDIO_PARAM_GSMFRTYPE { 627c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nSize; /**< size of the structure in bytes */ 628c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ 629c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nPortIndex; /**< port that this structure applies to */ 630c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_BOOL bDTX; /**< Enable Discontinuous Transmisssion */ 631c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_BOOL bHiPassFilter; /**< Enable High Pass Filter */ 632c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_AUDIO_PARAM_GSMFRTYPE; 633c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 634c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 635c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** GSM-HR (ETSI 06.20, 3GPP 46.020) stream format parameters */ 636c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef struct OMX_AUDIO_PARAM_GSMHRTYPE { 637c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nSize; /**< size of the structure in bytes */ 638c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ 639c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nPortIndex; /**< port that this structure applies to */ 640c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_BOOL bDTX; /**< Enable Discontinuous Transmisssion */ 641c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_BOOL bHiPassFilter; /**< Enable High Pass Filter */ 642c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_AUDIO_PARAM_GSMHRTYPE; 643c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 644c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 645c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** GSM-EFR (ETSI 06.60, 3GPP 46.060) stream format parameters */ 646c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef struct OMX_AUDIO_PARAM_GSMEFRTYPE { 647c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nSize; /**< size of the structure in bytes */ 648c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ 649c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nPortIndex; /**< port that this structure applies to */ 650c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_BOOL bDTX; /**< Enable Discontinuous Transmisssion */ 651c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_BOOL bHiPassFilter; /**< Enable High Pass Filter */ 652c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_AUDIO_PARAM_GSMEFRTYPE; 653c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 654c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 655c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** TDMA FR (TIA/EIA-136-420, VSELP 7.95kbps coder) stream format parameters */ 656c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef struct OMX_AUDIO_PARAM_TDMAFRTYPE { 657c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nSize; /**< size of the structure in bytes */ 658c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ 659c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nPortIndex; /**< port that this structure applies to */ 660c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nChannels; /**< Number of channels in the data stream (not 661c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev necessarily the same as the number of channels 662c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev to be rendered. */ 663c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_BOOL bDTX; /**< Enable Discontinuous Transmisssion */ 664c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_BOOL bHiPassFilter; /**< Enable High Pass Filter */ 665c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_AUDIO_PARAM_TDMAFRTYPE; 666c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 667c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 668c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** TDMA EFR (TIA/EIA-136-410, ACELP 7.4kbps coder) stream format parameters */ 669c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef struct OMX_AUDIO_PARAM_TDMAEFRTYPE { 670c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nSize; /**< size of the structure in bytes */ 671c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ 672c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nPortIndex; /**< port that this structure applies to */ 673c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nChannels; /**< Number of channels in the data stream (not 674c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev necessarily the same as the number of channels 675c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev to be rendered. */ 676c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_BOOL bDTX; /**< Enable Discontinuous Transmisssion */ 677c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_BOOL bHiPassFilter; /**< Enable High Pass Filter */ 678c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_AUDIO_PARAM_TDMAEFRTYPE; 679c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 680c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 681c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** PDC FR ( RCR-27, VSELP 6.7kbps coder) stream format parameters */ 682c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef struct OMX_AUDIO_PARAM_PDCFRTYPE { 683c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nSize; /**< size of the structure in bytes */ 684c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ 685c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nPortIndex; /**< port that this structure applies to */ 686c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nChannels; /**< Number of channels in the data stream (not 687c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev necessarily the same as the number of channels 688c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev to be rendered. */ 689c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_BOOL bDTX; /**< Enable Discontinuous Transmisssion */ 690c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_BOOL bHiPassFilter; /**< Enable High Pass Filter */ 691c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_AUDIO_PARAM_PDCFRTYPE; 692c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 693c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 694c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** PDC EFR ( RCR-27, ACELP 6.7kbps coder) stream format parameters */ 695c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef struct OMX_AUDIO_PARAM_PDCEFRTYPE { 696c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nSize; /**< size of the structure in bytes */ 697c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ 698c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nPortIndex; /**< port that this structure applies to */ 699c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nChannels; /**< Number of channels in the data stream (not 700c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev necessarily the same as the number of channels 701c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev to be rendered. */ 702c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_BOOL bDTX; /**< Enable Discontinuous Transmisssion */ 703c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_BOOL bHiPassFilter; /**< Enable High Pass Filter */ 704c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_AUDIO_PARAM_PDCEFRTYPE; 705c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 706c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** PDC HR ( RCR-27, PSI-CELP 3.45kbps coder) stream format parameters */ 707c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef struct OMX_AUDIO_PARAM_PDCHRTYPE { 708c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nSize; /**< size of the structure in bytes */ 709c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ 710c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nPortIndex; /**< port that this structure applies to */ 711c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nChannels; /**< Number of channels in the data stream (not 712c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev necessarily the same as the number of channels 713c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev to be rendered. */ 714c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_BOOL bDTX; /**< Enable Discontinuous Transmisssion */ 715c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_BOOL bHiPassFilter; /**< Enable High Pass Filter */ 716c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_AUDIO_PARAM_PDCHRTYPE; 717c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 718c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 719c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** CDMA Rate types */ 720c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef enum OMX_AUDIO_CDMARATETYPE { 721c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_CDMARateBlank = 0, /**< CDMA encoded frame is blank */ 722c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_CDMARateFull, /**< CDMA encoded frame in full rate */ 723c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_CDMARateHalf, /**< CDMA encoded frame in half rate */ 724c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_CDMARateQuarter, /**< CDMA encoded frame in quarter rate */ 725c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_CDMARateEighth, /**< CDMA encoded frame in eighth rate (DTX)*/ 726c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_CDMARateErasure, /**< CDMA erasure frame */ 727e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen OMX_AUDIO_CDMARateKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ 728c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_CDMARateVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ 729c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_CDMARateMax = 0x7FFFFFFF 730c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_AUDIO_CDMARATETYPE; 731c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 732c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 733c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** QCELP8 (TIA/EIA-96, up to 8kbps coder) stream format parameters */ 734c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef struct OMX_AUDIO_PARAM_QCELP8TYPE { 735c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nSize; /**< size of the structure in bytes */ 736c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ 737c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nPortIndex; /**< port that this structure applies to */ 738c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nChannels; /**< Number of channels in the data stream (not 739c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev necessarily the same as the number of channels 740c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev to be rendered. */ 741c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nBitRate; /**< Bit rate of the input data. Use 0 for variable 742c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev rate or unknown bit rates */ 743c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_CDMARATETYPE eCDMARate; /**< Frame rate */ 744c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nMinBitRate; /**< minmal rate for the encoder = 1,2,3,4, default = 1 */ 745c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nMaxBitRate; /**< maximal rate for the encoder = 1,2,3,4, default = 4 */ 746c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_AUDIO_PARAM_QCELP8TYPE; 747c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 748c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 749c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** QCELP13 ( CDMA, EIA/TIA-733, 13.3kbps coder) stream format parameters */ 750c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef struct OMX_AUDIO_PARAM_QCELP13TYPE { 751c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nSize; /**< size of the structure in bytes */ 752c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ 753c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nPortIndex; /**< port that this structure applies to */ 754c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nChannels; /**< Number of channels in the data stream (not 755c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev necessarily the same as the number of channels 756c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev to be rendered. */ 757c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_CDMARATETYPE eCDMARate; /**< Frame rate */ 758c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nMinBitRate; /**< minmal rate for the encoder = 1,2,3,4, default = 1 */ 759c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nMaxBitRate; /**< maximal rate for the encoder = 1,2,3,4, default = 4 */ 760c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_AUDIO_PARAM_QCELP13TYPE; 761c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 762c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 763c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** EVRC ( CDMA, EIA/TIA-127, RCELP up to 8.55kbps coder) stream format parameters */ 764c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef struct OMX_AUDIO_PARAM_EVRCTYPE { 765c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nSize; /**< size of the structure in bytes */ 766c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ 767c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nPortIndex; /**< port that this structure applies to */ 768c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nChannels; /**< Number of channels in the data stream (not 769c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev necessarily the same as the number of channels 770c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev to be rendered. */ 771c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_CDMARATETYPE eCDMARate; /**< actual Frame rate */ 772c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_BOOL bRATE_REDUCon; /**< RATE_REDUCtion is requested for this frame */ 773c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nMinBitRate; /**< minmal rate for the encoder = 1,2,3,4, default = 1 */ 774c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nMaxBitRate; /**< maximal rate for the encoder = 1,2,3,4, default = 4 */ 775c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_BOOL bHiPassFilter; /**< Enable encoder's High Pass Filter */ 776c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_BOOL bNoiseSuppressor; /**< Enable encoder's noise suppressor pre-processing */ 777c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_BOOL bPostFilter; /**< Enable decoder's post Filter */ 778c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_AUDIO_PARAM_EVRCTYPE; 779c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 780c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 781c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** SMV ( up to 8.55kbps coder) stream format parameters */ 782c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef struct OMX_AUDIO_PARAM_SMVTYPE { 783c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nSize; /**< size of the structure in bytes */ 784c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ 785c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nPortIndex; /**< port that this structure applies to */ 786c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nChannels; /**< Number of channels in the data stream (not 787c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev necessarily the same as the number of channels 788c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev to be rendered. */ 789c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_CDMARATETYPE eCDMARate; /**< Frame rate */ 790c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_BOOL bRATE_REDUCon; /**< RATE_REDUCtion is requested for this frame */ 791c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nMinBitRate; /**< minmal rate for the encoder = 1,2,3,4, default = 1 ??*/ 792c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nMaxBitRate; /**< maximal rate for the encoder = 1,2,3,4, default = 4 ??*/ 793c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_BOOL bHiPassFilter; /**< Enable encoder's High Pass Filter ??*/ 794c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_BOOL bNoiseSuppressor; /**< Enable encoder's noise suppressor pre-processing */ 795c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_BOOL bPostFilter; /**< Enable decoder's post Filter ??*/ 796c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_AUDIO_PARAM_SMVTYPE; 797c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 798c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 799e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen/** MIDI Format 800c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * @ingroup midi 801c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev */ 802c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef enum OMX_AUDIO_MIDIFORMATTYPE 803c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev{ 804c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_MIDIFormatUnknown = 0, /**< MIDI Format unknown or don't care */ 805c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_MIDIFormatSMF0, /**< Standard MIDI File Type 0 */ 806c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_MIDIFormatSMF1, /**< Standard MIDI File Type 1 */ 807c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_MIDIFormatSMF2, /**< Standard MIDI File Type 2 */ 808c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_MIDIFormatSPMIDI, /**< SP-MIDI */ 809c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_MIDIFormatXMF0, /**< eXtensible Music Format type 0 */ 810c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_MIDIFormatXMF1, /**< eXtensible Music Format type 1 */ 811c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_MIDIFormatMobileXMF, /**< Mobile XMF (eXtensible Music Format type 2) */ 812e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen OMX_AUDIO_MIDIFormatKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ 813c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_MIDIFormatVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ 814c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_MIDIFormatMax = 0x7FFFFFFF 815c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_AUDIO_MIDIFORMATTYPE; 816c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 817c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 818e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen/** MIDI params 819c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * @ingroup midi 820c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev */ 821c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef struct OMX_AUDIO_PARAM_MIDITYPE { 822c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nSize; /**< size of the structure in bytes */ 823c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ 824c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nPortIndex; /**< port that this structure applies to */ 825e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen OMX_U32 nFileSize; /**< size of the MIDI file in bytes, where the entire 826e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen MIDI file passed in, otherwise if 0x0, the MIDI data 827e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen is merged and streamed (instead of passed as an 828c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev entire MIDI file) */ 829e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen OMX_BU32 sMaxPolyphony; /**< Specifies the maximum simultaneous polyphonic 830e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen voices. A value of zero indicates that the default 831e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen polyphony of the device is used */ 832e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen OMX_BOOL bLoadDefaultSound; /**< Whether to load default sound 833c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev bank at initialization */ 834e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen OMX_AUDIO_MIDIFORMATTYPE eMidiFormat; /**< Version of the MIDI file */ 835c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_AUDIO_PARAM_MIDITYPE; 836c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 837c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 838e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen/** Type of the MIDI sound bank 839c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * @ingroup midi 840c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev */ 841c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef enum OMX_AUDIO_MIDISOUNDBANKTYPE { 842c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_MIDISoundBankUnused = 0, /**< unused/unknown soundbank type */ 843c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_MIDISoundBankDLS1, /**< DLS version 1 */ 844c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_MIDISoundBankDLS2, /**< DLS version 2 */ 845c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_MIDISoundBankMobileDLSBase, /**< Mobile DLS, using the base functionality */ 846c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_MIDISoundBankMobileDLSPlusOptions, /**< Mobile DLS, using the specification-defined optional feature set */ 847e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen OMX_AUDIO_MIDISoundBankKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ 848c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_MIDISoundBankVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ 849c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_MIDISoundBankMax = 0x7FFFFFFF 850c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_AUDIO_MIDISOUNDBANKTYPE; 851c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 852c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 853e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen/** Bank Layout describes how bank MSB & LSB are used in the DLS instrument definitions sound bank 854c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * @ingroup midi 855c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev */ 856c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef enum OMX_AUDIO_MIDISOUNDBANKLAYOUTTYPE { 857c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_MIDISoundBankLayoutUnused = 0, /**< unused/unknown soundbank type */ 858c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_MIDISoundBankLayoutGM, /**< GS layout (based on bank MSB 0x00) */ 859c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_MIDISoundBankLayoutGM2, /**< General MIDI 2 layout (using MSB 0x78/0x79, LSB 0x00) */ 860c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_MIDISoundBankLayoutUser, /**< Does not conform to any bank numbering standards */ 861e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen OMX_AUDIO_MIDISoundBankLayoutKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ 862c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_MIDISoundBankLayoutVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ 863c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_MIDISoundBankLayoutMax = 0x7FFFFFFF 864c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_AUDIO_MIDISOUNDBANKLAYOUTTYPE; 865c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 866c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 867e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen/** MIDI params to load/unload user soundbank 868c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * @ingroup midi 869c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev */ 870c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef struct OMX_AUDIO_PARAM_MIDILOADUSERSOUNDTYPE { 871c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nSize; /**< size of the structure in bytes */ 872c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ 873c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nPortIndex; /**< port that this structure applies to */ 874c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nDLSIndex; /**< DLS file index to be loaded */ 875c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nDLSSize; /**< Size in bytes */ 876c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_PTR pDLSData; /**< Pointer to DLS file data */ 877c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_MIDISOUNDBANKTYPE eMidiSoundBank; /**< Midi sound bank type enumeration */ 878c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_MIDISOUNDBANKLAYOUTTYPE eMidiSoundBankLayout; /**< Midi sound bank layout enumeration */ 879c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_AUDIO_PARAM_MIDILOADUSERSOUNDTYPE; 880c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 881c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 882e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen/** Structure for Live MIDI events and MIP messages. 883e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen * (MIP = Maximum Instantaneous Polyphony; part of the SP-MIDI standard.) 884c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * @ingroup midi 885c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev */ 886c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef struct OMX_AUDIO_CONFIG_MIDIIMMEDIATEEVENTTYPE { 887c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nSize; /**< size of the structure in bytes */ 888c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ 889c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nPortIndex; /**< Port that this structure applies to */ 890c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nMidiEventSize; /**< Size of immediate MIDI events or MIP message in bytes */ 891c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U8 nMidiEvents[1]; /**< MIDI event array to be rendered immediately, or an 892e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen array for the MIP message buffer, where the size is 893c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev indicated by nMidiEventSize */ 894c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_AUDIO_CONFIG_MIDIIMMEDIATEEVENTTYPE; 895c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 896c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 897e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen/** MIDI sound bank/ program pair in a given channel 898c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * @ingroup midi 899c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev */ 900c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef struct OMX_AUDIO_CONFIG_MIDISOUNDBANKPROGRAMTYPE { 901c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nSize; /**< size of the structure in bytes */ 902c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ 903c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nPortIndex; /**< Port that this structure applies to */ 904c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nChannel; /**< Valid channel values range from 1 to 16 */ 905c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U16 nIDProgram; /**< Valid program ID range is 1 to 128 */ 906c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U16 nIDSoundBank; /**< Sound bank ID */ 907e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen OMX_U32 nUserSoundBankIndex;/**< User soundbank index, easier to access soundbanks 908c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev by index if multiple banks are present */ 909c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_AUDIO_CONFIG_MIDISOUNDBANKPROGRAMTYPE; 910c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 911c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 912e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen/** MIDI control 913c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * @ingroup midi 914c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev */ 915c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef struct OMX_AUDIO_CONFIG_MIDICONTROLTYPE { 916c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nSize; /**< size of the structure in bytes */ 917c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ 918c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nPortIndex; /**< port that this structure applies to */ 919e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen OMX_BS32 sPitchTransposition; /**< Pitch transposition in semitones, stored as Q22.10 920c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev format based on JAVA MMAPI (JSR-135) requirement */ 921c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_BU32 sPlayBackRate; /**< Relative playback rate, stored as Q14.17 fixed-point 922c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev number based on JSR-135 requirement */ 923e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen OMX_BU32 sTempo ; /**< Tempo in beats per minute (BPM), stored as Q22.10 924c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev fixed-point number based on JSR-135 requirement */ 925e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen OMX_U32 nMaxPolyphony; /**< Specifies the maximum simultaneous polyphonic 926e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen voices. A value of zero indicates that the default 927c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev polyphony of the device is used */ 928c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nNumRepeat; /**< Number of times to repeat playback */ 929e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen OMX_U32 nStopTime; /**< Time in milliseconds to indicate when playback 930c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev will stop automatically. Set to zero if not used */ 931c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U16 nChannelMuteMask; /**< 16 bit mask for channel mute status */ 932c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U16 nChannelSoloMask; /**< 16 bit mask for channel solo status */ 933c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nTrack0031MuteMask; /**< 32 bit mask for track mute status. Note: This is for tracks 0-31 */ 934c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nTrack3263MuteMask; /**< 32 bit mask for track mute status. Note: This is for tracks 32-63 */ 935c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nTrack0031SoloMask; /**< 32 bit mask for track solo status. Note: This is for tracks 0-31 */ 936c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nTrack3263SoloMask; /**< 32 bit mask for track solo status. Note: This is for tracks 32-63 */ 937c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 938c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_AUDIO_CONFIG_MIDICONTROLTYPE; 939c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 940c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 941e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen/** MIDI Playback States 942c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * @ingroup midi 943c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev */ 944c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef enum OMX_AUDIO_MIDIPLAYBACKSTATETYPE { 945e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen OMX_AUDIO_MIDIPlayBackStateUnknown = 0, /**< Unknown state or state does not map to 946c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev other defined states */ 947e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen OMX_AUDIO_MIDIPlayBackStateClosedEngaged, /**< No MIDI resource is currently open. 948e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen The MIDI engine is currently processing 949c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev MIDI events. */ 950e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen OMX_AUDIO_MIDIPlayBackStateParsing, /**< A MIDI resource is open and is being 951e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen primed. The MIDI engine is currently 952c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev processing MIDI events. */ 953e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen OMX_AUDIO_MIDIPlayBackStateOpenEngaged, /**< A MIDI resource is open and primed but 954c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev not playing. The MIDI engine is currently 955c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev processing MIDI events. The transition to 956e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen this state is only possible from the 957c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_MIDIPlayBackStatePlaying state, 958c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev when the 'playback head' reaches the end 959c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev of media data or the playback stops due 960c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev to stop time set.*/ 961c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_MIDIPlayBackStatePlaying, /**< A MIDI resource is open and currently 962c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev playing. The MIDI engine is currently 963c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev processing MIDI events.*/ 964c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_MIDIPlayBackStatePlayingPartially, /**< Best-effort playback due to SP-MIDI/DLS 965c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev resource constraints */ 966c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_MIDIPlayBackStatePlayingSilently, /**< Due to system resource constraints and 967c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev SP-MIDI content constraints, there is 968c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev no audible MIDI content during playback 969c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev currently. The situation may change if 970c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev resources are freed later.*/ 971e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen OMX_AUDIO_MIDIPlayBackStateKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ 972c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_MIDIPlayBackStateVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ 973c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_MIDIPlayBackStateMax = 0x7FFFFFFF 974c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_AUDIO_MIDIPLAYBACKSTATETYPE; 975c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 976c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 977e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen/** MIDI status 978c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * @ingroup midi 979c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev */ 980c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef struct OMX_AUDIO_CONFIG_MIDISTATUSTYPE { 981c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nSize; /**< size of the structure in bytes */ 982c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ 983c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nPortIndex; /**< port that this structure applies to */ 984e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen OMX_U16 nNumTracks; /**< Number of MIDI tracks in the file, read only field. 985e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen NOTE: May not return a meaningful value until the entire 986c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev file is parsed and buffered. */ 987e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen OMX_U32 nDuration; /**< The length of the currently open MIDI resource 988e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen in milliseconds. NOTE: May not return a meaningful value 989e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen until the entire file is parsed and buffered. */ 990e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen OMX_U32 nPosition; /**< Current Position of the MIDI resource being played 991c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev in milliseconds */ 992e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen OMX_BOOL bVibra; /**< Does Vibra track exist? NOTE: May not return a meaningful 993c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev value until the entire file is parsed and buffered. */ 994e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen OMX_U32 nNumMetaEvents; /**< Total number of MIDI Meta Events in the currently 995e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen open MIDI resource. NOTE: May not return a meaningful value 996c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev until the entire file is parsed and buffered. */ 997e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen OMX_U32 nNumActiveVoices; /**< Number of active voices in the currently playing 998e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen MIDI resource. NOTE: May not return a meaningful value until 999c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev the entire file is parsed and buffered. */ 1000c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_MIDIPLAYBACKSTATETYPE eMIDIPlayBackState; /**< MIDI playback state enumeration, read only field */ 1001c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_AUDIO_CONFIG_MIDISTATUSTYPE; 1002c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 1003c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 1004c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** MIDI Meta Event structure one per Meta Event. 1005e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen * MIDI Meta Events are like audio metadata, except that they are interspersed 1006e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen * with the MIDI content throughout the file and are not localized in the header. 1007e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen * As such, it is necessary to retrieve information about these Meta Events from 1008e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen * the engine, as it encounters these Meta Events within the MIDI content. 1009e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen * For example, SMF files can have up to 14 types of MIDI Meta Events (copyright, 1010e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen * author, default tempo, etc.) scattered throughout the file. 1011c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * @ingroup midi 1012c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev */ 1013e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chentypedef struct OMX_AUDIO_CONFIG_MIDIMETAEVENTTYPE{ 1014e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen OMX_U32 nSize; /**< size of the structure in bytes */ 1015e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ 1016e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen OMX_U32 nPortIndex; /**< port that this structure applies to */ 1017e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen OMX_U32 nIndex; /**< Index of Meta Event */ 1018e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen OMX_U8 nMetaEventType; /**< Meta Event Type, 7bits (i.e. 0 - 127) */ 1019e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen OMX_U32 nMetaEventSize; /**< size of the Meta Event in bytes */ 1020c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nTrack; /**< track number for the meta event */ 1021c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nPosition; /**< Position of the meta-event in milliseconds */ 1022e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen} OMX_AUDIO_CONFIG_MIDIMETAEVENTTYPE; 1023c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 1024c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 1025e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen/** MIDI Meta Event Data structure - one per Meta Event. 1026c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * @ingroup midi 1027e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen */ 1028e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chentypedef struct OMX_AUDIO_CONFIG_MIDIMETAEVENTDATATYPE{ 1029e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen OMX_U32 nSize; /**< size of the structure in bytes */ 1030e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ 1031e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen OMX_U32 nPortIndex; /**< port that this structure applies to */ 1032e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen OMX_U32 nIndex; /**< Index of Meta Event */ 1033e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen OMX_U32 nMetaEventSize; /**< size of the Meta Event in bytes */ 1034e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen OMX_U8 nData[1]; /**< array of one or more bytes of meta data 1035e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen as indicated by the nMetaEventSize field */ 1036e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen} OMX_AUDIO_CONFIG__MIDIMETAEVENTDATATYPE; 1037c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 1038c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 1039c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** Audio Volume adjustment for a port */ 1040c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef struct OMX_AUDIO_CONFIG_VOLUMETYPE { 1041c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nSize; /**< size of the structure in bytes */ 1042c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ 1043e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen OMX_U32 nPortIndex; /**< Port index indicating which port to 1044e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen set. Select the input port to set 1045e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen just that port's volume. Select the 1046e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen output port to adjust the master 1047c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev volume. */ 1048e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen OMX_BOOL bLinear; /**< Is the volume to be set in linear (0.100) 1049c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev or logarithmic scale (mB) */ 1050c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_BS32 sVolume; /**< Volume linear setting in the 0..100 range, OR 1051c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev Volume logarithmic setting for this port. The values 1052c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev for volume are in mB (millibels = 1/100 dB) relative 1053e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen to a gain of 1 (e.g. the output is the same as the 1054e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen input level). Values are in mB from nMax 1055c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev (maximum volume) to nMin mB (typically negative). 1056c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev Since the volume is "voltage" 1057c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev and not a "power", it takes a setting of 1058c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev -600 mB to decrease the volume by 1/2. If 1059e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen a component cannot accurately set the 1060c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev volume to the requested value, it must 1061c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev set the volume to the closest value BELOW 1062c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev the requested value. When getting the 1063c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev volume setting, the current actual volume 1064c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev must be returned. */ 1065c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_AUDIO_CONFIG_VOLUMETYPE; 1066c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 1067c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 1068c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** Audio Volume adjustment for a channel */ 1069c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef struct OMX_AUDIO_CONFIG_CHANNELVOLUMETYPE { 1070c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nSize; /**< size of the structure in bytes */ 1071c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ 1072e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen OMX_U32 nPortIndex; /**< Port index indicating which port to 1073e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen set. Select the input port to set 1074e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen just that port's volume. Select the 1075e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen output port to adjust the master 1076c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev volume. */ 1077e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen OMX_U32 nChannel; /**< channel to select from 0 to N-1, 1078c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev using OMX_ALL to apply volume settings 1079c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev to all channels */ 1080e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen OMX_BOOL bLinear; /**< Is the volume to be set in linear (0.100) or 1081c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev logarithmic scale (mB) */ 1082c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_BS32 sVolume; /**< Volume linear setting in the 0..100 range, OR 1083e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen Volume logarithmic setting for this port. 1084e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen The values for volume are in mB 1085c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev (millibels = 1/100 dB) relative to a gain 1086e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen of 1 (e.g. the output is the same as the 1087e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen input level). Values are in mB from nMax 1088e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen (maximum volume) to nMin mB (typically negative). 1089c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev Since the volume is "voltage" 1090c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev and not a "power", it takes a setting of 1091c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev -600 mB to decrease the volume by 1/2. If 1092e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen a component cannot accurately set the 1093c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev volume to the requested value, it must 1094c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev set the volume to the closest value BELOW 1095c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev the requested value. When getting the 1096c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev volume setting, the current actual volume 1097c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev must be returned. */ 1098c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_BOOL bIsMIDI; /**< TRUE if nChannel refers to a MIDI channel, 1099c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev FALSE otherwise */ 1100c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_AUDIO_CONFIG_CHANNELVOLUMETYPE; 1101c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 1102c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 1103c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** Audio balance setting */ 1104c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef struct OMX_AUDIO_CONFIG_BALANCETYPE { 1105c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nSize; /**< size of the structure in bytes */ 1106c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ 1107e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen OMX_U32 nPortIndex; /**< Port index indicating which port to 1108e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen set. Select the input port to set 1109e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen just that port's balance. Select the 1110e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen output port to adjust the master 1111c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev balance. */ 1112e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen OMX_S32 nBalance; /**< balance setting for this port 1113c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev (-100 to 100, where -100 indicates 1114c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev all left, and no right */ 1115c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_AUDIO_CONFIG_BALANCETYPE; 1116c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 1117c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 1118c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** Audio Port mute */ 1119c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef struct OMX_AUDIO_CONFIG_MUTETYPE { 1120c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nSize; /**< size of the structure in bytes */ 1121c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ 1122e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen OMX_U32 nPortIndex; /**< Port index indicating which port to 1123e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen set. Select the input port to set 1124e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen just that port's mute. Select the 1125e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen output port to adjust the master 1126c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev mute. */ 1127c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_BOOL bMute; /**< Mute setting for this port */ 1128c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_AUDIO_CONFIG_MUTETYPE; 1129c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 1130c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 1131c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** Audio Channel mute */ 1132c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef struct OMX_AUDIO_CONFIG_CHANNELMUTETYPE { 1133c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nSize; /**< size of the structure in bytes */ 1134c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ 1135c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nPortIndex; /**< port that this structure applies to */ 1136e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen OMX_U32 nChannel; /**< channel to select from 0 to N-1, 1137c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev using OMX_ALL to apply mute settings 1138c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev to all channels */ 1139c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_BOOL bMute; /**< Mute setting for this channel */ 1140c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_BOOL bIsMIDI; /**< TRUE if nChannel refers to a MIDI channel, 1141e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen FALSE otherwise */ 1142c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_AUDIO_CONFIG_CHANNELMUTETYPE; 1143c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 1144c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 1145c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 1146e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen/** Enable / Disable for loudness control, which boosts bass and to a 1147c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * smaller extent high end frequencies to compensate for hearing 1148c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * ability at the extreme ends of the audio spectrum 1149e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen */ 1150c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef struct OMX_AUDIO_CONFIG_LOUDNESSTYPE { 1151c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nSize; /**< size of the structure in bytes */ 1152c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ 1153c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nPortIndex; /**< port that this structure applies to */ 1154c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_BOOL bLoudness; /**< Enable/disable for loudness */ 1155c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_AUDIO_CONFIG_LOUDNESSTYPE; 1156c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 1157c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 1158c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** Enable / Disable for bass, which controls low frequencies 1159e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen */ 1160c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef struct OMX_AUDIO_CONFIG_BASSTYPE { 1161c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nSize; /**< size of the structure in bytes */ 1162c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ 1163c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nPortIndex; /**< port that this structure applies to */ 1164c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_BOOL bEnable; /**< Enable/disable for bass control */ 1165e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen OMX_S32 nBass; /**< bass setting for the port, as a 1166e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen continuous value from -100 to 100 1167c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev (0 means no change in bass level)*/ 1168c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_AUDIO_CONFIG_BASSTYPE; 1169c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 1170c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 1171c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** Enable / Disable for treble, which controls high frequencies tones 1172e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen */ 1173c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef struct OMX_AUDIO_CONFIG_TREBLETYPE { 1174c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nSize; /**< size of the structure in bytes */ 1175c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ 1176c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nPortIndex; /**< port that this structure applies to */ 1177c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_BOOL bEnable; /**< Enable/disable for treble control */ 1178c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_S32 nTreble; /**< treble setting for the port, as a 1179e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen continuous value from -100 to 100 1180c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev (0 means no change in treble level) */ 1181c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_AUDIO_CONFIG_TREBLETYPE; 1182c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 1183c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 1184e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen/** An equalizer is typically used for two reasons: to compensate for an 1185e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen * sub-optimal frequency response of a system to make it sound more natural 1186c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * or to create intentionally some unnatural coloring to the sound to create 1187c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * an effect. 1188c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * @ingroup effects 1189c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev */ 1190c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef struct OMX_AUDIO_CONFIG_EQUALIZERTYPE { 1191c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nSize; /**< size of the structure in bytes */ 1192c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ 1193c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nPortIndex; /**< port that this structure applies to */ 1194c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_BOOL bEnable; /**< Enable/disable for equalizer */ 1195e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen OMX_BU32 sBandIndex; /**< Band number to be set. Upper Limit is 1196c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev N-1, where N is the number of bands, lower limit is 0 */ 1197c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_BU32 sCenterFreq; /**< Center frequecies in Hz. This is a 1198e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen read only element and is used to determine 1199e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen the lower, center and upper frequency of 1200c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev this band. */ 1201c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_BS32 sBandLevel; /**< band level in millibels */ 1202c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_AUDIO_CONFIG_EQUALIZERTYPE; 1203c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 1204c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 1205e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen/** Stereo widening mode type 1206c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * @ingroup effects 1207e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen */ 1208c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef enum OMX_AUDIO_STEREOWIDENINGTYPE { 1209c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_StereoWideningHeadphones, /**< Stereo widening for loudspeakers */ 1210c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_StereoWideningLoudspeakers, /**< Stereo widening for closely spaced loudspeakers */ 1211e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen OMX_AUDIO_StereoWideningKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ 1212c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_StereoWideningVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ 1213c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_StereoWideningMax = 0x7FFFFFFF 1214c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_AUDIO_STEREOWIDENINGTYPE; 1215c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 1216c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 1217c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** Control for stereo widening, which is a special 2-channel 1218e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen * case of the audio virtualizer effect. For example, for 5.1-channel 1219e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen * output, it translates to virtual surround sound. 1220c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * @ingroup effects 1221e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen */ 1222c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef struct OMX_AUDIO_CONFIG_STEREOWIDENINGTYPE { 1223c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nSize; /**< size of the structure in bytes */ 1224c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ 1225c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nPortIndex; /**< port that this structure applies to */ 1226c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_BOOL bEnable; /**< Enable/disable for stereo widening control */ 1227c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_STEREOWIDENINGTYPE eWideningType; /**< Stereo widening algorithm type */ 1228c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nStereoWidening; /**< stereo widening setting for the port, 1229c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev as a continuous value from 0 to 100 */ 1230c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_AUDIO_CONFIG_STEREOWIDENINGTYPE; 1231c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 1232c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 1233c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** The chorus effect (or ``choralizer'') is any signal processor which makes 1234e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen * one sound source (such as a voice) sound like many such sources singing 1235e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen * (or playing) in unison. Since performance in unison is never exact, chorus 1236e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen * effects simulate this by making independently modified copies of the input 1237e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen * signal. Modifications may include (1) delay, (2) frequency shift, and 1238c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * (3) amplitude modulation. 1239c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * @ingroup effects 1240c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev */ 1241c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef struct OMX_AUDIO_CONFIG_CHORUSTYPE { 1242c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nSize; /**< size of the structure in bytes */ 1243c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ 1244c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nPortIndex; /**< port that this structure applies to */ 1245c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_BOOL bEnable; /**< Enable/disable for chorus */ 1246c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_BU32 sDelay; /**< average delay in milliseconds */ 1247c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_BU32 sModulationRate; /**< rate of modulation in millihertz */ 1248e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen OMX_U32 nModulationDepth; /**< depth of modulation as a percentage of 1249c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev delay (i.e. 0 to 100) */ 1250c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_BU32 nFeedback; /**< Feedback from chorus output to input in percentage */ 1251c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_AUDIO_CONFIG_CHORUSTYPE; 1252c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 1253c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 1254e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen/** Reverberation is part of the reflected sound that follows the early 1255e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen * reflections. In a typical room, this consists of a dense succession of 1256e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen * echoes whose energy decays exponentially. The reverberation effect structure 1257e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen * as defined here includes both (early) reflections as well as (late) reverberations. 1258c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * @ingroup effects 1259c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev */ 1260c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef struct OMX_AUDIO_CONFIG_REVERBERATIONTYPE { 1261c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nSize; /**< size of the structure in bytes */ 1262c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ 1263c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nPortIndex; /**< port that this structure applies to */ 1264c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_BOOL bEnable; /**< Enable/disable for reverberation control */ 1265e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen OMX_BS32 sRoomLevel; /**< Intensity level for the whole room effect 1266e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen (i.e. both early reflections and late 1267c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev reverberation) in millibels */ 1268c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_BS32 sRoomHighFreqLevel; /**< Attenuation at high frequencies 1269c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev relative to the intensity at low 1270c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev frequencies in millibels */ 1271c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_BS32 sReflectionsLevel; /**< Intensity level of early reflections 1272c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev (relative to room value), in millibels */ 1273e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen OMX_BU32 sReflectionsDelay; /**< Delay time of the first reflection relative 1274c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev to the direct path, in milliseconds */ 1275c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_BS32 sReverbLevel; /**< Intensity level of late reverberation 1276c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev relative to room level, in millibels */ 1277e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen OMX_BU32 sReverbDelay; /**< Time delay from the first early reflection 1278e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen to the beginning of the late reverberation 1279c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev section, in milliseconds */ 1280c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_BU32 sDecayTime; /**< Late reverberation decay time at low 1281c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev frequencies, in milliseconds */ 1282e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen OMX_BU32 nDecayHighFreqRatio; /**< Ratio of high frequency decay time relative 1283c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev to low frequency decay time in percent */ 1284c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nDensity; /**< Modal density in the late reverberation decay, 1285c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev in percent (i.e. 0 - 100) */ 1286c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nDiffusion; /**< Echo density in the late reverberation decay, 1287c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev in percent (i.e. 0 - 100) */ 1288e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen OMX_BU32 sReferenceHighFreq; /**< Reference high frequency in Hertz. This is 1289e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen the frequency used as the reference for all 1290c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev the high-frequency settings above */ 1291c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 1292c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_AUDIO_CONFIG_REVERBERATIONTYPE; 1293c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 1294c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 1295e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen/** Possible settings for the Echo Cancelation structure to use 1296c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * @ingroup effects 1297c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev */ 1298c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef enum OMX_AUDIO_ECHOCANTYPE { 1299c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_EchoCanOff = 0, /**< Echo Cancellation is disabled */ 1300e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen OMX_AUDIO_EchoCanNormal, /**< Echo Cancellation normal operation - 1301c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev echo from plastics and face */ 1302e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen OMX_AUDIO_EchoCanHFree, /**< Echo Cancellation optimized for 1303c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev Hands Free operation */ 1304e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen OMX_AUDIO_EchoCanCarKit, /**< Echo Cancellation optimized for 1305c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev Car Kit (longer echo) */ 1306e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen OMX_AUDIO_EchoCanKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ 1307c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_EchoCanVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ 1308c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_EchoCanMax = 0x7FFFFFFF 1309c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_AUDIO_ECHOCANTYPE; 1310c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 1311c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 1312c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** Enable / Disable for echo cancelation, which removes undesired echo's 1313c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * from the audio 1314c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * @ingroup effects 1315e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen */ 1316c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef struct OMX_AUDIO_CONFIG_ECHOCANCELATIONTYPE { 1317c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nSize; /**< size of the structure in bytes */ 1318c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ 1319c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nPortIndex; /**< port that this structure applies to */ 1320c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_ECHOCANTYPE eEchoCancelation; /**< Echo cancelation settings */ 1321c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_AUDIO_CONFIG_ECHOCANCELATIONTYPE; 1322c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 1323c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 1324c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** Enable / Disable for noise reduction, which undesired noise from 1325c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * the audio 1326c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * @ingroup effects 1327e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen */ 1328c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef struct OMX_AUDIO_CONFIG_NOISEREDUCTIONTYPE { 1329c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nSize; /**< size of the structure in bytes */ 1330c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ 1331c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nPortIndex; /**< port that this structure applies to */ 1332c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_BOOL bNoiseReduction; /**< Enable/disable for noise reduction */ 1333c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_AUDIO_CONFIG_NOISEREDUCTIONTYPE; 1334c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 1335c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** @} */ 1336c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 1337c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#ifdef __cplusplus 1338c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} 1339c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#endif /* __cplusplus */ 1340c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 1341c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#endif 1342c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/* File EOF */ 1343