On Mon, 2006-02-27 at 06:17 -0800, Alex Lancaster wrote: > >>>>> "JD" == Joel Duggan writes: > > JD> Ok, I poked at it some more and found some things. NOTE: There > JD> was nobody running iTunes at the moment so I tested against my > JD> mt-daap server. > > JD> If I move the slider to 1min, the song goes to the 2min mark. It > JD> seems that the song goes to twice the time that I ask for. It > JD> acts unpredictably if I seek beyond half the length of the song. > JD> Seeking backwards in the song has an inconsistent behaviour. > JD> Usually it seeks to twice the time I wanted, sometimes it seek to > JD> a different spot in the song all together. > > FYI, I've seen more or less the same kinds of behaviour with regular > non-DAAP seek on some (mostly MP3s that were ripped using Sound Juicer > with variable bit rate encoding) tracks. Often these tracks have > bogus time durations due to gstreamer not being able to estimate track > lengths. Sound Juicer was well and truly mangling the ID3 tags which > possibly accounts for this, but it's interesting that it has the same > effect as the DAAP seek. > > For, me DAAP seek doesn't work at all (using gst 0.10), it simply > restarts from wherever you attempted to start seeking in the stream.
I wrote the DAAP seeking, and I don't believe anyone has really improved on it since the summer (when I wrote it). Yeah - it sucks hard. Hell, I'm surprised if it works at all for someone. The problem is I didn't/don't know gstreamer well enough to accomplish what has to happen. DAAP files are fetched over HTTP. Thats all DAAP is, a fancy structure language (i think of it as "binary xml", but thats probably an incorrect characterization). When you've set up the connection and fetched enough information to select a song to listen to, you open a separate connection to the host (separate from your DAAP command connection) and request the song file. You have to send some special headers as well. Then, the song is sent back through regular HTTP. Seeking is handled the same way you'd request a seek in an HTTP stream (and the reason I'm being so vague about it is because I don't remember the specifics). But its a regular HTTP seek with some special headers and on a separate connection. Simple. And I just couldn't/can't figure out how to write a gstreamer plugin to handle all that. So - if someone wants to improve it, I'm more than happy to assist in any way I can - it really shouldn't be too hard. - charlie > Alex > _______________________________________________ > rhythmbox-devel mailing list > [email protected] > http://mail.gnome.org/mailman/listinfo/rhythmbox-devel _______________________________________________ rhythmbox-devel mailing list [email protected] http://mail.gnome.org/mailman/listinfo/rhythmbox-devel
