khronosfws/openmax_al/src/engine/xaaudioencodercapabilitiesitf.c
changeset 53 eabc8c503852
parent 33 5e8b14bae8c3
--- a/khronosfws/openmax_al/src/engine/xaaudioencodercapabilitiesitf.c	Fri Sep 03 19:34:12 2010 -0500
+++ b/khronosfws/openmax_al/src/engine/xaaudioencodercapabilitiesitf.c	Tue Sep 21 11:38:43 2010 -0500
@@ -17,7 +17,6 @@
 
 #include <stdio.h>
 #include <stdlib.h>
-#include <assert.h>
 #include <string.h>
 
 #include "xaglobals.h"
@@ -69,8 +68,8 @@
             { /* query array of encoders */
             if (*pNumEncoders < impl->numCodecs)
                 {
-                DEBUG_ERR("XA_RESULT_BUFFER_INSUFFICIENT");
-                res = XA_RESULT_BUFFER_INSUFFICIENT;
+                DEBUG_ERR("XA_RESULT_PARAMETER_INVALID");
+                res = XA_RESULT_PARAMETER_INVALID;
                 }
             else
                 {
@@ -85,10 +84,6 @@
                             &temp);
                     pEncoderIds[i] = temp.xaid;
                     }
-
-                pEncoderIds[0] = XA_AUDIOCODEC_AMR;
-                pEncoderIds[1] = XA_AUDIOCODEC_AAC;
-                pEncoderIds[2] = XA_AUDIOCODEC_PCM;
                 }
             }
 
@@ -111,6 +106,7 @@
 
     XACapabilities temp;
 
+    XAint16 index;
     DEBUG_API("->XAAudioEncoderCapabilitiesItfImpl_GetAudioEncoderCapabilities");
 
     /*if( !impl || !pIndex || !pDescriptor )*/
@@ -123,15 +119,19 @@
         res = XA_RESULT_PARAMETER_INVALID;
         return res;
         }
-    else
+    else if(!pDescriptor)
         {
-        *pIndex = 1;
-        if (!pDescriptor)
-            {
-            return res;
-            }
+        res = XACapabilitiesMgr_GetCapsById(impl->capslist,
+                (XACapsType) (XACAP_ENCODER | XACAP_AUDIO), encoderId, &temp);
+        
+        *pIndex = temp.noOfEntries;
+
+        return res;
+
         }
-
+    
+    index = *pIndex;
+    
     /* query capabilities from adaptation using codec id */
     memset(pDescriptor, 0, sizeof(XAAudioCodecDescriptor));
  
@@ -141,8 +141,23 @@
         {
         XAAudioCodecDescriptor* desc =
                 ((XAAudioCodecDescriptor*) (temp.pEntry));
+        if(index >= temp.noOfEntries)
+            {
+            DEBUG_ERR("XA_RESULT_PARAMETER_INVALID");
+            res = XA_RESULT_PARAMETER_INVALID;
+            return res;
+        
+            }
+        else
+            {
+            //indexing
+            desc = desc+index;
+            }
+
         /* map applicable values to XAAudioCodecCapabilities */
         pDescriptor->maxChannels = desc->maxChannels;
+        pDescriptor->minBitsPerSample = desc->minBitsPerSample;
+        pDescriptor->maxBitsPerSample = desc->maxBitsPerSample;
         pDescriptor->minSampleRate = desc->minSampleRate ; /* milliHz */
         if (desc->maxSampleRate < (0xFFFFFFFF))
             {
@@ -152,13 +167,15 @@
             {
             pDescriptor->maxSampleRate = 0xFFFFFFFF;
             }
-        pDescriptor->minBitsPerSample = desc->minBitsPerSample;
-        pDescriptor->maxBitsPerSample = desc->maxBitsPerSample;
+
       pDescriptor->isFreqRangeContinuous=desc->isFreqRangeContinuous;
-        pDescriptor->minBitRate = desc->minBitRate;
-        pDescriptor->maxBitRate = desc->maxBitRate;
-        pDescriptor->numBitratesSupported = desc->numBitratesSupported;
+      pDescriptor->pSampleRatesSupported = desc->pSampleRatesSupported;
+      pDescriptor->numSampleRatesSupported = desc->numSampleRatesSupported;
+      pDescriptor->minBitRate = desc->minBitRate;
+      pDescriptor->maxBitRate = desc->maxBitRate;
       pDescriptor->isBitrateRangeContinuous=desc->isBitrateRangeContinuous;
+      pDescriptor->pBitratesSupported = desc->pBitratesSupported;
+      pDescriptor->numBitratesSupported = desc->numBitratesSupported;
       pDescriptor->profileSetting=desc->profileSetting;
       pDescriptor->modeSetting=desc->modeSetting; /* no chanmode for pcm defined */
     }
@@ -199,11 +216,12 @@
         self->capslist = caps;
 
         /* init variables */
-        assert( XACapabilitiesMgr_GetCapsCount( caps, (XACapsType)((XACapsType)(XACAP_ENCODER|XACAP_AUDIO)),
-                        &(self->numCodecs) ) == XA_RESULT_SUCCESS );
+        XACapabilitiesMgr_GetCapsCount( caps, (XACapsType)((XACapsType)(XACAP_ENCODER|XACAP_AUDIO)),
+                        &(self->numCodecs) );
 
         /*self->mmfEngine = (void*)mmf_capability_engine_init();*/
-        self->numCodecs = 3;
+        
+        //self->numCodecs = 3;
         self->self = self;
 
         }
@@ -218,7 +236,6 @@
         XAAudioEncoderCapabilitiesItfImpl* self)
     {
     DEBUG_API("->XAAudioEncoderCapabilitiesItfImpl_Free");
-    assert(self==self->self);
     free(self);
     DEBUG_API("<-XAAudioEncoderCapabilitiesItfImpl_Free");
     }