updateRemoteMetadata gets called on any durationchange event, and these can apparently arrive during playback...  If we get a bunch of them, we'll end up getting the blob over and over, which seems very bad.   

Maybe you could cache the blob or something?  I think somehow you have to distinguish the 'new song' case from the 'duration changed' case.    Or just punt on sending the duration, since you're not sending the current time.