From c3fff246d586e4bac073d1c5300494f6711a97d6 Mon Sep 17 00:00:00 2001 From: feyris-tan <4116042+feyris-tan@users.noreply.github.com> Date: Wed, 10 Jun 2026 15:15:57 +0200 Subject: [PATCH] ATSC3 Segment extraction. --- skyscraper8.sln.DotSettings.user | 1 + skyscraper8/Atsc/A331/Atsc3FilenameTable.cs | 107 +- skyscraper8/Atsc/A331/Atsc3Receiver.cs | 34 +- skyscraper8/Atsc/A331/Atsc3Utilities.cs | 36 + ...190122_RRT-1.0-20170209_SA-1.0-20170921.cs | 295 ++ .../Atsc/A331/Schema/ROUTEUSD-1.0-20170920.cs | 348 ++ .../A331/Schema/S-TSID-1.0-20190208_FDT.cs | 1713 ++++++++ skyscraper8/Ietf/FLUTE/FluteUtilities.cs | 22 +- skyscraper8/MpegDash/MbmsEnvelope.cs | 51 + skyscraper8/MpegDash/MpegDashUtilities.cs | 30 + skyscraper8/MpegDash/Schema/DASH-MPD_xlink.cs | 3831 +++++++++++++++++ skyscraper8/MpegDash/Schema/envelope.cs | 177 + .../Skyscraper/Scraper/SkyscraperContext.cs | 12 + .../Scraper/SkyscraperContextEvent.cs | 3 +- .../Storage/Filesystem/FilesystemStorage.cs | 23 + .../Scraper/Storage/NullObjectStorage.cs | 13 +- .../Scraper/Storage/ObjectStorage.cs | 3 + .../Scraper/Storage/Tar/TarObjectStorage.cs | 13 +- 18 files changed, 6693 insertions(+), 19 deletions(-) create mode 100644 skyscraper8/Atsc/A331/Schema/HELD-1.0-20190122_RRT-1.0-20170209_SA-1.0-20170921.cs create mode 100644 skyscraper8/Atsc/A331/Schema/ROUTEUSD-1.0-20170920.cs create mode 100644 skyscraper8/Atsc/A331/Schema/S-TSID-1.0-20190208_FDT.cs create mode 100644 skyscraper8/MpegDash/MbmsEnvelope.cs create mode 100644 skyscraper8/MpegDash/MpegDashUtilities.cs create mode 100644 skyscraper8/MpegDash/Schema/DASH-MPD_xlink.cs create mode 100644 skyscraper8/MpegDash/Schema/envelope.cs diff --git a/skyscraper8.sln.DotSettings.user b/skyscraper8.sln.DotSettings.user index b14be1c..d30f659 100644 --- a/skyscraper8.sln.DotSettings.user +++ b/skyscraper8.sln.DotSettings.user @@ -39,6 +39,7 @@ ForceIncluded ForceIncluded ForceIncluded + ForceIncluded <AssemblyExplorer> <Assembly Path="/home/schiemas/.dotnet/packs/Microsoft.NETCore.App.Ref/8.0.21/ref/net8.0/System.Windows.dll" /> <Assembly Path="/home/schiemas/.nuget/packages/allure.net.commons/2.14.1/lib/netstandard2.0/Allure.Net.Commons.dll" /> diff --git a/skyscraper8/Atsc/A331/Atsc3FilenameTable.cs b/skyscraper8/Atsc/A331/Atsc3FilenameTable.cs index 549342e..7bd0cf0 100644 --- a/skyscraper8/Atsc/A331/Atsc3FilenameTable.cs +++ b/skyscraper8/Atsc/A331/Atsc3FilenameTable.cs @@ -4,27 +4,68 @@ using System.Linq; using System.Net; using System.Text; using System.Threading.Tasks; +using System.Xml; +using skyscraper8.Atsc.A331.Schema; namespace skyscraper8.Atsc.A331 { internal class Atsc3FilenameTable { - private List> staticFilenames; + private List> staticTsiFilenames; + private List> dynamicTsiFilenames; + private List> staticTsiToiFilenames; + public void LearnFilename(IPEndPoint endpoint, Atsc3Fdt fdt) { foreach (Atsc3FdtFile file in fdt.Files) { - if (staticFilenames == null) - staticFilenames = new List>(); - staticFilenames.Add(new Tuple(endpoint, file.TOI, file.ContentLocation)); + if (staticTsiFilenames == null) + staticTsiFilenames = new List>(); + staticTsiFilenames.Add(new Tuple(endpoint, file.TOI, file.ContentLocation)); } } public string GuessFilename(IPEndPoint destination, ulong tsi, ulong toi) { - if (staticFilenames != null) + if (staticTsiToiFilenames != null) { - foreach (Tuple staticFilename in staticFilenames) + foreach (Tuple staticFilename in staticTsiToiFilenames) + { + if (!staticFilename.Item1.Equals(destination)) + continue; + if (staticFilename.Item2 != tsi) + continue; + if (staticFilename.Item3 != toi) + continue; + + return staticFilename.Item4; + } + } + + if (dynamicTsiFilenames != null) + { + foreach (Tuple dynamicFilename in dynamicTsiFilenames) + { + if (!dynamicFilename.Item1.Equals(destination)) + continue; + if (dynamicFilename.Item2 != tsi) + continue; + + string regex = dynamicFilename.Item3; + if (regex.Contains("$TOI$")) + { + regex = regex.Replace("$TOI$", toi.ToString()); + } + if (regex.Contains("$")) + throw new NotImplementedException(regex); + + return regex; + } + } + + if (staticTsiFilenames != null) + { + foreach (Tuple staticFilename in staticTsiFilenames) { if (!staticFilename.Item1.Equals(destination)) continue; @@ -37,5 +78,59 @@ namespace skyscraper8.Atsc.A331 return null; } + + public void LearnFilename(MbmsEnvelope mbmsEnvelope) + { + LearnFilename(mbmsEnvelope.Atsc3Stsid); + } + + private void LearnFilename(STSIDType? stsid) + { + if (stsid == null) + return; + + foreach (rSessionType rs in stsid.RS) + { + IPAddress dIpAddr = IPAddress.Parse(rs.dIpAddr); + ushort dPort = rs.dPort; + IPEndPoint destination = new IPEndPoint(dIpAddr, dPort); + foreach (lSessionType lSessionType in rs.LS) + { + uint tsi = lSessionType.tsi; + if (lSessionType.SrcFlow == null) + continue; + if (lSessionType.SrcFlow.EFDT == null) + continue; + LearnFilename(destination, tsi, lSessionType.SrcFlow.EFDT.FDTInstance); + } + } + } + + private void LearnFilename(IPEndPoint destination, uint tsi, RFC6276FDTInstanceType efdtFdtInstance) + { + foreach (XmlAttribute xmlAttribute in efdtFdtInstance.AnyAttr) + { + switch (xmlAttribute.Name) + { + case "afdt:efdtVersion": + continue; + case "afdt:fileTemplate": + if (dynamicTsiFilenames == null) + dynamicTsiFilenames = new List>(); + dynamicTsiFilenames.Add(new Tuple(destination, tsi, xmlAttribute.Value)); + break; + default: + throw new NotImplementedException(xmlAttribute.Name); + } + } + + foreach (RFC6276FileType rfc6276FileType in efdtFdtInstance.File) + { + ulong toi = ulong.Parse(rfc6276FileType.TOI); + if (staticTsiToiFilenames == null) + staticTsiToiFilenames = new List>(); + staticTsiToiFilenames.Add(new Tuple(destination, tsi, toi, rfc6276FileType.ContentLocation)); + } + } } } diff --git a/skyscraper8/Atsc/A331/Atsc3Receiver.cs b/skyscraper8/Atsc/A331/Atsc3Receiver.cs index ea2e69d..96d0a74 100644 --- a/skyscraper8/Atsc/A331/Atsc3Receiver.cs +++ b/skyscraper8/Atsc/A331/Atsc3Receiver.cs @@ -5,6 +5,7 @@ using System.Linq; using System.Net; using System.Text; using System.Threading.Tasks; +using MimeKit; using skyscraper5.Ietf.Rfc768; using skyscraper5.Ietf.Rfc971; using skyscraper5.Skyscraper; @@ -127,17 +128,27 @@ namespace skyscraper8.Atsc.A331 targetListener.PushPacket(lctFrame); _stopProcessIndicator = true; - if (targetListener.IsComplete()) + if (lctFrame.CloseObjectFlag) { - GuessedFluteDataType guessedFluteDataType = FluteUtilities.GuessDataType(targetListener); - ProcessMetafile(guessedFluteDataType, targetListener, destination); - - string outFileName = filenames.GuessFilename(destination, tsi, toi); - if (!string.IsNullOrEmpty(outFileName)) + if (targetListener.IsComplete()) { - eventHandler.OnAtsc3FileDelivery(destination, tsi, toi, targetListener, guessedFluteDataType, outFileName); + GuessedFluteDataType guessedFluteDataType = FluteUtilities.GuessDataType(targetListener); + if (guessedFluteDataType == GuessedFluteDataType.Stuffing) + return; + + ProcessMetafile(guessedFluteDataType, targetListener, destination); + + string outFileName = filenames.GuessFilename(destination, tsi, toi); + if (!string.IsNullOrEmpty(outFileName)) + { + eventHandler.OnAtsc3FileDelivery(destination, tsi, toi, targetListener, guessedFluteDataType, outFileName); + } } } + /*if (targetListener.IsComplete()) + { + + }*/ } private bool ProcessMetafile(GuessedFluteDataType guessedFluteDataType, FluteListener targetListener, IPEndPoint destination) @@ -152,11 +163,18 @@ namespace skyscraper8.Atsc.A331 filenames.LearnFilename(destination, fdt); return true; } - return false; case GuessedFluteDataType.MultimediaContent: return false; + case GuessedFluteDataType.Mime: + MimeMessage mimeMessage = MimeMessage.Load(targetListener.ToStream()); + MbmsEnvelope mbmsEnvelope = new MbmsEnvelope(mimeMessage); + filenames.LearnFilename(mbmsEnvelope); + return true; + case GuessedFluteDataType.Stuffing: + return false; default: + targetListener.WriteToFile("unknown.bin"); throw new NotImplementedException(guessedFluteDataType.ToString()); } } diff --git a/skyscraper8/Atsc/A331/Atsc3Utilities.cs b/skyscraper8/Atsc/A331/Atsc3Utilities.cs index 9596a46..8a613c1 100644 --- a/skyscraper8/Atsc/A331/Atsc3Utilities.cs +++ b/skyscraper8/Atsc/A331/Atsc3Utilities.cs @@ -6,6 +6,7 @@ using System.Text; using System.Threading.Tasks; using System.Xml; using System.Xml.Serialization; +using Schemas; namespace skyscraper8.Atsc.A331 { @@ -13,6 +14,10 @@ namespace skyscraper8.Atsc.A331 { private static XmlSerializer sltSerializer; private static XmlSerializer systimeSerializer; + private static XmlSerializer htmlEntryPackageSerializer; + private static XmlSerializer stsIdSerializer; + private static XmlSerializer routeUsdSerializer; + public static sltType UnpackSlt(byte[] buffer) { @@ -126,5 +131,36 @@ namespace skyscraper8.Atsc.A331 return result; } + + + public static HELDType? ParseHeld(Stream value) + { + if (htmlEntryPackageSerializer == null) + { + htmlEntryPackageSerializer = new XmlSerializer(typeof(HELDType)); + } + object deserialize = htmlEntryPackageSerializer.Deserialize(value); + return deserialize as HELDType; + } + + public static STSIDType? ParseStsId(Stream value) + { + if (stsIdSerializer == null) + { + stsIdSerializer = new XmlSerializer(typeof(STSIDType)); + } + object deserialize = stsIdSerializer.Deserialize(value); + return deserialize as STSIDType; + } + + public static BundleDescriptionROUTEType? ParseRouteUsd(Stream value) + { + if (routeUsdSerializer == null) + { + routeUsdSerializer = new XmlSerializer(typeof(BundleDescriptionROUTEType)); + } + object deserialize = routeUsdSerializer.Deserialize(value); + return deserialize as BundleDescriptionROUTEType; + } } } diff --git a/skyscraper8/Atsc/A331/Schema/HELD-1.0-20190122_RRT-1.0-20170209_SA-1.0-20170921.cs b/skyscraper8/Atsc/A331/Schema/HELD-1.0-20190122_RRT-1.0-20170209_SA-1.0-20170921.cs new file mode 100644 index 0000000..8d9cfe8 --- /dev/null +++ b/skyscraper8/Atsc/A331/Schema/HELD-1.0-20190122_RRT-1.0-20170209_SA-1.0-20170921.cs @@ -0,0 +1,295 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.42000 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +// +//This source code was auto-generated by MonoXSD +// +namespace skyscraper8.Atsc.A331.Schema { + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "0.0.0.0")] + [System.SerializableAttribute()] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.ComponentModel.DesignerCategoryAttribute("code")] + [System.Xml.Serialization.XmlTypeAttribute(Namespace="tag:atsc.org,2016:XMLSchemas/ATSC3/AppSignaling/HELD/1.0/")] + public partial class HTMLEntryPackageType { + + private System.Xml.XmlElement[] anyField; + + private string appContextIdField; + + private string requiredCapabilitiesField; + + private bool appRenderingField; + + private bool appRenderingFieldSpecified; + + private System.DateTime clearAppContextCacheDateField; + + private bool clearAppContextCacheDateFieldSpecified; + + private string bcastEntryPackageUrlField; + + private string bcastEntryPageUrlField; + + private string bbandEntryPageUrlField; + + private System.DateTime validFromField; + + private bool validFromFieldSpecified; + + private System.DateTime validUntilField; + + private bool validUntilFieldSpecified; + + private ushort[] coupledServicesField; + + private uint[] lctTSIRefField; + + private System.Xml.XmlAttribute[] anyAttrField; + + /// + [System.Xml.Serialization.XmlAnyElementAttribute()] + public System.Xml.XmlElement[] Any { + get { + return this.anyField; + } + set { + this.anyField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute(DataType="anyURI")] + public string appContextId { + get { + return this.appContextIdField; + } + set { + this.appContextIdField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public string requiredCapabilities { + get { + return this.requiredCapabilitiesField; + } + set { + this.requiredCapabilitiesField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public bool appRendering { + get { + return this.appRenderingField; + } + set { + this.appRenderingField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool appRenderingSpecified { + get { + return this.appRenderingFieldSpecified; + } + set { + this.appRenderingFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public System.DateTime clearAppContextCacheDate { + get { + return this.clearAppContextCacheDateField; + } + set { + this.clearAppContextCacheDateField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool clearAppContextCacheDateSpecified { + get { + return this.clearAppContextCacheDateFieldSpecified; + } + set { + this.clearAppContextCacheDateFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute(DataType="anyURI")] + public string bcastEntryPackageUrl { + get { + return this.bcastEntryPackageUrlField; + } + set { + this.bcastEntryPackageUrlField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute(DataType="anyURI")] + public string bcastEntryPageUrl { + get { + return this.bcastEntryPageUrlField; + } + set { + this.bcastEntryPageUrlField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute(DataType="anyURI")] + public string bbandEntryPageUrl { + get { + return this.bbandEntryPageUrlField; + } + set { + this.bbandEntryPageUrlField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public System.DateTime validFrom { + get { + return this.validFromField; + } + set { + this.validFromField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool validFromSpecified { + get { + return this.validFromFieldSpecified; + } + set { + this.validFromFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public System.DateTime validUntil { + get { + return this.validUntilField; + } + set { + this.validUntilField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool validUntilSpecified { + get { + return this.validUntilFieldSpecified; + } + set { + this.validUntilFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public ushort[] coupledServices { + get { + return this.coupledServicesField; + } + set { + this.coupledServicesField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public uint[] lctTSIRef { + get { + return this.lctTSIRefField; + } + set { + this.lctTSIRefField = value; + } + } + + /// + [System.Xml.Serialization.XmlAnyAttributeAttribute()] + public System.Xml.XmlAttribute[] AnyAttr { + get { + return this.anyAttrField; + } + set { + this.anyAttrField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "0.0.0.0")] + [System.SerializableAttribute()] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.ComponentModel.DesignerCategoryAttribute("code")] + [System.Xml.Serialization.XmlTypeAttribute(Namespace="tag:atsc.org,2016:XMLSchemas/ATSC3/AppSignaling/HELD/1.0/")] + [System.Xml.Serialization.XmlRootAttribute("HELD", Namespace="tag:atsc.org,2016:XMLSchemas/ATSC3/AppSignaling/HELD/1.0/", IsNullable=false)] + public partial class HELDType { + + private HTMLEntryPackageType[] hTMLEntryPackageField; + + private System.Xml.XmlElement[] anyField; + + private System.Xml.XmlAttribute[] anyAttrField; + + /// + [System.Xml.Serialization.XmlElementAttribute("HTMLEntryPackage")] + public HTMLEntryPackageType[] HTMLEntryPackage { + get { + return this.hTMLEntryPackageField; + } + set { + this.hTMLEntryPackageField = value; + } + } + + /// + [System.Xml.Serialization.XmlAnyElementAttribute()] + public System.Xml.XmlElement[] Any { + get { + return this.anyField; + } + set { + this.anyField = value; + } + } + + /// + [System.Xml.Serialization.XmlAnyAttributeAttribute()] + public System.Xml.XmlAttribute[] AnyAttr { + get { + return this.anyAttrField; + } + set { + this.anyAttrField = value; + } + } + } + +} diff --git a/skyscraper8/Atsc/A331/Schema/ROUTEUSD-1.0-20170920.cs b/skyscraper8/Atsc/A331/Schema/ROUTEUSD-1.0-20170920.cs new file mode 100644 index 0000000..73320a9 --- /dev/null +++ b/skyscraper8/Atsc/A331/Schema/ROUTEUSD-1.0-20170920.cs @@ -0,0 +1,348 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.42000 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +// +//This source code was auto-generated by MonoXSD +// +namespace Schemas { + + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "0.0.0.0")] + [System.SerializableAttribute()] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.ComponentModel.DesignerCategoryAttribute("code")] + [System.Xml.Serialization.XmlTypeAttribute(Namespace="tag:atsc.org,2016:XMLSchemas/ATSC3/Delivery/ROUTEUSD/1.0/")] + [System.Xml.Serialization.XmlRootAttribute("BundleDescriptionROUTE", Namespace="tag:atsc.org,2016:XMLSchemas/ATSC3/Delivery/ROUTEUSD/1.0/", IsNullable=false)] + public partial class BundleDescriptionROUTEType { + + private UserServiceDescriptionType userServiceDescriptionField; + + private System.Xml.XmlElement[] anyField; + + /// + public UserServiceDescriptionType UserServiceDescription { + get { + return this.userServiceDescriptionField; + } + set { + this.userServiceDescriptionField = value; + } + } + + /// + [System.Xml.Serialization.XmlAnyElementAttribute()] + public System.Xml.XmlElement[] Any { + get { + return this.anyField; + } + set { + this.anyField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "0.0.0.0")] + [System.SerializableAttribute()] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.ComponentModel.DesignerCategoryAttribute("code")] + [System.Xml.Serialization.XmlTypeAttribute(Namespace="tag:atsc.org,2016:XMLSchemas/ATSC3/Delivery/ROUTEUSD/1.0/")] + public partial class UserServiceDescriptionType { + + private NameType[] nameField; + + private ServiceLangType[] serviceLanguageField; + + private DeliveryMethodType[] deliveryMethodField; + + private System.Xml.XmlElement[] anyField; + + private ushort serviceIdField; + + private bool serviceStatusField; + + private System.Xml.XmlAttribute[] anyAttrField; + + public UserServiceDescriptionType() { + this.serviceStatusField = true; + } + + /// + [System.Xml.Serialization.XmlElementAttribute("Name")] + public NameType[] Name { + get { + return this.nameField; + } + set { + this.nameField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute("ServiceLanguage")] + public ServiceLangType[] ServiceLanguage { + get { + return this.serviceLanguageField; + } + set { + this.serviceLanguageField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute("DeliveryMethod")] + public DeliveryMethodType[] DeliveryMethod { + get { + return this.deliveryMethodField; + } + set { + this.deliveryMethodField = value; + } + } + + /// + [System.Xml.Serialization.XmlAnyElementAttribute()] + public System.Xml.XmlElement[] Any { + get { + return this.anyField; + } + set { + this.anyField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public ushort serviceId { + get { + return this.serviceIdField; + } + set { + this.serviceIdField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + [System.ComponentModel.DefaultValueAttribute(true)] + public bool serviceStatus { + get { + return this.serviceStatusField; + } + set { + this.serviceStatusField = value; + } + } + + /// + [System.Xml.Serialization.XmlAnyAttributeAttribute()] + public System.Xml.XmlAttribute[] AnyAttr { + get { + return this.anyAttrField; + } + set { + this.anyAttrField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "0.0.0.0")] + [System.SerializableAttribute()] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.ComponentModel.DesignerCategoryAttribute("code")] + [System.Xml.Serialization.XmlTypeAttribute(Namespace="tag:atsc.org,2016:XMLSchemas/ATSC3/Delivery/ROUTEUSD/1.0/")] + public partial class NameType { + + private string langField; + + private System.Xml.XmlAttribute[] anyAttrField; + + private string valueField; + + /// + [System.Xml.Serialization.XmlAttributeAttribute(Form=System.Xml.Schema.XmlSchemaForm.Qualified, Namespace="http://www.w3.org/XML/1998/namespace")] + public string lang { + get { + return this.langField; + } + set { + this.langField = value; + } + } + + /// + [System.Xml.Serialization.XmlAnyAttributeAttribute()] + public System.Xml.XmlAttribute[] AnyAttr { + get { + return this.anyAttrField; + } + set { + this.anyAttrField = value; + } + } + + /// + [System.Xml.Serialization.XmlTextAttribute()] + public string Value { + get { + return this.valueField; + } + set { + this.valueField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "0.0.0.0")] + [System.SerializableAttribute()] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.ComponentModel.DesignerCategoryAttribute("code")] + [System.Xml.Serialization.XmlTypeAttribute(Namespace="tag:atsc.org,2016:XMLSchemas/ATSC3/Delivery/ROUTEUSD/1.0/")] + public partial class AppServiceType { + + private string[] basePatternField; + + private System.Xml.XmlElement[] anyField; + + private System.Xml.XmlAttribute[] anyAttrField; + + /// + [System.Xml.Serialization.XmlElementAttribute("BasePattern")] + public string[] BasePattern { + get { + return this.basePatternField; + } + set { + this.basePatternField = value; + } + } + + /// + [System.Xml.Serialization.XmlAnyElementAttribute()] + public System.Xml.XmlElement[] Any { + get { + return this.anyField; + } + set { + this.anyField = value; + } + } + + /// + [System.Xml.Serialization.XmlAnyAttributeAttribute()] + public System.Xml.XmlAttribute[] AnyAttr { + get { + return this.anyAttrField; + } + set { + this.anyAttrField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "0.0.0.0")] + [System.SerializableAttribute()] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.ComponentModel.DesignerCategoryAttribute("code")] + [System.Xml.Serialization.XmlTypeAttribute(Namespace="tag:atsc.org,2016:XMLSchemas/ATSC3/Delivery/ROUTEUSD/1.0/")] + public partial class DeliveryMethodType { + + private AppServiceType[] broadcastAppServiceField; + + private AppServiceType[] unicastAppServiceField; + + private System.Xml.XmlElement[] anyField; + + private System.Xml.XmlAttribute[] anyAttrField; + + /// + [System.Xml.Serialization.XmlElementAttribute("BroadcastAppService")] + public AppServiceType[] BroadcastAppService { + get { + return this.broadcastAppServiceField; + } + set { + this.broadcastAppServiceField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute("UnicastAppService")] + public AppServiceType[] UnicastAppService { + get { + return this.unicastAppServiceField; + } + set { + this.unicastAppServiceField = value; + } + } + + /// + [System.Xml.Serialization.XmlAnyElementAttribute()] + public System.Xml.XmlElement[] Any { + get { + return this.anyField; + } + set { + this.anyField = value; + } + } + + /// + [System.Xml.Serialization.XmlAnyAttributeAttribute()] + public System.Xml.XmlAttribute[] AnyAttr { + get { + return this.anyAttrField; + } + set { + this.anyAttrField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "0.0.0.0")] + [System.SerializableAttribute()] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.ComponentModel.DesignerCategoryAttribute("code")] + [System.Xml.Serialization.XmlTypeAttribute(Namespace="tag:atsc.org,2016:XMLSchemas/ATSC3/Delivery/ROUTEUSD/1.0/")] + public partial class ServiceLangType { + + private System.Xml.XmlAttribute[] anyAttrField; + + private string valueField; + + /// + [System.Xml.Serialization.XmlAnyAttributeAttribute()] + public System.Xml.XmlAttribute[] AnyAttr { + get { + return this.anyAttrField; + } + set { + this.anyAttrField = value; + } + } + + /// + [System.Xml.Serialization.XmlTextAttribute()] + public string Value { + get { + return this.valueField; + } + set { + this.valueField = value; + } + } + } +} diff --git a/skyscraper8/Atsc/A331/Schema/S-TSID-1.0-20190208_FDT.cs b/skyscraper8/Atsc/A331/Schema/S-TSID-1.0-20190208_FDT.cs new file mode 100644 index 0000000..97477d7 --- /dev/null +++ b/skyscraper8/Atsc/A331/Schema/S-TSID-1.0-20190208_FDT.cs @@ -0,0 +1,1713 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.42000 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +// +//This source code was auto-generated by MonoXSD +// +namespace skyscraper8.Atsc.A331.Schema { + + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "0.0.0.0")] + [System.SerializableAttribute()] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.ComponentModel.DesignerCategoryAttribute("code")] + [System.Xml.Serialization.XmlTypeAttribute(Namespace="tag:atsc.org,2016:XMLSchemas/ATSC3/Delivery/S-TSID/1.0/")] + [System.Xml.Serialization.XmlRootAttribute("S-TSID", Namespace="tag:atsc.org,2016:XMLSchemas/ATSC3/Delivery/S-TSID/1.0/", IsNullable=false)] + public partial class STSIDType { + + private rSessionType[] rsField; + + private System.Xml.XmlElement[] anyField; + + private System.Xml.XmlAttribute[] anyAttrField; + + /// + [System.Xml.Serialization.XmlElementAttribute("RS")] + public rSessionType[] RS { + get { + return this.rsField; + } + set { + this.rsField = value; + } + } + + /// + [System.Xml.Serialization.XmlAnyElementAttribute()] + public System.Xml.XmlElement[] Any { + get { + return this.anyField; + } + set { + this.anyField = value; + } + } + + /// + [System.Xml.Serialization.XmlAnyAttributeAttribute()] + public System.Xml.XmlAttribute[] AnyAttr { + get { + return this.anyAttrField; + } + set { + this.anyAttrField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "0.0.0.0")] + [System.SerializableAttribute()] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.ComponentModel.DesignerCategoryAttribute("code")] + [System.Xml.Serialization.XmlTypeAttribute(Namespace="tag:atsc.org,2016:XMLSchemas/ATSC3/Delivery/S-TSID/1.0/")] + public partial class rSessionType { + + private lSessionType[] lsField; + + private System.Xml.XmlElement[] anyField; + + private string sIpAddrField; + + private string dIpAddrField; + + private ushort dPortField; + + private bool dPortFieldSpecified; + + private System.Xml.XmlAttribute[] anyAttrField; + + /// + [System.Xml.Serialization.XmlElementAttribute("LS")] + public lSessionType[] LS { + get { + return this.lsField; + } + set { + this.lsField = value; + } + } + + /// + [System.Xml.Serialization.XmlAnyElementAttribute()] + public System.Xml.XmlElement[] Any { + get { + return this.anyField; + } + set { + this.anyField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute(DataType="token")] + public string sIpAddr { + get { + return this.sIpAddrField; + } + set { + this.sIpAddrField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute(DataType="token")] + public string dIpAddr { + get { + return this.dIpAddrField; + } + set { + this.dIpAddrField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public ushort dPort { + get { + return this.dPortField; + } + set { + this.dPortField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool dPortSpecified { + get { + return this.dPortFieldSpecified; + } + set { + this.dPortFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlAnyAttributeAttribute()] + public System.Xml.XmlAttribute[] AnyAttr { + get { + return this.anyAttrField; + } + set { + this.anyAttrField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "0.0.0.0")] + [System.SerializableAttribute()] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.ComponentModel.DesignerCategoryAttribute("code")] + [System.Xml.Serialization.XmlTypeAttribute(Namespace="tag:atsc.org,2016:XMLSchemas/ATSC3/Delivery/S-TSID/1.0/")] + public partial class lSessionType { + + private srcFlowType srcFlowField; + + private rprFlowType repairFlowField; + + private System.Xml.XmlElement[] anyField; + + private uint tsiField; + + private uint bwField; + + private bool bwFieldSpecified; + + private System.DateTime startTimeField; + + private bool startTimeFieldSpecified; + + private System.DateTime endTimeField; + + private bool endTimeFieldSpecified; + + private System.Xml.XmlAttribute[] anyAttrField; + + /// + public srcFlowType SrcFlow { + get { + return this.srcFlowField; + } + set { + this.srcFlowField = value; + } + } + + /// + public rprFlowType RepairFlow { + get { + return this.repairFlowField; + } + set { + this.repairFlowField = value; + } + } + + /// + [System.Xml.Serialization.XmlAnyElementAttribute()] + public System.Xml.XmlElement[] Any { + get { + return this.anyField; + } + set { + this.anyField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public uint tsi { + get { + return this.tsiField; + } + set { + this.tsiField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public uint bw { + get { + return this.bwField; + } + set { + this.bwField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool bwSpecified { + get { + return this.bwFieldSpecified; + } + set { + this.bwFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public System.DateTime startTime { + get { + return this.startTimeField; + } + set { + this.startTimeField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool startTimeSpecified { + get { + return this.startTimeFieldSpecified; + } + set { + this.startTimeFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public System.DateTime endTime { + get { + return this.endTimeField; + } + set { + this.endTimeField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool endTimeSpecified { + get { + return this.endTimeFieldSpecified; + } + set { + this.endTimeFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlAnyAttributeAttribute()] + public System.Xml.XmlAttribute[] AnyAttr { + get { + return this.anyAttrField; + } + set { + this.anyAttrField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "0.0.0.0")] + [System.SerializableAttribute()] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.ComponentModel.DesignerCategoryAttribute("code")] + [System.Xml.Serialization.XmlTypeAttribute(Namespace="tag:atsc.org,2016:XMLSchemas/ATSC3/Delivery/S-TSID/1.0/")] + [System.Xml.Serialization.XmlRootAttribute("SrcFlow", Namespace="tag:atsc.org,2016:XMLSchemas/ATSC3/Delivery/S-TSID/1.0/", IsNullable=false)] + public partial class srcFlowType { + + private EFDTType eFDTField; + + private ContentInfoType contentInfoField; + + private PayloadType[] payloadField; + + private System.Xml.XmlElement[] anyField; + + private bool rtField; + + private uint minBuffSizeField; + + private bool minBuffSizeFieldSpecified; + + private System.Xml.XmlAttribute[] anyAttrField; + + public srcFlowType() { + this.rtField = false; + } + + /// + public EFDTType EFDT { + get { + return this.eFDTField; + } + set { + this.eFDTField = value; + } + } + + /// + public ContentInfoType ContentInfo { + get { + return this.contentInfoField; + } + set { + this.contentInfoField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute("Payload")] + public PayloadType[] Payload { + get { + return this.payloadField; + } + set { + this.payloadField = value; + } + } + + /// + [System.Xml.Serialization.XmlAnyElementAttribute()] + public System.Xml.XmlElement[] Any { + get { + return this.anyField; + } + set { + this.anyField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + [System.ComponentModel.DefaultValueAttribute(false)] + public bool rt { + get { + return this.rtField; + } + set { + this.rtField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public uint minBuffSize { + get { + return this.minBuffSizeField; + } + set { + this.minBuffSizeField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool minBuffSizeSpecified { + get { + return this.minBuffSizeFieldSpecified; + } + set { + this.minBuffSizeFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlAnyAttributeAttribute()] + public System.Xml.XmlAttribute[] AnyAttr { + get { + return this.anyAttrField; + } + set { + this.anyAttrField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "0.0.0.0")] + [System.SerializableAttribute()] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.ComponentModel.DesignerCategoryAttribute("code")] + [System.Xml.Serialization.XmlTypeAttribute(Namespace="tag:atsc.org,2016:XMLSchemas/ATSC3/Delivery/S-TSID/1.0/")] + public partial class EFDTType { + + private RFC6276FDTInstanceType fDTInstanceField; + + private System.Xml.XmlElement[] anyField; + + private System.Xml.XmlAttribute[] anyAttrField; + + /// + [System.Xml.Serialization.XmlElementAttribute("FDT-Instance")] + public RFC6276FDTInstanceType FDTInstance { + get { + return this.fDTInstanceField; + } + set { + this.fDTInstanceField = value; + } + } + + /// + [System.Xml.Serialization.XmlAnyElementAttribute()] + public System.Xml.XmlElement[] Any { + get { + return this.anyField; + } + set { + this.anyField = value; + } + } + + /// + [System.Xml.Serialization.XmlAnyAttributeAttribute()] + public System.Xml.XmlAttribute[] AnyAttr { + get { + return this.anyAttrField; + } + set { + this.anyAttrField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "0.0.0.0")] + [System.SerializableAttribute()] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.ComponentModel.DesignerCategoryAttribute("code")] + [System.Xml.Serialization.XmlTypeAttribute(TypeName="FDT-InstanceType", Namespace="urn:ietf:params:xml:ns:fdt")] + [System.Xml.Serialization.XmlRootAttribute("FDT-Instance", Namespace="urn:ietf:params:xml:ns:fdt", IsNullable=false)] + public partial class RFC6276FDTInstanceType { + + private RFC6276FileType[] fileField; + + private System.Xml.XmlElement[] anyField; + + private string expiresField; + + private bool completeField; + + private bool completeFieldSpecified; + + private string contentTypeField; + + private string contentEncodingField; + + private byte fECOTIFECEncodingIDField; + + private bool fECOTIFECEncodingIDFieldSpecified; + + private ulong fECOTIFECInstanceIDField; + + private bool fECOTIFECInstanceIDFieldSpecified; + + private ulong fECOTIMaximumSourceBlockLengthField; + + private bool fECOTIMaximumSourceBlockLengthFieldSpecified; + + private ulong fECOTIEncodingSymbolLengthField; + + private bool fECOTIEncodingSymbolLengthFieldSpecified; + + private ulong fECOTIMaxNumberofEncodingSymbolsField; + + private bool fECOTIMaxNumberofEncodingSymbolsFieldSpecified; + + private byte[] fECOTISchemeSpecificInfoField; + + private System.Xml.XmlAttribute[] anyAttrField; + + /// + [System.Xml.Serialization.XmlElementAttribute("File")] + public RFC6276FileType[] File { + get { + return this.fileField; + } + set { + this.fileField = value; + } + } + + /// + [System.Xml.Serialization.XmlAnyElementAttribute()] + public System.Xml.XmlElement[] Any { + get { + return this.anyField; + } + set { + this.anyField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public string Expires { + get { + return this.expiresField; + } + set { + this.expiresField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public bool Complete { + get { + return this.completeField; + } + set { + this.completeField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool CompleteSpecified { + get { + return this.completeFieldSpecified; + } + set { + this.completeFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute("Content-Type")] + public string ContentType { + get { + return this.contentTypeField; + } + set { + this.contentTypeField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute("Content-Encoding")] + public string ContentEncoding { + get { + return this.contentEncodingField; + } + set { + this.contentEncodingField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute("FEC-OTI-FEC-Encoding-ID")] + public byte FECOTIFECEncodingID { + get { + return this.fECOTIFECEncodingIDField; + } + set { + this.fECOTIFECEncodingIDField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool FECOTIFECEncodingIDSpecified { + get { + return this.fECOTIFECEncodingIDFieldSpecified; + } + set { + this.fECOTIFECEncodingIDFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute("FEC-OTI-FEC-Instance-ID")] + public ulong FECOTIFECInstanceID { + get { + return this.fECOTIFECInstanceIDField; + } + set { + this.fECOTIFECInstanceIDField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool FECOTIFECInstanceIDSpecified { + get { + return this.fECOTIFECInstanceIDFieldSpecified; + } + set { + this.fECOTIFECInstanceIDFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute("FEC-OTI-Maximum-Source-Block-Length")] + public ulong FECOTIMaximumSourceBlockLength { + get { + return this.fECOTIMaximumSourceBlockLengthField; + } + set { + this.fECOTIMaximumSourceBlockLengthField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool FECOTIMaximumSourceBlockLengthSpecified { + get { + return this.fECOTIMaximumSourceBlockLengthFieldSpecified; + } + set { + this.fECOTIMaximumSourceBlockLengthFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute("FEC-OTI-Encoding-Symbol-Length")] + public ulong FECOTIEncodingSymbolLength { + get { + return this.fECOTIEncodingSymbolLengthField; + } + set { + this.fECOTIEncodingSymbolLengthField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool FECOTIEncodingSymbolLengthSpecified { + get { + return this.fECOTIEncodingSymbolLengthFieldSpecified; + } + set { + this.fECOTIEncodingSymbolLengthFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute("FEC-OTI-Max-Number-of-Encoding-Symbols")] + public ulong FECOTIMaxNumberofEncodingSymbols { + get { + return this.fECOTIMaxNumberofEncodingSymbolsField; + } + set { + this.fECOTIMaxNumberofEncodingSymbolsField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool FECOTIMaxNumberofEncodingSymbolsSpecified { + get { + return this.fECOTIMaxNumberofEncodingSymbolsFieldSpecified; + } + set { + this.fECOTIMaxNumberofEncodingSymbolsFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute("FEC-OTI-Scheme-Specific-Info", DataType="base64Binary")] + public byte[] FECOTISchemeSpecificInfo { + get { + return this.fECOTISchemeSpecificInfoField; + } + set { + this.fECOTISchemeSpecificInfoField = value; + } + } + + /// + [System.Xml.Serialization.XmlAnyAttributeAttribute()] + public System.Xml.XmlAttribute[] AnyAttr { + get { + return this.anyAttrField; + } + set { + this.anyAttrField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "0.0.0.0")] + [System.SerializableAttribute()] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.ComponentModel.DesignerCategoryAttribute("code")] + [System.Xml.Serialization.XmlTypeAttribute(Namespace="urn:ietf:params:xml:ns:fdt")] + public partial class RFC6276FileType { + + private System.Xml.XmlElement[] anyField; + + private string contentLocationField; + + private string tOIField; + + private ulong contentLengthField; + + private bool contentLengthFieldSpecified; + + private ulong transferLengthField; + + private bool transferLengthFieldSpecified; + + private string contentTypeField; + + private string contentEncodingField; + + private byte[] contentMD5Field; + + private byte fECOTIFECEncodingIDField; + + private bool fECOTIFECEncodingIDFieldSpecified; + + private ulong fECOTIFECInstanceIDField; + + private bool fECOTIFECInstanceIDFieldSpecified; + + private ulong fECOTIMaximumSourceBlockLengthField; + + private bool fECOTIMaximumSourceBlockLengthFieldSpecified; + + private ulong fECOTIEncodingSymbolLengthField; + + private bool fECOTIEncodingSymbolLengthFieldSpecified; + + private ulong fECOTIMaxNumberofEncodingSymbolsField; + + private bool fECOTIMaxNumberofEncodingSymbolsFieldSpecified; + + private byte[] fECOTISchemeSpecificInfoField; + + private System.Xml.XmlAttribute[] anyAttrField; + + /// + [System.Xml.Serialization.XmlAnyElementAttribute()] + public System.Xml.XmlElement[] Any { + get { + return this.anyField; + } + set { + this.anyField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute("Content-Location", DataType="anyURI")] + public string ContentLocation { + get { + return this.contentLocationField; + } + set { + this.contentLocationField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute(DataType="positiveInteger")] + public string TOI { + get { + return this.tOIField; + } + set { + this.tOIField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute("Content-Length")] + public ulong ContentLength { + get { + return this.contentLengthField; + } + set { + this.contentLengthField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool ContentLengthSpecified { + get { + return this.contentLengthFieldSpecified; + } + set { + this.contentLengthFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute("Transfer-Length")] + public ulong TransferLength { + get { + return this.transferLengthField; + } + set { + this.transferLengthField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool TransferLengthSpecified { + get { + return this.transferLengthFieldSpecified; + } + set { + this.transferLengthFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute("Content-Type")] + public string ContentType { + get { + return this.contentTypeField; + } + set { + this.contentTypeField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute("Content-Encoding")] + public string ContentEncoding { + get { + return this.contentEncodingField; + } + set { + this.contentEncodingField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute("Content-MD5", DataType="base64Binary")] + public byte[] ContentMD5 { + get { + return this.contentMD5Field; + } + set { + this.contentMD5Field = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute("FEC-OTI-FEC-Encoding-ID")] + public byte FECOTIFECEncodingID { + get { + return this.fECOTIFECEncodingIDField; + } + set { + this.fECOTIFECEncodingIDField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool FECOTIFECEncodingIDSpecified { + get { + return this.fECOTIFECEncodingIDFieldSpecified; + } + set { + this.fECOTIFECEncodingIDFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute("FEC-OTI-FEC-Instance-ID")] + public ulong FECOTIFECInstanceID { + get { + return this.fECOTIFECInstanceIDField; + } + set { + this.fECOTIFECInstanceIDField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool FECOTIFECInstanceIDSpecified { + get { + return this.fECOTIFECInstanceIDFieldSpecified; + } + set { + this.fECOTIFECInstanceIDFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute("FEC-OTI-Maximum-Source-Block-Length")] + public ulong FECOTIMaximumSourceBlockLength { + get { + return this.fECOTIMaximumSourceBlockLengthField; + } + set { + this.fECOTIMaximumSourceBlockLengthField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool FECOTIMaximumSourceBlockLengthSpecified { + get { + return this.fECOTIMaximumSourceBlockLengthFieldSpecified; + } + set { + this.fECOTIMaximumSourceBlockLengthFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute("FEC-OTI-Encoding-Symbol-Length")] + public ulong FECOTIEncodingSymbolLength { + get { + return this.fECOTIEncodingSymbolLengthField; + } + set { + this.fECOTIEncodingSymbolLengthField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool FECOTIEncodingSymbolLengthSpecified { + get { + return this.fECOTIEncodingSymbolLengthFieldSpecified; + } + set { + this.fECOTIEncodingSymbolLengthFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute("FEC-OTI-Max-Number-of-Encoding-Symbols")] + public ulong FECOTIMaxNumberofEncodingSymbols { + get { + return this.fECOTIMaxNumberofEncodingSymbolsField; + } + set { + this.fECOTIMaxNumberofEncodingSymbolsField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool FECOTIMaxNumberofEncodingSymbolsSpecified { + get { + return this.fECOTIMaxNumberofEncodingSymbolsFieldSpecified; + } + set { + this.fECOTIMaxNumberofEncodingSymbolsFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute("FEC-OTI-Scheme-Specific-Info", DataType="base64Binary")] + public byte[] FECOTISchemeSpecificInfo { + get { + return this.fECOTISchemeSpecificInfoField; + } + set { + this.fECOTISchemeSpecificInfoField = value; + } + } + + /// + [System.Xml.Serialization.XmlAnyAttributeAttribute()] + public System.Xml.XmlAttribute[] AnyAttr { + get { + return this.anyAttrField; + } + set { + this.anyAttrField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "0.0.0.0")] + [System.SerializableAttribute()] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.ComponentModel.DesignerCategoryAttribute("code")] + [System.Xml.Serialization.XmlTypeAttribute(Namespace="tag:atsc.org,2016:XMLSchemas/ATSC3/Delivery/S-TSID/1.0/")] + public partial class protectedObjectType { + + private System.Xml.XmlElement[] anyField; + + private string sessionDescriptionField; + + private uint tsiField; + + private string sourceTOIField; + + private uint fecTransportObjectSizeField; + + private bool fecTransportObjectSizeFieldSpecified; + + private System.Xml.XmlAttribute[] anyAttrField; + + /// + [System.Xml.Serialization.XmlAnyElementAttribute()] + public System.Xml.XmlElement[] Any { + get { + return this.anyField; + } + set { + this.anyField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public string sessionDescription { + get { + return this.sessionDescriptionField; + } + set { + this.sessionDescriptionField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public uint tsi { + get { + return this.tsiField; + } + set { + this.tsiField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public string sourceTOI { + get { + return this.sourceTOIField; + } + set { + this.sourceTOIField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public uint fecTransportObjectSize { + get { + return this.fecTransportObjectSizeField; + } + set { + this.fecTransportObjectSizeField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool fecTransportObjectSizeSpecified { + get { + return this.fecTransportObjectSizeFieldSpecified; + } + set { + this.fecTransportObjectSizeFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlAnyAttributeAttribute()] + public System.Xml.XmlAttribute[] AnyAttr { + get { + return this.anyAttrField; + } + set { + this.anyAttrField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "0.0.0.0")] + [System.SerializableAttribute()] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.ComponentModel.DesignerCategoryAttribute("code")] + [System.Xml.Serialization.XmlTypeAttribute(Namespace="tag:atsc.org,2016:XMLSchemas/ATSC3/Delivery/S-TSID/1.0/")] + public partial class fecParametersType { + + private protectedObjectType[] protectedObjectField; + + private System.Xml.XmlElement[] anyField; + + private uint maximumDelayField; + + private ushort overheadField; + + private bool overheadFieldSpecified; + + private uint minBuffSizeField; + + private bool minBuffSizeFieldSpecified; + + private byte[] fecOTIField; + + private System.Xml.XmlAttribute[] anyAttrField; + + public fecParametersType() { + this.maximumDelayField = ((uint)(0)); + } + + /// + [System.Xml.Serialization.XmlElementAttribute("ProtectedObject")] + public protectedObjectType[] ProtectedObject { + get { + return this.protectedObjectField; + } + set { + this.protectedObjectField = value; + } + } + + /// + [System.Xml.Serialization.XmlAnyElementAttribute()] + public System.Xml.XmlElement[] Any { + get { + return this.anyField; + } + set { + this.anyField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + [System.ComponentModel.DefaultValueAttribute(typeof(uint), "0")] + public uint maximumDelay { + get { + return this.maximumDelayField; + } + set { + this.maximumDelayField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public ushort overhead { + get { + return this.overheadField; + } + set { + this.overheadField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool overheadSpecified { + get { + return this.overheadFieldSpecified; + } + set { + this.overheadFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public uint minBuffSize { + get { + return this.minBuffSizeField; + } + set { + this.minBuffSizeField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool minBuffSizeSpecified { + get { + return this.minBuffSizeFieldSpecified; + } + set { + this.minBuffSizeFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute(DataType="hexBinary")] + public byte[] fecOTI { + get { + return this.fecOTIField; + } + set { + this.fecOTIField = value; + } + } + + /// + [System.Xml.Serialization.XmlAnyAttributeAttribute()] + public System.Xml.XmlAttribute[] AnyAttr { + get { + return this.anyAttrField; + } + set { + this.anyAttrField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "0.0.0.0")] + [System.SerializableAttribute()] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.ComponentModel.DesignerCategoryAttribute("code")] + [System.Xml.Serialization.XmlTypeAttribute(Namespace="tag:atsc.org,2016:XMLSchemas/ATSC3/Delivery/S-TSID/1.0/")] + public partial class PayloadType { + + private byte codePointField; + + private byte formatIdField; + + private byte fragField; + + private bool orderField; + + private byte srcFecPayloadIdField; + + private byte[] fecParamsField; + + private System.Xml.XmlAttribute[] anyAttrField; + + public PayloadType() { + this.codePointField = ((byte)(0)); + this.fragField = ((byte)(0)); + this.orderField = false; + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + [System.ComponentModel.DefaultValueAttribute(typeof(byte), "0")] + public byte codePoint { + get { + return this.codePointField; + } + set { + this.codePointField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public byte formatId { + get { + return this.formatIdField; + } + set { + this.formatIdField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + [System.ComponentModel.DefaultValueAttribute(typeof(byte), "0")] + public byte frag { + get { + return this.fragField; + } + set { + this.fragField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + [System.ComponentModel.DefaultValueAttribute(false)] + public bool order { + get { + return this.orderField; + } + set { + this.orderField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public byte srcFecPayloadId { + get { + return this.srcFecPayloadIdField; + } + set { + this.srcFecPayloadIdField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute(DataType="hexBinary")] + public byte[] fecParams { + get { + return this.fecParamsField; + } + set { + this.fecParamsField = value; + } + } + + /// + [System.Xml.Serialization.XmlAnyAttributeAttribute()] + public System.Xml.XmlAttribute[] AnyAttr { + get { + return this.anyAttrField; + } + set { + this.anyAttrField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "0.0.0.0")] + [System.SerializableAttribute()] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.ComponentModel.DesignerCategoryAttribute("code")] + [System.Xml.Serialization.XmlTypeAttribute(Namespace="tag:atsc.org,2016:XMLSchemas/ATSC3/Delivery/S-TSID/1.0/")] + public partial class AEAMediaType { + + private string[] aEAIdField; + + private System.Xml.XmlElement[] anyField; + + private System.Xml.XmlAttribute[] anyAttrField; + + /// + [System.Xml.Serialization.XmlElementAttribute("AEAId")] + public string[] AEAId { + get { + return this.aEAIdField; + } + set { + this.aEAIdField = value; + } + } + + /// + [System.Xml.Serialization.XmlAnyElementAttribute()] + public System.Xml.XmlElement[] Any { + get { + return this.anyField; + } + set { + this.anyField = value; + } + } + + /// + [System.Xml.Serialization.XmlAnyAttributeAttribute()] + public System.Xml.XmlAttribute[] AnyAttr { + get { + return this.anyAttrField; + } + set { + this.anyAttrField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "0.0.0.0")] + [System.SerializableAttribute()] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.ComponentModel.DesignerCategoryAttribute("code")] + [System.Xml.Serialization.XmlTypeAttribute(Namespace="tag:atsc.org,2016:XMLSchemas/ATSC3/Delivery/S-TSID/1.0/")] + public partial class ContentRatingType { + + private System.Xml.XmlElement[] anyField; + + private string schemeIdUriField; + + private string valueField; + + private System.Xml.XmlAttribute[] anyAttrField; + + public ContentRatingType() { + this.schemeIdUriField = "tag:atsc.org,2016:carating:1"; + } + + /// + [System.Xml.Serialization.XmlAnyElementAttribute()] + public System.Xml.XmlElement[] Any { + get { + return this.anyField; + } + set { + this.anyField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute(DataType="anyURI")] + [System.ComponentModel.DefaultValueAttribute("tag:atsc.org,2016:carating:1")] + public string schemeIdUri { + get { + return this.schemeIdUriField; + } + set { + this.schemeIdUriField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public string value { + get { + return this.valueField; + } + set { + this.valueField = value; + } + } + + /// + [System.Xml.Serialization.XmlAnyAttributeAttribute()] + public System.Xml.XmlAttribute[] AnyAttr { + get { + return this.anyAttrField; + } + set { + this.anyAttrField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "0.0.0.0")] + [System.SerializableAttribute()] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.ComponentModel.DesignerCategoryAttribute("code")] + [System.Xml.Serialization.XmlTypeAttribute(Namespace="tag:atsc.org,2016:XMLSchemas/ATSC3/Delivery/S-TSID/1.0/")] + public partial class MediaInfoType { + + private ContentRatingType[] contentRatingField; + + private System.Xml.XmlElement[] anyField; + + private bool startupField; + + private bool startupFieldSpecified; + + private string langField; + + private contentTypeType contentTypeField; + + private bool contentTypeFieldSpecified; + + private string repIdField; + + private System.Xml.XmlAttribute[] anyAttrField; + + /// + [System.Xml.Serialization.XmlElementAttribute("ContentRating")] + public ContentRatingType[] ContentRating { + get { + return this.contentRatingField; + } + set { + this.contentRatingField = value; + } + } + + /// + [System.Xml.Serialization.XmlAnyElementAttribute()] + public System.Xml.XmlElement[] Any { + get { + return this.anyField; + } + set { + this.anyField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public bool startup { + get { + return this.startupField; + } + set { + this.startupField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool startupSpecified { + get { + return this.startupFieldSpecified; + } + set { + this.startupFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute(Form=System.Xml.Schema.XmlSchemaForm.Qualified, Namespace="http://www.w3.org/XML/1998/namespace")] + public string lang { + get { + return this.langField; + } + set { + this.langField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public contentTypeType contentType { + get { + return this.contentTypeField; + } + set { + this.contentTypeField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool contentTypeSpecified { + get { + return this.contentTypeFieldSpecified; + } + set { + this.contentTypeFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public string repId { + get { + return this.repIdField; + } + set { + this.repIdField = value; + } + } + + /// + [System.Xml.Serialization.XmlAnyAttributeAttribute()] + public System.Xml.XmlAttribute[] AnyAttr { + get { + return this.anyAttrField; + } + set { + this.anyAttrField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "0.0.0.0")] + [System.SerializableAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace="tag:atsc.org,2016:XMLSchemas/ATSC3/Delivery/S-TSID/1.0/")] + public enum contentTypeType { + + /// + audio, + + /// + video, + + /// + subtitles, + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "0.0.0.0")] + [System.SerializableAttribute()] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.ComponentModel.DesignerCategoryAttribute("code")] + [System.Xml.Serialization.XmlTypeAttribute(Namespace="tag:atsc.org,2016:XMLSchemas/ATSC3/Delivery/S-TSID/1.0/")] + public partial class ContentInfoType { + + private object itemField; + + private System.Xml.XmlAttribute[] anyAttrField; + + /// + [System.Xml.Serialization.XmlAnyElementAttribute()] + [System.Xml.Serialization.XmlElementAttribute("AEAMedia", typeof(AEAMediaType))] + [System.Xml.Serialization.XmlElementAttribute("MediaInfo", typeof(MediaInfoType))] + public object Item { + get { + return this.itemField; + } + set { + this.itemField = value; + } + } + + /// + [System.Xml.Serialization.XmlAnyAttributeAttribute()] + public System.Xml.XmlAttribute[] AnyAttr { + get { + return this.anyAttrField; + } + set { + this.anyAttrField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "0.0.0.0")] + [System.SerializableAttribute()] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.ComponentModel.DesignerCategoryAttribute("code")] + [System.Xml.Serialization.XmlTypeAttribute(Namespace="tag:atsc.org,2016:XMLSchemas/ATSC3/Delivery/S-TSID/1.0/")] + [System.Xml.Serialization.XmlRootAttribute("RepairFlow", Namespace="tag:atsc.org,2016:XMLSchemas/ATSC3/Delivery/S-TSID/1.0/", IsNullable=false)] + public partial class rprFlowType { + + private fecParametersType fECParametersField; + + private System.Xml.XmlElement[] anyField; + + private System.Xml.XmlAttribute[] anyAttrField; + + /// + public fecParametersType FECParameters { + get { + return this.fECParametersField; + } + set { + this.fECParametersField = value; + } + } + + /// + [System.Xml.Serialization.XmlAnyElementAttribute()] + public System.Xml.XmlElement[] Any { + get { + return this.anyField; + } + set { + this.anyField = value; + } + } + + /// + [System.Xml.Serialization.XmlAnyAttributeAttribute()] + public System.Xml.XmlAttribute[] AnyAttr { + get { + return this.anyAttrField; + } + set { + this.anyAttrField = value; + } + } + } +} diff --git a/skyscraper8/Ietf/FLUTE/FluteUtilities.cs b/skyscraper8/Ietf/FLUTE/FluteUtilities.cs index 992a69d..795aa50 100644 --- a/skyscraper8/Ietf/FLUTE/FluteUtilities.cs +++ b/skyscraper8/Ietf/FLUTE/FluteUtilities.cs @@ -85,8 +85,24 @@ namespace skyscraper8.Ietf.FLUTE byte[] firstBlock = targetListener.GetFirstBlock(); if (firstBlock[0] == 0x3c && firstBlock[1] == 0x3f && firstBlock[2] == 0x78 && firstBlock[3] == 0x6d && firstBlock[4] == 0x6c) return GuessedFluteDataType.Xml; - if (firstBlock[0] == 0x00 && firstBlock[1] == 0x00 && firstBlock[2] == 0x00) + if (firstBlock[0] == 0x00 && firstBlock[1] == 0x00 && firstBlock[2] == 0x00 && firstBlock[3] != 0x00) return GuessedFluteDataType.MultimediaContent; + if (firstBlock[0] == 'C' && firstBlock[1] == 'o' && firstBlock[2] == 'n' && firstBlock[3] == 't' && + firstBlock[4] == 'e' && firstBlock[5] == 'n' && firstBlock[6] == 't' && firstBlock[7] == '-' && + firstBlock[8] == 'T' && firstBlock[9] == 'y' && firstBlock[10] == 'p' && firstBlock[11] == 'e' && + firstBlock[12] == ':' && firstBlock[13] == ' ') + return GuessedFluteDataType.Mime; + + bool allZeroes = true; + for (int i = 0; i < Math.Min(firstBlock.Length, 1000); i++) + { + if (firstBlock[i] != 0) + allZeroes = false; + } + + if (allZeroes) + return GuessedFluteDataType.Stuffing; + return GuessedFluteDataType.Unknown; } } @@ -95,6 +111,8 @@ namespace skyscraper8.Ietf.FLUTE { Unknown, Xml, - MultimediaContent + MultimediaContent, + Mime, + Stuffing } } diff --git a/skyscraper8/MpegDash/MbmsEnvelope.cs b/skyscraper8/MpegDash/MbmsEnvelope.cs new file mode 100644 index 0000000..e1cc3d8 --- /dev/null +++ b/skyscraper8/MpegDash/MbmsEnvelope.cs @@ -0,0 +1,51 @@ +using MimeKit; +using Schemas; +using skyscraper8.Atsc.A331.Schema; +using skyscraper8.MpegDash.Schema; + +namespace skyscraper8.Atsc.A331; + +public class MbmsEnvelope +{ + public MbmsEnvelope(MimeMessage mimeMessage) + { + foreach (MimePart part in mimeMessage.BodyParts) + { + if (part.Content == null) + continue; + + string key = part.ContentType.MimeType.ToLowerInvariant(); + Stream value = part.Content.Open(); + + switch (key) + { + case "application/mbms-envelope+xml": + MetadataEnvelope = MpegDashUtilities.ParseMetadataEnvelope(value); + break; + case "application/dash+xml": + MediaPresentationDescription = MpegDashUtilities.ParseMPD(value); + break; + case "application/atsc-held+xml": + Atsc3Held = Atsc3Utilities.ParseHeld(value); + break; + case "application/route-s-tsid+xml": + Atsc3Stsid = Atsc3Utilities.ParseStsId(value); + break; + case "application/route-usd+xml": + Atsc3RouteUsd = Atsc3Utilities.ParseRouteUsd(value); + break; + default: + throw new NotImplementedException(key); + } + } + } + + public BundleDescriptionROUTEType? Atsc3RouteUsd { get; private set; } + public STSIDType? Atsc3Stsid { get; private set; } + + public HELDType Atsc3Held { get; private set; } + + public MPDtype MediaPresentationDescription { get; private set; } + + public metadataEnvelopeType MetadataEnvelope {get; private set;} +} diff --git a/skyscraper8/MpegDash/MpegDashUtilities.cs b/skyscraper8/MpegDash/MpegDashUtilities.cs new file mode 100644 index 0000000..7f291d9 --- /dev/null +++ b/skyscraper8/MpegDash/MpegDashUtilities.cs @@ -0,0 +1,30 @@ +using System.Xml.Serialization; +using skyscraper8.MpegDash.Schema; + +namespace skyscraper8.Atsc.A331; + +public static class MpegDashUtilities +{ + private static XmlSerializer metadataEnvelopeSerializer; + private static XmlSerializer mpdSerializer; + + public static metadataEnvelopeType? ParseMetadataEnvelope(Stream value) + { + if (metadataEnvelopeSerializer == null) + { + metadataEnvelopeSerializer = new XmlSerializer(typeof(metadataEnvelopeType)); + } + object deserialize = metadataEnvelopeSerializer.Deserialize(value); + return deserialize as metadataEnvelopeType; + } + + public static MPDtype ParseMPD(Stream value) + { + if (mpdSerializer == null) + { + mpdSerializer = new XmlSerializer(typeof(MPDtype)); + } + object deserialize = mpdSerializer.Deserialize(value); + return (MPDtype)deserialize; + } +} diff --git a/skyscraper8/MpegDash/Schema/DASH-MPD_xlink.cs b/skyscraper8/MpegDash/Schema/DASH-MPD_xlink.cs new file mode 100644 index 0000000..35db5fc --- /dev/null +++ b/skyscraper8/MpegDash/Schema/DASH-MPD_xlink.cs @@ -0,0 +1,3831 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.42000 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +// +//This source code was auto-generated by MonoXSD +// +namespace skyscraper8.MpegDash.Schema { + + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "0.0.0.0")] + [System.SerializableAttribute()] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.ComponentModel.DesignerCategoryAttribute("code")] + [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://www.w3.org/1999/xlink")] + [System.Xml.Serialization.XmlRootAttribute("title", Namespace="http://www.w3.org/1999/xlink", IsNullable=false)] + public partial class titleEltType { + + private System.Xml.XmlNode[] anyField; + + private typeType typeField; + + private string langField; + + public titleEltType() { + this.typeField = typeType.title; + } + + /// + [System.Xml.Serialization.XmlTextAttribute()] + [System.Xml.Serialization.XmlAnyElementAttribute()] + public System.Xml.XmlNode[] Any { + get { + return this.anyField; + } + set { + this.anyField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute(Form=System.Xml.Schema.XmlSchemaForm.Qualified)] + public typeType type { + get { + return this.typeField; + } + set { + this.typeField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute(Form=System.Xml.Schema.XmlSchemaForm.Qualified, Namespace="http://www.w3.org/XML/1998/namespace")] + public string lang { + get { + return this.langField; + } + set { + this.langField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "0.0.0.0")] + [System.SerializableAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://www.w3.org/1999/xlink")] + public enum typeType { + + /// + simple, + + /// + extended, + + /// + title, + + /// + resource, + + /// + locator, + + /// + arc, + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "0.0.0.0")] + [System.SerializableAttribute()] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.ComponentModel.DesignerCategoryAttribute("code")] + [System.Xml.Serialization.XmlTypeAttribute(Namespace="urn:mpeg:dash:schema:mpd:2011")] + public partial class RangeType { + + private string starttimeField; + + private string durationField; + + /// + [System.Xml.Serialization.XmlAttributeAttribute(DataType="duration")] + public string starttime { + get { + return this.starttimeField; + } + set { + this.starttimeField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute(DataType="duration")] + public string duration { + get { + return this.durationField; + } + set { + this.durationField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "0.0.0.0")] + [System.SerializableAttribute()] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.ComponentModel.DesignerCategoryAttribute("code")] + [System.Xml.Serialization.XmlTypeAttribute(Namespace="urn:mpeg:dash:schema:mpd:2011")] + public partial class MetricsType { + + private DescriptorType[] reportingField; + + private RangeType[] rangeField; + + private System.Xml.XmlElement[] anyField; + + private string metricsField; + + private System.Xml.XmlAttribute[] anyAttrField; + + /// + [System.Xml.Serialization.XmlElementAttribute("Reporting")] + public DescriptorType[] Reporting { + get { + return this.reportingField; + } + set { + this.reportingField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute("Range")] + public RangeType[] Range { + get { + return this.rangeField; + } + set { + this.rangeField = value; + } + } + + /// + [System.Xml.Serialization.XmlAnyElementAttribute()] + public System.Xml.XmlElement[] Any { + get { + return this.anyField; + } + set { + this.anyField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public string metrics { + get { + return this.metricsField; + } + set { + this.metricsField = value; + } + } + + /// + [System.Xml.Serialization.XmlAnyAttributeAttribute()] + public System.Xml.XmlAttribute[] AnyAttr { + get { + return this.anyAttrField; + } + set { + this.anyAttrField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "0.0.0.0")] + [System.SerializableAttribute()] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.ComponentModel.DesignerCategoryAttribute("code")] + [System.Xml.Serialization.XmlTypeAttribute(Namespace="urn:mpeg:dash:schema:mpd:2011")] + public partial class DescriptorType { + + private System.Xml.XmlElement[] anyField; + + private string schemeIdUriField; + + private string valueField; + + private string idField; + + private System.Xml.XmlAttribute[] anyAttrField; + + /// + [System.Xml.Serialization.XmlAnyElementAttribute()] + public System.Xml.XmlElement[] Any { + get { + return this.anyField; + } + set { + this.anyField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute(DataType="anyURI")] + public string schemeIdUri { + get { + return this.schemeIdUriField; + } + set { + this.schemeIdUriField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public string value { + get { + return this.valueField; + } + set { + this.valueField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public string id { + get { + return this.idField; + } + set { + this.idField = value; + } + } + + /// + [System.Xml.Serialization.XmlAnyAttributeAttribute()] + public System.Xml.XmlAttribute[] AnyAttr { + get { + return this.anyAttrField; + } + set { + this.anyAttrField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "0.0.0.0")] + [System.SerializableAttribute()] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.ComponentModel.DesignerCategoryAttribute("code")] + [System.Xml.Serialization.XmlTypeAttribute(Namespace="urn:mpeg:dash:schema:mpd:2011")] + public partial class SubsetType { + + private uint[] containsField; + + private string idField; + + private System.Xml.XmlAttribute[] anyAttrField; + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public uint[] contains { + get { + return this.containsField; + } + set { + this.containsField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public string id { + get { + return this.idField; + } + set { + this.idField = value; + } + } + + /// + [System.Xml.Serialization.XmlAnyAttributeAttribute()] + public System.Xml.XmlAttribute[] AnyAttr { + get { + return this.anyAttrField; + } + set { + this.anyAttrField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "0.0.0.0")] + [System.SerializableAttribute()] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.ComponentModel.DesignerCategoryAttribute("code")] + [System.Xml.Serialization.XmlTypeAttribute(Namespace="urn:mpeg:dash:schema:mpd:2011")] + public partial class ContentComponentType { + + private DescriptorType[] accessibilityField; + + private DescriptorType[] roleField; + + private DescriptorType[] ratingField; + + private DescriptorType[] viewpointField; + + private System.Xml.XmlElement[] anyField; + + private uint idField; + + private bool idFieldSpecified; + + private string langField; + + private string contentTypeField; + + private string parField; + + private System.Xml.XmlAttribute[] anyAttrField; + + /// + [System.Xml.Serialization.XmlElementAttribute("Accessibility")] + public DescriptorType[] Accessibility { + get { + return this.accessibilityField; + } + set { + this.accessibilityField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute("Role")] + public DescriptorType[] Role { + get { + return this.roleField; + } + set { + this.roleField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute("Rating")] + public DescriptorType[] Rating { + get { + return this.ratingField; + } + set { + this.ratingField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute("Viewpoint")] + public DescriptorType[] Viewpoint { + get { + return this.viewpointField; + } + set { + this.viewpointField = value; + } + } + + /// + [System.Xml.Serialization.XmlAnyElementAttribute()] + public System.Xml.XmlElement[] Any { + get { + return this.anyField; + } + set { + this.anyField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public uint id { + get { + return this.idField; + } + set { + this.idField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool idSpecified { + get { + return this.idFieldSpecified; + } + set { + this.idFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute(DataType="language")] + public string lang { + get { + return this.langField; + } + set { + this.langField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public string contentType { + get { + return this.contentTypeField; + } + set { + this.contentTypeField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public string par { + get { + return this.parField; + } + set { + this.parField = value; + } + } + + /// + [System.Xml.Serialization.XmlAnyAttributeAttribute()] + public System.Xml.XmlAttribute[] AnyAttr { + get { + return this.anyAttrField; + } + set { + this.anyAttrField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "0.0.0.0")] + [System.SerializableAttribute()] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.ComponentModel.DesignerCategoryAttribute("code")] + [System.Xml.Serialization.XmlTypeAttribute(Namespace="urn:mpeg:dash:schema:mpd:2011")] + public partial class SwitchingType { + + private uint intervalField; + + private SwitchingTypeType typeField; + + private bool typeFieldSpecified; + + private System.Xml.XmlAttribute[] anyAttrField; + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public uint interval { + get { + return this.intervalField; + } + set { + this.intervalField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public SwitchingTypeType type { + get { + return this.typeField; + } + set { + this.typeField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool typeSpecified { + get { + return this.typeFieldSpecified; + } + set { + this.typeFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlAnyAttributeAttribute()] + public System.Xml.XmlAttribute[] AnyAttr { + get { + return this.anyAttrField; + } + set { + this.anyAttrField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "0.0.0.0")] + [System.SerializableAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace="urn:mpeg:dash:schema:mpd:2011")] + public enum SwitchingTypeType { + + /// + media, + + /// + bitstream, + } + + /// + [System.Xml.Serialization.XmlIncludeAttribute(typeof(SubRepresentationType))] + [System.Xml.Serialization.XmlIncludeAttribute(typeof(RepresentationType))] + [System.Xml.Serialization.XmlIncludeAttribute(typeof(AdaptationSetType))] + [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "0.0.0.0")] + [System.SerializableAttribute()] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.ComponentModel.DesignerCategoryAttribute("code")] + [System.Xml.Serialization.XmlTypeAttribute(Namespace="urn:mpeg:dash:schema:mpd:2011")] + public partial class RepresentationBaseType { + + private DescriptorType[] framePackingField; + + private DescriptorType[] audioChannelConfigurationField; + + private DescriptorType[] contentProtectionField; + + private DescriptorType[] essentialPropertyField; + + private DescriptorType[] supplementalPropertyField; + + private EventStreamType[] inbandEventStreamField; + + private SwitchingType[] switchingField; + + private System.Xml.XmlElement[] anyField; + + private string profilesField; + + private uint widthField; + + private bool widthFieldSpecified; + + private uint heightField; + + private bool heightFieldSpecified; + + private string sarField; + + private string frameRateField; + + private string audioSamplingRateField; + + private string mimeTypeField; + + private string segmentProfilesField; + + private string codecsField; + + private double maximumSAPPeriodField; + + private bool maximumSAPPeriodFieldSpecified; + + private uint startWithSAPField; + + private bool startWithSAPFieldSpecified; + + private double maxPlayoutRateField; + + private bool maxPlayoutRateFieldSpecified; + + private bool codingDependencyField; + + private bool codingDependencyFieldSpecified; + + private VideoScanType scanTypeField; + + private bool scanTypeFieldSpecified; + + private System.Xml.XmlAttribute[] anyAttrField; + + /// + [System.Xml.Serialization.XmlElementAttribute("FramePacking")] + public DescriptorType[] FramePacking { + get { + return this.framePackingField; + } + set { + this.framePackingField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute("AudioChannelConfiguration")] + public DescriptorType[] AudioChannelConfiguration { + get { + return this.audioChannelConfigurationField; + } + set { + this.audioChannelConfigurationField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute("ContentProtection")] + public DescriptorType[] ContentProtection { + get { + return this.contentProtectionField; + } + set { + this.contentProtectionField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute("EssentialProperty")] + public DescriptorType[] EssentialProperty { + get { + return this.essentialPropertyField; + } + set { + this.essentialPropertyField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute("SupplementalProperty")] + public DescriptorType[] SupplementalProperty { + get { + return this.supplementalPropertyField; + } + set { + this.supplementalPropertyField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute("InbandEventStream")] + public EventStreamType[] InbandEventStream { + get { + return this.inbandEventStreamField; + } + set { + this.inbandEventStreamField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute("Switching")] + public SwitchingType[] Switching { + get { + return this.switchingField; + } + set { + this.switchingField = value; + } + } + + /// + [System.Xml.Serialization.XmlAnyElementAttribute()] + public System.Xml.XmlElement[] Any { + get { + return this.anyField; + } + set { + this.anyField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public string profiles { + get { + return this.profilesField; + } + set { + this.profilesField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public uint width { + get { + return this.widthField; + } + set { + this.widthField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool widthSpecified { + get { + return this.widthFieldSpecified; + } + set { + this.widthFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public uint height { + get { + return this.heightField; + } + set { + this.heightField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool heightSpecified { + get { + return this.heightFieldSpecified; + } + set { + this.heightFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public string sar { + get { + return this.sarField; + } + set { + this.sarField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public string frameRate { + get { + return this.frameRateField; + } + set { + this.frameRateField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public string audioSamplingRate { + get { + return this.audioSamplingRateField; + } + set { + this.audioSamplingRateField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public string mimeType { + get { + return this.mimeTypeField; + } + set { + this.mimeTypeField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public string segmentProfiles { + get { + return this.segmentProfilesField; + } + set { + this.segmentProfilesField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public string codecs { + get { + return this.codecsField; + } + set { + this.codecsField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public double maximumSAPPeriod { + get { + return this.maximumSAPPeriodField; + } + set { + this.maximumSAPPeriodField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool maximumSAPPeriodSpecified { + get { + return this.maximumSAPPeriodFieldSpecified; + } + set { + this.maximumSAPPeriodFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public uint startWithSAP { + get { + return this.startWithSAPField; + } + set { + this.startWithSAPField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool startWithSAPSpecified { + get { + return this.startWithSAPFieldSpecified; + } + set { + this.startWithSAPFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public double maxPlayoutRate { + get { + return this.maxPlayoutRateField; + } + set { + this.maxPlayoutRateField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool maxPlayoutRateSpecified { + get { + return this.maxPlayoutRateFieldSpecified; + } + set { + this.maxPlayoutRateFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public bool codingDependency { + get { + return this.codingDependencyField; + } + set { + this.codingDependencyField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool codingDependencySpecified { + get { + return this.codingDependencyFieldSpecified; + } + set { + this.codingDependencyFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public VideoScanType scanType { + get { + return this.scanTypeField; + } + set { + this.scanTypeField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool scanTypeSpecified { + get { + return this.scanTypeFieldSpecified; + } + set { + this.scanTypeFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlAnyAttributeAttribute()] + public System.Xml.XmlAttribute[] AnyAttr { + get { + return this.anyAttrField; + } + set { + this.anyAttrField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "0.0.0.0")] + [System.SerializableAttribute()] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.ComponentModel.DesignerCategoryAttribute("code")] + [System.Xml.Serialization.XmlTypeAttribute(Namespace="urn:mpeg:dash:schema:mpd:2011")] + public partial class EventStreamType { + + private EventType[] eventField; + + private System.Xml.XmlElement[] anyField; + + private string hrefField; + + private actuateType actuateField; + + private string messageDataField; + + private string schemeIdUriField; + + private string valueField; + + private uint timescaleField; + + private bool timescaleFieldSpecified; + + public EventStreamType() { + this.actuateField = actuateType.onRequest; + } + + /// + [System.Xml.Serialization.XmlElementAttribute("Event")] + public EventType[] Event { + get { + return this.eventField; + } + set { + this.eventField = value; + } + } + + /// + [System.Xml.Serialization.XmlAnyElementAttribute()] + public System.Xml.XmlElement[] Any { + get { + return this.anyField; + } + set { + this.anyField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute(Form=System.Xml.Schema.XmlSchemaForm.Qualified, Namespace="http://www.w3.org/1999/xlink", DataType="anyURI")] + public string href { + get { + return this.hrefField; + } + set { + this.hrefField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute(Form=System.Xml.Schema.XmlSchemaForm.Qualified, Namespace="http://www.w3.org/1999/xlink")] + [System.ComponentModel.DefaultValueAttribute(actuateType.onRequest)] + public actuateType actuate { + get { + return this.actuateField; + } + set { + this.actuateField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute(DataType="anyURI")] + public string messageData { + get { + return this.messageDataField; + } + set { + this.messageDataField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute(DataType="anyURI")] + public string schemeIdUri { + get { + return this.schemeIdUriField; + } + set { + this.schemeIdUriField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public string value { + get { + return this.valueField; + } + set { + this.valueField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public uint timescale { + get { + return this.timescaleField; + } + set { + this.timescaleField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool timescaleSpecified { + get { + return this.timescaleFieldSpecified; + } + set { + this.timescaleFieldSpecified = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "0.0.0.0")] + [System.SerializableAttribute()] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.ComponentModel.DesignerCategoryAttribute("code")] + [System.Xml.Serialization.XmlTypeAttribute(Namespace="urn:mpeg:dash:schema:mpd:2011")] + public partial class EventType { + + private System.Xml.XmlElement[] anyField; + + private ulong presentationTimeField; + + private ulong durationField; + + private bool durationFieldSpecified; + + private uint idField; + + private bool idFieldSpecified; + + private string messageDataField; + + private System.Xml.XmlAttribute[] anyAttrField; + + public EventType() { + this.presentationTimeField = ((ulong)(0m)); + } + + /// + [System.Xml.Serialization.XmlAnyElementAttribute()] + public System.Xml.XmlElement[] Any { + get { + return this.anyField; + } + set { + this.anyField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + [System.ComponentModel.DefaultValueAttribute(typeof(ulong), "0")] + public ulong presentationTime { + get { + return this.presentationTimeField; + } + set { + this.presentationTimeField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public ulong duration { + get { + return this.durationField; + } + set { + this.durationField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool durationSpecified { + get { + return this.durationFieldSpecified; + } + set { + this.durationFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public uint id { + get { + return this.idField; + } + set { + this.idField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool idSpecified { + get { + return this.idFieldSpecified; + } + set { + this.idFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public string messageData { + get { + return this.messageDataField; + } + set { + this.messageDataField = value; + } + } + + /// + [System.Xml.Serialization.XmlAnyAttributeAttribute()] + public System.Xml.XmlAttribute[] AnyAttr { + get { + return this.anyAttrField; + } + set { + this.anyAttrField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "0.0.0.0")] + [System.SerializableAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://www.w3.org/1999/xlink")] + public enum actuateType { + + /// + onLoad, + + /// + onRequest, + + /// + other, + + /// + none, + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "0.0.0.0")] + [System.SerializableAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace="urn:mpeg:dash:schema:mpd:2011")] + public enum VideoScanType { + + /// + progressive, + + /// + interlaced, + + /// + unknown, + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "0.0.0.0")] + [System.SerializableAttribute()] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.ComponentModel.DesignerCategoryAttribute("code")] + [System.Xml.Serialization.XmlTypeAttribute(Namespace="urn:mpeg:dash:schema:mpd:2011")] + public partial class SubRepresentationType : RepresentationBaseType { + + private uint levelField; + + private bool levelFieldSpecified; + + private uint[] dependencyLevelField; + + private uint bandwidthField; + + private bool bandwidthFieldSpecified; + + private string[] contentComponentField; + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public uint level { + get { + return this.levelField; + } + set { + this.levelField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool levelSpecified { + get { + return this.levelFieldSpecified; + } + set { + this.levelFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public uint[] dependencyLevel { + get { + return this.dependencyLevelField; + } + set { + this.dependencyLevelField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public uint bandwidth { + get { + return this.bandwidthField; + } + set { + this.bandwidthField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool bandwidthSpecified { + get { + return this.bandwidthFieldSpecified; + } + set { + this.bandwidthFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public string[] contentComponent { + get { + return this.contentComponentField; + } + set { + this.contentComponentField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "0.0.0.0")] + [System.SerializableAttribute()] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.ComponentModel.DesignerCategoryAttribute("code")] + [System.Xml.Serialization.XmlTypeAttribute(Namespace="urn:mpeg:dash:schema:mpd:2011")] + public partial class RepresentationType : RepresentationBaseType { + + private BaseURLType[] baseURLField; + + private SubRepresentationType[] subRepresentationField; + + private SegmentBaseType segmentBaseField; + + private SegmentListType segmentListField; + + private SegmentTemplateType segmentTemplateField; + + private string idField; + + private uint bandwidthField; + + private uint qualityRankingField; + + private bool qualityRankingFieldSpecified; + + private string[] dependencyIdField; + + private string[] mediaStreamStructureIdField; + + /// + [System.Xml.Serialization.XmlElementAttribute("BaseURL")] + public BaseURLType[] BaseURL { + get { + return this.baseURLField; + } + set { + this.baseURLField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute("SubRepresentation")] + public SubRepresentationType[] SubRepresentation { + get { + return this.subRepresentationField; + } + set { + this.subRepresentationField = value; + } + } + + /// + public SegmentBaseType SegmentBase { + get { + return this.segmentBaseField; + } + set { + this.segmentBaseField = value; + } + } + + /// + public SegmentListType SegmentList { + get { + return this.segmentListField; + } + set { + this.segmentListField = value; + } + } + + /// + public SegmentTemplateType SegmentTemplate { + get { + return this.segmentTemplateField; + } + set { + this.segmentTemplateField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public string id { + get { + return this.idField; + } + set { + this.idField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public uint bandwidth { + get { + return this.bandwidthField; + } + set { + this.bandwidthField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public uint qualityRanking { + get { + return this.qualityRankingField; + } + set { + this.qualityRankingField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool qualityRankingSpecified { + get { + return this.qualityRankingFieldSpecified; + } + set { + this.qualityRankingFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public string[] dependencyId { + get { + return this.dependencyIdField; + } + set { + this.dependencyIdField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public string[] mediaStreamStructureId { + get { + return this.mediaStreamStructureIdField; + } + set { + this.mediaStreamStructureIdField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "0.0.0.0")] + [System.SerializableAttribute()] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.ComponentModel.DesignerCategoryAttribute("code")] + [System.Xml.Serialization.XmlTypeAttribute(Namespace="urn:mpeg:dash:schema:mpd:2011")] + public partial class BaseURLType { + + private string serviceLocationField; + + private string byteRangeField; + + private double availabilityTimeOffsetField; + + private bool availabilityTimeOffsetFieldSpecified; + + private bool availabilityTimeCompleteField; + + private bool availabilityTimeCompleteFieldSpecified; + + private System.Xml.XmlAttribute[] anyAttrField; + + private string valueField; + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public string serviceLocation { + get { + return this.serviceLocationField; + } + set { + this.serviceLocationField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public string byteRange { + get { + return this.byteRangeField; + } + set { + this.byteRangeField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public double availabilityTimeOffset { + get { + return this.availabilityTimeOffsetField; + } + set { + this.availabilityTimeOffsetField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool availabilityTimeOffsetSpecified { + get { + return this.availabilityTimeOffsetFieldSpecified; + } + set { + this.availabilityTimeOffsetFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public bool availabilityTimeComplete { + get { + return this.availabilityTimeCompleteField; + } + set { + this.availabilityTimeCompleteField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool availabilityTimeCompleteSpecified { + get { + return this.availabilityTimeCompleteFieldSpecified; + } + set { + this.availabilityTimeCompleteFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlAnyAttributeAttribute()] + public System.Xml.XmlAttribute[] AnyAttr { + get { + return this.anyAttrField; + } + set { + this.anyAttrField = value; + } + } + + /// + [System.Xml.Serialization.XmlTextAttribute(DataType="anyURI")] + public string Value { + get { + return this.valueField; + } + set { + this.valueField = value; + } + } + } + + /// + [System.Xml.Serialization.XmlIncludeAttribute(typeof(MultipleSegmentBaseType))] + [System.Xml.Serialization.XmlIncludeAttribute(typeof(SegmentTemplateType))] + [System.Xml.Serialization.XmlIncludeAttribute(typeof(SegmentListType))] + [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "0.0.0.0")] + [System.SerializableAttribute()] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.ComponentModel.DesignerCategoryAttribute("code")] + [System.Xml.Serialization.XmlTypeAttribute(Namespace="urn:mpeg:dash:schema:mpd:2011")] + public partial class SegmentBaseType { + + private URLType initializationField; + + private URLType representationIndexField; + + private System.Xml.XmlElement[] anyField; + + private uint timescaleField; + + private bool timescaleFieldSpecified; + + private ulong presentationTimeOffsetField; + + private bool presentationTimeOffsetFieldSpecified; + + private string indexRangeField; + + private bool indexRangeExactField; + + private double availabilityTimeOffsetField; + + private bool availabilityTimeOffsetFieldSpecified; + + private bool availabilityTimeCompleteField; + + private bool availabilityTimeCompleteFieldSpecified; + + private System.Xml.XmlAttribute[] anyAttrField; + + public SegmentBaseType() { + this.indexRangeExactField = false; + } + + /// + public URLType Initialization { + get { + return this.initializationField; + } + set { + this.initializationField = value; + } + } + + /// + public URLType RepresentationIndex { + get { + return this.representationIndexField; + } + set { + this.representationIndexField = value; + } + } + + /// + [System.Xml.Serialization.XmlAnyElementAttribute()] + public System.Xml.XmlElement[] Any { + get { + return this.anyField; + } + set { + this.anyField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public uint timescale { + get { + return this.timescaleField; + } + set { + this.timescaleField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool timescaleSpecified { + get { + return this.timescaleFieldSpecified; + } + set { + this.timescaleFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public ulong presentationTimeOffset { + get { + return this.presentationTimeOffsetField; + } + set { + this.presentationTimeOffsetField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool presentationTimeOffsetSpecified { + get { + return this.presentationTimeOffsetFieldSpecified; + } + set { + this.presentationTimeOffsetFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public string indexRange { + get { + return this.indexRangeField; + } + set { + this.indexRangeField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + [System.ComponentModel.DefaultValueAttribute(false)] + public bool indexRangeExact { + get { + return this.indexRangeExactField; + } + set { + this.indexRangeExactField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public double availabilityTimeOffset { + get { + return this.availabilityTimeOffsetField; + } + set { + this.availabilityTimeOffsetField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool availabilityTimeOffsetSpecified { + get { + return this.availabilityTimeOffsetFieldSpecified; + } + set { + this.availabilityTimeOffsetFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public bool availabilityTimeComplete { + get { + return this.availabilityTimeCompleteField; + } + set { + this.availabilityTimeCompleteField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool availabilityTimeCompleteSpecified { + get { + return this.availabilityTimeCompleteFieldSpecified; + } + set { + this.availabilityTimeCompleteFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlAnyAttributeAttribute()] + public System.Xml.XmlAttribute[] AnyAttr { + get { + return this.anyAttrField; + } + set { + this.anyAttrField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "0.0.0.0")] + [System.SerializableAttribute()] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.ComponentModel.DesignerCategoryAttribute("code")] + [System.Xml.Serialization.XmlTypeAttribute(Namespace="urn:mpeg:dash:schema:mpd:2011")] + public partial class URLType { + + private System.Xml.XmlElement[] anyField; + + private string sourceURLField; + + private string rangeField; + + private System.Xml.XmlAttribute[] anyAttrField; + + /// + [System.Xml.Serialization.XmlAnyElementAttribute()] + public System.Xml.XmlElement[] Any { + get { + return this.anyField; + } + set { + this.anyField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute(DataType="anyURI")] + public string sourceURL { + get { + return this.sourceURLField; + } + set { + this.sourceURLField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public string range { + get { + return this.rangeField; + } + set { + this.rangeField = value; + } + } + + /// + [System.Xml.Serialization.XmlAnyAttributeAttribute()] + public System.Xml.XmlAttribute[] AnyAttr { + get { + return this.anyAttrField; + } + set { + this.anyAttrField = value; + } + } + } + + /// + [System.Xml.Serialization.XmlIncludeAttribute(typeof(SegmentTemplateType))] + [System.Xml.Serialization.XmlIncludeAttribute(typeof(SegmentListType))] + [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "0.0.0.0")] + [System.SerializableAttribute()] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.ComponentModel.DesignerCategoryAttribute("code")] + [System.Xml.Serialization.XmlTypeAttribute(Namespace="urn:mpeg:dash:schema:mpd:2011")] + public partial class MultipleSegmentBaseType : SegmentBaseType { + + private SegmentTimelineType segmentTimelineField; + + private URLType bitstreamSwitchingField; + + private uint durationField; + + private bool durationFieldSpecified; + + private uint startNumberField; + + private bool startNumberFieldSpecified; + + /// + public SegmentTimelineType SegmentTimeline { + get { + return this.segmentTimelineField; + } + set { + this.segmentTimelineField = value; + } + } + + /// + public URLType BitstreamSwitching { + get { + return this.bitstreamSwitchingField; + } + set { + this.bitstreamSwitchingField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public uint duration { + get { + return this.durationField; + } + set { + this.durationField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool durationSpecified { + get { + return this.durationFieldSpecified; + } + set { + this.durationFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public uint startNumber { + get { + return this.startNumberField; + } + set { + this.startNumberField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool startNumberSpecified { + get { + return this.startNumberFieldSpecified; + } + set { + this.startNumberFieldSpecified = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "0.0.0.0")] + [System.SerializableAttribute()] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.ComponentModel.DesignerCategoryAttribute("code")] + [System.Xml.Serialization.XmlTypeAttribute(Namespace="urn:mpeg:dash:schema:mpd:2011")] + public partial class SegmentTimelineType { + + private SegmentTimelineTypeS[] sField; + + private System.Xml.XmlElement[] anyField; + + private System.Xml.XmlAttribute[] anyAttrField; + + /// + [System.Xml.Serialization.XmlElementAttribute("S")] + public SegmentTimelineTypeS[] S { + get { + return this.sField; + } + set { + this.sField = value; + } + } + + /// + [System.Xml.Serialization.XmlAnyElementAttribute()] + public System.Xml.XmlElement[] Any { + get { + return this.anyField; + } + set { + this.anyField = value; + } + } + + /// + [System.Xml.Serialization.XmlAnyAttributeAttribute()] + public System.Xml.XmlAttribute[] AnyAttr { + get { + return this.anyAttrField; + } + set { + this.anyAttrField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "0.0.0.0")] + [System.SerializableAttribute()] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.ComponentModel.DesignerCategoryAttribute("code")] + [System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true, Namespace="urn:mpeg:dash:schema:mpd:2011")] + public partial class SegmentTimelineTypeS { + + private ulong tField; + + private bool tFieldSpecified; + + private ulong nField; + + private bool nFieldSpecified; + + private ulong dField; + + private string rField; + + private System.Xml.XmlAttribute[] anyAttrField; + + public SegmentTimelineTypeS() { + this.rField = "0"; + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public ulong t { + get { + return this.tField; + } + set { + this.tField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool tSpecified { + get { + return this.tFieldSpecified; + } + set { + this.tFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public ulong n { + get { + return this.nField; + } + set { + this.nField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool nSpecified { + get { + return this.nFieldSpecified; + } + set { + this.nFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public ulong d { + get { + return this.dField; + } + set { + this.dField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute(DataType="integer")] + [System.ComponentModel.DefaultValueAttribute("0")] + public string r { + get { + return this.rField; + } + set { + this.rField = value; + } + } + + /// + [System.Xml.Serialization.XmlAnyAttributeAttribute()] + public System.Xml.XmlAttribute[] AnyAttr { + get { + return this.anyAttrField; + } + set { + this.anyAttrField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "0.0.0.0")] + [System.SerializableAttribute()] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.ComponentModel.DesignerCategoryAttribute("code")] + [System.Xml.Serialization.XmlTypeAttribute(Namespace="urn:mpeg:dash:schema:mpd:2011")] + public partial class SegmentTemplateType : MultipleSegmentBaseType { + + private string mediaField; + + private string indexField; + + private string initializationField; + + private string bitstreamSwitchingField; + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public string media { + get { + return this.mediaField; + } + set { + this.mediaField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public string index { + get { + return this.indexField; + } + set { + this.indexField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public string initialization { + get { + return this.initializationField; + } + set { + this.initializationField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public string bitstreamSwitching { + get { + return this.bitstreamSwitchingField; + } + set { + this.bitstreamSwitchingField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "0.0.0.0")] + [System.SerializableAttribute()] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.ComponentModel.DesignerCategoryAttribute("code")] + [System.Xml.Serialization.XmlTypeAttribute(Namespace="urn:mpeg:dash:schema:mpd:2011")] + public partial class SegmentListType : MultipleSegmentBaseType { + + private SegmentURLType[] segmentURLField; + + private string hrefField; + + private actuateType actuateField; + + public SegmentListType() { + this.actuateField = actuateType.onRequest; + } + + /// + [System.Xml.Serialization.XmlElementAttribute("SegmentURL")] + public SegmentURLType[] SegmentURL { + get { + return this.segmentURLField; + } + set { + this.segmentURLField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute(Form=System.Xml.Schema.XmlSchemaForm.Qualified, Namespace="http://www.w3.org/1999/xlink", DataType="anyURI")] + public string href { + get { + return this.hrefField; + } + set { + this.hrefField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute(Form=System.Xml.Schema.XmlSchemaForm.Qualified, Namespace="http://www.w3.org/1999/xlink")] + [System.ComponentModel.DefaultValueAttribute(actuateType.onRequest)] + public actuateType actuate { + get { + return this.actuateField; + } + set { + this.actuateField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "0.0.0.0")] + [System.SerializableAttribute()] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.ComponentModel.DesignerCategoryAttribute("code")] + [System.Xml.Serialization.XmlTypeAttribute(Namespace="urn:mpeg:dash:schema:mpd:2011")] + public partial class SegmentURLType { + + private System.Xml.XmlElement[] anyField; + + private string mediaField; + + private string mediaRangeField; + + private string indexField; + + private string indexRangeField; + + private System.Xml.XmlAttribute[] anyAttrField; + + /// + [System.Xml.Serialization.XmlAnyElementAttribute()] + public System.Xml.XmlElement[] Any { + get { + return this.anyField; + } + set { + this.anyField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute(DataType="anyURI")] + public string media { + get { + return this.mediaField; + } + set { + this.mediaField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public string mediaRange { + get { + return this.mediaRangeField; + } + set { + this.mediaRangeField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute(DataType="anyURI")] + public string index { + get { + return this.indexField; + } + set { + this.indexField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public string indexRange { + get { + return this.indexRangeField; + } + set { + this.indexRangeField = value; + } + } + + /// + [System.Xml.Serialization.XmlAnyAttributeAttribute()] + public System.Xml.XmlAttribute[] AnyAttr { + get { + return this.anyAttrField; + } + set { + this.anyAttrField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "0.0.0.0")] + [System.SerializableAttribute()] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.ComponentModel.DesignerCategoryAttribute("code")] + [System.Xml.Serialization.XmlTypeAttribute(Namespace="urn:mpeg:dash:schema:mpd:2011")] + public partial class AdaptationSetType : RepresentationBaseType { + + private DescriptorType[] accessibilityField; + + private DescriptorType[] roleField; + + private DescriptorType[] ratingField; + + private DescriptorType[] viewpointField; + + private ContentComponentType[] contentComponentField; + + private BaseURLType[] baseURLField; + + private SegmentBaseType segmentBaseField; + + private SegmentListType segmentListField; + + private SegmentTemplateType segmentTemplateField; + + private RepresentationType[] representationField; + + private string hrefField; + + private actuateType actuateField; + + private uint idField; + + private bool idFieldSpecified; + + private uint groupField; + + private bool groupFieldSpecified; + + private string langField; + + private string contentTypeField; + + private string parField; + + private uint minBandwidthField; + + private bool minBandwidthFieldSpecified; + + private uint maxBandwidthField; + + private bool maxBandwidthFieldSpecified; + + private uint minWidthField; + + private bool minWidthFieldSpecified; + + private uint maxWidthField; + + private bool maxWidthFieldSpecified; + + private uint minHeightField; + + private bool minHeightFieldSpecified; + + private uint maxHeightField; + + private bool maxHeightFieldSpecified; + + private string minFrameRateField; + + private string maxFrameRateField; + + private string segmentAlignmentField; + + private string subsegmentAlignmentField; + + private uint subsegmentStartsWithSAPField; + + private bool bitstreamSwitchingField; + + private bool bitstreamSwitchingFieldSpecified; + + public AdaptationSetType() { + this.actuateField = actuateType.onRequest; + this.segmentAlignmentField = "false"; + this.subsegmentAlignmentField = "false"; + this.subsegmentStartsWithSAPField = ((uint)(0)); + } + + /// + [System.Xml.Serialization.XmlElementAttribute("Accessibility")] + public DescriptorType[] Accessibility { + get { + return this.accessibilityField; + } + set { + this.accessibilityField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute("Role")] + public DescriptorType[] Role { + get { + return this.roleField; + } + set { + this.roleField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute("Rating")] + public DescriptorType[] Rating { + get { + return this.ratingField; + } + set { + this.ratingField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute("Viewpoint")] + public DescriptorType[] Viewpoint { + get { + return this.viewpointField; + } + set { + this.viewpointField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute("ContentComponent")] + public ContentComponentType[] ContentComponent { + get { + return this.contentComponentField; + } + set { + this.contentComponentField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute("BaseURL")] + public BaseURLType[] BaseURL { + get { + return this.baseURLField; + } + set { + this.baseURLField = value; + } + } + + /// + public SegmentBaseType SegmentBase { + get { + return this.segmentBaseField; + } + set { + this.segmentBaseField = value; + } + } + + /// + public SegmentListType SegmentList { + get { + return this.segmentListField; + } + set { + this.segmentListField = value; + } + } + + /// + public SegmentTemplateType SegmentTemplate { + get { + return this.segmentTemplateField; + } + set { + this.segmentTemplateField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute("Representation")] + public RepresentationType[] Representation { + get { + return this.representationField; + } + set { + this.representationField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute(Form=System.Xml.Schema.XmlSchemaForm.Qualified, Namespace="http://www.w3.org/1999/xlink", DataType="anyURI")] + public string href { + get { + return this.hrefField; + } + set { + this.hrefField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute(Form=System.Xml.Schema.XmlSchemaForm.Qualified, Namespace="http://www.w3.org/1999/xlink")] + [System.ComponentModel.DefaultValueAttribute(actuateType.onRequest)] + public actuateType actuate { + get { + return this.actuateField; + } + set { + this.actuateField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public uint id { + get { + return this.idField; + } + set { + this.idField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool idSpecified { + get { + return this.idFieldSpecified; + } + set { + this.idFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public uint group { + get { + return this.groupField; + } + set { + this.groupField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool groupSpecified { + get { + return this.groupFieldSpecified; + } + set { + this.groupFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute(DataType="language")] + public string lang { + get { + return this.langField; + } + set { + this.langField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public string contentType { + get { + return this.contentTypeField; + } + set { + this.contentTypeField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public string par { + get { + return this.parField; + } + set { + this.parField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public uint minBandwidth { + get { + return this.minBandwidthField; + } + set { + this.minBandwidthField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool minBandwidthSpecified { + get { + return this.minBandwidthFieldSpecified; + } + set { + this.minBandwidthFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public uint maxBandwidth { + get { + return this.maxBandwidthField; + } + set { + this.maxBandwidthField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool maxBandwidthSpecified { + get { + return this.maxBandwidthFieldSpecified; + } + set { + this.maxBandwidthFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public uint minWidth { + get { + return this.minWidthField; + } + set { + this.minWidthField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool minWidthSpecified { + get { + return this.minWidthFieldSpecified; + } + set { + this.minWidthFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public uint maxWidth { + get { + return this.maxWidthField; + } + set { + this.maxWidthField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool maxWidthSpecified { + get { + return this.maxWidthFieldSpecified; + } + set { + this.maxWidthFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public uint minHeight { + get { + return this.minHeightField; + } + set { + this.minHeightField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool minHeightSpecified { + get { + return this.minHeightFieldSpecified; + } + set { + this.minHeightFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public uint maxHeight { + get { + return this.maxHeightField; + } + set { + this.maxHeightField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool maxHeightSpecified { + get { + return this.maxHeightFieldSpecified; + } + set { + this.maxHeightFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public string minFrameRate { + get { + return this.minFrameRateField; + } + set { + this.minFrameRateField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public string maxFrameRate { + get { + return this.maxFrameRateField; + } + set { + this.maxFrameRateField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + [System.ComponentModel.DefaultValueAttribute("false")] + public string segmentAlignment { + get { + return this.segmentAlignmentField; + } + set { + this.segmentAlignmentField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + [System.ComponentModel.DefaultValueAttribute("false")] + public string subsegmentAlignment { + get { + return this.subsegmentAlignmentField; + } + set { + this.subsegmentAlignmentField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + [System.ComponentModel.DefaultValueAttribute(typeof(uint), "0")] + public uint subsegmentStartsWithSAP { + get { + return this.subsegmentStartsWithSAPField; + } + set { + this.subsegmentStartsWithSAPField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public bool bitstreamSwitching { + get { + return this.bitstreamSwitchingField; + } + set { + this.bitstreamSwitchingField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool bitstreamSwitchingSpecified { + get { + return this.bitstreamSwitchingFieldSpecified; + } + set { + this.bitstreamSwitchingFieldSpecified = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "0.0.0.0")] + [System.SerializableAttribute()] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.ComponentModel.DesignerCategoryAttribute("code")] + [System.Xml.Serialization.XmlTypeAttribute(Namespace="urn:mpeg:dash:schema:mpd:2011")] + public partial class PeriodType { + + private BaseURLType[] baseURLField; + + private SegmentBaseType segmentBaseField; + + private SegmentListType segmentListField; + + private SegmentTemplateType segmentTemplateField; + + private DescriptorType assetIdentifierField; + + private EventStreamType[] eventStreamField; + + private AdaptationSetType[] adaptationSetField; + + private SubsetType[] subsetField; + + private DescriptorType[] supplementalPropertyField; + + private System.Xml.XmlElement[] anyField; + + private string hrefField; + + private actuateType actuateField; + + private string idField; + + private string startField; + + private string durationField; + + private bool bitstreamSwitchingField; + + private System.Xml.XmlAttribute[] anyAttrField; + + public PeriodType() { + this.actuateField = actuateType.onRequest; + this.bitstreamSwitchingField = false; + } + + /// + [System.Xml.Serialization.XmlElementAttribute("BaseURL")] + public BaseURLType[] BaseURL { + get { + return this.baseURLField; + } + set { + this.baseURLField = value; + } + } + + /// + public SegmentBaseType SegmentBase { + get { + return this.segmentBaseField; + } + set { + this.segmentBaseField = value; + } + } + + /// + public SegmentListType SegmentList { + get { + return this.segmentListField; + } + set { + this.segmentListField = value; + } + } + + /// + public SegmentTemplateType SegmentTemplate { + get { + return this.segmentTemplateField; + } + set { + this.segmentTemplateField = value; + } + } + + /// + public DescriptorType AssetIdentifier { + get { + return this.assetIdentifierField; + } + set { + this.assetIdentifierField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute("EventStream")] + public EventStreamType[] EventStream { + get { + return this.eventStreamField; + } + set { + this.eventStreamField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute("AdaptationSet")] + public AdaptationSetType[] AdaptationSet { + get { + return this.adaptationSetField; + } + set { + this.adaptationSetField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute("Subset")] + public SubsetType[] Subset { + get { + return this.subsetField; + } + set { + this.subsetField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute("SupplementalProperty")] + public DescriptorType[] SupplementalProperty { + get { + return this.supplementalPropertyField; + } + set { + this.supplementalPropertyField = value; + } + } + + /// + [System.Xml.Serialization.XmlAnyElementAttribute()] + public System.Xml.XmlElement[] Any { + get { + return this.anyField; + } + set { + this.anyField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute(Form=System.Xml.Schema.XmlSchemaForm.Qualified, Namespace="http://www.w3.org/1999/xlink", DataType="anyURI")] + public string href { + get { + return this.hrefField; + } + set { + this.hrefField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute(Form=System.Xml.Schema.XmlSchemaForm.Qualified, Namespace="http://www.w3.org/1999/xlink")] + [System.ComponentModel.DefaultValueAttribute(actuateType.onRequest)] + public actuateType actuate { + get { + return this.actuateField; + } + set { + this.actuateField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public string id { + get { + return this.idField; + } + set { + this.idField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute(DataType="duration")] + public string start { + get { + return this.startField; + } + set { + this.startField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute(DataType="duration")] + public string duration { + get { + return this.durationField; + } + set { + this.durationField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + [System.ComponentModel.DefaultValueAttribute(false)] + public bool bitstreamSwitching { + get { + return this.bitstreamSwitchingField; + } + set { + this.bitstreamSwitchingField = value; + } + } + + /// + [System.Xml.Serialization.XmlAnyAttributeAttribute()] + public System.Xml.XmlAttribute[] AnyAttr { + get { + return this.anyAttrField; + } + set { + this.anyAttrField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "0.0.0.0")] + [System.SerializableAttribute()] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.ComponentModel.DesignerCategoryAttribute("code")] + [System.Xml.Serialization.XmlTypeAttribute(Namespace="urn:mpeg:dash:schema:mpd:2011")] + public partial class ProgramInformationType { + + private string titleField; + + private string sourceField; + + private string copyrightField; + + private System.Xml.XmlElement[] anyField; + + private string langField; + + private string moreInformationURLField; + + private System.Xml.XmlAttribute[] anyAttrField; + + /// + public string Title { + get { + return this.titleField; + } + set { + this.titleField = value; + } + } + + /// + public string Source { + get { + return this.sourceField; + } + set { + this.sourceField = value; + } + } + + /// + public string Copyright { + get { + return this.copyrightField; + } + set { + this.copyrightField = value; + } + } + + /// + [System.Xml.Serialization.XmlAnyElementAttribute()] + public System.Xml.XmlElement[] Any { + get { + return this.anyField; + } + set { + this.anyField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute(DataType="language")] + public string lang { + get { + return this.langField; + } + set { + this.langField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute(DataType="anyURI")] + public string moreInformationURL { + get { + return this.moreInformationURLField; + } + set { + this.moreInformationURLField = value; + } + } + + /// + [System.Xml.Serialization.XmlAnyAttributeAttribute()] + public System.Xml.XmlAttribute[] AnyAttr { + get { + return this.anyAttrField; + } + set { + this.anyAttrField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "0.0.0.0")] + [System.SerializableAttribute()] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.ComponentModel.DesignerCategoryAttribute("code")] + [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://www.w3.org/1999/xlink")] + [System.Xml.Serialization.XmlRootAttribute("resource", Namespace="http://www.w3.org/1999/xlink", IsNullable=false)] + public partial class resourceType { + + private System.Xml.XmlNode[] anyField; + + private typeType typeField; + + private string roleField; + + private string titleField; + + private string labelField; + + public resourceType() { + this.typeField = typeType.resource; + } + + /// + [System.Xml.Serialization.XmlTextAttribute()] + [System.Xml.Serialization.XmlAnyElementAttribute()] + public System.Xml.XmlNode[] Any { + get { + return this.anyField; + } + set { + this.anyField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute(Form=System.Xml.Schema.XmlSchemaForm.Qualified)] + public typeType type { + get { + return this.typeField; + } + set { + this.typeField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute(Form=System.Xml.Schema.XmlSchemaForm.Qualified, DataType="anyURI")] + public string role { + get { + return this.roleField; + } + set { + this.roleField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute(Form=System.Xml.Schema.XmlSchemaForm.Qualified)] + public string title { + get { + return this.titleField; + } + set { + this.titleField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute(Form=System.Xml.Schema.XmlSchemaForm.Qualified, DataType="NCName")] + public string label { + get { + return this.labelField; + } + set { + this.labelField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "0.0.0.0")] + [System.SerializableAttribute()] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.ComponentModel.DesignerCategoryAttribute("code")] + [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://www.w3.org/1999/xlink")] + [System.Xml.Serialization.XmlRootAttribute("locator", Namespace="http://www.w3.org/1999/xlink", IsNullable=false)] + public partial class locatorType { + + private titleEltType[] titleField; + + private typeType typeField; + + private string hrefField; + + private string roleField; + + private string title1Field; + + private string labelField; + + public locatorType() { + this.typeField = typeType.locator; + } + + /// + [System.Xml.Serialization.XmlElementAttribute("title")] + public titleEltType[] title { + get { + return this.titleField; + } + set { + this.titleField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute(Form=System.Xml.Schema.XmlSchemaForm.Qualified)] + public typeType type { + get { + return this.typeField; + } + set { + this.typeField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute(Form=System.Xml.Schema.XmlSchemaForm.Qualified, DataType="anyURI")] + public string href { + get { + return this.hrefField; + } + set { + this.hrefField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute(Form=System.Xml.Schema.XmlSchemaForm.Qualified, DataType="anyURI")] + public string role { + get { + return this.roleField; + } + set { + this.roleField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute("title", Form=System.Xml.Schema.XmlSchemaForm.Qualified)] + public string title1 { + get { + return this.title1Field; + } + set { + this.title1Field = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute(Form=System.Xml.Schema.XmlSchemaForm.Qualified, DataType="NCName")] + public string label { + get { + return this.labelField; + } + set { + this.labelField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "0.0.0.0")] + [System.SerializableAttribute()] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.ComponentModel.DesignerCategoryAttribute("code")] + [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://www.w3.org/1999/xlink")] + [System.Xml.Serialization.XmlRootAttribute("arc", Namespace="http://www.w3.org/1999/xlink", IsNullable=false)] + public partial class arcType { + + private titleEltType[] titleField; + + private typeType typeField; + + private string arcroleField; + + private string title1Field; + + private showType showField; + + private bool showFieldSpecified; + + private actuateType actuateField; + + private bool actuateFieldSpecified; + + private string fromField; + + private string toField; + + public arcType() { + this.typeField = typeType.arc; + } + + /// + [System.Xml.Serialization.XmlElementAttribute("title")] + public titleEltType[] title { + get { + return this.titleField; + } + set { + this.titleField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute(Form=System.Xml.Schema.XmlSchemaForm.Qualified)] + public typeType type { + get { + return this.typeField; + } + set { + this.typeField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute(Form=System.Xml.Schema.XmlSchemaForm.Qualified, DataType="anyURI")] + public string arcrole { + get { + return this.arcroleField; + } + set { + this.arcroleField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute("title", Form=System.Xml.Schema.XmlSchemaForm.Qualified)] + public string title1 { + get { + return this.title1Field; + } + set { + this.title1Field = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute(Form=System.Xml.Schema.XmlSchemaForm.Qualified)] + public showType show { + get { + return this.showField; + } + set { + this.showField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool showSpecified { + get { + return this.showFieldSpecified; + } + set { + this.showFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute(Form=System.Xml.Schema.XmlSchemaForm.Qualified)] + public actuateType actuate { + get { + return this.actuateField; + } + set { + this.actuateField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool actuateSpecified { + get { + return this.actuateFieldSpecified; + } + set { + this.actuateFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute(Form=System.Xml.Schema.XmlSchemaForm.Qualified, DataType="NCName")] + public string from { + get { + return this.fromField; + } + set { + this.fromField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute(Form=System.Xml.Schema.XmlSchemaForm.Qualified, DataType="NCName")] + public string to { + get { + return this.toField; + } + set { + this.toField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "0.0.0.0")] + [System.SerializableAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://www.w3.org/1999/xlink")] + public enum showType { + + /// + @new, + + /// + replace, + + /// + embed, + + /// + other, + + /// + none, + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "0.0.0.0")] + [System.SerializableAttribute()] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.ComponentModel.DesignerCategoryAttribute("code")] + [System.Xml.Serialization.XmlTypeAttribute(Namespace="urn:mpeg:dash:schema:mpd:2011")] + [System.Xml.Serialization.XmlRootAttribute("MPD", Namespace="urn:mpeg:dash:schema:mpd:2011", IsNullable=false)] + public partial class MPDtype { + + private ProgramInformationType[] programInformationField; + + private BaseURLType[] baseURLField; + + private string[] locationField; + + private PeriodType[] periodField; + + private MetricsType[] metricsField; + + private DescriptorType[] essentialPropertyField; + + private DescriptorType[] supplementalPropertyField; + + private DescriptorType[] uTCTimingField; + + private System.Xml.XmlElement[] anyField; + + private string idField; + + private string profilesField; + + private PresentationType typeField; + + private System.DateTime availabilityStartTimeField; + + private bool availabilityStartTimeFieldSpecified; + + private System.DateTime availabilityEndTimeField; + + private bool availabilityEndTimeFieldSpecified; + + private System.DateTime publishTimeField; + + private bool publishTimeFieldSpecified; + + private string mediaPresentationDurationField; + + private string minimumUpdatePeriodField; + + private string minBufferTimeField; + + private string timeShiftBufferDepthField; + + private string suggestedPresentationDelayField; + + private string maxSegmentDurationField; + + private string maxSubsegmentDurationField; + + private System.Xml.XmlAttribute[] anyAttrField; + + public MPDtype() { + this.typeField = PresentationType.@static; + } + + /// + [System.Xml.Serialization.XmlElementAttribute("ProgramInformation")] + public ProgramInformationType[] ProgramInformation { + get { + return this.programInformationField; + } + set { + this.programInformationField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute("BaseURL")] + public BaseURLType[] BaseURL { + get { + return this.baseURLField; + } + set { + this.baseURLField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute("Location", DataType="anyURI")] + public string[] Location { + get { + return this.locationField; + } + set { + this.locationField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute("Period")] + public PeriodType[] Period { + get { + return this.periodField; + } + set { + this.periodField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute("Metrics")] + public MetricsType[] Metrics { + get { + return this.metricsField; + } + set { + this.metricsField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute("EssentialProperty")] + public DescriptorType[] EssentialProperty { + get { + return this.essentialPropertyField; + } + set { + this.essentialPropertyField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute("SupplementalProperty")] + public DescriptorType[] SupplementalProperty { + get { + return this.supplementalPropertyField; + } + set { + this.supplementalPropertyField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute("UTCTiming")] + public DescriptorType[] UTCTiming { + get { + return this.uTCTimingField; + } + set { + this.uTCTimingField = value; + } + } + + /// + [System.Xml.Serialization.XmlAnyElementAttribute()] + public System.Xml.XmlElement[] Any { + get { + return this.anyField; + } + set { + this.anyField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public string id { + get { + return this.idField; + } + set { + this.idField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public string profiles { + get { + return this.profilesField; + } + set { + this.profilesField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + [System.ComponentModel.DefaultValueAttribute(PresentationType.@static)] + public PresentationType type { + get { + return this.typeField; + } + set { + this.typeField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public System.DateTime availabilityStartTime { + get { + return this.availabilityStartTimeField; + } + set { + this.availabilityStartTimeField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool availabilityStartTimeSpecified { + get { + return this.availabilityStartTimeFieldSpecified; + } + set { + this.availabilityStartTimeFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public System.DateTime availabilityEndTime { + get { + return this.availabilityEndTimeField; + } + set { + this.availabilityEndTimeField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool availabilityEndTimeSpecified { + get { + return this.availabilityEndTimeFieldSpecified; + } + set { + this.availabilityEndTimeFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public System.DateTime publishTime { + get { + return this.publishTimeField; + } + set { + this.publishTimeField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool publishTimeSpecified { + get { + return this.publishTimeFieldSpecified; + } + set { + this.publishTimeFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute(DataType="duration")] + public string mediaPresentationDuration { + get { + return this.mediaPresentationDurationField; + } + set { + this.mediaPresentationDurationField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute(DataType="duration")] + public string minimumUpdatePeriod { + get { + return this.minimumUpdatePeriodField; + } + set { + this.minimumUpdatePeriodField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute(DataType="duration")] + public string minBufferTime { + get { + return this.minBufferTimeField; + } + set { + this.minBufferTimeField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute(DataType="duration")] + public string timeShiftBufferDepth { + get { + return this.timeShiftBufferDepthField; + } + set { + this.timeShiftBufferDepthField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute(DataType="duration")] + public string suggestedPresentationDelay { + get { + return this.suggestedPresentationDelayField; + } + set { + this.suggestedPresentationDelayField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute(DataType="duration")] + public string maxSegmentDuration { + get { + return this.maxSegmentDurationField; + } + set { + this.maxSegmentDurationField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute(DataType="duration")] + public string maxSubsegmentDuration { + get { + return this.maxSubsegmentDurationField; + } + set { + this.maxSubsegmentDurationField = value; + } + } + + /// + [System.Xml.Serialization.XmlAnyAttributeAttribute()] + public System.Xml.XmlAttribute[] AnyAttr { + get { + return this.anyAttrField; + } + set { + this.anyAttrField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "0.0.0.0")] + [System.SerializableAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace="urn:mpeg:dash:schema:mpd:2011")] + public enum PresentationType { + + /// + @static, + + /// + dynamic, + } +} diff --git a/skyscraper8/MpegDash/Schema/envelope.cs b/skyscraper8/MpegDash/Schema/envelope.cs new file mode 100644 index 0000000..28049a0 --- /dev/null +++ b/skyscraper8/MpegDash/Schema/envelope.cs @@ -0,0 +1,177 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.42000 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +// +//This source code was auto-generated by MonoXSD +// +namespace skyscraper8.MpegDash.Schema { + + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "0.0.0.0")] + [System.SerializableAttribute()] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.ComponentModel.DesignerCategoryAttribute("code")] + [System.Xml.Serialization.XmlTypeAttribute(Namespace="urn:3gpp:metadata:2005:MBMS:envelope")] + [System.Xml.Serialization.XmlRootAttribute("metadataEnvelope", Namespace="urn:3gpp:metadata:2005:MBMS:envelope", IsNullable=false)] + public partial class metadataEnvelopeType { + + private metadataEnvelopeItemType[] itemField; + + /// + [System.Xml.Serialization.XmlElementAttribute("item")] + public metadataEnvelopeItemType[] item { + get { + return this.itemField; + } + set { + this.itemField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "0.0.0.0")] + [System.SerializableAttribute()] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.ComponentModel.DesignerCategoryAttribute("code")] + [System.Xml.Serialization.XmlTypeAttribute(Namespace="urn:3gpp:metadata:2005:MBMS:envelope")] + public partial class metadataEnvelopeItemType { + + private string metadataFragmentField; + + private System.Xml.XmlElement[] anyField; + + private string metadataURIField; + + private string versionField; + + private System.DateTime validFromField; + + private bool validFromFieldSpecified; + + private System.DateTime validUntilField; + + private bool validUntilFieldSpecified; + + private string contentTypeField; + + private System.Xml.XmlAttribute[] anyAttrField; + + /// + public string metadataFragment { + get { + return this.metadataFragmentField; + } + set { + this.metadataFragmentField = value; + } + } + + /// + [System.Xml.Serialization.XmlAnyElementAttribute()] + public System.Xml.XmlElement[] Any { + get { + return this.anyField; + } + set { + this.anyField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute(DataType="anyURI")] + public string metadataURI { + get { + return this.metadataURIField; + } + set { + this.metadataURIField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute(DataType="positiveInteger")] + public string version { + get { + return this.versionField; + } + set { + this.versionField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public System.DateTime validFrom { + get { + return this.validFromField; + } + set { + this.validFromField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool validFromSpecified { + get { + return this.validFromFieldSpecified; + } + set { + this.validFromFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public System.DateTime validUntil { + get { + return this.validUntilField; + } + set { + this.validUntilField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool validUntilSpecified { + get { + return this.validUntilFieldSpecified; + } + set { + this.validUntilFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public string contentType { + get { + return this.contentTypeField; + } + set { + this.contentTypeField = value; + } + } + + /// + [System.Xml.Serialization.XmlAnyAttributeAttribute()] + public System.Xml.XmlAttribute[] AnyAttr { + get { + return this.anyAttrField; + } + set { + this.anyAttrField = value; + } + } + } +} diff --git a/skyscraper8/Skyscraper/Scraper/SkyscraperContext.cs b/skyscraper8/Skyscraper/Scraper/SkyscraperContext.cs index dbacdbb..01d8921 100644 --- a/skyscraper8/Skyscraper/Scraper/SkyscraperContext.cs +++ b/skyscraper8/Skyscraper/Scraper/SkyscraperContext.cs @@ -3573,5 +3573,17 @@ namespace skyscraper5.Skyscraper.Scraper } } } + + public void OnAtsc3FileDelivery(IPEndPoint destination, ulong tsi, ulong toi, FluteListener targetListener, + GuessedFluteDataType guessedFluteDataType, string outFileName) + { + if (!ObjectStorage.TestForAtsc3Segment(destination, outFileName)) + { + LogEvent(SkyscraperContextEvent.Atsc3Segment, String.Format("{0}/{1}", destination, outFileName)); + Stream stream = targetListener.ToStream(); + ObjectStorage.StoreAtsc3Segment(destination, outFileName, stream); + stream.Dispose(); + } + } } } diff --git a/skyscraper8/Skyscraper/Scraper/SkyscraperContextEvent.cs b/skyscraper8/Skyscraper/Scraper/SkyscraperContextEvent.cs index 6b0dcf1..123d6e0 100644 --- a/skyscraper8/Skyscraper/Scraper/SkyscraperContextEvent.cs +++ b/skyscraper8/Skyscraper/Scraper/SkyscraperContextEvent.cs @@ -106,6 +106,7 @@ DvbSisTimestamp, DvbSisDaughterSiteAdapterConfiguration, Atsc3Detected, - Atsc3ServiceFound + Atsc3ServiceFound, + Atsc3Segment } } diff --git a/skyscraper8/Skyscraper/Scraper/Storage/Filesystem/FilesystemStorage.cs b/skyscraper8/Skyscraper/Scraper/Storage/Filesystem/FilesystemStorage.cs index 6dd0398..50ec7ab 100644 --- a/skyscraper8/Skyscraper/Scraper/Storage/Filesystem/FilesystemStorage.cs +++ b/skyscraper8/Skyscraper/Scraper/Storage/Filesystem/FilesystemStorage.cs @@ -1823,5 +1823,28 @@ namespace skyscraper5.Skyscraper.Scraper.Storage.Filesystem value.Dispose(); } + + public bool TestForAtsc3Segment(IPEndPoint destination, string outFileName) + { + string outFilename = Path.Combine(rootDirectory.FullName, "atsc3", destination.ToString().SanitizeFileName(), outFileName); + FileInfo fi = new FileInfo(outFilename); + return fi.Exists; + } + + public void StoreAtsc3Segment(IPEndPoint destination, string outFileName, Stream stream) + { + string outFilename = Path.Combine(rootDirectory.FullName, "atsc3", destination.ToString().SanitizeFileName(), outFileName); + FileInfo fi = new FileInfo(outFilename); + fi.Directory.EnsureExists(); + if (stream.CanSeek) + stream.Position = 0; + + FileStream fileStream = fi.OpenWrite(); + stream.CopyTo(fileStream); + fileStream.Flush(); + fileStream.Close(); + + stream.Dispose(); + } } } diff --git a/skyscraper8/Skyscraper/Scraper/Storage/NullObjectStorage.cs b/skyscraper8/Skyscraper/Scraper/Storage/NullObjectStorage.cs index efbe5a9..3331030 100644 --- a/skyscraper8/Skyscraper/Scraper/Storage/NullObjectStorage.cs +++ b/skyscraper8/Skyscraper/Scraper/Storage/NullObjectStorage.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.Linq; +using System.Net; using System.Text; using System.Threading.Tasks; using skyscraper5.Dvb.DataBroadcasting.SkyscraperVfs; @@ -178,5 +179,15 @@ namespace skyscraper8.Skyscraper.Scraper.Storage { throw new NotImplementedException(); } - } + + public bool TestForAtsc3Segment(IPEndPoint destination, string outFileName) + { + throw new NotImplementedException(); + } + + public void StoreAtsc3Segment(IPEndPoint destination, string outFileName, Stream stream) + { + throw new NotImplementedException(); + } + } } diff --git a/skyscraper8/Skyscraper/Scraper/Storage/ObjectStorage.cs b/skyscraper8/Skyscraper/Scraper/Storage/ObjectStorage.cs index 2e40f51..1b8275f 100644 --- a/skyscraper8/Skyscraper/Scraper/Storage/ObjectStorage.cs +++ b/skyscraper8/Skyscraper/Scraper/Storage/ObjectStorage.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.IO; using System.Linq; +using System.Net; using System.Text; using System.Threading.Tasks; using skyscraper5.Dvb.DataBroadcasting.SkyscraperVfs; @@ -47,5 +48,7 @@ namespace skyscraper8.Skyscraper.Scraper.Storage byte[] DvbNipGetFile(string path); bool TestForWneStory(uint sessionId, string filename); void StoreWneStory(uint sessionId, string filename, Stream value); + bool TestForAtsc3Segment(IPEndPoint destination, string outFileName); + void StoreAtsc3Segment(IPEndPoint destination, string outFileName, Stream stream); } } diff --git a/skyscraper8/Skyscraper/Scraper/Storage/Tar/TarObjectStorage.cs b/skyscraper8/Skyscraper/Scraper/Storage/Tar/TarObjectStorage.cs index 3f32ca4..93b7a1f 100644 --- a/skyscraper8/Skyscraper/Scraper/Storage/Tar/TarObjectStorage.cs +++ b/skyscraper8/Skyscraper/Scraper/Storage/Tar/TarObjectStorage.cs @@ -10,6 +10,7 @@ using skyscraper8.Skyscraper.Drawing; using System; using System.Collections.Generic; using System.Linq; +using System.Net; using System.Text; using System.Text.RegularExpressions; using System.Threading.Tasks; @@ -246,5 +247,15 @@ namespace skyscraper8.Skyscraper.Scraper.Storage.Tar { throw new NotImplementedException(); } - } + + public bool TestForAtsc3Segment(IPEndPoint destination, string outFileName) + { + throw new NotImplementedException(); + } + + public void StoreAtsc3Segment(IPEndPoint destination, string outFileName, Stream stream) + { + throw new NotImplementedException(); + } + } }