Proposal: Matroska/WebM playback lister (WLX) — .mkv / .webm
Problem. DC's bundled MacPreview lister plays .mp4/.mov but shows nothing for .mkv/.webm. It bridges to AVFoundation/QuickLook, and macOS can't demux the Matroska container — even when the streams are codecs macOS decodes natively.
Evidence. A 1080p H.264 + AAC file in both containers, same content:
| Container |
AVURLAsset |
Tracks |
Plays |
.mp4 |
readable=1 |
video+audio |
✓ |
.mkv |
readable=0 |
none |
✗ |
So the codecs (H.264/HEVC/AAC/AC-3) are fine — only the container is unsupported. This is the same wall the media-info-wdx columns hit, which is why that plugin ships a hand-written EBML reader. A playback lister could build on that same demuxing foundation.
Design routes (unlike the WDX columns, there is no small clean win here):
-
Native — demux ourselves, feed macOS decoders. Extend the EBML reader into a full demuxer (Clusters → blocks → timestamps/lacing), push video into AVSampleBufferDisplayLayer + audio into an audio renderer, with A/V sync, play/pause, seeking.
- ✅ Zero dependencies, native, small binary, matches the collection's identity.
- ⚠️ Substantial effort (A/V sync + seeking are the hard parts); limited to macOS-supported codecs (H.264/HEVC/AAC/AC-3) — not VP9/AV1/Opus (common in WebM).
-
Bundle a media engine (libmpv / VLCKit). Host a real player view that demuxes+decodes everything.
- ✅ Plays any codec/container; little of our own code.
- ⚠️ Large (~tens of MB) vendored binary + LGPL/GPL attribution and runtime-module packaging; cuts against the repo's lean, dependency-free standard.
-
Still-preview only (not playback). Decode just the first keyframe (demuxer + VideoToolbox) and show it beside the metadata media-info-wdx already parses, with an "open in default app" action.
- ✅ Far less work, no dependency.
- ⚠️ Doesn't play in-pane.
Codec-coverage note. Route 1 covers the vast majority of real-world .mkv (H.264/HEVC + AAC/AC-3). Full .webm (VP9/AV1/Opus) realistically needs Route 2.
Status: parked for deliberate planning — no approach chosen yet. Filed so it isn't lost.
Proposal: Matroska/WebM playback lister (WLX) —
.mkv/.webmProblem. DC's bundled MacPreview lister plays
.mp4/.movbut shows nothing for.mkv/.webm. It bridges to AVFoundation/QuickLook, and macOS can't demux the Matroska container — even when the streams are codecs macOS decodes natively.Evidence. A 1080p H.264 + AAC file in both containers, same content:
AVURLAsset.mp4readable=1.mkvreadable=0So the codecs (H.264/HEVC/AAC/AC-3) are fine — only the container is unsupported. This is the same wall the
media-info-wdxcolumns hit, which is why that plugin ships a hand-written EBML reader. A playback lister could build on that same demuxing foundation.Design routes (unlike the WDX columns, there is no small clean win here):
Native — demux ourselves, feed macOS decoders. Extend the EBML reader into a full demuxer (Clusters → blocks → timestamps/lacing), push video into
AVSampleBufferDisplayLayer+ audio into an audio renderer, with A/V sync, play/pause, seeking.Bundle a media engine (libmpv / VLCKit). Host a real player view that demuxes+decodes everything.
Still-preview only (not playback). Decode just the first keyframe (demuxer + VideoToolbox) and show it beside the metadata
media-info-wdxalready parses, with an "open in default app" action.Codec-coverage note. Route 1 covers the vast majority of real-world
.mkv(H.264/HEVC + AAC/AC-3). Full.webm(VP9/AV1/Opus) realistically needs Route 2.Status: parked for deliberate planning — no approach chosen yet. Filed so it isn't lost.