🐛 Fix source switching crash & enhance stability (v3.0.4)
### 🐛 Bug Fixes - Fix random crashes when switching video sources in settings management - Enhanced VodConfig.setHome() null pointer exception handling - Improved Fragment lifecycle checks to prevent crashes - Optimized HistoryDialog source switching safety - Enhanced thread safety for concurrent loading ### ⚡ Performance Improvements - Added automatic cache cleaning functionality - Improved memory usage optimization - Enhanced network request stability ### 🆕 New Features - Added comprehensive error handling mechanisms - Enhanced crash protection functionality - Improved Fragment state validation ### 📱 Build Improvements - Updated README with professional documentation - Enhanced build configuration for ARM64-V8A and ARM V7A - Improved APK packaging and signing process
This commit is contained in:
@@ -0,0 +1,354 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xsd:schema targetNamespace="urn:schemas-upnp-org:metadata-1-0/AVT/"
|
||||
xmlns:avt="urn:schemas-upnp-org:metadata-1-0/AVT/"
|
||||
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
|
||||
elementFormDefault="qualified" attributeFormDefault="unqualified">
|
||||
|
||||
<!--
|
||||
TODO: This schema was copied from AVTransport1.0.pdf.
|
||||
Apparently the UPnP clowns couldn't agree if it is *Metadata or *MetaData.
|
||||
So I've made changes and now all elements are called *MetaData, like the
|
||||
state variables in the spec. That _will_ break if someone really uses
|
||||
the original schema.
|
||||
-->
|
||||
|
||||
<xsd:annotation>
|
||||
<xsd:documentation xml:lang="en">
|
||||
Schema for UPnP A/V AVTransport Service events, version 0.1(sic!)
|
||||
</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
|
||||
<!--============================================================
|
||||
|
||||
'Event' is the root element of AVTransport event document fragments.
|
||||
'InstanceID' is the only valid child of 'Event'.
|
||||
|
||||
============================================================-->
|
||||
<xsd:element name="Event">
|
||||
<xsd:complexType>
|
||||
<xsd:annotation>
|
||||
<xsd:documentation>Event is the root
|
||||
element
|
||||
</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
<xsd:choice minOccurs="0" maxOccurs="unbounded">
|
||||
<xsd:element ref="avt:InstanceID"/>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
|
||||
<!--============================================================
|
||||
|
||||
'InstanceID' elements identify an individual event instance.
|
||||
|
||||
============================================================-->
|
||||
<xsd:group name="allowed-under-InstanceID">
|
||||
<xsd:annotation>
|
||||
<xsd:documentation>
|
||||
This group defines the elements allowed under the InstanceID element
|
||||
</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
<xsd:choice>
|
||||
<xsd:element ref="avt:TransportState"/>
|
||||
<xsd:element ref="avt:TransportStatus"/>
|
||||
<xsd:element ref="avt:PlaybackStorageMedium"/>
|
||||
<xsd:element ref="avt:RecordStorageMedium"/>
|
||||
<xsd:element ref="avt:PossiblePlaybackStorageMedia"/>
|
||||
<xsd:element ref="avt:PossibleRecordStorageMedia"/>
|
||||
<xsd:element ref="avt:CurrentPlayMode"/>
|
||||
<xsd:element ref="avt:TransportPlaySpeed"/>
|
||||
<xsd:element ref="avt:RecordMediumWriteStatus"/>
|
||||
<xsd:element ref="avt:CurrentRecordQualityMode"/>
|
||||
<xsd:element ref="avt:PossibleRecordQualityModes"/>
|
||||
<xsd:element ref="avt:NumberOfTracks"/>
|
||||
<xsd:element ref="avt:CurrentTransportActions"/>
|
||||
<xsd:element ref="avt:CurrentTrack"/>
|
||||
<xsd:element ref="avt:CurrentTrackDuration"/>
|
||||
<xsd:element ref="avt:CurrentMediaDuration"/>
|
||||
<xsd:element ref="avt:CurrentTrackURI"/>
|
||||
<xsd:element ref="avt:CurrentTrackMetaData"/>
|
||||
<xsd:element ref="avt:AVTransportURI"/>
|
||||
<xsd:element ref="avt:AVTransportURIMetaData"/>
|
||||
<xsd:element ref="avt:NextAVTransportURI"/>
|
||||
<xsd:element ref="avt:NextAVTransportURIMetaData"/>
|
||||
</xsd:choice>
|
||||
</xsd:group>
|
||||
<xsd:element name="InstanceID">
|
||||
<xsd:complexType>
|
||||
<xsd:annotation>
|
||||
<xsd:documentation>
|
||||
InstanceID elements identify an individual event instance.
|
||||
</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
<xsd:choice minOccurs="0" maxOccurs="unbounded">
|
||||
<xsd:group ref="avt:allowed-under-InstanceID"/>
|
||||
</xsd:choice>
|
||||
<!-- TODO: That attribute was missing in the spec! -->
|
||||
<xsd:attribute name="val" type="xsd:unsignedInt" use="required"/>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
|
||||
<!--============================================================
|
||||
|
||||
TransportState
|
||||
|
||||
============================================================-->
|
||||
<xsd:element name="TransportState">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="val" use="required">
|
||||
<xsd:simpleType>
|
||||
<xsd:restriction base="xsd:string">
|
||||
<xsd:enumeration value="STOPPED"/>
|
||||
<xsd:enumeration value="PLAYING"/>
|
||||
<xsd:enumeration value="TRANSITIONING"/>
|
||||
<xsd:enumeration value="PAUSED_PLAYBACK"/>
|
||||
<xsd:enumeration value="PAUSED_RECORDING"/>
|
||||
<xsd:enumeration value="RECORDING"/>
|
||||
<xsd:enumeration value="NO_MEDIA_PRESENT"/>
|
||||
</xsd:restriction>
|
||||
</xsd:simpleType>
|
||||
</xsd:attribute>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
|
||||
<!--============================================================
|
||||
|
||||
TransportStatus
|
||||
|
||||
============================================================-->
|
||||
<xsd:element name="TransportStatus">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="val" use="required">
|
||||
<xsd:simpleType>
|
||||
<xsd:restriction base="xsd:string">
|
||||
<xsd:enumeration value="OK"/>
|
||||
<xsd:enumeration value="ERROR_OCCURRED"/>
|
||||
</xsd:restriction>
|
||||
</xsd:simpleType>
|
||||
</xsd:attribute>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
|
||||
<!--============================================================
|
||||
|
||||
PlaybackStorageMedium
|
||||
|
||||
============================================================-->
|
||||
<xsd:element name="PlaybackStorageMedium">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="val" type="xsd:string" use="required"/>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
|
||||
<!--============================================================
|
||||
|
||||
RecordStorageMedium
|
||||
|
||||
============================================================-->
|
||||
<xsd:element name="RecordStorageMedium">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="val" type="xsd:string" use="required"/>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
|
||||
<!--============================================================
|
||||
|
||||
PossiblePlaybackStorageMedia
|
||||
|
||||
============================================================-->
|
||||
<xsd:element name="PossiblePlaybackStorageMedia">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="val" type="xsd:string" use="required"/>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
|
||||
<!--============================================================
|
||||
|
||||
PossibleRecordStorageMedia
|
||||
|
||||
============================================================-->
|
||||
<xsd:element name="PossibleRecordStorageMedia">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="val" type="xsd:string" use="required"/>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
|
||||
<!--============================================================
|
||||
|
||||
CurrentPlayMode
|
||||
|
||||
============================================================-->
|
||||
<xsd:element name="CurrentPlayMode">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="val" type="xsd:string" use="required"/>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
|
||||
<!--============================================================
|
||||
|
||||
TransportPlaySpeed
|
||||
|
||||
============================================================-->
|
||||
<xsd:element name="TransportPlaySpeed">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="val" type="xsd:string" use="required"/>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
|
||||
<!--============================================================
|
||||
|
||||
RecordMediumWriteStatus
|
||||
|
||||
============================================================-->
|
||||
<xsd:element name="RecordMediumWriteStatus">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="val" type="xsd:string" use="required"/>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
|
||||
<!--============================================================
|
||||
|
||||
CurrentRecordQualityMode
|
||||
|
||||
============================================================-->
|
||||
<xsd:element name="CurrentRecordQualityMode">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="val" type="xsd:string" use="required"/>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
|
||||
<!--============================================================
|
||||
|
||||
PossibleRecordQualityModes (!!! TYPO IN SPEC !!!)
|
||||
|
||||
============================================================-->
|
||||
<xsd:element name="PossibleRecordQualityModes">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="val" type="xsd:string" use="required"/>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
|
||||
<!--============================================================
|
||||
|
||||
NumberOfTracks
|
||||
|
||||
============================================================-->
|
||||
<xsd:element name="NumberOfTracks">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="val" type="xsd:unsignedInt"
|
||||
use="required"/>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
|
||||
<!--============================================================
|
||||
|
||||
CurrentTrack
|
||||
|
||||
============================================================-->
|
||||
<xsd:element name="CurrentTrack">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="val" type="xsd:unsignedInt"
|
||||
use="required"/>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
|
||||
<!--============================================================
|
||||
|
||||
CurrentTrackDuration
|
||||
|
||||
============================================================-->
|
||||
<xsd:element name="CurrentTrackDuration">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="val" type="xsd:string" use="required"/>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
|
||||
<!--============================================================
|
||||
|
||||
CurrentMediaDuration
|
||||
|
||||
============================================================-->
|
||||
<xsd:element name="CurrentMediaDuration">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="val" type="xsd:string" use="required"/>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
|
||||
<!--============================================================
|
||||
|
||||
CurrentTrackMetaData
|
||||
|
||||
============================================================-->
|
||||
<xsd:element name="CurrentTrackMetaData">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="val" type="xsd:string" use="required"/>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
|
||||
<!--============================================================
|
||||
|
||||
CurrentTrackURI
|
||||
|
||||
============================================================-->
|
||||
<xsd:element name="CurrentTrackURI">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="val" type="xsd:string" use="required"/>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
|
||||
<!--============================================================
|
||||
|
||||
AVTransportURI
|
||||
|
||||
============================================================-->
|
||||
<xsd:element name="AVTransportURI">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="val" type="xsd:string" use="required"/>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
|
||||
<!--============================================================
|
||||
|
||||
AVTransportURIMetaData
|
||||
|
||||
============================================================-->
|
||||
<xsd:element name="AVTransportURIMetaData">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="val" type="xsd:string" use="required"/>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
|
||||
<!--============================================================
|
||||
|
||||
NextAVTransportURI
|
||||
|
||||
============================================================-->
|
||||
<xsd:element name="NextAVTransportURI">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="val" type="xsd:string" use="required"/>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
|
||||
<!--============================================================
|
||||
|
||||
NextAVTransportURIMetaData
|
||||
|
||||
============================================================-->
|
||||
<xsd:element name="NextAVTransportURIMetaData">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="val" type="xsd:string" use="required"/>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
|
||||
<!--============================================================
|
||||
|
||||
CurrentTransportActions
|
||||
|
||||
============================================================-->
|
||||
<xsd:element name="CurrentTransportActions">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="val" type="xsd:string" use="required"/>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
|
||||
</xsd:schema>
|
||||
@@ -0,0 +1,403 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xsd:schema targetNamespace="urn:schemas-upnp-org:metadata-1-0/AVT/"
|
||||
xmlns:avt="urn:schemas-upnp-org:metadata-1-0/AVT/"
|
||||
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
|
||||
elementFormDefault="qualified" attributeFormDefault="unqualified">
|
||||
|
||||
<!--
|
||||
TODO: This schema was copied from AVTransport1.0.pdf.
|
||||
Apparently the UPnP clowns couldn't agree if it is *Metadata or *MetaData.
|
||||
So I've made changes and now all elements are called *MetaData, like the
|
||||
state variables in the spec. That _will_ break if someone really uses
|
||||
the original schema.
|
||||
-->
|
||||
|
||||
<xsd:annotation>
|
||||
<xsd:documentation xml:lang="en">
|
||||
Schema for UPnP A/V AVTransport Service events, version 0.1(sic!)
|
||||
</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
|
||||
<!--============================================================
|
||||
|
||||
'Event' is the root element of AVTransport event document fragments.
|
||||
'InstanceID' is the only valid child of 'Event'.
|
||||
|
||||
============================================================-->
|
||||
<xsd:element name="Event">
|
||||
<xsd:complexType>
|
||||
<xsd:annotation>
|
||||
<xsd:documentation>Event is the root
|
||||
element
|
||||
</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
<xsd:choice minOccurs="0" maxOccurs="unbounded">
|
||||
<xsd:element ref="avt:InstanceID"/>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
|
||||
<!--============================================================
|
||||
|
||||
'InstanceID' elements identify an individual event instance.
|
||||
|
||||
============================================================-->
|
||||
<xsd:group name="allowed-under-InstanceID">
|
||||
<xsd:annotation>
|
||||
<xsd:documentation>
|
||||
This group defines the elements allowed under the InstanceID element
|
||||
</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
<xsd:choice>
|
||||
<xsd:element ref="avt:TransportState"/>
|
||||
<xsd:element ref="avt:TransportStatus"/>
|
||||
<xsd:element ref="avt:PlaybackStorageMedium"/>
|
||||
<xsd:element ref="avt:RecordStorageMedium"/>
|
||||
<xsd:element ref="avt:PossiblePlaybackStorageMedia"/>
|
||||
<xsd:element ref="avt:PossibleRecordStorageMedia"/>
|
||||
<xsd:element ref="avt:CurrentPlayMode"/>
|
||||
<xsd:element ref="avt:TransportPlaySpeed"/>
|
||||
<xsd:element ref="avt:RecordMediumWriteStatus"/>
|
||||
<xsd:element ref="avt:CurrentRecordQualityMode"/>
|
||||
<xsd:element ref="avt:PossibleRecordQualityModes"/>
|
||||
<xsd:element ref="avt:NumberOfTracks"/>
|
||||
<xsd:element ref="avt:CurrentTransportActions"/>
|
||||
<xsd:element ref="avt:CurrentTrack"/>
|
||||
<xsd:element ref="avt:CurrentTrackDuration"/>
|
||||
<xsd:element ref="avt:CurrentMediaDuration"/>
|
||||
<xsd:element ref="avt:CurrentTrackURI"/>
|
||||
<xsd:element ref="avt:CurrentTrackMetaData"/>
|
||||
<xsd:element ref="avt:AVTransportURI"/>
|
||||
<xsd:element ref="avt:AVTransportURIMetaData"/>
|
||||
<xsd:element ref="avt:NextAVTransportURI"/>
|
||||
<xsd:element ref="avt:NextAVTransportURIMetaData"/>
|
||||
<xsd:element ref="avt:RelativeTimePosition"/>
|
||||
<xsd:element ref="avt:AbsoluteTimePosition"/>
|
||||
<xsd:element ref="avt:RelativeCounterPosition"/>
|
||||
<xsd:element ref="avt:AbsoluteCounterPosition"/>
|
||||
</xsd:choice>
|
||||
</xsd:group>
|
||||
<xsd:element name="InstanceID">
|
||||
<xsd:complexType>
|
||||
<xsd:annotation>
|
||||
<xsd:documentation>
|
||||
InstanceID elements identify an individual event instance.
|
||||
</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
<xsd:choice minOccurs="0" maxOccurs="unbounded">
|
||||
<xsd:group ref="avt:allowed-under-InstanceID"/>
|
||||
</xsd:choice>
|
||||
<!-- TODO: That attribute was missing in the spec! -->
|
||||
<xsd:attribute name="val" type="xsd:unsignedInt" use="required"/>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
|
||||
<!--============================================================
|
||||
|
||||
TransportState
|
||||
|
||||
============================================================-->
|
||||
<xsd:element name="TransportState">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="val" use="required">
|
||||
<xsd:simpleType>
|
||||
<xsd:restriction base="xsd:string">
|
||||
<xsd:enumeration value="STOPPED"/>
|
||||
<xsd:enumeration value="PLAYING"/>
|
||||
<xsd:enumeration value="TRANSITIONING"/>
|
||||
<xsd:enumeration value="PAUSED_PLAYBACK"/>
|
||||
<xsd:enumeration value="PAUSED_RECORDING"/>
|
||||
<xsd:enumeration value="RECORDING"/>
|
||||
<xsd:enumeration value="NO_MEDIA_PRESENT"/>
|
||||
</xsd:restriction>
|
||||
</xsd:simpleType>
|
||||
</xsd:attribute>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
|
||||
<!--============================================================
|
||||
|
||||
TransportStatus
|
||||
|
||||
============================================================-->
|
||||
<xsd:element name="TransportStatus">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="val" use="required">
|
||||
<xsd:simpleType>
|
||||
<xsd:restriction base="xsd:string">
|
||||
<xsd:enumeration value="OK"/>
|
||||
<xsd:enumeration value="ERROR_OCCURRED"/>
|
||||
</xsd:restriction>
|
||||
</xsd:simpleType>
|
||||
</xsd:attribute>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
|
||||
<!--============================================================
|
||||
|
||||
PlaybackStorageMedium
|
||||
|
||||
============================================================-->
|
||||
<xsd:element name="PlaybackStorageMedium">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="val" type="xsd:string" use="required"/>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
|
||||
<!--============================================================
|
||||
|
||||
RecordStorageMedium
|
||||
|
||||
============================================================-->
|
||||
<xsd:element name="RecordStorageMedium">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="val" type="xsd:string" use="required"/>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
|
||||
<!--============================================================
|
||||
|
||||
PossiblePlaybackStorageMedia
|
||||
|
||||
============================================================-->
|
||||
<xsd:element name="PossiblePlaybackStorageMedia">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="val" type="xsd:string" use="required"/>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
|
||||
<!--============================================================
|
||||
|
||||
PossibleRecordStorageMedia
|
||||
|
||||
============================================================-->
|
||||
<xsd:element name="PossibleRecordStorageMedia">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="val" type="xsd:string" use="required"/>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
|
||||
<!--============================================================
|
||||
|
||||
CurrentPlayMode
|
||||
|
||||
============================================================-->
|
||||
<xsd:element name="CurrentPlayMode">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="val" type="xsd:string" use="required"/>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
|
||||
<!--============================================================
|
||||
|
||||
TransportPlaySpeed
|
||||
|
||||
============================================================-->
|
||||
<xsd:element name="TransportPlaySpeed">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="val" type="xsd:string" use="required"/>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
|
||||
<!--============================================================
|
||||
|
||||
RecordMediumWriteStatus
|
||||
|
||||
============================================================-->
|
||||
<xsd:element name="RecordMediumWriteStatus">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="val" type="xsd:string" use="required"/>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
|
||||
<!--============================================================
|
||||
|
||||
CurrentRecordQualityMode
|
||||
|
||||
============================================================-->
|
||||
<xsd:element name="CurrentRecordQualityMode">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="val" type="xsd:string" use="required"/>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
|
||||
<!--============================================================
|
||||
|
||||
PossibleRecordQualityModes (!!! TYPO IN SPEC !!!)
|
||||
|
||||
============================================================-->
|
||||
<xsd:element name="PossibleRecordQualityModes">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="val" type="xsd:string" use="required"/>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
|
||||
<!--============================================================
|
||||
|
||||
NumberOfTracks
|
||||
|
||||
============================================================-->
|
||||
<xsd:element name="NumberOfTracks">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="val" type="xsd:unsignedInt"
|
||||
use="required"/>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
|
||||
<!--============================================================
|
||||
|
||||
CurrentTrack
|
||||
|
||||
============================================================-->
|
||||
<xsd:element name="CurrentTrack">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="val" type="xsd:unsignedInt"
|
||||
use="required"/>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
|
||||
<!--============================================================
|
||||
|
||||
CurrentTrackDuration
|
||||
|
||||
============================================================-->
|
||||
<xsd:element name="CurrentTrackDuration">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="val" type="xsd:string" use="required"/>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
|
||||
<!--============================================================
|
||||
|
||||
CurrentMediaDuration
|
||||
|
||||
============================================================-->
|
||||
<xsd:element name="CurrentMediaDuration">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="val" type="xsd:string" use="required"/>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
|
||||
<!--============================================================
|
||||
|
||||
CurrentTrackMetaData
|
||||
|
||||
============================================================-->
|
||||
<xsd:element name="CurrentTrackMetaData">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="val" type="xsd:string" use="required"/>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
|
||||
<!--============================================================
|
||||
|
||||
CurrentTrackURI
|
||||
|
||||
============================================================-->
|
||||
<xsd:element name="CurrentTrackURI">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="val" type="xsd:string" use="required"/>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
|
||||
<!--============================================================
|
||||
|
||||
AVTransportURI
|
||||
|
||||
============================================================-->
|
||||
<xsd:element name="AVTransportURI">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="val" type="xsd:string" use="required"/>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
|
||||
<!--============================================================
|
||||
|
||||
AVTransportURIMetaData
|
||||
|
||||
============================================================-->
|
||||
<xsd:element name="AVTransportURIMetaData">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="val" type="xsd:string" use="required"/>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
|
||||
<!--============================================================
|
||||
|
||||
NextAVTransportURI
|
||||
|
||||
============================================================-->
|
||||
<xsd:element name="NextAVTransportURI">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="val" type="xsd:string" use="required"/>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
|
||||
<!--============================================================
|
||||
|
||||
NextAVTransportURIMetaData
|
||||
|
||||
============================================================-->
|
||||
<xsd:element name="NextAVTransportURIMetaData">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="val" type="xsd:string" use="required"/>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
|
||||
<!--============================================================
|
||||
|
||||
CurrentTransportActions
|
||||
|
||||
============================================================-->
|
||||
<xsd:element name="CurrentTransportActions">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="val" type="xsd:string" use="required"/>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
|
||||
|
||||
<!--============================================================
|
||||
|
||||
RelativeTimePosition
|
||||
|
||||
============================================================-->
|
||||
<xsd:element name="RelativeTimePosition">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="val" type="xsd:string" use="required"/>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
|
||||
<!--============================================================
|
||||
|
||||
AbsoluteTimePosition
|
||||
|
||||
============================================================-->
|
||||
<xsd:element name="AbsoluteTimePosition">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="val" type="xsd:string" use="required"/>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
|
||||
<!--============================================================
|
||||
|
||||
RelativeCounterPosition
|
||||
|
||||
============================================================-->
|
||||
<xsd:element name="RelativeCounterPosition">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="val" type="xsd:string" use="required"/>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
|
||||
<!--============================================================
|
||||
|
||||
AbsoluteTimePosition
|
||||
|
||||
============================================================-->
|
||||
<xsd:element name="AbsoluteCounterPosition">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="val" type="xsd:string" use="required"/>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
|
||||
</xsd:schema>
|
||||
+60
@@ -0,0 +1,60 @@
|
||||
<xsd:schema
|
||||
targetNamespace="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
|
||||
elementFormDefault="qualified"
|
||||
attributeFormDefault="unqualified"
|
||||
version="1.0"
|
||||
xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
|
||||
jaxb:version="2.1">
|
||||
|
||||
<xsd:annotation>
|
||||
<xsd:appinfo>
|
||||
<jaxb:schemaBindings>
|
||||
<jaxb:package name="org.fourthline.cling.support.contentdirectory.descriptor.dc"/>
|
||||
</jaxb:schemaBindings>
|
||||
</xsd:appinfo>
|
||||
</xsd:annotation>
|
||||
|
||||
<xsd:annotation>
|
||||
<xsd:documentation xml:lang="en">
|
||||
Simple DC XML Schema, 2002-10-09
|
||||
by Pete Johnston ([email protected]),
|
||||
Carl Lagoze ([email protected]), Andy Powell ([email protected]),
|
||||
Herbert Van de Sompel ([email protected]).
|
||||
|
||||
This schema defines terms for Simple Dublin Core, i.e. the 15
|
||||
elements from the http://purl.org/dc/elements/1.1/ namespace, with
|
||||
no use of encoding schemes or element refinements.
|
||||
|
||||
Default content type for all elements is xsd:string with xml:lang attribute available.
|
||||
|
||||
Supercedes version of 2002-03-12.
|
||||
Amended to remove namespace declaration for http://www.w3.org/XML/1998/namespace namespace,
|
||||
and to reference lang attribute via built-in xml: namespace prefix.
|
||||
xsd:appinfo also removed.
|
||||
</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
|
||||
<xsd:element name="title" type="xsd:string"/>
|
||||
<xsd:element name="creator" type="xsd:string"/>
|
||||
<xsd:element name="description" type="xsd:string"/>
|
||||
<xsd:element name="publisher" type="xsd:string"/>
|
||||
<xsd:element name="contributor" type="xsd:string"/>
|
||||
<xsd:element name="date" type="xsd:string"/>
|
||||
<xsd:element name="language" type="xsd:string"/>
|
||||
<xsd:element name="relation" type="xsd:string"/>
|
||||
<xsd:element name="rights" type="xsd:string"/>
|
||||
|
||||
<!-- TODO
|
||||
<xsd:complexType name="elementType">
|
||||
<xsd:simpleContent>
|
||||
<xsd:extension base="xsd:string">
|
||||
<xsd:attribute ref="xml:lang" use="optional"/>
|
||||
</xsd:extension>
|
||||
</xsd:simpleContent>
|
||||
</xsd:complexType>
|
||||
-->
|
||||
|
||||
</xsd:schema>
|
||||
|
||||
+298
@@ -0,0 +1,298 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xsd:schema targetNamespace="urn:schemas-upnp-org:metadata-1-0/DIDL-Lite/"
|
||||
xmlns:didl-lite="urn:schemas-upnp-org:metadata-1-0/DIDL-Lite/"
|
||||
xmlns:upnp="urn:schemas-upnp-org:metadata-1-0/upnp/"
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
|
||||
elementFormDefault="qualified"
|
||||
attributeFormDefault="unqualified" version="1.0"
|
||||
xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
|
||||
jaxb:version="2.1">
|
||||
<!--
|
||||
xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc"
|
||||
jaxb:extensionBindingPrefixes="xjc"
|
||||
-->
|
||||
|
||||
<xsd:annotation>
|
||||
<xsd:appinfo>
|
||||
<jaxb:schemaBindings>
|
||||
<jaxb:package name="org.fourthline.cling.support.contentdirectory.descriptor.didl"/>
|
||||
</jaxb:schemaBindings>
|
||||
<jaxb:globalBindings generateElementClass="true" typesafeEnumMaxMembers="100">
|
||||
<!--
|
||||
<xjc:superClass name="org.fourthline.cling.support.didl.DidlObject"/>
|
||||
-->
|
||||
</jaxb:globalBindings>
|
||||
</xsd:appinfo>
|
||||
</xsd:annotation>
|
||||
|
||||
<xsd:annotation>
|
||||
<xsd:documentation xml:lang="en">
|
||||
DIDL-Lite schema for UPnP A/V Content Directory Services, version 1.0.
|
||||
</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
|
||||
<xsd:import namespace="urn:schemas-upnp-org:metadata-1-0/upnp/" schemaLocation="upnp-cds-1.0.xsd"/>
|
||||
<xsd:import namespace="http://purl.org/dc/elements/1.1/" schemaLocation="dc-elements-1.1.xsd"/>
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="http://www.w3.org/2001/xml.xsd"/>
|
||||
|
||||
<xsd:element name="DIDL-Lite">
|
||||
<xsd:complexType>
|
||||
<xsd:annotation>
|
||||
<xsd:documentation>
|
||||
'DIDL-Lite' is the root element of DIDL-Lite documents.
|
||||
<p>
|
||||
Attributes:
|
||||
<p>
|
||||
xml:lang use: optional
|
||||
<p>
|
||||
The 'xml:lang' attribute may optionally be used to specify the language of text
|
||||
in the DIDL-Lite document.
|
||||
</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
<xsd:choice minOccurs="0" maxOccurs="unbounded">
|
||||
<xsd:annotation>
|
||||
<xsd:appinfo>
|
||||
<jaxb:property name="children"/>
|
||||
</xsd:appinfo>
|
||||
</xsd:annotation>
|
||||
<xsd:element ref="didl-lite:item"/>
|
||||
<xsd:element ref="didl-lite:container"/>
|
||||
<xsd:element ref="didl-lite:desc"/>
|
||||
</xsd:choice>
|
||||
<!-- TODO
|
||||
<xsd:attribute ref="xml:lang" use="optional"/>
|
||||
-->
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
|
||||
<xsd:element name="container">
|
||||
<xsd:complexType>
|
||||
<xsd:annotation>
|
||||
<xsd:documentation>
|
||||
A 'container' element may contain any number of
|
||||
<p>
|
||||
1. Dublin Core,<br/>
|
||||
2. upnp,<br/>
|
||||
3. res,<br/>
|
||||
4. ref,<br/>
|
||||
5 item,<br/>
|
||||
6. container<br/>
|
||||
and 7. desc elements.<br/>
|
||||
<p>
|
||||
In all cases, the first element in each container child element sequence is
|
||||
required to be "dc:title". The 'upnp:class' element must also appear under
|
||||
container. Each container is required to specify a value for the 'id'
|
||||
and 'parentID' attributes. Each container is also required to specify a value for
|
||||
the 'restricted' attribute (true, false, 1, 0). When restricted="true", the ability to
|
||||
change or delete the container is restricted.
|
||||
<p>
|
||||
Other optional container element attributes are 'parentID', 'childCount',
|
||||
and 'searchable'.
|
||||
<p>
|
||||
Other optional attributes are 'parentID' and 'childCount'.
|
||||
<p>
|
||||
Attributes:
|
||||
<p>
|
||||
id type: string use: required<br/>
|
||||
parentID type: string use: required<br/>
|
||||
childCount type: int use: optional<br/>
|
||||
restricted type: boolean use: required<br/>
|
||||
<p>
|
||||
The equivalent MPEG21 DIDL element is 'CONTAINER'
|
||||
</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
<xsd:sequence>
|
||||
<xsd:element ref="dc:title"/>
|
||||
<xsd:choice minOccurs="0" maxOccurs="unbounded">
|
||||
<xsd:annotation>
|
||||
<xsd:appinfo>
|
||||
<jaxb:property name="children"/>
|
||||
</xsd:appinfo>
|
||||
</xsd:annotation>
|
||||
<xsd:any namespace="urn:schemas-upnp-org:metadata-1-0/upnp/" processContents="strict"/>
|
||||
<xsd:any namespace="http://purl.org/dc/elements/1.1/" processContents="strict"/>
|
||||
<xsd:element ref="didl-lite:desc"/>
|
||||
<xsd:element ref="didl-lite:item"/>
|
||||
<xsd:element ref="didl-lite:res"/>
|
||||
|
||||
<!--
|
||||
Section 2.8.3: Incremental navigation i.e. the full hierarchy is never returned
|
||||
in one call since this is likely to flood the resources available to the control
|
||||
point (memory, network bandwidth, etc.).
|
||||
|
||||
So... why is this recursive then?
|
||||
-->
|
||||
<xsd:element ref="didl-lite:container"/>
|
||||
|
||||
</xsd:choice>
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="id" type="xsd:string" use="required"/>
|
||||
<xsd:attribute name="parentID" type="xsd:string" use="required"/>
|
||||
<xsd:attribute name="childCount" type="xsd:int"/>
|
||||
<xsd:attribute name="restricted" type="xsd:boolean" use="required"/>
|
||||
<xsd:attribute name="searchable" type="xsd:boolean"/>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
|
||||
<xsd:element name="item">
|
||||
<xsd:complexType>
|
||||
<xsd:annotation>
|
||||
<xsd:documentation>
|
||||
An 'item' element contains any number of
|
||||
<p/>
|
||||
1. Dublin Core,<br/>
|
||||
2. upnp,<br/>
|
||||
3. res, and<br/>
|
||||
4. desc elements.<br/>
|
||||
<p/>
|
||||
In all cases, the first element in each item child element sequence is required
|
||||
to be "dc:title". The 'upnp:class' element must also appear under item. Each item
|
||||
is additionally required to specify a value for the 'id' attribute. If the item
|
||||
is actually a reference to another item, a value for 'refID' is specified.
|
||||
Each item is also required to specify a value for the 'parentID attribute, as well
|
||||
as the 'restricted' attribute (true, false, 1, 0). When restricted="true", the
|
||||
ability to change or delete the item is restricted.
|
||||
<p/>
|
||||
Attributes:
|
||||
<p/>
|
||||
id type: string use: required<br/>
|
||||
parentID type: string use: required<br/>
|
||||
refID type: string use: optional<br/>
|
||||
restricted type: boolean use: required<br/>
|
||||
<p/>
|
||||
The equivalent MPEG21 DIDL element is 'ITEM'.
|
||||
</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
<xsd:sequence>
|
||||
<xsd:element ref="dc:title"/>
|
||||
<xsd:choice minOccurs="0" maxOccurs="unbounded">
|
||||
<xsd:annotation>
|
||||
<xsd:appinfo>
|
||||
<jaxb:property name="children"/>
|
||||
</xsd:appinfo>
|
||||
</xsd:annotation>
|
||||
<xsd:any namespace="urn:schemas-upnp-org:metadata-1-0/upnp/" processContents="strict"/>
|
||||
<xsd:any namespace="http://purl.org/dc/elements/1.1/" processContents="strict"/>
|
||||
<xsd:element ref="didl-lite:desc"/>
|
||||
<xsd:element ref="didl-lite:res"/>
|
||||
</xsd:choice>
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="id" type="xsd:string" use="required"/>
|
||||
<xsd:attribute name="refID" type="xsd:string"/>
|
||||
<xsd:attribute name="parentID" type="xsd:string" use="required"/>
|
||||
<xsd:attribute name="restricted" type="xsd:boolean" use="required"/>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
|
||||
<xsd:element name="res">
|
||||
<xsd:complexType mixed="true">
|
||||
<xsd:annotation>
|
||||
<xsd:documentation>
|
||||
A 'res' element indentifies a resource. A resource is typically some type of a
|
||||
binary asset, such as photo, song, video, etc. A 'res' element contains a uri
|
||||
that identifies the resource.
|
||||
<p/>
|
||||
Attributes:
|
||||
<p/>
|
||||
'importUri' type: anyURI use: optional<br/>
|
||||
The 'importUri' attribute is the optional uri locator for resource update.
|
||||
<p/>
|
||||
'protocolInfo' type: string use: required<br/>
|
||||
The 'protocolInfo' attribute is a string that identifies the streaming or
|
||||
transport protocol for transmitting the resource. If not present then the
|
||||
content has not yet been fully imported by the ContentDirectory and is not yet
|
||||
accesible for playback purposes.
|
||||
<p/>
|
||||
'size' type: unsignedLong use: optional<br/>
|
||||
The size, in bytes, of the resource.
|
||||
<p/>
|
||||
'duration' type: string use: optional<br/>
|
||||
The 'duration' attribute identifies the duration of the playback of the resource, at normal speed.
|
||||
The form of the duration string is: H*:MM:SS.F*, or H*:MM:SS.F0/F1 where :
|
||||
H* means any number of digits (including no digits) to indicate elapsed hours
|
||||
MM means exactly 2 digits to indicate minutes (00 to 59)
|
||||
SS means exactly 2 digits to indicate seconds (00 to 59)
|
||||
F* means any number of digits (including no digits) to indicate fractions of seconds
|
||||
F0/F1 means a fraction, with F0 and F1 at least one digit long, and F0 < F1
|
||||
The string may be preceded by an optional + or - sign, and the decimal point itself may
|
||||
be omitted if there are no fractional second digits.
|
||||
<p/>
|
||||
'bitrate' type: unsignedInt use: optional<br/>
|
||||
The bitrate in bytes/second of the resource.
|
||||
<p/>
|
||||
'sampleFrequency' type: unsignedInt use: optional<br/>
|
||||
The sample frequency of the resource in Hz
|
||||
<p/>
|
||||
'bitsPerSample' type: unsignedInt use: optional<br/>
|
||||
The bits per sample of the resource.
|
||||
<p/>
|
||||
'nrAudioChannels' type: unsignedInt use: optional<br/>
|
||||
Number of audio channels of the resource, e.g. 1 for mono, 2 for stereo, 6 for Dolby surround, etc.
|
||||
<p/>
|
||||
'resolution' type: pattern-string use: optional<br/>
|
||||
X*Y resolution of the resource (image or video). The string pattern is restricted to strings of the
|
||||
form: [0-9]+x[0-9]+ (one or more digits,'x', followed by one or more digits).
|
||||
<p/>
|
||||
'colorDepth' type: unsignedInt use: optional<br/>
|
||||
The color depth in bits of the resource (image or video).
|
||||
<p/>
|
||||
'protection' type: string use: optional<br/>
|
||||
Some statement of the protection type of the resource (not standardized).
|
||||
<p/>
|
||||
The equivalent MPEG21 DIDL element is 'RESOURCE'.
|
||||
</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
<xsd:simpleContent>
|
||||
<xsd:extension base="xsd:string">
|
||||
<xsd:attribute name="importUri" type="xsd:anyURI"/>
|
||||
<xsd:attribute name="protocolInfo" type="xsd:string" use="required"/>
|
||||
<xsd:attribute name="size" type="xsd:unsignedLong"/>
|
||||
<xsd:attribute name="duration" type="xsd:string"/>
|
||||
<xsd:attribute name="bitrate" type="xsd:unsignedInt"/>
|
||||
<xsd:attribute name="sampleFrequency" type="xsd:unsignedInt"/>
|
||||
<xsd:attribute name="bitsPerSample" type="xsd:unsignedInt"/>
|
||||
<xsd:attribute name="nrAudioChannels" type="xsd:unsignedInt"/>
|
||||
<xsd:attribute name="colorDepth" type="xsd:unsignedInt"/>
|
||||
<xsd:attribute name="protection" type="xsd:string"/>
|
||||
<xsd:attribute name="resolution">
|
||||
<xsd:simpleType>
|
||||
<xsd:restriction base="xsd:string">
|
||||
<xsd:pattern value="[0-9]+x[0-9]+"/>
|
||||
</xsd:restriction>
|
||||
</xsd:simpleType>
|
||||
</xsd:attribute>
|
||||
</xsd:extension>
|
||||
</xsd:simpleContent>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
|
||||
<xsd:element name="desc">
|
||||
<xsd:complexType>
|
||||
<xsd:annotation>
|
||||
<xsd:documentation>
|
||||
A 'desc' element identifies a descriptor. A descriptor is intended to contain a block of metadata. A
|
||||
bio
|
||||
of a music artist is an example use of 'desc'. A 'desc' element may possess child elements from any
|
||||
namespace except the DIDL-Lite namespace. Values for 'id' and 'nameSpace' is required. An optional
|
||||
'type' attribute allows designation of the metadata type, e.g. 'ratings', 'rights', etc.
|
||||
|
||||
Attributes:
|
||||
'id' type: string use: optional
|
||||
'name' type: string use: optional
|
||||
'nameSpace' type: uri use: optional
|
||||
|
||||
The equivalent MPEG21 DIDL element is 'DESCRIPTOR'.
|
||||
</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
<xsd:sequence>
|
||||
<xsd:any namespace="##other"/>
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="id" type="xsd:string" use="required"/>
|
||||
<xsd:attribute name="type" type="xsd:string"/>
|
||||
<xsd:attribute name="nameSpace" type="xsd:anyURI" use="required"/>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
|
||||
</xsd:schema>
|
||||
|
||||
+225
@@ -0,0 +1,225 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xsd:schema
|
||||
targetNamespace="urn:schemas-upnp-org:metadata-1-0/upnp/"
|
||||
xmlns:upnp="urn:schemas-upnp-org:metadata-1-0/upnp/"
|
||||
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
|
||||
elementFormDefault="qualified"
|
||||
attributeFormDefault="unqualified"
|
||||
version="1.0"
|
||||
xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
|
||||
jaxb:version="2.1">
|
||||
|
||||
<xsd:annotation>
|
||||
<xsd:appinfo>
|
||||
<jaxb:schemaBindings>
|
||||
<jaxb:package name="org.fourthline.cling.support.contentdirectory.descriptor.upnp"/>
|
||||
</jaxb:schemaBindings>
|
||||
</xsd:appinfo>
|
||||
</xsd:annotation>
|
||||
|
||||
<xsd:annotation>
|
||||
<xsd:documentation xml:lang="en">
|
||||
UPnP Content Directory Service 1.0 schema, derived from the crude examples in the PDF document.
|
||||
</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
|
||||
<xsd:element name="class">
|
||||
<xsd:complexType mixed="true">
|
||||
<!-- TODO: That causes weird namespace errors in marshalled XML output...
|
||||
<xsd:annotation>
|
||||
<xsd:appinfo>
|
||||
<jaxb:class name="Clazz"/>
|
||||
</xsd:appinfo>
|
||||
</xsd:annotation>
|
||||
-->
|
||||
<xsd:simpleContent>
|
||||
<xsd:extension base="xsd:string">
|
||||
<xsd:attribute name="name" type="xsd:string" use="optional"/>
|
||||
</xsd:extension>
|
||||
</xsd:simpleContent>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
|
||||
<xsd:element name="searchClass">
|
||||
<xsd:complexType mixed="true">
|
||||
<xsd:simpleContent>
|
||||
<xsd:extension base="xsd:string">
|
||||
<xsd:attribute name="name" type="xsd:string" use="optional"/>
|
||||
<xsd:attribute name="includeDerived" type="xsd:boolean" use="required"/>
|
||||
</xsd:extension>
|
||||
</xsd:simpleContent>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
|
||||
<xsd:element name="createClass">
|
||||
<xsd:complexType mixed="true">
|
||||
<xsd:simpleContent>
|
||||
<xsd:extension base="xsd:string">
|
||||
<xsd:attribute name="name" type="xsd:string" use="optional"/>
|
||||
<xsd:attribute name="includeDerived" type="xsd:boolean" use="required"/>
|
||||
</xsd:extension>
|
||||
</xsd:simpleContent>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
|
||||
<xsd:element name="writeStatus" type="upnp:writeStatusValue"/>
|
||||
<xsd:simpleType name="writeStatusValue">
|
||||
<xsd:restriction base="xsd:string">
|
||||
<xsd:enumeration value="WRITABLE"/>
|
||||
<xsd:enumeration value="PROTECTED"/>
|
||||
<xsd:enumeration value="NOT_WRITABLE"/>
|
||||
<xsd:enumeration value="UNKNOWN"/>
|
||||
<xsd:enumeration value="MIXED"/>
|
||||
</xsd:restriction>
|
||||
</xsd:simpleType>
|
||||
|
||||
<xsd:element name="genre" type="xsd:string">
|
||||
<xsd:annotation>
|
||||
<xsd:documentation>
|
||||
Name of the genre to which an object belongs.
|
||||
</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
</xsd:element>
|
||||
|
||||
<xsd:element name="album" type="xsd:string">
|
||||
<xsd:annotation>
|
||||
<xsd:documentation>
|
||||
Title of the album to which the item belongs.
|
||||
</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
</xsd:element>
|
||||
|
||||
<xsd:element name="playlist" type="xsd:string">
|
||||
<xsd:annotation>
|
||||
<xsd:documentation>
|
||||
Name of a playlist to which the item belongs.
|
||||
</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
</xsd:element>
|
||||
|
||||
<xsd:element name="storageUsed" type="xsd:long" default="-1">
|
||||
<xsd:annotation>
|
||||
<xsd:documentation>
|
||||
Combined space, in bytes, used by all the objects held in the storage
|
||||
represented by the container.
|
||||
Value –1 is reserved to indicate that the capacity is 'unknown'
|
||||
</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
</xsd:element>
|
||||
|
||||
<xsd:element name="storageTotal" type="xsd:long" default="-1">
|
||||
<xsd:annotation>
|
||||
<xsd:documentation>
|
||||
Total capacity, in bytes, of the storage represented by the
|
||||
container.
|
||||
Value –1 is reserved to indicate that the capacity is 'unknown'
|
||||
</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
</xsd:element>
|
||||
|
||||
<xsd:element name="storageFree" type="xsd:long" default="-1">
|
||||
<xsd:annotation>
|
||||
<xsd:documentation>
|
||||
Total free capacity, in bytes, of the storage represented by the container
|
||||
Value –1 is reserved to indicate that the capacity is 'unknown'
|
||||
</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
</xsd:element>
|
||||
|
||||
<xsd:element name="storageMaxPartition" type="xsd:long" default="-1">
|
||||
<xsd:annotation>
|
||||
<xsd:documentation>
|
||||
Largest amount of space, in bytes, available for storing a single resource
|
||||
in the container.
|
||||
Value –1 is reserved to indicate that the capacity is 'unknown'
|
||||
</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
</xsd:element>
|
||||
|
||||
<xsd:element name="storageMedium" type="upnp:storageMediumValue">
|
||||
<xsd:annotation>
|
||||
<xsd:documentation>
|
||||
Indicates the type of storage medium used for the content. Potentially useful
|
||||
for user-interface purposes.
|
||||
</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
</xsd:element>
|
||||
<xsd:simpleType name="storageMediumValue">
|
||||
<xsd:restriction base="xsd:string">
|
||||
<xsd:enumeration value="UNKNOWN"/>
|
||||
<xsd:enumeration value="DV"/>
|
||||
<xsd:enumeration value="MINI-DV"/>
|
||||
<xsd:enumeration value="VHS"/>
|
||||
<xsd:enumeration value="W-VHS"/>
|
||||
<xsd:enumeration value="S-VHS"/>
|
||||
<xsd:enumeration value="D-VHS"/>
|
||||
<xsd:enumeration value="VHSC"/>
|
||||
<xsd:enumeration value="VIDEO8"/>
|
||||
<xsd:enumeration value="HI8"/>
|
||||
<xsd:enumeration value="CD-ROM"/>
|
||||
<xsd:enumeration value="CD-DA"/>
|
||||
<xsd:enumeration value="CD-R"/>
|
||||
<xsd:enumeration value="CD-RW"/>
|
||||
<xsd:enumeration value="VIDEO-CD"/>
|
||||
<xsd:enumeration value="SACD"/>
|
||||
<xsd:enumeration value="MD-AUDIO"/>
|
||||
<xsd:enumeration value="MD-PICTURE"/>
|
||||
<xsd:enumeration value="DVD-ROM"/>
|
||||
<xsd:enumeration value="DVD-VIDEO"/>
|
||||
<xsd:enumeration value="DVD-R"/>
|
||||
<xsd:enumeration value="DVD+RW">
|
||||
<xsd:annotation>
|
||||
<xsd:appinfo>
|
||||
<jaxb:typesafeEnumMember name="DVD_PLUS_RW"/>
|
||||
</xsd:appinfo>
|
||||
</xsd:annotation>
|
||||
</xsd:enumeration>
|
||||
<xsd:enumeration value="DVD-RW"/>
|
||||
<xsd:enumeration value="DVD-RAM"/>
|
||||
<xsd:enumeration value="DVD-AUDIO"/>
|
||||
<xsd:enumeration value="DAT"/>
|
||||
<xsd:enumeration value="LD"/>
|
||||
<xsd:enumeration value="HDD"/>
|
||||
</xsd:restriction>
|
||||
</xsd:simpleType>
|
||||
|
||||
<xsd:element name="longDescription" type="xsd:string">
|
||||
<xsd:annotation>
|
||||
<xsd:documentation>
|
||||
A few lines of description of the content item (longer than
|
||||
DublinCore's description element).
|
||||
</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
</xsd:element>
|
||||
|
||||
<xsd:element name="icon" type="xsd:anyURI">
|
||||
<xsd:annotation>
|
||||
<xsd:documentation>
|
||||
Some icon that a control point can use in its UI to display the
|
||||
content, e.g. a CNN logo for a Tuner channel. Recommend same format
|
||||
as the icon element in the UPnP device description document schema.
|
||||
(PNG). Values must be properly escaped URIs as described in [RFC 2396].
|
||||
</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
</xsd:element>
|
||||
|
||||
<xsd:element name="region" type="xsd:string">
|
||||
<xsd:annotation>
|
||||
<xsd:documentation>
|
||||
Some identification of the region, associated with the
|
||||
"source" of the object, e.g. "US", "Latin America",
|
||||
"Seattlle".
|
||||
</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
</xsd:element>
|
||||
|
||||
<xsd:element name="rating" type="xsd:string">
|
||||
<xsd:annotation>
|
||||
<xsd:documentation>
|
||||
Rating of the object's resource, for 'parental control' filtering purposes,
|
||||
such as "R", "PG-13", "X", etc.
|
||||
</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
</xsd:element>
|
||||
|
||||
</xsd:schema>
|
||||
@@ -0,0 +1,284 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<!--
|
||||
TODO: UPNP VIOLATION: RenderingControl 1.0 specification schema says "/RCS/" but examples
|
||||
in the spec say "/AVT_RCS". We had "/AVT_RCS", then "/RCS", now we have "/RCS/", let's
|
||||
see who complains.
|
||||
-->
|
||||
<xsd:schema targetNamespace="urn:schemas-upnp-org:metadata-1-0/RCS/"
|
||||
xmlns:rcs="urn:schemas-upnp-org:metadata-1-0/RCS/"
|
||||
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
|
||||
elementFormDefault="qualified"
|
||||
attributeFormDefault="unqualified">
|
||||
|
||||
<xsd:annotation>
|
||||
<xsd:documentation xml:lang="en">
|
||||
Schema for UPnP A/V Rendering Control Service events, version 0.1 (sic!)
|
||||
</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
|
||||
<!--============================================================
|
||||
|
||||
'Event' is the root element of Rendering Control event document fragments.
|
||||
'InstanceID' is the only valid child of 'Event'.
|
||||
|
||||
============================================================-->
|
||||
<xsd:element name="Event">
|
||||
<xsd:complexType>
|
||||
<xsd:annotation>
|
||||
<xsd:documentation>
|
||||
Event is the root element
|
||||
</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
<xsd:choice minOccurs="0" maxOccurs="unbounded">
|
||||
<xsd:element ref="rcs:InstanceID"/>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
|
||||
<!--============================================================
|
||||
|
||||
'InstanceID' elements identify an individual event instance.
|
||||
|
||||
============================================================-->
|
||||
<xsd:group name="allowed-under-InstanceID">
|
||||
<xsd:annotation>
|
||||
<xsd:documentation>
|
||||
This group defines the elements allowed under the InstanceID element
|
||||
</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
<xsd:choice>
|
||||
<xsd:element ref="rcs:PresetNameList"/>
|
||||
<xsd:element ref="rcs:Brightness"/>
|
||||
<xsd:element ref="rcs:Contrast"/>
|
||||
<xsd:element ref="rcs:Sharpness"/>
|
||||
<xsd:element ref="rcs:RedVideoGain"/>
|
||||
<xsd:element ref="rcs:GreenVideoGain"/>
|
||||
<xsd:element ref="rcs:BlueVideoGain"/>
|
||||
<xsd:element ref="rcs:RedVideoBlackLevel"/>
|
||||
<xsd:element ref="rcs:GreenVideoBlackLevel"/>
|
||||
<xsd:element ref="rcs:BlueVideoBlackLevel"/>
|
||||
<xsd:element ref="rcs:ColorTemperature"/>
|
||||
<xsd:element ref="rcs:HorizontalKeystone"/>
|
||||
<xsd:element ref="rcs:VerticalKeystone"/>
|
||||
<xsd:element ref="rcs:Mute"/>
|
||||
<xsd:element ref="rcs:Volume"/>
|
||||
<xsd:element ref="rcs:VolumeDB"/>
|
||||
<xsd:element ref="rcs:Loudness"/>
|
||||
</xsd:choice>
|
||||
</xsd:group>
|
||||
|
||||
<xsd:element name="InstanceID">
|
||||
<xsd:complexType>
|
||||
<xsd:annotation>
|
||||
<xsd:documentation>
|
||||
InstanceID elements identify an individual event instance.
|
||||
</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
<xsd:choice minOccurs="0" maxOccurs="unbounded">
|
||||
<xsd:group ref="rcs:allowed-under-InstanceID"/>
|
||||
</xsd:choice>
|
||||
<xsd:attribute name="val" type="xsd:unsignedInt" use="required"/>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
|
||||
<!--============================================================
|
||||
|
||||
PresetNameList
|
||||
|
||||
============================================================-->
|
||||
<xsd:element name="PresetNameList">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="val" type="xsd:string"
|
||||
use="required"/>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
|
||||
<!--============================================================
|
||||
|
||||
Brightness
|
||||
|
||||
============================================================-->
|
||||
<xsd:element name="Brightness">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="val" type="xsd:unsignedInt"
|
||||
use="required"/>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
|
||||
<!--============================================================
|
||||
|
||||
Contrast
|
||||
|
||||
============================================================-->
|
||||
|
||||
<xsd:element name="Contrast">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="val" type="xsd:unsignedInt"
|
||||
use="required"/>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<!--============================================================
|
||||
|
||||
Sharpness
|
||||
|
||||
============================================================-->
|
||||
<xsd:element name="Sharpness">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="val" type="xsd:unsignedInt"
|
||||
use="required"/>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<!--============================================================
|
||||
|
||||
RedVideoGain
|
||||
|
||||
============================================================-->
|
||||
<xsd:element name="RedVideoGain">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="val" type="xsd:unsignedInt"
|
||||
use="required"/>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<!--============================================================
|
||||
|
||||
GreenVideoGain
|
||||
|
||||
============================================================-->
|
||||
<xsd:element name="GreenVideoGain">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="val" type="xsd:unsignedInt"
|
||||
use="required"/>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<!--============================================================
|
||||
|
||||
BlueVideoGain
|
||||
|
||||
============================================================-->
|
||||
<xsd:element name="BlueVideoGain">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="val" type="xsd:unsignedInt"
|
||||
use="required"/>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<!--============================================================
|
||||
|
||||
RedVideoBlackLevel
|
||||
|
||||
============================================================-->
|
||||
<xsd:element name="RedVideoBlackLevel">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="val" type="xsd:unsignedInt"
|
||||
use="required"/>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<!--============================================================
|
||||
|
||||
GreenVideoBlackLevel
|
||||
|
||||
============================================================-->
|
||||
<xsd:element name="GreenVideoBlackLevel">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="val" type="xsd:unsignedInt"
|
||||
use="required"/>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<!--============================================================
|
||||
|
||||
BlueVideoBlackLevel
|
||||
|
||||
============================================================-->
|
||||
<xsd:element name="BlueVideoBlackLevel">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="val" type="xsd:unsignedInt"
|
||||
use="required"/>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<!--============================================================
|
||||
|
||||
ColorTemperature
|
||||
|
||||
============================================================-->
|
||||
<xsd:element name="ColorTemperature">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="val" type="xsd:unsignedInt"
|
||||
use="required"/>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<!--============================================================
|
||||
|
||||
HorizontalKeystone
|
||||
|
||||
============================================================-->
|
||||
<xsd:element name="HorizontalKeystone">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="val" type="xsd:integer"
|
||||
use="required"/>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<!--============================================================
|
||||
|
||||
VerticalKeystone
|
||||
|
||||
============================================================-->
|
||||
<xsd:element name="VerticalKeystone">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="val" type="xsd:integer"
|
||||
use="required"/>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<!--============================================================
|
||||
|
||||
Mute
|
||||
|
||||
============================================================-->
|
||||
<xsd:element name="Mute">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="val" type="xsd:boolean"
|
||||
use="required"/>
|
||||
<xsd:attribute name="channel" type="xsd:string"
|
||||
use="required"/>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<!--============================================================
|
||||
|
||||
Volume
|
||||
|
||||
============================================================-->
|
||||
<xsd:element name="Volume">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="val" type="xsd:unsignedInt"
|
||||
use="required"/>
|
||||
<xsd:attribute name="channel" type="xsd:string"
|
||||
use="required"/>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<!--============================================================
|
||||
|
||||
VolumeDB
|
||||
|
||||
============================================================-->
|
||||
<xsd:element name="VolumeDB">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="val" type="xsd:integer"
|
||||
use="required"/>
|
||||
<xsd:attribute name="channel" type="xsd:string"
|
||||
use="required"/>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<!--============================================================
|
||||
|
||||
Loudness
|
||||
|
||||
============================================================-->
|
||||
<xsd:element name="Loudness">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="val" type="xsd:boolean"
|
||||
use="required"/>
|
||||
<xsd:attribute name="channel" type="xsd:string"
|
||||
use="required"/>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
|
||||
</xsd:schema>
|
||||
Reference in New Issue
Block a user