On 12/6/18, Baptiste Coudurier <baptiste.coudur...@gmail.com> wrote: > Hi Paul > > On Wed, Dec 5, 2018 at 9:52 AM Paul B Mahol <one...@gmail.com> wrote: > >> Signed-off-by: Paul B Mahol <one...@gmail.com> >> --- >> libavformat/mxfenc.c | 49 ++++++++++++++++++++++++++++++++++++++++++++ >> 1 file changed, 49 insertions(+) >> >> diff --git a/libavformat/mxfenc.c b/libavformat/mxfenc.c >> index 3549b4137d..e481b19ff3 100644 >> --- a/libavformat/mxfenc.c >> +++ b/libavformat/mxfenc.c >> @@ -146,6 +146,7 @@ enum ULIndex { >> INDEX_JPEG2000, >> INDEX_H264, >> INDEX_S436M, >> + INDEX_PRORES, >> }; >> >> static const struct { >> @@ -159,6 +160,7 @@ static const struct { >> { AV_CODEC_ID_DNXHD, INDEX_DNXHD }, >> { AV_CODEC_ID_JPEG2000, INDEX_JPEG2000 }, >> { AV_CODEC_ID_H264, INDEX_H264 }, >> + { AV_CODEC_ID_PRORES, INDEX_PRORES }, >> { AV_CODEC_ID_NONE } >> }; >> >> @@ -314,6 +316,11 @@ static const MXFContainerEssenceEntry >> mxf_essence_container_uls[] = { >> { >> 0x06,0x0E,0x2B,0x34,0x01,0x02,0x01,0x01,0x0D,0x01,0x03,0x01,0x17,0x01,0x02,0x00 >> }, >> { >> 0x06,0x0E,0x2B,0x34,0x04,0x01,0x01,0x0a,0x04,0x01,0x02,0x02,0x01,0x01,0x5C,0x00 >> }, >> mxf_write_s436m_anc_desc }, >> + // ProRes >> + { { >> 0x06,0x0E,0x2B,0x34,0x04,0x01,0x01,0x0d,0x0d,0x01,0x03,0x01,0x02,0x1c,0x01,0x00 >> }, >> + { >> 0x06,0x0E,0x2B,0x34,0x01,0x02,0x01,0x01,0x0d,0x01,0x03,0x01,0x15,0x01,0x17,0x00 >> }, >> + { >> 0x06,0x0E,0x2B,0x34,0x04,0x01,0x01,0x0d,0x04,0x01,0x02,0x02,0x03,0x06,0x03,0x00 >> }, >> + mxf_write_cdci_desc }, >> { { >> 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 >> }, >> { >> 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 >> }, >> { >> 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 >> }, >> @@ -1945,6 +1952,43 @@ static int mxf_write_partition(AVFormatContext *s, >> int bodysid, >> return 0; >> } >> >> +static const struct { >> + int profile; >> + UID codec_ul; >> +} mxf_prores_codec_uls[] = { >> + { FF_PROFILE_PRORES_PROXY, { >> 0x06,0x0E,0x2B,0x34,0x04,0x01,0x01,0x0d,0x04,0x01,0x02,0x02,0x03,0x06,0x01,0x00 >> } }, >> + { FF_PROFILE_PRORES_LT, { >> 0x06,0x0E,0x2B,0x34,0x04,0x01,0x01,0x0d,0x04,0x01,0x02,0x02,0x03,0x06,0x02,0x00 >> } }, >> + { FF_PROFILE_PRORES_STANDARD, { >> 0x06,0x0E,0x2B,0x34,0x04,0x01,0x01,0x0d,0x04,0x01,0x02,0x02,0x03,0x06,0x03,0x00 >> } }, >> + { FF_PROFILE_PRORES_HQ, { >> 0x06,0x0E,0x2B,0x34,0x04,0x01,0x01,0x0d,0x04,0x01,0x02,0x02,0x03,0x06,0x04,0x00 >> } }, >> + { FF_PROFILE_PRORES_4444, { >> 0x06,0x0E,0x2B,0x34,0x04,0x01,0x01,0x0d,0x04,0x01,0x02,0x02,0x03,0x06,0x05,0x00 >> } }, >> + { FF_PROFILE_PRORES_XQ, { >> 0x06,0x0E,0x2B,0x34,0x04,0x01,0x01,0x0d,0x04,0x01,0x02,0x02,0x03,0x06,0x06,0x00 >> } }, >> +}; >> + >> +static int mxf_parse_prores_frame(AVFormatContext *s, AVStream *st, >> AVPacket *pkt) >> +{ >> + MXFContext *mxf = s->priv_data; >> + MXFStreamContext *sc = st->priv_data; >> + int i, profile; >> + >> + if (mxf->header_written) >> + return 1; >> + >> + sc->codec_ul = NULL; >> + profile = st->codecpar->profile; >> > > We should fetch the profile from the bitstream. >
AFAIK profile is not stored in it. _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel