gitmyhub

asm-lessons

★ 12k updated 3mo ago

FFmpeg Assembly Language Lessons

A structured course by the FFmpeg project teaching assembly language programming, the lowest-level instructions a CPU executes, aimed at developers who want to understand and contribute to FFmpeg's hand-optimized video processing code.

AssemblyCsetup: hardcomplexity 5/5

This repository contains a set of lessons on assembly language programming, produced by the FFmpeg project. Assembly language is the lowest-level human-readable form of instructions that a computer processor actually executes. Most programmers work in higher-level languages like Python or JavaScript and never touch it, but understanding assembly reveals what is happening inside the machine at a fundamental level.

The lessons are specifically aimed at the style of assembly used inside FFmpeg, a widely used open-source toolkit for processing audio and video files. The FFmpeg codebase contains a large amount of hand-written assembly to squeeze out maximum speed from modern processors, particularly for video encoding and decoding tasks. These lessons are designed to help people reach the point where they can understand and contribute to that code.

The course requires two things before you start: familiarity with the C programming language (especially pointers), and high school level mathematics including the difference between scalar values and vectors. Assignments paired with each lesson exist but had not been uploaded to the repository at the time of writing.

The README is brief and the course content lives in the lesson files themselves rather than in this description. A Discord server is available for asking questions. The lessons are also available in French, Spanish, Turkish, and Chinese translations.

Where it fits