663 Commits

Author SHA1 Message Date
jcdr428
ed3aaf18d2 Maximize maxCLL and maxFALL in index.bdmv (#147)
MaxCLL and MaxFALL can vary in the stream. In which case, the value to be reported in index.bdmv is the maximum values read in the stream.
2020-01-19 23:25:30 +01:00
jcdr428
33a39958cb Update of 4-bit frame_rate_code (#146)
Patch needed for correct TS video_descriptor of 60fps PGS
2020-01-19 23:23:09 +01:00
jcdr428
6dc2e369e7 Fix crashes when BitStreamReader::skipBits argument is above 32 bits. (#151)
Because of the addition of reader.skipBits(toPassBits); , tsMuxer crashes when toPassBits is above 32 bits.

The commit 45fbb43 is useless, as the various parts of mpls and clpi are always contiguous.
2020-01-19 23:17:01 +01:00
Daniel Kamil Kozar
146be40555
Don't use the git revision count in the version tag
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.
2020-01-17 18:18:44 +01:00
Daniel Kamil Kozar
e8007adba5
Use the checked out Git revision as app version if building in a Git repository (#144)
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.
2020-01-17 17:58:23 +01:00
jcdr428
fb82f2eb86 Add framerates 50, 59.94 & 60 fps (#143)
This adds the framerates 50, 59.94 & 60 fps in the drop-down list of the GUI.

Fixes #142.
2020-01-17 17:43:08 +01:00
jcdr428
cfa9b678b5 Fix 3d-plane / PID bug (#140)
PGS stream orders in mpls and clpi can be different. PGS stream order for 3d-plane is taken from clpi , whereas it should be taken from mpls.
2020-01-17 17:41:29 +01:00
Alexey Shidlovsky
1b21faadc4 Fix MacOS build by including C headers in C++ mode (#138)
Including raw C headers caused a certain version of libc++ not to find the floating-point version of abs(), which caused compilation errors due to argument type ambiguity.
2020-01-17 00:06:30 +01:00
jcdr428
4016357b8e Automatic V3 before muxing (#139)
This patch allow automatic selection of BD-ROM V3 option in GUI before muxing when HEVC is detected.
2020-01-16 19:54:09 +01:00
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