2013-04-26 3 views
0

Je construis ffmpeg et coincé dans un endroit inhabituel. Dans libavutil, nous avons les fichiers float_dsp.h et float_dsp.c. A l'intérieur de ces fichiers il y a une déclaration d'un methond qui est:Ffmpeg-Build: Erreur lors de la construction

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

lors de la construction et la compilation de ce fichier j'obtenir cette erreur et ne savent pas quoi faire. Je pense que le problème est ailleurs mais encore une fois je n'ai aucune idée du tout. L'erreur est

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' 

Toute personne qui veut aider s'il vous plaît prendre un pas en avant parce que je ne l'ai pas vraiment eu aucun soutien sur ffmpeg pendant deux semaines.

Cordialement

Répondre

0

Cela peut être causé par:

  • pas encore défini GCC en mode C99 où mot-clé restrict est prise en charge
  • restrict a été redéfini par certains #define
  • restrict n'est pas pris en charge pour architecture particulière mais cela est peu probable
  • GCC est réglé sur le mode C++ où restrict ke yword n'est pas pris en charge GCC selon http://gcc.gnu.org/onlinedocs/gcc/Restricted-Pointers.html.

Il existe d'autres formes prises en charge par GCC, telles que __restrict et __restrict__. Le script de configuration ffmpeg définit la macro av_restrict sur restrict, ce qui peut être vérifié dans le fichier config.h produit.

Fix pourrait être de modifier configure le code de détection et de supprimer le cas invalide 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