using MediaBrowser.Model.Plugins;
namespace Jellyfin.Plugin.Chaosflix.Configuration;
///
/// Plugin configuration.
///
public class PluginConfiguration : BasePluginConfiguration
{
///
/// Gets or sets the preferred video quality.
///
public VideoQuality PreferredQuality { get; set; } = VideoQuality.High;
///
/// Gets or sets the preferred language (ISO 639 code, e.g. "deu", "eng").
/// Empty means original language.
///
public string PreferredLanguage { get; set; } = string.Empty;
///
/// Gets or sets the preferred video format.
///
public VideoFormat PreferredFormat { get; set; } = VideoFormat.Mp4;
///
/// Gets or sets a value indicating whether a talk starts on a version every client
/// can stream without a re-encode, leaving to order
/// the versions behind it.
///
public bool CompatibleDefaultVersion { get; set; }
///
/// Gets or sets the conferences to show, separated by commas or newlines. An entry
/// is either an acronym ("38c3") or a series as media.ccc.de files it in the slug
/// ("congress", "gpn"), which also covers the editions not published yet.
/// Empty means every conference, which is what the plugin did before this existed.
///
public string ConferenceFilter { get; set; } = string.Empty;
///
/// Gets or sets the streaming endpoint that reports which rooms are on air.
/// Empty means the public one at streaming.media.ccc.de.
///
public string StreamingBaseUrl { get; set; } = string.Empty;
///
/// Gets or sets the CCC API endpoint. Empty means the public API at media.ccc.de;
/// set it to use a mirror or, in the e2e tests, a local stand-in.
///
public string ApiBaseUrl { get; set; } = string.Empty;
}
///
/// Video quality preference.
///
public enum VideoQuality
{
/// High quality (1080p).
High,
/// Standard quality (576p).
Standard
}
///
/// Video format preference.
///
public enum VideoFormat
{
/// H.264 MP4.
Mp4,
/// WebM/VP9.
WebM
}