Only include one CC subtitle

This commit is contained in:
bytedream 2024-05-14 22:36:59 +02:00
parent 590242712b
commit a98e31f959

View file

@ -501,24 +501,21 @@ async fn get_format(
.subtitle
.iter()
.flat_map(|s| {
let subtitles = stream
.subtitles
.get(s)
.cloned()
// the subtitle is probably cc if the audio is not japanese or only one
// subtitle exists for this stream
.map(|l| {
(
l,
single_format.audio != Locale::ja_JP && stream.subtitles.len() == 1,
)
});
let cc = stream.captions.get(s).cloned().map(|l| (l, true));
let mut subtitles = vec![];
if let Some(caption) = stream.captions.get(s) {
subtitles.push((caption.clone(), true))
}
if let Some(subtitle) = stream.subtitles.get(s) {
// the subtitle is probably cc if the audio is not japanese or only one subtitle
// exists for this stream
let cc = single_format.audio != Locale::ja_JP && stream.subtitles.len() == 1;
// only include the subtitles if no cc subtitle is already present or if it's
// not cc
if subtitles.is_empty() || !cc {
subtitles.push((subtitle.clone(), cc))
}
}
subtitles
.into_iter()
.chain(cc.into_iter())
.collect::<Vec<(Subtitle, bool)>>()
})
.collect();