summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: 62c7ed7)
raw | patch | inline | side by side (parent: 62c7ed7)
author | Frank Livingston <frank-livingston@ti.com> | |
Sat, 3 Jun 2017 18:26:37 +0000 (13:26 -0500) | ||
committer | Frank Livingston <frank-livingston@ti.com> | |
Sat, 3 Jun 2017 18:26:37 +0000 (13:26 -0500) |
Resulting maximum size for PCM circular buffer in CB is 7680 samples.
=>maximum size for AF circular buffer size in CB is 7680/256=30.
We currently allocate 90*4096 bytes for each audio frame, and this is
being allocated from SR_DDR3. Needed to increase size of SR_DDR3, which
required moving other memory regions to different base addresses.
NOTE: COMMON2_DDR3 is untouched, hard-coded MAR settings in DSP system
init thread don't need to be changed.
=>maximum size for AF circular buffer size in CB is 7680/256=30.
We currently allocate 90*4096 bytes for each audio frame, and this is
being allocated from SR_DDR3. Needed to increase size of SR_DDR3, which
required moving other memory regions to different base addresses.
NOTE: COMMON2_DDR3 is untouched, hard-coded MAR settings in DSP system
init thread don't need to be changed.
index 9f289379a4bd92d68fe4a6d5ed28e614e2e7fed1..c6c18aaeea6f98ac488e842c79d340439b94260a 100644 (file)
#define ASP_DECOP_CB_SOK ( 0 ) // ok
#define ASP_DECOP_CB_CTL_INIT_INV_GATE ( ASP_DECOP_CB_SOK-1 ) // error: invalid gate handle
#define ASP_DECOP_CB_ERR_START ( ASP_DECOP_CB_CTL_INIT_INV_GATE ) // start error return ID for master & slave error return definitions
-#define ASP_DECOP_CB_MAX_NUM_AF ( 15 ) // decoder output circular buffer maximum number audio frames
-#define ASP_DECOP_CB_MAX_NUM_PCM_CH ( 16 ) // decoder output circular buffer maximum number audio PCM channels
-#define ASP_DECOP_CB_MAX_NUM_PCM_FRAMES ( 15 ) // decoder output circular buffer maximum number PCM frames //Qin - Increased to prevent cb overflow for ddp.
-#define ASP_DECOP_CB_MAX_PCM_FRAME_LEN ( 6*256 ) // decoder output circular buffer maximum PCM frame length
+
+#define ASP_DECOP_CB_MAX_NUM_AF ( 30 ) // decoder output circular buffer maximum number audio frames
+
+#define ASP_DECOP_CB_MAX_NUM_PCM_CH ( 16 ) // decoder output circular buffer maximum number audio PCM channels
+#define ASP_DECOP_CB_MAX_NUM_PCM_FRAMES ( 15 ) // decoder output circular buffer maximum number PCM frames //Qin - Increased to prevent cb overflow for ddp.
+#define ASP_DECOP_CB_MAX_PCM_FRAME_LEN ( 6*256 ) // decoder output circular buffer maximum PCM frame length
#define ASP_DECOP_CB_MAX_NUM_PCM_CH_DDP ( 16 ) // decoder output circular buffer maximum number audio PCM channels for DDP
#define ASP_DECOP_CB_MAX_PCM_FRAME_LEN_48kDDP ( 6*256 ) // decoder output circular buffer maximum PCM frame length at 48kHz sampling rate
#define ASP_DECOP_CB_PCM_BUF_SZ_32CH48kMAT ( ASP_DECOP_CB_MAX_NUM_PCM_CH_MAT * ASP_DECOP_CB_MAX_NUM_PCM_FRAMES * ASP_DECOP_CB_MAX_PCM_FRAME_LEN_48kMAT )
#define ASP_DECOP_CB_MAX_NUM_AF_PCM ( 4 )
+#if (ASP_DECOP_CB_MAX_NUM_AF_PCM > ASP_DECOP_CB_MAX_NUM_AF)
+ #error "CB Max AF PCM error"
+#endif
#define ASP_DECOP_CB_INIT_WRTIDX_PCM ( 0 )
#define ASP_DECOP_CB_INIT_RDIDX_PCM ( 0 )
#define ASP_DECOP_CB_INIT_LAG_PCM ( 2 )
#define ASP_DECOP_CB_TARGET_ND_SAMPS_48kPCM ( ASP_DECOP_CB_INIT_LAG_PCM * 256 ) // PCM target Nominal Delay in number of samples, fs=48 kHz
#define ASP_DECOP_CB_MAX_NUM_AF_DDP ( 2 )
+#if (ASP_DECOP_CB_MAX_NUM_AF_DDP > ASP_DECOP_CB_MAX_NUM_AF)
+ #error "CB Max AF DDP error"
+#endif
#define ASP_DECOP_CB_INIT_WRTIDX_DDP ( 0 )
#define ASP_DECOP_CB_INIT_RDIDX_DDP ( 0 )
#define ASP_DECOP_CB_INIT_LAG_DDP ( 1 )
#define ASP_DECOP_CB_TARGET_ND_SAMPS_48kDDP ( ASP_DECOP_CB_INIT_LAG_DDP * 1536 ) // DDP target Nominal Delay in number of samples, fs=48 kHz
-#define ASP_DECOP_CB_MAX_NUM_AF_THD ( 15 )
+#define ASP_DECOP_CB_MAX_NUM_AF_THD ( 30 ) //( 15 )
+#if (ASP_DECOP_CB_MAX_NUM_AF_THD > ASP_DECOP_CB_MAX_NUM_AF)
+ #error "CB Max AF THD error"
+#endif
#define ASP_DECOP_CB_INIT_WRTIDX_THD ( 0 )
#define ASP_DECOP_CB_INIT_RDIDX_THD ( 0 )
//#define ASP_DECOP_CB_INIT_LAG_THD ( 5 ) // 5*20ms = 100 ms, For the worst case of 100 ms
-#define ASP_DECOP_CB_TARGET_ND_SAMPS_48kTHD ( 2224 ) // THD target Nominal Delay in number of samples, fs=48 kHz
+#define ASP_DECOP_CB_TARGET_ND_SAMPS_48kTHD ( 3504 )//( 2224 ) // THD target Nominal Delay in number of samples, fs=48 kHz
#define ASP_DECODE_CB_GATE_NAME ( "AspDecOpCbGate" ) // name of GateMP used for circular buffer shared memory protection
#define ASP_DECODE_CB_GATE_REGION_ID ( 0 ) // IPC shared region ID used for CB gate allocation
index f61e1b65f136da0a9b661238545ce7b876646b18..ace1f43e424a60cd1da547279240df267e3c4465 100644 (file)
--- a/pasdk/shared/config.bld
+++ b/pasdk/shared/config.bld
* 0C08_0000 0004_0000 ( 256 KB) HOST_MSMC (code, data)
* 0C0C_0000 0004_0000 ( 256 KB) CORE_MSMC (code, data)
* 8000_0000 0020_0000 ( 2 MB) SR_0 (ipc)
- * 8020_0000 0080_0000 ( 8 MB) SR_DDR3 (ipc:data)
- * 80A0_0000 0060_0000 ( 6 MB) COMMON_DDR3 (data)
+ * 8020_0000 00E0_0000 ( 14 MB) SR_DDR3 (ipc:data)
* 8100_0000 0100_0000 ( 16 MB) COMMON2_DDR3(code, data) // aligned to MAR memory region
- * 8200_0000 0320_0000 ( 50 MB) HOST_DDR3 (code, data)
- * 8520_0000 0400_0000 ( 64 MB) CORE0_DDR3 (code, data)
- * 8920_0000 76E0_0000 (1902 MB) DDR3 (code, data)
+ * 8200_0000 0060_0000 ( 6 MB) COMMON_DDR3 (data)
+ * 8260_0000 0320_0000 ( 50 MB) HOST_DDR3 (code, data)
+ * 8580_0000 0400_0000 ( 64 MB) CORE0_DDR3 (code, data)
+ * 8980_0000 7680_0000 (1896 MB) DDR3 (code, data)
*/
var SR_MSMC = {
var SR_DDR3 = {
name: "SR_DDR3", space: "data", access: "RW",
- base: 0x80200000, len: 0x00800000,
+ base: 0x80200000, len: 0x00E00000,
comment: "SR DDR3 Memory"
};
var COMMON_DDR3 = {
name: "COMMON_DDR3", space: "data", access: "RW",
- base: 0x80A00000, len: 0x00600000,
+ base: 0x82000000, len: 0x00600000,
comment: "COMMON DDR3 Memory"
};
var DDR3 = {
name: "DDR3", space: "code/data", access: "RW",
- base: 0x89200000, len: 0x76E00000,
+ base: 0x89800000, len: 0x76800000,
comment: "DDR3 Memory"
};
[ "HOST_DDR3", {
name: "HOST_DDR3", space: "code/data", access: "RWX",
- base: 0x82000000, len: 0x03200000,
+ base: 0x82600000, len: 0x03200000,
comment: "HOST DDR3"
}],
[ "CORE0_DDR3", {
name: "CORE0_DDR3", space: "code/data", access: "RWX",
- base: 0x85200000, len: 0x04000000,
+ base: 0x85800000, len: 0x04000000,
comment: "CORE0 DDR3"
}],
diff --git a/pasdk/test_arm/framework/aspDecOpCircBuf_slave.c b/pasdk/test_arm/framework/aspDecOpCircBuf_slave.c
index 9a37e6eeaaad839456d0639e5d7c136ea3be5baf..31532010ce5082b43cfd48d598efb42756a1b9e6 100644 (file)
//Int16 gCalcDeltaSampsBuf[10];
//Int8 gPrimedFlagCnt=0;
+// (***) FL: revisit
// Write audio frame to circular buffer
Int cbWriteAf(
PAF_AST_DecOpCircBufCtl *pCbCtl, // decoder output circular buffer control
}
#endif
- //Log_info2("cbWriteAf:pCb->numAfCb=%d, pCb->maxNumAfCb=%d", (IArg)pCb->readerActiveFlag, (IArg)pCb->maxNumAfCb); // FL: debug
+ //Log_info2("cbWriteAf:pCb->numAfCb=%d, pCb->maxNumAfCb=%d", (IArg)pCb->readerActiveFlag, (IArg)pCb->maxNumAfCb); // debug
// check overflow
//while (pCb->numAfCb >= pCb->maxNumAfCb); // debug
// Leave the gate
GateMP_leave(gateHandle, key);
- //Log_info2("cbWriteAf:gate leave, gateHandle=0x%04x, key=%d", (IArg)gateHandle, (IArg)key); // FL: debug
+ //Log_info2("cbWriteAf:gate leave, gateHandle=0x%04x, key=%d", (IArg)gateHandle, (IArg)key); // debug
return ASP_DECOP_CB_WRITE_OVERFLOW;
}
// gPrimedFlagCnt++;
}
- // (***) FL: revisit
// Write back circular buffer configuration
Cache_wb(pCb, sizeof(PAF_AST_DecOpCircBuf), Cache_Type_ALLD, 0);
// write back audio frame
toggleState = ~(toggleState);
}
Log_info3("wrote %d samples into AF %d sourceSel: %d", pAfCb->sampleCount, pCb->afWrtIdx, pCb->sourceSel);
- // write back private metadata // QIN
Log_info4("CBWMETA num=%d size=%d offset=%d chrequest=0x%04x", pAfCb->numPrivateMetadata, pAfCb->pafPrivateMetadata[0].size, pAfCb->pafPrivateMetadata[0].offset, pAfCb->channelConfigurationRequest.full);
}
// Leave the gate
GateMP_leave(gateHandle, key);
- //Log_info2("cbWriteAf:gate leave, gateHandle=0x%04x, key=%d", (IArg)gateHandle, (IArg)key); // FL: debug
+ //Log_info2("cbWriteAf:gate leave, gateHandle=0x%04x, key=%d", (IArg)gateHandle, (IArg)key); // debug
return ASP_DECOP_CB_SOK;
}
diff --git a/pasdk/test_arm/framework/audioStreamDecodeProc.c b/pasdk/test_arm/framework/audioStreamDecodeProc.c
index e56050480217bf2ddd8a0f4148153aa4664b68a1..0ebe5db65f76ccb3773fef5114c60b2a707e045c 100644 (file)
// Initialize error block
Error_init(&eb);
-// if (!(gpDecAudioFrame = (PAF_AudioFrame *)Memory_calloc((IHeap_Handle)HEAP_INTERNAL1,
- if (!(gpDecAudioFrame = (PAF_AudioFrame *)Memory_calloc((IHeap_Handle)HEAP_EXTERNAL, //Qin - moved to external memory
+ if (!(gpDecAudioFrame = (PAF_AudioFrame *)Memory_calloc((IHeap_Handle)HEAP_EXTERNAL,
DECODEN * sizeof (PAF_AudioFrame), 4, &eb)))
{
TRACE_TERSE1("PAF_ASDT_initPhaseMalloc: AS%d: Memory_calloc failed", as+zMS);
diff --git a/pasdk/test_dsp/framework/audioStreamInpProc.c b/pasdk/test_dsp/framework/audioStreamInpProc.c
index 4b94edde1b6a41b4cdb6254503da7228486265ca..af3fa9ed4df3c525f3423cfddc27305e43bb2362 100644 (file)
SW_BREAKPOINT;
}
pCb->pcmBufEnd = pCb->pcmBuf + ASP_DECOP_CB_PCM_BUF_SZ;
- // allocate Metadata buffers //QIN
+ // allocate Metadata buffers
if (!(pCb->metaBuf = Memory_calloc((IHeap_Handle)HEAP_EXTERNAL_SHM, ASP_DECOP_CB_MAX_NUM_AF * PAF_MAX_PRIVATE_MD_SZ * PAF_MAX_NUM_PRIVATE_MD * sizeof(Int8), 4, &eb)))
{
TRACE_TERSE1("PAF_ASIT_initPhaseDecOpCircBuf: AS%d: Memory_calloc failed", as+zMS);
}
pCb->metaBufEnd = pCb->metaBuf + (ASP_DECOP_CB_MAX_NUM_AF * PAF_MAX_PRIVATE_MD_SZ * PAF_MAX_NUM_PRIVATE_MD);
-
- #ifdef CB_RW_OP_CAP_PP
+ #ifdef CB_RW_OP_CAP_PP // debug
// allocate debug buffer
if (!(pCb->cb_samples_op = Memory_calloc((IHeap_Handle)HEAP_EXTERNAL_NONCACHED_SHM, CB_OP_COUNT_MAX * sizeof(UInt32), 4, &eb)))
{
// (***) FL: revisit
// write back Inp configuration
Cache_wb(&pAstCfg->xInp[zI], sizeof(PAF_AST_InpBuf), Cache_Type_ALLD, 0);
- // write back input data // (***) GJ: don't need this for 1xI2S HDMI/SPDIF. Maybe need this for 4xI2S HDMI.
- //pIpBufConfig = &gPAF_AST_config.xInp[zI].inpBufConfig;
- //size = pIpBufConfig->frameLength * pIpBufConfig->sizeofElement;
- //Cache_wb((Ptr)pIpBufConfig->pntr.pSmInt, size, Cache_Type_ALLD, 0);
// write back Dec configuration
Cache_wb(&pAstCfg->xDec[z], sizeof(PAF_AST_Decode), Cache_Type_ALLD, 0);
Cache_wait();