[Matroska-devel] [Cellar] Colour Format proposal
Frank Galligan via Matroska-devel
matroska-devel at lists.matroska.org
Thu Feb 11 19:32:30 CET 2016
On Mon, Feb 8, 2016 at 2:23 PM, Frank Galligan <frankgalligan at gmail.com>
wrote:
>
>
> On Mon, Feb 8, 2016 at 9:15 AM, Jerome Martinez <jerome at mediaarea.net>
> wrote:
>
>> Sorry for the late answer, here are my comments:
>>
>> On 22/01/2016 23:54, Frank Galligan wrote:
>>
>> [...]
>>
>> - I know some people expressed that they don't think starting from FFmpeg
>> for the TransferFunction is a good idea as they might have got something
>> wrong or too subjective. But I just used it as a starting point for a list.
>> I can reorder the list however we want. I also don't think following
>> another list, so we will be compatible with future additions, will give us
>> what we want as that list most likely will be incomplete with something
>> that is defined only in a different list. So should we just start with a
>> list, re-order it (so we are not explicitly following it), then add what is
>> currently missing? Then in the future if someone needs to add something to
>> the list it can be brought up here?
>>
>>
>> That was me.
>> I am OK with that as long as we are clear that we don't follow FFmpeg
>> list.
>>
> OK, I changed the text to see ISO/IEC 23001-8 document, which has the same
> values as FFmpeg as well as the 264 ITU doc.
>
>>
>>
>> [...]
>>
>> Element Name: Matrix
>>
>> Level: 5
>>
>> ID: [55][A1]
>>
>> Mandatory: -
>>
>> Multiple: -
>>
>> Default: 2
>>
>> Type: u
>>
>> Description: Colour Matrix of the video. (0: IEC 61966-2-1 (sRGB), 1:
>> BT709,
>>
>> 2: Unspecified, 3: Reserved, 4: FCC, 5: BT470BG, 6: SMPTE
>> 170M,
>>
>> 7: SMPTE 240M, 8: YCOCG, 9: BT2020 Non-constant Luminance,
>>
>> 10: BT2020 Constant Luminance)
>>
>>
>>
>> If we don't follow FFmpeg list, what is the purpose of value 3 and why
>> unspecified is 2 rather than 0?
>>
> That is the way it is specified in ISO/IEC 23001-8 and 264 ITU doc.
>
> Using FFmpeg list (which is based on MPEG list, with same oddities) is not
>> bad, and I am not against it, just wondering if it is good to take the same
>> oddities rather than a clean list without oddities.
>>
> I don't think there are any oddities. Looks like FFmpeg's list matches
> exactly to ISO/IEC 23001-8 and 264 ITU doc, except for #10 in Primaries
> and #16 and #17 in Transfer function, which were added here [1]. Also #18
> in Transfer, which is HLG [2].
>
> I think this is the whole issue. Do we follow some list (standardized or
> not)? What if the list goes stale? What if the list doesn't include
> algorithms from different lists (E.g. maybe HLG)?
>
>
>
>> Does anyone plan to transfer from DPX? If yes, we may need to add now
>> missing elements in the list (e.g. "Printing density") but I am not expert
>> enough for know which one is worth it.
>>
>>
>>
>>
>> [...]
>>
>>
>> Element Name: ChromaSubsampling
>>
>> Level: 5
>>
>> ID: [55][A3]
>>
>> Mandatory: -
>>
>> Multiple: -
>>
>> Default: 0
>>
>> Type: u
>>
>> Description: (0: Unspecified, 1: 4:4:4, 2: 4:4:0, 3: 4:2:2, 4: 4:2:1, 5:
>> 4:2:0,
>>
>> 6: 4:1:1, 7: 4:1:0, 8: 3:1:1)
>>
>>
>> I am more, as some other people, for something more generic, e.g.
>> ChromaSubsamplingHorz and ChromaSubsamplingVert, with a value of the
>> subsampling (0 unspecified and default). I am afraid that someone crazy
>> used e.g. a vertical subsampling of 4 (which can not be defined by X:X:X
>> values), it is possible (and I have a file like that if I remember well)
>> with FFV1.
>>
>>
>>
>>
>> [...]
>>
>> Element Name: TransferFunction
>>
>> Level: 5
>>
>> ID: [55][A7]
>>
>> Mandatory: -
>>
>> Multiple: -
>>
>> Default: 2
>>
>> Type: u
>>
>> Description: Transfer Function. (0: Reserved, 1: ITU-R BT.709, 2:
>> Unspecified,
>>
>> 4: Gamma 2.2 curve, 5: Gamma 2.8 curve, 6: SMPTE 170M,
>>
>> 7: SMPTE 240M, 8: Linear, 9: Log, 10: Log Sqrt,
>>
>> 11: IEC 61966-2-4, 12: ITU-R BT.1361 Extended Colour Gamut,
>>
>> 13: IEC 61966-2-1, 14: ITU-R BT.2020 10 bit,
>>
>> 15: ITU-R BT.2020 12 bit, 16: SMPTE ST 2084,
>>
>> 17: SMPTE ST 428-1 18: ARIB STD-B67 (HLG))
>>
>>
>> Element Name: Primaries
>>
>> Level: 5
>>
>> Mandatory: -
>>
>> Multiple: -
>>
>> ID: [55][A8]
>>
>> Default: 2
>>
>> Description: (0: Reserved, 1: ITU-R BT.709, 2: Unspecified, 4: ITU-R
>> BT.470M,
>>
>> 5: ITU-R BT.470BG, 6: SMPTE 170M, 7: SMPTE 240M, 8: FILM,
>>
>> 9: ITU-R BT.2020, 10: SMPTE ST 428-1)
>>
>>
>> Same remark as with Matrix.
>>
>>
>> [...]
>>
>>
>>
> [1]
> https://github.com/FFmpeg/FFmpeg/commit/c3cd6dd106b1381933e2f24898eeec0d8aa17746
> [2] http://www.arib.or.jp/english/html/overview/std-b67.html
>
>
>
So this is what I have currently:
The parent element would be Video [E0].
Element Name: Colour
Level: 4
ID: [55][B0]
Mandatory: -
Multiple: -
Default: -
Type: m
Description: Settings describing the colour format.
Element Name: Matrix
Level: 5
ID: [55][B1]
Mandatory: -
Multiple: -
Default: 2
Type: u
Description: ColourMatrix of the video. See ISO/IEC 23001-8 for more
information on enumerations. (0: IEC 61966-2-1 (sRGB), 1:
BT709,
2: Unspecified, 3: Reserved, 4: FCC, 5: BT470BG, 6: SMPTE 170M,
7: SMPTE 240M, 8: YCOCG, 9: BT2020 Non-constant Luminance,
10: BT2020 Constant Luminance)
Element Name: BitsPerChannel
Level: 5
ID: [55][B2]
Mandatory: -
Multiple: -
Default: 0
Type: u
Description: Number of decoded bits per channel. This number may be less
for
specific channels depending on the Matrix and
ChromaSubsampling. A
value of 0 is unspecified.
Element Name: ChromaSubsamplingHorz
Level: 5
ID: [55][B3]
Mandatory: -
Multiple: -
Default: -
Type: u
Description: The amount of chrominance pixels to remove for every
chrominance
pixel not removed horizontally.
Element Name: ChromaSubsamplingVert
Level: 5
ID: [55][B4]
Mandatory: -
Multiple: -
Default: -
Type: u
Description: The amount of chrominance pixels to remove for every
chrominance
pixel not removed vertically.
Element Name: CbSubsamplingHorz
Level: 5
ID: [55][B5]
Mandatory: -
Multiple: -
Default: -
Type: u
Description: The amount of Cb chrominance pixels to remove for every Cb
chrominance pixel not removed horizontally. This is additive
with
ChromaSubsamplingHorz.
Element Name: CbSubsamplingVert
Level: 5
ID: [55][B6]
Mandatory: -
Multiple: -
Default: -
Type: u
Description: The amount of Cb chrominance pixels to remove for every Cb
chrominance pixel not removed vertically. This is additive with
ChromaSubsamplingVert.
Element Name: ChromaSitingHorz
Level: 5
ID: [55][B7]
Mandatory: -
Multiple: -
Default: 0
Type: u
Description: How Chroma is subsampled horizontally. (0: Unspecified, 1:
Left
collocated , 2: Half)
Element Name: ChromaSitingVert
Level: 5
ID: [55][B8]
Mandatory: -
Multiple: -
Default: 0
Type: u
Description: How Chroma is subsampled vertically. (0: Unspecified, 1: Top
collocated , 2: Half)
Element Name: Range
Level: 5
ID: [55][B9]
Mandatory: -
Multiple: -
Default: 0
Type: u
Description: Clipping of the color ranges. (0: Unspecified, 1: Broadcast
range,
2: Full range (no clipping), 3: Defined by
Matrix/TransferFunction)
Element Name: TransferFunction
Level: 5
ID: [55][BA]
Mandatory: -
Multiple: -
Default: 2
Type: u
Description: Transfer Function. See ISO/IEC 23001-8 for more information on
enumerations. (0: Reserved, 1: ITU-R BT.709, 2: Unspecified,
3: Reserved, 4: Gamma 2.2 curve, 5: Gamma 2.8 curve,
6: SMPTE 170M, 7: SMPTE 240M, 8: Linear, 9: Log, 10: Log Sqrt,
11: IEC 61966-2-4, 12: ITU-R BT.1361 Extended Colour Gamut,
13: IEC 61966-2-1, 14: ITU-R BT.2020 10 bit,
15: ITU-R BT.2020 12 bit, 16: SMPTE ST 2084,
17: SMPTE ST 428-1 18: ARIB STD-B67 (HLG))
Element Name: Primaries
Level: 5
Mandatory: -
Multiple: -
ID: [55][BB]
Default: 2
Type: u
Description: Values that can be represented in the CIE 1931 colour space.
See
ISO/IEC 23001-8 for more information on enumerations.
(0: Reserved, 1: ITU-R BT.709, 2: Unspecified, 3: Reserved,
4: ITU-R BT.470M, 5: ITU-R BT.470BG, 6: SMPTE 170M, 7: SMPTE
240M,
8: FILM, 9: ITU-R BT.2020, 10: SMPTE ST 428-1)
Element Name: MaxCLL
Level: 5
ID: [55][BC]
Mandatory: -
Multiple: -
Default: -
Type: u
Description: Maximum brightness of a single pixel in candelas per square
meter (cd/m²).
Element Name: MaxFALL
Level: 5
ID: [55][BD]
Mandatory: -
Multiple: -
Default: -
Type: u
Description: Maximum brightness of a single full frame in candelas per
square
meter (cd/m²).
Element Name: MasteringMetadata
Level: 5
ID: [55][D0]
Mandatory: -
Multiple: -
Default: -
Type: m
Description: SMPTE 2086 mastering data.
Element Name: PrimaryRChromaticityX
Level: 6
ID: [55][D1]
Mandatory: -
Multiple: -
Range: 0 <= f <= 1
Default: -
Type: f
Description: Red X chromaticity coordinate as defined by CIE 1931.
Element Name: PrimaryRChromaticityY
Level: 6
ID: [55][D2]
Mandatory: -
Multiple: -
Range: 0 <= f <= 1
Default: -
Type: f
Description: Red Y chromaticity coordinate as defined by CIE 1931.
Element Name: PrimaryGChromaticityX
Level: 6
ID: [55][D3]
Mandatory: -
Multiple: -
Range: 0 <= f <= 1
Default: -
f
Description: Green X chromaticity coordinate as defined by CIE 1931.
Element Name: PrimaryGChromaticityY
Level: 6
ID: [55][D4]
Mandatory: -
Multiple: -
Range: 0 <= f <= 1
Default: -
Type: f
Description: Green Y chromaticity coordinate as defined by CIE 1931.
Element Name: PrimaryBChromaticityX
Level: 6
ID: [55][D5]
Mandatory: -
Multiple: -
Range: 0 <= f <= 1
Default: -
f
Description: Blue X chromaticity coordinate as defined by CIE 1931.
Element Name: PrimaryBChromaticityY
Level: 6
ID: [55][D6]
Mandatory: -
Multiple: -
Range: 0 <= f <= 1
Default: -
Type: f
Description: Blue Y chromaticity coordinate as defined by CIE 1931.
Element Name: WhitePointChromaticityX
Level: 6
ID: [55][D7]
Mandatory: -
Multiple: -
Range: 0 <= f <= 1
Default: -
Type: f
Description: White point X chromaticity coordinate as defined by CIE 1931.
Element Name: WhitePointChromaticityY
Level: 6
ID: [55][D8]
Mandatory: -
Multiple: -
Range: 0 <= f <= 1
Default: -
Type: f
Description: White point Y chromaticity coordinate as defined by CIE 1931.
Element Name: LuminanceMax
Level: 6
ID: [55][D9]
Mandatory: -
Multiple: -
Range: 0 <= f <= 9999.99
Default: -
Type: f
Description: Maximum luminance. Shall be represented in candelas per square
meter (cd/m²).
Element Name: LuminanceMin
Level: 6
ID: [55][DA]
Mandatory: -
Multiple: -
Range: 0 <= f <= 999.9999
Default: -
Type: f
Description: Minimum luminance. Shall be represented in candelas per square
meter (cd/m²).
I removed ChromaSubsampling and added ChromaSubsamplingHorz,
ChromaSubsamplingVert, CbSubsamplingHorz, and CbSubsamplingVert.
This is how I think the elements should be written for the different
subsampling types:
1: 4:4:4
- ChromaSubsamplingHorz and ChromaSubsamplingVert will not be set as
there should be no chroma subsampling.
2: 4:4:0
- ChromaSubsamplingHorz :not set
- ChromaSubsamplingVert :1
3: 4:2:2
- ChromaSubsamplingHorz :1
- ChromaSubsamplingVert :not set
4: 4:2:1
- ChromaSubsamplingHorz :1
- ChromaSubsamplingVert :not set
- CbSubsamplingHorz :1
- CbSubsamplingVert :not set
- We could remove CbSubsamplingHorz and CbSubsamplingVert if we didn't
care about handling formats where the Cr and Cb channels are different
sizes.
5: 4:2:0
- ChromaSubsamplingHorz :1
- ChromaSubsamplingVert :1
6: 4:1:1
- ChromaSubsamplingHorz :3
- ChromaSubsamplingVert :not set
7: 4:1:0
- ChromaSubsamplingHorz :3
- ChromaSubsamplingVert :1
8: 3:1:1
- ChromaSubsamplingHorz :2
- ChromaSubsamplingVert :not set
- I'm assuming the luma subsampling can be handled by PixelWidth, and
DisaplyWidth.
Jerome's vertical subsampling of 4
- ChromaSubsamplingHorz :not set
- ChromaSubsamplingVert :3
The other issue I want to bring up is the value of "18: ARIB STD-B67 (HLG)"
in TransferFunction. Unfortunately, in WebM we will need to use this value
sooner than Matroska v4 will be finalized. Should I make this value much
higher? Or leave at 18? I think "16: SMPTE ST 2084" and "17: SMPTE ST 428-1"
will be standardized across most documents, like 1-15 are. Just not sure if
18 will be HLG.
Thanks,
Frank
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.matroska.org/pipermail/matroska-devel/attachments/20160211/910c85fe/attachment-0001.html>
More information about the Matroska-devel
mailing list