There has been a similar discussion
here.
I think jinzora solves this in an interesting way. They use a upnp bridge which is a standalone program to convert the upnp protocol to the jinzora api. It's written in java here is the
source. It uses a java upnp library called
cling.
I they have a good model that could work with subsonic.
It would be a standalone program running on a machine in the local network that would act as the upnp server, and it would act as a client to the subsonic server. It would act as a "bridge."
This would allow for configurations where the subsonic server could be located outside of the local network, somewhere on the internet, but the upnp devices could stream from it using the bridge on the local network.
So you could have this:
UPNP media player <- (local network connection) -> upnp subsonic bridge <- (internet connection) -> subsonic server
Of course there would be many people who have the subsonic server also on the local network and it would still work fine, the bridge program and the server could even be running on the same PC.