JavascriptSubtitlesOctopus icon indicating copy to clipboard operation
JavascriptSubtitlesOctopus copied to clipboard

Upstreaming jellyfin and DataHoarder features

Open TheOneric opened this issue 3 years ago • 0 comments

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.

  • [x] 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)
  • [x] Fixes/polyfills for old browser engines (still found in eg Smart-TVs; see #112 and #114)
  • [x] Unification of renderMode options into one renderMode setting (#118)
  • [x] Option to limit the canvas size (#119, #127)
  • [x] refactor internal buffers (#133)
  • [x] 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: https://github.com/jellyfin/JavascriptSubtitlesOctopus/pull/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
  • [x] DataHoarder: lazy font loading and other font improvements (#146)
  • [x] DataHoarder: enable use of embedded fonts
  • [x] DataHoarder: fix fontconfig cache dir
  • [x] 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 #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 #132 which seems to cover some resize bugs, but not all the current hacks)

TheOneric avatar May 07 '22 19:05 TheOneric