PASDK-516:Rename ASOT event & event Ids, remove unused code
[processor-sdk/performance-audio-sr.git] / pasdk / test_dsp / framework / audioStreamOutProc.h
2 /*
3 Copyright (c) 2017, Texas Instruments Incorporated - http://www.ti.com/
4 All rights reserved.
6 * Redistribution and use in source and binary forms, with or without 
7 * modification, are permitted provided that the following conditions
8 * are met:
9 *
10 * Redistributions of source code must retain the above copyright
11 * notice, this list of conditions and the following disclaimer.
12 *
13 * Redistributions in binary form must reproduce the above copyright
14 * notice, this list of conditions and the following disclaimer in the
15 * documentation and/or other materials provided with the
16 * distribution.
17 *
18 * Neither the name of Texas Instruments Incorporated nor the names of
19 * its contributors may be used to endorse or promote products derived
20 * from this software without specific prior written permission.
21 *
22 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
23 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
24 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
25 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
26 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
27 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
28 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
29 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
30 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
31 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
32 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
33 *
34 */
36 /*
37  *  ======== audioStreamOutProc.h ========
38  */
40 #ifndef _ASOP_H_
41 #define _ASOP_H_
42  
43 #include <xdc/std.h>
44 #include <ti/sysbios/knl/Event.h>
45 #include <ti/sysbios/knl/Task.h>
47 #include "audioStreamProc_params.h"
48 #include "audioStreamProc_patchs.h"
49 #include "audioStreamProc_config.h"
50 #include "audioStreamProc_master.h"
51 #include "ioPhy.h"
52 #include "ioBuff.h"
54 /* !!!!!!!!! Revisit !!!!!!!!!!!!!!
55  * Purpose : Temporary ASOT FL sizes.
56  *                       Deprecate PAF_SYS_FRAMELENGTH in phases.*/
57 #define PAF_ASOT_FRAMELENGTH            256
58 #define PAF_ASOT_MAX_FRAMELENGTH        1024
60 /* ASOT event IDs */
61 #define Evt_Id_AsotWakeTimer    Event_Id_00  // ASOT Wake Timer event
62 #define Evt_Id_AsotRxMsgAsit    Event_Id_01  // ASOT Rx ASIT message event
63 #define Evt_Id_AsotRxMsgAsdt    Event_Id_02  // ASOT Rx ASDT message event
64 #define Evt_Id_AsotTxMcaspEdma  Event_Id_03  // ASOT Tx McASP EDMA event
65 /* ASOT event handle - to put in structure */
66 extern Event_Handle asotEvt;
68 // Global debug counter */
69 extern Uint32 gTaskAsopCnt; // debug counter for ASOP task
71 struct PAF_ASOT_Params;
72 struct PAF_ASOT_Patchs;
73 struct PAF_ASOT_Config;
75 // Audio Stream Output Task (ASOT) parameters, functions
76 typedef struct PAF_ASOT_Fxns {
77     Int (*initPhase[8]) (const struct PAF_ASOT_Params *, const struct PAF_ASOT_Patchs *, struct PAF_ASOT_Config *);
78     Int (*initFrame0) (const struct PAF_ASOT_Params *, const struct PAF_ASOT_Patchs *, struct PAF_ASOT_Config *, Int);
79     Int (*initFrame1) (const struct PAF_ASOT_Params *, const struct PAF_ASOT_Patchs *, struct PAF_ASOT_Config *, Int, Int);
80     //Int (*passProcessing) (const struct PAF_AST_Params *, const struct PAF_AST_Patchs *, struct PAF_AST_Config *, Int);
81     //Int (*passProcessingCopy) (const struct PAF_AST_Params *, const struct PAF_AST_Patchs *, struct PAF_AST_Config *);
82     //Int (*autoProcessing) (const struct PAF_AST_Params *, const struct PAF_AST_Patchs *, struct PAF_AST_Config *, Int, ALG_Handle);
83     
84     //Int (*decodeProcessing) (const struct PAF_ASOT_Params *, const struct PAF_ASOT_Patchs *, struct PAF_ASOT_Config *, Int);    
85     Int (*decodeProcessing) (const struct PAF_ASOT_Params *, const struct PAF_ASOT_Patchs *, struct PAF_ASOT_Config *);    
86     
87     //Int (*decodeCommand) (const struct PAF_AST_Params *, const struct PAF_AST_Patchs *, struct PAF_AST_Config *);
88     Int (*encodeCommand) (const struct PAF_ASOT_Params *, const struct PAF_ASOT_Patchs *, struct PAF_ASOT_Config *);
89     
90     //Int (*decodeInit) (const struct PAF_ASOT_Params *, const struct PAF_ASOT_Patchs *, struct PAF_ASOT_Config *, Int);
91     Int (*decodeInit) (const struct PAF_ASOT_Params *, const struct PAF_ASOT_Patchs *, struct PAF_ASOT_Config *);
92     
93     //Int (*decodeInfo) (const struct PAF_AST_Params *, const struct PAF_AST_Patchs *, struct PAF_AST_Config *, Int, Int);
94     Int (*decodeInfo1) (const struct PAF_ASOT_Params *, const struct PAF_ASOT_Patchs *, struct PAF_ASOT_Config *, Int, Int);
95     Int (*decodeInfo2) (const struct PAF_ASOT_Params *, const struct PAF_ASOT_Patchs *, struct PAF_ASOT_Config *, Int, Int);
96     //Int (*decodeCont) (const struct PAF_AST_Params *, const struct PAF_AST_Patchs *, struct PAF_AST_Config *, ALG_Handle *, Int, Int);
97     //Int (*decodeDecode) (const struct PAF_AST_Params *, const struct PAF_AST_Patchs *, struct PAF_AST_Config *, Int, Int, Int);
98     Int (*decodeStream) (const struct PAF_ASOT_Params *, const struct PAF_ASOT_Patchs *, struct PAF_ASOT_Config *, Int, Int);
99     Int (*decodeEncode) (const struct PAF_ASOT_Params *, const struct PAF_ASOT_Patchs *, struct PAF_ASOT_Config *, Int, Int);
101     //Int (*decodeFinalTest) (const struct PAF_AST_Params *, const struct PAF_AST_Patchs *, struct PAF_AST_Config *, Int, Int);    
102     Int (*decodeFinalTest) (const struct PAF_ASOT_Params *, const struct PAF_ASOT_Patchs *, struct PAF_ASOT_Config *, Int, Int);    
104     Int (*decodeComplete) (const struct PAF_ASOT_Params *, const struct PAF_ASOT_Patchs *, struct PAF_ASOT_Config *, ALG_Handle *, Int, Int);
105     Int (*selectDevices) (const struct PAF_ASOT_Params *, const struct PAF_ASOT_Patchs *, struct PAF_ASOT_Config *);
106     //Int (*sourceDecode) (const struct PAF_AST_Params *, const struct PAF_AST_Patchs *, struct PAF_AST_Config *, Int);
107     Int (*startOutput) (const struct PAF_ASOT_Params *, const struct PAF_ASOT_Patchs *, struct PAF_ASOT_Config *);
108     Int (*stopOutput) (const struct PAF_ASOT_Params *, const struct PAF_ASOT_Patchs *, struct PAF_ASOT_Config *);
109     Int (*setCheckRateX) (const struct PAF_ASOT_Params *, const struct PAF_ASOT_Patchs *, struct PAF_ASOT_Config *, Int);
110     Int (*streamChainFunction) (const struct PAF_ASOT_Params *, const struct PAF_ASOT_Patchs *, struct PAF_ASOT_Config *, Int, Int, Int);
111     Int (*deviceAllocate) (SIO_Handle *, int, int, int, Ptr);
112     Int (*deviceSelect) (SIO_Handle *, int, int, Ptr);
113     //Int (*computeFrameLength) (Int, Int, Int);
114     //Int (*updateInputStatus) (SIO_Handle, PAF_InpBufStatus *, PAF_InpBufConfig *);
115     //Int (*copy) (Uns, PAF_InpBufConfig *, Uns, PAF_OutBufConfig *);
117     // For RAM_report
118     Void (*headerPrint)();
119     Int  (*allocPrint)(const PAF_ALG_AllocInit *pInit, Int sizeofInit, PAF_IALG_Config *p);
120     Void (*commonPrint)(IALG_MemRec common[], PAF_IALG_Config *p);
121     Void (*bufMemPrint)(Int z, Int size, Int heapId, Int bufType);
122     Void (*memStatusPrint)(
123         CString header, 
124         HeapMem_Handle hInternalHeap, 
125         HeapMem_Handle hInternal1Heap, 
126         HeapMem_Handle hExternalHeap, 
127         HeapMem_Handle hInternal1HeapShm, 
128         HeapMem_Handle hExternalHeapShm, 
129         HeapMem_Handle hExternalNoncachedHeapShm);
130 } PAF_ASOT_Fxns;
132 // Audio Stream Output Task (ASOT) parameters
133 typedef struct PAF_ASOT_Params {
134     const PAF_ASOT_Fxns *fxns;
135     struct {
136         SmInt master;
137         SmInt inputs;
138         SmInt input1;
139         SmInt inputN;
140         SmInt decodes;
141         SmInt decode1;
142         SmInt decodeN;
143         SmInt streams;
144         SmInt stream1; /* unused */
145         SmInt streamN; /* unused */
146         SmInt encodes;
147         SmInt encode1;
148         SmInt encodeN;
149         SmInt outputs;
150         SmInt output1;
151         SmInt outputN;
152     } zone;
153     const SmInt *inputsFromDecodes;
154     const SmInt *outputsFromEncodes;
155     struct {
156         int *pHeapIdIntern;             // INT memory heap ID
157         int *pHeapIdExtern;             // EXT memory heap ID
158         int *pHeapIdInpbuf;             // IB buffer heap ID
159         int *pHeapIdOutbuf;             // OB buffer heap ID
160         int *pHeapIdFrmbuf;             // Frame buffer heap ID
161         int *pHeapIdIntern1;            // INT1 memory heap ID
162         int *pHeapIdInt1Shm;            // INT1 SHared Memory heap ID
163         int *pHeapIdExtShm;             // EXT SHared Memory heap ID
164         int *pHeapIdExtNonCachedShm;    // EXT Non-Cached SHared Memory heap ID
165         int clear; 
166     } heap;
167     struct {
168         const IALG_MemSpace *space;
169     } common;
170     const LgInt *z_rx_bufsiz;
171     const LgInt *z_tx_bufsiz;
172     const SmInt *z_numchan;
173     MdInt framelength;
174     const PAF_AudioFunctions *pAudioFrameFunctions;
175     const struct PAF_ASP_ChainFxns *pChainFxns;
176     const PAF_InpBufStatus *pInpBufStatus;
177     const PAF_DecodeStatus * const *z_pDecodeStatus;
178     const PAF_OutBufStatus *pOutBufStatus;
179     const PAF_EncodeStatus * const *z_pEncodeStatus;
180     const PAF_VolumeStatus *pVolumeStatus;
181     const PAF_ASP_AlgKey *pDecAlgKey;
182     const PAF_ASP_AlgKey *pEncAlgKey;
183     const PAF_ASP_SioMap *pDecSioMap;
184     const SmInt *streamsFromDecodes;
185     const SmInt *streamsFromEncodes;
186     const MdInt maxFramelength;
187     const SmInt *streamOrder;
188     const PAF_ASP_LinkInit * const (*i_inpLinkInit);
189     const PAF_ASP_LinkInit * const (*i_outLinkInit);
190     const PAF_ASP_outNumBufMap *  const (*poutNumBufMap);
191     const PAF_MetadataBufStatus *pMetadataBufStatus;
192     const PAF_AudioFrameBufStatus *pAudioFrameBufStatus;
193 } PAF_ASOT_Params;
195 // Audio Stream Output Task (ASOT) patchs
196 typedef struct PAF_ASOT_Patchs {
197     //const PAF_SIO_ParamsN * devinp;
198     const PAF_SIO_ParamsN * devout;
199     //const PAF_ASP_LinkInit * const (*i_decLinkInit);
200     const PAF_ASP_LinkInit * const (*i_aspLinkInit)[GEARS];
201     const PAF_ASP_LinkInit * const (*i_encLinkInit);
202 } PAF_ASOT_Patchs;
204 typedef struct PAF_AST_OutIO {
205     ioPhyHandle_t        hIoPhy;     /* handle to I/O physical layer */
206     ioBuffHandle_t       hIoBuff;    /* handle to I/O buffer management */
207     Ptr                  hMcaspChan; /* handle to McASP LLD channel for output */
208     uint32_t             phyXferSize;
210     void     *mcaspTxBuf1;
211     void     *mcaspTxBuf2;
212     uint32_t  mcaspTxSize1;
213     uint32_t  mcaspTxSize2;
214     int       mcaspTxtwoXfers;
216     int       numPrimeXfers;
218     uint32_t  mcaspXferErr;
220     // debugging counters
221     uint32_t num_xfers;
223 } PAF_AST_IoOut;
225 // Audio Stream Input Task (ASOT) configuration
226 typedef struct PAF_ASOT_Config {
227     Task_Handle     taskHandle;                 // ASOT task handle
228     uint_least16_t  state;                      // ASOT state
229     ACP_Handle      acp;                        // ASOT ACP handle
230     Int8            cbDrainedFlag[DECODEN_MAX]; // CB drained flags
231     PAF_ASPM_Config *pAspmCfg;                  // ASIT/ASOT shared configuration
232     PAF_AST_Config  *pAstCfg;                   // ASIT/ASOT/ASDT shared configuration
233     PAF_AST_IoOut   *pIoOut;
234 } PAF_ASOT_Config;
237 //   Purpose:   Audio Stream Outpu Task Function for initialization of data pointers
238 //              by allocation of memory.
239 Int 
240 PAF_ASOT_initPhaseMalloc(
241     const PAF_ASOT_Params *pP, 
242     const PAF_ASOT_Patchs *pQ, 
243     PAF_ASOT_Config *pAsotCfg
244 );
245     
246 //   Purpose:   Audio Stream Output Task Function for initialization of data values
247 //              from parameters.
248 Int
249 PAF_ASOT_initPhaseConfig(
250     const PAF_ASOT_Params *pP, 
251     const PAF_ASOT_Patchs *pQ, 
252     PAF_ASOT_Config *pAsotCfg
253 );
255 //   Purpose:   Audio Stream Output Task Function for initialization of ACP by
256 //              instantiation of the algorithm.
257 Int
258 PAF_ASOT_initPhaseAcpAlg(
259     const PAF_ASOT_Params *pP, 
260     const PAF_ASOT_Patchs *pQ, 
261     PAF_ASOT_Config *pAsotCfg
262 );
264 //   (***) FL: ASIT/ASOT currently consider common memory independently.
265 //             Should simultaneously consider all algs in ASIT/ASOT.
266 //   Purpose:   Audio Stream Output Task Function for allocation of common memory.
267 Int
268 PAF_ASOT_initPhaseCommon(
269     const PAF_ASOT_Params *pP, 
270     const PAF_ASOT_Patchs *pQ, 
271     PAF_ASOT_Config *pAsotCfg
272 );
274 //   Purpose:   Audio Stream Output Task Function for initialization of ASP algorithms.
275 Int
276 PAF_ASOT_initPhaseAspAlg(
277     const PAF_ASOT_Params *pP, 
278     const PAF_ASOT_Patchs *pQ, 
279     PAF_ASOT_Config *pAsotCfg
280 );
282 //   Purpose:   Audio Stream Output Task Function for initialization of data values
283 //              from parameters for Algorithm Keys.
284 Int
285 PAF_ASOT_initPhaseAlgKey(
286     const PAF_ASOT_Params *pP, 
287     const PAF_ASOT_Patchs *pQ, 
288     PAF_ASOT_Config *pAsotCfg
289 );
291 //   Purpose:   Audio Stream Output Task Function for initialization of Input Devices.
292 Int
293 PAF_ASOT_initPhaseDevice(
294     const PAF_ASOT_Params *pP, 
295     const PAF_ASOT_Patchs *pQ, 
296     PAF_ASOT_Config *pAsotCfg
297 );
299 //   Purpose:   Audio Stream Output Task Function for initialization of the Audio
300 //              Frame(s) by memory allocation and loading of data pointers
301 //              and values.
302 Int
303 PAF_ASOT_initFrame0(
304     const PAF_ASOT_Params *pP, 
305     const PAF_ASOT_Patchs *pQ, 
306     PAF_ASOT_Config *pAsotCfg, 
307     Int z
308 );
310 //   Purpose:   Audio Stream Task Function for initialization or reinitiali-
311 //              zation of the Audio Frame(s) by loading of data values of a
312 //              time-varying nature.
313 Int
314 PAF_ASOT_initFrame1(
315     const PAF_ASOT_Params *pP, 
316     const PAF_ASOT_Patchs *pQ, 
317     PAF_ASOT_Config *pAsotCfg, 
318     Int z, 
319     Int apply
320 );
322 //   Purpose:   Audio Stream Output Task Function for selecting the devices used
323 //              for output.
324 Int
325 PAF_ASOT_selectDevices(
326     const PAF_ASOT_Params *pP, 
327     const PAF_ASOT_Patchs *pQ, 
328     PAF_ASOT_Config *pAsotCfg
329 );
331 //   Purpose:   Audio Stream Output Task Function for processing audio data.
332 //
333 Int
334 PAF_ASOT_decodeProcessing(
335     const PAF_ASOT_Params *pP, 
336     const PAF_ASOT_Patchs *pQ, 
337     PAF_ASOT_Config *pAsotCfg 
338 );
340 //   Purpose:   Decoding Function for processing Encode Commands.
341 Int
342 PAF_ASOT_encodeCommand(
343     const PAF_ASOT_Params *pP, 
344     const PAF_ASOT_Patchs *pQ, 
345     PAF_ASOT_Config *pAsotCfg
346 );
348 //   Purpose:   Decoding Function for reinitializing the decoding process.
349 Int
350 PAF_ASOT_decodeInit(
351     const PAF_ASOT_Params *pP, 
352     const PAF_ASOT_Patchs *pQ, 
353     PAF_ASOT_Config *pAsotCfg
354 );
356 //   Purpose:   Decoding Function for processing information in a manner that
357 //              is unique to initial frames of input data.
358 Int
359 PAF_ASOT_decodeInfo(
360     const PAF_ASOT_Params *pP, 
361     const PAF_ASOT_Patchs *pQ, 
362     PAF_ASOT_Config *pAsotCfg, 
363     Int frame, 
364     Int block
365 );
367 //   Purpose:   Decoding Function for processing information in a manner that
368 //              is unique to initial frames of input data.
369 Int
370 PAF_ASOT_decodeInfo1(
371     const PAF_ASOT_Params *pP, 
372     const PAF_ASOT_Patchs *pQ, 
373     PAF_ASOT_Config *pAsotCfg, 
374     Int frame, 
375     Int block
376 );
378 //   Purpose:   Decoding Function for processing information in a manner that
379 //              is unique to frames of input data other than the initial one.
380 Int
381 PAF_ASOT_decodeInfo2(
382     const PAF_ASOT_Params *pP, 
383     const PAF_ASOT_Patchs *pQ, 
384     PAF_ASOT_Config *pAsotCfg, 
385     Int frame, 
386     Int block
387 );
389 //   Purpose:   Decoding Function for processing of audio frame data by the
390 //              ASP Algorithms.
391 Int
392 PAF_ASOT_decodeStream(
393     const PAF_ASOT_Params *pP, 
394     const PAF_ASOT_Patchs *pQ, 
395     PAF_ASOT_Config *pAsotCfg, 
396     Int frame, 
397     Int block
398 );
400 //   Purpose:   Decoding Function for processing of audio frame data by the
401 //              Encode Algorithm.
402 Int
403 PAF_ASOT_decodeEncode(
404     const PAF_ASOT_Params *pP, 
405     const PAF_ASOT_Patchs *pQ, 
406     PAF_ASOT_Config *pAsotCfg, 
407     Int frame, 
408     Int block
409 );
411 //   Purpose:   Decoding Function for terminating the decoding process.
412 Int
413 PAF_ASOT_decodeComplete(
414     const PAF_ASOT_Params *pP, 
415     const PAF_ASOT_Patchs *pQ, 
416     PAF_ASOT_Config *pAsotCfg, 
417     ALG_Handle decAlg[], 
418     Int frame, 
419     Int block
420 );
422 //   Purpose:   Decoding Function for initiating output.
423 Int
424 PAF_ASOT_startOutput(
425     const PAF_ASOT_Params *pP, 
426     const PAF_ASOT_Patchs *pQ, 
427     PAF_ASOT_Config *pAsotCfg
428 );
430 //   Purpose:   Decoding Function for terminating output.
431 Int
432 PAF_ASOT_stopOutput(
433     const PAF_ASOT_Params *pP, 
434     const PAF_ASOT_Patchs *pQ, 
435     PAF_ASOT_Config *pAsotCfg
436 );
438 //   Purpose:   Decoding Function for re-initiating output.
439 Int
440 PAF_ASOT_setCheckRateX(
441     const PAF_ASOT_Params *pP, 
442     const PAF_ASOT_Patchs *pQ, 
443     PAF_ASOT_Config *pAsotCfg, 
444     Int check
445 );
447 //   Purpose:   Common Function for processing algorithm chains.
448 Int
449 PAF_ASOT_streamChainFunction(
450     const PAF_ASOT_Params *pP, 
451     const PAF_ASOT_Patchs *pQ, 
452     PAF_ASOT_Config *pAsotCfg, 
453     Int iChainFrameFxns, 
454     Int abortOnError, 
455     Int logArg
456 );
458 //   Purpose:   Decoding Function for determining whether processing of the
459 //              current stream is complete.
460 Int
461 PAF_ASOT_decodeFinalTest(
462     const struct PAF_ASOT_Params *pP, 
463     const struct PAF_ASOT_Patchs *pQ, 
464     struct PAF_ASOT_Config *pAsotCfg, 
465     Int frame, 
466     Int block
467 );
469 #endif /* _ASOP_H_ */