intel / dleyna-renderer

dleyna-renderer is a library for implementing services that allow clients to discover and manipulate Digital Media Renderers. An implementation of such a service for linux is also included
https://01.org/dleyna/
GNU Lesser General Public License v2.1
16 stars 19 forks source link

Error trying to parse the CurrentURIMetaData from AVT:SetAVTransportURI method invocation #25

Closed cprigent closed 11 years ago

cprigent commented 11 years ago

Setup:

* gssdp 0.14.1: 35cd6c5
* gupnp 0.20.0: 5765f46
* gupnp-av 0.12.0: 71806e4
* gupnp-dlna 0.9.5: fed5da3
* media-service-upnp 0.5: 0dbc74a
* render-service-upnp 0.3.1: 8b6ab83
* cloudeebus: 1ed7b8b
* cloud-dleyna: 00c8ed7

Pre-conditions

1 Launch test 7.1.4.1 Ethernet QoS Tolerance 2 Select the DMR and DMS 3 Browse content 4 Select an image

Actual result:

4 Tool detects the SetAVTransportURI Action and find errors: ERROR: Error trying to parse the CurrentURIMetaData from AVT:SetAVTransportURI method invocation Error while parsing DIDL-Lite XML of MetaData. Root element is missing.

Expected result:

4 No error. You can render the image

cprigent commented 11 years ago

Debug log from CTT DLNA:

