2
stores info about system stream and sends data to audio/video
3
Copyright (C) 2000 Martin Vogt
5
This program is free software; you can redistribute it and/or modify
6
it under the terms of the GNU Library General Public License as published by
7
the Free Software Foundation.
9
For more information look at the file COPYRIGHT in this package
16
#ifndef __MPEGSYSTEMHEADER_H
17
#define __MPEGSYSTEMHEADER_H
21
#define _PACKET_SYSLAYER 1
22
#define _PACKET_NO_SYSLAYER 0
23
#define _PACKET_UNKNOWN_LAYER -1
24
#define _PACKET_HEADER_SIZE 8
27
// note: packetid 1 & 2 are normalized to _PAKET_ID_AUDIO
30
#define _PAKET_ID_AUDIO_1 ((unsigned char) 0xc0)
31
#define _PAKET_ID_AUDIO_2 ((unsigned char) 0xd0)
32
#define _PAKET_ID_VIDEO ((unsigned char) 0xe0)
33
#define _PAKET_ID_NUKE ((unsigned char) 0x0)
35
#define _STD_SYSTEM_CLOCK_FREQ (unsigned long)90000
36
#define _MUX_RATE_SCALE_FACTOR 50
37
#define _MAX_STREAMS 8
38
#define _NOT_PACKET_ID ((unsigned char) 0xff)
39
#define _KILL_BUFFER ((unsigned char) 0xfe)
43
#define _STD_AUDIO_STREAM_ID ((unsigned char) 0xb8)
44
#define _STD_VIDEO_STREAM_ID ((unsigned char) 0xb9)
45
#define _MIN_STREAM_ID_ID ((unsigned char) 0xbc)
46
#define _RESERVED_STREAM_ID ((unsigned char) 0xbc)
47
#define _PRIVATE_STREAM_1_ID ((unsigned char) 0xbd)
48
#define _PADDING_STREAM_ID ((unsigned char) 0xbe)
49
#define _PRIVATE_STREAM_2_ID ((unsigned char) 0xbf)
50
#define _ECM_STREAM_ID ((unsigned char) 0xf0)
51
#define _EMM_STREAM_ID ((unsigned char) 0xf1)
52
#define _PROGRAM_STREAM_DIRECTORY_ID ((unsigned char) 0xff)
53
#define _DSMCC_STREAM_ID ((unsigned char) 0xf2)
54
#define _ITUTRECH222TYPEE_STREAM_ID ((unsigned char) 0xf8)
55
#define _SUBSTREAM_AC3_ID ((unsigned char) 0x80)
56
#define _SUBSTREAM_LPCM_ID ((unsigned char) 0xA0)
57
#define _SUBSTREAM_SUBPIC_ID ((unsigned char) 0x20)
60
/* Silly Constants.... */
61
#define _PACK_START_CODE ((unsigned int)0x000001ba)
62
#define _SYSTEM_HEADER_START_CODE ((unsigned int)0x000001bb)
63
#define _PACKET_START_CODE_MASK ((unsigned int)0xffffff00)
64
#define _PACKET_START_CODE_PREFIX ((unsigned int)0x00000100)
65
#define _ISO_11172_END_CODE ((unsigned int)0x000001b9)
67
#define _SEQ_START_CODE 0x000001b3
74
class MpegSystemHeader {
89
unsigned long stdBufferSize;
91
/* This are bitmaps, if bit x is a 1 the stream number x is
93
unsigned long availableAudioLayers;
94
unsigned long availableVideoLayers;
100
// MPEG2 Header Info [START]
104
int lDataAlignmentIndicator;
115
int lADDITIONAL_COPY_FLAG;
118
int nPES_HEADER_DATA_LENGTH;
122
int lPrivateDataFlag;
123
int lPackHeaderFieldFlag;
124
int lSequenceCounterFlag;
127
int nPES_EXT_FIELD_LENGTH;
132
// MPEG2 Header Info [END]
140
void setPTSFlag(int lPTSFlag);
142
double getSCRTimeStamp();
143
double getPTSTimeStamp();
144
double getDTSTimeStamp();
147
void setSCRTimeStamp(double timeStamp);
148
void setPTSTimeStamp(double ptsTimeStamp);
149
void setDTSTimeStamp(double dtsTimeStamp);
151
// returns 1 if it is a syslayer 0 if non syslayer -1 if unknown
154
void setLayer(int layer);
157
// MPEG2 Stuff [START]
161
void setMPEG2(int lmpeg2);
164
int getOriginalOrCopy();
165
void setOriginalOrCopy(int lOriginal);
168
void setCopyRight(int lCopyRight);
170
int getDataAlignmentIndicator();
171
void setDataAlignmentIndicator(int lDataAlignmentIndicator);
173
int getPesPriority();
174
void setPesPriority(int lPesPriority);
177
void setEncrypted(int lEncrypted);
179
int getStartCodePrefix();
180
void setStartCodePrefix(int startCodePrefix);
185
void setPTSDTSFlag(int lPTSDTSFlag);
188
void setESCRFlag(int lESCR);
190
int getES_RATE_Flag();
191
void setES_RATE_Flag(int lESRateFlag);
194
int getDMSTRICKFLAG();
195
void setDMSTRICKFLAG(int lDMSTRICKFLAG);
197
int getADDITIONAL_COPY_FLAG();
198
void setADDITIONAL_COPY_FLAG(int lADDITIONAL_COPY_FLAG);
200
int getPES_CRC_FLAG();
201
void setPES_CRC_FLAG(int lPES_CRC_FLAG);
203
int getPES_EXT_FLAG();
204
void setPES_EXT_FLAG(int lPES_EXT_FLAG);
207
// PES EXTENSION [START]
210
int getPrivateDataFlag();
211
void setPrivateDataFlag(int lPrivateDataFlag);
213
int getPackHeaderFieldFlag();
214
void setPackHeaderFieldFlag(int lPackHeaderFieldFlag);
216
int getSequenceCounterFlag();
217
void setSequenceCounterFlag(int lSequenceCounterFlag);
219
int getSTDBufferFlag();
220
void setSTDBufferFlag(int lSTDBufferFlag);
222
int getPES_EXT_FLAG_2();
223
void setPES_EXT_FLAG_2(int lPES_EXT_FLAG_2);
225
int getPES_EXT_FIELD_LENGTH();
226
void setPES_EXT_FIELD_LENGTH(int nPES_EXT_FIELD_LENGTH);
231
// PES EXTENSION [END]
234
int getPES_HEADER_DATA_LENGTH();
235
void setPES_HEADER_DATA_LENGTH(int nPES_HEADER_DATA_LENGTH);
238
int getSubStreamID();
239
void setSubStreamID(int subStreamID);
246
void addAvailableLayer(int streamID);
247
void resetAvailableLayers();
249
int getAudioLayerSelect();
250
void setAudioLayerSelect(int layer);
252
int getVideoLayerSelect();
253
void setVideoLayerSelect(int layer);
257
void setPacketID(int packetID);
260
void setPacketLen(int packetLen);
263
void setRate(int rate);
265
int getStdBufferScale();
266
void setStdBufferScale(int stdBufferScale);
268
unsigned long getStdBufferSize();
269
void setStdBufferSize(unsigned long stdBufferSize);