UPnP - DLNA 协议说明与下载

很多电视以及电视中的播放软件支持DLNA, 可以用来投屏播放

DLNA(DIGITAL LIVING NETWORK ALLIANCE) 是由索尼、英特尔、微软等发起成立的一个非营利性的商业组织
DLNA旨在解决个人PC, 消费电器,移动设备在内的无线网络和有线网络的互联互通,使得数字媒体和内容服务的无限制的共享和增长成为可能。
DLNA的口号是Enjoy your music, photos and videos, anywhere anytime。
2017年DLNA在其官网宣布:本组织的使命已经完成,已于2017年1月5日正式解散,相关的认证将移交给SpireSpark公司

SpireSpark 网站我没找到文档, 在openconnectivity 找到

https://openconnectivity.org/upnp-specs/upnpresources.zip
在其中分类 MediaServer_4 and MediaRenderer_3

其中有测试文件 UPnP-av-TestFiles-20150630 可以看到大概的支持的命令和参数, 详细的可以参考pdf文档

	<action>
		<name>SetAVTransportURI</name>
		<argumentList>
			<argument>
				<name>InstanceID</name>
				<direction>in</direction>
				<relatedStateVariable>A_ARG_TYPE_InstanceID</relatedStateVariable>
			</argument>
			<argument>
				<name>CurrentURI</name>
				<direction>in</direction>
				<relatedStateVariable>AVTransportURI</relatedStateVariable>
			</argument>
			<argument>
				<name>CurrentURIMetaData</name>
				<direction>in</direction>
				<relatedStateVariable>AVTransportURIMetaData</relatedStateVariable>
			</argument>
		</argumentList>
	</action>

	<action>
		<Optional/>
		<name>SetNextAVTransportURI</name>
		<argumentList>
			<argument>
				<name>InstanceID</name>
				<direction>in</direction>
				<relatedStateVariable>A_ARG_TYPE_InstanceID</relatedStateVariable>
			</argument>
			<argument>
				<name>NextURI</name>
				<direction>in</direction>
				<relatedStateVariable>NextAVTransportURI</relatedStateVariable>
			</argument>
			<argument>
				<name>NextURIMetaData</name>
				<direction>in</direction>
				<relatedStateVariable>NextAVTransportURIMetaData</relatedStateVariable>
			</argument>
		</argumentList>
	</action>

	<action>
		<name>GetMediaInfo</name>
		<argumentList>
			<argument>
				<name>InstanceID</name>
				<direction>in</direction>
				<relatedStateVariable>A_ARG_TYPE_InstanceID</relatedStateVariable>
			</argument>
			<argument>
				<name>NrTracks</name>
				<direction>out</direction>
				<relatedStateVariable>NumberOfTracks</relatedStateVariable>
			</argument>
			<argument>
				<name>MediaDuration</name>
				<direction>out</direction>
				<relatedStateVariable>CurrentMediaDuration</relatedStateVariable>
			</argument>
			<argument>
				<name>CurrentURI</name>
				<direction>out</direction>
				<relatedStateVariable>AVTransportURI</relatedStateVariable>
			</argument>
			<argument>
				<name>CurrentURIMetaData</name>
				<direction>out</direction>
				<relatedStateVariable>AVTransportURIMetaData</relatedStateVariable>
			</argument>
			<argument>
				<name>NextURI</name>
				<direction>out</direction>
				<relatedStateVariable>NextAVTransportURI</relatedStateVariable>
			</argument>
			<argument>
				<name>NextURIMetaData</name>
				<direction>out</direction>
				<relatedStateVariable>NextAVTransportURIMetaData</relatedStateVariable>
			</argument>
			<argument>
				<name>PlayMedium</name>
				<direction>out</direction>
				<relatedStateVariable>PlaybackStorageMedium</relatedStateVariable>
			</argument>
			<argument>
				<name>RecordMedium</name>
				<direction>out</direction>
				<relatedStateVariable>RecordStorageMedium</relatedStateVariable>
			</argument>
			<argument>
				<name>WriteStatus</name>
				<direction>out</direction>
				<relatedStateVariable>RecordMediumWriteStatus</relatedStateVariable>
			</argument>
		</argumentList>
	</action>

	<action>
		<name>GetMediaInfo_Ext</name>
		<argumentList>
			<argument>
				<name>InstanceID</name>
				<direction>in</direction>
				<relatedStateVariable>A_ARG_TYPE_InstanceID</relatedStateVariable>
			</argument>
			<argument>
				<name>CurrentType</name>
				<direction>out</direction>
				<relatedStateVariable>CurrentMediaCategory</relatedStateVariable>
			</argument>
			<argument>
				<name>NrTracks</name>
				<direction>out</direction>
				<relatedStateVariable>NumberOfTracks</relatedStateVariable>
			</argument>
			<argument>
				<name>MediaDuration</name>
				<direction>out</direction>
				<relatedStateVariable>CurrentMediaDuration</relatedStateVariable>
			</argument>
			<argument>
				<name>CurrentURI</name>
				<direction>out</direction>
				<relatedStateVariable>AVTransportURI</relatedStateVariable>
			</argument>
			<argument>
				<name>CurrentURIMetaData</name>
				<direction>out</direction>
				<relatedStateVariable>AVTransportURIMetaData</relatedStateVariable>
			</argument>
			<argument>
				<name>NextURI</name>
				<direction>out</direction>
				<relatedStateVariable>NextAVTransportURI</relatedStateVariable>
			</argument>
			<argument>
				<name>NextURIMetaData</name>
				<direction>out</direction>
				<relatedStateVariable>NextAVTransportURIMetaData</relatedStateVariable>
			</argument>
			<argument>
				<name>PlayMedium</name>
				<direction>out</direction>
				<relatedStateVariable>PlaybackStorageMedium</relatedStateVariable>
			</argument>
			<argument>
				<name>RecordMedium</name>
				<direction>out</direction>
				<relatedStateVariable>RecordStorageMedium</relatedStateVariable>
			</argument>
			<argument>
				<name>WriteStatus</name>
				<direction>out</direction>
				<relatedStateVariable>RecordMediumWriteStatus</relatedStateVariable>
			</argument>
		</argumentList>
	</action>

	<action>
		<name>GetTransportInfo</name>
		<argumentList>
			<argument>
				<name>InstanceID</name>
				<direction>in</direction>
				<relatedStateVariable>A_ARG_TYPE_InstanceID</relatedStateVariable>
			</argument>
			<argument>
				<name>CurrentTransportState</name>
				<direction>out</direction>
				<relatedStateVariable>TransportState</relatedStateVariable>
			</argument>
			<argument>
				<name>CurrentTransportStatus</name>
				<direction>out</direction>
				<relatedStateVariable>TransportStatus</relatedStateVariable>
			</argument>
			<argument>
				<name>CurrentSpeed</name>
				<direction>out</direction>
				<relatedStateVariable>TransportPlaySpeed</relatedStateVariable>
			</argument>
		</argumentList>
	</action>

	<action>
		<name>GetPositionInfo</name>
		<argumentList>
			<argument>
				<name>InstanceID</name>
				<direction>in</direction>
				<relatedStateVariable>A_ARG_TYPE_InstanceID</relatedStateVariable>
			</argument>
			<argument>
				<name>Track</name>
				<direction>out</direction>
				<relatedStateVariable>CurrentTrack</relatedStateVariable>
			</argument>
			<argument>
				<name>TrackDuration</name>
				<direction>out</direction>
				<relatedStateVariable>CurrentTrackDuration</relatedStateVariable>
			</argument>
			<argument>
				<name>TrackMetaData</name>
				<direction>out</direction>
				<relatedStateVariable>CurrentTrackMetaData</relatedStateVariable>
			</argument>
			<argument>
				<name>TrackURI</name>
				<direction>out</direction>
				<relatedStateVariable>CurrentTrackURI</relatedStateVariable>
			</argument>
			<argument>
				<name>RelTime</name>
				<direction>out</direction>
				<relatedStateVariable>RelativeTimePosition</relatedStateVariable>
			</argument>
			<argument>
				<name>AbsTime</name>
				<direction>out</direction>
				<relatedStateVariable>AbsoluteTimePosition</relatedStateVariable>
			</argument>
			<argument>
				<name>RelCount</name>
				<direction>out</direction>
				<relatedStateVariable>RelativeCounterPosition</relatedStateVariable>
			</argument>
			<argument>
				<name>AbsCount</name>
				<direction>out</direction>
				<relatedStateVariable>AbsoluteCounterPosition</relatedStateVariable>
			</argument>
		</argumentList>
	</action>

	<action>
		<name>GetDeviceCapabilities</name>
		<argumentList>
			<argument>
				<name>InstanceID</name>
				<direction>in</direction>
				<relatedStateVariable>A_ARG_TYPE_InstanceID</relatedStateVariable>
			</argument>
			<argument>
				<name>PlayMedia</name>
				<direction>out</direction>
				<relatedStateVariable>PossiblePlaybackStorageMedia</relatedStateVariable>
			</argument>
			<argument>
				<name>RecMedia</name>
				<direction>out</direction>
				<relatedStateVariable>PossibleRecordStorageMedia</relatedStateVariable>
			</argument>
			<argument>
				<name>RecQualityModes</name>
				<direction>out</direction>
				<relatedStateVariable>PossibleRecordQualityModes</relatedStateVariable>
			</argument>
		</argumentList>
	</action>

	<action>
		<name>GetTransportSettings</name>
		<argumentList>
			<argument>
				<name>InstanceID</name>
				<direction>in</direction>
				<relatedStateVariable>A_ARG_TYPE_InstanceID</relatedStateVariable>
			</argument>
			<argument>
				<name>PlayMode</name>
				<direction>out</direction>
				<relatedStateVariable>CurrentPlayMode</relatedStateVariable>
			</argument>
			<argument>
				<name>RecQualityMode</name>
				<direction>out</direction>
				<relatedStateVariable>CurrentRecordQualityMode</relatedStateVariable>
			</argument>
		</argumentList>
	</action>

	<action>
		<name>Stop</name>
		<argumentList>
			<argument>
				<name>InstanceID</name>
				<direction>in</direction>
				<relatedStateVariable>A_ARG_TYPE_InstanceID</relatedStateVariable>
			</argument>
		</argumentList>
	</action>

	<action>
		<name>Play</name>
		<argumentList>
			<argument>
				<name>InstanceID</name>
				<direction>in</direction>
				<relatedStateVariable>A_ARG_TYPE_InstanceID</relatedStateVariable>
			</argument>
			<argument>
				<name>Speed</name>
				<direction>in</direction>
				<relatedStateVariable>TransportPlaySpeed</relatedStateVariable>
			</argument>
		</argumentList>
	</action>

	<action>
		<Optional/>
		<name>Pause</name>
		<argumentList>
			<argument>
				<name>InstanceID</name>
				<direction>in</direction>
				<relatedStateVariable>A_ARG_TYPE_InstanceID</relatedStateVariable>
			</argument>
		</argumentList>
	</action>

	<action>
		<Optional/>
		<name>Record</name>
		<argumentList>
			<argument>
				<name>InstanceID</name>
				<direction>in</direction>
				<relatedStateVariable>A_ARG_TYPE_InstanceID</relatedStateVariable>
			</argument>
		</argumentList>
	</action>

	<action>
		<name>Seek</name>
		<argumentList>
			<argument>
				<name>InstanceID</name>
				<direction>in</direction>
				<relatedStateVariable>A_ARG_TYPE_InstanceID</relatedStateVariable>
			</argument>
			<argument>
				<name>Unit</name>
				<direction>in</direction>
				<relatedStateVariable>A_ARG_TYPE_SeekMode</relatedStateVariable>
			</argument>
			<argument>
				<name>Target</name>
				<direction>in</direction>
				<relatedStateVariable>A_ARG_TYPE_SeekTarget</relatedStateVariable>
			</argument>
		</argumentList>
	</action>

	<action>
		<name>Next</name>
		<argumentList>
			<argument>
				<name>InstanceID</name>
				<direction>in</direction>
				<relatedStateVariable>A_ARG_TYPE_InstanceID</relatedStateVariable>
			</argument>
		</argumentList>
	</action>

	<action>
		<name>Previous</name>
		<argumentList>
			<argument>
				<name>InstanceID</name>
				<direction>in</direction>
				<relatedStateVariable>A_ARG_TYPE_InstanceID</relatedStateVariable>
			</argument>
		</argumentList>
	</action>

	<action>
		<Optional/>
		<name>SetPlayMode</name>
		<argumentList>
			<argument>
				<name>InstanceID</name>
				<direction>in</direction>
				<relatedStateVariable>A_ARG_TYPE_InstanceID</relatedStateVariable>
			</argument>
			<argument>
				<name>NewPlayMode</name>
				<direction>in</direction>
				<relatedStateVariable>CurrentPlayMode</relatedStateVariable>
			</argument>
		</argumentList>
	</action>

	<action>
		<Optional/>
		<name>SetRecordQualityMode</name>
		<argumentList>
			<argument>
				<name>InstanceID</name>
				<direction>in</direction>
				<relatedStateVariable>A_ARG_TYPE_InstanceID</relatedStateVariable>
			</argument>
			<argument>
				<name>NewRecordQualityMode</name>
				<direction>in</direction>
				<relatedStateVariable>CurrentRecordQualityMode</relatedStateVariable>
			</argument>
		</argumentList>
	</action>

	<action>
		<Optional/>
		<name>GetCurrentTransportActions</name>
		<argumentList>
			<argument>
				<name>InstanceID</name>
				<direction>in</direction>
				<relatedStateVariable>A_ARG_TYPE_InstanceID</relatedStateVariable>
			</argument>
			<argument>
				<name>Actions</name>
				<direction>out</direction>
				<relatedStateVariable>CurrentTransportActions</relatedStateVariable>
			</argument>
		</argumentList>
	</action>

	<action>
		<Optional/>
		<name>GetDRMState</name>
		<argumentList>
			<argument>
				<name>InstanceID</name>
				<direction>in</direction>
				<relatedStateVariable>A_ARG_TYPE_InstanceID</relatedStateVariable>
			</argument>
			<argument>
				<name>CurrentDRMState</name>
				<direction>out</direction>
				<relatedStateVariable>DRMState</relatedStateVariable>
			</argument>
		</argumentList>
	</action>

	<action>
		<Optional/>
		<name>GetStateVariables</name>
		<argumentList>
			<argument>
				<name>InstanceID</name>
				<direction>in</direction>
				<relatedStateVariable>A_ARG_TYPE_InstanceID</relatedStateVariable>
			</argument>
			<argument>
				<name>StateVariableList</name>
				<direction>in</direction>
				<relatedStateVariable>A_ARG_TYPE_StateVariableList</relatedStateVariable>
			</argument>
			<argument>
				<name>StateVariableValuePairs</name>
				<direction>out</direction>
				<relatedStateVariable>A_ARG_TYPE_StateVariableValuePairs</relatedStateVariable>
			</argument>
		</argumentList>
	</action>

	<action>
		<Optional/>
		<name>SetStateVariables</name>
		<argumentList>
			<argument>
				<name>InstanceID</name>
				<direction>in</direction>
				<relatedStateVariable>A_ARG_TYPE_InstanceID</relatedStateVariable>
			</argument>
			<argument>
				<name>AVTransportUDN</name>
				<direction>in</direction>
				<relatedStateVariable>A_ARG_TYPE_DeviceUDN</relatedStateVariable>
			</argument>
			<argument>
				<name>ServiceType</name>
				<direction>in</direction>
				<relatedStateVariable>A_ARG_TYPE_ServiceType</relatedStateVariable>
			</argument>
			<argument>
				<name>ServiceId</name>
				<direction>in</direction>
				<relatedStateVariable>A_ARG_TYPE_ServiceID</relatedStateVariable>
			</argument>
			<argument>
				<name>StateVariableValuePairs</name>
				<direction>in</direction>
				<relatedStateVariable>A_ARG_TYPE_StateVariableValuePairs</relatedStateVariable>
			</argument>
			<argument>
				<name>StateVariableList</name>
				<direction>out</direction>
				<relatedStateVariable>A_ARG_TYPE_StateVariableList</relatedStateVariable>
			</argument>
		</argumentList>
	</action>

	<action>
		<Optional/>
		<name>AdjustSyncOffset</name>
		<argumentList>
			<argument>
				<name>InstanceID</name>
				<direction>in</direction>
				<relatedStateVariable>A_ARG_TYPE_InstanceID</relatedStateVariable>
			</argument>
			<argument>
				<name>Adjustment</name>
				<direction>in</direction>
				<relatedStateVariable>A_ARG_TYPE_SyncOffsetAdj</relatedStateVariable>
			</argument>
		</argumentList>
	</action>

	<action>
		<Optional/>
		<name>GetSyncOffset</name>
		<argumentList>
			<argument>
				<name>InstanceID</name>
				<direction>in</direction>
				<relatedStateVariable>A_ARG_TYPE_InstanceID</relatedStateVariable>
			</argument>
			<argument>
				<name>CurrentSyncOffset</name>
				<direction>out</direction>
				<relatedStateVariable>SyncOffset</relatedStateVariable>
			</argument>
		</argumentList>
	</action>

	<action>
		<Optional/>
		<name>SetSyncOffset</name>
		<argumentList>
			<argument>
				<name>InstanceID</name>
				<direction>in</direction>
				<relatedStateVariable>A_ARG_TYPE_InstanceID</relatedStateVariable>
			</argument>
			<argument>
				<name>NewSyncOffset</name>
				<direction>in</direction>
				<relatedStateVariable>SyncOffset</relatedStateVariable>
			</argument>
		</argumentList>
	</action>

	<action>
		<Optional/>
		<name>SyncPlay</name>
		<argumentList>
			<argument>
				<name>InstanceID</name>
				<direction>in</direction>
				<relatedStateVariable>A_ARG_TYPE_InstanceID</relatedStateVariable>
			</argument>
			<argument>
				<name>Speed</name>
				<direction>in</direction>
				<relatedStateVariable>TransportPlaySpeed</relatedStateVariable>
			</argument>
			<argument>
				<name>ReferencePositionUnits</name>
				<direction>in</direction>
				<relatedStateVariable>A_ARG_TYPE_SeekMode</relatedStateVariable>
			</argument>
			<argument>
				<name>ReferencePosition</name>
				<direction>in</direction>
				<relatedStateVariable>A_ARG_TYPE_SeekTarget</relatedStateVariable>
			</argument>
			<argument>
				<name>ReferencePresentationTime</name>
				<direction>in</direction>
				<relatedStateVariable>A_ARG_TYPE_PresentationTime</relatedStateVariable>
			</argument>
			<argument>
				<name>ReferenceClockId</name>
				<direction>in</direction>
				<relatedStateVariable>A_ARG_TYPE_ClockId</relatedStateVariable>
			</argument>
		</argumentList>
	</action>

	<action>
		<Optional/>
		<name>SyncPause</name>
		<argumentList>
			<argument>
				<name>InstanceID</name>
				<direction>in</direction>
				<relatedStateVariable>A_ARG_TYPE_InstanceID</relatedStateVariable>
			</argument>
			<argument>
				<name>PauseTime</name>
				<direction>in</direction>
				<relatedStateVariable>A_ARG_TYPE_PresentationTime</relatedStateVariable>
			</argument>
			<argument>
				<name>ReferenceClockId</name>
				<direction>in</direction>
				<relatedStateVariable>A_ARG_TYPE_ClockId</relatedStateVariable>
			</argument>
		</argumentList>
	</action>

	<action>
		<Optional/>
		<name>SyncStop</name>
		<argumentList>
			<argument>
				<name>InstanceID</name>
				<direction>in</direction>
				<relatedStateVariable>A_ARG_TYPE_InstanceID</relatedStateVariable>
			</argument>
			<argument>
				<name>StopTime</name>
				<direction>in</direction>
				<relatedStateVariable>A_ARG_TYPE_PresentationTime</relatedStateVariable>
			</argument>
			<argument>
				<name>ReferenceClockId</name>
				<direction>in</direction>
				<relatedStateVariable>A_ARG_TYPE_ClockId</relatedStateVariable>
			</argument>
		</argumentList>
	</action>

	<action>
		<Optional/>
		<name>SetStaticPlaylist</name>
		<argumentList>
			<argument>
				<name>InstanceID</name>
				<direction>in</direction>
				<relatedStateVariable>A_ARG_TYPE_InstanceID</relatedStateVariable>
			</argument>
			<argument>
				<name>PlaylistData</name>
				<direction>in</direction>
				<relatedStateVariable>A_ARG_TYPE_PlaylistData</relatedStateVariable>
			</argument>
			<argument>
				<name>PlaylistDataLength</name>
				<direction>in</direction>
				<relatedStateVariable>A_ARG_TYPE_PlaylistDataLength</relatedStateVariable>
			</argument>
			<argument>
				<name>PlaylistOffset</name>
				<direction>in</direction>
				<relatedStateVariable>A_ARG_TYPE_PlaylistOffset</relatedStateVariable>
			</argument>
			<argument>
				<name>PlaylistTotalLength</name>
				<direction>in</direction>
				<relatedStateVariable>A_ARG_TYPE_PlaylistTotalLength</relatedStateVariable>
			</argument>
			<argument>
				<name>PlaylistMIMEType</name>
				<direction>in</direction>
				<relatedStateVariable>A_ARG_TYPE_PlaylistMIMEType</relatedStateVariable>
			</argument>
			<argument>
				<name>PlaylistExtendedType</name>
				<direction>in</direction>
				<relatedStateVariable>A_ARG_TYPE_PlaylistExtendedType</relatedStateVariable>
			</argument>
			<argument>
				<name>PlaylistStartObj</name>
				<direction>in</direction>
				<relatedStateVariable>A_ARG_TYPE_PlaylistStartObjID</relatedStateVariable>
			</argument>
			<argument>
				<name>PlaylistStartGroup</name>
				<direction>in</direction>
				<relatedStateVariable>A_ARG_TYPE_PlaylistStartGroupID</relatedStateVariable>
			</argument>
		</argumentList>
	</action>

	<action>
		<Optional/>
		<name>SetStreamingPlaylist</name>
		<argumentList>
			<argument>
				<name>InstanceID</name>
				<direction>in</direction>
				<relatedStateVariable>A_ARG_TYPE_InstanceID</relatedStateVariable>
			</argument>
			<argument>
				<name>PlaylistData</name>
					<direction>in</direction>
					<relatedStateVariable>A_ARG_TYPE_PlaylistData</relatedStateVariable>
			</argument>
			<argument>
				<name>PlaylistDataLength</name>
				<direction>in</direction>
				<relatedStateVariable>A_ARG_TYPE_PlaylistDataLength</relatedStateVariable>
			</argument>
			<argument>
				<name>PlaylistMIMEType</name>
				<direction>in</direction>
				<relatedStateVariable>A_ARG_TYPE_PlaylistMIMEType</relatedStateVariable>
			</argument>
			<argument>
				<name>PlaylistExtendedType</name>
				<direction>in</direction>
				<relatedStateVariable>A_ARG_TYPE_PlaylistExtendedType</relatedStateVariable>
			</argument>
			<argument>
				<name>PlaylistStep</name>
				<direction>in</direction>
				<relatedStateVariable>A_ARG_TYPE_PlaylistStep</relatedStateVariable>
			</argument>
		</argumentList>
	</action>

	<action>
		<Optional/>
		<name>GetPlaylistInfo</name>
		<argumentList>
			<argument>
				<name>InstanceID</name>
				<direction>in</direction>
				<relatedStateVariable>A_ARG_TYPE_InstanceID</relatedStateVariable>
			</argument>
			<argument>
				<name>PlaylistType</name>
				<direction>in</direction>
				<relatedStateVariable>A_ARG_TYPE_PlaylistType</relatedStateVariable>
			</argument>
			<argument>
				<name>PlaylistInfo</name>
				<direction>out</direction>
				<relatedStateVariable>A_ARG_TYPE_PlaylistInfo</relatedStateVariable>
			</argument>
		</argumentList>
	</action>
