diff -r 80975da52420 -r 43d09473c595 khronosfws/openmax_al/src/engine/xaaudioiodevicecapabilitiesitf.c --- a/khronosfws/openmax_al/src/engine/xaaudioiodevicecapabilitiesitf.c Mon May 03 12:59:52 2010 +0300 +++ b/khronosfws/openmax_al/src/engine/xaaudioiodevicecapabilitiesitf.c Fri May 14 16:22:35 2010 +0300 @@ -22,9 +22,8 @@ #include "xaglobals.h" #include "xaaudioiodevicecapabilitiesitf.h" -#ifdef _GSTREAMER_BACKEND_ -#include "XAStaticCapsAdaptation.h" -#endif +#include "xacapabilitiesmgr.h" + static XAchar deviceName1[] = "Default Mic"; @@ -76,17 +75,15 @@ } else { - -#ifdef _GSTREAMER_BACKEND_ XAuint32 i; - XAStaticCapsData temp; + XACapabilities temp; for( i=0; inumInputDevices; i++ ) { /* query device id from adaptation using index value */ - res = XAStaticCapsAdapt_GetCapsByIdx(XACAP_DEVSRC|XACAP_AUDIO, i, &temp); + res = XACapabilitiesMgr_GetCapsByIdx(impl->capslist, (XACapsType)(XACAP_DEVSRC|XACAP_AUDIO), i, &temp); pInputDeviceIDs[i] = temp.xaid; } -#endif + pInputDeviceIDs[0] = 0xAD7E5001; } } @@ -105,6 +102,7 @@ XAAudioInputDescriptor* pDescriptor) { XAAudIODevCapaItfImpl* impl = GetImpl(self); + XACapabilities temp; XAresult res = XA_RESULT_SUCCESS; DEBUG_API("->XAAudIODevCapaItfImpl_QueryAudioInputCapabilities"); @@ -116,19 +114,20 @@ else { memset(pDescriptor,0,sizeof(XAAudioInputDescriptor)); -#ifdef _GSTREAMER_BACKEND_ + /* query capabilities from adaptation using device id */ - XAStaticCapsData temp; + - res = XAStaticCapsAdapt_GetCapsById(XACAP_DEVSRC|XACAP_AUDIO, deviceId, &temp); + res = XACapabilitiesMgr_GetCapsById(impl->capslist, (XACapsType)(XACAP_DEVSRC|XACAP_AUDIO), deviceId, &temp); if( res == XA_RESULT_SUCCESS ) { + XAAudioInputDescriptor* desc = ((XAAudioInputDescriptor*)(temp.pEntry)); /* map applicable values to XAAudioCodecCapabilities */ - pDescriptor->maxChannels=temp.maxCh; - pDescriptor->minSampleRate=temp.minSR*1000; /* milliHz */ - if (temp.maxSR < (0xFFFFFFFF / 1000)) + pDescriptor->maxChannels=desc->maxChannels; + pDescriptor->minSampleRate=desc->minSampleRate*1000; /* milliHz */ + if (desc->maxSampleRate < (0xFFFFFFFF / 1000)) { - pDescriptor->maxSampleRate = temp.maxSR*1000; + pDescriptor->maxSampleRate = desc->maxSampleRate*1000; } else { @@ -141,7 +140,7 @@ pDescriptor->deviceName = temp.adaptId; /* other caps undefined */ } -#endif + switch (deviceId) { case 0xAD7E5001: @@ -242,16 +241,16 @@ else { -#ifdef _GSTREAMER_BACKEND_ + XAuint32 i = 0; - XAStaticCapsData temp; + XACapabilities temp; for( i=0; inumOutputDevices; i++ ) { /* query device id from adaptation using index value */ - res = XAStaticCapsAdapt_GetCapsByIdx(XACAP_DEVSNK|XACAP_AUDIO, i, &temp); + res = XACapabilitiesMgr_GetCapsByIdx(impl->capslist, (XACapsType)(XACAP_DEVSNK|XACAP_AUDIO), i, &temp); pOutputDeviceIDs[i] = temp.xaid; } -#endif + pOutputDeviceIDs[0] = 0xAD7E5002; } } @@ -272,6 +271,7 @@ XAAudIODevCapaItfImpl* impl = GetImpl(self); XAresult res = XA_RESULT_SUCCESS; + XACapabilities temp; DEBUG_API("->XAAudIODevCapaItfImpl_QueryAudioOutputCapabilities"); if( !impl || !pDescriptor ) @@ -283,18 +283,19 @@ { memset(pDescriptor,0,sizeof(XAAudioOutputDescriptor)); /* query capabilities from adaptation using device id */ -#ifdef _GSTREAMER_BACKEND_ - XAStaticCapsData temp; - res = XAStaticCapsAdapt_GetCapsById(XACAP_DEVSNK|XACAP_AUDIO, deviceId, &temp); + + + res = XACapabilitiesMgr_GetCapsById(impl->capslist, (XACapsType)(XACAP_DEVSNK|XACAP_AUDIO), deviceId, &temp); if( res == XA_RESULT_SUCCESS ) { + XAAudioOutputDescriptor* desc = ((XAAudioOutputDescriptor*)(temp.pEntry)); /* map applicable values to XAAudioCodecCapabilities */ - pDescriptor->maxChannels=temp.maxCh; - pDescriptor->minSampleRate=temp.minSR*1000; /* milliHz */ - if (temp.maxSR < (0xFFFFFFFF / 1000)) + pDescriptor->maxChannels=desc->maxChannels; + pDescriptor->minSampleRate=desc->minSampleRate*1000; /* milliHz */ + if (desc->maxSampleRate < (0xFFFFFFFF / 1000)) { - pDescriptor->maxSampleRate = temp.maxSR*1000; + pDescriptor->maxSampleRate = desc->maxSampleRate*1000; } else { @@ -307,7 +308,7 @@ pDescriptor->pDeviceName = temp.adaptId; /* other caps undefined */ } -#endif + switch (deviceId) { @@ -427,15 +428,15 @@ } else { -#ifdef _GSTREAMER_BACKEND_ - XAStaticCapsData temp; + + XACapabilities temp; XAuint32 associatedCount = 0; XAuint32 i = 0; for( i=0; inumInputDevices; i++ ) { /* query device id from adaptation using index value */ - res = XAStaticCapsAdapt_GetCapsByIdx(XACAP_DEVSRC|XACAP_AUDIO, i, &temp); + res = XACapabilitiesMgr_GetCapsByIdx(impl->capslist, (XACapsType)(XACAP_DEVSRC|XACAP_AUDIO), i, &temp); if (temp.xaid != deviceId) { associatedCount++; @@ -454,7 +455,7 @@ for( i=0, associatedCount = 0; inumInputDevices; i++ ) { /* query device id from adaptation using index value */ - res = XAStaticCapsAdapt_GetCapsByIdx(XACAP_DEVSRC|XACAP_AUDIO, i, &temp); + res = XACapabilitiesMgr_GetCapsByIdx(impl->capslist, (XACapsType)(XACAP_DEVSRC|XACAP_AUDIO), i, &temp); if (temp.xaid != deviceId) { pAudioInputDeviceIDs[associatedCount++] = temp.xaid; @@ -463,7 +464,7 @@ } *pNumAudioInputs = associatedCount; -#endif + if(!pAudioInputDeviceIDs) { @@ -523,15 +524,15 @@ } else { -#ifdef _GSTREAMER_BACKEND_ - XAStaticCapsData temp; + + XACapabilities temp; XAuint32 associatedCount = 0; XAuint32 i = 0; for( i=0; inumOutputDevices; i++ ) { /* query device id from adaptation using index value */ - res = XAStaticCapsAdapt_GetCapsByIdx(XACAP_DEVSNK|XACAP_AUDIO, i, &temp); + res = XACapabilitiesMgr_GetCapsByIdx(impl->capslist, (XACapsType)(XACAP_DEVSNK|XACAP_AUDIO), i, &temp); if (temp.xaid != deviceId) { associatedCount++; @@ -550,7 +551,7 @@ for( i=0, associatedCount = 0; inumOutputDevices; i++ ) { /* query device id from adaptation using index value */ - res = XAStaticCapsAdapt_GetCapsByIdx(XACAP_DEVSNK|XACAP_AUDIO, i, &temp); + res = XACapabilitiesMgr_GetCapsByIdx(impl->capslist, (XACapsType)(XACAP_DEVSNK|XACAP_AUDIO), i, &temp); if (temp.xaid != deviceId) { pAudioOutputDeviceIDs[associatedCount++] = temp.xaid; @@ -559,7 +560,7 @@ } *pNumAudioOutputs = associatedCount; -#endif + if(!pAudioOutputDeviceIDs) { @@ -674,18 +675,19 @@ } else { -#ifdef _GSTREAMER_BACKEND_ - XAStaticCapsData temp; - res = XAStaticCapsAdapt_GetCapsById(XACAP_DEVSNK|XACAP_AUDIO, + +/* XACapabilities temp; + res = XACapabilitiesMgr_GetCapsById(NULL, (XACapsType)(XACAP_DEVSNK|XACAP_AUDIO), deviceId, &temp); - /* deviceid can be either input or output*/ + deviceid can be either input or output if( res == XA_RESULT_FEATURE_UNSUPPORTED ) { - res = XAStaticCapsAdapt_GetCapsById(XACAP_DEVSRC|XACAP_AUDIO, + res = XACapabilitiesMgr_GetCapsById(NULL, (XACapsType)(XACAP_DEVSRC|XACAP_AUDIO), deviceId, &temp); } if( res == XA_RESULT_SUCCESS ) { + XAAudioOutputDescriptor* desc = ((XAAudioOutputDescriptor*)(temp.pEntry)); XAuint32 count = 0, i = 0; for (i=0; i < sizeof(temp.pcmProfilesSupported)*8; i++) count+=temp.pcmProfilesSupported>>i&0x1; @@ -714,8 +716,8 @@ } } *pNumOfSampleFormats = count; - } -#endif + }*/ + if(!pSampleFormats) { @@ -739,7 +741,7 @@ /* XAAudIODevCapaItfImpl_Create * Description: Allocate and initialize XAAudIODevCapaItfImpl */ -XAAudIODevCapaItfImpl* XAAudIODevCapaItfImpl_Create() +XAAudIODevCapaItfImpl* XAAudIODevCapaItfImpl_Create(XACapabilities* caps) { XAAudIODevCapaItfImpl* self = (XAAudIODevCapaItfImpl*) calloc(1,sizeof(XAAudIODevCapaItfImpl)); @@ -770,13 +772,16 @@ XAAudIODevCapaItfImpl_RegisterAvailableAudioOutputsChangedCallback; self->itf.RegisterDefaultDeviceIDMapChangedCallback = XAAudIODevCapaItfImpl_RegisterDefaultDeviceIDMapChangedCallback; -#ifdef _GSTREAMER_BACKEND_ + self->capslist = caps; /* init variables */ - assert( XAStaticCapsAdapt_GetCapsCount( XACAP_DEVSNK|XACAP_AUDIO, - &(self->numOutputDevices) ) == XA_RESULT_SUCCESS ); - assert( XAStaticCapsAdapt_GetCapsCount( XACAP_DEVSRC|XACAP_AUDIO, - &(self->numInputDevices) ) == XA_RESULT_SUCCESS ); -#endif + XACapabilitiesMgr_GetCapsCount( caps, (XACapsType)(XACAP_DEVSNK|XACAP_AUDIO), + &(self->numOutputDevices) ); + XACapabilitiesMgr_GetCapsCount( caps, (XACapsType)(XACAP_DEVSRC|XACAP_AUDIO), + &(self->numInputDevices) ); + + /*TODO: Remove this later*/ + XACapabilitiesMgr_QueryColorFormats(caps, NULL, NULL); + self->inputCbPtrToSelf = NULL; self->outputCbPtrToSelf = NULL; self->deviceMapCbPtrToSelf = NULL;