/* NAME MpegTs.go - provides a data structure intended to encapsulate the properties of an MpegTs packet. DESCRIPTION See Readme.md AUTHOR Saxon Nelson-Milton LICENSE MpegTs.go is Copyright (C) 2017 the Australian Ocean Lab (AusOcean) It is free software: you can redistribute it and/or modify them under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. It is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with revid in gpl.txt. If not, see [GNU licenses](http://www.gnu.org/licenses). */ package tools import ( "testing" ) func TestH264Parsing(t *testing.T) { // Using file /* file, err := os.Open(fileName) if err != nil { panic("Could not open file!") return } stats, err := file.Stat() if err != nil { panic("Could not get file stats!") } buffer := make([]byte, stats.Size()) _, err = file.Read(buffer) if err != nil { panic("Could not read file!") } */ // straight from buffer someData := []byte{ 0, 0, 1, 7, 59, 100, 45, 82, 93, 0, 0, 1, 8, 23, 78, 65, 0, 0, 1, 6, 45, 34, 23, 3, 2, 0, 0, 1, 5, 3, 4, 5, 56, 76, 4, 234, 78, 65, 34, 34, 43, 0, 0, 1, 7, 67, 10, 45, 8, 93, 0, 0, 1, 8, 23, 7, 5, 0, 0, 1, 6, 4, 34, 2, 3, 2, 0, 0, 1, 1, 3, 4, 5, 5, 76, 4, 234, 78, 65, 34, 34, 43, 45, } nalAccess1 := []byte{ 0, 0, 1, 9, 240, 0, 0, 1, 7, 59, 100, 45, 82, 93, 0, 0, 1, 8, 23, 78, 65, 0, 0, 1, 6, 45, 34, 23, 3, 2, 0, 0, 1, 5, 3, 4, 5, 56, 76, 4, 234, 78, 65, 34, 34, 43, } nalAccess2 := []byte{ 0, 0, 1, 9, 240, 0, 0, 1, 7, 67, 10, 45, 8, 93, 0, 0, 1, 8, 23, 7, 5, 0, 0, 1, 6, 4, 34, 2, 3, 2, 0, 0, 1, 1, 3, 4, 5, 5, 76, 4, 234, 78, 65, 34, 34, 43, 45, } aChannel := make(chan []byte, 10) var nalAccessChan chan<- []byte nalAccessChan = aChannel go ParseH264Buffer(someData, nalAccessChan) anAccessUnit := <-aChannel for i := range anAccessUnit { if anAccessUnit[i] != nalAccess1[i] { t.Errorf("Should have been equal!") } } anAccessUnit = <-aChannel for i := range anAccessUnit { if anAccessUnit[i] != nalAccess2[i] { t.Errorf("Should have been equal!") } } }