예제 #1
0
파일: frame.go 프로젝트: viking/id3-go
func ParseImageFrame(head FrameHead, data []byte) Framer {
	var err error
	f := new(ImageFrame)
	f.FrameHead = head
	rd := encodedbytes.NewReader(data)

	if f.encoding, err = rd.ReadByte(); err != nil {
		return nil
	}

	if f.mimeType, err = rd.ReadNullTermString(encodedbytes.NativeEncoding); err != nil {
		return nil
	}

	if f.pictureType, err = rd.ReadByte(); err != nil {
		return nil
	}

	if f.description, err = rd.ReadNullTermString(f.encoding); err != nil {
		return nil
	}

	if f.data, err = rd.ReadRest(); err != nil {
		return nil
	}

	return f
}
예제 #2
0
파일: frame.go 프로젝트: viking/id3-go
func ParseTextFrame(head FrameHead, data []byte) Framer {
	var err error
	f := &TextFrame{FrameHead: head}
	rd := encodedbytes.NewReader(data)

	if f.encoding, err = rd.ReadByte(); err != nil {
		return nil
	}

	if f.text, err = rd.ReadRestString(f.encoding); err != nil {
		return nil
	}

	return f
}
예제 #3
0
파일: frame.go 프로젝트: viking/id3-go
func ParseIdFrame(head FrameHead, data []byte) Framer {
	var err error
	f := &IdFrame{FrameHead: head}
	rd := encodedbytes.NewReader(data)

	if f.ownerIdentifier, err = rd.ReadNullTermString(encodedbytes.NativeEncoding); err != nil {
		return nil
	}

	if f.identifier, err = rd.ReadRest(); len(f.identifier) > 64 || err != nil {
		return nil
	}

	return f
}
예제 #4
0
파일: frame.go 프로젝트: viking/id3-go
// DescTextFrame represents frames that contain encoded text and descriptions
func ParseDescTextFrame(head FrameHead, data []byte) Framer {
	var err error
	f := new(DescTextFrame)
	f.FrameHead = head
	rd := encodedbytes.NewReader(data)

	if f.encoding, err = rd.ReadByte(); err != nil {
		return nil
	}

	if f.description, err = rd.ReadNullTermString(f.encoding); err != nil {
		return nil
	}

	if f.text, err = rd.ReadRestString(f.encoding); err != nil {
		return nil
	}

	return f
}