MCPcopy Create free account
hub / github.com/Monibuca/engine / ParseSps

Method ParseSps

codec/h265.go:311–443  ·  view source on GitHub ↗
(sps []byte)

Source from the content-addressed store, hash-verified

309}
310
311func (ctx *HVCDecoderConfigurationRecord) ParseSps(sps []byte) error {
312 var err error
313
314 if len(sps) < 2 {
315 return ErrHevc
316 }
317
318 rbsp := nal2rbsp(sps[2:])
319 br := nazabits.NewBitReader(rbsp)
320
321 // sps_video_parameter_set_id
322 if _, err = br.ReadBits8(4); err != nil {
323 return err
324 }
325
326 spsMaxSubLayersMinus1, err := br.ReadBits8(3)
327 if err != nil {
328 return err
329 }
330
331 if spsMaxSubLayersMinus1+1 > ctx.numTemporalLayers {
332 ctx.numTemporalLayers = spsMaxSubLayersMinus1 + 1
333 }
334
335 // sps_temporal_id_nesting_flag
336 if ctx.temporalIdNested, err = br.ReadBit(); err != nil {
337 return err
338 }
339
340 if err = ctx.parsePtl(&br, spsMaxSubLayersMinus1); err != nil {
341 return err
342 }
343
344 // sps_seq_parameter_set_id
345 if _, err = br.ReadGolomb(); err != nil {
346 return err
347 }
348
349 var cf uint32
350 if cf, err = br.ReadGolomb(); err != nil {
351 return err
352 }
353 ctx.chromaFormat = uint8(cf)
354 if ctx.chromaFormat == 3 {
355 if _, err = br.ReadBit(); err != nil {
356 return err
357 }
358 }
359
360 if ctx.PicWidthInLumaSamples, err = br.ReadGolomb(); err != nil {
361 return err
362 }
363 if ctx.PicHeightInLumaSamples, err = br.ReadGolomb(); err != nil {
364 return err
365 }
366
367 conformanceWindowFlag, err := br.ReadBit()
368 if err != nil {

Callers 1

Calls 3

parsePtlMethod · 0.95
nal2rbspFunction · 0.85
ReadBitMethod · 0.80

Tested by

no test coverage detected