• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

Eyevinn / hi264 / 37922378987
88%
main: 88%

Build:
Build:
LAST BUILD BRANCH: ver-0-11-0
DEFAULT BRANCH: main
Ran 09 Oct 2026 11:13AM UTC
Jobs 1
Files 51
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

09 Oct 2026 11:12AM UTC coverage: 88.192% (-0.01%) from 88.205%
37922378987

Pull #34

github

tobbee
fix: report a CABAC slice that needs bits past the end of its data

cabac.Decoder.readBit returned 0 once the slice data ran out, so a truncated slice went on decoding bins from zeros up to the last macroblock of the frame. With #33's bound on mb_qp_delta this no longer hangs, but it could still decode up to 139264 phantom macroblocks and return a frame without an error: 22 of 59 truncations of a CABAC IDR with an 8192x4352 SPS did.

A conforming slice never needs bits past its end. Decoding end_of_slice_flag equal to 1 does no renormalization, and the last bit read into codIOffset is the rbsp_stop_one_bit (section 9.3.3.2.4), so no slack is needed. readBit still returns 0, keeping the arithmetic defined, but records that it went past the end, and the new Decoder.Err returns ErrEndOfData from then on. DecodeSliceData checks it after each macroblock and end_of_slice_flag, and the CABAC P_Skip loop after each end_of_slice_flag. The bound on mb_qp_delta stays, since a per-macroblock check cannot stop a loop inside one macroblock.

All golden streams still match FFmpeg, so none reads past its end. Across every truncation length of 31 golden CABAC IDRs, 2 generated ones and the 8192x4352 case, about 150000 cuts, every cut now returns an error, and the slowest 8192x4352 cut takes 0.12 s instead of 0.9 s. BenchmarkDecodeCABAC and BenchmarkDecodeHD are unchanged within noise.
Pull Request #34: fix: report a CABAC slice that needs bits past the end of its data

13 of 15 new or added lines in 3 files covered. (86.67%)

5 existing lines in 1 file now uncovered.

8507 of 9646 relevant lines covered (88.19%)

1.02 hits per line

Uncovered Changes

Lines Coverage ∆ File
2
82.2
-1.41% internal/slice/slicedata.go

Coverage Regressions

Lines Coverage ∆ File
5
82.2
-1.41% internal/slice/slicedata.go
Jobs
ID Job ID Ran Files Coverage
1 37922378987.1 09 Oct 2026 11:13AM UTC 51
88.19
GitHub Action Run
Source Files on build 37922378987
  • Tree
  • List 51
  • Changed 3
  • Source Changed 0
  • Coverage Changed 3
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Pull Request #34
  • PR Base - main (#37786241622)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc