[FFmpeg-trac] #6025(avcodec:new): prores encoder does not write interlacement data in the stream

FFmpeg trac at avcodec.org
Thu Dec 15 17:15:31 EET 2016


#6025: prores encoder does not write interlacement data in the stream
---------------------------------------+---------------------------------
               Reporter:  dericed      |                  Owner:
                   Type:  defect       |                 Status:  new
               Priority:  normal       |              Component:  avcodec
                Version:  unspecified  |               Keywords:  prores
             Blocked By:               |               Blocking:
Reproduced by developer:  0            |  Analyzed by developer:  0
---------------------------------------+---------------------------------
 The 'prores' encoder does not set the interlacement (though the
 'prores_ks' encoder does).

 Here is a sample created with 'prores_ks' called prores_ks.mov.

 {{{
 ffmpeg -f lavfi -i mandelbrot=r=1 -t 1 -c:v prores_ks -vf setfield=tff
 -field_order tt -flags +ildct+ilme -y prores_ks.mov
 ffmpeg version N-44102-g457e933 Copyright (c) 2000-2016 the FFmpeg
 developers
   built with Apple LLVM version 8.0.0 (clang-800.0.42.1)
   configuration: --prefix=/usr/local/Cellar/ffmpeg/HEAD-457e933 --enable-
 shared --enable-pthreads --enable-gpl --enable-version3 --enable-
 hardcoded-tables --enable-avresample --cc=clang --host-cflags= --host-
 ldflags= --enable-chromaprint --enable-ffplay --enable-libfreetype
 --enable-libmp3lame --enable-libx264 --enable-libxvid --enable-opencl
 --disable-lzma --enable-vda
   libavutil      55. 43.100 / 55. 43.100
   libavcodec     57. 68.100 / 57. 68.100
   libavformat    57. 60.100 / 57. 60.100
   libavdevice    57.  2.100 / 57.  2.100
   libavfilter     6. 68.100 /  6. 68.100
   libavresample   3.  2.  0 /  3.  2.  0
   libswscale      4.  3.101 /  4.  3.101
   libswresample   2.  4.100 /  2.  4.100
   libpostproc    54.  2.100 / 54.  2.100
 Input #0, lavfi, from 'mandelbrot=r=1':
   Duration: N/A, start: 0.000000, bitrate: N/A
     Stream #0:0: Video: rawvideo (RGB[0] / 0x424752), rgb0, 640x480 [SAR
 1:1 DAR 4:3], 1 fps, 1 tbr, 1 tbn, 1 tbc
 [prores_ks @ 0x7fbf5c825600] Autoselected 4:4:4:4 profile because of the
 used input colorspace. It can be overridden through -profile option.
 Output #0, mov, to 'prores_ks.mov':
   Metadata:
     encoder         : Lavf57.60.100
     Stream #0:0: Video: prores (prores_ks) (ap4h / 0x68347061),
 yuv444p10le(top first), 640x480 [SAR 1:1 DAR 4:3], q=2-31, 200 kb/s, 1
 fps, 16384 tbn, 1 tbc
     Metadata:
       encoder         : Lavc57.68.100 prores_ks
 Stream mapping:
   Stream #0:0 -> #0:0 (rawvideo (native) -> prores (prores_ks))
 Press [q] to stop, [?] for help
 frame=    1 fps=0.0 q=-0.0 Lsize=     256kB time=00:00:00.00
 bitrate=34329180.3kbits/s speed=0.00173x
 video:255kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB
 muxing overhead: 0.284272%
 }}}

 prores_ks.mov shows that it is TFF as requested with interlaced_frame=1
 and top_field_first=1.

 {{{
 ffprobe -i prores_ks.mov -show_entries
 frame=interlaced_frame,top_field_first
 ffprobe version N-44102-g457e933 Copyright (c) 2007-2016 the FFmpeg
 developers
   built with Apple LLVM version 8.0.0 (clang-800.0.42.1)
   configuration: --prefix=/usr/local/Cellar/ffmpeg/HEAD-457e933 --enable-
 shared --enable-pthreads --enable-gpl --enable-version3 --enable-
 hardcoded-tables --enable-avresample --cc=clang --host-cflags= --host-
 ldflags= --enable-chromaprint --enable-ffplay --enable-libfreetype
 --enable-libmp3lame --enable-libx264 --enable-libxvid --enable-opencl
 --disable-lzma --enable-vda
   libavutil      55. 43.100 / 55. 43.100
   libavcodec     57. 68.100 / 57. 68.100
   libavformat    57. 60.100 / 57. 60.100
   libavdevice    57.  2.100 / 57.  2.100
   libavfilter     6. 68.100 /  6. 68.100
   libavresample   3.  2.  0 /  3.  2.  0
   libswscale      4.  3.101 /  4.  3.101
   libswresample   2.  4.100 /  2.  4.100
   libpostproc    54.  2.100 / 54.  2.100
 Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'prores_ks.mov':
   Metadata:
     major_brand     : qt
     minor_version   : 512
     compatible_brands: qt
     encoder         : Lavf57.60.100
   Duration: 00:00:01.00, start: 0.000000, bitrate: 2094 kb/s
     Stream #0:0(eng): Video: prores (ap4h / 0x68347061), yuv444p10le(top
 first), 640x480, 2088 kb/s, SAR 1:1 DAR 4:3, 1 fps, 1 tbr, 16384 tbn,
 16384 tbc (default)
     Metadata:
       handler_name    : DataHandler
       encoder         : Lavc57.68.100 prores_ks
 [FRAME]
 interlaced_frame=1
 top_field_first=1
 [/FRAME]
 }}}

 However the 'prores' encoder does not set the interlacement data in the
 stream. This creates prores.mov with the same settings except with the
 prores (rather than prores_ks) encoder.

 {{{
 ffmpeg -f lavfi -i mandelbrot=r=1 -t 1 -c:v prores -vf setfield=tff
 -field_order tt -flags +ildct+ilme -y prores.mov
 ffmpeg version N-44102-g457e933 Copyright (c) 2000-2016 the FFmpeg
 developers
   built with Apple LLVM version 8.0.0 (clang-800.0.42.1)
   configuration: --prefix=/usr/local/Cellar/ffmpeg/HEAD-457e933 --enable-
 shared --enable-pthreads --enable-gpl --enable-version3 --enable-
 hardcoded-tables --enable-avresample --cc=clang --host-cflags= --host-
 ldflags= --enable-chromaprint --enable-ffplay --enable-libfreetype
 --enable-libmp3lame --enable-libx264 --enable-libxvid --enable-opencl
 --disable-lzma --enable-vda
   libavutil      55. 43.100 / 55. 43.100
   libavcodec     57. 68.100 / 57. 68.100
   libavformat    57. 60.100 / 57. 60.100
   libavdevice    57.  2.100 / 57.  2.100
   libavfilter     6. 68.100 /  6. 68.100
   libavresample   3.  2.  0 /  3.  2.  0
   libswscale      4.  3.101 /  4.  3.101
   libswresample   2.  4.100 /  2.  4.100
   libpostproc    54.  2.100 / 54.  2.100
 Input #0, lavfi, from 'mandelbrot=r=1':
   Duration: N/A, start: 0.000000, bitrate: N/A
     Stream #0:0: Video: rawvideo (RGB[0] / 0x424752), rgb0, 640x480 [SAR
 1:1 DAR 4:3], 1 fps, 1 tbr, 1 tbn, 1 tbc
 [prores @ 0x7fd6a8803e00] encoding with ProRes standard (apcn) profile
 [prores @ 0x7fd6a8837200] encoding with ProRes standard (apcn) profile
 [prores @ 0x7fd6a8839a00] encoding with ProRes standard (apcn) profile
 [prores @ 0x7fd6a883c200] encoding with ProRes standard (apcn) profile
 [prores @ 0x7fd6a883ea00] encoding with ProRes standard (apcn) profile
 [prores @ 0x7fd6a8841200] encoding with ProRes standard (apcn) profile
 [prores @ 0x7fd6a8843a00] encoding with ProRes standard (apcn) profile
 [prores @ 0x7fd6a8846200] encoding with ProRes standard (apcn) profile
 [prores @ 0x7fd6a8848a00] encoding with ProRes standard (apcn) profile
 [prores @ 0x7fd6a884b200] encoding with ProRes standard (apcn) profile
 [prores @ 0x7fd6a884da00] encoding with ProRes standard (apcn) profile
 [prores @ 0x7fd6a8850200] encoding with ProRes standard (apcn) profile
 [prores @ 0x7fd6a8852a00] encoding with ProRes standard (apcn) profile
 [prores @ 0x7fd6a8855200] encoding with ProRes standard (apcn) profile
 [prores @ 0x7fd6a8857a00] encoding with ProRes standard (apcn) profile
 [prores @ 0x7fd6a885a200] encoding with ProRes standard (apcn) profile
 [prores @ 0x7fd6a885ca00] encoding with ProRes standard (apcn) profile
 [prores @ 0x7fd6a885f200] encoding with ProRes standard (apcn) profile
 [prores @ 0x7fd6a8861a00] encoding with ProRes standard (apcn) profile
 [prores @ 0x7fd6a8864200] encoding with ProRes standard (apcn) profile
 [prores @ 0x7fd6a8866a00] encoding with ProRes standard (apcn) profile
 [prores @ 0x7fd6a8869200] encoding with ProRes standard (apcn) profile
 [prores @ 0x7fd6a886ba00] encoding with ProRes standard (apcn) profile
 [prores @ 0x7fd6a886e200] encoding with ProRes standard (apcn) profile
 [prores @ 0x7fd6aa001800] encoding with ProRes standard (apcn) profile
 Output #0, mov, to 'prores.mov':
   Metadata:
     encoder         : Lavf57.60.100
     Stream #0:0: Video: prores (apcn / 0x6E637061), yuv422p10le(top
 first), 640x480 [SAR 1:1 DAR 4:3], q=2-31, 200 kb/s, 1 fps, 16384 tbn, 1
 tbc
     Metadata:
       encoder         : Lavc57.68.100 prores
 Stream mapping:
   Stream #0:0 -> #0:0 (rawvideo (native) -> prores (native))
 Press [q] to stop, [?] for help
 frame=    1 fps=0.0 q=-0.0 Lsize=     107kB time=00:00:00.00
 bitrate=14404196.7kbits/s speed=0.00253x
 video:107kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB
 muxing overhead: 0.680172%
 }}}

 The resulting prores.mov is considered as interlaced_frame=0 and
 top_field_first=0.

 {{{
 ffprobe -i prores.mov -show_entries frame=interlaced_frame,top_field_first
 ffprobe version N-44102-g457e933 Copyright (c) 2007-2016 the FFmpeg
 developers
   built with Apple LLVM version 8.0.0 (clang-800.0.42.1)
   configuration: --prefix=/usr/local/Cellar/ffmpeg/HEAD-457e933 --enable-
 shared --enable-pthreads --enable-gpl --enable-version3 --enable-
 hardcoded-tables --enable-avresample --cc=clang --host-cflags= --host-
 ldflags= --enable-chromaprint --enable-ffplay --enable-libfreetype
 --enable-libmp3lame --enable-libx264 --enable-libxvid --enable-opencl
 --disable-lzma --enable-vda
   libavutil      55. 43.100 / 55. 43.100
   libavcodec     57. 68.100 / 57. 68.100
   libavformat    57. 60.100 / 57. 60.100
   libavdevice    57.  2.100 / 57.  2.100
   libavfilter     6. 68.100 /  6. 68.100
   libavresample   3.  2.  0 /  3.  2.  0
   libswscale      4.  3.101 /  4.  3.101
   libswresample   2.  4.100 /  2.  4.100
   libpostproc    54.  2.100 / 54.  2.100
 Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'prores.mov':
   Metadata:
     major_brand     : qt
     minor_version   : 512
     compatible_brands: qt
     encoder         : Lavf57.60.100
   Duration: 00:00:01.00, start: 0.000000, bitrate: 878 kb/s
     Stream #0:0(eng): Video: prores (apcn / 0x6E637061), yuv422p10le(top
 first), 640x480, 872 kb/s, SAR 1:1 DAR 4:3, 1 fps, 1 tbr, 16384 tbn, 16384
 tbc (default)
     Metadata:
       handler_name    : DataHandler
       encoder         : Lavc57.68.100 prores
 [FRAME]
 interlaced_frame=0
 top_field_first=0
 [/FRAME]
 }}}

 Should note that both samples have the 'fiel' atom in QuickTime set
 correctly to TFF, but the discrepancy in the encoding for prores.mov
 causes issues when the resulting files are handled in Final Cut software.

--
Ticket URL: <https://trac.ffmpeg.org/ticket/6025>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker


More information about the FFmpeg-trac mailing list