diff --git a/stream/mts/encoder.go b/stream/mts/encoder.go index 8c6bce27..566f7457 100644 --- a/stream/mts/encoder.go +++ b/stream/mts/encoder.go @@ -36,6 +36,12 @@ import ( "time" "bitbucket.org/ausocean/av/stream/mts/pes" + "bitbucket.org/ausocean/av/stream/mts/psi" +) + +var ( + patTable []byte + pmtTable []byte ) const ( @@ -43,66 +49,13 @@ const ( psiSendCount = 100 ) -// TODO: Finish off mts/psi so that we can create pat and pmt tables instead -// of hardcoding. -var ( - patTable = []byte{ - 0x00, // pointer - - // ---- section included in data sent to CRC32 during check - // table header - 0x00, // table id - 0xb0, // section syntax indicator:1|private bit:1|reserved:2|section length:2|more bytes...:2 - 0x0d, // more bytes... - - // syntax section - 0x00, 0x01, // table id extension - 0xc1, // reserved bits:3|version:5|use now:1 - 0x00, // section number - 0x00, // last section number - // table data - 0x00, 0x01, // Program number - 0xf0, 0x00, // reserved:3|program map PID:13 - - // 0x2a, 0xb1, 0x04, 0xb2, // CRC - // ---- - } - pmtTable = []byte{ - 0x00, // pointer - - // ---- section included in data sent to CRC32 during check - // table header - 0x02, // table id - 0xb0, // section syntax indicator:1|private bit:1|reserved:2|section length:2|more bytes...:2 - 0x12, // more bytes... - - // syntax section - 0x00, 0x01, // table id extension - 0xc1, // reserved bits:3|version:5|use now:1 - 0x00, // section number - 0x00, // last section number - // table data - 0xe1, 0x00, // reserved:3|PCR PID:13 - 0xf0, 0x00, // reserved:4|unused:2|program info length:10 - // No program descriptors since program info length is 0. - // elementary stream info data - 0x1b, // stream type - 0xe1, 0x00, // reserved:3|elementary PID:13 - 0xf0, 0x00, // reserved:4|unused:2|ES info length:10 - // No elementary stream descriptors since ES info length is 0. - - // 0x15, 0xbd, 0x4d, 0x56, // CRC - // ---- - } -) - func init() { // Generate IEEE polynomial table // for the big-endian algorithm. crcTable := crc32_MakeTable(bits.Reverse32(crc32.IEEE)) - patTable = completePSI(patTable, crcTable) - pmtTable = completePSI(pmtTable, crcTable) + patTable = completePSI(psi.StdPat, crcTable) + pmtTable = completePSI(psi.StdPmt, crcTable) } func completePSI(psi []byte, tab *crc32.Table) []byte {