(br *nazabits.BitReader, maxSubLayersMinus1 uint8)
| 443 | } |
| 444 | |
| 445 | func (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 |
no test coverage detected