When a file with multiple video tracks is added (e.g. with Dolby Vision), tsMuxer swaps the order of the video tracks in the output.
This change, prevents such behavior and maintains the order of the inserted tracks.
It turns out that playing sound files available as application resources is as simple as using QSoundEffect with a qrc URL. This saves us from all the shenanigans previously done in order to save the resource to a file just to be able to pass it to a QSound object.
The contents of the UI tab were saved as inline HTML in the UI file for TsMuxerWindow. Making them translatable would've exported the content to .ts files, which means that translators would have to put up with not only HTML, but HTML with XML escaping applied into it.
Moving the content to an external file seems like a best approach in this case. The content of the file is loaded in the appropriate language when switching languages. The HTML files themselves are included as resources at build time.
This commit erases all usages of std::wstring from the face of the project and reduces wchar_t usages to the necessary minimum, mostly for interoperability with WinAPI functions. UTF-8 encoded std::strings are used in place of std::wstring objects, and code which must operate on actual characters instead of the bytes which might represent a character has been modified in order to work properly - mostly the subtitle renderer and reader classes.
This change brings translation support to the tsMuxeR GUI. We have a Russian translation available so far, thanks to @abakum. The last selected translation is saved in the settings file and restored at the application's next startup. The currently used language is selectable by a combo box in the lower left corner of the window.
This commit uses "wide" (i.e. UTF-16) commandline arguments when launching the
program on Windows, and uses the "wide" Windows APIs when dealing with strings.
This makes it independent from the currently selected active code page on the
system, and hopefully fixes issues with "nonstandard" characters appearing in
file and directory paths.
Fixes#172.
All pgStreams3D[pgTrackNum] (coming from clpi) must be changed to streamInfo (coming from mpls)
When 3d-plane is "FF", this means it is 'undefined' (i.e. 2D), not 'zero'.
QString::toDouble (and ::toFloat) behaviour changed between Qt4 and Qt5 : in
the older version, the function tried to convert the string according to the
current locale and, if unsuccessful, fell back to parsing according to the "C"
locale.
In Qt5, the conversion is always performed in the "C" locale, which means that
all the shenanigans related to finding and replacing the decimal point are not
needed anymore, since the main tsMuxer binary always runs in the "C" locale due
to not calling setlocale() at all.
Also, if Qt 4.8 documentation is to be believed, all this code wasn't ever
needed in the first place, as the conversion function would've just used the
"C" locale after failing to convert the string due to a mismatch in the used
decimal point character - and thus succeeded.
GitHub runners only checkout the particular revision that's going to be built
instead of the whole tree, which results in the revision count always being set
to 1. The short revision checksum is enough anyway.
This replaces the occurrences of the static version number with a version string
if building in a Git repository and Git is available on the build host.
This isn't perfect, since the revision is only going to be fetched when running
qmake or cmake, while it's possible that it changes between consecutive
compilations, not just reconfigurations. However, the main purpose of this is
to add a version tag to the builds built centrally by the GitHub runners, which
always configure the project from scratch.
Fixes#127.
The repository now contains a clang-format file which should be used when committing new code. Additionally, a new workflow job is added which checks the conformance of source files to the specified formatting rules.
Fixes#47.
* Don't include <QtGui>, which is a leftover from Qt4 and causes literally
everything to be pulled into the TU.
* Use forward declarations instead of includes where possible.
* Replace aggregated Ui* classes with aggregation via pointer, which allows
these classes to be forward-declared and thus further reduce the number of
included headers. Aggregation via pointer has been the default in Qt Creator
for some time now.
* Fix minor warnings reported by Clang.
* Move QnCheckBoxedHeaderView to a separate file.
* Move QtvCodecInfo to a separate file, change initializer list to inline member initialization.
* Create an actual QMake .pro file instead of stuffing it in MXE build scripts.
* Fix 32-bit integers being used as pointers to QtvCodecInfo objects in 64-bit Windows builds.
* Update information in the "About" tab.
Version is automatically switched to V3 when HEVC is detected.
In case the user wants to force the V3 format for AVC, he will be able to do it via the V3 option in the Blu-ray tab.
Unfortunately, we don't have enough history to be able to tell for sure, but it
seems like this was introduced somewhere between 2.6.12 and 2.6.13. The only
reason for this replacement that I can see is trying to prevent the shell from
treating the space-separated parts of the file paths as separate tokens.
Unfortunately, the string returned by QDir::tempPath() can legitimately contain
spaces, as there is nothing preventing the user from having a "fancy" temporary
directory path.
The real reason behind this line remains unknown. tsMuxer GUI currently doesn't
use shell for spawning processes, and arguments to the binary are properly
passed as a QStringList instead of one long string with command and arguments,
where the described issue could actually occur.
Fixes#93.
The original code paired the position inside the langComboBox with an address
into the shortLangList/fullLangList arrays by leveraging the second QVariant
argument of QComboBox::addItem. This was achieved by casting the pointer firstly
to a void*, and then to a qulonglong. However, the code using these QVariants
in QComboBox signal handler functions has since been changed to always call
toString(), which was incorrect and led to addresses being shown in the UI in
the form of longish decimal numbers.
Funnily enough, it looks like these shenanigans weren't even really needed : the
only part of the language pair used in the signal handler functions is the
three-letter code, which can be simply converted to a QString at the time
QComboBox::addItem is called.
Fixes#87.
The old syntax is essentially based on the "normalised representation" created
by the SIGNAL and SLOT macros, with potential mismatched only being caught at
runtime. The new syntax causes these errors to appear in compile time.