1 // Copyright 2016 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 VP9_UNCOMPRESSED_HEADER_PARSER_H_ 6 #define VP9_UNCOMPRESSED_HEADER_PARSER_H_ 7 8 #include "vp9_parser.h" 9 #include "vp9_raw_bits_reader.h" 10 11 namespace media { 12 13 class Vp9UncompressedHeaderParser { 14 public: 15 Vp9UncompressedHeaderParser(Vp9Parser::Context* context); 16 17 // Parses VP9 uncompressed header in |stream| with |frame_size| into |fhdr|. 18 // Returns true if no error. 19 bool Parse(const uint8_t* stream, off_t frame_size, Vp9FrameHeader* fhdr); 20 21 private: 22 uint8_t ReadProfile(); 23 bool VerifySyncCode(); 24 bool ReadColorConfig(Vp9FrameHeader* fhdr); 25 void ReadFrameSize(Vp9FrameHeader* fhdr); 26 bool ReadFrameSizeFromRefs(Vp9FrameHeader* fhdr); 27 void ReadRenderSize(Vp9FrameHeader* fhdr); 28 Vp9InterpolationFilter ReadInterpolationFilter(); 29 void ResetLoopfilter(); 30 void SetupPastIndependence(Vp9FrameHeader* fhdr); 31 void ReadLoopFilterParams(); 32 void ReadQuantizationParams(Vp9QuantizationParams* quants); 33 int8_t ReadDeltaQ(); 34 uint8_t ReadProb(); 35 bool ReadSegmentationParams(); 36 bool ReadTileInfo(Vp9FrameHeader* fhdr); 37 38 // Raw bits reader for uncompressed frame header. 39 Vp9RawBitsReader reader_; 40 41 Vp9Parser::Context* context_; 42 43 DISALLOW_COPY_AND_ASSIGN(Vp9UncompressedHeaderParser); 44 }; 45 46 } // namespace media 47 48 #endif // VP9_UNCOMPRESSED_HEADER_PARSER_H_ 49