diff -r 2ed61feeead6 -r 6f7ceef7b1d1 khronosfws/openmax_al/src/engine/xaaudioencodercapabilitiesitf.c --- a/khronosfws/openmax_al/src/engine/xaaudioencodercapabilitiesitf.c Fri May 28 19:26:28 2010 -0500 +++ b/khronosfws/openmax_al/src/engine/xaaudioencodercapabilitiesitf.c Fri Jun 11 19:59:23 2010 -0500 @@ -1,19 +1,19 @@ /* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ + * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). + * All rights reserved. + * This component and the accompanying materials are made available + * under the terms of "Eclipse Public License v1.0" + * which accompanies this distribution, and is available + * at the URL "http://www.eclipse.org/legal/epl-v10.html". + * + * Initial Contributors: + * Nokia Corporation - initial contribution. + * + * Contributors: + * + * Description: Audio Encoder capabilities Itf Implementation + * + */ #include #include @@ -28,18 +28,20 @@ /* XAAudioEncoderCapabilitiesItfImpl* GetImpl * Description: Validate interface pointer and cast it to implementation pointer. */ -static XAAudioEncoderCapabilitiesItfImpl* GetImpl(XAAudioEncoderCapabilitiesItf self) -{ - if( self ) +static XAAudioEncoderCapabilitiesItfImpl* GetImpl( + XAAudioEncoderCapabilitiesItf self) { - XAAudioEncoderCapabilitiesItfImpl* impl = (XAAudioEncoderCapabilitiesItfImpl*)(*self); - if( impl && (impl == impl->self) ) + if (self) { + XAAudioEncoderCapabilitiesItfImpl* impl = + (XAAudioEncoderCapabilitiesItfImpl*) (*self); + if (impl && (impl == impl->self)) + { return impl; + } } + return NULL; } - return NULL; -} /***************************************************************************** * Base interface XAAudioEncoderCapabilitiesItf implementation @@ -49,66 +51,63 @@ * Description: Retrieves the available audio encoders. */ XAresult XAAudioEncoderCapabilitiesItfImpl_GetAudioEncoders( - XAAudioEncoderCapabilitiesItf self, - XAuint32* pNumEncoders, - XAuint32* pEncoderIds) -{ + XAAudioEncoderCapabilitiesItf self, XAuint32* pNumEncoders, + XAuint32* pEncoderIds) + { XAAudioEncoderCapabilitiesItfImpl* impl = GetImpl(self); XAresult res = XA_RESULT_SUCCESS; DEBUG_API("->XAAudioEncoderCapabilitiesItfImpl_GetAudioEncoders"); - - if( !impl || !pNumEncoders ) - { + + if (!impl || !pNumEncoders) + { DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); res = XA_RESULT_PARAMETER_INVALID; - } + } else - { - if( pEncoderIds ) - { /* query array of encoders */ - if( *pNumEncoders < impl->numCodecs ) - { + { + if (pEncoderIds) + { /* query array of encoders */ + if (*pNumEncoders < impl->numCodecs) + { DEBUG_ERR("XA_RESULT_BUFFER_INSUFFICIENT"); res = XA_RESULT_BUFFER_INSUFFICIENT; - } + } else - { - + { + XAuint32 i = 0; XACapabilities temp; - for( i=0; inumCodecs; i++ ) - { + for (i = 0; i < impl->numCodecs; i++) + { /* query encoder id from adaptation using index value */ - XACapabilitiesMgr_GetCapsByIdx(impl->capslist, (XACapsType)(XACAP_ENCODER|XACAP_AUDIO), i, &temp); + XACapabilitiesMgr_GetCapsByIdx(impl->capslist, + (XACapsType) (XACAP_ENCODER | XACAP_AUDIO), i, + &temp); pEncoderIds[i] = temp.xaid; - } + } - pEncoderIds[0] = XA_AUDIOCODEC_AMR; - pEncoderIds[1] = XA_AUDIOCODEC_AAC; - pEncoderIds[2] = XA_AUDIOCODEC_PCM; + pEncoderIds[0] = XA_AUDIOCODEC_AMR; + pEncoderIds[1] = XA_AUDIOCODEC_AAC; + pEncoderIds[2] = XA_AUDIOCODEC_PCM; + } } - } - /* return number of encoders */ - *pNumEncoders = impl->numCodecs; + /* return number of encoders */ + *pNumEncoders = impl->numCodecs; + }DEBUG_API("<-XAAudioEncoderCapabilitiesItfImpl_GetAudioEncoders"); + return res; } - DEBUG_API("<-XAAudioEncoderCapabilitiesItfImpl_GetAudioEncoders"); - return res; -} /* XAresult XAAudioEncoderCapabilitiesItfImpl_GetAudioEncoderCapabilities * Description: Queries for the audio encoders capabilities. */ XAresult XAAudioEncoderCapabilitiesItfImpl_GetAudioEncoderCapabilities( - XAAudioEncoderCapabilitiesItf self, - XAuint32 encoderId, - XAuint32 *pIndex, - XAAudioCodecDescriptor *pDescriptor) -{ + XAAudioEncoderCapabilitiesItf self, XAuint32 encoderId, + XAuint32 *pIndex, XAAudioCodecDescriptor *pDescriptor) + { XAAudioEncoderCapabilitiesItfImpl* impl = GetImpl(self); XAresult res = XA_RESULT_SUCCESS; - XACapabilities temp; DEBUG_API("->XAAudioEncoderCapabilitiesItfImpl_GetAudioEncoderCapabilities"); @@ -117,27 +116,27 @@ /*Removing the pDescriptor because the client can pass * it as NULL to query the pIndex for number of Codec/Mode * pair capabilities for each encoder */ - if( !impl || !pIndex ) - { + if (!impl || !pIndex) + { DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); res = XA_RESULT_PARAMETER_INVALID; return res; - } + } else - { - *pIndex = 1; - if(!pDescriptor) + { + *pIndex = 1; + if (!pDescriptor) { return res; } - } - - /* query capabilities from adaptation using codec id */ - memset(pDescriptor,0,sizeof(XAAudioCodecDescriptor)); - + } + + /* query capabilities from adaptation using codec id */ + memset(pDescriptor, 0, sizeof(XAAudioCodecDescriptor)); + switch (encoderId) { - case XA_AUDIOCODEC_AMR: + case XA_AUDIOCODEC_AMR: { impl->sampleRateArray[0] = 8000000; @@ -147,27 +146,29 @@ impl->bitRateArray[3] = 6700; impl->bitRateArray[4] = 7400; impl->bitRateArray[5] = 7950; - impl->bitRateArray[6] = 10200; + impl->bitRateArray[6] = 10200; impl->bitRateArray[7] = 12200; pDescriptor->maxChannels = 1; pDescriptor->minBitsPerSample = 8; pDescriptor->maxBitsPerSample = 8; - pDescriptor->minSampleRate = 8000000; /*milliHz*/ + pDescriptor->minSampleRate = 8000000; /*milliHz*/ pDescriptor->maxSampleRate = 8000000; - pDescriptor->isFreqRangeContinuous=XA_BOOLEAN_FALSE; - pDescriptor->pSampleRatesSupported = (XAmilliHertz*)(&(impl->sampleRateArray)); + pDescriptor->isFreqRangeContinuous = XA_BOOLEAN_FALSE; + pDescriptor->pSampleRatesSupported + = (XAmilliHertz*) (&(impl->sampleRateArray)); pDescriptor->numSampleRatesSupported = 1; - pDescriptor->minBitRate=4750; - pDescriptor->maxBitRate=12200; - pDescriptor->isBitrateRangeContinuous=XA_BOOLEAN_FALSE; - pDescriptor->pBitratesSupported = (XAuint32*)(&(impl->bitRateArray)); + pDescriptor->minBitRate = 4750; + pDescriptor->maxBitRate = 12200; + pDescriptor->isBitrateRangeContinuous = XA_BOOLEAN_FALSE; + pDescriptor->pBitratesSupported + = (XAuint32*) (&(impl->bitRateArray)); pDescriptor->numBitratesSupported = 8; pDescriptor->profileSetting = XA_AUDIOPROFILE_AMR; pDescriptor->modeSetting = 0; } break; - case XA_AUDIOCODEC_AAC: + case XA_AUDIOCODEC_AAC: { impl->sampleRateArray[0] = 8000000; impl->sampleRateArray[1] = 11025000; @@ -183,27 +184,29 @@ impl->bitRateArray[3] = 128000; impl->bitRateArray[4] = 160000; impl->bitRateArray[5] = 192000; - impl->bitRateArray[6] = 224000; - impl->bitRateArray[7] = 256000; - + impl->bitRateArray[6] = 224000; + impl->bitRateArray[7] = 256000; + pDescriptor->maxChannels = 2; pDescriptor->minBitsPerSample = 16; pDescriptor->maxBitsPerSample = 16; - pDescriptor->minSampleRate = 8000*1000; /*milliHz*/ + pDescriptor->minSampleRate = 8000 * 1000; /*milliHz*/ pDescriptor->maxSampleRate = 48000 * 1000; - pDescriptor->isFreqRangeContinuous=XA_BOOLEAN_FALSE; - pDescriptor->pSampleRatesSupported = (XAmilliHertz*)(&(impl->sampleRateArray)); + pDescriptor->isFreqRangeContinuous = XA_BOOLEAN_FALSE; + pDescriptor->pSampleRatesSupported + = (XAmilliHertz*) (&(impl->sampleRateArray)); pDescriptor->numSampleRatesSupported = 7; - pDescriptor->minBitRate=32000; - pDescriptor->maxBitRate=256000; - pDescriptor->isBitrateRangeContinuous=XA_BOOLEAN_FALSE; - pDescriptor->pBitratesSupported = (XAuint32*)(&(impl->bitRateArray)); + pDescriptor->minBitRate = 32000; + pDescriptor->maxBitRate = 256000; + pDescriptor->isBitrateRangeContinuous = XA_BOOLEAN_FALSE; + pDescriptor->pBitratesSupported + = (XAuint32*) (&(impl->bitRateArray)); pDescriptor->numBitratesSupported = 8; pDescriptor->profileSetting = XA_AUDIOPROFILE_AAC_AAC; pDescriptor->modeSetting = XA_AUDIOMODE_AAC_LC; } break; - case XA_AUDIOCODEC_PCM: + case XA_AUDIOCODEC_PCM: { impl->sampleRateArray[0] = 12000000; impl->sampleRateArray[1] = 16000000; @@ -219,75 +222,75 @@ pDescriptor->maxChannels = 2; pDescriptor->minBitsPerSample = 16; pDescriptor->maxBitsPerSample = 16; - pDescriptor->minSampleRate = 8000000; /*milliHz*/ + pDescriptor->minSampleRate = 8000000; /*milliHz*/ pDescriptor->maxSampleRate = 96000000; - pDescriptor->isFreqRangeContinuous=XA_BOOLEAN_FALSE; - pDescriptor->pSampleRatesSupported = (XAmilliHertz*)(&(impl->sampleRateArray)); + pDescriptor->isFreqRangeContinuous = XA_BOOLEAN_FALSE; + pDescriptor->pSampleRatesSupported + = (XAmilliHertz*) (&(impl->sampleRateArray)); pDescriptor->numSampleRatesSupported = 10; - pDescriptor->minBitRate= 0; - pDescriptor->maxBitRate= 0; - pDescriptor->isBitrateRangeContinuous=XA_BOOLEAN_FALSE; + pDescriptor->minBitRate = 0; + pDescriptor->maxBitRate = 0; + pDescriptor->isBitrateRangeContinuous = XA_BOOLEAN_FALSE; pDescriptor->pBitratesSupported = NULL; pDescriptor->numBitratesSupported = 0; - pDescriptor->profileSetting = XA_AUDIOPROFILE_PCM ; - pDescriptor->modeSetting = 0; + pDescriptor->profileSetting = XA_AUDIOPROFILE_PCM; + pDescriptor->modeSetting = 0; } break; } - - - - res = XACapabilitiesMgr_GetCapsById(impl->capslist, (XACapsType)(XACAP_ENCODER|XACAP_AUDIO), encoderId, &temp); - if( res == XA_RESULT_SUCCESS ) - { - XAAudioCodecDescriptor* desc = ((XAAudioCodecDescriptor*)(temp.pEntry)); - /* map applicable values to XAAudioCodecCapabilities */ - pDescriptor->maxChannels = desc->maxChannels; - pDescriptor->minSampleRate= desc->minSampleRate*1000; /* milliHz */ - if (desc->maxSampleRate < (0xFFFFFFFF / 1000)) - { - pDescriptor->maxSampleRate = desc->maxSampleRate*1000; - } - else - { - pDescriptor->maxSampleRate = 0xFFFFFFFF; - } - pDescriptor->minBitsPerSample=desc->minBitsPerSample; - pDescriptor->maxBitsPerSample=desc->maxBitsPerSample; - pDescriptor->isFreqRangeContinuous=XA_BOOLEAN_TRUE; - pDescriptor->minBitRate=desc->minBitRate; - pDescriptor->maxBitRate=desc->maxBitRate; - pDescriptor->numBitratesSupported = desc->numBitratesSupported; - pDescriptor->isBitrateRangeContinuous=XA_BOOLEAN_TRUE; - if (temp.xaid == XA_AUDIOCODEC_PCM ) - { - pDescriptor->profileSetting=XA_AUDIOPROFILE_PCM; - pDescriptor->modeSetting=0; /* no chanmode for pcm defined */ - } - else if (temp.xaid == XA_ADAPTID_VORBIS) /* for ogg */ - { - if (desc->maxChannels == 1) - { - pDescriptor->profileSetting=XA_AUDIOPROFILE_MPEG1_L3; - pDescriptor->modeSetting=XA_AUDIOCHANMODE_MP3_MONO; - } - else - { - pDescriptor->profileSetting=XA_AUDIOPROFILE_MPEG2_L3; - pDescriptor->modeSetting=XA_AUDIOCHANMODE_MP3_STEREO; - } - } - else - { - /* do nothing */ - } - - } - + + res = XACapabilitiesMgr_GetCapsById(impl->capslist, + (XACapsType) (XACAP_ENCODER | XACAP_AUDIO), encoderId, &temp); + if (res == XA_RESULT_SUCCESS) + { + XAAudioCodecDescriptor* desc = + ((XAAudioCodecDescriptor*) (temp.pEntry)); + /* map applicable values to XAAudioCodecCapabilities */ + pDescriptor->maxChannels = desc->maxChannels; + pDescriptor->minSampleRate = desc->minSampleRate * 1000; /* milliHz */ + if (desc->maxSampleRate < (0xFFFFFFFF / 1000)) + { + pDescriptor->maxSampleRate = desc->maxSampleRate * 1000; + } + else + { + pDescriptor->maxSampleRate = 0xFFFFFFFF; + } + pDescriptor->minBitsPerSample = desc->minBitsPerSample; + pDescriptor->maxBitsPerSample = desc->maxBitsPerSample; + pDescriptor->isFreqRangeContinuous = XA_BOOLEAN_TRUE; + pDescriptor->minBitRate = desc->minBitRate; + pDescriptor->maxBitRate = desc->maxBitRate; + pDescriptor->numBitratesSupported = desc->numBitratesSupported; + pDescriptor->isBitrateRangeContinuous = XA_BOOLEAN_TRUE; + if (temp.xaid == XA_AUDIOCODEC_PCM) + { + pDescriptor->profileSetting = XA_AUDIOPROFILE_PCM; + pDescriptor->modeSetting = 0; /* no chanmode for pcm defined */ + } + else if (temp.xaid == XA_ADAPTID_VORBIS) /* for ogg */ + { + if (desc->maxChannels == 1) + { + pDescriptor->profileSetting = XA_AUDIOPROFILE_MPEG1_L3; + pDescriptor->modeSetting = XA_AUDIOCHANMODE_MP3_MONO; + } + else + { + pDescriptor->profileSetting = XA_AUDIOPROFILE_MPEG2_L3; + pDescriptor->modeSetting = XA_AUDIOCHANMODE_MP3_STEREO; + } + } + else + { + /* do nothing */ + } + + } + DEBUG_API("<-XAAudioEncoderCapabilitiesItfImpl_GetAudioEncoderCapabilities"); return res; -} - + } /***************************************************************************** * XAAudioEncoderCapabilitiesItfImpl -specific methods @@ -296,42 +299,44 @@ /* XAAudioEncoderCapabilitiesItfImpl_Create * Description: Allocate and initialize XAAudioEncoderCapabilitiesItfImpl */ -XAAudioEncoderCapabilitiesItfImpl* XAAudioEncoderCapabilitiesItfImpl_Create(XACapabilities* caps) -{ - XAAudioEncoderCapabilitiesItfImpl* self = (XAAudioEncoderCapabilitiesItfImpl*) - calloc(1,sizeof(XAAudioEncoderCapabilitiesItfImpl)); +XAAudioEncoderCapabilitiesItfImpl* XAAudioEncoderCapabilitiesItfImpl_Create( + XACapabilities* caps) + { + XAAudioEncoderCapabilitiesItfImpl* self = + (XAAudioEncoderCapabilitiesItfImpl*) calloc(1, + sizeof(XAAudioEncoderCapabilitiesItfImpl)); DEBUG_API("->XAAudioEncoderCapabilitiesItfImpl_Create"); - if( self ) - { + if (self) + { /* init itf default implementation */ - self->itf.GetAudioEncoders = - XAAudioEncoderCapabilitiesItfImpl_GetAudioEncoders; - self->itf.GetAudioEncoderCapabilities = - XAAudioEncoderCapabilitiesItfImpl_GetAudioEncoderCapabilities; + self->itf.GetAudioEncoders + = XAAudioEncoderCapabilitiesItfImpl_GetAudioEncoders; + self->itf.GetAudioEncoderCapabilities + = XAAudioEncoderCapabilitiesItfImpl_GetAudioEncoderCapabilities; self->capslist = caps; - + /* init variables */ assert( XACapabilitiesMgr_GetCapsCount( caps, (XACapsType)((XACapsType)(XACAP_ENCODER|XACAP_AUDIO)), - &(self->numCodecs) ) == XA_RESULT_SUCCESS ); + &(self->numCodecs) ) == XA_RESULT_SUCCESS ); /*self->mmfEngine = (void*)mmf_capability_engine_init();*/ self->numCodecs = 3; self->self = self; - + + }DEBUG_API("<-XAAudioEncoderCapabilitiesItfImpl_Create"); + return self; } - DEBUG_API("<-XAAudioEncoderCapabilitiesItfImpl_Create"); - return self; -} /* void XAAudioEncoderCapabilitiesItfImpl_Free * Description: Free all resources reserved at XAAudioEncoderCapabilitiesItfImpl_Create */ -void XAAudioEncoderCapabilitiesItfImpl_Free(XAAudioEncoderCapabilitiesItfImpl* self) -{ +void XAAudioEncoderCapabilitiesItfImpl_Free( + XAAudioEncoderCapabilitiesItfImpl* self) + { DEBUG_API("->XAAudioEncoderCapabilitiesItfImpl_Free"); assert(self==self->self); free(self); DEBUG_API("<-XAAudioEncoderCapabilitiesItfImpl_Free"); -} + }