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 MEDIA_FORMATS_MP2T_TS_SECTION_PSI_H_ 6#define MEDIA_FORMATS_MP2T_TS_SECTION_PSI_H_ 7 8#include "base/compiler_specific.h" 9#include "media/base/byte_queue.h" 10#include "media/formats/mp2t/ts_section.h" 11 12namespace media { 13 14class BitReader; 15 16namespace mp2t { 17 18class TsSectionPsi : public TsSection { 19 public: 20 TsSectionPsi(); 21 virtual ~TsSectionPsi(); 22 23 // TsSection implementation. 24 virtual bool Parse(bool payload_unit_start_indicator, 25 const uint8* buf, int size) OVERRIDE; 26 virtual void Flush() OVERRIDE; 27 virtual void Reset() OVERRIDE; 28 29 // Parse the content of the PSI section. 30 virtual bool ParsePsiSection(BitReader* bit_reader) = 0; 31 32 // Reset the state of the PSI section. 33 virtual void ResetPsiSection() = 0; 34 35 private: 36 void ResetPsiState(); 37 38 // Bytes of the current PSI. 39 ByteQueue psi_byte_queue_; 40 41 // Do not start parsing before getting a unit start indicator. 42 bool wait_for_pusi_; 43 44 // Number of leading bytes to discard (pointer field). 45 int leading_bytes_to_discard_; 46 47 DISALLOW_COPY_AND_ASSIGN(TsSectionPsi); 48}; 49 50} // namespace mp2t 51} // namespace media 52 53#endif 54 55