You mean something like this? diff --git a/libavformat/mxf.h b/libavformat/mxf.h index ca510f5a2f..b9fe7fe7ef 100644 --- a/libavformat/mxf.h +++ b/libavformat/mxf.h @@ -76,7 +76,7 @@ typedef enum { D10D11Wrap, RawAWrap, RawVWrap, - AlwaysFrameWrap + J2KWrap } MXFWrappingIndicatorType;
typedef struct MXFLocalTagPair { diff --git a/libavformat/mxfdec.c b/libavformat/mxfdec.c index 7024d2ea7d..7c33150675 100644 --- a/libavformat/mxfdec.c +++ b/libavformat/mxfdec.c @@ -1413,8 +1413,7 @@ static void *mxf_resolve_strong_ref(MXFContext *mxf, UID *strong_ref, enum MXFMe static const MXFCodecUL mxf_picture_essence_container_uls[] = { // video essence container uls - { { 0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x07,0x0d,0x01,0x03,0x01,0x02,0x0c,0x06,0x00 }, 15, AV_CODEC_ID_JPEG2000, NULL, 16, AlwaysFrameWrap }, /* MXF-GC P1 Frame-Wrapped JPEG 2000 */ - { { 0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x07,0x0d,0x01,0x03,0x01,0x02,0x0c,0x01,0x00 }, 14, AV_CODEC_ID_JPEG2000, NULL, 14 }, + { { 0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x07,0x0d,0x01,0x03,0x01,0x02,0x0c,0x01,0x00 }, 14, AV_CODEC_ID_JPEG2000, NULL, 14, J2KWrap }, { { 0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x02,0x0d,0x01,0x03,0x01,0x02,0x10,0x60,0x01 }, 14, AV_CODEC_ID_H264, NULL, 15 }, /* H.264 */ { { 0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x02,0x0d,0x01,0x03,0x01,0x02,0x11,0x01,0x00 }, 14, AV_CODEC_ID_DNXHD, NULL, 14 }, /* VC-3 */ { { 0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x02,0x0d,0x01,0x03,0x01,0x02,0x12,0x01,0x00 }, 14, AV_CODEC_ID_VC1, NULL, 14 }, /* VC-1 */ @@ -1498,8 +1497,9 @@ static MXFWrappingScheme mxf_get_wrapping_kind(UID *essence_container_ul) if (val == 0x02) val = 0x01; break; - case AlwaysFrameWrap: - val = 0x01; + case J2KWrap: + if (val != 0x02) + val = 0x01; break; } if (val == 0x01) On Sat, Jul 17, 2021 at 11:19 AM Marton Balint <c...@passwd.hu> wrote: > > > > On Mon, 12 Jul 2021, Tomas Härdin wrote: > > > sön 2021-07-11 klockan 09:47 -0700 skrev p...@sandflow.com: > >> From: Pierre-Anthony Lemieux <p...@sandflow.com> > >> > >> Signed-off-by: Pierre-Anthony Lemieux <p...@sandflow.com> > >> --- > >> > >> Notes: > >> For JPEG 2000 essence, the MXF input format module currently uses the > >> value of byte 14 of the essence container UL to determines whether the J2K > >> essence is clip- (byte 14 is 0x02) > >> or frame-wrapped (byte 14 is 0x01). This approach does work when the > >> essence container UL is equal to MXFGCP1FrameWrappedPicture, in which case > >> the essence is always frame-wrapped. > > "This approach does "*not*" work when..." > > >> > >> libavformat/mxf.h | 3 ++- > >> libavformat/mxfdec.c | 4 ++++ > >> 2 files changed, 6 insertions(+), 1 deletion(-) > >> > >> diff --git a/libavformat/mxf.h b/libavformat/mxf.h > >> index b1b1fedac7..ca510f5a2f 100644 > >> --- a/libavformat/mxf.h > >> +++ b/libavformat/mxf.h > >> @@ -75,7 +75,8 @@ typedef enum { > >> NormalWrap = 0, > >> D10D11Wrap, > >> RawAWrap, > >> - RawVWrap > >> + RawVWrap, > >> + AlwaysFrameWrap > >> } MXFWrappingIndicatorType; > >> > >> typedef struct MXFLocalTagPair { > >> diff --git a/libavformat/mxfdec.c b/libavformat/mxfdec.c > >> index 3bf480a3a6..7024d2ea7d 100644 > >> --- a/libavformat/mxfdec.c > >> +++ b/libavformat/mxfdec.c > >> @@ -1413,6 +1413,7 @@ static void *mxf_resolve_strong_ref(MXFContext *mxf, > >> UID *strong_ref, enum MXFMe > >> > >> static const MXFCodecUL mxf_picture_essence_container_uls[] = { > >> // video essence container uls > >> + { { > >> 0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x07,0x0d,0x01,0x03,0x01,0x02,0x0c,0x06,0x00 > >> }, 15, AV_CODEC_ID_JPEG2000, NULL, 16, AlwaysFrameWrap }, /* MXF-GC P1 > >> Frame-Wrapped JPEG 2000 */ > > Setting wrapping_indicator_pos to 16 seems problematic, it might cause > overreads in mxf_get_wrapping_kind, and a bit misleading... > > I'd rather not add a new entry with the same codec id for the same > prefix, but add a JPEG2000Wrap MXFWrappingIndicatorType instead, and > similarly how D10D11Wrap is handled, add a new case and a simple if in > mxf_get_wrapping_kind: > > case JPEG2000Wrap: > if (val == 0x06) > val = 0x01; > break; > > Thanks, > Marton > > > >> { { > >> 0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x07,0x0d,0x01,0x03,0x01,0x02,0x0c,0x01,0x00 > >> }, 14, AV_CODEC_ID_JPEG2000, NULL, 14 }, > >> { { > >> 0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x02,0x0d,0x01,0x03,0x01,0x02,0x10,0x60,0x01 > >> }, 14, AV_CODEC_ID_H264, NULL, 15 }, /* H.264 */ > >> { { > >> 0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x02,0x0d,0x01,0x03,0x01,0x02,0x11,0x01,0x00 > >> }, 14, AV_CODEC_ID_DNXHD, NULL, 14 }, /* VC-3 */ > >> @@ -1497,6 +1498,9 @@ static MXFWrappingScheme mxf_get_wrapping_kind(UID > >> *essence_container_ul) > >> if (val == 0x02) > >> val = 0x01; > >> break; > >> + case AlwaysFrameWrap: > >> + val = 0x01; > >> + break; > > > > Looks OK. Still passes FATE. > > > > /Tomas > > > > _______________________________________________ > > ffmpeg-devel mailing list > > ffmpeg-devel@ffmpeg.org > > https://ffmpeg.org/mailman/listinfo/ffmpeg-devel > > > > To unsubscribe, visit link above, or email > > ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe". > _______________________________________________ > ffmpeg-devel mailing list > ffmpeg-devel@ffmpeg.org > https://ffmpeg.org/mailman/listinfo/ffmpeg-devel > > To unsubscribe, visit link above, or email > ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe". _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".