FFmpeg Assembly Language Lessons
FFmpeg/asm-lessons — репозиторий с уроками по ассемблеру для FFmpeg.
Цель: научиться писать высокопроизводительные рутины на x86-64, ARM и других архитектурах, ориентированные на мультимедиа-задачи.
Содержание (кратко):
- Уроки: от базовых инструкций до векторных расширений (SSE/AVX, NEON).
- Примеры: реализация IDCT, фильтров, цветового преобразования.
- Тесты: юнит-тесты и бенчмарки для сравнения C vs asm.
- CI: автоматическая проверка на x86-64 и ARM через GitHub Actions.
Как начать:
- Клонируйте репо.
- Установите
nasm
,yasm
илиllvm-mingw
. - Соберите пример:
make lesson01
.
Полезные ссылки:
Комментарии (65)
- Пользователи восхищаются масштабом FFmpeg и экономией вычислений даже от малейших улучшений.
- Основной материал воспринимается как базовый курс по ассемблеру, а не как конкретные «перлы» оптимизации FFmpeg.
- Спрашивают, как находить узкие места и стоит ли писать LLVM-IR вручную; большинство отвечает «нет», лучше использовать встроенные вектор-прагмы или писать ассемблер под каждую архитектуру.
- Отмечают, что уроки не содержат нужной математики и не показывают, как запустить примеры в NASM, что затрудняет старт.
- NASM-версии привязаны к x86-64 и активно используют макросы, что затрудняет перенос на другие ассемблеры.