Shaka Packager SDK
Loading...
Searching...
No Matches
ts_packet.h
1// Copyright 2014 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef PACKAGER_MEDIA_FORMATS_MP2T_TS_PACKET_H_
6#define PACKAGER_MEDIA_FORMATS_MP2T_TS_PACKET_H_
7
8#include <cstdint>
9
10#include <packager/macros/classes.h>
11
12namespace shaka {
13namespace media {
14
15class BitReader;
16
17namespace mp2t {
18
19class TsPacket {
20 public:
21 static const int kPacketSize = 188;
22
23 // Return the number of bytes to discard
24 // to be synchronized on a TS syncword.
25 static int Sync(const uint8_t* buf, int size);
26
27 // Parse a TS packet.
28 // Return a TsPacket only when parsing was successful.
29 // Return NULL otherwise.
30 static TsPacket* Parse(const uint8_t* buf, int size);
31
32 ~TsPacket();
33
34 // TS header accessors.
35 bool payload_unit_start_indicator() const {
36 return payload_unit_start_indicator_;
37 }
38 int pid() const { return pid_; }
39 int continuity_counter() const { return continuity_counter_; }
40 bool discontinuity_indicator() const { return discontinuity_indicator_; }
41 bool random_access_indicator() const { return random_access_indicator_; }
42
43 // Return the offset and the size of the payload.
44 const uint8_t* payload() const { return payload_; }
45 int payload_size() const { return payload_size_; }
46
47 private:
48 TsPacket();
49
50 // Parse an Mpeg2 TS header.
51 // The buffer size should be at least |kPacketSize|
52 bool ParseHeader(const uint8_t* buf);
53 bool ParseAdaptationField(BitReader* bit_reader,
54 int adaptation_field_length);
55
56 // Size of the payload.
57 const uint8_t* payload_;
58 int payload_size_;
59
60 // TS header.
61 bool payload_unit_start_indicator_;
62 int pid_;
63 int continuity_counter_;
64
65 // Params from the adaptation field.
66 bool discontinuity_indicator_;
67 bool random_access_indicator_;
68
69 DISALLOW_COPY_AND_ASSIGN(TsPacket);
70};
71
72} // namespace mp2t
73} // namespace media
74} // namespace shaka
75
76#endif
77
A class to read bit streams.
Definition bit_reader.h:20
All the methods that are virtual are virtual for mocking.