@@ -7,6 +7,10 @@ import (
77 "io"
88)
99
10+ const (
11+ startCodeEmulationPreventionByte = 0x03
12+ )
13+
1014var ErrNotReedSeeker = errors .New ("Reader does not support Seek" )
1115
1216// NewEBSPReader - return a new Reader.
@@ -39,7 +43,7 @@ func (r *EBSPReader) MustRead(n int) uint {
3943 panic ("Reading error" )
4044 }
4145 r .pos ++
42- if r .zeroCount == 2 {
46+ if r .zeroCount == 2 && b == startCodeEmulationPreventionByte {
4347 err = binary .Read (r .rd , binary .BigEndian , & b )
4448 if err != nil {
4549 panic ("Reading error" )
@@ -108,13 +112,13 @@ func (r *EBSPReader) NrBitsReadInCurrentByte() int {
108112 return 8 - r .n
109113}
110114
111- // EBSP2rbsp - convert from EBSP to RBSP by removing escape 0x03 after two 0x00
115+ // EBSP2rbsp - convert from EBSP to RBSP by removing start code emulation prevention bytes
112116func EBSP2rbsp (ebsp []byte ) []byte {
113117 zeroCount := 0
114118 output := make ([]byte , 0 , len (ebsp ))
115119 for i := 0 ; i < len (ebsp ); i ++ {
116120 b := ebsp [i ]
117- if zeroCount == 2 && b == 3 {
121+ if zeroCount == 2 && b == startCodeEmulationPreventionByte {
118122 zeroCount = 0
119123 } else {
120124 if b != 0 {
@@ -140,7 +144,7 @@ func (r *EBSPReader) Read(n int) (uint, error) {
140144 return 0 , err
141145 }
142146 r .pos ++
143- if r .zeroCount == 2 && b <= 3 {
147+ if r .zeroCount == 2 && b == startCodeEmulationPreventionByte {
144148 err = binary .Read (r .rd , binary .BigEndian , & b )
145149 if err != nil {
146150 return 0 , err
0 commit comments