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

Eyevinn / hi264 / 37927748890
88%
main: 88%

Build:
Build:
LAST BUILD BRANCH: ver-0-11-0
DEFAULT BRANCH: main
Ran 09 Oct 2026 12:05PM UTC
Jobs 1
Files 53
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 12:01PM UTC coverage: 87.727% (-0.4%) from 88.091%
37927748890

Pull #36

github

tobbee
feat: decode IDR pictures carried by several slices

The decoder took the first IDR NAL unit for the whole picture: DecodeNALUs returned after it, and the slice data loops decoded mbWidth*mbHeight macroblocks from that one slice. A picture split into slices lost every slice but the first. Under CABAC it decoded with no error and wrong pixels; under CAVLC it failed at the second slice's first macroblock.

Each slice is now decoded from its first_mb_in_slice into a SliceContext shared by the picture, until end_of_slice_flag (CABAC) or more_rbsp_data() (CAVLC), with the QP and the CABAC engine and contexts reset per slice. The picture is reconstructed and deblocked once its slices cover every macroblock, so neither an access unit delimiter nor a look-ahead to the next picture is needed. A missing slice, a macroblock decoded twice, or a new picture (clause 7.4.1.2.4) starting before the current one is complete returns an error instead of a frame with gaps. Redundant slices are skipped, and slice groups (FMO) are rejected, since their macroblocks are not in raster order.

A macroblock in another slice is not available (clause 6.4.8). MBAvailA/B, and the new MBAvailC/D, compare slice numbers, which covers every CABAC and CAVLC context, and reconstruction takes intra sample availability from them instead of from the position in the picture. The Intra_8x8 reference filter now follows clause 8.3.2.2.1 directly: substituting unavailable samples and then filtering gave a wrong p'[0,-1] when p[-1,-1] is not available but p[-1,0] is, which only happens at a slice boundary. Deblocking uses the disable_deblocking_filter_idc and filter offsets of each macroblock's own slice, and leaves slice edges unfiltered for idc 2.

Group 13 of gen_and_verify.sh adds nine golden streams, all bit-exact with FFmpeg: x264 slices starting at row starts and mid-row, one macroblock per slice and limited by bytes, in CABAC and CAVLC, and two streams where tools/mix_slice_deblock gives e... (continued)
Pull Request #36: feat: decode IDR pictures carried by several slices

384 of 461 new or added lines in 6 files covered. (83.3%)

3 existing lines in 1 file now uncovered.

8685 of 9900 relevant lines covered (87.73%)

1.01 hits per line

Uncovered Changes

Lines Coverage ∆ File
51
63.31
tools/mix_slice_deblock/main.go
15
88.97
-0.0% pkg/decoder/decoder.go
11
78.77
-1.05% internal/slice/slicedata.go

Coverage Regressions

Lines Coverage ∆ File
3
78.77
-1.05% internal/slice/slicedata.go
Jobs
ID Job ID Ran Files Coverage
1 37927748890.1 09 Oct 2026 12:05PM UTC 53
87.73
GitHub Action Run
Source Files on build 37927748890
  • Tree
  • List 53
  • Changed 5
  • Source Changed 0
  • Coverage Changed 5
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Pull Request #36
  • PR Base - main (#37926971936)
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