Merge branch 'AlexxIT:master' into onvif-client

This commit is contained in:
seydx
2025-04-01 22:12:55 +02:00
committed by GitHub
3 changed files with 14 additions and 4 deletions
+2 -2
View File
@@ -122,9 +122,9 @@ func (r *Reader) ReadUEGolomb() uint32 {
// ReadSEGolomb - ReadSignedExponentialGolomb
func (r *Reader) ReadSEGolomb() int32 {
if b := r.ReadUEGolomb(); b%2 == 0 {
return -int32(b >> 1)
return -int32(b / 2)
} else {
return int32(b >> 1)
return int32((b + 1) / 2)
}
}
+10 -2
View File
@@ -5,7 +5,6 @@ import (
"encoding/hex"
"testing"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
@@ -91,5 +90,14 @@ func TestDecodeSPS2(t *testing.T) {
require.Nil(t, err)
sps := DecodeSPS(b)
assert.Nil(t, sps) // broken SPS?
require.Equal(t, uint16(928), sps.Width())
require.Equal(t, uint16(576), sps.Height())
s = "Z2QAHq2EAQwgCGEAQwgCGEAQwgCEO1BQF/yzcBAQFAAAD6AAAXcCEA==" // unknown
b, err = base64.StdEncoding.DecodeString(s)
require.Nil(t, err)
sps = DecodeSPS(b)
require.Equal(t, uint16(640), sps.Width())
require.Equal(t, uint16(360), sps.Height())
}
+2
View File
@@ -88,6 +88,8 @@ func (s *SPS) Height() uint16 {
}
func DecodeSPS(sps []byte) *SPS {
// https://developer.ridgerun.com/wiki/index.php/H264_Analysis_Tools
// ffmpeg -i file.h264 -c copy -bsf:v trace_headers -f null -
r := bits.NewReader(sps)
hdr := r.ReadByte()