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_H_ 65d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#define MEDIA_FORMATS_MP2T_TS_SECTION_H_ 768043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 868043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)namespace media { 968043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)namespace mp2t { 1068043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 1168043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)class TsSection { 1268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) public: 1368043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) // From ISO/IEC 13818-1 or ITU H.222 spec: Table 2-3 - PID table. 1468043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) enum SpecialPid { 1568043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) kPidPat = 0x0, 1668043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) kPidCat = 0x1, 1768043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) kPidTsdt = 0x2, 1868043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) kPidNullPacket = 0x1fff, 1968043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) kPidMax = 0x1fff, 2068043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) }; 2168043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 2268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) virtual ~TsSection() {} 2368043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 2468043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) // Parse the data bytes of the TS packet. 2568043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) // Return true if parsing is successful. 2668043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) virtual bool Parse(bool payload_unit_start_indicator, 2768043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) const uint8* buf, int size) = 0; 2868043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 2968043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) // Process bytes that have not been processed yet (pending buffers in the 3068043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) // pipe). Flush might thus results in frame emission, as an example. 3168043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) virtual void Flush() = 0; 3268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 3368043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) // Reset the state of the parser to its initial state. 3468043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) virtual void Reset() = 0; 3568043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)}; 3668043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 3768043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)} // namespace mp2t 3868043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)} // namespace media 3968043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 4068043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)#endif 41