summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: 9a015d9)
raw | patch | inline | side by side (parent: 9a015d9)
author | Frank Livingston <frank-livingston@ti.com> | |
Thu, 1 Sep 2016 20:42:12 +0000 (15:42 -0500) | ||
committer | Frank Livingston <frank-livingston@ti.com> | |
Thu, 1 Sep 2016 20:42:12 +0000 (15:42 -0500) |
processor_audio_sdk_1_00_00_00/pasdk/common/paf_decOpCircBuf.c | patch | blob | history |
diff --git a/processor_audio_sdk_1_00_00_00/pasdk/common/paf_decOpCircBuf.c b/processor_audio_sdk_1_00_00_00/pasdk/common/paf_decOpCircBuf.c
index 12e80a665fb4990b78e60bd9dcde855e7c3d1197..dfa8f809c4c95f34207d91f6a3d79fe618c1ed1e 100644 (file)
#define MAX_NUM_AF_PCM ( 4 )
#define MAX_NUM_AF_DDP ( 2 )
-#define CB_INIT_RD_LAG ( 2 )
+#define CB_INIT_RD_LAG ( 4 )
// Initialize circular buffer
Int cbInit(
pAfCb->data.samsiz[i] = 0;
}
- //Initialize metadata buffers //QIN
+
+ // Initialize metadata buffers //QIN
for (i=0; i<PAF_MAX_NUM_PRIVATE_MD; i++)
{
pAfCb->pafPrivateMetadata[i].offset = 0;
{
Cache_wb(pAfCb->data.sample[i], decOpFrameLen*sizeof(PAF_AudioData), Cache_Type_ALLD, 0);
}
- for (i=0; i<PAF_MAX_NUM_PRIVATE_MD; i++) // Write back metadata //QIN
- {
- Cache_wb(&pAfCb->pafPrivateMetadata[i], sizeof(PAF_PrivateMetadata), Cache_Type_ALLD, 0);
- }
+ // FL: unnecessary since part of AF
+ //for (i=0; i<PAF_MAX_NUM_PRIVATE_MD; i++) // Write back metadata //QIN
+ //{
+ // Cache_wb(&pAfCb->pafPrivateMetadata[i], sizeof(PAF_PrivateMetadata), Cache_Type_ALLD, 0);
+ //}
}
Cache_wait();
{
pAfCb = &pCb->afCb[n];
Cache_inv(pAfCb->data.sample, PAF_DECOP_CB_MAX_NUM_PCM_CH*sizeof(PAF_AudioData *), Cache_Type_ALLD, 0);
- for (i=0; i<PAF_MAX_NUM_PRIVATE_MD; i++) //QIN
- {
- Cache_inv(&pAfCb->pafPrivateMetadata[i], sizeof(PAF_PrivateMetadata), Cache_Type_ALLD, 0);
- }
+ // FL: unnecessary since part of AF
+ //for (i=0; i<PAF_MAX_NUM_PRIVATE_MD; i++) //QIN
+ //{
+ // Cache_inv(&pAfCb->pafPrivateMetadata[i], sizeof(PAF_PrivateMetadata), Cache_Type_ALLD, 0);
+ //}
}
Cache_wait();
{
pCb->errUndCnt++;
//SW_BREAKPOINT; // FL: debug
- Log_info1("cbReadAf: ERROR: underflow, numAfCb=%d", pCb->numAfCb);
return PAF_DECOP_CB_READ_UNDERFLOW;
}
}
// Invalidate audio frame
Cache_inv(pAfCb, sizeof(PAF_AudioFrame), Cache_Type_ALLD, 0);
Cache_inv(pAfCb->data.samsiz, PAF_DECOP_CB_MAX_NUM_PCM_CH*sizeof(PAF_AudioSize), Cache_Type_ALLD, 0);
- for (i=0; i<PAF_MAX_NUM_PRIVATE_MD; i++) //QIN
+ for (i=0; i<pAfCb->numPrivateMetadata; i++) //QIN // FL: only invalidate numPrivateMetadata
{
- Cache_inv(&pAfCb->pafPrivateMetadata[i], sizeof(PAF_PrivateMetadata), Cache_Type_ALLD, 0);
- Cache_inv(pAfCb->pafPrivateMetadata[i].pMdBuf, PAF_MAX_PRIVATE_MD_SZ*sizeof(Int8), Cache_Type_ALLD, 0);
+ //Cache_inv(&pAfCb->pafPrivateMetadata[i], sizeof(PAF_PrivateMetadata), Cache_Type_ALLD, 0); // FL: unnecessary since part of AF
+ Cache_inv(pAfCb->pafPrivateMetadata[i].pMdBuf, pAfCb->pafPrivateMetadata[i].size, Cache_Type_ALLD, 0); // FL: only update metadata package size
}
Cache_wait();
}
}
// read metadata //QIN
- for (i = 0; i < PAF_MAX_NUM_PRIVATE_MD; i++)
+ for (i = 0; i < pAfCb->numPrivateMetadata; i++) // FL: only read numPrivateMetadata
{
- //Invalidate metadata data
- Cache_inv(&pAfCb->pafPrivateMetadata[i], sizeof(PAF_PrivateMetadata), Cache_Type_ALLD, 0);
- Cache_wait();
+ // FL: this is done above
+ ////Invalidate metadata data
+ //Cache_inv(&pAfCb->pafPrivateMetadata[i], sizeof(PAF_PrivateMetadata), Cache_Type_ALLD, 0);
+ //Cache_wait();
+
if ((pAfCb->pafPrivateMetadata[i].offset >= pCb->pcmRdIdx)
&&(pAfCb->pafPrivateMetadata[i].offset < (pCb->pcmRdIdx + pCb->strFrameLen))
&&(pAfCb->pafPrivateMetadata[i].size))
{
- //Invalidate metadata data
- Cache_inv(pAfCb->pafPrivateMetadata[i].pMdBuf, pAfCb->pafPrivateMetadata[i].size, Cache_Type_ALLD, 0);
- Cache_wait();
-
+ // FL: this is done above
+ ////Invalidate metadata data
+ //Cache_inv(pAfCb->pafPrivateMetadata[i].pMdBuf, pAfCb->pafPrivateMetadata[i].size, Cache_Type_ALLD, 0);
+ //Cache_wait();
+
// the offset is adjusted for segment [pCb->pcmRdIdx, (pCb->pcmRdIdx + pCb->pafFrameLen)]
- pAfRd->pafPrivateMetadata[i].offset = 0;//pAfCb->pafPrivateMetadata[i].offset - pCb->pcmRdIdx;
+ pAfRd->pafPrivateMetadata[i].offset = 0; //pAfCb->pafPrivateMetadata[i].offset - pCb->pcmRdIdx;
pAfRd->pafPrivateMetadata[i].size = pAfCb->pafPrivateMetadata[i].size;
- memcpy (pAfRd->pafPrivateMetadata[i].pMdBuf, pAfCb->pafPrivateMetadata[i].pMdBuf, pAfCb->pafPrivateMetadata[i].size);
+ memcpy(pAfRd->pafPrivateMetadata[i].pMdBuf, pAfCb->pafPrivateMetadata[i].pMdBuf, pAfCb->pafPrivateMetadata[i].size);
}
else //reset un-used buf
{
pAfRd->pafPrivateMetadata[i].size = 0;
}
}
+
pCb->pcmRdIdx += pCb->strFrameLen; // update PCM read index
if (pCb->pcmRdIdx == pCb->decOpFrameLen)
{
// (***) FL: revisit
// Invalidate circular buffer configuration.
- // NOTE: Probably only a subset of this information needs to be updated.
+ // NOTE: Probably only a subset of this information nexeds to be updated.
Cache_inv(pCb, sizeof(PAF_DecodeOpCircBuf), Cache_Type_ALLD, 0);
Cache_wait();
Log_info1("cbWriteAf: ERROR: overflow, numAfCb=%d", pCb->numAfCb);
return PAF_DECOP_CB_WRITE_OVERFLOW;
}
- //while (pCb->numAfCb >= pCb->maxNumAfCb); //Qin replace with while loop for debugging
+
// get pointer to current audio frame in circular buffer
pAfCb = &pCb->afCb[pCb->afWrtIdx];
pAfCb->sampleCount = pAfWrt->sampleCount;
pAfCb->channelConfigurationRequest = pAfWrt->channelConfigurationRequest;
pAfCb->channelConfigurationStream = pAfWrt->channelConfigurationStream;
- // write metadata information updated by decoder//QIN
+ // write metadata information updated by decoder //QIN
pAfCb->bsMetadata_type = pAfWrt->bsMetadata_type; /* non zero if metadata is attached. */
pAfCb->pafBsMetadataUpdate = pAfWrt->pafBsMetadataUpdate; /* indicates whether bit-stream metadata update */
pAfCb->numPrivateMetadata = pAfWrt->numPrivateMetadata; /* number of valid private metadata (0 or 1 if metadata filtering enabled) */
}
}
- //Write metadata to circular buffer //QIN
- for (i = 0; i < PAF_MAX_NUM_PRIVATE_MD; i++)
+ // Write metadata to circular buffer
+ for (i = 0; i < pAfCb->numPrivateMetadata; i++) // FL: only copy numPrivateMetadata
{
- if (pAfWrt->pafPrivateMetadata[i].size)
- {
- pAfCb->pafPrivateMetadata[i].offset = pAfWrt->pafPrivateMetadata[i].offset;
- pAfCb->pafPrivateMetadata[i].size = pAfWrt->pafPrivateMetadata[i].size;
- memcpy (pAfCb->pafPrivateMetadata[i].pMdBuf, pAfWrt->pafPrivateMetadata[i].pMdBuf, pAfWrt->pafPrivateMetadata[i].size);
- }
- else
- {
- pAfCb->pafPrivateMetadata[i].offset = 0;
- pAfCb->pafPrivateMetadata[i].size = 0;
- }
+ pAfCb->pafPrivateMetadata[i].offset = pAfWrt->pafPrivateMetadata[i].offset;
+ pAfCb->pafPrivateMetadata[i].size = pAfWrt->pafPrivateMetadata[i].size;
+ memcpy(pAfCb->pafPrivateMetadata[i].pMdBuf, pAfWrt->pafPrivateMetadata[i].pMdBuf, pAfWrt->pafPrivateMetadata[i].size);
}
+
// update audio frame write index
pCb->afWrtIdx++;
if (pCb->afWrtIdx >= pCb->maxNumAfCb)
Cache_wb(pAfCb->data.sample[i], pCb->decOpFrameLen*sizeof(PAF_AudioData), Cache_Type_ALLD, 0);
}
}
- // write back private metadata
- for (i=0; i<PAF_MAX_NUM_PRIVATE_MD; i++) //QIN
+
+ // write back private metadata // QIN
+ for (i=0; i<pAfCb->numPrivateMetadata; i++) // FL: only write back numPrivateMetadata
{
- Cache_wb(&pAfCb->pafPrivateMetadata[i], sizeof(PAF_PrivateMetadata), Cache_Type_ALLD, 0);
- Cache_wb(pAfCb->pafPrivateMetadata[i].pMdBuf, PAF_MAX_PRIVATE_MD_SZ*sizeof(Int8), Cache_Type_ALLD, 0);
+ //Cache_wb(&pAfCb->pafPrivateMetadata[i], sizeof(PAF_PrivateMetadata), Cache_Type_ALLD, 0); // FL: unnecessary since part of AF
+ Cache_wb(pAfCb->pafPrivateMetadata[i].pMdBuf, pAfCb->pafPrivateMetadata[i].size, Cache_Type_ALLD, 0);
}
Cache_wait();
}