Upload upstream chromium 108.0.5359.1
[platform/framework/web/chromium-efl.git] / media / filters / vp9_uncompressed_header_parser.h
1 // Copyright 2016 The Chromium Authors
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_FILTERS_VP9_UNCOMPRESSED_HEADER_PARSER_H_
6 #define MEDIA_FILTERS_VP9_UNCOMPRESSED_HEADER_PARSER_H_
7
8 #include "base/memory/raw_ptr.h"
9 #include "media/filters/vp9_parser.h"
10 #include "media/filters/vp9_raw_bits_reader.h"
11
12 #include "media/base/media_export.h"
13
14 namespace media {
15
16 class MEDIA_EXPORT Vp9UncompressedHeaderParser {
17  public:
18   Vp9UncompressedHeaderParser(Vp9Parser::Context* context);
19
20   Vp9UncompressedHeaderParser(const Vp9UncompressedHeaderParser&) = delete;
21   Vp9UncompressedHeaderParser& operator=(const Vp9UncompressedHeaderParser&) =
22       delete;
23
24   // Parses VP9 uncompressed header in |stream| with |frame_size| into |fhdr|.
25   // Returns true if no error.
26   bool Parse(const uint8_t* stream, off_t frame_size, Vp9FrameHeader* fhdr);
27
28   const Vp9FrameContext& GetVp9DefaultFrameContextForTesting() const;
29
30  private:
31   friend class Vp9UncompressedHeaderParserTest;
32
33   uint8_t ReadProfile();
34   bool VerifySyncCode();
35   bool ReadColorConfig(Vp9FrameHeader* fhdr);
36   void ReadFrameSize(Vp9FrameHeader* fhdr);
37   bool ReadFrameSizeFromRefs(Vp9FrameHeader* fhdr);
38   void ReadRenderSize(Vp9FrameHeader* fhdr);
39   Vp9InterpolationFilter ReadInterpolationFilter();
40   void ResetLoopfilter();
41   void SetupPastIndependence(Vp9FrameHeader* fhdr);
42   void ReadLoopFilterParams();
43   void ReadQuantizationParams(Vp9QuantizationParams* quants);
44   int8_t ReadDeltaQ();
45   uint8_t ReadProb();
46   bool ReadSegmentationParams();
47   bool ReadTileInfo(Vp9FrameHeader* fhdr);
48
49   // Raw bits reader for uncompressed frame header.
50   Vp9RawBitsReader reader_;
51
52   raw_ptr<Vp9Parser::Context> context_;
53 };
54
55 }  // namespace media
56
57 #endif  // MEDIA_FILTERS_VP9_UNCOMPRESSED_HEADER_PARSER_H_