[FFmpeg-devel] [PATCH] avcodec/jpeg2000dec: support of 2 fields in 1 AVPacket

Tomas Härdin git at haerdin.se
Mon Feb 19 13:08:12 EET 2024


mån 2024-02-19 klockan 00:14 +0100 skrev Tomas Härdin:
> tor 2024-02-15 klockan 16:02 +0100 skrev Jerome Martinez:
> > On 05/02/2024 01:19, Tomas Härdin wrote:
> > > [...]
> > > Which entry in the table would the provided file correspond to?
> > > To
> > > me
> > > it seems none of them fit. There's two fields, meaning two j2k
> > > codestreams, in each corresponding essence element KLV packet (I
> > > think,
> > > unless CP packets get reassembled somewhere else). Entry I2 seems
> > > closest but it specifies FULL_FRAME. I1 is otherwise tempting,
> > > but
> > > there SampleRate should equal the field rate whereas the file has
> > > SampleRate = 30000/1001.
> > 
> > Other examples I have (not shareable) with 2 jp2k pictures per KLV
> > have 
> > identification from an old version of AmberFin iCR, I have no file
> > with 
> > the I2 correctly signaled, with my first example it isI2 (2 fields
> > per 
> > KLV) with I1 Header Metadata Property Values **but** with I2
> > essence 
> > container label which has a content byte (byte 15 of the UL) of
> > 0x04
> > = I2.
> > The AmberFin iCR files have the generic essence container label
> > with 
> > content byte of 0x01 = FU (Unspecified) so for my main use case we
> > could 
> > activate the search of the 2nd jp2k only if I2 is explicitly
> > signaled
> > by 
> > the essence container label but it would prevent to catch the 2nd
> > field 
> > when this signaling is unspecified and buggy Frame layout + sample
> > rate 
> > + edit rate.
> 
> I'm not super stoked about implementing support for broken muxers.
> Instead these companies should fix their code. But either way we at
> the
> very least need a reliable way to detect these kinds of files if we
> are
> to do this. There was no Software + Version information in the sample
> provided, which is otherwise a reliable method to deal with shitty
> muxers.

Correction: there is Identification metadata, but it's at the end of
the header metadata so I missed it.

    Identifications
      Identification = {fb8e5be0-1fc5-11e9-8263-7062b8a31e5c}
      Identification -> Strong Reference to Identification
        Identification
          InstanceUID = {fb8e5be0-1fc5-11e9-8263-7062b8a31e5c}
          ThisGenerationUID = {fb8e5be0-1fc5-11e9-8264-7062b8a31e5c}
          CompanyName = OpenCube
          ProductName = MXFTk Advanced
          ProductUID = {3a4fe380-0d01-11e4-869f-3cd92b5c1dfc}
          VersionString = 2.7.0.20190123
          ProductVersion = Major="2", Minor="7", Patch="0", Build="0",
Release="VersionReleased"
          ToolkitVersion = Major="2", Minor="7", Patch="0", Build="0",
Release="VersionReleased"
          Platform = Microsoft Windows 7 Professional Service Pack 1
(Build 7601)
          ModificationDate = 2019-01-24 11:51:37.884
    LastModifiedDate = 2019-01-24 11:51:37.884
    GenerationUID = {fb8e5be0-1fc5-11e9-8264-7062b8a31e5c}

This at least (maybe) allows us to detect these broken files. But does
MXFTk *always* write interlaced files like this?

/Tomas


More information about the ffmpeg-devel mailing list