code: func (d *Decoder) readHeaders() error {
  	// prevent the headers to be re-read
  	if d.Size > 0 {
  		return nil
  	}
  	if d.err = binary.Read(d.r, binary.BigEndian, &d.ID); d.err != nil {
  		return d.err
  	}
  	// Must start by a FORM header/ID
  	if d.ID != formID {
  		d.err = fmt.Errorf("%s - %s", ErrFmtNotSupported, d.ID)
  		return d.err
  	}
  
  	if d.err = binary.Read(d.r, binary.BigEndian, &d.Size); d.err != nil {
  		return d.err
  	}
  	if d.err = binary.Read(d.r, binary.BigEndian, &d.Form); d.err != nil {
  		return d.err
  	}
  
  	// Must be a AIFF or AIFC form type
  	if d.Form != aiffID && d.Form != aifcID {
  		d.err = fmt.Errorf("%s - %s", ErrFmtNotSupported, d.Form)
  		return d.err
  	}
  
  	return nil
  }
docs: // readHeaders is safe to call multiple times
  // byte size of the header: 12