[FFmpeg-devel] AVFrame.color_trc wrong since f2ad6238e4c0e99e2fc131ee14c586e87b045680

Pavel Koshevoy pkoshevoy at gmail.com
Wed Sep 16 07:06:00 EEST 2020


On Tue, Sep 15, 2020, 21:25 James Almer <jamrial at gmail.com> wrote:

> On 9/15/2020 10:57 PM, Pavel Koshevoy wrote:
> > 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...
>
> Yes, the point of the change was to set color_trc before the frame
> buffers were allocated, so a full revert would break that.
>


I don't think I understand what color_trc has to do with buffers... it's
not a buffer property (it does not affect the size or layout of the buffer).

I wasn't planning on a full revert, just want to restore what was removed
from set_side_data.



> Can you share the sample that reproduces this?
>


I may be able to share a short chunk.  At 70Mbps even a short chunk would
be large.  I'd like to confirm tomorrow whether I have permission to share
a short file publicly or privately.

Thank you,
    Pavel


More information about the ffmpeg-devel mailing list