Skip to content

ManagedCodecs 0.2.0

Choose a tag to compare

@github-actions github-actions released this 28 Oct 18:29
183da83

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 threw NotSupportedException.
  • 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.