diff --git a/gtk/src/audiohandler.c b/gtk/src/audiohandler.c index 2d5e558a4..ac2aafc08 100644 --- a/gtk/src/audiohandler.c +++ b/gtk/src/audiohandler.c @@ -550,11 +550,18 @@ audio_add_track( if (atrack != NULL) { int layout = ghb_dict_get_int(atrack, "ChannelLayout"); - const char * name = ghb_dict_get_string(atrack, "Name"); mix = ghb_get_best_mix(layout, encoder, mix); - if (name != NULL) + + int keep_name = ghb_dict_get_int(settings, "AudioTrackNamePassthru"); + const char * behavior_name = ghb_dict_get_string(settings, "AudioAutomaticNamingBehavior"); + int behavior = hb_audio_autonaming_behavior_get_from_name(behavior_name); + + const char * name = ghb_dict_get_string(atrack, "Name"); + const char * generated_name = hb_audio_name_generate(name, layout, mix, + keep_name, behavior); + if (generated_name != NULL) { - ghb_dict_set_string(asettings, "Name", name); + ghb_dict_set_string(asettings, "Name", generated_name); } } ghb_dict_set_string(asettings, "Mixdown", hb_mixdown_get_short_name(mix)); @@ -2287,6 +2294,14 @@ audio_fallback_widget_changed_cb (GtkWidget *widget, gpointer data) ghb_clear_presets_selection(ud); } +G_MODULE_EXPORT void +audio_autonaming_widget_changed_cb (GtkWidget *widget, gpointer data) +{ + signal_user_data_t *ud = ghb_ud(); + ghb_widget_to_setting(ud->settings, widget); + ghb_clear_presets_selection(ud); +} + G_MODULE_EXPORT void audio_def_quality_enable_changed_cb (GtkWidget *widget, gpointer data) { diff --git a/gtk/src/hb-backend.c b/gtk/src/hb-backend.c index afb09ea38..664f6a016 100644 --- a/gtk/src/hb-backend.c +++ b/gtk/src/hb-backend.c @@ -49,6 +49,18 @@ typedef struct options_map_t *map; } combo_opts_t; +static options_map_t d_audio_autonaming_opts[] = +{ + {N_("None"), "none", 0}, + {N_("Unnamed"), "unnamed", 1}, + {N_("All"), "all", 2}, +}; +combo_opts_t audio_autonaming_opts = +{ + sizeof(d_audio_autonaming_opts)/sizeof(options_map_t), + d_audio_autonaming_opts +}; + static options_map_t d_subtitle_track_sel_opts[] = { {N_("None"), "none", 0}, @@ -575,6 +587,12 @@ combo_name_map_t combo_name_map[] = small_opts_set, generic_opt_get }, + { + "AudioAutomaticNamingBehavior", + &audio_autonaming_opts, + small_opts_set, + generic_opt_get + }, { "AudioTrackSelectionBehavior", &audio_track_sel_opts, diff --git a/gtk/src/subtitlehandler.c b/gtk/src/subtitlehandler.c index 8b1d44849..14d77efb4 100644 --- a/gtk/src/subtitlehandler.c +++ b/gtk/src/subtitlehandler.c @@ -445,7 +445,12 @@ static GhbValue* subtitle_add_track( strack = ghb_get_title_subtitle_track(settings, track); source = ghb_dict_get_int(strack, "Source"); - name = ghb_dict_get_string(strack, "Name"); + + int keep_name = ghb_dict_get_int(settings, "SubtitlesTrackNamePassthru"); + if (keep_name) + { + name = ghb_dict_get_string(strack, "Name"); + } } burn |= !hb_subtitle_can_pass(source, mux); diff --git a/gtk/src/ui/ghb.ui b/gtk/src/ui/ghb.ui index 9500522e5..2cc434f61 100644 --- a/gtk/src/ui/ghb.ui +++ b/gtk/src/ui/ghb.ui @@ -4767,6 +4767,15 @@ Overrides all other settings. + + + Passthru track names + 1 + Preserve the source track names + start + + + 4 @@ -5208,6 +5217,36 @@ This permits Opus passthru to be selected when automatic passthru selection is e + + + Passthru track names + 1 + Preserve the source track names. + start + 1 + + + + + + 6 + end + + + end + 1 + Autonaming: + + + + + center + Set the automatic naming behaviour. + + + + + diff --git a/libhb/common.c b/libhb/common.c index 1c43c7a7f..250e07e4c 100644 --- a/libhb/common.c +++ b/libhb/common.c @@ -1468,6 +1468,87 @@ const hb_rate_t* hb_audio_bitrate_get_next(const hb_rate_t *last) return ((hb_rate_internal_t*)last)->next; } +const char * hb_audio_name_get_default(uint64_t layout, int mixdown) +{ + int mix_channels = 2; + + if (mixdown != HB_AMIXDOWN_NONE) + { + mix_channels = hb_mixdown_get_discrete_channel_count(mixdown); + } + else + { + mix_channels = hb_layout_get_discrete_channel_count(layout); + } + + switch (mix_channels) + { + case 1: + return "Mono"; + break; + + case 2: + return "Stereo"; + break; + + default: + return "Surround"; + break; + } +} + +int hb_audio_autonaming_behavior_get_from_name(const char *name) +{ + hb_audio_autonaming_behavior_t behavior = HB_AUDIO_AUTONAMING_NONE; + + if (name) + { + if (!strcasecmp(name, "all")) + { + behavior = HB_AUDIO_AUTONAMING_ALL; + } + else if (!strcasecmp(name, "unnamed")) + { + behavior = HB_AUDIO_AUTONAMING_UNNAMED; + } + } + + return behavior; +} + +const char * hb_audio_name_generate(const char *name, + uint64_t layout, int mixdown, int keep_name, + hb_audio_autonaming_behavior_t behavior) +{ + const char *out = NULL; + + if (name == NULL || name[0] == 0) + { + name = NULL; + } + + if (keep_name) + { + out = name; + } + + if (name != NULL && + (!strcmp(name, "Mono") || + !strcmp(name, "Stereo") || + !strcmp(name, "Surround"))) + { + out = NULL; + } + + if (behavior == HB_AUDIO_AUTONAMING_ALL || + (behavior == HB_AUDIO_AUTONAMING_UNNAMED && (name == NULL || name[0] == 0))) + { + out = hb_audio_name_get_default(layout, mixdown); + } + + return out; +} + // Get limits and hints for the UIs. // // granularity sets the minimum step increments that should be used diff --git a/libhb/handbrake/common.h b/libhb/handbrake/common.h index d44cc7477..5fc1c1de6 100644 --- a/libhb/handbrake/common.h +++ b/libhb/handbrake/common.h @@ -457,6 +457,22 @@ int hb_audio_bitrate_get_default(uint32_t codec, int samplerate, in void hb_audio_bitrate_get_limits(uint32_t codec, int samplerate, int mixdown, int *low, int *high); const hb_rate_t* hb_audio_bitrate_get_next(const hb_rate_t *last); + +const char * hb_audio_name_get_default(uint64_t layout, int mixdown); + +typedef enum +{ + HB_AUDIO_AUTONAMING_NONE, + HB_AUDIO_AUTONAMING_UNNAMED, + HB_AUDIO_AUTONAMING_ALL +} hb_audio_autonaming_behavior_t; + +int hb_audio_autonaming_behavior_get_from_name(const char *name); + +const char * hb_audio_name_generate(const char *name, + uint64_t layout, int mixdown, int keep_name, + hb_audio_autonaming_behavior_t behaviour); + void hb_video_quality_get_limits(uint32_t codec, float *low, float *high, float *granularity, int *direction); const char* hb_video_quality_get_name(uint32_t codec); diff --git a/libhb/handbrake/preset_builtin.h b/libhb/handbrake/preset_builtin.h index 05b3d5841..31d535f8c 100644 --- a/libhb/handbrake/preset_builtin.h +++ b/libhb/handbrake/preset_builtin.h @@ -5,6 +5,7 @@ const char hb_builtin_presets_json[] = " \"ChildrenArray\": [\n" " {\n" " \"AlignAVStart\": true,\n" +" \"AudioAutomaticNamingBehavior\": \"unnamed\",\n" " \"AudioCopyMask\": [\n" " \"copy:aac\"\n" " ],\n" @@ -26,6 +27,7 @@ const char hb_builtin_presets_json[] = " }\n" " ],\n" " \"AudioSecondaryEncoderMode\": true,\n" +" \"AudioTrackNamePassthru\": true,\n" " \"AudioTrackSelectionBehavior\": \"first\",\n" " \"ChapterMarkers\": true,\n" " \"ChildrenArray\": [],\n" @@ -86,6 +88,7 @@ const char hb_builtin_presets_json[] = " \"SubtitleBurnBehavior\": \"foreign\",\n" " \"SubtitleBurnDVDSub\": true,\n" " \"SubtitleLanguageList\": [],\n" +" \"SubtitleTrackNamePassthru\": true,\n" " \"SubtitleTrackSelectionBehavior\": \"none\",\n" " \"Type\": 0,\n" " \"UsesPictureFilters\": true,\n" @@ -113,6 +116,7 @@ const char hb_builtin_presets_json[] = " },\n" " {\n" " \"AlignAVStart\": true,\n" +" \"AudioAutomaticNamingBehavior\": \"unnamed\",\n" " \"AudioCopyMask\": [\n" " \"copy:aac\"\n" " ],\n" @@ -134,6 +138,7 @@ const char hb_builtin_presets_json[] = " }\n" " ],\n" " \"AudioSecondaryEncoderMode\": true,\n" +" \"AudioTrackNamePassthru\": true,\n" " \"AudioTrackSelectionBehavior\": \"first\",\n" " \"ChapterMarkers\": true,\n" " \"ChildrenArray\": [],\n" @@ -194,6 +199,7 @@ const char hb_builtin_presets_json[] = " \"SubtitleBurnBehavior\": \"foreign\",\n" " \"SubtitleBurnDVDSub\": true,\n" " \"SubtitleLanguageList\": [],\n" +" \"SubtitleTrackNamePassthru\": true,\n" " \"SubtitleTrackSelectionBehavior\": \"none\",\n" " \"Type\": 0,\n" " \"UsesPictureFilters\": true,\n" @@ -221,6 +227,7 @@ const char hb_builtin_presets_json[] = " },\n" " {\n" " \"AlignAVStart\": true,\n" +" \"AudioAutomaticNamingBehavior\": \"unnamed\",\n" " \"AudioCopyMask\": [\n" " \"copy:aac\"\n" " ],\n" @@ -242,6 +249,7 @@ const char hb_builtin_presets_json[] = " }\n" " ],\n" " \"AudioSecondaryEncoderMode\": true,\n" +" \"AudioTrackNamePassthru\": true,\n" " \"AudioTrackSelectionBehavior\": \"first\",\n" " \"ChapterMarkers\": true,\n" " \"ChildrenArray\": [],\n" @@ -301,6 +309,7 @@ const char hb_builtin_presets_json[] = " \"SubtitleBurnBehavior\": \"foreign\",\n" " \"SubtitleBurnDVDSub\": true,\n" " \"SubtitleLanguageList\": [],\n" +" \"SubtitleTrackNamePassthru\": true,\n" " \"SubtitleTrackSelectionBehavior\": \"none\",\n" " \"Type\": 0,\n" " \"UsesPictureFilters\": true,\n" @@ -328,6 +337,7 @@ const char hb_builtin_presets_json[] = " },\n" " {\n" " \"AlignAVStart\": true,\n" +" \"AudioAutomaticNamingBehavior\": \"unnamed\",\n" " \"AudioCopyMask\": [\n" " \"copy:aac\"\n" " ],\n" @@ -349,6 +359,7 @@ const char hb_builtin_presets_json[] = " }\n" " ],\n" " \"AudioSecondaryEncoderMode\": true,\n" +" \"AudioTrackNamePassthru\": true,\n" " \"AudioTrackSelectionBehavior\": \"first\",\n" " \"ChapterMarkers\": true,\n" " \"ChildrenArray\": [],\n" @@ -408,6 +419,7 @@ const char hb_builtin_presets_json[] = " \"SubtitleBurnBehavior\": \"foreign\",\n" " \"SubtitleBurnDVDSub\": true,\n" " \"SubtitleLanguageList\": [],\n" +" \"SubtitleTrackNamePassthru\": true,\n" " \"SubtitleTrackSelectionBehavior\": \"none\",\n" " \"Type\": 0,\n" " \"UsesPictureFilters\": true,\n" @@ -435,6 +447,7 @@ const char hb_builtin_presets_json[] = " },\n" " {\n" " \"AlignAVStart\": true,\n" +" \"AudioAutomaticNamingBehavior\": \"unnamed\",\n" " \"AudioCopyMask\": [\n" " \"copy:aac\"\n" " ],\n" @@ -456,6 +469,7 @@ const char hb_builtin_presets_json[] = " }\n" " ],\n" " \"AudioSecondaryEncoderMode\": true,\n" +" \"AudioTrackNamePassthru\": true,\n" " \"AudioTrackSelectionBehavior\": \"first\",\n" " \"ChapterMarkers\": true,\n" " \"ChildrenArray\": [],\n" @@ -515,6 +529,7 @@ const char hb_builtin_presets_json[] = " \"SubtitleBurnBehavior\": \"foreign\",\n" " \"SubtitleBurnDVDSub\": true,\n" " \"SubtitleLanguageList\": [],\n" +" \"SubtitleTrackNamePassthru\": true,\n" " \"SubtitleTrackSelectionBehavior\": \"none\",\n" " \"Type\": 0,\n" " \"UsesPictureFilters\": true,\n" @@ -542,6 +557,7 @@ const char hb_builtin_presets_json[] = " },\n" " {\n" " \"AlignAVStart\": true,\n" +" \"AudioAutomaticNamingBehavior\": \"unnamed\",\n" " \"AudioCopyMask\": [\n" " \"copy:aac\"\n" " ],\n" @@ -563,6 +579,7 @@ const char hb_builtin_presets_json[] = " }\n" " ],\n" " \"AudioSecondaryEncoderMode\": true,\n" +" \"AudioTrackNamePassthru\": true,\n" " \"AudioTrackSelectionBehavior\": \"first\",\n" " \"ChapterMarkers\": true,\n" " \"ChildrenArray\": [],\n" @@ -622,6 +639,7 @@ const char hb_builtin_presets_json[] = " \"SubtitleBurnBehavior\": \"foreign\",\n" " \"SubtitleBurnDVDSub\": true,\n" " \"SubtitleLanguageList\": [],\n" +" \"SubtitleTrackNamePassthru\": true,\n" " \"SubtitleTrackSelectionBehavior\": \"none\",\n" " \"Type\": 0,\n" " \"UsesPictureFilters\": true,\n" @@ -649,6 +667,7 @@ const char hb_builtin_presets_json[] = " },\n" " {\n" " \"AlignAVStart\": true,\n" +" \"AudioAutomaticNamingBehavior\": \"unnamed\",\n" " \"AudioCopyMask\": [\n" " \"copy:aac\"\n" " ],\n" @@ -670,6 +689,7 @@ const char hb_builtin_presets_json[] = " }\n" " ],\n" " \"AudioSecondaryEncoderMode\": true,\n" +" \"AudioTrackNamePassthru\": true,\n" " \"AudioTrackSelectionBehavior\": \"first\",\n" " \"ChapterMarkers\": true,\n" " \"ChildrenArray\": [],\n" @@ -730,6 +750,7 @@ const char hb_builtin_presets_json[] = " \"SubtitleBurnBehavior\": \"foreign\",\n" " \"SubtitleBurnDVDSub\": true,\n" " \"SubtitleLanguageList\": [],\n" +" \"SubtitleTrackNamePassthru\": true,\n" " \"SubtitleTrackSelectionBehavior\": \"none\",\n" " \"Type\": 0,\n" " \"UsesPictureFilters\": true,\n" @@ -757,6 +778,7 @@ const char hb_builtin_presets_json[] = " },\n" " {\n" " \"AlignAVStart\": true,\n" +" \"AudioAutomaticNamingBehavior\": \"unnamed\",\n" " \"AudioCopyMask\": [\n" " \"copy:aac\"\n" " ],\n" @@ -778,6 +800,7 @@ const char hb_builtin_presets_json[] = " }\n" " ],\n" " \"AudioSecondaryEncoderMode\": true,\n" +" \"AudioTrackNamePassthru\": true,\n" " \"AudioTrackSelectionBehavior\": \"first\",\n" " \"ChapterMarkers\": true,\n" " \"ChildrenArray\": [],\n" @@ -838,6 +861,7 @@ const char hb_builtin_presets_json[] = " \"SubtitleBurnBehavior\": \"foreign\",\n" " \"SubtitleBurnDVDSub\": true,\n" " \"SubtitleLanguageList\": [],\n" +" \"SubtitleTrackNamePassthru\": true,\n" " \"SubtitleTrackSelectionBehavior\": \"none\",\n" " \"Type\": 0,\n" " \"UsesPictureFilters\": true,\n" @@ -865,6 +889,7 @@ const char hb_builtin_presets_json[] = " },\n" " {\n" " \"AlignAVStart\": true,\n" +" \"AudioAutomaticNamingBehavior\": \"unnamed\",\n" " \"AudioCopyMask\": [\n" " \"copy:aac\"\n" " ],\n" @@ -886,6 +911,7 @@ const char hb_builtin_presets_json[] = " }\n" " ],\n" " \"AudioSecondaryEncoderMode\": true,\n" +" \"AudioTrackNamePassthru\": true,\n" " \"AudioTrackSelectionBehavior\": \"first\",\n" " \"ChapterMarkers\": true,\n" " \"ChildrenArray\": [],\n" @@ -945,6 +971,7 @@ const char hb_builtin_presets_json[] = " \"SubtitleBurnBehavior\": \"foreign\",\n" " \"SubtitleBurnDVDSub\": true,\n" " \"SubtitleLanguageList\": [],\n" +" \"SubtitleTrackNamePassthru\": true,\n" " \"SubtitleTrackSelectionBehavior\": \"none\",\n" " \"Type\": 0,\n" " \"UsesPictureFilters\": true,\n" @@ -972,6 +999,7 @@ const char hb_builtin_presets_json[] = " },\n" " {\n" " \"AlignAVStart\": true,\n" +" \"AudioAutomaticNamingBehavior\": \"unnamed\",\n" " \"AudioCopyMask\": [\n" " \"copy:aac\"\n" " ],\n" @@ -993,6 +1021,7 @@ const char hb_builtin_presets_json[] = " }\n" " ],\n" " \"AudioSecondaryEncoderMode\": true,\n" +" \"AudioTrackNamePassthru\": true,\n" " \"AudioTrackSelectionBehavior\": \"first\",\n" " \"ChapterMarkers\": true,\n" " \"ChildrenArray\": [],\n" @@ -1052,6 +1081,7 @@ const char hb_builtin_presets_json[] = " \"SubtitleBurnBehavior\": \"foreign\",\n" " \"SubtitleBurnDVDSub\": true,\n" " \"SubtitleLanguageList\": [],\n" +" \"SubtitleTrackNamePassthru\": true,\n" " \"SubtitleTrackSelectionBehavior\": \"none\",\n" " \"Type\": 0,\n" " \"UsesPictureFilters\": true,\n" @@ -1079,6 +1109,7 @@ const char hb_builtin_presets_json[] = " },\n" " {\n" " \"AlignAVStart\": true,\n" +" \"AudioAutomaticNamingBehavior\": \"unnamed\",\n" " \"AudioCopyMask\": [\n" " \"copy:aac\"\n" " ],\n" @@ -1100,6 +1131,7 @@ const char hb_builtin_presets_json[] = " }\n" " ],\n" " \"AudioSecondaryEncoderMode\": true,\n" +" \"AudioTrackNamePassthru\": true,\n" " \"AudioTrackSelectionBehavior\": \"first\",\n" " \"ChapterMarkers\": true,\n" " \"ChildrenArray\": [],\n" @@ -1159,6 +1191,7 @@ const char hb_builtin_presets_json[] = " \"SubtitleBurnBehavior\": \"foreign\",\n" " \"SubtitleBurnDVDSub\": true,\n" " \"SubtitleLanguageList\": [],\n" +" \"SubtitleTrackNamePassthru\": true,\n" " \"SubtitleTrackSelectionBehavior\": \"none\",\n" " \"Type\": 0,\n" " \"UsesPictureFilters\": true,\n" @@ -1186,6 +1219,7 @@ const char hb_builtin_presets_json[] = " },\n" " {\n" " \"AlignAVStart\": true,\n" +" \"AudioAutomaticNamingBehavior\": \"unnamed\",\n" " \"AudioCopyMask\": [\n" " \"copy:aac\"\n" " ],\n" @@ -1207,6 +1241,7 @@ const char hb_builtin_presets_json[] = " }\n" " ],\n" " \"AudioSecondaryEncoderMode\": true,\n" +" \"AudioTrackNamePassthru\": true,\n" " \"AudioTrackSelectionBehavior\": \"first\",\n" " \"ChapterMarkers\": true,\n" " \"ChildrenArray\": [],\n" @@ -1266,6 +1301,7 @@ const char hb_builtin_presets_json[] = " \"SubtitleBurnBehavior\": \"foreign\",\n" " \"SubtitleBurnDVDSub\": true,\n" " \"SubtitleLanguageList\": [],\n" +" \"SubtitleTrackNamePassthru\": true,\n" " \"SubtitleTrackSelectionBehavior\": \"none\",\n" " \"Type\": 0,\n" " \"UsesPictureFilters\": true,\n" @@ -1293,6 +1329,7 @@ const char hb_builtin_presets_json[] = " },\n" " {\n" " \"AlignAVStart\": true,\n" +" \"AudioAutomaticNamingBehavior\": \"unnamed\",\n" " \"AudioCopyMask\": [\n" " \"copy:aac\"\n" " ],\n" @@ -1327,6 +1364,7 @@ const char hb_builtin_presets_json[] = " }\n" " ],\n" " \"AudioSecondaryEncoderMode\": true,\n" +" \"AudioTrackNamePassthru\": true,\n" " \"AudioTrackSelectionBehavior\": \"first\",\n" " \"ChapterMarkers\": true,\n" " \"ChildrenArray\": [],\n" @@ -1387,6 +1425,7 @@ const char hb_builtin_presets_json[] = " \"SubtitleBurnBehavior\": \"foreign\",\n" " \"SubtitleBurnDVDSub\": true,\n" " \"SubtitleLanguageList\": [],\n" +" \"SubtitleTrackNamePassthru\": true,\n" " \"SubtitleTrackSelectionBehavior\": \"none\",\n" " \"Type\": 0,\n" " \"UsesPictureFilters\": true,\n" @@ -1414,6 +1453,7 @@ const char hb_builtin_presets_json[] = " },\n" " {\n" " \"AlignAVStart\": true,\n" +" \"AudioAutomaticNamingBehavior\": \"unnamed\",\n" " \"AudioCopyMask\": [\n" " \"copy:aac\"\n" " ],\n" @@ -1448,6 +1488,7 @@ const char hb_builtin_presets_json[] = " }\n" " ],\n" " \"AudioSecondaryEncoderMode\": true,\n" +" \"AudioTrackNamePassthru\": true,\n" " \"AudioTrackSelectionBehavior\": \"first\",\n" " \"ChapterMarkers\": true,\n" " \"ChildrenArray\": [],\n" @@ -1508,6 +1549,7 @@ const char hb_builtin_presets_json[] = " \"SubtitleBurnBehavior\": \"foreign\",\n" " \"SubtitleBurnDVDSub\": true,\n" " \"SubtitleLanguageList\": [],\n" +" \"SubtitleTrackNamePassthru\": true,\n" " \"SubtitleTrackSelectionBehavior\": \"none\",\n" " \"Type\": 0,\n" " \"UsesPictureFilters\": true,\n" @@ -1535,6 +1577,7 @@ const char hb_builtin_presets_json[] = " },\n" " {\n" " \"AlignAVStart\": true,\n" +" \"AudioAutomaticNamingBehavior\": \"unnamed\",\n" " \"AudioCopyMask\": [\n" " \"copy:aac\",\n" " \"copy:ac3\"\n" @@ -1570,6 +1613,7 @@ const char hb_builtin_presets_json[] = " }\n" " ],\n" " \"AudioSecondaryEncoderMode\": true,\n" +" \"AudioTrackNamePassthru\": true,\n" " \"AudioTrackSelectionBehavior\": \"first\",\n" " \"ChapterMarkers\": true,\n" " \"ChildrenArray\": [],\n" @@ -1629,6 +1673,7 @@ const char hb_builtin_presets_json[] = " \"SubtitleBurnBehavior\": \"foreign\",\n" " \"SubtitleBurnDVDSub\": true,\n" " \"SubtitleLanguageList\": [],\n" +" \"SubtitleTrackNamePassthru\": true,\n" " \"SubtitleTrackSelectionBehavior\": \"none\",\n" " \"Type\": 0,\n" " \"UsesPictureFilters\": true,\n" @@ -1656,6 +1701,7 @@ const char hb_builtin_presets_json[] = " },\n" " {\n" " \"AlignAVStart\": true,\n" +" \"AudioAutomaticNamingBehavior\": \"unnamed\",\n" " \"AudioCopyMask\": [\n" " \"copy:aac\",\n" " \"copy:ac3\"\n" @@ -1691,6 +1737,7 @@ const char hb_builtin_presets_json[] = " }\n" " ],\n" " \"AudioSecondaryEncoderMode\": true,\n" +" \"AudioTrackNamePassthru\": true,\n" " \"AudioTrackSelectionBehavior\": \"first\",\n" " \"ChapterMarkers\": true,\n" " \"ChildrenArray\": [],\n" @@ -1750,6 +1797,7 @@ const char hb_builtin_presets_json[] = " \"SubtitleBurnBehavior\": \"foreign\",\n" " \"SubtitleBurnDVDSub\": true,\n" " \"SubtitleLanguageList\": [],\n" +" \"SubtitleTrackNamePassthru\": true,\n" " \"SubtitleTrackSelectionBehavior\": \"none\",\n" " \"Type\": 0,\n" " \"UsesPictureFilters\": true,\n" @@ -1777,6 +1825,7 @@ const char hb_builtin_presets_json[] = " },\n" " {\n" " \"AlignAVStart\": true,\n" +" \"AudioAutomaticNamingBehavior\": \"unnamed\",\n" " \"AudioCopyMask\": [\n" " \"copy:aac\",\n" " \"copy:ac3\"\n" @@ -1812,6 +1861,7 @@ const char hb_builtin_presets_json[] = " }\n" " ],\n" " \"AudioSecondaryEncoderMode\": true,\n" +" \"AudioTrackNamePassthru\": true,\n" " \"AudioTrackSelectionBehavior\": \"first\",\n" " \"ChapterMarkers\": true,\n" " \"ChildrenArray\": [],\n" @@ -1871,6 +1921,7 @@ const char hb_builtin_presets_json[] = " \"SubtitleBurnBehavior\": \"foreign\",\n" " \"SubtitleBurnDVDSub\": true,\n" " \"SubtitleLanguageList\": [],\n" +" \"SubtitleTrackNamePassthru\": true,\n" " \"SubtitleTrackSelectionBehavior\": \"none\",\n" " \"Type\": 0,\n" " \"UsesPictureFilters\": true,\n" @@ -1898,6 +1949,7 @@ const char hb_builtin_presets_json[] = " },\n" " {\n" " \"AlignAVStart\": true,\n" +" \"AudioAutomaticNamingBehavior\": \"unnamed\",\n" " \"AudioCopyMask\": [\n" " \"copy:aac\",\n" " \"copy:ac3\"\n" @@ -1933,6 +1985,7 @@ const char hb_builtin_presets_json[] = " }\n" " ],\n" " \"AudioSecondaryEncoderMode\": true,\n" +" \"AudioTrackNamePassthru\": true,\n" " \"AudioTrackSelectionBehavior\": \"first\",\n" " \"ChapterMarkers\": true,\n" " \"ChildrenArray\": [],\n" @@ -1992,6 +2045,7 @@ const char hb_builtin_presets_json[] = " \"SubtitleBurnBehavior\": \"foreign\",\n" " \"SubtitleBurnDVDSub\": true,\n" " \"SubtitleLanguageList\": [],\n" +" \"SubtitleTrackNamePassthru\": true,\n" " \"SubtitleTrackSelectionBehavior\": \"none\",\n" " \"Type\": 0,\n" " \"UsesPictureFilters\": true,\n" @@ -2019,6 +2073,7 @@ const char hb_builtin_presets_json[] = " },\n" " {\n" " \"AlignAVStart\": true,\n" +" \"AudioAutomaticNamingBehavior\": \"unnamed\",\n" " \"AudioCopyMask\": [\n" " \"copy:aac\",\n" " \"copy:ac3\"\n" @@ -2054,6 +2109,7 @@ const char hb_builtin_presets_json[] = " }\n" " ],\n" " \"AudioSecondaryEncoderMode\": true,\n" +" \"AudioTrackNamePassthru\": true,\n" " \"AudioTrackSelectionBehavior\": \"first\",\n" " \"ChapterMarkers\": true,\n" " \"ChildrenArray\": [],\n" @@ -2114,6 +2170,7 @@ const char hb_builtin_presets_json[] = " \"SubtitleBurnBehavior\": \"foreign\",\n" " \"SubtitleBurnDVDSub\": true,\n" " \"SubtitleLanguageList\": [],\n" +" \"SubtitleTrackNamePassthru\": true,\n" " \"SubtitleTrackSelectionBehavior\": \"none\",\n" " \"Type\": 0,\n" " \"UsesPictureFilters\": true,\n" @@ -2141,6 +2198,7 @@ const char hb_builtin_presets_json[] = " },\n" " {\n" " \"AlignAVStart\": true,\n" +" \"AudioAutomaticNamingBehavior\": \"unnamed\",\n" " \"AudioCopyMask\": [\n" " \"copy:aac\",\n" " \"copy:ac3\"\n" @@ -2176,6 +2234,7 @@ const char hb_builtin_presets_json[] = " }\n" " ],\n" " \"AudioSecondaryEncoderMode\": true,\n" +" \"AudioTrackNamePassthru\": true,\n" " \"AudioTrackSelectionBehavior\": \"first\",\n" " \"ChapterMarkers\": true,\n" " \"ChildrenArray\": [],\n" @@ -2236,6 +2295,7 @@ const char hb_builtin_presets_json[] = " \"SubtitleBurnBehavior\": \"foreign\",\n" " \"SubtitleBurnDVDSub\": true,\n" " \"SubtitleLanguageList\": [],\n" +" \"SubtitleTrackNamePassthru\": true,\n" " \"SubtitleTrackSelectionBehavior\": \"none\",\n" " \"Type\": 0,\n" " \"UsesPictureFilters\": true,\n" @@ -2263,6 +2323,7 @@ const char hb_builtin_presets_json[] = " },\n" " {\n" " \"AlignAVStart\": true,\n" +" \"AudioAutomaticNamingBehavior\": \"unnamed\",\n" " \"AudioCopyMask\": [\n" " \"copy:aac\",\n" " \"copy:ac3\"\n" @@ -2298,6 +2359,7 @@ const char hb_builtin_presets_json[] = " }\n" " ],\n" " \"AudioSecondaryEncoderMode\": true,\n" +" \"AudioTrackNamePassthru\": true,\n" " \"AudioTrackSelectionBehavior\": \"first\",\n" " \"ChapterMarkers\": true,\n" " \"ChildrenArray\": [],\n" @@ -2357,6 +2419,7 @@ const char hb_builtin_presets_json[] = " \"SubtitleBurnBehavior\": \"foreign\",\n" " \"SubtitleBurnDVDSub\": true,\n" " \"SubtitleLanguageList\": [],\n" +" \"SubtitleTrackNamePassthru\": true,\n" " \"SubtitleTrackSelectionBehavior\": \"none\",\n" " \"Type\": 0,\n" " \"UsesPictureFilters\": true,\n" @@ -2384,6 +2447,7 @@ const char hb_builtin_presets_json[] = " },\n" " {\n" " \"AlignAVStart\": true,\n" +" \"AudioAutomaticNamingBehavior\": \"unnamed\",\n" " \"AudioCopyMask\": [\n" " \"copy:aac\",\n" " \"copy:ac3\"\n" @@ -2419,6 +2483,7 @@ const char hb_builtin_presets_json[] = " }\n" " ],\n" " \"AudioSecondaryEncoderMode\": true,\n" +" \"AudioTrackNamePassthru\": true,\n" " \"AudioTrackSelectionBehavior\": \"first\",\n" " \"ChapterMarkers\": true,\n" " \"ChildrenArray\": [],\n" @@ -2478,6 +2543,7 @@ const char hb_builtin_presets_json[] = " \"SubtitleBurnBehavior\": \"foreign\",\n" " \"SubtitleBurnDVDSub\": true,\n" " \"SubtitleLanguageList\": [],\n" +" \"SubtitleTrackNamePassthru\": true,\n" " \"SubtitleTrackSelectionBehavior\": \"none\",\n" " \"Type\": 0,\n" " \"UsesPictureFilters\": true,\n" @@ -2505,6 +2571,7 @@ const char hb_builtin_presets_json[] = " },\n" " {\n" " \"AlignAVStart\": true,\n" +" \"AudioAutomaticNamingBehavior\": \"unnamed\",\n" " \"AudioCopyMask\": [\n" " \"copy:aac\",\n" " \"copy:ac3\"\n" @@ -2540,6 +2607,7 @@ const char hb_builtin_presets_json[] = " }\n" " ],\n" " \"AudioSecondaryEncoderMode\": true,\n" +" \"AudioTrackNamePassthru\": true,\n" " \"AudioTrackSelectionBehavior\": \"first\",\n" " \"ChapterMarkers\": true,\n" " \"ChildrenArray\": [],\n" @@ -2599,6 +2667,7 @@ const char hb_builtin_presets_json[] = " \"SubtitleBurnBehavior\": \"foreign\",\n" " \"SubtitleBurnDVDSub\": true,\n" " \"SubtitleLanguageList\": [],\n" +" \"SubtitleTrackNamePassthru\": true,\n" " \"SubtitleTrackSelectionBehavior\": \"none\",\n" " \"Type\": 0,\n" " \"UsesPictureFilters\": true,\n" @@ -2626,6 +2695,7 @@ const char hb_builtin_presets_json[] = " },\n" " {\n" " \"AlignAVStart\": true,\n" +" \"AudioAutomaticNamingBehavior\": \"unnamed\",\n" " \"AudioCopyMask\": [\n" " \"copy:aac\",\n" " \"copy:ac3\"\n" @@ -2661,6 +2731,7 @@ const char hb_builtin_presets_json[] = " }\n" " ],\n" " \"AudioSecondaryEncoderMode\": true,\n" +" \"AudioTrackNamePassthru\": true,\n" " \"AudioTrackSelectionBehavior\": \"first\",\n" " \"ChapterMarkers\": true,\n" " \"ChildrenArray\": [],\n" @@ -2720,6 +2791,7 @@ const char hb_builtin_presets_json[] = " \"SubtitleBurnBehavior\": \"foreign\",\n" " \"SubtitleBurnDVDSub\": true,\n" " \"SubtitleLanguageList\": [],\n" +" \"SubtitleTrackNamePassthru\": true,\n" " \"SubtitleTrackSelectionBehavior\": \"none\",\n" " \"Type\": 0,\n" " \"UsesPictureFilters\": true,\n" @@ -2754,6 +2826,7 @@ const char hb_builtin_presets_json[] = " \"ChildrenArray\": [\n" " {\n" " \"AlignAVStart\": true,\n" +" \"AudioAutomaticNamingBehavior\": \"unnamed\",\n" " \"AudioCopyMask\": [\n" " \"copy:aac\"\n" " ],\n" @@ -2775,6 +2848,7 @@ const char hb_builtin_presets_json[] = " }\n" " ],\n" " \"AudioSecondaryEncoderMode\": true,\n" +" \"AudioTrackNamePassthru\": true,\n" " \"AudioTrackSelectionBehavior\": \"first\",\n" " \"ChapterMarkers\": true,\n" " \"ChildrenArray\": [],\n" @@ -2834,6 +2908,7 @@ const char hb_builtin_presets_json[] = " \"SubtitleBurnBehavior\": \"foreign\",\n" " \"SubtitleBurnDVDSub\": true,\n" " \"SubtitleLanguageList\": [],\n" +" \"SubtitleTrackNamePassthru\": true,\n" " \"SubtitleTrackSelectionBehavior\": \"none\",\n" " \"Type\": 0,\n" " \"UsesPictureFilters\": true,\n" @@ -2861,6 +2936,7 @@ const char hb_builtin_presets_json[] = " },\n" " {\n" " \"AlignAVStart\": true,\n" +" \"AudioAutomaticNamingBehavior\": \"unnamed\",\n" " \"AudioCopyMask\": [\n" " \"copy:aac\"\n" " ],\n" @@ -2882,6 +2958,7 @@ const char hb_builtin_presets_json[] = " }\n" " ],\n" " \"AudioSecondaryEncoderMode\": true,\n" +" \"AudioTrackNamePassthru\": true,\n" " \"AudioTrackSelectionBehavior\": \"first\",\n" " \"ChapterMarkers\": true,\n" " \"ChildrenArray\": [],\n" @@ -2941,6 +3018,7 @@ const char hb_builtin_presets_json[] = " \"SubtitleBurnBehavior\": \"foreign\",\n" " \"SubtitleBurnDVDSub\": true,\n" " \"SubtitleLanguageList\": [],\n" +" \"SubtitleTrackNamePassthru\": true,\n" " \"SubtitleTrackSelectionBehavior\": \"none\",\n" " \"Type\": 0,\n" " \"UsesPictureFilters\": true,\n" @@ -2968,6 +3046,7 @@ const char hb_builtin_presets_json[] = " },\n" " {\n" " \"AlignAVStart\": true,\n" +" \"AudioAutomaticNamingBehavior\": \"unnamed\",\n" " \"AudioCopyMask\": [\n" " \"copy:aac\"\n" " ],\n" @@ -2989,6 +3068,7 @@ const char hb_builtin_presets_json[] = " }\n" " ],\n" " \"AudioSecondaryEncoderMode\": true,\n" +" \"AudioTrackNamePassthru\": true,\n" " \"AudioTrackSelectionBehavior\": \"first\",\n" " \"ChapterMarkers\": true,\n" " \"ChildrenArray\": [],\n" @@ -3048,6 +3128,7 @@ const char hb_builtin_presets_json[] = " \"SubtitleBurnBehavior\": \"foreign\",\n" " \"SubtitleBurnDVDSub\": true,\n" " \"SubtitleLanguageList\": [],\n" +" \"SubtitleTrackNamePassthru\": true,\n" " \"SubtitleTrackSelectionBehavior\": \"none\",\n" " \"Type\": 0,\n" " \"UsesPictureFilters\": true,\n" @@ -3075,6 +3156,7 @@ const char hb_builtin_presets_json[] = " },\n" " {\n" " \"AlignAVStart\": true,\n" +" \"AudioAutomaticNamingBehavior\": \"unnamed\",\n" " \"AudioCopyMask\": [\n" " \"copy:aac\"\n" " ],\n" @@ -3096,6 +3178,7 @@ const char hb_builtin_presets_json[] = " }\n" " ],\n" " \"AudioSecondaryEncoderMode\": true,\n" +" \"AudioTrackNamePassthru\": true,\n" " \"AudioTrackSelectionBehavior\": \"first\",\n" " \"ChapterMarkers\": true,\n" " \"ChildrenArray\": [],\n" @@ -3155,6 +3238,7 @@ const char hb_builtin_presets_json[] = " \"SubtitleBurnBehavior\": \"foreign\",\n" " \"SubtitleBurnDVDSub\": true,\n" " \"SubtitleLanguageList\": [],\n" +" \"SubtitleTrackNamePassthru\": true,\n" " \"SubtitleTrackSelectionBehavior\": \"none\",\n" " \"Type\": 0,\n" " \"UsesPictureFilters\": true,\n" @@ -3182,6 +3266,7 @@ const char hb_builtin_presets_json[] = " },\n" " {\n" " \"AlignAVStart\": true,\n" +" \"AudioAutomaticNamingBehavior\": \"unnamed\",\n" " \"AudioCopyMask\": [\n" " \"copy:aac\"\n" " ],\n" @@ -3203,6 +3288,7 @@ const char hb_builtin_presets_json[] = " }\n" " ],\n" " \"AudioSecondaryEncoderMode\": true,\n" +" \"AudioTrackNamePassthru\": true,\n" " \"AudioTrackSelectionBehavior\": \"first\",\n" " \"ChapterMarkers\": true,\n" " \"ChildrenArray\": [],\n" @@ -3262,6 +3348,7 @@ const char hb_builtin_presets_json[] = " \"SubtitleBurnBehavior\": \"foreign\",\n" " \"SubtitleBurnDVDSub\": true,\n" " \"SubtitleLanguageList\": [],\n" +" \"SubtitleTrackNamePassthru\": true,\n" " \"SubtitleTrackSelectionBehavior\": \"none\",\n" " \"Type\": 0,\n" " \"UsesPictureFilters\": true,\n" @@ -3289,6 +3376,7 @@ const char hb_builtin_presets_json[] = " },\n" " {\n" " \"AlignAVStart\": true,\n" +" \"AudioAutomaticNamingBehavior\": \"unnamed\",\n" " \"AudioCopyMask\": [\n" " \"copy:aac\"\n" " ],\n" @@ -3310,6 +3398,7 @@ const char hb_builtin_presets_json[] = " }\n" " ],\n" " \"AudioSecondaryEncoderMode\": true,\n" +" \"AudioTrackNamePassthru\": true,\n" " \"AudioTrackSelectionBehavior\": \"first\",\n" " \"ChapterMarkers\": true,\n" " \"ChildrenArray\": [],\n" @@ -3369,6 +3458,7 @@ const char hb_builtin_presets_json[] = " \"SubtitleBurnBehavior\": \"foreign\",\n" " \"SubtitleBurnDVDSub\": true,\n" " \"SubtitleLanguageList\": [],\n" +" \"SubtitleTrackNamePassthru\": true,\n" " \"SubtitleTrackSelectionBehavior\": \"none\",\n" " \"Type\": 0,\n" " \"UsesPictureFilters\": true,\n" @@ -3396,6 +3486,7 @@ const char hb_builtin_presets_json[] = " },\n" " {\n" " \"AlignAVStart\": true,\n" +" \"AudioAutomaticNamingBehavior\": \"unnamed\",\n" " \"AudioCopyMask\": [\n" " \"copy:aac\"\n" " ],\n" @@ -3417,6 +3508,7 @@ const char hb_builtin_presets_json[] = " }\n" " ],\n" " \"AudioSecondaryEncoderMode\": true,\n" +" \"AudioTrackNamePassthru\": true,\n" " \"AudioTrackSelectionBehavior\": \"first\",\n" " \"ChapterMarkers\": true,\n" " \"ChildrenArray\": [],\n" @@ -3476,6 +3568,7 @@ const char hb_builtin_presets_json[] = " \"SubtitleBurnBehavior\": \"foreign\",\n" " \"SubtitleBurnDVDSub\": true,\n" " \"SubtitleLanguageList\": [],\n" +" \"SubtitleTrackNamePassthru\": true,\n" " \"SubtitleTrackSelectionBehavior\": \"none\",\n" " \"Type\": 0,\n" " \"UsesPictureFilters\": true,\n" @@ -3503,6 +3596,7 @@ const char hb_builtin_presets_json[] = " },\n" " {\n" " \"AlignAVStart\": true,\n" +" \"AudioAutomaticNamingBehavior\": \"unnamed\",\n" " \"AudioCopyMask\": [\n" " \"copy:aac\"\n" " ],\n" @@ -3524,6 +3618,7 @@ const char hb_builtin_presets_json[] = " }\n" " ],\n" " \"AudioSecondaryEncoderMode\": true,\n" +" \"AudioTrackNamePassthru\": true,\n" " \"AudioTrackSelectionBehavior\": \"first\",\n" " \"ChapterMarkers\": true,\n" " \"ChildrenArray\": [],\n" @@ -3583,6 +3678,7 @@ const char hb_builtin_presets_json[] = " \"SubtitleBurnBehavior\": \"foreign\",\n" " \"SubtitleBurnDVDSub\": true,\n" " \"SubtitleLanguageList\": [],\n" +" \"SubtitleTrackNamePassthru\": true,\n" " \"SubtitleTrackSelectionBehavior\": \"none\",\n" " \"Type\": 0,\n" " \"UsesPictureFilters\": true,\n" @@ -3610,6 +3706,7 @@ const char hb_builtin_presets_json[] = " },\n" " {\n" " \"AlignAVStart\": true,\n" +" \"AudioAutomaticNamingBehavior\": \"unnamed\",\n" " \"AudioCopyMask\": [\n" " \"copy:aac\"\n" " ],\n" @@ -3631,6 +3728,7 @@ const char hb_builtin_presets_json[] = " }\n" " ],\n" " \"AudioSecondaryEncoderMode\": true,\n" +" \"AudioTrackNamePassthru\": true,\n" " \"AudioTrackSelectionBehavior\": \"first\",\n" " \"ChapterMarkers\": true,\n" " \"ChildrenArray\": [],\n" @@ -3690,6 +3788,7 @@ const char hb_builtin_presets_json[] = " \"SubtitleBurnBehavior\": \"foreign\",\n" " \"SubtitleBurnDVDSub\": true,\n" " \"SubtitleLanguageList\": [],\n" +" \"SubtitleTrackNamePassthru\": true,\n" " \"SubtitleTrackSelectionBehavior\": \"none\",\n" " \"Type\": 0,\n" " \"UsesPictureFilters\": true,\n" @@ -3717,6 +3816,7 @@ const char hb_builtin_presets_json[] = " },\n" " {\n" " \"AlignAVStart\": true,\n" +" \"AudioAutomaticNamingBehavior\": \"unnamed\",\n" " \"AudioCopyMask\": [\n" " \"copy:aac\"\n" " ],\n" @@ -3738,6 +3838,7 @@ const char hb_builtin_presets_json[] = " }\n" " ],\n" " \"AudioSecondaryEncoderMode\": true,\n" +" \"AudioTrackNamePassthru\": true,\n" " \"AudioTrackSelectionBehavior\": \"first\",\n" " \"ChapterMarkers\": true,\n" " \"ChildrenArray\": [],\n" @@ -3797,6 +3898,7 @@ const char hb_builtin_presets_json[] = " \"SubtitleBurnBehavior\": \"foreign\",\n" " \"SubtitleBurnDVDSub\": true,\n" " \"SubtitleLanguageList\": [],\n" +" \"SubtitleTrackNamePassthru\": true,\n" " \"SubtitleTrackSelectionBehavior\": \"none\",\n" " \"Type\": 0,\n" " \"UsesPictureFilters\": true,\n" @@ -3824,6 +3926,7 @@ const char hb_builtin_presets_json[] = " },\n" " {\n" " \"AlignAVStart\": true,\n" +" \"AudioAutomaticNamingBehavior\": \"unnamed\",\n" " \"AudioCopyMask\": [\n" " \"copy:aac\"\n" " ],\n" @@ -3845,6 +3948,7 @@ const char hb_builtin_presets_json[] = " }\n" " ],\n" " \"AudioSecondaryEncoderMode\": true,\n" +" \"AudioTrackNamePassthru\": true,\n" " \"AudioTrackSelectionBehavior\": \"first\",\n" " \"ChapterMarkers\": true,\n" " \"ChildrenArray\": [],\n" @@ -3904,6 +4008,7 @@ const char hb_builtin_presets_json[] = " \"SubtitleBurnBehavior\": \"foreign\",\n" " \"SubtitleBurnDVDSub\": true,\n" " \"SubtitleLanguageList\": [],\n" +" \"SubtitleTrackNamePassthru\": true,\n" " \"SubtitleTrackSelectionBehavior\": \"none\",\n" " \"Type\": 0,\n" " \"UsesPictureFilters\": true,\n" @@ -3938,6 +4043,7 @@ const char hb_builtin_presets_json[] = " \"ChildrenArray\": [\n" " {\n" " \"AlignAVStart\": false,\n" +" \"AudioAutomaticNamingBehavior\": \"unnamed\",\n" " \"AudioCopyMask\": [\n" " \"copy:aac\",\n" " \"copy:ac3\"\n" @@ -3973,6 +4079,7 @@ const char hb_builtin_presets_json[] = " }\n" " ],\n" " \"AudioSecondaryEncoderMode\": true,\n" +" \"AudioTrackNamePassthru\": true,\n" " \"AudioTrackSelectionBehavior\": \"first\",\n" " \"ChapterMarkers\": true,\n" " \"ChildrenArray\": [],\n" @@ -4032,6 +4139,7 @@ const char hb_builtin_presets_json[] = " \"SubtitleBurnBehavior\": \"foreign\",\n" " \"SubtitleBurnDVDSub\": true,\n" " \"SubtitleLanguageList\": [],\n" +" \"SubtitleTrackNamePassthru\": true,\n" " \"SubtitleTrackSelectionBehavior\": \"none\",\n" " \"Type\": 0,\n" " \"UsesPictureFilters\": true,\n" @@ -4059,6 +4167,7 @@ const char hb_builtin_presets_json[] = " },\n" " {\n" " \"AlignAVStart\": false,\n" +" \"AudioAutomaticNamingBehavior\": \"unnamed\",\n" " \"AudioCopyMask\": [\n" " \"copy:aac\",\n" " \"copy:ac3\"\n" @@ -4094,6 +4203,7 @@ const char hb_builtin_presets_json[] = " }\n" " ],\n" " \"AudioSecondaryEncoderMode\": true,\n" +" \"AudioTrackNamePassthru\": true,\n" " \"AudioTrackSelectionBehavior\": \"first\",\n" " \"ChapterMarkers\": true,\n" " \"ChildrenArray\": [],\n" @@ -4153,6 +4263,7 @@ const char hb_builtin_presets_json[] = " \"SubtitleBurnBehavior\": \"foreign\",\n" " \"SubtitleBurnDVDSub\": true,\n" " \"SubtitleLanguageList\": [],\n" +" \"SubtitleTrackNamePassthru\": true,\n" " \"SubtitleTrackSelectionBehavior\": \"none\",\n" " \"Type\": 0,\n" " \"UsesPictureFilters\": true,\n" @@ -4180,6 +4291,7 @@ const char hb_builtin_presets_json[] = " },\n" " {\n" " \"AlignAVStart\": false,\n" +" \"AudioAutomaticNamingBehavior\": \"unnamed\",\n" " \"AudioCopyMask\": [\n" " \"copy:aac\"\n" " ],\n" @@ -4201,6 +4313,7 @@ const char hb_builtin_presets_json[] = " }\n" " ],\n" " \"AudioSecondaryEncoderMode\": true,\n" +" \"AudioTrackNamePassthru\": true,\n" " \"AudioTrackSelectionBehavior\": \"first\",\n" " \"ChapterMarkers\": true,\n" " \"ChildrenArray\": [],\n" @@ -4260,6 +4373,7 @@ const char hb_builtin_presets_json[] = " \"SubtitleBurnBehavior\": \"foreign\",\n" " \"SubtitleBurnDVDSub\": true,\n" " \"SubtitleLanguageList\": [],\n" +" \"SubtitleTrackNamePassthru\": true,\n" " \"SubtitleTrackSelectionBehavior\": \"none\",\n" " \"Type\": 0,\n" " \"UsesPictureFilters\": true,\n" @@ -4287,6 +4401,7 @@ const char hb_builtin_presets_json[] = " },\n" " {\n" " \"AlignAVStart\": false,\n" +" \"AudioAutomaticNamingBehavior\": \"unnamed\",\n" " \"AudioCopyMask\": [\n" " \"copy:aac\"\n" " ],\n" @@ -4308,6 +4423,7 @@ const char hb_builtin_presets_json[] = " }\n" " ],\n" " \"AudioSecondaryEncoderMode\": true,\n" +" \"AudioTrackNamePassthru\": true,\n" " \"AudioTrackSelectionBehavior\": \"first\",\n" " \"ChapterMarkers\": true,\n" " \"ChildrenArray\": [],\n" @@ -4367,6 +4483,7 @@ const char hb_builtin_presets_json[] = " \"SubtitleBurnBehavior\": \"foreign\",\n" " \"SubtitleBurnDVDSub\": true,\n" " \"SubtitleLanguageList\": [],\n" +" \"SubtitleTrackNamePassthru\": true,\n" " \"SubtitleTrackSelectionBehavior\": \"none\",\n" " \"Type\": 0,\n" " \"UsesPictureFilters\": true,\n" @@ -4394,6 +4511,7 @@ const char hb_builtin_presets_json[] = " },\n" " {\n" " \"AlignAVStart\": false,\n" +" \"AudioAutomaticNamingBehavior\": \"unnamed\",\n" " \"AudioCopyMask\": [\n" " \"copy:aac\"\n" " ],\n" @@ -4415,6 +4533,7 @@ const char hb_builtin_presets_json[] = " }\n" " ],\n" " \"AudioSecondaryEncoderMode\": true,\n" +" \"AudioTrackNamePassthru\": true,\n" " \"AudioTrackSelectionBehavior\": \"first\",\n" " \"ChapterMarkers\": true,\n" " \"ChildrenArray\": [],\n" @@ -4474,6 +4593,7 @@ const char hb_builtin_presets_json[] = " \"SubtitleBurnBehavior\": \"foreign\",\n" " \"SubtitleBurnDVDSub\": true,\n" " \"SubtitleLanguageList\": [],\n" +" \"SubtitleTrackNamePassthru\": true,\n" " \"SubtitleTrackSelectionBehavior\": \"none\",\n" " \"Type\": 0,\n" " \"UsesPictureFilters\": true,\n" @@ -4501,6 +4621,7 @@ const char hb_builtin_presets_json[] = " },\n" " {\n" " \"AlignAVStart\": false,\n" +" \"AudioAutomaticNamingBehavior\": \"unnamed\",\n" " \"AudioCopyMask\": [\n" " \"copy:aac\"\n" " ],\n" @@ -4522,6 +4643,7 @@ const char hb_builtin_presets_json[] = " }\n" " ],\n" " \"AudioSecondaryEncoderMode\": true,\n" +" \"AudioTrackNamePassthru\": true,\n" " \"AudioTrackSelectionBehavior\": \"first\",\n" " \"ChapterMarkers\": true,\n" " \"ChildrenArray\": [],\n" @@ -4581,6 +4703,7 @@ const char hb_builtin_presets_json[] = " \"SubtitleBurnBehavior\": \"foreign\",\n" " \"SubtitleBurnDVDSub\": true,\n" " \"SubtitleLanguageList\": [],\n" +" \"SubtitleTrackNamePassthru\": true,\n" " \"SubtitleTrackSelectionBehavior\": \"none\",\n" " \"Type\": 0,\n" " \"UsesPictureFilters\": true,\n" @@ -4608,6 +4731,7 @@ const char hb_builtin_presets_json[] = " },\n" " {\n" " \"AlignAVStart\": false,\n" +" \"AudioAutomaticNamingBehavior\": \"unnamed\",\n" " \"AudioCopyMask\": [\n" " \"copy:aac\"\n" " ],\n" @@ -4629,6 +4753,7 @@ const char hb_builtin_presets_json[] = " }\n" " ],\n" " \"AudioSecondaryEncoderMode\": true,\n" +" \"AudioTrackNamePassthru\": true,\n" " \"AudioTrackSelectionBehavior\": \"first\",\n" " \"ChapterMarkers\": true,\n" " \"ChildrenArray\": [],\n" @@ -4688,6 +4813,7 @@ const char hb_builtin_presets_json[] = " \"SubtitleBurnBehavior\": \"foreign\",\n" " \"SubtitleBurnDVDSub\": true,\n" " \"SubtitleLanguageList\": [],\n" +" \"SubtitleTrackNamePassthru\": true,\n" " \"SubtitleTrackSelectionBehavior\": \"none\",\n" " \"Type\": 0,\n" " \"UsesPictureFilters\": true,\n" @@ -4715,6 +4841,7 @@ const char hb_builtin_presets_json[] = " },\n" " {\n" " \"AlignAVStart\": false,\n" +" \"AudioAutomaticNamingBehavior\": \"unnamed\",\n" " \"AudioCopyMask\": [\n" " \"copy:aac\",\n" " \"copy:ac3\"\n" @@ -4750,6 +4877,7 @@ const char hb_builtin_presets_json[] = " }\n" " ],\n" " \"AudioSecondaryEncoderMode\": true,\n" +" \"AudioTrackNamePassthru\": true,\n" " \"AudioTrackSelectionBehavior\": \"first\",\n" " \"ChapterMarkers\": true,\n" " \"ChildrenArray\": [],\n" @@ -4809,6 +4937,7 @@ const char hb_builtin_presets_json[] = " \"SubtitleBurnBehavior\": \"foreign\",\n" " \"SubtitleBurnDVDSub\": true,\n" " \"SubtitleLanguageList\": [],\n" +" \"SubtitleTrackNamePassthru\": true,\n" " \"SubtitleTrackSelectionBehavior\": \"none\",\n" " \"Type\": 0,\n" " \"UsesPictureFilters\": true,\n" @@ -4836,6 +4965,7 @@ const char hb_builtin_presets_json[] = " },\n" " {\n" " \"AlignAVStart\": false,\n" +" \"AudioAutomaticNamingBehavior\": \"unnamed\",\n" " \"AudioCopyMask\": [\n" " \"copy:aac\",\n" " \"copy:ac3\"\n" @@ -4871,6 +5001,7 @@ const char hb_builtin_presets_json[] = " }\n" " ],\n" " \"AudioSecondaryEncoderMode\": true,\n" +" \"AudioTrackNamePassthru\": true,\n" " \"AudioTrackSelectionBehavior\": \"first\",\n" " \"ChapterMarkers\": true,\n" " \"ChildrenArray\": [],\n" @@ -4930,6 +5061,7 @@ const char hb_builtin_presets_json[] = " \"SubtitleBurnBehavior\": \"foreign\",\n" " \"SubtitleBurnDVDSub\": true,\n" " \"SubtitleLanguageList\": [],\n" +" \"SubtitleTrackNamePassthru\": true,\n" " \"SubtitleTrackSelectionBehavior\": \"none\",\n" " \"Type\": 0,\n" " \"UsesPictureFilters\": true,\n" @@ -4957,6 +5089,7 @@ const char hb_builtin_presets_json[] = " },\n" " {\n" " \"AlignAVStart\": false,\n" +" \"AudioAutomaticNamingBehavior\": \"unnamed\",\n" " \"AudioCopyMask\": [\n" " \"copy:aac\",\n" " \"copy:ac3\"\n" @@ -4992,6 +5125,7 @@ const char hb_builtin_presets_json[] = " }\n" " ],\n" " \"AudioSecondaryEncoderMode\": true,\n" +" \"AudioTrackNamePassthru\": true,\n" " \"AudioTrackSelectionBehavior\": \"first\",\n" " \"ChapterMarkers\": true,\n" " \"ChildrenArray\": [],\n" @@ -5051,6 +5185,7 @@ const char hb_builtin_presets_json[] = " \"SubtitleBurnBehavior\": \"foreign\",\n" " \"SubtitleBurnDVDSub\": true,\n" " \"SubtitleLanguageList\": [],\n" +" \"SubtitleTrackNamePassthru\": true,\n" " \"SubtitleTrackSelectionBehavior\": \"none\",\n" " \"Type\": 0,\n" " \"UsesPictureFilters\": true,\n" @@ -5078,6 +5213,7 @@ const char hb_builtin_presets_json[] = " },\n" " {\n" " \"AlignAVStart\": false,\n" +" \"AudioAutomaticNamingBehavior\": \"unnamed\",\n" " \"AudioCopyMask\": [\n" " \"copy:aac\",\n" " \"copy:ac3\"\n" @@ -5113,6 +5249,7 @@ const char hb_builtin_presets_json[] = " }\n" " ],\n" " \"AudioSecondaryEncoderMode\": true,\n" +" \"AudioTrackNamePassthru\": true,\n" " \"AudioTrackSelectionBehavior\": \"first\",\n" " \"ChapterMarkers\": true,\n" " \"ChildrenArray\": [],\n" @@ -5172,6 +5309,7 @@ const char hb_builtin_presets_json[] = " \"SubtitleBurnBehavior\": \"foreign\",\n" " \"SubtitleBurnDVDSub\": true,\n" " \"SubtitleLanguageList\": [],\n" +" \"SubtitleTrackNamePassthru\": true,\n" " \"SubtitleTrackSelectionBehavior\": \"none\",\n" " \"Type\": 0,\n" " \"UsesPictureFilters\": true,\n" @@ -5199,6 +5337,7 @@ const char hb_builtin_presets_json[] = " },\n" " {\n" " \"AlignAVStart\": false,\n" +" \"AudioAutomaticNamingBehavior\": \"unnamed\",\n" " \"AudioCopyMask\": [\n" " \"copy:aac\",\n" " \"copy:ac3\"\n" @@ -5234,6 +5373,7 @@ const char hb_builtin_presets_json[] = " }\n" " ],\n" " \"AudioSecondaryEncoderMode\": true,\n" +" \"AudioTrackNamePassthru\": true,\n" " \"AudioTrackSelectionBehavior\": \"first\",\n" " \"ChapterMarkers\": true,\n" " \"ChildrenArray\": [],\n" @@ -5293,6 +5433,7 @@ const char hb_builtin_presets_json[] = " \"SubtitleBurnBehavior\": \"foreign\",\n" " \"SubtitleBurnDVDSub\": true,\n" " \"SubtitleLanguageList\": [],\n" +" \"SubtitleTrackNamePassthru\": true,\n" " \"SubtitleTrackSelectionBehavior\": \"none\",\n" " \"Type\": 0,\n" " \"UsesPictureFilters\": true,\n" @@ -5320,6 +5461,7 @@ const char hb_builtin_presets_json[] = " },\n" " {\n" " \"AlignAVStart\": false,\n" +" \"AudioAutomaticNamingBehavior\": \"unnamed\",\n" " \"AudioCopyMask\": [\n" " \"copy:aac\",\n" " \"copy:ac3\"\n" @@ -5355,6 +5497,7 @@ const char hb_builtin_presets_json[] = " }\n" " ],\n" " \"AudioSecondaryEncoderMode\": true,\n" +" \"AudioTrackNamePassthru\": true,\n" " \"AudioTrackSelectionBehavior\": \"first\",\n" " \"ChapterMarkers\": true,\n" " \"ChildrenArray\": [],\n" @@ -5414,6 +5557,7 @@ const char hb_builtin_presets_json[] = " \"SubtitleBurnBehavior\": \"foreign\",\n" " \"SubtitleBurnDVDSub\": true,\n" " \"SubtitleLanguageList\": [],\n" +" \"SubtitleTrackNamePassthru\": true,\n" " \"SubtitleTrackSelectionBehavior\": \"none\",\n" " \"Type\": 0,\n" " \"UsesPictureFilters\": true,\n" @@ -5441,6 +5585,7 @@ const char hb_builtin_presets_json[] = " },\n" " {\n" " \"AlignAVStart\": false,\n" +" \"AudioAutomaticNamingBehavior\": \"unnamed\",\n" " \"AudioCopyMask\": [\n" " \"copy:aac\",\n" " \"copy:ac3\"\n" @@ -5476,6 +5621,7 @@ const char hb_builtin_presets_json[] = " }\n" " ],\n" " \"AudioSecondaryEncoderMode\": true,\n" +" \"AudioTrackNamePassthru\": true,\n" " \"AudioTrackSelectionBehavior\": \"first\",\n" " \"ChapterMarkers\": true,\n" " \"ChildrenArray\": [],\n" @@ -5535,6 +5681,7 @@ const char hb_builtin_presets_json[] = " \"SubtitleBurnBehavior\": \"foreign\",\n" " \"SubtitleBurnDVDSub\": true,\n" " \"SubtitleLanguageList\": [],\n" +" \"SubtitleTrackNamePassthru\": true,\n" " \"SubtitleTrackSelectionBehavior\": \"none\",\n" " \"Type\": 0,\n" " \"UsesPictureFilters\": true,\n" @@ -5562,6 +5709,7 @@ const char hb_builtin_presets_json[] = " },\n" " {\n" " \"AlignAVStart\": false,\n" +" \"AudioAutomaticNamingBehavior\": \"unnamed\",\n" " \"AudioCopyMask\": [\n" " \"copy:aac\",\n" " \"copy:ac3\"\n" @@ -5597,6 +5745,7 @@ const char hb_builtin_presets_json[] = " }\n" " ],\n" " \"AudioSecondaryEncoderMode\": true,\n" +" \"AudioTrackNamePassthru\": true,\n" " \"AudioTrackSelectionBehavior\": \"first\",\n" " \"ChapterMarkers\": true,\n" " \"ChildrenArray\": [],\n" @@ -5656,6 +5805,7 @@ const char hb_builtin_presets_json[] = " \"SubtitleBurnBehavior\": \"foreign\",\n" " \"SubtitleBurnDVDSub\": true,\n" " \"SubtitleLanguageList\": [],\n" +" \"SubtitleTrackNamePassthru\": true,\n" " \"SubtitleTrackSelectionBehavior\": \"none\",\n" " \"Type\": 0,\n" " \"UsesPictureFilters\": true,\n" @@ -5683,6 +5833,7 @@ const char hb_builtin_presets_json[] = " },\n" " {\n" " \"AlignAVStart\": false,\n" +" \"AudioAutomaticNamingBehavior\": \"unnamed\",\n" " \"AudioCopyMask\": [\n" " \"copy:aac\",\n" " \"copy:ac3\"\n" @@ -5718,6 +5869,7 @@ const char hb_builtin_presets_json[] = " }\n" " ],\n" " \"AudioSecondaryEncoderMode\": true,\n" +" \"AudioTrackNamePassthru\": true,\n" " \"AudioTrackSelectionBehavior\": \"first\",\n" " \"ChapterMarkers\": true,\n" " \"ChildrenArray\": [],\n" @@ -5777,6 +5929,7 @@ const char hb_builtin_presets_json[] = " \"SubtitleBurnBehavior\": \"foreign\",\n" " \"SubtitleBurnDVDSub\": true,\n" " \"SubtitleLanguageList\": [],\n" +" \"SubtitleTrackNamePassthru\": true,\n" " \"SubtitleTrackSelectionBehavior\": \"none\",\n" " \"Type\": 0,\n" " \"UsesPictureFilters\": true,\n" @@ -5804,6 +5957,7 @@ const char hb_builtin_presets_json[] = " },\n" " {\n" " \"AlignAVStart\": false,\n" +" \"AudioAutomaticNamingBehavior\": \"unnamed\",\n" " \"AudioCopyMask\": [\n" " \"copy:aac\",\n" " \"copy:ac3\"\n" @@ -5839,6 +5993,7 @@ const char hb_builtin_presets_json[] = " }\n" " ],\n" " \"AudioSecondaryEncoderMode\": true,\n" +" \"AudioTrackNamePassthru\": true,\n" " \"AudioTrackSelectionBehavior\": \"first\",\n" " \"ChapterMarkers\": true,\n" " \"ChildrenArray\": [],\n" @@ -5898,6 +6053,7 @@ const char hb_builtin_presets_json[] = " \"SubtitleBurnBehavior\": \"foreign\",\n" " \"SubtitleBurnDVDSub\": true,\n" " \"SubtitleLanguageList\": [],\n" +" \"SubtitleTrackNamePassthru\": true,\n" " \"SubtitleTrackSelectionBehavior\": \"none\",\n" " \"Type\": 0,\n" " \"UsesPictureFilters\": true,\n" @@ -5925,6 +6081,7 @@ const char hb_builtin_presets_json[] = " },\n" " {\n" " \"AlignAVStart\": false,\n" +" \"AudioAutomaticNamingBehavior\": \"unnamed\",\n" " \"AudioCopyMask\": [\n" " \"copy:aac\"\n" " ],\n" @@ -5946,6 +6103,7 @@ const char hb_builtin_presets_json[] = " }\n" " ],\n" " \"AudioSecondaryEncoderMode\": true,\n" +" \"AudioTrackNamePassthru\": true,\n" " \"AudioTrackSelectionBehavior\": \"first\",\n" " \"ChapterMarkers\": true,\n" " \"ChildrenArray\": [],\n" @@ -6005,6 +6163,7 @@ const char hb_builtin_presets_json[] = " \"SubtitleBurnBehavior\": \"foreign\",\n" " \"SubtitleBurnDVDSub\": true,\n" " \"SubtitleLanguageList\": [],\n" +" \"SubtitleTrackNamePassthru\": true,\n" " \"SubtitleTrackSelectionBehavior\": \"none\",\n" " \"Type\": 0,\n" " \"UsesPictureFilters\": true,\n" @@ -6032,6 +6191,7 @@ const char hb_builtin_presets_json[] = " },\n" " {\n" " \"AlignAVStart\": false,\n" +" \"AudioAutomaticNamingBehavior\": \"unnamed\",\n" " \"AudioCopyMask\": [\n" " \"copy:aac\"\n" " ],\n" @@ -6053,6 +6213,7 @@ const char hb_builtin_presets_json[] = " }\n" " ],\n" " \"AudioSecondaryEncoderMode\": true,\n" +" \"AudioTrackNamePassthru\": true,\n" " \"AudioTrackSelectionBehavior\": \"first\",\n" " \"ChapterMarkers\": true,\n" " \"ChildrenArray\": [],\n" @@ -6112,6 +6273,7 @@ const char hb_builtin_presets_json[] = " \"SubtitleBurnBehavior\": \"foreign\",\n" " \"SubtitleBurnDVDSub\": true,\n" " \"SubtitleLanguageList\": [],\n" +" \"SubtitleTrackNamePassthru\": true,\n" " \"SubtitleTrackSelectionBehavior\": \"none\",\n" " \"Type\": 0,\n" " \"UsesPictureFilters\": true,\n" @@ -6139,6 +6301,7 @@ const char hb_builtin_presets_json[] = " },\n" " {\n" " \"AlignAVStart\": false,\n" +" \"AudioAutomaticNamingBehavior\": \"unnamed\",\n" " \"AudioCopyMask\": [\n" " \"copy:aac\",\n" " \"copy:ac3\",\n" @@ -6177,6 +6340,7 @@ const char hb_builtin_presets_json[] = " }\n" " ],\n" " \"AudioSecondaryEncoderMode\": true,\n" +" \"AudioTrackNamePassthru\": true,\n" " \"AudioTrackSelectionBehavior\": \"first\",\n" " \"ChapterMarkers\": true,\n" " \"ChildrenArray\": [],\n" @@ -6236,6 +6400,7 @@ const char hb_builtin_presets_json[] = " \"SubtitleBurnBehavior\": \"foreign\",\n" " \"SubtitleBurnDVDSub\": true,\n" " \"SubtitleLanguageList\": [],\n" +" \"SubtitleTrackNamePassthru\": true,\n" " \"SubtitleTrackSelectionBehavior\": \"none\",\n" " \"Type\": 0,\n" " \"UsesPictureFilters\": true,\n" @@ -6263,6 +6428,7 @@ const char hb_builtin_presets_json[] = " },\n" " {\n" " \"AlignAVStart\": true,\n" +" \"AudioAutomaticNamingBehavior\": \"unnamed\",\n" " \"AudioCopyMask\": [\n" " \"copy:aac\",\n" " \"copy:ac3\"\n" @@ -6298,6 +6464,7 @@ const char hb_builtin_presets_json[] = " }\n" " ],\n" " \"AudioSecondaryEncoderMode\": true,\n" +" \"AudioTrackNamePassthru\": true,\n" " \"AudioTrackSelectionBehavior\": \"first\",\n" " \"ChapterMarkers\": true,\n" " \"ChildrenArray\": [],\n" @@ -6357,6 +6524,7 @@ const char hb_builtin_presets_json[] = " \"SubtitleBurnBehavior\": \"foreign\",\n" " \"SubtitleBurnDVDSub\": true,\n" " \"SubtitleLanguageList\": [],\n" +" \"SubtitleTrackNamePassthru\": true,\n" " \"SubtitleTrackSelectionBehavior\": \"none\",\n" " \"Type\": 0,\n" " \"UsesPictureFilters\": true,\n" @@ -6384,6 +6552,7 @@ const char hb_builtin_presets_json[] = " },\n" " {\n" " \"AlignAVStart\": true,\n" +" \"AudioAutomaticNamingBehavior\": \"unnamed\",\n" " \"AudioCopyMask\": [\n" " \"copy:aac\",\n" " \"copy:ac3\"\n" @@ -6419,6 +6588,7 @@ const char hb_builtin_presets_json[] = " }\n" " ],\n" " \"AudioSecondaryEncoderMode\": true,\n" +" \"AudioTrackNamePassthru\": true,\n" " \"AudioTrackSelectionBehavior\": \"first\",\n" " \"ChapterMarkers\": true,\n" " \"ChildrenArray\": [],\n" @@ -6478,6 +6648,7 @@ const char hb_builtin_presets_json[] = " \"SubtitleBurnBehavior\": \"foreign\",\n" " \"SubtitleBurnDVDSub\": true,\n" " \"SubtitleLanguageList\": [],\n" +" \"SubtitleTrackNamePassthru\": true,\n" " \"SubtitleTrackSelectionBehavior\": \"none\",\n" " \"Type\": 0,\n" " \"UsesPictureFilters\": true,\n" @@ -6505,6 +6676,7 @@ const char hb_builtin_presets_json[] = " },\n" " {\n" " \"AlignAVStart\": true,\n" +" \"AudioAutomaticNamingBehavior\": \"unnamed\",\n" " \"AudioCopyMask\": [\n" " \"copy:aac\"\n" " ],\n" @@ -6526,6 +6698,7 @@ const char hb_builtin_presets_json[] = " }\n" " ],\n" " \"AudioSecondaryEncoderMode\": true,\n" +" \"AudioTrackNamePassthru\": true,\n" " \"AudioTrackSelectionBehavior\": \"first\",\n" " \"ChapterMarkers\": true,\n" " \"ChildrenArray\": [],\n" @@ -6585,6 +6758,7 @@ const char hb_builtin_presets_json[] = " \"SubtitleBurnBehavior\": \"foreign\",\n" " \"SubtitleBurnDVDSub\": true,\n" " \"SubtitleLanguageList\": [],\n" +" \"SubtitleTrackNamePassthru\": true,\n" " \"SubtitleTrackSelectionBehavior\": \"none\",\n" " \"Type\": 0,\n" " \"UsesPictureFilters\": true,\n" @@ -6612,6 +6786,7 @@ const char hb_builtin_presets_json[] = " },\n" " {\n" " \"AlignAVStart\": true,\n" +" \"AudioAutomaticNamingBehavior\": \"unnamed\",\n" " \"AudioCopyMask\": [\n" " \"copy:aac\"\n" " ],\n" @@ -6633,6 +6808,7 @@ const char hb_builtin_presets_json[] = " }\n" " ],\n" " \"AudioSecondaryEncoderMode\": true,\n" +" \"AudioTrackNamePassthru\": true,\n" " \"AudioTrackSelectionBehavior\": \"first\",\n" " \"ChapterMarkers\": true,\n" " \"ChildrenArray\": [],\n" @@ -6692,6 +6868,7 @@ const char hb_builtin_presets_json[] = " \"SubtitleBurnBehavior\": \"foreign\",\n" " \"SubtitleBurnDVDSub\": true,\n" " \"SubtitleLanguageList\": [],\n" +" \"SubtitleTrackNamePassthru\": true,\n" " \"SubtitleTrackSelectionBehavior\": \"none\",\n" " \"Type\": 0,\n" " \"UsesPictureFilters\": true,\n" @@ -6719,6 +6896,7 @@ const char hb_builtin_presets_json[] = " },\n" " {\n" " \"AlignAVStart\": false,\n" +" \"AudioAutomaticNamingBehavior\": \"unnamed\",\n" " \"AudioCopyMask\": [\n" " \"copy:aac\",\n" " \"copy:ac3\"\n" @@ -6754,6 +6932,7 @@ const char hb_builtin_presets_json[] = " }\n" " ],\n" " \"AudioSecondaryEncoderMode\": true,\n" +" \"AudioTrackNamePassthru\": true,\n" " \"AudioTrackSelectionBehavior\": \"first\",\n" " \"ChapterMarkers\": true,\n" " \"ChildrenArray\": [],\n" @@ -6813,6 +6992,7 @@ const char hb_builtin_presets_json[] = " \"SubtitleBurnBehavior\": \"foreign\",\n" " \"SubtitleBurnDVDSub\": true,\n" " \"SubtitleLanguageList\": [],\n" +" \"SubtitleTrackNamePassthru\": true,\n" " \"SubtitleTrackSelectionBehavior\": \"none\",\n" " \"Type\": 0,\n" " \"UsesPictureFilters\": true,\n" @@ -6847,6 +7027,7 @@ const char hb_builtin_presets_json[] = " \"ChildrenArray\": [\n" " {\n" " \"AlignAVStart\": false,\n" +" \"AudioAutomaticNamingBehavior\": \"unnamed\",\n" " \"AudioCopyMask\": [],\n" " \"AudioEncoderFallback\": \"opus\",\n" " \"AudioLanguageList\": [],\n" @@ -6866,6 +7047,7 @@ const char hb_builtin_presets_json[] = " }\n" " ],\n" " \"AudioSecondaryEncoderMode\": true,\n" +" \"AudioTrackNamePassthru\": true,\n" " \"AudioTrackSelectionBehavior\": \"first\",\n" " \"ChapterMarkers\": true,\n" " \"ChildrenArray\": [],\n" @@ -6925,6 +7107,7 @@ const char hb_builtin_presets_json[] = " \"SubtitleBurnBehavior\": \"foreign\",\n" " \"SubtitleBurnDVDSub\": true,\n" " \"SubtitleLanguageList\": [],\n" +" \"SubtitleTrackNamePassthru\": true,\n" " \"SubtitleTrackSelectionBehavior\": \"none\",\n" " \"Type\": 0,\n" " \"UsesPictureFilters\": true,\n" @@ -6952,6 +7135,7 @@ const char hb_builtin_presets_json[] = " },\n" " {\n" " \"AlignAVStart\": false,\n" +" \"AudioAutomaticNamingBehavior\": \"unnamed\",\n" " \"AudioCopyMask\": [\n" " \"copy:aac\"\n" " ],\n" @@ -6973,6 +7157,7 @@ const char hb_builtin_presets_json[] = " }\n" " ],\n" " \"AudioSecondaryEncoderMode\": true,\n" +" \"AudioTrackNamePassthru\": true,\n" " \"AudioTrackSelectionBehavior\": \"first\",\n" " \"ChapterMarkers\": true,\n" " \"ChildrenArray\": [],\n" @@ -7032,6 +7217,7 @@ const char hb_builtin_presets_json[] = " \"SubtitleBurnBehavior\": \"foreign\",\n" " \"SubtitleBurnDVDSub\": true,\n" " \"SubtitleLanguageList\": [],\n" +" \"SubtitleTrackNamePassthru\": true,\n" " \"SubtitleTrackSelectionBehavior\": \"none\",\n" " \"Type\": 0,\n" " \"UsesPictureFilters\": true,\n" @@ -7059,6 +7245,7 @@ const char hb_builtin_presets_json[] = " },\n" " {\n" " \"AlignAVStart\": false,\n" +" \"AudioAutomaticNamingBehavior\": \"unnamed\",\n" " \"AudioCopyMask\": [\n" " \"copy:aac\"\n" " ],\n" @@ -7080,6 +7267,7 @@ const char hb_builtin_presets_json[] = " }\n" " ],\n" " \"AudioSecondaryEncoderMode\": true,\n" +" \"AudioTrackNamePassthru\": true,\n" " \"AudioTrackSelectionBehavior\": \"first\",\n" " \"ChapterMarkers\": true,\n" " \"ChildrenArray\": [],\n" @@ -7139,6 +7327,7 @@ const char hb_builtin_presets_json[] = " \"SubtitleBurnBehavior\": \"foreign\",\n" " \"SubtitleBurnDVDSub\": true,\n" " \"SubtitleLanguageList\": [],\n" +" \"SubtitleTrackNamePassthru\": true,\n" " \"SubtitleTrackSelectionBehavior\": \"none\",\n" " \"Type\": 0,\n" " \"UsesPictureFilters\": true,\n" @@ -7166,6 +7355,7 @@ const char hb_builtin_presets_json[] = " },\n" " {\n" " \"AlignAVStart\": false,\n" +" \"AudioAutomaticNamingBehavior\": \"unnamed\",\n" " \"AudioCopyMask\": [\n" " \"copy:aac\"\n" " ],\n" @@ -7187,6 +7377,7 @@ const char hb_builtin_presets_json[] = " }\n" " ],\n" " \"AudioSecondaryEncoderMode\": true,\n" +" \"AudioTrackNamePassthru\": true,\n" " \"AudioTrackSelectionBehavior\": \"first\",\n" " \"ChapterMarkers\": true,\n" " \"ChildrenArray\": [],\n" @@ -7246,6 +7437,7 @@ const char hb_builtin_presets_json[] = " \"SubtitleBurnBehavior\": \"foreign\",\n" " \"SubtitleBurnDVDSub\": true,\n" " \"SubtitleLanguageList\": [],\n" +" \"SubtitleTrackNamePassthru\": true,\n" " \"SubtitleTrackSelectionBehavior\": \"none\",\n" " \"Type\": 0,\n" " \"UsesPictureFilters\": true,\n" @@ -7273,6 +7465,7 @@ const char hb_builtin_presets_json[] = " },\n" " {\n" " \"AlignAVStart\": false,\n" +" \"AudioAutomaticNamingBehavior\": \"unnamed\",\n" " \"AudioCopyMask\": [\n" " \"copy:aac\"\n" " ],\n" @@ -7294,6 +7487,7 @@ const char hb_builtin_presets_json[] = " }\n" " ],\n" " \"AudioSecondaryEncoderMode\": true,\n" +" \"AudioTrackNamePassthru\": true,\n" " \"AudioTrackSelectionBehavior\": \"first\",\n" " \"ChapterMarkers\": true,\n" " \"ChildrenArray\": [],\n" @@ -7353,6 +7547,7 @@ const char hb_builtin_presets_json[] = " \"SubtitleBurnBehavior\": \"foreign\",\n" " \"SubtitleBurnDVDSub\": true,\n" " \"SubtitleLanguageList\": [],\n" +" \"SubtitleTrackNamePassthru\": true,\n" " \"SubtitleTrackSelectionBehavior\": \"none\",\n" " \"Type\": 0,\n" " \"UsesPictureFilters\": true,\n" @@ -7380,6 +7575,7 @@ const char hb_builtin_presets_json[] = " },\n" " {\n" " \"AlignAVStart\": false,\n" +" \"AudioAutomaticNamingBehavior\": \"unnamed\",\n" " \"AudioCopyMask\": [\n" " \"copy:aac\"\n" " ],\n" @@ -7401,6 +7597,7 @@ const char hb_builtin_presets_json[] = " }\n" " ],\n" " \"AudioSecondaryEncoderMode\": true,\n" +" \"AudioTrackNamePassthru\": true,\n" " \"AudioTrackSelectionBehavior\": \"first\",\n" " \"ChapterMarkers\": true,\n" " \"ChildrenArray\": [],\n" @@ -7460,6 +7657,7 @@ const char hb_builtin_presets_json[] = " \"SubtitleBurnBehavior\": \"foreign\",\n" " \"SubtitleBurnDVDSub\": true,\n" " \"SubtitleLanguageList\": [],\n" +" \"SubtitleTrackNamePassthru\": true,\n" " \"SubtitleTrackSelectionBehavior\": \"none\",\n" " \"Type\": 0,\n" " \"UsesPictureFilters\": true,\n" @@ -7487,6 +7685,7 @@ const char hb_builtin_presets_json[] = " },\n" " {\n" " \"AlignAVStart\": false,\n" +" \"AudioAutomaticNamingBehavior\": \"unnamed\",\n" " \"AudioCopyMask\": [\n" " \"copy:aac\"\n" " ],\n" @@ -7508,6 +7707,7 @@ const char hb_builtin_presets_json[] = " }\n" " ],\n" " \"AudioSecondaryEncoderMode\": true,\n" +" \"AudioTrackNamePassthru\": true,\n" " \"AudioTrackSelectionBehavior\": \"first\",\n" " \"ChapterMarkers\": true,\n" " \"ChildrenArray\": [],\n" @@ -7567,6 +7767,7 @@ const char hb_builtin_presets_json[] = " \"SubtitleBurnBehavior\": \"foreign\",\n" " \"SubtitleBurnDVDSub\": true,\n" " \"SubtitleLanguageList\": [],\n" +" \"SubtitleTrackNamePassthru\": true,\n" " \"SubtitleTrackSelectionBehavior\": \"none\",\n" " \"Type\": 0,\n" " \"UsesPictureFilters\": true,\n" @@ -7594,6 +7795,7 @@ const char hb_builtin_presets_json[] = " },\n" " {\n" " \"AlignAVStart\": false,\n" +" \"AudioAutomaticNamingBehavior\": \"unnamed\",\n" " \"AudioCopyMask\": [\n" " \"copy:aac\"\n" " ],\n" @@ -7615,6 +7817,7 @@ const char hb_builtin_presets_json[] = " }\n" " ],\n" " \"AudioSecondaryEncoderMode\": true,\n" +" \"AudioTrackNamePassthru\": true,\n" " \"AudioTrackSelectionBehavior\": \"first\",\n" " \"ChapterMarkers\": true,\n" " \"ChildrenArray\": [],\n" @@ -7674,6 +7877,7 @@ const char hb_builtin_presets_json[] = " \"SubtitleBurnBehavior\": \"foreign\",\n" " \"SubtitleBurnDVDSub\": true,\n" " \"SubtitleLanguageList\": [],\n" +" \"SubtitleTrackNamePassthru\": true,\n" " \"SubtitleTrackSelectionBehavior\": \"none\",\n" " \"Type\": 0,\n" " \"UsesPictureFilters\": true,\n" @@ -7701,6 +7905,7 @@ const char hb_builtin_presets_json[] = " },\n" " {\n" " \"AlignAVStart\": false,\n" +" \"AudioAutomaticNamingBehavior\": \"unnamed\",\n" " \"AudioCopyMask\": [\n" " \"copy:aac\"\n" " ],\n" @@ -7722,6 +7927,7 @@ const char hb_builtin_presets_json[] = " }\n" " ],\n" " \"AudioSecondaryEncoderMode\": true,\n" +" \"AudioTrackNamePassthru\": true,\n" " \"AudioTrackSelectionBehavior\": \"first\",\n" " \"ChapterMarkers\": true,\n" " \"ChildrenArray\": [],\n" @@ -7781,6 +7987,7 @@ const char hb_builtin_presets_json[] = " \"SubtitleBurnBehavior\": \"foreign\",\n" " \"SubtitleBurnDVDSub\": true,\n" " \"SubtitleLanguageList\": [],\n" +" \"SubtitleTrackNamePassthru\": true,\n" " \"SubtitleTrackSelectionBehavior\": \"none\",\n" " \"Type\": 0,\n" " \"UsesPictureFilters\": true,\n" @@ -7808,6 +8015,7 @@ const char hb_builtin_presets_json[] = " },\n" " {\n" " \"AlignAVStart\": false,\n" +" \"AudioAutomaticNamingBehavior\": \"unnamed\",\n" " \"AudioCopyMask\": [\n" " \"copy:aac\"\n" " ],\n" @@ -7829,6 +8037,7 @@ const char hb_builtin_presets_json[] = " }\n" " ],\n" " \"AudioSecondaryEncoderMode\": true,\n" +" \"AudioTrackNamePassthru\": true,\n" " \"AudioTrackSelectionBehavior\": \"first\",\n" " \"ChapterMarkers\": true,\n" " \"ChildrenArray\": [],\n" @@ -7888,6 +8097,7 @@ const char hb_builtin_presets_json[] = " \"SubtitleBurnBehavior\": \"foreign\",\n" " \"SubtitleBurnDVDSub\": true,\n" " \"SubtitleLanguageList\": [],\n" +" \"SubtitleTrackNamePassthru\": true,\n" " \"SubtitleTrackSelectionBehavior\": \"none\",\n" " \"Type\": 0,\n" " \"UsesPictureFilters\": true,\n" @@ -7915,6 +8125,7 @@ const char hb_builtin_presets_json[] = " },\n" " {\n" " \"AlignAVStart\": false,\n" +" \"AudioAutomaticNamingBehavior\": \"unnamed\",\n" " \"AudioCopyMask\": [\n" " \"copy:aac\"\n" " ],\n" @@ -7936,6 +8147,7 @@ const char hb_builtin_presets_json[] = " }\n" " ],\n" " \"AudioSecondaryEncoderMode\": true,\n" +" \"AudioTrackNamePassthru\": true,\n" " \"AudioTrackSelectionBehavior\": \"first\",\n" " \"ChapterMarkers\": true,\n" " \"ChildrenArray\": [],\n" @@ -7995,6 +8207,7 @@ const char hb_builtin_presets_json[] = " \"SubtitleBurnBehavior\": \"foreign\",\n" " \"SubtitleBurnDVDSub\": true,\n" " \"SubtitleLanguageList\": [],\n" +" \"SubtitleTrackNamePassthru\": true,\n" " \"SubtitleTrackSelectionBehavior\": \"none\",\n" " \"Type\": 0,\n" " \"UsesPictureFilters\": true,\n" @@ -8022,6 +8235,7 @@ const char hb_builtin_presets_json[] = " },\n" " {\n" " \"AlignAVStart\": false,\n" +" \"AudioAutomaticNamingBehavior\": \"unnamed\",\n" " \"AudioCopyMask\": [],\n" " \"AudioEncoderFallback\": \"opus\",\n" " \"AudioLanguageList\": [],\n" @@ -8041,6 +8255,7 @@ const char hb_builtin_presets_json[] = " }\n" " ],\n" " \"AudioSecondaryEncoderMode\": true,\n" +" \"AudioTrackNamePassthru\": true,\n" " \"AudioTrackSelectionBehavior\": \"first\",\n" " \"ChapterMarkers\": true,\n" " \"ChildrenArray\": [],\n" @@ -8100,6 +8315,7 @@ const char hb_builtin_presets_json[] = " \"SubtitleBurnBehavior\": \"foreign\",\n" " \"SubtitleBurnDVDSub\": true,\n" " \"SubtitleLanguageList\": [],\n" +" \"SubtitleTrackNamePassthru\": true,\n" " \"SubtitleTrackSelectionBehavior\": \"none\",\n" " \"Type\": 0,\n" " \"UsesPictureFilters\": true,\n" @@ -8127,6 +8343,7 @@ const char hb_builtin_presets_json[] = " },\n" " {\n" " \"AlignAVStart\": false,\n" +" \"AudioAutomaticNamingBehavior\": \"unnamed\",\n" " \"AudioCopyMask\": [],\n" " \"AudioEncoderFallback\": \"opus\",\n" " \"AudioLanguageList\": [],\n" @@ -8146,6 +8363,7 @@ const char hb_builtin_presets_json[] = " }\n" " ],\n" " \"AudioSecondaryEncoderMode\": true,\n" +" \"AudioTrackNamePassthru\": true,\n" " \"AudioTrackSelectionBehavior\": \"first\",\n" " \"ChapterMarkers\": true,\n" " \"ChildrenArray\": [],\n" @@ -8205,6 +8423,7 @@ const char hb_builtin_presets_json[] = " \"SubtitleBurnBehavior\": \"foreign\",\n" " \"SubtitleBurnDVDSub\": true,\n" " \"SubtitleLanguageList\": [],\n" +" \"SubtitleTrackNamePassthru\": true,\n" " \"SubtitleTrackSelectionBehavior\": \"none\",\n" " \"Type\": 0,\n" " \"UsesPictureFilters\": true,\n" @@ -8232,6 +8451,7 @@ const char hb_builtin_presets_json[] = " },\n" " {\n" " \"AlignAVStart\": false,\n" +" \"AudioAutomaticNamingBehavior\": \"unnamed\",\n" " \"AudioCopyMask\": [],\n" " \"AudioEncoderFallback\": \"opus\",\n" " \"AudioLanguageList\": [],\n" @@ -8251,6 +8471,7 @@ const char hb_builtin_presets_json[] = " }\n" " ],\n" " \"AudioSecondaryEncoderMode\": true,\n" +" \"AudioTrackNamePassthru\": true,\n" " \"AudioTrackSelectionBehavior\": \"first\",\n" " \"ChapterMarkers\": true,\n" " \"ChildrenArray\": [],\n" @@ -8310,6 +8531,7 @@ const char hb_builtin_presets_json[] = " \"SubtitleBurnBehavior\": \"foreign\",\n" " \"SubtitleBurnDVDSub\": true,\n" " \"SubtitleLanguageList\": [],\n" +" \"SubtitleTrackNamePassthru\": true,\n" " \"SubtitleTrackSelectionBehavior\": \"none\",\n" " \"Type\": 0,\n" " \"UsesPictureFilters\": true,\n" @@ -8337,6 +8559,7 @@ const char hb_builtin_presets_json[] = " },\n" " {\n" " \"AlignAVStart\": false,\n" +" \"AudioAutomaticNamingBehavior\": \"unnamed\",\n" " \"AudioCopyMask\": [],\n" " \"AudioEncoderFallback\": \"opus\",\n" " \"AudioLanguageList\": [],\n" @@ -8356,6 +8579,7 @@ const char hb_builtin_presets_json[] = " }\n" " ],\n" " \"AudioSecondaryEncoderMode\": true,\n" +" \"AudioTrackNamePassthru\": true,\n" " \"AudioTrackSelectionBehavior\": \"first\",\n" " \"ChapterMarkers\": true,\n" " \"ChildrenArray\": [],\n" @@ -8415,6 +8639,7 @@ const char hb_builtin_presets_json[] = " \"SubtitleBurnBehavior\": \"foreign\",\n" " \"SubtitleBurnDVDSub\": true,\n" " \"SubtitleLanguageList\": [],\n" +" \"SubtitleTrackNamePassthru\": true,\n" " \"SubtitleTrackSelectionBehavior\": \"none\",\n" " \"Type\": 0,\n" " \"UsesPictureFilters\": true,\n" @@ -8442,6 +8667,7 @@ const char hb_builtin_presets_json[] = " },\n" " {\n" " \"AlignAVStart\": false,\n" +" \"AudioAutomaticNamingBehavior\": \"unnamed\",\n" " \"AudioCopyMask\": [],\n" " \"AudioEncoderFallback\": \"opus\",\n" " \"AudioLanguageList\": [],\n" @@ -8461,6 +8687,7 @@ const char hb_builtin_presets_json[] = " }\n" " ],\n" " \"AudioSecondaryEncoderMode\": true,\n" +" \"AudioTrackNamePassthru\": true,\n" " \"AudioTrackSelectionBehavior\": \"first\",\n" " \"ChapterMarkers\": true,\n" " \"ChildrenArray\": [],\n" @@ -8520,6 +8747,7 @@ const char hb_builtin_presets_json[] = " \"SubtitleBurnBehavior\": \"foreign\",\n" " \"SubtitleBurnDVDSub\": true,\n" " \"SubtitleLanguageList\": [],\n" +" \"SubtitleTrackNamePassthru\": true,\n" " \"SubtitleTrackSelectionBehavior\": \"none\",\n" " \"Type\": 0,\n" " \"UsesPictureFilters\": true,\n" @@ -8554,6 +8782,7 @@ const char hb_builtin_presets_json[] = " \"ChildrenArray\": [\n" " {\n" " \"AlignAVStart\": false,\n" +" \"AudioAutomaticNamingBehavior\": \"unnamed\",\n" " \"AudioCopyMask\": [\n" " \"copy:aac\"\n" " ],\n" @@ -8575,6 +8804,7 @@ const char hb_builtin_presets_json[] = " }\n" " ],\n" " \"AudioSecondaryEncoderMode\": true,\n" +" \"AudioTrackNamePassthru\": true,\n" " \"AudioTrackSelectionBehavior\": \"first\",\n" " \"ChapterMarkers\": true,\n" " \"ChildrenArray\": [],\n" @@ -8634,6 +8864,7 @@ const char hb_builtin_presets_json[] = " \"SubtitleBurnBehavior\": \"none\",\n" " \"SubtitleBurnDVDSub\": false,\n" " \"SubtitleLanguageList\": [],\n" +" \"SubtitleTrackNamePassthru\": true,\n" " \"SubtitleTrackSelectionBehavior\": \"none\",\n" " \"Type\": 0,\n" " \"UsesPictureFilters\": true,\n" @@ -8661,6 +8892,7 @@ const char hb_builtin_presets_json[] = " },\n" " {\n" " \"AlignAVStart\": false,\n" +" \"AudioAutomaticNamingBehavior\": \"unnamed\",\n" " \"AudioCopyMask\": [\n" " \"copy:aac\"\n" " ],\n" @@ -8682,6 +8914,7 @@ const char hb_builtin_presets_json[] = " }\n" " ],\n" " \"AudioSecondaryEncoderMode\": true,\n" +" \"AudioTrackNamePassthru\": true,\n" " \"AudioTrackSelectionBehavior\": \"first\",\n" " \"ChapterMarkers\": true,\n" " \"ChildrenArray\": [],\n" @@ -8741,6 +8974,7 @@ const char hb_builtin_presets_json[] = " \"SubtitleBurnBehavior\": \"none\",\n" " \"SubtitleBurnDVDSub\": false,\n" " \"SubtitleLanguageList\": [],\n" +" \"SubtitleTrackNamePassthru\": true,\n" " \"SubtitleTrackSelectionBehavior\": \"none\",\n" " \"Type\": 0,\n" " \"UsesPictureFilters\": true,\n" @@ -8768,6 +9002,7 @@ const char hb_builtin_presets_json[] = " },\n" " {\n" " \"AlignAVStart\": false,\n" +" \"AudioAutomaticNamingBehavior\": \"unnamed\",\n" " \"AudioCopyMask\": [\n" " \"copy:aac\"\n" " ],\n" @@ -8789,6 +9024,7 @@ const char hb_builtin_presets_json[] = " }\n" " ],\n" " \"AudioSecondaryEncoderMode\": true,\n" +" \"AudioTrackNamePassthru\": true,\n" " \"AudioTrackSelectionBehavior\": \"first\",\n" " \"ChapterMarkers\": true,\n" " \"ChildrenArray\": [],\n" @@ -8848,6 +9084,7 @@ const char hb_builtin_presets_json[] = " \"SubtitleBurnBehavior\": \"none\",\n" " \"SubtitleBurnDVDSub\": false,\n" " \"SubtitleLanguageList\": [],\n" +" \"SubtitleTrackNamePassthru\": true,\n" " \"SubtitleTrackSelectionBehavior\": \"none\",\n" " \"Type\": 0,\n" " \"UsesPictureFilters\": true,\n" @@ -8875,6 +9112,7 @@ const char hb_builtin_presets_json[] = " },\n" " {\n" " \"AlignAVStart\": false,\n" +" \"AudioAutomaticNamingBehavior\": \"unnamed\",\n" " \"AudioCopyMask\": [\n" " \"copy:aac\"\n" " ],\n" @@ -8896,6 +9134,7 @@ const char hb_builtin_presets_json[] = " }\n" " ],\n" " \"AudioSecondaryEncoderMode\": true,\n" +" \"AudioTrackNamePassthru\": true,\n" " \"AudioTrackSelectionBehavior\": \"first\",\n" " \"ChapterMarkers\": true,\n" " \"ChildrenArray\": [],\n" @@ -8955,6 +9194,7 @@ const char hb_builtin_presets_json[] = " \"SubtitleBurnBehavior\": \"none\",\n" " \"SubtitleBurnDVDSub\": false,\n" " \"SubtitleLanguageList\": [],\n" +" \"SubtitleTrackNamePassthru\": true,\n" " \"SubtitleTrackSelectionBehavior\": \"none\",\n" " \"Type\": 0,\n" " \"UsesPictureFilters\": true,\n" @@ -8982,6 +9222,7 @@ const char hb_builtin_presets_json[] = " },\n" " {\n" " \"AlignAVStart\": false,\n" +" \"AudioAutomaticNamingBehavior\": \"unnamed\",\n" " \"AudioCopyMask\": [\n" " \"copy:aac\"\n" " ],\n" @@ -9003,6 +9244,7 @@ const char hb_builtin_presets_json[] = " }\n" " ],\n" " \"AudioSecondaryEncoderMode\": true,\n" +" \"AudioTrackNamePassthru\": true,\n" " \"AudioTrackSelectionBehavior\": \"first\",\n" " \"ChapterMarkers\": true,\n" " \"ChildrenArray\": [],\n" @@ -9062,6 +9304,7 @@ const char hb_builtin_presets_json[] = " \"SubtitleBurnBehavior\": \"none\",\n" " \"SubtitleBurnDVDSub\": false,\n" " \"SubtitleLanguageList\": [],\n" +" \"SubtitleTrackNamePassthru\": true,\n" " \"SubtitleTrackSelectionBehavior\": \"none\",\n" " \"Type\": 0,\n" " \"UsesPictureFilters\": true,\n" @@ -9089,6 +9332,7 @@ const char hb_builtin_presets_json[] = " },\n" " {\n" " \"AlignAVStart\": false,\n" +" \"AudioAutomaticNamingBehavior\": \"unnamed\",\n" " \"AudioCopyMask\": [\n" " \"copy:aac\"\n" " ],\n" @@ -9110,6 +9354,7 @@ const char hb_builtin_presets_json[] = " }\n" " ],\n" " \"AudioSecondaryEncoderMode\": true,\n" +" \"AudioTrackNamePassthru\": true,\n" " \"AudioTrackSelectionBehavior\": \"first\",\n" " \"ChapterMarkers\": true,\n" " \"ChildrenArray\": [],\n" @@ -9169,6 +9414,7 @@ const char hb_builtin_presets_json[] = " \"SubtitleBurnBehavior\": \"none\",\n" " \"SubtitleBurnDVDSub\": false,\n" " \"SubtitleLanguageList\": [],\n" +" \"SubtitleTrackNamePassthru\": true,\n" " \"SubtitleTrackSelectionBehavior\": \"none\",\n" " \"Type\": 0,\n" " \"UsesPictureFilters\": true,\n" @@ -9196,6 +9442,7 @@ const char hb_builtin_presets_json[] = " },\n" " {\n" " \"AlignAVStart\": false,\n" +" \"AudioAutomaticNamingBehavior\": \"unnamed\",\n" " \"AudioCopyMask\": [\n" " \"copy:aac\"\n" " ],\n" @@ -9217,6 +9464,7 @@ const char hb_builtin_presets_json[] = " }\n" " ],\n" " \"AudioSecondaryEncoderMode\": true,\n" +" \"AudioTrackNamePassthru\": true,\n" " \"AudioTrackSelectionBehavior\": \"first\",\n" " \"ChapterMarkers\": true,\n" " \"ChildrenArray\": [],\n" @@ -9276,6 +9524,7 @@ const char hb_builtin_presets_json[] = " \"SubtitleBurnBehavior\": \"none\",\n" " \"SubtitleBurnDVDSub\": false,\n" " \"SubtitleLanguageList\": [],\n" +" \"SubtitleTrackNamePassthru\": true,\n" " \"SubtitleTrackSelectionBehavior\": \"none\",\n" " \"Type\": 0,\n" " \"UsesPictureFilters\": true,\n" @@ -9303,6 +9552,7 @@ const char hb_builtin_presets_json[] = " },\n" " {\n" " \"AlignAVStart\": false,\n" +" \"AudioAutomaticNamingBehavior\": \"unnamed\",\n" " \"AudioCopyMask\": [\n" " \"copy:aac\"\n" " ],\n" @@ -9324,6 +9574,7 @@ const char hb_builtin_presets_json[] = " }\n" " ],\n" " \"AudioSecondaryEncoderMode\": true,\n" +" \"AudioTrackNamePassthru\": true,\n" " \"AudioTrackSelectionBehavior\": \"first\",\n" " \"ChapterMarkers\": true,\n" " \"ChildrenArray\": [],\n" @@ -9383,6 +9634,7 @@ const char hb_builtin_presets_json[] = " \"SubtitleBurnBehavior\": \"none\",\n" " \"SubtitleBurnDVDSub\": false,\n" " \"SubtitleLanguageList\": [],\n" +" \"SubtitleTrackNamePassthru\": true,\n" " \"SubtitleTrackSelectionBehavior\": \"none\",\n" " \"Type\": 0,\n" " \"UsesPictureFilters\": true,\n" @@ -9410,6 +9662,7 @@ const char hb_builtin_presets_json[] = " },\n" " {\n" " \"AlignAVStart\": false,\n" +" \"AudioAutomaticNamingBehavior\": \"unnamed\",\n" " \"AudioCopyMask\": [\n" " \"copy:aac\"\n" " ],\n" @@ -9431,6 +9684,7 @@ const char hb_builtin_presets_json[] = " }\n" " ],\n" " \"AudioSecondaryEncoderMode\": true,\n" +" \"AudioTrackNamePassthru\": true,\n" " \"AudioTrackSelectionBehavior\": \"first\",\n" " \"ChapterMarkers\": true,\n" " \"ChildrenArray\": [],\n" @@ -9490,6 +9744,7 @@ const char hb_builtin_presets_json[] = " \"SubtitleBurnBehavior\": \"none\",\n" " \"SubtitleBurnDVDSub\": false,\n" " \"SubtitleLanguageList\": [],\n" +" \"SubtitleTrackNamePassthru\": true,\n" " \"SubtitleTrackSelectionBehavior\": \"none\",\n" " \"Type\": 0,\n" " \"UsesPictureFilters\": true,\n" @@ -9517,6 +9772,7 @@ const char hb_builtin_presets_json[] = " },\n" " {\n" " \"AlignAVStart\": false,\n" +" \"AudioAutomaticNamingBehavior\": \"unnamed\",\n" " \"AudioCopyMask\": [\n" " \"copy:aac\"\n" " ],\n" @@ -9538,6 +9794,7 @@ const char hb_builtin_presets_json[] = " }\n" " ],\n" " \"AudioSecondaryEncoderMode\": true,\n" +" \"AudioTrackNamePassthru\": true,\n" " \"AudioTrackSelectionBehavior\": \"first\",\n" " \"ChapterMarkers\": true,\n" " \"ChildrenArray\": [],\n" @@ -9597,6 +9854,7 @@ const char hb_builtin_presets_json[] = " \"SubtitleBurnBehavior\": \"none\",\n" " \"SubtitleBurnDVDSub\": false,\n" " \"SubtitleLanguageList\": [],\n" +" \"SubtitleTrackNamePassthru\": true,\n" " \"SubtitleTrackSelectionBehavior\": \"none\",\n" " \"Type\": 0,\n" " \"UsesPictureFilters\": true,\n" @@ -9624,6 +9882,7 @@ const char hb_builtin_presets_json[] = " },\n" " {\n" " \"AlignAVStart\": false,\n" +" \"AudioAutomaticNamingBehavior\": \"unnamed\",\n" " \"AudioCopyMask\": [\n" " \"copy:aac\"\n" " ],\n" @@ -9645,6 +9904,7 @@ const char hb_builtin_presets_json[] = " }\n" " ],\n" " \"AudioSecondaryEncoderMode\": true,\n" +" \"AudioTrackNamePassthru\": true,\n" " \"AudioTrackSelectionBehavior\": \"first\",\n" " \"ChapterMarkers\": true,\n" " \"ChildrenArray\": [],\n" @@ -9704,6 +9964,7 @@ const char hb_builtin_presets_json[] = " \"SubtitleBurnBehavior\": \"none\",\n" " \"SubtitleBurnDVDSub\": false,\n" " \"SubtitleLanguageList\": [],\n" +" \"SubtitleTrackNamePassthru\": true,\n" " \"SubtitleTrackSelectionBehavior\": \"none\",\n" " \"Type\": 0,\n" " \"UsesPictureFilters\": true,\n" @@ -9738,6 +9999,7 @@ const char hb_builtin_presets_json[] = " \"ChildrenArray\": [\n" " {\n" " \"AlignAVStart\": false,\n" +" \"AudioAutomaticNamingBehavior\": \"unnamed\",\n" " \"AudioCopyMask\": [\n" " \"copy:aac\"\n" " ],\n" @@ -9759,6 +10021,7 @@ const char hb_builtin_presets_json[] = " }\n" " ],\n" " \"AudioSecondaryEncoderMode\": false,\n" +" \"AudioTrackNamePassthru\": true,\n" " \"AudioTrackSelectionBehavior\": \"all\",\n" " \"ChapterMarkers\": true,\n" " \"ChildrenArray\": [],\n" @@ -9818,6 +10081,7 @@ const char hb_builtin_presets_json[] = " \"SubtitleBurnBehavior\": \"foreign\",\n" " \"SubtitleBurnDVDSub\": true,\n" " \"SubtitleLanguageList\": [],\n" +" \"SubtitleTrackNamePassthru\": true,\n" " \"SubtitleTrackSelectionBehavior\": \"none\",\n" " \"Type\": 0,\n" " \"UsesPictureFilters\": true,\n" @@ -9845,6 +10109,7 @@ const char hb_builtin_presets_json[] = " },\n" " {\n" " \"AlignAVStart\": false,\n" +" \"AudioAutomaticNamingBehavior\": \"unnamed\",\n" " \"AudioCopyMask\": [\n" " \"copy:aac\"\n" " ],\n" @@ -9866,6 +10131,7 @@ const char hb_builtin_presets_json[] = " }\n" " ],\n" " \"AudioSecondaryEncoderMode\": false,\n" +" \"AudioTrackNamePassthru\": true,\n" " \"AudioTrackSelectionBehavior\": \"all\",\n" " \"ChapterMarkers\": true,\n" " \"ChildrenArray\": [],\n" @@ -9925,6 +10191,7 @@ const char hb_builtin_presets_json[] = " \"SubtitleBurnBehavior\": \"foreign\",\n" " \"SubtitleBurnDVDSub\": true,\n" " \"SubtitleLanguageList\": [],\n" +" \"SubtitleTrackNamePassthru\": true,\n" " \"SubtitleTrackSelectionBehavior\": \"none\",\n" " \"Type\": 0,\n" " \"UsesPictureFilters\": true,\n" @@ -9952,6 +10219,7 @@ const char hb_builtin_presets_json[] = " },\n" " {\n" " \"AlignAVStart\": false,\n" +" \"AudioAutomaticNamingBehavior\": \"unnamed\",\n" " \"AudioCopyMask\": [\n" " \"copy:aac\"\n" " ],\n" @@ -9973,6 +10241,7 @@ const char hb_builtin_presets_json[] = " }\n" " ],\n" " \"AudioSecondaryEncoderMode\": false,\n" +" \"AudioTrackNamePassthru\": true,\n" " \"AudioTrackSelectionBehavior\": \"all\",\n" " \"ChapterMarkers\": true,\n" " \"ChildrenArray\": [],\n" @@ -10032,6 +10301,7 @@ const char hb_builtin_presets_json[] = " \"SubtitleBurnBehavior\": \"foreign\",\n" " \"SubtitleBurnDVDSub\": true,\n" " \"SubtitleLanguageList\": [],\n" +" \"SubtitleTrackNamePassthru\": true,\n" " \"SubtitleTrackSelectionBehavior\": \"none\",\n" " \"Type\": 0,\n" " \"UsesPictureFilters\": true,\n" @@ -10059,6 +10329,7 @@ const char hb_builtin_presets_json[] = " },\n" " {\n" " \"AlignAVStart\": false,\n" +" \"AudioAutomaticNamingBehavior\": \"unnamed\",\n" " \"AudioCopyMask\": [\n" " \"copy:aac\"\n" " ],\n" @@ -10080,6 +10351,7 @@ const char hb_builtin_presets_json[] = " }\n" " ],\n" " \"AudioSecondaryEncoderMode\": false,\n" +" \"AudioTrackNamePassthru\": true,\n" " \"AudioTrackSelectionBehavior\": \"all\",\n" " \"ChapterMarkers\": true,\n" " \"ChildrenArray\": [],\n" @@ -10139,6 +10411,7 @@ const char hb_builtin_presets_json[] = " \"SubtitleBurnBehavior\": \"foreign\",\n" " \"SubtitleBurnDVDSub\": true,\n" " \"SubtitleLanguageList\": [],\n" +" \"SubtitleTrackNamePassthru\": true,\n" " \"SubtitleTrackSelectionBehavior\": \"none\",\n" " \"Type\": 0,\n" " \"UsesPictureFilters\": true,\n" @@ -10166,6 +10439,7 @@ const char hb_builtin_presets_json[] = " },\n" " {\n" " \"AlignAVStart\": false,\n" +" \"AudioAutomaticNamingBehavior\": \"unnamed\",\n" " \"AudioCopyMask\": [\n" " \"copy:aac\",\n" " \"copy:ac3\",\n" @@ -10198,6 +10472,7 @@ const char hb_builtin_presets_json[] = " }\n" " ],\n" " \"AudioSecondaryEncoderMode\": false,\n" +" \"AudioTrackNamePassthru\": true,\n" " \"AudioTrackSelectionBehavior\": \"all\",\n" " \"ChapterMarkers\": true,\n" " \"ChildrenArray\": [],\n" @@ -10259,6 +10534,7 @@ const char hb_builtin_presets_json[] = " \"SubtitleLanguageList\": [\n" " \"any\"\n" " ],\n" +" \"SubtitleTrackNamePassthru\": true,\n" " \"SubtitleTrackSelectionBehavior\": \"all\",\n" " \"Type\": 0,\n" " \"UsesPictureFilters\": true,\n" @@ -10294,6 +10570,7 @@ const char hb_builtin_presets_json[] = " {\n" " \"ChildrenArray\": [\n" " {\n" +" \"AudioAutomaticNamingBehavior\": \"unnamed\",\n" " \"AudioCopyMask\": [\n" " \"copy:aac\",\n" " \"copy:ac3\",\n" @@ -10322,6 +10599,7 @@ const char hb_builtin_presets_json[] = " }\n" " ],\n" " \"AudioSecondaryEncoderMode\": true,\n" +" \"AudioTrackNamePassthru\": true,\n" " \"AudioTrackSelectionBehavior\": \"first\",\n" " \"ChapterMarkers\": true,\n" " \"ChildrenArray\": [],\n" @@ -10380,6 +10658,7 @@ const char hb_builtin_presets_json[] = " \"SubtitleBurnBehavior\": \"none\",\n" " \"SubtitleBurnDVDSub\": false,\n" " \"SubtitleLanguageList\": [],\n" +" \"SubtitleTrackNamePassthru\": true,\n" " \"SubtitleTrackSelectionBehavior\": \"none\",\n" " \"Type\": 0,\n" " \"UsesPictureFilters\": true,\n" @@ -10415,6 +10694,7 @@ const char hb_builtin_presets_json[] = " \"PresetTemplate\": {\n" " \"Preset\": {\n" " \"AlignAVStart\": false,\n" +" \"AudioAutomaticNamingBehavior\": \"unnamed\",\n" " \"AudioCopyMask\": [\n" " \"copy:aac\",\n" " \"copy:ac3\",\n" @@ -10445,6 +10725,7 @@ const char hb_builtin_presets_json[] = " }\n" " ],\n" " \"AudioSecondaryEncoderMode\": true,\n" +" \"AudioTrackNamePassthru\": true,\n" " \"AudioTrackSelectionBehavior\": \"first\",\n" " \"ChapterMarkers\": true,\n" " \"ChildrenArray\": [],\n" @@ -10515,6 +10796,7 @@ const char hb_builtin_presets_json[] = " \"SubtitleBurnBehavior\": \"none\",\n" " \"SubtitleBurnDVDSub\": false,\n" " \"SubtitleLanguageList\": [],\n" +" \"SubtitleTrackNamePassthru\": true,\n" " \"SubtitleTrackSelectionBehavior\": \"none\",\n" " \"Type\": 1,\n" " \"UsesPictureFilters\": true,\n" @@ -10540,7 +10822,7 @@ const char hb_builtin_presets_json[] = " \"x264Option\": \"\",\n" " \"x264UseAdvancedOptions\": false\n" " },\n" -" \"VersionMajor\": 64,\n" +" \"VersionMajor\": 65,\n" " \"VersionMicro\": 0,\n" " \"VersionMinor\": 0\n" " }\n" diff --git a/libhb/muxavformat.c b/libhb/muxavformat.c index b7b430683..552419eb9 100644 --- a/libhb/muxavformat.c +++ b/libhb/muxavformat.c @@ -733,35 +733,17 @@ static int avformatInit( hb_mux_object_t * m ) track->st->codecpar->ch_layout = ch_layout; } - const char *name; - if (audio->config.out.name == NULL) - { - switch (track->st->codecpar->ch_layout.nb_channels) - { - case 1: - name = "Mono"; - break; - - case 2: - name = "Stereo"; - break; - - default: - name = "Surround"; - break; - } - } - else - { - name = audio->config.out.name; - } // Set audio track title - av_dict_set(&track->st->metadata, "title", name, 0); - if (job->mux == HB_MUX_AV_MP4) + const char *name = audio->config.out.name; + if (name != NULL && name[0] != 0) { - // Some software (MPC, mediainfo) use hdlr description - // for track title - av_dict_set(&track->st->metadata, "handler_name", name, 0); + av_dict_set(&track->st->metadata, "title", name, 0); + if (job->mux == HB_MUX_AV_MP4) + { + // Some software (MPC, mediainfo) use hdlr description + // for track title + av_dict_set(&track->st->metadata, "handler_name", name, 0); + } } } diff --git a/libhb/preset.c b/libhb/preset.c index f92f19736..523430608 100644 --- a/libhb/preset.c +++ b/libhb/preset.c @@ -853,15 +853,6 @@ static void add_audio_for_lang(hb_value_array_t *list, const hb_dict_t *preset, hb_dict_set(audio_dict, "Track", hb_value_int(aconfig->index)); hb_dict_set(audio_dict, "Encoder", hb_value_string( hb_audio_encoder_get_short_name(out_codec))); - const char * name = hb_dict_get_string(encoder_dict, "AudioTrackName"); - if (name != NULL && name[0] != 0) - { - hb_dict_set_string(audio_dict, "Name", name); - } - else if (aconfig->in.name != NULL && aconfig->in.name[0] != 0) - { - hb_dict_set_string(audio_dict, "Name", aconfig->in.name); - } if (!(out_codec & HB_ACODEC_PASS_FLAG)) { if (hb_dict_get(encoder_dict, "AudioTrackGainSlider") != NULL) @@ -924,7 +915,34 @@ static void add_audio_for_lang(hb_value_array_t *list, const hb_dict_t *preset, } // Sanitize the settings before adding to the audio list - hb_sanitize_audio_settings(title, audio_dict); + hb_sanitize_audio_settings(title, audio_dict); + + const char *name = hb_dict_get_string(encoder_dict, "AudioTrackName"); + if (name != NULL && name[0] != 0) + { + hb_dict_set_string(audio_dict, "Name", name); + } + else + { + int mixdown = HB_INVALID_AMIXDOWN; + int keep_name = hb_value_get_bool(hb_dict_get(preset, "AudioTrackNamePassthru")); + hb_audio_autonaming_behavior_t behavior = HB_AUDIO_AUTONAMING_NONE; + + const char *mixdown_name = hb_dict_get_string(audio_dict, "Mixdown"); + mixdown = hb_mixdown_get_from_name(mixdown_name); + + const char *behavior_name = hb_dict_get_string(preset, "AudioAutomaticNamingBehavior"); + behavior = hb_audio_autonaming_behavior_get_from_name(behavior_name); + + name = hb_audio_name_generate(aconfig->in.name, + aconfig->in.channel_layout, + mixdown, keep_name, behavior); + + if (name != NULL && name[0] != 0) + { + hb_dict_set_string(audio_dict, "Name", name); + } + } hb_value_array_append(list, audio_dict); hb_dict_set(used, key, hb_value_bool(1)); @@ -1109,7 +1127,7 @@ static int has_default_subtitle(hb_value_array_t *list) } static void add_subtitle_for_lang(hb_value_array_t *list, hb_title_t *title, - int mux, const char *lang, + int mux, const char *lang, int passthru_name, subtitle_behavior_t *behavior) { int t; @@ -1140,7 +1158,8 @@ static void add_subtitle_for_lang(hb_value_array_t *list, hb_title_t *title, if (!behavior->one_burned || hb_subtitle_can_pass(subtitle->source, mux)) { - add_subtitle(list, t, make_default, 0 /*!force*/, burn, subtitle->name); + add_subtitle(list, t, make_default, 0 /*!force*/, burn, + passthru_name ? subtitle->name : NULL); } behavior->burn_first &= !burn; @@ -1273,6 +1292,8 @@ int hb_preset_job_add_subtitles(hb_handle_t *h, int title_index, const iso639_lang_t * lang_any = lang_get_any(); const char * pref_lang = lang_any->iso639_2; + int passthru_name = hb_value_get_bool(hb_dict_get(preset, "SubtitleTrackNamePassthru")); + count = hb_value_array_len(lang_list); if (count > 0) { @@ -1303,7 +1324,7 @@ int hb_preset_job_add_subtitles(hb_handle_t *h, int title_index, behavior.one = 1; behavior.burn_foreign = burn_foreign; behavior.make_default = 1; - add_subtitle_for_lang(list, title, mux, pref_lang, &behavior); + add_subtitle_for_lang(list, title, mux, pref_lang, passthru_name, &behavior); } hb_dict_t *search_dict = hb_dict_get(subtitle_dict, "Search"); @@ -1339,12 +1360,12 @@ int hb_preset_job_add_subtitles(hb_handle_t *h, int title_index, { const char *lang; lang = hb_value_get_string(hb_value_array_get(lang_list, ii)); - add_subtitle_for_lang(list, title, mux, lang, &behavior); + add_subtitle_for_lang(list, title, mux, lang, passthru_name, &behavior); } if (count <= 0) { // No languages in language list, assume "any" - add_subtitle_for_lang(list, title, mux, "any", &behavior); + add_subtitle_for_lang(list, title, mux, "any", passthru_name, &behavior); } } @@ -2974,6 +2995,13 @@ static void und_to_any(hb_value_array_t * list) } } +static void import_track_names_preset_settings_64_0_0(hb_value_t *preset) +{ + hb_dict_set_string(preset, "AudioAutomaticNamingBehavior", "unnamed"); + hb_dict_set_bool(preset, "AudioTrackNamePassthru", 1); + hb_dict_set_bool(preset, "SubtitleTrackNamePassthru", 1); +} + static void import_av1_preset_settings_63_0_0(hb_value_t *preset) { const char *enc = hb_dict_get_string(preset, "VideoEncoder"); @@ -3766,10 +3794,16 @@ static void import_video_0_0_0(hb_value_t *preset) } } +static void import_64_0_0(hb_value_t *preset) +{ + import_track_names_preset_settings_64_0_0(preset); +} static void import_63_0_0(hb_value_t *preset) { import_av1_preset_settings_63_0_0(preset); + + import_64_0_0(preset); } static void import_61_0_0(hb_value_t *preset) @@ -4021,6 +4055,11 @@ static int preset_import(hb_value_t *preset, int major, int minor, int micro) import_63_0_0(preset); result = 1; } + else if (cmpVersion(major, minor, micro, 64, 0, 0) <= 0) + { + import_64_0_0(preset); + result = 1; + } preset_clean(preset, hb_preset_template); } diff --git a/macosx/Base.lproj/AudioDefaults.xib b/macosx/Base.lproj/AudioDefaults.xib index 0c682b6b8..776ec48f0 100644 --- a/macosx/Base.lproj/AudioDefaults.xib +++ b/macosx/Base.lproj/AudioDefaults.xib @@ -1,8 +1,8 @@ - + - + @@ -19,14 +19,14 @@ - + - - + + - + @@ -332,7 +332,7 @@ DQ - + @@ -358,19 +358,19 @@ DQ - + - + - + - + @@ -383,11 +383,11 @@ DQ - + - + @@ -425,11 +425,11 @@ DQ - + - + Mixdown type. Controls how multi-channel audio is mixed into fewer channels, or whether the original channels are preserved. Dolby Surround and Dolby Pro Logic II convert multi-channel audio to stereo and matrix encode additional channels for surround reproduction on compatible equipment, while maintaining stereo compatibility. @@ -475,7 +475,7 @@ Dolby Surround and Dolby Pro Logic II convert multi-channel audio to stereo and - + @@ -519,11 +519,11 @@ Dolby Surround and Dolby Pro Logic II convert multi-channel audio to stereo and - + - + Audio bit rate in kilobits per second (kbps). Smaller values reduce audio quality. Larger values use more data and may be less compatible. @@ -563,7 +563,7 @@ Dolby Surround and Dolby Pro Logic II convert multi-channel audio to stereo and - + @@ -613,7 +613,7 @@ Dolby Surround and Dolby Pro Logic II convert multi-channel audio to stereo and - + @@ -675,7 +675,7 @@ Values greater than 1 further increase the volume of quiet sounds. Values greate - + @@ -699,7 +699,7 @@ Values greater than 1 further increase the volume of quiet sounds. Values greate - + - + @@ -772,10 +772,10 @@ All Matching Selected Languages adds all audio tracks matching each of the selec - + - + @@ -783,19 +783,19 @@ All Matching Selected Languages adds all audio tracks matching each of the selec - + - + - + - + @@ -807,7 +807,7 @@ All Matching Selected Languages adds all audio tracks matching each of the selec - + - + @@ -861,10 +861,10 @@ All Matching Selected Languages adds all audio tracks matching each of the selec - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -927,7 +982,7 @@ All Matching Selected Languages adds all audio tracks matching each of the selec - + diff --git a/macosx/Base.lproj/SubtitlesDefaults.xib b/macosx/Base.lproj/SubtitlesDefaults.xib index 23c90df7e..c03f05e68 100644 --- a/macosx/Base.lproj/SubtitlesDefaults.xib +++ b/macosx/Base.lproj/SubtitlesDefaults.xib @@ -1,8 +1,8 @@ - + - + @@ -17,14 +17,14 @@ - + - + - + @@ -32,7 +32,7 @@ - + @@ -40,7 +40,7 @@ - + @@ -48,7 +48,7 @@ - + Track Selection Behavior. None will not select any audio tracks by default. @@ -73,7 +73,7 @@ All Matching Selected Languages adds all audio tracks matching each of the selec - + - + - + @@ -181,7 +181,7 @@ All Matching Selected Languages adds all audio tracks matching each of the selec - + Burn-In Behavior. Select which subtitles to make permanent by overlaying them onto the video track. Only one subtitles track can be burned in. @@ -203,7 +203,7 @@ Only one subtitles track can be burned in. - + @@ -211,7 +211,7 @@ Only one subtitles track can be burned in. - + @@ -280,6 +280,24 @@ Gw + + + + + + + + + @@ -290,6 +308,8 @@ Gw + + @@ -302,21 +322,25 @@ Gw + + + - + + @@ -329,7 +353,7 @@ Gw - + diff --git a/macosx/HBAudio.m b/macosx/HBAudio.m index 7e7541fba..47f155c97 100644 --- a/macosx/HBAudio.m +++ b/macosx/HBAudio.m @@ -54,6 +54,18 @@ NSString *HBAudioEncoderChangedNotification = @"HBAudioEncoderChangedNotificatio #pragma mark - Data Source +- (nullable NSString *)defaultTitleForTrackAtIndex:(NSUInteger)idx mixdown:(int)mixdown +{ + HBTitleAudioTrack *track = [self sourceTrackAtIndex:idx]; + + const char *title = hb_audio_name_generate(track.title.UTF8String, + track.channelLayout, mixdown, + self.defaults.passthruName, + (hb_audio_autonaming_behavior_t)self.defaults.automaticNamingBehavior); + + return title ? @(title) : nil; +} + - (HBTitleAudioTrack *)sourceTrackAtIndex:(NSUInteger)idx { return self.sourceTracks[idx]; @@ -182,6 +194,7 @@ NSString *HBAudioEncoderChangedNotification = @"HBAudioEncoderChangedNotificatio { HBAudioTrack *track = [[HBAudioTrack alloc] initWithTrackIdx:trackIndex container:self.container dataSource:self delegate:self]; track.undo = self.undo; + return track; } @@ -223,6 +236,7 @@ NSString *HBAudioEncoderChangedNotification = @"HBAudioEncoderChangedNotificatio track.sampleRate = [trackDict[@"Samplerate"] intValue] == -1 ? 0 : [trackDict[@"Samplerate"] intValue]; track.bitRate = [trackDict[@"Bitrate"] intValue]; track.encoder = hb_audio_encoder_get_from_name([trackDict[@"Encoder"] UTF8String]); + track.title = [trackDict[@"Name"] stringValue]; [tracks addObject:track]; } diff --git a/macosx/HBAudioDefaults.h b/macosx/HBAudioDefaults.h index 7a87ebf5a..c98cdbb1c 100644 --- a/macosx/HBAudioDefaults.h +++ b/macosx/HBAudioDefaults.h @@ -17,6 +17,12 @@ typedef NS_ENUM(NSUInteger, HBAudioTrackSelectionBehavior) { HBAudioTrackSelectionBehaviorAll, }; +typedef NS_ENUM(NSUInteger, HBAudioTrackAutomaticNamingBehavior) { + HBAudioTrackAutomaticNamingBehaviorNone, + HBAudioTrackAutomaticNamingBehaviorUnnamed, + HBAudioTrackAutomaticNamingBehaviorAll, +}; + /** * HBAudioSettings * Stores the audio defaults (selection behavior) settings. @@ -50,6 +56,9 @@ typedef NS_ENUM(NSUInteger, HBAudioTrackSelectionBehavior) { @property(nonatomic, readonly) NSArray *audioEncoderFallbacks; +@property(nonatomic, readwrite) BOOL passthruName; +@property(nonatomic, readwrite) HBAudioTrackAutomaticNamingBehavior automaticNamingBehavior; + - (void)validateEncoderFallbackForVideoContainer:(int)container; @property (nonatomic, readwrite, weak, nullable) NSUndoManager *undo; diff --git a/macosx/HBAudioDefaults.m b/macosx/HBAudioDefaults.m index fe67e7f6b..d38d9fb57 100644 --- a/macosx/HBAudioDefaults.m +++ b/macosx/HBAudioDefaults.m @@ -23,12 +23,15 @@ - (instancetype)init { self = [super init]; - if (self) { + if (self) + { _encoderFallback = HB_ACODEC_AC3; _trackSelectionLanguages = [[NSMutableArray alloc] init]; _tracksArray = [[NSMutableArray alloc] init]; _trackSelectionBehavior = HBAudioTrackSelectionBehaviorFirst; _container = HB_MUX_MKV; + _passthruName = NO; + _automaticNamingBehavior = HBAudioTrackAutomaticNamingBehaviorNone; } return self; } @@ -208,6 +211,24 @@ return fallbacks; } +- (void)setPassthruName:(BOOL)passthruName +{ + if (passthruName != _passthruName) + { + [[self.undo prepareWithInvocationTarget:self] setPassthruName:_passthruName]; + } + _passthruName = passthruName; +} + +- (void)setautomaticNamingBehavior:(HBAudioTrackAutomaticNamingBehavior)automaticNamingBehavior +{ + if (automaticNamingBehavior != _automaticNamingBehavior) + { + [[self.undo prepareWithInvocationTarget:self] setautomaticNamingBehavior:_automaticNamingBehavior]; + } + _automaticNamingBehavior = automaticNamingBehavior; +} + #pragma mark - HBPresetCoding - (BOOL)applyPreset:(HBPreset *)preset error:(NSError * __autoreleasing *)outError @@ -303,6 +324,25 @@ self.encoderFallback = hb_audio_encoder_get_from_name([preset[@"AudioEncoderFallback"] UTF8String]); } + self.passthruName = [preset[@"AudioTrackNamePassthru"] boolValue]; + + NSString *automaticNamingBehavior = [preset[@"AudioAutomaticNamingBehavior"] stringValue]; + if ([automaticNamingBehavior isKindOfClass:[NSString class]]) + { + if ([automaticNamingBehavior isEqualToString:@"none"]) + { + self.automaticNamingBehavior = HBAudioTrackAutomaticNamingBehaviorNone; + } + else if ([automaticNamingBehavior isEqualToString:@"unnamed"]) + { + self.automaticNamingBehavior = HBAudioTrackAutomaticNamingBehaviorUnnamed; + } + else if ([automaticNamingBehavior isEqualToString:@"all"]) + { + self.automaticNamingBehavior = HBAudioTrackAutomaticNamingBehaviorAll; + } + } + while ([self countOfTracksArray]) { [self removeObjectFromTracksArrayAtIndex:0]; @@ -419,6 +459,22 @@ preset[@"AudioSecondaryEncoderMode"] = @(self.secondaryEncoderMode); + preset[@"AudioTrackNamePassthru"] = @(self.passthruName); + + switch (self.automaticNamingBehavior) + { + case HBAudioTrackAutomaticNamingBehaviorNone: + preset[@"AudioAutomaticNamingBehavior"] = @"none"; + break; + case HBAudioTrackAutomaticNamingBehaviorUnnamed: + preset[@"AudioAutomaticNamingBehavior"] = @"unnamed"; + break; + case HBAudioTrackAutomaticNamingBehaviorAll: + default: + preset[@"AudioAutomaticNamingBehavior"] = @"all"; + break; + } + NSMutableArray *audioList = [[NSMutableArray alloc] init]; for (HBAudioTrackPreset *track in self.tracksArray) @@ -504,6 +560,9 @@ copy->_encoderFallback = _encoderFallback; copy->_container = _container; copy->_secondaryEncoderMode = _secondaryEncoderMode; + + copy->_passthruName = _passthruName; + copy->_automaticNamingBehavior = _automaticNamingBehavior; } return copy; @@ -539,6 +598,9 @@ encodeInt(_encoderFallback); encodeInt(_container); encodeBool(_secondaryEncoderMode); + + encodeBool(_passthruName); + encodeInteger(_automaticNamingBehavior); } - (instancetype)initWithCoder:(NSCoder *)decoder @@ -569,6 +631,14 @@ decodeInt(_container); if (_container != HB_MUX_MP4 && _container != HB_MUX_MKV && _container != HB_MUX_WEBM) { goto fail; } decodeBool(_secondaryEncoderMode); + decodeBool(_passthruName); + decodeInt(_automaticNamingBehavior); + if (_automaticNamingBehavior < HBAudioTrackAutomaticNamingBehaviorNone || _automaticNamingBehavior > HBAudioTrackAutomaticNamingBehaviorAll) + { + goto fail; + } + + return self; fail: diff --git a/macosx/HBAudioTrack.h b/macosx/HBAudioTrack.h index 678c138eb..8ecfffc5d 100644 --- a/macosx/HBAudioTrack.h +++ b/macosx/HBAudioTrack.h @@ -14,6 +14,7 @@ NS_ASSUME_NONNULL_BEGIN @protocol HBAudioTrackDataSource - (HBTitleAudioTrack *)sourceTrackAtIndex:(NSUInteger)idx; - (NSArray *)sourceTracksArray; +- (nullable NSString *)defaultTitleForTrackAtIndex:(NSUInteger)idx mixdown:(int)mixdown; @end @protocol HBAudioTrackDelegate diff --git a/macosx/HBAudioTrack.m b/macosx/HBAudioTrack.m index 1bf192ec5..64ca4b118 100644 --- a/macosx/HBAudioTrack.m +++ b/macosx/HBAudioTrack.m @@ -43,7 +43,6 @@ _dataSource = dataSource; _sourceTrackIdx = index; _container = container; - self.title = [dataSource sourceTrackAtIndex:_sourceTrackIdx].title; [self validateSettings]; @@ -90,10 +89,11 @@ if (!(self.undo.isUndoing || self.undo.isRedoing)) { - self.title = [self.dataSource sourceTrackAtIndex:_sourceTrackIdx].title; - [self validateSettings]; + self.title = [self.dataSource defaultTitleForTrackAtIndex:_sourceTrackIdx + mixdown:_mixdown]; + if (oldIdx != sourceTrackIdx) { [self.delegate track:self didChangeSourceFrom:oldIdx]; @@ -149,6 +149,15 @@ { self.validating = YES; self.bitRate = [self sanitizeBitrateValue:self.bitRate]; + + if ([self.title isEqualToString:@"Mono"] || + [self.title isEqualToString:@"Stereo"] || + [self.title isEqualToString:@"Surround"]) + { + self.title = [self.dataSource defaultTitleForTrackAtIndex:_sourceTrackIdx + mixdown:_mixdown]; + } + self.validating = NO; } } @@ -219,13 +228,6 @@ - (void)setTitle:(NSString *)title { - if ([title isEqualToString:@"Mono"] || - [title isEqualToString:@"Stereo"] || - [title isEqualToString:@"Surround"]) - { - title = nil; - } - if (title != _title) { [[self.undo prepareWithInvocationTarget:self] setTitle:_title]; diff --git a/macosx/HBSubtitles.m b/macosx/HBSubtitles.m index 725fd2dbc..da57d8a5a 100644 --- a/macosx/HBSubtitles.m +++ b/macosx/HBSubtitles.m @@ -22,7 +22,7 @@ #define NONE_TRACK_INDEX 0 #define FOREIGN_TRACK_INDEX 1 -@interface HBSubtitles () +@interface HBSubtitles () @property (nonatomic, readwrite) NSArray *sourceTracks; @@ -93,6 +93,19 @@ return sourceNames; } +- (nullable NSString *)defaultTitleForTrackAtIndex:(NSUInteger)idx +{ + NSString *title = nil; + HBTitleSubtitlesTrack *track = [self sourceTrackAtIndex:idx]; + + if (self.defaults.passthruName) + { + title = track.title; + } + + return title; +} + #pragma mark - Delegate - (void)track:(HBSubtitlesTrack *)track didChangeSourceFrom:(NSUInteger)oldSourceIdx @@ -316,6 +329,7 @@ { track.burnedIn = [trackDict[@"Burn"] boolValue]; track.forcedOnly = [trackDict[@"Forced"] boolValue]; + track.title = [trackDict[@"Name"] stringValue]; [tracks addObject:track]; } diff --git a/macosx/HBSubtitlesDefaults.h b/macosx/HBSubtitlesDefaults.h index 3cef28057..ae0fcea6f 100644 --- a/macosx/HBSubtitlesDefaults.h +++ b/macosx/HBSubtitlesDefaults.h @@ -35,6 +35,8 @@ typedef NS_ENUM(NSUInteger, HBSubtitleTrackBurnInBehavior) { @property (nonatomic, readwrite) BOOL burnInDVDSubtitles; @property (nonatomic, readwrite) BOOL burnInBluraySubtitles; +@property (nonatomic, readwrite) BOOL passthruName; + @property (nonatomic, readwrite, weak, nullable) NSUndoManager *undo; @end diff --git a/macosx/HBSubtitlesDefaults.m b/macosx/HBSubtitlesDefaults.m index 7d8e861fb..6346f93d7 100644 --- a/macosx/HBSubtitlesDefaults.m +++ b/macosx/HBSubtitlesDefaults.m @@ -16,6 +16,7 @@ if (self) { _trackSelectionLanguages = [[NSMutableArray alloc] init]; + _passthruName = NO; } return self; } @@ -85,6 +86,15 @@ _burnInBluraySubtitles = burnInBluraySubtitles; } +- (void)setPassthruName:(BOOL)passthruName +{ + if (passthruName != _passthruName) + { + [[self.undo prepareWithInvocationTarget:self] setPassthruName:_passthruName]; + } + _passthruName = passthruName; +} + #pragma mark - HBPresetCoding - (BOOL)applyPreset:(HBPreset *)preset error:(NSError * __autoreleasing *)outError @@ -128,6 +138,8 @@ self.burnInDVDSubtitles = [preset[@"SubtitleBurnDVDSub"] boolValue]; self.burnInBluraySubtitles = [preset[@"SubtitleBurnBDSub"] boolValue]; + self.passthruName = [preset[@"SubtitleTrackNamePassthru"] boolValue]; + return YES; } @@ -175,6 +187,9 @@ preset[@"SubtitleBurnDVDSub"] = @(self.burnInDVDSubtitles); preset[@"SubtitleBurnBDSub"] = @(self.burnInBluraySubtitles); + + preset[@"SubtitleTrackNamePassthru"] = @(self.passthruName); + } #pragma mark - NSCopying @@ -195,6 +210,8 @@ copy->_burnInBehavior = _burnInBehavior; copy->_burnInDVDSubtitles = _burnInDVDSubtitles; copy->_burnInBluraySubtitles = _burnInBluraySubtitles; + + copy->_passthruName = _passthruName; } return copy; @@ -221,6 +238,8 @@ encodeInteger(_burnInBehavior); encodeBool(_burnInDVDSubtitles); encodeBool(_burnInBluraySubtitles); + + encodeBool(_passthruName); } - (instancetype)initWithCoder:(NSCoder *)decoder @@ -246,6 +265,8 @@ decodeBool(_burnInDVDSubtitles); decodeBool(_burnInBluraySubtitles); + decodeBool(_passthruName); + return self; fail: diff --git a/macosx/HBSubtitlesTrack.h b/macosx/HBSubtitlesTrack.h index 0461b282e..7d6c3a841 100644 --- a/macosx/HBSubtitlesTrack.h +++ b/macosx/HBSubtitlesTrack.h @@ -14,15 +14,16 @@ NS_ASSUME_NONNULL_BEGIN /** * HBTrackDataSource */ -@protocol HBTrackDataSource +@protocol HBSubtitlesTrackDataSource - (HBTitleSubtitlesTrack *)sourceTrackAtIndex:(NSUInteger)idx; - (NSArray *)sourceTracksArray; +- (nullable NSString *)defaultTitleForTrackAtIndex:(NSUInteger)idx; @end /** * HBTrackDelegate */ -@protocol HBTrackDelegate +@protocol HBSubtitlesTrackDelegate - (void)track:(HBSubtitlesTrack *)track didChangeSourceFrom:(NSUInteger)oldSourceIdx; - (BOOL)canSetBurnedInOption:(HBSubtitlesTrack *)track; @@ -35,8 +36,8 @@ NS_ASSUME_NONNULL_BEGIN - (instancetype)initWithTrackIdx:(NSUInteger)index container:(int)container - dataSource:(id)dataSource - delegate:(id)delegate; + dataSource:(id)dataSource + delegate:(id)delegate; /// The index of the source in the data source tracks array. @property (nonatomic, readwrite) NSUInteger sourceTrackIdx; @@ -65,8 +66,8 @@ NS_ASSUME_NONNULL_BEGIN @property (nonatomic, readwrite, weak, nullable) NSUndoManager *undo; -@property (nonatomic, readwrite, weak) id dataSource; -@property (nonatomic, readwrite, weak) id delegate; +@property (nonatomic, readwrite, weak) id dataSource; +@property (nonatomic, readwrite, weak) id delegate; /// A complete list of the possible languages. - (NSArray *)languages; diff --git a/macosx/HBSubtitlesTrack.m b/macosx/HBSubtitlesTrack.m index b19462ac1..886fbfe74 100644 --- a/macosx/HBSubtitlesTrack.m +++ b/macosx/HBSubtitlesTrack.m @@ -46,8 +46,8 @@ static NSArray *_languagesArray = nil; - (instancetype)initWithTrackIdx:(NSUInteger)index container:(int)container - dataSource:(id)dataSource - delegate:(id)delegate + dataSource:(id)dataSource + delegate:(id)delegate { self = [super init]; if (self) @@ -127,10 +127,10 @@ static NSArray *_languagesArray = nil; if (!(self.undo.isUndoing || self.undo.isRedoing)) { - self.title = [self.dataSource sourceTrackAtIndex:_sourceTrackIdx].title; - [self validateSettings]; + self.title = [self.dataSource defaultTitleForTrackAtIndex:_sourceTrackIdx]; + if (oldIdx != sourceTrackIdx) { [self.delegate track:self didChangeSourceFrom:oldIdx]; diff --git a/preset/preset_builtin.json b/preset/preset_builtin.json index 53697f8ea..312d9f5ae 100644 --- a/preset/preset_builtin.json +++ b/preset/preset_builtin.json @@ -3,6 +3,7 @@ "ChildrenArray": [ { "AlignAVStart": true, + "AudioAutomaticNamingBehavior": "unnamed", "AudioCopyMask": [ "copy:aac" ], @@ -25,6 +26,7 @@ } ], "AudioSecondaryEncoderMode": true, + "AudioTrackNamePassthru": true, "AudioTrackSelectionBehavior": "first", "ChapterMarkers": true, "ChildrenArray": [ @@ -91,6 +93,7 @@ "SubtitleLanguageList": [ ], "SubtitleTrackSelectionBehavior": "none", + "SubtitleTrackNamePassthru": true, "VideoAvgBitrate": 7500, "VideoColorMatrixCodeOverride": 0, "VideoEncoder": "svt_av1_10bit", @@ -114,6 +117,7 @@ }, { "AlignAVStart": true, + "AudioAutomaticNamingBehavior": "unnamed", "AudioCopyMask": [ "copy:aac" ], @@ -136,6 +140,7 @@ } ], "AudioSecondaryEncoderMode": true, + "AudioTrackNamePassthru": true, "AudioTrackSelectionBehavior": "first", "ChapterMarkers": true, "ChildrenArray": [ @@ -202,6 +207,7 @@ "SubtitleLanguageList": [ ], "SubtitleTrackSelectionBehavior": "none", + "SubtitleTrackNamePassthru": true, "VideoAvgBitrate": 7500, "VideoColorMatrixCodeOverride": 0, "VideoEncoder": "x265_10bit", @@ -225,6 +231,7 @@ }, { "AlignAVStart": true, + "AudioAutomaticNamingBehavior": "unnamed", "AudioCopyMask": [ "copy:aac" ], @@ -247,6 +254,7 @@ } ], "AudioSecondaryEncoderMode": true, + "AudioTrackNamePassthru": true, "AudioTrackSelectionBehavior": "first", "ChapterMarkers": true, "ChildrenArray": [ @@ -312,6 +320,7 @@ "SubtitleLanguageList": [ ], "SubtitleTrackSelectionBehavior": "none", + "SubtitleTrackNamePassthru": true, "VideoAvgBitrate": 4000, "VideoColorMatrixCodeOverride": 0, "VideoEncoder": "x264", @@ -335,6 +344,7 @@ }, { "AlignAVStart": true, + "AudioAutomaticNamingBehavior": "unnamed", "AudioCopyMask": [ "copy:aac" ], @@ -357,6 +367,7 @@ } ], "AudioSecondaryEncoderMode": true, + "AudioTrackNamePassthru": true, "AudioTrackSelectionBehavior": "first", "ChapterMarkers": true, "ChildrenArray": [ @@ -422,6 +433,7 @@ "SubtitleLanguageList": [ ], "SubtitleTrackSelectionBehavior": "none", + "SubtitleTrackNamePassthru": true, "VideoAvgBitrate": 2000, "VideoColorMatrixCodeOverride": 0, "VideoEncoder": "x264", @@ -445,6 +457,7 @@ }, { "AlignAVStart": true, + "AudioAutomaticNamingBehavior": "unnamed", "AudioCopyMask": [ "copy:aac" ], @@ -467,6 +480,7 @@ } ], "AudioSecondaryEncoderMode": true, + "AudioTrackNamePassthru": true, "AudioTrackSelectionBehavior": "first", "ChapterMarkers": true, "ChildrenArray": [ @@ -532,6 +546,7 @@ "SubtitleLanguageList": [ ], "SubtitleTrackSelectionBehavior": "none", + "SubtitleTrackNamePassthru": true, "VideoAvgBitrate": 1200, "VideoColorMatrixCodeOverride": 0, "VideoEncoder": "x264", @@ -555,6 +570,7 @@ }, { "AlignAVStart": true, + "AudioAutomaticNamingBehavior": "unnamed", "AudioCopyMask": [ "copy:aac" ], @@ -577,6 +593,7 @@ } ], "AudioSecondaryEncoderMode": true, + "AudioTrackNamePassthru": true, "AudioTrackSelectionBehavior": "first", "ChapterMarkers": true, "ChildrenArray": [ @@ -642,6 +659,7 @@ "SubtitleLanguageList": [ ], "SubtitleTrackSelectionBehavior": "none", + "SubtitleTrackNamePassthru": true, "VideoAvgBitrate": 1000, "VideoColorMatrixCodeOverride": 0, "VideoEncoder": "x264", @@ -665,6 +683,7 @@ }, { "AlignAVStart": true, + "AudioAutomaticNamingBehavior": "unnamed", "AudioCopyMask": [ "copy:aac" ], @@ -687,6 +706,7 @@ } ], "AudioSecondaryEncoderMode": true, + "AudioTrackNamePassthru": true, "AudioTrackSelectionBehavior": "first", "ChapterMarkers": true, "ChildrenArray": [ @@ -753,6 +773,7 @@ "SubtitleLanguageList": [ ], "SubtitleTrackSelectionBehavior": "none", + "SubtitleTrackNamePassthru": true, "VideoAvgBitrate": 10500, "VideoColorMatrixCodeOverride": 0, "VideoEncoder": "svt_av1_10bit", @@ -776,6 +797,7 @@ }, { "AlignAVStart": true, + "AudioAutomaticNamingBehavior": "unnamed", "AudioCopyMask": [ "copy:aac" ], @@ -798,6 +820,7 @@ } ], "AudioSecondaryEncoderMode": true, + "AudioTrackNamePassthru": true, "AudioTrackSelectionBehavior": "first", "ChapterMarkers": true, "ChildrenArray": [ @@ -864,6 +887,7 @@ "SubtitleLanguageList": [ ], "SubtitleTrackSelectionBehavior": "none", + "SubtitleTrackNamePassthru": true, "VideoAvgBitrate": 13000, "VideoColorMatrixCodeOverride": 0, "VideoEncoder": "x265_10bit", @@ -887,6 +911,7 @@ }, { "AlignAVStart": true, + "AudioAutomaticNamingBehavior": "unnamed", "AudioCopyMask": [ "copy:aac" ], @@ -909,6 +934,7 @@ } ], "AudioSecondaryEncoderMode": true, + "AudioTrackNamePassthru": true, "AudioTrackSelectionBehavior": "first", "ChapterMarkers": true, "ChildrenArray": [ @@ -974,6 +1000,7 @@ "SubtitleLanguageList": [ ], "SubtitleTrackSelectionBehavior": "none", + "SubtitleTrackNamePassthru": true, "VideoAvgBitrate": 6000, "VideoColorMatrixCodeOverride": 0, "VideoEncoder": "x264", @@ -997,6 +1024,7 @@ }, { "AlignAVStart": true, + "AudioAutomaticNamingBehavior": "unnamed", "AudioCopyMask": [ "copy:aac" ], @@ -1019,6 +1047,7 @@ } ], "AudioSecondaryEncoderMode": true, + "AudioTrackNamePassthru": true, "AudioTrackSelectionBehavior": "first", "ChapterMarkers": true, "ChildrenArray": [ @@ -1084,6 +1113,7 @@ "SubtitleLanguageList": [ ], "SubtitleTrackSelectionBehavior": "none", + "SubtitleTrackNamePassthru": true, "VideoAvgBitrate": 3000, "VideoColorMatrixCodeOverride": 0, "VideoEncoder": "x264", @@ -1107,6 +1137,7 @@ }, { "AlignAVStart": true, + "AudioAutomaticNamingBehavior": "unnamed", "AudioCopyMask": [ "copy:aac" ], @@ -1129,6 +1160,7 @@ } ], "AudioSecondaryEncoderMode": true, + "AudioTrackNamePassthru": true, "AudioTrackSelectionBehavior": "first", "ChapterMarkers": true, "ChildrenArray": [ @@ -1194,6 +1226,7 @@ "SubtitleLanguageList": [ ], "SubtitleTrackSelectionBehavior": "none", + "SubtitleTrackNamePassthru": true, "VideoAvgBitrate": 1800, "VideoColorMatrixCodeOverride": 0, "VideoEncoder": "x264", @@ -1217,6 +1250,7 @@ }, { "AlignAVStart": true, + "AudioAutomaticNamingBehavior": "unnamed", "AudioCopyMask": [ "copy:aac" ], @@ -1239,6 +1273,7 @@ } ], "AudioSecondaryEncoderMode": true, + "AudioTrackNamePassthru": true, "AudioTrackSelectionBehavior": "first", "ChapterMarkers": true, "ChildrenArray": [ @@ -1304,6 +1339,7 @@ "SubtitleLanguageList": [ ], "SubtitleTrackSelectionBehavior": "none", + "SubtitleTrackNamePassthru": true, "VideoAvgBitrate": 1500, "VideoColorMatrixCodeOverride": 0, "VideoEncoder": "x264", @@ -1327,6 +1363,7 @@ }, { "AlignAVStart": true, + "AudioAutomaticNamingBehavior": "unnamed", "AudioCopyMask": [ "copy:aac" ], @@ -1362,6 +1399,7 @@ } ], "AudioSecondaryEncoderMode": true, + "AudioTrackNamePassthru": true, "AudioTrackSelectionBehavior": "first", "ChapterMarkers": true, "ChildrenArray": [ @@ -1428,6 +1466,7 @@ "SubtitleLanguageList": [ ], "SubtitleTrackSelectionBehavior": "none", + "SubtitleTrackNamePassthru": true, "VideoAvgBitrate": 16000, "VideoColorMatrixCodeOverride": 0, "VideoEncoder": "svt_av1_10bit", @@ -1451,6 +1490,7 @@ }, { "AlignAVStart": true, + "AudioAutomaticNamingBehavior": "unnamed", "AudioCopyMask": [ "copy:aac" ], @@ -1486,6 +1526,7 @@ } ], "AudioSecondaryEncoderMode": true, + "AudioTrackNamePassthru": true, "AudioTrackSelectionBehavior": "first", "ChapterMarkers": true, "ChildrenArray": [ @@ -1552,6 +1593,7 @@ "SubtitleLanguageList": [ ], "SubtitleTrackSelectionBehavior": "none", + "SubtitleTrackNamePassthru": true, "VideoAvgBitrate": 20500, "VideoColorMatrixCodeOverride": 0, "VideoEncoder": "x265_10bit", @@ -1575,6 +1617,7 @@ }, { "AlignAVStart": true, + "AudioAutomaticNamingBehavior": "unnamed", "AudioCopyMask": [ "copy:aac", "copy:ac3" @@ -1611,6 +1654,7 @@ } ], "AudioSecondaryEncoderMode": true, + "AudioTrackNamePassthru": true, "AudioTrackSelectionBehavior": "first", "ChapterMarkers": true, "ChildrenArray": [ @@ -1676,6 +1720,7 @@ "SubtitleLanguageList": [ ], "SubtitleTrackSelectionBehavior": "none", + "SubtitleTrackNamePassthru": true, "VideoAvgBitrate": 9000, "VideoColorMatrixCodeOverride": 0, "VideoEncoder": "x264", @@ -1699,6 +1744,7 @@ }, { "AlignAVStart": true, + "AudioAutomaticNamingBehavior": "unnamed", "AudioCopyMask": [ "copy:aac", "copy:ac3" @@ -1735,6 +1781,7 @@ } ], "AudioSecondaryEncoderMode": true, + "AudioTrackNamePassthru": true, "AudioTrackSelectionBehavior": "first", "ChapterMarkers": true, "ChildrenArray": [ @@ -1800,6 +1847,7 @@ "SubtitleLanguageList": [ ], "SubtitleTrackSelectionBehavior": "none", + "SubtitleTrackNamePassthru": true, "VideoAvgBitrate": 4500, "VideoColorMatrixCodeOverride": 0, "VideoEncoder": "x264", @@ -1823,6 +1871,7 @@ }, { "AlignAVStart": true, + "AudioAutomaticNamingBehavior": "unnamed", "AudioCopyMask": [ "copy:aac", "copy:ac3" @@ -1859,6 +1908,7 @@ } ], "AudioSecondaryEncoderMode": true, + "AudioTrackNamePassthru": true, "AudioTrackSelectionBehavior": "first", "ChapterMarkers": true, "ChildrenArray": [ @@ -1924,6 +1974,7 @@ "SubtitleLanguageList": [ ], "SubtitleTrackSelectionBehavior": "none", + "SubtitleTrackNamePassthru": true, "VideoAvgBitrate": 2700, "VideoColorMatrixCodeOverride": 0, "VideoEncoder": "x264", @@ -1947,6 +1998,7 @@ }, { "AlignAVStart": true, + "AudioAutomaticNamingBehavior": "unnamed", "AudioCopyMask": [ "copy:aac", "copy:ac3" @@ -1983,6 +2035,7 @@ } ], "AudioSecondaryEncoderMode": true, + "AudioTrackNamePassthru": true, "AudioTrackSelectionBehavior": "first", "ChapterMarkers": true, "ChildrenArray": [ @@ -2048,6 +2101,7 @@ "SubtitleLanguageList": [ ], "SubtitleTrackSelectionBehavior": "none", + "SubtitleTrackNamePassthru": true, "VideoAvgBitrate": 2250, "VideoColorMatrixCodeOverride": 0, "VideoEncoder": "x264", @@ -2071,6 +2125,7 @@ }, { "AlignAVStart": true, + "AudioAutomaticNamingBehavior": "unnamed", "AudioCopyMask": [ "copy:aac", "copy:ac3" @@ -2107,6 +2162,7 @@ } ], "AudioSecondaryEncoderMode": true, + "AudioTrackNamePassthru": true, "AudioTrackSelectionBehavior": "first", "ChapterMarkers": true, "ChildrenArray": [ @@ -2173,6 +2229,7 @@ "SubtitleLanguageList": [ ], "SubtitleTrackSelectionBehavior": "none", + "SubtitleTrackNamePassthru": true, "VideoAvgBitrate": 32000, "VideoColorMatrixCodeOverride": 0, "VideoEncoder": "svt_av1_10bit", @@ -2196,6 +2253,7 @@ }, { "AlignAVStart": true, + "AudioAutomaticNamingBehavior": "unnamed", "AudioCopyMask": [ "copy:aac", "copy:ac3" @@ -2232,6 +2290,7 @@ } ], "AudioSecondaryEncoderMode": true, + "AudioTrackNamePassthru": true, "AudioTrackSelectionBehavior": "first", "ChapterMarkers": true, "ChildrenArray": [ @@ -2298,6 +2357,7 @@ "SubtitleLanguageList": [ ], "SubtitleTrackSelectionBehavior": "none", + "SubtitleTrackNamePassthru": true, "VideoAvgBitrate": 32000, "VideoColorMatrixCodeOverride": 0, "VideoEncoder": "x265_10bit", @@ -2321,6 +2381,7 @@ }, { "AlignAVStart": true, + "AudioAutomaticNamingBehavior": "unnamed", "AudioCopyMask": [ "copy:aac", "copy:ac3" @@ -2357,6 +2418,7 @@ } ], "AudioSecondaryEncoderMode": true, + "AudioTrackNamePassthru": true, "AudioTrackSelectionBehavior": "first", "ChapterMarkers": true, "ChildrenArray": [ @@ -2422,6 +2484,7 @@ "SubtitleLanguageList": [ ], "SubtitleTrackSelectionBehavior": "none", + "SubtitleTrackNamePassthru": true, "VideoAvgBitrate": 15000, "VideoColorMatrixCodeOverride": 0, "VideoEncoder": "x264", @@ -2445,6 +2508,7 @@ }, { "AlignAVStart": true, + "AudioAutomaticNamingBehavior": "unnamed", "AudioCopyMask": [ "copy:aac", "copy:ac3" @@ -2481,6 +2545,7 @@ } ], "AudioSecondaryEncoderMode": true, + "AudioTrackNamePassthru": true, "AudioTrackSelectionBehavior": "first", "ChapterMarkers": true, "ChildrenArray": [ @@ -2546,6 +2611,7 @@ "SubtitleLanguageList": [ ], "SubtitleTrackSelectionBehavior": "none", + "SubtitleTrackNamePassthru": true, "VideoAvgBitrate": 7500, "VideoColorMatrixCodeOverride": 0, "VideoEncoder": "x264", @@ -2569,6 +2635,7 @@ }, { "AlignAVStart": true, + "AudioAutomaticNamingBehavior": "unnamed", "AudioCopyMask": [ "copy:aac", "copy:ac3" @@ -2605,6 +2672,7 @@ } ], "AudioSecondaryEncoderMode": true, + "AudioTrackNamePassthru": true, "AudioTrackSelectionBehavior": "first", "ChapterMarkers": true, "ChildrenArray": [ @@ -2670,6 +2738,7 @@ "SubtitleLanguageList": [ ], "SubtitleTrackSelectionBehavior": "none", + "SubtitleTrackNamePassthru": true, "VideoAvgBitrate": 4500, "VideoColorMatrixCodeOverride": 0, "VideoEncoder": "x264", @@ -2693,6 +2762,7 @@ }, { "AlignAVStart": true, + "AudioAutomaticNamingBehavior": "unnamed", "AudioCopyMask": [ "copy:aac", "copy:ac3" @@ -2729,6 +2799,7 @@ } ], "AudioSecondaryEncoderMode": true, + "AudioTrackNamePassthru": true, "AudioTrackSelectionBehavior": "first", "ChapterMarkers": true, "ChildrenArray": [ @@ -2794,6 +2865,7 @@ "SubtitleLanguageList": [ ], "SubtitleTrackSelectionBehavior": "none", + "SubtitleTrackNamePassthru": true, "VideoAvgBitrate": 3750, "VideoColorMatrixCodeOverride": 0, "VideoEncoder": "x264", @@ -2824,6 +2896,7 @@ "ChildrenArray": [ { "AlignAVStart": true, + "AudioAutomaticNamingBehavior": "unnamed", "AudioCopyMask": [ "copy:aac" ], @@ -2846,6 +2919,7 @@ } ], "AudioSecondaryEncoderMode": true, + "AudioTrackNamePassthru": true, "AudioTrackSelectionBehavior": "first", "ChapterMarkers": true, "ChildrenArray": [ @@ -2911,6 +2985,7 @@ "SubtitleLanguageList": [ ], "SubtitleTrackSelectionBehavior": "none", + "SubtitleTrackNamePassthru": true, "VideoAvgBitrate": 18000, "VideoColorMatrixCodeOverride": 0, "VideoEncoder": "x264", @@ -2934,6 +3009,7 @@ }, { "AlignAVStart": true, + "AudioAutomaticNamingBehavior": "unnamed", "AudioCopyMask": [ "copy:aac" ], @@ -2956,6 +3032,7 @@ } ], "AudioSecondaryEncoderMode": true, + "AudioTrackNamePassthru": true, "AudioTrackSelectionBehavior": "first", "ChapterMarkers": true, "ChildrenArray": [ @@ -3021,6 +3098,7 @@ "SubtitleLanguageList": [ ], "SubtitleTrackSelectionBehavior": "none", + "SubtitleTrackNamePassthru": true, "VideoAvgBitrate": 12000, "VideoColorMatrixCodeOverride": 0, "VideoEncoder": "x264", @@ -3044,6 +3122,7 @@ }, { "AlignAVStart": true, + "AudioAutomaticNamingBehavior": "unnamed", "AudioCopyMask": [ "copy:aac" ], @@ -3066,6 +3145,7 @@ } ], "AudioSecondaryEncoderMode": true, + "AudioTrackNamePassthru": true, "AudioTrackSelectionBehavior": "first", "ChapterMarkers": true, "ChildrenArray": [ @@ -3131,6 +3211,7 @@ "SubtitleLanguageList": [ ], "SubtitleTrackSelectionBehavior": "none", + "SubtitleTrackNamePassthru": true, "VideoAvgBitrate": 9000, "VideoColorMatrixCodeOverride": 0, "VideoEncoder": "x264", @@ -3154,6 +3235,7 @@ }, { "AlignAVStart": true, + "AudioAutomaticNamingBehavior": "unnamed", "AudioCopyMask": [ "copy:aac" ], @@ -3176,6 +3258,7 @@ } ], "AudioSecondaryEncoderMode": true, + "AudioTrackNamePassthru": true, "AudioTrackSelectionBehavior": "first", "ChapterMarkers": true, "ChildrenArray": [ @@ -3241,6 +3324,7 @@ "SubtitleLanguageList": [ ], "SubtitleTrackSelectionBehavior": "none", + "SubtitleTrackNamePassthru": true, "VideoAvgBitrate": 4500, "VideoColorMatrixCodeOverride": 0, "VideoEncoder": "x264", @@ -3264,6 +3348,7 @@ }, { "AlignAVStart": true, + "AudioAutomaticNamingBehavior": "unnamed", "AudioCopyMask": [ "copy:aac" ], @@ -3286,6 +3371,7 @@ } ], "AudioSecondaryEncoderMode": true, + "AudioTrackNamePassthru": true, "AudioTrackSelectionBehavior": "first", "ChapterMarkers": true, "ChildrenArray": [ @@ -3351,6 +3437,7 @@ "SubtitleLanguageList": [ ], "SubtitleTrackSelectionBehavior": "none", + "SubtitleTrackNamePassthru": true, "VideoAvgBitrate": 6000, "VideoColorMatrixCodeOverride": 0, "VideoEncoder": "x264", @@ -3374,6 +3461,7 @@ }, { "AlignAVStart": true, + "AudioAutomaticNamingBehavior": "unnamed", "AudioCopyMask": [ "copy:aac" ], @@ -3396,6 +3484,7 @@ } ], "AudioSecondaryEncoderMode": true, + "AudioTrackNamePassthru": true, "AudioTrackSelectionBehavior": "first", "ChapterMarkers": true, "ChildrenArray": [ @@ -3461,6 +3550,7 @@ "SubtitleLanguageList": [ ], "SubtitleTrackSelectionBehavior": "none", + "SubtitleTrackNamePassthru": true, "VideoAvgBitrate": 3000, "VideoColorMatrixCodeOverride": 0, "VideoEncoder": "x264", @@ -3484,6 +3574,7 @@ }, { "AlignAVStart": true, + "AudioAutomaticNamingBehavior": "unnamed", "AudioCopyMask": [ "copy:aac" ], @@ -3506,6 +3597,7 @@ } ], "AudioSecondaryEncoderMode": true, + "AudioTrackNamePassthru": true, "AudioTrackSelectionBehavior": "first", "ChapterMarkers": true, "ChildrenArray": [ @@ -3571,6 +3663,7 @@ "SubtitleLanguageList": [ ], "SubtitleTrackSelectionBehavior": "none", + "SubtitleTrackNamePassthru": true, "VideoAvgBitrate": 1500, "VideoColorMatrixCodeOverride": 0, "VideoEncoder": "x264", @@ -3594,6 +3687,7 @@ }, { "AlignAVStart": true, + "AudioAutomaticNamingBehavior": "unnamed", "AudioCopyMask": [ "copy:aac" ], @@ -3616,6 +3710,7 @@ } ], "AudioSecondaryEncoderMode": true, + "AudioTrackNamePassthru": true, "AudioTrackSelectionBehavior": "first", "ChapterMarkers": true, "ChildrenArray": [ @@ -3681,6 +3776,7 @@ "SubtitleLanguageList": [ ], "SubtitleTrackSelectionBehavior": "none", + "SubtitleTrackNamePassthru": true, "VideoAvgBitrate": 500, "VideoColorMatrixCodeOverride": 0, "VideoEncoder": "x264", @@ -3704,6 +3800,7 @@ }, { "AlignAVStart": true, + "AudioAutomaticNamingBehavior": "unnamed", "AudioCopyMask": [ "copy:aac" ], @@ -3726,6 +3823,7 @@ } ], "AudioSecondaryEncoderMode": true, + "AudioTrackNamePassthru": true, "AudioTrackSelectionBehavior": "first", "ChapterMarkers": true, "ChildrenArray": [ @@ -3791,6 +3889,7 @@ "SubtitleLanguageList": [ ], "SubtitleTrackSelectionBehavior": "none", + "SubtitleTrackNamePassthru": true, "VideoAvgBitrate": 2250, "VideoColorMatrixCodeOverride": 0, "VideoEncoder": "x264", @@ -3814,6 +3913,7 @@ }, { "AlignAVStart": true, + "AudioAutomaticNamingBehavior": "unnamed", "AudioCopyMask": [ "copy:aac" ], @@ -3836,6 +3936,7 @@ } ], "AudioSecondaryEncoderMode": true, + "AudioTrackNamePassthru": true, "AudioTrackSelectionBehavior": "first", "ChapterMarkers": true, "ChildrenArray": [ @@ -3901,6 +4002,7 @@ "SubtitleLanguageList": [ ], "SubtitleTrackSelectionBehavior": "none", + "SubtitleTrackNamePassthru": true, "VideoAvgBitrate": 1125, "VideoColorMatrixCodeOverride": 0, "VideoEncoder": "x264", @@ -3924,6 +4026,7 @@ }, { "AlignAVStart": true, + "AudioAutomaticNamingBehavior": "unnamed", "AudioCopyMask": [ "copy:aac" ], @@ -3946,6 +4049,7 @@ } ], "AudioSecondaryEncoderMode": true, + "AudioTrackNamePassthru": true, "AudioTrackSelectionBehavior": "first", "ChapterMarkers": true, "ChildrenArray": [ @@ -4011,6 +4115,7 @@ "SubtitleLanguageList": [ ], "SubtitleTrackSelectionBehavior": "none", + "SubtitleTrackNamePassthru": true, "VideoAvgBitrate": 500, "VideoColorMatrixCodeOverride": 0, "VideoEncoder": "x264", @@ -4041,6 +4146,7 @@ "ChildrenArray": [ { "AlignAVStart": false, + "AudioAutomaticNamingBehavior": "unnamed", "AudioCopyMask": [ "copy:aac", "copy:ac3" @@ -4077,6 +4183,7 @@ } ], "AudioSecondaryEncoderMode": true, + "AudioTrackNamePassthru": true, "AudioTrackSelectionBehavior": "first", "ChapterMarkers": true, "ChildrenArray": [ @@ -4142,6 +4249,7 @@ "SubtitleLanguageList": [ ], "SubtitleTrackSelectionBehavior": "none", + "SubtitleTrackNamePassthru": true, "VideoAvgBitrate": 8000, "VideoColorMatrixCodeOverride": 0, "VideoEncoder": "x265_10bit", @@ -4165,6 +4273,7 @@ }, { "AlignAVStart": false, + "AudioAutomaticNamingBehavior": "unnamed", "AudioCopyMask": [ "copy:aac", "copy:ac3" @@ -4201,6 +4310,7 @@ } ], "AudioSecondaryEncoderMode": true, + "AudioTrackNamePassthru": true, "AudioTrackSelectionBehavior": "first", "ChapterMarkers": true, "ChildrenArray": [ @@ -4266,6 +4376,7 @@ "SubtitleLanguageList": [ ], "SubtitleTrackSelectionBehavior": "none", + "SubtitleTrackNamePassthru": true, "VideoAvgBitrate": 6000, "VideoColorMatrixCodeOverride": 0, "VideoEncoder": "x264", @@ -4289,6 +4400,7 @@ }, { "AlignAVStart": false, + "AudioAutomaticNamingBehavior": "unnamed", "AudioCopyMask": [ "copy:aac" ], @@ -4311,6 +4423,7 @@ } ], "AudioSecondaryEncoderMode": true, + "AudioTrackNamePassthru": true, "AudioTrackSelectionBehavior": "first", "ChapterMarkers": true, "ChildrenArray": [ @@ -4376,6 +4489,7 @@ "SubtitleLanguageList": [ ], "SubtitleTrackSelectionBehavior": "none", + "SubtitleTrackNamePassthru": true, "VideoAvgBitrate": 3000, "VideoColorMatrixCodeOverride": 0, "VideoEncoder": "x264", @@ -4399,6 +4513,7 @@ }, { "AlignAVStart": false, + "AudioAutomaticNamingBehavior": "unnamed", "AudioCopyMask": [ "copy:aac" ], @@ -4421,6 +4536,7 @@ } ], "AudioSecondaryEncoderMode": true, + "AudioTrackNamePassthru": true, "AudioTrackSelectionBehavior": "first", "ChapterMarkers": true, "ChildrenArray": [ @@ -4486,6 +4602,7 @@ "SubtitleLanguageList": [ ], "SubtitleTrackSelectionBehavior": "none", + "SubtitleTrackNamePassthru": true, "VideoAvgBitrate": 6000, "VideoColorMatrixCodeOverride": 0, "VideoEncoder": "x264", @@ -4509,6 +4626,7 @@ }, { "AlignAVStart": false, + "AudioAutomaticNamingBehavior": "unnamed", "AudioCopyMask": [ "copy:aac" ], @@ -4531,6 +4649,7 @@ } ], "AudioSecondaryEncoderMode": true, + "AudioTrackNamePassthru": true, "AudioTrackSelectionBehavior": "first", "ChapterMarkers": true, "ChildrenArray": [ @@ -4596,6 +4715,7 @@ "SubtitleLanguageList": [ ], "SubtitleTrackSelectionBehavior": "none", + "SubtitleTrackNamePassthru": true, "VideoAvgBitrate": 3000, "VideoColorMatrixCodeOverride": 0, "VideoEncoder": "x264", @@ -4619,6 +4739,7 @@ }, { "AlignAVStart": false, + "AudioAutomaticNamingBehavior": "unnamed", "AudioCopyMask": [ "copy:aac" ], @@ -4641,6 +4762,7 @@ } ], "AudioSecondaryEncoderMode": true, + "AudioTrackNamePassthru": true, "AudioTrackSelectionBehavior": "first", "ChapterMarkers": true, "ChildrenArray": [ @@ -4706,6 +4828,7 @@ "SubtitleLanguageList": [ ], "SubtitleTrackSelectionBehavior": "none", + "SubtitleTrackNamePassthru": true, "VideoAvgBitrate": 1800, "VideoColorMatrixCodeOverride": 0, "VideoEncoder": "x264", @@ -4729,6 +4852,7 @@ }, { "AlignAVStart": false, + "AudioAutomaticNamingBehavior": "unnamed", "AudioCopyMask": [ "copy:aac" ], @@ -4751,6 +4875,7 @@ } ], "AudioSecondaryEncoderMode": true, + "AudioTrackNamePassthru": true, "AudioTrackSelectionBehavior": "first", "ChapterMarkers": true, "ChildrenArray": [ @@ -4816,6 +4941,7 @@ "SubtitleLanguageList": [ ], "SubtitleTrackSelectionBehavior": "none", + "SubtitleTrackNamePassthru": true, "VideoAvgBitrate": 1500, "VideoColorMatrixCodeOverride": 0, "VideoEncoder": "x264", @@ -4839,6 +4965,7 @@ }, { "AlignAVStart": false, + "AudioAutomaticNamingBehavior": "unnamed", "AudioCopyMask": [ "copy:aac", "copy:ac3" @@ -4875,6 +5002,7 @@ } ], "AudioSecondaryEncoderMode": true, + "AudioTrackNamePassthru": true, "AudioTrackSelectionBehavior": "first", "ChapterMarkers": true, "ChildrenArray": [ @@ -4940,6 +5068,7 @@ "SubtitleLanguageList": [ ], "SubtitleTrackSelectionBehavior": "none", + "SubtitleTrackNamePassthru": true, "VideoAvgBitrate": 8000, "VideoColorMatrixCodeOverride": 0, "VideoEncoder": "x265_10bit", @@ -4963,6 +5092,7 @@ }, { "AlignAVStart": false, + "AudioAutomaticNamingBehavior": "unnamed", "AudioCopyMask": [ "copy:aac", "copy:ac3" @@ -4999,6 +5129,7 @@ } ], "AudioSecondaryEncoderMode": true, + "AudioTrackNamePassthru": true, "AudioTrackSelectionBehavior": "first", "ChapterMarkers": true, "ChildrenArray": [ @@ -5064,6 +5195,7 @@ "SubtitleLanguageList": [ ], "SubtitleTrackSelectionBehavior": "none", + "SubtitleTrackNamePassthru": true, "VideoAvgBitrate": 6000, "VideoColorMatrixCodeOverride": 0, "VideoEncoder": "x264", @@ -5087,6 +5219,7 @@ }, { "AlignAVStart": false, + "AudioAutomaticNamingBehavior": "unnamed", "AudioCopyMask": [ "copy:aac", "copy:ac3" @@ -5123,6 +5256,7 @@ } ], "AudioSecondaryEncoderMode": true, + "AudioTrackNamePassthru": true, "AudioTrackSelectionBehavior": "first", "ChapterMarkers": true, "ChildrenArray": [ @@ -5188,6 +5322,7 @@ "SubtitleLanguageList": [ ], "SubtitleTrackSelectionBehavior": "none", + "SubtitleTrackNamePassthru": true, "VideoAvgBitrate": 6000, "VideoColorMatrixCodeOverride": 0, "VideoEncoder": "x264", @@ -5211,6 +5346,7 @@ }, { "AlignAVStart": false, + "AudioAutomaticNamingBehavior": "unnamed", "AudioCopyMask": [ "copy:aac", "copy:ac3" @@ -5247,6 +5383,7 @@ } ], "AudioSecondaryEncoderMode": true, + "AudioTrackNamePassthru": true, "AudioTrackSelectionBehavior": "first", "ChapterMarkers": true, "ChildrenArray": [ @@ -5312,6 +5449,7 @@ "SubtitleLanguageList": [ ], "SubtitleTrackSelectionBehavior": "none", + "SubtitleTrackNamePassthru": true, "VideoAvgBitrate": 3000, "VideoColorMatrixCodeOverride": 0, "VideoEncoder": "x264", @@ -5335,6 +5473,7 @@ }, { "AlignAVStart": false, + "AudioAutomaticNamingBehavior": "unnamed", "AudioCopyMask": [ "copy:aac", "copy:ac3" @@ -5371,6 +5510,7 @@ } ], "AudioSecondaryEncoderMode": true, + "AudioTrackNamePassthru": true, "AudioTrackSelectionBehavior": "first", "ChapterMarkers": true, "ChildrenArray": [ @@ -5436,6 +5576,7 @@ "SubtitleLanguageList": [ ], "SubtitleTrackSelectionBehavior": "none", + "SubtitleTrackNamePassthru": true, "VideoAvgBitrate": 2500, "VideoColorMatrixCodeOverride": 0, "VideoEncoder": "x264", @@ -5459,6 +5600,7 @@ }, { "AlignAVStart": false, + "AudioAutomaticNamingBehavior": "unnamed", "AudioCopyMask": [ "copy:aac", "copy:ac3" @@ -5495,6 +5637,7 @@ } ], "AudioSecondaryEncoderMode": true, + "AudioTrackNamePassthru": true, "AudioTrackSelectionBehavior": "first", "ChapterMarkers": true, "ChildrenArray": [ @@ -5560,6 +5703,7 @@ "SubtitleLanguageList": [ ], "SubtitleTrackSelectionBehavior": "none", + "SubtitleTrackNamePassthru": true, "VideoAvgBitrate": 8000, "VideoColorMatrixCodeOverride": 0, "VideoEncoder": "x265_10bit", @@ -5583,6 +5727,7 @@ }, { "AlignAVStart": false, + "AudioAutomaticNamingBehavior": "unnamed", "AudioCopyMask": [ "copy:aac", "copy:ac3" @@ -5619,6 +5764,7 @@ } ], "AudioSecondaryEncoderMode": true, + "AudioTrackNamePassthru": true, "AudioTrackSelectionBehavior": "first", "ChapterMarkers": true, "ChildrenArray": [ @@ -5684,6 +5830,7 @@ "SubtitleLanguageList": [ ], "SubtitleTrackSelectionBehavior": "none", + "SubtitleTrackNamePassthru": true, "VideoAvgBitrate": 6000, "VideoColorMatrixCodeOverride": 0, "VideoEncoder": "x264", @@ -5707,6 +5854,7 @@ }, { "AlignAVStart": false, + "AudioAutomaticNamingBehavior": "unnamed", "AudioCopyMask": [ "copy:aac", "copy:ac3" @@ -5743,6 +5891,7 @@ } ], "AudioSecondaryEncoderMode": true, + "AudioTrackNamePassthru": true, "AudioTrackSelectionBehavior": "first", "ChapterMarkers": true, "ChildrenArray": [ @@ -5808,6 +5957,7 @@ "SubtitleLanguageList": [ ], "SubtitleTrackSelectionBehavior": "none", + "SubtitleTrackNamePassthru": true, "VideoAvgBitrate": 6000, "VideoColorMatrixCodeOverride": 0, "VideoEncoder": "x264", @@ -5831,6 +5981,7 @@ }, { "AlignAVStart": false, + "AudioAutomaticNamingBehavior": "unnamed", "AudioCopyMask": [ "copy:aac", "copy:ac3" @@ -5866,6 +6017,7 @@ } ], "AudioSecondaryEncoderMode": true, + "AudioTrackNamePassthru": true, "AudioTrackSelectionBehavior": "first", "ChapterMarkers": true, "ChildrenArray": [], @@ -5930,6 +6082,7 @@ "SubtitleLanguageList": [ ], "SubtitleTrackSelectionBehavior": "none", + "SubtitleTrackNamePassthru": true, "VideoAvgBitrate": 12000, "VideoColorMatrixCodeOverride": 0, "VideoEncoder": "x264", @@ -5953,6 +6106,7 @@ }, { "AlignAVStart": false, + "AudioAutomaticNamingBehavior": "unnamed", "AudioCopyMask": [ "copy:aac", "copy:ac3" @@ -5989,6 +6143,7 @@ } ], "AudioSecondaryEncoderMode": true, + "AudioTrackNamePassthru": true, "AudioTrackSelectionBehavior": "first", "ChapterMarkers": true, "ChildrenArray": [ @@ -6054,6 +6209,7 @@ "SubtitleLanguageList": [ ], "SubtitleTrackSelectionBehavior": "none", + "SubtitleTrackNamePassthru": true, "VideoAvgBitrate": 6000, "VideoColorMatrixCodeOverride": 0, "VideoEncoder": "x264", @@ -6077,6 +6233,7 @@ }, { "AlignAVStart": false, + "AudioAutomaticNamingBehavior": "unnamed", "AudioCopyMask": [ "copy:aac" ], @@ -6099,6 +6256,7 @@ } ], "AudioSecondaryEncoderMode": true, + "AudioTrackNamePassthru": true, "AudioTrackSelectionBehavior": "first", "ChapterMarkers": true, "ChildrenArray": [ @@ -6164,6 +6322,7 @@ "SubtitleLanguageList": [ ], "SubtitleTrackSelectionBehavior": "none", + "SubtitleTrackNamePassthru": true, "VideoAvgBitrate": 3000, "VideoColorMatrixCodeOverride": 0, "VideoEncoder": "x264", @@ -6187,6 +6346,7 @@ }, { "AlignAVStart": false, + "AudioAutomaticNamingBehavior": "unnamed", "AudioCopyMask": [ "copy:aac" ], @@ -6209,6 +6369,7 @@ } ], "AudioSecondaryEncoderMode": true, + "AudioTrackNamePassthru": true, "AudioTrackSelectionBehavior": "first", "ChapterMarkers": true, "ChildrenArray": [ @@ -6274,6 +6435,7 @@ "SubtitleLanguageList": [ ], "SubtitleTrackSelectionBehavior": "none", + "SubtitleTrackNamePassthru": true, "VideoAvgBitrate": 2250, "VideoColorMatrixCodeOverride": 0, "VideoEncoder": "x264", @@ -6297,6 +6459,7 @@ }, { "AlignAVStart": false, + "AudioAutomaticNamingBehavior": "unnamed", "AudioCopyMask": [ "copy:aac", "copy:ac3", @@ -6336,6 +6499,7 @@ } ], "AudioSecondaryEncoderMode": true, + "AudioTrackNamePassthru": true, "AudioTrackSelectionBehavior": "first", "ChapterMarkers": true, "ChildrenArray": [ @@ -6401,6 +6565,7 @@ "SubtitleLanguageList": [ ], "SubtitleTrackSelectionBehavior": "none", + "SubtitleTrackNamePassthru": true, "VideoAvgBitrate": 8000, "VideoColorMatrixCodeOverride": 0, "VideoEncoder": "x265_10bit", @@ -6424,6 +6589,7 @@ }, { "AlignAVStart": true, + "AudioAutomaticNamingBehavior": "unnamed", "AudioCopyMask": [ "copy:aac", "copy:ac3" @@ -6460,6 +6626,7 @@ } ], "AudioSecondaryEncoderMode": true, + "AudioTrackNamePassthru": true, "AudioTrackSelectionBehavior": "first", "ChapterMarkers": true, "ChildrenArray": [ @@ -6525,6 +6692,7 @@ "SubtitleLanguageList": [ ], "SubtitleTrackSelectionBehavior": "none", + "SubtitleTrackNamePassthru": true, "VideoAvgBitrate": 6000, "VideoColorMatrixCodeOverride": 0, "VideoEncoder": "x264", @@ -6548,6 +6716,7 @@ }, { "AlignAVStart": true, + "AudioAutomaticNamingBehavior": "unnamed", "AudioCopyMask": [ "copy:aac", "copy:ac3" @@ -6584,6 +6753,7 @@ } ], "AudioSecondaryEncoderMode": true, + "AudioTrackNamePassthru": true, "AudioTrackSelectionBehavior": "first", "ChapterMarkers": true, "ChildrenArray": [ @@ -6649,6 +6819,7 @@ "SubtitleLanguageList": [ ], "SubtitleTrackSelectionBehavior": "none", + "SubtitleTrackNamePassthru": true, "VideoAvgBitrate": 3000, "VideoColorMatrixCodeOverride": 0, "VideoEncoder": "x264", @@ -6672,6 +6843,7 @@ }, { "AlignAVStart": true, + "AudioAutomaticNamingBehavior": "unnamed", "AudioCopyMask": [ "copy:aac" ], @@ -6694,6 +6866,7 @@ } ], "AudioSecondaryEncoderMode": true, + "AudioTrackNamePassthru": true, "AudioTrackSelectionBehavior": "first", "ChapterMarkers": true, "ChildrenArray": [ @@ -6759,6 +6932,7 @@ "SubtitleLanguageList": [ ], "SubtitleTrackSelectionBehavior": "none", + "SubtitleTrackNamePassthru": true, "VideoAvgBitrate": 1800, "VideoColorMatrixCodeOverride": 0, "VideoEncoder": "x264", @@ -6782,6 +6956,7 @@ }, { "AlignAVStart": true, + "AudioAutomaticNamingBehavior": "unnamed", "AudioCopyMask": [ "copy:aac" ], @@ -6804,6 +6979,7 @@ } ], "AudioSecondaryEncoderMode": true, + "AudioTrackNamePassthru": true, "AudioTrackSelectionBehavior": "first", "ChapterMarkers": true, "ChildrenArray": [ @@ -6869,6 +7045,7 @@ "SubtitleLanguageList": [ ], "SubtitleTrackSelectionBehavior": "none", + "SubtitleTrackNamePassthru": true, "VideoAvgBitrate": 1500, "VideoColorMatrixCodeOverride": 0, "VideoEncoder": "x264", @@ -6892,6 +7069,7 @@ }, { "AlignAVStart": false, + "AudioAutomaticNamingBehavior": "unnamed", "AudioCopyMask": [ "copy:aac", "copy:ac3" @@ -6928,6 +7106,7 @@ } ], "AudioSecondaryEncoderMode": true, + "AudioTrackNamePassthru": true, "AudioTrackSelectionBehavior": "first", "ChapterMarkers": true, "ChildrenArray": [ @@ -6993,6 +7172,7 @@ "SubtitleLanguageList": [ ], "SubtitleTrackSelectionBehavior": "none", + "SubtitleTrackNamePassthru": true, "VideoAvgBitrate": 6000, "VideoColorMatrixCodeOverride": 0, "VideoEncoder": "x264", @@ -7023,6 +7203,7 @@ "ChildrenArray": [ { "AlignAVStart": false, + "AudioAutomaticNamingBehavior": "unnamed", "AudioCopyMask": [ ], "AudioEncoderFallback": "opus", @@ -7044,6 +7225,7 @@ } ], "AudioSecondaryEncoderMode": true, + "AudioTrackNamePassthru": true, "AudioTrackSelectionBehavior": "first", "ChapterMarkers": true, "ChildrenArray": [ @@ -7109,6 +7291,7 @@ "SubtitleLanguageList": [ ], "SubtitleTrackSelectionBehavior": "none", + "SubtitleTrackNamePassthru": true, "VideoAvgBitrate": 10500, "VideoColorMatrixCodeOverride": 0, "VideoEncoder": "svt_av1_10bit", @@ -7132,6 +7315,7 @@ }, { "AlignAVStart": false, + "AudioAutomaticNamingBehavior": "unnamed", "AudioCopyMask": [ "copy:aac" ], @@ -7154,6 +7338,7 @@ } ], "AudioSecondaryEncoderMode": true, + "AudioTrackNamePassthru": true, "AudioTrackSelectionBehavior": "first", "ChapterMarkers": true, "ChildrenArray": [ @@ -7219,6 +7404,7 @@ "SubtitleLanguageList": [ ], "SubtitleTrackSelectionBehavior": "none", + "SubtitleTrackNamePassthru": true, "VideoAvgBitrate": 13000, "VideoColorMatrixCodeOverride": 0, "VideoEncoder": "x265_10bit", @@ -7242,6 +7428,7 @@ }, { "AlignAVStart": false, + "AudioAutomaticNamingBehavior": "unnamed", "AudioCopyMask": [ "copy:aac" ], @@ -7264,6 +7451,7 @@ } ], "AudioSecondaryEncoderMode": true, + "AudioTrackNamePassthru": true, "AudioTrackSelectionBehavior": "first", "ChapterMarkers": true, "ChildrenArray": [ @@ -7329,6 +7517,7 @@ "SubtitleLanguageList": [ ], "SubtitleTrackSelectionBehavior": "none", + "SubtitleTrackNamePassthru": true, "VideoAvgBitrate": 2500, "VideoColorMatrixCodeOverride": 0, "VideoEncoder": "x265_10bit", @@ -7352,6 +7541,7 @@ }, { "AlignAVStart": false, + "AudioAutomaticNamingBehavior": "unnamed", "AudioCopyMask": [ "copy:aac" ], @@ -7374,6 +7564,7 @@ } ], "AudioSecondaryEncoderMode": true, + "AudioTrackNamePassthru": true, "AudioTrackSelectionBehavior": "first", "ChapterMarkers": true, "ChildrenArray": [ @@ -7439,6 +7630,7 @@ "SubtitleLanguageList": [ ], "SubtitleTrackSelectionBehavior": "none", + "SubtitleTrackNamePassthru": true, "VideoAvgBitrate": 2000, "VideoColorMatrixCodeOverride": 0, "VideoEncoder": "x265_10bit", @@ -7462,6 +7654,7 @@ }, { "AlignAVStart": false, + "AudioAutomaticNamingBehavior": "unnamed", "AudioCopyMask": [ "copy:aac" ], @@ -7484,6 +7677,7 @@ } ], "AudioSecondaryEncoderMode": true, + "AudioTrackNamePassthru": true, "AudioTrackSelectionBehavior": "first", "ChapterMarkers": true, "ChildrenArray": [ @@ -7549,6 +7743,7 @@ "SubtitleLanguageList": [ ], "SubtitleTrackSelectionBehavior": "none", + "SubtitleTrackNamePassthru": true, "VideoAvgBitrate": 1200, "VideoColorMatrixCodeOverride": 0, "VideoEncoder": "x265_10bit", @@ -7572,6 +7767,7 @@ }, { "AlignAVStart": false, + "AudioAutomaticNamingBehavior": "unnamed", "AudioCopyMask": [ "copy:aac" ], @@ -7594,6 +7790,7 @@ } ], "AudioSecondaryEncoderMode": true, + "AudioTrackNamePassthru": true, "AudioTrackSelectionBehavior": "first", "ChapterMarkers": true, "ChildrenArray": [ @@ -7659,6 +7856,7 @@ "SubtitleLanguageList": [ ], "SubtitleTrackSelectionBehavior": "none", + "SubtitleTrackNamePassthru": true, "VideoAvgBitrate": 1000, "VideoColorMatrixCodeOverride": 0, "VideoEncoder": "x265_10bit", @@ -7682,6 +7880,7 @@ }, { "AlignAVStart": false, + "AudioAutomaticNamingBehavior": "unnamed", "AudioCopyMask": [ "copy:aac" ], @@ -7704,6 +7903,7 @@ } ], "AudioSecondaryEncoderMode": true, + "AudioTrackNamePassthru": true, "AudioTrackSelectionBehavior": "first", "ChapterMarkers": true, "ChildrenArray": [ @@ -7769,6 +7969,7 @@ "SubtitleLanguageList": [ ], "SubtitleTrackSelectionBehavior": "none", + "SubtitleTrackNamePassthru": true, "VideoAvgBitrate": 12000, "VideoColorMatrixCodeOverride": 0, "VideoEncoder": "x264", @@ -7792,6 +7993,7 @@ }, { "AlignAVStart": false, + "AudioAutomaticNamingBehavior": "unnamed", "AudioCopyMask": [ "copy:aac" ], @@ -7814,6 +8016,7 @@ } ], "AudioSecondaryEncoderMode": true, + "AudioTrackNamePassthru": true, "AudioTrackSelectionBehavior": "first", "ChapterMarkers": true, "ChildrenArray": [ @@ -7879,6 +8082,7 @@ "SubtitleLanguageList": [ ], "SubtitleTrackSelectionBehavior": "none", + "SubtitleTrackNamePassthru": true, "VideoAvgBitrate": 6000, "VideoColorMatrixCodeOverride": 0, "VideoEncoder": "x264", @@ -7902,6 +8106,7 @@ }, { "AlignAVStart": false, + "AudioAutomaticNamingBehavior": "unnamed", "AudioCopyMask": [ "copy:aac" ], @@ -7924,6 +8129,7 @@ } ], "AudioSecondaryEncoderMode": true, + "AudioTrackNamePassthru": true, "AudioTrackSelectionBehavior": "first", "ChapterMarkers": true, "ChildrenArray": [ @@ -7989,6 +8195,7 @@ "SubtitleLanguageList": [ ], "SubtitleTrackSelectionBehavior": "none", + "SubtitleTrackNamePassthru": true, "VideoAvgBitrate": 3000, "VideoColorMatrixCodeOverride": 0, "VideoEncoder": "x264", @@ -8012,6 +8219,7 @@ }, { "AlignAVStart": false, + "AudioAutomaticNamingBehavior": "unnamed", "AudioCopyMask": [ "copy:aac" ], @@ -8034,6 +8242,7 @@ } ], "AudioSecondaryEncoderMode": true, + "AudioTrackNamePassthru": true, "AudioTrackSelectionBehavior": "first", "ChapterMarkers": true, "ChildrenArray": [ @@ -8099,6 +8308,7 @@ "SubtitleLanguageList": [ ], "SubtitleTrackSelectionBehavior": "none", + "SubtitleTrackNamePassthru": true, "VideoAvgBitrate": 1800, "VideoColorMatrixCodeOverride": 0, "VideoEncoder": "x264", @@ -8122,6 +8332,7 @@ }, { "AlignAVStart": false, + "AudioAutomaticNamingBehavior": "unnamed", "AudioCopyMask": [ "copy:aac" ], @@ -8144,6 +8355,7 @@ } ], "AudioSecondaryEncoderMode": true, + "AudioTrackNamePassthru": true, "AudioTrackSelectionBehavior": "first", "ChapterMarkers": true, "ChildrenArray": [ @@ -8209,6 +8421,7 @@ "SubtitleLanguageList": [ ], "SubtitleTrackSelectionBehavior": "none", + "SubtitleTrackNamePassthru": true, "VideoAvgBitrate": 1500, "VideoColorMatrixCodeOverride": 0, "VideoEncoder": "x264", @@ -8232,6 +8445,7 @@ }, { "AlignAVStart": false, + "AudioAutomaticNamingBehavior": "unnamed", "AudioCopyMask": [ ], "AudioEncoderFallback": "opus", @@ -8253,6 +8467,7 @@ } ], "AudioSecondaryEncoderMode": true, + "AudioTrackNamePassthru": true, "AudioTrackSelectionBehavior": "first", "ChapterMarkers": true, "ChildrenArray": [ @@ -8318,6 +8533,7 @@ "SubtitleLanguageList": [ ], "SubtitleTrackSelectionBehavior": "none", + "SubtitleTrackNamePassthru": true, "VideoAvgBitrate": 8000, "VideoColorMatrixCodeOverride": 0, "VideoEncoder": "vp9", @@ -8341,6 +8557,7 @@ }, { "AlignAVStart": false, + "AudioAutomaticNamingBehavior": "unnamed", "AudioCopyMask": [ ], "AudioEncoderFallback": "opus", @@ -8362,6 +8579,7 @@ } ], "AudioSecondaryEncoderMode": true, + "AudioTrackNamePassthru": true, "AudioTrackSelectionBehavior": "first", "ChapterMarkers": true, "ChildrenArray": [ @@ -8427,6 +8645,7 @@ "SubtitleLanguageList": [ ], "SubtitleTrackSelectionBehavior": "none", + "SubtitleTrackNamePassthru": true, "VideoAvgBitrate": 4500, "VideoColorMatrixCodeOverride": 0, "VideoEncoder": "vp9", @@ -8450,6 +8669,7 @@ }, { "AlignAVStart": false, + "AudioAutomaticNamingBehavior": "unnamed", "AudioCopyMask": [ ], "AudioEncoderFallback": "opus", @@ -8471,6 +8691,7 @@ } ], "AudioSecondaryEncoderMode": true, + "AudioTrackNamePassthru": true, "AudioTrackSelectionBehavior": "first", "ChapterMarkers": true, "ChildrenArray": [ @@ -8536,6 +8757,7 @@ "SubtitleLanguageList": [ ], "SubtitleTrackSelectionBehavior": "none", + "SubtitleTrackNamePassthru": true, "VideoAvgBitrate": 2500, "VideoColorMatrixCodeOverride": 0, "VideoEncoder": "vp9", @@ -8559,6 +8781,7 @@ }, { "AlignAVStart": false, + "AudioAutomaticNamingBehavior": "unnamed", "AudioCopyMask": [ ], "AudioEncoderFallback": "opus", @@ -8580,6 +8803,7 @@ } ], "AudioSecondaryEncoderMode": true, + "AudioTrackNamePassthru": true, "AudioTrackSelectionBehavior": "first", "ChapterMarkers": true, "ChildrenArray": [ @@ -8645,6 +8869,7 @@ "SubtitleLanguageList": [ ], "SubtitleTrackSelectionBehavior": "none", + "SubtitleTrackNamePassthru": true, "VideoAvgBitrate": 1500, "VideoColorMatrixCodeOverride": 0, "VideoEncoder": "vp9", @@ -8668,6 +8893,7 @@ }, { "AlignAVStart": false, + "AudioAutomaticNamingBehavior": "unnamed", "AudioCopyMask": [ ], "AudioEncoderFallback": "opus", @@ -8689,6 +8915,7 @@ } ], "AudioSecondaryEncoderMode": true, + "AudioTrackNamePassthru": true, "AudioTrackSelectionBehavior": "first", "ChapterMarkers": true, "ChildrenArray": [ @@ -8754,6 +8981,7 @@ "SubtitleLanguageList": [ ], "SubtitleTrackSelectionBehavior": "none", + "SubtitleTrackNamePassthru": true, "VideoAvgBitrate": 1250, "VideoColorMatrixCodeOverride": 0, "VideoEncoder": "vp9", @@ -8784,6 +9012,7 @@ "ChildrenArray": [ { "AlignAVStart": false, + "AudioAutomaticNamingBehavior": "unnamed", "AudioCopyMask": [ "copy:aac" ], @@ -8806,6 +9035,7 @@ } ], "AudioSecondaryEncoderMode": true, + "AudioTrackNamePassthru": true, "AudioTrackSelectionBehavior": "first", "ChapterMarkers": true, "ChildrenArray": [ @@ -8871,6 +9101,7 @@ "SubtitleLanguageList": [ ], "SubtitleTrackSelectionBehavior": "none", + "SubtitleTrackNamePassthru": true, "VideoAvgBitrate": 6500, "VideoColorMatrixCodeOverride": 0, "VideoEncoder": "qsv_av1_10bit", @@ -8894,6 +9125,7 @@ }, { "AlignAVStart": false, + "AudioAutomaticNamingBehavior": "unnamed", "AudioCopyMask": [ "copy:aac" ], @@ -8916,6 +9148,7 @@ } ], "AudioSecondaryEncoderMode": true, + "AudioTrackNamePassthru": true, "AudioTrackSelectionBehavior": "first", "ChapterMarkers": true, "ChildrenArray": [ @@ -8981,6 +9214,7 @@ "SubtitleLanguageList": [ ], "SubtitleTrackSelectionBehavior": "none", + "SubtitleTrackNamePassthru": true, "VideoAvgBitrate": 10500, "VideoColorMatrixCodeOverride": 0, "VideoEncoder": "nvenc_h265", @@ -9004,6 +9238,7 @@ }, { "AlignAVStart": false, + "AudioAutomaticNamingBehavior": "unnamed", "AudioCopyMask": [ "copy:aac" ], @@ -9026,6 +9261,7 @@ } ], "AudioSecondaryEncoderMode": true, + "AudioTrackNamePassthru": true, "AudioTrackSelectionBehavior": "first", "ChapterMarkers": true, "ChildrenArray": [ @@ -9091,6 +9327,7 @@ "SubtitleLanguageList": [ ], "SubtitleTrackSelectionBehavior": "none", + "SubtitleTrackNamePassthru": true, "VideoAvgBitrate": 3750, "VideoColorMatrixCodeOverride": 0, "VideoEncoder": "nvenc_h265", @@ -9114,6 +9351,7 @@ }, { "AlignAVStart": false, + "AudioAutomaticNamingBehavior": "unnamed", "AudioCopyMask": [ "copy:aac" ], @@ -9136,6 +9374,7 @@ } ], "AudioSecondaryEncoderMode": true, + "AudioTrackNamePassthru": true, "AudioTrackSelectionBehavior": "first", "ChapterMarkers": true, "ChildrenArray": [ @@ -9201,6 +9440,7 @@ "SubtitleLanguageList": [ ], "SubtitleTrackSelectionBehavior": "none", + "SubtitleTrackNamePassthru": true, "VideoAvgBitrate": 8000, "VideoColorMatrixCodeOverride": 0, "VideoEncoder": "qsv_h265", @@ -9224,6 +9464,7 @@ }, { "AlignAVStart": false, + "AudioAutomaticNamingBehavior": "unnamed", "AudioCopyMask": [ "copy:aac" ], @@ -9246,6 +9487,7 @@ } ], "AudioSecondaryEncoderMode": true, + "AudioTrackNamePassthru": true, "AudioTrackSelectionBehavior": "first", "ChapterMarkers": true, "ChildrenArray": [ @@ -9311,6 +9553,7 @@ "SubtitleLanguageList": [ ], "SubtitleTrackSelectionBehavior": "none", + "SubtitleTrackNamePassthru": true, "VideoAvgBitrate": 2500, "VideoColorMatrixCodeOverride": 0, "VideoEncoder": "qsv_h265", @@ -9334,6 +9577,7 @@ }, { "AlignAVStart": false, + "AudioAutomaticNamingBehavior": "unnamed", "AudioCopyMask": [ "copy:aac" ], @@ -9356,6 +9600,7 @@ } ], "AudioSecondaryEncoderMode": true, + "AudioTrackNamePassthru": true, "AudioTrackSelectionBehavior": "first", "ChapterMarkers": true, "ChildrenArray": [ @@ -9421,6 +9666,7 @@ "SubtitleLanguageList": [ ], "SubtitleTrackSelectionBehavior": "none", + "SubtitleTrackNamePassthru": true, "VideoAvgBitrate": 12500, "VideoColorMatrixCodeOverride": 0, "VideoEncoder": "vce_h265", @@ -9444,6 +9690,7 @@ }, { "AlignAVStart": false, + "AudioAutomaticNamingBehavior": "unnamed", "AudioCopyMask": [ "copy:aac" ], @@ -9466,6 +9713,7 @@ } ], "AudioSecondaryEncoderMode": true, + "AudioTrackNamePassthru": true, "AudioTrackSelectionBehavior": "first", "ChapterMarkers": true, "ChildrenArray": [ @@ -9531,6 +9779,7 @@ "SubtitleLanguageList": [ ], "SubtitleTrackSelectionBehavior": "none", + "SubtitleTrackNamePassthru": true, "VideoAvgBitrate": 7250, "VideoColorMatrixCodeOverride": 0, "VideoEncoder": "vce_h265", @@ -9554,6 +9803,7 @@ }, { "AlignAVStart": false, + "AudioAutomaticNamingBehavior": "unnamed", "AudioCopyMask": [ "copy:aac" ], @@ -9576,6 +9826,7 @@ } ], "AudioSecondaryEncoderMode": true, + "AudioTrackNamePassthru": true, "AudioTrackSelectionBehavior": "first", "ChapterMarkers": true, "ChildrenArray": [ @@ -9641,6 +9892,7 @@ "SubtitleLanguageList": [ ], "SubtitleTrackSelectionBehavior": "none", + "SubtitleTrackNamePassthru": true, "VideoAvgBitrate": 9500, "VideoColorMatrixCodeOverride": 0, "VideoEncoder": "mf_h265", @@ -9664,6 +9916,7 @@ }, { "AlignAVStart": false, + "AudioAutomaticNamingBehavior": "unnamed", "AudioCopyMask": [ "copy:aac" ], @@ -9686,6 +9939,7 @@ } ], "AudioSecondaryEncoderMode": true, + "AudioTrackNamePassthru": true, "AudioTrackSelectionBehavior": "first", "ChapterMarkers": true, "ChildrenArray": [ @@ -9751,6 +10005,7 @@ "SubtitleLanguageList": [ ], "SubtitleTrackSelectionBehavior": "none", + "SubtitleTrackNamePassthru": true, "VideoAvgBitrate": 5500, "VideoColorMatrixCodeOverride": 0, "VideoEncoder": "mf_h265", @@ -9774,6 +10029,7 @@ }, { "AlignAVStart": false, + "AudioAutomaticNamingBehavior": "unnamed", "AudioCopyMask": [ "copy:aac" ], @@ -9796,6 +10052,7 @@ } ], "AudioSecondaryEncoderMode": true, + "AudioTrackNamePassthru": true, "AudioTrackSelectionBehavior": "first", "ChapterMarkers": true, "ChildrenArray": [ @@ -9861,6 +10118,7 @@ "SubtitleLanguageList": [ ], "SubtitleTrackSelectionBehavior": "none", + "SubtitleTrackNamePassthru": true, "VideoAvgBitrate": 17500, "VideoColorMatrixCodeOverride": 0, "VideoEncoder": "vt_h265_10bit", @@ -9884,6 +10142,7 @@ }, { "AlignAVStart": false, + "AudioAutomaticNamingBehavior": "unnamed", "AudioCopyMask": [ "copy:aac" ], @@ -9906,6 +10165,7 @@ } ], "AudioSecondaryEncoderMode": true, + "AudioTrackNamePassthru": true, "AudioTrackSelectionBehavior": "first", "ChapterMarkers": true, "ChildrenArray": [ @@ -9971,6 +10231,7 @@ "SubtitleLanguageList": [ ], "SubtitleTrackSelectionBehavior": "none", + "SubtitleTrackNamePassthru": true, "VideoAvgBitrate": 5500, "VideoColorMatrixCodeOverride": 0, "VideoEncoder": "vt_h265_10bit", @@ -10001,6 +10262,7 @@ "ChildrenArray": [ { "AlignAVStart": false, + "AudioAutomaticNamingBehavior": "unnamed", "AudioCopyMask": [ "copy:aac" ], @@ -10023,6 +10285,7 @@ } ], "AudioSecondaryEncoderMode": false, + "AudioTrackNamePassthru": true, "AudioTrackSelectionBehavior": "all", "ChapterMarkers": true, "ChildrenArray": [ @@ -10088,6 +10351,7 @@ "SubtitleLanguageList": [ ], "SubtitleTrackSelectionBehavior": "none", + "SubtitleTrackNamePassthru": true, "VideoAvgBitrate": 120000, "VideoColorMatrixCodeOverride": 0, "VideoEncoder": "x264", @@ -10111,6 +10375,7 @@ }, { "AlignAVStart": false, + "AudioAutomaticNamingBehavior": "unnamed", "AudioCopyMask": [ "copy:aac" ], @@ -10133,6 +10398,7 @@ } ], "AudioSecondaryEncoderMode": false, + "AudioTrackNamePassthru": true, "AudioTrackSelectionBehavior": "all", "ChapterMarkers": true, "ChildrenArray": [ @@ -10198,6 +10464,7 @@ "SubtitleLanguageList": [ ], "SubtitleTrackSelectionBehavior": "none", + "SubtitleTrackNamePassthru": true, "VideoAvgBitrate": 60000, "VideoColorMatrixCodeOverride": 0, "VideoEncoder": "x264", @@ -10221,6 +10488,7 @@ }, { "AlignAVStart": false, + "AudioAutomaticNamingBehavior": "unnamed", "AudioCopyMask": [ "copy:aac" ], @@ -10243,6 +10511,7 @@ } ], "AudioSecondaryEncoderMode": false, + "AudioTrackNamePassthru": true, "AudioTrackSelectionBehavior": "all", "ChapterMarkers": true, "ChildrenArray": [ @@ -10308,6 +10577,7 @@ "SubtitleLanguageList": [ ], "SubtitleTrackSelectionBehavior": "none", + "SubtitleTrackNamePassthru": true, "VideoAvgBitrate": 30000, "VideoColorMatrixCodeOverride": 0, "VideoEncoder": "x264", @@ -10331,6 +10601,7 @@ }, { "AlignAVStart": false, + "AudioAutomaticNamingBehavior": "unnamed", "AudioCopyMask": [ "copy:aac" ], @@ -10353,6 +10624,7 @@ } ], "AudioSecondaryEncoderMode": false, + "AudioTrackNamePassthru": true, "AudioTrackSelectionBehavior": "all", "ChapterMarkers": true, "ChildrenArray": [ @@ -10418,6 +10690,7 @@ "SubtitleLanguageList": [ ], "SubtitleTrackSelectionBehavior": "none", + "SubtitleTrackNamePassthru": true, "VideoAvgBitrate": 15000, "VideoColorMatrixCodeOverride": 0, "VideoEncoder": "x264", @@ -10441,6 +10714,7 @@ }, { "AlignAVStart": false, + "AudioAutomaticNamingBehavior": "unnamed", "AudioCopyMask": [ "copy:aac", "copy:ac3", @@ -10473,6 +10747,7 @@ } ], "AudioSecondaryEncoderMode": false, + "AudioTrackNamePassthru": true, "AudioTrackSelectionBehavior": "all", "ChapterMarkers": true, "ChildrenArray": [ @@ -10539,6 +10814,7 @@ "any" ], "SubtitleTrackSelectionBehavior": "all", + "SubtitleTrackNamePassthru": true, "VideoAvgBitrate": 0, "VideoColorMatrixCodeOverride": 0, "VideoEncoder": "ffv1", diff --git a/preset/preset_builtin.list b/preset/preset_builtin.list index f8379aed7..8758057b4 100644 --- a/preset/preset_builtin.list +++ b/preset/preset_builtin.list @@ -1,6 +1,6 @@
- + diff --git a/preset/preset_cli_default.json b/preset/preset_cli_default.json index 815b3bd8b..906315d72 100644 --- a/preset/preset_cli_default.json +++ b/preset/preset_cli_default.json @@ -2,6 +2,7 @@ { "ChildrenArray": [ { + "AudioAutomaticNamingBehavior": "unnamed", "AudioCopyMask": [ "copy:aac", "copy:ac3", @@ -31,6 +32,7 @@ } ], "AudioSecondaryEncoderMode": true, + "AudioTrackNamePassthru": true, "AudioTrackSelectionBehavior": "first", "ChapterMarkers": true, "ChildrenArray": [ @@ -94,6 +96,7 @@ "SubtitleBurnDVDSub": false, "SubtitleLanguageList": [ ], + "SubtitleTrackNamePassthru": true, "SubtitleTrackSelectionBehavior": "none", "VideoAvgBitrate": 6000, "VideoColorMatrixCodeOverride": 0, diff --git a/preset/preset_template.json b/preset/preset_template.json index a030ea89e..8d325e2f6 100644 --- a/preset/preset_template.json +++ b/preset/preset_template.json @@ -1,5 +1,6 @@ { "AlignAVStart": false, + "AudioAutomaticNamingBehavior": "unnamed", "AudioCopyMask": [ "copy:aac", "copy:ac3", @@ -31,6 +32,7 @@ ], "AudioSecondaryEncoderMode": true, "AudioTrackSelectionBehavior": "first", + "AudioTrackNamePassthru": true, "ChapterMarkers": true, "ChildrenArray": [ ], @@ -105,6 +107,7 @@ "SubtitleLanguageList": [ ], "SubtitleTrackSelectionBehavior": "none", + "SubtitleTrackNamePassthru": true, "VideoAvgBitrate": 1800, "VideoColorMatrixCodeOverride": 0, "VideoEncoder": "x264", diff --git a/test/test.c b/test/test.c index 4b69d92b0..e9a91e367 100644 --- a/test/test.c +++ b/test/test.c @@ -60,6 +60,7 @@ #define DEBLOCK_DEFAULT_PRESET "medium" #define COLORSPACE_DEFAULT_PRESET "bt709" #define HDR_DYNAMIC_METADATA_DEFAULT_PRESET "all" +#define AUDIO_AUTONAMING_BEHAVIOUR_DEFAULT_PRESET "unnamed" /* Options */ static int debug = HB_DEBUG_ALL; @@ -215,6 +216,9 @@ static int keep_duplicate_titles = 0; static int hdr_dynamic_metadata_disable = 0; static char * hdr_dynamic_metadata = NULL; static int metadata_passthru = -1; +static int audio_name_passthru = -1; +static char * audio_autonaming_behaviour = NULL; +static int sub_name_passthru = -1; /* Exit cleanly on Ctrl-C */ static volatile hb_error_code done_error = HB_ERROR_NONE; @@ -1675,6 +1679,14 @@ static void ShowHelp(void) } } fprintf(out, +" --keep-aname Passthru the source audio track(s) name(s).\n" +" --no-keep-aname Disable the source audio track(s) name(s) passthru.\n" +" --automatic-naming-behaviour\n" +" Set the audio track(s) automatic naming behaviour:\n" +" off\n" +" unnamed\n" +" all\n" +" Disable the source audio track(s) name(s) passthru.\n" " -A, --aname Set audio track name(s).\n" " Separate tracks by commas.\n" "\n" @@ -1901,6 +1913,8 @@ static void ShowHelp(void) " or less is selected. This should locate subtitles\n" " for short foreign language segments. Best used in\n" " conjunction with --subtitle-forced.\n" +" --keep-subname Passthru the source subtitle track(s) name(s).\n" +" --no-keep-subname Disable the source subtitle track(s) name(s) passthru.\n" " -S, --subname Set subtitle track name(s).\n" " Separate tracks by commas.\n" " -F, --subtitle-forced[=string]\n" @@ -2251,6 +2265,7 @@ static int ParseOptions( int argc, char ** argv ) #define KEEP_DUPLICATE_TITLES 332 #define MAX_DURATION 333 #define HDR_DYNAMIC_METADATA 334 + #define AUDIO_AUTONAMING_BEHAVIOUR 335 for( ;; ) { @@ -2429,7 +2444,12 @@ static int ParseOptions( int argc, char ** argv ) { "preset-export-description", required_argument, NULL, PRESET_EXPORT_DESC }, { "queue-import-file", required_argument, NULL, QUEUE_IMPORT }, + { "keep-aname", no_argument, &audio_name_passthru, 1 }, + { "no-keep-aname", no_argument, &audio_name_passthru, 0 }, + { "automatic-naming-behaviour", required_argument, NULL, AUDIO_AUTONAMING_BEHAVIOUR }, { "aname", required_argument, NULL, 'A' }, + { "keep-subname", no_argument, &sub_name_passthru, 1 }, + { "no-keep-subname", no_argument, &sub_name_passthru, 0 }, { "subname", required_argument, NULL, 'S' }, { "color-matrix",required_argument, NULL, 'M' }, { "previews", required_argument, NULL, PREVIEWS }, @@ -3277,6 +3297,17 @@ static int ParseOptions( int argc, char ** argv ) hdr_dynamic_metadata = strdup(HDR_DYNAMIC_METADATA_DEFAULT_PRESET); } break; + case AUDIO_AUTONAMING_BEHAVIOUR: + free(audio_autonaming_behaviour); + if (optarg != NULL) + { + audio_autonaming_behaviour = strdup(optarg); + } + else + { + audio_autonaming_behaviour = strdup(AUDIO_AUTONAMING_BEHAVIOUR_DEFAULT_PRESET); + } + break; case ':': fprintf( stderr, "missing parameter (%s)\n", argv[cur_optind] ); return -1; @@ -3932,6 +3963,10 @@ static hb_dict_t * PreparePreset(const char *preset_name) hb_dict_set(preset, "SubtitleTrackSelectionBehavior", hb_value_string(selection)); } + if (sub_name_passthru != -1) + { + hb_dict_set(preset, "SubtitleTrackNamePassthru", hb_value_bool(sub_name_passthru)); + } if (audio_copy_list != NULL) { @@ -3990,6 +4025,14 @@ static hb_dict_t * PreparePreset(const char *preset_name) hb_dict_set(preset, "AudioTrackSelectionBehavior", hb_value_string(audio_all == 1 ? "all" : "first")); } + if (audio_name_passthru != -1) + { + hb_dict_set(preset, "AudioTrackNamePassthru", hb_value_bool(audio_name_passthru)); + } + if (audio_autonaming_behaviour != NULL) + { + hb_dict_set(preset, "AudioAutomaticNamingBehavior", hb_value_string(audio_autonaming_behaviour)); + } // Audio overrides if (atracks == NULL && audio_all != 1 && ( @@ -4805,7 +4848,7 @@ static hb_dict_t * PreparePreset(const char *preset_name) } -static int add_sub(hb_value_array_t *list, hb_title_t *title, int track, int out_track, int *one_burned) +static int add_sub(hb_value_array_t *list, hb_title_t *title, int track, int out_track, int *one_burned, int keep_name) { hb_subtitle_t *subtitle; // Check that the track exists @@ -4834,11 +4877,18 @@ static int add_sub(hb_value_array_t *list, hb_title_t *title, int track, int out } *one_burned = 1; } + + const char *name = keep_name && subtitle->name != NULL && subtitle->name[0] != 0 ? subtitle->name : NULL; + hb_dict_t *subtitle_dict = hb_dict_init(); hb_dict_set(subtitle_dict, "Track", hb_value_int(track)); hb_dict_set(subtitle_dict, "Default", hb_value_bool(def)); hb_dict_set(subtitle_dict, "Forced", hb_value_bool(force)); hb_dict_set(subtitle_dict, "Burn", hb_value_bool(burn)); + if (name) + { + hb_dict_set(subtitle_dict, "Name", hb_value_string(name)); + } hb_value_array_append(list, subtitle_dict); return 0; } @@ -5411,13 +5461,45 @@ PrepareJob(hb_handle_t *h, hb_title_t *title, hb_dict_t *preset_dict) fprintf(stderr, "Dropping excess audio track names\n"); } } - // If exactly one name was specified, apply it to the reset + // If exactly one name was specified, apply it to the rest // of the tracks if (ii == 1 && *anames[0]) for (; ii < track_count; ii++) { audio_dict = hb_value_array_get(audio_array, ii); hb_dict_set(audio_dict, "Name", hb_value_string(anames[0])); } + + int keep_name = hb_value_get_bool(hb_dict_get(preset_dict, "AudioTrackNamePassthru")); + hb_audio_autonaming_behavior_t behavior = HB_AUDIO_AUTONAMING_NONE; + + const char *behavior_name = hb_value_get_string(hb_dict_get(preset_dict, "AudioAutomaticNamingBehavior")); + behavior = hb_audio_autonaming_behavior_get_from_name(behavior_name); + + for (ii = 0; ii < track_count; ii++) + { + audio_dict = hb_value_array_get(audio_array, ii); + + if (hb_dict_get(audio_dict, "Name") == NULL) + { + int track = hb_value_get_int(hb_dict_get(audio_dict, "Track")); + hb_audio_config_t *audio = hb_list_audio_config_item(title->list_audio, track); + + if (audio != NULL) + { + const char *mixdown_name = hb_dict_get_string(audio_dict, "Mixdown"); + int mixdown = hb_mixdown_get_from_name(mixdown_name); + + const char *name = hb_audio_name_generate(audio->in.name, + audio->in.channel_layout, + mixdown, keep_name, behavior); + + if (name) + { + hb_dict_set(audio_dict, "Name", hb_value_string(name)); + } + } + } + } } int one_burned = 0; @@ -5446,13 +5528,15 @@ PrepareJob(hb_handle_t *h, hb_title_t *title, hb_dict_t *preset_dict) continue; } + int keep_name = hb_value_get_bool(hb_dict_get(preset_dict, "SubtitleTrackNamePassthru")); + int first, last, track; if (sscanf(subtracks[ii], "%d-%d", &first, &last ) == 2) { for (track = first - 1; track < last; track++) { if (add_sub(subtitle_array, title, track - 1, - out_track + 1, &one_burned) == 0) + out_track + 1, &one_burned, keep_name) == 0) { out_track++; } @@ -5461,7 +5545,7 @@ PrepareJob(hb_handle_t *h, hb_title_t *title, hb_dict_t *preset_dict) else if (sscanf(subtracks[ii], "%d", &track) == 1) { if (add_sub(subtitle_array, title, track - 1, - out_track + 1, &one_burned) == 0) + out_track + 1, &one_burned, keep_name) == 0) { out_track++; } diff --git a/win/CS/HandBrake.Interop/Interop/HandBrakeEncoderHelpers.cs b/win/CS/HandBrake.Interop/Interop/HandBrakeEncoderHelpers.cs index 6998e793f..4e276653c 100644 --- a/win/CS/HandBrake.Interop/Interop/HandBrakeEncoderHelpers.cs +++ b/win/CS/HandBrake.Interop/Interop/HandBrakeEncoderHelpers.cs @@ -12,6 +12,7 @@ namespace HandBrake.Interop.Interop using System; using System.Collections.Generic; using System.Linq; + using System.Runtime.InteropServices; using HandBrake.Interop.Interop.HbLib; using HandBrake.Interop.Interop.Helpers; @@ -784,5 +785,12 @@ namespace HandBrake.Interop.Interop return new List(); } + + public static string GetAutonameAudioTrack(string name, ulong layout, int mixdown, bool keep_name, int behaviour) + { + IntPtr nameptr = Marshal.StringToHGlobalAnsi(name); + + return Marshal.PtrToStringUTF8((IntPtr)HBFunctions.hb_audio_name_generate(nameptr, layout, mixdown, keep_name ? 1 : 0, behaviour)); + } } } diff --git a/win/CS/HandBrake.Interop/Interop/HbLib/HbFunctions.cs b/win/CS/HandBrake.Interop/Interop/HbLib/HbFunctions.cs index 2dd67bb06..c3d2627d4 100644 --- a/win/CS/HandBrake.Interop/Interop/HbLib/HbFunctions.cs +++ b/win/CS/HandBrake.Interop/Interop/HbLib/HbFunctions.cs @@ -405,8 +405,6 @@ namespace HandBrake.Interop.Interop.HbLib } - - public static IntPtr hb_video_encoder_get_presets(int encoder) { return IsArmDevice ? HbFunctionsArm.hb_video_encoder_get_presets(encoder) : HBFunctions64.hb_video_encoder_get_presets(encoder); @@ -652,5 +650,17 @@ namespace HandBrake.Interop.Interop.HbLib return IsArmDevice ? HbFunctionsArm.hb_get_preview3_json(hbHandle, preview_idx, job_dict) : HBFunctions64.hb_get_preview3_json(hbHandle, preview_idx, job_dict); } + + public static int hb_audio_autonaming_behavior_get_from_name(IntPtr name) + { + return IsArmDevice ? HbFunctionsArm.hb_audio_autonaming_behavior_get_from_name(name) + : HBFunctions64.hb_audio_autonaming_behavior_get_from_name(name); + } + + public static IntPtr hb_audio_name_generate(IntPtr name, ulong layout, int mixdown, int keep_name, int behaviour) + { + return IsArmDevice ? HbFunctionsArm.hb_audio_name_generate(name, layout, mixdown, keep_name, behaviour) + : HBFunctions64.hb_audio_name_generate(name, layout, mixdown, keep_name, behaviour); + } } } diff --git a/win/CS/HandBrake.Interop/Interop/HbLib/HbFunctions64.cs b/win/CS/HandBrake.Interop/Interop/HbLib/HbFunctions64.cs index bf77bd550..ff1988763 100644 --- a/win/CS/HandBrake.Interop/Interop/HbLib/HbFunctions64.cs +++ b/win/CS/HandBrake.Interop/Interop/HbLib/HbFunctions64.cs @@ -140,6 +140,12 @@ namespace HandBrake.Interop.Interop.HbLib [DllImport("hb", EntryPoint = "hb_audio_bitrate_get_next", CallingConvention = CallingConvention.Cdecl)] public static extern IntPtr hb_audio_bitrate_get_next(IntPtr last); + [DllImport("hb", EntryPoint = "hb_audio_autonaming_behavior_get_from_name", CallingConvention = CallingConvention.Cdecl)] + public static extern int hb_audio_autonaming_behavior_get_from_name(IntPtr name); + + [DllImport("hb", EntryPoint = "hb_audio_name_generate", CallingConvention = CallingConvention.Cdecl)] + public static extern IntPtr hb_audio_name_generate(IntPtr name, ulong layout, int mixdown, int keep_name, int behaviour); + [DllImport("hb", EntryPoint = "hb_video_quality_get_limits", CallingConvention = CallingConvention.Cdecl)] public static extern void hb_video_quality_get_limits(uint codec, ref float low, ref float high, ref float granularity, ref int direction); @@ -355,5 +361,9 @@ namespace HandBrake.Interop.Interop.HbLib // hb_get_preview3(hb_handle_t* h, int picture, const char * job_dict) [DllImport("hb", EntryPoint = "hb_get_preview3_json", CallingConvention = CallingConvention.Cdecl)] public static extern IntPtr hb_get_preview3_json(IntPtr hbHandle, int preview_idx, [In][MarshalAs(UnmanagedType.LPStr)] string job_dict); + + + + } } diff --git a/win/CS/HandBrake.Interop/Interop/HbLib/HbFunctionsArm.cs b/win/CS/HandBrake.Interop/Interop/HbLib/HbFunctionsArm.cs index fe18c7be4..08f4bb1d0 100644 --- a/win/CS/HandBrake.Interop/Interop/HbLib/HbFunctionsArm.cs +++ b/win/CS/HandBrake.Interop/Interop/HbLib/HbFunctionsArm.cs @@ -140,6 +140,12 @@ namespace HandBrake.Interop.Interop.HbLib [DllImport("hb_a64", EntryPoint = "hb_audio_bitrate_get_next", CallingConvention = CallingConvention.Cdecl)] public static extern IntPtr hb_audio_bitrate_get_next(IntPtr last); + [DllImport("hb_a64", EntryPoint = "hb_audio_autonaming_behavior_get_from_name", CallingConvention = CallingConvention.Cdecl)] + public static extern int hb_audio_autonaming_behavior_get_from_name(IntPtr name); + + [DllImport("hb_a64", EntryPoint = "hb_audio_name_generate", CallingConvention = CallingConvention.Cdecl)] + public static extern IntPtr hb_audio_name_generate(IntPtr name, ulong layout, int mixdown, int keep_name, int behaviour); + [DllImport("hb_a64", EntryPoint = "hb_video_quality_get_limits", CallingConvention = CallingConvention.Cdecl)] public static extern void hb_video_quality_get_limits(uint codec, ref float low, ref float high, ref float granularity, ref int direction); diff --git a/win/CS/HandBrake.Interop/Interop/Json/Presets/HBPreset.cs b/win/CS/HandBrake.Interop/Interop/Json/Presets/HBPreset.cs index 20e42915c..7f87c518b 100644 --- a/win/CS/HandBrake.Interop/Interop/Json/Presets/HBPreset.cs +++ b/win/CS/HandBrake.Interop/Interop/Json/Presets/HBPreset.cs @@ -9,7 +9,6 @@ namespace HandBrake.Interop.Interop.Json.Presets { - using System; using System.Collections.Generic; public class HBPreset @@ -46,6 +45,10 @@ namespace HandBrake.Interop.Interop.Json.Presets /// public string AudioTrackSelectionBehavior { get; set; } + public bool AudioTrackNamePassthru { get; set; } + + public string AudioAutomaticNamingBehavior { get; set; } + /// /// Gets or sets a value indicating whether chapter markers. /// @@ -316,6 +319,8 @@ namespace HandBrake.Interop.Interop.Json.Presets /// public string SubtitleTrackSelectionBehavior { get; set; } + public bool SubtitleTrackNamePassthru { get; set; } + /// /// Gets or sets the video avg bitrate. /// diff --git a/win/CS/HandBrakeWPF/Model/Audio/AudioBehaviours.cs b/win/CS/HandBrakeWPF/Model/Audio/AudioBehaviours.cs index f39aaca5f..e1133baad 100644 --- a/win/CS/HandBrakeWPF/Model/Audio/AudioBehaviours.cs +++ b/win/CS/HandBrakeWPF/Model/Audio/AudioBehaviours.cs @@ -13,6 +13,7 @@ namespace HandBrakeWPF.Model.Audio using System.ComponentModel; using System.Linq; + using HandBrake.App.Core.Utilities; using HandBrake.Interop.Interop; using HandBrake.Interop.Interop.Interfaces.Model; using HandBrake.Interop.Interop.Interfaces.Model.Encoders; @@ -24,7 +25,11 @@ namespace HandBrakeWPF.Model.Audio private AudioBehaviourModes selectedBehaviour; private BindingList selectedLanguages; private AudioTrackDefaultsMode trackDefaultBehaviour; - + + private AudioTrackNamingBehaviour audioAutomaticNamingBehavior; + + private bool audioTrackNamePassthru; + public AudioBehaviours() { this.SelectedBehaviour = AudioBehaviourModes.None; @@ -33,6 +38,7 @@ namespace HandBrakeWPF.Model.Audio this.BehaviourTracks = new BindingList(); this.AllowedPassthruOptions = new BindingList(); this.AudioFallbackEncoder = HandBrakeEncoderHelpers.GetAudioEncoder(HBAudioEncoder.AvAac); + } public AudioBehaviours(AudioBehaviours behaviours) @@ -43,6 +49,8 @@ namespace HandBrakeWPF.Model.Audio this.BehaviourTracks = behaviours.BehaviourTracks; this.AllowedPassthruOptions = new BindingList(behaviours.AllowedPassthruOptions); this.AudioFallbackEncoder = behaviours.AudioFallbackEncoder; + this.AudioTrackNamePassthru = behaviours.AudioTrackNamePassthru; + this.AudioAutomaticNamingBehavior = behaviours.AudioAutomaticNamingBehavior; } public AudioBehaviourModes SelectedBehaviour @@ -102,5 +110,35 @@ namespace HandBrakeWPF.Model.Audio public IList AllowedPassthruOptions { get; set; } public HBAudioEncoder AudioFallbackEncoder { get; set; } + + public bool AudioTrackNamePassthru + { + get => this.audioTrackNamePassthru; + set + { + if (value == this.audioTrackNamePassthru) + { + return; + } + + this.audioTrackNamePassthru = value; + this.NotifyOfPropertyChange(() => this.AudioTrackNamePassthru); + } + } + + public AudioTrackNamingBehaviour AudioAutomaticNamingBehavior + { + get => this.audioAutomaticNamingBehavior; + set + { + if (value == this.audioAutomaticNamingBehavior) + { + return; + } + + this.audioAutomaticNamingBehavior = value; + this.NotifyOfPropertyChange(() => this.AudioAutomaticNamingBehavior); + } + } } } diff --git a/win/CS/HandBrakeWPF/Model/Audio/AudioTrackNamingBehaviour.cs b/win/CS/HandBrakeWPF/Model/Audio/AudioTrackNamingBehaviour.cs new file mode 100644 index 000000000..af58f5f43 --- /dev/null +++ b/win/CS/HandBrakeWPF/Model/Audio/AudioTrackNamingBehaviour.cs @@ -0,0 +1,22 @@ +using HandBrakeWPF.Properties; + +namespace HandBrakeWPF.Model.Audio +{ + using HandBrake.Interop.Attributes; + + public enum AudioTrackNamingBehaviour + { + + [DisplayName(typeof(Resources), "AudioTrackNaming_None")] + [ShortName("none")] + None, + + [DisplayName(typeof(Resources), "AudioTrackNaming_Unnamed")] + [ShortName("unnamed")] + Unnamed, + + [DisplayName(typeof(Resources), "AudioTrackNaming_All")] + [ShortName("All")] + All, + } +} diff --git a/win/CS/HandBrakeWPF/Model/Subtitles/SubtitleBehaviours.cs b/win/CS/HandBrakeWPF/Model/Subtitles/SubtitleBehaviours.cs index e56482471..40ef92db9 100644 --- a/win/CS/HandBrakeWPF/Model/Subtitles/SubtitleBehaviours.cs +++ b/win/CS/HandBrakeWPF/Model/Subtitles/SubtitleBehaviours.cs @@ -24,6 +24,8 @@ namespace HandBrakeWPF.Model.Subtitles private bool addClosedCaptions; private SubtitleBurnInBehaviourModes selectedBurnInBehaviour; + private bool subtitleTrackNamePassthru; + public SubtitleBehaviours() { this.SelectedBehaviour = SubtitleBehaviourModes.None; @@ -38,6 +40,7 @@ namespace HandBrakeWPF.Model.Subtitles this.SelectedLanguages = new BindingList(behaviours.SelectedLanguages.ToList()); this.AddClosedCaptions = behaviours.AddClosedCaptions; this.AddForeignAudioScanTrack = behaviours.AddForeignAudioScanTrack; + this.SubtitleTrackNamePassthru = behaviours.SubtitleTrackNamePassthru; } public SubtitleBehaviourModes SelectedBehaviour @@ -124,5 +127,20 @@ namespace HandBrakeWPF.Model.Subtitles this.NotifyOfPropertyChange(() => this.AddClosedCaptions); } } + + public bool SubtitleTrackNamePassthru + { + get => this.subtitleTrackNamePassthru; + set + { + if (value == this.subtitleTrackNamePassthru) + { + return; + } + + this.subtitleTrackNamePassthru = value; + this.NotifyOfPropertyChange(() => this.SubtitleTrackNamePassthru); + } + } } } diff --git a/win/CS/HandBrakeWPF/Properties/Resources.Designer.cs b/win/CS/HandBrakeWPF/Properties/Resources.Designer.cs index 3c58948d7..c6bcaf237 100644 --- a/win/CS/HandBrakeWPF/Properties/Resources.Designer.cs +++ b/win/CS/HandBrakeWPF/Properties/Resources.Designer.cs @@ -364,6 +364,15 @@ namespace HandBrakeWPF.Properties { } } + /// + /// Looks up a localized string similar to Autonaming:. + /// + public static string AudioDefaultsView_AutoNaming { + get { + return ResourceManager.GetString("AudioDefaultsView_AutoNaming", resourceCulture); + } + } + /// /// Looks up a localized string similar to Clear. /// @@ -373,6 +382,15 @@ namespace HandBrakeWPF.Properties { } } + /// + /// Looks up a localized string similar to Track Naming Behaviour:. + /// + public static string AudioDefaultsView_NamingBehaviour { + get { + return ResourceManager.GetString("AudioDefaultsView_NamingBehaviour", resourceCulture); + } + } + /// /// Looks up a localized string similar to Automatic Audio Selections. /// @@ -382,6 +400,15 @@ namespace HandBrakeWPF.Properties { } } + /// + /// Looks up a localized string similar to Passthru Track Names. + /// + public static string AudioDefaultsView_PassthruTrackNames { + get { + return ResourceManager.GetString("AudioDefaultsView_PassthruTrackNames", resourceCulture); + } + } + /// /// Looks up a localized string similar to Source Track Selection. /// @@ -391,6 +418,33 @@ namespace HandBrakeWPF.Properties { } } + /// + /// Looks up a localized string similar to All Tracks. + /// + public static string AudioTrackNaming_All { + get { + return ResourceManager.GetString("AudioTrackNaming_All", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to None. + /// + public static string AudioTrackNaming_None { + get { + return ResourceManager.GetString("AudioTrackNaming_None", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Unnamed Only. + /// + public static string AudioTrackNaming_Unnamed { + get { + return ResourceManager.GetString("AudioTrackNaming_Unnamed", resourceCulture); + } + } + /// /// Looks up a localized string similar to Allow passthru of:. /// @@ -7557,6 +7611,15 @@ namespace HandBrakeWPF.Properties { } } + /// + /// Looks up a localized string similar to Passthru Track Names. + /// + public static string SubtitlesDefaultsView_PassthruTrackName { + get { + return ResourceManager.GetString("SubtitlesDefaultsView_PassthruTrackName", resourceCulture); + } + } + /// /// Looks up a localized string similar to Add Closed Captions when available. /// diff --git a/win/CS/HandBrakeWPF/Properties/Resources.resx b/win/CS/HandBrakeWPF/Properties/Resources.resx index 5d423f3dc..17b80f369 100644 --- a/win/CS/HandBrakeWPF/Properties/Resources.resx +++ b/win/CS/HandBrakeWPF/Properties/Resources.resx @@ -2977,4 +2977,25 @@ To allow multiple simultaneous encodes, turn on "Process Isolation" in Tools Men Start Queue (Immediately) + + None + + + Unnamed Only + + + All Tracks + + + Track Naming Behaviour: + + + Autonaming: + + + Passthru Track Names + + + Passthru Track Names + \ No newline at end of file diff --git a/win/CS/HandBrakeWPF/Services/Encode/Model/Models/AudioTrack.cs b/win/CS/HandBrakeWPF/Services/Encode/Model/Models/AudioTrack.cs index 48baae85f..aa1071819 100644 --- a/win/CS/HandBrakeWPF/Services/Encode/Model/Models/AudioTrack.cs +++ b/win/CS/HandBrakeWPF/Services/Encode/Model/Models/AudioTrack.cs @@ -62,6 +62,9 @@ namespace HandBrakeWPF.Services.Encode.Model.Models public AudioTrack(AudioTrack track, bool setScannedTrack) { + this.PassthruTracks = track.PassthruTracks; + this.TrackNamingBehaviour = track.TrackNamingBehaviour; + this.bitrate = track.Bitrate; this.drc = track.DRC; this.encoder = track.Encoder; @@ -90,8 +93,12 @@ namespace HandBrakeWPF.Services.Encode.Model.Models this.SetupLimits(); } - public AudioTrack(AudioBehaviourTrack track, Audio sourceTrack, IList passthruEncoders, HBAudioEncoder fallbackEncoder, OutputFormat container) + public AudioTrack(AudioBehaviourTrack track, Audio sourceTrack, IList passthruEncoders, HBAudioEncoder fallbackEncoder, OutputFormat container, Func passthruTracks, + Func trackNamingBehaviour) { + this.PassthruTracks = passthruTracks; + this.TrackNamingBehaviour = trackNamingBehaviour; + HBAudioEncoder validatedEncoder = track.Encoder; if (track.IsPassthru) { @@ -140,9 +147,11 @@ namespace HandBrakeWPF.Services.Encode.Model.Models if (!string.IsNullOrEmpty(this.scannedTrack?.Name)) { - this.TrackName = this.scannedTrack.Name; + this.PassthruTrackName(); } + this.AutoNameTrack(); + this.SetupLimits(); } @@ -169,6 +178,9 @@ namespace HandBrakeWPF.Services.Encode.Model.Models } this.GetDefaultMixdownIfNull(); + + this.PassthruTrackName(); + this.AutoNameTrack(); } } @@ -476,7 +488,39 @@ namespace HandBrakeWPF.Services.Encode.Model.Models } } + [JsonIgnore] + public Func PassthruTracks { get; set; } + + [JsonIgnore] + public Func TrackNamingBehaviour { get; set; } + /* Helper Methods */ + public void PassthruTrackName() + { + if (PassthruTracks != null) + { + bool passthru = PassthruTracks(); + if (this.ScannedTrack != null && passthru) + { + this.TrackName = this.ScannedTrack.Name; + } + } + } + + public void AutoNameTrack() + { + if (TrackNamingBehaviour != null) + { + AudioTrackNamingBehaviour behaviour = TrackNamingBehaviour(); + + if (this.ScannedTrack != null) + { + bool keep = behaviour == AudioTrackNamingBehaviour.Unnamed || behaviour == AudioTrackNamingBehaviour.None; + HBMixdown currentMixdown = HandBrakeEncoderHelpers.GetMixdown(this.mixDown); + this.TrackName = HandBrakeEncoderHelpers.GetAutonameAudioTrack(this.TrackName, 0, currentMixdown.Id, keep, (int)behaviour); + } + } + } private void SetupLimits() { @@ -601,7 +645,7 @@ namespace HandBrakeWPF.Services.Encode.Model.Models this.MixDown = sanitisedMixdown.ShortName; } } - + public override string ToString() { return string.Format("Audio Track: Title {0}", this.ScannedTrack.ToString()); diff --git a/win/CS/HandBrakeWPF/Services/Encode/Model/Models/SubtitleTrack.cs b/win/CS/HandBrakeWPF/Services/Encode/Model/Models/SubtitleTrack.cs index 914065126..eece77299 100644 --- a/win/CS/HandBrakeWPF/Services/Encode/Model/Models/SubtitleTrack.cs +++ b/win/CS/HandBrakeWPF/Services/Encode/Model/Models/SubtitleTrack.cs @@ -9,8 +9,9 @@ namespace HandBrakeWPF.Services.Encode.Model.Models { + using System; + using HandBrake.Interop.Interop.Interfaces.Model; - using HandBrake.Interop.Utilities; using HandBrakeWPF.Services.Scan.Model; using HandBrakeWPF.ViewModels; @@ -80,6 +81,7 @@ namespace HandBrakeWPF.Services.Encode.Model.Models this.SubtitleType = subtitle.SubtitleType; this.SourceTrack = subtitle.SourceTrack; this.Name = subtitle.Name; + this.TrackNamingCallback = subtitle.TrackNamingCallback; } #endregion @@ -185,9 +187,13 @@ namespace HandBrakeWPF.Services.Encode.Model.Models this.Forced = false; } - if (this.sourceTrack != null) + if (TrackNamingCallback != null) { - this.Name = !string.IsNullOrEmpty(this.sourceTrack.Name) ? this.sourceTrack.Name : string.Empty; + bool passthruName = TrackNamingCallback(); + if (passthruName) + { + this.SetTrackNamePassthru(); + } } } } @@ -316,6 +322,16 @@ namespace HandBrakeWPF.Services.Encode.Model.Models } } + public void SetTrackNamePassthru() + { + if (this.SourceTrack != null) + { + this.Name = this.SourceTrack.Name; + } + } + + public Func TrackNamingCallback { get; set; } + public override string ToString() { return string.Format("Subtitle Track: Title {0}", this.SrtFileName ?? this.SourceTrack.ToString()); diff --git a/win/CS/HandBrakeWPF/Services/Presets/Factories/JsonPresetFactory.cs b/win/CS/HandBrakeWPF/Services/Presets/Factories/JsonPresetFactory.cs index 817f0c68c..e666fa8d2 100644 --- a/win/CS/HandBrakeWPF/Services/Presets/Factories/JsonPresetFactory.cs +++ b/win/CS/HandBrakeWPF/Services/Presets/Factories/JsonPresetFactory.cs @@ -350,6 +350,9 @@ namespace HandBrakeWPF.Services.Presets.Factories ? AudioBehaviourModes.AllMatching : AudioBehaviourModes.FirstMatch; + preset.AudioTrackBehaviours.AudioTrackNamePassthru = importedPreset.AudioTrackNamePassthru; + preset.AudioTrackBehaviours.AudioAutomaticNamingBehavior = EnumHelper.GetValue(importedPreset.AudioAutomaticNamingBehavior); + preset.AudioTrackBehaviours.SelectedTrackDefaultBehaviour = importedPreset.AudioSecondaryEncoderMode ? AudioTrackDefaultsMode.FirstTrack : AudioTrackDefaultsMode.AllTracks; if (importedPreset.AudioCopyMask != null) @@ -417,6 +420,7 @@ namespace HandBrakeWPF.Services.Presets.Factories preset.SubtitleTrackBehaviours = new SubtitleBehaviours(); preset.SubtitleTrackBehaviours.SelectedBehaviour = EnumHelper.GetValue(importedPreset.SubtitleTrackSelectionBehavior); preset.SubtitleTrackBehaviours.SelectedBurnInBehaviour = EnumHelper.GetValue(importedPreset.SubtitleBurnBehavior); + preset.SubtitleTrackBehaviours.SubtitleTrackNamePassthru = importedPreset.SubtitleTrackNamePassthru; preset.SubtitleTrackBehaviours.AddClosedCaptions = importedPreset.SubtitleAddCC; preset.SubtitleTrackBehaviours.AddForeignAudioScanTrack = importedPreset.SubtitleAddForeignAudioSearch; @@ -543,6 +547,9 @@ namespace HandBrakeWPF.Services.Presets.Factories preset.AudioList.Add(track); } + preset.AudioTrackNamePassthru = export.AudioTrackBehaviours.AudioTrackNamePassthru; + preset.AudioAutomaticNamingBehavior = EnumHelper.GetShortName(export.AudioTrackBehaviours.AudioAutomaticNamingBehavior); + // Subtitles preset.SubtitleAddCC = export.SubtitleTrackBehaviours.AddClosedCaptions; preset.SubtitleAddForeignAudioSearch = export.SubtitleTrackBehaviours.AddForeignAudioScanTrack; @@ -551,6 +558,7 @@ namespace HandBrakeWPF.Services.Presets.Factories preset.SubtitleBurnBehavior = EnumHelper.GetShortName(export.SubtitleTrackBehaviours.SelectedBurnInBehaviour); preset.SubtitleLanguageList = HandBrakeLanguagesHelper.GetLanguageCodes(export.SubtitleTrackBehaviours.SelectedLanguages); preset.SubtitleTrackSelectionBehavior = EnumHelper.GetShortName(export.SubtitleTrackBehaviours.SelectedBehaviour); + preset.SubtitleTrackNamePassthru = export.SubtitleTrackBehaviours.SubtitleTrackNamePassthru; // Chapters preset.ChapterMarkers = export.Task.IncludeChapterMarkers; diff --git a/win/CS/HandBrakeWPF/ViewModels/AudioDefaultsViewModel.cs b/win/CS/HandBrakeWPF/ViewModels/AudioDefaultsViewModel.cs index d3d1b62fc..9670dae52 100644 --- a/win/CS/HandBrakeWPF/ViewModels/AudioDefaultsViewModel.cs +++ b/win/CS/HandBrakeWPF/ViewModels/AudioDefaultsViewModel.cs @@ -9,19 +9,16 @@ namespace HandBrakeWPF.ViewModels { - using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.ComponentModel; using System.Diagnostics; using System.Linq; - using System.Runtime.CompilerServices; using HandBrake.App.Core.Utilities; using HandBrake.Interop.Interop; using HandBrake.Interop.Interop.Interfaces.Model; using HandBrake.Interop.Interop.Interfaces.Model.Encoders; - using HandBrake.Interop.Utilities; using HandBrakeWPF.Commands; using HandBrakeWPF.Model.Audio; @@ -216,6 +213,15 @@ namespace HandBrakeWPF.ViewModels /// public IList SampleRates { get; set; } + public IList TrackNamingBehaviours + { + get + { + return new BindingList(EnumHelper.GetEnumList().ToList()); + } + } + + #endregion #region Public Methods @@ -342,6 +348,9 @@ namespace HandBrakeWPF.ViewModels } this.UpdateAvailableLanguages(); + + this.AudioBehaviours.AudioTrackNamePassthru = behaviours.AudioTrackNamePassthru; + this.AudioBehaviours.AudioAutomaticNamingBehavior = behaviours.AudioAutomaticNamingBehavior; } this.CorrectAudioEncoders(this.OutputFormat); diff --git a/win/CS/HandBrakeWPF/ViewModels/AudioViewModel.cs b/win/CS/HandBrakeWPF/ViewModels/AudioViewModel.cs index 9186d3161..2963a4704 100644 --- a/win/CS/HandBrakeWPF/ViewModels/AudioViewModel.cs +++ b/win/CS/HandBrakeWPF/ViewModels/AudioViewModel.cs @@ -403,7 +403,12 @@ namespace HandBrakeWPF.ViewModels { if (!useBehaviourTemplateMode) { - this.Task.AudioTracks.Add(new AudioTrack { ScannedTrack = track }); + this.Task.AudioTracks.Add(new AudioTrack + { + PassthruTracks = this.CheckPassthruTrack, + TrackNamingBehaviour = this.CheckNamingBehaviour, + ScannedTrack = track + }); return; } @@ -413,7 +418,12 @@ namespace HandBrakeWPF.ViewModels AudioBehaviourTrack template = this.AudioBehaviours.BehaviourTracks.FirstOrDefault(); if (this.CanAddTrack(template, track, this.AudioBehaviours.AudioFallbackEncoder)) { - this.Task.AudioTracks.Add( template != null ? new AudioTrack(template, track, this.AudioBehaviours.AllowedPassthruOptions, this.AudioBehaviours.AudioFallbackEncoder, this.Task.OutputFormat) : new AudioTrack { ScannedTrack = track }); + this.Task.AudioTracks.Add(template != null ? new AudioTrack(template, track, this.AudioBehaviours.AllowedPassthruOptions, this.AudioBehaviours.AudioFallbackEncoder, this.Task.OutputFormat, this.CheckPassthruTrack, this.CheckNamingBehaviour) : new AudioTrack + { + PassthruTracks = this.CheckPassthruTrack, + TrackNamingBehaviour = this.CheckNamingBehaviour, + ScannedTrack = track + }); } break; case AudioTrackDefaultsMode.AllTracks: @@ -421,7 +431,12 @@ namespace HandBrakeWPF.ViewModels { if (this.CanAddTrack(tmpl, track, this.AudioBehaviours.AudioFallbackEncoder)) { - this.Task.AudioTracks.Add(tmpl != null ? new AudioTrack(tmpl, track, this.AudioBehaviours.AllowedPassthruOptions, this.AudioBehaviours.AudioFallbackEncoder, this.Task.OutputFormat) : new AudioTrack { ScannedTrack = track }); + this.Task.AudioTracks.Add(tmpl != null ? new AudioTrack(tmpl, track, this.AudioBehaviours.AllowedPassthruOptions, this.AudioBehaviours.AudioFallbackEncoder, this.Task.OutputFormat, this.CheckPassthruTrack, this.CheckNamingBehaviour) : new AudioTrack + { + PassthruTracks = this.CheckPassthruTrack, + TrackNamingBehaviour = this.CheckNamingBehaviour, + ScannedTrack = track + }); } } @@ -472,10 +487,10 @@ namespace HandBrakeWPF.ViewModels Audio sourceTrack = this.GetPreferredAudioTrack(); if (this.CanAddTrack(track, sourceTrack, this.AudioBehaviours.AudioFallbackEncoder)) { - this.Task.AudioTracks.Add(new AudioTrack(track, sourceTrack, this.AudioBehaviours.AllowedPassthruOptions, this.AudioBehaviours.AudioFallbackEncoder, this.Task.OutputFormat)); + this.Task.AudioTracks.Add(new AudioTrack(track, sourceTrack, this.AudioBehaviours.AllowedPassthruOptions, this.AudioBehaviours.AudioFallbackEncoder, this.Task.OutputFormat, this.CheckPassthruTrack, this.CheckNamingBehaviour)); } } - + // Step 4, Handle the default selection behaviour. switch (this.AudioBehaviours.SelectedBehaviour) { @@ -489,6 +504,12 @@ namespace HandBrakeWPF.ViewModels this.AddAllRemainingForSelectedLanguages(); break; } + + foreach (AudioTrack track in this.Task.AudioTracks) + { + track.PassthruTrackName(); + track.AutoNameTrack(); + } } /// @@ -621,6 +642,26 @@ namespace HandBrakeWPF.ViewModels return orderedTracks; } + private AudioTrackNamingBehaviour CheckNamingBehaviour() + { + if (this.AudioBehaviours != null) + { + return this.AudioBehaviours.AudioAutomaticNamingBehavior; + } + + return AudioTrackNamingBehaviour.None; + } + + private bool CheckPassthruTrack() + { + if (this.AudioBehaviours != null) + { + return this.AudioBehaviours.AudioTrackNamePassthru; + } + + return false; + } + #endregion } } \ No newline at end of file diff --git a/win/CS/HandBrakeWPF/ViewModels/SubtitlesDefaultsViewModel.cs b/win/CS/HandBrakeWPF/ViewModels/SubtitlesDefaultsViewModel.cs index d7ae06336..8f982d697 100644 --- a/win/CS/HandBrakeWPF/ViewModels/SubtitlesDefaultsViewModel.cs +++ b/win/CS/HandBrakeWPF/ViewModels/SubtitlesDefaultsViewModel.cs @@ -230,6 +230,7 @@ namespace HandBrakeWPF.ViewModels this.SubtitleBehaviours.SelectedBurnInBehaviour = behaviours.SelectedBurnInBehaviour; this.SubtitleBehaviours.AddClosedCaptions = behaviours.AddClosedCaptions; this.SubtitleBehaviours.AddForeignAudioScanTrack = behaviours.AddForeignAudioScanTrack; + this.SubtitleBehaviours.SubtitleTrackNamePassthru = behaviours.SubtitleTrackNamePassthru; foreach (Language selectedItem in behaviours.SelectedLanguages) { diff --git a/win/CS/HandBrakeWPF/ViewModels/SubtitlesViewModel.cs b/win/CS/HandBrakeWPF/ViewModels/SubtitlesViewModel.cs index 5a5f3e704..bf4e5125f 100644 --- a/win/CS/HandBrakeWPF/ViewModels/SubtitlesViewModel.cs +++ b/win/CS/HandBrakeWPF/ViewModels/SubtitlesViewModel.cs @@ -159,7 +159,6 @@ namespace HandBrakeWPF.ViewModels this.CheckAddState(count); } - /// /// Add a new Track /// @@ -659,12 +658,12 @@ namespace HandBrakeWPF.ViewModels } } - SubtitleTrack track = new SubtitleTrack - { - SubtitleType = source.SubtitleType, - SourceTrack = source, - }; + { + TrackNamingCallback = this.IsTrackNamePassthruEnabled, + SubtitleType = source.SubtitleType, + SourceTrack = source, + }; // Burn-in Behaviours if (this.SubtitleBehaviours.SelectedBurnInBehaviour == SubtitleBurnInBehaviourModes.ForeignAudio @@ -700,6 +699,12 @@ namespace HandBrakeWPF.ViewModels } } + // Default the track name to the source track name, if it exists. + if (SubtitleBehaviours.SubtitleTrackNamePassthru) + { + track.SetTrackNamePassthru(); + } + var encodeTask = this.Task; if (encodeTask != null) { @@ -776,14 +781,16 @@ namespace HandBrakeWPF.ViewModels string extension = Path.GetExtension(srtFile); SubtitleTrack track = new SubtitleTrack - { - SrtFileName = Path.GetFileNameWithoutExtension(srtFile), - SrtOffset = 0, - SrtCharCode = "UTF-8", - SrtLang = HandBrakeLanguagesHelper.GetByName("English"), - SubtitleType = extension.Contains("ass", StringComparison.InvariantCultureIgnoreCase) ? SubtitleType.IMPORTSSA : SubtitleType.IMPORTSRT, - SrtPath = srtFile - }; + { + TrackNamingCallback = this.IsTrackNamePassthruEnabled, + SrtFileName = Path.GetFileNameWithoutExtension(srtFile), + SrtOffset = 0, + SrtCharCode = "UTF-8", + SrtLang = HandBrakeLanguagesHelper.GetByName("English"), + SubtitleType = extension.Contains("ass", StringComparison.InvariantCultureIgnoreCase) ? SubtitleType.IMPORTSSA : SubtitleType.IMPORTSRT, + SrtPath = srtFile, + + }; this.Task.SubtitleTracks.Add(track); } } @@ -799,5 +806,10 @@ namespace HandBrakeWPF.ViewModels MessageBoxImage.Information); } } + + public bool IsTrackNamePassthruEnabled() + { + return this.SubtitleBehaviours.SubtitleTrackNamePassthru; + } } } diff --git a/win/CS/HandBrakeWPF/Views/AudioDefaultsView.xaml b/win/CS/HandBrakeWPF/Views/AudioDefaultsView.xaml index 34b8d1375..010b02864 100644 --- a/win/CS/HandBrakeWPF/Views/AudioDefaultsView.xaml +++ b/win/CS/HandBrakeWPF/Views/AudioDefaultsView.xaml @@ -95,7 +95,7 @@ + SelectionMode="Extended" Width="225" Height="150" /> @@ -110,7 +110,7 @@ @@ -158,8 +158,21 @@ + + + + + + + + + + + + diff --git a/win/CS/HandBrakeWPF/Views/SubtitlesDefaultsView.xaml b/win/CS/HandBrakeWPF/Views/SubtitlesDefaultsView.xaml index 23a5f66c8..ea7bfcfd7 100644 --- a/win/CS/HandBrakeWPF/Views/SubtitlesDefaultsView.xaml +++ b/win/CS/HandBrakeWPF/Views/SubtitlesDefaultsView.xaml @@ -54,6 +54,7 @@ + @@ -115,11 +116,13 @@ HorizontalAlignment="Left" IsChecked="{Binding SubtitleBehaviours.AddClosedCaptions}"/> + - - +