[FFmpeg-user] xyz12le Jpeg2000 MXF files in DCP now detected as rgb48le

Kieran O Leary kieran.o.leary at gmail.com
Wed Nov 21 03:21:23 EET 2018


On Wed, Nov 21, 2018 at 12:39 AM Carl Eugen Hoyos <ceffmpeg at gmail.com> wrote:
>
> 2018-11-20 14:12 GMT+01:00, Kieran O'Leary <kieran.oleary at irishfilm.ie>:
>
> > I remember that older versions of ffmpeg would detect a pix_fmt of
> > xyz12le when a jpeg2000/MXF file from a DCP was passed as input.
> > Now I see a value of: rgb48le(12 bpc, progressive)
> >
> > Was this intentional, and if so, why did the behaviour change?
>
> Of course, it is our utmost desire to add as many regressions as
> possible from one version to the next (we nowadays succeed more
> than before).
>
> > I tried looking at the commit history for jpeg2000dec.c but
> > couldn't find the answer..
>
> (This file is unrelated to your issue, mentioning it made it much
> more difficult for me to see the issue you have.)
>
> > You can find some sample DCPs here:
>
> > https://www.charbon-studio.com/resources
>
> This doesn't look like a link to the file you tested.
> (Yes, works fine here.)

Sorry - This is the specific one I tested,
https://www.charbon-studio.com/get/dcps/CHARBON-INTEROP-24.zip, but I
think any of the test DCPs there should exhibit this.

>
> > $ ffmpeg -i video1.mxf
> >
> > ffmpeg version 4.0.2 Copyright (c) 2000-2018 the FFmpeg developers
>
> Looks old and unsupported.
>
> [after looking at the issue again, it may have been easier for you
> to look at old and new console output:]
>
> > --enable-libopenjpeg --disable-decoder=jpeg2000
>

Thanks Carl, this does indeed seem to be the issue. On my home Ubuntu
machine, the pix_fmt shows up as xyz12le on two different builds:
1) Basic ./configure && make with no openjpeg

 ./ffmpeg -i ~/Downloads/CHARBON-INTEROP-24/video1.mxf
ffmpeg version N-92498-g77bf85515e Copyright (c) 2000-2018 the FFmpeg developers
  built with gcc 7 (Ubuntu 7.3.0-27ubuntu1~18.04)
  configuration:
  libavutil      56. 23.101 / 56. 23.101
  libavcodec     58. 39.100 / 58. 39.100
  libavformat    58. 22.100 / 58. 22.100
  libavdevice    58.  6.100 / 58.  6.100
  libavfilter     7. 46.100 /  7. 46.100
  libswscale      5.  4.100 /  5.  4.100
  libswresample   3.  4.100 /  3.  4.100
[mxf @ 0x55d4cd31e5c0] "OPAtom" with 2 ECs - assuming OP1a
Input #0, mxf, from '/home/kieranjol/Downloads/CHARBON-INTEROP-24/video1.mxf':
  Metadata:
    uid             : 0cabf88b-e592-4bd2-814a-8bc05c8f619d
    generation_uid  : ea6c96ea-bab7-40bf-be6d-2fb9e2154edd
    company_name    : OpenDCP
    product_name    : OpenDCP
    product_version : 0.27.1
    product_uid     : 43059a1d-0432-4101-b83f-736815acf31d
    modification_date: 2013-03-07T10:12:52.000000Z
    application_platform: osx
    material_package_umid:
0x060A2B340101010501010F20130000002602B03533D14F53A6A5569ABC47D86B
    material_package_name: AS-DCP Material Package
    timecode        : 00:00:00:00
  Duration: 00:00:12.50, start: 0.000000, bitrate: 95987 kb/s
    Stream #0:0: Video: jpeg2000 (JPEG 2000 digital cinema 2K),
xyz12le(progressive), 2048x858, SAR 1:1 DAR 1024:429, 24 tbr, 24 tbn,
24 tbc
    Metadata:
      file_package_umid:
0x060A2B340101010501010F2013000000E8211854E0EE480A84333AB990F30D15
      file_package_name: File Package: SMPTE 429-4 frame wrapping of
JPEG 2000 codestreams
      track_name      : Picture Track
At least one output file must be specified


2) A version of ffmpeg that I compiled with openjpeg, but with the
internal ffmpeg decoder enabled.

$ ffmpeg -i Downloads/CHARBON-INTEROP-24/video1.mxf
ffmpeg version N-92384-g70463b7 Copyright (c) 2000-2018 the FFmpeg developers
  built with gcc 7 (Ubuntu 7.3.0-27ubuntu1~18.04)
  configuration: --prefix=/home/kieranjol/ffmpeg_build
--pkg-config-flags=--static
--extra-cflags=-I/home/kieranjol/ffmpeg_build/include
--extra-ldflags=-L/home/kieranjol/ffmpeg_build/lib
--extra-libs='-lpthread -lm' --bindir=/home/kieranjol/bin --enable-gpl
--enable-libass --enable-libfdk-aac --enable-libfreetype
--enable-libmp3lame --enable-libopus --enable-libtheora
--enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265
--enable-nonfree --enable-libopenjpeg
  libavutil      56. 23.101 / 56. 23.101
  libavcodec     58. 39.100 / 58. 39.100
  libavformat    58. 22.100 / 58. 22.100
  libavdevice    58.  6.100 / 58.  6.100
  libavfilter     7. 43.100 /  7. 43.100
  libswscale      5.  4.100 /  5.  4.100
  libswresample   3.  4.100 /  3.  4.100
  libpostproc    55.  4.100 / 55.  4.100
