Missing or incorrect `extern "C"` in public headers
The extern "C"
block is present only in dav1d.h
and is missing in all other public headers, which complicates including these headers in C++ projects.
The extern "C"
block in dav1d.h
encloses other header includes, including the standard library. It is usually not a good idea to change the linkage mode for foreign headers, as they may contain C++ symbols. For example, a C++ compiler may replace some of the C library headers to provide C++-specific definitions.
The recommended way to use extern "C"
is to enclose the entire contents of every public header, excluding any #include
directives.