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
signature.asc
Description: Digital signature
_______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel