Repository navigation
ManagedCodecs 0.2.0
Parametric stereo complete (mixing procedure Rb, phase parameters, 34 bands), long-term references in H.264 field
pictures, and faster H.264 motion compensation. The public API is that of 0.1.0, unchanged.
Added
- H.264: long-term references marked in field pictures (an IDR field pair marked long-term, memory management
operations 2, 3, 4 and 6 in field pictures), which threwNotSupportedException. - HE-AAC v2: parametric stereo with mixing procedure Rb (icc_mode 3 to 5), which threw
NotSupportedException. - HE-AAC v2: parametric stereo in 34 bands (iid_mode or icc_mode 2 or 5), which threw
NotSupportedException. - HE-AAC v2: parametric stereo's phase parameters (IPD and OPD), which were ignored: a stream that sends them decoded
without error but up to its whole peak off FFmpeg's output.
Changed
- H.264 decodes faster: motion compensation's common partitions (one reference, bi-predicted, weighted) take direct
paths to the kernels, which copy by rows at fixed widths. On GitHub's runners, timed in one run against the code
before these changes: 4% (x64) to 5% (ARM64) faster on the 720p sample, about 3.5% on P-frame streams, 1 to 3% with
B frames, unchanged at 10 bits; the output is the same.
Documentation
- Native AOT on x64: set
IlcInstructionSet(x86-64-v3) in the app, or the AVX2 and 256-bit paths are left out (AAC
and HE-AAC take about a third longer); README's Native AOT section has the timings. - HE-AAC v2 with downsampled SBR (parametric stereo at the core's rate) is checked against FFmpeg now, a sample from a
patched FDK encoder; it was untested.
Fixed
- Native AOT for the default x64 target: MJPEG decoded at half speed and H.264 6% slower, the portable byte shuffle
being a software call there; x64 now uses SSE2's unpacks and SSSE3's pshufb directly.