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

Eyevinn / mp4ff / 37013036690
83%

Build:
DEFAULT BRANCH: master
Ran 02 Oct 2026 01:28PM UTC
Jobs 1
Files 217
Run time 2min
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

02 Oct 2026 01:26PM UTC coverage: 82.599% (+0.01%) from 82.588%
37013036690

push

github

tobbee
perf(av1,vp9,mp4): parse AV1 and VP9 headers from slices

The AV1 sequence header, frame header and tile group parsers, and the VP9 frame header parser, wrapped their slice in a bytes.Reader for bits.Reader. The bytes.Reader escaped into the reader's interface fields, so every parse allocated it, twice per AV1 sample. They now use bits.NewReaderFromSlice, which keeps both on the stack.

GetTileRanges collected the tiles of each tile group in a slice of their own and copied them into its result; tileGroupRanges is now appendTileGroupRanges and appends to the result directly. FragmentEncryptor's AV1 protector appends the subsample patterns to the fragment's array through the new appendAV1ProtectRanges, as AVC already does, instead of building a slice per sample. GetAV1ProtectRanges and GetTileRanges return the same values as before.

BenchmarkGetAV1ProtectRanges finds the cbcs ranges of the three samples of testdata/av1_multitile_seg.m4s with a new FrameHeaderDecoder (Apple M4 Pro, n=8):
- before the previous commit: 1353 ns, 77 allocations
- with the bits.Reader change: 1017 ns, 25 allocations
- with this commit: 909 ns, 16 allocations
The remaining allocations are the decoder, the FrameHeader and TileRange slice that the API returns, and the subsample slice that GetAV1ProtectRanges returns.

The encryption output is byte-for-byte the same as before for AV1, AVC, HEVC and AAC with cenc (8- and 16-byte IVs) and cbcs, for the test segments as they are and as one-sample fragments, both with one FragmentEncryptor and with chained EncryptFragment calls (36 outputs, compared with a throwaway test).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

10 of 14 new or added lines in 6 files covered. (71.43%)

25 existing lines in 2 files now uncovered.

23121 of 27992 relevant lines covered (82.6%)

0.83 hits per line

Uncovered Changes

Lines Coverage ∆ File
2
62.37
-0.26% av1/tiles.go
2
81.1
-0.23% mp4/crypto.go

Coverage Regressions

Lines Coverage ∆ File
14
92.22
-0.25% bits/ebspreader.go
11
89.34
2.89% bits/reader.go
Jobs
ID Job ID Ran Files Coverage
1 37013036690.1 02 Oct 2026 01:28PM UTC 217
82.6
GitHub Action Run
Source Files on build 37013036690
  • Tree
  • List 217
  • Changed 9
  • Source Changed 0
  • Coverage Changed 9
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • 72963711 on github
  • Prev Build on master (#37011943854)
  • Next Build on master (#37015483454)
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