]> Gitweb @ Texas Instruments - Open Source Git Repositories - git.TI.com/gitweb - processor-sdk/performance-audio-sr.git/blobdiff - pasdk/test_dsp/framework/audioStreamOutIo.c
Remove tabs
[processor-sdk/performance-audio-sr.git] / pasdk / test_dsp / framework / audioStreamOutIo.c
index c70438c9c7860528d7599f8726f7054bdb733e1d..49d25883369e5bd466e8219c802c0db74e3b8fee 100644 (file)
@@ -85,6 +85,7 @@ Int asopSelectDevices(void *pConfig, PAF_AST_IoOut *pOut)
         }
 
         pOut->hMcaspChan = mcaspChanHandle;
+        pOut->stride = lldCfg->mcaspChanParams->noOfSerRequested * lldCfg->mcaspChanParams->noOfChannels;
     }
 
     return 0;
@@ -305,21 +306,21 @@ Int asopStartOutput(
 // Need to Revisit: Starting Clocks here seems logical & also manages the McASP without spurious underruns .
 #if 0
             // if device selected and valid then enable stat tracking if
-                       // required and start clocking
-                       if ((pAstCfg->xOut[z].outBufStatus.sioSelect < 0) && (pAstCfg->xOut[z].hTxSio))
-                       {
-                               TRACE_VERBOSE0("PAF_ASOT_startOutput: start SIO clocks");
-                               errme = SIO_ctrl(pAstCfg->xOut[z].hTxSio, PAF_SIO_CONTROL_OUTPUT_START_CLOCKS, 0);
-                               if (errno)
-                               {
-                                       TRACE_VERBOSE2("PAF_ASOT_startOutput: errme 0x%x, errno 0x%x", errme, errno);
-                                       SIO_idle(pAstCfg->xOut[z].hTxSio);
-                                       if (!errno)
-                                       {
-                                               errno = ASPERR_DEVOUT + errme;
-                                       }
-                               }
-                       }
+            // required and start clocking
+            if ((pAstCfg->xOut[z].outBufStatus.sioSelect < 0) && (pAstCfg->xOut[z].hTxSio))
+            {
+                TRACE_VERBOSE0("PAF_ASOT_startOutput: start SIO clocks");
+                errme = SIO_ctrl(pAstCfg->xOut[z].hTxSio, PAF_SIO_CONTROL_OUTPUT_START_CLOCKS, 0);
+                if (errno)
+                {
+                    TRACE_VERBOSE2("PAF_ASOT_startOutput: errme 0x%x, errno 0x%x", errme, errno);
+                    SIO_idle(pAstCfg->xOut[z].hTxSio);
+                    if (!errno)
+                    {
+                        errno = ASPERR_DEVOUT + errme;
+                    }
+                }
+            }
 #endif            
 
             // Set sample count so that DOB knows how much data to send
@@ -328,14 +329,14 @@ Int asopStartOutput(
 
 #if 1 // FL, New IO: add similar thing to be figured out
             // Update framework Phy transfer size
-            pOut[z].phyXferSize = pAstCfg->xOut[z].outBufConfig.lengthofFrame * OUTPUT_STRIDE * WORD_SIZE_PCM;
-            // Update IO Phy transfer size            
+            pOut[z].phyXferSize = pAstCfg->xOut[z].outBufConfig.lengthofFrame * pOut[z].stride * WORD_SIZE_PCM;
+            // Update IO Phy transfer size
             ioPhyCtl.code = IOPHY_CTL_FRAME_SIZE;
             ioPhyCtl.params.xferFrameSize = pOut[z].phyXferSize;
             ioPhyControl(pOut[z].hIoPhy, &ioPhyCtl);
             // Update IO Buff delay to match Phy transfer size
             ioBuffAdjustDelay(pOut[z].hIoBuff, pOut[z].phyXferSize * (NUM_PRIME_XFERS+1));
-#endif            
+#endif
 
             if (pAstCfg->xOut[z].outBufStatus.markerMode == PAF_OB_MARKER_ENABLED)
             {
@@ -530,14 +531,14 @@ Int asopIoCompsInit(
     ioBuffParams.base         = pOutBuf->outBufConfig.base.pVoid;
     ioBuffParams.size         = pOutBuf->outBufConfig.allocation/STRIDE_WORST_CASE*STRIDE_WORST_CASE;
     ioBuffParams.sync         = IOBUff_READ_SYNC;
-    ioBuffParams.nominalDelay = OUTPUT_FRAME_SIZE * (NUM_PRIME_XFERS+1);
+    ioBuffParams.nominalDelay = NUM_CYCLE_PER_FRAME_DEF * pOutIo->stride * WORD_SIZE_PCM * (NUM_PRIME_XFERS+1);
     if(ioBuffInit(pOutIo->hIoBuff, &ioBuffParams) != IOBUFF_NOERR) 
     {
         return -1;   // to remove magic number
     }
 
     ioPhyParams.ioBuffHandle    = pOutIo->hIoBuff;
-    ioPhyParams.xferFrameSize   = OUTPUT_FRAME_SIZE;
+    ioPhyParams.xferFrameSize   = NUM_CYCLE_PER_FRAME_DEF * pOutIo->stride * WORD_SIZE_PCM;
     ioPhyParams.mcaspChanHandle = pOutIo->hMcaspChan;
     ioPhyParams.ioBuffOp        = IOPHY_IOBUFFOP_READ;
     if(ioPhyInit(pOutIo->hIoPhy, &ioPhyParams) != IOPHY_NOERR) 
@@ -595,15 +596,15 @@ Int asopInitOutBufConfig(
     pOutBufCfg = &pOutBuf->outBufConfig;
     hIoBuff = pOutIo->hIoBuff;
     
-    pOutBufCfg->stride = OUTPUT_STRIDE;
+    pOutBufCfg->stride = pOutIo->stride;
     pOutBufCfg->sizeofElement = WORD_SIZE_PCM;
     pOutBufCfg->precision = 24;
     
     ioBuffGetInfo(hIoBuff, &outBuffInfo);
-       pOutBufCfg->base.pLgInt = outBuffInfo.base;
-       pOutBufCfg->sizeofBuffer = outBuffInfo.size;
+    pOutBufCfg->base.pLgInt = outBuffInfo.base;
+    pOutBufCfg->sizeofBuffer = outBuffInfo.size;
     
-       pOutBuf->pOutBuf = &(pOutBuf->outBufConfig);
+    pOutBuf->pOutBuf = &(pOutBuf->outBufConfig);
     
     return 0;
 }
@@ -627,13 +628,13 @@ Int asopUpdateOutBufConfig(
 
     // FL, New IO: original code can change these values in every DOB issue
     //  Need to determine if this is required or not.
-    pOutBufCfg->stride = OUTPUT_STRIDE;
+    pOutBufCfg->stride = pOutIo->stride;
     pOutBufCfg->sizeofElement = WORD_SIZE_PCM;
     pOutBufCfg->precision = 24;
     
     //JXTODO: to replace hard coded write size
     // Get write pointers of output memory pool
-       total_write_size = pOutBufCfg->lengthofFrame * pOutBufCfg->stride * pOutBufCfg->sizeofElement;
+    total_write_size = pOutBufCfg->lengthofFrame * pOutBufCfg->stride * pOutBufCfg->sizeofElement;
     status = ioBuffGetWritePtrs(hIoBuff, total_write_size,
         &buff1, &size1, &buff2, &size2);
     if (status == IOBUFF_ERR_OVERFLOW) 
@@ -653,7 +654,7 @@ Int asopUpdateOutBufConfig(
     }
 
     // Update Output buffer pointer for Encoder
-       pOutBufCfg->pntr.pLgInt = buff1;
+    pOutBufCfg->pntr.pLgInt = buff1;
     if ((buff2 != NULL) || (size2 != 0))
     {
         // buff2 should always be NULL for Output & size2 should always be 0 for Output.