INFO: *** Starting Test: => "7.1.4.1 Ethernet QoS Tolerance"MiniWebServer: Started an HTTP server on IP '192.168.1.27' and port '44732'.
INFO: Step 1: Starting DMR simulator with name: 7.1.4.1 DMR
UPnPDevice: Device Starting.. : 7.1.4.1 DMR
UPnPService: Starting Service: urn:schemas-upnp-org:service:AVTransport:1
UPnPService: Service Started: urn:schemas-upnp-org:service:AVTransport:1
UPnPService: Starting Service: urn:schemas-upnp-org:service:ConnectionManager:1
UPnPService: Service Started: urn:schemas-upnp-org:service:ConnectionManager:1
UPnPService: Starting Service: urn:schemas-upnp-org:service:RenderingControl:1
UPnPService: Service Started: urn:schemas-upnp-org:service:RenderingControl:1
UPnPDevice: Device Started: 7.1.4.1 DMR
INFO: Starting DMS simulator with name: 7.1.4.1 DMS
MiniHttpServer: -> [146] [06/03/2013 13:56:36] [ connection starts on 192.168.1.2 : 56348] [
MiniHttpServer: -> [146] [06/03/2013 13:56:36] [Attempting to set up new session between source [192.168.1.27:44732] and DUT [192.168.1.2:56348] [
MiniHttpServer: -> [146] [06/03/2013 13:56:36] [Attempting to set up new session between source [192.168.1.27:44732] and DUT [192.168.1.2:56348] [
MiniHttpServer: -> [147] [06/03/2013 13:56:36] [ connection starts on 192.168.1.2 : 56349] [
MiniHttpServer: -> [147] [06/03/2013 13:56:36] [Attempting to set up new session between source [192.168.1.27:44732] and DUT [192.168.1.2:56349] [
MiniHttpServer: -> [147] [06/03/2013 13:56:36] [Attempting to set up new session between source [192.168.1.27:44732] and DUT [192.168.1.2:56349] [
MiniHttpServer: -> [148] [06/03/2013 13:56:37] [ connection starts on 192.168.1.2 : 56350] [
MiniHttpServer: -> [148] [06/03/2013 13:56:37] [Attempting to set up new session between source [192.168.1.27:44732] and DUT [192.168.1.2:56350] [
MiniHttpServer: -> [149] [06/03/2013 13:56:37] [ connection starts on 192.168.1.2 : 56351] [
MiniHttpServer: -> [149] [06/03/2013 13:56:37] [Attempting to set up new session between source [192.168.1.27:44732] and DUT [192.168.1.2:56351] [
MiniHttpServer: -> [148] [06/03/2013 13:56:37] [Attempting to set up new session between source [192.168.1.27:44732] and DUT [192.168.1.2:56350] [
MiniHttpServer: -> [150] [06/03/2013 13:56:37] [ connection starts on 192.168.1.2 : 56352] [
MiniHttpServer: -> [150] [06/03/2013 13:56:37] [Attempting to set up new session between source [192.168.1.27:44732] and DUT [192.168.1.2:56352] [
MiniWebServer: Started an HTTP server on IP '192.168.1.27' and port '56424'.
MiniHttpServer: -> [148] [06/03/2013 13:56:37] [Attempting to set up new session between source [192.168.1.27:44732] and DUT [192.168.1.2:56350] [
MiniHttpServer: -> [150] [06/03/2013 13:56:37] [Attempting to set up new session between source [192.168.1.27:44732] and DUT [192.168.1.2:56352] [
MiniHttpServer: -> [148] [06/03/2013 13:56:37] [Attempting to set up new session between source [192.168.1.27:44732] and DUT [192.168.1.2:56350] [
MiniHttpServer: -> [151] [06/03/2013 13:56:37] [ connection starts on 192.168.1.2 : 56353] [
MiniHttpServer: -> [151] [06/03/2013 13:56:37] [Attempting to set up new session between source [192.168.1.27:44732] and DUT [192.168.1.2:56353] [
DEBUG: DMR Received SOAP action: GetPositionInfo
MiniHttpServer: -> [151] [06/03/2013 13:56:38] [Attempting to set up new session between source [192.168.1.27:44732] and DUT [192.168.1.2:56353] [
UPnPDevice: Device Starting.. : 7.1.4.1 DMS
UPnPService: Starting Service: urn:schemas-upnp-org:service:ContentDirectory:1
UPnPService: Service Started: urn:schemas-upnp-org:service:ContentDirectory:1
UPnPService: Starting Service: urn:schemas-upnp-org:service:ConnectionManager:1
UPnPService: Service Started: urn:schemas-upnp-org:service:ConnectionManager:1
UPnPDevice: Device Started: 7.1.4.1 DMS
INFO: Step 1: Started a DMS simulator with the friendly name '7.1.4.1 DMS'.
INFO: Step 2: Check the CTT Device Profile to determine which media classes are supported by the DUT. 
INFO: Supports Images: True
INFO: Supports Audio: True
INFO: Supports Video: True
INFO: Step 3.1: Prompt the DUT to render an image media item from the DMS simulator to the DMR simulator.
MiniHttpServer: -> [152] [06/03/2013 13:56:39] [ connection starts on 192.168.1.2 : 36492] [
MiniHttpServer: -> [152] [06/03/2013 13:56:39] [Attempting to set up new session between source [192.168.1.27:56424] and DUT [192.168.1.2:36492] [
MiniHttpServer: -> [152] [06/03/2013 13:56:39] [Attempting to set up new session between source [192.168.1.27:56424] and DUT [192.168.1.2:36492] [
MiniHttpServer: -> [153] [06/03/2013 13:56:40] [ connection starts on 192.168.1.2 : 36493] [
MiniHttpServer: -> [153] [06/03/2013 13:56:40] [Attempting to set up new session between source [192.168.1.27:56424] and DUT [192.168.1.2:36493] [
MiniHttpServer: -> [153] [06/03/2013 13:56:40] [Attempting to set up new session between source [192.168.1.27:56424] and DUT [192.168.1.2:36493] [
MiniHttpServer: -> [154] [06/03/2013 13:56:40] [ connection starts on 192.168.1.2 : 36494] [
MiniHttpServer: -> [154] [06/03/2013 13:56:40] [Attempting to set up new session between source [192.168.1.27:56424] and DUT [192.168.1.2:36494] [
MiniHttpServer: -> [154] [06/03/2013 13:56:40] [Attempting to set up new session between source [192.168.1.27:56424] and DUT [192.168.1.2:36494] [
MiniHttpServer: -> [155] [06/03/2013 13:56:40] [ connection starts on 192.168.1.2 : 36495] [
MiniHttpServer: -> [155] [06/03/2013 13:56:40] [Attempting to set up new session between source [192.168.1.27:56424] and DUT [192.168.1.2:36495] [
MiniHttpServer: -> [155] [06/03/2013 13:56:40] [Attempting to set up new session between source [192.168.1.27:56424] and DUT [192.168.1.2:36495] [
MiniHttpServer: -> [156] [06/03/2013 13:56:40] [ connection starts on 192.168.1.2 : 36496] [
MiniHttpServer: -> [156] [06/03/2013 13:56:40] [Attempting to set up new session between source [192.168.1.27:56424] and DUT [192.168.1.2:36496] [
MiniHttpServer: -> [156] [06/03/2013 13:56:40] [Attempting to set up new session between source [192.168.1.27:56424] and DUT [192.168.1.2:36496] [
MiniHttpServer: -> [157] [06/03/2013 13:56:40] [ connection starts on 192.168.1.2 : 36497] [
MiniHttpServer: -> [157] [06/03/2013 13:56:40] [Attempting to set up new session between source [192.168.1.27:56424] and DUT [192.168.1.2:36497] [
MiniHttpServer: -> [158] [06/03/2013 13:56:40] [ connection starts on 192.168.1.2 : 36498] [
MiniHttpServer: -> [158] [06/03/2013 13:56:40] [Attempting to set up new session between source [192.168.1.27:56424] and DUT [192.168.1.2:36498] [
MiniHttpServer: -> [157] [06/03/2013 13:56:41] [Attempting to set up new session between source [192.168.1.27:56424] and DUT [192.168.1.2:36497] [
MiniHttpServer: -> [158] [06/03/2013 13:56:41] [Attempting to set up new session between source [192.168.1.27:56424] and DUT [192.168.1.2:36498] [
MiniHttpServer: -> [159] [06/03/2013 13:56:41] [ connection starts on 192.168.1.2 : 36499] [
MiniHttpServer: -> [159] [06/03/2013 13:56:41] [Attempting to set up new session between source [192.168.1.27:56424] and DUT [192.168.1.2:36499] [
MiniHttpServer: -> [159] [06/03/2013 13:56:41] [Attempting to set up new session between source [192.168.1.27:56424] and DUT [192.168.1.2:36499] [
MiniHttpServer: -> [160] [06/03/2013 13:56:43] [ connection starts on 192.168.1.2 : 36500] [
MiniHttpServer: -> [160] [06/03/2013 13:56:43] [Attempting to set up new session between source [192.168.1.27:56424] and DUT [192.168.1.2:36500] [
MiniHttpServer: -> [160] [06/03/2013 13:56:43] [Attempting to set up new session between source [192.168.1.27:56424] and DUT [192.168.1.2:36500] [
MiniHttpServer: -> [161] [06/03/2013 13:56:46] [ connection starts on 192.168.1.2 : 36501] [
MiniHttpServer: -> [161] [06/03/2013 13:56:46] [Attempting to set up new session between source [192.168.1.27:56424] and DUT [192.168.1.2:36501] [
MiniHttpServer: -> [161] [06/03/2013 13:56:46] [Attempting to set up new session between source [192.168.1.27:56424] and DUT [192.168.1.2:36501] [
MiniHttpServer: -> [162] [06/03/2013 13:56:51] [ connection starts on 192.168.1.2 : 56364] [
MiniHttpServer: -> [162] [06/03/2013 13:56:51] [Attempting to set up new session between source [192.168.1.27:44732] and DUT [192.168.1.2:56364] [
MiniHttpServer: -> [163] [06/03/2013 13:56:51] [ connection starts on 192.168.1.27 : 50538] [
MiniHttpServer: -> [163] [06/03/2013 13:56:51] [Attempting to set up new session between source [192.168.1.27:32282] and DUT [192.168.1.27:50538] [
ContentDirectory: *** Responded to a request for media '/0/1/1/bedf8ae8-dfe1-498d-89e7-0ccf13ac9080/427981c7-a448-45b5-9f3b-57b223483f8b'.
DMR: CurrentURIMetaData is NULL!!
MiniHttpServer: -> [164] [06/03/2013 13:56:52] [ connection starts on 192.168.1.27 : 50540] [
MiniHttpServer: -> [164] [06/03/2013 13:56:52] [Attempting to set up new session between source [192.168.1.27:32282] and DUT [192.168.1.27:50540] [
ContentDirectory: *** Responded to a request for media '/0/1/1/bedf8ae8-dfe1-498d-89e7-0ccf13ac9080/427981c7-a448-45b5-9f3b-57b223483f8b'.
MiniHttpServer: -> [165] [06/03/2013 13:56:52] [ connection starts on 192.168.1.27 : 50542] [
MiniHttpServer: -> [165] [06/03/2013 13:56:52] [Attempting to set up new session between source [192.168.1.27:32282] and DUT [192.168.1.27:50542] [
ContentDirectory: *** Responded to a request for media '/0/1/1/bedf8ae8-dfe1-498d-89e7-0ccf13ac9080/427981c7-a448-45b5-9f3b-57b223483f8b'.
DEBUG: DMR Received SOAP action: SetAVTransportURI
INFO: Received SetAVTransportURI Action
DEBUG: SetAVTransportURI returned CurrentURIMetaData = 

ERROR: Error trying to parse the CurrentURIMetaData from AVT:SetAVTransportURI method invocation
Error while parsing DIDL-Lite XML of MetaData. Root element is missing.
MiniHttpServer: -> [162] [06/03/2013 13:56:52] [Attempting to set up new session between source [192.168.1.27:44732] and DUT [192.168.1.2:56364] [
ERROR: Error, Did not receive an AVT:SetAVTranportURI for an image item.
ERROR: Error when handling invocation request for AVT:SetAVTransportURI action.
MiniHttpServer: -> [166] [06/03/2013 13:56:52] [ connection starts on 192.168.1.2 : 56365] [
MiniHttpServer: -> [166] [06/03/2013 13:56:52] [Attempting to set up new session between source [192.168.1.27:44732] and DUT [192.168.1.2:56365] [
MiniHttpServer: -> [167] [06/03/2013 13:56:52] [ connection starts on 192.168.1.27 : 50546] [
MiniHttpServer: -> [167] [06/03/2013 13:56:52] [Attempting to set up new session between source [192.168.1.27:32282] and DUT [192.168.1.27:50546] [
ContentDirectory: *** Responded to a request for media '/0/1/1/bedf8ae8-dfe1-498d-89e7-0ccf13ac9080/427981c7-a448-45b5-9f3b-57b223483f8b'.
DMR - PLAYEVENT: PROTOCOL INFO IS NOT NULL
DMR: TransferMode Set Interactive
DMR: Sending Get Request for media http://192.168.1.27:32282/0/1/1/bedf8ae8-dfe1-498d-89e7-0ccf13ac9080/427981c7-a448-45b5-9f3b-57b223483f8b
DMR: TransferMode is Interactive
DEBUG: DMR Received SOAP action: Play
MiniHttpServer: -> [166] [06/03/2013 13:56:53] [Attempting to set up new session between source [192.168.1.27:44732] and DUT [192.168.1.2:56365] [
MiniHttpServer: -> [168] [06/03/2013 13:56:53] [ connection starts on 192.168.1.27 : 50548] [
MiniHttpServer: -> [168] [06/03/2013 13:56:53] [Attempting to set up new session between source [192.168.1.27:32282] and DUT [192.168.1.27:50548] [
ContentDirectory: *** Responded to a request for media '/0/1/1/bedf8ae8-dfe1-498d-89e7-0ccf13ac9080/427981c7-a448-45b5-9f3b-57b223483f8b'.
DMR: Sent HTTP GET with DLNAUpValue DLNAQOS_1
MiniHttpServer: -> [169] [06/03/2013 13:56:54] [ connection starts on 192.168.1.2 : 56366] [
MiniHttpServer: -> [169] [06/03/2013 13:56:54] [Attempting to set up new session between source [192.168.1.27:44732] and DUT [192.168.1.2:56366] [
MiniHttpServer: -> [169] [06/03/2013 13:56:54] [Attempting to set up new session between source [192.168.1.27:44732] and DUT [192.168.1.2:56366] [
MiniHttpServer: -> [137] [06/03/2013 13:56:57] [Attempting to set up new session between source [192.168.1.27:32282] and DUT [192.168.1.2:52571] [
Simulator Discovery: Removed Simulator: uuid:f0b81268-abbd-4d02-82c7-744ca9d86ebf
UPnPDevice: Stopping Device...7.1.4.1 DMS
UPnPService: Stopping Service: urn:schemas-upnp-org:service:ContentDirectory:1
UPnPService: Service Stopped: urn:schemas-upnp-org:service:ContentDirectory:1
UPnPService: Stopping Service: urn:schemas-upnp-org:service:ConnectionManager:1
UPnPService: Service Stopped: urn:schemas-upnp-org:service:ConnectionManager:1
UPnPDevice: Device Stopped: 7.1.4.1 DMS
Simulator Discovery: Removed Simulator: uuid:723eb1fd-ff44-4079-9287-d5968bc877cd
UPnPDevice: Stopping Device...7.1.4.1 DMR
UPnPService: Stopping Service: urn:schemas-upnp-org:service:AVTransport:1
UPnPService: Service Stopped: urn:schemas-upnp-org:service:AVTransport:1
UPnPService: Stopping Service: urn:schemas-upnp-org:service:ConnectionManager:1
UPnPService: Service Stopped: urn:schemas-upnp-org:service:ConnectionManager:1
UPnPService: Stopping Service: urn:schemas-upnp-org:service:RenderingControl:1
UPnPService: Service Stopped: urn:schemas-upnp-org:service:RenderingControl:1
UPnPDevice: Device Stopped: 7.1.4.1 DMR
UPnPDevice: Stopping Device...7.1.4.1 DMR
UPnPService: Stopping Service: urn:schemas-upnp-org:service:AVTransport:1
UPnPService: Service Stopped: urn:schemas-upnp-org:service:AVTransport:1
UPnPService: Stopping Service: urn:schemas-upnp-org:service:ConnectionManager:1
UPnPService: Service Stopped: urn:schemas-upnp-org:service:ConnectionManager:1
UPnPService: Stopping Service: urn:schemas-upnp-org:service:RenderingControl:1
UPnPService: Service Stopped: urn:schemas-upnp-org:service:RenderingControl:1
UPnPDevice: Device Stopped: 7.1.4.1 DMR
UPnPDevice: WebService has allready removed Device XML Path
FAILED: 7.1.4.1 Ethernet QoS Tolerance (Version: 1.5.58.2): Failed step 3.2
cprigent commented 11 years ago

Not reproduced with GUPnP AV CP and GoldenDMC

cprigent commented 11 years ago

Test case: "7.1.21.1 NC DMC/+PU+ Ethernet DLNAQOS: Conformance" is also failed due to this bug

cguiraud commented 11 years ago

Renderer doesn't provide metadata when it calls SetAVTransportURI action. An old enhancement issue was I think related to this: https://github.com/01org/renderer-service-upnp/issues/71. If we add as proposed a new OpenURIEx for passing meta data to renderers, should the metadata provided as a DIDL string ?, and then how a DMC application can get it, may be it might be reconstructed from the Media Server properties, or retrieved in raw DIDL format with a Media Server browse request ?

markdryan commented 11 years ago

Yes, this is related and I think we need to add OpenURIEx. I think my plan was to add a new property to items exposed by dLeyna-server that contain their DIDL description. This information could then be passed directly to renderers by dLeyna-renderer. The other options would be to have the application regenerate the DIDL from the item's properties, which we really don't want to do as we are trying to shelter the apps from this sort of thing, or to have a dLeyna-renderer method that accepts a reference to a dLeyna-server object and have dLeyna-renderer construct the DIDL file. This wouldn't be great either as it would mean dLeyna-renderer would depend on dLeyna-server and also that dLeyna-renderer could not be used with other APIs that browse DMSs. So let's just add a new property to dLeyna-server and a new method to dLeyna-renderer.

markdryan commented 11 years ago

Fixed by PR #39