0

我正在构建 ffmpeg 并卡在一个不寻常的地方。在 libavutil 我们有 float_dsp.h 和 float_dsp.c 文件。在这些文件中,有一个方法声明,它是:

void (*butterflies_float)(float *av_restrict v1, float *av_restrict v2, int len);
float (*scalarproduct_float)(const float *v1, const float *v2, int len);

在构建和编译此文件时,我收到此错误并且不知道该怎么做。我认为问题出在其他地方,但又完全不知道。错误是

jni/ffmpeg/libavcodec/../libavutil/float_dsp.h:150: error: expected ';', ',' or ')'  before 'v1'
jni/ffmpeg/libavcodec/../libavutil/float_dsp.h:161: error: expected ';' before 'float'

任何想要帮助的人都请向前迈出一步,因为我在几周内还没有真正得到 ffmpeg 的任何支持。

问候

4

1 回答 1

0

这可能是由以下原因引起的:

GCC 还支持其他形式,例如__restrict__restrict__. ffmpeg 配置脚本将宏设置av_restrictrestrict可以在生成的 config.h 文件中检查的宏。

修复可能是更改配置检测代码并删除无效案例restrict

--- ./configure.orig    2014-01-15 18:53:59.000000000 +0100
+++ ./configure 2014-03-13 17:50:45.754442028 +0100
@@ -3896,7 +3896,7 @@
 EOF

 _restrict=
-for restrict_keyword in restrict __restrict__ __restrict; do
+for restrict_keyword in __restrict__ __restrict; do
     check_cc <<EOF && _restrict=$restrict_keyword && break
 void foo(char * $restrict_keyword p);
 EOF
于 2014-03-13T17:07:34.183 回答