summaryrefslogtreecommitdiffstats
path: root/TOOLS
diff options
context:
space:
mode:
authorNiklas Haas <git@haasn.xyz>2016-11-08 02:24:49 +0100
committerwm4 <wm4@nowhere>2016-11-08 19:16:24 +0100
commit81ceb7b6a57422e5d05593d49b14d99479f266a0 (patch)
tree4823fb314e6d6f50304a682a11665f0cf7896a56 /TOOLS
parent33012b4141fda7aaa35ba3eee32f31265ed837cc (diff)
downloadmpv-81ceb7b6a57422e5d05593d49b14d99479f266a0.tar.bz2
mpv-81ceb7b6a57422e5d05593d49b14d99479f266a0.tar.xz
demux_mkv: parse colorimetry metadata
Matroska actually has lots of colorimetry metadata that video tracks can use, including mastering metadata (HDR signal peak) etc. This commit adds the EBML definitions and parses the most basic fields. Note that nothing uses these fields yet, this commit is just adding the necessary parsing and infrastructure.
Diffstat (limited to 'TOOLS')
-rw-r--r--TOOLS/lib/Parse/Matroska/Definitions.pm27
1 files changed, 27 insertions, 0 deletions
diff --git a/TOOLS/lib/Parse/Matroska/Definitions.pm b/TOOLS/lib/Parse/Matroska/Definitions.pm
index a73c7b1fc6..5a5adcd6de 100644
--- a/TOOLS/lib/Parse/Matroska/Definitions.pm
+++ b/TOOLS/lib/Parse/Matroska/Definitions.pm
@@ -269,6 +269,33 @@ sub define_matroska {
elem('FrameRate', '2383e3', 'float'),
elem('ColourSpace', '2eb524', 'binary'),
elem('StereoMode', '53b8', 'uint'),
+ elem('Colour', '55B0', {
+ elem('MatrixCoefficients', '55B1', 'uint'),
+ elem('BitsPerChannel', '55B2', 'uint'),
+ elem('ChromaSubsamplingHorz', '55B3', 'uint'),
+ elem('ChromaSubsamplingVert', '55B4', 'uint'),
+ elem('CbSubsamplingHorz', '55B5', 'uint'),
+ elem('CbSubsamplingVert', '55B6', 'uint'),
+ elem('ChromaSitingHorz', '55B7', 'uint'),
+ elem('ChromaSitingVert', '55B8', 'uint'),
+ elem('Range', '55B9', 'uint'),
+ elem('TransferCharacteristics', '55BA', 'uint'),
+ elem('Primaries', '55BB', 'uint'),
+ elem('MaxCLL', '55BC', 'uint'),
+ elem('MaxFALL', '55BD', 'uint'),
+ elem('MasteringMetadata', '55D0', {
+ elem('PrimaryRChromaticityX', '55D1', 'float'),
+ elem('PrimaryRChromaticityY', '55D2', 'float'),
+ elem('PrimaryGChromaticityX', '55D3', 'float'),
+ elem('PrimaryGChromaticityY', '55D4', 'float'),
+ elem('PrimaryBChromaticityX', '55D5', 'float'),
+ elem('PrimaryBChromaticityY', '55D6', 'float'),
+ elem('WhitePointChromaticityX', '55D7', 'float'),
+ elem('WhitePointChromaticityY', '55D8', 'float'),
+ elem('LuminanceMax', '55D9', 'float'),
+ elem('LuminanceMin', '55DA', 'float'),
+ }),
+ }),
}),
elem('Audio', 'e1', {
elem('SamplingFrequency', 'b5', 'float'),