Description:
MintVID is a multi-codec video player for accelerated 68k Amigas, from
68030-class OCS/ECS/AGA systems through 68040/060 machines to PiStorm/Emu68.
It supports native chipset and RTG output, local files, HTTP/HTTPS, HLS,
IPTV and public YouTube playback.
WHAT'S NEW IN 1.4.0
- Stereo audio. Paula now plays through a synchronized left/right
channel pair, so stereo sources keep their stereo image instead of
being mixed down to one channel. Mono sources, and the Mono audio
option, play the same signal on both speakers.
- A1200 68060/50 plays YouTube. In VQ Turbo+ (keyframes only)
YouTube's 360p stream plays with correct high-quality stereo sound on
a real A1200 with a 68060 at 50 MHz. Turbo+ no longer skips audio
while it waits for keyframes, HTTPS segments resume their TLS session
instead of paying a full handshake, and AGA colour conversion takes
about a third of the 68k instructions it did.
- PiStorm 600 plays YouTube without the P96 overlay. On the tested
Pi3-based PiStorm 600 (MintVID040), YouTube's 360p stream plays
through CGX with VQ Turbo and the new RTG (Half) display mode. The
YUV-to-RGB step fell from 57 ms to about 12 ms per 640x360 frame
there, and H.264 decode itself is faster.
- Window and Window Half display modes play in a sizeable window on a
native-chipset (AGA/ECS/OCS) Workbench, matching the dither palette to
the screen's pens so Workbench's own colours never change.
- RTG (Half) display mode: the window opens at half the video's width
and height and colour conversion writes straight to that size, so
conversion and the copy to the card each do about a quarter of the
work (H.264).
- VQ: Smoosh keeps H.264 moving on a machine that cannot keep up: late
P/B pictures are not decoded, motion smears until the next keyframe,
and audio always comes first.
- Display: No Video plays only the soundtrack - no video is decoded -
with a small Workbench window for ESC, pause, seek and volume.
- Turbo+ no longer skips about 10 s of audio while waiting for the next
keyframe.
- Faster H.264 motion compensation and Baseline decode, and AAC decoded
directly at a reduced rate (31-63% less AAC work when the output rate
is halved or quartered).
- The P96 hardware video overlay works on real Voodoo3/Permedia-class
boards: it opens with the packed-YUV format (RGBFB_Y4U2V2) the
historical RiVA driver path used, with the right chroma order (a new
P96 Output Format menu switches between YVYU for WinUAE and YUYV for
Voodoo) and studio-range clamping. The overlay window can be resized
with the card doing the scaling, and fullscreen falls back to CGX when
a board refuses the overlay.
- Fast buffer adds 32 and 64 MB, and YouTube/IPTV HLS now downloads
several segments ahead of playback.
- HTTPS menu: TLS 1.2 (the faster default) or TLS 1.3.
- HAM6 (Dither) and HAM8 (Dither) display modes: an ordered dither on
each HAM colour change, so skies and other smooth areas stop banding.
Clear on HAM6, subtle on HAM8; edges look the same as plain HAM.
- Faster P96 on 16-bit screens: when the overlay is refused, H.264 is
copied straight to the 16-bit screen format. On WinUAE 720p YouTube
the display step fell from about 34 ms to about 17 ms per frame.
- Faster MPEG-1/2: four-pixel motion compensation and a sparse-block
IDCT cut decode by 19-29% of 68k instructions, output unchanged.
- Live HLS/IPTV: Turbo+ no longer stalls on streams with B-frames (BBC
One), live playback starts about 30 seconds from the live edge, and
the playlist is re-read before playback reaches its end.
MintVID 1.4.0 builds on 1.3.2's DV decoder, Extra Half-Brite display mode
and MPEG-1/2 Fast speed mode, 1.3.1's original P96 hardware video overlay
introduction (now made to work correctly on real hardware, see above) and
the retirement of H.264 TurboGT, whose policy had become
identical to Turbo's; Turbo is now the default H.264 speed and TurboGT
remains accepted only as a command-line/settings alias. The 1.3.0
H.264/AAC performance work, and the WMV7/8, HLS shutdown, Kalms C2P, RTG
direct-write, YouTube and RAM-aware queueing work from 1.1.x, all remain
present.
See CHANGELOG.txt in the release archive, or CHANGELOG.md in the source tree,
for the detailed list.
Codec support does not imply real-time playback on every CPU. Practical
performance depends on processor speed, codec complexity, resolution,
bitrate and display mode. Lightweight older codecs are the natural fit
for classic accelerators. Very-low-resolution H.264 can now approach real time
on a fast real 68060, while PiStorm/Emu68 remains the practical target for a
broader range of modern streams and resolutions.
WHO THIS IS FOR
MintVID is aimed at accelerated Amiga hardware whose owner wants a broad
video player with local-file, network, YouTube and IPTV support. On classic
68030/040/060 accelerators, the supported online formats should not be read as
a promise of smooth H.264 streaming; those features are also useful for
compatibility testing and experimentation. PiStorm/Emu68-class systems are
the main target for practical H.264 YouTube/IPTV use.
MintVID uses the same feature set across its 68030, 68040 and 68060 builds.
There is no separate AGA, RTG or PiStorm feature edition; display mode and
practical playback performance depend on the hardware underneath it.
- 68030-class OCS/ECS/AGA systems - best suited to lightweight codecs and
modest frame sizes. Cinepak is the natural starting point; heavier
formats may decode correctly without being practical in real time.
- 68040/060 systems - older codecs such as Cinepak, MJPEG, MPEG-1/2,
MPEG-4 Part 2 and WMV7/8 become more practical at modest resolutions,
especially with RTG. H.264/AVC remains extremely demanding, but the 1.2.0
H.264/AAC improvements brought the lowest-resolution BBC One HLS stream
close to real time on a tested real 68060 using AGA/HAM8. Results depend
heavily on CPU clock, stream, audio, resolution and display mode; higher
resolutions are still not expected to be real-time on classic hardware.
In 1.4.0 a real A1200 with a 68060/50 plays YouTube's 360p stream in
VQ Turbo+ (keyframes only) with full-quality stereo sound.
- PiStorm/Emu68 - use the MintVID040 build. This is the build targeted for
the Emu68/PiStorm environment. H.264/AVC (Baseline through High Profile,
CABAC and B-frames) becomes much more practical here. On the tested
Pi3-based PiStorm 600, YouTube's 360p stream plays with VQ Turbo and
the RTG (Half) display mode, through CGX since the PiStorm's RTG has
no P96 overlay. Faster PiStorm hardware should provide more headroom,
but exact results depend on the stream and configuration.
- Vampire/Apollo 68080 - not yet validated by the MintVID project, so no
optimised build is officially recommended yet. Do not assume the 68060
build is the correct choice solely from the CPU name; feedback from real
Vampire hardware is welcome.
WHAT IT PLAYS
- Containers: AVI, QuickTime MOV/MP4, Matroska/MKV, MPEG-TS/M2TS, raw
MPEG-1 program streams, raw MJPEG/MPEG-4 Visual streams, and direct
HTTP(S)/HLS URLs (including live IPTV playlists and YouTube).
- Video codecs: Cinepak, Microsoft Video 1, Microsoft RLE8, uncompressed
UYVY422, H.263 / H.263+, Motion-JPEG, MPEG-1, MPEG-2 (with B-frames),
MPEG-4 Part 2 (ISO ASP and Microsoft MP42/DIV2), Windows Media Video 7
(WMV1), Windows Media Video 8 (WMV2), H.264/AVC Baseline/Main/High
Profile, and DV (IEC 61834/SMPTE 314M, PAL 4:2:0 and NTSC/DVCPRO 4:1:1).
- Audio to Paula in stereo: PCM, MP2, MP3, AAC-LC (raw/ADTS/LATM), and
fixed-point AC-3 (stereo downmix). MP3/AAC decoding reuses the proven
MintAMP/Helix code.
- Two complete GUI sets over the same player: ReAction (V44) and plain
GadTools/Intuition (V37) for a standard AmigaOS 3.0 install, each with
matching file, IPTV-directory and YouTube-search browser windows.
YOUTUBE URL INPUT
The YouTube browser can be used for links as well as searches. Paste a public
YouTube URL into ytgui's search field and press Search. ytgui and ytgui-GT
recognise normal watch links, /live/, /shorts/, /embed/ and youtu.be links,
including links with extra query parameters. The URL is shown as a single
selected result ready for Play, using the same playback options as an ordinary
YouTube search result.
This is useful when a video or live stream was found on another machine: copy
or paste the link into MintVID instead of trying to find the same item again
through YouTube search. URL recognition itself is local, but actual YouTube
playback still needs the normal HTTPS/AmiSSL support.
The YouTube search type also includes Hashtags. Enter one tag with or without
its leading #; MintVID opens YouTube's dedicated hashtag page and lists its
normal video and Shorts renderers through the existing results browser.
WMV compatibility notes: WMV1's low-bitrate spatial intra/inter prediction
mode is not implemented and is rejected rather than approximated. WMV2's
IntraX8 (J-frame) mode is likewise not supported. Normal tested WMV1/WMV2
AVI I/P streams use the native decoders.
MintVID's core decoders are regression-tested against ffmpeg using the
project's test fixtures where applicable. The portable core is also
cross-built and exercised on a big-endian m68k target under QEMU to catch
endianness and alignment problems that a little-endian x86 host build can
miss - see the project page for details.
DEFAULTS AND H.264 SPEED MODES
Kalms is the default C2P choice for AGA/HAM playback. If the selected geometry
or BitMap layout cannot use its CPU-matched converter, MintVID automatically
falls back to the established graphics.library path. RTG ignores C2P choices.
Turbo is the default H.264 speed. Auto selects the same policy. This one
chooser is now a general Video Quality (VQ) control: Quality selects each
codec's own full-quality path, and Balanced/Fast/Turbo/Turbo+ all select
the fast path for DV and MPEG-1/2 as well as H.264.
- Quality: full filtering, no deliberate frame skipping. DV decodes full
coefficients; MPEG-1/2 decodes every picture including B-frames.
- Balanced: in-loop deblocking disabled; motion compensation stays exact.
- Fast: Balanced plus bilinear rather than six-tap interpolation, but
still keeps every frame.
- Turbo: Fast policy plus B-frame skipping; preserves the P-frame chain.
DV decodes DC-only coefficients (~1.9x faster); MPEG-1/2 skips B-picture
decode entirely (always safe - a B picture is never referenced later).
- Turbo+: skips both P- and B-frames, so only keyframes are decoded and
shown and that decode stays short enough on a slow CPU to keep audio from
stuttering between frames. A last-resort keyframe/slideshow mode, not the
normal fastest setting.
- Smoosh: Turbo's policy, plus P/B pictures that are already late are not
decoded at all. Motion smears ("datamosh") until the next keyframe
restores the picture, but video keeps moving and audio comes first. For
streams with no B-frames (YouTube 360p is Baseline), where Turbo has
nothing to skip.
TurboGT was retired in 1.3.1: its policy had been identical to Turbo's
since a correctness fix forced every degrading H.264 mode onto the same
all-or-nothing filtering policy, and every mode from Balanced down now
disables deblocking on keyframes as well as other pictures for the same
reason - leaving some pictures undegraded left the remaining ones being
deblocked against stale per-macroblock parameters, which was both
incorrect and slow enough that Fast ran slower than Quality.
--h264-speed=turbogt still works from the command line or a saved
setting, aliased straight to Turbo. All modes below Quality are
substantially faster than in 1.2.0.
VIDEO FRAME POLICY
Both GUI editions offer a Video selector:
- Video: All Frames (default) keeps every decoded picture, even when it is
late. Use it when the source is already keeping up, and for live/HLS
playback unless the picture is visibly falling behind.
- Video: Skip Frames drops decoded pictures that are already late. For
H.264, sustained lateness also engages libavc IVD_SKIP_PB to avoid most
P/B-picture decode work until the next IDR; confirmed with an overloaded
720p stream under WinUAE, where full-rate decoding was not possible, so a
slower Amiga can catch up. Audio, timestamps and decoder selection are
unchanged. This is the recommended first change for a stuttering or
decode-bound local/heavy video. "Skip after" sets how far behind it may
fall before it starts skipping (0.2-2 s, default 0.7 s).
- Display: No Video (the Display chooser's last row) plays the
soundtrack only. No video is decoded or shown; a small Workbench
window takes ESC, space, cursor keys and volume.
The command-line equivalents are --throughput (All Frames),
--no-throughput (Skip Frames), --skip-trigger=MS and --no-video
(No Video). A
direct network/HLS mrplay invocation defaults to throughput mode; a direct
local-file invocation does not. GUI sessions pass the selected policy
explicitly.
RECOMMENDED STARTING POINTS
68030 ECS/AGA: AGA or EHB, lace off, 2x off, modest lightweight codecs.
Use Skip Frames only when playback falls behind.
68040/060 AGA: AGA/HAM, Kalms, lace off, 2x off, Turbo VQ for H.264. Use
Turbo+ for audio-first playback and Skip Frames when decode is late.
68040/060 RTG: CGX/P96, Turbo VQ, Fast buffer Auto, and a low-resolution
source before increasing quality. Try RTG (Half) when colour conversion
and the copy to the card are the bottleneck.
PiStorm/Emu68: MintVID040, RTG (Half) and Turbo VQ for YouTube 360p.
Smoosh keeps high-motion scenes moving if Turbo falls behind.
Live HLS/IPTV: start with All Frames and a low-resolution variant. For direct
mrplay use --live-resync after a live stall; --net-queue=24 is a deeper
read-ahead choice when free Fast RAM allows it.
Keep the complete release drawer together. The AmigaGuide manual is
MintVID.guide beside the binaries; MintVID.guide.info supplies its Workbench
icon when the file is copied into a drawer.
WHAT IT IS NOT
MintVID uses a modular decoder architecture, so its supported format list can
grow without tying the player to one fixed codec. It is not a video editor or
encoder: use ffmpeg or similar on a modern machine to prepare source material,
then play the result on the Amiga. Timeline seeking (cursor left/right,
10 seconds at a time, landing on the nearest keyframe) works for local
QuickTime MOV/MP4 files; AVI, MKV, and network/live sources don't have a
keyframe index yet, so cursor-right stays a fast-forward toggle there instead.
Cursor up/down adjust Paula's volume, and once playback starts, the
controller's Info: field - and, on RTG (CGX/P96), the video window's own title
bar - mirrors a live H:MM:SS/M:SS playhead so you can see where a seek actually
landed.
INSTALLATION
Choose the MintVID030, MintVID040 or MintVID060 drawer for a normal 68030,
68040 or 68060 system respectively. PiStorm/Emu68 users should use
MintVID040. Vampire/Apollo 68080 has not yet been validated, so there is no
official optimised-build recommendation for it yet. Copy the chosen drawer to
your Amiga and keep its contents together.
Run MintVID on systems with ReAction V44, or MintVID-GT for the plain
GadTools/Intuition interface used by a standard AmigaOS 3.0 installation.
IPTV and YouTube browsing are reachable from the controller's menus.
Everything else in the drawer (mrplay, iptvgui, ytgui, the GadTools -GT set,
mr_decode) is a support binary loaded on demand. Nothing in the release drawer
is intended to be split up or copied out on its own.
PROJECT / SOURCE
https://github.com/boingball/MintVID
Clone with submodules to obtain the pinned MintAMP and libavc sources used by
the build:
git clone --recurse-submodules https://github.com/boingball/MintVID.git
SOURCE / LICENSING
MintVID's own source is MIT-licensed. It links several dependencies that keep
their own licences (GPL-2.0-or-later, Apache-2.0, and RealNetworks RPSL among
them). The release archive includes a LICENSES drawer with the MintVID licence
and upstream licence/notices available from the checked-out dependencies.
See the project README for the full breakdown before redistributing binaries,
and provide the corresponding source required by the licences of the binary
components you redistribute.
SUPPORT
If MintVID is useful, or YouTube on an Amiga made you laugh, you can help
keep the hardware testing and development going at:
https://buymeacoffee.com/boingball
|