| Index: media/formats/webm/webm_colour_parser.h
|
| diff --git a/media/formats/webm/webm_colour_parser.h b/media/formats/webm/webm_colour_parser.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..dd7b0334c596ce0a15a1bfe5cdc6947bc0f4d1a8
|
| --- /dev/null
|
| +++ b/media/formats/webm/webm_colour_parser.h
|
| @@ -0,0 +1,89 @@
|
| +// 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_FORMATS_WEBM_WEBM_COLOUR_PARSER_H_
|
| +#define MEDIA_FORMATS_WEBM_WEBM_COLOUR_PARSER_H_
|
| +
|
| +#include "base/macros.h"
|
| +#include "media/base/hdr_metadata.h"
|
| +#include "media/formats/webm/webm_parser.h"
|
| +
|
| +namespace media {
|
| +
|
| +// WebM color information, containing HDR metadata:
|
| +// http://www.webmproject.org/docs/container/#Colour
|
| +struct MEDIA_EXPORT WebMColorMetadata {
|
| + unsigned BitsPerChannel = 0;
|
| + unsigned ChromaSubsamplingHorz = 0;
|
| + unsigned ChromaSubsamplingVert = 0;
|
| + unsigned CbSubsamplingHorz = 0;
|
| + unsigned CbSubsamplingVert = 0;
|
| + unsigned ChromaSitingHorz = 0;
|
| + unsigned ChromaSitingVert = 0;
|
| +
|
| + gfx::ColorSpace color_space;
|
| +
|
| + HDRMetadata hdr_metadata;
|
| +
|
| + WebMColorMetadata();
|
| + WebMColorMetadata(const WebMColorMetadata& rhs);
|
| +};
|
| +
|
| +// 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_ = false;
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(WebMColourParser);
|
| +};
|
| +
|
| +} // namespace media
|
| +
|
| +#endif // MEDIA_FORMATS_WEBM_WEBM_COLOUR_PARSER_H_
|
|
|