PASDK-218:Update cbReset() to use Nominal Delay.
authorFrank Livingston <frank-livingston@ti.com>
Sun, 9 Jul 2017 21:44:48 +0000 (16:44 -0500)
committerFrank Livingston <frank-livingston@ti.com>
Sun, 9 Jul 2017 21:44:48 +0000 (16:44 -0500)
THIS CODE IS UNTESTED. So far don't observe CB UND/OVR over thresholds, so cbReset() not called.
Note application-level CB reset counters exist on ARM & DSP.

pasdk/common/aspDecOpCircBuf_common.c

index 607b8ae98505f7a07c2eecedf672d974b252d786..39b8ba3b9e1487a62043479970c96c0939e6f2fd 100644 (file)
@@ -126,23 +126,27 @@ Int cbReset(
     Cache_inv(pCb, sizeof(PAF_AST_DecOpCircBuf), Cache_Type_ALLD, 0);
     Cache_wait();
 
+    // Initialize CB primed flag
+    pCb->primedFlag = 0;
+    // Initialize delta samples
+    pCb->deltaSamps = 0;
+    
+    // Reset circular buffer:
+    //  - AF write, read indices
     if (pCb->sourceSel == PAF_SOURCE_PCM)
     {
-        // 2*256 in behind
         pCb->afWrtIdx = ASP_DECOP_CB_INIT_WRTIDX_PCM;
         pCb->afRdIdx = ASP_DECOP_CB_INIT_RDIDX_PCM;
         pCb->pcmRdIdx = 0;
     }
     else if (pCb->sourceSel == PAF_SOURCE_DDP)
     {
-        // 4*256 in behind
         pCb->afWrtIdx = ASP_DECOP_CB_INIT_WRTIDX_DDP;
         pCb->afRdIdx = ASP_DECOP_CB_INIT_RDIDX_DDP;
-        pCb->pcmRdIdx = pCb->decOpFrameLen - ASP_DECOP_CB_INIT_LAG_DDP*pCb->strFrameLen;
+        pCb->pcmRdIdx = 0;
     }
     else if (pCb->sourceSel == PAF_SOURCE_THD)
     {
-        // 0 in behind
         pCb->afWrtIdx = ASP_DECOP_CB_INIT_WRTIDX_THD;
         pCb->afRdIdx = ASP_DECOP_CB_INIT_RDIDX_THD;
         pCb->pcmRdIdx = 0;
@@ -155,14 +159,23 @@ Int cbReset(
     {
         pAfCb = &pCb->afCb[n];
         
-        // clear PCM data
+        // Clear PCM data
         for (i=0; i<pCb->maxAFChanNum; i++)
         {
             memset(pAfCb->data.sample[i], 0, pCb->maxAFSampCount);
+            pAfCb->data.samsiz[i] = 0;
         }
         
-        // clear metadata
-        pAfCb->numPrivateMetadata = 0;
+        // Clear metadata
+        pAfCb->bsMetadata_type     = PAF_bsMetadata_none;           /* non zero if metadata is attached. */
+        pAfCb->pafBsMetadataUpdate = 0;                             /* indicates whether bit-stream metadata update */
+        pAfCb->numPrivateMetadata  = 0;                             /* number of valid private metadata (0 or 1 if metadata filtering enabled) */
+        pAfCb->bsMetadata_offset   = 0;                             /* offset into audio frame for change in bsMetadata_type field */
+        for (i=0; i<PAF_MAX_NUM_PRIVATE_MD; i++)
+        {
+            pAfCb->pafPrivateMetadata[i].offset = 0; 
+            pAfCb->pafPrivateMetadata[i].size   = 0;
+        }
     }
     
     // reset stats