204 Commits

Author SHA1 Message Date
Daniel Kamil Kozar
451ec61a50
Introduce a uniform formatting style (#131)
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.
2020-01-14 21:56:44 +01:00
Dan
66121f673d Fix typo in key used by tsMuxerGUI settings : 'famaly' to 'family' (#122) 2020-01-14 21:40:25 +01:00
jcdr428
05069ad398 Fix wav64 payload length declared in the header (#137)
For w64, data length includes data metadata (16 bytes) and size (8 bytes)
So 24 bytes have to be substracted from the length read in the stream.

For lpcm, tsMuxer considers frames of 5 ms and rounds up the last block for frame alignment.
So it is normal for the demux to be slightly larger thant the original wav stream.

Fixes #136.
2020-01-14 21:11:40 +01:00
Daniel Kamil Kozar
a4cc39fb10
Non-functional GUI improvements
* 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.
2020-01-11 23:46:04 +01:00
Daniel Kamil Kozar
1701957c05
Avoid using the "general" group in QSettings due to QTBUG-28893 (#135)
Fixes #132
2020-01-11 18:28:31 +01:00
jcdr428
99bcae79a7 Fix fps info in HEVC streams and locales using commas as decimal point (#130) 2020-01-11 12:01:09 +01:00
jcdr428
0f3137e1d9 Revert on change of ATS #101 (#125)
Limiting the reading pace of packets to the Bluray Tranfer Rate value actually creates another issue -timegap between two PCR packets create by tsMuxer can be larger than 100ms.
This issue can be worse than the one solved...

I haven't managed to solve this new issue, so for the time being I prefer to revert on the previous merge #101.
2020-01-10 23:31:45 +01:00
Dan
1fa62c696a
Merge pull request #123 from jcdr428/Warning_on_video_format
Warning if video is not V3 compliant
2020-01-08 22:20:51 +00:00
Dan
cd33519cff
Merge pull request #124 from jcdr428/Set_TS_video_stream_id_to_0xe0
First video stream_id has been changed to 0xe1 for m2ts, but must stay at 0xe0 for TS streams
2020-01-08 22:20:09 +00:00
jcdr428
eff8dfd118 Standart to Standard (#121)
Straightforward orthographic correction
2020-01-08 21:24:33 +01:00
Jean Christophe DE RYCK
eaa421f5cb Set TS video stream_id to 0xe0
First M2TS video stream_id has been changed to 0xe1 for m2ts, but must stay at 0xe0 for TS streams.
2020-01-08 21:07:30 +02:00
Jean Christophe DE RYCK
551bcdafad Warning on video format
tsMuxer accepts V2 formats for V3 Blu-rays. A warning is shown when the format is not V3 compliant.
2020-01-08 19:26:38 +02:00
Dan
b55b4df64f
Merge pull request #120 from jcdr428/Move_V3_Option_to_Bluray_Tab
Move BD V3 option to Blu-ray tab in GUI
2020-01-08 16:29:07 +00:00
jcdr428
5935cef416
Remove radioButtonBluRayUHD 2020-01-08 17:57:45 +02:00
jcdr428
bc247acebc
Correction CheckBox -> QCheckBox 2020-01-08 17:55:18 +02:00
De Ryck
c002fee286 Move BD V3 option to Blu-ray 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.
2020-01-08 13:33:40 +02:00
jcdr428
21b41bc8f5 Update tsmuxerwindow.cpp (#119)
Allow folder dialog (and not file dialog) to show when UHD Blu-ray folder is selected.
2020-01-08 06:50:42 +01:00
jcdr428
2061c2e5bd Fix HEVC stream info detection in GUI (#115)
* Fix FPS and other HEVC stream info detection in GUI

* Fix FPS and other HEVC stream info detection in GUI
2020-01-07 19:09:48 +01:00
Daniel Kamil Kozar
08040e886f
Fix crashes with invalid font files in /usr/share/fonts (#116)
tsMuxer called FT_Done_Face also if FT_New_Face reported an error. This caused
FT_Done_Face to be fed with a pointer that was either already freed in a
previous iteration of the loop, or was totally uninitialised from the start.

Fixes #63
2020-01-07 19:08:44 +01:00
Daniel Kamil Kozar
0c24c4f994
Merge pull request #112 from jcdr428/Correct_CPI_Table_for_UHD
Correct cpi table for uhd
2020-01-06 23:01:21 +01:00
Daniel Kamil Kozar
3ad0a4f67f
Merge pull request #111 from jcdr428/Dolby_Vision_integration
Dolby Vision Integration
2020-01-06 23:01:05 +01:00
Dan
cadf8391af
Merge pull request #113 from jcdr428/FPS_Info_frm_VPS_and_SPS
Allow FPS to be read from SPS if not in VPS
2020-01-06 20:10:10 +00:00
Jean Christophe DE RYCK
2ef8fd6187 FPS info read from VPS and SPS
fps info can be either in VPS or SPS nal, or both, or none.
tsMuxer reads fps from VPS nal only.
This patch allows tsMuxer to find fps in SPS when not present in VPS.
Plus bug sorted out in flags reading (8 bits in lieu of 1 bit)
2020-01-06 19:52:57 +02:00
Jean Christophe DE RYCK
410a170a5b Correction to I_end patch 2020-01-06 19:24:56 +02:00
Jean Christophe DE RYCK
8f6467ba49 Correct CPI table for UHD
I_end values in ClipInf CPI Table are determined by thresholds on I-frame sizes.
These threshold sizes are different for TS_Recording_Rate <= 60000000 (HD), and for TS_Recording_Rate > 60000000 (4K).

This patch solves issue #107

The commit must be merged after commit #111 for V3_flags / Dolby Vision Integration.
2020-01-06 19:20:11 +02:00
Jean Christophe DE RYCK
bdeca7ee29 Dolby Vision Integration
- Separate the V3 flags (for index.bdmv) from the HDR metadata (for .mpls)
- With V3_flags the UHD_BLURAY DiskType is not needed anymore
- Add subpath for Dolby Vision
- Change BD Type to 66/100 GB and TS-Recording_Rate to 109 mbps when 4K is detected
2020-01-06 18:56:32 +02:00
Dan
c3c7f6c7c4
Merge pull request #94 from jcdr428/patch-1
Fixes HEVC0112 and HEVC0115
2020-01-05 22:09:32 +00:00
Dan
de44fe227b
Merge pull request #101 from jcdr428/Correct_Arrival_Time_Stamps
Fix M2TS0077
2020-01-04 20:54:24 +00:00
Dan
86d1cd9875
Merge pull request #106 from jcdr428/patch-2
Correct lack of chapters with UHD Bluray folder
2020-01-04 20:53:09 +00:00
jcdr428
ab2d95db1b
Correct UHD Bluray Folder Behavior
This fixes e.g. lack of chapters with UHD Bluray Folder option.

(see https://forum.doom9.org/showthread.php?p=1894587#post1894587)
2020-01-04 08:59:38 +01:00
Daniel Kamil Kozar
fa8751d530
Place the main tsMuxeR binary inside AppDir (#105)
Since AppImage essentially creates a separate filesystem that the GUI binary
runs from, it's not possible for it to be aware of the existence of the main
binary that's alongside the actual AppImage file that's supposed to be run by
the end user.
The only solution to this that I can see now is copying the main binary into the
AppDir, which makes the file reside alongside the GUI binary inside the
filesystem that AppImage creates.

Fixes #103.
2020-01-03 00:58:42 +01:00
jcdr428
fa9962276f Update textSubtitlesRender (#102)
* Update textSubtitleRender

Solve build warnings related to potential overflows in int to size_t conversions.
2020-01-02 00:04:15 +01:00
Jean Christophe DE RYCK
a64a048bbf Correct Arrival Time Stamps
The BD Player cannot read faster than the TS_Recording_Rate.
The TS_Recording_Rate is hereby fixed to 6 MB/s for 2K (25/50 GB disk), and 13.625 MB/s for 4K (66/100 GB Disk).

Therefore the difference of ATS between two consecutive packets cannot be less than 846 PCR units for 2K, and 373 PCR units for 4K.
Those two values have been checked to be the standard for ATS difference between two video packets in several commercial HD and UHD Blu-rays.
2019-12-31 16:27:24 +01:00
Dan
cc358941fe
Merge pull request #92 from jcdr428/Corrrect_TS_Descriptors
Correct TS Descriptors, fixes verification errors PSI0033, PSI0036 and PSI0042.
2019-12-31 11:52:47 +00:00
Dan
644d47674d
Merge pull request #100 from jcdr428/patch-2
Set video stream number to 1, resolves verification error HEVC0116
2019-12-31 11:51:46 +00:00
jcdr428
15616768a9
Set video stream number to 1
As per T-REC.H-222.0 (ISO/IEC 13818-1) Table 2-22, video stream_id is 1110 xxxx for video stream number xxxx.
As checked on multiple commercial Blu-rays, video stream_id should be 1, not 0.

This fix solves error reported by `BD-ROM Part3 Verifier`:
`----------------------------------------------
Error ID      : HEVC0116
Target File   : 00000.m2ts <HEVC PID=0x1011>
Target Field  : <PES packet of the HDMV HEVC video stream>.stream_id
Section No    : 9.19.7
Error Message : stream_id is set to 0xe0.
                
                File offset of PES packet = 776.
Explanation   : stream_id: This field shall be set to 1110 0001b.
- - - - - - - - - - - - - - - - - - - - - - - 
[HEVC0116] : 346 times.
----------------------------------------------`
2019-12-30 18:16:28 +01:00
jcdr428
cd2864a168
Fix suffix NAL - 3/3
Currently tsMuxer does not detect suffix nals (non VCL nals placed after the VCL nals in the nal unit).
Therefore these nals are placed first in the TS PES, before the AUD or next frame nal.

This patch fixes the above.
2019-12-29 22:14:50 +01:00
Daniel Kamil Kozar
717f5f821e
Disable replacing spaces with underscores in the temporary meta file path (#97)
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.
2019-12-29 22:13:31 +01:00
jcdr428
965ee77a58
Fix suffix NAL - 2/3
Currently tsMuxer does not detect suffix nals (non VCL nals placed after the VCL nals in the nal unit).
Therefore these nals are placed first in the TS PES, before the AUD or next frame nal.

This patch fixes the above.
2019-12-29 22:10:36 +01:00
jcdr428
20ac0dde1f
Fix suffix NAL - 1/3
Currently tsMuxer does not detect suffix nals (non VCL nals placed after the VCL nals in the nal unit).
Therefore these nals are placed first in the TS PES, before the AUD or next frame nal.

This patch fixes the above.
2019-12-29 22:08:37 +01:00
jcdr428
d74417e6e4 Automatic V3 for HEVC (#90)
tsMuxer will now automatically switch to Blu-ray V3 when HEVC is detected.
2019-12-29 21:46:20 +01:00
jcdr428
1ccfe1fdf5
Solve HEVC Buffer Overflow Bug
Currently, buffer overflow is not avoided in all cases, i.e. nextNal can have end buffer value instead of start of next nal value.
This results in the AUD NAL not being always at the begining of a PES packet.
This patch solves this by ensuring that when nextNal == bufEnd, data is always added to buffer.
2019-12-29 16:34:23 +01:00
jcdr428
b03ecf15d7 Enought to Enough (#91)
Explicit enought ;)
2019-12-27 23:22:38 +01:00
Jean Christophe DE RYCK
fdcedca920 Correct TS Descriptors
Correct TS Descriptors to be the same as the descriptors on Blu-ray disks.
2019-12-27 21:54:17 +01:00
jcdr428
cadb85a77c Support for UHD HDR10 and HDR10+ (#70) 2019-12-26 23:17:41 +01:00
Daniel Kamil Kozar
46b15ebdb4
Merge pull request #88 from xavery/fix-87
Fix numbers appearing in places where the language code should
2019-12-22 01:25:56 +01:00
Daniel Kamil Kozar
c22aada8df
Fix numbers appearing in places where the language code should
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.
2019-12-21 20:51:53 +01:00
Dan
cee050aee6
Merge pull request #86 from justdan96/enhancement-nightly-build
fix typo causing nightly builds despite no changes
2019-12-18 21:00:25 +00:00
Dan Bryant
42644eb895 fix typo that was causing builds to be generated every night despite no changes 2019-12-18 20:57:50 +00:00
Dan
439540d886
Merge pull request #82 from justdan96/enhancement-nightly-build
update README to explain nightly builds being uploaded to Bintray
2019-12-15 21:40:35 +00:00