Skip to content

Commit cc3e268

Browse files
committed
fix:ebsp consistent removal of emulation bytes
1 parent b0fcf7d commit cc3e268

File tree

1 file changed

+8
-4
lines changed

1 file changed

+8
-4
lines changed

bits/ebsp.go

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,10 @@ import (
77
"io"
88
)
99

10+
const (
11+
startCodeEmulationPreventionByte = 0x03
12+
)
13+
1014
var 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
112116
func 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

Comments
 (0)