diff --git a/Documentation/FLUTE-XSD/AssociatedDeliveryProceduresDescription.xsd b/Documentation/FLUTE-XSD/AssociatedDeliveryProceduresDescription.xsd
new file mode 100644
index 0000000..d4c25bf
--- /dev/null
+++ b/Documentation/FLUTE-XSD/AssociatedDeliveryProceduresDescription.xsd
@@ -0,0 +1,70 @@
+
+
+
+ MBMS Associated Delivery Procedures Description schema
+ 3GPP TS 26.346 clause 9.5.1
+ Copyright © 2005, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Documentation/FLUTE-XSD/FLUTE-FDT.xsd b/Documentation/FLUTE-XSD/FLUTE-FDT.xsd
new file mode 100644
index 0000000..dbf6861
--- /dev/null
+++ b/Documentation/FLUTE-XSD/FLUTE-FDT.xsd
@@ -0,0 +1,90 @@
+
+
+
+ Consolidated MBMS FLUTE File Delivery Table schema
+ 3GPP TS 26.346 clause 7.2.10.1
+ Copyright © 2005, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Documentation/FLUTE-XSD/FLUTE-FDT_Extensions_Rel-11.xsd b/Documentation/FLUTE-XSD/FLUTE-FDT_Extensions_Rel-11.xsd
new file mode 100644
index 0000000..13a7a03
--- /dev/null
+++ b/Documentation/FLUTE-XSD/FLUTE-FDT_Extensions_Rel-11.xsd
@@ -0,0 +1,25 @@
+
+
+
+ MBMS FLUTE FDT schema extensions (Release 11)
+ 3GPP TS 26.346 clause 7.2.10.2
+ Copyright © 2012, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Documentation/FLUTE-XSD/FLUTE-FDT_Extensions_Rel-13.xsd b/Documentation/FLUTE-XSD/FLUTE-FDT_Extensions_Rel-13.xsd
new file mode 100644
index 0000000..3b85cda
--- /dev/null
+++ b/Documentation/FLUTE-XSD/FLUTE-FDT_Extensions_Rel-13.xsd
@@ -0,0 +1,16 @@
+
+
+
+ MBMS FLUTE FDT schema extensions (Release 13)
+ 3GPP TS 26.346 clause 7.2.10.2
+ Copyright © 2015, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved.
+
+
+
+
+
+
+
diff --git a/Documentation/FLUTE-XSD/FLUTE-FDT_Extensions_Rel-6.xsd b/Documentation/FLUTE-XSD/FLUTE-FDT_Extensions_Rel-6.xsd
new file mode 100644
index 0000000..94c5a56
--- /dev/null
+++ b/Documentation/FLUTE-XSD/FLUTE-FDT_Extensions_Rel-6.xsd
@@ -0,0 +1,27 @@
+
+
+
+ MBMS FLUTE FDT schema extensions (Release 6)
+ 3GPP TS 26.346 clause 7.2.10.2
+ Copyright © 2005, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Documentation/FLUTE-XSD/FLUTE-FDT_Extensions_Rel-7.xsd b/Documentation/FLUTE-XSD/FLUTE-FDT_Extensions_Rel-7.xsd
new file mode 100644
index 0000000..17d7e7f
--- /dev/null
+++ b/Documentation/FLUTE-XSD/FLUTE-FDT_Extensions_Rel-7.xsd
@@ -0,0 +1,22 @@
+
+
+
+ MBMS FLUTE FDT schema extensions (Release 7)
+ 3GPP TS 26.346 clause 7.2.10.2
+ Copyright © 2007, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved.
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Documentation/FLUTE-XSD/FLUTE-FDT_Extensions_Rel-8.xsd b/Documentation/FLUTE-XSD/FLUTE-FDT_Extensions_Rel-8.xsd
new file mode 100644
index 0000000..1ef06aa
--- /dev/null
+++ b/Documentation/FLUTE-XSD/FLUTE-FDT_Extensions_Rel-8.xsd
@@ -0,0 +1,13 @@
+
+
+
+ MBMS FLUTE FDT schema extensions (Release 8)
+ 3GPP TS 26.346 clause 7.2.10.2
+ Copyright © 2008, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved.
+
+
+
+
diff --git a/Documentation/FLUTE-XSD/FLUTE-FDT_Extensions_Rel-9.xsd b/Documentation/FLUTE-XSD/FLUTE-FDT_Extensions_Rel-9.xsd
new file mode 100644
index 0000000..cb23f4c
--- /dev/null
+++ b/Documentation/FLUTE-XSD/FLUTE-FDT_Extensions_Rel-9.xsd
@@ -0,0 +1,13 @@
+
+
+
+ MBMS FLUTE FDT schema extensions (Release 9)
+ 3GPP TS 26.346 clause 7.2.10.2
+ Copyright © 2009, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved.
+
+
+
+
\ No newline at end of file
diff --git a/Documentation/FLUTE-XSD/SchemaVersion.xsd b/Documentation/FLUTE-XSD/SchemaVersion.xsd
new file mode 100644
index 0000000..4852f64
--- /dev/null
+++ b/Documentation/FLUTE-XSD/SchemaVersion.xsd
@@ -0,0 +1,14 @@
+
+
+
+ MBMS Version and Delimiter schema
+ 3GPP TS 26.346 clause J.2
+ Copyright © 2009, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved.
+
+
+
+
+
diff --git a/Documentation/FLUTE-XSD/make-xsd.bat b/Documentation/FLUTE-XSD/make-xsd.bat
new file mode 100644
index 0000000..e33aa4b
--- /dev/null
+++ b/Documentation/FLUTE-XSD/make-xsd.bat
@@ -0,0 +1 @@
+"C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.8.1 Tools\x64\xsd.exe" /classes FLUTE-FDT.xsd FLUTE-FDT_Extensions_Rel-7.xsd SchemaVersion.xsd FLUTE-FDT_Extensions_Rel-11.xsd FLUTE-FDT_Extensions_Rel-6.xsd FLUTE-FDT_Extensions_Rel-9.xsd FLUTE-FDT_Extensions_Rel-13.xsd FLUTE-FDT_Extensions_Rel-8.xsd /out:C:\Temp\ /namespace:skyscraper8.Ietf.FLUTE
\ No newline at end of file
diff --git a/Documentation/MulticastGatewayConfiguration-XSD/extensibility_2024-04-24.xsd b/Documentation/MulticastGatewayConfiguration-XSD/extensibility_2024-04-24.xsd
new file mode 100644
index 0000000..69038a6
--- /dev/null
+++ b/Documentation/MulticastGatewayConfiguration-XSD/extensibility_2024-04-24.xsd
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
diff --git a/Documentation/MulticastGatewayConfiguration-XSD/make-classes.bat b/Documentation/MulticastGatewayConfiguration-XSD/make-classes.bat
new file mode 100644
index 0000000..3c6b287
--- /dev/null
+++ b/Documentation/MulticastGatewayConfiguration-XSD/make-classes.bat
@@ -0,0 +1 @@
+"C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.8.1 Tools\x64\xsd.exe" /classes multicast-session-configuration_phase-2_2024-05-28.xsd mpeg7_subset.xsd extensibility_2024-04-24.xsd /namespace:skyscraper8.DvbNip
\ No newline at end of file
diff --git a/Documentation/MulticastGatewayConfiguration-XSD/mpeg7_subset.xsd b/Documentation/MulticastGatewayConfiguration-XSD/mpeg7_subset.xsd
new file mode 100644
index 0000000..7bb1bf6
--- /dev/null
+++ b/Documentation/MulticastGatewayConfiguration-XSD/mpeg7_subset.xsd
@@ -0,0 +1,158 @@
+
+
+
+
+ This schema is composed of a subset of MPEG-7 tools in the proposed MPEG-7 User Description (UD) Profile that are used by the DVB BlueBook A176 Multicast session configuration schema. Global attribute groups are defined first, followed by simple types and then complex types (ordered alphabetically within each category).
+
+
+
+
+ MODULE 1A. GLOBAL ATTRIBUTE GROUPS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MODULE 1B. SIMPLE TYPES
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Documentation/MulticastGatewayConfiguration-XSD/multicast-session-configuration_phase-2_2024-05-28.xsd b/Documentation/MulticastGatewayConfiguration-XSD/multicast-session-configuration_phase-2_2024-05-28.xsd
new file mode 100644
index 0000000..2def0a2
--- /dev/null
+++ b/Documentation/MulticastGatewayConfiguration-XSD/multicast-session-configuration_phase-2_2024-05-28.xsd
@@ -0,0 +1,661 @@
+
+
+
+
+
+
+
+ A fraction expressed as a decimal between 0.0 and 1.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ TODO: Restrict this with a regular expression that matches IPv4 and IPv6 addresses in their respective textual notations.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A digest of the multicast transport object is present in the metadata describing it, enabling its integrity to be verified by the Multicast gateway.
+
+
+
+
+ A digest of the multicast transport object is present in the metadata describing it, enabling its integrity to be verified by the Multicast gateway. A digital signature is also provided, enabling the authenticity of (key fields within) the multicast transport object metadata to be verified by the Multicast gateway.
+
+
+
+
+
+
+
+
+
+
+
+
+ The period of time after receiving this document that it may no longer be valid.
+
+
+
+
+ The absolute point in time after which this document may no longer be valid.
+
+
+
+
+
+
+
+
+ A reference to a service identifier in this multicast session configuration.
+
+
+
+
+ A reference to a transport session identifier within the scope of the indicated multicast session.
+
+
+
+
+
+
+
+ The maximum period of time between transmissions of a multicast transport object as part of a carousel.
+
+
+
+
+
+
+
+ The maximum period of time between revalidation of a resource with its origin server.
+
+
+
+
+
+
+
+ Expression of preference to the Multicast server that compression is desired by the Provisioning function.
+
+
+
+
+
+
+
+ The combined size of all transport objects described by this carousel, excluding any associated metadata and transport protocol overhead.
+
+
+
+
+ The combined size of all transport objects described by this carousel once any content encoding (such as compression) has been removed from the objects, excluding any associated metadata and transport protocol overhead.
+
+
+
+
+
+
+
+
+ A cross-reference to a PresentationManifestLocator element in the parent MulticastSession with a manifestId of the same value.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Uniquely identifying the stream of packets in the multicast group that corresponds to this multicast transport session, e.g. the LCT Channel identifier. (Some multicast media transport protocols do not require this additional demultiplexing identifier.)
+
+
+
+
+ Designated extension point.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A set of parameters describing an Application Level Forward Error Correction configuration.
+
+
+
+
+ A term identifier from ForwardErrorCorrectionSchemeCS identifying the AL-FEC scheme in use.
+
+
+
+
+ The percentage AL-FEC overhead for the repair stream described by this set of Forward Error Correction parameters.
+
+
+
+
+ The endpoint address to which AL-FEC repair packets are transmitted. May be omitted in cases where AL-FEC is transmitted in band to the same endpoint address as the enclosing multicast transport session.
+
+
+
+
+ Designated extension point.
+
+
+
+
+
+
+
+
+ A URI with an associated weighting attribute.
+
+
+
+
+
+
+
+
+
+
+ An element describing the parameters to be used by a Multicast gateway when performing unicast repair. One or more base paths may be specified here, each with an optional weighting. If the weighting is omitted, all base paths are assumed to have an equal weighting of 1.0.
+
+
+
+
+
+ Designated extension point.
+
+
+
+
+
+ The time (expressed in milliseconds) that a Multicast gateway should wait for a packet relating to a particular multicast transport object before it can assume that the object transmission is over, and commence object repair using Forward Error Correction or unicast patching procedures.
+
+
+
+
+ The minimum number of milliseconds that the Multicast gateway shall back off after the mutlicast transport object timeout before attempting a unicast repair.
+
+
+
+
+ An additional period that the Multicast gateway shall wait after the fixed back-off period before attempting a unicast repair. It shall be a randomly selected number of milliseconds between zero and the value specified in this attribute. The Multicast gateway shall choose a different random back-off period for each multicast transport object.
+
+
+
+
+ The base path of all multicast transport objects conveyed in this multicast transport session. This prefix string is substituated by the Multicast gateway with a unicast repair base path when performing unicast repair.
+
+
+
+
+
+
+
+ A URL and accompanying MIME content type.
+
+
+
+
+
+ The MIME content type of the resource pointed to by the content of this element.
+
+
+
+
+
+
+
+
+
+
+
+ The proportion of Multicast gateways that should send reports to the specified endpoint. At the start of a multicast transport session, each Multicast gateway shall randomly decide whether or not to send reports based on this value.
+
+
+
+
+ The period of time for the Multicast gateway to wait between sending reports to the specified endpoint.
+
+
+
+
+ An additional period that the Multicast gateway shall delay when sending reports to the specified endpoint. It shall be a randomly selected number of milliseconds between zero and the value specified in this attribute. The Multicast gateway shall choose a different random delay for each report it sends.
+
+
+
+
+ Controls whether Playback session running events are included in reports.
+
+
+
+
+
+
+
+
+
+
+ Parameters used by the Multicast gateway to report statistics about the session.
+
+
+
+
+
+
+
+
+ The parameters for carouselling a resource related to a media presentation.
+
+
+
+
+
+
+
+
+ The parameters for carouselling a resource related to a media presentation with reference to an multicast transport session described in a different document.
+
+
+
+
+
+
+
+
+
+
+ A URL and the parameters for carouselling it.
+
+
+
+
+
+ The target acquisition period from the carousel for this resource.
+
+
+
+
+ The revalidation period with the origin server for this resource.
+
+
+
+
+ Compression of this resource by the Multicast server is desired.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Designated extension point.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Designated extension point.
+
+
+
+
+
+
+
+
+
+ Definition of a macro expansion.
+
+
+
+
+
+ The macro key to be expanded.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A controlled term URI indicating the class of information conveyed by a multicast transport session.
+
+
+
+
+ Controls whether the Multicast server adds integrity and/or authenticity metadata to multicast transport objects. Informs the Multicast gateway whether this metadata should be present and verified.
+
+
+
+
+
+
+
+
+
+
+ Specifying a carousel of ancillary multicast transport objects to be additionally conveyed by this multicast gateway configuration transport session.
+
+
+
+
+ Defining a macro to be expanded by the Multicast server when generating a multicast gateway configuration for inclusion in this multicast gateway configuration transport session.
+
+
+
+
+ Designated extension point.
+
+
+
+
+
+ A list of globally unique identifiers that refers to either this multicast gateway configuration transport session or the content carried by it.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A means of referencing a single component of the linear service.
+
+
+
+
+ Specifying a carousel of ancillary multicast transport objects to be additionally conveyed by this multicast transport session.
+
+
+
+
+ Designated extension point.
+
+
+
+
+
+
+
+
+ Used by the Multicast server to determine whether to pull content for this service component, or expect it to be pushed.
+
+
+
+
+ Used by the Multicast server to determine the multicast transmission mode. In "resource" mode, the Multicast server waits until it has acquired a complete resource before attempting to transmit it as a multicast transport object. In "chunked" mode, the Multicast server maps a single acquired chunk to a different multicast transport object.
+
+
+
+
+ The time (expressed in milliseconds) that a Multicast gateway should wait for any packet on this multicast transport session before it can assume that the session is over and unsubscribe from the corresponding multicast group. If this attribute is omitted, reception of the multicast session never times out due to a lack of packets, but is still bounded by the transport session duration.
+
+
+
+
+
+
+
+
+
+ All the multicast transport sessions required to deliver a single linear service according to operational needs.
+
+
+
+
+ The URL of a presentation manifest hosted on an origin server accessible to the system receiving this multicast session configuration.
+
+
+
+
+
+
+ An opaque identifier, unique within the lexical scope of this instance document, that identifies this XML element and allows it to be cross-referenced from elsewhere in the same instance document.
+
+
+
+
+ The multicast transport object URI of this presentation manifest when it is carouselled by the Multicast server.
+
+
+
+
+ A pattern string used by the Multicast gateway to match the path part of presentation manifest request URLs from a Content playback function with this multicast session. May contain any number of wildcard characters at any position.
+
+
+
+
+
+
+
+
+ The reporting destination(s) used by the Multicast gateway for all Multicast transport sessions within the scope of this Multicast session.
+
+
+
+
+
+ Designated extension point.
+
+
+
+
+
+ A URI that uniquely identifies a multicast session within the deployed system.
+
+
+
+
+ The period for which the availability start time of media objects delivered at reference point L should be delayed by the Multicast gateway
+
+
+
+
+
+
+
+
+
+ The Multicast gateway configuration can optionally be transmitted via an in-band multicast transport session.
+
+
+
+
+ A set of multicast sessions, each one for a different linear service.
+
+
+
+
+ Defining a macro to be expanded by the Multicast server when processing the multicast server configuration.
+
+
+
+
+ The reporting destination(s) used by the Multicast gateway for all Multicast transport sessions declared within the scope of this multicast server configuration.
+
+
+
+
+ Designated extension point.
+
+
+
+
+
+ The version attribute is intended to be increased by 1 in every future version where new element(s) or attribute(s) are added.
+
+
+
+
+ Attributes declaring the validity of this Multicast server configuration document and its contents.
+
+
+
+
+
+
+
+
+ The Multicast gateway configuration can optionally be transmitted via an in-band multicast transport session.
+
+
+
+
+ A set of multicast sessions, each one for a different linear service.
+
+
+
+
+ The reporting destination(s) used by the Multicast gateway for all Multicast transport sessions declared within the scope of this multicast gateway configuration.
+
+
+
+
+ Designated extension point.
+
+
+
+
+
+ The version attribute is intended to be increased by 1 in every future version where new element(s) or attribute(s) are added.
+
+
+
+
+ Attributes declaring the validity of this Multicast gateway configuration document and its contents.
+
+
+
+
+
+
+ A document describing the currently configured Multicast sessions of a Multicast server.
+
+
+
+
+
+ A document describing the currently configured Multicast sessions of a Multicast gateway.
+
+
+
diff --git a/Documentation/MulticastGatewayConfiguration-XSD/multicast-session-configuration_phase-2_2024-05-28_mpeg7_subset_extensibility_2024-04-24.cs b/Documentation/MulticastGatewayConfiguration-XSD/multicast-session-configuration_phase-2_2024-05-28_mpeg7_subset_extensibility_2024-04-24.cs
new file mode 100644
index 0000000..755e1e2
--- /dev/null
+++ b/Documentation/MulticastGatewayConfiguration-XSD/multicast-session-configuration_phase-2_2024-05-28_mpeg7_subset_extensibility_2024-04-24.cs
@@ -0,0 +1,1881 @@
+//------------------------------------------------------------------------------
+//
+// 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 xsd, Version=4.8.9037.0.
+//
+namespace skyscraper8.DvbNip {
+ using System.Xml.Serialization;
+
+
+ ///
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.8.9037.0")]
+ [System.SerializableAttribute()]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ [System.Xml.Serialization.XmlTypeAttribute(Namespace="urn:dvb:metadata:MulticastSessionConfiguration:2024")]
+ [System.Xml.Serialization.XmlRootAttribute("MulticastServerConfiguration", Namespace="urn:dvb:metadata:MulticastSessionConfiguration:2024", IsNullable=false)]
+ public partial class MulticastServerConfigurationType {
+
+ private MulticastGatewayConfigurationTransportSessionType[] multicastGatewayConfigurationTransportSessionField;
+
+ private MulticastSessionType[] multicastSessionField;
+
+ private MacroDefinitionType[] multicastServerConfigurationMacroField;
+
+ private SessionReportingType multicastGatewaySessionReportingField;
+
+ private System.Xml.XmlElement[] anyField;
+
+ private uint schemaVersionField;
+
+ private string validityPeriodField;
+
+ private string validUntilField;
+
+ private System.Xml.XmlAttribute[] anyAttrField;
+
+ ///
+ [System.Xml.Serialization.XmlElementAttribute("MulticastGatewayConfigurationTransportSession")]
+ public MulticastGatewayConfigurationTransportSessionType[] MulticastGatewayConfigurationTransportSession {
+ get {
+ return this.multicastGatewayConfigurationTransportSessionField;
+ }
+ set {
+ this.multicastGatewayConfigurationTransportSessionField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlElementAttribute("MulticastSession")]
+ public MulticastSessionType[] MulticastSession {
+ get {
+ return this.multicastSessionField;
+ }
+ set {
+ this.multicastSessionField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlElementAttribute("MulticastServerConfigurationMacro")]
+ public MacroDefinitionType[] MulticastServerConfigurationMacro {
+ get {
+ return this.multicastServerConfigurationMacroField;
+ }
+ set {
+ this.multicastServerConfigurationMacroField = value;
+ }
+ }
+
+ ///
+ public SessionReportingType MulticastGatewaySessionReporting {
+ get {
+ return this.multicastGatewaySessionReportingField;
+ }
+ set {
+ this.multicastGatewaySessionReportingField = 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="urn:dvb:metadata:Extensibility:2024")]
+ public uint schemaVersion {
+ get {
+ return this.schemaVersionField;
+ }
+ set {
+ this.schemaVersionField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute(DataType="duration")]
+ public string validityPeriod {
+ get {
+ return this.validityPeriodField;
+ }
+ set {
+ this.validityPeriodField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute()]
+ public string validUntil {
+ get {
+ return this.validUntilField;
+ }
+ set {
+ this.validUntilField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAnyAttributeAttribute()]
+ public System.Xml.XmlAttribute[] AnyAttr {
+ get {
+ return this.anyAttrField;
+ }
+ set {
+ this.anyAttrField = value;
+ }
+ }
+ }
+
+ ///
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.8.9037.0")]
+ [System.SerializableAttribute()]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ [System.Xml.Serialization.XmlTypeAttribute(Namespace="urn:dvb:metadata:MulticastSessionConfiguration:2024")]
+ public partial class MulticastGatewayConfigurationTransportSessionType : BaseMulticastTransportSessionType {
+
+ private ReferencingObjectCarouselType objectCarouselField;
+
+ private MacroDefinitionType[] multicastGatewayConfigurationMacroField;
+
+ private System.Xml.XmlElement[] anyField;
+
+ private string[] tagsField;
+
+ private System.Xml.XmlAttribute[] anyAttrField;
+
+ ///
+ public ReferencingObjectCarouselType ObjectCarousel {
+ get {
+ return this.objectCarouselField;
+ }
+ set {
+ this.objectCarouselField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlElementAttribute("MulticastGatewayConfigurationMacro")]
+ public MacroDefinitionType[] MulticastGatewayConfigurationMacro {
+ get {
+ return this.multicastGatewayConfigurationMacroField;
+ }
+ set {
+ this.multicastGatewayConfigurationMacroField = 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[] tags {
+ get {
+ return this.tagsField;
+ }
+ set {
+ this.tagsField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAnyAttributeAttribute()]
+ public System.Xml.XmlAttribute[] AnyAttr {
+ get {
+ return this.anyAttrField;
+ }
+ set {
+ this.anyAttrField = value;
+ }
+ }
+ }
+
+ ///
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.8.9037.0")]
+ [System.SerializableAttribute()]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ [System.Xml.Serialization.XmlTypeAttribute(Namespace="urn:dvb:metadata:MulticastSessionConfiguration:2024")]
+ public partial class ReferencingObjectCarouselType {
+
+ private object[] itemsField;
+
+ private ItemsChoiceType[] itemsElementNameField;
+
+ private System.Xml.XmlElement[] anyField;
+
+ private string aggregateTransportSizeField;
+
+ private string aggregateContentSizeField;
+
+ private System.Xml.XmlAttribute[] anyAttrField;
+
+ ///
+ [System.Xml.Serialization.XmlElementAttribute("InitSegments", typeof(ReferencingCarouselMediaPresentationResourceType))]
+ [System.Xml.Serialization.XmlElementAttribute("PresentationManifests", typeof(ReferencingCarouselMediaPresentationResourceType))]
+ [System.Xml.Serialization.XmlElementAttribute("ResourceLocator", typeof(CarouselResourceLocatorType))]
+ [System.Xml.Serialization.XmlChoiceIdentifierAttribute("ItemsElementName")]
+ public object[] Items {
+ get {
+ return this.itemsField;
+ }
+ set {
+ this.itemsField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlElementAttribute("ItemsElementName")]
+ [System.Xml.Serialization.XmlIgnoreAttribute()]
+ public ItemsChoiceType[] ItemsElementName {
+ get {
+ return this.itemsElementNameField;
+ }
+ set {
+ this.itemsElementNameField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAnyElementAttribute()]
+ public System.Xml.XmlElement[] Any {
+ get {
+ return this.anyField;
+ }
+ set {
+ this.anyField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute(DataType="positiveInteger")]
+ public string aggregateTransportSize {
+ get {
+ return this.aggregateTransportSizeField;
+ }
+ set {
+ this.aggregateTransportSizeField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute(DataType="positiveInteger")]
+ public string aggregateContentSize {
+ get {
+ return this.aggregateContentSizeField;
+ }
+ set {
+ this.aggregateContentSizeField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAnyAttributeAttribute()]
+ public System.Xml.XmlAttribute[] AnyAttr {
+ get {
+ return this.anyAttrField;
+ }
+ set {
+ this.anyAttrField = value;
+ }
+ }
+ }
+
+ ///
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.8.9037.0")]
+ [System.SerializableAttribute()]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ [System.Xml.Serialization.XmlTypeAttribute(Namespace="urn:dvb:metadata:MulticastSessionConfiguration:2024")]
+ public partial class ReferencingCarouselMediaPresentationResourceType : CarouselMediaPresentationResourceType {
+
+ private string serviceIdRefField;
+
+ private string transportSessionIdRefField;
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute(DataType="anyURI")]
+ public string serviceIdRef {
+ get {
+ return this.serviceIdRefField;
+ }
+ set {
+ this.serviceIdRefField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute(DataType="NMTOKEN")]
+ public string transportSessionIdRef {
+ get {
+ return this.transportSessionIdRefField;
+ }
+ set {
+ this.transportSessionIdRefField = value;
+ }
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlIncludeAttribute(typeof(ReferencingCarouselMediaPresentationResourceType))]
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.8.9037.0")]
+ [System.SerializableAttribute()]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ [System.Xml.Serialization.XmlTypeAttribute(Namespace="urn:dvb:metadata:MulticastSessionConfiguration:2024")]
+ public partial class CarouselMediaPresentationResourceType {
+
+ private string targetAcquisitionLatencyField;
+
+ private bool compressionPreferredField;
+
+ private System.Xml.XmlAttribute[] anyAttrField;
+
+ public CarouselMediaPresentationResourceType() {
+ this.compressionPreferredField = false;
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute(DataType="duration")]
+ public string targetAcquisitionLatency {
+ get {
+ return this.targetAcquisitionLatencyField;
+ }
+ set {
+ this.targetAcquisitionLatencyField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute()]
+ [System.ComponentModel.DefaultValueAttribute(false)]
+ public bool compressionPreferred {
+ get {
+ return this.compressionPreferredField;
+ }
+ set {
+ this.compressionPreferredField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAnyAttributeAttribute()]
+ public System.Xml.XmlAttribute[] AnyAttr {
+ get {
+ return this.anyAttrField;
+ }
+ set {
+ this.anyAttrField = value;
+ }
+ }
+ }
+
+ ///
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.8.9037.0")]
+ [System.SerializableAttribute()]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ [System.Xml.Serialization.XmlTypeAttribute(Namespace="urn:dvb:metadata:MulticastSessionConfiguration:2024")]
+ public partial class ReportingLocatorType {
+
+ private decimal proportionField;
+
+ private string periodField;
+
+ private uint randomDelayField;
+
+ private bool reportSessionRunningEventsField;
+
+ private System.Xml.XmlAttribute[] anyAttrField;
+
+ private string valueField;
+
+ public ReportingLocatorType() {
+ this.proportionField = ((decimal)(1.0m));
+ this.reportSessionRunningEventsField = false;
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute()]
+ [System.ComponentModel.DefaultValueAttribute(typeof(decimal), "1.0")]
+ public decimal proportion {
+ get {
+ return this.proportionField;
+ }
+ set {
+ this.proportionField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute(DataType="duration")]
+ public string period {
+ get {
+ return this.periodField;
+ }
+ set {
+ this.periodField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute()]
+ public uint randomDelay {
+ get {
+ return this.randomDelayField;
+ }
+ set {
+ this.randomDelayField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute()]
+ [System.ComponentModel.DefaultValueAttribute(false)]
+ public bool reportSessionRunningEvents {
+ get {
+ return this.reportSessionRunningEventsField;
+ }
+ set {
+ this.reportSessionRunningEventsField = 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.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.8.9037.0")]
+ [System.SerializableAttribute()]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ [System.Xml.Serialization.XmlTypeAttribute(Namespace="urn:dvb:metadata:MulticastSessionConfiguration:2024")]
+ public partial class SessionReportingType {
+
+ private ReportingLocatorType[] reportingLocatorField;
+
+ private System.Xml.XmlAttribute[] anyAttrField;
+
+ ///
+ [System.Xml.Serialization.XmlElementAttribute("ReportingLocator")]
+ public ReportingLocatorType[] ReportingLocator {
+ get {
+ return this.reportingLocatorField;
+ }
+ set {
+ this.reportingLocatorField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAnyAttributeAttribute()]
+ public System.Xml.XmlAttribute[] AnyAttr {
+ get {
+ return this.anyAttrField;
+ }
+ set {
+ this.anyAttrField = value;
+ }
+ }
+ }
+
+ ///
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.8.9037.0")]
+ [System.SerializableAttribute()]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ [System.Xml.Serialization.XmlTypeAttribute(Namespace="urn:dvb:metadata:MulticastSessionConfiguration:2024")]
+ public partial class TypedLocatorType {
+
+ private string contentTypeField;
+
+ private string valueField;
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute()]
+ public string contentType {
+ get {
+ return this.contentTypeField;
+ }
+ set {
+ this.contentTypeField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlTextAttribute(DataType="anyURI")]
+ public string Value {
+ get {
+ return this.valueField;
+ }
+ set {
+ this.valueField = value;
+ }
+ }
+ }
+
+ ///
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.8.9037.0")]
+ [System.SerializableAttribute()]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ [System.Xml.Serialization.XmlTypeAttribute(Namespace="urn:dvb:metadata:MulticastSessionConfiguration:2024")]
+ public partial class MulticastSessionType {
+
+ private MulticastSessionTypePresentationManifestLocator[] presentationManifestLocatorField;
+
+ private SessionReportingType multicastGatewaySessionReportingField;
+
+ private MulticastTransportSessionType[] multicastTransportSessionField;
+
+ private System.Xml.XmlElement[] anyField;
+
+ private string serviceIdentifierField;
+
+ private string contentPlaybackAvailabilityOffsetField;
+
+ private System.Xml.XmlAttribute[] anyAttrField;
+
+ public MulticastSessionType() {
+ this.contentPlaybackAvailabilityOffsetField = "PT0S";
+ }
+
+ ///
+ [System.Xml.Serialization.XmlElementAttribute("PresentationManifestLocator")]
+ public MulticastSessionTypePresentationManifestLocator[] PresentationManifestLocator {
+ get {
+ return this.presentationManifestLocatorField;
+ }
+ set {
+ this.presentationManifestLocatorField = value;
+ }
+ }
+
+ ///
+ public SessionReportingType MulticastGatewaySessionReporting {
+ get {
+ return this.multicastGatewaySessionReportingField;
+ }
+ set {
+ this.multicastGatewaySessionReportingField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlElementAttribute("MulticastTransportSession")]
+ public MulticastTransportSessionType[] MulticastTransportSession {
+ get {
+ return this.multicastTransportSessionField;
+ }
+ set {
+ this.multicastTransportSessionField = 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 serviceIdentifier {
+ get {
+ return this.serviceIdentifierField;
+ }
+ set {
+ this.serviceIdentifierField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute(DataType="duration")]
+ [System.ComponentModel.DefaultValueAttribute("PT0S")]
+ public string contentPlaybackAvailabilityOffset {
+ get {
+ return this.contentPlaybackAvailabilityOffsetField;
+ }
+ set {
+ this.contentPlaybackAvailabilityOffsetField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAnyAttributeAttribute()]
+ public System.Xml.XmlAttribute[] AnyAttr {
+ get {
+ return this.anyAttrField;
+ }
+ set {
+ this.anyAttrField = value;
+ }
+ }
+ }
+
+ ///
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.8.9037.0")]
+ [System.SerializableAttribute()]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ [System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true, Namespace="urn:dvb:metadata:MulticastSessionConfiguration:2024")]
+ public partial class MulticastSessionTypePresentationManifestLocator : TypedLocatorType {
+
+ private string manifestIdField;
+
+ private string transportObjectURIField;
+
+ private string contentPlaybackPathPatternField;
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute(DataType="NMTOKEN")]
+ public string manifestId {
+ get {
+ return this.manifestIdField;
+ }
+ set {
+ this.manifestIdField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute()]
+ public string transportObjectURI {
+ get {
+ return this.transportObjectURIField;
+ }
+ set {
+ this.transportObjectURIField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute()]
+ public string contentPlaybackPathPattern {
+ get {
+ return this.contentPlaybackPathPatternField;
+ }
+ set {
+ this.contentPlaybackPathPatternField = value;
+ }
+ }
+ }
+
+ ///
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.8.9037.0")]
+ [System.SerializableAttribute()]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ [System.Xml.Serialization.XmlTypeAttribute(Namespace="urn:dvb:metadata:MulticastSessionConfiguration:2024")]
+ public partial class MulticastTransportSessionType : BaseMulticastTransportSessionType {
+
+ private ServiceComponentIdentifierType[] serviceComponentIdentifierField;
+
+ private ObjectCarouselType objectCarouselField;
+
+ private System.Xml.XmlElement[] anyField;
+
+ private string idField;
+
+ private string startField;
+
+ private string durationField;
+
+ private contentAcquisitionMethodType contentIngestMethodField;
+
+ private transmissionModeType transmissionModeField;
+
+ private string sessionIdleTimeoutField;
+
+ private System.Xml.XmlAttribute[] anyAttrField;
+
+ public MulticastTransportSessionType() {
+ this.contentIngestMethodField = contentAcquisitionMethodType.pull;
+ this.transmissionModeField = transmissionModeType.resource;
+ }
+
+ ///
+ [System.Xml.Serialization.XmlElementAttribute("ServiceComponentIdentifier")]
+ public ServiceComponentIdentifierType[] ServiceComponentIdentifier {
+ get {
+ return this.serviceComponentIdentifierField;
+ }
+ set {
+ this.serviceComponentIdentifierField = value;
+ }
+ }
+
+ ///
+ public ObjectCarouselType ObjectCarousel {
+ get {
+ return this.objectCarouselField;
+ }
+ set {
+ this.objectCarouselField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAnyElementAttribute()]
+ public System.Xml.XmlElement[] Any {
+ get {
+ return this.anyField;
+ }
+ set {
+ this.anyField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute(DataType="NMTOKEN")]
+ public string id {
+ get {
+ return this.idField;
+ }
+ set {
+ this.idField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute()]
+ 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(contentAcquisitionMethodType.pull)]
+ public contentAcquisitionMethodType contentIngestMethod {
+ get {
+ return this.contentIngestMethodField;
+ }
+ set {
+ this.contentIngestMethodField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute()]
+ [System.ComponentModel.DefaultValueAttribute(transmissionModeType.resource)]
+ public transmissionModeType transmissionMode {
+ get {
+ return this.transmissionModeField;
+ }
+ set {
+ this.transmissionModeField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute(DataType="positiveInteger")]
+ public string sessionIdleTimeout {
+ get {
+ return this.sessionIdleTimeoutField;
+ }
+ set {
+ this.sessionIdleTimeoutField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAnyAttributeAttribute()]
+ public System.Xml.XmlAttribute[] AnyAttr {
+ get {
+ return this.anyAttrField;
+ }
+ set {
+ this.anyAttrField = value;
+ }
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlIncludeAttribute(typeof(GenericComponentIdentifierType))]
+ [System.Xml.Serialization.XmlIncludeAttribute(typeof(HLSComponentIdentifierType))]
+ [System.Xml.Serialization.XmlIncludeAttribute(typeof(DASHComponentIdentifierType))]
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.8.9037.0")]
+ [System.SerializableAttribute()]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ [System.Xml.Serialization.XmlTypeAttribute(Namespace="urn:dvb:metadata:MulticastSessionConfiguration:2024")]
+ public abstract partial class ServiceComponentIdentifierType {
+
+ private string manifestIdRefField;
+
+ private System.Xml.XmlAttribute[] anyAttrField;
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute(DataType="NMTOKEN")]
+ public string manifestIdRef {
+ get {
+ return this.manifestIdRefField;
+ }
+ set {
+ this.manifestIdRefField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAnyAttributeAttribute()]
+ public System.Xml.XmlAttribute[] AnyAttr {
+ get {
+ return this.anyAttrField;
+ }
+ set {
+ this.anyAttrField = value;
+ }
+ }
+ }
+
+ ///
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.8.9037.0")]
+ [System.SerializableAttribute()]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ [System.Xml.Serialization.XmlTypeAttribute(Namespace="urn:dvb:metadata:MulticastSessionConfiguration:2024")]
+ public partial class GenericComponentIdentifierType : ServiceComponentIdentifierType {
+
+ private string componentIdentifierField;
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute(DataType="NMTOKEN")]
+ public string componentIdentifier {
+ get {
+ return this.componentIdentifierField;
+ }
+ set {
+ this.componentIdentifierField = value;
+ }
+ }
+ }
+
+ ///
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.8.9037.0")]
+ [System.SerializableAttribute()]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ [System.Xml.Serialization.XmlTypeAttribute(Namespace="urn:dvb:metadata:MulticastSessionConfiguration:2024")]
+ public partial class HLSComponentIdentifierType : ServiceComponentIdentifierType {
+
+ private string mediaPlaylistLocatorField;
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute(DataType="anyURI")]
+ public string mediaPlaylistLocator {
+ get {
+ return this.mediaPlaylistLocatorField;
+ }
+ set {
+ this.mediaPlaylistLocatorField = value;
+ }
+ }
+ }
+
+ ///
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.8.9037.0")]
+ [System.SerializableAttribute()]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ [System.Xml.Serialization.XmlTypeAttribute(Namespace="urn:dvb:metadata:MulticastSessionConfiguration:2024")]
+ public partial class DASHComponentIdentifierType : ServiceComponentIdentifierType {
+
+ private string periodIdentifierField;
+
+ private uint adaptationSetIdentifierField;
+
+ private string representationIdentifierField;
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute()]
+ public string periodIdentifier {
+ get {
+ return this.periodIdentifierField;
+ }
+ set {
+ this.periodIdentifierField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute()]
+ public uint adaptationSetIdentifier {
+ get {
+ return this.adaptationSetIdentifierField;
+ }
+ set {
+ this.adaptationSetIdentifierField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute()]
+ public string representationIdentifier {
+ get {
+ return this.representationIdentifierField;
+ }
+ set {
+ this.representationIdentifierField = value;
+ }
+ }
+ }
+
+ ///
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.8.9037.0")]
+ [System.SerializableAttribute()]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ [System.Xml.Serialization.XmlTypeAttribute(Namespace="urn:dvb:metadata:MulticastSessionConfiguration:2024")]
+ public partial class ObjectCarouselType {
+
+ private object[] itemsField;
+
+ private ItemsChoiceType1[] itemsElementNameField;
+
+ private System.Xml.XmlElement[] anyField;
+
+ private string aggregateTransportSizeField;
+
+ private string aggregateContentSizeField;
+
+ private System.Xml.XmlAttribute[] anyAttrField;
+
+ ///
+ [System.Xml.Serialization.XmlElementAttribute("InitSegments", typeof(CarouselMediaPresentationResourceType))]
+ [System.Xml.Serialization.XmlElementAttribute("PresentationManifests", typeof(CarouselMediaPresentationResourceType))]
+ [System.Xml.Serialization.XmlElementAttribute("ResourceLocator", typeof(CarouselResourceLocatorType))]
+ [System.Xml.Serialization.XmlChoiceIdentifierAttribute("ItemsElementName")]
+ public object[] Items {
+ get {
+ return this.itemsField;
+ }
+ set {
+ this.itemsField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlElementAttribute("ItemsElementName")]
+ [System.Xml.Serialization.XmlIgnoreAttribute()]
+ public ItemsChoiceType1[] ItemsElementName {
+ get {
+ return this.itemsElementNameField;
+ }
+ set {
+ this.itemsElementNameField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAnyElementAttribute()]
+ public System.Xml.XmlElement[] Any {
+ get {
+ return this.anyField;
+ }
+ set {
+ this.anyField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute(DataType="positiveInteger")]
+ public string aggregateTransportSize {
+ get {
+ return this.aggregateTransportSizeField;
+ }
+ set {
+ this.aggregateTransportSizeField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute(DataType="positiveInteger")]
+ public string aggregateContentSize {
+ get {
+ return this.aggregateContentSizeField;
+ }
+ set {
+ this.aggregateContentSizeField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAnyAttributeAttribute()]
+ public System.Xml.XmlAttribute[] AnyAttr {
+ get {
+ return this.anyAttrField;
+ }
+ set {
+ this.anyAttrField = value;
+ }
+ }
+ }
+
+ ///
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.8.9037.0")]
+ [System.SerializableAttribute()]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ [System.Xml.Serialization.XmlTypeAttribute(Namespace="urn:dvb:metadata:MulticastSessionConfiguration:2024")]
+ public partial class CarouselResourceLocatorType {
+
+ private string targetAcquisitionLatencyField;
+
+ private string revalidationPeriodField;
+
+ private bool compressionPreferredField;
+
+ private System.Xml.XmlAttribute[] anyAttrField;
+
+ private string valueField;
+
+ public CarouselResourceLocatorType() {
+ this.compressionPreferredField = false;
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute(DataType="duration")]
+ public string targetAcquisitionLatency {
+ get {
+ return this.targetAcquisitionLatencyField;
+ }
+ set {
+ this.targetAcquisitionLatencyField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute(DataType="duration")]
+ public string revalidationPeriod {
+ get {
+ return this.revalidationPeriodField;
+ }
+ set {
+ this.revalidationPeriodField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute()]
+ [System.ComponentModel.DefaultValueAttribute(false)]
+ public bool compressionPreferred {
+ get {
+ return this.compressionPreferredField;
+ }
+ set {
+ this.compressionPreferredField = 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.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.8.9037.0")]
+ [System.SerializableAttribute()]
+ [System.Xml.Serialization.XmlTypeAttribute(Namespace="urn:dvb:metadata:MulticastSessionConfiguration:2024", IncludeInSchema=false)]
+ public enum ItemsChoiceType1 {
+
+ ///
+ InitSegments,
+
+ ///
+ PresentationManifests,
+
+ ///
+ ResourceLocator,
+ }
+
+ ///
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.8.9037.0")]
+ [System.SerializableAttribute()]
+ [System.Xml.Serialization.XmlTypeAttribute(Namespace="urn:dvb:metadata:MulticastSessionConfiguration:2024")]
+ public enum contentAcquisitionMethodType {
+
+ ///
+ push,
+
+ ///
+ pull,
+ }
+
+ ///
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.8.9037.0")]
+ [System.SerializableAttribute()]
+ [System.Xml.Serialization.XmlTypeAttribute(Namespace="urn:dvb:metadata:MulticastSessionConfiguration:2024")]
+ public enum transmissionModeType {
+
+ ///
+ resource,
+
+ ///
+ chunked,
+ }
+
+ ///
+ [System.Xml.Serialization.XmlIncludeAttribute(typeof(MulticastTransportSessionType))]
+ [System.Xml.Serialization.XmlIncludeAttribute(typeof(MulticastGatewayConfigurationTransportSessionType))]
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.8.9037.0")]
+ [System.SerializableAttribute()]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ [System.Xml.Serialization.XmlTypeAttribute(Namespace="urn:dvb:metadata:MulticastSessionConfiguration:2024")]
+ public partial class BaseMulticastTransportSessionType {
+
+ private MulticastTransportProtocolType transportProtocolField;
+
+ private MulticastEndpointAddressType[] endpointAddressField;
+
+ private BitRateType bitRateField;
+
+ private ForwardErrorCorrectionParametersType[] forwardErrorCorrectionParametersField;
+
+ private UnicastRepairParametersType unicastRepairParametersField;
+
+ private string serviceClassField;
+
+ private transportSecurityType transportSecurityField;
+
+ public BaseMulticastTransportSessionType() {
+ this.transportSecurityField = transportSecurityType.none;
+ }
+
+ ///
+ public MulticastTransportProtocolType TransportProtocol {
+ get {
+ return this.transportProtocolField;
+ }
+ set {
+ this.transportProtocolField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlElementAttribute("EndpointAddress")]
+ public MulticastEndpointAddressType[] EndpointAddress {
+ get {
+ return this.endpointAddressField;
+ }
+ set {
+ this.endpointAddressField = value;
+ }
+ }
+
+ ///
+ public BitRateType BitRate {
+ get {
+ return this.bitRateField;
+ }
+ set {
+ this.bitRateField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlElementAttribute("ForwardErrorCorrectionParameters")]
+ public ForwardErrorCorrectionParametersType[] ForwardErrorCorrectionParameters {
+ get {
+ return this.forwardErrorCorrectionParametersField;
+ }
+ set {
+ this.forwardErrorCorrectionParametersField = value;
+ }
+ }
+
+ ///
+ public UnicastRepairParametersType UnicastRepairParameters {
+ get {
+ return this.unicastRepairParametersField;
+ }
+ set {
+ this.unicastRepairParametersField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute(DataType="anyURI")]
+ public string serviceClass {
+ get {
+ return this.serviceClassField;
+ }
+ set {
+ this.serviceClassField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute()]
+ [System.ComponentModel.DefaultValueAttribute(transportSecurityType.none)]
+ public transportSecurityType transportSecurity {
+ get {
+ return this.transportSecurityField;
+ }
+ set {
+ this.transportSecurityField = value;
+ }
+ }
+ }
+
+ ///
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.8.9037.0")]
+ [System.SerializableAttribute()]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ [System.Xml.Serialization.XmlTypeAttribute(Namespace="urn:dvb:metadata:MulticastSessionConfiguration:2024")]
+ public partial class MulticastTransportProtocolType {
+
+ private string protocolIdentifierField;
+
+ private string protocolVersionField;
+
+ private System.Xml.XmlAttribute[] anyAttrField;
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute()]
+ public string protocolIdentifier {
+ get {
+ return this.protocolIdentifierField;
+ }
+ set {
+ this.protocolIdentifierField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute(DataType="positiveInteger")]
+ public string protocolVersion {
+ get {
+ return this.protocolVersionField;
+ }
+ set {
+ this.protocolVersionField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAnyAttributeAttribute()]
+ public System.Xml.XmlAttribute[] AnyAttr {
+ get {
+ return this.anyAttrField;
+ }
+ set {
+ this.anyAttrField = value;
+ }
+ }
+ }
+
+ ///
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.8.9037.0")]
+ [System.SerializableAttribute()]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ [System.Xml.Serialization.XmlTypeAttribute(Namespace="urn:dvb:metadata:MulticastSessionConfiguration:2024")]
+ public partial class MulticastEndpointAddressType {
+
+ private string networkSourceAddressField;
+
+ private string networkDestinationGroupAddressField;
+
+ private string transportDestinationPortField;
+
+ private string mediaTransportSessionIdentifierField;
+
+ private System.Xml.XmlElement[] anyField;
+
+ private System.Xml.XmlAttribute[] anyAttrField;
+
+ ///
+ public string NetworkSourceAddress {
+ get {
+ return this.networkSourceAddressField;
+ }
+ set {
+ this.networkSourceAddressField = value;
+ }
+ }
+
+ ///
+ public string NetworkDestinationGroupAddress {
+ get {
+ return this.networkDestinationGroupAddressField;
+ }
+ set {
+ this.networkDestinationGroupAddressField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlElementAttribute(DataType="positiveInteger")]
+ public string TransportDestinationPort {
+ get {
+ return this.transportDestinationPortField;
+ }
+ set {
+ this.transportDestinationPortField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlElementAttribute(DataType="positiveInteger")]
+ public string MediaTransportSessionIdentifier {
+ get {
+ return this.mediaTransportSessionIdentifierField;
+ }
+ set {
+ this.mediaTransportSessionIdentifierField = 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", "4.8.9037.0")]
+ [System.SerializableAttribute()]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ [System.Xml.Serialization.XmlTypeAttribute(Namespace="urn:dvb:metadata:MulticastSessionConfiguration:2024")]
+ public partial class BitRateType {
+
+ private string averageField;
+
+ private string maximumField;
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute(DataType="positiveInteger")]
+ public string average {
+ get {
+ return this.averageField;
+ }
+ set {
+ this.averageField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute(DataType="positiveInteger")]
+ public string maximum {
+ get {
+ return this.maximumField;
+ }
+ set {
+ this.maximumField = value;
+ }
+ }
+ }
+
+ ///
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.8.9037.0")]
+ [System.SerializableAttribute()]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ [System.Xml.Serialization.XmlTypeAttribute(Namespace="urn:dvb:metadata:MulticastSessionConfiguration:2024")]
+ public partial class ForwardErrorCorrectionParametersType {
+
+ private string schemeIdentifierField;
+
+ private string overheadPercentageField;
+
+ private MulticastEndpointAddressType[] endpointAddressField;
+
+ private System.Xml.XmlElement[] anyField;
+
+ private System.Xml.XmlAttribute[] anyAttrField;
+
+ ///
+ public string SchemeIdentifier {
+ get {
+ return this.schemeIdentifierField;
+ }
+ set {
+ this.schemeIdentifierField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlElementAttribute(DataType="positiveInteger")]
+ public string OverheadPercentage {
+ get {
+ return this.overheadPercentageField;
+ }
+ set {
+ this.overheadPercentageField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlElementAttribute("EndpointAddress")]
+ public MulticastEndpointAddressType[] EndpointAddress {
+ get {
+ return this.endpointAddressField;
+ }
+ set {
+ this.endpointAddressField = 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", "4.8.9037.0")]
+ [System.SerializableAttribute()]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ [System.Xml.Serialization.XmlTypeAttribute(Namespace="urn:dvb:metadata:MulticastSessionConfiguration:2024")]
+ public partial class UnicastRepairParametersType {
+
+ private WeightedURIType[] baseURLField;
+
+ private System.Xml.XmlElement[] anyField;
+
+ private uint transportObjectReceptionTimeoutField;
+
+ private uint fixedBackOffPeriodField;
+
+ private uint randomBackOffPeriodField;
+
+ private string transportObjectBaseURIField;
+
+ private System.Xml.XmlAttribute[] anyAttrField;
+
+ public UnicastRepairParametersType() {
+ this.fixedBackOffPeriodField = ((uint)(0));
+ this.randomBackOffPeriodField = ((uint)(0));
+ }
+
+ ///
+ [System.Xml.Serialization.XmlElementAttribute("BaseURL")]
+ public WeightedURIType[] BaseURL {
+ get {
+ return this.baseURLField;
+ }
+ set {
+ this.baseURLField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAnyElementAttribute()]
+ public System.Xml.XmlElement[] Any {
+ get {
+ return this.anyField;
+ }
+ set {
+ this.anyField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute()]
+ public uint transportObjectReceptionTimeout {
+ get {
+ return this.transportObjectReceptionTimeoutField;
+ }
+ set {
+ this.transportObjectReceptionTimeoutField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute()]
+ [System.ComponentModel.DefaultValueAttribute(typeof(uint), "0")]
+ public uint fixedBackOffPeriod {
+ get {
+ return this.fixedBackOffPeriodField;
+ }
+ set {
+ this.fixedBackOffPeriodField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute()]
+ [System.ComponentModel.DefaultValueAttribute(typeof(uint), "0")]
+ public uint randomBackOffPeriod {
+ get {
+ return this.randomBackOffPeriodField;
+ }
+ set {
+ this.randomBackOffPeriodField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute(DataType="anyURI")]
+ public string transportObjectBaseURI {
+ get {
+ return this.transportObjectBaseURIField;
+ }
+ set {
+ this.transportObjectBaseURIField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAnyAttributeAttribute()]
+ public System.Xml.XmlAttribute[] AnyAttr {
+ get {
+ return this.anyAttrField;
+ }
+ set {
+ this.anyAttrField = value;
+ }
+ }
+ }
+
+ ///
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.8.9037.0")]
+ [System.SerializableAttribute()]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ [System.Xml.Serialization.XmlTypeAttribute(Namespace="urn:dvb:metadata:MulticastSessionConfiguration:2024")]
+ public partial class WeightedURIType {
+
+ private string relativeWeightField;
+
+ private string valueField;
+
+ public WeightedURIType() {
+ this.relativeWeightField = "1";
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute(DataType="nonNegativeInteger")]
+ [System.ComponentModel.DefaultValueAttribute("1")]
+ public string relativeWeight {
+ get {
+ return this.relativeWeightField;
+ }
+ set {
+ this.relativeWeightField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlTextAttribute(DataType="anyURI")]
+ public string Value {
+ get {
+ return this.valueField;
+ }
+ set {
+ this.valueField = value;
+ }
+ }
+ }
+
+ ///
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.8.9037.0")]
+ [System.SerializableAttribute()]
+ [System.Xml.Serialization.XmlTypeAttribute(Namespace="urn:dvb:metadata:MulticastSessionConfiguration:2024")]
+ public enum transportSecurityType {
+
+ ///
+ none,
+
+ ///
+ integrity,
+
+ ///
+ integrityAndAuthenticity,
+ }
+
+ ///
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.8.9037.0")]
+ [System.SerializableAttribute()]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ [System.Xml.Serialization.XmlTypeAttribute(Namespace="urn:dvb:metadata:MulticastSessionConfiguration:2024")]
+ public partial class MacroDefinitionType {
+
+ private string keyField;
+
+ private string valueField;
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute(DataType="NMTOKEN")]
+ public string key {
+ get {
+ return this.keyField;
+ }
+ set {
+ this.keyField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlTextAttribute()]
+ public string Value {
+ get {
+ return this.valueField;
+ }
+ set {
+ this.valueField = value;
+ }
+ }
+ }
+
+ ///
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.8.9037.0")]
+ [System.SerializableAttribute()]
+ [System.Xml.Serialization.XmlTypeAttribute(Namespace="urn:dvb:metadata:MulticastSessionConfiguration:2024", IncludeInSchema=false)]
+ public enum ItemsChoiceType {
+
+ ///
+ InitSegments,
+
+ ///
+ PresentationManifests,
+
+ ///
+ ResourceLocator,
+ }
+
+ ///
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.8.9037.0")]
+ [System.SerializableAttribute()]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ [System.Xml.Serialization.XmlTypeAttribute(Namespace="urn:dvb:metadata:MulticastSessionConfiguration:2024")]
+ [System.Xml.Serialization.XmlRootAttribute("MulticastGatewayConfiguration", Namespace="urn:dvb:metadata:MulticastSessionConfiguration:2024", IsNullable=false)]
+ public partial class MulticastGatewayConfigurationType {
+
+ private MulticastGatewayConfigurationTransportSessionType[] multicastGatewayConfigurationTransportSessionField;
+
+ private MulticastSessionType[] multicastSessionField;
+
+ private SessionReportingType multicastGatewaySessionReportingField;
+
+ private System.Xml.XmlElement[] anyField;
+
+ private uint schemaVersionField;
+
+ private string validityPeriodField;
+
+ private string validUntilField;
+
+ private System.Xml.XmlAttribute[] anyAttrField;
+
+ ///
+ [System.Xml.Serialization.XmlElementAttribute("MulticastGatewayConfigurationTransportSession")]
+ public MulticastGatewayConfigurationTransportSessionType[] MulticastGatewayConfigurationTransportSession {
+ get {
+ return this.multicastGatewayConfigurationTransportSessionField;
+ }
+ set {
+ this.multicastGatewayConfigurationTransportSessionField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlElementAttribute("MulticastSession")]
+ public MulticastSessionType[] MulticastSession {
+ get {
+ return this.multicastSessionField;
+ }
+ set {
+ this.multicastSessionField = value;
+ }
+ }
+
+ ///
+ public SessionReportingType MulticastGatewaySessionReporting {
+ get {
+ return this.multicastGatewaySessionReportingField;
+ }
+ set {
+ this.multicastGatewaySessionReportingField = 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="urn:dvb:metadata:Extensibility:2024")]
+ public uint schemaVersion {
+ get {
+ return this.schemaVersionField;
+ }
+ set {
+ this.schemaVersionField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute(DataType="duration")]
+ public string validityPeriod {
+ get {
+ return this.validityPeriodField;
+ }
+ set {
+ this.validityPeriodField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute()]
+ public string validUntil {
+ get {
+ return this.validUntilField;
+ }
+ set {
+ this.validUntilField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAnyAttributeAttribute()]
+ public System.Xml.XmlAttribute[] AnyAttr {
+ get {
+ return this.anyAttrField;
+ }
+ set {
+ this.anyAttrField = value;
+ }
+ }
+ }
+
+ ///
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.8.9037.0")]
+ [System.SerializableAttribute()]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ [System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true, Namespace="urn:dvb:metadata:Extensibility:2024")]
+ [System.Xml.Serialization.XmlRootAttribute(Namespace="urn:dvb:metadata:Extensibility:2024", IsNullable=false)]
+ public partial class NamespaceDelimiter {
+ }
+}
diff --git a/skyscraper8/DvbNip/DvbNipReceiver.cs b/skyscraper8/DvbNip/DvbNipReceiver.cs
new file mode 100644
index 0000000..8b5bb96
--- /dev/null
+++ b/skyscraper8/DvbNip/DvbNipReceiver.cs
@@ -0,0 +1,152 @@
+using skyscraper5.Ietf.Rfc768;
+using skyscraper5.Ietf.Rfc971;
+using skyscraper5.Skyscraper.Plugins;
+using skyscraper8.Ietf.FLUTE;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Net;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace skyscraper8.DvbNip
+{
+ [SkyscraperPlugin]
+ internal class DvbNipReceiver : ISkyscraperMpePlugin, IFluteEventHandler
+ {
+ private DateTime? contextDate;
+ private object[] contextConnector;
+ private DvbNipPhase phase;
+ private FluteListener flute;
+
+
+ public bool CanHandlePacket(InternetHeader internetHeader, byte[] ipv4Packet)
+ {
+ byte[] destinationBytes = internetHeader.DestinationAddress.GetAddressBytes();
+ int multicastTemp = destinationBytes[0];
+ multicastTemp &= 0b11100000;
+ multicastTemp >>= 4;
+ if (multicastTemp != 0b1110)
+ return false;
+
+ if (internetHeader.Protocol != 17)
+ return false;
+
+ return true;
+ }
+
+ public void ConnectToStorage(object[] connector)
+ {
+ contextConnector = connector;
+ }
+
+ public void HandlePacket(InternetHeader internetHeader, byte[] ipv4Packet)
+ {
+ UserDatagram udpPacket = new UserDatagram(ipv4Packet);
+ flute.OnFlutePacket(internetHeader.DestinationAddress, udpPacket.DestinationPort, udpPacket.Payload);
+ }
+
+ public void InformToi(IPAddress destinationAddress, ushort destinationPort, ulong transportObjectIdentifier, ulong transportSessionIdentifier)
+ {
+ if (phase == DvbNipPhase.DownloadMode)
+ {
+ flute.AddPlay(destinationAddress, destinationPort, transportSessionIdentifier, 0);
+ }
+ }
+
+ public bool IpFilterEnabled()
+ {
+ if (phase == DvbNipPhase.DownloadMode)
+ return false;
+ else
+ return true;
+ }
+
+ public void OnCompletePlay(FluteListener.FlutePlay flutePlay)
+ {
+ if (phase == DvbNipPhase.WaitingForSignalling)
+ {
+ phase = DvbNipPhase.DownloadMode;
+ return;
+ }
+ else if (phase == DvbNipPhase.DownloadMode)
+ {
+ if (!flutePlay.Validate())
+ {
+ flutePlay.SetIgnore(true);
+ flutePlay.SetIgnore(false);
+ return;
+ }
+ if (flutePlay.TOI == 0)
+ {
+ FDTInstanceType fdtInstance = FluteUtilities.UnpackFluteFdt(flutePlay.GetStream());
+ foreach(FileType filetype in fdtInstance.File)
+ {
+ flute.SetFileAssociation(flutePlay.IPAddress, flutePlay.Port, flutePlay.TSI, filetype.TOI, filetype);
+ }
+ return;
+ }
+ else
+ {
+ if (flutePlay.FileAssociation.ContentLocation.Equals("urn:dvb:metadata:cs:MulticastTransportObjectTypeCS:2021:gateway-configuration"))
+ {
+ MulticastGatewayConfigurationType multicastGatewayConfigurationType = DvbNipUtilities.UnpackMulticastGatewayConfiguration(flutePlay.GetStream());
+ //TODO: Handle Multicast Gateway configuration
+ flutePlay.SetIgnore(true);
+ return;
+ }
+ flutePlay.WriteToFile("test.xml");
+ }
+ flutePlay.SetIgnore(true);
+ }
+ else
+ {
+ throw new NotImplementedException(phase.ToString());
+ }
+ }
+
+ public void OnNipCarrierInformation(NipActualCarrierInformation nipActualCarrierInformation)
+ {
+ if (phase == DvbNipPhase.WaitingForCarrierInformation)
+ {
+ phase = DvbNipPhase.WaitingForSignalling;
+ flute.RemoveAllPlays();
+ flute.AddPlay(IPAddress.Parse("224.0.23.14"), 3937, 0, 0);
+ }
+ }
+
+ public void SetContext(DateTime? currentTime)
+ {
+ contextDate = currentTime;
+ switch(phase)
+ {
+ case DvbNipPhase.JustPoweredUp:
+ flute = new FluteListener(this);
+ flute.AddPlay(IPAddress.Parse("224.0.23.14"), 3937, 1, 0);
+ phase = DvbNipPhase.WaitingForCarrierInformation;
+ break;
+ case DvbNipPhase.WaitingForCarrierInformation:
+ break;
+ case DvbNipPhase.WaitingForSignalling:
+ break;
+ case DvbNipPhase.DownloadMode:
+ break;
+ default:
+ throw new NotImplementedException(phase.ToString());
+ }
+ }
+
+ public bool StopProcessingAfterThis()
+ {
+ return false;
+ }
+
+ private enum DvbNipPhase
+ {
+ JustPoweredUp,
+ WaitingForCarrierInformation,
+ WaitingForSignalling,
+ DownloadMode,
+ }
+ }
+}
diff --git a/skyscraper8/DvbNip/DvbNipUtilities.cs b/skyscraper8/DvbNip/DvbNipUtilities.cs
new file mode 100644
index 0000000..6509024
--- /dev/null
+++ b/skyscraper8/DvbNip/DvbNipUtilities.cs
@@ -0,0 +1,28 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Xml.Serialization;
+
+namespace skyscraper8.DvbNip
+{
+ internal class DvbNipUtilities
+ {
+ private DvbNipUtilities() { }
+
+ private static XmlSerializer multicastGatewayConfigurationXmlSerializer;
+
+ public static MulticastGatewayConfigurationType UnpackMulticastGatewayConfiguration(Stream stream)
+ {
+ if (multicastGatewayConfigurationXmlSerializer == null)
+ {
+ multicastGatewayConfigurationXmlSerializer = new XmlSerializer(typeof(MulticastGatewayConfigurationType));
+ }
+
+ object v = multicastGatewayConfigurationXmlSerializer.Deserialize(stream);
+ MulticastGatewayConfigurationType result = (MulticastGatewayConfigurationType)v;
+ return result;
+ }
+ }
+}
diff --git a/skyscraper8/DvbNip/NipActualCarrierInformation.cs b/skyscraper8/DvbNip/NipActualCarrierInformation.cs
new file mode 100644
index 0000000..b8b9f11
--- /dev/null
+++ b/skyscraper8/DvbNip/NipActualCarrierInformation.cs
@@ -0,0 +1,30 @@
+using skyscraper5.Skyscraper.IO;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace skyscraper8.DvbNip
+{
+ internal class NipActualCarrierInformation
+ {
+ public NipActualCarrierInformation(byte[] buffer)
+ {
+ MemoryStream ms = new MemoryStream(buffer, false);
+ NipNetworkId = ms.ReadUInt16BE();
+ NipCarrierId = ms.ReadUInt16BE();
+ NipLinkId = ms.ReadUInt16BE();
+ NipServiceId = ms.ReadUInt16BE();
+ byte reserved = ms.ReadUInt8();
+ byte length = ms.ReadUInt8();
+ NipStreamProviderName = Encoding.UTF8.GetString(ms.ReadBytes(length));
+ }
+
+ public ushort NipNetworkId { get; }
+ public ushort NipCarrierId { get; }
+ public ushort NipLinkId { get; }
+ public ushort NipServiceId { get; }
+ public string NipStreamProviderName { get; }
+ }
+}
diff --git a/skyscraper8/DvbNip/multicast-session-configuration_phase-2_2024-05-28_mpeg7_subset_extensibility_2024-04-24.cs b/skyscraper8/DvbNip/multicast-session-configuration_phase-2_2024-05-28_mpeg7_subset_extensibility_2024-04-24.cs
new file mode 100644
index 0000000..755e1e2
--- /dev/null
+++ b/skyscraper8/DvbNip/multicast-session-configuration_phase-2_2024-05-28_mpeg7_subset_extensibility_2024-04-24.cs
@@ -0,0 +1,1881 @@
+//------------------------------------------------------------------------------
+//
+// 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 xsd, Version=4.8.9037.0.
+//
+namespace skyscraper8.DvbNip {
+ using System.Xml.Serialization;
+
+
+ ///
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.8.9037.0")]
+ [System.SerializableAttribute()]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ [System.Xml.Serialization.XmlTypeAttribute(Namespace="urn:dvb:metadata:MulticastSessionConfiguration:2024")]
+ [System.Xml.Serialization.XmlRootAttribute("MulticastServerConfiguration", Namespace="urn:dvb:metadata:MulticastSessionConfiguration:2024", IsNullable=false)]
+ public partial class MulticastServerConfigurationType {
+
+ private MulticastGatewayConfigurationTransportSessionType[] multicastGatewayConfigurationTransportSessionField;
+
+ private MulticastSessionType[] multicastSessionField;
+
+ private MacroDefinitionType[] multicastServerConfigurationMacroField;
+
+ private SessionReportingType multicastGatewaySessionReportingField;
+
+ private System.Xml.XmlElement[] anyField;
+
+ private uint schemaVersionField;
+
+ private string validityPeriodField;
+
+ private string validUntilField;
+
+ private System.Xml.XmlAttribute[] anyAttrField;
+
+ ///
+ [System.Xml.Serialization.XmlElementAttribute("MulticastGatewayConfigurationTransportSession")]
+ public MulticastGatewayConfigurationTransportSessionType[] MulticastGatewayConfigurationTransportSession {
+ get {
+ return this.multicastGatewayConfigurationTransportSessionField;
+ }
+ set {
+ this.multicastGatewayConfigurationTransportSessionField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlElementAttribute("MulticastSession")]
+ public MulticastSessionType[] MulticastSession {
+ get {
+ return this.multicastSessionField;
+ }
+ set {
+ this.multicastSessionField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlElementAttribute("MulticastServerConfigurationMacro")]
+ public MacroDefinitionType[] MulticastServerConfigurationMacro {
+ get {
+ return this.multicastServerConfigurationMacroField;
+ }
+ set {
+ this.multicastServerConfigurationMacroField = value;
+ }
+ }
+
+ ///
+ public SessionReportingType MulticastGatewaySessionReporting {
+ get {
+ return this.multicastGatewaySessionReportingField;
+ }
+ set {
+ this.multicastGatewaySessionReportingField = 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="urn:dvb:metadata:Extensibility:2024")]
+ public uint schemaVersion {
+ get {
+ return this.schemaVersionField;
+ }
+ set {
+ this.schemaVersionField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute(DataType="duration")]
+ public string validityPeriod {
+ get {
+ return this.validityPeriodField;
+ }
+ set {
+ this.validityPeriodField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute()]
+ public string validUntil {
+ get {
+ return this.validUntilField;
+ }
+ set {
+ this.validUntilField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAnyAttributeAttribute()]
+ public System.Xml.XmlAttribute[] AnyAttr {
+ get {
+ return this.anyAttrField;
+ }
+ set {
+ this.anyAttrField = value;
+ }
+ }
+ }
+
+ ///
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.8.9037.0")]
+ [System.SerializableAttribute()]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ [System.Xml.Serialization.XmlTypeAttribute(Namespace="urn:dvb:metadata:MulticastSessionConfiguration:2024")]
+ public partial class MulticastGatewayConfigurationTransportSessionType : BaseMulticastTransportSessionType {
+
+ private ReferencingObjectCarouselType objectCarouselField;
+
+ private MacroDefinitionType[] multicastGatewayConfigurationMacroField;
+
+ private System.Xml.XmlElement[] anyField;
+
+ private string[] tagsField;
+
+ private System.Xml.XmlAttribute[] anyAttrField;
+
+ ///
+ public ReferencingObjectCarouselType ObjectCarousel {
+ get {
+ return this.objectCarouselField;
+ }
+ set {
+ this.objectCarouselField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlElementAttribute("MulticastGatewayConfigurationMacro")]
+ public MacroDefinitionType[] MulticastGatewayConfigurationMacro {
+ get {
+ return this.multicastGatewayConfigurationMacroField;
+ }
+ set {
+ this.multicastGatewayConfigurationMacroField = 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[] tags {
+ get {
+ return this.tagsField;
+ }
+ set {
+ this.tagsField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAnyAttributeAttribute()]
+ public System.Xml.XmlAttribute[] AnyAttr {
+ get {
+ return this.anyAttrField;
+ }
+ set {
+ this.anyAttrField = value;
+ }
+ }
+ }
+
+ ///
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.8.9037.0")]
+ [System.SerializableAttribute()]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ [System.Xml.Serialization.XmlTypeAttribute(Namespace="urn:dvb:metadata:MulticastSessionConfiguration:2024")]
+ public partial class ReferencingObjectCarouselType {
+
+ private object[] itemsField;
+
+ private ItemsChoiceType[] itemsElementNameField;
+
+ private System.Xml.XmlElement[] anyField;
+
+ private string aggregateTransportSizeField;
+
+ private string aggregateContentSizeField;
+
+ private System.Xml.XmlAttribute[] anyAttrField;
+
+ ///
+ [System.Xml.Serialization.XmlElementAttribute("InitSegments", typeof(ReferencingCarouselMediaPresentationResourceType))]
+ [System.Xml.Serialization.XmlElementAttribute("PresentationManifests", typeof(ReferencingCarouselMediaPresentationResourceType))]
+ [System.Xml.Serialization.XmlElementAttribute("ResourceLocator", typeof(CarouselResourceLocatorType))]
+ [System.Xml.Serialization.XmlChoiceIdentifierAttribute("ItemsElementName")]
+ public object[] Items {
+ get {
+ return this.itemsField;
+ }
+ set {
+ this.itemsField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlElementAttribute("ItemsElementName")]
+ [System.Xml.Serialization.XmlIgnoreAttribute()]
+ public ItemsChoiceType[] ItemsElementName {
+ get {
+ return this.itemsElementNameField;
+ }
+ set {
+ this.itemsElementNameField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAnyElementAttribute()]
+ public System.Xml.XmlElement[] Any {
+ get {
+ return this.anyField;
+ }
+ set {
+ this.anyField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute(DataType="positiveInteger")]
+ public string aggregateTransportSize {
+ get {
+ return this.aggregateTransportSizeField;
+ }
+ set {
+ this.aggregateTransportSizeField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute(DataType="positiveInteger")]
+ public string aggregateContentSize {
+ get {
+ return this.aggregateContentSizeField;
+ }
+ set {
+ this.aggregateContentSizeField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAnyAttributeAttribute()]
+ public System.Xml.XmlAttribute[] AnyAttr {
+ get {
+ return this.anyAttrField;
+ }
+ set {
+ this.anyAttrField = value;
+ }
+ }
+ }
+
+ ///
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.8.9037.0")]
+ [System.SerializableAttribute()]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ [System.Xml.Serialization.XmlTypeAttribute(Namespace="urn:dvb:metadata:MulticastSessionConfiguration:2024")]
+ public partial class ReferencingCarouselMediaPresentationResourceType : CarouselMediaPresentationResourceType {
+
+ private string serviceIdRefField;
+
+ private string transportSessionIdRefField;
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute(DataType="anyURI")]
+ public string serviceIdRef {
+ get {
+ return this.serviceIdRefField;
+ }
+ set {
+ this.serviceIdRefField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute(DataType="NMTOKEN")]
+ public string transportSessionIdRef {
+ get {
+ return this.transportSessionIdRefField;
+ }
+ set {
+ this.transportSessionIdRefField = value;
+ }
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlIncludeAttribute(typeof(ReferencingCarouselMediaPresentationResourceType))]
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.8.9037.0")]
+ [System.SerializableAttribute()]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ [System.Xml.Serialization.XmlTypeAttribute(Namespace="urn:dvb:metadata:MulticastSessionConfiguration:2024")]
+ public partial class CarouselMediaPresentationResourceType {
+
+ private string targetAcquisitionLatencyField;
+
+ private bool compressionPreferredField;
+
+ private System.Xml.XmlAttribute[] anyAttrField;
+
+ public CarouselMediaPresentationResourceType() {
+ this.compressionPreferredField = false;
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute(DataType="duration")]
+ public string targetAcquisitionLatency {
+ get {
+ return this.targetAcquisitionLatencyField;
+ }
+ set {
+ this.targetAcquisitionLatencyField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute()]
+ [System.ComponentModel.DefaultValueAttribute(false)]
+ public bool compressionPreferred {
+ get {
+ return this.compressionPreferredField;
+ }
+ set {
+ this.compressionPreferredField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAnyAttributeAttribute()]
+ public System.Xml.XmlAttribute[] AnyAttr {
+ get {
+ return this.anyAttrField;
+ }
+ set {
+ this.anyAttrField = value;
+ }
+ }
+ }
+
+ ///
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.8.9037.0")]
+ [System.SerializableAttribute()]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ [System.Xml.Serialization.XmlTypeAttribute(Namespace="urn:dvb:metadata:MulticastSessionConfiguration:2024")]
+ public partial class ReportingLocatorType {
+
+ private decimal proportionField;
+
+ private string periodField;
+
+ private uint randomDelayField;
+
+ private bool reportSessionRunningEventsField;
+
+ private System.Xml.XmlAttribute[] anyAttrField;
+
+ private string valueField;
+
+ public ReportingLocatorType() {
+ this.proportionField = ((decimal)(1.0m));
+ this.reportSessionRunningEventsField = false;
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute()]
+ [System.ComponentModel.DefaultValueAttribute(typeof(decimal), "1.0")]
+ public decimal proportion {
+ get {
+ return this.proportionField;
+ }
+ set {
+ this.proportionField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute(DataType="duration")]
+ public string period {
+ get {
+ return this.periodField;
+ }
+ set {
+ this.periodField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute()]
+ public uint randomDelay {
+ get {
+ return this.randomDelayField;
+ }
+ set {
+ this.randomDelayField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute()]
+ [System.ComponentModel.DefaultValueAttribute(false)]
+ public bool reportSessionRunningEvents {
+ get {
+ return this.reportSessionRunningEventsField;
+ }
+ set {
+ this.reportSessionRunningEventsField = 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.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.8.9037.0")]
+ [System.SerializableAttribute()]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ [System.Xml.Serialization.XmlTypeAttribute(Namespace="urn:dvb:metadata:MulticastSessionConfiguration:2024")]
+ public partial class SessionReportingType {
+
+ private ReportingLocatorType[] reportingLocatorField;
+
+ private System.Xml.XmlAttribute[] anyAttrField;
+
+ ///
+ [System.Xml.Serialization.XmlElementAttribute("ReportingLocator")]
+ public ReportingLocatorType[] ReportingLocator {
+ get {
+ return this.reportingLocatorField;
+ }
+ set {
+ this.reportingLocatorField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAnyAttributeAttribute()]
+ public System.Xml.XmlAttribute[] AnyAttr {
+ get {
+ return this.anyAttrField;
+ }
+ set {
+ this.anyAttrField = value;
+ }
+ }
+ }
+
+ ///
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.8.9037.0")]
+ [System.SerializableAttribute()]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ [System.Xml.Serialization.XmlTypeAttribute(Namespace="urn:dvb:metadata:MulticastSessionConfiguration:2024")]
+ public partial class TypedLocatorType {
+
+ private string contentTypeField;
+
+ private string valueField;
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute()]
+ public string contentType {
+ get {
+ return this.contentTypeField;
+ }
+ set {
+ this.contentTypeField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlTextAttribute(DataType="anyURI")]
+ public string Value {
+ get {
+ return this.valueField;
+ }
+ set {
+ this.valueField = value;
+ }
+ }
+ }
+
+ ///
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.8.9037.0")]
+ [System.SerializableAttribute()]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ [System.Xml.Serialization.XmlTypeAttribute(Namespace="urn:dvb:metadata:MulticastSessionConfiguration:2024")]
+ public partial class MulticastSessionType {
+
+ private MulticastSessionTypePresentationManifestLocator[] presentationManifestLocatorField;
+
+ private SessionReportingType multicastGatewaySessionReportingField;
+
+ private MulticastTransportSessionType[] multicastTransportSessionField;
+
+ private System.Xml.XmlElement[] anyField;
+
+ private string serviceIdentifierField;
+
+ private string contentPlaybackAvailabilityOffsetField;
+
+ private System.Xml.XmlAttribute[] anyAttrField;
+
+ public MulticastSessionType() {
+ this.contentPlaybackAvailabilityOffsetField = "PT0S";
+ }
+
+ ///
+ [System.Xml.Serialization.XmlElementAttribute("PresentationManifestLocator")]
+ public MulticastSessionTypePresentationManifestLocator[] PresentationManifestLocator {
+ get {
+ return this.presentationManifestLocatorField;
+ }
+ set {
+ this.presentationManifestLocatorField = value;
+ }
+ }
+
+ ///
+ public SessionReportingType MulticastGatewaySessionReporting {
+ get {
+ return this.multicastGatewaySessionReportingField;
+ }
+ set {
+ this.multicastGatewaySessionReportingField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlElementAttribute("MulticastTransportSession")]
+ public MulticastTransportSessionType[] MulticastTransportSession {
+ get {
+ return this.multicastTransportSessionField;
+ }
+ set {
+ this.multicastTransportSessionField = 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 serviceIdentifier {
+ get {
+ return this.serviceIdentifierField;
+ }
+ set {
+ this.serviceIdentifierField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute(DataType="duration")]
+ [System.ComponentModel.DefaultValueAttribute("PT0S")]
+ public string contentPlaybackAvailabilityOffset {
+ get {
+ return this.contentPlaybackAvailabilityOffsetField;
+ }
+ set {
+ this.contentPlaybackAvailabilityOffsetField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAnyAttributeAttribute()]
+ public System.Xml.XmlAttribute[] AnyAttr {
+ get {
+ return this.anyAttrField;
+ }
+ set {
+ this.anyAttrField = value;
+ }
+ }
+ }
+
+ ///
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.8.9037.0")]
+ [System.SerializableAttribute()]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ [System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true, Namespace="urn:dvb:metadata:MulticastSessionConfiguration:2024")]
+ public partial class MulticastSessionTypePresentationManifestLocator : TypedLocatorType {
+
+ private string manifestIdField;
+
+ private string transportObjectURIField;
+
+ private string contentPlaybackPathPatternField;
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute(DataType="NMTOKEN")]
+ public string manifestId {
+ get {
+ return this.manifestIdField;
+ }
+ set {
+ this.manifestIdField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute()]
+ public string transportObjectURI {
+ get {
+ return this.transportObjectURIField;
+ }
+ set {
+ this.transportObjectURIField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute()]
+ public string contentPlaybackPathPattern {
+ get {
+ return this.contentPlaybackPathPatternField;
+ }
+ set {
+ this.contentPlaybackPathPatternField = value;
+ }
+ }
+ }
+
+ ///
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.8.9037.0")]
+ [System.SerializableAttribute()]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ [System.Xml.Serialization.XmlTypeAttribute(Namespace="urn:dvb:metadata:MulticastSessionConfiguration:2024")]
+ public partial class MulticastTransportSessionType : BaseMulticastTransportSessionType {
+
+ private ServiceComponentIdentifierType[] serviceComponentIdentifierField;
+
+ private ObjectCarouselType objectCarouselField;
+
+ private System.Xml.XmlElement[] anyField;
+
+ private string idField;
+
+ private string startField;
+
+ private string durationField;
+
+ private contentAcquisitionMethodType contentIngestMethodField;
+
+ private transmissionModeType transmissionModeField;
+
+ private string sessionIdleTimeoutField;
+
+ private System.Xml.XmlAttribute[] anyAttrField;
+
+ public MulticastTransportSessionType() {
+ this.contentIngestMethodField = contentAcquisitionMethodType.pull;
+ this.transmissionModeField = transmissionModeType.resource;
+ }
+
+ ///
+ [System.Xml.Serialization.XmlElementAttribute("ServiceComponentIdentifier")]
+ public ServiceComponentIdentifierType[] ServiceComponentIdentifier {
+ get {
+ return this.serviceComponentIdentifierField;
+ }
+ set {
+ this.serviceComponentIdentifierField = value;
+ }
+ }
+
+ ///
+ public ObjectCarouselType ObjectCarousel {
+ get {
+ return this.objectCarouselField;
+ }
+ set {
+ this.objectCarouselField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAnyElementAttribute()]
+ public System.Xml.XmlElement[] Any {
+ get {
+ return this.anyField;
+ }
+ set {
+ this.anyField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute(DataType="NMTOKEN")]
+ public string id {
+ get {
+ return this.idField;
+ }
+ set {
+ this.idField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute()]
+ 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(contentAcquisitionMethodType.pull)]
+ public contentAcquisitionMethodType contentIngestMethod {
+ get {
+ return this.contentIngestMethodField;
+ }
+ set {
+ this.contentIngestMethodField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute()]
+ [System.ComponentModel.DefaultValueAttribute(transmissionModeType.resource)]
+ public transmissionModeType transmissionMode {
+ get {
+ return this.transmissionModeField;
+ }
+ set {
+ this.transmissionModeField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute(DataType="positiveInteger")]
+ public string sessionIdleTimeout {
+ get {
+ return this.sessionIdleTimeoutField;
+ }
+ set {
+ this.sessionIdleTimeoutField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAnyAttributeAttribute()]
+ public System.Xml.XmlAttribute[] AnyAttr {
+ get {
+ return this.anyAttrField;
+ }
+ set {
+ this.anyAttrField = value;
+ }
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlIncludeAttribute(typeof(GenericComponentIdentifierType))]
+ [System.Xml.Serialization.XmlIncludeAttribute(typeof(HLSComponentIdentifierType))]
+ [System.Xml.Serialization.XmlIncludeAttribute(typeof(DASHComponentIdentifierType))]
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.8.9037.0")]
+ [System.SerializableAttribute()]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ [System.Xml.Serialization.XmlTypeAttribute(Namespace="urn:dvb:metadata:MulticastSessionConfiguration:2024")]
+ public abstract partial class ServiceComponentIdentifierType {
+
+ private string manifestIdRefField;
+
+ private System.Xml.XmlAttribute[] anyAttrField;
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute(DataType="NMTOKEN")]
+ public string manifestIdRef {
+ get {
+ return this.manifestIdRefField;
+ }
+ set {
+ this.manifestIdRefField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAnyAttributeAttribute()]
+ public System.Xml.XmlAttribute[] AnyAttr {
+ get {
+ return this.anyAttrField;
+ }
+ set {
+ this.anyAttrField = value;
+ }
+ }
+ }
+
+ ///
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.8.9037.0")]
+ [System.SerializableAttribute()]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ [System.Xml.Serialization.XmlTypeAttribute(Namespace="urn:dvb:metadata:MulticastSessionConfiguration:2024")]
+ public partial class GenericComponentIdentifierType : ServiceComponentIdentifierType {
+
+ private string componentIdentifierField;
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute(DataType="NMTOKEN")]
+ public string componentIdentifier {
+ get {
+ return this.componentIdentifierField;
+ }
+ set {
+ this.componentIdentifierField = value;
+ }
+ }
+ }
+
+ ///
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.8.9037.0")]
+ [System.SerializableAttribute()]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ [System.Xml.Serialization.XmlTypeAttribute(Namespace="urn:dvb:metadata:MulticastSessionConfiguration:2024")]
+ public partial class HLSComponentIdentifierType : ServiceComponentIdentifierType {
+
+ private string mediaPlaylistLocatorField;
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute(DataType="anyURI")]
+ public string mediaPlaylistLocator {
+ get {
+ return this.mediaPlaylistLocatorField;
+ }
+ set {
+ this.mediaPlaylistLocatorField = value;
+ }
+ }
+ }
+
+ ///
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.8.9037.0")]
+ [System.SerializableAttribute()]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ [System.Xml.Serialization.XmlTypeAttribute(Namespace="urn:dvb:metadata:MulticastSessionConfiguration:2024")]
+ public partial class DASHComponentIdentifierType : ServiceComponentIdentifierType {
+
+ private string periodIdentifierField;
+
+ private uint adaptationSetIdentifierField;
+
+ private string representationIdentifierField;
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute()]
+ public string periodIdentifier {
+ get {
+ return this.periodIdentifierField;
+ }
+ set {
+ this.periodIdentifierField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute()]
+ public uint adaptationSetIdentifier {
+ get {
+ return this.adaptationSetIdentifierField;
+ }
+ set {
+ this.adaptationSetIdentifierField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute()]
+ public string representationIdentifier {
+ get {
+ return this.representationIdentifierField;
+ }
+ set {
+ this.representationIdentifierField = value;
+ }
+ }
+ }
+
+ ///
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.8.9037.0")]
+ [System.SerializableAttribute()]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ [System.Xml.Serialization.XmlTypeAttribute(Namespace="urn:dvb:metadata:MulticastSessionConfiguration:2024")]
+ public partial class ObjectCarouselType {
+
+ private object[] itemsField;
+
+ private ItemsChoiceType1[] itemsElementNameField;
+
+ private System.Xml.XmlElement[] anyField;
+
+ private string aggregateTransportSizeField;
+
+ private string aggregateContentSizeField;
+
+ private System.Xml.XmlAttribute[] anyAttrField;
+
+ ///
+ [System.Xml.Serialization.XmlElementAttribute("InitSegments", typeof(CarouselMediaPresentationResourceType))]
+ [System.Xml.Serialization.XmlElementAttribute("PresentationManifests", typeof(CarouselMediaPresentationResourceType))]
+ [System.Xml.Serialization.XmlElementAttribute("ResourceLocator", typeof(CarouselResourceLocatorType))]
+ [System.Xml.Serialization.XmlChoiceIdentifierAttribute("ItemsElementName")]
+ public object[] Items {
+ get {
+ return this.itemsField;
+ }
+ set {
+ this.itemsField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlElementAttribute("ItemsElementName")]
+ [System.Xml.Serialization.XmlIgnoreAttribute()]
+ public ItemsChoiceType1[] ItemsElementName {
+ get {
+ return this.itemsElementNameField;
+ }
+ set {
+ this.itemsElementNameField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAnyElementAttribute()]
+ public System.Xml.XmlElement[] Any {
+ get {
+ return this.anyField;
+ }
+ set {
+ this.anyField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute(DataType="positiveInteger")]
+ public string aggregateTransportSize {
+ get {
+ return this.aggregateTransportSizeField;
+ }
+ set {
+ this.aggregateTransportSizeField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute(DataType="positiveInteger")]
+ public string aggregateContentSize {
+ get {
+ return this.aggregateContentSizeField;
+ }
+ set {
+ this.aggregateContentSizeField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAnyAttributeAttribute()]
+ public System.Xml.XmlAttribute[] AnyAttr {
+ get {
+ return this.anyAttrField;
+ }
+ set {
+ this.anyAttrField = value;
+ }
+ }
+ }
+
+ ///
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.8.9037.0")]
+ [System.SerializableAttribute()]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ [System.Xml.Serialization.XmlTypeAttribute(Namespace="urn:dvb:metadata:MulticastSessionConfiguration:2024")]
+ public partial class CarouselResourceLocatorType {
+
+ private string targetAcquisitionLatencyField;
+
+ private string revalidationPeriodField;
+
+ private bool compressionPreferredField;
+
+ private System.Xml.XmlAttribute[] anyAttrField;
+
+ private string valueField;
+
+ public CarouselResourceLocatorType() {
+ this.compressionPreferredField = false;
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute(DataType="duration")]
+ public string targetAcquisitionLatency {
+ get {
+ return this.targetAcquisitionLatencyField;
+ }
+ set {
+ this.targetAcquisitionLatencyField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute(DataType="duration")]
+ public string revalidationPeriod {
+ get {
+ return this.revalidationPeriodField;
+ }
+ set {
+ this.revalidationPeriodField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute()]
+ [System.ComponentModel.DefaultValueAttribute(false)]
+ public bool compressionPreferred {
+ get {
+ return this.compressionPreferredField;
+ }
+ set {
+ this.compressionPreferredField = 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.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.8.9037.0")]
+ [System.SerializableAttribute()]
+ [System.Xml.Serialization.XmlTypeAttribute(Namespace="urn:dvb:metadata:MulticastSessionConfiguration:2024", IncludeInSchema=false)]
+ public enum ItemsChoiceType1 {
+
+ ///
+ InitSegments,
+
+ ///
+ PresentationManifests,
+
+ ///
+ ResourceLocator,
+ }
+
+ ///
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.8.9037.0")]
+ [System.SerializableAttribute()]
+ [System.Xml.Serialization.XmlTypeAttribute(Namespace="urn:dvb:metadata:MulticastSessionConfiguration:2024")]
+ public enum contentAcquisitionMethodType {
+
+ ///
+ push,
+
+ ///
+ pull,
+ }
+
+ ///
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.8.9037.0")]
+ [System.SerializableAttribute()]
+ [System.Xml.Serialization.XmlTypeAttribute(Namespace="urn:dvb:metadata:MulticastSessionConfiguration:2024")]
+ public enum transmissionModeType {
+
+ ///
+ resource,
+
+ ///
+ chunked,
+ }
+
+ ///
+ [System.Xml.Serialization.XmlIncludeAttribute(typeof(MulticastTransportSessionType))]
+ [System.Xml.Serialization.XmlIncludeAttribute(typeof(MulticastGatewayConfigurationTransportSessionType))]
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.8.9037.0")]
+ [System.SerializableAttribute()]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ [System.Xml.Serialization.XmlTypeAttribute(Namespace="urn:dvb:metadata:MulticastSessionConfiguration:2024")]
+ public partial class BaseMulticastTransportSessionType {
+
+ private MulticastTransportProtocolType transportProtocolField;
+
+ private MulticastEndpointAddressType[] endpointAddressField;
+
+ private BitRateType bitRateField;
+
+ private ForwardErrorCorrectionParametersType[] forwardErrorCorrectionParametersField;
+
+ private UnicastRepairParametersType unicastRepairParametersField;
+
+ private string serviceClassField;
+
+ private transportSecurityType transportSecurityField;
+
+ public BaseMulticastTransportSessionType() {
+ this.transportSecurityField = transportSecurityType.none;
+ }
+
+ ///
+ public MulticastTransportProtocolType TransportProtocol {
+ get {
+ return this.transportProtocolField;
+ }
+ set {
+ this.transportProtocolField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlElementAttribute("EndpointAddress")]
+ public MulticastEndpointAddressType[] EndpointAddress {
+ get {
+ return this.endpointAddressField;
+ }
+ set {
+ this.endpointAddressField = value;
+ }
+ }
+
+ ///
+ public BitRateType BitRate {
+ get {
+ return this.bitRateField;
+ }
+ set {
+ this.bitRateField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlElementAttribute("ForwardErrorCorrectionParameters")]
+ public ForwardErrorCorrectionParametersType[] ForwardErrorCorrectionParameters {
+ get {
+ return this.forwardErrorCorrectionParametersField;
+ }
+ set {
+ this.forwardErrorCorrectionParametersField = value;
+ }
+ }
+
+ ///
+ public UnicastRepairParametersType UnicastRepairParameters {
+ get {
+ return this.unicastRepairParametersField;
+ }
+ set {
+ this.unicastRepairParametersField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute(DataType="anyURI")]
+ public string serviceClass {
+ get {
+ return this.serviceClassField;
+ }
+ set {
+ this.serviceClassField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute()]
+ [System.ComponentModel.DefaultValueAttribute(transportSecurityType.none)]
+ public transportSecurityType transportSecurity {
+ get {
+ return this.transportSecurityField;
+ }
+ set {
+ this.transportSecurityField = value;
+ }
+ }
+ }
+
+ ///
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.8.9037.0")]
+ [System.SerializableAttribute()]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ [System.Xml.Serialization.XmlTypeAttribute(Namespace="urn:dvb:metadata:MulticastSessionConfiguration:2024")]
+ public partial class MulticastTransportProtocolType {
+
+ private string protocolIdentifierField;
+
+ private string protocolVersionField;
+
+ private System.Xml.XmlAttribute[] anyAttrField;
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute()]
+ public string protocolIdentifier {
+ get {
+ return this.protocolIdentifierField;
+ }
+ set {
+ this.protocolIdentifierField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute(DataType="positiveInteger")]
+ public string protocolVersion {
+ get {
+ return this.protocolVersionField;
+ }
+ set {
+ this.protocolVersionField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAnyAttributeAttribute()]
+ public System.Xml.XmlAttribute[] AnyAttr {
+ get {
+ return this.anyAttrField;
+ }
+ set {
+ this.anyAttrField = value;
+ }
+ }
+ }
+
+ ///
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.8.9037.0")]
+ [System.SerializableAttribute()]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ [System.Xml.Serialization.XmlTypeAttribute(Namespace="urn:dvb:metadata:MulticastSessionConfiguration:2024")]
+ public partial class MulticastEndpointAddressType {
+
+ private string networkSourceAddressField;
+
+ private string networkDestinationGroupAddressField;
+
+ private string transportDestinationPortField;
+
+ private string mediaTransportSessionIdentifierField;
+
+ private System.Xml.XmlElement[] anyField;
+
+ private System.Xml.XmlAttribute[] anyAttrField;
+
+ ///
+ public string NetworkSourceAddress {
+ get {
+ return this.networkSourceAddressField;
+ }
+ set {
+ this.networkSourceAddressField = value;
+ }
+ }
+
+ ///
+ public string NetworkDestinationGroupAddress {
+ get {
+ return this.networkDestinationGroupAddressField;
+ }
+ set {
+ this.networkDestinationGroupAddressField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlElementAttribute(DataType="positiveInteger")]
+ public string TransportDestinationPort {
+ get {
+ return this.transportDestinationPortField;
+ }
+ set {
+ this.transportDestinationPortField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlElementAttribute(DataType="positiveInteger")]
+ public string MediaTransportSessionIdentifier {
+ get {
+ return this.mediaTransportSessionIdentifierField;
+ }
+ set {
+ this.mediaTransportSessionIdentifierField = 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", "4.8.9037.0")]
+ [System.SerializableAttribute()]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ [System.Xml.Serialization.XmlTypeAttribute(Namespace="urn:dvb:metadata:MulticastSessionConfiguration:2024")]
+ public partial class BitRateType {
+
+ private string averageField;
+
+ private string maximumField;
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute(DataType="positiveInteger")]
+ public string average {
+ get {
+ return this.averageField;
+ }
+ set {
+ this.averageField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute(DataType="positiveInteger")]
+ public string maximum {
+ get {
+ return this.maximumField;
+ }
+ set {
+ this.maximumField = value;
+ }
+ }
+ }
+
+ ///
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.8.9037.0")]
+ [System.SerializableAttribute()]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ [System.Xml.Serialization.XmlTypeAttribute(Namespace="urn:dvb:metadata:MulticastSessionConfiguration:2024")]
+ public partial class ForwardErrorCorrectionParametersType {
+
+ private string schemeIdentifierField;
+
+ private string overheadPercentageField;
+
+ private MulticastEndpointAddressType[] endpointAddressField;
+
+ private System.Xml.XmlElement[] anyField;
+
+ private System.Xml.XmlAttribute[] anyAttrField;
+
+ ///
+ public string SchemeIdentifier {
+ get {
+ return this.schemeIdentifierField;
+ }
+ set {
+ this.schemeIdentifierField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlElementAttribute(DataType="positiveInteger")]
+ public string OverheadPercentage {
+ get {
+ return this.overheadPercentageField;
+ }
+ set {
+ this.overheadPercentageField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlElementAttribute("EndpointAddress")]
+ public MulticastEndpointAddressType[] EndpointAddress {
+ get {
+ return this.endpointAddressField;
+ }
+ set {
+ this.endpointAddressField = 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", "4.8.9037.0")]
+ [System.SerializableAttribute()]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ [System.Xml.Serialization.XmlTypeAttribute(Namespace="urn:dvb:metadata:MulticastSessionConfiguration:2024")]
+ public partial class UnicastRepairParametersType {
+
+ private WeightedURIType[] baseURLField;
+
+ private System.Xml.XmlElement[] anyField;
+
+ private uint transportObjectReceptionTimeoutField;
+
+ private uint fixedBackOffPeriodField;
+
+ private uint randomBackOffPeriodField;
+
+ private string transportObjectBaseURIField;
+
+ private System.Xml.XmlAttribute[] anyAttrField;
+
+ public UnicastRepairParametersType() {
+ this.fixedBackOffPeriodField = ((uint)(0));
+ this.randomBackOffPeriodField = ((uint)(0));
+ }
+
+ ///
+ [System.Xml.Serialization.XmlElementAttribute("BaseURL")]
+ public WeightedURIType[] BaseURL {
+ get {
+ return this.baseURLField;
+ }
+ set {
+ this.baseURLField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAnyElementAttribute()]
+ public System.Xml.XmlElement[] Any {
+ get {
+ return this.anyField;
+ }
+ set {
+ this.anyField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute()]
+ public uint transportObjectReceptionTimeout {
+ get {
+ return this.transportObjectReceptionTimeoutField;
+ }
+ set {
+ this.transportObjectReceptionTimeoutField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute()]
+ [System.ComponentModel.DefaultValueAttribute(typeof(uint), "0")]
+ public uint fixedBackOffPeriod {
+ get {
+ return this.fixedBackOffPeriodField;
+ }
+ set {
+ this.fixedBackOffPeriodField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute()]
+ [System.ComponentModel.DefaultValueAttribute(typeof(uint), "0")]
+ public uint randomBackOffPeriod {
+ get {
+ return this.randomBackOffPeriodField;
+ }
+ set {
+ this.randomBackOffPeriodField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute(DataType="anyURI")]
+ public string transportObjectBaseURI {
+ get {
+ return this.transportObjectBaseURIField;
+ }
+ set {
+ this.transportObjectBaseURIField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAnyAttributeAttribute()]
+ public System.Xml.XmlAttribute[] AnyAttr {
+ get {
+ return this.anyAttrField;
+ }
+ set {
+ this.anyAttrField = value;
+ }
+ }
+ }
+
+ ///
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.8.9037.0")]
+ [System.SerializableAttribute()]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ [System.Xml.Serialization.XmlTypeAttribute(Namespace="urn:dvb:metadata:MulticastSessionConfiguration:2024")]
+ public partial class WeightedURIType {
+
+ private string relativeWeightField;
+
+ private string valueField;
+
+ public WeightedURIType() {
+ this.relativeWeightField = "1";
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute(DataType="nonNegativeInteger")]
+ [System.ComponentModel.DefaultValueAttribute("1")]
+ public string relativeWeight {
+ get {
+ return this.relativeWeightField;
+ }
+ set {
+ this.relativeWeightField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlTextAttribute(DataType="anyURI")]
+ public string Value {
+ get {
+ return this.valueField;
+ }
+ set {
+ this.valueField = value;
+ }
+ }
+ }
+
+ ///
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.8.9037.0")]
+ [System.SerializableAttribute()]
+ [System.Xml.Serialization.XmlTypeAttribute(Namespace="urn:dvb:metadata:MulticastSessionConfiguration:2024")]
+ public enum transportSecurityType {
+
+ ///
+ none,
+
+ ///
+ integrity,
+
+ ///
+ integrityAndAuthenticity,
+ }
+
+ ///
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.8.9037.0")]
+ [System.SerializableAttribute()]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ [System.Xml.Serialization.XmlTypeAttribute(Namespace="urn:dvb:metadata:MulticastSessionConfiguration:2024")]
+ public partial class MacroDefinitionType {
+
+ private string keyField;
+
+ private string valueField;
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute(DataType="NMTOKEN")]
+ public string key {
+ get {
+ return this.keyField;
+ }
+ set {
+ this.keyField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlTextAttribute()]
+ public string Value {
+ get {
+ return this.valueField;
+ }
+ set {
+ this.valueField = value;
+ }
+ }
+ }
+
+ ///
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.8.9037.0")]
+ [System.SerializableAttribute()]
+ [System.Xml.Serialization.XmlTypeAttribute(Namespace="urn:dvb:metadata:MulticastSessionConfiguration:2024", IncludeInSchema=false)]
+ public enum ItemsChoiceType {
+
+ ///
+ InitSegments,
+
+ ///
+ PresentationManifests,
+
+ ///
+ ResourceLocator,
+ }
+
+ ///
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.8.9037.0")]
+ [System.SerializableAttribute()]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ [System.Xml.Serialization.XmlTypeAttribute(Namespace="urn:dvb:metadata:MulticastSessionConfiguration:2024")]
+ [System.Xml.Serialization.XmlRootAttribute("MulticastGatewayConfiguration", Namespace="urn:dvb:metadata:MulticastSessionConfiguration:2024", IsNullable=false)]
+ public partial class MulticastGatewayConfigurationType {
+
+ private MulticastGatewayConfigurationTransportSessionType[] multicastGatewayConfigurationTransportSessionField;
+
+ private MulticastSessionType[] multicastSessionField;
+
+ private SessionReportingType multicastGatewaySessionReportingField;
+
+ private System.Xml.XmlElement[] anyField;
+
+ private uint schemaVersionField;
+
+ private string validityPeriodField;
+
+ private string validUntilField;
+
+ private System.Xml.XmlAttribute[] anyAttrField;
+
+ ///
+ [System.Xml.Serialization.XmlElementAttribute("MulticastGatewayConfigurationTransportSession")]
+ public MulticastGatewayConfigurationTransportSessionType[] MulticastGatewayConfigurationTransportSession {
+ get {
+ return this.multicastGatewayConfigurationTransportSessionField;
+ }
+ set {
+ this.multicastGatewayConfigurationTransportSessionField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlElementAttribute("MulticastSession")]
+ public MulticastSessionType[] MulticastSession {
+ get {
+ return this.multicastSessionField;
+ }
+ set {
+ this.multicastSessionField = value;
+ }
+ }
+
+ ///
+ public SessionReportingType MulticastGatewaySessionReporting {
+ get {
+ return this.multicastGatewaySessionReportingField;
+ }
+ set {
+ this.multicastGatewaySessionReportingField = 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="urn:dvb:metadata:Extensibility:2024")]
+ public uint schemaVersion {
+ get {
+ return this.schemaVersionField;
+ }
+ set {
+ this.schemaVersionField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute(DataType="duration")]
+ public string validityPeriod {
+ get {
+ return this.validityPeriodField;
+ }
+ set {
+ this.validityPeriodField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute()]
+ public string validUntil {
+ get {
+ return this.validUntilField;
+ }
+ set {
+ this.validUntilField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAnyAttributeAttribute()]
+ public System.Xml.XmlAttribute[] AnyAttr {
+ get {
+ return this.anyAttrField;
+ }
+ set {
+ this.anyAttrField = value;
+ }
+ }
+ }
+
+ ///
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.8.9037.0")]
+ [System.SerializableAttribute()]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ [System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true, Namespace="urn:dvb:metadata:Extensibility:2024")]
+ [System.Xml.Serialization.XmlRootAttribute(Namespace="urn:dvb:metadata:Extensibility:2024", IsNullable=false)]
+ public partial class NamespaceDelimiter {
+ }
+}
diff --git a/skyscraper8/Ietf/FLUTE/FLUTE-FDT.cs b/skyscraper8/Ietf/FLUTE/FLUTE-FDT.cs
new file mode 100644
index 0000000..61a2fc2
--- /dev/null
+++ b/skyscraper8/Ietf/FLUTE/FLUTE-FDT.cs
@@ -0,0 +1,975 @@
+//------------------------------------------------------------------------------
+//
+// 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 xsd, Version=4.8.9037.0.
+//
+namespace skyscraper8.Ietf.FLUTE {
+ using System.Xml.Serialization;
+
+
+ ///
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.8.9037.0")]
+ [System.SerializableAttribute()]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ [System.Xml.Serialization.XmlTypeAttribute(TypeName="FDT-InstanceType", Namespace="urn:IETF:metadata:2005:FLUTE:FDT")]
+ [System.Xml.Serialization.XmlRootAttribute("FDT-Instance", Namespace="urn:IETF:metadata:2005:FLUTE:FDT", IsNullable=false)]
+ public partial class FDTInstanceType {
+
+ private FileType[] fileField;
+
+ private uint schemaVersionField;
+
+ private string[] baseURL1Field;
+
+ private string[] baseURL2Field;
+
+ private sbyte delimiterField;
+
+ private string[] groupField;
+
+ private MBMSSessionIdentityExpiryType[] mBMSSessionIdentityExpiryField;
+
+ private System.Xml.XmlElement[] anyField;
+
+ private string expiresField;
+
+ private bool completeField;
+
+ private bool completeFieldSpecified;
+
+ private string contentTypeField;
+
+ private string contentEncodingField;
+
+ private ulong 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 bool fullFDTField;
+
+ private System.Xml.XmlAttribute[] anyAttrField;
+
+ public FDTInstanceType() {
+ this.fullFDTField = false;
+ }
+
+ ///
+ [System.Xml.Serialization.XmlElementAttribute("File")]
+ public FileType[] File {
+ get {
+ return this.fileField;
+ }
+ set {
+ this.fileField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlElementAttribute(Namespace="urn:3gpp:metadata:2009:MBMS:schemaVersion")]
+ public uint schemaVersion {
+ get {
+ return this.schemaVersionField;
+ }
+ set {
+ this.schemaVersionField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlElementAttribute("Base-URL-1", Namespace="urn:3GPP:metadata:2012:MBMS:FLUTE:FDT", DataType="anyURI")]
+ public string[] BaseURL1 {
+ get {
+ return this.baseURL1Field;
+ }
+ set {
+ this.baseURL1Field = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlElementAttribute("Base-URL-2", Namespace="urn:3GPP:metadata:2012:MBMS:FLUTE:FDT", DataType="anyURI")]
+ public string[] BaseURL2 {
+ get {
+ return this.baseURL2Field;
+ }
+ set {
+ this.baseURL2Field = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlElementAttribute(Namespace="urn:3gpp:metadata:2009:MBMS:schemaVersion")]
+ public sbyte delimiter {
+ get {
+ return this.delimiterField;
+ }
+ set {
+ this.delimiterField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlElementAttribute("Group")]
+ public string[] Group {
+ get {
+ return this.groupField;
+ }
+ set {
+ this.groupField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlElementAttribute("MBMS-Session-Identity-Expiry")]
+ public MBMSSessionIdentityExpiryType[] MBMSSessionIdentityExpiry {
+ get {
+ return this.mBMSSessionIdentityExpiryField;
+ }
+ set {
+ this.mBMSSessionIdentityExpiryField = 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 ulong 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.XmlAttributeAttribute(Form=System.Xml.Schema.XmlSchemaForm.Qualified, Namespace="urn:3GPP:metadata:2008:MBMS:FLUTE:FDT_ext")]
+ [System.ComponentModel.DefaultValueAttribute(false)]
+ public bool FullFDT {
+ get {
+ return this.fullFDTField;
+ }
+ set {
+ this.fullFDTField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAnyAttributeAttribute()]
+ public System.Xml.XmlAttribute[] AnyAttr {
+ get {
+ return this.anyAttrField;
+ }
+ set {
+ this.anyAttrField = value;
+ }
+ }
+ }
+
+ ///
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.8.9037.0")]
+ [System.SerializableAttribute()]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ [System.Xml.Serialization.XmlTypeAttribute(Namespace="urn:IETF:metadata:2005:FLUTE:FDT")]
+ public partial class FileType {
+
+ private CacheControl cacheControlField;
+
+ private sbyte delimiterField;
+
+ private AlternativeContentLocationType[] alternateContentLocation1Field;
+
+ private AlternativeContentLocationType[] alternateContentLocation2Field;
+
+ private sbyte delimiter1Field;
+
+ private string[] groupField;
+
+ private byte[] mBMSSessionIdentityField;
+
+ 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 ulong 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 string decryptionKEYURIField;
+
+ private uint fECRedundancyLevelField;
+
+ private bool fECRedundancyLevelFieldSpecified;
+
+ private string fileETagField;
+
+ private ulong[] independentUnitPositionsField;
+
+ private System.Xml.XmlAttribute[] anyAttrField;
+
+ ///
+ [System.Xml.Serialization.XmlElementAttribute("Cache-Control", Namespace="urn:3GPP:metadata:2007:MBMS:FLUTE:FDT", Order=0)]
+ public CacheControl CacheControl {
+ get {
+ return this.cacheControlField;
+ }
+ set {
+ this.cacheControlField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlElementAttribute(Namespace="urn:3gpp:metadata:2009:MBMS:schemaVersion", Order=1)]
+ public sbyte delimiter {
+ get {
+ return this.delimiterField;
+ }
+ set {
+ this.delimiterField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlElementAttribute("Alternate-Content-Location-1", Namespace="urn:3GPP:metadata:2012:MBMS:FLUTE:FDT", Order=2)]
+ public AlternativeContentLocationType[] AlternateContentLocation1 {
+ get {
+ return this.alternateContentLocation1Field;
+ }
+ set {
+ this.alternateContentLocation1Field = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlElementAttribute("Alternate-Content-Location-2", Namespace="urn:3GPP:metadata:2012:MBMS:FLUTE:FDT", Order=3)]
+ public AlternativeContentLocationType[] AlternateContentLocation2 {
+ get {
+ return this.alternateContentLocation2Field;
+ }
+ set {
+ this.alternateContentLocation2Field = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlElementAttribute("delimiter", Namespace="urn:3gpp:metadata:2009:MBMS:schemaVersion", Order=4)]
+ public sbyte delimiter1 {
+ get {
+ return this.delimiter1Field;
+ }
+ set {
+ this.delimiter1Field = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlElementAttribute("Group", Order=5)]
+ public string[] Group {
+ get {
+ return this.groupField;
+ }
+ set {
+ this.groupField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlElementAttribute("MBMS-Session-Identity", Order=6)]
+ public byte[] MBMSSessionIdentity {
+ get {
+ return this.mBMSSessionIdentityField;
+ }
+ set {
+ this.mBMSSessionIdentityField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAnyElementAttribute(Order=7)]
+ 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 ulong 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.XmlAttributeAttribute("Decryption-KEY-URI", Form=System.Xml.Schema.XmlSchemaForm.Qualified, Namespace="urn:3GPP:metadata:2009:MBMS:FLUTE:FDT_ext", DataType="anyURI")]
+ public string DecryptionKEYURI {
+ get {
+ return this.decryptionKEYURIField;
+ }
+ set {
+ this.decryptionKEYURIField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute("FEC-Redundancy-Level", Form=System.Xml.Schema.XmlSchemaForm.Qualified, Namespace="urn:3GPP:metadata:2012:MBMS:FLUTE:FDT")]
+ public uint FECRedundancyLevel {
+ get {
+ return this.fECRedundancyLevelField;
+ }
+ set {
+ this.fECRedundancyLevelField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlIgnoreAttribute()]
+ public bool FECRedundancyLevelSpecified {
+ get {
+ return this.fECRedundancyLevelFieldSpecified;
+ }
+ set {
+ this.fECRedundancyLevelFieldSpecified = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute("File-ETag", Form=System.Xml.Schema.XmlSchemaForm.Qualified, Namespace="urn:3GPP:metadata:2012:MBMS:FLUTE:FDT")]
+ public string FileETag {
+ get {
+ return this.fileETagField;
+ }
+ set {
+ this.fileETagField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute(Form=System.Xml.Schema.XmlSchemaForm.Qualified, Namespace="urn:3GPP:metadata:2015:MBMS:FLUTE:FDT")]
+ public ulong[] IndependentUnitPositions {
+ get {
+ return this.independentUnitPositionsField;
+ }
+ set {
+ this.independentUnitPositionsField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAnyAttributeAttribute()]
+ public System.Xml.XmlAttribute[] AnyAttr {
+ get {
+ return this.anyAttrField;
+ }
+ set {
+ this.anyAttrField = value;
+ }
+ }
+ }
+
+ ///
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.8.9037.0")]
+ [System.SerializableAttribute()]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ [System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true, Namespace="urn:3GPP:metadata:2007:MBMS:FLUTE:FDT")]
+ [System.Xml.Serialization.XmlRootAttribute("Cache-Control", Namespace="urn:3GPP:metadata:2007:MBMS:FLUTE:FDT", IsNullable=false)]
+ public partial class CacheControl {
+
+ private object itemField;
+
+ private ItemChoiceType itemElementNameField;
+
+ private System.Xml.XmlAttribute[] anyAttrField;
+
+ ///
+ [System.Xml.Serialization.XmlElementAttribute("Expires", typeof(uint))]
+ [System.Xml.Serialization.XmlElementAttribute("max-stale", typeof(bool))]
+ [System.Xml.Serialization.XmlElementAttribute("no-cache", typeof(bool))]
+ [System.Xml.Serialization.XmlChoiceIdentifierAttribute("ItemElementName")]
+ public object Item {
+ get {
+ return this.itemField;
+ }
+ set {
+ this.itemField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlIgnoreAttribute()]
+ public ItemChoiceType ItemElementName {
+ get {
+ return this.itemElementNameField;
+ }
+ set {
+ this.itemElementNameField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAnyAttributeAttribute()]
+ public System.Xml.XmlAttribute[] AnyAttr {
+ get {
+ return this.anyAttrField;
+ }
+ set {
+ this.anyAttrField = value;
+ }
+ }
+ }
+
+ ///
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.8.9037.0")]
+ [System.SerializableAttribute()]
+ [System.Xml.Serialization.XmlTypeAttribute(Namespace="urn:3GPP:metadata:2007:MBMS:FLUTE:FDT", IncludeInSchema=false)]
+ public enum ItemChoiceType {
+
+ ///
+ Expires,
+
+ ///
+ [System.Xml.Serialization.XmlEnumAttribute("max-stale")]
+ maxstale,
+
+ ///
+ [System.Xml.Serialization.XmlEnumAttribute("no-cache")]
+ nocache,
+ }
+
+ ///
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.8.9037.0")]
+ [System.SerializableAttribute()]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ [System.Xml.Serialization.XmlTypeAttribute(TypeName="MBMS-Session-Identity-Expiry-Type", Namespace="urn:3GPP:metadata:2005:MBMS:FLUTE:FDT")]
+ public partial class MBMSSessionIdentityExpiryType {
+
+ private uint valueField;
+
+ private byte valueField1;
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute()]
+ public uint value {
+ get {
+ return this.valueField;
+ }
+ set {
+ this.valueField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlTextAttribute()]
+ public byte Value {
+ get {
+ return this.valueField1;
+ }
+ set {
+ this.valueField1 = value;
+ }
+ }
+ }
+
+ ///
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.8.9037.0")]
+ [System.SerializableAttribute()]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ [System.Xml.Serialization.XmlTypeAttribute(TypeName="Alternative-Content-LocationType", Namespace="urn:3GPP:metadata:2012:MBMS:FLUTE:FDT")]
+ [System.Xml.Serialization.XmlRootAttribute("Alternate-Content-Location-1", Namespace="urn:3GPP:metadata:2012:MBMS:FLUTE:FDT", IsNullable=false)]
+ public partial class AlternativeContentLocationType {
+
+ private string[] alternateContentLocationField;
+
+ private System.DateTime availabilityTimeField;
+
+ private bool availabilityTimeFieldSpecified;
+
+ ///
+ [System.Xml.Serialization.XmlElementAttribute("Alternate-Content-Location", DataType="anyURI")]
+ public string[] AlternateContentLocation {
+ get {
+ return this.alternateContentLocationField;
+ }
+ set {
+ this.alternateContentLocationField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute("Availability-Time")]
+ public System.DateTime AvailabilityTime {
+ get {
+ return this.availabilityTimeField;
+ }
+ set {
+ this.availabilityTimeField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlIgnoreAttribute()]
+ public bool AvailabilityTimeSpecified {
+ get {
+ return this.availabilityTimeFieldSpecified;
+ }
+ set {
+ this.availabilityTimeFieldSpecified = value;
+ }
+ }
+ }
+}
diff --git a/skyscraper8/Ietf/FLUTE/FdtInstanceHeader.cs b/skyscraper8/Ietf/FLUTE/FdtInstanceHeader.cs
new file mode 100644
index 0000000..b6a71ef
--- /dev/null
+++ b/skyscraper8/Ietf/FLUTE/FdtInstanceHeader.cs
@@ -0,0 +1,20 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace skyscraper8.Ietf.FLUTE
+{
+ internal class FdtInstanceHeader
+ {
+ public FdtInstanceHeader(uint data)
+ {
+ this.Version = (data & 0x00f00000) >> 20;
+ this.FdtInstanceId = (data & 0x000fffff);
+ }
+
+ public uint Version { get; }
+ public uint FdtInstanceId { get; }
+ }
+}
diff --git a/skyscraper8/Ietf/FLUTE/FecHeader.cs b/skyscraper8/Ietf/FLUTE/FecHeader.cs
new file mode 100644
index 0000000..423d599
--- /dev/null
+++ b/skyscraper8/Ietf/FLUTE/FecHeader.cs
@@ -0,0 +1,21 @@
+using skyscraper5.Skyscraper.IO;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace skyscraper8.Ietf.FLUTE
+{
+ internal class FecHeader
+ {
+ public FecHeader(MemoryStream ms)
+ {
+ SourceBlockNumber = ms.ReadUInt16BE();
+ EncodingSymbolId = ms.ReadUInt16BE();
+ }
+
+ public ushort SourceBlockNumber { get; }
+ public ushort EncodingSymbolId { get; }
+ }
+}
diff --git a/skyscraper8/Ietf/FLUTE/FecObjectTransmissionInformation.cs b/skyscraper8/Ietf/FLUTE/FecObjectTransmissionInformation.cs
new file mode 100644
index 0000000..84bb6a1
--- /dev/null
+++ b/skyscraper8/Ietf/FLUTE/FecObjectTransmissionInformation.cs
@@ -0,0 +1,26 @@
+using skyscraper5.Skyscraper.IO;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace skyscraper8.Ietf.FLUTE
+{
+ internal class FecObjectTransmissionInformation
+ {
+ public FecObjectTransmissionInformation(byte[] buffer)
+ {
+ MemoryStream ms = new MemoryStream(buffer, false);
+ TransferLength = ms.ReadUInt48BE();
+ FecInstanceId = ms.ReadUInt16BE();
+ EncodingSymbolLength = ms.ReadUInt16BE();
+ MaximumSourceBlockLength = ms.ReadUInt32BE();
+ }
+
+ public ulong TransferLength { get; }
+ public ushort FecInstanceId { get; }
+ public ushort EncodingSymbolLength { get; }
+ public uint MaximumSourceBlockLength { get; }
+ }
+}
diff --git a/skyscraper8/Ietf/FLUTE/FluteListener.cs b/skyscraper8/Ietf/FLUTE/FluteListener.cs
new file mode 100644
index 0000000..0599af5
--- /dev/null
+++ b/skyscraper8/Ietf/FLUTE/FluteListener.cs
@@ -0,0 +1,246 @@
+using skyscraper5.Ietf.Rfc768;
+using skyscraper5.Ietf.Rfc971;
+using skyscraper8.DvbNip;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Net;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace skyscraper8.Ietf.FLUTE
+{
+ internal class FluteListener
+ {
+
+ internal void AddPlay(IPAddress iPAddress, int port, ulong tsi, ulong toi)
+ {
+ if (knownFlutePlays == null)
+ knownFlutePlays = new List();
+
+ FlutePlay? flutePlay = knownFlutePlays.Find(x => x.IPAddress.Equals(iPAddress) &&
+ x.Port == port &&
+ x.TSI == tsi &&
+ x.TOI == toi);
+ if (flutePlay != null)
+ return;
+
+ FlutePlay play = new FlutePlay(iPAddress, port, tsi, toi);
+ knownFlutePlays.Add(play);
+ }
+
+ internal void OnFlutePacket(IPAddress destinationAddress, ushort destinationPort, byte[] payload)
+ {
+ if (knownFlutePlays == null)
+ return;
+
+ if (eventHandler.IpFilterEnabled())
+ {
+ FlutePlay? ipFound = knownFlutePlays.Find(x => x.IPAddress.Equals(destinationAddress) && x.Port == destinationPort);
+ if (ipFound == null)
+ return;
+ }
+
+
+ LctFrame lctFrame = new LctFrame(payload);
+ eventHandler.InformToi(destinationAddress, destinationPort, lctFrame.LctHeader.TransportObjectIdentifier, lctFrame.LctHeader.TransportSessionIdentifier);
+ if (lctFrame.LctHeader.NipActualCarrierInformation != null)
+ {
+ eventHandler.OnNipCarrierInformation(lctFrame.LctHeader.NipActualCarrierInformation);
+ return;
+ }
+
+ FlutePlay? flutePlay = knownFlutePlays.Find(x => x.IPAddress.Equals(destinationAddress) &&
+ x.Port == destinationPort &&
+ x.TSI == lctFrame.LctHeader.TransportSessionIdentifier &&
+ x.TOI == lctFrame.LctHeader.TransportObjectIdentifier);
+
+ if (flutePlay == null)
+ return;
+
+ flutePlay.OnPacket(lctFrame);
+
+ if (flutePlay.IsComplete())
+ {
+ eventHandler.OnCompletePlay(flutePlay);
+ }
+ }
+
+ internal void RemoveAllPlays()
+ {
+ if (knownFlutePlays == null)
+ return;
+
+ knownFlutePlays.Clear();
+ }
+
+ internal void SetFileAssociation(IPAddress iPAddress, int port, ulong tSI, string tOI, FileType filetype)
+ {
+ ulong toiNumeric = ulong.Parse(tOI);
+
+ FlutePlay? flutePlay = knownFlutePlays.Find(x => x.IPAddress.Equals(iPAddress) &&
+ x.Port == port &&
+ x.TSI == tSI &&
+ x.TOI == toiNumeric);
+ if (flutePlay != null)
+ {
+ flutePlay.FileAssociation = filetype;
+ }
+ else
+ {
+ AddPlay(iPAddress, port, tSI, toiNumeric);
+ SetFileAssociation(iPAddress, port, tSI, tOI, filetype);
+ }
+ }
+
+ private List knownFlutePlays;
+ private IFluteEventHandler eventHandler;
+
+ public FluteListener(IFluteEventHandler dvbNipReceiver)
+ {
+ this.eventHandler = dvbNipReceiver;
+ }
+
+ public class FlutePlay
+ {
+ public FlutePlay(IPAddress iPAddress, int port, ulong tsi, ulong toi)
+ {
+ IPAddress = iPAddress;
+ Port = port;
+ TSI = tsi;
+ TOI = toi;
+ }
+
+ public override string ToString()
+ {
+ if (ignore)
+ {
+ return "";
+ }
+ return String.Format("IP={0}, Port={1}, TOI={2}, TSI={3}, Name={4}", IPAddress, Port, TOI, TSI, FileAssociation?.ContentLocation);
+ }
+
+ public IPAddress IPAddress { get; private set; }
+ public ulong TSI { get; private set; }
+ public ulong TOI { get; private set; }
+ public int Port { get; }
+ public FileType FileAssociation { get; internal set; }
+
+ private int neededEsi, neededSbn;
+ private ulong nextX, maxX;
+ private ulong encodingSymbolLength;
+ private ulong transferLength;
+ private byte[][] buffers;
+ private bool ignore;
+
+ internal void OnPacket(LctFrame lctFrame)
+ {
+ if (ignore == true)
+ return;
+
+ if (neededEsi == 0 && neededSbn == 0 && lctFrame.FecHeader.EncodingSymbolId == 0 && lctFrame.FecHeader.SourceBlockNumber == 0)
+ {
+ nextX = 0;
+ encodingSymbolLength = lctFrame.LctHeader.FecObjectTransmissionInformation.EncodingSymbolLength;
+ transferLength = lctFrame.LctHeader.FecObjectTransmissionInformation.TransferLength;
+ maxX = (transferLength / encodingSymbolLength) + 1;
+ buffers = new byte[maxX][];
+ buffers[nextX] = lctFrame.Payload;
+ neededEsi++;
+ }
+ else if (neededEsi != 0 || neededSbn != 0)
+ {
+ if (IsComplete())
+ return;
+
+ nextX++;
+ buffers[nextX] = lctFrame.Payload;
+ }
+ }
+
+ internal bool IsComplete()
+ {
+ if (ignore == true)
+ return false;
+
+ if (buffers == null)
+ return false;
+
+ ulong currentSize = 0;
+ for (int i = 0; i < buffers.Length; i++)
+ {
+ if (buffers[i] == null)
+ continue;
+ currentSize += (ulong)buffers[i].Length;
+ }
+ return currentSize >= transferLength;
+ }
+
+ public _2DMemoryStream GetStream()
+ {
+ return new _2DMemoryStream(buffers);
+ }
+
+
+ public void WriteToFile(string filename)
+ {
+ FileInfo fi = new FileInfo(filename);
+ if (fi.Exists)
+ fi.Delete();
+ FileStream fileStream = fi.OpenWrite();
+ _2DMemoryStream _2DMemoryStream = GetStream();
+ _2DMemoryStream.CopyTo(fileStream);
+ fileStream.Flush();
+ fileStream.Close();
+ fileStream.Dispose();
+ }
+
+ internal void SetIgnore(bool v)
+ {
+ if (v)
+ {
+ for (int i = 0; i < buffers.Length; i++)
+ {
+ buffers[i] = null;
+ }
+ buffers = null;
+ ignore = true;
+ }
+ else
+ {
+ neededEsi = 0;
+ neededSbn = 0;
+ nextX = 0;
+ buffers = new byte[maxX][];
+ ignore = false;
+ }
+ }
+
+ public bool Validate()
+ {
+ if (buffers.Length == 1)
+ {
+ if (buffers[0] != null)
+ return true;
+ else
+ return false;
+ }
+ int lengthA = buffers[0].Length;
+ for (int i = 1; i < buffers.Length; i++)
+ {
+ if (buffers[i].Length == lengthA)
+ continue;
+ else if (buffers[i].Length < lengthA)
+ lengthA = buffers[i].Length;
+ else if (buffers[i].Length > lengthA)
+ return false;
+ else
+ throw new NotImplementedException("Failed to validate a FLUTE play");
+ }
+ return true;
+ }
+ }
+
+
+ }
+}
diff --git a/skyscraper8/Ietf/FLUTE/FluteUtilities.cs b/skyscraper8/Ietf/FLUTE/FluteUtilities.cs
new file mode 100644
index 0000000..b0cc8ba
--- /dev/null
+++ b/skyscraper8/Ietf/FLUTE/FluteUtilities.cs
@@ -0,0 +1,32 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Xml.Serialization;
+
+namespace skyscraper8.Ietf.FLUTE
+{
+ internal class FluteUtilities
+ {
+ private static XmlSerializer fdtSerializer;
+
+ public static FDTInstanceType UnpackFluteFdt(byte[] buffer)
+ {
+ MemoryStream ms = new MemoryStream(buffer, false);
+ FDTInstanceType result = UnpackFluteFdt(ms);
+ ms.Close();
+ ms.Dispose();
+ return result;
+ }
+
+ public static FDTInstanceType UnpackFluteFdt(Stream ms)
+ {
+ if (fdtSerializer == null)
+ fdtSerializer = new XmlSerializer(typeof(FDTInstanceType));
+
+ FDTInstanceType result = (FDTInstanceType)fdtSerializer.Deserialize(ms);
+ return result;
+ }
+ }
+}
diff --git a/skyscraper8/Ietf/FLUTE/IFluteEventHandler.cs b/skyscraper8/Ietf/FLUTE/IFluteEventHandler.cs
new file mode 100644
index 0000000..9a65883
--- /dev/null
+++ b/skyscraper8/Ietf/FLUTE/IFluteEventHandler.cs
@@ -0,0 +1,18 @@
+using skyscraper8.DvbNip;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Net;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace skyscraper8.Ietf.FLUTE
+{
+ internal interface IFluteEventHandler
+ {
+ void InformToi(IPAddress destinationAddress, ushort destinationPort, ulong transportObjectIdentifier, ulong transportSessionIdentifier);
+ bool IpFilterEnabled();
+ void OnCompletePlay(FluteListener.FlutePlay flutePlay);
+ void OnNipCarrierInformation(NipActualCarrierInformation nipActualCarrierInformation);
+ }
+}
diff --git a/skyscraper8/Ietf/FLUTE/LctFrame.cs b/skyscraper8/Ietf/FLUTE/LctFrame.cs
new file mode 100644
index 0000000..2d3c5b5
--- /dev/null
+++ b/skyscraper8/Ietf/FLUTE/LctFrame.cs
@@ -0,0 +1,64 @@
+using skyscraper5.Skyscraper.IO;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace skyscraper8.Ietf.FLUTE
+{
+ internal class LctFrame
+ {
+ public LctFrame(byte[] buffer)
+ {
+ MemoryStream ms = new MemoryStream(buffer, false);
+ byte byteA = ms.ReadUInt8();
+ this.Version = (byteA & 0xf0) >> 4;
+ this.CongestionControlFlag = (byteA & 0xc0) >> 2;
+ this.ProtocolSpecificIndication = (byteA & 0x03);
+ byte byteB = ms.ReadUInt8();
+ this.TransportSessionIdentifierFlag = (byteB & 0x80) != 0;
+ this.TransportObjectIdentifierFlag = (byteB & 0x60) >> 5;
+ this.HalfWordFlag = (byteB & 0x10) != 0;
+ int reserved = (byteB & 0x0c) >> 2;
+ this.CloseSessionFlag = (byteB & 0x02) != 0;
+ this.CloseObjectFlag = (byteB & 0x01) != 0;
+
+ if (this.Version != 1)
+ throw new NotSupportedException(String.Format("FLUTE Version {0}", Version));
+
+ int HeaderLength = ms.ReadUInt8();
+ HeaderLength *= 4;
+ HeaderLength -= 4;
+
+ this.Codepoint = ms.ReadUInt8();
+
+ byte[] headerBuffer = ms.ReadBytes(HeaderLength);
+ this.LctHeader = new LctHeader(headerBuffer,CongestionControlFlag,TransportSessionIdentifierFlag,TransportObjectIdentifierFlag,HalfWordFlag);
+
+ if (ms.GetAvailableBytes() < 4)
+ return;
+
+ this.FecHeader = new FecHeader(ms);
+
+ long avails = ms.GetAvailableBytes();
+ if (avails == 0)
+ return;
+
+ Payload = ms.ReadBytes(ms.GetAvailableBytes());
+ }
+
+ public int Version { get; }
+ public int CongestionControlFlag { get; }
+ public int ProtocolSpecificIndication { get; }
+ public byte Codepoint { get; }
+ public LctHeader LctHeader { get; }
+ public bool TransportSessionIdentifierFlag { get; }
+ public int TransportObjectIdentifierFlag { get; }
+ public bool HalfWordFlag { get; }
+ public bool CloseSessionFlag { get; }
+ public bool CloseObjectFlag { get; }
+ public FecHeader FecHeader { get; }
+ public byte[] Payload { get; }
+ }
+}
diff --git a/skyscraper8/Ietf/FLUTE/LctHeader.cs b/skyscraper8/Ietf/FLUTE/LctHeader.cs
new file mode 100644
index 0000000..0a4a0ad
--- /dev/null
+++ b/skyscraper8/Ietf/FLUTE/LctHeader.cs
@@ -0,0 +1,100 @@
+using skyscraper5.Skyscraper.IO;
+using skyscraper8.DvbNip;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace skyscraper8.Ietf.FLUTE
+{
+ internal class LctHeader
+ {
+ ///
+ ///
+ ///
+ /// A buffer that contains an LCT Header starting from the first byte of the Congestion Control Information
+ /// Congestion control flag
+ /// Transport Session Identifier flag
+ /// Transport Object Identifier flag
+ /// Half-word flag
+ ///
+ public LctHeader(byte[] headerBuffer, int c, bool sFlag, int o, bool hFlag)
+ {
+ int s = sFlag ? 1 : 0;
+ int h = hFlag ? 1 : 0;
+
+ MemoryStream ms = new MemoryStream(headerBuffer, false);
+ int cciLength = 32 * (c + 1);
+ int tsiLength = 32 * s + 16 * h;
+ int toiLength = 32 * o + 16 * h;
+
+ CongestionControlInformation = ReadField(ms, cciLength);
+ TransportSessionIdentifier = ReadField(ms, tsiLength);
+ TransportObjectIdentifier = ReadField(ms, toiLength);
+
+ while (ms.GetAvailableBytes() >= 1)
+ {
+ byte extensionId = ms.ReadUInt8();
+ if (extensionId >= 128)
+ {
+ ms.Position--;
+ uint fixedHeaderExtension = ms.ReadUInt32BE();
+ switch (extensionId)
+ {
+ case 192:
+ this.FdtInstanceId = new FdtInstanceHeader(fixedHeaderExtension);
+ break;
+ default:
+ throw new NotImplementedException(String.Format("LCT Header Extension {0}", extensionId));
+ }
+ }
+ else
+ {
+ uint headerExtensionLength = ms.ReadUInt8();
+ headerExtensionLength *= 4;
+ if (headerExtensionLength >= 2)
+ headerExtensionLength -= 2;
+ byte[] extensionBuffer = ms.ReadBytes(headerExtensionLength);
+ switch(extensionId)
+ {
+ case 0:
+ break;
+ case 64:
+ this.FecObjectTransmissionInformation = new FecObjectTransmissionInformation(extensionBuffer);
+ break;
+ case 68:
+ this.NipActualCarrierInformation = new NipActualCarrierInformation(extensionBuffer);
+ break;
+ default:
+ throw new NotImplementedException(String.Format("LCT Header Extension {0}", extensionId));
+ }
+ }
+
+ }
+ }
+
+ private ulong ReadField(Stream stream, int bits)
+ {
+ switch(bits)
+ {
+ case 16:
+ return stream.ReadUInt16BE();
+ case 32:
+ return stream.ReadUInt32BE();
+ case 48:
+ return stream.ReadUInt48BE();
+ case 64:
+ return stream.ReadUInt64BE();
+ default:
+ throw new NotImplementedException(String.Format("{0} bits.", bits));
+ }
+ }
+ public ulong CongestionControlInformation { get; private set; }
+ public ulong TransportSessionIdentifier { get; }
+ public ulong TransportObjectIdentifier { get; }
+ public FdtInstanceHeader FdtInstanceId { get; }
+ public NipActualCarrierInformation NipActualCarrierInformation { get; }
+ public FecObjectTransmissionInformation FecObjectTransmissionInformation { get; }
+ }
+}
diff --git a/skyscraper8/Ietf/FLUTE/_2DMemoryStream.cs b/skyscraper8/Ietf/FLUTE/_2DMemoryStream.cs
new file mode 100644
index 0000000..764250e
--- /dev/null
+++ b/skyscraper8/Ietf/FLUTE/_2DMemoryStream.cs
@@ -0,0 +1,149 @@
+using skyscraper5.Dvb.DataBroadcasting.Biop;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Runtime.CompilerServices;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace skyscraper8.Ietf.FLUTE
+{
+ internal class _2DMemoryStream : Stream
+ {
+ public _2DMemoryStream(byte[][] backing)
+ {
+ this.backing = backing;
+ this.myModuleLength = backing.Select(x => x.Length).Sum();
+ }
+
+ private byte[][] backing;
+ private long currentPosition;
+ private long myModuleLength;
+
+ public override void Flush()
+ {
+ }
+
+ [MethodImpl(MethodImplOptions.AggressiveInlining)]
+ private int GetRequiredBlockId(long position)
+ {
+ for (int i = 0; i < backing.Length; i++)
+ {
+ if (backing[i].Length > position)
+ {
+ return i;
+ }
+
+ position -= backing[i].Length;
+ }
+ throw new ArgumentOutOfRangeException(nameof(position));
+ }
+
+ [MethodImpl(MethodImplOptions.AggressiveInlining)]
+ private int GetOffsetInBlock(long position)
+ {
+ for (int i = 0; i < backing.Length; i++)
+ {
+ if (backing[i].Length > position)
+ {
+ return (int)position;
+ }
+
+ position -= backing[i].Length;
+ }
+ throw new ArgumentOutOfRangeException(nameof(position));
+ }
+
+ public override int Read(byte[] buffer, int offset, int count)
+ {
+ if (closed)
+ {
+ throw new ObjectDisposedException("This module is already disposed.");
+ }
+
+ if (Position + count > Length)
+ {
+ count = (int)(Length - Position);
+ }
+
+ if (Position == Length)
+ return 0;
+
+ int requiredBlockId = GetRequiredBlockId(currentPosition);
+ int offsetInBlock = GetOffsetInBlock(currentPosition);
+ int remainingInBlock = backing[requiredBlockId].Length - offsetInBlock;
+ int bytesToCopy = Math.Min(remainingInBlock, count);
+ int stillNeededToCopy = count - bytesToCopy;
+
+ Array.Copy(backing[requiredBlockId], offsetInBlock, buffer, offset, bytesToCopy);
+ Position += bytesToCopy;
+ int result = bytesToCopy;
+ offset += bytesToCopy;
+ count -= bytesToCopy;
+
+ while (stillNeededToCopy > 0)
+ {
+ requiredBlockId++;
+ offsetInBlock = 0;
+ remainingInBlock = backing[requiredBlockId].Length - offsetInBlock;
+ bytesToCopy = Math.Min(remainingInBlock, count);
+ stillNeededToCopy = count - bytesToCopy;
+
+ Array.Copy(backing[requiredBlockId], offsetInBlock, buffer, offset, bytesToCopy);
+ Position += bytesToCopy;
+ result += bytesToCopy;
+ offset += bytesToCopy;
+ count -= bytesToCopy;
+ }
+ return result;
+ }
+
+ public override long Seek(long offset, SeekOrigin origin)
+ {
+ switch (origin)
+ {
+ case SeekOrigin.Begin:
+ currentPosition = offset;
+ break;
+ case SeekOrigin.Current:
+ currentPosition += offset;
+ break;
+ case SeekOrigin.End:
+ currentPosition = Length + offset;
+ break;
+ default:
+ throw new NotImplementedException(origin.ToString());
+ }
+ return currentPosition;
+ }
+
+ public override void SetLength(long value)
+ {
+ throw new NotSupportedException("Can't modify the length of a 2DArray");
+ }
+
+ public override void Write(byte[] buffer, int offset, int count)
+ {
+ throw new NotSupportedException("Can't write to a 2DArray");
+ }
+
+ public override bool CanRead => true;
+ public override bool CanSeek => true;
+ public override bool CanWrite => false;
+ public override long Length => myModuleLength;
+
+ public override long Position
+ {
+ get => currentPosition;
+ set => Seek(value, SeekOrigin.Begin);
+ }
+
+ public override bool CanTimeout => false;
+
+ private bool closed;
+ public override void Close()
+ {
+ closed = true;
+ }
+ }
+}
diff --git a/skyscraper8/Ietf/Rfc2236/IgmpMessage.cs b/skyscraper8/Ietf/Rfc2236_IGMP/IgmpMessage.cs
similarity index 100%
rename from skyscraper8/Ietf/Rfc2236/IgmpMessage.cs
rename to skyscraper8/Ietf/Rfc2236_IGMP/IgmpMessage.cs
diff --git a/skyscraper8/Ietf/Rfc2236/IgmpType.cs b/skyscraper8/Ietf/Rfc2236_IGMP/IgmpType.cs
similarity index 100%
rename from skyscraper8/Ietf/Rfc2236/IgmpType.cs
rename to skyscraper8/Ietf/Rfc2236_IGMP/IgmpType.cs
diff --git a/skyscraper8/Ietf/Rfc2460/Ipv6Header.cs b/skyscraper8/Ietf/Rfc2460_IPv6/Ipv6Header.cs
similarity index 100%
rename from skyscraper8/Ietf/Rfc2460/Ipv6Header.cs
rename to skyscraper8/Ietf/Rfc2460_IPv6/Ipv6Header.cs
diff --git a/skyscraper8/Ietf/Rfc768/UserDatagram.cs b/skyscraper8/Ietf/Rfc768_UDP/UserDatagram.cs
similarity index 100%
rename from skyscraper8/Ietf/Rfc768/UserDatagram.cs
rename to skyscraper8/Ietf/Rfc768_UDP/UserDatagram.cs
diff --git a/skyscraper8/Ietf/Rfc826/ArpHeader.cs b/skyscraper8/Ietf/Rfc826_ARP/ArpHeader.cs
similarity index 100%
rename from skyscraper8/Ietf/Rfc826/ArpHeader.cs
rename to skyscraper8/Ietf/Rfc826_ARP/ArpHeader.cs
diff --git a/skyscraper8/Ietf/Rfc971/InternetHeader.cs b/skyscraper8/Ietf/Rfc971_IPv4/InternetHeader.cs
similarity index 100%
rename from skyscraper8/Ietf/Rfc971/InternetHeader.cs
rename to skyscraper8/Ietf/Rfc971_IPv4/InternetHeader.cs
diff --git a/skyscraper8/Ietf/Rfc971/TypeOfService.cs b/skyscraper8/Ietf/Rfc971_IPv4/TypeOfService.cs
similarity index 100%
rename from skyscraper8/Ietf/Rfc971/TypeOfService.cs
rename to skyscraper8/Ietf/Rfc971_IPv4/TypeOfService.cs
diff --git a/skyscraper8/Properties/launchSettings.json b/skyscraper8/Properties/launchSettings.json
index 9e3ea99..ccb8be3 100644
--- a/skyscraper8/Properties/launchSettings.json
+++ b/skyscraper8/Properties/launchSettings.json
@@ -2,7 +2,7 @@
"profiles": {
"skyscraper8": {
"commandName": "Project",
- "commandLineArgs": "file-live \"C:\\Temp\\Astra1_12604_v_SGT-000000.ts\"",
+ "commandLineArgs": "file-live \"C:\\Temp\\dvbnip-000000.ts\"",
"remoteDebugEnabled": false
},
"Container (Dockerfile)": {
diff --git a/skyscraper8/Skyscraper/IO/StreamExtensions.cs b/skyscraper8/Skyscraper/IO/StreamExtensions.cs
index c2e04c6..575b023 100644
--- a/skyscraper8/Skyscraper/IO/StreamExtensions.cs
+++ b/skyscraper8/Skyscraper/IO/StreamExtensions.cs
@@ -67,6 +67,15 @@ namespace skyscraper5.Skyscraper.IO
return BitConverter.ToInt32(buffer, 0);
}
+ public static ulong ReadUInt48BE(this Stream stream)
+ {
+ ulong result = 0;
+ result = ReadUInt16BE(stream);
+ result <<= 32;
+ result += ReadUInt32BE(stream);
+ return result;
+ }
+
public static long ReadInt64LE(this Stream stream)
{
if (stream.Read(buffer, 0, 8) != 8)