mirror of https://bitbucket.org/ausocean/av.git
Merged in packet-conv (pull request #462)
mts: added function for converting byte slice to Packet to use comcast/gots code Approved-by: kortschak
This commit is contained in:
commit
44b693f005
|
@ -6,11 +6,12 @@ NAME
|
|||
DESCRIPTION
|
||||
See Readme.md
|
||||
|
||||
AUTHOR
|
||||
AUTHORS
|
||||
Saxon A. Nelson-Milton <saxon.milton@gmail.com>
|
||||
Trek Hopton <trek@ausocean.org>
|
||||
|
||||
LICENSE
|
||||
mpegts.go is Copyright (C) 2017 the Australian Ocean Lab (AusOcean)
|
||||
mpegts.go is Copyright (C) 2017-2021 the Australian Ocean Lab (AusOcean)
|
||||
|
||||
It is free software: you can redistribute it and/or modify them
|
||||
under the terms of the GNU General Public License as published by the
|
||||
|
@ -31,6 +32,7 @@ package mts
|
|||
|
||||
import (
|
||||
"fmt"
|
||||
"unsafe"
|
||||
|
||||
"github.com/Comcast/gots/packet"
|
||||
gotspsi "github.com/Comcast/gots/psi"
|
||||
|
@ -374,6 +376,16 @@ func asByte(b bool) byte {
|
|||
return 0
|
||||
}
|
||||
|
||||
// GotsPacket takes a byte slice and returns a Packet as defined in github.com/comcast/gots/packet.
|
||||
// TODO: replace this with a type conversion as described here: https://github.com/golang/go/issues/395
|
||||
// when it becomes available in Go 1.17.
|
||||
func GotsPacket(b []byte) *packet.Packet {
|
||||
if len(b) != packet.PacketSize {
|
||||
panic("invalid packet size")
|
||||
}
|
||||
return *(**packet.Packet)(unsafe.Pointer(&b))
|
||||
}
|
||||
|
||||
type Option func(p *packet.Packet)
|
||||
|
||||
// addAdaptationField adds an adaptation field to p, and applys the passed options to this field.
|
||||
|
@ -410,7 +422,7 @@ func resetAdaptation(p *packet.Packet) error {
|
|||
return nil
|
||||
}
|
||||
|
||||
// DiscontinuityIndicator returns and Option that will set p's discontinuity
|
||||
// DiscontinuityIndicator returns an Option that will set p's discontinuity
|
||||
// indicator according to f.
|
||||
func DiscontinuityIndicator(f bool) Option {
|
||||
return func(p *packet.Packet) {
|
||||
|
@ -638,13 +650,13 @@ func SegmentForMeta(d []byte, key, val string) ([][]byte, error) {
|
|||
// We've reached the end of the entire MTS clip so if we're segmenting we need
|
||||
// to append current segment to res.
|
||||
if segmenting {
|
||||
res = append(res, d[start:len(d)])
|
||||
res = append(res, d[start:])
|
||||
}
|
||||
|
||||
return res, nil
|
||||
}
|
||||
|
||||
// pid returns the packet identifier for the given packet.
|
||||
// PID returns the packet identifier for the given packet.
|
||||
func PID(p []byte) (uint16, error) {
|
||||
if len(p) < PacketSize {
|
||||
return 0, errors.New("packet length less than 188")
|
||||
|
|
|
@ -7,9 +7,10 @@ DESCRIPTION
|
|||
|
||||
AUTHORS
|
||||
Saxon A. Nelson-Milton <saxon@ausocean.org>
|
||||
Trek Hopton <trek@ausocean.org>
|
||||
|
||||
LICENSE
|
||||
Copyright (C) 2019 the Australian Ocean Lab (AusOcean)
|
||||
Copyright (C) 2019-2021 the Australian Ocean Lab (AusOcean)
|
||||
|
||||
It is free software: you can redistribute it and/or modify them
|
||||
under the terms of the GNU General Public License as published by the
|
||||
|
@ -768,3 +769,12 @@ func TestFindPSI(t *testing.T) {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestGotsPacket(t *testing.T) {
|
||||
b := make([]byte, 188)
|
||||
p := GotsPacket(b)
|
||||
p.SetPID(PIDAudio)
|
||||
if p.PID() != PIDAudio {
|
||||
t.Error("failed to set PID in gots Packet")
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue