[FFmpeg-devel] [PATCH] Fix broken build on Android due to broken asm-generic/termbits.h include

"zhilizhao(赵志立)" quinkblack at foxmail.com
Mon Feb 27 15:44:28 EET 2023

> On Feb 23, 2023, at 23:01, Hendrik Leppkes <h.leppkes at gmail.com> wrote:
> On Thu, Feb 23, 2023 at 3:37 PM copypaste <copypaste at kittens.ph> wrote:
>> It gets included because this platform does indeed have Video4Linux so some of the aarch64 stuff is relevant. Furthermore I think that the HEVC stuff includes it.
> If its relevant for V4L or other hardware integration is fine and all
> ... but the real question is, how does it end up in aaccoder.c and
> other files entirely unrelated to video or hardware? And can we just
> get it out of those?

I know this issue exists for a long time. But I can’t reproduce it
these days.


The ‘B0’ macro comes from <sys/ioctl.h>, which is defined by
asm-generic/termbits.h. <sys/ioctl.h> is included by libavutil/timer.h.
Thanks to the cleanup work done by Andreas Rheinhardt, the conflicts
has been reduced a lot, I think that’s why I didn’t get build errors.

Google suggests FFmpeg to fix the code problem, while NDK has
break more than one projects, see


You can reproduce the build error with:

$ cat foo.c 
#include <sys/ioctl.h>

int main()
    int B0 = 123;

$ make foo
cc     foo.c   -o foo
foo.c:5:9: error: expected identifier or '('
    int B0 = 123;
/data/data/com.termux/files/usr/include/asm-generic/termbits.h:118:12: note: expanded from macro 'B0'
#define B0 0000000
1 error generated.
make: *** [<builtin>: foo] Error 1

> - Hendrik
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel at ffmpeg.org
> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
> To unsubscribe, visit link above, or email
> ffmpeg-devel-request at ffmpeg.org with subject "unsubscribe".

More information about the ffmpeg-devel mailing list