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

Method parsePtl

codec/h265.go:445–511  ·  view source on GitHub ↗
(br *nazabits.BitReader, maxSubLayersMinus1 uint8)

Source from the content-addressed store, hash-verified

443}
444
445func (ctx *HVCDecoderConfigurationRecord) parsePtl(br *nazabits.BitReader, maxSubLayersMinus1 uint8) error {
446 var err error
447 var ptl HVCDecoderConfigurationRecord
448 if ptl.generalProfileSpace, err = br.ReadBits8(2); err != nil {
449 return err
450 }
451 if ptl.generalTierFlag, err = br.ReadBit(); err != nil {
452 return err
453 }
454 if ptl.generalProfileIdc, err = br.ReadBits8(5); err != nil {
455 return err
456 }
457 if ptl.generalProfileCompatibilityFlags, err = br.ReadBits32(32); err != nil {
458 return err
459 }
460 if ptl.generalConstraintIndicatorFlags, err = br.ReadBits64(48); err != nil {
461 return err
462 }
463 if ptl.generalLevelIdc, err = br.ReadBits8(8); err != nil {
464 return err
465 }
466 ctx.updatePtl(&ptl)
467
468 if maxSubLayersMinus1 == 0 {
469 return nil
470 }
471
472 subLayerProfilePresentFlag := make([]uint8, maxSubLayersMinus1)
473 subLayerLevelPresentFlag := make([]uint8, maxSubLayersMinus1)
474 for i := uint8(0); i < maxSubLayersMinus1; i++ {
475 if subLayerProfilePresentFlag[i], err = br.ReadBit(); err != nil {
476 return err
477 }
478 if subLayerLevelPresentFlag[i], err = br.ReadBit(); err != nil {
479 return err
480 }
481 }
482 if maxSubLayersMinus1 > 0 {
483 for i := maxSubLayersMinus1; i < 8; i++ {
484 if _, err = br.ReadBits8(2); err != nil {
485 return err
486 }
487 }
488 }
489
490 for i := uint8(0); i < maxSubLayersMinus1; i++ {
491 if subLayerProfilePresentFlag[i] != 0 {
492 if _, err = br.ReadBits32(32); err != nil {
493 return err
494 }
495 if _, err = br.ReadBits32(32); err != nil {
496 return err
497 }
498 if _, err = br.ReadBits32(24); err != nil {
499 return err
500 }
501 }
502

Callers 2

ParseVpsMethod · 0.95
ParseSpsMethod · 0.95

Calls 3

updatePtlMethod · 0.95
ReadBitMethod · 0.80
ReadBits64Method · 0.80

Tested by

no test coverage detected