MPEG TS reader: add hack for not combining Dolby Vision layers from separate tracks

This commit is contained in:
Moritz Bunkus 2024-09-03 22:09:18 +02:00
parent dfe8f3eaf3
commit 734db122e4
No known key found for this signature in database
GPG Key ID: 74AF00ADF2E32C85
3 changed files with 7 additions and 1 deletions

View File

@ -68,6 +68,7 @@ get_list() {
hacks.emplace_back("keep_whitespaces_in_text_subtitles", svec{ Y("Normally spaces & tabs are removed from the beginning & the end of each line in text subtitles."),
Y("If this hack is enabled, they won't be removed.") });
hacks.emplace_back("always_write_block_add_ids", svec{ Y("If enabled, the BlockAddID element will be written even if it's set to its default value of 1.") });
hacks.emplace_back("keep_dolby_vision_layers_separate", svec{ Y("Prevents mkvmerge from looking for Dolby Vision Enhancement Layers stored in a separate track & combining them with the track containing the Dolby Vision Base Layer.") });
hacks.emplace_back("cow", svec{ Y("No help available.") });
return hacks;

View File

@ -47,7 +47,8 @@ constexpr unsigned int APPEND_AND_SPLIT_FLAC = 22;
constexpr unsigned int DONT_NORMALIZE_PARAMETER_SETS = 23;
constexpr unsigned int KEEP_WHITESPACES_IN_TEXT_SUBTITLES = 24;
constexpr unsigned int ALWAYS_WRITE_BLOCK_ADD_IDS = 25;
constexpr unsigned int MAX_IDX = 25;
constexpr unsigned int KEEP_DOLBY_VISION_LAYERS_SEPARATE = 26;
constexpr unsigned int MAX_IDX = 26;
}
struct hack_t {

View File

@ -32,6 +32,7 @@
#include "common/checksums/base_fwd.h"
#include "common/dovi_meta.h"
#include "common/endian.h"
#include "common/hacks.h"
#include "common/hdmv_textst.h"
#include "common/mm_io_x.h"
#include "common/mp3.h"
@ -1427,6 +1428,9 @@ reader_c::read_headers_for_file(std::size_t file_num) {
void
reader_c::pair_dovi_base_and_enhancement_layer_tracks() {
if (mtx::hacks::is_engaged(mtx::hacks::KEEP_DOLBY_VISION_LAYERS_SEPARATE))
return;
for (std::size_t idx = 0, num_tracks = m_tracks.size(); idx < num_tracks; ++idx) {
auto &track = *m_tracks[idx];