github.com/puellanivis/breton@v0.2.16/lib/mpeg/ts/pcr/pcr_test.go (about)

     1  package pcr
     2  
     3  import (
     4  	"reflect"
     5  	"testing"
     6  	"time"
     7  )
     8  
     9  func TestMarshaling(t *testing.T) {
    10  	var pcr PCR
    11  
    12  	pcr.Set(1 * time.Microsecond)
    13  
    14  	if pcr.base != 27 {
    15  		t.Errorf("expected pcr.base == 27 but got %d", pcr.base)
    16  	}
    17  
    18  	// a bbbbbbbb cccccccc dddddddd eeeeeeee
    19  	// 0 00000000 00000000 00000000 00011011
    20  	//   abbbbbbb bccccccc cddddddd deeeeeee e0000000 00000000
    21  	//   00000000 00000000 00000000 00001101 1
    22  	//   00000000 00000000 00000000 00001101 10000000 00000000
    23  	//      0   0    0   0    0   0    0   d    8   0    0   0
    24  
    25  	expected := []byte{0x00, 0x00, 0x00, 0x0d, 0x80, 0x00}
    26  	b, err := pcr.Marshal()
    27  	if err != nil {
    28  		t.Fatal(err)
    29  	}
    30  
    31  	if !reflect.DeepEqual(b, expected) {
    32  		t.Errorf("pcr.Marshal: expected [% 2X], got [% 2X]", expected, b)
    33  	}
    34  
    35  	pcr.base = pcrModulo
    36  	pcr.extension = 0x1ff
    37  
    38  	// a bbbbbbbb cccccccc dddddddd eeeeeeee        f gggggggg
    39  	// 1 11111111 11111111 11111111 11111111        1 11111111
    40  	//   abbbbbbb bccccccc cddddddd deeeeeee e000000f gggggggg
    41  	//   11111111 11111111 11111111 11111111 1      1 11111111
    42  	//   11111111 11111111 11111111 11111111 10000001 11111111
    43  	//      f   f    f   f    f   f    f   f    8   1    f   f
    44  
    45  	expected = []byte{0xff, 0xff, 0xff, 0xff, 0x81, 0xff}
    46  	b, err = pcr.Marshal()
    47  	if err != nil {
    48  		t.Fatal(err)
    49  	}
    50  
    51  	if !reflect.DeepEqual(b, expected) {
    52  		t.Errorf("pcr.Marshal: expected [% 2X], got [% 2X]", expected, b)
    53  	}
    54  
    55  	pcr.base = 0x1F3B795D1
    56  	pcr.extension = 0x15B
    57  
    58  	// a bbbbbbbb cccccccc dddddddd eeeeeeee        f gggggggg
    59  	// 1 11110011 10110111 10010101 11010001        1 01011011
    60  	//   abbbbbbb bccccccc cddddddd deeeeeee e000000f gggggggg
    61  	//   11111001 11011011 11001010 11101000 1      1 01011011
    62  	//   11111001 11011011 11001010 11101000 10000001 01011011
    63  	//      f   9    d   b    c   a    e   8    8   1    5   b
    64  
    65  	expected = []byte{0xf9, 0xdb, 0xca, 0xe8, 0x81, 0x5b}
    66  	b, err = pcr.Marshal()
    67  	if err != nil {
    68  		t.Fatal(err)
    69  	}
    70  
    71  	if !reflect.DeepEqual(b, expected) {
    72  		t.Errorf("pcr.Marshal: expected [% 2X], got [% 2X]", expected, b)
    73  	}
    74  
    75  }