| // Copyright (c) 2016 The WebM project authors. All Rights Reserved. | 
 | // | 
 | // Use of this source code is governed by a BSD-style license | 
 | // that can be found in the LICENSE file in the root of the source | 
 | // tree. An additional intellectual property rights grant can be found | 
 | // in the file PATENTS.  All contributing project authors may | 
 | // be found in the AUTHORS file in the root of the source tree. | 
 | #ifndef LIBWEBM_COMMON_HDR_UTIL_H_ | 
 | #define LIBWEBM_COMMON_HDR_UTIL_H_ | 
 |  | 
 | #include <stdint.h> | 
 |  | 
 | #include <memory> | 
 |  | 
 | #include "mkvmuxer/mkvmuxer.h" | 
 |  | 
 | namespace mkvparser { | 
 | struct Colour; | 
 | struct MasteringMetadata; | 
 | struct PrimaryChromaticity; | 
 | }  // namespace mkvparser | 
 |  | 
 | namespace libwebm { | 
 | // Utility types and functions for working with the Colour element and its | 
 | // children. Copiers return true upon success. Presence functions return true | 
 | // when the specified element is present. | 
 |  | 
 | // TODO(tomfinegan): These should be moved to libwebm_utils once c++11 is | 
 | // required by libwebm. | 
 |  | 
 | // Features of the VP9 codec that may be set in the CodecPrivate of a VP9 video | 
 | // stream. A value of kValueNotPresent represents that the value was not set in | 
 | // the CodecPrivate. | 
 | struct Vp9CodecFeatures { | 
 |   static const int kValueNotPresent; | 
 |  | 
 |   Vp9CodecFeatures() | 
 |       : profile(kValueNotPresent), | 
 |         level(kValueNotPresent), | 
 |         bit_depth(kValueNotPresent), | 
 |         chroma_subsampling(kValueNotPresent) {} | 
 |   ~Vp9CodecFeatures() {} | 
 |  | 
 |   int profile; | 
 |   int level; | 
 |   int bit_depth; | 
 |   int chroma_subsampling; | 
 | }; | 
 |  | 
 | typedef std::unique_ptr<mkvmuxer::PrimaryChromaticity> PrimaryChromaticityPtr; | 
 |  | 
 | bool CopyPrimaryChromaticity(const mkvparser::PrimaryChromaticity& parser_pc, | 
 |                              PrimaryChromaticityPtr* muxer_pc); | 
 |  | 
 | bool MasteringMetadataValuePresent(double value); | 
 |  | 
 | bool CopyMasteringMetadata(const mkvparser::MasteringMetadata& parser_mm, | 
 |                            mkvmuxer::MasteringMetadata* muxer_mm); | 
 |  | 
 | bool ColourValuePresent(long long value); | 
 |  | 
 | bool CopyColour(const mkvparser::Colour& parser_colour, | 
 |                 mkvmuxer::Colour* muxer_colour); | 
 |  | 
 | // Returns true if |features| is set to one or more valid values. | 
 | bool ParseVpxCodecPrivate(const uint8_t* private_data, int32_t length, | 
 |                           Vp9CodecFeatures* features); | 
 |  | 
 | }  // namespace libwebm | 
 |  | 
 | #endif  // LIBWEBM_COMMON_HDR_UTIL_H_ |