protect against samplerates changes that may screw things up.

while the call is recursive in the change of samplerate case, on the second time
around, we will match, then check to see if we have enough data.

The flv handler was not handling that case well enough and was possibly changing
the buffer even if it was on the queue, it's allowed to when dealing with a private
buffer but not on a shared queue.