Releases: cubicibo/SUPer
v0.1.8
SUPer v0.1.8
Credits to Masstock for the many tips, testing and feedback that made this update as complete as it is!
Front-end
• Add a command line client (guizero can be removed from requirements.txt if you prefer to use the cli over the gui)
• Add an option to further tune acquisition rate (for compression when animations are used).
• Update existing tooltips and add more.
• Compatibility mode tickbox now disables cropping.
• DTS checkbox is automatically ticked and cannot be unticked for PES+MUI output.
• Auto-add SUP extension on GUI if none provided.
• Try to fix a rare bug where the GUI kept using the first selected BDNXML file.
Back-end:
Rendering:
• Optimise composition objects together to better distribute the palette entries.
• Use palette update to undisplay graphics in the middle of a palette animation.
• Implement double buffering to decouple decoding and rendering to let hardware decoders perform multitasking! (*)
• Implement NORMAL CASE object redefinition, used if worthwile.
• Implement palette updates buffering to perform screen updates while long object decoding is in progress.
• Implement events dropping to ensure necessary object definitions are feasible and stream is strictly compliant. (**)
• Reduce memory usage and fix numerous small issues.
PG bytestream:
• Re-implement PTS and DTS computation to be identical to Scenarist BD.
• Fix a bug that caused the penultimate display set of an epoch to refresh the object.
• Prevent the usage of the palette entry ID 255, apparently it should not be used.
• Cycle through palettes ID when palette version overflows to increase compatibility.
• Remove the work-around for palette updates with two objects.
• Add auto-cropping of objects to minimize transfer time on hardware decoders.
Parsing:
• Escape BDNXML files to avoid a crash on badly encoded data.
• Filter out zero duration events in BDNXML (events where InTC == OutTC)
Notes:
(*) Hardware decoders are designed to perform decoding and rendering at the same time. It is possible to continuously decode incoming display sets as long as the decoder does not write to the memory region that the renderer is reading! This is alleviated by performing double buffering and using the numerous palettes.
(**) the dropped event is generally one or two frames long at 23.976-29.97 fps and should go unnoticed.
v0.1.7
SUPer v0.1.7
Front-end
• Add Scenarist BD output format PES+MUI (Output dialog box -> select .PES format at the bottom)
• Add option to enforce DTS timestamps in stream. This should NOT be used unless your muxing software is terrible.
• Add more tooltips on the checkboxes
Back-end
• Fix timecode conversions and rounding errors, SUPer should now be frame accurate.
• Use adaptive structual similarity threshold to account for possible large transparent areas.
• Fix a crash due to blinking bitmaps.
• Filter out empty bitmaps generated for blinking subtitles - saves bandwidth.
• Avoid acquisitions to undisplay one object when two are on screen - saves bandwidth.
Known issue
• A runtime warning is sometime displayed by numpy about empty slice. This is not a bug and has no effect whatsoever on the output.
v0.1.6
SUPer is now distributed as stand-alone binaries! An Apple M1 (aarch64) build is attached. Windows executables may follow later.
Front-end
- Add option to use K-Means quantization on all frames (guarantees quality but slow)
- Add option to fix a possible time drift with NTSC framerates (23.976, 29.97)
- Add compatibility mode option for software players that do not decode palette update display sets correctly.
- Add a progress bar while generating an epoch bytestream.
Back-end
- Revisit again the grouping engine to make it faster and more robust.
- Fix a memory leak in the conversion pipeline.
- Some clean-ups.
Known issue:
- A very small object (< 8x8 pixels) on the very edge of the screen will not render correctly. You should not put any subtitles in the common overscan area anyway.
v0.1.5
SUPer has a brand new BDNXML -> SUP conversion pipeline! With higher quality output and smarter bandwidth usage.
User interface
• None, it is all under the hood.
Back-end
• Implement a brand new grouping engine to define windows.
• Implement a brand new conversion pipeline using some image processing to define objects and find refreshs.
• Optimise the code and algorithms, add numba support. Up to 10x faster on some costly functions.
• Add code to perform palette updates with two objects.
• Update TimeConv internals to have accurate SMPTE timings.
• Drop some dead code.
• Fix many small issues
v0.1.3a
User interface
- Add colorspace dropdown menu (select BT.601, BT.709, BT.2020).
- Updated the log message format.
Back-end
- Fix some grouping issues related to temporal overlapping with single objects within an epoch.
- Add rendering "interface" class for scripting.
- Add ODS visualisation function to analyze an encoded animation within a bitmap.
- Compute adaptively the maximum delay required for a new epoch with respect to BDN video feed dimensions (for coarse epoch definition)
- Fix version and palette ID swap in PDS from_scratch function.