1/*
2 * Copyright (c) 2004-2007 Marcus Overhagen <marcus@overhagen.de>
3 *
4 * Permission is hereby granted, free of charge, to any person
5 * obtaining a copy of this software and associated documentation
6 * files (the "Software"), to deal in the Software without restriction,
7 * including without limitation the rights to use, copy, modify,
8 * merge, publish, distribute, sublicense, and/or sell copies of
9 * the Software, and to permit persons to whom the Software is
10 * furnished to do so, subject to the following conditions:
11 *
12 * The above copyright notice and this permission notice shall be
13 * included in all copies or substantial portions of the Software.
14 *
15 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
16 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
17 * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
18 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
19 * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
20 * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
21 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
22 * OTHER DEALINGS IN THE SOFTWARE.
23 */
24
25#ifndef _MPEG_TS_PACKET_H
26#define _MPEG_TS_PACKET_H
27
28#include <SupportDefs.h>
29
30class mpeg_ts_packet
31{
32public:
33	int			SyncByte() const;
34	int			TransportError() const;
35	int			PayloadUnitStart() const;
36	int			PID() const;
37	int			AdaptationFieldControl() const;
38	int			ContinuityCounter() const;
39
40public:
41	uint8		header[4];
42	uint8		data[184];
43} _PACKED;
44
45
46inline int mpeg_ts_packet::SyncByte() const
47{
48	return header[0];
49}
50
51inline int mpeg_ts_packet::TransportError() const
52{
53	return header[1] & 0x80;
54}
55
56inline int mpeg_ts_packet::PayloadUnitStart() const
57{
58	return header[1] & 0x40;
59}
60
61inline int mpeg_ts_packet::PID() const
62{
63	return ((header[1] << 8) | header[2]) & 0x1fff;
64}
65
66inline int mpeg_ts_packet::AdaptationFieldControl() const
67{
68    return (header[3] >> 4) & 0x3;
69}
70
71inline int mpeg_ts_packet::ContinuityCounter() const
72{
73    return header[3] & 0x0f;
74}
75
76#endif
77