{"record":{"id":"586125109004e6d7","repo":"SubtitleEdit/subtitleedit","slug":"mxf-contains-images-count-image-essence-s-but-n","errorCode":null,"errorMessage":"MXF contains {images.Count} image essence(s) but no text subtitles. Image-based MXF subtitles (PNG essences) aren't supported yet — the parser doesn't reconstruct per-essence PTS, so the bitmaps have no timing.","messagePattern":"MXF contains (.+?) image essence\\(s\\) but no text subtitles\\. Image-based MXF subtitles \\(PNG essences\\) aren't supported yet — the parser doesn't reconstruct per-essence PTS, so the bitmaps have no timing\\.","errorType":"exception","errorClass":"InvalidOperationException","httpStatus":null,"severity":"error","filePath":"src/seconv/Core/ContainerSubtitleLoader.cs","lineNumber":177,"sourceCode":"            throw new InvalidOperationException(\n                $\"Failed to parse MXF file '{filePath}': {ex.Message}\", ex);\n        }\n\n        if (!parser.IsValid)\n        {\n            // Not a real MXF (no Header Partition Pack signature). Fall through to the\n            // text loader — the file might just have a misleading extension.\n            return null;\n        }\n\n        var subtitleTexts = parser.GetSubtitles();\n        var images = parser.GetImages();\n\n        if (subtitleTexts.Count == 0)\n        {\n            if (images.Count > 0)\n            {\n                throw new InvalidOperationException(\n                    $\"MXF contains {images.Count} image essence(s) but no text subtitles. \"\n                    + \"Image-based MXF subtitles (PNG essences) aren't supported yet — \"\n                    + \"the parser doesn't reconstruct per-essence PTS, so the bitmaps have no timing.\");\n            }\n            throw new InvalidOperationException($\"No subtitle essences found in MXF: {filePath}\");\n        }\n\n        if (images.Count > 0)\n        {\n            AnsiConsole.MarkupLine(\n                $\"[yellow]Note: MXF also contains {images.Count} image essence(s) — skipped (no timing context).[/]\");\n        }\n\n        var tracks = new List<LoadedTrack>();\n        var trackNumber = 1;\n        foreach (var subtitleText in subtitleTexts)\n        {\n            // Honour --track-number against the 1-based essence index — mirrors how","sourceCodeStart":159,"sourceCodeEnd":195,"githubUrl":"https://github.com/SubtitleEdit/subtitleedit/blob/17a9f0748781032255db3526b7215d2fb891e3af/src/seconv/Core/ContainerSubtitleLoader.cs#L159-L195","documentation":"Thrown when an MXF parses successfully and contains image essences (e.g. PNG subtitle planes) but zero text subtitle essences. seconv cannot use image-based MXF subtitles because MxfParser does not reconstruct per-essence PTS, so the bitmaps have no timing. This is a deliberate 'not yet supported' guard rather than a data-corruption error.","triggerScenarios":"Loading an MXF whose GetSubtitles() returns an empty list while GetImages() returns one or more PNG/image essences (ContainerSubtitleLoader.cs:170-175). Typical of MXF wrappers carrying image-based (bitmap) subtitle tracks instead of text.","commonSituations":"Broadcast/studio MXF masters with image subtitles (e.g. DVB-style bitmap captions wrapped in MXF); content authored for systems that store subtitles as PNG planes; trying to convert such a file before the parser gains PTS reconstruction.","solutions":["Use a tool that can extract the MXF image essences with their timing (e.g. FFmpeg's MXF/subtitle demuxer) and feed the extracted format to seconv instead.","Demux the subtitles to a supported image format (.sup/.sub+.idx) first, then run seconv on that.","Request/await per-essence PTS support in the MXF parser; until then this input type is unsupported."],"exampleFix":null,"handlingStrategy":"validation","validationCode":"// Use a separate probe to detect image-only MXF before converting.\n// (No public pre-check in seconv; rely on the exception message containing 'image essence'.)\nif (!File.Exists(mxfPath)) return;\n// Proceed; the guard inside the loader is the authoritative check.","typeGuard":null,"tryCatchPattern":"try { tracks = ContainerSubtitleLoader.TryLoadTracks(mxfPath, options); }\ncatch (InvalidOperationException ex) when (ex.Message.Contains(\"Image-based MXF subtitles\"))\n{ Console.Error.WriteLine(\"Unsupported image-based MXF subtitles; demux to .sup first.\"); return; }","preventionTips":["Demux image-based MXF subtitles to a supported image format (.sup) with FFmpeg before running seconv.","Catch the specific InvalidOperationException and route to an alternate extraction tool.","Track the parser's PTS-reconstruction feature so you know when image MXF becomes supported."],"tags":["mxf","image-subtitle","not-supported","subtitle"],"backgroundTag":null,"analyzedSha":"17a9f0748781032255db3526b7215d2fb891e3af","analyzedAt":"2026-08-13T18:11:43.374Z","schemaVersion":2},"datasetVersion":"2026-08-13T19:17:28.613Z"}