Luke Pulverenti 11 лет назад
Родитель
Сommit
3f2d10ca62
25 измененных файлов с 87 добавлено и 82 удалено
  1. 2 4
      MediaBrowser.Api/ChannelService.cs
  2. 24 48
      MediaBrowser.Api/LiveTv/LiveTvService.cs
  3. 11 1
      MediaBrowser.Controller/Dlna/DeviceProfile.cs
  4. 5 1
      MediaBrowser.Dlna/DlnaManager.cs
  5. 2 2
      MediaBrowser.Dlna/PlayTo/DlnaController.cs
  6. 4 6
      MediaBrowser.Dlna/PlayTo/PlayToManager.cs
  7. 4 2
      MediaBrowser.Dlna/Profiles/Foobar2000Profile.cs
  8. 1 1
      MediaBrowser.Dlna/Profiles/SamsungSmartTvProfile.cs
  9. 2 1
      MediaBrowser.Dlna/Profiles/Xml/Default.xml
  10. 2 1
      MediaBrowser.Dlna/Profiles/Xml/Denon AVR.xml
  11. 2 1
      MediaBrowser.Dlna/Profiles/Xml/LG Smart TV.xml
  12. 2 1
      MediaBrowser.Dlna/Profiles/Xml/Linksys DMA2100.xml
  13. 2 1
      MediaBrowser.Dlna/Profiles/Xml/Panasonic Viera.xml
  14. 2 1
      MediaBrowser.Dlna/Profiles/Xml/Samsung Smart TV.xml
  15. 2 1
      MediaBrowser.Dlna/Profiles/Xml/Sony Blu-ray Player 2013.xml
  16. 2 1
      MediaBrowser.Dlna/Profiles/Xml/Sony Blu-ray Player.xml
  17. 2 1
      MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2010).xml
  18. 2 1
      MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2011).xml
  19. 2 1
      MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2012).xml
  20. 2 1
      MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2013).xml
  21. 2 1
      MediaBrowser.Dlna/Profiles/Xml/Sony PlayStation 3.xml
  22. 2 1
      MediaBrowser.Dlna/Profiles/Xml/WDTV Live.xml
  23. 2 1
      MediaBrowser.Dlna/Profiles/Xml/Xbox 360.xml
  24. 2 1
      MediaBrowser.Dlna/Profiles/Xml/Xbox One.xml
  25. 2 1
      MediaBrowser.Dlna/Profiles/Xml/foobar2000.xml

+ 2 - 4
MediaBrowser.Api/ChannelService.cs

