mirror of
https://github.com/freemkv/libfreemkv.git
synced 2026-10-07 18:13:10 +00:00
Security - Remove the unsafe Vec::set_len over recycled sector buffers — UB reachable from safe code (GHSA-j8ww-f5fg-9pmh, low). Uses Vec::resize; pooling unchanged. CI / tooling - clippy on stable with the MSRV single-sourced from Cargo.toml; cargo-deny dependency-audit gate with first-party git sources allowed (#15); audience-based comment-guard (#17). Docs - README (keydb ownership, BD-J parser count), drive-access transport/reset notes, mux timeline module-doc links.
26 lines
1.2 KiB
Markdown
26 lines
1.2 KiB
Markdown
# m2ts test notes
|
|
|
|
## h264_avcc_parameter_sets_are_emitted_as_annex_b
|
|
|
|
An H.264 track's codec_private is an **avcC** record, not hvcC. The BD-TS
|
|
muxer must parse it with the avcC parser and emit the SPS/PPS as Annex-B
|
|
parameter sets, or the H.264 elementary stream reaches the player with no
|
|
SPS/PPS at all and is undecodable — silently, because frame_count still
|
|
advances and the mux reports success.
|
|
|
|
Mutation: parse codec_private with hvcc_to_annex_b (the pre-fix behaviour) ->
|
|
the parser returns None, no parameter sets are emitted, and this fails.
|
|
|
|
## vc1_video_is_wired_to_the_non_nal_path
|
|
|
|
`M2tsStream::create` must opt a VC-1 video track OUT of Annex-B conversion.
|
|
|
|
This pins the WIRING in `create`, not just `TsMuxer`'s flag: deleting the
|
|
`set_video_codec` loop leaves every TsMuxer-level test passing, because those
|
|
drive the muxer directly and set the flag themselves. Only a test that goes
|
|
through `create` catches it — and mangling MPEG-2/VC-1 video is silent, since
|
|
frame_count still increments and the mux reports success.
|
|
|
|
Mutation: remove the `set_video_codec` loop from `create`, or make it declare
|
|
Vc1 as a NAL codec -> the ES gains a start code and this fails.
|