--- a/khronosfws/openmax_al/src/gst_adaptation/xagstcapabilitiesmgr.c Thu May 27 13:20:50 2010 +0300
+++ b/khronosfws/openmax_al/src/gst_adaptation/xagstcapabilitiesmgr.c Wed Jun 23 18:47:10 2010 +0300
@@ -1,35 +1,40 @@
/*
-* 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:
-*
-*/
-#include "xagstcapabilitiesmgr.h"
+ * 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: GST Capabilities Mgr. Here you can query the capabilities
+ * of various GST components and store it in a list.
+ *
+ */
+
#include <stdio.h>
#include <string.h>
+#include "xagstcapabilitiesmgr.h"
+#include "xaframeworkmgr.h"
-static XAresult XAGSTCapabilitiesMgr_GetAudioAACEncoderCapabilities(XACapabilities **ppNode);
-static XAresult XAGSTCapabilitiesMgr_GetAudioAMREncoderCapabilities(XACapabilities **ppNode);
-static XAresult XAGSTCapabilitiesMgr_GetAudioPCMEncoderCapabilities(XACapabilities **ppNode);
+static XAresult XAGSTCapabilitiesMgr_GetAudioAACEncoderCapabilities(
+ XACapabilities **ppNode);
+static XAresult XAGSTCapabilitiesMgr_GetAudioAMREncoderCapabilities(
+ XACapabilities **ppNode);
+static XAresult XAGSTCapabilitiesMgr_GetAudioPCMEncoderCapabilities(
+ XACapabilities **ppNode);
/* XAresult XAGSTCapabilitiesMgr_UpdateCapabilitieList
* Description: Update the capabilities list supported by GStreamer framework.
*/
XAresult XAGSTCapabilitiesMgr_UpdateCapabilitieList(
- FrameworkMap *frameworkMap,
- XACapabilities **ppListHead)
+ FrameworkMap *frameworkMap, XACapabilities **ppListHead)
-{
+ {
XAresult res = XA_RESULT_SUCCESS;
XACapabilities *newNode = NULL;
FWMgrFwType fwtype = FWMgrFWUknown;
@@ -39,166 +44,156 @@
DEBUG_API("->XAGSTCapabilitiesMgr_UpdateCapabilitieList");
- if(!frameworkMap || !ppListHead)
- {
+ if (!frameworkMap || !ppListHead)
+ {
res = XA_RESULT_PARAMETER_INVALID;
return res;
- }
-
+ }
+
lastNode = firstNode = *ppListHead;
-
+
/* traverse and point to the last node in the list */
- while(lastNode && lastNode->next)
- {
+ while (lastNode && lastNode->next)
+ {
lastNode = lastNode->next;
- }
-
+ }
uri = "file:///c:/test.mp4";
- fwtype = XAFrameworkMgr_GetFramework(
- frameworkMap,
- uri,
- FWMgrMORecorder);
-
- if(fwtype == FWMgrFWGST)
- {
- /* Add codec capabilities */
- newNode = NULL;
- res = XAGSTCapabilitiesMgr_GetAudioAACEncoderCapabilities(&newNode);
- if (res != XA_RESULT_SUCCESS)
- {
- return res;
- }
- if (lastNode)
- {
- lastNode->next = newNode;
- }
- if (newNode)
- { /* if a new node is created move lastNode to the new item */
- if (!firstNode)
- firstNode = newNode;
- lastNode = newNode;
- }
- }
-
+ fwtype = XAFrameworkMgr_GetFramework(frameworkMap, uri, FWMgrMORecorder);
+
+ if (fwtype == FWMgrFWGST)
+ {
+ /* Add codec capabilities */
+ newNode = NULL;
+ res = XAGSTCapabilitiesMgr_GetAudioAACEncoderCapabilities(&newNode);
+ if (res != XA_RESULT_SUCCESS)
+ {
+ return res;
+ }
+ if (lastNode)
+ {
+ lastNode->next = newNode;
+ }
+ if (newNode)
+ { /* if a new node is created move lastNode to the new item */
+ if (!firstNode)
+ firstNode = newNode;
+ lastNode = newNode;
+ }
+ }
uri = "file:///c:/test.amr";
- fwtype = XAFrameworkMgr_GetFramework(
- frameworkMap,
- uri,
- FWMgrMORecorder);
-
- if(fwtype == FWMgrFWGST)
- {
- newNode = NULL;
- res = XAGSTCapabilitiesMgr_GetAudioAMREncoderCapabilities(&newNode);
- if (res != XA_RESULT_SUCCESS)
- {
- return res;
- }
- if (lastNode)
- {
- lastNode->next = newNode;
- }
- if (newNode)
- { /* if a new node is created move lastNode to the new item */
- if (!firstNode)
- firstNode = newNode;
- lastNode = newNode;
- }
- }
+ fwtype = XAFrameworkMgr_GetFramework(frameworkMap, uri, FWMgrMORecorder);
+
+ if (fwtype == FWMgrFWGST)
+ {
+ newNode = NULL;
+ res = XAGSTCapabilitiesMgr_GetAudioAMREncoderCapabilities(&newNode);
+ if (res != XA_RESULT_SUCCESS)
+ {
+ return res;
+ }
+ if (lastNode)
+ {
+ lastNode->next = newNode;
+ }
+ if (newNode)
+ { /* if a new node is created move lastNode to the new item */
+ if (!firstNode)
+ firstNode = newNode;
+ lastNode = newNode;
+ }
+ }
uri = "file:///c:/test.wav";
- fwtype = XAFrameworkMgr_GetFramework(
- frameworkMap,
- uri,
- FWMgrMORecorder);
-
- if(fwtype == FWMgrFWGST)
- {
- newNode = NULL;
- res = XAGSTCapabilitiesMgr_GetAudioPCMEncoderCapabilities(&newNode);
- if (res != XA_RESULT_SUCCESS)
- {
- return res;
- }
- if (lastNode)
- {
- lastNode->next = newNode;
- }
- if (newNode)
- { /* if a new node is created move lastNode to the new item */
- if (!firstNode)
- firstNode = newNode;
- lastNode = newNode;
- }
- }
+ fwtype = XAFrameworkMgr_GetFramework(frameworkMap, uri, FWMgrMORecorder);
+
+ if (fwtype == FWMgrFWGST)
+ {
+ newNode = NULL;
+ res = XAGSTCapabilitiesMgr_GetAudioPCMEncoderCapabilities(&newNode);
+ if (res != XA_RESULT_SUCCESS)
+ {
+ return res;
+ }
+ if (lastNode)
+ {
+ lastNode->next = newNode;
+ }
+ if (newNode)
+ { /* if a new node is created move lastNode to the new item */
+ if (!firstNode)
+ firstNode = newNode;
+ lastNode = newNode;
+ }
+ }
/* if empty list, then append first node as the head */
if (!(*ppListHead))
{
*ppListHead = firstNode;
- }
- DEBUG_API("<-XAGSTCapabilitiesMgr_UpdateCapabilitieList");
+ }DEBUG_API("<-XAGSTCapabilitiesMgr_UpdateCapabilitieList");
return res;
-}
+ }
-XAresult XAGSTCapabilitiesMgr_GetAudioAACEncoderCapabilities(XACapabilities **ppNode)
-{
+XAresult XAGSTCapabilitiesMgr_GetAudioAACEncoderCapabilities(
+ XACapabilities **ppNode)
+ {
XAresult res = XA_RESULT_SUCCESS;
XACapabilities *newNode = NULL;
XAAudioCodecDescriptor *entries = NULL;
XAchar aacencelement[] = "nokiaaacenc";
int strLen = 0;
-
- newNode = (XACapabilities *)calloc(1, sizeof(XACapabilities));
+
+ newNode = (XACapabilities *) calloc(1, sizeof(XACapabilities));
if (!newNode)
- {
+ {
res = XA_RESULT_MEMORY_FAILURE;
return res;
- }
+ }
newNode->capsType = AUD_E;
newNode->xaid = XA_AUDIOCODEC_AAC;
newNode->noOfEntries = 1;
-
-
- strLen = strlen((char*)aacencelement);
- newNode->adaptId = (XAchar *)calloc(strLen + 1, sizeof(XAchar));
+
+ strLen = strlen((char*) aacencelement);
+ newNode->adaptId = (XAchar *) calloc(strLen + 1, sizeof(XAchar));
if (!newNode->adaptId)
- {
+ {
res = XA_RESULT_MEMORY_FAILURE;
XACapabilitiesMgr_DeleteCapabilitieList(&newNode);
return res;
- }
+ }
- strncpy((char*)newNode->adaptId, (char*)aacencelement, strLen);
+ strncpy((char*) newNode->adaptId, (char*) aacencelement, strLen);
newNode->adaptId[strLen] = '\0'; /*Null terminate it*/
-
+
/* Allocate array */
- entries = (XAAudioCodecDescriptor*)calloc(1, sizeof(XAAudioCodecDescriptor));
+ entries = (XAAudioCodecDescriptor*) calloc(1,
+ sizeof(XAAudioCodecDescriptor));
if (!entries)
- {
+ {
res = XA_RESULT_MEMORY_FAILURE;
XACapabilitiesMgr_DeleteCapabilitieList(&newNode);
return res;
- }
+ }
- newNode->pEntry = (void*)entries;
-
+ newNode->pEntry = (void*) entries;
+
entries->maxChannels = 2;
entries->minBitsPerSample = 16;
entries->maxBitsPerSample = 16;
- entries->minSampleRate = 8000000; /*milliHz*/
+ entries->minSampleRate = 8000000; /*milliHz*/
entries->maxSampleRate = 48000000;
- entries->isFreqRangeContinuous=XA_BOOLEAN_FALSE;
+ entries->isFreqRangeContinuous = XA_BOOLEAN_FALSE;
entries->numSampleRatesSupported = 7;
- entries->pSampleRatesSupported = (XAmilliHertz*)calloc(entries->numSampleRatesSupported, sizeof(XAmilliHertz));
+ entries->pSampleRatesSupported = (XAmilliHertz*) calloc(
+ entries->numSampleRatesSupported, sizeof(XAmilliHertz));
if (!entries->pSampleRatesSupported)
- {
+ {
res = XA_RESULT_MEMORY_FAILURE;
XACapabilitiesMgr_DeleteCapabilitieList(&newNode);
return res;
- }
+ }
/* entries in milliHz */
entries->pSampleRatesSupported[0] = 8000000;
entries->pSampleRatesSupported[1] = 11025000;
@@ -212,13 +207,14 @@
entries->maxBitRate = 256000;
entries->isBitrateRangeContinuous = XA_BOOLEAN_FALSE;
entries->numBitratesSupported = 8;
- entries->pBitratesSupported = (XAuint32*)calloc(entries->numBitratesSupported, sizeof(XAuint32));
+ entries->pBitratesSupported = (XAuint32*) calloc(
+ entries->numBitratesSupported, sizeof(XAuint32));
if (!entries->pBitratesSupported)
- {
+ {
res = XA_RESULT_MEMORY_FAILURE;
XACapabilitiesMgr_DeleteCapabilitieList(&newNode);
return res;
- }
+ }
(entries->pBitratesSupported)[0] = 32000;
(entries->pBitratesSupported)[1] = 64000;
(entries->pBitratesSupported)[2] = 96000;
@@ -231,58 +227,61 @@
entries->profileSetting = XA_AUDIOPROFILE_AAC_AAC;
entries->modeSetting = XA_AUDIOMODE_AAC_LC;
- newNode->pEntry = (void*)entries;
+ newNode->pEntry = (void*) entries;
*ppNode = newNode;
return res;
-}
+ }
-XAresult XAGSTCapabilitiesMgr_GetAudioAMREncoderCapabilities(XACapabilities **ppNode)
-{
+XAresult XAGSTCapabilitiesMgr_GetAudioAMREncoderCapabilities(
+ XACapabilities **ppNode)
+ {
XAresult res = XA_RESULT_SUCCESS;
XACapabilities *newNode = NULL;
XAAudioCodecDescriptor *entries = NULL;
-
- newNode = (XACapabilities *)calloc(1, sizeof(XACapabilities));
+
+ newNode = (XACapabilities *) calloc(1, sizeof(XACapabilities));
if (!newNode)
- {
+ {
res = XA_RESULT_MEMORY_FAILURE;
return res;
- }
+ }
newNode->capsType = AUD_E;
newNode->xaid = XA_AUDIOCODEC_AMR;
newNode->noOfEntries = 1;
/* Allocate array */
- entries = (XAAudioCodecDescriptor*)calloc(1, sizeof(XAAudioCodecDescriptor));
+ entries = (XAAudioCodecDescriptor*) calloc(1,
+ sizeof(XAAudioCodecDescriptor));
if (!entries)
- {
+ {
res = XA_RESULT_MEMORY_FAILURE;
XACapabilitiesMgr_DeleteCapabilitieList(&newNode);
return res;
- }
+ }
- newNode->pEntry = (void*)entries;
-
+ newNode->pEntry = (void*) entries;
+
entries->maxChannels = 1;
entries->minBitsPerSample = 8;
entries->maxBitsPerSample = 8;
- entries->minSampleRate = 8000000; /*milliHz*/
+ entries->minSampleRate = 8000000; /*milliHz*/
entries->maxSampleRate = 8000000;
- entries->isFreqRangeContinuous=XA_BOOLEAN_TRUE;
+ entries->isFreqRangeContinuous = XA_BOOLEAN_TRUE;
entries->numSampleRatesSupported = 1;
- entries->minBitRate=4750;
- entries->maxBitRate=12200;
- entries->isBitrateRangeContinuous=XA_BOOLEAN_FALSE;
+ entries->minBitRate = 4750;
+ entries->maxBitRate = 12200;
+ entries->isBitrateRangeContinuous = XA_BOOLEAN_FALSE;
entries->numBitratesSupported = 8;
- entries->pBitratesSupported = (XAuint32*)calloc(entries->numBitratesSupported, sizeof(XAuint32));
+ entries->pBitratesSupported = (XAuint32*) calloc(
+ entries->numBitratesSupported, sizeof(XAuint32));
if (!entries->pBitratesSupported)
- {
+ {
res = XA_RESULT_MEMORY_FAILURE;
XACapabilitiesMgr_DeleteCapabilitieList(&newNode);
return res;
- }
+ }
(entries->pBitratesSupported)[0] = 4750;
(entries->pBitratesSupported)[1] = 5150;
(entries->pBitratesSupported)[2] = 5900;
@@ -295,54 +294,57 @@
entries->profileSetting = XA_AUDIOPROFILE_AMR;
entries->modeSetting = 0;
- newNode->pEntry = (void*)entries;
+ newNode->pEntry = (void*) entries;
*ppNode = newNode;
return res;
-}
+ }
-XAresult XAGSTCapabilitiesMgr_GetAudioPCMEncoderCapabilities(XACapabilities **ppNode)
-{
+XAresult XAGSTCapabilitiesMgr_GetAudioPCMEncoderCapabilities(
+ XACapabilities **ppNode)
+ {
XAresult res = XA_RESULT_SUCCESS;
XACapabilities *newNode = NULL;
XAAudioCodecDescriptor *entries = NULL;
- newNode = (XACapabilities *)calloc(1, sizeof(XACapabilities));
+ newNode = (XACapabilities *) calloc(1, sizeof(XACapabilities));
if (!newNode)
- {
+ {
res = XA_RESULT_MEMORY_FAILURE;
return res;
- }
+ }
newNode->capsType = AUD_E;
newNode->xaid = XA_AUDIOCODEC_PCM;
newNode->noOfEntries = 1;
/* Allocate array */
- entries = (XAAudioCodecDescriptor*)calloc(1, sizeof(XAAudioCodecDescriptor));
+ entries = (XAAudioCodecDescriptor*) calloc(1,
+ sizeof(XAAudioCodecDescriptor));
if (!entries)
- {
+ {
res = XA_RESULT_MEMORY_FAILURE;
XACapabilitiesMgr_DeleteCapabilitieList(&newNode);
return res;
- }
+ }
- newNode->pEntry = (void*)entries;
+ newNode->pEntry = (void*) entries;
entries->maxChannels = 2;
entries->minBitsPerSample = 16;
entries->maxBitsPerSample = 16;
- entries->minSampleRate = 8000000; /*milliHz*/
+ entries->minSampleRate = 8000000; /*milliHz*/
entries->maxSampleRate = 96000000;
- entries->isFreqRangeContinuous=XA_BOOLEAN_FALSE;
+ entries->isFreqRangeContinuous = XA_BOOLEAN_FALSE;
entries->numSampleRatesSupported = 10;
- entries->pSampleRatesSupported = (XAmilliHertz*)calloc(entries->numSampleRatesSupported, sizeof(XAmilliHertz));
+ entries->pSampleRatesSupported = (XAmilliHertz*) calloc(
+ entries->numSampleRatesSupported, sizeof(XAmilliHertz));
if (!entries->pSampleRatesSupported)
- {
+ {
res = XA_RESULT_MEMORY_FAILURE;
XACapabilitiesMgr_DeleteCapabilitieList(&newNode);
return res;
- }
+ }
/* entries in milliHz */
entries->pSampleRatesSupported[0] = 12000000;
entries->pSampleRatesSupported[1] = 16000000;
@@ -363,8 +365,8 @@
entries->profileSetting = XA_AUDIOPROFILE_PCM;
entries->modeSetting = 0;
- newNode->pEntry = (void*)entries;
+ newNode->pEntry = (void*) entries;
*ppNode = newNode;
return res;
-}
+ }