@@ -7,8 +7,7 @@ using System.Threading;
 
 namespace MediaBrowser.Api
 {
-    [Route("/Channels", "GET")]
-    [Api(("Gets available channels"))]
+    [Route("/Channels", "GET", Summary = "Gets available channels")]
     public class GetChannels : IReturn<QueryResult<BaseItemDto>>
     {
         public string UserId { get; set; }
@@ -18,8 +17,7 @@ namespace MediaBrowser.Api
         public int? Limit { get; set; }
     }
 
-    [Route("/Channels/{Id}/Items", "GET")]
-    [Api(("Gets channel items"))]
+    [Route("/Channels/{Id}/Items", "GET", Summary = "Gets channel items")]
     public class GetChannelItems : IReturn<QueryResult<BaseItemDto>>
     {
         public string Id { get; set; }

+ 24 - 48
MediaBrowser.Api/LiveTv/LiveTvService.cs

@@ -12,14 +12,12 @@ using System.Threading.Tasks;
 
 namespace MediaBrowser.Api.LiveTv
 {
-    [Route("/LiveTv/Info", "GET")]
-    [Api(Description = "Gets available live tv services.")]
+    [Route("/LiveTv/Info", "GET", Summary = "Gets available live tv services.")]
     public class GetLiveTvInfo : IReturn<LiveTvInfo>
     {
     }
 
-    [Route("/LiveTv/Channels", "GET")]
-    [Api(Description = "Gets available live tv channels.")]
+    [Route("/LiveTv/Channels", "GET", Summary = "Gets available live tv channels.")]
     public class GetChannels : IReturn<QueryResult<ChannelInfoDto>>
     {
         [ApiMember(Name = "Type", Description = "Optional filter by channel type.", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")]
@@ -43,8 +41,7 @@ namespace MediaBrowser.Api.LiveTv
         public int? Limit { get; set; }
     }
 
-    [Route("/LiveTv/Channels/{Id}", "GET")]
-    [Api(Description = "Gets a live tv channel")]
+    [Route("/LiveTv/Channels/{Id}", "GET", Summary = "Gets a live tv channel")]
     public class GetChannel : IReturn<ChannelInfoDto>
     {
         /// <summary>
@@ -58,8 +55,7 @@ namespace MediaBrowser.Api.LiveTv
         public string UserId { get; set; }
     }
 
-    [Route("/LiveTv/Recordings", "GET")]
-    [Api(Description = "Gets live tv recordings")]
+    [Route("/LiveTv/Recordings", "GET", Summary = "Gets live tv recordings")]
     public class GetRecordings : IReturn<QueryResult<RecordingInfoDto>>
     {
         [ApiMember(Name = "ChannelId", Description = "Optional filter by channel id.", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")]
@@ -87,16 +83,14 @@ namespace MediaBrowser.Api.LiveTv
         public string SeriesTimerId { get; set; }
     }
 
-    [Route("/LiveTv/Recordings/Groups", "GET")]
-    [Api(Description = "Gets live tv recording groups")]
+    [Route("/LiveTv/Recordings/Groups", "GET", Summary = "Gets live tv recording groups")]
     public class GetRecordingGroups : IReturn<QueryResult<RecordingGroupDto>>
     {
         [ApiMember(Name = "UserId", Description = "Optional filter by user and attach user data.", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")]
         public string UserId { get; set; }
     }
 
-    [Route("/LiveTv/Recordings/{Id}", "GET")]
-    [Api(Description = "Gets a live tv recording")]
+    [Route("/LiveTv/Recordings/{Id}", "GET", Summary = "Gets a live tv recording")]
     public class GetRecording : IReturn<RecordingInfoDto>
     {
         [ApiMember(Name = "Id", Description = "Recording Id", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "GET")]
@@ -106,32 +100,28 @@ namespace MediaBrowser.Api.LiveTv
         public string UserId { get; set; }
     }
 
-    [Route("/LiveTv/Tuners/{Id}/Reset", "POST")]
-    [Api(Description = "Resets a tv tuner")]
+    [Route("/LiveTv/Tuners/{Id}/Reset", "POST", Summary = "Resets a tv tuner")]
     public class ResetTuner : IReturnVoid
     {
         [ApiMember(Name = "Id", Description = "Tuner Id", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "GET")]
         public string Id { get; set; }
     }
 
-    [Route("/LiveTv/Timers/{Id}", "GET")]
-    [Api(Description = "Gets a live tv timer")]
+    [Route("/LiveTv/Timers/{Id}", "GET", Summary = "Gets a live tv timer")]
     public class GetTimer : IReturn<TimerInfoDto>
     {
         [ApiMember(Name = "Id", Description = "Timer Id", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "GET")]
         public string Id { get; set; }
     }
 
-    [Route("/LiveTv/Timers/Defaults", "GET")]
-    [Api(Description = "Gets default values for a new timer")]
+    [Route("/LiveTv/Timers/Defaults", "GET", Summary = "Gets default values for a new timer")]
     public class GetDefaultTimer : IReturn<SeriesTimerInfoDto>
     {
         [ApiMember(Name = "ProgramId", Description = "Optional, to attach default values based on a program.", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")]
         public string ProgramId { get; set; }
     }
 
-    [Route("/LiveTv/Timers", "GET")]
-    [Api(Description = "Gets live tv timers")]
+    [Route("/LiveTv/Timers", "GET", Summary = "Gets live tv timers")]
     public class GetTimers : IReturn<QueryResult<TimerInfoDto>>
     {
         [ApiMember(Name = "ChannelId", Description = "Optional filter by channel id.", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")]
@@ -141,8 +131,7 @@ namespace MediaBrowser.Api.LiveTv
         public string SeriesTimerId { get; set; }
     }
 
-    [Route("/LiveTv/Programs", "GET,POST")]
-    [Api(Description = "Gets available live tv epgs..")]
+    [Route("/LiveTv/Programs", "GET,POST", Summary = "Gets available live tv epgs..")]
     public class GetPrograms : IReturn<QueryResult<ProgramInfoDto>>
     {
         [ApiMember(Name = "ChannelIds", Description = "The channels to return guide information for.", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET,POST")]
@@ -164,8 +153,7 @@ namespace MediaBrowser.Api.LiveTv
         public string MaxEndDate { get; set; }
     }
 
-    [Route("/LiveTv/Programs/Recommended", "GET")]
-    [Api(Description = "Gets available live tv epgs..")]
+    [Route("/LiveTv/Programs/Recommended", "GET", Summary = "Gets available live tv epgs..")]
     public class GetRecommendedPrograms : IReturn<QueryResult<ProgramInfoDto>>
     {
         [ApiMember(Name = "UserId", Description = "Optional filter by user id.", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET,POST")]
@@ -181,8 +169,7 @@ namespace MediaBrowser.Api.LiveTv
         public bool? HasAired { get; set; }
     }
 
-    [Route("/LiveTv/Programs/{Id}", "GET")]
-    [Api(Description = "Gets a live tv program")]
+    [Route("/LiveTv/Programs/{Id}", "GET", Summary = "Gets a live tv program")]
     public class GetProgram : IReturn<ProgramInfoDto>
     {
         [ApiMember(Name = "Id", Description = "Program Id", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "GET")]
@@ -193,44 +180,38 @@ namespace MediaBrowser.Api.LiveTv
     }
 
 
-    [Route("/LiveTv/Recordings/{Id}", "DELETE")]
-    [Api(Description = "Deletes a live tv recording")]
+    [Route("/LiveTv/Recordings/{Id}", "DELETE", Summary = "Deletes a live tv recording")]
     public class DeleteRecording : IReturnVoid
     {
         [ApiMember(Name = "Id", Description = "Recording Id", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "GET")]
         public string Id { get; set; }
     }
 
-    [Route("/LiveTv/Timers/{Id}", "DELETE")]
-    [Api(Description = "Cancels a live tv timer")]
+    [Route("/LiveTv/Timers/{Id}", "DELETE", Summary = "Cancels a live tv timer")]
     public class CancelTimer : IReturnVoid
     {
         [ApiMember(Name = "Id", Description = "Timer Id", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "GET")]
         public string Id { get; set; }
     }
 
-    [Route("/LiveTv/Timers/{Id}", "POST")]
-    [Api(Description = "Updates a live tv timer")]
+    [Route("/LiveTv/Timers/{Id}", "POST", Summary = "Updates a live tv timer")]
     public class UpdateTimer : TimerInfoDto, IReturnVoid
     {
     }
 
-    [Route("/LiveTv/Timers", "POST")]
-    [Api(Description = "Creates a live tv timer")]
+    [Route("/LiveTv/Timers", "POST", Summary = "Creates a live tv timer")]
     public class CreateTimer : TimerInfoDto, IReturnVoid
     {
     }
 
-    [Route("/LiveTv/SeriesTimers/{Id}", "GET")]
-    [Api(Description = "Gets a live tv series timer")]
+    [Route("/LiveTv/SeriesTimers/{Id}", "GET", Summary = "Gets a live tv series timer")]
     public class GetSeriesTimer : IReturn<TimerInfoDto>
     {
         [ApiMember(Name = "Id", Description = "Timer Id", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "GET")]
         public string Id { get; set; }
     }
 
-    [Route("/LiveTv/SeriesTimers", "GET")]
-    [Api(Description = "Gets live tv series timers")]
+    [Route("/LiveTv/SeriesTimers", "GET", Summary = "Gets live tv series timers")]
     public class GetSeriesTimers : IReturn<QueryResult<SeriesTimerInfoDto>>
     {
         [ApiMember(Name = "SortBy", Description = "Optional. Sort by SortName or Priority", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET,POST")]
@@ -240,36 +221,31 @@ namespace MediaBrowser.Api.LiveTv
         public SortOrder SortOrder { get; set; }
     }
 
-    [Route("/LiveTv/SeriesTimers/{Id}", "DELETE")]
-    [Api(Description = "Cancels a live tv series timer")]
+    [Route("/LiveTv/SeriesTimers/{Id}", "DELETE", Summary = "Cancels a live tv series timer")]
     public class CancelSeriesTimer : IReturnVoid
     {
         [ApiMember(Name = "Id", Description = "Timer Id", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "GET")]
         public string Id { get; set; }
     }
 
-    [Route("/LiveTv/SeriesTimers/{Id}", "POST")]
-    [Api(Description = "Updates a live tv series timer")]
+    [Route("/LiveTv/SeriesTimers/{Id}", "POST", Summary = "Updates a live tv series timer")]
     public class UpdateSeriesTimer : SeriesTimerInfoDto, IReturnVoid
     {
     }
 
-    [Route("/LiveTv/SeriesTimers", "POST")]
-    [Api(Description = "Creates a live tv series timer")]
+    [Route("/LiveTv/SeriesTimers", "POST", Summary = "Creates a live tv series timer")]
     public class CreateSeriesTimer : SeriesTimerInfoDto, IReturnVoid
     {
     }
 
-    [Route("/LiveTv/Recordings/Groups/{Id}", "GET")]
-    [Api(Description = "Gets a recording group")]
+    [Route("/LiveTv/Recordings/Groups/{Id}", "GET", Summary = "Gets a recording group")]
     public class GetRecordingGroup : IReturn<RecordingGroupDto>
     {
         [ApiMember(Name = "Id", Description = "Recording group Id", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "GET")]
         public string Id { get; set; }
     }
 
-    [Route("/LiveTv/GuideInfo", "GET")]
-    [Api(Description = "Gets guide info")]
+    [Route("/LiveTv/GuideInfo", "GET", Summary = "Gets guide info")]
     public class GetGuideInfo : IReturn<GuideInfo>
     {
     }

+ 11 - 1
MediaBrowser.Controller/Dlna/DeviceProfile.cs

@@ -1,5 +1,6 @@
 using MediaBrowser.Model.Entities;
 using System;
+using System.Collections.Generic;
 using System.Linq;
 using System.Runtime.Serialization;
 using System.Xml.Serialization;
@@ -33,7 +34,9 @@ namespace MediaBrowser.Controller.Dlna
         public string ModelNumber { get; set; }
         public string ModelUrl { get; set; }
         public bool IgnoreTranscodeByteRangeRequests { get; set; }
-        public bool SupportsAlbumArtInDidl { get; set; }
+        public bool EnableAlbumArtInDidl { get; set; }
+
+        public string SupportedMediaTypes { get; set; }
 
         /// <summary>
         /// Controls the content of the X_DLNADOC element in the urn:schemas-dlna-org:device-1-0 namespace.
@@ -78,6 +81,13 @@ namespace MediaBrowser.Controller.Dlna
             MediaProfiles = new MediaProfile[] { };
             CodecProfiles = new CodecProfile[] { };
             ContainerProfiles = new ContainerProfile[] { };
+
+            SupportedMediaTypes = "Audio,Photo,Video";
+        }
+
+        public List<string> GetSupportedMediaTypes()
+        {
+            return (SupportedMediaTypes ?? string.Empty).Split(',').Where(i => !string.IsNullOrWhiteSpace(i)).ToList();
         }
 
         public TranscodingProfile GetAudioTranscodingProfile(string container, string audioCodec)

+ 5 - 1
MediaBrowser.Dlna/DlnaManager.cs

@@ -70,7 +70,9 @@ namespace MediaBrowser.Dlna
 
             foreach (var item in list)
             {
-                _xmlSerializer.SerializeToFile(item, "d:\\" + _fileSystem.GetValidFilename(item.Name) + ".xml");
+                var path = Path.Combine(_appPaths.ProgramDataPath, _fileSystem.GetValidFilename(item.Name) + ".xml");
+
+                _xmlSerializer.SerializeToFile(item, path);
             }
         }
 
@@ -102,6 +104,8 @@ namespace MediaBrowser.Dlna
 
         public DeviceProfile GetDefaultProfile()
         {
+            ExtractProfilesIfNeeded();
+
             return new DefaultProfile();
         }
 

+ 2 - 2
MediaBrowser.Dlna/PlayTo/DlnaController.cs

@@ -172,8 +172,8 @@ namespace MediaBrowser.Dlna.PlayTo
                 {
                     Item = _currentItem, 
                     SessionId = _session.Id, 
-                    CanSeek = true, 
-                    QueueableMediaTypes = new List<string> { "Audio", "Video" }
+                    CanSeek = true,
+                    QueueableMediaTypes = new List<string> { _currentItem.MediaType }
 
                 }).ConfigureAwait(false);
 

+ 4 - 6
MediaBrowser.Dlna/PlayTo/PlayToManager.cs

@@ -239,14 +239,12 @@ namespace MediaBrowser.Dlna.PlayTo
 
                     controller.Init(device);
 
+                    var profile = _dlnaManager.GetProfile(device.Properties.ToDeviceIdentification()) ??
+                                  _dlnaManager.GetDefaultProfile();
+
                     _sessionManager.ReportCapabilities(sessionInfo.Id, new SessionCapabilities
                     {
-                        PlayableMediaTypes = new[]
-                        {
-                            MediaType.Audio, 
-                            MediaType.Video, 
-                            MediaType.Photo
-                        },
+                        PlayableMediaTypes = profile.GetSupportedMediaTypes().ToArray(),
 
                         SupportsFullscreenToggle = false
                     });

+ 4 - 2
MediaBrowser.Dlna/Profiles/Foobar2000Profile.cs

@@ -1,5 +1,5 @@
-using System.Xml.Serialization;
-using MediaBrowser.Controller.Dlna;
+using MediaBrowser.Controller.Dlna;
+using System.Xml.Serialization;
 
 namespace MediaBrowser.Dlna.Profiles
 {
@@ -10,6 +10,8 @@ namespace MediaBrowser.Dlna.Profiles
         {
             Name = "foobar2000";
 
+            SupportedMediaTypes = "Audio";
+            
             Identification = new DeviceIdentification
             {
                 FriendlyName = @"foobar",

+ 1 - 1
MediaBrowser.Dlna/Profiles/SamsungSmartTvProfile.cs

@@ -10,7 +10,7 @@ namespace MediaBrowser.Dlna.Profiles
         {
             Name = "Samsung Smart TV";
 
-            SupportsAlbumArtInDidl = true;
+            EnableAlbumArtInDidl = true;
 
             Identification = new DeviceIdentification
             {

+ 2 - 1
MediaBrowser.Dlna/Profiles/Xml/Default.xml

@@ -8,7 +8,8 @@
   <ModelNumber>Media Browser</ModelNumber>
   <ModelUrl>http://mediabrowser3.com/</ModelUrl>
   <IgnoreTranscodeByteRangeRequests>false</IgnoreTranscodeByteRangeRequests>
-  <SupportsAlbumArtInDidl>false</SupportsAlbumArtInDidl>
+  <EnableAlbumArtInDidl>false</EnableAlbumArtInDidl>
+  <SupportedMediaTypes>Audio,Photo,Video</SupportedMediaTypes>
   <ProtocolInfo>DLNA</ProtocolInfo>
   <TimelineOffsetSeconds>0</TimelineOffsetSeconds>
   <RequiresPlainVideoItems>false</RequiresPlainVideoItems>

+ 2 - 1
MediaBrowser.Dlna/Profiles/Xml/Denon AVR.xml

@@ -13,7 +13,8 @@
   <ModelNumber>Media Browser</ModelNumber>
   <ModelUrl>http://mediabrowser3.com/</ModelUrl>
   <IgnoreTranscodeByteRangeRequests>false</IgnoreTranscodeByteRangeRequests>
-  <SupportsAlbumArtInDidl>false</SupportsAlbumArtInDidl>
+  <EnableAlbumArtInDidl>false</EnableAlbumArtInDidl>
+  <SupportedMediaTypes>Audio,Photo,Video</SupportedMediaTypes>
   <ProtocolInfo>DLNA</ProtocolInfo>
   <TimelineOffsetSeconds>0</TimelineOffsetSeconds>
   <RequiresPlainVideoItems>false</RequiresPlainVideoItems>

+ 2 - 1
MediaBrowser.Dlna/Profiles/Xml/LG Smart TV.xml

@@ -14,7 +14,8 @@
   <ModelNumber>Media Browser</ModelNumber>
   <ModelUrl>http://mediabrowser3.com/</ModelUrl>
   <IgnoreTranscodeByteRangeRequests>false</IgnoreTranscodeByteRangeRequests>
-  <SupportsAlbumArtInDidl>false</SupportsAlbumArtInDidl>
+  <EnableAlbumArtInDidl>false</EnableAlbumArtInDidl>
+  <SupportedMediaTypes>Audio,Photo,Video</SupportedMediaTypes>
   <ProtocolInfo>DLNA</ProtocolInfo>
   <TimelineOffsetSeconds>10</TimelineOffsetSeconds>
   <RequiresPlainVideoItems>false</RequiresPlainVideoItems>

+ 2 - 1
MediaBrowser.Dlna/Profiles/Xml/Linksys DMA2100.xml

@@ -12,7 +12,8 @@
   <ModelNumber>Media Browser</ModelNumber>
   <ModelUrl>http://mediabrowser3.com/</ModelUrl>
   <IgnoreTranscodeByteRangeRequests>false</IgnoreTranscodeByteRangeRequests>
-  <SupportsAlbumArtInDidl>false</SupportsAlbumArtInDidl>
+  <EnableAlbumArtInDidl>false</EnableAlbumArtInDidl>
+  <SupportedMediaTypes>Audio,Photo,Video</SupportedMediaTypes>
   <ProtocolInfo>DLNA</ProtocolInfo>
   <TimelineOffsetSeconds>0</TimelineOffsetSeconds>
   <RequiresPlainVideoItems>false</RequiresPlainVideoItems>

+ 2 - 1
MediaBrowser.Dlna/Profiles/Xml/Panasonic Viera.xml

@@ -15,7 +15,8 @@
   <ModelNumber>Media Browser</ModelNumber>
   <ModelUrl>http://mediabrowser3.com/</ModelUrl>
   <IgnoreTranscodeByteRangeRequests>false</IgnoreTranscodeByteRangeRequests>
-  <SupportsAlbumArtInDidl>false</SupportsAlbumArtInDidl>
+  <EnableAlbumArtInDidl>false</EnableAlbumArtInDidl>
+  <SupportedMediaTypes>Audio,Photo,Video</SupportedMediaTypes>
   <ProtocolInfo>DLNA</ProtocolInfo>
   <TimelineOffsetSeconds>10</TimelineOffsetSeconds>
   <RequiresPlainVideoItems>false</RequiresPlainVideoItems>

+ 2 - 1
MediaBrowser.Dlna/Profiles/Xml/Samsung Smart TV.xml

@@ -12,7 +12,8 @@
   <ModelNumber>Media Browser</ModelNumber>
   <ModelUrl>http://mediabrowser3.com/</ModelUrl>
   <IgnoreTranscodeByteRangeRequests>false</IgnoreTranscodeByteRangeRequests>
-  <SupportsAlbumArtInDidl>true</SupportsAlbumArtInDidl>
+  <EnableAlbumArtInDidl>true</EnableAlbumArtInDidl>
+  <SupportedMediaTypes>Audio,Photo,Video</SupportedMediaTypes>
   <ProtocolInfo>DLNA</ProtocolInfo>
   <TimelineOffsetSeconds>0</TimelineOffsetSeconds>
   <RequiresPlainVideoItems>false</RequiresPlainVideoItems>

Разница между файлами не показана из-за своего большого размера
+ 2 - 1
MediaBrowser.Dlna/Profiles/Xml/Sony Blu-ray Player 2013.xml


Разница между файлами не показана из-за своего большого размера
+ 2 - 1
MediaBrowser.Dlna/Profiles/Xml/Sony Blu-ray Player.xml


+ 2 - 1
MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2010).xml

@@ -15,7 +15,8 @@
   <ModelNumber>3.0</ModelNumber>
   <ModelUrl>http://www.microsoft.com/</ModelUrl>
   <IgnoreTranscodeByteRangeRequests>false</IgnoreTranscodeByteRangeRequests>
-  <SupportsAlbumArtInDidl>false</SupportsAlbumArtInDidl>
+  <EnableAlbumArtInDidl>false</EnableAlbumArtInDidl>
+  <SupportedMediaTypes>Audio,Photo,Video</SupportedMediaTypes>
   <SonyAggregationFlags>10</SonyAggregationFlags>
   <ProtocolInfo>http-get:*:audio/mpeg:DLNA.ORG_PN=MP3;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_SM;DLNA.ORG_OP=00;DLNA.ORG_FLAGS=00D00000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_PS_PAL;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000</ProtocolInfo>
   <TimelineOffsetSeconds>0</TimelineOffsetSeconds>

+ 2 - 1
MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2011).xml

@@ -15,7 +15,8 @@
   <ModelNumber>3.0</ModelNumber>
   <ModelUrl>http://www.microsoft.com/</ModelUrl>
   <IgnoreTranscodeByteRangeRequests>false</IgnoreTranscodeByteRangeRequests>
-  <SupportsAlbumArtInDidl>false</SupportsAlbumArtInDidl>
+  <EnableAlbumArtInDidl>false</EnableAlbumArtInDidl>
+  <SupportedMediaTypes>Audio,Photo,Video</SupportedMediaTypes>
   <SonyAggregationFlags>10</SonyAggregationFlags>
   <ProtocolInfo>DLNA</ProtocolInfo>
   <TimelineOffsetSeconds>0</TimelineOffsetSeconds>

+ 2 - 1
MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2012).xml

@@ -15,7 +15,8 @@
   <ModelNumber>3.0</ModelNumber>
   <ModelUrl>http://www.microsoft.com/</ModelUrl>
   <IgnoreTranscodeByteRangeRequests>false</IgnoreTranscodeByteRangeRequests>
-  <SupportsAlbumArtInDidl>false</SupportsAlbumArtInDidl>
+  <EnableAlbumArtInDidl>false</EnableAlbumArtInDidl>
+  <SupportedMediaTypes>Audio,Photo,Video</SupportedMediaTypes>
   <SonyAggregationFlags>10</SonyAggregationFlags>
   <ProtocolInfo>DLNA</ProtocolInfo>
   <TimelineOffsetSeconds>0</TimelineOffsetSeconds>

+ 2 - 1
MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2013).xml

@@ -15,7 +15,8 @@
   <ModelNumber>3.0</ModelNumber>
   <ModelUrl>http://www.microsoft.com/</ModelUrl>
   <IgnoreTranscodeByteRangeRequests>false</IgnoreTranscodeByteRangeRequests>
-  <SupportsAlbumArtInDidl>false</SupportsAlbumArtInDidl>
+  <EnableAlbumArtInDidl>false</EnableAlbumArtInDidl>
+  <SupportedMediaTypes>Audio,Photo,Video</SupportedMediaTypes>
   <SonyAggregationFlags>10</SonyAggregationFlags>
   <ProtocolInfo>DLNA</ProtocolInfo>
   <TimelineOffsetSeconds>0</TimelineOffsetSeconds>

+ 2 - 1
MediaBrowser.Dlna/Profiles/Xml/Sony PlayStation 3.xml

@@ -15,7 +15,8 @@
   <ModelNumber>Media Browser</ModelNumber>
   <ModelUrl>http://mediabrowser3.com/</ModelUrl>
   <IgnoreTranscodeByteRangeRequests>false</IgnoreTranscodeByteRangeRequests>
-  <SupportsAlbumArtInDidl>false</SupportsAlbumArtInDidl>
+  <EnableAlbumArtInDidl>false</EnableAlbumArtInDidl>
+  <SupportedMediaTypes>Audio,Photo,Video</SupportedMediaTypes>
   <XDlnaDoc>DMS-1.50</XDlnaDoc>
   <SonyAggregationFlags>10</SonyAggregationFlags>
   <ProtocolInfo>DLNA</ProtocolInfo>

+ 2 - 1
MediaBrowser.Dlna/Profiles/Xml/WDTV Live.xml

@@ -15,7 +15,8 @@
   <ModelNumber>Media Browser</ModelNumber>
   <ModelUrl>http://mediabrowser3.com/</ModelUrl>
   <IgnoreTranscodeByteRangeRequests>true</IgnoreTranscodeByteRangeRequests>
-  <SupportsAlbumArtInDidl>false</SupportsAlbumArtInDidl>
+  <EnableAlbumArtInDidl>false</EnableAlbumArtInDidl>
+  <SupportedMediaTypes>Audio,Photo,Video</SupportedMediaTypes>
   <ProtocolInfo>DLNA</ProtocolInfo>
   <TimelineOffsetSeconds>5</TimelineOffsetSeconds>
   <RequiresPlainVideoItems>false</RequiresPlainVideoItems>

+ 2 - 1
MediaBrowser.Dlna/Profiles/Xml/Xbox 360.xml

@@ -15,7 +15,8 @@
   <ModelNumber>12.0</ModelNumber>
   <ModelUrl>http://www.microsoft.com/</ModelUrl>
   <IgnoreTranscodeByteRangeRequests>false</IgnoreTranscodeByteRangeRequests>
-  <SupportsAlbumArtInDidl>false</SupportsAlbumArtInDidl>
+  <EnableAlbumArtInDidl>false</EnableAlbumArtInDidl>
+  <SupportedMediaTypes>Audio,Photo,Video</SupportedMediaTypes>
   <XDlnaDoc>DMS-1.50</XDlnaDoc>
   <ProtocolInfo>DLNA</ProtocolInfo>
   <TimelineOffsetSeconds>40</TimelineOffsetSeconds>

+ 2 - 1
MediaBrowser.Dlna/Profiles/Xml/Xbox One.xml

@@ -13,7 +13,8 @@
   <ModelNumber>Media Browser</ModelNumber>
   <ModelUrl>http://mediabrowser3.com/</ModelUrl>
   <IgnoreTranscodeByteRangeRequests>false</IgnoreTranscodeByteRangeRequests>
-  <SupportsAlbumArtInDidl>false</SupportsAlbumArtInDidl>
+  <EnableAlbumArtInDidl>false</EnableAlbumArtInDidl>
+  <SupportedMediaTypes>Audio,Photo,Video</SupportedMediaTypes>
   <ProtocolInfo>DLNA</ProtocolInfo>
   <TimelineOffsetSeconds>0</TimelineOffsetSeconds>
   <RequiresPlainVideoItems>false</RequiresPlainVideoItems>

+ 2 - 1
MediaBrowser.Dlna/Profiles/Xml/foobar2000.xml

@@ -14,7 +14,8 @@
   <ModelNumber>Media Browser</ModelNumber>
   <ModelUrl>http://mediabrowser3.com/</ModelUrl>
   <IgnoreTranscodeByteRangeRequests>false</IgnoreTranscodeByteRangeRequests>
-  <SupportsAlbumArtInDidl>false</SupportsAlbumArtInDidl>
+  <EnableAlbumArtInDidl>false</EnableAlbumArtInDidl>
+  <SupportedMediaTypes>Audio</SupportedMediaTypes>
   <ProtocolInfo>DLNA</ProtocolInfo>
   <TimelineOffsetSeconds>0</TimelineOffsetSeconds>
   <RequiresPlainVideoItems>false</RequiresPlainVideoItems>

Некоторые файлы не были показаны из-за большого количества измененных файлов