[mxf @ 0x5634c02ef040] "OPAtom" with 2 ECs - assuming OP1a
Input #0, mxf, from 'Downloads/CHARBON-INTEROP-24/video1.mxf':
  Metadata:
    uid             : 0cabf88b-e592-4bd2-814a-8bc05c8f619d
    generation_uid  : ea6c96ea-bab7-40bf-be6d-2fb9e2154edd
    company_name    : OpenDCP
    product_name    : OpenDCP
    product_version : 0.27.1
    product_uid     : 43059a1d-0432-4101-b83f-736815acf31d
    modification_date: 2013-03-07T10:12:52.000000Z
    application_platform: osx
    material_package_umid:
0x060A2B340101010501010F20130000002602B03533D14F53A6A5569ABC47D86B
    material_package_name: AS-DCP Material Package
    timecode        : 00:00:00:00
  Duration: 00:00:12.50, start: 0.000000, bitrate: 95987 kb/s
    Stream #0:0: Video: jpeg2000 (JPEG 2000 digital cinema 2K),
xyz12le(progressive), 2048x858, SAR 1:1 DAR 1024:429, 24 tbr, 24 tbn,
24 tbc
    Metadata:
      file_package_umid:
0x060A2B340101010501010F2013000000E8211854E0EE480A84333AB990F30D15
      file_package_name: File Package: SMPTE 429-4 frame wrapping of
JPEG 2000 codestreams
      track_name      : Picture Track
At least one output file must be specified


> I don't remember if this ever allowed xyz support, I thought
> not, looking at the source code it may have worked, or you
> may be able to force it, it is also possible that this is a
> libopenjpeg regression, or that we misunderstood / abused
> the api, I don't know / don't remember.
> (Or you had to enable both decoders to get the correct
> format with libopenjpeg, who knows...)
>
I'm thinking that this is the case. It looks like Homebrew disables
the native decoder by default nowadays.
https://github.com/Homebrew/homebrew-core/blob/master/Formula/ffmpeg.rb#L139
- so maybe I should address this issue with them, as perhaps this
isn't a great idea to disable this decoder.

I just enabled openjpeg/disabled the ffmpeg decoder and I now see rgb48le:

$ ./ffmpeg -i ~/Downloads/CHARBON-INTEROP-24/video1.mxf
ffmpeg version N-92384-g70463b7 Copyright (c) 2000-2018 the FFmpeg developers
  built with gcc 7 (Ubuntu 7.3.0-27ubuntu1~18.04)
  configuration: --prefix=/home/kieranjol/ffmpeg_build
--pkg-config-flags=--static
--extra-cflags=-I/home/kieranjol/ffmpeg_build/include
--extra-ldflags=-L/home/kieranjol/ffmpeg_build/lib
--extra-libs='-lpthread -lm' --bindir=/home/kieranjol/bin --enable-gpl
--enable-libass --enable-libfdk-aac --enable-libfreetype
--enable-libmp3lame --enable-libopus --enable-libtheora
--enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265
--enable-nonfree --enable-libopenjpeg --disable-decoder=jpeg2000
  libavutil      56. 23.101 / 56. 23.101
  libavcodec     58. 39.100 / 58. 39.100
  libavformat    58. 22.100 / 58. 22.100
  libavdevice    58.  6.100 / 58.  6.100
  libavfilter     7. 43.100 /  7. 43.100
  libswscale      5.  4.100 /  5.  4.100
  libswresample   3.  4.100 /  3.  4.100
  libpostproc    55.  4.100 / 55.  4.100
[mxf @ 0x559be7708040] "OPAtom" with 2 ECs - assuming OP1a
Input #0, mxf, from '/home/kieranjol/Downloads/CHARBON-INTEROP-24/video1.mxf':
  Metadata:
    uid             : 0cabf88b-e592-4bd2-814a-8bc05c8f619d
    generation_uid  : ea6c96ea-bab7-40bf-be6d-2fb9e2154edd
    company_name    : OpenDCP
    product_name    : OpenDCP
    product_version : 0.27.1
    product_uid     : 43059a1d-0432-4101-b83f-736815acf31d
    modification_date: 2013-03-07T10:12:52.000000Z
    application_platform: osx
    material_package_umid:
0x060A2B340101010501010F20130000002602B03533D14F53A6A5569ABC47D86B
    material_package_name: AS-DCP Material Package
    timecode        : 00:00:00:00
  Duration: 00:00:12.50, start: 0.000000, bitrate: 95987 kb/s
    Stream #0:0: Video: jpeg2000, rgb48le(12 bpc, progressive),
2048x858, SAR 1:1 DAR 1024:429, 24 tbr, 24 tbn, 24 tbc
    Metadata:
      file_package_umid:
0x060A2B340101010501010F2013000000E8211854E0EE480A84333AB990F30D15
      file_package_name: File Package: SMPTE 429-4 frame wrapping of
JPEG 2000 codestreams
      track_name      : Picture Track


> In any case, libopenjpeg is needed for some files, crashes
> for others, is unneeded for the file from above link that I
> tested and since DCP was the original reason for extending
> our native decoder I wonder if libopenjpeg only makes
> sense for non-DCP jpeg2000 files.


Thanks so much for the detailed response Carl.

All the best,

Kieran.


More information about the ffmpeg-user mailing list