15d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved. 268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 368043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)// found in the LICENSE file. 468043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 55d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#ifndef MEDIA_FORMATS_MP2T_TS_SECTION_PSI_H_ 65d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#define MEDIA_FORMATS_MP2T_TS_SECTION_PSI_H_ 768043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 868043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)#include "base/compiler_specific.h" 968043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)#include "media/base/byte_queue.h" 105d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "media/formats/mp2t/ts_section.h" 1168043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 1268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)namespace media { 1368043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 1468043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)class BitReader; 1568043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 1668043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)namespace mp2t { 1768043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 1868043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)class TsSectionPsi : public TsSection { 1968043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) public: 2068043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) TsSectionPsi(); 2168043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) virtual ~TsSectionPsi(); 2268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 2368043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) // TsSection implementation. 2468043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) virtual bool Parse(bool payload_unit_start_indicator, 2568043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) const uint8* buf, int size) OVERRIDE; 2668043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) virtual void Flush() OVERRIDE; 2768043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) virtual void Reset() OVERRIDE; 2868043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 2968043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) // Parse the content of the PSI section. 3068043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) virtual bool ParsePsiSection(BitReader* bit_reader) = 0; 3168043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 3268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) // Reset the state of the PSI section. 3368043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) virtual void ResetPsiSection() = 0; 3468043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 3568043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) private: 3668043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) void ResetPsiState(); 3768043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 3868043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) // Bytes of the current PSI. 3968043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) ByteQueue psi_byte_queue_; 4068043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 4168043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) // Do not start parsing before getting a unit start indicator. 4268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) bool wait_for_pusi_; 4368043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 4468043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) // Number of leading bytes to discard (pointer field). 4568043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) int leading_bytes_to_discard_; 4668043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 4768043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(TsSectionPsi); 4868043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)}; 4968043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 5068043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)} // namespace mp2t 5168043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)} // namespace media 5268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 5368043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)#endif 5468043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 55