]> Gitweb @ Texas Instruments - Open Source Git Repositories - git.TI.com/gitweb - processor-sdk/performance-audio-sr.git/blob - procsdk_audio_x_xx_xx_xx/common/paf_decOpCircBuf.h
2bc567b9cd487412ac28b1ff499a2e4746ddc15c
[processor-sdk/performance-audio-sr.git] / procsdk_audio_x_xx_xx_xx / 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
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 afRdIdx;           // audio frame CB read index
24         Int8 afWrtIdx;          // audio frame CB write index
25         Int16 pcmRdIdx;         // pcm buffer read index
26         Int8 numAfCb;           // current number frames in CB
27         Int8 maxNumAfCb;        // maximum number of audio frames in CB
28         Int16 decOpFrameLen;    // selected decoder output frame length (input transaction size)
29         Int16 strFrameLen;      // stream frame length (output transaction size)
30         Int8 writerActiveFlag;  // flag indicates whether CB writer is active
31         Int8 readerActiveFlag;  // flag indicates whether CB reader is active
32         Int8 emptyFlag;         // flag indicates whether reader should empty (drain) remaining frames in CB
33         //Int cbWriteAfInit;      // indicates whether CB has been initialized for AF writes
34 } PAF_DecodeOpCircBuf;
36 // Start writes to circular buffer
37 Int cbWriteStart(
38     PAF_DecodeOpCircBuf *pCb    // decoder output circular buffer
39 );
41 // Stop writes to circular buffer
42 Int cbWriteStop(
43     PAF_DecodeOpCircBuf *pCb    // decoder output circular buffer
44 );
46 // Start reads from circular buffer
47 Int cbReadStart(
48     PAF_DecodeOpCircBuf *pCb    // decoder output circular buffer
49 );
51 // Stop reads from circular buffer
52 Int cbReadStop(
53     PAF_DecodeOpCircBuf *pCb    // decoder output circular buffer
54 );
56 // Read audio frame from circular buffer
57 Int cbReadAf(
58     PAF_DecodeOpCircBuf *pCb,   // decoder output circular buffer
59     PAF_AudioFrame *pAfRd       // audio frame into which to read
60 );
62 // Write audio frame to circular buffer
63 Int cbWriteAf(
64     PAF_DecodeOpCircBuf *pCb,   // decoder output circular buffer
65     PAF_AudioFrame *pAfWrt      // audio frame from which to write
66 );
68 // Get next audio frame to write in circular buffer
69 Int cbGetNextWriteAf(
70     PAF_DecodeOpCircBuf *pCb,   // decoder output circular buffer
71     PAF_AudioFrame **ppAfWrt    // audio frame next to be written
72 );
74 // Output log of circular buffer control variables (debug)
75 Int cbLog(
76     PAF_DecodeOpCircBuf *pCb,
77     Int8 fullLog
78 );
80 #endif /* _DEC_OP_CIRC_BUF_H_ */