diff options
Diffstat (limited to 'chromium/media/formats/mp2t/ts_packet.h')
-rw-r--r-- | chromium/media/formats/mp2t/ts_packet.h | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/chromium/media/formats/mp2t/ts_packet.h b/chromium/media/formats/mp2t/ts_packet.h new file mode 100644 index 00000000000..a232705fbd5 --- /dev/null +++ b/chromium/media/formats/mp2t/ts_packet.h @@ -0,0 +1,73 @@ +// Copyright 2014 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef MEDIA_FORMATS_MP2T_TS_PACKET_H_ +#define MEDIA_FORMATS_MP2T_TS_PACKET_H_ + +#include "base/basictypes.h" + +namespace media { + +class BitReader; + +namespace mp2t { + +class TsPacket { + public: + static const int kPacketSize = 188; + + // Return the number of bytes to discard + // to be synchronized on a TS syncword. + static int Sync(const uint8* buf, int size); + + // Parse a TS packet. + // Return a TsPacket only when parsing was successful. + // Return NULL otherwise. + static TsPacket* Parse(const uint8* buf, int size); + + ~TsPacket(); + + // TS header accessors. + bool payload_unit_start_indicator() const { + return payload_unit_start_indicator_; + } + int pid() const { return pid_; } + int continuity_counter() const { return continuity_counter_; } + bool discontinuity_indicator() const { return discontinuity_indicator_; } + bool random_access_indicator() const { return random_access_indicator_; } + + // Return the offset and the size of the payload. + const uint8* payload() const { return payload_; } + int payload_size() const { return payload_size_; } + + private: + TsPacket(); + + // Parse an Mpeg2 TS header. + // The buffer size should be at least |kPacketSize| + bool ParseHeader(const uint8* buf); + bool ParseAdaptationField(BitReader* bit_reader, + int adaptation_field_length); + + // Size of the payload. + const uint8* payload_; + int payload_size_; + + // TS header. + bool payload_unit_start_indicator_; + int pid_; + int continuity_counter_; + + // Params from the adaptation field. + bool discontinuity_indicator_; + bool random_access_indicator_; + + DISALLOW_COPY_AND_ASSIGN(TsPacket); +}; + +} // namespace mp2t +} // namespace media + +#endif + |