#ifndef __MPLEXCONSTS_H__
#define __MPLEXCONSTS_H__


#define SEQUENCE_HEADER 	0x000001b3
#define SEQUENCE_END		0x000001b7
#define PICTURE_START		0x00000100
#define EXT_START_CODE 0x000001b5
#define GROUP_START		0x000001b8
#define SYNCWORD_START		0x000001

#define ZA_SEQUENCE_HEADER      0x000001f8

#define IFRAME                  1
#define PFRAME                  2
#define BFRAME                  3
#define DFRAME                  4
#define NOFRAME                 5

#define PIC_TOP_FIELD 1
#define PIC_BOT_FIELD 2
#define PIC_FRAME 3

#define CODING_EXT_ID       8
#define AUDIO_SYNCWORD		0x7ff


#define PACK_START		0x000001ba
#define SYS_HEADER_START	0x000001bb
#define ISO11172_END		0x000001b9
#define PACKET_START		0x000001

#define MAX_FFFFFFFF		4294967295.0 	/* = 0xffffffff in dec.	*/

#define CLOCKS_per_90Kth_sec 300

#define CLOCKS			(CLOCKS_per_90Kth_sec*90000)	
/* MPEG-2 System Clock Hertz - we divide down by 300.0 for MPEG-1*/

/* Range of sizes of the fields following the packet length field in packet header:
	used to calculate if recieve buffers will have enough space... */

#define MPEG2_BUFFERINFO_LENGTH 3
#define MPEG1_BUFFERINFO_LENGTH 2
#define DTS_PTS_TIMESTAMP_LENGTH 5
#define MPEG2_AFTER_PACKET_LENGTH_MIN    3
#define MPEG1_AFTER_PACKET_LENGTH_MIN    (0+1)

	/* Sector under-size below which header stuffing rather than padding packets
		or post-packet zero stuffing is used.  *Must* be less than 20 for VCD
		multiplexing to work correctly!
	 */
	 
#define MINIMUM_PADDING_PACKET_SIZE 10

#define PACKET_HEADER_SIZE	6

#define AUDIO_STREAMS		0xb8		/* Marker Audio Streams	*/
#define VIDEO_STREAMS		0xb9		/* Marker Video Streams	*/
#define AUDIO_STR_0		0xc0		/* Marker Audio Stream0	*/
#define VIDEO_STR_0		0xe0		/* Marker Video Stream0	*/
#define PADDING_STR		0xbe		/* Marker Padding Stream*/
#define PRIVATE_STR_1   0xbd            /* private stream 1 */
#define PRIVATE_STR_2   0xbf            /* private stream 2 */
#define AC3_SUB_STR_0   0x80            /* AC3 substream id 0 */
#define DTS_SUB_STR_0   0x88            /* DTS substream id 0 */

#define LPCM_SUB_STR_0  0xa0	        /* LPCM substream id 0 */

#define ZERO_STUFFING_BYTE	0
#define STUFFING_BYTE		0xff
#define RESERVED_BYTE		0xff
#define TIMESTAMPBITS_NO		0		/* Flag NO timestamps	*/
#define TIMESTAMPBITS_PTS		2		/* Flag PTS timestamp	*/
#define TIMESTAMPBITS_DTS		1		/* Flag PTS timestamp	*/
#define TIMESTAMPBITS_PTS_DTS	(TIMESTAMPBITS_DTS|TIMESTAMPBITS_PTS)		/* Flag BOTH timestamps	*/

#define MARKER_MPEG1_SCR		2		/* Marker SCR		*/
#define MARKER_MPEG2_SCR        1		/* These don't need to be distinct! */
#define MARKER_JUST_PTS			2		/* Marker only PTS	*/
#define MARKER_PTS				3		/* Marker PTS		*/
#define MARKER_DTS				1		/* Marker DTS		*/
#define MARKER_NO_TIMESTAMPS	0x0f	/* Marker NO timestamps	*/


#endif // __MPLEXCONSTS_H__
