source: svn/trunk/newcon3bcm2_21bu/magnum/portinginterface/xpt/7552/bxpt_playback.h

Last change on this file was 2, checked in by jglee, 11 years ago

first commit

  • Property svn:executable set to *
File size: 48.5 KB
Line 
1/***************************************************************************
2 *     Copyright (c) 2003-2011, Broadcom Corporation
3 *     All Rights Reserved
4 *     Confidential Property of Broadcom Corporation
5 *
6 *  THIS SOFTWARE MAY ONLY BE USED SUBJECT TO AN EXECUTED SOFTWARE LICENSE
7 *  AGREEMENT  BETWEEN THE USER AND BROADCOM.  YOU HAVE NO RIGHT TO USE OR
8 *  EXPLOIT THIS MATERIAL EXCEPT SUBJECT TO THE TERMS OF SUCH AN AGREEMENT.
9 *
10 * $brcm_Workfile: bxpt_playback.h $
11 * $brcm_Revision: Hydra_Software_Devel/8 $
12 * $brcm_Date: 6/3/11 4:34p $
13 *
14 * Porting interface code for the PVR record and playback sections of the
15 * data transport core.
16 *
17 * Revision History:
18 *
19 * $brcm_Log: /magnum/portinginterface/xpt/base2/bxpt_playback.h $
20 *
21 * Hydra_Software_Devel/8   6/3/11 4:34p gmullen
22 * SW7425-653: Merged changes to Hydra branch
23 *
24 * Hydra_Software_Devel/SW7425-653/1   6/2/11 10:35a gmullen
25 * SW7425-653: Added non-realtime transcoding support
26 *
27 * Hydra_Software_Devel/7   5/23/11 1:26p gmullen
28 * SW7231-170: Removed incorrect sync mode define
29 *
30 * Hydra_Software_Devel/6   5/16/11 4:58p gmullen
31 * SW7408-284: Added support for jitter adjust in PCR hw to PI
32 *
33 * Hydra_Software_Devel/5   3/7/11 3:09p gmullen
34 * SW7425-153: Merged to mainline
35 *
36 * Hydra_Software_Devel/SW7425-153/1   3/7/11 3:07p gmullen
37 * SW7425-153: Fixed blockout calc and disabled usage of spare bandwidth
38 *
39 * Hydra_Software_Devel/4   12/16/10 3:06p gmullen
40 * SW7425-15: Added PES-based pacing
41 *
42 * Hydra_Software_Devel/3   12/1/10 8:01a gmullen
43 * SW7425-15: Updated header and stub calls for TS mux
44 *
45 * Hydra_Software_Devel/2   11/30/10 6:09p gmullen
46 * SW7425-15: Added TS muxing support
47 *
48 * Hydra_Software_Devel/1   10/25/10 2:09p gmullen
49 * SW7425-15: Moved srcs to base2 folder
50 *
51 * Hydra_Software_Devel/1   10/8/10 2:57p gmullen
52 * SW7425-15: Added header files
53 *
54 * Hydra_Software_Devel/38   4/30/10 5:33p gmullen
55 * SW7630-81: Added OutOfSync interrupt enum
56 *
57 * Hydra_Software_Devel/37   12/16/09 3:26p gmullen
58 * SW7325-665: Added support for 32-bit timestamp mode
59 *
60 * Hydra_Software_Devel/36   7/31/09 2:44p gmullen
61 * PR54331: Added 35130 to XPT support.
62 *
63 * Hydra_Software_Devel/35   7/14/09 10:22a piyushg
64 * PR56771: Add XPT PI code for 7342.
65 *
66 * Hydra_Software_Devel/34   6/2/09 10:29a gmullen
67 * PR51821: Merged workaround to mainline.
68 *
69 * Hydra_Software_Devel/33   5/28/09 2:11p gmullen
70 * PR55549: Added support for PCR-based pacing.
71 *
72 * Hydra_Software_Devel/32   4/16/09 3:39p gmullen
73 * PR54222: Merged 7002-specific changes to mainline. Created symlinks for
74 * 7002 files back to 7400.
75 *
76 * Hydra_Software_Devel/31   4/7/09 5:25p piyushg
77 * PR52986: Add support for 7635
78 * Added directory element "7635".
79 *
80 * Hydra_Software_Devel/30   2/18/09 10:49a piyushg
81 * PR52189: Added hooks for Get/Set PACING_OFFSET_ADJ_DIS bit.
82 *
83 * Hydra_Software_Devel/29   1/27/09 1:10p gmullen
84 * PR51625: Added 7336 support
85 *
86 * Hydra_Software_Devel/28   12/9/08 4:42p gmullen
87 * PR47755: Fixed compilation error in packetizer code.
88 *
89 * Hydra_Software_Devel/27   11/12/08 3:10p gmullen
90 * PR48835: BXPT_Playback_SetChannelPacketSettings now takes a struct.
91 *
92 * Hydra_Software_Devel/26   10/10/08 6:18p gmullen
93 * PR47232: Updated comments for UsePcrTimeBase and WhichPcrToUse struct
94 * members.
95 *
96 * Hydra_Software_Devel/25   10/9/08 11:35a gmullen
97 * PR47745: Added BXPT_Playback_GetPacketizerDefaults().
98 *
99 * Hydra_Software_Devel/24   9/17/08 5:02p gmullen
100 * PR47065: Added PCR-based pacing support,
101 *
102 * Hydra_Software_Devel/23   7/16/08 3:44p gmullen
103 * PR37867: Merged playback mux code to Hydra_Software_Devel
104 *
105 * Hydra_Software_Devel/22   4/10/08 3:36p gmullen
106 * PR38954: Updated number of playbacks, added HDDVI support to PCR API,
107 * and added packetizer support.
108 *
109 * Hydra_Software_Devel/21   12/4/07 6:23p mward
110 * PR37908: Use 7401 DVD LPCM support for 7118.
111 *
112 * Hydra_Software_Devel/SanJose_CDI_Devel/2   12/17/07 6:41p shuang
113 * PR37867:Merge Jethead patch in order to support DirecTV AM21 project
114 * which ATSC data will input through USB interface.
115 * Merge Magnum Phase 7.0.
116 *
117 * Hydra_Software_Devel/20   11/30/07 11:49a gmullen
118 * PR37062: Changed LPCM support to DVD Mode.
119 *
120 * Hydra_Software_Devel/19   11/28/07 9:02a gmullen
121 * PR37062: Added support for LPCM on the 7401.
122 *
123 * Hydra_Software_Devel/18   11/8/07 10:11a gmullen
124 * PR36800: Added defines to fix enum mispellings.
125 *
126 * Hydra_Software_Devel/17   9/7/07 6:53p katrep
127 * PR27642: Use the new stream filtering using spid for 7405. utilize the
128 * new hw features.
129 *
130 * Hydra_Software_Devel/16   8/31/07 3:50p gmullen
131 * PR34504: Added substream filtering.
132 *
133 * Hydra_Software_Devel/15   8/21/07 5:21p gmullen
134 * PR34222: Added DisableTimestampParityCheck bool to
135 * BXPT_Playback_ChannelSettings struct.
136 *
137 * Hydra_Software_Devel/14   8/1/07 3:38p gmullen
138 * PR33710: pepSpecial arbiter settings for 7440. Also support playback
139 * data direct to RAVE.
140 *
141 * Hydra_Software_Devel/13   7/13/07 4:09p piyushg
142 * PR32218: PACING_START bit is reset whenever
143 * TS_RANGE_ERROR interrupt occurs.
144 *
145 * Hydra_Software_Devel/12   4/25/07 4:22p gmullen
146 * PR29688: Added AcceptNulls and AcceptAdapt00 support to parser config
147 *
148 * Hydra_Software_Devel/11   3/15/07 7:23p katrep
149 * PR28320: Fixed the previous version.
150 *
151 * Hydra_Software_Devel/10   3/15/07 5:12p katrep
152 * PR28320: Expose PsMode and PackHdrConfig for all the chips which
153 * support it.
154 *
155 * Hydra_Software_Devel/9   11/22/06 4:58p gmullen
156 * PR26109: Updated for 7403.
157 *
158 * Hydra_Software_Devel/8   10/2/06 11:07a gmullen
159 * PR24504: Added BXPT_Playback_GetIntId().
160 *
161 * Hydra_Software_Devel/7   9/18/06 3:01p gmullen
162 * PR15309: Fixed compiler warnings in BXPT_Playback_PackHdr_Config enum
163 *
164 * Hydra_Software_Devel/6   9/18/06 12:12p katrep
165 * PR23114: Disable context enable for PES as context pt is used.
166 *
167 * Hydra_Software_Devel/5   9/15/06 4:28p katrep
168 * PR23114: Added PsMode to Channel Settings ,updated SyncMode comments.
169 *
170 * Hydra_Software_Devel/4   8/17/06 6:01p katrep
171 * PR23114: Added Support for 7440 chip
172 *
173 * Hydra_Software_Devel/3   7/20/06 5:30p katrep
174 * PR22365: Added better mangement of XC buffer client BW for playback.XC
175 * buf for PB is given max BW & BW throtle is done at PB engine.Spare BW
176 * enabllag is used to provide more BW for PB if available.
177 *
178 * Hydra_Software_Devel/2   4/19/06 5:37p gmullen
179 * PR21119: Added BXPT_Playback_DisablePacketizers()
180 *
181 * Hydra_Software_Devel/4   10/20/05 11:14a gmullen
182 * PR15309: Added support for PES and ES playback.
183 *
184 * Hydra_Software_Devel/3   10/17/05 10:37a gmullen
185 * PR15309: Added ES support and AllPass mode for PB parsers.
186 *
187 * Hydra_Software_Devel/2   9/21/05 2:17p gmullen
188 * PR15309: Added support for AAC HE and AC3+ audio, fixed bug in playback
189 * PI, modified RAVE PI to support channel change and reset.
190 *
191 * Hydra_Software_Devel/1   5/13/05 1:27p gmullen
192 * PR15309: First draft of XPT PI.
193 *
194 ***************************************************************************/
195
196/*= Module Overview *********************************************************
197Overview
198
199***************************************************************************/
200
201#ifndef BXPT_PLAYBACK_H__
202#define BXPT_PLAYBACK_H__
203
204#include "bxpt.h"
205#include "bchp_xpt_pb0.h"
206
207#ifdef __cplusplus
208extern "C" {
209#endif
210
211/***************************************************************************
212Summary:
213Handle for accessing the playback API via a channel. Users should not directly
214access the contents of the structure.
215****************************************************************************/
216typedef struct BXPT_P_PbHandle *BXPT_Playback_Handle;
217
218/***************************************************************************
219Summary:
220This defines the maximum rate the playback channels can run at, in bits
221per second.
222****************************************************************************/
223#define BXPT_MAX_PLAYBACK_RATE  ( 108000000 )
224
225/***************************************************************************
226Summary:
227This defines the minimum bit rate  bandwidth alloacted to the  playback
228channels.Playback channels can run at, at bit rate  greater than this
229based on available bandwidth.
230****************************************************************************/
231#define BXPT_MIN_PLAYBACK_RATE   ( 10000 )
232
233/***************************************************************************
234Summary:
235This defines the different packet synchronizations that are supported. These
236are used as values for BXPT_Playback_ChannelSettings.SyncMode ( used when the
237channel is opened or BXPT_Playback_SetChannelSettings() is called ).
238
239If transport packets are to be played back, the caller should also set   
240BXPT_Playback_ChannelSettings.PacketLength appropriately. 
241****************************************************************************/
242#define BXPT_PB_SYNC_MPEG           ( 0x0 )
243
244#define BXPT_PB_SYNC_PES            ( 0x3 )
245#define BXPT_PB_SYNC_BYPASS         ( 0x4 )
246#define BXPT_PB_SYNC_MPEG_BLIND     ( 0x5 )
247
248/***************************************************************************
249Summary:
250Enumeration of different timestamp types a channel will support.
251 
252Discussion:
253There are three formats for supported for pacing timestamps. The full timestamp
254is 32 bits. For each of these 3 formats, the timestamp mode can be either
255Mod-300 or binary. The parity and user bits can generated by the RAVE during
256recording. The timeetamp formats are:
257
2581) 32-bit timestamp
2592) 4-bit Parity + 28-bit timestamp (lower 28 bits of the 32 bit timestamps are
260    used and upper 4 bits are replaced with 4-bit parity)
2613) 2-bit User field + 30-bit timestamp (lower 30 bits of the 32 bit timestamps
262    are used and upper 2 bits are replaced with programmable User field)
263
264To configure playback, in BXPT_Playback_ChannelSettings the TimestampMode
265(XPT_PBn_CTRL4.TIMESTAMP_MODE) and Use32BitTimestamps (XPT_PBn_CTRL2.TIMESTAMP_MODE_32BIT)
266fields are supposed to be programmed for the timestamp format of the stamps used
267in the stream.
268
269It is possible to re-stamp the timestamps in the playback parser, changing
270their format, or between Mod-300 and binary. To enable restamping,
271in BXPT_Playback_ParserConfig set the ForceRestamping field to true and
272TsMode (XPT_PBn_PARSER_CTRL1.PARSER_TIMESTAMP_MODE) as appropriate.
273****************************************************************************/
274typedef enum BXPT_TimestampMode
275{
276    BXPT_TimestampMode_e28_4P_Mod300 = 0,   /* 28 bit timestamp, 4 bit parity, modulo 300 */
277    BXPT_TimestampMode_e30_2U_Mod300 = 2,   /* 30 bit timestamp, 2 bit user field, modulo 300 */
278    BXPT_TimestampMode_e30_2U_Binary = 3    /* 30 bit timestamp, 2 bit user field, binary. */           
279}
280BXPT_TimestampMode;
281
282/***************************************************************************
283Summary:
284Supports starting and stopping of playback pacing logic.
285****************************************************************************/
286typedef enum BXPT_PacingControl
287{
288    BXPT_PacingControl_eStart,      /* Enable and arm pacing. */
289    BXPT_PacingControl_eStop        /* Disable pacing. */
290}
291BXPT_PacingControl;
292
293/***************************************************************************
294Summary:
295Enums for playback channel interrupts. Useful for places where the RDB
296macros are too cumbersome.
297****************************************************************************/
298typedef enum BXPT_Playback_Int
299{
300    BXPT_PbInt_eDone = BCHP_XPT_PB0_INTR_DONE_INT_SHIFT,
301    BXPT_PbInt_eTsRangeErr = BCHP_XPT_PB0_INTR_TS_RANGE_ERROR_SHIFT,
302    BXPT_PbInt_eOutOfSync = BCHP_XPT_PB0_INTR_SE_OUT_OF_SYNC_INT_SHIFT
303}
304BXPT_Playback_Int;
305
306
307/***************************************************************************
308Summary:
309Configuration for the PES stream packetizer inside the playback channel.
310****************************************************************************/
311typedef enum
312{
313    BXPT_Playback_PacketizerMode_Es,               /* ES, playback data */
314    BXPT_Playback_PacketizerMode_Pes_MapAll,       /* PES,map all the stream IDs to this context */
315    BXPT_Playback_PacketizerMode_Pes_Sid,          /* PES,map streams based on single stream ID */
316    BXPT_Playback_PacketizerMode_Pes_SidRange,     /* PES,map streams based on stream ID range */ 
317    BXPT_Playback_PacketizerMode_Pes_SidExtension, /* PES,map streams based on stream ID and stream ID extension */ 
318    BXPT_Playback_PacketizerMode_Pes_SidSubSid     /* PES,maps streams based on stream ID and stream sun stream ID */
319
320}BXPT_Playback_PacketizerMode;
321
322typedef struct BXPT_Playback_PacketizeConfig
323{
324    unsigned Pid;           /* PID value inserted into MPED header during packetization. */
325    unsigned ChannelNum;    /* PID channel number the packets will be mapped to. */
326
327    BXPT_Playback_PacketizerMode PacketizerMode;
328    union                           
329    {
330        unsigned char StreamId;
331        struct
332        {
333            unsigned char Hi;
334            unsigned char Lo;
335        }StreamIdRange;
336
337        struct
338        {
339            unsigned char Id;
340            unsigned char Extension;
341        }StreamIdAndExtension;
342
343        struct
344        {
345            unsigned char Id;
346            unsigned char SubStreamId;
347        }StreamIdAndSubStreamId;
348    }FilterConfig;                              /* program the filter values based on the PacketizerMode */
349
350}
351BXPT_Playback_PacketizeConfig;
352
353/***************************************************************************
354Summary:
355Settings for a playback parser band. The playback parsers have certain
356functions that are not available to the input band parsers.
357****************************************************************************/
358typedef struct BXPT_Playback_ParserConfig
359{
360    bool ErrorInputIgnore;      /* PID parser ignores the error input signal and TEI bit */
361    bool ForceRestamping;       /* Force new timestamps onto packets */
362   
363    /*
364    ** Map all PIDs in the playback stream to PID channel X, where X is
365    ** 16 + the playback channel number. For example, if the parser for
366    ** playback 1 is put into all pass, the PIDs are mapped to channel 17 (16 + 1 ).
367    */
368    bool AllPass;               
369
370    bool AcceptNulls;       /* NULL packets are not discarded if true */
371    bool AcceptAdapt00;     /* Packets with an adaptation field of 00 are accepted if true */
372
373    /*
374    ** true if timebase is locked to a DPCR module. false if the free running
375    ** 27 MHz clock is to be used. WhichPcrToUse specifies the DPCR module to
376    ** use. Note that a DPCR module can be driven by sources other than PCRs in the
377    ** stream: it can lock to 656 input, I2S, or even be controlled directly by the
378    ** host MIPS writing to the certain registers. To other modules in the chip, the
379    ** output of the DPCR is just a timebase, a 27 MHz clock. Better names should have
380    ** been chosen for these two members.
381    */
382    bool UsePcrTimeBase;   
383    unsigned int WhichPcrToUse; /* Which DPCR module, if UsePcrTimeBase == true */
384}
385BXPT_Playback_ParserConfig;
386
387typedef enum BXPT_Playback_PS_Mode
388{
389    BXPT_Playback_PS_Mode_MPEG2 = 0,
390    BXPT_Playback_PS_Mode_MPEG1 = 1
391}
392BXPT_Playback_PS_Mode;
393
394typedef enum BXPT_Playback_PackHdr_Config
395{
396    BXPT_Playback_PackHdr_Payload_Insert = 0,  /* pack header is inserted in separate
397                                                  packets payload field and packets is mapped
398                                                  to the pid */
399    BXPT_Playback_PackHdr_Adaptation_Insert,   /* not supported on all the chips */
400    BXPT_Playback_PackHdr_Drop
401}
402BXPT_Playback_PackHdr_Config;
403
404/***************************************************************************
405Summary:
406Settings for the Playback channels. These values can be passed in when the
407channel is opened, and will be used as the new default settings.
408****************************************************************************/
409typedef struct BXPT_Playback_ChannelSettings
410{
411    /*
412    ** Length of the transport packet. NOTE: When doing an ES or PES playback
413    ** the PacketLength must be set to 0xB8.
414    */
415    unsigned int PacketLength; 
416
417    /*
418    ** Packet sync mode to be used during playback. This value must be one
419    ** of the BXPT_PB_SYNC_* defines (above). Behavior is undefined otherwise.
420    ** NOTE: When doing an ES,MPEG TS playback,use BXPT_PB_SYNC_MPEG_BLIND,
421      and for PES,PS playback SyncMode must be BXPT_PB_SYNC_PES
422    */
423    unsigned int SyncMode;
424
425    /*
426    ** true if timebase is locked to a PCR module. false if the free running
427    ** 27 MHz clock is to be used. WhichPcrToUse specifies the PCR block to
428    ** lock to.
429    */
430    bool UsePcrTimeBase;   
431    unsigned int WhichPcrToUse; /* Which PCR module, if UsePcrTimeBase == true */
432
433    bool TimestampEn;                   /* Prepend timestamps to each packet */
434    BXPT_TimestampMode TimestampMode;   /* If enabled, this is the type of timestamps to prepend. */
435
436    /* Disable parity checking for pacing timestamps. Normally set to false (ie. do parity checking) */
437    bool DisableTimestampParityCheck;
438
439    /*
440    ** Enables the playback pacing and packetizer modules to use 32 bit timestamps instead of 28 bits.
441    ** The 4 bit parity checksum or 2 bit user field parsing gets disabled if this bit is set.
442    */
443    bool Use32BitTimestamps;   
444
445    /*
446    ** The playback channels read data in 4-byte chunks. Within that chunk,
447    ** data can be arranged in two formats (demonstrated here using the
448    ** 4 byte transport header) :
449    ** 1) Big endian - sync byte, upper PID byte, lower PID byte, CC/SC byte in that order
450    ** 2) Little endian - CC/SC byte, lower PID byte, upper PID byte, sync byte in that order
451    */
452    bool SwapBytes;
453   
454    /* Select between MPEG1/MPEG2 Program stream modes */
455    BXPT_Playback_PS_Mode PsMode;
456
457    /* For Program Streams,the 14 byte pack header can be placed in TS or dropped all together.
458       The adaptation field,can be optionally placed in the adaptation field of the TS packet. */ 
459    BXPT_Playback_PackHdr_Config PackHdrConfig; 
460   
461    /* Set this TRUE if you need to reset the PACING_START bit when TS_RANGE_ERROR interrupt ocures*/
462    bool ResetPacing;
463
464    /*
465    ** Route playback data directly to the RAVE, bypassing the XC buffer. Note that the data
466    ** will go only to the RAVE; message buffer and remux capability will be lost. By default,
467    ** this is false.
468    */
469    bool RaveOutputOnly;
470
471    /*
472    ** Select PCR-based pacing. PCRs in the stream will be used, rather than the 4-byte timestamps
473    ** prepending during recording. Note that the 4-byte timestamps aren't needed for PCR-based
474    ** pacing. 
475    */
476    bool PcrBasedPacing;                /* true if PCR-based pacing is requested, false to use legacy 4-byte timestamps */
477    uint16_t PcrPacingPid;              /* which PID in the stream carries the PCRs */
478
479    bool PacingOffsetAdjustDisable; /* 0 = Normal: adjust the pacing timestamps with the reference offset
480                                       1 = Do not adjust the pacing timestamps with the reference offset */
481
482    /*
483    ** This code enforces the workaround for PR 51821. When using this workaround, applications must either
484    ** use bpvrlib_feed.c version 23 (or later), or change their descriptor management code to match. It is
485    ** NOT backward compatible.
486    */
487
488#if BXPT_HAS_TSMUX
489        /* Support for transport stream muxing, needed for the transcoding feature in some chips. */           
490
491        /*
492        ** Pacing is done using timestamps stored in the playback descriptor. Use the NextPacketPacingTimestamp
493        ** member of the BXPT_PvrDescriptor8 struct. Use8WordDesc (below) must be true to use this feature.
494        **
495        ** NOTE: PesBasedPacing and PcrBasedPacing (above) are mutually exclusive. If both bools are true,
496        ** PES pacing will be used.
497        */
498        bool PesBasedPacing;   
499
500        /* If true, hw will expect all descriptors to use the 8-word format. Value is false by default */
501        bool Use8WordDesc;             
502#endif 
503}
504BXPT_Playback_ChannelSettings;
505
506/***************************************************************************
507Summary:
508Status bits for the playback channel.
509****************************************************************************/
510typedef struct BXPT_Playback_ChannelStatus
511{
512    bool OutOfSync;     /* true if channel is out of sync */
513    bool Finished;      /* true if channel has processed last descriptor in the chain. */
514    bool Busy;          /* true if channel is active. */
515    bool Run;           /* true if a playback session has been started. */
516}
517BXPT_Playback_ChannelStatus;
518
519/***************************************************************************
520Summary:
521Layout of a PVR descriptor. The order of the members matches the order the
522hardware will expect them in when the descriptor is read from memory. Thus,
523the descriptor's contents can be accessed by creating a pointer to this type
524of struct and setting that pointer to the address of the real descriptor
525in memory (after being memory mapped, of course).
526****************************************************************************/
527typedef struct BXPT_PvrDescriptor
528{
529    uint32_t    BufferStartAddr;    /* (Pointer to) the buffer associated with this descriptor. */
530    uint32_t    BufferLength;       /* Length (in bytes) of the buffer. */
531    uint32_t    Flags;              /* Channel-specific flags. */
532    uint32_t    NextDescAddr;       /* (Pointer to) the next descriptor in the chain. */
533} 
534BXPT_PvrDescriptor;
535
536#if BXPT_HAS_TSMUX
537
538/***************************************************************************
539Summary:
540Layout of a 8 word PVR descriptor. The first 4 words are identical to the
541legacy 4-word layout. The additional words are fields for TS mux
542generation.
543****************************************************************************/
544typedef struct BXPT_PvrDescriptor8
545{
546        BXPT_PvrDescriptor Desc;
547
548    /* Support for TS muxing via playback hardware. Use BXPT_Tsmux_CreateDesc to set these extended fields.*/
549    uint32_t    Reserved0;
550    uint32_t    MuxingFlags;             /* Random Access Indicator, Next Packet Pacing Timestamp Valid, and Pkt2Pkt Timestamp valid. */
551    uint32_t    NextPacketPacingTimestamp; 
552    uint32_t    Pkt2PktPacingTimestampDelta;
553} 
554BXPT_PvrDescriptor8;
555
556#endif  /* BXPT_HAS_TSMUX */
557
558#ifdef ENABLE_PLAYBACK_MUX
559typedef struct BXPT_Playback_ChannelPacketSettings
560{
561    /*
562    ** Length of the transport packet. NOTE: When doing an ES or PES playback
563    ** the PacketLength must be set to 0xB8.
564    */
565    unsigned int PacketLength; 
566
567    /*
568    ** Packet sync mode to be used during playback. This value must be one
569    ** of the BXPT_PB_SYNC_* defines (above). Behavior is undefined otherwise.
570    ** NOTE: When doing an ES,MPEG TS playback,use BXPT_PB_SYNC_MPEG_BLIND,
571      and for PES,PS playback SyncMode must be BXPT_PB_SYNC_PES
572    */
573    unsigned int SyncMode;
574
575        /* Prepend timestamps to each packet */
576    bool TimestampEn;
577
578    /* Disable parity checking for pacing timestamps. Normally set to false (ie. do parity checking) */
579    bool DisableTimestampParityCheck;
580}
581BXPT_Playback_ChannelPacketSettings;
582#endif /* ENABLE_PLAYBACK_MUX */
583
584/***************************************************************************
585Summary:
586Return the number of playback channels.
587
588Description:
589For the given transport core, return the number of playback channels that is
590supported.
591
592Returns:
593    BERR_SUCCESS                - Retrieved address from hardware.
594    BERR_INVALID_PARAMETER      - Bad input parameter
595****************************************************************************/
596BERR_Code BXPT_Playback_GetTotalChannels(
597    BXPT_Handle hXpt,           /* [in] Handle for this transport */
598    unsigned int *TotalChannels     /* [out] The number of playback channels. */
599    ); 
600
601/***************************************************************************
602Summary:
603Return the playback channel default settings.
604
605Description:
606Each playback channel has a set of default configuration values. This
607function retrieves these values and places them in a structure that can be
608used to change the defaults when the playback channel is opened.
609
610Returns:
611    BERR_SUCCESS                - Retrieved playback defaults.
612    BERR_INVALID_PARAMETER      - Bad input parameter
613****************************************************************************/
614BERR_Code BXPT_Playback_GetChannelDefaultSettings(
615    BXPT_Handle hXpt,           /* [in] Handle for this transport */
616    unsigned int ChannelNo,         /* [in] Which channel to get defaults from. */
617    BXPT_Playback_ChannelSettings *ChannelSettings /* [out] The defaults */
618    ); 
619
620/***************************************************************************
621Summary:
622Open a given playback channel.
623
624Description:
625Reset the given playback channel, configure it using the given defaults, then
626return a handle to access that channel.
627
628Returns:
629    BERR_SUCCESS                - Playback channel opened.
630    BERR_INVALID_PARAMETER      - Bad input parameter
631****************************************************************************/
632BERR_Code BXPT_Playback_OpenChannel(
633    BXPT_Handle hXpt,                           /* [in] Handle for this transport */
634    BXPT_Playback_Handle *PlaybackHandle,   /* [out] Handle for opened record channel */
635    unsigned int ChannelNo,                         /* [in] Which channel to open. */
636    BXPT_Playback_ChannelSettings *ChannelSettings /* [in] The defaults to use */
637    ); 
638
639/***************************************************************************
640Summary:
641Close a given playback channel.
642
643Description:
644Shutdown a given playback channel, disable any interrupts from it.
645
646Returns:
647    void
648****************************************************************************/
649void BXPT_Playback_CloseChannel(
650    BXPT_Playback_Handle PlaybackHandle /* [in] Handle for the channel to close*/
651    ); 
652
653/***************************************************************************
654Summary:
655Write out the given channel settings to the playback core.
656
657Description:
658The given channel settings are loaded into the playback core. If the
659'WhichPcrToUse' fields is out of range, the default 27MHz internal clock will
660be used.
661
662Returns:
663    BERR_SUCCESS                - New settings are now in effect.
664    BERR_INVALID_PARAMETER      - Bad input parameter
665****************************************************************************/
666BERR_Code BXPT_Playback_SetChannelSettings(
667    BXPT_Playback_Handle hPb,       /* [in] Handle for the playback channel. */
668    const BXPT_Playback_ChannelSettings *ChannelSettings /* [in] New settings to use */
669    );
670
671/***************************************************************************
672Summary:
673Get the current channel settings.
674
675Description:
676The current channel settings are read from the playback core and returned in
677the ChannelSettings structure.
678
679Returns:
680    BERR_SUCCESS                - Retrieved settings from hardware.
681    BERR_INVALID_PARAMETER      - Bad input parameter
682****************************************************************************/
683BERR_Code BXPT_Playback_GetChannelSettings(
684    BXPT_Playback_Handle hPb,       /* [in] Handle for the playback channel. */
685    BXPT_Playback_ChannelSettings *ChannelSettings /* [out] The current settings  */
686    );
687
688#ifdef ENABLE_PLAYBACK_MUX
689/***************************************************************************
690Summary:
691Set the current channel packet settings.
692
693Description:
694The specified playback's packet length and sync type are updated by the
695provided values.
696
697Returns:
698    BERR_SUCCESS                - Retrieved settings from hardware.
699    BERR_INVALID_PARAMETER      - Bad input parameter
700****************************************************************************/
701BERR_Code BXPT_Playback_SetChannelPacketSettings(
702        BXPT_Playback_Handle hPb,                                                                  /* [in] Handle for the playback channel. */
703    const BXPT_Playback_ChannelPacketSettings *ChannelSettings /* [in] New settings to use */
704        );
705#endif /*ENABLE_PLAYBACK_MUX*/
706     
707/***************************************************************************
708Summary:
709Get the current channel status.
710
711Description:
712Retrieve the current status bits for the given channel. Values are returned
713through the structure pointer passed in.
714
715Returns:
716    BERR_SUCCESS                - Retrieved status bits from hardware.
717    BERR_INVALID_PARAMETER      - Bad input parameter
718****************************************************************************/
719BERR_Code BXPT_Playback_GetChannelStatus(
720    BXPT_Playback_Handle hPb,           /* [in] Handle for the playback channel. */
721    BXPT_Playback_ChannelStatus *Status /* [out] Channel status. */
722    );
723     
724/***************************************************************************
725Summary:
726Return the address of the next byte to written in a Record descriptor buffer.
727
728Description:
729For a given Playback channel, get the address of the next data access to the
730currently used buffer. The access is the next 32 word that will be read.
731
732Returns:
733    BERR_SUCCESS                - Retrieved address from hardware.
734    BERR_INVALID_PARAMETER      - Bad input parameter
735****************************************************************************/
736BERR_Code BXPT_Playback_GetCurrentBufferAddress(
737    BXPT_Playback_Handle PlaybackHandle,    /* [in] Handle for the playback channel */
738    uint32_t *Address                       /* [out] The address read from hardware. */
739    ); 
740
741/***************************************************************************
742Summary:
743Return the address of the current playback descriptor.
744
745Description:
746For a given Playback channel, get the address of the descriptor that is
747currently being used.
748
749Returns:
750    BERR_SUCCESS                - Retrieved address from hardware.
751    BERR_INVALID_PARAMETER      - Bad input parameter
752****************************************************************************/
753BERR_Code BXPT_Playback_GetCurrentDescriptorAddress(
754    BXPT_Playback_Handle PlaybackHandle,    /* [in] Handle for the playback channel */
755    BXPT_PvrDescriptor **LastDesc       /* [in] Address of the current descriptor. */
756    );
757
758/***************************************************************************
759Summary:
760Create a playback linked-list descriptor.
761
762Description:
763Initialize the contents of a playback descriptor. The caller passes in the
764starting address of the buffer that the descriptor will point to, along with
765the length of that buffer. 
766
767The caller specifies if an interrupt should be generated when the
768hardware has finished processing the contents of the descriptor's
769buffer. The caller also specifies if the sync extraction engine should
770enter the re-sync state before processing the contents of the buffer.
771
772The memory for the descriptor must be allocated by the caller, and must
773start on a 16-byte boundary.
774
775Since descriptors are usually used in chains, the function allows the
776descriptor's NextDescAddr to be initialized along with the rest of the
777fields. This next descriptor does not have to be initialized itself. The
778address must meet the 16-byte boundary requirement.
779
780Returns:
781    BERR_SUCCESS                - Descriptor initialized successfully.
782    BERR_INVALID_PARAMETER      - Bad input parameter
783****************************************************************************/
784BERR_Code BXPT_Playback_CreateDesc( 
785    BXPT_Handle hXpt,                       /* [in] Handle for this transport */
786    BXPT_PvrDescriptor * const Desc,        /* [in] Descriptor to initialize */ 
787    uint8_t *Buffer,                        /* [in] Data buffer. */
788    uint32_t BufferLength,                  /* [in] Size of buffer (in bytes). */
789    bool IntEnable,                         /* [in] Interrupt when done? */
790    bool ReSync,                            /* [in] Re-sync extractor engine? */
791    BXPT_PvrDescriptor * const NextDesc     /* [in] Next descriptor, or NULL */
792    );
793
794#ifdef ENABLE_PLAYBACK_MUX
795/***************************************************************************
796Summary:
797Update a playback linked-list descriptor's buffer information.
798
799Description:
800Updates the buffer information of a playback descriptor. The caller passes in the
801starting address of the buffer that the descriptor will point to, along with
802the length of that buffer. 
803
804Returns:
805    Nothing.
806****************************************************************************/
807void BXPT_Playback_SetDescBuf( 
808        BXPT_Handle hXpt,                                               /* [in] Handle for this transport */
809        BXPT_PvrDescriptor * const Desc,                /* [in] Descriptor to initialize */ 
810        uint8_t *Buffer,                                                /* [in] Data buffer. */
811        uint32_t BufferLength                                   /* [in] Size of buffer (in bytes). */
812        );
813#endif /*ENABLE_PLAYBACK_MUX*/
814
815/***************************************************************************
816Summary:
817Mark the descriptor as the last one on a linked list.
818
819Description:
820For the given descriptor, set the flag to indicate that this is the last
821descriptor on a linked-list chain. This function can be used with 4 supported
822types of descriptors: playback, record, startcode detect, and packet sub.
823
824Returns:
825    void
826****************************************************************************/
827void BXPT_SetLastDescriptorFlag(
828    BXPT_PvrDescriptor * const Desc     /* [in] Descriptor to initialize */ 
829    );
830
831/***************************************************************************
832Summary:
833Add a descriptor to a playback linked-list.
834
835Description:
836Add a descriptor chain to an existing (but possibly empty) chain used by a
837playback channel. If the existing chain is empty, the chain being added simply
838becomes the current chain.
839
840The FirstDesc argument is a pointer to the descriptor at the start of the
841chain being added. The LastDesc argument passed in is a pointer to the end
842of that chain (or NULL if this is the only descriptor being added).
843
844Returns:
845    BERR_SUCCESS                - Descriptor added successfully.
846    BERR_INVALID_PARAMETER      - Bad input parameter
847****************************************************************************/
848BERR_Code BXPT_Playback_AddDescriptors( 
849    BXPT_Playback_Handle PlaybackHandle,    /* [in] Handle for the playback channel */
850    BXPT_PvrDescriptor *LastDesc,   /* [in] Last descriptor in new chain */
851    BXPT_PvrDescriptor *FirstDesc   /* [in] First descriptor in new chain */
852    );
853
854/***************************************************************************
855Summary:
856Start a playback channel.
857
858Description:
859Enable playback channel processing. If no buffers have been added to the
860playback channel, the hardware is not actually started until the first buffer
861is added.
862
863The PID parser associated with this playback channel will be enabled
864automatically by this call.
865
866Note: the caller should install an interrupt handler prior to calling this
867function. That handler will be called when a descriptor's data has been
868processed if the IntEnable bit in the descriptor was set.
869
870Returns:
871    BERR_SUCCESS                        - Playback channel started successfully.
872    BERR_INVALID_PARAMETER              - Bad input parameter
873    BXPT_ERR_CHANNEL_ALREADY_RUNNING    - Channel already running.
874****************************************************************************/
875BERR_Code BXPT_Playback_StartChannel( 
876    BXPT_Playback_Handle PlaybackHandle /* [in] Handle for the playback channel */
877    );
878
879/***************************************************************************
880Summary:
881Stop a playback channel.
882
883Description:
884Stops a playback channel. The interrupts for the given channel are disabled.
885
886Returns:
887    BERR_SUCCESS                        - Playback channel stopped successfully.
888    BERR_INVALID_PARAMETER              - Bad input parameter
889    BXPT_ERR_CHANNEL_ALREADY_STOPPED    - Channel already stopped.
890****************************************************************************/
891BERR_Code BXPT_Playback_StopChannel( 
892    BXPT_Playback_Handle PlaybackHandle     /* [in] Handle for the playback channel */
893    );
894
895/***************************************************************************
896Summary:
897Pause a playback channel.
898
899Description:                                                         
900Assert the software (or CPU) pauses to a playback channel. The playback
901engine will stop when this function is called. Playback can be resumed by
902calling BXPT_Playback_Resume().
903
904Returns:
905    BERR_SUCCESS                - Playback channel paused successfully.
906    BERR_INVALID_PARAMETER      - Bad input parameter
907
908See Also:
909BXPT_Playback_Resume
910****************************************************************************/
911BERR_Code BXPT_Playback_Pause( 
912    BXPT_Playback_Handle PlaybackHandle     /* [in] Handle for the playback channel */
913    );
914
915/***************************************************************************
916Summary:
917Resume a playback session.
918
919Description:                                                         
920Resume, or un-pause, a playback channel. If the channel was not paused by
921a call to BXPT_Playback_Pause(), this function will have no effect.
922
923Returns:
924    BERR_SUCCESS                - Playback channel resumed successfully.
925    BERR_INVALID_PARAMETER      - Bad input parameter
926
927See Also:
928BXPT_Playback_Pause
929****************************************************************************/
930BERR_Code BXPT_Playback_Resume( 
931    BXPT_Playback_Handle PlaybackHandle     /* [in] Handle for the playback channel */
932    );
933
934/***************************************************************************
935Summary:
936Set the bitrate for a playback channel.
937
938Description:
939Set the playback rate for a given channel. This is the maximum rate the data
940will be played back at. The actual rate may be lower if the channel is
941restrained by the pause signals or by the pacing logic. Any rate up to 81
942Mbps is supported.
943
944The caller must specify the rate in bytes/sec. For example, to set a rate
945of 27 Mbps, the BitRate argument must be 27000000 .
946
947Returns:
948    BERR_SUCCESS                - Playback bitrate set.
949    BERR_INVALID_PARAMETER      - Bad input parameter
950****************************************************************************/
951BERR_Code BXPT_Playback_SetBitRate( 
952    BXPT_Playback_Handle PlaybackHandle,    /* [in] Handle for the playback channel */
953    uint32_t BitRate                        /* [in] Rate, in bits per second. */
954    );
955
956/***************************************************************************
957Summary:
958Determine if this descriptor is on the head of a playback linked list.
959
960Description:
961Determine if the current descriptor being processed by the record channel is
962the first on the channel's chain (which means this descriptor is still being
963used). If the playback channel is still 'busy', the size of the
964descriptor's buffer is also returned.
965
966Returns:
967    BERR_SUCCESS                - Record channel flushed successfully.
968    BERR_INVALID_PARAMETER      - Bad input parameter
969****************************************************************************/
970BERR_Code BXPT_Playback_CheckHeadDescriptor( 
971    BXPT_Playback_Handle PlaybackHandle,    /* [in] Handle for the playback channel */
972    BXPT_PvrDescriptor *Desc,       /* [in] Descriptor to check. */
973    bool *InUse,                    /* [out] Is descriptor in use? */
974    uint32_t *BufferSize            /* [out] Size of the buffer (in bytes). */
975    );
976
977/***************************************************************************
978Summary:
979Return the user bits of the last timestamp seen by the playback engine.
980
981Description:
982In some configurations, the upper 2 bits of the packet's recorded timestamp
983may be user-programmable. This function will return the upper 2 bits of the
984last timestamp seen by the playback engine, shifted down to align with bit
9850. 
986
987Returns:
988    BERR_SUCCESS                - Retrieved address from hardware.
989    BERR_INVALID_PARAMETER      - Bad input parameter
990****************************************************************************/
991BERR_Code BXPT_Playback_GetTimestampUserBits(
992    BXPT_Playback_Handle PlaybackHandle,    /* [in] Handle for the playback channel */
993    unsigned int *Bits                          /* [out] The user bits read from hardware. */
994    ); 
995
996/***************************************************************************
997Summary:
998Controls pacing in the playback channel.
999
1000Description:
1001Start, or stop, pacing in the given playback channel. When started, the pacing
1002logic will capture the next playback timestamp and use it to control the
1003playback rate. When stopped, pacing will no longer regulate the playback rate.
1004
1005Returns:
1006    BERR_SUCCESS                - New pacing mode has been set.
1007    BERR_INVALID_PARAMETER      - Bad input parameter
1008****************************************************************************/
1009BERR_Code BXPT_Playback_ConfigPacing(
1010    BXPT_Playback_Handle PlaybackHandle,    /* [in] Handle for the playback channel */
1011    BXPT_PacingControl Mode                 /* [in] New mode for pacing. */
1012    );
1013
1014/***************************************************************************
1015Summary:
1016Set the maximum allowable timestamp error used during playback pacing.
1017   
1018Description:
1019The pacing logic checks the delta between successive packets, and will
1020immediately release a packet that is either too early or too late. This
1021functions sets the maximum delta used in the comparison.
1022
1023When Mod-300 timestamps are used, MaxTsError is expressed in 90kHz ticks.
1024For binary timestamps, MaxTsError is 52734 Hz ticks (or 27MHz/512).
1025
1026Note that the value set here will be used only by the playback channel
1027associated with the handle. This is different behavior from previous
1028chips, where the same error bound was used by all channels.
1029
1030Returns:
1031    BERR_SUCCESS                - New error bound is set.
1032    BERR_INVALID_PARAMETER      - Bad input parameter
1033****************************************************************************/
1034BERR_Code BXPT_Playback_SetPacingErrorBound(
1035    BXPT_Playback_Handle hPb,       /* [in] Handle for the playback channel */
1036    unsigned long MaxTsError        /* [in] Maximum timestamp error. */
1037    );
1038
1039/***************************************************************************
1040Summary:
1041Get default settings for the packetizer struct.
1042   
1043Description:
1044Get default settings for the packetizer struct.
1045
1046Returns:
1047        void
1048****************************************************************************/
1049void BXPT_Playback_GetPacketizerDefaults(
1050    const BXPT_Playback_PacketizeConfig *Cfg   /* [in] Config to initialize */
1051    );
1052
1053/***************************************************************************
1054Summary:
1055Configure PES to MPEG packetization.
1056   
1057Description:
1058This function allows the playback PES data to be packetized and mapped to
1059one of several contexts, for use by the RAVE engine. The data can be packetized
1060into MPEG packets. The PID, channel number, and stream ID that is packetized
1061are all programmable through this call.
1062 
1063If this function is not called, or is called with Enable == false, packetizing
1064will not be done. PES data will be mapped as-is to context 0.
1065
1066Returns:
1067    BERR_SUCCESS                - New error bound is set.
1068    BERR_INVALID_PARAMETER      - Bad input parameter
1069****************************************************************************/
1070BERR_Code BXPT_Playback_PacketizeStream(
1071    BXPT_Playback_Handle hPb,                   /* [in] Handle for the playback channel */
1072    unsigned Context,                           /* [in] Which context to map the packets to. */
1073    const BXPT_Playback_PacketizeConfig *Cfg,   /* [in] Configuration for this context */
1074    bool Enable                                 /* [in] Start or stop packetization. */
1075    );
1076
1077/***************************************************************************
1078Summary:
1079Retrieves the current playback parser configuration.
1080
1081Description:
1082Read the current settings for the given playback parser band from the chip.
1083Settings are returned in the structure that is passed in. See the structure
1084for the complete list of supported settings.
1085
1086Returns:
1087    BERR_SUCCESS                - Copied the parser config.
1088    BERR_INVALID_PARAMETER      - Bad input parameter
1089 
1090See Also:
1091BXPT_Playback_SetParserConfig
1092****************************************************************************/
1093BERR_Code BXPT_Playback_GetParserConfig(
1094    BXPT_Playback_Handle hPb,                   /* [in] Handle for the playback channel */
1095    BXPT_Playback_ParserConfig *ParserConfig    /* [out] The current settings */
1096    );
1097
1098/***************************************************************************
1099Summary:
1100Sets the current parser band configuration.
1101
1102Description:
1103Writes the given parser band configuration to the device. The caller supplies
1104a structure containing the new parser band settings. The new settings take
1105effect as soon as the function returns.
1106
1107Returns:
1108    BERR_SUCCESS                - Transfered the parser config to the chip.
1109    BERR_INVALID_PARAMETER      - Bad input parameter
1110 
1111See Also:
1112BXPT_Playback_GetParserConfig
1113****************************************************************************/
1114BERR_Code BXPT_Playback_SetParserConfig(
1115    BXPT_Playback_Handle hPb,                   /* [in] Handle for the playback channel */
1116    const BXPT_Playback_ParserConfig *ParserConfig  /* [in] The new settings */
1117    );
1118
1119/***************************************************************************
1120Summary:
1121Disables all packetizers.
1122
1123Description:
1124Stops all stream packetizers associated with the given playback channel.
1125This is the equivilent of calling BXPT_Playback_PacketizeStream() with
1126the Enable argument equal to 'false' for each packetizer.
1127
1128Returns:
1129    BERR_SUCCESS                - Packetizers disabled.
1130    BERR_INVALID_PARAMETER      - Bad input parameter
1131 
1132See Also:
1133BXPT_Playback_PacketizeStream
1134****************************************************************************/
1135BERR_Code BXPT_Playback_DisablePacketizers(
1136    BXPT_Playback_Handle hPb                    /* [in] Handle for the playback channel */
1137    );
1138
1139/***************************************************************************
1140Summary:
1141Return the interrupt ID for a given playback interrupt.
1142
1143Description:
1144In some cases, the RDB macros used to define a playback interrupt are cumbersome
1145to use. This API allows a more general abstraction: given a playback channel
1146handle and an enum for a generic PB interrupt, the channel-specific BINT_Id
1147is returned.
1148
1149Returns:
1150    BINT_Id - Interrupt ID for the given playback channel.
1151****************************************************************************/
1152BINT_Id BXPT_Playback_GetIntId(
1153    BXPT_Playback_Handle hPb,                   /* [in] Handle for the playback channel */
1154    BXPT_Playback_Int PbInt
1155    );     
1156
1157#if BXPT_HAS_TSMUX
1158
1159/***************************************************************************
1160Summary:
1161Settings for a playback parser band. The playback parsers have certain
1162functions that are not available to the input band parsers.
1163****************************************************************************/
1164typedef struct BXPT_Playback_MuxingInfo
1165{
1166        unsigned uiPacingCounter;   
1167}
1168BXPT_Playback_MuxingInfo;
1169
1170/***************************************************************************
1171Summary:
1172Return transport muxing status.
1173
1174Description:
1175Some additional status fields are available on chips that support the TS
1176muxing function.
1177
1178Returns:
1179        void
1180****************************************************************************/
1181void BXPT_Playback_GetMuxingInfo(
1182    BXPT_Playback_Handle hPb,                   /* [in] Handle for the playback channel */
1183    BXPT_Playback_MuxingInfo *Info
1184    );     
1185
1186/***************************************************************************
1187Summary:
1188Set the pacing speed multiplier.
1189 
1190Description:
1191The pacing counters can be incremented by using the steps defined by this API
1192on every timebase toggle. The steps are: 1x, 2x, 4x, 8x, 16x, 32x, 64x,
1193and 128x. The 'Speed' argument below is the multiplier from the steps given
1194above.
1195 
1196Returns:
1197    BERR_SUCCESS                - Packetizers disabled.
1198    BERR_INVALID_PARAMETER      - Bad input parameter
1199****************************************************************************/
1200BERR_Code BXPT_Playback_P_SetPacingSpeed( 
1201    BXPT_Playback_Handle hPb,                   /* [in] Handle for the playback channel */
1202    unsigned Speed
1203    );
1204
1205/***************************************************************************
1206Summary:
1207Set the pacing count value.
1208 
1209Description:
1210Give the pacing logic an initial value. This will force the value to be
1211loaded by each of the playback channels referenced by the same TsMux object.
1212 
1213Returns:
1214    void
1215****************************************************************************/
1216void BXPT_Playback_P_SetPacingCount(
1217    BXPT_Playback_Handle hPb,                   /* [in] Handle for the playback channel */
1218    unsigned PacingLoadMap,
1219    unsigned PacingCount
1220    );
1221
1222#endif
1223
1224
1225/*
1226** These functions are called internally.
1227** Users should NOT uses these functions directly.
1228*/
1229
1230uint32_t BXPT_Playback_P_ReadReg( BXPT_Playback_Handle PlaybackHandle, uint32_t Pb0RegAddr );
1231void BXPT_Playback_P_WriteReg( BXPT_Playback_Handle PlaybackHandle, uint32_t Pb0RegAddr, uint32_t RegVal );
1232
1233#ifdef __cplusplus
1234}
1235#endif
1236
1237#endif /* #ifndef BXPT_PLAYBACK_H__ */
1238
1239/* end of file */
1240
1241
Note: See TracBrowser for help on using the repository browser.