README 5.15 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 35
$Id$

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.

36 37
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
38 39 40 41
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.
42 43 44 45 46 47 48


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

 * Program Allocation Table (PAT)
 * Conditional Access Table (CAT)
49
 * Transport Stream Descriptor Table (TSDT)
50 51 52 53 54 55 56 57 58 59
 * 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)
60
 * Selection Information Table (SIT)
61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82


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
83
 * Descriptor 0x1b: MPEG-4 video descriptor
84
 * Descriptor 0x1c: MPEG-4 audio descriptor
85
 * Descriptor 0x1d: IOD_descriptor
86
 * Descriptor 0x1e: SL_descriptor
87
 * Descriptor 0x1f: FMC_descriptor
88
 * Descriptor 0x20: External ES_ID descriptor
89
 * Descriptor 0x23: MultiplexBuffer descriptor
90
 * Descriptor 0x27: Metadata STD descriptor
91
 * Descriptor 0x28: AVC video descriptor
92
 * Descriptor 0x2a: AVC timing and HRD descriptor
93
 * Descriptor 0x2b: MPEG-2 AAC audio descriptor
94
 * Descriptor 0x2c: FlexMuxTiming_descriptor
95 96 97 98 99 100


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

 * Descriptor 0x40: Network name descriptor
101
 * Descriptor 0x42: Stuffing descriptor
102 103 104
 * Descriptor 0x41: Service list descriptor
 * Descriptor 0x43: Satellite delivery system descriptor
 * Descriptor 0x44: Cable delivery system descriptor
105
 * Descriptor 0x45: VBI data descriptor
106 107 108
 * Descriptor 0x46: VBI teletext descriptor
 * Descriptor 0x47: Bouquet name descriptor
 * Descriptor 0x48: Service descriptor
109
 * Descriptor 0x49: Country availability descriptor
110
 * Descriptor 0x4a: Linkage descriptor (partially implemented)
111
 * Descriptor 0x4b: NVOD reference descriptor
112
 * Descriptor 0x4c: Time shifted service descriptor
113 114
 * Descriptor 0x4d: Short event descriptor
 * Descriptor 0x4e: Extended event descriptor
115
 * Descriptor 0x4f: Time shifted event descriptor
116
 * Descriptor 0x50: Component descriptor
117
 * Descriptor 0x51: Mosaic descriptor
118
 * Descriptor 0x52: Stream identifier descriptor
119
 * Descriptor 0x53: CA identifier descriptor
120 121 122
 * Descriptor 0x54: Content descriptor
 * Descriptor 0x55: Parental rating descriptor
 * Descriptor 0x56: Teletext descriptor
123
 * Descriptor 0x57: Telephone descriptor
124 125 126
 * Descriptor 0x58: Local time offset descriptor
 * Descriptor 0x59: Subtitling descriptor
 * Descriptor 0x5a: Terrestrial delivery system descriptor
127
 * Descriptor 0x5b: Multilingual network name descriptor
128
 * Descriptor 0x5c: Multilingual bouquet name descriptor
129
 * Descriptor 0x5d: Multilingual service name descriptor
130
 * Descriptor 0x5e: Multilingual component descriptor
131
 * Descriptor 0x5f: Private data specifier descriptor
132
 * Descriptor 0x60: Service move descriptor
133 134 135 136 137 138 139 140 141 142 143 144
 * Descriptor 0x6a: AC-3 descriptor [p]

Legend:
  [p] - Partitial support, only parser is implemented.

To see what is unsupported look in the TODO file.


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

To see biTSream in action look in examples directory.