Closed Bug 2034234 Opened 6 months ago Closed 6 months ago

Update nestegg to new version 405fdae0802b9d6aa0c7937dbc660da197164980 from 2026-04-22 20:20:19

Categories

(Core :: Audio/Video: Playback, task)

task

Tracking

()

RESOLVED FIXED
152 Branch
Tracking Status
firefox152 --- fixed

People

(Reporter: kinetik, Assigned: kinetik)

References

Details

Attachments

(1 external file)

This update covers 5 commits. Here are the overall diff statistics, and then the commit information.


media/libnestegg/include/nestegg/nestegg.h | 28 +-
media/libnestegg/moz.yaml | 4 +-
media/libnestegg/src/nestegg.c | 558 +++++++++++++++++++++++------
3 files changed, 478 insertions(+), 112 deletions(-)


fa2f1b95c98ab5da6cff06ca9628c7f6cdd2f669 by Matthew Gregan <kinetik@flim.org>

https://github.com/mozilla/nestegg/commit/fa2f1b95c98ab5da6cff06ca9628c7f6cdd2f669
Authored: 2026-04-21 23:43:36 +0000
Committed: 2026-04-22 20:06:59 +0000

Add support for MaxCLL and MaxFALL elements.

Parse MaxCLL (0x55BC) and MaxFALL (0x55BD) as children of Colour and
expose them as max_cll/max_fall on nestegg_video_params. Together with
the existing MasteringMetadata support, this covers the full HDR10
static metadata set. A value of 0 indicates the element is not present.

Adds hdr10.webm (demo_short.webm remuxed with --max-content-light 0:1000
--max-frame-light 0:400 via mkvmerge) as a regression fixture.

Files Modified:

  • include/nestegg/nestegg.h
  • src/nestegg.c

12d07259b995fc713ec9101a46d1ff097e7d7d16 by Matthew Gregan <kinetik@flim.org>

https://github.com/mozilla/nestegg/commit/12d07259b995fc713ec9101a46d1ff097e7d7d16
Authored: 2026-03-29 22:47:40 +0000
Committed: 2026-04-22 20:20:19 +0000

Check ne_io_tell return value and bail on error.

Files Modified:

  • src/nestegg.c

2f1bc7750b6acef9433363b10038e0463a4a3760 by Matthew Gregan <kinetik@flim.org>

https://github.com/mozilla/nestegg/commit/2f1bc7750b6acef9433363b10038e0463a4a3760
Authored: 2026-03-29 23:00:18 +0000
Committed: 2026-04-22 20:20:19 +0000

Introduce ne_io wrapper for internal I/O state.

Wrap nestegg_io in an internal ne_io struct and change all pure I/O
function signatures from nestegg_io * to ne_io *. This separates
I/O state from parser state, so I/O functions cannot access the full
nestegg context. Purely mechanical, no behavioral change.

Files Modified:

  • src/nestegg.c

1ef99383705672e5a9957597b02246434371739c by Matthew Gregan <kinetik@flim.org>

https://github.com/mozilla/nestegg/commit/1ef99383705672e5a9957597b02246434371739c
Authored: 2026-03-29 23:06:02 +0000
Committed: 2026-04-22 20:20:19 +0000

Add nestegg_packet_end_offset API.

Capture the logical stream position after each packet is fully read and
expose it via nestegg_packet_end_offset(). For SimpleBlock packets this
is the end of the block; for BlockGroup packets this is the end of the
entire group. This lets callers query the stream position without
relying on the raw I/O tell callback, which may not reflect the logical
position when internal buffering is active.

Files Modified:

  • include/nestegg/nestegg.h
  • src/nestegg.c

405fdae0802b9d6aa0c7937dbc660da197164980 by Matthew Gregan <kinetik@flim.org>

https://github.com/mozilla/nestegg/commit/405fdae0802b9d6aa0c7937dbc660da197164980
Authored: 2026-03-29 23:11:22 +0000
Committed: 2026-04-22 20:20:19 +0000

Introduce a small internal buffer for I/O.

Change nestegg_io read callback to return number of bytes read, allowing
short reads. nestegg now uses an internal 8KB buffer to service reads
internally, refilling the buffer via the updated read callback. This
significantly reduces I/O callback overhead for the many single-byte
reads the EBML and lace parsers require.

The max_offset parse fence is enforced during init only; it is cleared
after init succeeds so that subsequent cue loading, seeking, and packet
reading can access the full stream.

Refactor the test suite to run all tests through legacy read, buffered
readn, and short-read (16 byte cap) readn I/O paths. Add a
seek-then-read test and a max_offset fencing test. Enable sanitizer
halt_on_error in the test harness.

Files Modified:

  • include/nestegg/nestegg.h
  • src/nestegg.c

Blocks: 2033598
Duplicate of this bug: 2034229
Pushed by mgregan@mozilla.com: https://github.com/mozilla-firefox/firefox/commit/68b244f373f0 https://hg.mozilla.org/integration/autoland/rev/03a151902e49 Update nestegg to new version 405fdae0802b9d6aa0c7937dbc660da197164980 from 2026-04-22 20:20:19. r=media-playback-reviewers,alwu
Pushed by asilaghi@mozilla.com: https://github.com/mozilla-firefox/firefox/commit/88303f8bdd10 https://hg.mozilla.org/integration/autoland/rev/d6412fe6e727 Revert "Bug 2034234 - Update nestegg to new version 405fdae0802b9d6aa0c7937dbc660da197164980 from 2026-04-22 20:20:19. r=media-playback-reviewers,alwu" for causing build bustages at WebMDemuxer.cpp

Backed out for causing build bustages
Backout Link
Push with failures
Failure Log
Failure line ./../../../../../checkouts/gecko/dom/media/webm/WebMDemuxer.cpp:X:13: error: assigning to 'int64_t (*)(void *, size_t, void )' (aka 'long ()(void *, unsigned long, void *)') from incompatible type 'int (void *, size_t, void *)' (aka 'int (void *, unsigned long, void *)'): different return type ('int64_t' (aka 'long') vs 'int')

Flags: needinfo?(kinetik)

I was too hasty landing this, sorry! There's a small change on the Gecko side required as well.

Flags: needinfo?(kinetik)
Pushed by alwu@mozilla.com: https://github.com/mozilla-firefox/firefox/commit/ba742b52b14f https://hg.mozilla.org/integration/autoland/rev/7121a4222276 Update nestegg to new version 405fdae0802b9d6aa0c7937dbc660da197164980 from 2026-04-22 20:20:19. r=media-playback-reviewers,alwu
Status: ASSIGNED → RESOLVED
Closed: 6 months ago
Resolution: --- → FIXED
Target Milestone: --- → 152 Branch
QA Whiteboard: [qa-triage-done-c153/b152]
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: