Extracting frames from HDR video to PNG format - question about PQ nonlinearity [txt]

classic Classic list List threaded Threaded
4 messages Options
Reply | Threaded
Open this post in threaded view
|

Extracting frames from HDR video to PNG format - question about PQ nonlinearity [txt]

Michał Kudelski
[sorry for my previous post - had some problems with my mail client
and text formatting...]

I have an input video file in HDR format (BT.2020 colors, PQ transfer
function according to SMPTE ST 2084; more details attached below). I
am extracting frames to 16-bit PNG files using the following command:

ffmpeg -i <input> -pix_fmt rgb48be -s:v 1920x1080 -color_primaries 9
-color_trc 16 -colorspace 9 -color_range 1 ../frame_%06d.png

The info about an example output PNG file is also attached below.

My question is: what is the "nonlinearity" of the data in my output PNG file?
What I need to do is to linearize the RGB data from the PNG file (for
further processing). Should I assume that:
a) I need to execute the "de-gamma" transform as for typical sRGB data
(as in https://en.wikipedia.org/wiki/SRGB)
or:
b) I need to execute the "de-2084" transform (using appropriate PQ
(perceptual quantizer) equations)
or:
c) other?

In other words, how ffmpeg works in this case:
a) does it transform the ST 2084 PQ-based nonlinearity (input video)
into sRGB gamma-based nonlinearity (output PNG)?
or:
b) does it simply put ST 2084 PQ-based nonlinear data into the output
PNG file (without changing the nonlinearity)?
or:
c) other?

Any information is welcome. Any reference to the documentation or the
source code is very welcome :-)


======================================================================
HDR video file info (acquired with 'mediainfo' command, filtered):
======================================================================
Format : HEVC
Format/Info : High Efficiency Video Coding
Format profile : Main 10@L5.1@High
HDR format : SMPTE ST 2086, HDR10 compatible
Codec ID : V_MPEGH/ISO/HEVC
Bit rate : 52.7 Mb/s
Frame rate : 23.976 (24000/1001) FPS
Color space : YUV
Chroma subsampling : 4:2:0 (Type 2)
Bit depth : 10 bits
Color range : Limited
Color primaries : BT.2020
Transfer characteristics : PQ
Matrix coefficients : BT.2020 non-constant

======================================================================
Output PNG file info (acquired with 'identify -verbose' command)
======================================================================
Image: HP_003240.png
  Format: PNG (Portable Network Graphics)
  Mime type: image/png
  Class: DirectClass
  Geometry: 1920x1080+0+0
  Units: Undefined
  Colorspace: sRGB
  Type: TrueColor
  Base type: Undefined
  Endianess: Undefined
  Depth: 16-bit
  Channel depth:
    Red: 16-bit
    Green: 16-bit
    Blue: 16-bit
  Channel statistics:
    Pixels: 2073600
    Red:
      min: 0  (0)
      max: 37661 (0.57467)
      mean: 8491.55 (0.129573)
      standard deviation: 7453.65 (0.113735)
      kurtosis: -1.04893
      skewness: 0.435634
      entropy: 0.776201
    Green:
      min: 0  (0)
      max: 38149 (0.582116)
      mean: 8885.71 (0.135587)
      standard deviation: 7841.78 (0.119658)
      kurtosis: -1.12391
      skewness: 0.418303
      entropy: 0.77953
    Blue:
      min: 0  (0)
      max: 38345 (0.585107)
      mean: 9488.9 (0.144791)
      standard deviation: 8624.84 (0.131607)
      kurtosis: -1.06718
      skewness: 0.498124
      entropy: 0.78175
  Image statistics:
    Overall:
      min: 0  (0)
      max: 38345 (0.585107)
      mean: 8955.39 (0.13665)
      standard deviation: 7973.43 (0.121667)
      kurtosis: -1.02099
      skewness: 0.475895
      entropy: 0.77916
  Rendering intent: Perceptual
  Gamma: 0.454545
  Chromaticity:
    red primary: (0.64,0.33)
    green primary: (0.3,0.6)
    blue primary: (0.15,0.06)
    white point: (0.3127,0.329)
  Matte color: grey74
  Background color: white
  Border color: srgb(223,223,223)
  Transparent color: none
  Interlace: None
  Intensity: Undefined
  Compose: Over
  Page geometry: 1920x1080+0+0
  Dispose: Undefined
  Iterations: 0
  Compression: Zip
  Orientation: Undefined
  Properties:
    date:create: 2019-10-28T11:22:07+01:00
    date:modify: 2019-10-25T20:20:32+02:00
    png:IHDR.bit-depth-orig: 16
    png:IHDR.bit_depth: 16
    png:IHDR.color-type-orig: 2
    png:IHDR.color_type: 2 (Truecolor)
    png:IHDR.interlace_method: 0 (Not interlaced)
    png:IHDR.width,height: 1920, 1080
    png:pHYs: x_res=0, y_res=1, units=0
    png:sRGB: intent=0 (Perceptual Intent)
    signature: c6850dd1d1e52091ea76c987a99a527c8151b8c00108d7373586bbae3317a63f
  Artifacts:
    verbose: true
  Tainted: False
  Filesize: 8.2234MiB
  Number pixels: 2073600
  Pixels per second: 4.06588MP
  User time: 0.210u
  Elapsed time: 0:01.509
  Version: ImageMagick 7.0.8-12 Q16 x86_64 2018-09-25 https://imagemagick.org
