diff --git a/src/common/chapters/chapters.cpp b/src/common/chapters/chapters.cpp index 5926848cc..3f16180d7 100644 --- a/src/common/chapters/chapters.cpp +++ b/src/common/chapters/chapters.cpp @@ -43,6 +43,8 @@ std::string g_default_language; /** The default country for all chapter entries that don't have their own. */ std::string g_default_country; +translatable_string_c g_chapter_generation_name_template{YT("Chapter ")}; + #define SIMCHAP_RE_TIMESTAMP_LINE "^\\s*CHAPTER\\d+\\s*=\\s*(\\d+)\\s*:\\s*(\\d+)\\s*:\\s*(\\d+)\\s*[\\.,]\\s*(\\d+)" #define SIMCHAP_RE_TIMESTAMP "^\\s*CHAPTER\\d+\\s*=(.*)" #define SIMCHAP_RE_NAME_LINE "^\\s*CHAPTER\\d+NAME\\s*=(.*)" diff --git a/src/common/chapters/chapters.h b/src/common/chapters/chapters.h index c7aa3e116..8980a823b 100644 --- a/src/common/chapters/chapters.h +++ b/src/common/chapters/chapters.h @@ -18,6 +18,7 @@ #include #include "common/timestamp.h" +#include "common/translation.h" namespace libebml { class EbmlMaster; @@ -64,6 +65,7 @@ bool probe_simple(mm_text_io_c *in); mtx::chapters::kax_cptr parse_simple(mm_text_io_c *in, int64_t min_ts, int64_t max_ts, int64_t offset, const std::string &language, const std::string &charset); extern std::string g_cue_name_format, g_default_language, g_default_country; +extern translatable_string_c g_chapter_generation_name_template; bool probe_cue(mm_text_io_c *in); mtx::chapters::kax_cptr parse_cue(mm_text_io_c *in, int64_t min_ts, int64_t max_ts, int64_t offset, const std::string &language, const std::string &charset, std::unique_ptr *tags = nullptr); diff --git a/src/input/r_mpeg_ts.cpp b/src/input/r_mpeg_ts.cpp index 780585fe3..e560aff36 100644 --- a/src/input/r_mpeg_ts.cpp +++ b/src/input/r_mpeg_ts.cpp @@ -1284,7 +1284,7 @@ reader_c::process_chapter_entries() { std::stable_sort(m_chapter_timestamps.begin(), m_chapter_timestamps.end()); m_chapters.reset(new libmatroska::KaxChapters); - auto name_template = g_cluster_helper->get_chapter_generation_name_template(); + auto name_template = mtx::chapters::g_chapter_generation_name_template.get_translated(); auto chapter_number = 0; auto &edition = GetChild(*m_chapters); auto language = !m_ti.m_chapter_language.empty() ? m_ti.m_chapter_language diff --git a/src/merge/cluster_helper.cpp b/src/merge/cluster_helper.cpp index 8d2407660..3f8fa253b 100644 --- a/src/merge/cluster_helper.cpp +++ b/src/merge/cluster_helper.cpp @@ -729,17 +729,6 @@ cluster_helper_c::set_chapter_generation_interval(timestamp_c const &interval) { m->chapter_generation_interval = interval; } -void -cluster_helper_c::set_chapter_generation_name_template(std::string const &name_template) { - m->chapter_generation_name_template.override(name_template); -} - -std::string -cluster_helper_c::get_chapter_generation_name_template() - const { - return m->chapter_generation_name_template.get_translated(); -} - void cluster_helper_c::verify_and_report_chapter_generation_parameters() const { @@ -820,7 +809,7 @@ cluster_helper_c::generate_one_chapter(timestamp_c const ×tamp) { auto appended_file_name = chapter_generation_mode_e::when_appending == m->chapter_generation_mode ? m->chapter_generation_reference_track->m_reader->m_ti.m_fname : std::string{}; m->chapter_generation_number += 1; m->chapter_generation_last_generated = timestamp; - auto name = mtx::chapters::format_name_template(m->chapter_generation_name_template.get_translated(), m->chapter_generation_number, timestamp, appended_file_name); + auto name = mtx::chapters::format_name_template(mtx::chapters::g_chapter_generation_name_template.get_translated(), m->chapter_generation_number, timestamp, appended_file_name); add_chapter_atom(timestamp, name, m->chapter_generation_language); } diff --git a/src/merge/cluster_helper.h b/src/merge/cluster_helper.h index e92ae7a2a..a6656aa69 100644 --- a/src/merge/cluster_helper.h +++ b/src/merge/cluster_helper.h @@ -81,8 +81,6 @@ public: void enable_chapter_generation(chapter_generation_mode_e mode, std::string const &language = ""); chapter_generation_mode_e get_chapter_generation_mode() const; void set_chapter_generation_interval(timestamp_c const &interval); - void set_chapter_generation_name_template(std::string const &name_template); - std::string get_chapter_generation_name_template() const; void verify_and_report_chapter_generation_parameters() const; private: diff --git a/src/merge/mkvmerge.cpp b/src/merge/mkvmerge.cpp index 7ddd1614b..3e4ec5d38 100644 --- a/src/merge/mkvmerge.cpp +++ b/src/merge/mkvmerge.cpp @@ -2287,6 +2287,13 @@ parse_args(std::vector args) { g_outfile = next_arg; sit++; + } else if (this_arg == "--generate-chapters-name-template") { + if (no_next_arg) + mxerror(Y("'--generate-chapters-name-template' lacks the name template.\n")); + + mtx::chapters::g_chapter_generation_name_template.override(next_arg); + sit++; + } else if ((this_arg == "-w") || (this_arg == "--webm")) set_output_compatibility(OC_WEBM); } @@ -2313,10 +2320,7 @@ parse_args(std::vector args) { auto next_arg = !no_next_arg ? *sit_next : ""; // Ignore the options we took care of in the first step. - if ( (this_arg == "-o") - || (this_arg == "--output") - || (this_arg == "--command-line-charset") - || (this_arg == "--engage")) { + if (mtx::included_in(this_arg, "-o", "--output", "--command-line-charset", "--engage", "--generate-chapters-name-template")) { sit++; continue; } @@ -2507,13 +2511,6 @@ parse_args(std::vector args) { parse_arg_generate_chapters(next_arg); sit++; - } else if (this_arg == "--generate-chapters-name-template") { - if (no_next_arg) - mxerror(Y("'--generate-chapters-name-template' lacks the name template.\n")); - - g_cluster_helper->set_chapter_generation_name_template(next_arg); - sit++; - } else if (this_arg == "--segmentinfo") { if (no_next_arg) mxerror(Y("'--segmentinfo' lacks the file name.\n")); diff --git a/src/merge/private/cluster_helper.h b/src/merge/private/cluster_helper.h index f75ec3165..2763c9374 100644 --- a/src/merge/private/cluster_helper.h +++ b/src/merge/private/cluster_helper.h @@ -70,7 +70,6 @@ public: bool discarding{}, splitting_and_processed_fully{}; chapter_generation_mode_e chapter_generation_mode{chapter_generation_mode_e::none}; - translatable_string_c chapter_generation_name_template{YT("Chapter ")}; timestamp_c chapter_generation_interval, chapter_generation_last_generated; generic_packetizer_c *chapter_generation_reference_track{}; unsigned int chapter_generation_number{};