mirror of https://bitbucket.org/ausocean/av.git
psi: writing new data strcutres to make things neater and more usable
This commit is contained in:
parent
86949813fd
commit
5f0bef9365
|
@ -27,6 +27,18 @@ LICENSE
|
||||||
|
|
||||||
package psi
|
package psi
|
||||||
|
|
||||||
|
// Bitmasks
|
||||||
|
const (
|
||||||
|
// bitmasks used for second byte
|
||||||
|
SYNTAX_INDICATOR = 0x80
|
||||||
|
PRIVATE_BIT = 0x40
|
||||||
|
RESERVED_BITS = 0x30
|
||||||
|
SECTION_LENGTH_1 = 0x03 // first two bits of the section length
|
||||||
|
|
||||||
|
// bitmasks used for third byte
|
||||||
|
SECTION_LENGTH_2 = 0xff
|
||||||
|
)
|
||||||
|
|
||||||
type PMT struct {
|
type PMT struct {
|
||||||
PF byte // Point field
|
PF byte // Point field
|
||||||
PFB []byte // pointer filler bytes
|
PFB []byte // pointer filler bytes
|
||||||
|
@ -39,9 +51,11 @@ type PMT struct {
|
||||||
CNI bool // Current/next indicator
|
CNI bool // Current/next indicator
|
||||||
Section byte // Section number
|
Section byte // Section number
|
||||||
LSN byte // Last section number
|
LSN byte // Last section number
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func ReadPMT(pmtData []byte) (PMT, error) {
|
||||||
|
return PMT{}, nil
|
||||||
|
}
|
||||||
func (p *PMT) ToByteSlice() (output []byte) {
|
func (p *PMT) ToByteSlice() (output []byte) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,36 @@
|
||||||
|
package psi
|
||||||
|
|
||||||
|
// Program specific information
|
||||||
|
type PSI struct {
|
||||||
|
PF byte // Point field
|
||||||
|
PFB []byte // pointer filler bytes
|
||||||
|
TableID byte // Table ID
|
||||||
|
SSI bool // Sectiopn syntax indicator (1 for PAT, PMT, CAT)
|
||||||
|
PB bool // Private bit (0 for PAT, PMT, CAT)
|
||||||
|
SL uint16 // Section length
|
||||||
|
tss *TSS // Table syntax section (length defined by SL) if length 0 then nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// Table syntax section
|
||||||
|
type TSS struct {
|
||||||
|
TIE uint16 // Table ID extension
|
||||||
|
Version byte // Version number
|
||||||
|
CNI bool // Current/next indicator
|
||||||
|
Section byte // Section number
|
||||||
|
LSN byte // Last section number
|
||||||
|
table SD // specific data PAT/PMT
|
||||||
|
}
|
||||||
|
|
||||||
|
// Specific Data, which could be PAT or PMT
|
||||||
|
type SD interface {
|
||||||
|
Read(psiData []byte) (PSI, error)
|
||||||
|
ToByte() []byte
|
||||||
|
}
|
||||||
|
|
||||||
|
func (p *PSI) Read(psiData []byte) (PSI, error) {
|
||||||
|
return PSI{}, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (p *PSI) ToByte() []byte {
|
||||||
|
return nil
|
||||||
|
}
|
Loading…
Reference in New Issue