github.com/bluenviron/mediacommon@v1.9.3/pkg/formats/mpegts/playback_reader.go (about)

     1  package mpegts
     2  
     3  import (
     4  	"io"
     5  )
     6  
     7  type playbackReader struct {
     8  	r   io.Reader
     9  	buf []byte
    10  }
    11  
    12  func (r *playbackReader) Read(p []byte) (int, error) {
    13  	if r.buf != nil {
    14  		n := copy(p, r.buf)
    15  
    16  		if len(r.buf) == n {
    17  			r.buf = nil // release buf from memory
    18  		} else {
    19  			r.buf = r.buf[n:]
    20  		}
    21  
    22  		return n, nil
    23  	}
    24  
    25  	return r.r.Read(p)
    26  }