Ensure FFmpeg doesn't corrupt an early keyframe.

When the analyze func runs, it seems to check between 2-4% (or so?) of the
stream, which for longer videos especially we don't have yet.  Returning a
read failure here seems to truncate that keyframe sometimes.

FFmpeg asks for the total size when this happens, which we were ignoring.
Handling it fixes this, as FFmpeg apparently realizes we ran out of data.
The seek callback should return new offset.

Like lseek().  Not the passed param.
Fix a possible buffer over/underflow issue in mpeg.

Atrac seems to have a problem here, so let's be safe.
Merge pull request #2260 from unknownbrackets/mpeg-fix

Ensure FFmpeg doesn't corrupt an early keyframe