MCPcopy Create free account
hub / github.com/Monibuca/engine / WritePATPacket

Function WritePATPacket

codec/mpegts/mpegts_pat.go:189–221  ·  view source on GitHub ↗
(w io.Writer, tsHeader []byte, pat MpegTsPAT)

Source from the content-addressed store, hash-verified

187}
188
189func WritePATPacket(w io.Writer, tsHeader []byte, pat MpegTsPAT) (err error) {
190 if pat.TableID != TABLE_PAS {
191 err = errors.New("PAT table ID error")
192 return
193 }
194
195 // 将所有要写的数据(PAT),全部放入到buffer中去.
196 // buffer 里面已经写好了整个pat表(PointerField+PSI+PAT+CRC)
197 bw := &bytes.Buffer{}
198 if err = WritePAT(bw, pat); err != nil {
199 return
200 }
201
202 // TODO:如果Pat.Program里面包含的信息很大,大于188?
203 stuffingBytes := util.GetFillBytes(0xff, TS_PACKET_SIZE-4-bw.Len())
204
205 // PATPacket = TsHeader + PAT + Stuffing Bytes
206 var PATPacket []byte
207 PATPacket = append(PATPacket, tsHeader...)
208 PATPacket = append(PATPacket, bw.Bytes()...)
209 PATPacket = append(PATPacket, stuffingBytes...)
210
211 fmt.Println("-------------------------")
212 fmt.Println("Write PAT :", PATPacket)
213 fmt.Println("-------------------------")
214
215 // 写PAT负载
216 if _, err = w.Write(PATPacket); err != nil {
217 return
218 }
219
220 return
221}
222
223func WriteDefaultPATPacket(w io.Writer) (err error) {
224 _, err = w.Write(DefaultPATPacket)

Callers

nothing calls this directly

Calls 6

LenMethod · 0.95
BytesMethod · 0.95
GetFillBytesFunction · 0.92
WritePATFunction · 0.85
NewMethod · 0.80
WriteMethod · 0.65

Tested by

no test coverage detected