pasdVn - 2013-01-04

Hi everybody,

I tried to access minidlna by the windows mediaplayer what works quite well, at least with just s few items on the server. With some more items the "update" of the medialibrary (tha is done automatically every time you start wmo and browse throu the library provided by minidlna) showed in wmp takes quite a long time.

The problem I discovered is the following: Wmp always uses "search"-queries and not "browse"-queries as the most other controlpoints (probably because wmp wants to do the sorting on its own, so that every server has the same structure at the hui). The count of results is limited to 200 in every query, so that a lot of queries have to be done until all data is transfered.

Is there any way to let wmp query everything at once? If wmp would always behave like this, also other dlna-serves sould have a bad performance!?

Here some numbers from testing:
- 5421 mp3s -> 28 queries
- minidlna running at a PhenomII machine 3GHz -> takes 26s

The problems really get worse when I try to use minidlna on an embedded mipsel machine with 400MHz where all SQL-queries take some seconds (here the above mentioned exmaple takes 4min, 21s) and I also have some thousand pictures at the server (I currently wait around 20min+ with mp3+pics+movies).

At the end an example of a query from WMP (debug log):

[2013/01/03 22:01:00] upnphttp.c:160: debug: Client found in cache. [type 100/entry 0]
[2013/01/03 22:01:00] upnphttp.c:728: debug: SOAPAction: urn:schemas-upnp-org:service:ContentDirectory:1#Search
[2013/01/03 22:01:00] upnpsoap.c:1679: debug: SoapMethod: Search
[2013/01/03 22:01:00] upnpsoap.c:1417: debug: Searching ContentDirectory:
 * ObjectID: 0
 * Count: 200
 * StartingIndex: 5200
 * SearchCriteria: upnp:class derivedfrom "object.item.imageItem" and @refID exists false
 * Filter: *
 * SortCriteria: -dc:date
[2013/01/03 22:01:00] upnpsoap.c:1466: debug: Translated SearchCriteria: o.CLASS like "item.imageItem%" and REF_ID is NULL
[2013/01/03 22:01:01] upnpsoap.c:1515: debug: Search SQL: SELECT o.OBJECT_ID, o.PARENT_ID, o.REF_ID, o.DETAIL_ID, o.CLASS, d.SIZE, d.TITLE, d.DURATION, d.BITRATE, d.SAMPLERATE, d.ARTIST, d.ALBUM, d.GENRE, d.COMMENT, d.CHANNELS, d.TRACK, d.DATE, d.RESOLUTION, d.THUMBNAIL, d.CREATOR, d.DLNA_PN, d.MIME, d.ALBUM_ART, d.DISC from OBJECTS o left join DETAILS d on (d.ID = o.DETAIL_ID) where OBJECT_ID glob '*$*' and (o.CLASS like "item.imageItem%" and REF_ID is NULL) group by DETAIL_ID  order by  d.DATE DESC, TITLE ASC limit 5200, 200
[2013/01/03 22:01:01] upnpsoap.c:742: debug: UPnP SOAP response enlarged to 262144. [108 results so far]
[2013/01/03 22:01:01] upnphttp.c:1272: debug: HTTP RESPONSE: HTTP/1.1 200 OK