Skip to content

Upstreaming jellyfin and DataHoarder features #136

Open
@TheOneric

Description

@TheOneric

This issue tracks what has and hasn't been upstreamed from jellyfin and DataHoarder yet. Also some future improvements discussed in #111 but also not present in either of those have been included into the list.
For reference: #111 has most of the jellyfin features from 2021.09 except for the smart/tiled blending, but also kept the confusing commit distribution and descriptions as well as bugs from the original implementation. It thus need(ed|s) to be split for better reviewability, future maintainability and to find and fix the bugs before they hit master.

The items can mostly be worked on in any order, not just the one they are listed in.

  • Various bugfixes to what already existed in master *(should be mostly backoprted at this point, though it's possibly some are still lurking in the commits)
  • Fixes/polyfills for old browser engines (still found in eg Smart-TVs; see [Jellyfin] Old browsers #112 and Legacy Brotli #114)
  • Unification of renderMode options into one renderMode setting (Unify renderMode options and add missing documentation #118)
  • Option to limit the canvas size ([Jellyfin] Limit canvas size #119, Add options for bounding and scaling the rendering canvas #127)
  • refactor internal buffers (Buffer refactor and buffer bug fixes #133)
  • dropAllAnimations (Jellyfin’s dropAllAnimations #134)
  • Possibly the core jellyfin feature: renderAhead
    • though, the mode as originally implemented can get worse than wasmBlend once it fell behind schedule. A backport should ideally thus directly include a fix for that, one approach (untested) can be found e.g. here: Fix stalled RenderAhead jellyfin/JavascriptSubtitlesOctopus#25. Also another fix for an accidental global var here and here.
    • possible change from jellyfin: consider to consolidate all renderAhead options into a single structured object
    • related: once this has been backported an example should also be added to the gh_pages branch. Possibly duplicate the Karaoke Stress Test sample for all three of lossy, wasmBlend and wasmBlend+renderAhead so there's a direct comparison.
  • “Smart/Tiled Blending” to avoid creating and sending large mostly empty frames on higher resolutions
  • Also check for fixes or new features added to jellyfin since the time of writing: See here
  • DataHoarder: lazy font loading and other font improvements (Implement lazy font loading, enable embedded font extraction #146)
  • DataHoarder: enable use of embedded fonts
  • DataHoarder: fix fontconfig cache dir
  • DataHoarder: reject renderingModes not support by the runtime
  • ThaUnknown/jassub: For losyyand maybe js-blend: move conversion from monocoloured bitmaps to integer RGB to WASM, as attempted in feat: perf: WASM decode #138, but without abusing ASS_Image
  • ThaUnknown/jassub: Time subtitle frames to video frames. See jassub’s onDemandRender option.
  • Future: check if renderAhead can be made to work with renderingmodes other than wasmBlend
  • Future: there's a bunch of dead code, like not-exposed and never called functions
  • Future: replace the continuous rescaling hacks (e.g. timeouts) with something proper (see also the not-yet-reviewed fix resize #132 which seems to cover some resize bugs, but not all the current hacks)

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions