[FFmpeg-devel] AVFrame.color_trc wrong since f2ad6238e4c0e99e2fc131ee14c586e87b045680

Pavel Koshevoy pkoshevoy at gmail.com
Wed Sep 16 04:57:10 EEST 2020


set_side_data used to do out->color_trc =
s->sei.alternative_transfer.preferred_transfer_characteristics;

In commit f2ad6238e4c0e99e2fc131ee14c586e87b045680 this was removed.
Now ffprobe of an HLG stream reports wrong transfer characteristics for
each frame:

```
$ ffprobe -show_frames 20190914-1435_iowa_vs_iowa-state_fox-cfb-dertp.ts |
grep color_transfer= | head

ffprobe version N-99190-g7cc8a2b Copyright (c) 2007-2020 the FFmpeg
developers
  built with gcc 8 (Ubuntu 8.4.0-1ubuntu1~16.04.1)
  configuration: --prefix=/home/xyz/x86_64 --enable-rpath --enable-shared
--disable-static --disable-stripping --enable-libfreetype
--enable-libfontconfig --enable-libfribidi --enable-libass
--enable-libmodplug --enable-openssl --enable-ffnvcodec --enable-cuda
--extra-ldflags='-L/home/xyz/x86_64/lib -L/usr/local/cuda/lib64'
--extra-cflags='-I/home/xyz/x86_64/include -I/usr/local/cuda/include'
  libavutil      56. 59.100 / 56. 59.100
  libavcodec     58.106.100 / 58.106.100
  libavformat    58. 56.100 / 58. 56.100
  libavdevice    58. 11.102 / 58. 11.102
  libavfilter     7. 87.100 /  7. 87.100
  libswscale      5.  8.100 /  5.  8.100
  libswresample   3.  8.100 /  3.  8.100
[hevc @ 0xb78b00] PPS id out of range: 0
    Last message repeated 1 times
[hevc @ 0xb78b00] Error parsing NAL unit #2.
[hevc @ 0xb78b00] PPS id out of range: 0
    Last message repeated 1 times
[hevc @ 0xb78b00] Error parsing NAL unit #2.
[hevc @ 0xb78b00] PPS id out of range: 0
    Last message repeated 1 times
[hevc @ 0xb78b00] Error parsing NAL unit #2.
[hevc @ 0xb78b00] PPS id out of range: 0
    Last message repeated 1 times
[hevc @ 0xb78b00] Error parsing NAL unit #2.
[hevc @ 0xb78b00] PPS id out of range: 0
    Last message repeated 1 times
[hevc @ 0xb78b00] Error parsing NAL unit #2.
[hevc @ 0xb78b00] PPS id out of range: 0
    Last message repeated 1 times
[hevc @ 0xb78b00] Error parsing NAL unit #2.
[hevc @ 0xb78b00] PPS id out of range: 0
    Last message repeated 1 times
[hevc @ 0xb78b00] Error parsing NAL unit #2.
[mpegts @ 0xb72c40] PES packet size mismatch





[mpegts @ 0xb72c40] Packet corrupt (stream = 2, dts = 3870328878).





[mpegts @ 0xb72c40] PES packet size mismatch





[mpegts @ 0xb72c40] Packet corrupt (stream = 1, dts = 3870334067).
[mpegts @ 0xb72c40] PES packet size mismatch
[mpegts @ 0xb72c40] Packet corrupt (stream = 2, dts = 3870328878).
[mpegts @ 0xb72c40] stream 0 : no PTS found at end of file, duration not set
Input #0, mpegts, from '20190914-1435_iowa_vs_iowa-state_fox-cfb-dertp.ts':
  Duration: 00:05:00.05, start: 42703.686200, bitrate: 70429 kb/s
  Program 1
    Stream #0:0[0x3ff]: Video: hevc (Main 10) ([36][0][0][0] / 0x0024),
yuv420p10le(tv, bt2020nc/bt2020/arib-std-b67), 3840x2160 [SAR 1:1 DAR
16:9], 59.94 fps, 59.94 tbr, 90k tbn, 59.94 tbc
    Stream #0:1[0x400](eng): Audio: aac (LC) ([15][0][0][0] / 0x000F),
48000 Hz, stereo, fltp, 126 kb/s
    Stream #0:2[0x401](eng): Audio: eac3 ([129][0][0][0] / 0x0081), 48000
Hz, 5.1(side), fltp, 384 kb/s
[hevc @ 0xba2d80] Could not find ref with POC -40
[hevc @ 0xba2d80] Could not find ref with POC -48
[hevc @ 0xba2d80] Could not find ref with POC -32
[hevc @ 0xba2d80] First slice in a frame missing.
    Last message repeated 34 times
[aac @ 0xba1200] channel element 2.4 is not allocated
color_transfer=bt2020-10
color_transfer=bt2020-10
color_transfer=bt2020-10
color_transfer=bt2020-10
color_transfer=bt2020-10
color_transfer=bt2020-10
color_transfer=bt2020-10
color_transfer=bt2020-10
color_transfer=bt2020-10
color_transfer=bt2020-10
^C

```

that should be color_transfer=arib-std-b67

Would anyone object if I restored previous behavior?  I'd prefer avoid
reimplementing SEI parsing outside of libav just to get the correct
per-frame color_trc...

Thank you,
    Pavel.


More information about the ffmpeg-devel mailing list