← All reportsPublic report

ffmpeg/ffmpeg

Mirror of https://git.ffmpeg.org/ffmpeg.git

64k stars C View on GitHubprofiled 14d ago
Try GitZoid
400PRs this week
55Contributors
0Deps scanned
0Issues found
01 · Repo overview

How ffmpeg is put together

FFmpeg is a multimedia processing framework written primarily in C that provides libraries and CLI tools to decode, encode, transcode, filter, and stream audio/video content. The architecture is layered: libavutil supplies core utilities, libavcodec handles codecs, libavformat handles container formats and protocols, with libavfilter/libswscale/libswresample/libavdevice providing filtering, scaling, resampling, and device access. Data flows from demuxers/protocols in libavformat through decoders in libavcodec into filter graphs in libavfilter, then out through encoders and muxers. The fftools directory contains the end-user applications (ffmpeg, ffplay, ffprobe) built on top of these libraries, and the build is driven by a custom configure script plus GNU Make makefiles in ffbuild.

Languages

CPythonShellMake

Infrastructure

Forgejo CI configuration (.forgejo/)

Major components

libavcodec

Implements audio/video/subtitle codecs — encoders, decoders, and bitstream parsers (e.g., aac*, ac3*, adpcm* files).

libavformat

Implements streaming protocols, container formats (muxers/demuxers), and basic I/O access.

libavutil

Provides hashers, decompressors, and miscellaneous utility functions shared by all other libraries.

libavfilter

Provides alteration of decoded audio and video through a directed graph of connected filters.

libavdevice

Provides an abstraction layer to access capture and playback devices.

libswscale / libswresample

Implement color conversion/scaling routines and audio mixing/resampling routines respectively.

fftools

Command-line tools: ffmpeg.c plus split ffmpeg_dec/mux/filter/sched modules, ffplay.c player, and ffprobe.c analyzer.

ffbuild + compat

Build-system makefiles/scripts (common.mak, library.mak, version.sh) and portability shims for non-POSIX platforms (w32pthreads.h, os2threads.h).

Over the last month, FFmpeg development focused heavily on audio encoding improvements—especially AAC channel layouts (ambisonics and height channels)—plus a wave of modernization replacing old MMX instructions with SSE2 across video codecs. There was also substantial work on Vulkan-based hardware video encoding/decoding for H.264, HEVC, and FFV1, alongside numerous robustness fixes that guard against malformed files. Performance work continued in the scaling engine (swscale), which gained multithreading and smarter internal buffer handling.

Week by week

2026-08-24A quiet week with two targeted fixes: one restoring builds on Apple Silicon Macs, another updating the external AAC encoder to current APIs.latest2 changes

Fix

Fixed macOS ARM build tooling

The checkasm testing utility now builds correctly on Macs using ARM processors.

Refactor

Updated fdk-aac encoder

The AAC encoder plugin no longer uses a deprecated way of describing speaker/channel arrangements, keeping it compatible with newer library versions.

2026-08-17The AAC encoder gained support for advanced surround-sound formats including ambisonics and height channels, while dozens of cleanup and bugfix patches landed across codecs and tests.6 changes

Feature

AAC ambisonic audio support

FFmpeg's built-in AAC encoder can now encode 3D/spatial (ambisonic) audio layouts.

Feature

Height-channel speaker layouts in AAC

The encoder can now write PCE headers describing speakers placed above the listener, like in cinema-style sound setups, with matching test coverage added.

Refactor

MMX replaced by SSE2 in several decoders

Older single-instruction routines used by the VP9, PNG, and H.264 decoders were upgraded to the more modern SSE2 instruction set.

Fix

H.264 Vulkan decoding correctness

Video decoding via Vulkan now correctly reads whether a stream uses progressive or interlaced frames from the stream settings.

Fix

E-AC-3 in MP4 fix

Writing E-AC-3 audio into MP4 files now derives channel information correctly for dependent substreams, verified by a new automated test.