</actionList>
	<TestCase>
		<Id>1</Id>
		<Category>Valid Action And Valid InArgs</Category>
		<ActionName>ListPresets</ActionName>
		<InArgs>
			<InstanceID>0</InstanceID>
		</InArgs>
		<ExpectedReturnCode>ACTION_AND_INARGS_ARE_VALID</ExpectedReturnCode>
	</TestCase>

	<TestCase>
		<Id>2</Id>
		<Category>Valid Action And Valid InArgs</Category>
		<ActionName>SelectPreset</ActionName>
		<InArgs>
			<InstanceID>0</InstanceID>
			<PresetName>FactoryDefaults</PresetName>	
		</InArgs>
		<ExpectedReturnCode>ACTION_AND_INARGS_ARE_VALID</ExpectedReturnCode>
	</TestCase>

	<TestCase>
		<Id>3</Id>
		<Category>Valid Action And Valid InArgs</Category>
		<ActionName>GetBrightness</ActionName>
		<InArgs>
			<InstanceID>0</InstanceID>
		</InArgs>
		<ExpectedReturnCode>ACTION_AND_INARGS_ARE_VALID</ExpectedReturnCode>
	</TestCase>

	<TestCase>
		<Id>4</Id>
		<Category>Valid Action And Valid InArgs</Category>
		<ActionName>SetBrightness</ActionName>
		<InArgs>
			<InstanceID>0</InstanceID>
			<DesiredBrightness>0</DesiredBrightness>
		</InArgs>
		<ExpectedReturnCode>ACTION_AND_INARGS_ARE_VALID</ExpectedReturnCode>
	</TestCase>

	<TestCase>
		<Id>5</Id>
		<Category>Valid Action And Valid InArgs</Category>
		<ActionName>GetContrast</ActionName>
		<InArgs>
			<InstanceID>0</InstanceID>
		</InArgs>
		<ExpectedReturnCode>ACTION_AND_INARGS_ARE_VALID</ExpectedReturnCode>
	</TestCase>

	<TestCase>
		<Id>6</Id>
		<Category>Valid Action And Valid InArgs</Category>
		<ActionName>SetContrast</ActionName>
		<InArgs>
			<InstanceID>0</InstanceID>
			<DesiredContrast>0</DesiredContrast>
		</InArgs>
		<ExpectedReturnCode>ACTION_AND_INARGS_ARE_VALID</ExpectedReturnCode>
	</TestCase>

	<TestCase>
		<Id>7</Id>
		<Category>Valid Action And Valid InArgs</Category>
		<ActionName>GetSharpness</ActionName>
		<InArgs>
			<InstanceID>0</InstanceID>
		</InArgs>
		<ExpectedReturnCode>ACTION_AND_INARGS_ARE_VALID</ExpectedReturnCode>
	</TestCase>

	<TestCase>
		<Id>8</Id>
		<Category>Valid Action And Valid InArgs</Category>
		<ActionName>SetSharpness</ActionName>
		<InArgs>
			<InstanceID>0</InstanceID>
			<DesiredContrast>0</DesiredContrast>
		</InArgs>
		<ExpectedReturnCode>ACTION_AND_INARGS_ARE_VALID</ExpectedReturnCode>
	</TestCase>

	<TestCase>
		<Id>9</Id>
		<Category>Valid Action And Valid InArgs</Category>
		<ActionName>GetRedVideoGain</ActionName>
		<InArgs>
			<InstanceID>0</InstanceID>
		</InArgs>
		<ExpectedReturnCode>ACTION_AND_INARGS_ARE_VALID</ExpectedReturnCode>
	</TestCase>

	<TestCase>
		<Id>10</Id>
		<Category>Valid Action And Valid InArgs</Category>
		<ActionName>SetRedVideoGain</ActionName>
		<InArgs>
			<InstanceID>0</InstanceID>
			<DesiredRedVideoGain>0</DesiredRedVideoGain>
		</InArgs>
		<ExpectedReturnCode>ACTION_AND_INARGS_ARE_VALID</ExpectedReturnCode>
	</TestCase>

	<TestCase>
		<Id>11</Id>
		<Category>Valid Action And Valid InArgs</Category>
		<ActionName>GetGreenVideoGain</ActionName>
		<InArgs>
			<InstanceID>0</InstanceID>
		</InArgs>
		<ExpectedReturnCode>ACTION_AND_INARGS_ARE_VALID</ExpectedReturnCode>
	</TestCase>

	<TestCase>
		<Id>12</Id>
		<Category>Valid Action And Valid InArgs</Category>
		<ActionName>SetGreenVideoGain</ActionName>
		<InArgs>
			<InstanceID>0</InstanceID>
			<DesiredGreenVideoGain>0</DesiredGreenVideoGain>
		</InArgs>
		<ExpectedReturnCode>ACTION_AND_INARGS_ARE_VALID</ExpectedReturnCode>
	</TestCase>

	<TestCase>
		<Id>13</Id>
		<Category>Valid Action And Valid InArgs</Category>
		<ActionName>GetBlueVideoGain</ActionName>
		<InArgs>
			<InstanceID>0</InstanceID>
		</InArgs>
		<ExpectedReturnCode>ACTION_AND_INARGS_ARE_VALID</ExpectedReturnCode>
	</TestCase>

	<TestCase>
		<Id>14</Id>
		<Category>Valid Action And Valid InArgs</Category>
		<ActionName>SetBlueVideoGain</ActionName>
		<InArgs>
			<InstanceID>0</InstanceID>
			<DesiredBlueVideoGain>0</DesiredBlueVideoGain>
		</InArgs>
		<ExpectedReturnCode>ACTION_AND_INARGS_ARE_VALID</ExpectedReturnCode>
	</TestCase>

	<TestCase>
		<Id>15</Id>
		<Category>Valid Action And Valid InArgs</Category>
		<ActionName>GetRedVideoBlackLevel</ActionName>
		<InArgs>
			<InstanceID>0</InstanceID>
		</InArgs>
		<ExpectedReturnCode>ACTION_AND_INARGS_ARE_VALID</ExpectedReturnCode>
	</TestCase>

	<TestCase>
		<Id>16</Id>
		<Category>Valid Action And Valid InArgs</Category>
		<ActionName>SetRedVideoBlackLevel</ActionName>
		<InArgs>
			<InstanceID>0</InstanceID>
			<DesiredRedVideoBlackLevel>0</DesiredRedVideoBlackLevel>
		</InArgs>
		<ExpectedReturnCode>ACTION_AND_INARGS_ARE_VALID</ExpectedReturnCode>
	</TestCase>

	<TestCase>
		<Id>17</Id>
		<Category>Valid Action And Valid InArgs</Category>
		<ActionName>GetGreenVideoBlackLevel</ActionName>
		<InArgs>
			<InstanceID>0</InstanceID>
		</InArgs>
		<ExpectedReturnCode>ACTION_AND_INARGS_ARE_VALID</ExpectedReturnCode>
	</TestCase>

	<TestCase>
		<Id>18</Id>
		<Category>Valid Action And Valid InArgs</Category>
		<ActionName>SetGreenVideoBlackLevel</ActionName>
		<InArgs>
			<InstanceID>0</InstanceID>
			<DesiredGreenVideoBlackLevel>0</DesiredGreenVideoBlackLevel>
		</InArgs>
		<ExpectedReturnCode>ACTION_AND_INARGS_ARE_VALID</ExpectedReturnCode>
	</TestCase>

	<TestCase>
		<Id>19</Id>
		<Category>Valid Action And Valid InArgs</Category>
		<ActionName>GetBlueVideoBlackLevel</ActionName>
		<InArgs>
			<InstanceID>0</InstanceID>
		</InArgs>
		<ExpectedReturnCode>ACTION_AND_INARGS_ARE_VALID</ExpectedReturnCode>
	</TestCase>

	<TestCase>
		<Id>20</Id>
		<Category>Valid Action And Valid InArgs</Category>
		<ActionName>SetBlueVideoBlackLevel</ActionName>
		<InArgs>
			<InstanceID>0</InstanceID>
			<DesiredBlueVideoBlackLevel>0</DesiredBlueVideoBlackLevel>
		</InArgs>
		<ExpectedReturnCode>ACTION_AND_INARGS_ARE_VALID</ExpectedReturnCode>
	</TestCase>

	<TestCase>
		<Id>21</Id>
		<Category>Valid Action And Valid InArgs</Category>
		<ActionName>GetColorTemperature</ActionName>
		<InArgs>
			<InstanceID>0</InstanceID>
		</InArgs>
		<ExpectedReturnCode>ACTION_AND_INARGS_ARE_VALID</ExpectedReturnCode>
	</TestCase>

	<TestCase>
		<Id>22</Id>
		<Category>Valid Action And Valid InArgs</Category>
		<ActionName>SetColorTemperature</ActionName>
		<InArgs>
			<InstanceID>0</InstanceID>
			<DesiredColorTemperature>0</DesiredColorTemperature>
		</InArgs>
		<ExpectedReturnCode>ACTION_AND_INARGS_ARE_VALID</ExpectedReturnCode>
	</TestCase>

	<TestCase>
		<Id>23</Id>
		<Category>Valid Action And Valid InArgs</Category>
		<ActionName>GetHorizontalKeystone</ActionName>
		<InArgs>
			<InstanceID>0</InstanceID>
		</InArgs>
		<ExpectedReturnCode>ACTION_AND_INARGS_ARE_VALID</ExpectedReturnCode>
	</TestCase>

	<TestCase>
		<Id>24</Id>
		<Category>Valid Action And Valid InArgs</Category>
		<ActionName>SetHorizontalKeystone</ActionName>
		<InArgs>
			<InstanceID>0</InstanceID>
			<DesiredHorizontalKeystone>0</DesiredHorizontalKeystone>
		</InArgs>
		<ExpectedReturnCode>ACTION_AND_INARGS_ARE_VALID</ExpectedReturnCode>
	</TestCase>

	<TestCase>
		<Id>25</Id>
		<Category>Valid Action And Valid InArgs</Category>
		<ActionName>GetVerticalKeystone</ActionName>
		<InArgs>
			<InstanceID>0</InstanceID>
		</InArgs>
		<ExpectedReturnCode>ACTION_AND_INARGS_ARE_VALID</ExpectedReturnCode>
	</TestCase>

	<TestCase>
		<Id>26</Id>
		<Category>Valid Action And Valid InArgs</Category>
		<ActionName>SetVerticalKeystone</ActionName>
		<InArgs>
			<InstanceID>0</InstanceID>
			<DesiredVerticalKeystone>0</DesiredVerticalKeystone>
		</InArgs>
		<ExpectedReturnCode>ACTION_AND_INARGS_ARE_VALID</ExpectedReturnCode>
	</TestCase>

	<TestCase>
		<Id>27</Id>
		<Category>Valid Action And Valid InArgs</Category>
		<ActionName>GetMute</ActionName>
		<InArgs>
			<InstanceID>0</InstanceID>
			<Channel>Master</Channel>
		</InArgs>
		<ExpectedReturnCode>ACTION_AND_INARGS_ARE_VALID</ExpectedReturnCode>
	</TestCase>

	<TestCase>
		<Id>28</Id>
		<Category>Valid Action And Valid InArgs</Category>
		<ActionName>SetMute</ActionName>
		<InArgs>
			<InstanceID>0</InstanceID>
			<Channel>Master</Channel>
			<DesiredMute>1</DesiredMute>
		</InArgs>
		<ExpectedReturnCode>ACTION_AND_INARGS_ARE_VALID</ExpectedReturnCode>
	</TestCase>

	<TestCase>
		<Id>29</Id>
		<Category>Valid Action And Valid InArgs</Category>
		<ActionName>GetVolume</ActionName>
		<InArgs>
			<InstanceID>0</InstanceID>
			<Channel>Master</Channel>
		</InArgs>
		<ExpectedReturnCode>ACTION_AND_INARGS_ARE_VALID</ExpectedReturnCode>
	</TestCase>

	<TestCase>
		<Id>30</Id>
		<Category>Valid Action And Valid InArgs</Category>
		<ActionName>SetVolume</ActionName>
		<InArgs>
			<InstanceID>0</InstanceID>
			<Channel>Master</Channel>
			<DesiredVolume>0</DesiredVolume>
		</InArgs>
		<ExpectedReturnCode>ACTION_AND_INARGS_ARE_VALID</ExpectedReturnCode>
	</TestCase>

	<TestCase>
		<Id>31</Id>
		<Category>Valid Action And Valid InArgs</Category>
		<ActionName>GetVolumeDB</ActionName>
		<InArgs>
			<InstanceID>0</InstanceID>
			<Channel>Master</Channel>
		</InArgs>
		<ExpectedReturnCode>ACTION_AND_INARGS_ARE_VALID</ExpectedReturnCode>
	</TestCase>

	<TestCase>
		<Id>32</Id>
		<Category>Valid Action And Valid InArgs</Category>
		<ActionName>SetVolumeDB</ActionName>
		<InArgs>
			<InstanceID>0</InstanceID>
			<Channel>Master</Channel>
			<DesiredVolume>0</DesiredVolume>
		</InArgs>
		<ExpectedReturnCode>ACTION_AND_INARGS_ARE_VALID</ExpectedReturnCode>
	</TestCase>

	<TestCase>
		<Id>33</Id>
		<Category>Valid Action And Valid InArgs</Category>
		<ActionName>GetVolumeDBRange</ActionName>
		<InArgs>
			<InstanceID>0</InstanceID>
			<Channel>Master</Channel>
		</InArgs>
		<ExpectedReturnCode>ACTION_AND_INARGS_ARE_VALID</ExpectedReturnCode>
	</TestCase>

	<TestCase>
		<Id>34</Id>
		<Category>Valid Action And Valid InArgs</Category>
		<ActionName>GetLoudness</ActionName>
		<InArgs>
			<InstanceID>0</InstanceID>
			<Channel>Master</Channel>
		</InArgs>
		<ExpectedReturnCode>ACTION_AND_INARGS_ARE_VALID</ExpectedReturnCode>
	</TestCase>

	<TestCase>
		<Id>35</Id>
		<Category>Valid Action And Valid InArgs</Category>
		<ActionName>SetLoudness</ActionName>
		<InArgs>
			<InstanceID>0</InstanceID>
			<Channel>Master</Channel>
			<DesiredLoudness>1</DesiredLoudness>
		</InArgs>
		<ExpectedReturnCode>ACTION_AND_INARGS_ARE_VALID</ExpectedReturnCode>
	</TestCase>

	<TestCase>
		<Id>36</Id>
		<Category>Valid Action And Valid InArgs</Category>
		<ActionName>GetStateVariables</ActionName>
		<InArgs>
			<InstanceID>0</InstanceID>
			<StateVariableList>*</StateVariableList>			
		</InArgs>
		<ExpectedReturnCode>ACTION_AND_INARGS_ARE_VALID</ExpectedReturnCode>
	</TestCase>

	<TestCase>
		<Id>37</Id>
		<Category>Valid Action And Valid InArgs</Category>
		<ActionName>SetStateVariables</ActionName>
		<InArgs>
			<InstanceID>0</InstanceID>
			<RenderingControlUDN>any-string</RenderingControlUDN>
			<ServiceType>RenderingControl:2</ServiceType>
			<ServiceId>RenderingControl</ServiceId>
			<StateVariableValuePairs>any-string</StateVariableValuePairs>			
		</InArgs>
		<ExpectedReturnCode>ACTION_AND_INARGS_ARE_VALID</ExpectedReturnCode>
	</TestCase>
	
	<TestCase>
		<Id>38</Id>
		<Category>Valid Action And Valid InArgs</Category>
		<ActionName>GetAllowedTransforms</ActionName>
		<InArgs>
			<InstanceID>0</InstanceID>
		</InArgs>
		<ExpectedReturnCode>ACTION_AND_INARGS_ARE_VALID</ExpectedReturnCode>
	</TestCase>
	
	<TestCase>
		<Id>39</Id>
		<Category>Valid Action And Valid InArgs</Category>
		<ActionName>SetTransforms</ActionName>
		<InArgs>
			<InstanceID>0</InstanceID>
			<DesiredTransformValues>&lt;TransformSettings xmlns=&quot;urn:schemas-upnp-org:av:TransformSettings&quot; xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot; xsi:schemaLocation=&quot;urn:schemas-upnp-org:av:TransformSettings http://www.upnp.org/schemas/av/avs.xsd&quot;&gt; &lt;transform name=&quot;HorizontalPan&quot;&gt;&lt;value index=&quot;0&quot;&gt;100&lt;/value&gt;&lt;/transform&gt;&lt;/TransformSettings&gt;</DesiredTransformValues>
		</InArgs>
		<ExpectedReturnCode>ACTION_AND_INARGS_ARE_VALID</ExpectedReturnCode>
	</TestCase>
	
	<TestCase>
		<Id>40</Id>
		<Category>Valid Action And Valid InArgs</Category>
		<ActionName>GetTransforms</ActionName>
		<InArgs>
			<InstanceID>0</InstanceID>
		</InArgs>
		<ExpectedReturnCode>ACTION_AND_INARGS_ARE_VALID</ExpectedReturnCode>
	</TestCase>
	
	<TestCase>
		<Id>41</Id>
		<Category>Valid Action And Valid InArgs</Category>
		<ActionName>GetAllAvailableTransforms</ActionName>
		<ExpectedReturnCode>ACTION_AND_INARGS_ARE_VALID</ExpectedReturnCode>
	</TestCase>
	
	<TestCase>
		<Id>42</Id>
		<Category>Valid Action And Valid InArgs</Category>
		<ActionName>GetAllowedDefaultTransforms</ActionName>
		<ExpectedReturnCode>ACTION_AND_INARGS_ARE_VALID</ExpectedReturnCode>
	</TestCase>
	
	<TestCase>
		<Id>43</Id>
		<Category>Valid Action And Valid InArgs</Category>
		<ActionName>GetDefaultTransforms</ActionName>
		<ExpectedReturnCode>ACTION_AND_INARGS_ARE_VALID</ExpectedReturnCode>
	</TestCase>
	
	<TestCase>
		<Id>44</Id>
		<Category>Valid Action And Valid InArgs</Category>
		<ActionName>SetDefaultTransforms</ActionName>
		<InArgs>
			<DesiredDefaultTransformSettings>&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;&lt;TransformSettings xmlns=&quot;urn:schemas-upnp-org:av:TransformSettings&quot; xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot; xsi:schemaLocation=&quot;urn:schemas-upnp-org:av:TransformSettings http://www.upnp.org/schemas/av/avs.xsd&quot;&gt;&lt;transform name=&quot;Rotation&quot;&gt;&lt;value&gt;90&lt;/value&gt;&lt;/transform&gt;&lt;/TransformSettings&gt;</DesiredDefaultTransformSettings>
		</InArgs>
		<ExpectedReturnCode>ACTION_AND_INARGS_ARE_VALID</ExpectedReturnCode>
	</TestCase>
</TestCaseList>
posted @ 2020-10-30 12:22  Yofoo  阅读(608)  评论(0编辑  收藏  举报