Re: [FFmpeg-devel] [PATCH] [MXF] - Add jpeg2000 subdescriptor in MXF file (V2).
sön 2024-10-27 klockan 21:06 -0700 skrev Pierre-Anthony Lemieux: > av_pix_fmt_count_planes() in > > On Thu, Dec 21, 2023 at 3:11 AM Tomas Härdin wrote: > > > > ons 2023-12-20 klockan 18:04 +0100 skrev Cédric Le Barz: > > > Le 19/12/2023 à 14:36, Tomas Härdin a écrit : > > > > > + for ( comp = 0; comp < component_count; comp++ ) { > > > > > + avio_write(pb, &sc->j2k_info.j2k_comp_desc[3*comp] , > > > > > 3); > > > > > + } > > > > Looks like this could be simplified to just > > > > > > > > avio_write(pb, sc->j2k_info.j2k_comp_desc, > > > > 3*component_count); > > > > > > > > > + if (j2k_ncomponents != component_count) { > > > > > + av_log(s, AV_LOG_ERROR, "Incoherence about > > > > > components > > > > > image > > > > > number.\n"); > > > > > + } > > > > I again feel this should be a hard error > > > > > > > > > + for (comp = 0; comp < j2k_ncomponents; comp++) { > > > > > + sc->j2k_info.j2k_comp_desc[comp*j2k_ncomponents] = > > > > > bytestream2_get_byteu(&g); // Bitdepth for each component > > > > > + sc->j2k_info.j2k_comp_desc[comp*j2k_ncomponents+1] = > > > > > bytestream2_get_byteu(&g); // Horizontal sampling for each > > > > > component > > > > > + sc->j2k_info.j2k_comp_desc[comp*j2k_ncomponents+2] = > > > > > bytestream2_get_byteu(&g); // Vertical sampling for each > > > > > component > > > > > + } > > > > Could be simplified to a single avio_read() > > > > > > > > /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". > > > > > > Here is the new version of the patch taken into account your > > > remarks. > > > > Looks OK. Does this also work with RGB(A)? Seems to not be > > hardcoded > > for YUV at least. Higher bitdepths would also be nice, I've been > > working with lossless RGB48 J2K. Doesn't necessarily need to hold > > up > > this patch, just curious. > > av_pix_fmt_count_planes() in mxf_write_jpeg2000_subdesc() will not > work for RGB(A) since the number of planes will not be equal to the > number of J2K components. > > See https://trac.ffmpeg.org/ticket/11267 Good catch. I'll send a small patch for it. I see mjpegdec also uses av_pix_fmt_count_planes() for counting components.. /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".
Re: [FFmpeg-devel] [PATCH] [MXF] - Add jpeg2000 subdescriptor in MXF file (V2).
av_pix_fmt_count_planes() in On Thu, Dec 21, 2023 at 3:11 AM Tomas Härdin wrote: > > ons 2023-12-20 klockan 18:04 +0100 skrev Cédric Le Barz: > > Le 19/12/2023 à 14:36, Tomas Härdin a écrit : > > > > +for ( comp = 0; comp < component_count; comp++ ) { > > > > +avio_write(pb, &sc->j2k_info.j2k_comp_desc[3*comp] , 3); > > > > +} > > > Looks like this could be simplified to just > > > > > >avio_write(pb, sc->j2k_info.j2k_comp_desc, 3*component_count); > > > > > > > +if (j2k_ncomponents != component_count) { > > > > +av_log(s, AV_LOG_ERROR, "Incoherence about components > > > > image > > > > number.\n"); > > > > +} > > > I again feel this should be a hard error > > > > > > > +for (comp = 0; comp < j2k_ncomponents; comp++) { > > > > +sc->j2k_info.j2k_comp_desc[comp*j2k_ncomponents] = > > > > bytestream2_get_byteu(&g); // Bitdepth for each component > > > > +sc->j2k_info.j2k_comp_desc[comp*j2k_ncomponents+1] = > > > > bytestream2_get_byteu(&g); // Horizontal sampling for each > > > > component > > > > +sc->j2k_info.j2k_comp_desc[comp*j2k_ncomponents+2] = > > > > bytestream2_get_byteu(&g); // Vertical sampling for each > > > > component > > > > +} > > > Could be simplified to a single avio_read() > > > > > > /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". > > > > Here is the new version of the patch taken into account your remarks. > > Looks OK. Does this also work with RGB(A)? Seems to not be hardcoded > for YUV at least. Higher bitdepths would also be nice, I've been > working with lossless RGB48 J2K. Doesn't necessarily need to hold up > this patch, just curious. av_pix_fmt_count_planes() in mxf_write_jpeg2000_subdesc() will not work for RGB(A) since the number of planes will not be equal to the number of J2K components. See https://trac.ffmpeg.org/ticket/11267 > > /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".
Re: [FFmpeg-devel] [PATCH] [MXF] - Add jpeg2000 subdescriptor in MXF file (V2).
sön 2023-12-31 klockan 14:16 +0100 skrev Tomas Härdin: > fre 2023-12-22 klockan 09:58 +0100 skrev Cédric Le Barz: > > > > Le 21/12/2023 à 12:11, Tomas Härdin a écrit : > > > ons 2023-12-20 klockan 18:04 +0100 skrev Cédric Le Barz: > > > > Le 19/12/2023 à 14:36, Tomas Härdin a écrit : > > > > > > + for ( comp = 0; comp < component_count; comp++ ) { > > > > > > + avio_write(pb, &sc->j2k_info.j2k_comp_desc[3*comp] > > > > > > , > > > > > > 3); > > > > > > + } > > > > > Looks like this could be simplified to just > > > > > > > > > > avio_write(pb, sc->j2k_info.j2k_comp_desc, > > > > > 3*component_count); > > > > > > > > > > > + if (j2k_ncomponents != component_count) { > > > > > > + av_log(s, AV_LOG_ERROR, "Incoherence about > > > > > > components > > > > > > image > > > > > > number.\n"); > > > > > > + } > > > > > I again feel this should be a hard error > > > > > > > > > > > + for (comp = 0; comp < j2k_ncomponents; comp++) { > > > > > > + sc->j2k_info.j2k_comp_desc[comp*j2k_ncomponents] = > > > > > > bytestream2_get_byteu(&g); // Bitdepth for each component > > > > > > + sc->j2k_info.j2k_comp_desc[comp*j2k_ncomponents+1] > > > > > > = > > > > > > bytestream2_get_byteu(&g); // Horizontal sampling for each > > > > > > component > > > > > > + sc->j2k_info.j2k_comp_desc[comp*j2k_ncomponents+2] > > > > > > = > > > > > > bytestream2_get_byteu(&g); // Vertical sampling for each > > > > > > component > > > > > > + } > > > > > Could be simplified to a single avio_read() > > > > > > > > > > /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". > > > > Here is the new version of the patch taken into account your > > > > remarks. > > > Looks OK. Does this also work with RGB(A)? Seems to not be > > > hardcoded > > > for YUV at least. Higher bitdepths would also be nice, I've been > > > working with lossless RGB48 J2K. Doesn't necessarily need to hold > > > up > > > this patch, just curious. > > > > > > /Tomas > > > > Any J2K bitdepth can be handled with this patch (up to 31 bits per > > component). > > > > Concerning RGBA, The JPEG 2000 sub-descriptor can be referenced > > either > > by the CDCI picture essence descriptor or the RGBA picture essence > > descriptor both of which are defined by SMPTE ST 377-1. In this > > patch > > it > > is only referenced by the CDCI as the RGBA essence descriptor is > > not > > yet > > implemented in FFmpeg. Nevertheless, I think it should work too > > with > > CDCI essence descriptor : if you have such data, you can try. > > I have one sample at least, muxed by WidgetCo's as-02-wrap. Its > descriptor looks like this (via mxfdump): > > RGBAEssenceDescriptor > InstanceUID = {c3bf8d8c-6fd4-4004-83d7-3950ab56e86f} > SubDescriptors > SubDescriptor = {d2013379-ad4b-4d9e-9531-c3a6d8d59175} > SubDescriptor -> Strong Reference to JPEG2000PictureSubDescriptor > JPEG2000PictureSubDescriptor > InstanceUID = {d2013379-ad4b-4d9e-9531-c3a6d8d59175} > Rsiz = 16384 > Xsiz = 3840 > Ysiz = 2160 > XOsiz = 0 > YOsiz = 0 > XTsiz = 3840 > YTsiz = 2160 > XTOsiz = 0 > YTOsiz = 0 > Csiz = 3 > PictureComponentSizing > PictureComponentSize = Ssiz="15", XRsiz="1", YRsiz="1" > PictureComponentSize = Ssiz="15", XRsiz="1", YRsiz="1" > PictureComponentSize = Ssiz="15", XRsiz="1", YRsiz="1" > CodingStyleDefault = Scod="0", SGcod="ProgressionOrder="2", > NumberOfLayers="1", MultipleComponentTransformation="1"", > SPcod="DecompositionLevels="5", CodeblockWidth="4", > CodeblockHeight="4", CodeblockStyle="64", Transformation="1"", > PrecinctSize="" > QuantizationDefault = Sqcd="32", SPqcd="152, 160, 160, 168, > 160, 160, 168, 160, 160, 168, 160, 160, 160, 152, 152, 160" > Unknown ff.e9 [060e2b34.0101.010e.04010603.0e00] = 52 10 > 47 > 10 42 10 00 00 00 00 00 00 00 00 00 00 > Unknown ff.e8 [060e2b34.0101.010e.04010603.0f00] = 00 02 > 00 > 00 00 00 00 01 00 00 00 02 00 02 > LinkedTrackID = 2 > SampleRate = 24/1 > ContainerDuration = 1 > EssenceContainer = MXF-GC JPEG-2000 Picture Mappings > FrameLayout = 0 > StoredWidth = 3840 > StoredHeight = 2160 > AspectRatio = 3840/2160 > Gamma = [060e2b34.0401.010d.04010101.010a] > PictureEssenceCoding = [060e2b34.0401.010d.04010202.03010801] > Unknown 32.19 [060e2b34.0101.0109.04010201.01060100] = 06 0e 2b 34 > 04 > 01 01 0d 04 01 01 01 03 04 00 00 > Unknown ff.fe [060e2b34.0101.010e.04010501.1400] = 00 00 00 02 > Unknown ff.fd [060e2b34.0101.010e.04010501.1300] = 00 00 00 03 > Unknown ff.fc [060e2b34.0101.010e.04010501.1
Re: [FFmpeg-devel] [PATCH] [MXF] - Add jpeg2000 subdescriptor in MXF file (V2).
fre 2023-12-22 klockan 09:58 +0100 skrev Cédric Le Barz: > > Le 21/12/2023 à 12:11, Tomas Härdin a écrit : > > ons 2023-12-20 klockan 18:04 +0100 skrev Cédric Le Barz: > > > Le 19/12/2023 à 14:36, Tomas Härdin a écrit : > > > > > + for ( comp = 0; comp < component_count; comp++ ) { > > > > > + avio_write(pb, &sc->j2k_info.j2k_comp_desc[3*comp] , > > > > > 3); > > > > > + } > > > > Looks like this could be simplified to just > > > > > > > > avio_write(pb, sc->j2k_info.j2k_comp_desc, > > > > 3*component_count); > > > > > > > > > + if (j2k_ncomponents != component_count) { > > > > > + av_log(s, AV_LOG_ERROR, "Incoherence about > > > > > components > > > > > image > > > > > number.\n"); > > > > > + } > > > > I again feel this should be a hard error > > > > > > > > > + for (comp = 0; comp < j2k_ncomponents; comp++) { > > > > > + sc->j2k_info.j2k_comp_desc[comp*j2k_ncomponents] = > > > > > bytestream2_get_byteu(&g); // Bitdepth for each component > > > > > + sc->j2k_info.j2k_comp_desc[comp*j2k_ncomponents+1] = > > > > > bytestream2_get_byteu(&g); // Horizontal sampling for each > > > > > component > > > > > + sc->j2k_info.j2k_comp_desc[comp*j2k_ncomponents+2] = > > > > > bytestream2_get_byteu(&g); // Vertical sampling for each > > > > > component > > > > > + } > > > > Could be simplified to a single avio_read() > > > > > > > > /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". > > > Here is the new version of the patch taken into account your > > > remarks. > > Looks OK. Does this also work with RGB(A)? Seems to not be > > hardcoded > > for YUV at least. Higher bitdepths would also be nice, I've been > > working with lossless RGB48 J2K. Doesn't necessarily need to hold > > up > > this patch, just curious. > > > > /Tomas > > Any J2K bitdepth can be handled with this patch (up to 31 bits per > component). > > Concerning RGBA, The JPEG 2000 sub-descriptor can be referenced > either > by the CDCI picture essence descriptor or the RGBA picture essence > descriptor both of which are defined by SMPTE ST 377-1. In this patch > it > is only referenced by the CDCI as the RGBA essence descriptor is not > yet > implemented in FFmpeg. Nevertheless, I think it should work too > with > CDCI essence descriptor : if you have such data, you can try. I have one sample at least, muxed by WidgetCo's as-02-wrap. Its descriptor looks like this (via mxfdump): RGBAEssenceDescriptor InstanceUID = {c3bf8d8c-6fd4-4004-83d7-3950ab56e86f} SubDescriptors SubDescriptor = {d2013379-ad4b-4d9e-9531-c3a6d8d59175} SubDescriptor -> Strong Reference to JPEG2000PictureSubDescriptor JPEG2000PictureSubDescriptor InstanceUID = {d2013379-ad4b-4d9e-9531-c3a6d8d59175} Rsiz = 16384 Xsiz = 3840 Ysiz = 2160 XOsiz = 0 YOsiz = 0 XTsiz = 3840 YTsiz = 2160 XTOsiz = 0 YTOsiz = 0 Csiz = 3 PictureComponentSizing PictureComponentSize = Ssiz="15", XRsiz="1", YRsiz="1" PictureComponentSize = Ssiz="15", XRsiz="1", YRsiz="1" PictureComponentSize = Ssiz="15", XRsiz="1", YRsiz="1" CodingStyleDefault = Scod="0", SGcod="ProgressionOrder="2", NumberOfLayers="1", MultipleComponentTransformation="1"", SPcod="DecompositionLevels="5", CodeblockWidth="4", CodeblockHeight="4", CodeblockStyle="64", Transformation="1"", PrecinctSize="" QuantizationDefault = Sqcd="32", SPqcd="152, 160, 160, 168, 160, 160, 168, 160, 160, 168, 160, 160, 160, 152, 152, 160" Unknown ff.e9 [060e2b34.0101.010e.04010603.0e00] = 52 10 47 10 42 10 00 00 00 00 00 00 00 00 00 00 Unknown ff.e8 [060e2b34.0101.010e.04010603.0f00] = 00 02 00 00 00 00 00 01 00 00 00 02 00 02 LinkedTrackID = 2 SampleRate = 24/1 ContainerDuration = 1 EssenceContainer = MXF-GC JPEG-2000 Picture Mappings FrameLayout = 0 StoredWidth = 3840 StoredHeight = 2160 AspectRatio = 3840/2160 Gamma = [060e2b34.0401.010d.04010101.010a] PictureEssenceCoding = [060e2b34.0401.010d.04010202.03010801] Unknown 32.19 [060e2b34.0101.0109.04010201.01060100] = 06 0e 2b 34 04 01 01 0d 04 01 01 01 03 04 00 00 Unknown ff.fe [060e2b34.0101.010e.04010501.1400] = 00 00 00 02 Unknown ff.fd [060e2b34.0101.010e.04010501.1300] = 00 00 00 03 Unknown ff.fc [060e2b34.0101.010e.04010501.1500] = 00 00 00 04 Unknown ff.fb [060e2b34.0101.010e.04010501.1600] = 00 00 00 05 VideoLineMap VideoLineMapEntry = VideoLineMapEntry = Unknown ff.fa [060e2b34.0101.010e.04200401.0101] = 7d 00 40 74 3a 98 75 30 1d 4c 0b b8 Unknown ff.f9 [060e2b34.0101.010e.04200401.0102] = 3d 13 40 42 Unknown ff.f8 [060
Re: [FFmpeg-devel] [PATCH] [MXF] - Add jpeg2000 subdescriptor in MXF file (V2).
Le 21/12/2023 à 12:11, Tomas Härdin a écrit : ons 2023-12-20 klockan 18:04 +0100 skrev Cédric Le Barz: Le 19/12/2023 à 14:36, Tomas Härdin a écrit : +for ( comp = 0; comp < component_count; comp++ ) { +avio_write(pb, &sc->j2k_info.j2k_comp_desc[3*comp] , 3); +} Looks like this could be simplified to just avio_write(pb, sc->j2k_info.j2k_comp_desc, 3*component_count); +if (j2k_ncomponents != component_count) { +av_log(s, AV_LOG_ERROR, "Incoherence about components image number.\n"); +} I again feel this should be a hard error +for (comp = 0; comp < j2k_ncomponents; comp++) { +sc->j2k_info.j2k_comp_desc[comp*j2k_ncomponents] = bytestream2_get_byteu(&g); // Bitdepth for each component +sc->j2k_info.j2k_comp_desc[comp*j2k_ncomponents+1] = bytestream2_get_byteu(&g); // Horizontal sampling for each component +sc->j2k_info.j2k_comp_desc[comp*j2k_ncomponents+2] = bytestream2_get_byteu(&g); // Vertical sampling for each component +} Could be simplified to a single avio_read() /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". Here is the new version of the patch taken into account your remarks. Looks OK. Does this also work with RGB(A)? Seems to not be hardcoded for YUV at least. Higher bitdepths would also be nice, I've been working with lossless RGB48 J2K. Doesn't necessarily need to hold up this patch, just curious. /Tomas Any J2K bitdepth can be handled with this patch (up to 31 bits per component). Concerning RGBA, The JPEG 2000 sub-descriptor can be referenced either by the CDCI picture essence descriptor or the RGBA picture essence descriptor both of which are defined by SMPTE ST 377-1. In this patch it is only referenced by the CDCI as the RGBA essence descriptor is not yet implemented in FFmpeg. Nevertheless, I think it should work too with CDCI essence descriptor : if you have such data, you can try. Cédric ___ 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".
Re: [FFmpeg-devel] [PATCH] [MXF] - Add jpeg2000 subdescriptor in MXF file (V2).
ons 2023-12-20 klockan 18:04 +0100 skrev Cédric Le Barz: > Le 19/12/2023 à 14:36, Tomas Härdin a écrit : > > > + for ( comp = 0; comp < component_count; comp++ ) { > > > + avio_write(pb, &sc->j2k_info.j2k_comp_desc[3*comp] , 3); > > > + } > > Looks like this could be simplified to just > > > > avio_write(pb, sc->j2k_info.j2k_comp_desc, 3*component_count); > > > > > + if (j2k_ncomponents != component_count) { > > > + av_log(s, AV_LOG_ERROR, "Incoherence about components > > > image > > > number.\n"); > > > + } > > I again feel this should be a hard error > > > > > + for (comp = 0; comp < j2k_ncomponents; comp++) { > > > + sc->j2k_info.j2k_comp_desc[comp*j2k_ncomponents] = > > > bytestream2_get_byteu(&g); // Bitdepth for each component > > > + sc->j2k_info.j2k_comp_desc[comp*j2k_ncomponents+1] = > > > bytestream2_get_byteu(&g); // Horizontal sampling for each > > > component > > > + sc->j2k_info.j2k_comp_desc[comp*j2k_ncomponents+2] = > > > bytestream2_get_byteu(&g); // Vertical sampling for each > > > component > > > + } > > Could be simplified to a single avio_read() > > > > /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". > > Here is the new version of the patch taken into account your remarks. Looks OK. Does this also work with RGB(A)? Seems to not be hardcoded for YUV at least. Higher bitdepths would also be nice, I've been working with lossless RGB48 J2K. Doesn't necessarily need to hold up this patch, just curious. /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".
Re: [FFmpeg-devel] [PATCH] [MXF] - Add jpeg2000 subdescriptor in MXF file (V2).
Le 19/12/2023 à 14:36, Tomas Härdin a écrit : +for ( comp = 0; comp < component_count; comp++ ) { +avio_write(pb, &sc->j2k_info.j2k_comp_desc[3*comp] , 3); +} Looks like this could be simplified to just avio_write(pb, sc->j2k_info.j2k_comp_desc, 3*component_count); +if (j2k_ncomponents != component_count) { +av_log(s, AV_LOG_ERROR, "Incoherence about components image number.\n"); +} I again feel this should be a hard error +for (comp = 0; comp < j2k_ncomponents; comp++) { +sc->j2k_info.j2k_comp_desc[comp*j2k_ncomponents] = bytestream2_get_byteu(&g); // Bitdepth for each component +sc->j2k_info.j2k_comp_desc[comp*j2k_ncomponents+1] = bytestream2_get_byteu(&g); // Horizontal sampling for each component +sc->j2k_info.j2k_comp_desc[comp*j2k_ncomponents+2] = bytestream2_get_byteu(&g); // Vertical sampling for each component +} Could be simplified to a single avio_read() /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". Here is the new version of the patch taken into account your remarks. Regards, Cédric Le Barz --- Begin Message --- Signed-off-by: Cedric Le Barz --- ffmpeg/libavformat/mxf.h| 1 + ffmpeg/libavformat/mxfenc.c | 169 +++- 2 files changed, 169 insertions(+), 1 deletion(-) diff --git a/ffmpeg/libavformat/mxf.h b/ffmpeg/libavformat/mxf.h index 2561605..7dd1681 100644 --- a/ffmpeg/libavformat/mxf.h +++ b/ffmpeg/libavformat/mxf.h @@ -55,6 +55,7 @@ enum MXFMetadataSetType { SoundfieldGroupLabelSubDescriptor, GroupOfSoundfieldGroupsLabelSubDescriptor, FFV1SubDescriptor, +JPEG2000SubDescriptor, }; enum MXFFrameLayout { diff --git a/ffmpeg/libavformat/mxfenc.c b/ffmpeg/libavformat/mxfenc.c index 53bd6ae..685c11b 100644 --- a/ffmpeg/libavformat/mxfenc.c +++ b/ffmpeg/libavformat/mxfenc.c @@ -48,8 +48,10 @@ #include "libavutil/pixdesc.h" #include "libavutil/time_internal.h" #include "libavcodec/defs.h" +#include "libavcodec/bytestream.h" #include "libavcodec/golomb.h" #include "libavcodec/h264.h" +#include "libavcodec/jpeg2000.h" #include "libavcodec/packet_internal.h" #include "libavcodec/rangecoder.h" #include "libavcodec/startcode.h" @@ -78,6 +80,20 @@ typedef struct MXFIndexEntry { uint8_t flags; } MXFIndexEntry; +typedef struct j2k_info_t { +uint16_t j2k_cap;///< j2k required decoder capabilities +uint16_t j2k_rsiz; ///< j2k required decoder capabilities (Rsiz) +uint32_t j2k_xsiz; ///< j2k width of the reference grid (Xsiz) +uint32_t j2k_ysiz; ///< j2k height of the reference grid (Ysiz) +uint32_t j2k_x0siz; ///< j2k horizontal offset from the origin of the reference grid to the left side of the image (X0siz) +uint32_t j2k_y0siz; ///< j2k vertical offset from the origin of the reference grid to the left side of the image (Y0siz) +uint32_t j2k_xtsiz; ///< j2k width of one reference tile with respect to the reference grid (XTsiz) +uint32_t j2k_ytsiz; ///< j2k height of one reference tile with respect to the reference grid (YTsiz) +uint32_t j2k_xt0siz; ///< j2k horizontal offset from the origin of the reference grid to the left side of the first tile (XT0siz) +uint32_t j2k_yt0siz; ///< j2k vertical offset from the origin of the reference grid to the left side of the first tile (YT0siz) +uint8_t j2k_comp_desc[12]; ///< j2k components descriptor (Ssiz(i), XRsiz(i), YRsiz(i)) +} j2k_info_t; + typedef struct MXFStreamContext { int64_t pkt_cnt; ///< pkt counter for muxed packets UID track_essence_element_key; @@ -104,6 +120,7 @@ typedef struct MXFStreamContext { int low_delay; ///< low delay, used in mpeg-2 descriptor int avc_intra; int micro_version; ///< format micro_version, used in ffv1 descriptor +j2k_info_t j2k_info; } MXFStreamContext; typedef struct MXFContainerEssenceEntry { @@ -413,6 +430,20 @@ static const MXFLocalTagPair mxf_local_tag_batch[] = { { 0xDFD9, {0x06,0x0E,0x2B,0x34,0x01,0x01,0x01,0x0E,0x04,0x01,0x06,0x0C,0x06,0x00,0x00,0x00}}, /* FFV1 Micro-version */ { 0xDFDA, {0x06,0x0E,0x2B,0x34,0x01,0x01,0x01,0x0E,0x04,0x01,0x06,0x0C,0x05,0x00,0x00,0x00}}, /* FFV1 Version */ { 0xDFDB, {0x06,0x0E,0x2B,0x34,0x01,0x01,0x01,0x0E,0x04,0x01,0x06,0x0C,0x01,0x00,0x00,0x00}}, /* FFV1 Initialization Metadata */ +// ff_mxf_jpeg2000_local_tags +{ 0x8400, {0x06,0x0E,0x2B,0x34,0x01,0x01,0x01,0x09,0x06,0x01,0x01,0x04,0x06,0x10,0x00,0x00}}, /* Sub Descriptors / Opt Ordered array of strong references to sub descriptor sets */ +{ 0x8401, {0x06,0x0e,0x2b,0x34,0x01,0x01,0x01,0x0a,0x04,0x01,0x06,0x03,0x01,0x00,0x00,0x00}}, /* Rsiz: An enumerated value that de