doc/developer.texi: document the use of other languages than C

This commit is contained in:
Anton Khirnov 2022-11-14 17:55:40 +01:00
parent 27f8c9b27b
commit a36ad2c649
1 changed files with 36 additions and 2 deletions

View File

@ -56,9 +56,9 @@ and should try to fix issues their commit causes.
@anchor{Coding Rules}
@chapter Coding Rules
@section C language features
@section Language
FFmpeg is programmed in the ISO C99 language, extended with:
FFmpeg is mainly programmed in the ISO C99 language, extended with:
@itemize @bullet
@item
Atomic operations from C11 @file{stdatomic.h}. They are emulated on
@ -83,6 +83,40 @@ complex numbers;
mixed statements and declarations.
@end itemize
@subsection SIMD/DSP
@anchor{SIMD/DSP}
As modern compilers are unable to generate efficient SIMD or other
performance-critical DSP code from plain C, handwritten assembly is used.
Usually such code is isolated in a separate function. Then the standard approach
is writing multiple versions of this function a plain C one that works
everywhere and may also be useful for debugging, and potentially multiple
architecture-specific optimized implementations. Initialization code then
chooses the best available version at runtime and loads it into a function
pointer; the function in question is then always called through this pointer.
The specific syntax used for writing assembly is:
@itemize @bullet
@item
NASM on x86;
@item
GAS on ARM.
@end itemize
@subsection Other languages
Other languages than C may be used in special cases:
@itemize @bullet
@item
Compiler intrinsics or inline assembly when the code in question cannot be
written in the standard way described in the @ref{SIMD/DSP} section. This
typically applies to code that needs to be inlined.
@item
Objective-C where required for interacting with macOS-specific interfaces.
@end itemize
@section Code formatting conventions
There are the following guidelines regarding the indentation in files: