diff options
author | John Stebbins <[email protected]> | 2016-05-28 08:12:34 -0700 |
---|---|---|
committer | John Stebbins <[email protected]> | 2016-05-28 08:12:34 -0700 |
commit | f5f665474b2fbe5e1674936907a4c596bf29dfe4 (patch) | |
tree | c78cef0772ab1727cce4e0a831a688ccee80b858 /libhb | |
parent | 7aa4a16f51f701c3a10a474b17b37db7f5c661d1 (diff) |
libhb: pass through "default" subtitle flag ... (#203)
... when applying presets
Diffstat (limited to 'libhb')
-rw-r--r-- | libhb/preset.c | 24 | ||||
-rw-r--r-- | libhb/stream.c | 5 |
2 files changed, 28 insertions, 1 deletions
diff --git a/libhb/preset.c b/libhb/preset.c index 3c9a32b4d..11e82e071 100644 --- a/libhb/preset.c +++ b/libhb/preset.c @@ -771,6 +771,23 @@ typedef struct subtitle_behavior_s uint8_t *used; } subtitle_behavior_t; +static int has_default_subtitle(hb_value_array_t *list) +{ + int ii, count, def; + + count = hb_value_array_len(list); + for (ii = 0; ii < count; ii++) + { + hb_value_t *sub = hb_value_array_get(list, ii); + def = hb_value_get_int(hb_dict_get(sub, "Default")); + if (def) + { + return def; + } + } + return 0; +} + static void add_subtitle_for_lang(hb_value_array_t *list, hb_title_t *title, int mux, const char *lang, subtitle_behavior_t *behavior) @@ -795,7 +812,12 @@ static void add_subtitle_for_lang(hb_value_array_t *list, hb_title_t *title, (subtitle->source == PGSSUB && behavior->burn_bd) || !hb_subtitle_can_pass(subtitle->source, mux) || behavior->burn_first || behavior->burn_foreign); - make_default = !burn && behavior->make_default; + // If the subtitle is added for foreign audio, or the source + // subtitle was the default subtitle, mark this subtitle as + // default. + make_default = (!burn && behavior->make_default) || + (!has_default_subtitle(list) && + subtitle->config.default_track); behavior->burn_first &= !burn; behavior->one_burned |= burn; behavior->used[t] = 1; diff --git a/libhb/stream.c b/libhb/stream.c index 5cc2d6618..f885cae3d 100644 --- a/libhb/stream.c +++ b/libhb/stream.c @@ -5349,6 +5349,11 @@ static void add_ffmpeg_subtitle( hb_title_t *title, hb_stream_t *stream, int id subtitle->extradata_size = codec->extradata_size; } + if (st->disposition & AV_DISPOSITION_DEFAULT) + { + subtitle->config.default_track = 1; + } + subtitle->track = id; hb_list_add(title->list_subtitle, subtitle); } |