diff --git a/format/format.go b/format/format.go index fe124f34..0874fe9f 100644 --- a/format/format.go +++ b/format/format.go @@ -1,9 +1,5 @@ package format -import ( - "github.com/wader/fq/pkg/bitio" -) - //nolint:revive const ( ALL = "all" @@ -142,7 +138,7 @@ type OggPageOut struct { IsContinuedPacket bool StreamSerialNumber uint32 SequenceNo uint32 - Segments []*bitio.Buffer // TODO: bitio.Reader (bitio.MultiReader internally?) + Segments [][]byte } type AvcIn struct { diff --git a/format/ogg/ogg.go b/format/ogg/ogg.go index f5d216b7..0b9026d7 100644 --- a/format/ogg/ogg.go +++ b/format/ogg/ogg.go @@ -102,13 +102,9 @@ func decodeOgg(d *decode.D, in interface{}) interface{} { // // log.Println("page gap") // } - for _, ps := range oggPageOut.Segments { - psBytes := ps.Len() / 8 - - // TODO: cleanup - b, _ := ps.BytesRange(0, int(psBytes)) - s.packetBuf = append(s.packetBuf, b...) - if psBytes < 255 { // TODO: list range maps of demuxed packets? + for _, bs := range oggPageOut.Segments { + s.packetBuf = append(s.packetBuf, bs...) + if len(bs) < 255 { bb := bitio.NewBufferFromBytes(s.packetBuf, -1) if s.codec == codecUnknown { diff --git a/format/ogg/ogg_page.go b/format/ogg/ogg_page.go index fd1a12e4..d03da04a 100644 --- a/format/ogg/ogg_page.go +++ b/format/ogg/ogg_page.go @@ -42,7 +42,11 @@ func pageDecode(d *decode.D, in interface{}) interface{} { }) d.FieldArray("segments", func(d *decode.D) { for _, ss := range segmentTable { - p.Segments = append(p.Segments, d.FieldRawLen("segment", int64(ss)*8)) + bs, err := d.FieldRawLen("segment", int64(ss)*8).Bytes() + if err != nil { + d.IOPanic(err, "d.BitBufRange segment") + } + p.Segments = append(p.Segments, bs) } }) endPos := d.Pos()