Opened 21 months ago

Last modified 20 months ago

#7577 new defect

FFmpeg can't decode DCP SMPTE Timed Text subtitles within MXF

Reported by: kieranjol Owned by:
Priority: normal Component: avformat
Version: git-master Keywords: mxf
Cc: Blocked By:
Blocking: Reproduced by developer: no
Analyzed by developer: no


Summary of the bug:
ffmpeg can't decode time text subtitles as found in DCP/MXF.
I'm am hoping to attach a file to this ticket, but if that fails, the subs mxf will be within this zipfile -
How to reproduce:

./ffmpeg -i CHARBON-SMPTE-24/sub1_24.mxf 
ffmpeg version N-92540-g28c96c2ce2 Copyright (c) 2000-2018 the FFmpeg developers
  built with Apple LLVM version 8.0.0 (clang-800.0.42.1)
  libavutil      56. 24.101 / 56. 24.101
  libavcodec     58. 40.100 / 58. 40.100
  libavformat    58. 23.100 / 58. 23.100
  libavdevice    58.  6.100 / 58.  6.100
  libavfilter     7. 46.100 /  7. 46.100
  libswscale      5.  4.100 /  5.  4.100
  libswresample   3.  4.100 /  3.  4.100
[mxf @ 0x7f931a000000] "OPAtom" with 2 ECs - assuming OP1a
[mxf @ 0x7f931a000000] no essence
CHARBON-SMPTE-24/sub1_24.mxf: Invalid data found when processing input

Attachments (1)

sub1_24.mxf (360.7 KB) - added by kieranjol 21 months ago.

Download all attachments as: .zip

Change History (8)

Changed 21 months ago by kieranjol

comment:1 Changed 21 months ago by kieranjol

As an aside, I should point out that these subtitles are not terribly well supported even in digital cinema servers/projectors. The INTEROP XML subtitles seem to have universal support, and these SMPTE subtitles don't seem to work at all with older systems.

comment:2 Changed 21 months ago by cehoyos

  • Component changed from undetermined to avformat
  • Keywords mxf added
  • Version changed from unspecified to git-master

comment:3 Changed 20 months ago by Tjoppen

mxfdump says there are some ULs in this file that it doesn't know about, but does:

  • 060e2b34.0253.0101.0d010101.01016400 DCTimedTextDescriptor
  • 060e2b34.0253.0101.0d010101.01016500 DCTimedTextResourceSubDescriptor
  • 060e2b34.0205.0101.0d010201.01031100 GenericStreamPartition?

The latest DCP spec is freely available, but I don't have S429-5 (SMPTE 429-5 D-Cinema Packaging - Timed Text Track File) in my archives, which DCI claims is what defines these KLVs. Telling mxfdump to attempt to parse dark metadata yields some more clues, and a copy of S429-5 can probably be found if I dig some more

Is getting at the XML inside enough, or do you also need it decoded/transcoded to some other subtitle format?

comment:4 Changed 20 months ago by kieranjol

I really don't know what would be best. I think getting access to the XML is probably enough for now. With Interop DCP XML, I usually just run a script that turns the subs into SRT anyhow. Thanks for looking into this.

comment:5 Changed 20 months ago by Tjoppen

It seems I spoke a bit too soon, the only XML is in the header partition. The body partition seems to contain font data and some kind of data that looks random-ish. Is the file encrypted?

comment:6 Changed 20 months ago by kieranjol

It is not encrypted as far as I can tell.. The audio and image within that DCP (link in first post) are not encrypted anyhow..

comment:7 Changed 20 months ago by Tjoppen

Right, yes. There's JPEG2000 and wave audio descriptors in there, which only become apparent with mxfdump in verbose mode. I was looking at the subtitle file only, which explains some things.

The audio file has some problems decoding, the video file decodes fine.

I've poked at mxfdec.c to get it to parse the body partition in the subtitle file, and gotten a hold of most related specs. I could probably implement this, but it isn't the kind of thing I do for free. If you're interested, privmsg me on IRC (thardin on freenode) or send an email to tomas at haerdin dot se

Last edited 20 months ago by Tjoppen (previous) (diff)
Note: See TracTickets for help on using tickets.