• gingaf: Headless and Multiplatform Execution of ITU-SBTVD NCL Applications

    Alan L. V. Guedes
    Computer Science, University of Reading, UK

    ACM International Conference on Multimedia (MM '26)
    Rio de Janeiro, BR

    Paper Website (slides, code, demo):
    https://alanlivio.github.io/paper-mm26-gingaf/

gingaf: Headless and Multiplatform Execution of ITU-SBTVD NCL Applications — ACM MM 2026Alan Guedes

Agenda

  • Context & Problem Definition
  • Proposed Solution
  • gingaf Features & Demo
  • Final Remarks
gingaf: Headless and Multiplatform Execution of ITU-SBTVD NCL Applications — ACM MM 2026Alan Guedes

Context & Problem Definition

gingaf: Headless and Multiplatform Execution of ITU-SBTVD NCL Applications — ACM MM 2026Alan Guedes

Context: Ginga is a TV software (>60M TV set-top boxes in South America)

gingaf: Headless and Multiplatform Execution of ITU-SBTVD NCL Applications — ACM MM 2026Alan Guedes

Context: Ginga is an academic-led effort

center

gingaf: Headless and Multiplatform Execution of ITU-SBTVD NCL Applications — ACM MM 2026Alan Guedes

Context: Ginga plays NCL documents

Example video.ncl

  • <media id="video"  src="butterfly.mp4">
        <area id="a1" begin="2s" end="4s"/>
    </media>
    <media id="green_bg">
        <property name="background" value="green"/>
        <property name="bounds" value="0%,80%,20%,20%"/>
    </media>
    <media id="red_bg">
        <property name="background" value="red"/>
        <property name="bounds" value="80%,80%,20%,20%"/>
        <property name="explicitDur" value="2s"/>
    </media>
    ...
    
gingaf: Headless and Multiplatform Execution of ITU-SBTVD NCL Applications — ACM MM 2026Alan Guedes

Context: Ginga plays NCL documents

Example video.ncl

  • ...
    <port id="init" component="video"/>
    <link id="l1">
        <bind role="onBegin" component="video" interface="a1"/>
        <bind role="start" component="green_bg"/>
    </link>
    <link id="l2">
        <bind role="onEnd" component="video" interface="a1"/>
        <bind role="stop" component="green_bg"/>
        <bind role="start" component="red_bg"/>
    </link>
    
gingaf: Headless and Multiplatform Execution of ITU-SBTVD NCL Applications — ACM MM 2026Alan Guedes

Context: Other TV systems also have XML-based languages

center

gingaf: Headless and Multiplatform Execution of ITU-SBTVD NCL Applications — ACM MM 2026Alan Guedes

Problem definition: Complexity

center

gingaf: Headless and Multiplatform Execution of ITU-SBTVD NCL Applications — ACM MM 2026Alan Guedes

Problem definition: no "zero-install"

Compare Mozilla (https://developer.mozilla.org/) with Ginga-VM (2010)

gingaf: Headless and Multiplatform Execution of ITU-SBTVD NCL Applications — ACM MM 2026Alan Guedes

Proposed Solution

gingaf: Headless and Multiplatform Execution of ITU-SBTVD NCL Applications — ACM MM 2026Alan Guedes

Proposed Solution: portable multimedia engine

  • PUC-Rio (Java AWT)
    PUC-Rio (C++, FFmpeg)
    PUC-Rio (C++, GStreamer)

  • gingaf (ours)
    Ginga-NCL + Ginga-HTML5

  • PUC-Rio (Netscape)
    UFSCar (WebNCL)
    Sidia NuGinga (NodeJS)

  • Native

  • Browser

gingaf: Headless and Multiplatform Execution of ITU-SBTVD NCL Applications — ACM MM 2026Alan Guedes

Proposed Solution: portable multimedia engine


  • (a) Windows


  • (b) Android


  • (c) Web Browser

gingaf: Headless and Multiplatform Execution of ITU-SBTVD NCL Applications — ACM MM 2026Alan Guedes

Proposed Solution: Architecture

  • Previous ginga Implementations

    No virtual clock & coupled UI-logic

  • gingaf Architecture

    Virtual clock & decoupled UI-logic

gingaf: Headless and Multiplatform Execution of ITU-SBTVD NCL Applications — ACM MM 2026Alan Guedes

Proposed Solution: Virtual clock

It allows advancing simulated playback time arbitrarily without waiting for real-world elapsed seconds.

center

gingaf: Headless and Multiplatform Execution of ITU-SBTVD NCL Applications — ACM MM 2026Alan Guedes

Final Remarks

gingaf: Headless and Multiplatform Execution of ITU-SBTVD NCL Applications — ACM MM 2026Alan Guedes

Demos: Playground

gingaf: Headless and Multiplatform Execution of ITU-SBTVD NCL Applications — ACM MM 2026Alan Guedes

Demos: Playground Debug

center

gingaf: Headless and Multiplatform Execution of ITU-SBTVD NCL Applications — ACM MM 2026Alan Guedes

Contributions

  • 1. Multiplatform Graphics Engine
    Single Dart/Flutter multiplatform code

  • 2. Decoupled UI
    In-memory NCL state machine isolated from UI rendering

  • 3. Virtual Clock
    Time progression via tick() and allow debug

  • 4. Open-Source
    https://github.com/ginga-org-br/gingaf

gingaf: Headless and Multiplatform Execution of ITU-SBTVD NCL Applications — ACM MM 2026Alan Guedes

Thank You!