summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: 096194e)
raw | patch | inline | side by side (parent: 096194e)
author | Frank Livingston <frank-livingston@ti.com> | |
Wed, 16 Nov 2016 18:01:09 +0000 (12:01 -0600) | ||
committer | Frank Livingston <frank-livingston@ti.com> | |
Wed, 16 Nov 2016 18:01:09 +0000 (12:01 -0600) |
20 files changed:
diff --git a/dolby_ip/mat-thd b/dolby_ip/mat-thd
index 0025a13d61d3b6053c7b4a46cfe2c21fcba30f94..5dd166c59bacc517a8fe6ceb81dbbf77ce583071 160000 (submodule)
--- a/dolby_ip/mat-thd
+++ b/dolby_ip/mat-thd
-Subproject commit 0025a13d61d3b6053c7b4a46cfe2c21fcba30f94
+Subproject commit 5dd166c59bacc517a8fe6ceb81dbbf77ce583071
index b127faff89125cedcbbe5ea65c2e7b5c699c6cd2..5bca2c467081c53a8b2673e1885927c590504857 100644 (file)
pCb->afRdIdx = ASP_DECOP_CB_INIT_RDIDX_DDP;
pCb->pcmRdIdx = pCb->decOpFrameLen - ASP_DECOP_CB_INIT_LAG_DDP*pCb->strFrameLen;
}
+ 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;
+ }
// initialize circular buffer current number of frames
pCb->numAfCb = pCb->afWrtIdx - pCb->afRdIdx;
pAfCb = &pCb->afCb[n];
// clear PCM data
- for (i=0; i<ASP_DECOP_CB_MAX_NUM_PCM_CH; i++)
+ for (i=0; i<pCb->maxAFChanNum; i++)
{
- memset(pAfCb->data.sample[i], pCb->decOpFrameLen, 0);
+ memset(pAfCb->data.sample[i], pCb->maxAFSampCount, 0);
}
// clear metadata
for (n=0; n<pCb->maxNumAfCb; n++)
{
pAfCb = &pCb->afCb[n];
- for (i=0; i<ASP_DECOP_CB_MAX_NUM_PCM_CH; i++)
+ for (i=0; i<pCb->maxAFChanNum; i++)
{
- Cache_wb(pAfCb->data.sample[i], pCb->decOpFrameLen*sizeof(PAF_AudioData), Cache_Type_ALLD, 0);
+ Cache_wb(pAfCb->data.sample[i], pCb->maxAFSampCount*sizeof(PAF_AudioData), Cache_Type_ALLD, 0);
}
}
Cache_wait();
index 1ce76065248c599b35e3114ad9cbc30130d9dc9a..338acfaa9055ed04c50e0cd7d0e6ef38cbe20921 100644 (file)
#include <ti/ipc/GateMP.h>
#include "paftyp.h"
#include "pafdec.h"
-
#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 )
-
-#define ASP_DECOP_CB_MAX_NUM_AF ( 4 ) // decoder output circular buffer maximum number audio frames
+#define ASP_DECOP_CB_MAX_NUM_AF ( 10 ) // 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 ( 2 ) // decoder output circular buffer maximum number PCM frames //Qin - Increased to prevent cb overflow for ddp.
+#define ASP_DECOP_CB_MAX_NUM_PCM_FRAMES ( 10 ) // 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_MAX_NUM_PCM_CH_MAT ( 32 ) // decoder output circular buffer maximum number audio PCM channels for MAT
+#define ASP_DECOP_CB_MAX_PCM_FRAME_LEN_48kMAT ( 4*256 ) // decoder output circular buffer maximum PCM frame length at 48kHz sampling rate
+
#define ASP_DECOP_CB_PCM_BUF_SZ ( ASP_DECOP_CB_MAX_NUM_PCM_CH * ASP_DECOP_CB_MAX_NUM_PCM_FRAMES * ASP_DECOP_CB_MAX_PCM_FRAME_LEN )
+#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 )
#define ASP_DECOP_CB_INIT_LAG_PCM ( 2 ) // 1...3
#define ASP_DECOP_CB_INIT_WRTIDX_DDP ( 1 )
#define ASP_DECOP_CB_INIT_RDIDX_DDP ( 0 )
+#define ASP_DECOP_CB_MAX_NUM_AF_THD ( 10 )
+#define ASP_DECOP_CB_INIT_LAG_THD ( 3 )
+#define ASP_DECOP_CB_INIT_WRTIDX_THD ( 1 )
+#define ASP_DECOP_CB_INIT_RDIDX_THD ( 0 )
#define ASP_DECODE_CB_GATE_NAME ( "AspDecOpCbGate" )
#define ASP_DECODE_CB_GATE_REGION_ID ( 0 )
Int8 emptyFlag; // flag indicates whether reader should empty (drain) remaining frames in CB
Int8 errUndCnt; // underflow count
Int8 errOvrCnt; // overflow count
+ PAF_AudioData *pcmBufEnd; // PCM buffer, contains PCM data associated with audio frames end
+ UInt8 *metaBufEnd; // metadata buffer, contains metadata associated with audio frames end
+ Int8 maxAFChanNum; // maximum number of audio data channels in audio frame
+ Int16 maxAFSampCount; // maximum number of sample counts in audio frame
PAF_AudioFrame lastAf; // used to store the last valid read out audio frame info to generate mute frame
} PAF_AST_DecOpCircBuf;
diff --git a/pasdk/common/dbgDib.h b/pasdk/common/dbgDib.h
index d54f7da5553294ca2a85bbe7ad83d27a10ae3f9b..6589f9adff8f4249c51ad7b04031653f5e45a83c 100644 (file)
--- a/pasdk/common/dbgDib.h
+++ b/pasdk/common/dbgDib.h
#ifdef CAP_IP
// IB capture buffer parameters
#define CAP_IB_MAX_NUM_FRAME ( 938 )
-#define CAP_IB_MAX_BYTES_PER_FRAME ( 24576 )
+//#define CAP_IB_MAX_BYTES_PER_FRAME ( 24576 ) // for DDP
+#define CAP_IB_MAX_BYTES_PER_FRAME ( 30720 ) // for MAT-THD
#define CAP_IB_BUF_SZ ( CAP_IB_MAX_NUM_FRAME * CAP_IB_MAX_BYTES_PER_FRAME )
// IB capture buffer
index 5f4de546524c10519474e94703750a68f6b3927d..f923fb7c5d6de61fb51f7a752a16b9d3a1d7a997 100644 (file)
--- a/pasdk/test_arm/.cproject
+++ b/pasdk/test_arm/.cproject
<stringMacro name="AIF2_INSTALL_PATH" type="VALUE_PATH_DIR" value="C:/ti"/>
<stringMacro name="CSL_INSTALL_PATH" type="VALUE_PATH_DIR" value="C:/ti"/>
<stringMacro name="MMCSD_INSTALL_PATH" type="VALUE_PATH_DIR" value="C:/ti"/>
- <stringMacro name="ICSS_EMAC_INSTALL_PATH" type="VALUE_PATH_DIR" value="C:/ti"/>
<stringMacro name="PDK_INSTALL_PATH" type="VALUE_PATH_DIR" value="C:/ti/processor_audio_sdk_1_00_00_00/psdk_cust/pdk_k2g_1_0_1_0_eng/packages"/>
+ <stringMacro name="ICSS_EMAC_INSTALL_PATH" type="VALUE_PATH_DIR" value="C:/ti"/>
<stringMacro name="USB_INSTALL_PATH" type="VALUE_PATH_DIR" value="C:/ti"/>
<stringMacro name="I2C_INSTALL_PATH" type="VALUE_PATH_DIR" value="C:/ti"/>
<stringMacro name="CPPI_INSTALL_PATH" type="VALUE_PATH_DIR" value="C:/ti"/>
<stringMacro name="IQN_INSTALL_PATH" type="VALUE_PATH_DIR" value="C:/ti"/>
<stringMacro name="PKTLIB_INSTALL_PATH" type="VALUE_PATH_DIR" value="C:/ti"/>
<stringMacro name="SRIO_INSTALL_PATH" type="VALUE_PATH_DIR" value="C:/ti"/>
- <stringMacro name="DFE_INSTALL_PATH" type="VALUE_PATH_DIR" value="C:/ti"/>
<stringMacro name="PRUSS_INSTALL_PATH" type="VALUE_PATH_DIR" value="C:/ti"/>
- <stringMacro name="SBL_BOOT_INSTALL_PATH" type="VALUE_PATH_DIR" value="C:/ti"/>
- <stringMacro name="FATFS_INSTALL_PATH" type="VALUE_PATH_DIR" value="C:/ti"/>
+ <stringMacro name="DFE_INSTALL_PATH" type="VALUE_PATH_DIR" value="C:/ti"/>
<stringMacro name="UART_INSTALL_PATH" type="VALUE_PATH_DIR" value="C:/ti"/>
- <stringMacro name="NWAL_INSTALL_PATH" type="VALUE_PATH_DIR" value="C:/ti"/>
+ <stringMacro name="FATFS_INSTALL_PATH" type="VALUE_PATH_DIR" value="C:/ti"/>
+ <stringMacro name="SBL_BOOT_INSTALL_PATH" type="VALUE_PATH_DIR" value="C:/ti"/>
<stringMacro name="BOARD_INSTALL_PATH" type="VALUE_PATH_DIR" value="C:/ti"/>
+ <stringMacro name="NWAL_INSTALL_PATH" type="VALUE_PATH_DIR" value="C:/ti"/>
<stringMacro name="SPI_INSTALL_PATH" type="VALUE_PATH_DIR" value="C:/ti"/>
</macros>
<externalSettings/>
<listOptionValue builtIn="false" value=""${PROC_AUDIO_SDK_ROOT}/pasdk/test_dsp/sio_dev2""/>
<listOptionValue builtIn="false" value=""${PROC_AUDIO_SDK_ROOT}/dolby_ip/ddp/Dolby_Digital_Plus_Decoder_Imp/Source_Code/alg""/>
<listOptionValue builtIn="false" value=""${PROC_AUDIO_SDK_ROOT}/dolby_ip/ddp/Dolby_Digital_Plus_Decoder_Imp/Source_Code/include""/>
+ <listOptionValue builtIn="false" value=""${PROC_AUDIO_SDK_ROOT}/dolby_ip/mat-thd/Dolby_MAT_Decoder_Imp/Source_Code/alg""/>
</option>
<option id="com.ti.ccstudio.buildDefinitions.TMS470_GNU_4.0.compilerID.MFLOAT_ABI.576208136" name="Specify if floating point hardware should be used (-mfloat-abi)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_GNU_4.0.compilerID.MFLOAT_ABI" value="hard" valueType="string"/>
<option id="com.ti.ccstudio.buildDefinitions.TMS470_GNU_4.0.compilerID.OTHER_PREPROC_FLAGS.1983639225" name="Other preprocessor flags (-Xpreprocessor)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_GNU_4.0.compilerID.OTHER_PREPROC_FLAGS"/>
<stringMacro name="AIF2_INSTALL_PATH" type="VALUE_PATH_DIR" value="C:/ti"/>
<stringMacro name="CSL_INSTALL_PATH" type="VALUE_PATH_DIR" value="C:/ti"/>
<stringMacro name="MMCSD_INSTALL_PATH" type="VALUE_PATH_DIR" value="C:/ti"/>
- <stringMacro name="ICSS_EMAC_INSTALL_PATH" type="VALUE_PATH_DIR" value="C:/ti"/>
<stringMacro name="PDK_INSTALL_PATH" type="VALUE_PATH_DIR" value="C:/ti/processor_audio_sdk_1_00_00_00/psdk_cust/pdk_k2g_1_0_1_0_eng/packages"/>
+ <stringMacro name="ICSS_EMAC_INSTALL_PATH" type="VALUE_PATH_DIR" value="C:/ti"/>
<stringMacro name="USB_INSTALL_PATH" type="VALUE_PATH_DIR" value="C:/ti"/>
<stringMacro name="I2C_INSTALL_PATH" type="VALUE_PATH_DIR" value="C:/ti"/>
<stringMacro name="CPPI_INSTALL_PATH" type="VALUE_PATH_DIR" value="C:/ti"/>
<stringMacro name="IQN_INSTALL_PATH" type="VALUE_PATH_DIR" value="C:/ti"/>
<stringMacro name="PKTLIB_INSTALL_PATH" type="VALUE_PATH_DIR" value="C:/ti"/>
<stringMacro name="SRIO_INSTALL_PATH" type="VALUE_PATH_DIR" value="C:/ti"/>
- <stringMacro name="DFE_INSTALL_PATH" type="VALUE_PATH_DIR" value="C:/ti"/>
<stringMacro name="PRUSS_INSTALL_PATH" type="VALUE_PATH_DIR" value="C:/ti"/>
- <stringMacro name="SBL_BOOT_INSTALL_PATH" type="VALUE_PATH_DIR" value="C:/ti"/>
- <stringMacro name="FATFS_INSTALL_PATH" type="VALUE_PATH_DIR" value="C:/ti"/>
+ <stringMacro name="DFE_INSTALL_PATH" type="VALUE_PATH_DIR" value="C:/ti"/>
<stringMacro name="UART_INSTALL_PATH" type="VALUE_PATH_DIR" value="C:/ti"/>
- <stringMacro name="NWAL_INSTALL_PATH" type="VALUE_PATH_DIR" value="C:/ti"/>
+ <stringMacro name="FATFS_INSTALL_PATH" type="VALUE_PATH_DIR" value="C:/ti"/>
+ <stringMacro name="SBL_BOOT_INSTALL_PATH" type="VALUE_PATH_DIR" value="C:/ti"/>
<stringMacro name="BOARD_INSTALL_PATH" type="VALUE_PATH_DIR" value="C:/ti"/>
+ <stringMacro name="NWAL_INSTALL_PATH" type="VALUE_PATH_DIR" value="C:/ti"/>
<stringMacro name="SPI_INSTALL_PATH" type="VALUE_PATH_DIR" value="C:/ti"/>
</macros>
<externalSettings/>
index 9ac159597358b6573a4bf44262fd452bf6795048..964c4c7f018a92064eb51283d0b80a29b1b3a313 100644 (file)
/* Add DDR3 heap */ // formerly SDRAM
var heapMem2Params = new HeapMem.Params();
heapMem2Params.instance.name = "heapMemDdr3";
-heapMem2Params.size = 3350528;
+heapMem2Params.size = 4350528;
heapMem2Params.sectionName = ".ddr3Heap";
Program.global.heapMemDdr3 = HeapMem.create(heapMem2Params);
Program.sectMap[".ddr3Heap"] = "HOST_DDR3";
index f5fe68203ac54718544ba262e140bfae450c1d71..9e57befc5db1dd9fb515870c6e3aa6cd83353441 100644 (file)
@@ -36,11 +36,15 @@ SEARCH_DIR ( C:\ti\processor_audio_sdk_1_00_00_00\pasdk\paf\pa\build\a15\release
SEARCH_DIR ( C:\ti\processor_audio_sdk_1_00_00_00\dolby_ip\intrinsics\Dolby_Intrinsics_Imp\lib_float_A15 )
SEARCH_DIR ( C:\ti\processor_audio_sdk_1_00_00_00\dolby_ip\ddp\Dolby_Digital_Plus_Decoder_Imp\Source_Code\make\ddp_udc_lib\a15 )
SEARCH_DIR ( C:\ti\processor_audio_sdk_1_00_00_00\dolby_ip\ddp\Dolby_Digital_Plus_Decoder_Imp\Source_Code\make\ddp_udc_wrapper\a15 )
+SEARCH_DIR ( C:\ti\processor_audio_sdk_1_00_00_00\dolby_ip\mat-thd\Dolby_MAT_Decoder_Imp\Source_Code\mat_dec\make\dthd_dec_lib\a15 )
+SEARCH_DIR ( C:\ti\processor_audio_sdk_1_00_00_00\dolby_ip\mat-thd\Dolby_MAT_Decoder_Imp\Source_Code\mat_dec\make\mat_dec_lib\a15 )
+SEARCH_DIR ( C:\ti\processor_audio_sdk_1_00_00_00\dolby_ip\mat-thd\Dolby_MAT_Decoder_Imp\Source_Code\mat_dec\make\thd_alg_lib\a15 )
INPUT ( c67x_cintrins_elf.lib simulate_dma_elf.lib )
INPUT ( acp_elf.lib asp_std_elf.lib com_asp_elf.lib com_dec_elf.lib pcm1_elf.lib )
INPUT ( dlb_intrinsics_generic_float32_release.a )
INPUT ( ddp_dec_lib_generic_wrapper_release.a ddp_dec_lib_generic_float32_release.a )
+INPUT ( mat_dec_lib_generic_float32_release.lib thd_alg_lib_generic_float32_release.lib dthd_dec_lib_generic_float32_release.lib )
SECTIONS
{
diff --git a/pasdk/test_arm/framework/aspDecOpCircBuf_slave.c b/pasdk/test_arm/framework/aspDecOpCircBuf_slave.c
index 3af87fc8a1183d0d2cf51033f0dab69919cf298a..97a85f7b94e4ac579f2fff60754d076d70d1d259 100644 (file)
for (n=0; n<pCb->maxNumAfCb; n++)
{
pAfCb = &pCb->afCb[n];
- Cache_inv(pAfCb->data.sample, ASP_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_inv(pAfCb->data.sample, pCb->maxAFChanNum*sizeof(PAF_AudioData *), Cache_Type_ALLD, 0);
}
Cache_wait();
PAF_ChannelMask_HD streamMask;
Int8 i;
Int16 j;
+ PAF_AudioData *pPcmBuf;UInt8 *pMetaBuf; int nextWrtIdx;PAF_AudioFrame *pAfCbNextAf;
// Get gate handle
gateHandle = pCbCtl->gateHandle;
key = GateMP_enter(gateHandle);
//Log_info2("cbWriteAf:gate enter, gateHandle=0x%04x, key=%d", (IArg)gateHandle, (IArg)key); // FL: debug
-
+
// Get circular buffer base pointer
pCb = &((*pCbCtl->pXDecOpCb)[cbIdx]);
//Log_info1("cbWriteAf:pCb=0x%04x", (IArg)pCb); // FL: debug
// 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();
-
+
//Log_info1("cbWriteAf:afCb=0x%04x", (IArg)pCb->afCb); // FL: debug
//Log_info2("cbWriteAf:pCb->readerActiveFlag=%d, pCb->writerActiveFlag=%d", (IArg)pCb->readerActiveFlag, (IArg)pCb->writerActiveFlag); // FL: debug
- if (pCb->readerActiveFlag == 1)
+ if ((pCb->readerActiveFlag == 1) && (pAfWrt->sampleCount)) //QIN ?
{
//
// Normal case, reader active.
for (n=0; n<pCb->maxNumAfCb; n++)
{
pAfCb = &pCb->afCb[n];
- Cache_inv(pAfCb->data.sample, ASP_DECOP_CB_MAX_NUM_PCM_CH*sizeof(PAF_AudioData *), Cache_Type_ALLD, 0);
+ Cache_inv(pAfCb->data.sample, pCb->maxAFChanNum*sizeof(PAF_AudioData *), Cache_Type_ALLD, 0);
}
Cache_wait();
#endif
//Log_info2("cbWriteAf:pCb->numAfCb=%d, pCb->maxNumAfCb=%d", (IArg)pCb->readerActiveFlag, (IArg)pCb->maxNumAfCb); // FL: debug
-
+
// check overflow
//while (pCb->numAfCb >= pCb->maxNumAfCb); // FL: debug
if (pCb->numAfCb >= pCb->maxNumAfCb)
GateMP_leave(gateHandle, key);
//Log_info2("cbWriteAf:gate leave, gateHandle=0x%04x, key=%d", (IArg)gateHandle, (IArg)key); // FL: debug
-
+
return ASP_DECOP_CB_WRITE_OVERFLOW;
}
-
- // get pointer to current audio frame in circular buffer
- //Log_info2("cbWriteAf:afCb=0x%04x, pCb->afWrtIdx=%d", (IArg)pCb->afCb, (IArg)pCb->afWrtIdx); // FL: debug
+
pAfCb = &pCb->afCb[pCb->afWrtIdx];
- //Log_info1("cbWriteAf:pAfCb=0x%04x", (IArg)pAfCb); // FL: debug
-
+ pPcmBuf = pAfCb->data.sample[0];
+ pMetaBuf = pAfCb->pafPrivateMetadata[0].pMdBuf;
+ if((pPcmBuf + (pAfWrt->sampleCount * pCb->maxAFChanNum )) > (pCb->pcmBufEnd))
+ {
+ pPcmBuf = pCb->pcmBuf;
+ }
+
+ for (i=0; i<pCb->maxAFChanNum; i++)
+ {
+
+ pAfCb->data.sample[i] = pPcmBuf;
+ pPcmBuf += pAfWrt->sampleCount;
+ pAfCb->data.samsiz[i] = 0;
+ }
+ Cache_inv(pAfCb->data.sample, pCb->maxAFChanNum*sizeof(PAF_AudioData *), Cache_Type_ALLD, 0);
+ Cache_wait();
+
+ for (i=0; i<pCb->maxAFChanNum; i++){
+ }
+ for (i=0; i<PAF_MAX_NUM_PRIVATE_MD; i++)
+ {
+ pAfCb->pafPrivateMetadata[i].offset = 0;
+ pAfCb->pafPrivateMetadata[i].size = 0;
+ pAfCb->pafPrivateMetadata[i].pMdBuf = pMetaBuf;
+ pMetaBuf += PAF_MAX_PRIVATE_MD_SZ;
+ }
+
+ nextWrtIdx = 0;
+ if ((pCb->afWrtIdx +1) >= pCb->maxNumAfCb)
+ {
+ //Log_info0("cbWriteAf: AF Wrap around **** ");
+ nextWrtIdx = 0;
+ }else{
+ nextWrtIdx = pCb->afWrtIdx + 1;
+ }
+
+ pAfCbNextAf = &pCb->afCb[nextWrtIdx]; // +1 or last AF if overflow
+ pAfCbNextAf->data.sample[0] = &pAfCb->data.sample[PAF_MAX_NUM_PRIVATE_MD - 1][pAfWrt->sampleCount];// pAfCb->data.sample[15] + (pAfCb->sampleCount * sizeof(PAF_AudioData));
+
// write audio frame information updated by decoder
pAfCb->sampleDecode = pAfWrt->sampleDecode;
PAF_PROCESS_COPY(pAfCb->sampleProcess, pAfWrt->sampleProcess);
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);
- //Log_info1("cbWriteAf:streamMask=0x%04x", (IArg)streamMask); // FL: debug
- //Log_info1("cbWriteAf:pCb->decOpFrameLen=%d", (IArg)pCb->decOpFrameLen); // FL: debug
- //Log_info2("cbWriteAf:pAfCb->data.sample=0x%04x, pAfWrt->data.sample=0x%04x", (IArg)pAfCb->data.sample, (IArg)pAfWrt->data.sample); // FL: debug
- //Log_info2("cbWriteAf:pAfCb->data.samsiz=0x%04x, pAfWrt->data.samsiz=0x%04x", (IArg)pAfCb->data.samsiz, (IArg)pAfWrt->data.samsiz); // FL: debug
- for (i = 0; i < ASP_DECOP_CB_MAX_NUM_PCM_CH; i++)
+
+ for (i = 0; i < pCb->maxAFChanNum; i++)
{
if ((streamMask >> i) & 0x1)
{
- for (j = 0; j < pCb->decOpFrameLen; j++)
+ for (j = 0; j < pAfWrt->sampleCount; j++)
{
pAfCb->data.sample[i][j] = pAfWrt->data.sample[i][j];
- }
-
+ }
+
pAfCb->data.samsiz[i] = pAfWrt->data.samsiz[i];
}
}
-
- //Log_info1("cbWriteAf:pAfCb->numPrivateMetadata=%d", (IArg)pAfCb->numPrivateMetadata); // FL: debug
+
+
+ // prepare metadata buffer pointers according to the metadata and buffer sizes
+ for (i=1; i < pAfWrt->numPrivateMetadata; i++)
+ {
+ UInt8 *nextMdBuf = (pAfCb->pafPrivateMetadata[i-1].pMdBuf + pAfWrt->pafPrivateMetadata[i-1].size);
+ if(nextMdBuf >= pCb->metaBufEnd) // metadata buffer overflow
+ {
+ pAfCb->pafPrivateMetadata[i].pMdBuf = pCb->metaBuf;
+ }
+ else
+ {
+ pAfCb->pafPrivateMetadata[i].pMdBuf = nextMdBuf;
+ }
+ Cache_inv(pAfCb->pafPrivateMetadata[i].pMdBuf, sizeof(UInt8 *), Cache_Type_ALLD, 0);
+ }
+
// Write metadata to circular buffer
- for (i = 0; i < pAfCb->numPrivateMetadata; i++) // FL: only copy numPrivateMetadata
+ for (i = 0; i < pAfWrt->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);
+ 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);
+ }
+
+ Cache_inv(pAfCb->pafPrivateMetadata, pAfWrt->numPrivateMetadata*sizeof(PAF_PrivateMetadata *), Cache_Type_ALLD, 0);
+ Cache_wait();
+ for (i=0; i<pAfCb->numPrivateMetadata; i++) // FL: only write back numPrivateMetadata
+ {
+ //Log_info4("cbWriteAf: AF: %d nummd: %d offset: %d size: %d ", pCb->afWrtIdx, pAfCb->numPrivateMetadata, pAfCb->pafPrivateMetadata[i].offset, pAfCb->pafPrivateMetadata[i].size);
+ Cache_wb(pAfCb->pafPrivateMetadata[i].pMdBuf, pAfCb->pafPrivateMetadata[i].size, Cache_Type_ALLD, 0);
}
-
// update audio frame write index
- //Log_info2("cbWriteAf:pCb->afWrtIdx=%d, pCb->maxNumAfCb", (IArg)pCb->afWrtIdx, (IArg)pCb->maxNumAfCb); // FL: debug
pCb->afWrtIdx++;
if (pCb->afWrtIdx >= pCb->maxNumAfCb)
{
pCb->afWrtIdx = 0;
}
- //Log_info2("cbWriteAf:pCb->afWrtIdx=%d, pCb->maxNumAfCb", (IArg)pCb->afWrtIdx, (IArg)pCb->maxNumAfCb); // FL: debug
-
+
+ pCb->afCb[pCb->afWrtIdx].data.sample[0] = &pAfCb->data.sample[pCb->maxAFChanNum - 1][pAfWrt->sampleCount];
+ if(pAfWrt->numPrivateMetadata > 0)
+ {
+ pCb->afCb[pCb->afWrtIdx].pafPrivateMetadata[0].pMdBuf = pAfCb->pafPrivateMetadata[pAfWrt->numPrivateMetadata - 1].pMdBuf + pAfWrt->pafPrivateMetadata[pAfWrt->numPrivateMetadata - 1].size;
+ }
+ else
+ {
+ pCb->afCb[pCb->afWrtIdx].pafPrivateMetadata[0].pMdBuf = pAfCb->pafPrivateMetadata[0].pMdBuf;
+ Cache_wb(pCb->afCb , ASP_DECOP_CB_MAX_NUM_PCM_FRAMES*sizeof(PAF_AudioFrame *), Cache_Type_ALLD, 0);
+ Cache_wait();
+ }
+ Cache_inv(pCb->afCb[pCb->afWrtIdx].pafPrivateMetadata[0].pMdBuf, sizeof(UInt8 *), Cache_Type_ALLD, 0);
+ Cache_wait();
// update number of audio frames in circular buffer
- //Log_info1("cbWriteAf:pCb->numAfCb=%d", (IArg)pCb->numAfCb); // FL: debug
pCb->numAfCb++;
- //Log_info1("cbWriteAf:pCb->numAfCb=%d", (IArg)pCb->numAfCb); // FL: debug
// (***) 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, ASP_DECOP_CB_MAX_NUM_PCM_CH*sizeof(PAF_AudioSize), Cache_Type_ALLD, 0);
+ Cache_wb(pAfCb->data.samsiz, pCb->maxAFChanNum*sizeof(PAF_AudioSize), Cache_Type_ALLD, 0);
+ Cache_wb(pAfCb->pafPrivateMetadata, pAfWrt->numPrivateMetadata*sizeof(PAF_PrivateMetadata *), Cache_Type_ALLD, 0);
+ Cache_wait();
// write back PCM data
- for (i = 0; i < ASP_DECOP_CB_MAX_NUM_PCM_CH; i++)
+ for (i = 0; i < pCb->maxAFChanNum; i++)
{
if ((streamMask >> i) & 0x1)
{
- Cache_wb(pAfCb->data.sample[i], pCb->decOpFrameLen*sizeof(PAF_AudioData), Cache_Type_ALLD, 0);
+ Cache_wb(pAfCb->data.sample[i], pAfWrt->sampleCount * 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();
- }
-
+ 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
-
+
return ASP_DECOP_CB_SOK;
}
diff --git a/pasdk/test_arm/framework/audioStreamDecodeProc.c b/pasdk/test_arm/framework/audioStreamDecodeProc.c
index b2e2703afdf3ca7eaf56e701892f8e18550455f7..51a5d0e215ecee8932ba36ee3407ea14ce7edd71 100644 (file)
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
Cache_wb((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);
+ size = IACP_STD_BETA_TABLE.pStatus[STD_BETA_THD]->size;
+ Cache_wb((Ptr)(IACP_STD_BETA_TABLE.pStatus[STD_BETA_THD]), size, Cache_Type_ALLD, 0);
+ size = IACP_STD_BETA_TABLE.pStatus[STD_BETA_THD2]->size;
+ Cache_wb((Ptr)(IACP_STD_BETA_TABLE.pStatus[STD_BETA_THD2]), size, Cache_Type_ALLD, 0);
Cache_wait();
// (***) FL: revisit
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);
+ size = IACP_STD_BETA_TABLE.pStatus[STD_BETA_THD]->size;
+ Cache_inv((Ptr)(IACP_STD_BETA_TABLE.pStatus[STD_BETA_THD]), size, Cache_Type_ALLD, 0);
Cache_wait();
argIdx = 0; // get decIdx
Cache_wb((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);
+ size = IACP_STD_BETA_TABLE.pStatus[STD_BETA_THD]->size;
+ Cache_wb((Ptr)(IACP_STD_BETA_TABLE.pStatus[STD_BETA_THD]), size, Cache_Type_ALLD, 0);
Cache_wait();
// send dec reset complete message to master
size = pIpBufConfig->frameLength * pIpBufConfig->sizeofElement;
if (sourceSelect == PAF_SOURCE_PCM)
{
- size *= pIpBufConfig->stride;
+ size *= pIpBufConfig->stride;
}
bufEnd = (Int) pIpBufConfig->base.pVoid + pIpBufConfig->sizeofBuffer;
currentBufSize = (bufEnd - (Int)pIpBufConfig->pntr.pSmInt);
- if (currentBufSize >= size)
- {
- chunkSize = size;
- }
- else
- {
- chunkSize = currentBufSize;
+ if(currentBufSize >= size){
+ chunkSize = size;
+ }else{
+ chunkSize = currentBufSize;
}
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();
}
//maxFrameLength += PA_MODULO - maxFrameLength % PA_MODULO; // compute maximum framelength (needed for ARC support)
//aLen = numchan[z] * maxFrameLength;
aLen = numchan[z] * maxFrameLength + (maxFrameLength - FRAMELENGTH); /* Qin - need additional memory for starting offset
- See line 1301 */
+ See line 1307 */
//
// 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;
index 8fa9a3f499d3f299d51543a32dc88056398b37ca..89496fea714c2c2f8db217b5f72f6dc3e7ee8d03 100644 (file)
PAF_ASDT_params_decodeStatus, // z_pDecodeStatus
&PAF_ASP_params_decAlgKey, // pDecAlgKey
PAF_AST_streamsFromDecodes_std, // streamsFromDecodes
- 1536, // maxFramelength
+ 5120, // maxFramelength set to match maximum value possible for 48K stream
PAF_ASDT_params_MetadataBufStatus, //metadata buffer status
NULL //PAF_AST_params_AudioFrameBufStatus //Audio frame buffer status
};
index dccc72a8f7508e448397b84f0ccea4b6813d6245..9a18688e098ab51cef2595bbfcbf052c54fef664 100644 (file)
#include <ddpat_tid.h>
#endif
+#define _THD_
+#ifdef _THD_
+#include <thd.h>
+#include <thd_tid.h>
+#endif
//#define _SRC4_
#ifdef _SRC4_
#include <src.h>
#ifdef _DDPAT_
PAF_ASP_LINKINIT(STD, DDP, TID),
#endif
+#ifdef _THD_
+ PAF_ASP_LINKINIT(STD, THD, TID),
+#endif
PAF_ASP_LINKNONE,
};
index b38a62496da6aacfaa63a9b49a0cb9a2c5a31c00..e87da1a89ddf2863faad6d09efdb0aad1f23ea79 100644 (file)
--- a/pasdk/test_dsp/.cproject
+++ b/pasdk/test_dsp/.cproject
<stringMacro name="AIF2_INSTALL_PATH" type="VALUE_PATH_DIR" value="C:/ti"/>
<stringMacro name="CSL_INSTALL_PATH" type="VALUE_PATH_DIR" value="C:/ti"/>
<stringMacro name="MMCSD_INSTALL_PATH" type="VALUE_PATH_DIR" value="C:/ti"/>
- <stringMacro name="PDK_INSTALL_PATH" type="VALUE_PATH_DIR" value="C:/ti/processor_audio_sdk_1_00_00_00/psdk_cust/pdk_k2g_1_0_1_0_eng/packages"/>
<stringMacro name="ICSS_EMAC_INSTALL_PATH" type="VALUE_PATH_DIR" value="C:/ti"/>
+ <stringMacro name="PDK_INSTALL_PATH" type="VALUE_PATH_DIR" value="C:/ti/processor_audio_sdk_1_00_00_00/psdk_cust/pdk_k2g_1_0_1_0_eng/packages"/>
<stringMacro name="USB_INSTALL_PATH" type="VALUE_PATH_DIR" value="C:/ti"/>
<stringMacro name="I2C_INSTALL_PATH" type="VALUE_PATH_DIR" value="C:/ti"/>
<stringMacro name="CPPI_INSTALL_PATH" type="VALUE_PATH_DIR" value="C:/ti"/>
<stringMacro name="IQN_INSTALL_PATH" type="VALUE_PATH_DIR" value="C:/ti"/>
<stringMacro name="PKTLIB_INSTALL_PATH" type="VALUE_PATH_DIR" value="C:/ti"/>
<stringMacro name="SRIO_INSTALL_PATH" type="VALUE_PATH_DIR" value="C:/ti"/>
- <stringMacro name="PRUSS_INSTALL_PATH" type="VALUE_PATH_DIR" value="C:/ti"/>
<stringMacro name="DFE_INSTALL_PATH" type="VALUE_PATH_DIR" value="C:/ti"/>
- <stringMacro name="UART_INSTALL_PATH" type="VALUE_PATH_DIR" value="C:/ti"/>
- <stringMacro name="SBL_BOOT_INSTALL_PATH" type="VALUE_PATH_DIR" value="C:/ti"/>
+ <stringMacro name="PRUSS_INSTALL_PATH" type="VALUE_PATH_DIR" value="C:/ti"/>
<stringMacro name="FATFS_INSTALL_PATH" type="VALUE_PATH_DIR" value="C:/ti"/>
- <stringMacro name="BOARD_INSTALL_PATH" type="VALUE_PATH_DIR" value="C:/ti"/>
+ <stringMacro name="SBL_BOOT_INSTALL_PATH" type="VALUE_PATH_DIR" value="C:/ti"/>
+ <stringMacro name="UART_INSTALL_PATH" type="VALUE_PATH_DIR" value="C:/ti"/>
<stringMacro name="NWAL_INSTALL_PATH" type="VALUE_PATH_DIR" value="C:/ti"/>
+ <stringMacro name="BOARD_INSTALL_PATH" type="VALUE_PATH_DIR" value="C:/ti"/>
<stringMacro name="SPI_INSTALL_PATH" type="VALUE_PATH_DIR" value="C:/ti"/>
</macros>
<externalSettings/>
<listOptionValue builtIn="false" value=""${PROC_AUDIO_SDK_ROOT}/pasdk/shared""/>
<listOptionValue builtIn="false" value=""${PROC_AUDIO_SDK_ROOT}/pasdk/test_dsp/boards/k2g/drivers""/>
<listOptionValue builtIn="false" value=""${PROC_AUDIO_SDK_ROOT}/dolby_ip/ddp/Dolby_Digital_Plus_Decoder_Imp/Source_Code/alpha""/>
+ <listOptionValue builtIn="false" value=""${PROC_AUDIO_SDK_ROOT}/dolby_ip/mat-thd/Dolby_MAT_Decoder_Imp/Source_Code/alpha""/>
<listOptionValue builtIn="false" value=""${PROC_AUDIO_SDK_ROOT}/dolby_ip/oar/Source_Code""/>
<listOptionValue builtIn="false" value=""${PROC_AUDIO_SDK_ROOT}/dolby_ip/oar/Source_Code/alg""/>
<listOptionValue builtIn="false" value=""${PROC_AUDIO_SDK_ROOT}/dolby_ip/oar/Source_Code/alpha""/>
<stringMacro name="AIF2_INSTALL_PATH" type="VALUE_PATH_DIR" value="C:/ti"/>
<stringMacro name="CSL_INSTALL_PATH" type="VALUE_PATH_DIR" value="C:/ti"/>
<stringMacro name="MMCSD_INSTALL_PATH" type="VALUE_PATH_DIR" value="C:/ti"/>
- <stringMacro name="PDK_INSTALL_PATH" type="VALUE_PATH_DIR" value="C:/ti/processor_audio_sdk_1_00_00_00/psdk_cust/pdk_k2g_1_0_1_0_eng/packages"/>
<stringMacro name="ICSS_EMAC_INSTALL_PATH" type="VALUE_PATH_DIR" value="C:/ti"/>
+ <stringMacro name="PDK_INSTALL_PATH" type="VALUE_PATH_DIR" value="C:/ti/processor_audio_sdk_1_00_00_00/psdk_cust/pdk_k2g_1_0_1_0_eng/packages"/>
<stringMacro name="USB_INSTALL_PATH" type="VALUE_PATH_DIR" value="C:/ti"/>
<stringMacro name="I2C_INSTALL_PATH" type="VALUE_PATH_DIR" value="C:/ti"/>
<stringMacro name="CPPI_INSTALL_PATH" type="VALUE_PATH_DIR" value="C:/ti"/>
<stringMacro name="IQN_INSTALL_PATH" type="VALUE_PATH_DIR" value="C:/ti"/>
<stringMacro name="PKTLIB_INSTALL_PATH" type="VALUE_PATH_DIR" value="C:/ti"/>
<stringMacro name="SRIO_INSTALL_PATH" type="VALUE_PATH_DIR" value="C:/ti"/>
- <stringMacro name="PRUSS_INSTALL_PATH" type="VALUE_PATH_DIR" value="C:/ti"/>
<stringMacro name="DFE_INSTALL_PATH" type="VALUE_PATH_DIR" value="C:/ti"/>
- <stringMacro name="UART_INSTALL_PATH" type="VALUE_PATH_DIR" value="C:/ti"/>
- <stringMacro name="SBL_BOOT_INSTALL_PATH" type="VALUE_PATH_DIR" value="C:/ti"/>
+ <stringMacro name="PRUSS_INSTALL_PATH" type="VALUE_PATH_DIR" value="C:/ti"/>
<stringMacro name="FATFS_INSTALL_PATH" type="VALUE_PATH_DIR" value="C:/ti"/>
- <stringMacro name="BOARD_INSTALL_PATH" type="VALUE_PATH_DIR" value="C:/ti"/>
+ <stringMacro name="SBL_BOOT_INSTALL_PATH" type="VALUE_PATH_DIR" value="C:/ti"/>
+ <stringMacro name="UART_INSTALL_PATH" type="VALUE_PATH_DIR" value="C:/ti"/>
<stringMacro name="NWAL_INSTALL_PATH" type="VALUE_PATH_DIR" value="C:/ti"/>
+ <stringMacro name="BOARD_INSTALL_PATH" type="VALUE_PATH_DIR" value="C:/ti"/>
<stringMacro name="SPI_INSTALL_PATH" type="VALUE_PATH_DIR" value="C:/ti"/>
</macros>
<externalSettings/>
<stringMacro name="AIF2_INSTALL_PATH" type="VALUE_PATH_DIR" value="C:/ti"/>
<stringMacro name="CSL_INSTALL_PATH" type="VALUE_PATH_DIR" value="C:/ti"/>
<stringMacro name="MMCSD_INSTALL_PATH" type="VALUE_PATH_DIR" value="C:/ti"/>
- <stringMacro name="ICSS_EMAC_INSTALL_PATH" type="VALUE_PATH_DIR" value="C:/ti"/>
<stringMacro name="PDK_INSTALL_PATH" type="VALUE_PATH_DIR" value="C:/ti/processor_audio_sdk_1_00_00_00/psdk_cust/pdk_k2g_1_0_1_0_eng/packages"/>
+ <stringMacro name="ICSS_EMAC_INSTALL_PATH" type="VALUE_PATH_DIR" value="C:/ti"/>
<stringMacro name="USB_INSTALL_PATH" type="VALUE_PATH_DIR" value="C:/ti"/>
<stringMacro name="I2C_INSTALL_PATH" type="VALUE_PATH_DIR" value="C:/ti"/>
<stringMacro name="IQN2_INSTALL_PATH" type="VALUE_PATH_DIR" value="C:/ti"/>
<stringMacro name="IQN_INSTALL_PATH" type="VALUE_PATH_DIR" value="C:/ti"/>
<stringMacro name="PKTLIB_INSTALL_PATH" type="VALUE_PATH_DIR" value="C:/ti"/>
<stringMacro name="SRIO_INSTALL_PATH" type="VALUE_PATH_DIR" value="C:/ti"/>
- <stringMacro name="DFE_INSTALL_PATH" type="VALUE_PATH_DIR" value="C:/ti"/>
<stringMacro name="PRUSS_INSTALL_PATH" type="VALUE_PATH_DIR" value="C:/ti"/>
- <stringMacro name="FATFS_INSTALL_PATH" type="VALUE_PATH_DIR" value="C:/ti"/>
- <stringMacro name="SBL_BOOT_INSTALL_PATH" type="VALUE_PATH_DIR" value="C:/ti"/>
+ <stringMacro name="DFE_INSTALL_PATH" type="VALUE_PATH_DIR" value="C:/ti"/>
<stringMacro name="UART_INSTALL_PATH" type="VALUE_PATH_DIR" value="C:/ti"/>
- <stringMacro name="NWAL_INSTALL_PATH" type="VALUE_PATH_DIR" value="C:/ti"/>
+ <stringMacro name="SBL_BOOT_INSTALL_PATH" type="VALUE_PATH_DIR" value="C:/ti"/>
+ <stringMacro name="FATFS_INSTALL_PATH" type="VALUE_PATH_DIR" value="C:/ti"/>
<stringMacro name="BOARD_INSTALL_PATH" type="VALUE_PATH_DIR" value="C:/ti"/>
+ <stringMacro name="NWAL_INSTALL_PATH" type="VALUE_PATH_DIR" value="C:/ti"/>
<stringMacro name="SPI_INSTALL_PATH" type="VALUE_PATH_DIR" value="C:/ti"/>
</macros>
<externalSettings/>
<stringMacro name="AIF2_INSTALL_PATH" type="VALUE_PATH_DIR" value="C:/ti"/>
<stringMacro name="CSL_INSTALL_PATH" type="VALUE_PATH_DIR" value="C:/ti"/>
<stringMacro name="MMCSD_INSTALL_PATH" type="VALUE_PATH_DIR" value="C:/ti"/>
- <stringMacro name="PDK_INSTALL_PATH" type="VALUE_PATH_DIR" value="C:/ti/processor_audio_sdk_1_00_00_00/psdk_cust/pdk_k2g_1_0_1_0_eng/packages"/>
<stringMacro name="ICSS_EMAC_INSTALL_PATH" type="VALUE_PATH_DIR" value="C:/ti"/>
+ <stringMacro name="PDK_INSTALL_PATH" type="VALUE_PATH_DIR" value="C:/ti/processor_audio_sdk_1_00_00_00/psdk_cust/pdk_k2g_1_0_1_0_eng/packages"/>
<stringMacro name="USB_INSTALL_PATH" type="VALUE_PATH_DIR" value="C:/ti"/>
<stringMacro name="I2C_INSTALL_PATH" type="VALUE_PATH_DIR" value="C:/ti"/>
<stringMacro name="CPPI_INSTALL_PATH" type="VALUE_PATH_DIR" value="C:/ti"/>
<stringMacro name="IQN_INSTALL_PATH" type="VALUE_PATH_DIR" value="C:/ti"/>
<stringMacro name="PKTLIB_INSTALL_PATH" type="VALUE_PATH_DIR" value="C:/ti"/>
<stringMacro name="SRIO_INSTALL_PATH" type="VALUE_PATH_DIR" value="C:/ti"/>
- <stringMacro name="PRUSS_INSTALL_PATH" type="VALUE_PATH_DIR" value="C:/ti"/>
<stringMacro name="DFE_INSTALL_PATH" type="VALUE_PATH_DIR" value="C:/ti"/>
- <stringMacro name="UART_INSTALL_PATH" type="VALUE_PATH_DIR" value="C:/ti"/>
- <stringMacro name="SBL_BOOT_INSTALL_PATH" type="VALUE_PATH_DIR" value="C:/ti"/>
+ <stringMacro name="PRUSS_INSTALL_PATH" type="VALUE_PATH_DIR" value="C:/ti"/>
<stringMacro name="FATFS_INSTALL_PATH" type="VALUE_PATH_DIR" value="C:/ti"/>
- <stringMacro name="BOARD_INSTALL_PATH" type="VALUE_PATH_DIR" value="C:/ti"/>
+ <stringMacro name="SBL_BOOT_INSTALL_PATH" type="VALUE_PATH_DIR" value="C:/ti"/>
+ <stringMacro name="UART_INSTALL_PATH" type="VALUE_PATH_DIR" value="C:/ti"/>
<stringMacro name="NWAL_INSTALL_PATH" type="VALUE_PATH_DIR" value="C:/ti"/>
+ <stringMacro name="BOARD_INSTALL_PATH" type="VALUE_PATH_DIR" value="C:/ti"/>
<stringMacro name="SPI_INSTALL_PATH" type="VALUE_PATH_DIR" value="C:/ti"/>
</macros>
<externalSettings/>
index 49a8a7750357f8293e1bbfd879e3785e5ea50012..53b11c9ce055ee37f11767e1954f9ce4f6c85564 100644 (file)
/* Add DDR3 heap */ // formerly SDRAM
var heapMem2Params = new HeapMem.Params();
heapMem2Params.instance.name = "heapMemDdr3";
-heapMem2Params.size = 3350528;
+heapMem2Params.size = 4350528;
heapMem2Params.sectionName = ".ddr3Heap";
Program.global.heapMemDdr3 = HeapMem.create(heapMem2Params);
Program.sectMap[".ddr3Heap"] = "CORE0_DDR3";
diff --git a/pasdk/test_dsp/application/itopo/evmk2g/alpha/i13_a.h b/pasdk/test_dsp/application/itopo/evmk2g/alpha/i13_a.h
index 64ae97d37005b137bceb9c3d42f49993c4a81cb7..3e8692f300fb3bbaf9336189fc81d30608e94633 100644 (file)
#include <ae_a.h>\r
//#include <dm_a.h>\r
#include <ddpat_a.h>\r
-//#include <thd_a.h>\r
+#include <thd_a.h>\r
#include <oar_a.h>\r
#include <car_a.h>\r
#include <bmda_a.h>\r
diff --git a/pasdk/test_dsp/application/itopo/evmk2g/atboot.c b/pasdk/test_dsp/application/itopo/evmk2g/atboot.c
index 79de57330c8b38c2d001365ac41e9d0af03ee4c5..1b3b8d9fb29090642f9b529d28b568f871a18b4d 100644 (file)
#include <pa_i13_evmk2g_io_a.h> //<pa_i13_evmda830_io_a.h>
#ifndef SIMULATE_SIO
-
+#define DDP
#ifdef TEST_MULTICHANNEL
+#ifndef DDP
+//THD
+#define CUS_ATBOOT_S \
+ writeDECChannelMapTo16(PAF_LEFT,PAF_RGHT,8,9,2,12,10,11,-3,-3,-3,-3,-3,-3,-3,-3), \
+ writeENCChannelMapFrom16(PAF_LEFT,PAF_RGHT,8,9,2,12,10,11,-3,-3,-3,-3,-3,-3,-3,-3), \
+ writeVOLControlMasterN(0), \
+ writeVOLOffsetMasterN(0x7fff), \
+ writeSYSRecreationModeDirect, \
+ writeSYSChannelConfigurationRequestSurround4_1, \
+ execPAIOutAnalog, \
+ execPAIInHDMI
+#else
+//DDP
#define CUS_ATBOOT_S \
writeDECChannelMapTo16(PAF_LEFT,PAF_RGHT,8,9,2,12,10,11,-3,-3,-3,-3,-3,-3,-3,-3), \
writeENCChannelMapFrom16(PAF_LEFT,PAF_RGHT,8,9,2,12,6,7,-3,-3,-3,-3,-3,-3,-3,-3), \
writeSYSChannelConfigurationRequestSurround2ATMOS_1(4), \
execPAIOutAnalog, \
execPAIInHDMIStereo
+#endif
//
//writeENCChannelMapFrom16(PAF_LEFT,PAF_RGHT,8,9,2,12,10,11,-3,-3,-3,-3,-3,-3,-3,-3), \ // Lrs/Rrs
//writeENCChannelMapFrom16(PAF_LEFT,PAF_RGHT,8,9,2,12,6,7,-3,-3,-3,-3,-3,-3,-3,-3), \ // Ltm/Rtm
diff --git a/pasdk/test_dsp/framework/aspDecOpCircBuf_master.c b/pasdk/test_dsp/framework/aspDecOpCircBuf_master.c
index 0221511cf95380c6b8320a5e439463318555b61c..d1fcaa6f6585ff243a33ddd2f6669285e1dc49c8 100644 (file)
pCb->strFrameLen = DEF_STR_FRAME_LEN;
// initialize circular buffer maximum number of audio frames
- pCb->maxNumAfCb = ASP_DECOP_CB_MAX_NUM_AF_PCM;
+ pCb->maxNumAfCb = ASP_DECOP_CB_MAX_NUM_AF_THD;//ASP_DECOP_CB_MAX_NUM_AF_PCM;
pCb->afWrtIdx = ASP_DECOP_CB_INIT_LAG_PCM;
pCb->afRdIdx = 0;
pCb->pcmRdIdx = 0; // 2*256 in behind
+ // set default value to PCM configuration
+ pCb->maxAFChanNum = ASP_DECOP_CB_MAX_NUM_PCM_CH;
+ pCb->maxAFSampCount = DEF_DEC_OP_FRAME_LEN;
// initialize audio frames
for (n=0; n<pCb->maxNumAfCb; n++)
{
pCb->afWrtIdx = ASP_DECOP_CB_INIT_WRTIDX_PCM;
pCb->afRdIdx = ASP_DECOP_CB_INIT_RDIDX_PCM;
pCb->pcmRdIdx = 0;
+ pCb->maxAFChanNum = ASP_DECOP_CB_MAX_NUM_PCM_CH;
+ pCb->maxAFSampCount = DEF_DEC_OP_FRAME_LEN;
// initialize audio frames
for (n=0; n<pCb->maxNumAfCb; n++)
pCb->afWrtIdx = ASP_DECOP_CB_INIT_WRTIDX_DDP;
pCb->afRdIdx = ASP_DECOP_CB_INIT_RDIDX_DDP;
pCb->pcmRdIdx = decOpFrameLen - ASP_DECOP_CB_INIT_LAG_DDP*strFrameLen; // 4*256 behind
+ pCb->maxAFChanNum = ASP_DECOP_CB_MAX_NUM_PCM_CH_DDP;
+ pCb->maxAFSampCount = ASP_DECOP_CB_MAX_PCM_FRAME_LEN_48kDDP;
+
+ // initialize audio frames
+ for (n=0; n<pCb->maxNumAfCb; n++)
+ {
+ pAfCb = &pCb->afCb[n];
+ pAfCb->sampleDecode = sourceSelect;
+ PAF_PROCESS_ZERO(pAfCb->sampleProcess);
+ pAfCb->sampleRate = PAF_SAMPLERATE_48000HZ;
+ pAfCb->sampleCount = decOpFrameLen;
+ pAfCb->channelConfigurationRequest.full = 0;
+ pAfCb->channelConfigurationRequest.part.sat = PAF_CC_SAT_SURROUND4;
+ pAfCb->channelConfigurationRequest.part.sub = PAF_CC_SUB_ONE;
+ pAfCb->channelConfigurationStream.full = 0;
+ pAfCb->channelConfigurationStream.part.sat = PAF_CC_SAT_SURROUND4;
+ pAfCb->channelConfigurationStream.part.sub = PAF_CC_SUB_ONE;
+
+ // write metadata information updated by decoder
+ pAfCb->bsMetadata_type = PAF_bsMetadata_channelData; /* 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 */
+ }
+ }
+ else if (sourceSelect == PAF_SOURCE_THD)
+ {
+ pCb->maxNumAfCb = ASP_DECOP_CB_MAX_NUM_AF_THD;
+ // 0 in behind
+ pCb->afWrtIdx = ASP_DECOP_CB_INIT_WRTIDX_THD;
+ pCb->afRdIdx = ASP_DECOP_CB_INIT_RDIDX_THD;
+ pCb->pcmRdIdx = 0;
+ pCb->maxAFChanNum = ASP_DECOP_CB_MAX_NUM_PCM_CH_MAT;
+ pCb->maxAFSampCount = ASP_DECOP_CB_MAX_PCM_FRAME_LEN_48kMAT;
// initialize audio frames
for (n=0; n<pCb->maxNumAfCb; n++)
for (n=0; n<pCb->maxNumAfCb; n++)
{
pAfCb = &pCb->afCb[n];
- pAfCb->data.nChannels = ASP_DECOP_CB_MAX_NUM_PCM_CH;
+ pAfCb->data.nChannels = pCb->maxAFChanNum;
pAfCb->data.nSamples = decOpFrameLen;
- for (i=0; i<ASP_DECOP_CB_MAX_NUM_PCM_CH; i++)
+ for (i=0; i<pCb->maxAFChanNum; i++)
{
pAfCb->data.sample[i] = pPcmBuf;
- memset(pAfCb->data.sample[i], decOpFrameLen, 0);
- pPcmBuf += decOpFrameLen;
+ memset(pAfCb->data.sample[i], pCb->maxAFSampCount, 0);
+ pPcmBuf += pCb->maxAFSampCount;
pAfCb->data.samsiz[i] = 0;
}
for (n=0; n<pCb->maxNumAfCb; n++)
{
pAfCb = &pCb->afCb[n];
- 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.samsiz, pCb->maxAFChanNum*sizeof(PAF_AudioSize), Cache_Type_ALLD, 0);
+ Cache_wb(pAfCb->data.sample, pCb->maxAFChanNum*sizeof(PAF_AudioData *), Cache_Type_ALLD, 0);
+ for (i=0; i<pCb->maxAFChanNum; i++)
{
- Cache_wb(pAfCb->data.sample[i], decOpFrameLen*sizeof(PAF_AudioData), Cache_Type_ALLD, 0);
+ Cache_wb(pAfCb->data.sample[i], pCb->maxAFSampCount*sizeof(PAF_AudioData), 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();
PAF_ChannelMask_HD streamMask;
Int8 i;
Int16 j;
+ Int8 numMetadata = 0;
// Get gate handle
gateHandle = pCbCtl->gateHandle;
// (***) FL: revisit
// Invalidate audio frame
Cache_inv(pAfCb, sizeof(PAF_AudioFrame), Cache_Type_ALLD, 0);
- Cache_inv(pAfCb->data.samsiz, ASP_DECOP_CB_MAX_NUM_PCM_CH*sizeof(PAF_AudioSize), Cache_Type_ALLD, 0);
+ Cache_inv(pAfCb->data.samsiz, pCb->maxAFChanNum*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
Cache_inv(pAfCb->pafPrivateMetadata[i].pMdBuf, pAfCb->pafPrivateMetadata[i].size, Cache_Type_ALLD, 0); // FL: only update metadata package size
}
Cache_wait();
streamMask = pAfRd->fxns->channelMask(pAfRd, pAfCb->channelConfigurationStream);
// Invalidate PCM data
- for (i = 0; i < ASP_DECOP_CB_MAX_NUM_PCM_CH; i++)
+ for (i = 0; i < pCb->maxAFChanNum; 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 < ASP_DECOP_CB_MAX_NUM_PCM_CH; i++)
+ for (i = 0; i < pCb->maxAFChanNum; i++)
{
if ((streamMask >> i) & 0x1)
{
pAfRd->data.samsiz[i] = pAfCb->data.samsiz[i];
}
}
+
+ for (i = 0; i < PAF_MAX_NUM_PRIVATE_MD; i++)
+ {
+ pAfRd->pafPrivateMetadata[i].offset = 0;
+ pAfRd->pafPrivateMetadata[i].size = 0;
+ }
+
// read metadata //QIN
for (i = 0; i < pAfCb->numPrivateMetadata; i++) // FL: only read numPrivateMetadata
{
//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].size = pAfCb->pafPrivateMetadata[i].size;
- memcpy(pAfRd->pafPrivateMetadata[i].pMdBuf, pAfCb->pafPrivateMetadata[i].pMdBuf, pAfCb->pafPrivateMetadata[i].size);
+ pAfRd->pafPrivateMetadata[numMetadata].offset = pAfCb->pafPrivateMetadata[i].offset - pCb->pcmRdIdx;
+ pAfRd->pafPrivateMetadata[numMetadata].size = pAfCb->pafPrivateMetadata[i].size;
+ memcpy(pAfRd->pafPrivateMetadata[numMetadata].pMdBuf, pAfCb->pafPrivateMetadata[i].pMdBuf, pAfCb->pafPrivateMetadata[i].size);
+ numMetadata++; //number of metadata associated with current 256 segment of audio samples
}
else //reset un-used buf
{
pAfRd->pafPrivateMetadata[i].offset = 0;
pAfRd->pafPrivateMetadata[i].size = 0;
}
+
}
+ pAfRd->numPrivateMetadata = numMetadata; //number of metadata associated with current 256 segment of audio samples
pCb->pcmRdIdx += pCb->strFrameLen; // update PCM read index
- if (pCb->pcmRdIdx == pCb->decOpFrameLen)
+ if (pCb->pcmRdIdx >= pAfCb->sampleCount)
{
// update audio frame read index
pCb->afRdIdx++;
// update number of audio frames in circular buffer
pCb->numAfCb--;
}
- memcpy (&pCb->lastAf, pAfRd, sizeof(PAF_AudioFrame));
}
if (pCb->emptyFlag == 1)
diff --git a/pasdk/test_dsp/framework/audioStreamInpProc.c b/pasdk/test_dsp/framework/audioStreamInpProc.c
index 9e06ee9d85e84deebd4353d75564bab8db3bb225..94cdf30f01e83a375d616aa562e2f78495f7c273 100644 (file)
Cache_inv((Ptr)(&IACP_STD_BETA_TABLE.pStatus[STD_BETA_PCM2]), sizeof(IALG_Status *), Cache_Type_ALLD, 0);
Cache_inv((Ptr)(&IACP_STD_BETA_TABLE.pStatus[STD_BETA_DDP]), sizeof(IALG_Status *), Cache_Type_ALLD, 0);
Cache_inv((Ptr)(&IACP_STD_BETA_TABLE.pStatus[STD_BETA_DDP2]), sizeof(IALG_Status *), Cache_Type_ALLD, 0);
+ Cache_inv((Ptr)(&IACP_STD_BETA_TABLE.pStatus[STD_BETA_THD]), sizeof(IALG_Status *), Cache_Type_ALLD, 0);
+ Cache_inv((Ptr)(&IACP_STD_BETA_TABLE.pStatus[STD_BETA_THD2]), sizeof(IALG_Status *), Cache_Type_ALLD, 0);
Cache_wait();
if (!IACP_STD_BETA_TABLE.pStatus[STD_BETA_DECODE]) Log_info0("ERROR: beta unit for Dec==NULL");
if (!IACP_STD_BETA_TABLE.pStatus[STD_BETA_PCM]) Log_info0("ERROR: beta unit for Dec==NULL");
if (!IACP_STD_BETA_TABLE.pStatus[STD_BETA_PCM2]) Log_info0("ERROR: beta unit for Dec==NULL");
if (!IACP_STD_BETA_TABLE.pStatus[STD_BETA_DDP]) Log_info0("ERROR: beta unit for Dec==NULL");
if (!IACP_STD_BETA_TABLE.pStatus[STD_BETA_DDP2]) Log_info0("ERROR: beta unit for Dec==NULL");
+ if (!IACP_STD_BETA_TABLE.pStatus[STD_BETA_THD]) Log_info0("ERROR: beta unit for Dec==NULL");
+ if (!IACP_STD_BETA_TABLE.pStatus[STD_BETA_THD2]) Log_info0("ERROR: beta unit for Dec==NULL");
// (***) FL: revisit
// invalidate Status structures for Beta Units initialized on Slave
Cache_inv((Ptr)(IACP_STD_BETA_TABLE.pStatus[STD_BETA_DDP2]), sizeof(Int), Cache_Type_ALLD, 0);
size = IACP_STD_BETA_TABLE.pStatus[STD_BETA_DDP2]->size;
Cache_inv((Ptr)(IACP_STD_BETA_TABLE.pStatus[STD_BETA_DDP2]), size, Cache_Type_ALLD, 0);
+ Cache_inv((Ptr)(IACP_STD_BETA_TABLE.pStatus[STD_BETA_THD]), sizeof(Int), Cache_Type_ALLD, 0);
+ size = IACP_STD_BETA_TABLE.pStatus[STD_BETA_THD]->size;
+ Cache_inv((Ptr)(IACP_STD_BETA_TABLE.pStatus[STD_BETA_THD]), size, Cache_Type_ALLD, 0);
+ Cache_inv((Ptr)(IACP_STD_BETA_TABLE.pStatus[STD_BETA_THD2]), sizeof(Int), Cache_Type_ALLD, 0);
+ size = IACP_STD_BETA_TABLE.pStatus[STD_BETA_THD2]->size;
+ Cache_inv((Ptr)(IACP_STD_BETA_TABLE.pStatus[STD_BETA_THD2]), size, Cache_Type_ALLD, 0);
Cache_wait();
// (***) FL: revisit
// allocate audio frame PCM sample pointer array
for (i = 0; i<ASP_DECOP_CB_MAX_NUM_AF; i++)
{
- if (!(pCb->afCb[i].data.sample = Memory_calloc((IHeap_Handle)HEAP_INTERNAL1_SHM, ASP_DECOP_CB_MAX_NUM_PCM_CH * sizeof(PAF_AudioData *), 4, &eb)))
+ if (!(pCb->afCb[i].data.sample = Memory_calloc((IHeap_Handle)HEAP_INTERNAL1_SHM, ASP_DECOP_CB_MAX_NUM_PCM_CH_MAT * sizeof(PAF_AudioData *), 4, &eb)))
{
TRACE_TERSE1("PAF_ASIT_initPhaseDecOpCircBuf: AS%d: Memory_calloc failed", as+zMS);
SW_BREAKPOINT;
}
- if (!(pCb->afCb[i].data.samsiz = Memory_calloc((IHeap_Handle)HEAP_INTERNAL1_SHM, ASP_DECOP_CB_MAX_NUM_PCM_CH * sizeof(PAF_AudioSize), 4, &eb)))
+ if (!(pCb->afCb[i].data.samsiz = Memory_calloc((IHeap_Handle)HEAP_INTERNAL1_SHM, ASP_DECOP_CB_MAX_NUM_PCM_CH_MAT * sizeof(PAF_AudioSize), 4, &eb)))
{
TRACE_TERSE1("PAF_ASIT_initPhaseDecOpCircBuf: AS%d: Memory_calloc failed", as+zMS);
SW_BREAKPOINT;
}
}
// allocate PCM sample buffer
- if (!(pCb->pcmBuf = Memory_calloc((IHeap_Handle)HEAP_INTERNAL1_SHM, ASP_DECOP_CB_PCM_BUF_SZ * sizeof(PAF_AudioData), 4, &eb)))
+ if (!(pCb->pcmBuf = Memory_calloc((IHeap_Handle)HEAP_EXTERNAL_SHM, ASP_DECOP_CB_PCM_BUF_SZ * sizeof(PAF_AudioData), 4, &eb)))
{
TRACE_TERSE1("PAF_ASIT_initPhaseDecOpCircBuf: AS%d: Memory_calloc failed", as+zMS);
SW_BREAKPOINT;
}
+ pCb->pcmBufEnd = pCb->pcmBuf + ASP_DECOP_CB_PCM_BUF_SZ;
// allocate Metadata buffers //QIN
- if (!(pCb->metaBuf = Memory_calloc((IHeap_Handle)HEAP_INTERNAL1_SHM, ASP_DECOP_CB_MAX_NUM_AF * PAF_MAX_PRIVATE_MD_SZ * PAF_MAX_NUM_PRIVATE_MD * sizeof(Int8), 4, &eb)))
+ 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);
SW_BREAKPOINT;
}
-
+ pCb->metaBufEnd = pCb->metaBuf + (ASP_DECOP_CB_MAX_NUM_AF * PAF_MAX_PRIVATE_MD_SZ * PAF_MAX_NUM_PRIVATE_MD);
// (***) FL: revisit, here PCM is hard-coded for 256 sample dec op frame length
// Initialize decoder output circular buffer for PCM
errno = cbInit(pCb);
Cache_wb((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);
+ size = IACP_STD_BETA_TABLE.pStatus[STD_BETA_THD]->size;
+ Cache_wb((Ptr)(IACP_STD_BETA_TABLE.pStatus[STD_BETA_THD]), size, Cache_Type_ALLD, 0);
Cache_wait();
#endif
#if 0
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);
+ size = IACP_STD_BETA_TABLE.pStatus[STD_BETA_THD]->size;
+ Cache_inv((Ptr)(IACP_STD_BETA_TABLE.pStatus[STD_BETA_THD]), size, Cache_Type_ALLD, 0);
Cache_wait();
#endif
{
frameLength = 1536;
}
+ else if (sourceSelect == PAF_SOURCE_THD)
+ {
+ frameLength = 1536; //QIN FIX ME
+ }
else
{
frameLength = 256;
{
frameLength = 1536;
}
+ else if (sourceSelect == PAF_SOURCE_THD)
+ {
+ frameLength = 1536; //QIN FIX ME
+ }
else
{
frameLength = 256;
diff --git a/pasdk/test_dsp/framework/audioStreamOutProc.c b/pasdk/test_dsp/framework/audioStreamOutProc.c
index 770c8b822b0d8959efc7cc70cd93a47484573bc0..c9194211868041352ead8ca1ae21aaac51f88da0 100644 (file)
if (aLen_int*aSize!=0) // check size != 0, otherwise malloc throws fatal error
{
- if (!(aBuf_int = (PAF_AudioData *)Memory_calloc((IHeap_Handle)HEAP_FRMBUF, (aLen_int+(maxFrameLength-FRAMELENGTH))*aSize, aAlign, &eb))) //Qin: Add start offset
+ if (!(aBuf_int = (PAF_AudioData *)Memory_calloc((IHeap_Handle)HEAP_FRMBUF, aLen_int*aSize, aAlign, &eb)))
{
TRACE_TERSE1("PAF_ASOT_initFrame0: AS%d: Memory_calloc failed", as+z);
- TRACE_TERSE2(" maxFrameLength: %d. aLen_int*aSize: %d", maxFrameLength, (aLen_int+(maxFrameLength-FRAMELENGTH))*aSize);
+ TRACE_TERSE2(" maxFrameLength: %d. aLen_int*aSize: %d", maxFrameLength, aLen_int*aSize);
SW_BREAKPOINT;
return __LINE__;
}
if (aLen_ext*aSize!=0)
{
- if (!(aBuf_ext = (PAF_AudioData *)Memory_calloc((IHeap_Handle)HEAP_EXTERNAL, (aLen_ext+(maxFrameLength-FRAMELENGTH))*aSize, aAlign, &eb)))//Qin: Add start offset
+ if (!(aBuf_ext = (PAF_AudioData *)Memory_calloc((IHeap_Handle)HEAP_EXTERNAL, aLen_ext*aSize, aAlign, &eb)))
{
TRACE_TERSE1("PAF_ASOT_initFrame0: AS%d: Memory_calloc failed", as+z);
- TRACE_TERSE2(" maxFrameLength: %d. aLen_ext*aSize: %d", maxFrameLength, (aLen_ext+(maxFrameLength-FRAMELENGTH))*aSize);
+ TRACE_TERSE2(" maxFrameLength: %d. aLen_ext*aSize: %d", maxFrameLength, aLen_ext*aSize);
SW_BREAKPOINT;
return __LINE__;
}
}
- TRACE_TERSE3(" maxFrameLength: %d. aLen_int*aSize: %d. aBuf_int: 0x%x", maxFrameLength, (aLen_int+(maxFrameLength-FRAMELENGTH))*aSize, (IArg)aBuf_int);
- TRACE_TERSE3(" maxFrameLength: %d. aLen_ext*aSize: %d. aBuf_ext: 0x%x", maxFrameLength, (aLen_ext+(maxFrameLength-FRAMELENGTH))*aSize, (IArg)aBuf_ext);
+ TRACE_TERSE3(" maxFrameLength: %d. aLen_int*aSize: %d. aBuf_int: 0x%x", maxFrameLength, aLen_int*aSize, (IArg)aBuf_int);
+ TRACE_TERSE3(" maxFrameLength: %d. aLen_ext*aSize: %d. aBuf_ext: 0x%x", maxFrameLength, aLen_ext*aSize, (IArg)aBuf_ext);
TRACE_TERSE1("PAF_ASOT_initFrame0: AS%d: Memory_calloc for metadata buffers", as+z);
if (!(metadataBuf = (XDAS_UInt8 *)Memory_calloc((IHeap_Handle)HEAP_MDBUF, pP->pMetadataBufStatus->bufSize*pP->pMetadataBufStatus->NumBuf, pP->pMetadataBufStatus->alignment, &eb)))
index f5c32c5bc42f721cdd5147656a1a15c105d0e724..52369f4141dff1071ce821c2fe72d7b373d652b2 100644 (file)
set_audio_desc(2,2,6,0x7,80); //AC3
//set_audio_desc(2,0,0,0,0); //AC3; (GJ) currently not supported
set_audio_desc(3,10,8,0x07,0); // EAC3 //DTS (3,7,6,0x1e,192)
- //set_audio_desc(4,12,8,0x7F,0); // MLP (THD) //DTS (4,7,8,0x6,192)
- set_audio_desc(4,0,0,0,0); // MLP (THD) //DTS (4,7,8,0x6,192) ; (GJ) currently not supported
+ set_audio_desc(4,12,8,0x7F,0); // MLP (THD) //DTS (4,7,8,0x6,192)
+ //set_audio_desc(4,0,0,0,0); // MLP (THD) //DTS (4,7,8,0x6,192) ; (GJ) currently not supported
// Empty descriptors to be programmed to 0s
set_audio_desc(5,0,0,0,0); //AAC LC (5,6,6,0x1f,192);
set_audio_desc(6,0,0,0,0);
index 22df985b2d66df7a0899eea08d88a8ecf4c55c3b..65d47dd9bce4cbbfead35cc935075b4b64eacd0d 100644 (file)
--- a/pasdk/test_dsp/sap/sap.c
+++ b/pasdk/test_dsp/sap/sap.c
Log_info2("SAP: Inside SAP_Reclaim with From Device Frame->Addr: 0x%x and Frame->Size: %d", pFrame->addr, pFrame->size);
if ((device->mode == DEV2_INPUT) && (pFrame->addr != NULL))
{
- Cache_inv (pFrame->addr, pFrame->size, Cache_Type_ALL, TRUE);
-
if(pDevExt->edmaWordSize == 2 && pDevExt->numSers == 4)
{
+ Cache_inv (pFrame->addr, pFrame->size, Cache_Type_ALL, 0);
+ Cache_wait();
//note: size here is in # of bytes, so incrementing by 4X32b words ( or 8X16b)
//for(i=0; i<(pFrame->size)/(4*4); i+=16)
//{
oldMask = Hwi_disable ();
swapHdmi(pFrame->addr, pFrame->size);
Hwi_restore(oldMask);
+
+ Cache_wb (pFrame->addr, pFrame->size, Cache_Type_ALL, 0);
+ Cache_wait();
//}
}
-
}
#endif