Welcome to Doom9's Forum, THE in-place to be for everyone interested in DVD conversion. Before you start posting please read the forum rules. By posting to this forum you agree to abide by the rules. |
|
![]() |
|
Thread Tools | Search this Thread | Display Modes |
![]() |
#1 | Link |
Registered User
Join Date: Feb 2022
Posts: 86
|
SUPer - BDNXML to BD SUP subtitle converter that supports animations
SUPer is a Python tool to convert BDNXML to Blu-ray SUP ("HDMV PGS") subtitles. SUPer is designed to make full use of the PGS capabilities and to produce compliant bytestreams that drive correctly the Blu-ray PGS decoder. SUPer notably has the capability to encode animations within a bitmap to use efficiently palette updates to make animations like colour effects, karaoke, fades and wipes. Finally, unlike Scenarist or avs2bdnxml, SUPer is not subject to buffer overflows as it drives the hardware PG decoder as intended by the designers.
Features Users that only want to convert BDNXML can simply use the stand-alone app. The app lets you convert PNG+BDNXML assets to a SUP file or PES+MUI assets for Scenarist BD. An origin SUP file may also be provided optionally to perform merging to a new file. For developers, SUPer also acts as a Python library to parse SUP files or generate them from code. It offers many module to perform image analysis, processing and PG bytestream handling. Example This example showcase the capabilities of SUPer. This file function on Blu-Ray players without any flickering or adverse effect. You can enjoy the full experience by playing it back with Nichijō second opening. Pyton package with GUI app https://github.com/cubicibo/SUPer Download stand-alone executable (macOS aarch64, win x64) https://github.com/cubicibo/SUPer/releases For users that uses the Python3 package (Python3.9+), you need to install it to your virtual environment before running supergui.py or import the package. Create a Python3 virtual environment, cd in the SUPer base folder then do: Code:
python3 -m pip install . Code:
python3 supergui.py ![]() ![]() Last edited by cubicibo; 18th September 2023 at 20:34. |
![]() |
![]() |
![]() |
#2 | Link | |
Registered User
Join Date: Feb 2022
Posts: 86
|
SUPer version 0.0.1a
Changelog Quote:
Last edited by cubicibo; 8th October 2022 at 20:57. |
|
![]() |
![]() |
![]() |
#3 | Link | |
Registered User
Join Date: Feb 2022
Posts: 86
|
SUPer 0.1.0 is out!
There is now a user-friendly interface (a Python GUI) akin to PunkGraphicStream. Changelog Quote:
Last edited by cubicibo; 8th October 2022 at 16:18. |
|
![]() |
![]() |
![]() |
#4 | Link | |
Registered User
Join Date: Feb 2022
Posts: 86
|
SUPer 0.1.1 is out and it is all about bugfixes.
Changelog Quote:
Last edited by cubicibo; 15th October 2022 at 10:03. |
|
![]() |
![]() |
![]() |
#5 | Link | |
Registered User
Join Date: Feb 2022
Posts: 86
|
SUPer 0.1.2
Quote:
• K-Means quantization is useful to work around a bug in PIL library. PIL is unable to quantize images with high transparency and can change the background to be full black. This breaks some fades. • K-Means quantization is noisy, unlike PIL. If you have karaoke aside of it, it can (but not necessarily) damage the non-fade animations. _________________ Some documentations for the few curious readers: What's the max refresh rate? - When the screen is re-drawn within an epoch (acquisition or a normal case), objects are copied to the hidden graphic plane. - On the presentation timestamp, the playback device swaps the two graphic planes (visible<->hidden). - If the update rate is too high, the graphic planes are not hidden sufficiently long to copy the data. - This leads to flickering. The allocated area for a frequently refreshed graphic must follow this rule: Code:
window_area < (k/fps)*16*(1024^2) - k: the update rate (1 if updated every frame, 2 if every other, and so on) - fps: the video framerate - window_area: area of the window on the graphic plane (object area is always equal or smaller to the window area). For Full HD content (1920x1080), the area in which we can update the rendering once per frame must not be more than 25% of the screen at 29.97 fps, or 31% at 23.976. For high framerate content (50i, 59.94i), the usable area decreases considerably. If the objects are additionnaly refreshed, the decoding time adds up to the rest. To work around this, SUPer lets you flag subsampled BDNXML (BDNXML generated at @25-29.97 fps, 1/2 of the true framerate). SUPer will flag the output .SUP as twice the framerate. ________ Example file, generated with the latest version of SUPer and tested on a commercial Blu-Ray playback device. Karaoke courtesy of kara.moe. Last edited by cubicibo; 5th November 2022 at 23:33. |
|
![]() |
![]() |
![]() |
#6 | Link |
Acid fr0g
Join Date: May 2002
Location: Italy
Posts: 2,438
|
When installing, I get the following error:
Code:
copying skimage\io\_plugins\_histograms.pyx -> build\lib.win-amd64-3.11\skimage\io\_plugins running build_ext INFO: No module named 'numpy.distutils._msvccompiler' in numpy.distutils; trying from distutils INFO: customize MSVCCompiler INFO: customize MSVCCompiler using ConditionalOpenMP INFO: CCompilerOpt.cc_test_flags[1073] : testing flags (/O2) error: Microsoft Visual C++ 14.0 or greater is required. Get it with "Microsoft C++ Build Tools": https://visualstudio.microsoft.com/visual-cpp-build-tools/ INFO: CCompilerOpt.cache_flush[857] : write cache to path -> C:\Users\AlbertoGennari\AppData\Local\Temp\pip-install-1vmru19u\scikit-image_965be48bfc2f42c0badcd913f2431977\build\temp.win-amd64-3.11\Release\ccompiler_opt_cache_ext.py [end of output] note: This error originates from a subprocess, and is likely not a problem with pip. ERROR: Failed building wheel for scikit-image Failed to build scikit-image ERROR: Could not build wheels for scikit-image, which is required to install pyproject.toml-based projects
__________________
@turment on Telegram |
![]() |
![]() |
![]() |
#7 | Link |
Registered User
Join Date: Feb 2022
Posts: 86
|
If you're on Windows, just get WSL. It will endlessly simplify your life.
For what you're trying to do, you can remove the scikit/sklearn entries in requirements.txt. As long as you then don't use the render module, you will be fine. |
![]() |
![]() |
![]() |
#9 | Link |
Registered User
Join Date: Feb 2022
Posts: 86
|
The script I wrote for you (updated) to split the PGS in two does not use the "render.py" module at all. I know the name may sound confusing but render.py is used to render a chain of BDN.XML events to a single SUP epoch and that is not what the script does. It only decodes/re-encodes RLE bitmaps and generates new PGS segments. None of this is "rendering".
If you need to use SUPer for other purpose, like exporting a BDNXML to SUP, you will need to install VC++ or WSL. I am not dropping skimage module as it provided an essential backbone to the grouping algorithm. Last edited by cubicibo; 8th November 2022 at 13:50. |
![]() |
![]() |
![]() |
#11 | Link | ||
Registered User
Join Date: Feb 2022
Posts: 86
|
Download the package from the release page (or clone the repository itself). Unzip it, edit requirements.txt to your need and execute:
Quote:
If the command does not work for some reason, change directory to the SUPer folder then run: Quote:
Last edited by cubicibo; 8th November 2022 at 20:11. |
||
![]() |
![]() |
![]() |
#12 | Link | |
Registered User
Join Date: Feb 2022
Posts: 86
|
SUPer 0.1.3
Quote:
Last edited by cubicibo; 15th November 2022 at 23:15. |
|
![]() |
![]() |
![]() |
#13 | Link | |
Registered User
Join Date: Feb 2022
Posts: 86
|
SUPer v0.1.5
Quote:
Last edited by cubicibo; 1st May 2023 at 15:13. |
|
![]() |
![]() |
![]() |
#14 | Link | |
Registered User
Join Date: Feb 2022
Posts: 86
|
SUPer v0.1.6
SUPer is now distributed as stand-alone binaries too! Only an Apple M1 (aarch64) build is available presently, Windows may follow later. Quote:
|
|
![]() |
![]() |
![]() |
#15 | Link | |
Registered User
Join Date: Feb 2022
Posts: 86
|
SUPer v0.1.7
Windows-x64 and macos-aarch64 stand-alone apps are provided. Quote:
Last edited by cubicibo; 20th May 2023 at 10:39. |
|
![]() |
![]() |
![]() |
#16 | Link | |
Registered User
Join Date: Feb 2022
Posts: 86
|
SUPer v0.1.8
Gigantic update. SUPer now generates compliant PG stream by default, including exact DTS values to ensure compatibility with old PG decoders (e.g. PS3). The update notably adds double buffering, ahead of time displayset decoding and normal case redefinition for smooth animations, even with complex and large objects. Credits to Masstock for the many tips, testing and feedback that made this update as complete as it is! Quote:
Last edited by cubicibo; 2nd August 2023 at 17:00. |
|
![]() |
![]() |
![]() |
#17 | Link | |
Registered User
Join Date: Feb 2022
Posts: 86
|
SUPer v0.1.9
This version addresses the issues faced by files generated by SUPer imported in Scenarist BD. Many thanks to Masstock further testing. Quote:
![]() ![]() Last edited by cubicibo; 5th August 2023 at 23:12. |
|
![]() |
![]() |
![]() |
#18 | Link | |
Registered User
Join Date: Feb 2022
Posts: 86
|
SUPer v0.2.1
I exhausted all compliancy rules and checks known by us mere mortals. I now expect the output of SUPer to pass the BDA verification tests. Quote:
Last edited by cubicibo; 18th September 2023 at 17:03. |
|
![]() |
![]() |
![]() |
#19 | Link |
Big Bit Savings Now !
Join Date: Feb 2007
Location: close to the wall
Posts: 1,470
|
Wow, big thanks cubicibo !
__________________
"To bypass shortcuts and find suffering...is called QUALity" (Die toten Augen von Friedrichshain) "Data reduction ? Yep, Sir. We're that issue working on. Synce invntoin uf lingöage..." |
![]() |
![]() |
![]() |
#20 | Link | |
Registered User
Join Date: Feb 2022
Posts: 86
|
SUPer v0.2.2
Numerous small changes that improves greatly the conversion process and the quality of the output. There should be fewer dropped events starting v0.2.2. Quote:
Last edited by cubicibo; 26th November 2023 at 13:23. |
|
![]() |
![]() |
![]() |
Thread Tools | Search this Thread |
Display Modes | |
|
|