[UPnP/DLNA] Tester gesucht für Release-Candidates des neuen UPnP-Plugins V.1.0.0

  • Well, yes it is intentional to escape the didl content because it is an XML document inside an XML document. It would be an invalid xml document, if you have a second header line (<xml version...>). Have you ever tried other UPnP or DLNA servers than this one?


    You may switch it off by simply commenting out the following line:


    Code
    ixml::XmlEscapeSpecialChars(browseRequest.result);


    in contentDirectory.cpp:321


    I try to find the bug with the trailing ~. I hope it is a minor bug.


    I am currently adding your patches. Thank you very much.


    Medion Digitainer; AsRock B75 Pro3-M, Celeron G540; Kingston Value 4GB
    Samsung SpinPoint 250GB 2,5"; Samsung WriteMaster DVD-Brenner;
    TT-S2-6400, 2x TT-S2-1600, Ubuntu 12.04 mit YaVDR-Paketen. VDR 1.7.27, UPnP/DLNA-Plugin

  • Could you please try the latest revision. I added XmlEscapeSpecialChars to all fields which could contain special chars. All the other fields should not contain any of those chars because I don't think this is intentional to escape in multiple layers. Anyway, please try it.


    Edit: sorry, forgot to push it to remote git. It should be available now.


    Medion Digitainer; AsRock B75 Pro3-M, Celeron G540; Kingston Value 4GB
    Samsung SpinPoint 250GB 2,5"; Samsung WriteMaster DVD-Brenner;
    TT-S2-6400, 2x TT-S2-1600, Ubuntu 12.04 mit YaVDR-Paketen. VDR 1.7.27, UPnP/DLNA-Plugin

    Einmal editiert, zuletzt von methodus ()

  • Thanks. Unfortunately, it didn't fix the problem yet. I'll keep looking at it. The response body is missing "<?xml version="1.0"?>" at the start of a body and the result is still fully escaped due to existing "ixml::XmlEscapeSpecialChars(browseRequest.result);" line:



    Now, if I comment out the escaping, I'll get an internal server error:

  • Well, I guess that adding the unescaped result into the DIDL skeleton it will fail to parse the XML result due to the additional XML header line. However, I am not really sure.


    Have you tried another UPnP Server like Mediatomb, which is working with you Sony Player?


    Medion Digitainer; AsRock B75 Pro3-M, Celeron G540; Kingston Value 4GB
    Samsung SpinPoint 250GB 2,5"; Samsung WriteMaster DVD-Brenner;
    TT-S2-6400, 2x TT-S2-1600, Ubuntu 12.04 mit YaVDR-Paketen. VDR 1.7.27, UPnP/DLNA-Plugin

  • I changed the code to get a more or less valid XML document without encapsulation of the inner document. However, this is invalid in respect of the specs which leads to empty browse results on almost all devices I have. So, this is not the solution.


    This is what I get:



    The patch to get this output:


    You may try both, with encapsulation and without.


    Does someone else have a Sony DLNA media player and may verify the behaviour of the plugin?


    Medion Digitainer; AsRock B75 Pro3-M, Celeron G540; Kingston Value 4GB
    Samsung SpinPoint 250GB 2,5"; Samsung WriteMaster DVD-Brenner;
    TT-S2-6400, 2x TT-S2-1600, Ubuntu 12.04 mit YaVDR-Paketen. VDR 1.7.27, UPnP/DLNA-Plugin

    Einmal editiert, zuletzt von methodus ()

  • I changed the code to get a more or less valid XML document without encapsulation of the inner document.

    The packet looks better, but the device works worse :) Anyway, the <?xml?> header is now missing, so do you have any idea how to get it included, if the parser expects it? Btw. my Sony bluray player is the only one having these access problems, my Sony TV works nicely...


    I ran an UPNP validator against the plugin and found out these ones:

    Code
    VDR log:
    UPnP  Exception occurred while creating response for object '4bbe0364-a597-5981-bd12-6ecefacb804c': sqlite3_prepare: no such column: res@protocolInfo
    UPnP  Failed to process the request


    Code
    Test suite:
    WARNING: Device not choosing Random interval based on MX value <<Standard Deviation: 0>>


    A few wishes:
    - group separators of a channel list could be used as containers
    - prefix channel names with channel numbers
    - specify the verbosity of logging via a command line as in epgsearch

  • The packet looks better, but the device works worse :) Anyway, the <?xml?> header is now missing, so do you have any idea how to get it included, if the parser expects it? Btw. my Sony bluray player is the only one having these access problems, my Sony TV works nicely...


    Told you :P You may "enable" the xml header by using ixmlDocumenttoString rather than ixmlNodetoString. However, this will create an invalid XML if you do not escape this document properly. You MUST escape the inner document, otherwise it is an invalid SOAP-DIDL document. If you player works then, it's crap :|


    I ran an UPNP validator against the plugin and found out these ones:


    I will check those. The device validator you're using runs on Windows only, doesn't it? I know this tool kit, it is based on the Intel Toolkit (btw. Intel is the main initiator of UPnP and one of the big members of DLNA. Sony and Samsung are the other ones. Microsoft is more or less a small part in this party). So, I don't think that Sony violates against their own specification.


    VDR log:
    UPnP Exception occurred while creating response for object '4bbe0364-a597-5981-bd12-6ecefacb804c': sqlite3_prepare: no such column: res@protocolInfo
    UPnP Failed to process the request


    Yet another bug, I guess. Thank you.


    Test suite:
    WARNING: Device not choosing Random interval based on MX value <<Standard Deviation: 0>>


    Eh... what?


    A few wishes:
    - group separators of a channel list could be used as containers
    - prefix channel names with channel numbers
    - specify the verbosity of logging via a command line as in epgsearch


    - okay. This is a known feature. I will implement it very soon.
    - okay. I'd rather make the channel title customizable. For instance: %no% - %chan% - %title%. Then, you may add or remove more details. If there is currently no title, it will output only %no% - %chan%. It's because, wouldn't like to add too many information to the title because the space to display it is limited on most devices.
    - okay, I will try it.


    Medion Digitainer; AsRock B75 Pro3-M, Celeron G540; Kingston Value 4GB
    Samsung SpinPoint 250GB 2,5"; Samsung WriteMaster DVD-Brenner;
    TT-S2-6400, 2x TT-S2-1600, Ubuntu 12.04 mit YaVDR-Paketen. VDR 1.7.27, UPnP/DLNA-Plugin

  • Discovery mechanism isn't just behaving correctly, but I guess that's a problem in UPnP stack not in the plugin code itself. So, you can just ignore the MX failures. However, the validator detected a problem in Browse Range tests, but I cannot pinpoint the exact problem as the validator crashes before the end.


    Here's another expection from the syslog detected during my tests:

    Code
    UPnP  Exception occurred while removing old object in '36f007da-384c-52ab-813f-34b5a5ebdf5f' from database '/etc/vdr/plugins/upnp/metadata.db': sqlite3_prepare: Expression tree is too large (maximum depth 1000)
  • Hum... The problem is, that I try to delete old recordings from the table. I have to intersect the elements in the database and those, returned by the providers. If there are more than 1000 recordings, the expression fails with this exception.


    I will try to fix that. However, it doesn't refer to the Browse request. The exception is caused by the scanner.


    Medion Digitainer; AsRock B75 Pro3-M, Celeron G540; Kingston Value 4GB
    Samsung SpinPoint 250GB 2,5"; Samsung WriteMaster DVD-Brenner;
    TT-S2-6400, 2x TT-S2-1600, Ubuntu 12.04 mit YaVDR-Paketen. VDR 1.7.27, UPnP/DLNA-Plugin

  • I added the channel group support, you'd like to have. Could you please test it and tell me if there are any bugs? I have only limited testing capabilities at the moment.


    I will try to fix the other bugs.


    edit: Fixed the res@protocolInfo bug.
    edit 2: Fixed the 1000 entries bug. I hope it works for you, it does for me at least.


    Medion Digitainer; AsRock B75 Pro3-M, Celeron G540; Kingston Value 4GB
    Samsung SpinPoint 250GB 2,5"; Samsung WriteMaster DVD-Brenner;
    TT-S2-6400, 2x TT-S2-1600, Ubuntu 12.04 mit YaVDR-Paketen. VDR 1.7.27, UPnP/DLNA-Plugin

    2 Mal editiert, zuletzt von methodus ()

  • Ehm... sorry, as I told you, it shall be configurable. So, I will implement this tomorrow. Have you solved you Sony BD-Player issue?


    Medion Digitainer; AsRock B75 Pro3-M, Celeron G540; Kingston Value 4GB
    Samsung SpinPoint 250GB 2,5"; Samsung WriteMaster DVD-Brenner;
    TT-S2-6400, 2x TT-S2-1600, Ubuntu 12.04 mit YaVDR-Paketen. VDR 1.7.27, UPnP/DLNA-Plugin

  • I added an initial support for configuring the channel title. You just have to copy the channelTitle.conf into the configuration directory of the plugin. The configuration is self-explaining.


    Again, it's not fnished yet, because it lacks a check if any of those variables is empty the delimiter is omitted from the output. I have no idea yet, which kind of pattern could be useful for that. Maybe, someone has a good idea for that!


    Medion Digitainer; AsRock B75 Pro3-M, Celeron G540; Kingston Value 4GB
    Samsung SpinPoint 250GB 2,5"; Samsung WriteMaster DVD-Brenner;
    TT-S2-6400, 2x TT-S2-1600, Ubuntu 12.04 mit YaVDR-Paketen. VDR 1.7.27, UPnP/DLNA-Plugin

  • I think it would be better to just add an enumerated list of predefined channel title syntax instead of separate config file. This way you could handle the all the use cases pretty safely.


    Please, revert the commit 5824caa0b76686cc4cdacba9cec34b31fb70ba4a. This one breaks the special characters in channel names... Oh, and there's a one compilation warning left:


    Code
    vdrProvider.cpp: In member function ‘virtual bool upnp::VdrProvider::GetMetadata(const std::string&, upnp::cMetadata&)’:
    vdrProvider.cpp:123:15: warning: ‘channel’ may be used uninitialized in this function


  • Okay, I'll revert the special chars commit. However, I'll keep the config file. First, I was thinking the same thought as you - to pass setup lines to the plugins, then I saw that in that case I have to change the plugin api. The sub-plugins are more or less self-responsible about their configuration. Maybe this may change in future. The config file is optional and works without. I don't need the channel numbers.


    I changed the parser, that now delimiters can be added to the variable. If the variable is not empty, the delimiter is prepended to the variable. See README of the Plugin and the example file.


    Thank you again for this bugfix.


    Medion Digitainer; AsRock B75 Pro3-M, Celeron G540; Kingston Value 4GB
    Samsung SpinPoint 250GB 2,5"; Samsung WriteMaster DVD-Brenner;
    TT-S2-6400, 2x TT-S2-1600, Ubuntu 12.04 mit YaVDR-Paketen. VDR 1.7.27, UPnP/DLNA-Plugin

  • Hi


    Wollte mal den aktullen Stand testen aber es fehlt glaub ich was im git.


    Die Datei gibts nicht.


    mfg

  • Ach mist. Sorry, die hab ich vorhin vergessen. Kannst du jetzt nochmal probieren?


    edit: Reverted xmlSpecialChars for title, creator, description and longDescription. rofafor, could you please try latest revision?


    Medion Digitainer; AsRock B75 Pro3-M, Celeron G540; Kingston Value 4GB
    Samsung SpinPoint 250GB 2,5"; Samsung WriteMaster DVD-Brenner;
    TT-S2-6400, 2x TT-S2-1600, Ubuntu 12.04 mit YaVDR-Paketen. VDR 1.7.27, UPnP/DLNA-Plugin

    Einmal editiert, zuletzt von methodus ()

  • Thanks for the revert. The channel names are correct now. However, there are still some annoyances while sorting: the channels 1-9 should have a leading zero. Now, a channel 10 is sorted before a channel 2. I you don't like leading zeros, you could use channel numbers for item timestamps, so the correct ordered list would be available via sorting by date instead of alphabet.


    However, there're some problems with containers having more than one parents.


    This one is shown as "VDR Recordings/Tractor Pulling/SM-osakilpailu, Alahärmä~" (note the additional '~' character at the end) although it's a PES recording and should be filtered out from the results. Starting the playback results an error message about unplayable file.

    Code
    # ll /video/Tractor_Pulling/SM-osakilpailu,_Alahärmä/Traktorivedon_kauden_toinen_SM-osakilpa/2008-07-19.16.18.90.99.rec/
    total 1062040
    drwxr-xr-x 2 vdr wheel   	4096 Mar 31  2009 .
    drwxr-xr-x 3 vdr wheel   	4096 Jan  1  2009 ..
    -rw-r--r-- 1 vdr wheel 1085827649 Jan  1  2009 001.vdr
    -rw-r--r-- 1 vdr wheel 	612344 Jan  1  2009 index.vdr
    -rw-r--r-- 1 vdr wheel    	389 Jan  1  2009 info.vdr
    -rw-r--r-- 1 vdr wheel      	4 Apr  9  2011 resume.vdr


    This one plays correctly, but is shown as "VDR Recordings/Tractor Pulling/Moottoriurheilua: Tractor_Pulling, Alahärmä/Moottoriurheilua: Tractor_Pulling, Alahärmä". The last part should be "Pe 10.07.2009-21:00".

    Code
    # ll /video/Tractor_Pulling/Moottoriurheilua#3A_Tractor_Pulling\,_Alahärmä/Pe__10.07.2009-21#3A00/2009-07-10.20.58.20-0.rec/
    total 1330944
    drwxr-sr-x 2 vdr wheel   	4096 Jul 10  2009 .
    drwxr-sr-x 3 vdr wheel   	4096 Jul 10  2009 ..
    -rw-r--r-- 1 vdr wheel 1360726328 Jul 10  2009 00001.ts
    -rw-r--r-- 1 vdr wheel 	803072 Jul 10  2009 index
    -rw-r--r-- 1 vdr wheel    	350 Jul 10  2009 info

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!