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
container/mts

View File

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