aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Model
diff options
context:
space:
mode:
Diffstat (limited to 'MediaBrowser.Model')
-rw-r--r--MediaBrowser.Model/Configuration/ServerConfiguration.cs1
-rw-r--r--MediaBrowser.Model/Connect/ConnectUser.cs1
-rw-r--r--MediaBrowser.Model/Dlna/ILocalPlayer.cs13
-rw-r--r--MediaBrowser.Model/Dlna/StreamBuilder.cs45
-rw-r--r--MediaBrowser.Model/Dlna/StreamInfo.cs5
-rw-r--r--MediaBrowser.Model/Dlna/TranscodingProfile.cs3
-rw-r--r--MediaBrowser.Model/Dto/BaseItemDto.cs3
-rw-r--r--MediaBrowser.Model/Entities/MediaStream.cs2
-rw-r--r--MediaBrowser.Model/Games/GameSystem.cs48
-rw-r--r--MediaBrowser.Model/LiveTv/LiveTvOptions.cs5
-rw-r--r--MediaBrowser.Model/LiveTv/ProgramQuery.cs3
-rw-r--r--MediaBrowser.Model/LiveTv/RecommendedProgramQuery.cs9
-rw-r--r--MediaBrowser.Model/MediaBrowser.Model.csproj1
-rw-r--r--MediaBrowser.Model/Sync/SyncJobItem.cs2
14 files changed, 84 insertions, 57 deletions
diff --git a/MediaBrowser.Model/Configuration/ServerConfiguration.cs b/MediaBrowser.Model/Configuration/ServerConfiguration.cs
index ba3362332..b115440d6 100644
--- a/MediaBrowser.Model/Configuration/ServerConfiguration.cs
+++ b/MediaBrowser.Model/Configuration/ServerConfiguration.cs
@@ -201,6 +201,7 @@ namespace MediaBrowser.Model.Configuration
public string[] Migrations { get; set; }
public int MigrationVersion { get; set; }
+ public int SchemaVersion { get; set; }
public bool DownloadImagesInAdvance { get; set; }
diff --git a/MediaBrowser.Model/Connect/ConnectUser.cs b/MediaBrowser.Model/Connect/ConnectUser.cs
index 383261a6b..da290da12 100644
--- a/MediaBrowser.Model/Connect/ConnectUser.cs
+++ b/MediaBrowser.Model/Connect/ConnectUser.cs
@@ -8,6 +8,5 @@ namespace MediaBrowser.Model.Connect
public string Email { get; set; }
public bool IsActive { get; set; }
public string ImageUrl { get; set; }
- public bool IsSupporter { get; set; }
}
}
diff --git a/MediaBrowser.Model/Dlna/ILocalPlayer.cs b/MediaBrowser.Model/Dlna/ILocalPlayer.cs
index 55e11ec4b..9de360023 100644
--- a/MediaBrowser.Model/Dlna/ILocalPlayer.cs
+++ b/MediaBrowser.Model/Dlna/ILocalPlayer.cs
@@ -23,4 +23,17 @@ namespace MediaBrowser.Model.Dlna
/// <returns><c>true</c> if this instance [can access URL] the specified URL; otherwise, <c>false</c>.</returns>
bool CanAccessUrl(string url, bool requiresCustomRequestHeaders);
}
+
+ public interface ITranscoderSupport
+ {
+ bool CanEncodeToAudioCodec(string codec);
+ }
+
+ public class FullTranscoderSupport : ITranscoderSupport
+ {
+ public bool CanEncodeToAudioCodec(string codec)
+ {
+ return true;
+ }
+ }
}
diff --git a/MediaBrowser.Model/Dlna/StreamBuilder.cs b/MediaBrowser.Model/Dlna/StreamBuilder.cs
index 1e6b7c729..7721bfd15 100644
--- a/MediaBrowser.Model/Dlna/StreamBuilder.cs
+++ b/MediaBrowser.Model/Dlna/StreamBuilder.cs
@@ -13,15 +13,27 @@ namespace MediaBrowser.Model.Dlna
{
private readonly ILocalPlayer _localPlayer;
private readonly ILogger _logger;
+ private readonly ITranscoderSupport _transcoderSupport;
- public StreamBuilder(ILocalPlayer localPlayer, ILogger logger)
+ public StreamBuilder(ILocalPlayer localPlayer, ITranscoderSupport transcoderSupport, ILogger logger)
{
+ _transcoderSupport = transcoderSupport;
_localPlayer = localPlayer;
_logger = logger;
}
+ public StreamBuilder(ITranscoderSupport transcoderSupport, ILogger logger)
+ : this(new NullLocalPlayer(), transcoderSupport, logger)
+ {
+ }
+
+ public StreamBuilder(ILocalPlayer localPlayer, ILogger logger)
+ : this(localPlayer, new FullTranscoderSupport(), logger)
+ {
+ }
+
public StreamBuilder(ILogger logger)
- : this(new NullLocalPlayer(), logger)
+ : this(new NullLocalPlayer(), new FullTranscoderSupport(), logger)
{
}
@@ -185,8 +197,11 @@ namespace MediaBrowser.Model.Dlna
{
if (i.Type == playlistItem.MediaType && i.Context == options.Context)
{
- transcodingProfile = i;
- break;
+ if (_transcoderSupport.CanEncodeToAudioCodec(i.AudioCodec ?? i.Container))
+ {
+ transcodingProfile = i;
+ break;
+ }
}
}
@@ -444,6 +459,15 @@ namespace MediaBrowser.Model.Dlna
playlistItem.VideoCodec = transcodingProfile.VideoCodec;
playlistItem.CopyTimestamps = transcodingProfile.CopyTimestamps;
playlistItem.ForceLiveStream = transcodingProfile.ForceLiveStream;
+
+ if (!string.IsNullOrEmpty(transcodingProfile.MaxAudioChannels))
+ {
+ int transcodingMaxAudioChannels;
+ if (IntHelper.TryParseCultureInvariant(transcodingProfile.MaxAudioChannels, out transcodingMaxAudioChannels))
+ {
+ playlistItem.TranscodingMaxAudioChannels = transcodingMaxAudioChannels;
+ }
+ }
playlistItem.SubProtocol = transcodingProfile.Protocol;
playlistItem.AudioStreamIndex = audioStreamIndex;
@@ -1038,6 +1062,18 @@ namespace MediaBrowser.Model.Dlna
}
}
+ // Check audio codec
+ List<string> audioCodecs = profile.GetAudioCodecs();
+ if (audioCodecs.Count > 0)
+ {
+ // Check audio codecs
+ string audioCodec = audioStream == null ? null : audioStream.Codec;
+ if (string.IsNullOrEmpty(audioCodec) || !ListHelper.ContainsIgnoreCase(audioCodecs, audioCodec))
+ {
+ return false;
+ }
+ }
+
return true;
}
@@ -1073,6 +1109,7 @@ namespace MediaBrowser.Model.Dlna
}
}
+ // Check audio codec
List<string> audioCodecs = profile.GetAudioCodecs();
if (audioCodecs.Count > 0)
{
diff --git a/MediaBrowser.Model/Dlna/StreamInfo.cs b/MediaBrowser.Model/Dlna/StreamInfo.cs
index 644f732a7..313c30e2c 100644
--- a/MediaBrowser.Model/Dlna/StreamInfo.cs
+++ b/MediaBrowser.Model/Dlna/StreamInfo.cs
@@ -38,6 +38,7 @@ namespace MediaBrowser.Model.Dlna
public int? SubtitleStreamIndex { get; set; }
+ public int? TranscodingMaxAudioChannels { get; set; }
public int? MaxAudioChannels { get; set; }
public int? AudioBitrate { get; set; }
@@ -237,7 +238,9 @@ namespace MediaBrowser.Model.Dlna
list.Add(new NameValuePair("CopyTimestamps", item.CopyTimestamps.ToString().ToLower()));
list.Add(new NameValuePair("ForceLiveStream", item.ForceLiveStream.ToString().ToLower()));
list.Add(new NameValuePair("SubtitleMethod", item.SubtitleStreamIndex.HasValue && item.SubtitleDeliveryMethod != SubtitleDeliveryMethod.External ? item.SubtitleDeliveryMethod.ToString() : string.Empty));
-
+
+ list.Add(new NameValuePair("TranscodingMaxAudioChannels", item.TranscodingMaxAudioChannels.HasValue ? StringHelper.ToStringCultureInvariant(item.TranscodingMaxAudioChannels.Value) : string.Empty));
+
return list;
}
diff --git a/MediaBrowser.Model/Dlna/TranscodingProfile.cs b/MediaBrowser.Model/Dlna/TranscodingProfile.cs
index 36c357926..d1314c17b 100644
--- a/MediaBrowser.Model/Dlna/TranscodingProfile.cs
+++ b/MediaBrowser.Model/Dlna/TranscodingProfile.cs
@@ -38,6 +38,9 @@ namespace MediaBrowser.Model.Dlna
[XmlAttribute("forceLiveStream")]
public bool ForceLiveStream { get; set; }
+ [XmlAttribute("maxAudioChannels")]
+ public string MaxAudioChannels { get; set; }
+
public List<string> GetAudioCodecs()
{
List<string> list = new List<string>();
diff --git a/MediaBrowser.Model/Dto/BaseItemDto.cs b/MediaBrowser.Model/Dto/BaseItemDto.cs
index 49ec9f8ef..146fcc74e 100644
--- a/MediaBrowser.Model/Dto/BaseItemDto.cs
+++ b/MediaBrowser.Model/Dto/BaseItemDto.cs
@@ -297,7 +297,8 @@ namespace MediaBrowser.Model.Dto
/// </summary>
/// <value>The number.</value>
public string Number { get; set; }
-
+ public string ChannelNumber { get; set; }
+
/// <summary>
/// Gets or sets the index number.
/// </summary>
diff --git a/MediaBrowser.Model/Entities/MediaStream.cs b/MediaBrowser.Model/Entities/MediaStream.cs
index fa7a51291..25252956b 100644
--- a/MediaBrowser.Model/Entities/MediaStream.cs
+++ b/MediaBrowser.Model/Entities/MediaStream.cs
@@ -42,6 +42,8 @@ namespace MediaBrowser.Model.Entities
/// <value><c>true</c> if this instance is interlaced; otherwise, <c>false</c>.</value>
public bool IsInterlaced { get; set; }
+ public bool? IsAVC { get; set; }
+
/// <summary>
/// Gets or sets the channel layout.
/// </summary>
diff --git a/MediaBrowser.Model/Games/GameSystem.cs b/MediaBrowser.Model/Games/GameSystem.cs
deleted file mode 100644
index ab8f1efa7..000000000
--- a/MediaBrowser.Model/Games/GameSystem.cs
+++ /dev/null
@@ -1,48 +0,0 @@
-
-namespace MediaBrowser.Model.Games
-{
- public class GameSystem
- {
- public const string Nintendo = "Nintendo";
- public const string SuperNintendo = "Super Nintendo";
- public const string Panasonic3DO = "3DO";
- public const string Amiga = "Amiga";
- public const string Arcade = "Arcade";
- public const string Atari2600 = "Atari 2600";
- public const string Atari5200 = "Atari 5200";
- public const string Atari7800 = "Atari 7800";
- public const string AtariXE = "Atari XE";
- public const string AtariJaguar = "Atari Jaguar";
- public const string AtariJaguarCD = "Atari Jaguar CD";
- public const string Colecovision = "Colecovision";
- public const string Commodore64 = "Commodore 64";
- public const string CommodoreVic20 = "Commodore Vic-20";
- public const string Intellivision = "Intellivision";
- public const string MicrosoftXBox = "Xbox";
- public const string NeoGeo = "Neo Geo";
- public const string Nintendo64 = "Nintendo 64";
- public const string NintendoDS = "Nintendo DS";
- public const string NintendoGameBoy = "Game Boy";
- public const string NintendoGameBoyAdvance = "Game Boy Advance";
- public const string NintendoGameBoyColor = "Game Boy Color";
- public const string NintendoGameCube = "Gamecube";
- public const string VirtualBoy = "Virtual Boy";
- public const string Wii = "Nintendo Wii";
- public const string DOS = "DOS";
- public const string Windows = "Windows";
- public const string Sega32X = "Sega 32X";
- public const string SegaCD = "Sega CD";
- public const string SegaDreamcast = "Dreamcast";
- public const string SegaGameGear = "Game Gear";
- public const string SegaGenesis = "Sega Genesis";
- public const string SegaMasterSystem = "Sega Master System";
- public const string SegaMegaDrive = "Sega Mega Drive";
- public const string SegaSaturn = "Sega Saturn";
- public const string SonyPlaystation = "Sony Playstation";
- public const string SonyPlaystation2 = "PS2";
- public const string SonyPSP = "PSP";
- public const string TurboGrafx16 = "TurboGrafx 16";
- public const string TurboGrafxCD = "TurboGrafx CD";
- public const string ZxSpectrum = "ZX Spectrum";
- }
-}
diff --git a/MediaBrowser.Model/LiveTv/LiveTvOptions.cs b/MediaBrowser.Model/LiveTv/LiveTvOptions.cs
index 46f630fe0..4211fbd59 100644
--- a/MediaBrowser.Model/LiveTv/LiveTvOptions.cs
+++ b/MediaBrowser.Model/LiveTv/LiveTvOptions.cs
@@ -7,8 +7,12 @@ namespace MediaBrowser.Model.LiveTv
public int? GuideDays { get; set; }
public bool EnableMovieProviders { get; set; }
public string RecordingPath { get; set; }
+ public string MovieRecordingPath { get; set; }
+ public string SeriesRecordingPath { get; set; }
public bool EnableAutoOrganize { get; set; }
public bool EnableRecordingEncoding { get; set; }
+ public bool EnableRecordingSubfolders { get; set; }
+ public bool EnableOriginalAudioWithEncodedRecordings { get; set; }
public List<TunerHostInfo> TunerHosts { get; set; }
public List<ListingsProviderInfo> ListingProviders { get; set; }
@@ -19,6 +23,7 @@ namespace MediaBrowser.Model.LiveTv
public LiveTvOptions()
{
EnableMovieProviders = true;
+ EnableRecordingSubfolders = true;
TunerHosts = new List<TunerHostInfo>();
ListingProviders = new List<ListingsProviderInfo>();
}
diff --git a/MediaBrowser.Model/LiveTv/ProgramQuery.cs b/MediaBrowser.Model/LiveTv/ProgramQuery.cs
index 7a877e356..0141191c1 100644
--- a/MediaBrowser.Model/LiveTv/ProgramQuery.cs
+++ b/MediaBrowser.Model/LiveTv/ProgramQuery.cs
@@ -14,8 +14,11 @@ namespace MediaBrowser.Model.LiveTv
ChannelIds = new string[] { };
SortBy = new string[] { };
Genres = new string[] { };
+ EnableTotalRecordCount = true;
}
+ public bool EnableTotalRecordCount { get; set; }
+
/// <summary>
/// Fields to return within the items, in addition to basic information
/// </summary>
diff --git a/MediaBrowser.Model/LiveTv/RecommendedProgramQuery.cs b/MediaBrowser.Model/LiveTv/RecommendedProgramQuery.cs
index e83a8fda6..0e6d081a1 100644
--- a/MediaBrowser.Model/LiveTv/RecommendedProgramQuery.cs
+++ b/MediaBrowser.Model/LiveTv/RecommendedProgramQuery.cs
@@ -13,7 +13,14 @@ namespace MediaBrowser.Model.LiveTv
public bool? EnableImages { get; set; }
public int? ImageTypeLimit { get; set; }
public ImageType[] EnableImageTypes { get; set; }
-
+
+ public bool EnableTotalRecordCount { get; set; }
+
+ public RecommendedProgramQuery()
+ {
+ EnableTotalRecordCount = true;
+ }
+
/// <summary>
/// Gets or sets the user identifier.
/// </summary>
diff --git a/MediaBrowser.Model/MediaBrowser.Model.csproj b/MediaBrowser.Model/MediaBrowser.Model.csproj
index 41952963c..7c469b9fb 100644
--- a/MediaBrowser.Model/MediaBrowser.Model.csproj
+++ b/MediaBrowser.Model/MediaBrowser.Model.csproj
@@ -287,7 +287,6 @@
<Compile Include="Entities\MetadataFields.cs" />
<Compile Include="Entities\UserDataSaveReason.cs" />
<Compile Include="Entities\Video3DFormat.cs" />
- <Compile Include="Games\GameSystem.cs" />
<Compile Include="IO\IIsoManager.cs" />
<Compile Include="IO\IIsoMount.cs" />
<Compile Include="IO\IIsoMounter.cs" />
diff --git a/MediaBrowser.Model/Sync/SyncJobItem.cs b/MediaBrowser.Model/Sync/SyncJobItem.cs
index 77464be58..1c72ccd52 100644
--- a/MediaBrowser.Model/Sync/SyncJobItem.cs
+++ b/MediaBrowser.Model/Sync/SyncJobItem.cs
@@ -102,6 +102,8 @@ namespace MediaBrowser.Model.Sync
/// <value>The index of the job item.</value>
public int JobItemIndex { get; set; }
+ public long ItemDateModifiedTicks { get; set; }
+
public SyncJobItem()
{
AdditionalFiles = new List<ItemFileInfo>();