Fix bug: Only process the frames read, not the frames we tried to read.
Makes decoding work better when short reads occur (like, USB sound
card cannot provide us with a full buffer)
input: Short read is not an ERROR, it happens in normal life
filter: reduce pointer dereferencing a bit more