IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Giostreamsink, comment faire ?


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5
    Par défaut Giostreamsink, comment faire ?
    Bonjour,

    J'essaie d'écrire une application utilisant giostreamsink (un plugin de Gstreamer) afin d'écrire un flux audio dans un bout de mémoire partagée et de pouvoir lire ce flux dans une application externe à Gstreamer.
    J'ai lu les cours disponibles sur le site de Gstreamer visant à enseigner l'écriture d'applications et de plugins Gstreamer mais je bloque sur un point.

    Dans un premier temps, je voudrais simplement essayer de compiler le bout de code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    #include <gst/gst.h>
    #include <gio/gio.h>
     
    int main(int arg, char * argv)
    {
    	GstElement *sink;
    	GMemoryOuputStream *stream;
    	guint8 *out_data;
     
    	stream = G_MEMORY_OUTPUT_STREAM (g_memory_output_stream_new (NULL, 0,
    		  (GReallocFunc) g_realloc, (GDestroyNotify) g_free));
    	sink = gst_element_factory_make ("giostreamsink", "sink");
    	g_object_set (G_OBJECT (sink), "stream", stream, NULL);
     
    	out_data = g_memory_ouput_stream_get_data (G_MEMORY_OUTPUT_STREAM (stream));
    }
    issu tout simplement du seul exemple que j'ai pu trouver se servant de giostreamsink.
    Je tente donc de la compiler :
    gcc -I/usr/include/gstreamer-0.10 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/libxml2/ -o testo test.c
    Et... Ça ne fonctionne pas :
    test.c: In function ‘int main(int, char**)’:
    test.c:7: error: ‘GMemoryOuputStream’ was not declared in this scope
    test.c:7: error: ‘stream’ was not declared in this scope
    test.c:15: error: ‘g_memory_ouput_stream_get_data’ was not declared in this scope
    Ce qui est étrange, puisque les librairies nécessaires sont incluses.
    Quelqu'un a une idée ?

    Merci d'avance.

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5
    Par défaut
    Du nouveau. J'avais mal lu : "GMemoryOuputStream" n'existe vraiment pas.
    Par contre, "GMemoryOutputStream" existe bel et bien.

    Ce problème lié à une erreur d'écriture est donc corrigé. Cela dit, un autre problème se présente :
    test.c: In function ‘main’:
    test.c:16: warning: assignment makes pointer from integer without a cast
    /tmp/ccNr3Ugg.o: In function `main':
    test.c.text+0xb): undefined reference to `g_memory_output_stream_get_type'
    test.c.text+0x15): undefined reference to `g_free'
    test.c.text+0x1d): undefined reference to `g_realloc'
    test.c.text+0x31): undefined reference to `g_memory_output_stream_new'
    test.c.text+0x3d): undefined reference to `g_type_check_instance_cast'
    test.c.text+0x55): undefined reference to `gst_element_factory_make'
    test.c.text+0x6d): undefined reference to `g_type_check_instance_cast'
    test.c.text+0x8d): undefined reference to `g_object_set'
    test.c.text+0x92): undefined reference to `g_memory_output_stream_get_type'
    test.c.text+0xa2): undefined reference to `g_type_check_instance_cast'
    test.c.text+0xaa): undefined reference to `g_memory_ouput_stream_get_data'
    collect2: ld returned 1 exit status
    Même problème : ces fonctions sont définies dans glib.h mais apparemment pas détectées par le compilateur. Je suis certain qu'il s'agit d'une bête erreur de ma part, mais je ne vois pas...
    Une idée ?

  3. #3
    Membre chevronné
    Inscrit en
    Décembre 2010
    Messages
    290
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 290
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    gcc -I/usr/include/gstreamer-0.10 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/libxml2/ -o testo test.c
    Tu as un problème de linkage, pas de compilation. Ce qui est logique, parce que ta ligne de commande d'appel à gcc n'inclue pas les librairies de gstreamer ou glib (-lqqchose)

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5
    Par défaut
    En effet.
    Problème résolu, il suffisait d'ajouter -lgstreamer -lxml2 et -lglib (à quelque chose près) à l'instruction GCC.

    Merci bien !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [VB6][impression]Comment faire des effets sur les polices ?
    Par le.dod dans le forum VB 6 et antérieur
    Réponses: 11
    Dernier message: 08/11/2002, 10h31
  2. comment faire evoluer ma base vers interbase6
    Par toure32 dans le forum InterBase
    Réponses: 5
    Dernier message: 23/10/2002, 10h59
  3. Réponses: 8
    Dernier message: 18/09/2002, 03h20
  4. Comment faire pour mettre l'ecran en veille ?
    Par March' dans le forum MFC
    Réponses: 6
    Dernier message: 29/08/2002, 14h25
  5. Comment faire pour créer un bitmap
    Par GliGli dans le forum C++Builder
    Réponses: 2
    Dernier message: 24/04/2002, 15h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo