Filmdecoder van Pardoes Player (indeo5.js + indeo5.wasm) ======================================================= Wat het is De originele filmpjes op de cd van "Een Wonderlijk Avontuur met Pardoes de Tovernar" zijn AVI-bestanden met beeld in Intel Indeo Video 5. Geen enkele browser kan dat zelf afspelen. De speler gebruikt daarom een kleine decoder in WebAssembly, die alleen wordt geladen als je een filmpje van de cd-ISO afspeelt. Herkomst en licentie - De decoder is de Indeo 5-decoder van FFmpeg 8.0 (libavcodec: indeo5.c, ivi.c, ivi_dsp.c en het benodigde deel van libavutil). FFmpeg is gelicenseerd onder de GNU Lesser General Public License, versie 2.1 of later (zie FFmpeg-COPYING.LGPLv2.1.txt). De build bevat geen GPL- of "nonfree"-onderdelen. - Aan FFmpeg zelf is niets gewijzigd. - De koppeling indeo5_wasm.c is gelicenseerd onder de LGPL, versie 2.1 of later. - indeo5.js en indeo5.wasm bevatten runtimecode van Emscripten (MIT/University of Illinois-NCSA, zie Emscripten-LICENSE.txt), musl libc (MIT, zie musl-COPYRIGHT.txt) en dlmalloc (public domain/CC0). - De exacte buildconfiguratie staat in BUILD-CONFIG.txt. - De licentie van de speler zelf (LICENTIE.txt) beperkt de rechten die je onder de LGPL en de andere licenties in deze map hebt niet. Je mag de decoder onderzoeken, aanpassen, opnieuw bouwen en vervangen. Broncode (op deze website, in de map bron/) - bron/ffmpeg-8.0.tar.xz de ongewijzigde FFmpeg 8.0-broncode (ook op https://ffmpeg.org/releases/ffmpeg-8.0.tar.xz) sha256 b2751fccb6cc4c77708113cd78b561059b6fa904b24162fa0be2d60273d27b8e - bron/pardoes-filmdecoder-bron.zip de koppeling (indeo5_wasm.c), het bouwscript (build.sh), BUILD-CONFIG.txt, LEESMIJ-BRON.txt met de bouwinstructies en de verwachte uitkomst, en de licentieteksten. Zelf vervangen indeo5.js en indeo5.wasm zijn losse bestanden naast de speler (index.html). Je mag ze vervangen door een eigen build, bijvoorbeeld van een nieuwere FFmpeg, zolang die dezelfde interface heeft: - indeo5.js definieert de functie Indeo5Module (Emscripten -sMODULARIZE=1 -sEXPORT_NAME=Indeo5Module). De speler roept Indeo5Module({ locateFile: f => f }) aan; die geeft een Promise met de module. indeo5.wasm wordt naast indeo5.js gezocht. - De module biedt HEAPU8 (-sEXPORTED_RUNTIME_METHODS=HEAPU8) en deze functies (C-namen, in JavaScript met een liggend streepje ervoor, zoals _iv5_open): int iv5_open(int breedte, int hoogte) start een film; 0 = gelukt (een vorige film wordt eerst gesloten) void iv5_close(void) sluit de film en geeft het geheugen vrij uint8_t *iv5_buf(int n) geeft een buffer voor n bytes; de speler kopieert daar één videoblok uit de AVI in (via HEAPU8) int iv5_decode(int n) decodeert die n bytes; 1 = er is een nieuw beeld uint8_t *iv5_plane(int i) beeldvlak i = 0 (Y), 1 (U), 2 (V) int iv5_stride(int i) regellengte in bytes van vlak i int iv5_width(void), iv5_height(void) afmetingen van het beeld int iv5_format(void) pixelformaat van FFmpeg (wordt door de speler niet gebruikt) - Het beeld moet YUV 4:1:0 planair zijn (zoals de Indeo 5-decoder van FFmpeg het levert): U en V zijn in beide richtingen 4 keer kleiner dan Y. Zo test je een eigen decoder: - Lokaal: sla de speler, indeo5.js, indeo5.wasm en de mappen fonts/ en LICENSES/ op in één map, zet je eigen indeo5.js/indeo5.wasm erin en open de map via een lokale webserver (bijvoorbeeld "python3 -m http.server"). Via file:// (dubbelklikken) blokkeert de browser de decoder; de filmpjes spelen dan alleen met geluid. - Op deze website: met de functie "Local Overrides" van de ontwikkelaarshulpmiddelen van je browser kun je indeo5.wasm en indeo5.js vervangen door je eigen bestanden. De speler controleert de decoder niet. Zonder deze bestanden werkt de speler ook; de filmpjes van de cd spelen dan alleen met geluid. Spelmateriaal De speler bevat geen beelden, geluiden of films van het spel. Die komen uit je eigen PARDOES.DAT of cd-ISO en verlaten je computer niet.