#11309: ffmpeg 7.1 fails to write color_primaries and color_trc
-------------------------------------+-------------------------------------
             Reporter:  wywh         |                     Type:  defect
               Status:  new          |                 Priority:  normal
            Component:               |                  Version:  7.1
  undetermined                       |
             Keywords:               |               Blocked By:
  color_primaries color_trc          |
             Blocking:               |  Reproduced by developer:  0
Analyzed by developer:  0            |
-------------------------------------+-------------------------------------
 In ffmpeg 7.0.2_2 and 4.4.5_0 the command below works as expected but in
 7.1 it fails to write color_primaries and color_trc.

 There is also a new alert:

 "Codec AVOption gop_timecode (MPEG GOP Timecode in hh:mm:ss[:;.]ff format.
 Overrides timecode_frame_start.) has not been used for any stream. The
 most likely reason is either wrong type (e.g. a video option with no video
 streams) or that it is a private option of some decoder which was not
 actually used for any stream."

 {{{
 ffmpeg7 -i input.mp4 -c:v libx265 -crf 28 -preset medium -pix_fmt
 yuv420p10le -profile:v main10 -color_range 1 -color_primaries:v bt470bg
 -color_trc:v bt709 -colorspace:v smpte170m -timecode 00:00:00:00 -tag:v
 hvc1 -c:a aac -b:a 128k ffmpeg7.mp4
 ffmpeg version 7.1 Copyright (c) 2000-2024 the FFmpeg developers
   built with Apple clang version 16.0.0 (clang-1600.0.26.3)
   configuration: --cc=/usr/bin/clang
 --datadir=/opt/local/libexec/ffmpeg7/share/data
 --docdir=/opt/local/libexec/ffmpeg7/share/doc --progs-suffix=7
 --prefix=/opt/local/libexec/ffmpeg7 --enable-audiotoolbox --disable-
 indev=jack --disable-libjack --disable-libopencore-amrnb --disable-
 libopencore-amrwb --disable-libplacebo --disable-libvmaf --disable-libxcb
 --disable-libxcb-shm --disable-libxcb-xfixes --disable-metal --enable-
 opencl --disable-outdev=xv --enable-sdl2 --disable-securetransport
 --enable-videotoolbox --disable-xlib --enable-avfilter --enable-fontconfig
 --enable-gnutls --enable-lcms2 --enable-libass --enable-libbluray
 --enable-libdav1d --enable-libfreetype --enable-libfribidi --enable-
 libmodplug --enable-libmp3lame --enable-libopenjpeg --enable-libopus
 --enable-librsvg --enable-libsoxr --enable-libspeex --enable-libtheora
 --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libzimg
 --enable-libzvbi --enable-lzma --enable-pthreads --enable-shared --enable-
 swscale --enable-zlib --enable-libaom --enable-libsvtav1 --arch=x86_64
 --enable-x86asm --enable-gpl --enable-libvidstab --enable-libx264
 --enable-libx265 --enable-libxvid --enable-postproc
   libavutil      59. 39.100 / 59. 39.100
   libavcodec     61. 19.100 / 61. 19.100
   libavformat    61.  7.100 / 61.  7.100
   libavdevice    61.  3.100 / 61.  3.100
   libavfilter    10.  4.100 / 10.  4.100
   libswscale      8.  3.100 /  8.  3.100
   libswresample   5.  3.100 /  5.  3.100
   libpostproc    58.  3.100 / 58.  3.100
 Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'input.mp4':
   Metadata:
     major_brand     : isom
     minor_version   : 512
     compatible_brands: isomiso2mp41
     encoder         : Lavf58.76.100
   Duration: 00:00:02.00, start: 0.000000, bitrate: 1016 kb/s
   Stream #0:0[0x1](und): Video: hevc (Main 10) (hvc1 / 0x31637668),
 yuv420p10le(tv, progressive), 768x576 [SAR 1:1 DAR 4:3], 863 kb/s, 50 fps,
 50 tbr, 12800 tbn (default)
       Metadata:
         handler_name    : VideoHandler
         vendor_id       : [0][0][0][0]
         timecode        : 00:00:00:00
   Stream #0:1[0x2](und): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz,
 stereo, fltp, 128 kb/s (default)
       Metadata:
         handler_name    : SoundHandler
         vendor_id       : [0][0][0][0]
   Stream #0:2[0x3](eng): Data: none (tmcd / 0x64636D74), 0 kb/s
       Metadata:
         handler_name    : TimeCodeHandler
         timecode        : 00:00:00:00
 [out#0/mp4 @ 0x7f94bba10e80] Codec AVOption gop_timecode (MPEG GOP
 Timecode in hh:mm:ss[:;.]ff format. Overrides timecode_frame_start.) has
 not been used for any stream. The most likely reason is either wrong type
 (e.g. a video option with no video streams) or that it is a private option
 of some decoder which was not actually used for any stream.
 Stream mapping:
   Stream #0:0 -> #0:0 (hevc (native) -> hevc (libx265))
   Stream #0:1 -> #0:1 (aac (native) -> aac (native))
 Press [q] to stop, [?] for help
 x265 [info]: HEVC encoder version 3.6+1-aa7f602f7
 x265 [info]: build info [Mac OS X][clang 16.0.0][64 bit] 10bit
 x265 [info]: using cpu capabilities: MMX2 SSE2Fast LZCNT SSSE3 SSE4.2 AVX
 FMA3 BMI2 AVX2
 x265 [info]: Main 10 profile, Level-3.1 (Main tier)
 x265 [info]: Thread pool created using 12 threads
 x265 [info]: Slices                              : 1
 x265 [info]: frame threads / pool features       : 3 / wpp(9 rows)
 x265 [warning]: Source height < 720p; disabling lookahead-slices
 x265 [info]: Coding QT: max CU size, min CU size : 64 / 8
 x265 [info]: Residual QT: max TU size, max depth : 32 / 1 inter / 1 intra
 x265 [info]: ME / range / subpel / merge         : hex / 57 / 2 / 3
 x265 [info]: Keyframe min / max / scenecut / bias  : 25 / 250 / 40 / 5.00
 x265 [info]: Lookahead / bframes / badapt        : 20 / 4 / 2
 x265 [info]: b-pyramid / weightp / weightb       : 1 / 1 / 0
 x265 [info]: References / ref-limit  cu / depth  : 3 / off / on
 x265 [info]: AQ: mode / str / qg-size / cu-tree  : 2 / 1.0 / 32 / 1
 x265 [info]: Rate Control / qCompress            : CRF-28.0 / 0.60
 x265 [info]: tools: rd=3 psy-rd=2.00 early-skip rskip mode=1 signhide tmvp
 x265 [info]: tools: b-intra strong-intra-smoothing deblock sao
 Output #0, mp4, to 'ffmpeg7.mp4':
   Metadata:
     major_brand     : isom
     minor_version   : 512
     compatible_brands: isomiso2mp41
     timecode        : 00:00:00:00
     encoder         : Lavf61.7.100
   Stream #0:0(und): Video: hevc (hvc1 / 0x31637668), yuv420p10le(tv,
 smpte170m/unknown/unknown, progressive), 768x576 [SAR 1:1 DAR 4:3],
 q=2-31, 50 fps, 12800 tbn (default)
       Metadata:
         handler_name    : VideoHandler
         vendor_id       : [0][0][0][0]
         timecode        : 00:00:00:00
         encoder         : Lavc61.19.100 libx265
       Side data:
         cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: N/A
   Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo,
 fltp, 128 kb/s (default)
       Metadata:
         handler_name    : SoundHandler
         vendor_id       : [0][0][0][0]
         encoder         : Lavc61.19.100 aac
 [out#0/mp4 @ 0x7f94bba10e80] video:190KiB audio:30KiB subtitle:0KiB other
 streams:0KiB global headers:2KiB muxing overhead: 2.988819%
 frame=  100 fps= 87 q=37.4 Lsize=     227KiB time=00:00:01.96 bitrate=
 950.1kbits/s speed= 1.7x
 x265 [info]: frame I:      1, Avg QP:30.71  kb/s: 3501.20
 x265 [info]: frame P:     21, Avg QP:31.01  kb/s: 1954.04
 x265 [info]: frame B:     78, Avg QP:36.82  kb/s: 426.02
 x265 [info]: Weighted P-Frames: Y:9.5% UV:9.5%

 encoded 100 frames in 1.13s (88.61 fps), 777.66 kb/s, Avg QP:35.54
 [aac @ 0x7f94bba7bf40] Qavg: 200.813
 }}}
 In ffmpeg 4.4.5 (and 7.0.2_2) it works:
 {{{
 ffmpeg -i input.mp4 -c:v libx265 -crf 28 -preset medium -pix_fmt
 yuv420p10le -profile:v main10 -color_range 1 -color_primaries:v bt470bg
 -color_trc:v bt709 -colorspace:v smpte170m -timecode 00:00:00:00 -tag:v
 hvc1 -c:a aac -b:a 128k ffmpeg4.mp4
 ffmpeg version 4.4.5 Copyright (c) 2000-2024 the FFmpeg developers
   built with Apple clang version 16.0.0 (clang-1600.0.26.3)
   configuration: --prefix=/opt/local --cc=/usr/bin/clang
 --mandir=/opt/local/share/man --enable-audiotoolbox --disable-indev=jack
 --disable-libjack --disable-libopencore-amrnb --disable-libopencore-amrwb
 --disable-libxcb --disable-libxcb-shm --disable-libxcb-xfixes --enable-
 opencl --disable-outdev=xv --enable-sdl2 --disable-securetransport
 --enable-videotoolbox --enable-avfilter --enable-avresample --enable-
 fontconfig --enable-gnutls --enable-libass --enable-libbluray --enable-
 libdav1d --enable-libfreetype --enable-libfribidi --enable-libmodplug
 --enable-libmp3lame --enable-libopenjpeg --enable-libopus --enable-librsvg
 --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libvorbis
 --enable-libvpx --enable-libwebp --enable-libzimg --enable-libzvbi
 --enable-lzma --enable-pthreads --enable-shared --enable-swscale --enable-
 zlib --enable-libaom --enable-libsvtav1 --arch=x86_64 --enable-x86asm
 --enable-gpl --enable-libvidstab --enable-libx264 --enable-libx265
 --enable-libxvid --enable-postproc
   libavutil      56. 70.100 / 56. 70.100
   libavcodec     58.134.100 / 58.134.100
   libavformat    58. 76.100 / 58. 76.100
   libavdevice    58. 13.100 / 58. 13.100
   libavfilter     7.110.100 /  7.110.100
   libavresample   4.  0.  0 /  4.  0.  0
   libswscale      5.  9.100 /  5.  9.100
   libswresample   3.  9.100 /  3.  9.100
   libpostproc    55.  9.100 / 55.  9.100
 Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'input.mp4':
   Metadata:
     major_brand     : isom
     minor_version   : 512
     compatible_brands: isomiso2mp41
     encoder         : Lavf58.76.100
   Duration: 00:00:02.00, start: 0.000000, bitrate: 1016 kb/s
   Stream #0:0(und): Video: hevc (Main 10) (hvc1 / 0x31637668),
 yuv420p10le(tv, progressive), 768x576 [SAR 1:1 DAR 4:3], 863 kb/s, 50 fps,
 50 tbr, 12800 tbn, 50 tbc (default)
     Metadata:
       handler_name    : VideoHandler
       vendor_id       : [0][0][0][0]
       timecode        : 00:00:00:00
   Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo,
 fltp, 128 kb/s (default)
     Metadata:
       handler_name    : SoundHandler
       vendor_id       : [0][0][0][0]
   Stream #0:2(eng): Data: none (tmcd / 0x64636D74), 0 kb/s
     Metadata:
       handler_name    : TimeCodeHandler
       timecode        : 00:00:00:00
 Stream mapping:
   Stream #0:0 -> #0:0 (hevc (native) -> hevc (libx265))
   Stream #0:1 -> #0:1 (aac (native) -> aac (native))
 Press [q] to stop, [?] for help
 x265 [info]: HEVC encoder version 3.6+1-aa7f602f7
 x265 [info]: build info [Mac OS X][clang 16.0.0][64 bit] 10bit
 x265 [info]: using cpu capabilities: MMX2 SSE2Fast LZCNT SSSE3 SSE4.2 AVX
 FMA3 BMI2 AVX2
 x265 [info]: Main 10 profile, Level-3.1 (Main tier)
 x265 [info]: Thread pool created using 12 threads
 x265 [info]: Slices                              : 1
 x265 [info]: frame threads / pool features       : 3 / wpp(9 rows)
 x265 [warning]: Source height < 720p; disabling lookahead-slices
 x265 [info]: Coding QT: max CU size, min CU size : 64 / 8
 x265 [info]: Residual QT: max TU size, max depth : 32 / 1 inter / 1 intra
 x265 [info]: ME / range / subpel / merge         : hex / 57 / 2 / 3
 x265 [info]: Keyframe min / max / scenecut / bias  : 25 / 250 / 40 / 5.00
 x265 [info]: Lookahead / bframes / badapt        : 20 / 4 / 2
 x265 [info]: b-pyramid / weightp / weightb       : 1 / 1 / 0
 x265 [info]: References / ref-limit  cu / depth  : 3 / off / on
 x265 [info]: AQ: mode / str / qg-size / cu-tree  : 2 / 1.0 / 32 / 1
 x265 [info]: Rate Control / qCompress            : CRF-28.0 / 0.60
 x265 [info]: tools: rd=3 psy-rd=2.00 early-skip rskip mode=1 signhide tmvp
 x265 [info]: tools: b-intra strong-intra-smoothing deblock sao
 [mp4 @ 0x7f9c5381d800] Application provided duration: -9223372036854775808
 / timestamp: -9223372036854775808 is out of range for mov/mp4 format
 [mp4 @ 0x7f9c5381d800] pts has no value
 Output #0, mp4, to 'ffmpeg4.mp4':
   Metadata:
     major_brand     : isom
     minor_version   : 512
     compatible_brands: isomiso2mp41
     timecode        : 00:00:00:00
     encoder         : Lavf58.76.100
   Stream #0:0(und): Video: hevc (hvc1 / 0x31637668), yuv420p10le(tv,
 smpte170m/bt470bg/bt709, progressive), 768x576 [SAR 1:1 DAR 4:3], q=2-31,
 0.02 fps, 12800 tbn (default)
     Metadata:
       handler_name    : VideoHandler
       vendor_id       : [0][0][0][0]
       timecode        : 00:00:00:00
       encoder         : Lavc58.134.100 libx265
     Side data:
       cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: N/A
   Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo,
 fltp, 128 kb/s (default)
     Metadata:
       handler_name    : SoundHandler
       vendor_id       : [0][0][0][0]
       encoder         : Lavc58.134.100 aac
 frame=  100 fps= 88 q=37.4 Lsize=     228kB time=00:00:01.94 bitrate=
 960.8kbits/s speed=1.71x
 video:190kB audio:31kB subtitle:0kB other streams:0kB global headers:2kB
 muxing overhead: 2.976367%
 x265 [info]: frame I:      1, Avg QP:30.71  kb/s: 3501.20
 x265 [info]: frame P:     21, Avg QP:31.01  kb/s: 1954.04
 x265 [info]: frame B:     78, Avg QP:36.82  kb/s: 426.02
 x265 [info]: Weighted P-Frames: Y:9.5% UV:9.5%

 encoded 100 frames in 1.12s (89.50 fps), 777.66 kb/s, Avg QP:35.54
 [aac @ 0x7f9c53824000] Qavg: 161.075
 }}}
 Like ffprobe below, also !MediaInfo reports that ffmpeg 7.1 fails to write
 color_primaries and color_trc while in ffmpeg 4 output they are written.
 {{{
 ffprobe7 -v error -show_streams input.mp4 | grep color_
 color_range=tv
 color_space=unknown
 color_transfer=unknown
 color_primaries=unknown

 ffprobe7 -v error -show_streams ffmpeg7.mp4 | grep color_
 color_range=tv
 color_space=smpte170m
 color_transfer=unknown
 color_primaries=unknown

 ffprobe7 -v error -show_streams ffmpeg4.mp4 | grep color_
 color_range=tv
 color_space=smpte170m
 color_transfer=bt709
 color_primaries=bt470bg
 }}}
-- 
Ticket URL: <https://trac.ffmpeg.org/ticket/11309>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker
_______________________________________________
FFmpeg-trac mailing list
FFmpeg-trac@avcodec.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-trac

To unsubscribe, visit link above, or email
ffmpeg-trac-requ...@ffmpeg.org with subject "unsubscribe".

Reply via email to