| // 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. |
| |
| #ifndef MEDIA_WEBM_WEBM_COLOUR_PARSER_H_ |
| #define MEDIA_WEBM_WEBM_COLOUR_PARSER_H_ |
| |
| #include "base/compiler_specific.h" |
| #include "media/base/color_space.h" |
| #include "media/base/hdr_metadata.h" |
| #include "media/webm/webm_parser.h" |
| |
| namespace media { |
| |
| // WebM color information, containing HDR metadata: |
| // http://www.webmproject.org/docs/container/#Colour |
| struct MEDIA_EXPORT WebMColorMetadata { |
| unsigned int BitsPerChannel; |
| unsigned int ChromaSubsamplingHorz; |
| unsigned int ChromaSubsamplingVert; |
| unsigned int CbSubsamplingHorz; |
| unsigned int CbSubsamplingVert; |
| unsigned int ChromaSitingHorz; |
| unsigned int ChromaSitingVert; |
| |
| gfx::ColorSpace color_space; |
| |
| HDRMetadata hdr_metadata; |
| |
| WebMColorMetadata(); |
| WebMColorMetadata(const WebMColorMetadata& rhs); |
| bool operator==(const WebMColorMetadata& rhs) const; |
| }; |
| |
| // Parser for WebM MasteringMetadata within Colour element: |
| // http://www.webmproject.org/docs/container/#MasteringMetadata |
| class WebMMasteringMetadataParser : public WebMParserClient { |
| public: |
| WebMMasteringMetadataParser(); |
| ~WebMMasteringMetadataParser() OVERRIDE; |
| |
| MasteringMetadata GetMasteringMetadata() const { return mastering_metadata_; } |
| |
| private: |
| // WebMParserClient implementation. |
| bool OnFloat(int id, double val) OVERRIDE; |
| |
| MasteringMetadata mastering_metadata_; |
| DISALLOW_COPY_AND_ASSIGN(WebMMasteringMetadataParser); |
| }; |
| |
| // Parser for WebM Colour element: |
| // http://www.webmproject.org/docs/container/#colour |
| class WebMColourParser : public WebMParserClient { |
| public: |
| WebMColourParser(); |
| ~WebMColourParser() OVERRIDE; |
| |
| void Reset(); |
| |
| WebMColorMetadata GetWebMColorMetadata() const; |
| |
| private: |
| // WebMParserClient implementation. |
| WebMParserClient* OnListStart(int id) OVERRIDE; |
| bool OnListEnd(int id) OVERRIDE; |
| bool OnUInt(int id, int64_t val) OVERRIDE; |
| |
| int64_t matrix_coefficients_; |
| int64_t bits_per_channel_; |
| int64_t chroma_subsampling_horz_; |
| int64_t chroma_subsampling_vert_; |
| int64_t cb_subsampling_horz_; |
| int64_t cb_subsampling_vert_; |
| int64_t chroma_siting_horz_; |
| int64_t chroma_siting_vert_; |
| int64_t range_; |
| int64_t transfer_characteristics_; |
| int64_t primaries_; |
| int64_t max_cll_; |
| int64_t max_fall_; |
| |
| WebMMasteringMetadataParser mastering_metadata_parser_; |
| bool mastering_metadata_parsed_; |
| |
| DISALLOW_COPY_AND_ASSIGN(WebMColourParser); |
| }; |
| |
| } // namespace media |
| |
| #endif // MEDIA_WEBM_WEBM_COLOUR_PARSER_H_ |