Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(208)

Unified Diff: media/base/hdr_metadata.h

Issue 2333663003: Add color metadata info to VideoDecoderConfig. (Closed)
Patch Set: buildfix Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: media/base/hdr_metadata.h
diff --git a/media/base/hdr_metadata.h b/media/base/hdr_metadata.h
new file mode 100644
index 0000000000000000000000000000000000000000..befe0e27a63810a21dceb22e28b1f3e14370d14e
--- /dev/null
+++ b/media/base/hdr_metadata.h
@@ -0,0 +1,309 @@
+// 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_BASE_HDR_METADATA_H_
+#define MEDIA_BASE_HDR_METADATA_H_
+
+#include <cstdint>
+#include "media/base/media_export.h"
+
+namespace media {
+
+// The definitions below are copied from the current libwebm top-of-tree.
+// Chromium's third_party/libwebm doesn't have these yet. We can probably just
+// include libwebm header directly in the future.
+// ---- Begin copy/paste from libwebm/webm_parser/include/webm/dom_types.h ----
+
+/**
+ A parsed \WebMID{MatrixCoefficients} element.
+
+ Matroska/WebM adopted these values from Table 4 of ISO/IEC 23001-8:2013/DCOR1.
+ See that document for further details.
+ */
+enum class MatrixCoefficients : std::uint64_t {
hubbe 2016/09/14 17:34:16 Plase use gfx::ColorSpace
servolk 2016/09/14 22:34:35 Ah, ok, thank for the pointer I didn't know about
hubbe 2016/09/14 22:41:25 We made the range an enum specifically so that we
+ /**
+ The identity matrix.
+
+ Typically used for GBR (often referred to as RGB); however, may also be used
+ for YZX (often referred to as XYZ).
+ */
+ kRgb = 0,
+
+ /**
+ Rec. ITU-R BT.709-5.
+ */
+ kBt709 = 1,
+
+ /**
+ Image characteristics are unknown or are determined by the application.
+ */
+ kUnspecified = 2,
+
+ /**
+ United States Federal Communications Commission Title 47 Code of Federal
+ Regulations (2003) 73.682 (a) (20).
+ */
+ kFcc = 4,
+
+ /**
+ Rec. ITU-R BT.470‑6 System B, G (historical).
+ */
+ kBt470Bg = 5,
+
+ /**
+ Society of Motion Picture and Television Engineers 170M (2004).
+ */
+ kSmpte170M = 6,
+
+ /**
+ Society of Motion Picture and Television Engineers 240M (1999).
+ */
+ kSmpte240M = 7,
+
+ /**
+ YCgCo.
+ */
+ kYCgCo = 8,
+
+ /**
+ Rec. ITU-R BT.2020 (non-constant luminance).
+ */
+ kBt2020NonconstantLuminance = 9,
+
+ /**
+ Rec. ITU-R BT.2020 (constant luminance).
+ */
+ kBt2020ConstantLuminance = 10,
+};
+
+/**
+ A parsed \WebMID{Range} element.
+ */
+enum class Range : std::uint64_t {
+ /**
+ Unspecified.
+ */
+ kUnspecified = 0,
+
+ /**
+ Broadcast range.
+ */
+ kBroadcast = 1,
+
+ /**
+ Full range (no clipping).
+ */
+ kFull = 2,
+
+ /**
+ Defined by MatrixCoefficients/TransferCharacteristics.
+ */
+ kDerived = 3,
+};
+
+/**
+ A parsed \WebMID{TransferCharacteristics} element.
+
+ Matroska/WebM adopted these values from Table 3 of ISO/IEC 23001-8:2013/DCOR1.
+ See that document for further details.
+ */
+enum class TransferCharacteristics : std::uint64_t {
+ /**
+ Rec. ITU-R BT.709-6.
+ */
+ kBt709 = 1,
+
+ /**
+ Image characteristics are unknown or are determined by the application.
+ */
+ kUnspecified = 2,
+
+ /**
+ Rec. ITU‑R BT.470‑6 System M (historical) with assumed display gamma 2.2.
+ */
+ kGamma22curve = 4,
+
+ /**
+ Rec. ITU‑R BT.470-6 System B, G (historical) with assumed display gamma 2.8.
+ */
+ kGamma28curve = 5,
+
+ /**
+ Society of Motion Picture and Television Engineers 170M (2004).
+ */
+ kSmpte170M = 6,
+
+ /**
+ Society of Motion Picture and Television Engineers 240M (1999).
+ */
+ kSmpte240M = 7,
+
+ /**
+ Linear transfer characteristics.
+ */
+ kLinear = 8,
+
+ /**
+ Logarithmic transfer characteristic (100:1 range).
+ */
+ kLog = 9,
+
+ /**
+ Logarithmic transfer characteristic (100 * Sqrt(10) : 1 range).
+ */
+ kLogSqrt = 10,
+
+ /**
+ IEC 61966-2-4.
+ */
+ kIec6196624 = 11,
+
+ /**
+ Rec. ITU‑R BT.1361-0 extended colour gamut system (historical).
+ */
+ kBt1361ExtendedColourGamut = 12,
+
+ /**
+ IEC 61966-2-1 sRGB or sYCC.
+ */
+ kIec6196621 = 13,
+
+ /**
+ Rec. ITU-R BT.2020-2 (10-bit system).
+ */
+ k10BitBt2020 = 14,
+
+ /**
+ Rec. ITU-R BT.2020-2 (12-bit system).
+ */
+ k12BitBt2020 = 15,
+
+ /**
+ Society of Motion Picture and Television Engineers ST 2084.
+ */
+ kSmpteSt2084 = 16,
+
+ /**
+ Society of Motion Picture and Television Engineers ST 428-1.
+ */
+ kSmpteSt4281 = 17,
+
+ /**
+ Association of Radio Industries and Businesses (ARIB) STD-B67.
+ */
+ kAribStdB67Hlg = 18,
+};
+
+/**
+ A parsed \WebMID{Primaries} element.
+
+ Matroska/WebM adopted these values from Table 2 of ISO/IEC 23001-8:2013/DCOR1.
+ See that document for further details.
+ */
+enum class Primaries : std::uint64_t {
+ /**
+ Rec. ITU‑R BT.709-6.
+ */
+ kBt709 = 1,
+
+ /**
+ Image characteristics are unknown or are determined by the application.
+ */
+ kUnspecified = 2,
+
+ /**
+ Rec. ITU‑R BT.470‑6 System M (historical).
+ */
+ kBt470M = 4,
+
+ /**
+ Rec. ITU‑R BT.470‑6 System B, G (historical).
+ */
+ kBt470Bg = 5,
+
+ /**
+ Society of Motion Picture and Television Engineers 170M (2004).
+ */
+ kSmpte170M = 6,
+
+ /**
+ Society of Motion Picture and Television Engineers 240M (1999).
+ */
+ kSmpte240M = 7,
+
+ /**
+ Generic film.
+ */
+ kFilm = 8,
+
+ /**
+ Rec. ITU-R BT.2020-2.
+ */
+ kBt2020 = 9,
+
+ /**
+ Society of Motion Picture and Television Engineers ST 428-1.
+ */
+ kSmpteSt4281 = 10,
+
+ /**
+ JEDEC P22 phosphors/EBU Tech. 3213-E (1975).
+ */
+ kJedecP22Phosphors = 22,
+};
+
+// ---- End copy/paste from libwebm/webm_parser/include/webm/dom_types.h ----
+
+// SMPTE ST 2086 mastering metadata.
+struct MEDIA_EXPORT MasteringMetadata {
+ float PrimaryRChromaticityX = 0;
halliwell 2016/09/14 18:58:40 nit: here and below, not following standard for me
servolk 2016/09/15 01:50:03 Done.
+ float PrimaryRChromaticityY = 0;
+ float PrimaryGChromaticityX = 0;
+ float PrimaryGChromaticityY = 0;
+ float PrimaryBChromaticityX = 0;
+ float PrimaryBChromaticityY = 0;
+ float WhitePointChromaticityX = 0;
+ float WhitePointChromaticityY = 0;
+ float LuminanceMax = 0;
+ float LuminanceMin = 0;
+
+ MasteringMetadata();
+ MasteringMetadata(const MasteringMetadata& rhs);
+};
+
+// HDR metadata common for HDR10 and WebM/VP9-based HDR formats.
+struct MEDIA_EXPORT HDRMetadata {
+ MasteringMetadata mastering_metadata;
+ unsigned MaxCLL = 0;
+ unsigned MaxFALL = 0;
+
+ HDRMetadata();
+ HDRMetadata(const HDRMetadata& rhs);
+};
+
+// WebM color information, containing HDR metadata:
+// http://www.webmproject.org/docs/container/#Colour
+struct MEDIA_EXPORT ColorMetadata {
halliwell 2016/09/14 18:58:40 nit, shouldn't the file be called color_metadata?
servolk 2016/09/14 22:34:35 I'm actually not sure about it yes, since this Col
+ MatrixCoefficients matrix_coefficients = MatrixCoefficients::kUnspecified;
+ unsigned BitsPerChannel = 0;
+ unsigned ChromaSubsamplingHorz = 0;
+ unsigned ChromaSubsamplingVert = 0;
+ unsigned CbSubsamplingHorz = 0;
+ unsigned CbSubsamplingVert = 0;
+ unsigned ChromaSitingHorz = 0;
+ unsigned ChromaSitingVert = 0;
+ Range range = Range::kUnspecified;
+ TransferCharacteristics transfer_characteristics =
+ TransferCharacteristics::kUnspecified;
+ Primaries primaries = Primaries::kUnspecified;
+
+ HDRMetadata hdr_metadata;
+
+ ColorMetadata();
+ ColorMetadata(const ColorMetadata& rhs);
+};
+
+} // namespace media
+
+#endif // MEDIA_BASE_HDR_METADATA_H_
« no previous file with comments | « media/base/BUILD.gn ('k') | media/base/hdr_metadata.cc » ('j') | media/base/hdr_metadata.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698