aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuke Pulverenti <luke.pulverenti@gmail.com>2015-05-08 12:28:06 -0400
committerLuke Pulverenti <luke.pulverenti@gmail.com>2015-05-08 12:28:06 -0400
commita9ccccc5351936fb0bebcc7a3959d91e1e9a5bab (patch)
tree254d0ebba1a2a31cde10d68b3b384a559bedf082
parent55461b7605a62af041f478b94af740ad3117b293 (diff)
make more dlna attributes configurable
-rw-r--r--MediaBrowser.Dlna/DlnaManager.cs2
-rw-r--r--MediaBrowser.Dlna/PlayTo/SsdpHttpClient.cs2
-rw-r--r--MediaBrowser.Dlna/Profiles/DefaultProfile.cs18
-rw-r--r--MediaBrowser.Dlna/Profiles/PanasonicVieraProfile.cs9
-rw-r--r--MediaBrowser.Dlna/Profiles/SamsungSmartTvProfile.cs9
-rw-r--r--MediaBrowser.Dlna/Profiles/SonyBlurayPlayer2013Profile.cs9
-rw-r--r--MediaBrowser.Dlna/Profiles/SonyBlurayPlayerProfile.cs9
-rw-r--r--MediaBrowser.Dlna/Profiles/SonyBravia2010Profile.cs9
-rw-r--r--MediaBrowser.Dlna/Profiles/SonyBravia2011Profile.cs9
-rw-r--r--MediaBrowser.Dlna/Profiles/SonyBravia2012Profile.cs9
-rw-r--r--MediaBrowser.Dlna/Profiles/SonyBravia2013Profile.cs9
-rw-r--r--MediaBrowser.Dlna/Profiles/Xbox360Profile.cs10
-rw-r--r--MediaBrowser.Dlna/Profiles/Xml/BubbleUPnp.xml5
-rw-r--r--MediaBrowser.Dlna/Profiles/Xml/Default.xml5
-rw-r--r--MediaBrowser.Dlna/Profiles/Xml/Denon AVR.xml5
-rw-r--r--MediaBrowser.Dlna/Profiles/Xml/DirecTV HD-DVR.xml5
-rw-r--r--MediaBrowser.Dlna/Profiles/Xml/Dish Hopper-Joey.xml5
-rw-r--r--MediaBrowser.Dlna/Profiles/Xml/LG Smart TV.xml5
-rw-r--r--MediaBrowser.Dlna/Profiles/Xml/Linksys DMA2100.xml5
-rw-r--r--MediaBrowser.Dlna/Profiles/Xml/MediaMonkey.xml5
-rw-r--r--MediaBrowser.Dlna/Profiles/Xml/Panasonic Viera.xml2
-rw-r--r--MediaBrowser.Dlna/Profiles/Xml/Popcorn Hour.xml5
-rw-r--r--MediaBrowser.Dlna/Profiles/Xml/Samsung Smart TV.xml2
-rw-r--r--MediaBrowser.Dlna/Profiles/Xml/Sony Blu-ray Player 2013.xml2
-rw-r--r--MediaBrowser.Dlna/Profiles/Xml/Sony Blu-ray Player.xml2
-rw-r--r--MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2010).xml2
-rw-r--r--MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2011).xml2
-rw-r--r--MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2012).xml2
-rw-r--r--MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2013).xml2
-rw-r--r--MediaBrowser.Dlna/Profiles/Xml/Sony PlayStation 3.xml5
-rw-r--r--MediaBrowser.Dlna/Profiles/Xml/Vlc.xml5
-rw-r--r--MediaBrowser.Dlna/Profiles/Xml/WDTV Live.xml5
-rw-r--r--MediaBrowser.Dlna/Profiles/Xml/Xbox 360.xml11
-rw-r--r--MediaBrowser.Dlna/Profiles/Xml/Xbox One.xml5
-rw-r--r--MediaBrowser.Dlna/Profiles/Xml/foobar2000.xml5
-rw-r--r--MediaBrowser.Dlna/Server/DescriptionXmlBuilder.cs33
-rw-r--r--MediaBrowser.Providers/Manager/ProviderUtils.cs9
37 files changed, 148 insertions, 95 deletions
diff --git a/MediaBrowser.Dlna/DlnaManager.cs b/MediaBrowser.Dlna/DlnaManager.cs
index 62756e4c4..2d2525919 100644
--- a/MediaBrowser.Dlna/DlnaManager.cs
+++ b/MediaBrowser.Dlna/DlnaManager.cs
@@ -482,7 +482,7 @@ namespace MediaBrowser.Dlna
var profile = GetProfile(headers) ??
GetDefaultProfile();
- return new DescriptionXmlBuilder(profile, serverUuId, serverAddress, _appHost.FriendlyName).GetXml();
+ return new DescriptionXmlBuilder(profile, serverUuId, serverAddress, _appHost.FriendlyName, serverUuId.GetMD5().ToString("N")).GetXml();
}
public ImageStream GetIcon(string filename)
diff --git a/MediaBrowser.Dlna/PlayTo/SsdpHttpClient.cs b/MediaBrowser.Dlna/PlayTo/SsdpHttpClient.cs
index 39d3a8d07..ab6674afc 100644
--- a/MediaBrowser.Dlna/PlayTo/SsdpHttpClient.cs
+++ b/MediaBrowser.Dlna/PlayTo/SsdpHttpClient.cs
@@ -13,7 +13,7 @@ namespace MediaBrowser.Dlna.PlayTo
public class SsdpHttpClient
{
private const string USERAGENT = "Microsoft-Windows/6.2 UPnP/1.0 Microsoft-DLNA DLNADOC/1.50";
- private const string FriendlyName = "MediaBrowser";
+ private const string FriendlyName = "Emby";
private readonly IHttpClient _httpClient;
private readonly IServerConfigurationManager _config;
diff --git a/MediaBrowser.Dlna/Profiles/DefaultProfile.cs b/MediaBrowser.Dlna/Profiles/DefaultProfile.cs
index a243fd011..59e1dc540 100644
--- a/MediaBrowser.Dlna/Profiles/DefaultProfile.cs
+++ b/MediaBrowser.Dlna/Profiles/DefaultProfile.cs
@@ -1,4 +1,5 @@
using MediaBrowser.Model.Dlna;
+using System.Linq;
using System.Xml.Serialization;
namespace MediaBrowser.Dlna.Profiles
@@ -75,6 +76,23 @@ namespace MediaBrowser.Dlna.Profiles
Type = DlnaProfileType.Video
}
};
+
+ AddXmlRootAttribute("xmlns", "urn:schemas-upnp-org:device-1-0");
+ AddXmlRootAttribute("xmlns:dlna", "urn:schemas-dlna-org:device-1-0");
+ }
+
+ public void AddXmlRootAttribute(string name, string value)
+ {
+ var atts = XmlRootAttributes ?? new XmlAttribute[] { };
+ var list = atts.ToList();
+
+ list.Add(new XmlAttribute
+ {
+ Name = name,
+ Value = value
+ });
+
+ XmlRootAttributes = list.ToArray();
}
}
}
diff --git a/MediaBrowser.Dlna/Profiles/PanasonicVieraProfile.cs b/MediaBrowser.Dlna/Profiles/PanasonicVieraProfile.cs
index 9e51c2895..473640c15 100644
--- a/MediaBrowser.Dlna/Profiles/PanasonicVieraProfile.cs
+++ b/MediaBrowser.Dlna/Profiles/PanasonicVieraProfile.cs
@@ -26,14 +26,7 @@ namespace MediaBrowser.Dlna.Profiles
}
};
- XmlRootAttributes = new[]
- {
- new XmlAttribute
- {
- Name = "xmlns:pv",
- Value = "http://www.pv.com/pvns/"
- }
- };
+ AddXmlRootAttribute("xmlns:pv", "http://www.pv.com/pvns/");
TimelineOffsetSeconds = 10;
diff --git a/MediaBrowser.Dlna/Profiles/SamsungSmartTvProfile.cs b/MediaBrowser.Dlna/Profiles/SamsungSmartTvProfile.cs
index 396dd6489..d2aa005c3 100644
--- a/MediaBrowser.Dlna/Profiles/SamsungSmartTvProfile.cs
+++ b/MediaBrowser.Dlna/Profiles/SamsungSmartTvProfile.cs
@@ -27,14 +27,7 @@ namespace MediaBrowser.Dlna.Profiles
}
};
- XmlRootAttributes = new[]
- {
- new XmlAttribute
- {
- Name = "xmlns:sec",
- Value = "http://www.sec.co.kr/"
- }
- };
+ AddXmlRootAttribute("xmlns:sec", "http://www.sec.co.kr/");
TranscodingProfiles = new[]
{
diff --git a/MediaBrowser.Dlna/Profiles/SonyBlurayPlayer2013Profile.cs b/MediaBrowser.Dlna/Profiles/SonyBlurayPlayer2013Profile.cs
index baaccba5a..dbade8170 100644
--- a/MediaBrowser.Dlna/Profiles/SonyBlurayPlayer2013Profile.cs
+++ b/MediaBrowser.Dlna/Profiles/SonyBlurayPlayer2013Profile.cs
@@ -17,14 +17,7 @@ namespace MediaBrowser.Dlna.Profiles
ModelNumber = "BDP-2013"
};
- XmlRootAttributes = new[]
- {
- new XmlAttribute
- {
- Name = "xmlns:av",
- Value = "urn:schemas-sony-com:av"
- }
- };
+ AddXmlRootAttribute("xmlns:av", "urn:schemas-sony-com:av");
ModelName = "Windows Media Player Sharing";
ModelNumber = "3.0";
diff --git a/MediaBrowser.Dlna/Profiles/SonyBlurayPlayerProfile.cs b/MediaBrowser.Dlna/Profiles/SonyBlurayPlayerProfile.cs
index d2e6d7c15..f6cc03637 100644
--- a/MediaBrowser.Dlna/Profiles/SonyBlurayPlayerProfile.cs
+++ b/MediaBrowser.Dlna/Profiles/SonyBlurayPlayerProfile.cs
@@ -33,14 +33,7 @@ namespace MediaBrowser.Dlna.Profiles
}
};
- XmlRootAttributes = new[]
- {
- new XmlAttribute
- {
- Name = "xmlns:av",
- Value = "urn:schemas-sony-com:av"
- }
- };
+ AddXmlRootAttribute("xmlns:av", "urn:schemas-sony-com:av");
ModelName = "Windows Media Player Sharing";
ModelNumber = "3.0";
diff --git a/MediaBrowser.Dlna/Profiles/SonyBravia2010Profile.cs b/MediaBrowser.Dlna/Profiles/SonyBravia2010Profile.cs
index 3bd425cb3..3a1086d3c 100644
--- a/MediaBrowser.Dlna/Profiles/SonyBravia2010Profile.cs
+++ b/MediaBrowser.Dlna/Profiles/SonyBravia2010Profile.cs
@@ -26,14 +26,7 @@ namespace MediaBrowser.Dlna.Profiles
}
};
- XmlRootAttributes = new[]
- {
- new XmlAttribute
- {
- Name = "xmlns:av",
- Value = "urn:schemas-sony-com:av"
- }
- };
+ AddXmlRootAttribute("xmlns:av", "urn:schemas-sony-com:av");
AlbumArtPn = "JPEG_TN";
diff --git a/MediaBrowser.Dlna/Profiles/SonyBravia2011Profile.cs b/MediaBrowser.Dlna/Profiles/SonyBravia2011Profile.cs
index de4f1d2b6..34b2dc325 100644
--- a/MediaBrowser.Dlna/Profiles/SonyBravia2011Profile.cs
+++ b/MediaBrowser.Dlna/Profiles/SonyBravia2011Profile.cs
@@ -26,14 +26,7 @@ namespace MediaBrowser.Dlna.Profiles
}
};
- XmlRootAttributes = new[]
- {
- new XmlAttribute
- {
- Name = "xmlns:av",
- Value = "urn:schemas-sony-com:av"
- }
- };
+ AddXmlRootAttribute("xmlns:av", "urn:schemas-sony-com:av");
AlbumArtPn = "JPEG_TN";
diff --git a/MediaBrowser.Dlna/Profiles/SonyBravia2012Profile.cs b/MediaBrowser.Dlna/Profiles/SonyBravia2012Profile.cs
index 5a5fb9e94..c56663d43 100644
--- a/MediaBrowser.Dlna/Profiles/SonyBravia2012Profile.cs
+++ b/MediaBrowser.Dlna/Profiles/SonyBravia2012Profile.cs
@@ -26,14 +26,7 @@ namespace MediaBrowser.Dlna.Profiles
}
};
- XmlRootAttributes = new[]
- {
- new XmlAttribute
- {
- Name = "xmlns:av",
- Value = "urn:schemas-sony-com:av"
- }
- };
+ AddXmlRootAttribute("xmlns:av", "urn:schemas-sony-com:av");
AlbumArtPn = "JPEG_TN";
diff --git a/MediaBrowser.Dlna/Profiles/SonyBravia2013Profile.cs b/MediaBrowser.Dlna/Profiles/SonyBravia2013Profile.cs
index 74a07f389..d19ca1a91 100644
--- a/MediaBrowser.Dlna/Profiles/SonyBravia2013Profile.cs
+++ b/MediaBrowser.Dlna/Profiles/SonyBravia2013Profile.cs
@@ -26,14 +26,7 @@ namespace MediaBrowser.Dlna.Profiles
}
};
- XmlRootAttributes = new[]
- {
- new XmlAttribute
- {
- Name = "xmlns:av",
- Value = "urn:schemas-sony-com:av"
- }
- };
+ AddXmlRootAttribute("xmlns:av", "urn:schemas-sony-com:av");
AlbumArtPn = "JPEG_TN";
diff --git a/MediaBrowser.Dlna/Profiles/Xbox360Profile.cs b/MediaBrowser.Dlna/Profiles/Xbox360Profile.cs
index 62c06f8f5..f230b38ae 100644
--- a/MediaBrowser.Dlna/Profiles/Xbox360Profile.cs
+++ b/MediaBrowser.Dlna/Profiles/Xbox360Profile.cs
@@ -18,12 +18,13 @@ namespace MediaBrowser.Dlna.Profiles
ModelNumber = "12.0";
- FriendlyName = "${HostName} : 1";
+ FriendlyName = "${HostName}: Emby:";
- ModelUrl = "http://www.microsoft.com/";
+ ModelUrl = "http://go.microsoft.com/fwlink/?LinkId=105926";
Manufacturer = "Microsoft Corporation";
- ManufacturerUrl = "http://www.microsoft.com/";
+ ManufacturerUrl = "http://www.microsoft.com";
XDlnaDoc = "DMS-1.50";
+ ModelDescription = null;
TimelineOffsetSeconds = 40;
RequiresPlainFolders = true;
@@ -311,6 +312,9 @@ namespace MediaBrowser.Dlna.Profiles
}
}
};
+
+ XmlRootAttributes = new XmlAttribute[] { };
+ AddXmlRootAttribute("xmlns", "urn:schemas-upnp-org:device-1-0");
}
}
}
diff --git a/MediaBrowser.Dlna/Profiles/Xml/BubbleUPnp.xml b/MediaBrowser.Dlna/Profiles/Xml/BubbleUPnp.xml
index d65b55f2e..4aacc8a48 100644
--- a/MediaBrowser.Dlna/Profiles/Xml/BubbleUPnp.xml
+++ b/MediaBrowser.Dlna/Profiles/Xml/BubbleUPnp.xml
@@ -32,7 +32,10 @@
<RequiresPlainVideoItems>false</RequiresPlainVideoItems>
<RequiresPlainFolders>false</RequiresPlainFolders>
<EnableMSMediaReceiverRegistrar>false</EnableMSMediaReceiverRegistrar>
- <XmlRootAttributes />
+ <XmlRootAttributes>
+ <XmlAttribute name="xmlns" value="urn:schemas-upnp-org:device-1-0" />
+ <XmlAttribute name="xmlns:dlna" value="urn:schemas-dlna-org:device-1-0" />
+ </XmlRootAttributes>
<DirectPlayProfiles>
<DirectPlayProfile container="avi,mpeg,mkv,ts,mp4,mov,m4v,asf,webm,ogg,ogv,iso" type="Video" />
<DirectPlayProfile container="mp3,flac,asf,off,oga,aac" type="Audio" />
diff --git a/MediaBrowser.Dlna/Profiles/Xml/Default.xml b/MediaBrowser.Dlna/Profiles/Xml/Default.xml
index 1c611d47a..4755d60bd 100644
--- a/MediaBrowser.Dlna/Profiles/Xml/Default.xml
+++ b/MediaBrowser.Dlna/Profiles/Xml/Default.xml
@@ -26,7 +26,10 @@
<RequiresPlainVideoItems>false</RequiresPlainVideoItems>
<RequiresPlainFolders>false</RequiresPlainFolders>
<EnableMSMediaReceiverRegistrar>false</EnableMSMediaReceiverRegistrar>
- <XmlRootAttributes />
+ <XmlRootAttributes>
+ <XmlAttribute name="xmlns" value="urn:schemas-upnp-org:device-1-0" />
+ <XmlAttribute name="xmlns:dlna" value="urn:schemas-dlna-org:device-1-0" />
+ </XmlRootAttributes>
<DirectPlayProfiles>
<DirectPlayProfile container="mp3,wma" type="Audio" />
<DirectPlayProfile container="avi,mp4" type="Video" />
diff --git a/MediaBrowser.Dlna/Profiles/Xml/Denon AVR.xml b/MediaBrowser.Dlna/Profiles/Xml/Denon AVR.xml
index 4f8a0eac5..6bf90c8ff 100644
--- a/MediaBrowser.Dlna/Profiles/Xml/Denon AVR.xml
+++ b/MediaBrowser.Dlna/Profiles/Xml/Denon AVR.xml
@@ -31,7 +31,10 @@
<RequiresPlainVideoItems>false</RequiresPlainVideoItems>
<RequiresPlainFolders>false</RequiresPlainFolders>
<EnableMSMediaReceiverRegistrar>false</EnableMSMediaReceiverRegistrar>
- <XmlRootAttributes />
+ <XmlRootAttributes>
+ <XmlAttribute name="xmlns" value="urn:schemas-upnp-org:device-1-0" />
+ <XmlAttribute name="xmlns:dlna" value="urn:schemas-dlna-org:device-1-0" />
+ </XmlRootAttributes>
<DirectPlayProfiles>
<DirectPlayProfile container="mp3,flac,m4a,wma" type="Audio" />
</DirectPlayProfiles>
diff --git a/MediaBrowser.Dlna/Profiles/Xml/DirecTV HD-DVR.xml b/MediaBrowser.Dlna/Profiles/Xml/DirecTV HD-DVR.xml
index 4595b57e0..cecdfdbe4 100644
--- a/MediaBrowser.Dlna/Profiles/Xml/DirecTV HD-DVR.xml
+++ b/MediaBrowser.Dlna/Profiles/Xml/DirecTV HD-DVR.xml
@@ -32,7 +32,10 @@
<RequiresPlainVideoItems>true</RequiresPlainVideoItems>
<RequiresPlainFolders>true</RequiresPlainFolders>
<EnableMSMediaReceiverRegistrar>false</EnableMSMediaReceiverRegistrar>
- <XmlRootAttributes />
+ <XmlRootAttributes>
+ <XmlAttribute name="xmlns" value="urn:schemas-upnp-org:device-1-0" />
+ <XmlAttribute name="xmlns:dlna" value="urn:schemas-dlna-org:device-1-0" />
+ </XmlRootAttributes>
<DirectPlayProfiles>
<DirectPlayProfile container="mpeg" audioCodec="mp2" videoCodec="mpeg2video" type="Video" />
<DirectPlayProfile container="jpeg,jpg" type="Photo" />
diff --git a/MediaBrowser.Dlna/Profiles/Xml/Dish Hopper-Joey.xml b/MediaBrowser.Dlna/Profiles/Xml/Dish Hopper-Joey.xml
index 50bc43f7c..59f374b2e 100644
--- a/MediaBrowser.Dlna/Profiles/Xml/Dish Hopper-Joey.xml
+++ b/MediaBrowser.Dlna/Profiles/Xml/Dish Hopper-Joey.xml
@@ -33,7 +33,10 @@
<RequiresPlainVideoItems>false</RequiresPlainVideoItems>
<RequiresPlainFolders>false</RequiresPlainFolders>
<EnableMSMediaReceiverRegistrar>false</EnableMSMediaReceiverRegistrar>
- <XmlRootAttributes />
+ <XmlRootAttributes>
+ <XmlAttribute name="xmlns" value="urn:schemas-upnp-org:device-1-0" />
+ <XmlAttribute name="xmlns:dlna" value="urn:schemas-dlna-org:device-1-0" />
+ </XmlRootAttributes>
<DirectPlayProfiles>
<DirectPlayProfile container="mp4,mkv,mpeg,ts" audioCodec="mp3,ac3,aac,he-aac,pcm" videoCodec="h264,mpeg2video" type="Video" />
<DirectPlayProfile container="mp3" audioCodec="mp3" type="Audio" />
diff --git a/MediaBrowser.Dlna/Profiles/Xml/LG Smart TV.xml b/MediaBrowser.Dlna/Profiles/Xml/LG Smart TV.xml
index 919fa5a40..340a295e7 100644
--- a/MediaBrowser.Dlna/Profiles/Xml/LG Smart TV.xml
+++ b/MediaBrowser.Dlna/Profiles/Xml/LG Smart TV.xml
@@ -32,7 +32,10 @@
<RequiresPlainVideoItems>false</RequiresPlainVideoItems>
<RequiresPlainFolders>false</RequiresPlainFolders>
<EnableMSMediaReceiverRegistrar>false</EnableMSMediaReceiverRegistrar>
- <XmlRootAttributes />
+ <XmlRootAttributes>
+ <XmlAttribute name="xmlns" value="urn:schemas-upnp-org:device-1-0" />
+ <XmlAttribute name="xmlns:dlna" value="urn:schemas-dlna-org:device-1-0" />
+ </XmlRootAttributes>
<DirectPlayProfiles>
<DirectPlayProfile container="ts" audioCodec="aac,ac3,mp3" videoCodec="h264" type="Video" />
<DirectPlayProfile container="mkv" audioCodec="aac,ac3,mp3" videoCodec="h264" type="Video" />
diff --git a/MediaBrowser.Dlna/Profiles/Xml/Linksys DMA2100.xml b/MediaBrowser.Dlna/Profiles/Xml/Linksys DMA2100.xml
index 1dc942873..057a052e1 100644
--- a/MediaBrowser.Dlna/Profiles/Xml/Linksys DMA2100.xml
+++ b/MediaBrowser.Dlna/Profiles/Xml/Linksys DMA2100.xml
@@ -30,7 +30,10 @@
<RequiresPlainVideoItems>false</RequiresPlainVideoItems>
<RequiresPlainFolders>false</RequiresPlainFolders>
<EnableMSMediaReceiverRegistrar>false</EnableMSMediaReceiverRegistrar>
- <XmlRootAttributes />
+ <XmlRootAttributes>
+ <XmlAttribute name="xmlns" value="urn:schemas-upnp-org:device-1-0" />
+ <XmlAttribute name="xmlns:dlna" value="urn:schemas-dlna-org:device-1-0" />
+ </XmlRootAttributes>
<DirectPlayProfiles>
<DirectPlayProfile container="mp3,flac,m4a,wma" type="Audio" />
<DirectPlayProfile container="avi,mp4,mkv,ts" type="Video" />
diff --git a/MediaBrowser.Dlna/Profiles/Xml/MediaMonkey.xml b/MediaBrowser.Dlna/Profiles/Xml/MediaMonkey.xml
index 4896402a0..8054f3b61 100644
--- a/MediaBrowser.Dlna/Profiles/Xml/MediaMonkey.xml
+++ b/MediaBrowser.Dlna/Profiles/Xml/MediaMonkey.xml
@@ -32,7 +32,10 @@
<RequiresPlainVideoItems>false</RequiresPlainVideoItems>
<RequiresPlainFolders>false</RequiresPlainFolders>
<EnableMSMediaReceiverRegistrar>false</EnableMSMediaReceiverRegistrar>
- <XmlRootAttributes />
+ <XmlRootAttributes>
+ <XmlAttribute name="xmlns" value="urn:schemas-upnp-org:device-1-0" />
+ <XmlAttribute name="xmlns:dlna" value="urn:schemas-dlna-org:device-1-0" />
+ </XmlRootAttributes>
<DirectPlayProfiles>
<DirectPlayProfile container="mp3" audioCodec="mp2,mp3" type="Audio" />
<DirectPlayProfile container="mp4" audioCodec="mp4" type="Audio" />
diff --git a/MediaBrowser.Dlna/Profiles/Xml/Panasonic Viera.xml b/MediaBrowser.Dlna/Profiles/Xml/Panasonic Viera.xml
index a2203e4ce..e0517aa8a 100644
--- a/MediaBrowser.Dlna/Profiles/Xml/Panasonic Viera.xml
+++ b/MediaBrowser.Dlna/Profiles/Xml/Panasonic Viera.xml
@@ -34,6 +34,8 @@
<RequiresPlainFolders>false</RequiresPlainFolders>
<EnableMSMediaReceiverRegistrar>false</EnableMSMediaReceiverRegistrar>
<XmlRootAttributes>
+ <XmlAttribute name="xmlns" value="urn:schemas-upnp-org:device-1-0" />
+ <XmlAttribute name="xmlns:dlna" value="urn:schemas-dlna-org:device-1-0" />
<XmlAttribute name="xmlns:pv" value="http://www.pv.com/pvns/" />
</XmlRootAttributes>
<DirectPlayProfiles>
diff --git a/MediaBrowser.Dlna/Profiles/Xml/Popcorn Hour.xml b/MediaBrowser.Dlna/Profiles/Xml/Popcorn Hour.xml
index b02f37986..d2f03333a 100644
--- a/MediaBrowser.Dlna/Profiles/Xml/Popcorn Hour.xml
+++ b/MediaBrowser.Dlna/Profiles/Xml/Popcorn Hour.xml
@@ -26,7 +26,10 @@
<RequiresPlainVideoItems>false</RequiresPlainVideoItems>
<RequiresPlainFolders>false</RequiresPlainFolders>
<EnableMSMediaReceiverRegistrar>false</EnableMSMediaReceiverRegistrar>
- <XmlRootAttributes />
+ <XmlRootAttributes>
+ <XmlAttribute name="xmlns" value="urn:schemas-upnp-org:device-1-0" />
+ <XmlAttribute name="xmlns:dlna" value="urn:schemas-dlna-org:device-1-0" />
+ </XmlRootAttributes>
<DirectPlayProfiles>
<DirectPlayProfile container="mp4,mov" audioCodec="aac" videoCodec="h264,mpeg4" type="Video" />
<DirectPlayProfile container="ts" audioCodec="aac,ac3,eac3,mp3,mp2,pcm" videoCodec="h264" type="Video" />
diff --git a/MediaBrowser.Dlna/Profiles/Xml/Samsung Smart TV.xml b/MediaBrowser.Dlna/Profiles/Xml/Samsung Smart TV.xml
index 91c2325cf..70f3b0f8d 100644
--- a/MediaBrowser.Dlna/Profiles/Xml/Samsung Smart TV.xml
+++ b/MediaBrowser.Dlna/Profiles/Xml/Samsung Smart TV.xml
@@ -33,6 +33,8 @@
<RequiresPlainFolders>false</RequiresPlainFolders>
<EnableMSMediaReceiverRegistrar>false</EnableMSMediaReceiverRegistrar>
<XmlRootAttributes>
+ <XmlAttribute name="xmlns" value="urn:schemas-upnp-org:device-1-0" />
+ <XmlAttribute name="xmlns:dlna" value="urn:schemas-dlna-org:device-1-0" />
<XmlAttribute name="xmlns:sec" value="http://www.sec.co.kr/" />
</XmlRootAttributes>
<DirectPlayProfiles>
diff --git a/MediaBrowser.Dlna/Profiles/Xml/Sony Blu-ray Player 2013.xml b/MediaBrowser.Dlna/Profiles/Xml/Sony Blu-ray Player 2013.xml
index f5ec1a31e..b8a75ec94 100644
--- a/MediaBrowser.Dlna/Profiles/Xml/Sony Blu-ray Player 2013.xml
+++ b/MediaBrowser.Dlna/Profiles/Xml/Sony Blu-ray Player 2013.xml
@@ -33,6 +33,8 @@
<RequiresPlainFolders>false</RequiresPlainFolders>
<EnableMSMediaReceiverRegistrar>false</EnableMSMediaReceiverRegistrar>
<XmlRootAttributes>
+ <XmlAttribute name="xmlns" value="urn:schemas-upnp-org:device-1-0" />
+ <XmlAttribute name="xmlns:dlna" value="urn:schemas-dlna-org:device-1-0" />
<XmlAttribute name="xmlns:av" value="urn:schemas-sony-com:av" />
</XmlRootAttributes>
<DirectPlayProfiles>
diff --git a/MediaBrowser.Dlna/Profiles/Xml/Sony Blu-ray Player.xml b/MediaBrowser.Dlna/Profiles/Xml/Sony Blu-ray Player.xml
index 6a732f869..cf80c0192 100644
--- a/MediaBrowser.Dlna/Profiles/Xml/Sony Blu-ray Player.xml
+++ b/MediaBrowser.Dlna/Profiles/Xml/Sony Blu-ray Player.xml
@@ -35,6 +35,8 @@
<RequiresPlainFolders>false</RequiresPlainFolders>
<EnableMSMediaReceiverRegistrar>false</EnableMSMediaReceiverRegistrar>
<XmlRootAttributes>
+ <XmlAttribute name="xmlns" value="urn:schemas-upnp-org:device-1-0" />
+ <XmlAttribute name="xmlns:dlna" value="urn:schemas-dlna-org:device-1-0" />
<XmlAttribute name="xmlns:av" value="urn:schemas-sony-com:av" />
</XmlRootAttributes>
<DirectPlayProfiles>
diff --git a/MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2010).xml b/MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2010).xml
index 7afc8183d..eabdb303f 100644
--- a/MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2010).xml
+++ b/MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2010).xml
@@ -35,6 +35,8 @@
<RequiresPlainFolders>false</RequiresPlainFolders>
<EnableMSMediaReceiverRegistrar>false</EnableMSMediaReceiverRegistrar>
<XmlRootAttributes>
+ <XmlAttribute name="xmlns" value="urn:schemas-upnp-org:device-1-0" />
+ <XmlAttribute name="xmlns:dlna" value="urn:schemas-dlna-org:device-1-0" />
<XmlAttribute name="xmlns:av" value="urn:schemas-sony-com:av" />
</XmlRootAttributes>
<DirectPlayProfiles>
diff --git a/MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2011).xml b/MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2011).xml
index 7400600e2..e6669f8e8 100644
--- a/MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2011).xml
+++ b/MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2011).xml
@@ -35,6 +35,8 @@
<RequiresPlainFolders>false</RequiresPlainFolders>
<EnableMSMediaReceiverRegistrar>false</EnableMSMediaReceiverRegistrar>
<XmlRootAttributes>
+ <XmlAttribute name="xmlns" value="urn:schemas-upnp-org:device-1-0" />
+ <XmlAttribute name="xmlns:dlna" value="urn:schemas-dlna-org:device-1-0" />
<XmlAttribute name="xmlns:av" value="urn:schemas-sony-com:av" />
</XmlRootAttributes>
<DirectPlayProfiles>
diff --git a/MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2012).xml b/MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2012).xml
index b8e3d6d30..7aa877cd4 100644
--- a/MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2012).xml
+++ b/MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2012).xml
@@ -35,6 +35,8 @@
<RequiresPlainFolders>false</RequiresPlainFolders>
<EnableMSMediaReceiverRegistrar>false</EnableMSMediaReceiverRegistrar>
<XmlRootAttributes>
+ <XmlAttribute name="xmlns" value="urn:schemas-upnp-org:device-1-0" />
+ <XmlAttribute name="xmlns:dlna" value="urn:schemas-dlna-org:device-1-0" />
<XmlAttribute name="xmlns:av" value="urn:schemas-sony-com:av" />
</XmlRootAttributes>
<DirectPlayProfiles>
diff --git a/MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2013).xml b/MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2013).xml
index 5733d9d0b..7611f26b0 100644
--- a/MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2013).xml
+++ b/MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2013).xml
@@ -35,6 +35,8 @@
<RequiresPlainFolders>false</RequiresPlainFolders>
<EnableMSMediaReceiverRegistrar>false</EnableMSMediaReceiverRegistrar>
<XmlRootAttributes>
+ <XmlAttribute name="xmlns" value="urn:schemas-upnp-org:device-1-0" />
+ <XmlAttribute name="xmlns:dlna" value="urn:schemas-dlna-org:device-1-0" />
<XmlAttribute name="xmlns:av" value="urn:schemas-sony-com:av" />
</XmlRootAttributes>
<DirectPlayProfiles>
diff --git a/MediaBrowser.Dlna/Profiles/Xml/Sony PlayStation 3.xml b/MediaBrowser.Dlna/Profiles/Xml/Sony PlayStation 3.xml
index 4b21dc195..89e282cd0 100644
--- a/MediaBrowser.Dlna/Profiles/Xml/Sony PlayStation 3.xml
+++ b/MediaBrowser.Dlna/Profiles/Xml/Sony PlayStation 3.xml
@@ -34,7 +34,10 @@
<RequiresPlainVideoItems>false</RequiresPlainVideoItems>
<RequiresPlainFolders>false</RequiresPlainFolders>
<EnableMSMediaReceiverRegistrar>false</EnableMSMediaReceiverRegistrar>
- <XmlRootAttributes />
+ <XmlRootAttributes>
+ <XmlAttribute name="xmlns" value="urn:schemas-upnp-org:device-1-0" />
+ <XmlAttribute name="xmlns:dlna" value="urn:schemas-dlna-org:device-1-0" />
+ </XmlRootAttributes>
<DirectPlayProfiles>
<DirectPlayProfile container="avi" audioCodec="mp2,mp3" videoCodec="mpeg4" type="Video" />
<DirectPlayProfile container="ts" audioCodec="ac3,mp2,mp3,aac" videoCodec="mpeg1video,mpeg2video,h264" type="Video" />
diff --git a/MediaBrowser.Dlna/Profiles/Xml/Vlc.xml b/MediaBrowser.Dlna/Profiles/Xml/Vlc.xml
index fd4b77f55..bc24f268c 100644
--- a/MediaBrowser.Dlna/Profiles/Xml/Vlc.xml
+++ b/MediaBrowser.Dlna/Profiles/Xml/Vlc.xml
@@ -32,7 +32,10 @@
<RequiresPlainVideoItems>false</RequiresPlainVideoItems>
<RequiresPlainFolders>false</RequiresPlainFolders>
<EnableMSMediaReceiverRegistrar>false</EnableMSMediaReceiverRegistrar>
- <XmlRootAttributes />
+ <XmlRootAttributes>
+ <XmlAttribute name="xmlns" value="urn:schemas-upnp-org:device-1-0" />
+ <XmlAttribute name="xmlns:dlna" value="urn:schemas-dlna-org:device-1-0" />
+ </XmlRootAttributes>
<DirectPlayProfiles>
<DirectPlayProfile container="avi,mpeg,mkv,ts,mp4,mov,m4v,asf,webm,ogg,ogv,iso" type="Video" />
<DirectPlayProfile container="mp3,flac,asf,off,oga,aac" type="Audio" />
diff --git a/MediaBrowser.Dlna/Profiles/Xml/WDTV Live.xml b/MediaBrowser.Dlna/Profiles/Xml/WDTV Live.xml
index a2ab33b4e..6cb933151 100644
--- a/MediaBrowser.Dlna/Profiles/Xml/WDTV Live.xml
+++ b/MediaBrowser.Dlna/Profiles/Xml/WDTV Live.xml
@@ -33,7 +33,10 @@
<RequiresPlainVideoItems>false</RequiresPlainVideoItems>
<RequiresPlainFolders>false</RequiresPlainFolders>
<EnableMSMediaReceiverRegistrar>false</EnableMSMediaReceiverRegistrar>
- <XmlRootAttributes />
+ <XmlRootAttributes>
+ <XmlAttribute name="xmlns" value="urn:schemas-upnp-org:device-1-0" />
+ <XmlAttribute name="xmlns:dlna" value="urn:schemas-dlna-org:device-1-0" />
+ </XmlRootAttributes>
<DirectPlayProfiles>
<DirectPlayProfile container="avi" audioCodec="ac3,dca,mp2,mp3,pcm" videoCodec="mpeg1video,mpeg2video,mpeg4,h264,vc1" type="Video" />
<DirectPlayProfile container="mpeg" audioCodec="ac3,dca,mp2,mp3,pcm" videoCodec="mpeg1video,mpeg2video" type="Video" />
diff --git a/MediaBrowser.Dlna/Profiles/Xml/Xbox 360.xml b/MediaBrowser.Dlna/Profiles/Xml/Xbox 360.xml
index 69d091e47..4ada24512 100644
--- a/MediaBrowser.Dlna/Profiles/Xml/Xbox 360.xml
+++ b/MediaBrowser.Dlna/Profiles/Xml/Xbox 360.xml
@@ -8,13 +8,12 @@
<HttpHeaderInfo name="User-Agent" value="Xenon" match="Substring" />
</Headers>
</Identification>
- <FriendlyName>${HostName} : 1</FriendlyName>
+ <FriendlyName>${HostName}: Emby:</FriendlyName>
<Manufacturer>Microsoft Corporation</Manufacturer>
- <ManufacturerUrl>http://www.microsoft.com/</ManufacturerUrl>
+ <ManufacturerUrl>http://www.microsoft.com</ManufacturerUrl>
<ModelName>Windows Media Player Sharing</ModelName>
- <ModelDescription>Emby</ModelDescription>
<ModelNumber>12.0</ModelNumber>
- <ModelUrl>http://www.microsoft.com/</ModelUrl>
+ <ModelUrl>http://go.microsoft.com/fwlink/?LinkId=105926</ModelUrl>
<EnableAlbumArtInDidl>false</EnableAlbumArtInDidl>
<EnableSingleAlbumArtLimit>false</EnableSingleAlbumArtLimit>
<SupportedMediaTypes>Audio,Photo,Video</SupportedMediaTypes>
@@ -33,7 +32,9 @@
<RequiresPlainVideoItems>true</RequiresPlainVideoItems>
<RequiresPlainFolders>true</RequiresPlainFolders>
<EnableMSMediaReceiverRegistrar>true</EnableMSMediaReceiverRegistrar>
- <XmlRootAttributes />
+ <XmlRootAttributes>
+ <XmlAttribute name="xmlns" value="urn:schemas-upnp-org:device-1-0" />
+ </XmlRootAttributes>
<DirectPlayProfiles>
<DirectPlayProfile container="avi" audioCodec="ac3,mp3" videoCodec="mpeg4" type="Video" />
<DirectPlayProfile container="avi" audioCodec="aac" videoCodec="h264" type="Video" />
diff --git a/MediaBrowser.Dlna/Profiles/Xml/Xbox One.xml b/MediaBrowser.Dlna/Profiles/Xml/Xbox One.xml
index e1faea150..073292363 100644
--- a/MediaBrowser.Dlna/Profiles/Xml/Xbox One.xml
+++ b/MediaBrowser.Dlna/Profiles/Xml/Xbox One.xml
@@ -33,7 +33,10 @@
<RequiresPlainVideoItems>false</RequiresPlainVideoItems>
<RequiresPlainFolders>false</RequiresPlainFolders>
<EnableMSMediaReceiverRegistrar>false</EnableMSMediaReceiverRegistrar>
- <XmlRootAttributes />
+ <XmlRootAttributes>
+ <XmlAttribute name="xmlns" value="urn:schemas-upnp-org:device-1-0" />
+ <XmlAttribute name="xmlns:dlna" value="urn:schemas-dlna-org:device-1-0" />
+ </XmlRootAttributes>
<DirectPlayProfiles>
<DirectPlayProfile container="ts" audioCodec="ac3" videoCodec="h264" type="Video" />
<DirectPlayProfile container="avi" audioCodec="ac3,mp3" videoCodec="mpeg4" type="Video" />
diff --git a/MediaBrowser.Dlna/Profiles/Xml/foobar2000.xml b/MediaBrowser.Dlna/Profiles/Xml/foobar2000.xml
index c2095cf83..f98945360 100644
--- a/MediaBrowser.Dlna/Profiles/Xml/foobar2000.xml
+++ b/MediaBrowser.Dlna/Profiles/Xml/foobar2000.xml
@@ -32,7 +32,10 @@
<RequiresPlainVideoItems>false</RequiresPlainVideoItems>
<RequiresPlainFolders>false</RequiresPlainFolders>
<EnableMSMediaReceiverRegistrar>false</EnableMSMediaReceiverRegistrar>
- <XmlRootAttributes />
+ <XmlRootAttributes>
+ <XmlAttribute name="xmlns" value="urn:schemas-upnp-org:device-1-0" />
+ <XmlAttribute name="xmlns:dlna" value="urn:schemas-dlna-org:device-1-0" />
+ </XmlRootAttributes>
<DirectPlayProfiles>
<DirectPlayProfile container="mp3" audioCodec="mp2,mp3" type="Audio" />
<DirectPlayProfile container="mp4" audioCodec="mp4" type="Audio" />
diff --git a/MediaBrowser.Dlna/Server/DescriptionXmlBuilder.cs b/MediaBrowser.Dlna/Server/DescriptionXmlBuilder.cs
index e302fe902..5780aa10b 100644
--- a/MediaBrowser.Dlna/Server/DescriptionXmlBuilder.cs
+++ b/MediaBrowser.Dlna/Server/DescriptionXmlBuilder.cs
@@ -18,8 +18,9 @@ namespace MediaBrowser.Dlna.Server
private readonly string _serverUdn;
private readonly string _serverAddress;
private readonly string _serverName;
+ private readonly string _serverId;
- public DescriptionXmlBuilder(DeviceProfile profile, string serverUdn, string serverAddress, string serverName)
+ public DescriptionXmlBuilder(DeviceProfile profile, string serverUdn, string serverAddress, string serverName, string serverId)
{
if (string.IsNullOrWhiteSpace(serverUdn))
{
@@ -35,6 +36,7 @@ namespace MediaBrowser.Dlna.Server
_serverUdn = serverUdn;
_serverAddress = serverAddress;
_serverName = serverName;
+ _serverId = serverId;
}
private bool EnableAbsoluteUrls
@@ -48,7 +50,7 @@ namespace MediaBrowser.Dlna.Server
builder.Append("<?xml version=\"1.0\"?>");
- builder.Append("<root xmlns=\"urn:schemas-upnp-org:device-1-0\" xmlns:dlna=\"urn:schemas-dlna-org:device-1-0\"");
+ builder.Append("<root");
foreach (var att in _profile.XmlRootAttributes)
{
builder.AppendFormat(" {0}=\"{1}\"", att.Name, att.Value);
@@ -72,7 +74,7 @@ namespace MediaBrowser.Dlna.Server
builder.Append("<device>");
AppendDeviceProperties(builder);
- AppendIconList(builder);
+ //AppendIconList(builder);
AppendServiceList(builder);
builder.Append("</device>");
}
@@ -80,20 +82,37 @@ namespace MediaBrowser.Dlna.Server
private void AppendDeviceProperties(StringBuilder builder)
{
builder.Append("<UDN>uuid:" + SecurityElement.Escape(_serverUdn) + "</UDN>");
- builder.Append("<dlna:X_DLNACAP>" + SecurityElement.Escape(_profile.XDlnaCap ?? string.Empty) + "</dlna:X_DLNACAP>");
+
+ if (!string.IsNullOrWhiteSpace(_profile.XDlnaCap))
+ {
+ builder.Append("<dlna:X_DLNACAP>" + SecurityElement.Escape(_profile.XDlnaCap ?? string.Empty) + "</dlna:X_DLNACAP>");
+ }
builder.Append("<dlna:X_DLNADOC xmlns:dlna=\"urn:schemas-dlna-org:device-1-0\">M-DMS-1.50</dlna:X_DLNADOC>");
builder.Append("<dlna:X_DLNADOC xmlns:dlna=\"urn:schemas-dlna-org:device-1-0\">" + SecurityElement.Escape(_profile.XDlnaDoc ?? string.Empty) + "</dlna:X_DLNADOC>");
-
+
builder.Append("<friendlyName>" + SecurityElement.Escape(GetFriendlyName()) + "</friendlyName>");
builder.Append("<deviceType>urn:schemas-upnp-org:device:MediaServer:1</deviceType>");
builder.Append("<manufacturer>" + SecurityElement.Escape(_profile.Manufacturer ?? string.Empty) + "</manufacturer>");
builder.Append("<manufacturerURL>" + SecurityElement.Escape(_profile.ManufacturerUrl ?? string.Empty) + "</manufacturerURL>");
builder.Append("<modelName>" + SecurityElement.Escape(_profile.ModelName ?? string.Empty) + "</modelName>");
- builder.Append("<modelDescription>" + SecurityElement.Escape(_profile.ModelDescription ?? string.Empty) + "</modelDescription>");
+
+ if (!string.IsNullOrWhiteSpace(_profile.ModelDescription))
+ {
+ builder.Append("<modelDescription>" + SecurityElement.Escape(_profile.ModelDescription ?? string.Empty) + "</modelDescription>");
+ }
+
builder.Append("<modelNumber>" + SecurityElement.Escape(_profile.ModelNumber ?? string.Empty) + "</modelNumber>");
builder.Append("<modelURL>" + SecurityElement.Escape(_profile.ModelUrl ?? string.Empty) + "</modelURL>");
- builder.Append("<serialNumber>" + SecurityElement.Escape(_profile.SerialNumber ?? string.Empty) + "</serialNumber>");
+
+ if (string.IsNullOrWhiteSpace(_profile.SerialNumber))
+ {
+ builder.Append("<serialNumber>" + SecurityElement.Escape(_serverId) + "</serialNumber>");
+ }
+ else
+ {
+ builder.Append("<serialNumber>" + SecurityElement.Escape(_profile.SerialNumber) + "</serialNumber>");
+ }
builder.Append("<presentationURL>" + SecurityElement.Escape(_serverAddress) + "</presentationURL>");
diff --git a/MediaBrowser.Providers/Manager/ProviderUtils.cs b/MediaBrowser.Providers/Manager/ProviderUtils.cs
index aa92cc280..1c526b4db 100644
--- a/MediaBrowser.Providers/Manager/ProviderUtils.cs
+++ b/MediaBrowser.Providers/Manager/ProviderUtils.cs
@@ -14,6 +14,15 @@ namespace MediaBrowser.Providers.Manager
bool replaceData,
bool mergeMetadataSettings)
{
+ if (source == null)
+ {
+ throw new ArgumentNullException("source");
+ }
+ if (target == null)
+ {
+ throw new ArgumentNullException("target");
+ }
+
if (!lockedFields.Contains(MetadataFields.Name))
{
if (replaceData || string.IsNullOrEmpty(target.Name))