[FFmpeg-devel] Patch JPEG2000 Parser: Fix parsing of tile-part header

Shaun Simpson shauns2029 at gmail.com
Sun Jul 25 11:47:51 EEST 2021


Hi Jan,

I am glad these patches help, thank you for  looking into this.

> It also seems like it would make sense to have a minimal sample of
> such bit stream type in our FATE test set so we can figure out if the
> parsing of such streams fails in the future.

Yes, I have been looking at samples for FATE as they are required, but the
size of these files is problematic.
If I try and use FFmpeg to sample the beginning of the Sol Levante, the
issue "goes away".
The best I could do was to use "dd" to truncate the file for my testing.

I will look at using Da Vinci Resolve to create a sample, what sample size
should I be considering for FATE?

> As someone who unfortunately lacks the context for JPEG2000 bit
> streams, can you give any pointers towards helping with review?

Yes, I would appreciate a second pair of eyes.
I used following document: T-REC-T.800-201511-S!!PDF-E.pdf
https://www.itu.int/rec/dologin_pub.asp?lang=e&id=T-REC-T.800-201511-S!!PDF-E&type=items

> Also others may consider this as a flag that if there is JPEG2000 bit
> stream knowledge about, you are free to poke at this one :) . It seems
> to fix decoding properly.

Yes, I am willing. I can't guarantee my response times but I would like to
get J2K playback working as robustly as possible.

> It seems to be set if the AVStream's internal->need_parsing is set to
> AVSTREAM_PARSE_HEADERS , which is the default behavior in
> avformat/mxfdec.

Thank you for this information.

Shaun

On Sat, Jul 24, 2021 at 7:01 PM Jan Ekström <jeebjp at gmail.com> wrote:

> On Wed, Jul 21, 2021 at 7:02 PM Shaun Simpson <shauns2029 at gmail.com>
> wrote:
> >
> > Please find my patch attached.
> >
> > libavcodec/jpeg2000_parser: Fix parsing of tile-part header, and frames
> > where the end of frame marker is at the end of the buffer.
> >
> > Fixes playback of Sol Levante MXF JPEG2000 file:
> > VIDEO_e4da5fcd-5ffc-4713-bcdd-95ea579d790b.mxf
> >
> >
> http://download.opencontent.netflix.com.s3.amazonaws.com/SolLevante/imf/SolLevante_IMF_DolbyVision_PQP3D65_UHD_24fps.zip
> >
> > Bug Summary:
> > When playing back VIDEO_e4da5fcd-5ffc-4713-bcdd-95ea579d790b.mxf, I
> noticed
> > a regression between release 4.2.4 and release 4.3.2. Release 4.3.2 skips
> > some frames. This can be seen in the first 15 seconds of the video. The
> > Netflix logo should fade out.
> >
> > This regression is in the master branch and was introduced by commit
> > d09c356 which adds a JPEG2000 parser. I have also tested this patch
> against
> > my 3 other JPEG2000 samples.
> >
> > The patches are against master branch 13ec662 and fix playback of this
> file.
> >
>
> First of all, thank you for poking at the j2k parser. I have seen
> similar complaints from multiple people handling J2K in MXF, and after
> linking these patches to such people they seem to fix the issue.
>
> It also seems like it would make sense to have a minimal sample of
> such bit stream type in our FATE test set so we can figure out if the
> parsing of such streams fails in the future.
>
> > 1. Fixed a off by one error when calculating the number of bytes to skip.
> >
> > 2. Added a 'continue' to the Tile part header reading, to skip the
> reaming
> > paring code during a header read.
> >
> > 3. To deal with the end of frame tag being at the very end of the buffer,
> > return the frame size during the current loop iteration.
> >
>
> As someone who unfortunately lacks the context for JPEG2000 bit
> streams, can you give any pointers towards helping with review?
>
> Also others may consider this as a flag that if there is JPEG2000 bit
> stream knowledge about, you are free to poke at this one :) . It seems
> to fix decoding properly.
>
> > Is the PARSER_FLAG_COMPLETE_FRAMES flag supposed to be set for the
> Netflix
> > sample? The files playback correctly if the flag is set, as each buffer
> > contains a complete frame, but it is not set for the test case above.
> >
>
> It seems to be set if the AVStream's internal->need_parsing is set to
> AVSTREAM_PARSE_HEADERS , which is the default behavior in
> avformat/mxfdec.
>
> Jan
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel at ffmpeg.org
> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>
> To unsubscribe, visit link above, or email
> ffmpeg-devel-request at ffmpeg.org with subject "unsubscribe".
>


More information about the ffmpeg-devel mailing list