Chapter 3: The Second Mountain

So, last month I added support for DLNA sources, and this month was supposed to be for DAAP sources, but there are a lot of things still going on with DLNA sources. There was a lot of stuff that was missing and I’m going to talk about problems with some of them.

Progress with DLNA

One of the main ones was the latency and processing power of the media servers. Whenever we work with servers, we dump in queries on them, and a large enough query can make our media server freeze, so it’s better to load data in small chunks from our end so that we can guarantee smooth media extraction from the server.

For DLNA sources, search and query are kinds of same functions. While searching a media server, a search query needs to be given and that is how we query a UPnP media server. Gnome Music depends highly on querying sources for media data, and while testing with different servers, we noticed that some media server only support search and not the query functionality(WIERD, right ?). So need a way to check for search capabilities and query capabilities individually. This issue is still unresolved.

Music traditionally extracts songs, albums, and artists simultaneously. We use songs to populate music, album and artist views, and albums to populate artist and album views. When working with servers, it cannot be ensured that we get songs before albums or albums before artists. So to tackle this one, we had to hard force Music to extract songs, albums, and artists in mentioned order for dleyna source.

Progress with DAAP

I also added support for DAAP, but it is far from being complete. Unlike DLNA sources, DAAP is supported mostly for Apple devices, and I’m on a Linux machine. I’m using Rhythmbox for my DAAP server(Yes, Rhythmbox has an inbuilt DAAP server, you just need to enable it). Like I already mentioned Music depends on queries for getting media from the server, DAAP servers which I use for testing bench doesn’t have search functionality. That is why we need to depend on browsing data, which doesn’t leave us with a lot of flexibility.
Apart from the implementation, one thing which took up a lot of time was getting Music to talk to my DAAP server in flatpak. A DAAP server talks over an Avahi dbus to Music.

There are still some functionalities left to implement in DLNA, such as change-tracking and some album art things. So I’m going to work on some backlogs and search redesign in the coming month.