README 5.97 KB
Newer Older
Christophe Massiot's avatar
Christophe Massiot committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34

Welcome to biTStream!
=====================

biTStream is a set of C headers allowing a simpler access to binary
structures such as specified by MPEG, DVB, IETF, etc.


biTStream vs. libdvbpsi
=======================

libdvbpsi converts binary structures to C structures. Lists are implemented
with chained lists of C structures.

biTStream is lower level, and more efficient: fewer memory allocations,
fewer memory copies. It also features a better separation between layers
and specifications.


Extending biTStream
===================

A lot of MPEG and DVB tables and descriptors are not implemented yet, or
are incomplete. Patches are very welcome.

Though biTStream is originally targeted at video applications in general
and MPEG-2 transport stream in particular, the same principle can be
followed with other binary data types, and patches are welcome here too.
Just try to follow a coherent directory naming.

My coding style is Linux kernel + Hungarian conventions. Really, I do not
care about the coding style of new files; do (WTF) you want. However, for
existing files, please try to follow the original conventions.

35 36
biTStream is released under the MIT license because since it is a
direct application of standards, there is no added value. The MIT license
Christophe Massiot's avatar
Christophe Massiot committed
37 38 39 40
doesn't require you to contribute back your changes, and you can use
biTStream in proprietary applications. However, if you add new structures,
or fix bugs in current structures, you'd be very nice to contribute them
(again, there is no point in concealing this). Thanks.
41 42 43 44 45 46 47


Supported SI tables
===================

 * Program Allocation Table (PAT)
 * Conditional Access Table (CAT)
48
 * Transport Stream Descriptor Table (TSDT)
49 50 51 52 53 54 55 56 57 58
 * Program Map Table (PMT)
 * Network Information Table (NIT)
 * Bouquet Association Table (BAT)
 * Service Definition Table (SDT)
 * Event Information Table (EIT)
 * Time and Date Table (TDT)
 * Time Offset Table (TOT)
 * Running Status Table (RST)
 * Stuffing Table (ST)
 * Discontinuity Information Table (DIT)
59
 * Selection Information Table (SIT)
60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81


Supported MPEG descriptors
==========================

 * Descriptor 0x02: Video stream descriptor
 * Descriptor 0x03: Audio stream descriptor
 * Descriptor 0x04: Hierarchy descriptor
 * Descriptor 0x05: Registration descriptor
 * Descriptor 0x06: Data stream alignment descriptor
 * Descriptor 0x07: Target Background Grid descriptor
 * Descriptor 0x08: Video Window descriptor
 * Descriptor 0x09: Conditional access descriptor
 * Descriptor 0x0A: ISO-639 language descriptor
 * Descriptor 0x0B: System clock descriptor
 * Descriptor 0x0C: Multiplex buffer utilization descriptor
 * Descriptor 0x0D: Copyright descriptor
 * Descriptor 0x0E: Maximum bitrate descriptor
 * Descriptor 0x0F: Private data indicator descriptor
 * Descriptor 0x10: Smoothing buffer descriptor
 * Descriptor 0x11: STD descriptor
 * Descriptor 0x12: IBP descriptor
82
 * Descriptor 0x1b: MPEG-4 video descriptor
83
 * Descriptor 0x1c: MPEG-4 audio descriptor
84
 * Descriptor 0x1d: IOD_descriptor
85
 * Descriptor 0x1e: SL_descriptor
86
 * Descriptor 0x1f: FMC_descriptor
87
 * Descriptor 0x20: External ES_ID descriptor
88
 * Descriptor 0x21: MuxCode descriptor
89
 * Descriptor 0x22: FmxBufferSize descriptor
90
 * Descriptor 0x23: MultiplexBuffer descriptor
91
 * Descriptor 0x24: Content labeling descriptor
92
 * Descriptor 0x25: Metadata pointer descriptor
93
 * Descriptor 0x26: Metadata descriptor
94
 * Descriptor 0x27: Metadata STD descriptor
95
 * Descriptor 0x28: AVC video descriptor
96
 * Descriptor 0x2a: AVC timing and HRD descriptor
97
 * Descriptor 0x2b: MPEG-2 AAC audio descriptor
98
 * Descriptor 0x2c: FlexMuxTiming_descriptor
99 100 101 102 103 104 105


Supported DVB descriptors
=========================

 * Descriptor 0x40: Network name descriptor
 * Descriptor 0x41: Service list descriptor
106
 * Descriptor 0x42: Stuffing descriptor
107 108
 * Descriptor 0x43: Satellite delivery system descriptor
 * Descriptor 0x44: Cable delivery system descriptor
109
 * Descriptor 0x45: VBI data descriptor
110 111 112
 * Descriptor 0x46: VBI teletext descriptor
 * Descriptor 0x47: Bouquet name descriptor
 * Descriptor 0x48: Service descriptor
113
 * Descriptor 0x49: Country availability descriptor
114
 * Descriptor 0x4a: Linkage descriptor
115
 * Descriptor 0x4b: NVOD reference descriptor
116
 * Descriptor 0x4c: Time shifted service descriptor
117 118
 * Descriptor 0x4d: Short event descriptor
 * Descriptor 0x4e: Extended event descriptor
119
 * Descriptor 0x4f: Time shifted event descriptor
120
 * Descriptor 0x50: Component descriptor
121
 * Descriptor 0x51: Mosaic descriptor
122
 * Descriptor 0x52: Stream identifier descriptor
123
 * Descriptor 0x53: CA identifier descriptor
124 125 126
 * Descriptor 0x54: Content descriptor
 * Descriptor 0x55: Parental rating descriptor
 * Descriptor 0x56: Teletext descriptor
127
 * Descriptor 0x57: Telephone descriptor
128 129 130
 * Descriptor 0x58: Local time offset descriptor
 * Descriptor 0x59: Subtitling descriptor
 * Descriptor 0x5a: Terrestrial delivery system descriptor
131
 * Descriptor 0x5b: Multilingual network name descriptor
132
 * Descriptor 0x5c: Multilingual bouquet name descriptor
133
 * Descriptor 0x5d: Multilingual service name descriptor
134
 * Descriptor 0x5e: Multilingual component descriptor
135
 * Descriptor 0x5f: Private data specifier descriptor
136
 * Descriptor 0x60: Service move descriptor
137
 * Descriptor 0x61: Short smoothing buffer descriptor
138
 * Descriptor 0x62: Frequency list descriptor
139
 * Descriptor 0x63: Partial transport stream descriptor
140
 * Descriptor 0x64: Data broadcast descriptor
141
 * Descriptor 0x65: Scrambling descriptor
142
 * Descriptor 0x66: Data broadcast id descriptor
143
 * Descriptor 0x67: Transport stream descriptor
144
 * Descriptor 0x68: DSNG descriptor
145
 * Descriptor 0x69: PDC descriptor
146
 * Descriptor 0x6a: AC-3 descriptor
147
 * Descriptor 0x6b: Ancillary data descriptor
148
 * Descriptor 0x6c: Cell list descriptor
149
 * Descriptor 0x6d: Cell frequency link descriptor
150
 * Descriptor 0x6e: Announcement support descriptor
151
 * Descriptor 0x7a: Enhanced AC-3 descriptor
152
 * Descriptor 0x7b: DTS descriptor
153
 * Descriptor 0x7c: AAC descriptor
154 155 156 157 158 159 160 161

To see what is unsupported look in the TODO file.


Example usage
=============

To see biTSream in action look in examples directory.