// Copyright (c) 2017-2019 Intel Corporation // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal // in the Software without restriction, including without limitation the rights // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in all // copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE // SOFTWARE. #ifndef __MFXASTRUCTURES_H__ #define __MFXASTRUCTURES_H__ #include "mfxcommon.h" #if !defined (__GNUC__) #pragma warning(disable: 4201) #endif #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ /* CodecId */ enum { MFX_CODEC_AAC =MFX_MAKEFOURCC('A','A','C',' '), MFX_CODEC_MP3 =MFX_MAKEFOURCC('M','P','3',' ') }; enum { /* AAC Profiles & Levels */ MFX_PROFILE_AAC_LC =2, MFX_PROFILE_AAC_LTP =4, MFX_PROFILE_AAC_MAIN =1, MFX_PROFILE_AAC_SSR =3, MFX_PROFILE_AAC_HE =5, MFX_PROFILE_AAC_ALS =0x20, MFX_PROFILE_AAC_BSAC =22, MFX_PROFILE_AAC_PS =29, /*MPEG AUDIO*/ MFX_AUDIO_MPEG1_LAYER1 =0x00000110, MFX_AUDIO_MPEG1_LAYER2 =0x00000120, MFX_AUDIO_MPEG1_LAYER3 =0x00000140, MFX_AUDIO_MPEG2_LAYER1 =0x00000210, MFX_AUDIO_MPEG2_LAYER2 =0x00000220, MFX_AUDIO_MPEG2_LAYER3 =0x00000240 }; /*AAC HE decoder down sampling*/ enum { MFX_AUDIO_AAC_HE_DWNSMPL_OFF=0, MFX_AUDIO_AAC_HE_DWNSMPL_ON= 1 }; /* AAC decoder support of PS */ enum { MFX_AUDIO_AAC_PS_DISABLE= 0, MFX_AUDIO_AAC_PS_PARSER= 1, MFX_AUDIO_AAC_PS_ENABLE_BL= 111, MFX_AUDIO_AAC_PS_ENABLE_UR= 411 }; /*AAC decoder SBR support*/ enum { MFX_AUDIO_AAC_SBR_DISABLE = 0, MFX_AUDIO_AAC_SBR_ENABLE= 1, MFX_AUDIO_AAC_SBR_UNDEF= 2 }; /*AAC header type*/ enum{ MFX_AUDIO_AAC_ADTS= 1, MFX_AUDIO_AAC_ADIF= 2, MFX_AUDIO_AAC_RAW= 3, }; /*AAC encoder stereo mode*/ enum { MFX_AUDIO_AAC_MONO= 0, MFX_AUDIO_AAC_LR_STEREO= 1, MFX_AUDIO_AAC_MS_STEREO= 2, MFX_AUDIO_AAC_JOINT_STEREO= 3 }; MFX_PACK_BEGIN_USUAL_STRUCT() typedef struct { mfxU32 CodecId; mfxU16 CodecProfile; mfxU16 CodecLevel; mfxU32 Bitrate; mfxU32 SampleFrequency; mfxU16 NumChannel; mfxU16 BitPerSample; mfxU16 reserved1[22]; union { struct { /* AAC Decoding Options */ mfxU16 FlagPSSupportLev; mfxU16 Layer; mfxU16 AACHeaderDataSize; mfxU8 AACHeaderData[64]; }; struct { /* AAC Encoding Options */ mfxU16 OutputFormat; mfxU16 StereoMode; mfxU16 reserved2[61]; }; }; } mfxAudioInfoMFX; MFX_PACK_END() MFX_PACK_BEGIN_STRUCT_W_PTR() typedef struct { mfxU16 AsyncDepth; mfxU16 Protected; mfxU16 reserved[14]; mfxAudioInfoMFX mfx; mfxExtBuffer** ExtParam; mfxU16 NumExtParam; } mfxAudioParam; MFX_PACK_END() MFX_PACK_BEGIN_USUAL_STRUCT() typedef struct { mfxU32 SuggestedInputSize; mfxU32 SuggestedOutputSize; mfxU32 reserved[6]; } mfxAudioAllocRequest; MFX_PACK_END() MFX_PACK_BEGIN_STRUCT_W_L_TYPE() typedef struct { mfxU64 TimeStamp; /* 1/90KHz */ mfxU16 Locked; mfxU16 NumChannels; mfxU32 SampleFrequency; mfxU16 BitPerSample; mfxU16 reserved1[7]; mfxU8* Data; mfxU32 reserved2; mfxU32 DataLength; mfxU32 MaxLength; mfxU32 NumExtParam; mfxExtBuffer **ExtParam; } mfxAudioFrame; MFX_PACK_END() #ifdef __cplusplus } #endif /* __cplusplus */ #endif