[FFmpeg-devel] [PATCH] avformat/mxfdec: Detect XYZ pixel format for digital cinema files

Michael Niedermayer michaelni at gmx.at
Thu Mar 5 11:55:29 CET 2015


On Thu, Mar 05, 2015 at 11:41:35AM +0100, Tomas Härdin wrote:
> On Thu, 2015-03-05 at 00:36 +0200, Vilius Grigaliūnas wrote:
> > While the native jpeg2000 decoder can determine pixel format correctly
> > from the codestream, libopenjpeg wrapper cannot. To make sure that
> > the output is correct when using libopenjpeg to decode digital
> > cinema files, we do detection from the metadata included in the MXF
> > wrapper.
> > 
> > If the container has "JPEG 2000 Coding Parameters" metadata element
> > with Rsiz value set to one of digital cinema profiles, we can safely
> > assume that the given input file is DCI compliant, therefore the
> > pixel format should be XYZ.
> > ---
> >  libavformat/mxfdec.c |    7 +++++++
> >  1 file changed, 7 insertions(+)
> > 
> > diff --git a/libavformat/mxfdec.c b/libavformat/mxfdec.c
> > index f3501da..2e8dd05 100644
> > --- a/libavformat/mxfdec.c
> > +++ b/libavformat/mxfdec.c
> > @@ -281,6 +281,7 @@ static const uint8_t mxf_encrypted_essence_container[]     = { 0x06,0x0e,0x2b,0x
> >  static const uint8_t mxf_random_index_pack_key[]           = { 0x06,0x0e,0x2b,0x34,0x02,0x05,0x01,0x01,0x0d,0x01,0x02,0x01,0x01,0x11,0x01,0x00 };
> >  static const uint8_t mxf_sony_mpeg4_extradata[]            = { 0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x01,0x0e,0x06,0x06,0x02,0x02,0x01,0x00,0x00 };
> >  static const uint8_t mxf_avid_project_name[]               = { 0xa5,0xfb,0x7b,0x25,0xf6,0x15,0x94,0xb9,0x62,0xfc,0x37,0x17,0x49,0x2d,0x42,0xbf };
> > +static const uint8_t mxf_jp2k_rsiz[]                       = { 0x06,0x0e,0x2b,0x34,0x02,0x05,0x01,0x01,0x0d,0x01,0x02,0x01,0x01,0x02,0x01,0x00 };
> >  
> >  #define IS_KLV_KEY(x, y) (!memcmp(x, y, sizeof(y)))
> >  
> > @@ -1000,6 +1001,12 @@ static int mxf_read_generic_descriptor(void *arg, AVIOContext *pb, int tag, int
> >              descriptor->extradata_size = size;
> >              avio_read(pb, descriptor->extradata, size);
> >          }
> > +        if (IS_KLV_KEY(uid, mxf_jp2k_rsiz)) {
> > +            uint32_t rsiz = avio_rb16(pb);
> > +            if (rsiz == FF_PROFILE_JPEG2000_DCINEMA_2K ||
> > +                rsiz == FF_PROFILE_JPEG2000_DCINEMA_4K)
> > +                descriptor->pix_fmt = AV_PIX_FMT_XYZ12;
> > +        }
> >          break;
> >      }
> >      return 0;
> 
> Nice, simple and commit message explains exactly what is going on.
> 10/10 :)

applied

thanks

[...]

-- 
Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

The greatest way to live with honor in this world is to be what we pretend
to be. -- Socrates
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 181 bytes
Desc: Digital signature
URL: <https://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20150305/7134974b/attachment.asc>


More information about the ffmpeg-devel mailing list