|
a/src/upmpdutils.cxx |
|
b/src/upmpdutils.cxx |
|
... |
|
... |
156 |
"</upnp:userAnnotation>"));
|
156 |
"</upnp:userAnnotation>"));
|
157 |
|
157 |
|
158 |
} else {
|
158 |
} else {
|
159 |
UPNPXMLD(upnpClass, upnp:class, "object.item.audioItem.musicTrack");
|
159 |
UPNPXMLD(upnpClass, upnp:class, "object.item.audioItem.musicTrack");
|
160 |
UPNPXML(genre, upnp:genre);
|
160 |
UPNPXML(genre, upnp:genre);
|
|
|
161 |
UPNPXML(album, upnp:album);
|
161 |
UPNPXML(tracknum, upnp:originalTrackNumber);
|
162 |
UPNPXML(tracknum, upnp:originalTrackNumber);
|
162 |
|
163 |
|
163 |
string sfs = SoapHelp::i2s((samplefreq == 0 ? 44100 : samplefreq));
|
164 |
string sfs = SoapHelp::i2s((samplefreq == 0 ? 44100 : samplefreq));
|
164 |
string lmime((mime.empty() ? "audio/mpeg" : mime));
|
165 |
string lmime((mime.empty() ? "audio/mpeg" : mime));
|
165 |
|
166 |
|
|
... |
|
... |
272 |
ss << "<res " << "duration=\"" << upnpduration(song.duration_secs * 1000)
|
273 |
ss << "<res " << "duration=\"" << upnpduration(song.duration_secs * 1000)
|
273 |
<< "\" "
|
274 |
<< "\" "
|
274 |
// Bitrate keeps changing for VBRs and forces events. Keeping
|
275 |
// Bitrate keeps changing for VBRs and forces events. Keeping
|
275 |
// it out for now.
|
276 |
// it out for now.
|
276 |
// << "bitrate=\"" << mpds.kbrate << "\" "
|
277 |
// << "bitrate=\"" << mpds.kbrate << "\" "
|
277 |
<< "sampleFrequency=\"44100\" audioChannels=\"2\" "
|
278 |
<< "sampleFrequency=\"44100\" nrAudioChannels=\"2\" "
|
278 |
<< "protocolInfo=\"http-get:*:audio/mpeg:DLNA.ORG_PN=MP3;DLNA.ORG_OP=01;DLNA.ORG_CI=0;DLNA.ORG_FLAGS=01700000000000000000000000000000\""
|
279 |
<< "protocolInfo=\"http-get:*:audio/mpeg:DLNA.ORG_PN=MP3;DLNA.ORG_OP=01;DLNA.ORG_CI=0;DLNA.ORG_FLAGS=01700000000000000000000000000000\""
|
279 |
<< ">"
|
280 |
<< ">"
|
280 |
<< SoapHelp::xmlQuote(song.uri)
|
281 |
<< SoapHelp::xmlQuote(song.uri)
|
281 |
<< "</res>"
|
282 |
<< "</res>"
|
282 |
<< "</item></DIDL-Lite>";
|
283 |
<< "</item></DIDL-Lite>";
|