Reads at most length bytes into into starting at offset.
Return
the number of bytes read, 0 if none are available yet but more may come, or -1 at the end of the stream. Returning 0 forever stalls playback, so a source with nothing more to give must return -1.