code: func NewDecoder(r io.Reader) (*Decoder, error) {
  	s := &source{
  		reader: r,
  	}
  	d := &Decoder{
  		source: s,
  		length: invalidLength,
  	}
  
  	if err := s.skipTags(); err != nil {
  		return nil, err
  	}
  	// TODO: Is readFrame here really needed?
  	if err := d.readFrame(); err != nil {
  		return nil, err
  	}
  	d.sampleRate = d.frame.SamplingFrequency()
  
  	if err := d.ensureFrameStartsAndLength(); err != nil {
  		return nil, err
  	}
  
  	return d, nil
  }
docs: // NewDecoder decodes the given io.Reader and returns a decoded stream.
  //
  // The stream is always formatted as 16bit (little endian) 2 channels
  // even if the source is single channel MP3.
  // Thus, a sample always consists of 4 bytes.