author | Chitresh Gupta <chitresh.g@pathpartnertech.com> | |
Wed, 21 Dec 2016 11:43:42 +0000 (17:13 +0530) | ||
committer | Chitresh Gupta <chitresh.g@pathpartnertech.com> | |
Wed, 21 Dec 2016 11:43:42 +0000 (17:13 +0530) |
1 | 2 | |||
---|---|---|---|---|
pasdk/test_arm/framework/audioStreamDecodeProc.c | patch | | diff1 | | diff2 | | blob | history |
pasdk/test_dsp/framework/alphaFuncProc.c | patch | | diff1 | | diff2 | | blob | history |
diff --combined pasdk/test_arm/framework/audioStreamDecodeProc.c
index a5ed04e8b177339107973f6d29a91ce54527a017,c73ae2a9fef4070a19937e38dda99c953ab75814..16ce49cf25446bbc36b9f78d1e308737020bc668
#include "audioStreamProc_common.h"
#include "audioStreamDecodeProc.h"
+#include "statusOp_common.h"
+
+
// FL: debug
//#include "fwkSim.h"
#include "dbgCapAf.h"
UInt32 gSlaveDecDeactivateCnt =0;
-// TODO: upadate with Decoder beta number
-const UInt32 pafBetaMap[] =
-{
- -1, // PAF_SOURCE_UNKNOWN,
- -1, // PAF_SOURCE_NONE,
- -1, // PAF_SOURCE_PASS,
- -1, // PAF_SOURCE_SNG,
- -1, // PAF_SOURCE_AUTO,
- -1, // PAF_SOURCE_BITSTREAM,
- -1, // PAF_SOURCE_DTSALL,
- -1, // PAF_SOURCE_PCMAUTO,
- STD_BETA_PCM, // PAF_SOURCE_PCM,
- -1, // PAF_SOURCE_PC8,
- -1, // PAF_SOURCE_AC3,
- -1, // PAF_SOURCE_DTS,
- -1, // PAF_SOURCE_AAC,
- -1, // PAF_SOURCE_MPEG,
- -1, // PAF_SOURCE_DTS12,
- -1, // PAF_SOURCE_DTS13,
- -1, // PAF_SOURCE_DTS14,
- -1, // PAF_SOURCE_DTS16,
- -1, // PAF_SOURCE_WMA9PRO,
- -1, // PAF_SOURCE_MP3,
- -1, // PAF_SOURCE_DSD1,
- -1, // PAF_SOURCE_DSD2,
- -1, // PAF_SOURCE_DSD3,
- STD_BETA_DDP, // PAF_SOURCE_DDP,
- -1, // PAF_SOURCE_DTSHD,
- STD_BETA_THD, // PAF_SOURCE_THD,
- -1, // PAF_SOURCE_DXP,
- -1, // PAF_SOURCE_WMA,
- -1 // PAF_SOURCE_N
-};
-
-
/*
* ======== taskAsdpFxn ========
* Audio Stream Decode Processing task function
Int status;
Int zI;
Int bufEnd, wrapSize, currentBufSize, chunkSize;
+ Int8 temp8;
Log_info0("Enter taskAsdpFxn()");
pP->fxns->memStatusPrint(HEAP_INTERNAL, HEAP_INTERNAL1, HEAP_EXTERNAL, HEAP_INTERNAL1_SHM);
}
+#ifdef NON_CACHE_STATUS
+ //
+ // init Status structure Gate
+ //
+ if (statusOp_Init(GATEMP_INDEX_DEC) == STATUSOP_INIT_FAIL)
+ {
+ TRACE_TERSE1("TaskAsdp: Gate Index %d:initialization status GateMP Fail.", GATEMP_INDEX_DEC);
+ }
+ if (statusOp_Init(GATEMP_INDEX_DDP) == STATUSOP_INIT_FAIL)
+ {
+ TRACE_TERSE1("TaskAsdp: Gate Index %d:initialization status GateMP Fail.", GATEMP_INDEX_DDP);
+ }
+ if (statusOp_Init(GATEMP_INDEX_PCM) == STATUSOP_INIT_FAIL)
+ {
+ TRACE_TERSE1("TaskAsdp: Gate Index %d:initialization status GateMP Fail.", GATEMP_INDEX_PCM);
+ }
+ if (statusOp_Init(GATEMP_INDEX_THD) == STATUSOP_INIT_FAIL)
+ {
+ TRACE_TERSE1("TaskAsdp: Gate Index %d:initialization status GateMP Fail.", GATEMP_INDEX_THD);
+ }
+#endif
+
// (***) FL: revisit
// write back Status structure addresses for Beta Units initialized on Slave
Cache_wb((Ptr)(&IACP_STD_BETA_TABLE.pStatus[STD_BETA_DECODE]), sizeof(IALG_Status *), Cache_Type_ALLD, 0);
Cache_wb((Ptr)(&IACP_STD_BETA_TABLE.pStatus[STD_BETA_PCM2]), sizeof(IALG_Status *), Cache_Type_ALLD, 0);
Cache_wb((Ptr)(&IACP_STD_BETA_TABLE.pStatus[STD_BETA_DDP]), sizeof(IALG_Status *), Cache_Type_ALLD, 0);
Cache_wb((Ptr)(&IACP_STD_BETA_TABLE.pStatus[STD_BETA_DDP2]), sizeof(IALG_Status *), Cache_Type_ALLD, 0);
+ Cache_wb((Ptr)(&IACP_STD_BETA_TABLE.pStatus[STD_BETA_THD]), sizeof(IALG_Status *), Cache_Type_ALLD, 0);
+ Cache_wb((Ptr)(&IACP_STD_BETA_TABLE.pStatus[STD_BETA_THD2]), sizeof(IALG_Status *), Cache_Type_ALLD, 0);
Cache_wait();
// (***) FL: revisit
// write back Status structures for Beta Units initialized on Slave
- size = IACP_STD_BETA_TABLE.pStatus[STD_BETA_DECODE]->size;
- Cache_wb((Ptr)(IACP_STD_BETA_TABLE.pStatus[STD_BETA_DECODE]), size, Cache_Type_ALLD, 0);
+ /* size = IACP_STD_BETA_TABLE.pStatus[STD_BETA_DECODE]->size;
+ Cache_wbInv((Ptr)(IACP_STD_BETA_TABLE.pStatus[STD_BETA_DECODE]), size, Cache_Type_ALLD, 0);
size = IACP_STD_BETA_TABLE.pStatus[STD_BETA_PCM]->size;
- Cache_wb((Ptr)(IACP_STD_BETA_TABLE.pStatus[STD_BETA_PCM]), size, Cache_Type_ALLD, 0);
+ Cache_wbInv((Ptr)(IACP_STD_BETA_TABLE.pStatus[STD_BETA_PCM]), size, Cache_Type_ALLD, 0);
size = IACP_STD_BETA_TABLE.pStatus[STD_BETA_PCM2]->size;
- Cache_wb((Ptr)(IACP_STD_BETA_TABLE.pStatus[STD_BETA_PCM2]), size, Cache_Type_ALLD, 0);
+ Cache_wbInv((Ptr)(IACP_STD_BETA_TABLE.pStatus[STD_BETA_PCM2]), size, Cache_Type_ALLD, 0);
size = IACP_STD_BETA_TABLE.pStatus[STD_BETA_DDP]->size;
- Cache_wb((Ptr)(IACP_STD_BETA_TABLE.pStatus[STD_BETA_DDP]), size, Cache_Type_ALLD, 0);
+ Cache_wbInv((Ptr)(IACP_STD_BETA_TABLE.pStatus[STD_BETA_DDP]), size, Cache_Type_ALLD, 0);
size = IACP_STD_BETA_TABLE.pStatus[STD_BETA_DDP2]->size;
- Cache_wb((Ptr)(IACP_STD_BETA_TABLE.pStatus[STD_BETA_DDP2]), size, Cache_Type_ALLD, 0);
+ Cache_wbInv((Ptr)(IACP_STD_BETA_TABLE.pStatus[STD_BETA_DDP2]), size, Cache_Type_ALLD, 0);
Cache_wait();
// (***) FL: revisit
// write back Dec configuration
- Cache_wb(&pAstCfg->xDec[0], DECODEN*sizeof(PAF_AST_Decode), Cache_Type_ALLD, 0);
- Cache_wait();
+ Cache_wbInv(&pAstCfg->xDec[0], DECODEN*sizeof(PAF_AST_Decode), Cache_Type_ALLD, 0);
+ Cache_wait();*/
// Send initialization complete message to master
queId = MessageQ_getReplyQueue(pAspMsg);
// invalidate Status structures for shared Beta Units
//size = IACP_STD_BETA_TABLE.pStatus[STD_BETA_DECODE]->size;
//Cache_inv((Ptr)(IACP_STD_BETA_TABLE.pStatus[STD_BETA_DECODE]), size, Cache_Type_ALLD, 0);
- size = IACP_STD_BETA_TABLE.pStatus[STD_BETA_PCM]->size;
+ /*size = IACP_STD_BETA_TABLE.pStatus[STD_BETA_PCM]->size;
Cache_inv((Ptr)(IACP_STD_BETA_TABLE.pStatus[STD_BETA_PCM]), size, Cache_Type_ALLD, 0);
size = IACP_STD_BETA_TABLE.pStatus[STD_BETA_DDP]->size;
Cache_inv((Ptr)(IACP_STD_BETA_TABLE.pStatus[STD_BETA_DDP]), size, Cache_Type_ALLD, 0);
- Cache_wait();
+ Cache_wait();*/
argIdx = 0; // get decIdx
z = *(Int32 *)&pAspMsg->buf[argIdx];
// write back Status structures for shared Beta Units
//size = IACP_STD_BETA_TABLE.pStatus[STD_BETA_DECODE]->size;
//Cache_wb((Ptr)(IACP_STD_BETA_TABLE.pStatus[STD_BETA_DECODE]), size, Cache_Type_ALLD, 0);
- size = IACP_STD_BETA_TABLE.pStatus[STD_BETA_PCM]->size;
- Cache_wb((Ptr)(IACP_STD_BETA_TABLE.pStatus[STD_BETA_PCM]), size, Cache_Type_ALLD, 0);
+ /* size = IACP_STD_BETA_TABLE.pStatus[STD_BETA_PCM]->size;
+ Cache_wbInv((Ptr)(IACP_STD_BETA_TABLE.pStatus[STD_BETA_PCM]), size, Cache_Type_ALLD, 0);
size = IACP_STD_BETA_TABLE.pStatus[STD_BETA_DDP]->size;
- Cache_wb((Ptr)(IACP_STD_BETA_TABLE.pStatus[STD_BETA_DDP]), size, Cache_Type_ALLD, 0);
- Cache_wait();
+ Cache_wbInv((Ptr)(IACP_STD_BETA_TABLE.pStatus[STD_BETA_DDP]), size, Cache_Type_ALLD, 0);
+ Cache_wait();*/
// send dec reset complete message to master
queId = MessageQ_getReplyQueue(pAspMsg);
TRACE_TERSE2("slaveCmd=%d,decIdx=%d", slaveCmd, z);
// Get input associated w/ decoder
zI = pP->inputsFromDecodes[z];
--
- // invalidate Status structures for Beta Units initialized on Slave
- size = IACP_STD_BETA_TABLE.pStatus[pafBetaMap[sourceSelect]]->size;
- Cache_inv((Ptr)(IACP_STD_BETA_TABLE.pStatus[pafBetaMap[sourceSelect]]), size, Cache_Type_ALLD, 0);
- Cache_wait();
+
// (***) FL: revisit
// invalidate Inp configuration
Cache_inv(&pAstCfg->xInp[zI], sizeof(PAF_AST_InpBuf), Cache_Type_ALLD, 0);
wrapSize = size - chunkSize;
// invalidate input data
Cache_inv((Ptr)pIpBufConfig->pntr.pSmInt, chunkSize, Cache_Type_ALLD, 0);
- TRACE_MSG2("IBUF : pIpBufConfig->pntr.pSmInt: 0x%x and chunkSize: %d", pIpBufConfig->pntr.pSmInt, chunkSize);
// invalidate Dec configuration
+ TRACE_MSG2("IBUF : pIpBufConfig->pntr.pSmInt: 0x%x and chunkSize: %d", (IArg)pIpBufConfig->pntr.pSmInt, chunkSize);
Cache_inv(&pAstCfg->xDec[z], sizeof(PAF_AST_Decode), Cache_Type_ALLD, 0);
// status for selected decoder should be invalidated
Cache_wait();
{
// invalidate input data
Cache_inv((Ptr)pIpBufConfig->base.pSmInt, wrapSize, Cache_Type_ALLD, 0);
- TRACE_MSG2("IBUF : pIpBufConfig->base.pSmInt: 0x%x and wrapSize: %d",pIpBufConfig->base.pSmInt, wrapSize);
+ TRACE_MSG2("IBUF : pIpBufConfig->base.pSmInt: 0x%x and wrapSize: %d", (IArg)pIpBufConfig->base.pSmInt, wrapSize);
// status for selected decoder should be invalidated
Cache_wait();
}
Cache_wb(&pAstCfg->xDec[z], sizeof(PAF_AST_Decode), Cache_Type_ALLD, 0);
Cache_wait();
- // Re-initialize audio frame if decoder is disabled or
- // doesn't have a valid input
+#ifdef NON_CACHE_STATUS
+ statusOp_read(&(temp8),
+ &(pAstCfg->xDec[z].decodeStatus.mode),
+ sizeof(Int8),
+ GATEMP_INDEX_DEC);
+ // Re-initialize audio frame if decoder is disabled or
+ // doesn't have a valid input
+ if (!temp8 || !pAstCfg->xInp[zI].hRxSio)
+ {
+ pP->fxns->initFrame1(pP, pQ, pC, z, 0);
+ }
+#else
+ // Re-initialize audio frame if decoder is disabled or
+ // doesn't have a valid input
if (!pAstCfg->xDec[z].decodeStatus.mode || !pAstCfg->xInp[zI].hRxSio)
{
pP->fxns->initFrame1(pP, pQ, pC, z, 0);
}
+#endif
// send dec info complete message to master
queId = MessageQ_getReplyQueue(pAspMsg);
}
TRACE_TERSE0("Dec:decode done");
- // write back Status structures for Beta Units initialized on Slave
- size = IACP_STD_BETA_TABLE.pStatus[pafBetaMap[sourceSelect]]->size;
- Cache_wb((Ptr)(IACP_STD_BETA_TABLE.pStatus[pafBetaMap[sourceSelect]]), size, Cache_Type_ALLD, 0);
- Cache_wait();
-
// copy decoder output to decoder output circular buffers
//pCb = &pAstCfg->xDecOpCb[z];
//TRACE_TERSE1("Dec:pCb=0x%04x", (IArg)pCb);
cbErrno = cbWriteAf(pCbCtl, z, pAfWrt);
if (cbErrno < 0)
{
- SW_BREAKPOINT; // FL: debug
+ //SW_BREAKPOINT; // FL: debug
if (cbErrno == ASP_DECOP_CB_WRITE_OVERFLOW)
{
Cache_wb(&pAstCfg->xDec[z], sizeof(PAF_AST_Decode), Cache_Type_ALLD, 0);
Cache_wait();
+#ifdef NON_CACHE_STATUS
+ statusOp_read(&(temp8),
+ &(pAstCfg->xDec[z].decodeStatus.mode),
+ sizeof(Int8),
+ GATEMP_INDEX_DEC);
// Re-initialize audio frame if decoder is disabled or
// doesn't have a valid input
+ if (!temp8 || !pAstCfg->xInp[zI].hRxSio)
+ {
+ pP->fxns->initFrame1(pP, pQ, pC, z, 0);
+ }
+#else
+ // Re-initialize audio frame if decoder is disabled or
+ // doesn't have a valid input
if (!pAstCfg->xDec[z].decodeStatus.mode || !pAstCfg->xInp[zI].hRxSio)
{
pP->fxns->initFrame1(pP, pQ, pC, z, 0);
}
-
+#endif
// send dec info complete message to master
queId = MessageQ_getReplyQueue(pAspMsg);
pAspMsg->procId = hAspMsgSlave->slaveProcId;
TRACE_TERSE0("PAF_ASDT_initPhaseCommon: calling PAF_ALG_setup.");
PAF_ALG_setup(&pafAlgConfig,
- HEAP_ID_INTERNAL, HEAP_INTERNAL,
- HEAP_ID_INTERNAL1, HEAP_INTERNAL1,
- HEAP_ID_EXTERNAL, HEAP_EXTERNAL,
- HEAP_ID_INTERNAL1_SHM, HEAP_INTERNAL1_SHM,
- HEAP_ID_EXTERNAL_SHM, HEAP_EXTERNAL_SHM,
+ HEAP_ID_INTERNAL, HEAP_INTERNAL,
+ HEAP_ID_INTERNAL1, HEAP_INTERNAL1,
+ HEAP_ID_EXTERNAL, HEAP_EXTERNAL,
+ HEAP_ID_INTERNAL1_SHM, HEAP_INTERNAL1_SHM,
+ HEAP_ID_EXTERNAL_SHM, HEAP_EXTERNAL_SHM,
+ HEAP_ID_EXTERNAL_NONCACHED_SHM, HEAP_EXTERNAL_NONCACHED_SHM,
HEAP_CLEAR);
if (pP->fxns->headerPrint)
Error_init(&eb);
//maxFrameLength += PA_MODULO - maxFrameLength % PA_MODULO; // compute maximum framelength (needed for ARC support)
- aLen = numchan[z] * maxFrameLength;
+ //aLen = numchan[z] * maxFrameLength;
+ aLen = numchan[z] * maxFrameLength + (maxFrameLength - FRAMELENGTH); /* Qin - need additional memory for starting offset
+ See line 1301 */
//
// Initialize audio frame elements directly
case PAF_SOURCE_DDP:
pAudioFrame->data.nSamples = 1536;
break;
+ case PAF_SOURCE_THD:
+ pAudioFrame->data.nSamples = 5120; //QIN FIX ME
+ break;
default:
pAudioFrame->data.nSamples = FRAMELENGTH;
break;
diff --combined pasdk/test_dsp/framework/alphaFuncProc.c
index 133012e0bc0ec8a5d0131ca90e0ce13591f824a9,8e985b0c3d3ff18a3c36852532f2be107c6510d3..b7257d1be38a1f7a7a22a5a26875cfc3c7b5193c
#define AE_TRACE4(a,b,c,d,e)
#endif
-extern struct {
- Int size;
- IALG_Status *pStatus[512];
-} IACP_STD_BETA_TABLE;
-
+
// Global debug counters */
Uint32 gTaskAfpCnt=0;
return (void *)Memory_alloc((IHeap_Handle)hHeap, size, align, NULL);
}
-// Get the beta number from Alpha command
-Int32 AFP_getBeta(AFP_Handle handle, const ACP_Unit *from)
-{
- ACP_MDS_Obj *acp = (Void *)handle->acp;
-
- ACP_Union *x = (ACP_Union *)from;
-
- Uns write, series, type;
- Int subtype;
-
- Int beta;
-
- if ((x[0].byte.hi & 0xc0) != 0xc0)
- return -1; // legacy
- else if (x[0].word == 0xffff)
- return -1; // non-zero fill
-
- write = x[0].byte.hi & 0x08;
- series = (x[0].byte.hi >> 4) & 0x03;
- type = x[0].byte.hi & 0x07;
- subtype = -1;
-
- if (series >= 4 || ! acp->config.betaTable[series])
- {
- return -1; // No such series
- }
-
- beta = -1;
- switch (type)
- {
- case 0:
- if (!write)
- {
- beta = x[0].byte.lo;
- }
- break;
- case 2:
- case 6:
- beta = x[0].byte.lo;
- break;
- case 3:
- case 4:
- beta = x[0].byte.lo;
- break;
- case 5:
- subtype = x[0].byte.lo;
- switch (subtype)
- {
- case 0:
- type = subtype;
- if (!write)
- {
- beta = x[1].word;
- }
- break;
- case 6:
- case 10:
- beta = x[1].word;
- break;
- case 8:
- if (write)
- {
- return -1; // NO SUBTYPE error
- }
- else
- {
- beta = x[1].word;
- }
- break;
- default:
- return -1;
- }
- default:
- return -1;
- }
- return beta;
-}
-
+
Void AFP_process(
AFP_Handle handle
)
{
- Int rxIdx, txIdx, beta, statusSize;
+ Int rxIdx, txIdx;
Int encap, len, res_len, error, cnt, txStrip, i, rxOffset, txOffset;
/* Process Alpha commands */
txIdx = 3;
txOffset = 0;
encap = 0;
- beta = -1;
- statusSize = 0;
++
/* Read the payload */
if (handle->dcs7->fxns->read(handle->dcs7,
rxOffset = 2;
}
- // Get beta number
- beta = AFP_getBeta(handle->acp,
- &handle->rxBuf[rxIdx]);
-
- // TODO: Add beta of all decoders on Slave
- // Invalidate Status structures for Beta Units initialized on Slave
- if ((beta == STD_BETA_PCM) ||
- (beta == STD_BETA_PCM2) ||
- (beta == STD_BETA_DDP) ||
- (beta == STD_BETA_DDP2) ||
- (beta == STD_BETA_THD) ||
- (beta == STD_BETA_THD2)
- )
- {
- statusSize = IACP_STD_BETA_TABLE.pStatus[beta]->size;
- Cache_inv((Ptr)(IACP_STD_BETA_TABLE.pStatus[beta]), statusSize, Cache_Type_ALLD, 0);
- }
+
/* Process alpha command */
error = handle->acp->fxns->sequence(handle->acp,
&handle->rxBuf[rxIdx],
&handle->txBuf[txIdx]);
- // TODO: Add beta of all decoders on Slave
- // write back Status structures for Beta Units initialized on Slave
- if ((beta == STD_BETA_PCM) ||
- (beta == STD_BETA_PCM2) ||
- (beta == STD_BETA_DDP) ||
- (beta == STD_BETA_DDP2) ||
- (beta == STD_BETA_THD) ||
- (beta == STD_BETA_THD2)
- )
- {
- statusSize = IACP_STD_BETA_TABLE.pStatus[beta]->size;
- Cache_wb((Ptr)(IACP_STD_BETA_TABLE.pStatus[beta]), statusSize, Cache_Type_ALLD, 0);
- }
+
+
if (error)
{
//handle->fxns->log(handle,handle->logObj,