Export StandardPAT, StandardPMT and MaxPTS.

This commit is contained in:
scruzin 2019-07-10 09:26:54 +09:30
parent aeb10e0ab7
commit 1728c3a531
1 changed files with 44 additions and 26 deletions

View File

@ -34,10 +34,10 @@ import (
"bitbucket.org/ausocean/av/container/mts/psi"
)
// Some common manifestations of PSI
// Some common manifestations of PSI.
var (
// standardPat is a minimal PAT.
standardPat = psi.PSI{
// StandardPAT is a minimal PAT.
StandardPAT = psi.PSI{
Pf: 0x00,
Tid: 0x00,
Ssi: true,
@ -55,6 +55,30 @@ var (
},
},
}
// Standard PMT is a minimal PMT.
StandardPMT = psi.PSI{
Pf: 0x00,
Tid: 0x02,
Ssi: true,
Sl: 0x12,
Tss: &psi.TSS{
Tide: 0x01,
V: 0,
Cni: true,
Sn: 0,
Lsn: 0,
Sd: &psi.PMT{
Pcrpid: 0x0100,
Pil: 0,
Essd: &psi.ESSD{
St: H264ID,
Epid: 0x0100,
Esil: 0x00,
},
},
},
}
)
const (
@ -69,7 +93,7 @@ const (
var Meta *meta.Data
var (
patTable = standardPat.Bytes()
patTable = StandardPAT.Bytes()
pmtTable []byte
)
@ -102,6 +126,9 @@ const (
// PTSFrequency is the presentation timestamp frequency in Hz.
PTSFrequency = 90000
// MaxPTS is the largest PTS value (i.e., for a 33-bit unsigned integer).
MaxPTS = (1 << 33) - 1
)
// Encoder encapsulates properties of an MPEG-TS generator.
@ -143,29 +170,20 @@ func NewEncoder(dst io.WriteCloser, rate float64, mediaType int) *Encoder {
sid = H264ID
}
// standardPmt is a minimal PMT, without descriptors for metadata.
pmtTable = (&psi.PSI{
Pf: 0x00,
Tid: 0x02,
Ssi: true,
Sl: 0x12,
Tss: &psi.TSS{
Tide: 0x01,
V: 0,
Cni: true,
Sn: 0,
Lsn: 0,
Sd: &psi.PMT{
Pcrpid: 0x0100,
Pil: 0,
Essd: &psi.ESSD{
St: byte(sid),
Epid: 0x0100,
Esil: 0x00,
},
// StandardPmt is a minimal PMT, without descriptors for metadata.
pmt := StandardPMT
if sid != H264ID {
pmt.Tss.Sd = &psi.PMT{
Pcrpid: 0x0100,
Pil: 0,
Essd: &psi.ESSD{
St: byte(sid),
Epid: 0x0100,
Esil: 0x00,
},
},
}).Bytes()
}
}
pmtTable = pmt.Bytes()
return &Encoder{
dst: dst,