• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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