Fix

Robustness hardening

Several file readers (GENH, FSB) and network writers (DASH, HTTP) now handle truncated data or failed allocations gracefully instead of misbehaving.

2026-08-10Vulkan hardware encoding and decoding received major reliability upgrades, and the CUDA scaling filter was restructured for smarter scaling decisions.6 changes

Refactor

Faster HEVC encoding via Vulkan

Hardware-accelerated HEVC encoding through Vulkan got optimization work to speed it up.

Fix

Vulkan reference-picture handling improved

The Vulkan decoder now prefers the more reliable 'distinct' mode when a graphics driver offers multiple ways to manage reference frames.

Fix

H.264 Vulkan encoder profile fixes

The Vulkan H.264 encoder now signals the correct profile information and disables B-frames for baseline profiles where they aren't allowed.

Refactor

CUDA scaler optimizations

The GPU-based scale filter now accounts for chroma subsampling and skips unnecessary intermediate textures and disabled processing steps, making scaling more efficient.

Fix

Reverted decoder throttling change

A recent change allowing throttled decoder output was rolled back after problems.

Chore

More MMX-to-SSE2 migrations

VP8, VP9, and HEVC assembly routines were ported off legacy MMX instructions.

2026-08-03MP3 writing gained gapless-playback support for non-seekable outputs, the scaling engine got threading speedups, and many parsers were hardened against corrupt input.6 changes

Feature

Gapless MP3 writing

When writing MP3s to streams that can't be rewound (like pipes), FFmpeg now buffers metadata so gapless playback info is preserved.

Refactor

Multithreaded pixel-format conversions

The swscale image-scaling subsystem now uses multiple threads for generating conversion operations and macro building, speeding things up.

Refactor

Smarter plane copying in swscale

The new scaling graph can skip redundant memory copies when source and destination planes are identical, reducing wasted work.

Fix

AC-3 audio quality fix

The float AC-3 decoder no longer truncates coefficients, avoiding small precision losses, and the fixed-point variant had its dither corrected.

Fix

Malformed-input protection

RTP streamers and file readers (VC2, HEVC, MPEG, DASH) now reject oversized or negative values instead of risking buffer overruns.

Fix

Dynamic HDR metadata fix

Parsing HDR10+ dynamic metadata now correctly returns nothing rather than an error when no data is present.

2026-07-27iTunes-style gapless playback info is now read from MP3 files, compiler warnings were swept away en masse, and machine-learning filters gained faster CUDA integration.6 changes

Feature

Reading iTunes gapless info from MP3s

FFmpeg can now parse iTunes' gapless playback tags, so albums play without tiny gaps between tracks.

Refactor

Zero-copy CUDA for AI filters

The deep-learning filter backend can now pass tensors directly on the GPU without extra copies when using Torch, speeding up AI-powered filtering.

Fix

H.264 interlaced-video fix

The H.264 decoder now properly waits for both fields of an interlaced frame pair before using them as references, avoiding glitches.

Chore

Compiler warning cleanup

Numerous code spots were annotated so the compiler stops flagging intentional behavior like switch fall-throughs and unused helpers.

Refactor

GPU-side slice gathering for ProRes

The Vulkan ProRes encoder now collects encoded slices directly on the GPU, reducing transfers.

Fix

BMP and ID3 tag handling fixes

16-bit BMP images decode without misaligned memory reads, and legacy ID3 comment-tag behavior is now opt-in rather than automatic.

03 · Security check

Dependencies and code review

0 dependencies scanned

Dependency advisories

Security Watch

No known advisories across 0 scanned dependencies.

No known advisories in the scanned dependencies.

Code review

No concrete code-level issues confirmed.

Get this report every week for your repos.

GitZoid learns each repo, reports what changed, and flags what needs attention. One flat price for the whole team.

$19 a month, flat · First 10 outputs free · No card required