示例#1
0
文件: reader.go 项目: ebml-go/webm
func (r *Reader) sendCluster(elmts *ebml.Element, tbase time.Duration) {
	var err error
	for err == nil && len(r.seek) == 0 {
		var e *ebml.Element
		e, err = elmts.Next()
		var blk []byte
		if err == nil {
			switch e.Id {
			case 0xa3:
				if err == nil {
					blk, err = e.ReadData()
				}
				if err != nil && err != io.EOF {
					log.Println(err)
				}
			case 0xa0:
				var bg BlockGroup
				err = e.Unmarshal(&bg)
				if err == nil {
					blk = bg.Block
				}
				if err != nil && err != io.EOF {
					log.Println(err)
				}
			default:
				log.Printf("Unexpected packet %x", e.Id)
			}

			if err == nil && blk != nil && len(blk) > 4 {
				r.sendBlock(blk, tbase)
			}
		}
	}
}