MCPcopy Index your code
hub / github.com/Monibuca/engine / ParseSPS

Function ParseSPS

codec/sps.go:26–216  ·  view source on GitHub ↗
(data []byte)

Source from the content-addressed store, hash-verified

24}
25
26func ParseSPS(data []byte) (self SPSInfo, err error) {
27 r := &bits.GolombBitReader{R: bytes.NewReader(data)}
28
29 if _, err = r.ReadBits(8); err != nil {
30 return
31 }
32
33 if self.ProfileIdc, err = r.ReadBits(8); err != nil {
34 return
35 }
36
37 // constraint_set0_flag-constraint_set6_flag,reserved_zero_2bits
38 if _, err = r.ReadBits(8); err != nil {
39 return
40 }
41
42 // level_idc
43 if self.LevelIdc, err = r.ReadBits(8); err != nil {
44 return
45 }
46
47 // seq_parameter_set_id
48 if _, err = r.ReadExponentialGolombCode(); err != nil {
49 return
50 }
51
52 if self.ProfileIdc == 100 || self.ProfileIdc == 110 ||
53 self.ProfileIdc == 122 || self.ProfileIdc == 244 ||
54 self.ProfileIdc == 44 || self.ProfileIdc == 83 ||
55 self.ProfileIdc == 86 || self.ProfileIdc == 118 {
56
57 var chroma_format_idc uint
58 if chroma_format_idc, err = r.ReadExponentialGolombCode(); err != nil {
59 return
60 }
61
62 if chroma_format_idc == 3 {
63 // residual_colour_transform_flag
64 if _, err = r.ReadBit(); err != nil {
65 return
66 }
67 }
68
69 // bit_depth_luma_minus8
70 if _, err = r.ReadExponentialGolombCode(); err != nil {
71 return
72 }
73 // bit_depth_chroma_minus8
74 if _, err = r.ReadExponentialGolombCode(); err != nil {
75 return
76 }
77 // qpprime_y_zero_transform_bypass_flag
78 if _, err = r.ReadBit(); err != nil {
79 return
80 }
81
82 var seq_scaling_matrix_present_flag uint
83 if seq_scaling_matrix_present_flag, err = r.ReadBit(); err != nil {

Callers 2

WriteSliceBytesMethod · 0.92
WriteSequenceHeadMethod · 0.92

Calls 5

ReadBitsMethod · 0.95
ReadBitMethod · 0.95
ReadSEMethod · 0.95
NewReaderMethod · 0.45

Tested by

no test coverage detected