[processor-sdk/performance-audio-sr.git] / processor_audio_sdk_1_00_00_00 / pasdk / test_dsp / framework / aspDecOpCircBuf_master.c
diff --git a/processor_audio_sdk_1_00_00_00/pasdk/common/paf_decOpCircBuf.c b/processor_audio_sdk_1_00_00_00/pasdk/test_dsp/framework/aspDecOpCircBuf_master.c
similarity index 63%
rename from processor_audio_sdk_1_00_00_00/pasdk/common/paf_decOpCircBuf.c
rename to processor_audio_sdk_1_00_00_00/pasdk/test_dsp/framework/aspDecOpCircBuf_master.c
index 425496a70776b6992f3223e1fccc1564facd547a..948c1fb9b4716d0092a1f8f27a07b1421a1dff51 100644 (file)
rename from processor_audio_sdk_1_00_00_00/pasdk/common/paf_decOpCircBuf.c
rename to processor_audio_sdk_1_00_00_00/pasdk/test_dsp/framework/aspDecOpCircBuf_master.c
index 425496a70776b6992f3223e1fccc1564facd547a..948c1fb9b4716d0092a1f8f27a07b1421a1dff51 100644 (file)
#include <xdc/runtime/Log.h>
#include "common.h"
+#include "paftyp.h"
#include "pafdec.h"
-#include "pafsp.h"
-#include "paf_decOpCircBuf.h"
-
-// Generate mute AF on circular buffer read
-static Void cbReadAfMute(
- PAF_AudioFrame *pAfRd, // audio frame into which to read
- Int16 strFrameLen // stream frame length (output transaction size)
-);
+#include "aspDecOpCircBuf_master.h"
#define MAX_NUM_AF_PCM ( 4 )
#define CB_INIT_RD_LAG_PCM ( 2 ) // 0...3
#define MAX_NUM_AF_DDP ( 2 )
#define CB_INIT_RD_LAG_DDP ( 4 ) // 0...5
+// Generate mute AF on circular buffer read
+static Void cbReadAfMute(
+ PAF_AudioFrame *pAfRd, // audio frame into which to read
+ Int16 strFrameLen // stream frame length (output transaction size)
+);
+
// Initialize circular buffer
Int cbInit(
Int8 sourceSelect, // source select (PCM, DDP, etc.)
}
else
{
- return PAF_DECOP_CB_INIT_INV_SOURCE_SEL;
+ return ASP_DECOP_CB_INIT_INV_SOURCE_SEL;
}
// initialize circular buffer current number of frames
for (n=0; n<pCb->maxNumAfCb; n++)
{
pAfCb = &pCb->afCb[n];
- pAfCb->data.nChannels = PAF_DECOP_CB_MAX_NUM_PCM_CH;
+ pAfCb->data.nChannels = ASP_DECOP_CB_MAX_NUM_PCM_CH;
pAfCb->data.nSamples = decOpFrameLen;
- for (i=0; i<PAF_DECOP_CB_MAX_NUM_PCM_CH; i++)
+ for (i=0; i<ASP_DECOP_CB_MAX_NUM_PCM_CH; i++)
{
pAfCb->data.sample[i] = pPcmBuf;
memset(pAfCb->data.sample[i], decOpFrameLen, 0);
for (n=0; n<pCb->maxNumAfCb; n++)
{
pAfCb = &pCb->afCb[n];
- Cache_wb(pAfCb->data.samsiz, PAF_DECOP_CB_MAX_NUM_PCM_CH*sizeof(PAF_AudioSize), Cache_Type_ALLD, 0);
- Cache_wb(pAfCb->data.sample, PAF_DECOP_CB_MAX_NUM_PCM_CH*sizeof(PAF_AudioData *), Cache_Type_ALLD, 0);
- for (i=0; i<PAF_DECOP_CB_MAX_NUM_PCM_CH; i++)
+ Cache_wb(pAfCb->data.samsiz, ASP_DECOP_CB_MAX_NUM_PCM_CH*sizeof(PAF_AudioSize), Cache_Type_ALLD, 0);
+ Cache_wb(pAfCb->data.sample, ASP_DECOP_CB_MAX_NUM_PCM_CH*sizeof(PAF_AudioData *), Cache_Type_ALLD, 0);
+ for (i=0; i<ASP_DECOP_CB_MAX_NUM_PCM_CH; i++)
{
Cache_wb(pAfCb->data.sample[i], decOpFrameLen*sizeof(PAF_AudioData), Cache_Type_ALLD, 0);
}
}
Cache_wait();
- return PAF_DECOP_CB_SOK;
-}
-
-// Start writes to circular buffer
-Int cbWriteStart(
- PAF_AST_DecOpCircBuf *pCb // decoder output circular buffer
-)
-{
- PAF_AudioFrame *pAfCb;
- Int8 n;
- //Int8 i;
-
- // (***) FL: revisit
- // Invalidate circular buffer configuration.
- // NOTE: Probably only a subset of this information needs to be updated.
- Cache_inv(pCb, sizeof(PAF_AST_DecOpCircBuf), Cache_Type_ALLD, 0);
- Cache_wait();
-
- // Invalidate AF circular buffer
- Cache_inv(pCb->afCb, pCb->maxNumAfCb*sizeof(PAF_AudioFrame), Cache_Type_ALLD, 0);
- for (n=0; n<pCb->maxNumAfCb; n++)
- {
- pAfCb = &pCb->afCb[n];
- Cache_inv(pAfCb->data.sample, PAF_DECOP_CB_MAX_NUM_PCM_CH*sizeof(PAF_AudioData *), 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();
-
- // update flags
- pCb->writerActiveFlag = 1;
- pCb->emptyFlag = 0;
-
- // (***) FL: revisit
- // Write back circular buffer configuration
- Cache_wb(pCb, sizeof(PAF_AST_DecOpCircBuf), Cache_Type_ALLD, 0);
- Cache_wait();
-
- return PAF_DECOP_CB_SOK;
-};
-
-// Stop writes to circular buffer
-Int cbWriteStop(
- PAF_AST_DecOpCircBuf *pCb // decoder output circular buffer
-)
-{
- // Invalidate circular buffer configuration
- Cache_inv(pCb, sizeof(PAF_AST_DecOpCircBuf), Cache_Type_ALLD, 0);
- Cache_wait();
-
- // update flags
- pCb->writerActiveFlag = 0;
- pCb->emptyFlag = 1;
-
- // (***) FL: revisit
- // Write back circular buffer configuration
- Cache_wb(pCb, sizeof(PAF_AST_DecOpCircBuf), Cache_Type_ALLD, 0);
- Cache_wait();
-
- return PAF_DECOP_CB_SOK;
+ return ASP_DECOP_CB_SOK;
}
// Start reads from circular buffer
Cache_wb(pCb, sizeof(PAF_AST_DecOpCircBuf), Cache_Type_ALLD, 0);
Cache_wait();
- return PAF_DECOP_CB_SOK;
+ return ASP_DECOP_CB_SOK;
}
// Stop reads from circular buffer
Cache_wb(pCb, sizeof(PAF_AST_DecOpCircBuf), Cache_Type_ALLD, 0);
Cache_wait();
- return PAF_DECOP_CB_SOK;
+ return ASP_DECOP_CB_SOK;
}
// Read audio frame from circular buffer
// writer is active AND draining circular buffer
Log_info2("cbReadAf: ERROR: writerActiveFlag=%d, emptyFlag=%d", pCb->writerActiveFlag, pCb->emptyFlag);
SW_BREAKPOINT; // FL: debug
- return PAF_DECOP_CB_READ_INVSTATE;
+ return ASP_DECOP_CB_READ_INVSTATE;
}
if ((pCb->writerActiveFlag == 0) && (pCb->emptyFlag == 0))
//
cbReadAfMute(pAfRd, pCb->strFrameLen);
- return PAF_DECOP_CB_SOK;
+ return ASP_DECOP_CB_SOK;
}
if ((pCb->writerActiveFlag == 1))
Cache_wb(pCb, sizeof(PAF_AST_DecOpCircBuf), Cache_Type_ALLD, 0);
Cache_wait();
- return PAF_DECOP_CB_READ_UNDERFLOW;
+ return ASP_DECOP_CB_READ_UNDERFLOW;
}
}
// (***) FL: revisit
// 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);
+ Cache_inv(pAfCb->data.samsiz, ASP_DECOP_CB_MAX_NUM_PCM_CH*sizeof(PAF_AudioSize), Cache_Type_ALLD, 0);
for (i=0; i<pAfCb->numPrivateMetadata; i++) //QIN // FL: only invalidate numPrivateMetadata
{
//Cache_inv(&pAfCb->pafPrivateMetadata[i], sizeof(PAF_PrivateMetadata), Cache_Type_ALLD, 0); // FL: unnecessary since part of AF
streamMask = pAfRd->fxns->channelMask(pAfRd, pAfCb->channelConfigurationStream);
// Invalidate PCM data
- for (i = 0; i < PAF_DECOP_CB_MAX_NUM_PCM_CH; i++)
+ for (i = 0; i < ASP_DECOP_CB_MAX_NUM_PCM_CH; i++)
{
if ((streamMask >> i) & 0x1)
{
pAfRd->bsMetadata_offset = pAfCb->bsMetadata_offset; /* offset into audio frame for change in bsMetadata_type field */
// read PCM samples
- for (i = 0; i < PAF_DECOP_CB_MAX_NUM_PCM_CH; i++)
+ for (i = 0; i < ASP_DECOP_CB_MAX_NUM_PCM_CH; i++)
{
if ((streamMask >> i) & 0x1)
{
Cache_wb(pCb, sizeof(PAF_AST_DecOpCircBuf), Cache_Type_ALLD, 0);
Cache_wait();
- return PAF_DECOP_CB_SOK;
-}
-
-// Write audio frame to circular buffer
-Int cbWriteAf(
- PAF_AST_DecOpCircBuf *pCb, // decoder output circular buffer
- PAF_AudioFrame *pAfWrt // audio frame from which to write
-)
-{
- PAF_AudioFrame *pAfCb;
- PAF_ChannelMask_HD streamMask;
- Int8 i;
- Int16 j;
-
- // (***) FL: revisit
- // Invalidate circular buffer configuration.
- // NOTE: Probably only a subset of this information nexeds to be updated.
- Cache_inv(pCb, sizeof(PAF_AST_DecOpCircBuf), Cache_Type_ALLD, 0);
- Cache_wait();
-
- if (pCb->readerActiveFlag == 1)
- {
- //
- // Normal case, reader active.
- // If reader not active, don't write to circular buffer or check OVRflow.
-
-#if 0
- if (pCb->cbWriteAfInit == 0)
- {
- // Invalidate AF circular buffer
- Cache_inv(pCb->afCb, pCb->maxNumAfCb*sizeof(PAF_AudioFrame), Cache_Type_ALLD, 0);
- for (n=0; n<pCb->maxNumAfCb; n++)
- {
- pAfCb = &pCb->afCb[n];
- Cache_inv(pAfCb->data.sample, PAF_DECOP_CB_MAX_NUM_PCM_CH*sizeof(PAF_AudioData *), Cache_Type_ALLD, 0);
- }
- Cache_wait();
-
- pCb->cbWriteAfInit = 1;
- }
-#endif
-
- // check overflow
- if (pCb->numAfCb >= pCb->maxNumAfCb)
- {
- pCb->errOvrCnt++;
- //SW_BREAKPOINT;
- Log_info1("cbWriteAf: ERROR: overflow, numAfCb=%d", pCb->numAfCb);
- return PAF_DECOP_CB_WRITE_OVERFLOW;
- }
-
- // get pointer to current audio frame in circular buffer
- pAfCb = &pCb->afCb[pCb->afWrtIdx];
-
- // write audio frame information updated by decoder
- pAfCb->sampleDecode = pAfWrt->sampleDecode;
- PAF_PROCESS_COPY(pAfCb->sampleProcess, pAfWrt->sampleProcess);
- pAfCb->sampleRate = pAfWrt->sampleRate;
- pAfCb->sampleCount = pAfWrt->sampleCount;
- pAfCb->channelConfigurationRequest = pAfWrt->channelConfigurationRequest;
- pAfCb->channelConfigurationStream = pAfWrt->channelConfigurationStream;
- // 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) */
- pAfCb->bsMetadata_offset = pAfWrt->bsMetadata_offset; /* offset into audio frame for change in bsMetadata_type field */
- // write PCM samples
- streamMask = pAfWrt->fxns->channelMask(pAfWrt, pAfCb->channelConfigurationStream);
- for (i = 0; i < PAF_DECOP_CB_MAX_NUM_PCM_CH; i++)
- {
- if ((streamMask >> i) & 0x1)
- {
- for (j = 0; j < pCb->decOpFrameLen; j++)
- {
- pAfCb->data.sample[i][j] = pAfWrt->data.sample[i][j];
- }
-
- pAfCb->data.samsiz[i] = pAfWrt->data.samsiz[i];
- }
- }
-
- // Write metadata to circular buffer
- for (i = 0; i < pAfCb->numPrivateMetadata; i++) // FL: only copy numPrivateMetadata
- {
- 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)
- {
- pCb->afWrtIdx = 0;
- }
-
- // update number of audio frames in circular buffer
- pCb->numAfCb++;
-
- // (***) FL: revisit
- // Write back circular buffer configuration
- Cache_wb(pCb, sizeof(PAF_AST_DecOpCircBuf), Cache_Type_ALLD, 0);
- // write back audio frame
- Cache_wb(pAfCb, sizeof(PAF_AudioFrame), Cache_Type_ALLD, 0);
- Cache_wb(pAfCb->data.samsiz, PAF_DECOP_CB_MAX_NUM_PCM_CH*sizeof(PAF_AudioSize), Cache_Type_ALLD, 0);
- // write back PCM data
- for (i = 0; i < PAF_DECOP_CB_MAX_NUM_PCM_CH; i++)
- {
- if ((streamMask >> i) & 0x1)
- {
- Cache_wb(pAfCb->data.sample[i], pCb->decOpFrameLen*sizeof(PAF_AudioData), Cache_Type_ALLD, 0);
- }
- }
-
- // 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); // FL: unnecessary since part of AF
- Cache_wb(pAfCb->pafPrivateMetadata[i].pMdBuf, pAfCb->pafPrivateMetadata[i].size, Cache_Type_ALLD, 0);
- }
- Cache_wait();
- }
-
- return PAF_DECOP_CB_SOK;
-}
-
-// Get next audio frame to write in circular buffer
-Int cbGetNextWriteAf(
- PAF_AST_DecOpCircBuf *pCb, // decoder output circular buffer
- PAF_AudioFrame **ppAfWrt // audio frame next to be written
-)
-{
- // get pointer to current audio frame in circular buffer
- *ppAfWrt = &pCb->afCb[pCb->afWrtIdx];
-
- // update audio frame write index
- pCb->afWrtIdx++;
- if (pCb->afWrtIdx > pCb->maxNumAfCb)
- {
- pCb->afWrtIdx = 0;
- }
-
- return PAF_DECOP_CB_SOK;
-}
-
-// Output log of circular buffer control variables (debug)
-Int cbLog(
- PAF_AST_DecOpCircBuf *pCb,
- Int8 fullLog,
- char *locInfo
-)
-{
- Log_info1("CB: %s", (IArg)locInfo);
- Log_info3("CB: readerActiveFlag=%d, writerActiveFlag=%d, emptyFlag=%d", pCb->readerActiveFlag, pCb->writerActiveFlag, pCb->emptyFlag);
- Log_info4("CB: afRdIdx=%d, pcmRdIdx=%d, afWrtIdx=%d, numAfCb=%d", pCb->afRdIdx, pCb->pcmRdIdx,
- pCb->afWrtIdx,
- pCb->numAfCb);
- if (fullLog)
- {
- Log_info1("CB: maxNumAfCb=%d", pCb->maxNumAfCb);
- Log_info2("CB: decOpFrameLen=%d, strFrameLen=%d", pCb->decOpFrameLen, pCb->strFrameLen);
- //Log_info1("cbWriteInit=%d", pCb->cbWriteAfInit);
- }
-
- return 0;
+ return ASP_DECOP_CB_SOK;
}
// Generate mute AF on circular buffer read
// compute stream mask
streamMask = pAfRd->fxns->channelMask(pAfRd, pAfRd->channelConfigurationStream);
// Clear PCM data
- for (i = 0; i < PAF_DECOP_CB_MAX_NUM_PCM_CH; i++)
+ for (i = 0; i < ASP_DECOP_CB_MAX_NUM_PCM_CH; i++)
{
if ((streamMask >> i) & 0x1)
{