diff --git a/pasdk/test_arm/framework/aspDecOpCircBuf_slave.c b/pasdk/test_arm/framework/aspDecOpCircBuf_slave.c
index f82709b398c6b8e3d8c485615df90ca31c39e6b3..25b6a56352be91eb6dc8c2e424d6de976d1d1f32 100644 (file)
pCb->maxAFSampCount = ASP_DECOP_CB_MAX_PCM_FRAME_LEN_48kMAT;
pCb->maxNumPcmSampsPerCh = (Int32)(pCb->pcmBufEnd - pCb->pcmBuf)/pCb->maxAFChanNum;
+ }
+ else if ((sourceSelect == PAF_SOURCE_DTS) ||
+ (sourceSelect == PAF_SOURCE_DTSHD) ||
+ (sourceSelect == PAF_SOURCE_DTS12) ||
+ (sourceSelect == PAF_SOURCE_DTS13) ||
+ (sourceSelect == PAF_SOURCE_DTS14) ||
+ (sourceSelect == PAF_SOURCE_DTS16) ||
+ (sourceSelect == PAF_SOURCE_DTSALL)
+ )
+ {
+ pCb->maxNumAfCb = ASP_DECOP_CB_MAX_NUM_AF_DTS;
+ pCb->afWrtIdx = ASP_DECOP_CB_INIT_WRTIDX_DTS;
+ pCb->afRdIdx = ASP_DECOP_CB_INIT_RDIDX_DTS;
+ pCb->pcmRdIdx = 0;
+ pCb->maxAFChanNum = ASP_DECOP_CB_MAX_NUM_PCM_CH_DTS;
+ pCb->maxAFSampCount = ASP_DECOP_CB_MAX_PCM_FRAME_LEN_48kDTS;
+
+ // 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_DTS_X; /* Audio data from DTSX decoder. */
+ 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
{
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 */
+#ifdef DTS_BUILD
+ pAfCb->mode = pAfWrt->mode; /* mode is used in DTSX to pass info to PARMA */
+ pAfCb->numChansUsedForMetadata = pAfWrt->numChansUsedForMetadata; /* if metadata is used in DTSX*/
+ pAfCb->pafBsFixedData = pAfWrt->pafBsFixedData; /* if true, do not convert float to fixed in DTSX metadata transfer */
+ pAfCb->root = pAfWrt->root; /* used for channel MASK in DTSX . BAD IDEA, need fix */
+#endif
// write PCM samples
streamMask = pAfWrt->fxns->channelMask(pAfWrt, pAfCb->channelConfigurationStream);
for (i = 0; i < pCb->maxAFChanNum; i++)
{
- if ((streamMask >> i) & 0x1)
- {
+#ifndef DTS_BUILD
+ if ((streamMask >> i) & 0x1)
+#endif
+ { //DTSX needs up to 16 channels to transfer metadata.
for (j = 0; j < pAfWrt->sampleCount; j++)
{
pAfCb->data.sample[i][j] = pAfWrt->data.sample[i][j];
// write back PCM data
for (i = 0; i < pCb->maxAFChanNum; i++)
{
- if ((streamMask >> i) & 0x1)
- {
+#ifndef DTS_BUILD
+ if ((streamMask >> i) & 0x1)
+#endif
+ {//DTSX needs up to 16 channels to transfer metadata.
Cache_wb(pAfCb->data.sample[i], pAfWrt->sampleCount * sizeof(PAF_AudioData), Cache_Type_ALLD, 0);
}
}