av/packet/MpegTs.go

82 lines
2.0 KiB
Go
Raw Normal View History

/*
NAME
MpegTs.go - provides a data structure intended to encapsulate the properties
of an MpegTs packet.
DESCRIPTION
See Readme.md
AUTHOR
Saxon Nelson-Milton <saxon.milton@gmail.com>
LICENSE
MpegTs.go is Copyright (C) 2017 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
Free Software Foundation, either version 3 of the License, or (at your
option) any later version.
It is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
You should have received a copy of the GNU General Public License
along with revid in gpl.txt. If not, see [GNU licenses](http://www.gnu.org/licenses).
*/
package packet
import (
"strconv"
)
// Length of some fields in bits
const (
SyncByteLength = 8
TEILength = 1
PUSILength = 1
PriorityLength = 1
PIDLength = 13
TSCLength = 2
AFCLength = 2
CCLength = 4
)
// Index of the fields
const (
SyncByteIndex = 0
TEIIndex = SyncByteIndex + SyncByteLength
PUSIIndex = TEIIndex + TEILength
PriorityIndex = PUSIIndex + PUSILength
PIDIndex = PriorityIndex + PriorityLength
TSCIndex = PIDIndex + PIDLength
AFCIndex = TSCIndex + TSCLength
CCIndex = AFCIndex + AFCLength
AFIndex = CCIndex + CCLength
)
type MpegTsPacket struct {
SyncByte byte
TEI bool // Transport Error Indicator
PUSI bool // Payload Unit Start Indicator
Priority bool
PID int
TSC byte // Transport Scrambling Control
AFC byte // Adaption Field Control
CC int // Continuity Counter
AF []byte // Adaption Field
Payload []byte
}
2017-12-11 09:48:46 +03:00
func boolToUint( in bool ) (out uint){
if in { out = 1 }
return
}
func (p *MpegTsPacket) toByteSlice() (output []byte) {
output[0] = p.SyncByte
2017-12-11 09:48:46 +03:00
output[1] =
}