func()

in cmd/transcode/main.go [59:99]


func (r *fbsReader) Read(p []byte) (n int, err error) {
	// remember any previous error
	if r.err != nil {
		return 0, r.err
	}
	defer func() {
		if err != nil {
			r.err = err
		}
	}()

	if r.buf.Len() == 0 {
		// read length
		b, err := r.read4()
		if err != nil {
			return 0, err
		}
		l := int64(bytes2Uint32(b))
		if l == 0 {
			return 0, io.EOF
		}

		// read data
		_, err = io.Copy(&r.buf, io.LimitReader(r.r, l))
		if err == io.EOF {
			err = io.ErrUnexpectedEOF
		}
		if err != nil {
			return 0, err
		}

		// read timestamp
		b, err = r.read4()
		if err != nil {
			return 0, err
		}
		copy(r.timestamp[:], b)
	}

	return r.buf.Read(p)
}