======================================================================
_______________________________________________
ffmpeg-user mailing list
[hidden email]
https://ffmpeg.org/mailman/listinfo/ffmpeg-user

To unsubscribe, visit link above, or email
[hidden email] with subject "unsubscribe".
Reply | Threaded
Open this post in threaded view
|

Re: Extracting frames from HDR video to PNG format - question about PQ nonlinearity [txt]

Carl Eugen Hoyos-2
Am Do., 23. Jan. 2020 um 15:44 Uhr schrieb Michał Kudelski
<[hidden email]>:
>
> [sorry for my previous post - had some problems with my mail client
> and text formatting...]

We saw it...

FFmpeg does not (yet) support HDR10, the colour space transformation
is done as if the input were not HDR (but just 10bit yuv).

Carl Eugen
_______________________________________________
ffmpeg-user mailing list
[hidden email]
https://ffmpeg.org/mailman/listinfo/ffmpeg-user

To unsubscribe, visit link above, or email
[hidden email] with subject "unsubscribe".
Reply | Threaded
Open this post in threaded view
|

Re: Extracting frames from HDR video to PNG format - question about PQ nonlinearity [txt]

Michał Kudelski
czw., 23 sty 2020 o 15:47 Carl Eugen Hoyos <[hidden email]> napisał(a):
>
> FFmpeg does not (yet) support HDR10, the colour space transformation
> is done as if the input were not HDR (but just 10bit yuv).
>
> Carl Eugen
>

Thanks for this information Carl!

Could you please give me a hint where to find the exact equations of
transformations made when converting 10bit yuv to 16bit RGB/sRGB in
the output PNG file? (e.g. reference to ffmpeg documentation or place
in the source code)

czw., 23 sty 2020 o 15:47 Carl Eugen Hoyos <[hidden email]> napisał(a):

>
> Am Do., 23. Jan. 2020 um 15:44 Uhr schrieb Michał Kudelski
> <[hidden email]>:
> >
> > [sorry for my previous post - had some problems with my mail client
> > and text formatting...]
>
> We saw it...
>
> FFmpeg does not (yet) support HDR10, the colour space transformation
> is done as if the input were not HDR (but just 10bit yuv).
>
> Carl Eugen
> _______________________________________________
> ffmpeg-user mailing list
> [hidden email]
> https://ffmpeg.org/mailman/listinfo/ffmpeg-user
>
> To unsubscribe, visit link above, or email
> [hidden email] with subject "unsubscribe".
_______________________________________________
ffmpeg-user mailing list
[hidden email]
https://ffmpeg.org/mailman/listinfo/ffmpeg-user

To unsubscribe, visit link above, or email
[hidden email] with subject "unsubscribe".
Reply | Threaded
Open this post in threaded view
|

Re: Extracting frames from HDR video to PNG format - question about PQ nonlinearity [txt]

Carl Eugen Hoyos-2


> Am 24.01.2020 um 09:57 schrieb Michał Kudelski <[hidden email]>:
>
> czw., 23 sty 2020 o 15:47 Carl Eugen Hoyos <[hidden email]> napisał(a):
>>
>> FFmpeg does not (yet) support HDR10, the colour space transformation
>> is done as if the input were not HDR (but just 10bit yuv).
>
> Could you please give me a hint where to find the exact equations of
> transformations made when converting 10bit yuv to 16bit RGB/sRGB in
> the output PNG file?

See http://git.videolan.org/?p=ffmpeg.git;a=blob;f=libswscale/yuv2rgb.c

Carl Eugen
_______________________________________________
ffmpeg-user mailing list
[hidden email]
https://ffmpeg.org/mailman/listinfo/ffmpeg-user

To unsubscribe, visit link above, or email
[hidden email] with subject "unsubscribe".