FFmpeg
FFmpeg is a popular open-source multimedia framework commonly used for audio/video encode and decode functionality to a variety of codecs.
www.ffmpeg.org
Other Activity This Week
- swscale/aarch64/ops: remove overly-complicated generated lookup function
Ramiro Polla - avcodec/aacenc: rework NMR stereo decisions, retune coded bandwidth
Lynne: Stereo decisions are made per band before quantization, from the psy model's spectra, and carry cross-frame memory (EMA-smoothed statistics, per-grid mode banks, leave-hysteresis) so the image holds instead of churning:
- M/S adopts content-driven and rate-free (side under half the mid); for mid-dominant bands M/S is simply the better coding at every rate, and a wandering L/R fraction reads as image instability.
- I/S competes with M/S above 6.1 kHz instead of only seeing M/S rejects (which are exactly the wide bands it cannot render), and engages under SUSTAINED strain only: the pressure ramp gated by the lambda floor, so pressure spikes at a comfortable operating point cannot flood it onto content where coding the side is affordable and strictly better. - avcodec/aacpsy: sync block switching across channel pairs
Lynne: Implement the window_pair() hook: detect both channels of a CPE, then decide together - if either channel attacks, both switch, with one merged attack map so the grouping matches across the pair and common_window survives transients. - avcodec/aacenc_tns: enable short-block TNS via pooled per-group filters
Lynne: Per-window filters combined with group-shared scalefactors made short-block TNS produce decoder-synthesized silence: a weak residual in one sub-window rounds to zero under the group's scalefactor and the synthesis filter has nothing to re-amplify, audible as 1.5-3 ms dropouts on beat content. - avcodec/aacenc: rework NMR rate control, pool CPE budgets, add decision memory
Lynne: Rate control: replace the integral servo with a stateless pressure offset (exp2(-K*fill/R)) so a drained reservoir cannot wind up and crater quality after loud stretches; slew-limit the final operating lambda per frame (bits deviate instead, the reservoir absorbs); seed the reservoir full at stream start; and track rate strain explicitly: a long-frame lambda EMA against anchors that scale up when the achieved distortion/mask ratio flags noise-class content (whose psy masks are wholesale violated and lambda reads inflated), plus a lambda min-tracker separating sustained starvation from transient spikes at a comfortable operating point. - avcodec/psymodel: add pair-synced window switching hook and pair state
Lynne: Divergent block switching between the two channels of a CPE disables common_window, and with it every joint stereo tool, on exactly the frames that need them most; the lone short channel then codes its transient alone, which is audible as one-channel garble at beats. - swscale/x86/ops: add AVX512 vpermb packed shuffle path
Niklas Haas: We can quite easily generalize the existing AVX512 pushfb implementation to support vpermb when the shuffle mask is cross-lane.
rgb24 1920x1080 -> rgba 1920x1080, speedup=1.372x faster
This does require some finesse w.r.t. - avcodec/hevcdec: Support SMPTE-2094-50 metadata
Vignesh Venkat: Handle SMPTE-2094-50 metadata that appears as a SEI message. - avcodec/d3d12va_encode_av1: add user-configurable tile support
younengxiao: Add a "tiles" option (WxH format) to the D3D12VA AV1 encoder.