mirror of
https://github.com/jellyfin/jellyfin.git
synced 2026-07-13 01:33:04 +01:00
Merge pull request #16380 from LTe/fix-subtitle-extraction-setting
Some checks failed
Stale PR Check / Check PRs with merge conflicts (push) Has been cancelled
CodeQL / Analyze (csharp) (push) Has been cancelled
Tests / run-tests (macos-latest) (push) Has been cancelled
Tests / run-tests (ubuntu-latest) (push) Has been cancelled
Tests / run-tests (windows-latest) (push) Has been cancelled
OpenAPI Publish / OpenAPI - Publish Artifact (push) Has been cancelled
OpenAPI Publish / OpenAPI - Publish Unstable Spec (push) Has been cancelled
OpenAPI Publish / OpenAPI - Publish Stable Spec (push) Has been cancelled
Project Automation / Project board (push) Has been cancelled
Merge Conflict Labeler / Labeling (push) Has been cancelled
Stale Issue Labeler / Check for stale issues (push) Has been cancelled
Some checks failed
Stale PR Check / Check PRs with merge conflicts (push) Has been cancelled
CodeQL / Analyze (csharp) (push) Has been cancelled
Tests / run-tests (macos-latest) (push) Has been cancelled
Tests / run-tests (ubuntu-latest) (push) Has been cancelled
Tests / run-tests (windows-latest) (push) Has been cancelled
OpenAPI Publish / OpenAPI - Publish Artifact (push) Has been cancelled
OpenAPI Publish / OpenAPI - Publish Unstable Spec (push) Has been cancelled
OpenAPI Publish / OpenAPI - Publish Stable Spec (push) Has been cancelled
Project Automation / Project board (push) Has been cancelled
Merge Conflict Labeler / Labeling (push) Has been cancelled
Stale Issue Labeler / Check for stale issues (push) Has been cancelled
Respect EnableSubtitleExtraction setting in subtitle delivery
This commit is contained in:
@@ -1331,8 +1331,7 @@ namespace MediaBrowser.MediaEncoding.Encoder
|
|||||||
|
|
||||||
public bool CanExtractSubtitles(string codec)
|
public bool CanExtractSubtitles(string codec)
|
||||||
{
|
{
|
||||||
// TODO is there ever a case when a subtitle can't be extracted??
|
return _configurationManager.GetEncodingOptions().EnableSubtitleExtraction;
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private sealed class ProcessWrapper : IDisposable
|
private sealed class ProcessWrapper : IDisposable
|
||||||
|
|||||||
@@ -1555,7 +1555,7 @@ namespace MediaBrowser.Model.Dlna
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!subtitleStream.IsExternal && !transcoderSupport.CanExtractSubtitles(subtitleStream.Codec))
|
if (!subtitleStream.IsExternal && playMethod == PlayMethod.Transcode && !transcoderSupport.CanExtractSubtitles(subtitleStream.Codec))
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -617,5 +617,60 @@ namespace Jellyfin.Model.Tests
|
|||||||
|
|
||||||
return (path, query, filename, extension);
|
return (path, query, filename, extension);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Theory]
|
||||||
|
// EnableSubtitleExtraction = false, internal subtitles
|
||||||
|
[InlineData("srt", "srt", false, false, PlayMethod.Transcode, SubtitleDeliveryMethod.Encode)]
|
||||||
|
[InlineData("srt", "srt", false, false, PlayMethod.DirectPlay, SubtitleDeliveryMethod.External)]
|
||||||
|
[InlineData("pgssub", "pgssub", false, false, PlayMethod.Transcode, SubtitleDeliveryMethod.Encode)]
|
||||||
|
[InlineData("pgssub", "pgssub", false, false, PlayMethod.DirectPlay, SubtitleDeliveryMethod.External)]
|
||||||
|
[InlineData("pgssub", "srt", false, false, PlayMethod.Transcode, SubtitleDeliveryMethod.Encode)]
|
||||||
|
// EnableSubtitleExtraction = false, external subtitles
|
||||||
|
[InlineData("srt", "srt", false, true, PlayMethod.Transcode, SubtitleDeliveryMethod.External)]
|
||||||
|
// EnableSubtitleExtraction = true, internal subtitles
|
||||||
|
[InlineData("srt", "srt", true, false, PlayMethod.Transcode, SubtitleDeliveryMethod.External)]
|
||||||
|
[InlineData("pgssub", "pgssub", true, false, PlayMethod.Transcode, SubtitleDeliveryMethod.External)]
|
||||||
|
[InlineData("pgssub", "pgssub", true, false, PlayMethod.DirectPlay, SubtitleDeliveryMethod.External)]
|
||||||
|
[InlineData("pgssub", "srt", true, false, PlayMethod.Transcode, SubtitleDeliveryMethod.Encode)]
|
||||||
|
// EnableSubtitleExtraction = true, external subtitles
|
||||||
|
[InlineData("srt", "srt", true, true, PlayMethod.Transcode, SubtitleDeliveryMethod.External)]
|
||||||
|
public void GetSubtitleProfile_RespectsExtractionSetting(
|
||||||
|
string codec,
|
||||||
|
string profileFormat,
|
||||||
|
bool enableSubtitleExtraction,
|
||||||
|
bool isExternal,
|
||||||
|
PlayMethod playMethod,
|
||||||
|
SubtitleDeliveryMethod expectedMethod)
|
||||||
|
{
|
||||||
|
var mediaSource = new MediaSourceInfo();
|
||||||
|
var subtitleStream = new MediaStream
|
||||||
|
{
|
||||||
|
Type = MediaStreamType.Subtitle,
|
||||||
|
Index = 0,
|
||||||
|
IsExternal = isExternal,
|
||||||
|
Path = isExternal ? "/media/sub." + codec : null,
|
||||||
|
Codec = codec,
|
||||||
|
SupportsExternalStream = MediaStream.IsTextFormat(codec)
|
||||||
|
};
|
||||||
|
|
||||||
|
var subtitleProfiles = new[]
|
||||||
|
{
|
||||||
|
new SubtitleProfile { Format = profileFormat, Method = SubtitleDeliveryMethod.External }
|
||||||
|
};
|
||||||
|
|
||||||
|
var transcoderSupport = new Mock<ITranscoderSupport>();
|
||||||
|
transcoderSupport.Setup(t => t.CanExtractSubtitles(It.IsAny<string>())).Returns(enableSubtitleExtraction);
|
||||||
|
|
||||||
|
var result = StreamBuilder.GetSubtitleProfile(
|
||||||
|
mediaSource,
|
||||||
|
subtitleStream,
|
||||||
|
subtitleProfiles,
|
||||||
|
playMethod,
|
||||||
|
transcoderSupport.Object,
|
||||||
|
null,
|
||||||
|
null);
|
||||||
|
|
||||||
|
Assert.Equal(expectedMethod, result.Method);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user