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

Function WritePESHeader

codec/mpegts/mpegts_pes.go:350–455  ·  view source on GitHub ↗
(w io.Writer, header MpegTsPESHeader)

Source from the content-addressed store, hash-verified

348}
349
350func WritePESHeader(w io.Writer, header MpegTsPESHeader) (written int, err error) {
351 if header.PacketStartCodePrefix != 0x0000001 {
352 err = errors.New("write PacketStartCodePrefix is not 0x0000001")
353 return
354 }
355
356 // packetStartCodePrefix(24) (0x000001)
357 if err = util.WriteUint24ToByte(w, header.PacketStartCodePrefix, true); err != nil {
358 return
359 }
360
361 written += 3
362
363 // streamID(8)
364 if err = util.WriteUint8ToByte(w, header.StreamID); err != nil {
365 return
366 }
367
368 written += 1
369
370 // pes_PacketLength(16)
371 // PES包长度可能为0,这个时候,需要自己去算
372 // 0 <= len <= 65535
373 if err = util.WriteUint16ToByte(w, header.PesPacketLength, true); err != nil {
374 return
375 }
376
377 //fmt.Println("Length :", payloadLength)
378 //fmt.Println("PES Packet Length :", header.pes_PacketLength)
379
380 written += 2
381
382 // constTen(2)
383 // pes_ScramblingControl(2)
384 // pes_Priority(1)
385 // dataAlignmentIndicator(1)
386 // copyright(1)
387 // originalOrCopy(1)
388 // 1000 0001
389 if header.ConstTen != 0x80 {
390 err = errors.New("pes header ConstTen != 0x80")
391 return
392 }
393
394 flags := header.ConstTen | header.PesScramblingControl | header.PesPriority | header.DataAlignmentIndicator | header.Copyright | header.OriginalOrCopy
395 if err = util.WriteUint8ToByte(w, flags); err != nil {
396 return
397 }
398
399 written += 1
400
401 // pts_dts_Flags(2)
402 // escr_Flag(1)
403 // es_RateFlag(1)
404 // dsm_TrickModeFlag(1)
405 // additionalCopyInfoFlag(1)
406 // pes_CRCFlag(1)
407 // pes_ExtensionFlag(1)

Callers 1

WritePESPacketMethod · 0.92

Calls 6

WriteUint24ToByteFunction · 0.92
WriteUint8ToByteFunction · 0.92
WriteUint16ToByteFunction · 0.92
PutPtsDtsFunction · 0.92
WriteUint40ToByteFunction · 0.92
NewMethod · 0.80

Tested by

no test coverage detected