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.
