diff options
Diffstat (limited to 'accel/vp9_uncompressed_header_parser.h')
-rw-r--r-- | accel/vp9_uncompressed_header_parser.h | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/accel/vp9_uncompressed_header_parser.h b/accel/vp9_uncompressed_header_parser.h new file mode 100644 index 0000000..6780d38 --- /dev/null +++ b/accel/vp9_uncompressed_header_parser.h @@ -0,0 +1,49 @@ +// Copyright 2016 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// Note: ported from Chromium commit head: e5a9a62 + +#ifndef VP9_UNCOMPRESSED_HEADER_PARSER_H_ +#define VP9_UNCOMPRESSED_HEADER_PARSER_H_ + +#include "vp9_parser.h" +#include "vp9_raw_bits_reader.h" + +namespace media { + +class Vp9UncompressedHeaderParser { + public: + Vp9UncompressedHeaderParser(Vp9Parser::Context* context); + + // Parses VP9 uncompressed header in |stream| with |frame_size| into |fhdr|. + // Returns true if no error. + bool Parse(const uint8_t* stream, off_t frame_size, Vp9FrameHeader* fhdr); + + private: + uint8_t ReadProfile(); + bool VerifySyncCode(); + bool ReadColorConfig(Vp9FrameHeader* fhdr); + void ReadFrameSize(Vp9FrameHeader* fhdr); + bool ReadFrameSizeFromRefs(Vp9FrameHeader* fhdr); + void ReadRenderSize(Vp9FrameHeader* fhdr); + Vp9InterpolationFilter ReadInterpolationFilter(); + void ResetLoopfilter(); + void SetupPastIndependence(Vp9FrameHeader* fhdr); + void ReadLoopFilterParams(); + void ReadQuantizationParams(Vp9QuantizationParams* quants); + int8_t ReadDeltaQ(); + uint8_t ReadProb(); + bool ReadSegmentationParams(); + bool ReadTileInfo(Vp9FrameHeader* fhdr); + + // Raw bits reader for uncompressed frame header. + Vp9RawBitsReader reader_; + + Vp9Parser::Context* context_; + + DISALLOW_COPY_AND_ASSIGN(Vp9UncompressedHeaderParser); +}; + +} // namespace media + +#endif // VP9_UNCOMPRESSED_HEADER_PARSER_H_ |