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

これは、次の原因で発生する可能性があります。

  • restrictキーワードがサポートされている GCC を C99 モードに設定しない
  • restrictいくつかの #define によって再定義されました
  • restrict特定のアーキテクチャではサポートされていませんが、可能性は低いです
  • GCC は、http: //gcc.gnu.org/onlinedocs/gcc/Restricted-Pointers.htmlrestrictに従って、キーワードがサポートされていないC++ モードに設定されています。

__restrictや など、GCC でサポートされている形式は他にもあり__restrict__ます。ffmpeg configure スクリプトは、生成された config.h ファイルで確認できるマクロav_restrictを設定します。restrict

修正は、構成検出コードを変更し、無効なケースを削除することである可能性があります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 に答える