JavascriptSubtitlesOctopus
JavascriptSubtitlesOctopus copied to clipboard
Upstreaming jellyfin and DataHoarder features
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
renderModesetting (#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
wasmBlendonce 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
renderAheadoptions into a single structured object - related: once this has been backported an example should also be added to the
gh_pagesbranch. Possibly duplicate the Karaoke Stress Test sample for all three oflossy,wasmBlendandwasmBlend+renderAheadso there's a direct comparison.
- though, the mode as originally implemented can get worse than
- [ ] “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 maybejs-blend: move conversion from monocoloured bitmaps to integer RGB to WASM, as attempted in #138, but without abusingASS_Image - [ ] ThaUnknown/jassub: Time subtitle frames to video frames. See jassub’s
onDemandRenderoption. - [ ] Future: check if
renderAheadcan be made to work with renderingmodes other thanwasmBlend - [ ] 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)