Change root folder name, create pasdk subfolder
[processor-sdk/performance-audio-sr.git] / processor_audio_sdk_1_00_00_00 / pasdk / common / paf_decOpCircBuf.h
1 #ifndef _DEC_OP_CIRC_BUF_H_
2 #define _DEC_OP_CIRC_BUF_H_
4 #include <xdc/std.h>
5 #include "paftyp.h"
7 #define PAF_DECOP_CB_SOK                    (  0 )      // ok
8 #define PAF_DECOP_CB_INIT_INV_SOURCE_SEL    ( -1 )      // error: invalid source selection on init
9 #define PAF_DECOP_CB_WRITE_OVERFLOW         ( -2 )      // error: write overflow
10 #define PAF_DECOP_CB_READ_UNDERFLOW         ( -3 )      // error: read underflow
11 #define PAF_DECOP_CB_READ_INVSTATE          ( -4 )      // error: circular buffer invalid state on read
13 #define PAF_DECOP_CB_MAX_NUM_AF             ( 4 )       // decoder output circular buffer maximum number audio frames
14 #define PAF_DECOP_CB_MAX_NUM_PCM_CH         ( 16 )      // decoder output circular buffer maximum number audio PCM channels
15 #define PAF_DECOP_CB_MAX_NUM_PCM_FRAMES     ( 2 )       // decoder output circular buffer maximum number PCM frames //Qin - Increased to prevent cb overflow for ddp.
16 #define PAF_DECOP_CB_MAX_PCM_FRAME_LEN      ( 6*256 )   // decoder output circular buffer maximum PCM frame length
17 #define PAF_DECOP_CB_PCM_BUF_SZ             ( PAF_DECOP_CB_MAX_NUM_PCM_CH * PAF_DECOP_CB_MAX_NUM_PCM_FRAMES * PAF_DECOP_CB_MAX_PCM_FRAME_LEN )
19 // Decoder output circular buffer
20 typedef struct PAF_DecodeOpCircBuf {
21         PAF_AudioFrame *afCb;   // audio frame CB
22         PAF_AudioData *pcmBuf;  // PCM buffer, contains PCM data associated with audio frames
23         Int8          *metaBuf; // metafdata buffer, contains metadata associated with audio frames //QIN
24         Int8 afRdIdx;           // audio frame CB read index
25         Int8 afWrtIdx;          // audio frame CB write index
26         Int16 pcmRdIdx;         // pcm buffer read index
27         Int8 numAfCb;           // current number frames in CB
28         Int8 maxNumAfCb;        // maximum number of audio frames in CB
29         Int16 decOpFrameLen;    // selected decoder output frame length (input transaction size)
30         Int16 strFrameLen;      // stream frame length (output transaction size)
31         Int8 writerActiveFlag;  // flag indicates whether CB writer is active
32         Int8 readerActiveFlag;  // flag indicates whether CB reader is active
33         Int8 emptyFlag;         // flag indicates whether reader should empty (drain) remaining frames in CB
34         //Int cbWriteAfInit;      // indicates whether CB has been initialized for AF writes
35 } PAF_DecodeOpCircBuf;
37 // Start writes to circular buffer
38 Int cbWriteStart(
39     PAF_DecodeOpCircBuf *pCb    // decoder output circular buffer
40 );
42 // Stop writes to circular buffer
43 Int cbWriteStop(
44     PAF_DecodeOpCircBuf *pCb    // decoder output circular buffer
45 );
47 // Start reads from circular buffer
48 Int cbReadStart(
49     PAF_DecodeOpCircBuf *pCb    // decoder output circular buffer
50 );
52 // Stop reads from circular buffer
53 Int cbReadStop(
54     PAF_DecodeOpCircBuf *pCb    // decoder output circular buffer
55 );
57 // Read audio frame from circular buffer
58 Int cbReadAf(
59     PAF_DecodeOpCircBuf *pCb,   // decoder output circular buffer
60     PAF_AudioFrame *pAfRd       // audio frame into which to read
61 );
63 // Write audio frame to circular buffer
64 Int cbWriteAf(
65     PAF_DecodeOpCircBuf *pCb,   // decoder output circular buffer
66     PAF_AudioFrame *pAfWrt      // audio frame from which to write
67 );
69 // Get next audio frame to write in circular buffer
70 Int cbGetNextWriteAf(
71     PAF_DecodeOpCircBuf *pCb,   // decoder output circular buffer
72     PAF_AudioFrame **ppAfWrt    // audio frame next to be written
73 );
75 // Output log of circular buffer control variables (debug)
76 Int cbLog(
77     PAF_DecodeOpCircBuf *pCb,
78     Int8 fullLog
79 );
80 // restore read/write flags of the circular buffer. - QIN
81 Int cbReadWriteRestore(
82     PAF_DecodeOpCircBuf *pCb    // decoder output circular buffer
83 );
85 #endif /* _DEC_OP_CIRC_BUF_H_ */