Port Audio löst Segmentation Fault aus
-
Hallo liebe Community,
Ich bin neu hier und hoffe, dass ich meinen Thread hier in das richtige Forum poste, wollste das nciht der Fall sein, so verzeiht mir.
Mein Problem sie wie folgt aus:
Ich wollte unter Ubuntu ein kleines Programm schreiben, mit dem ich über mein Mic Sound aufnehmen kann. Ich habe mich daher etwas informiert und bin auf die Libs von Port Audio gestoßen.
Leider stecke ich immer noch im Tutorial fest, da ich beim Aufrufen der Funktion
'Pa_StartStream( stream )' einen Segmentation Fault bekomme. Ich kann mir allerdings in keinster Weise vorstellen, wo der herkommen soll. Könnt ihr mir helfen?Wenn ihr eine Idee habt ob es vlt. andere (evtl. sogar einfacher zuhandhabende) Libs gibt, dann nur raus mit der Sprache
mfg martin
-
hi,
du könntest einfach mal hier deinen code - mit den entsprechenden code-tags posten - und dann können wir dir vielleicht sagen warum dieser fehler kommt. häufig wird eine funktion einfach nur falsch verwendet.
blan
-
Hier mal mein Code:
#include <portaudio.h> #include<stdio.h> typedef struct { float left_phase; float right_phase; } paTestData; static int patestCallback( const void *inputBuffer, void *outputBuffer, unsigned long framesPerBuffer, const PaStreamCallbackTimeInfo* timeInfo, PaStreamCallbackFlags statusFlags, void *userData ); int main(void) { #define SAMPLE_RATE (44100) static paTestData data; PaError initerr, termerr, err; PaStream *stream; printf("start\n"); initerr = Pa_Initialize(); if (initerr != paNoError) printf("Fehler bei Init: %s\n ", Pa_GetErrorText( initerr )); printf("init\n"); err = Pa_OpenDefaultStream( &stream, 0, /* no input channels */ 2, /* stereo output */ paFloat32, /* 32 bit floating point output */ SAMPLE_RATE, 2, /* frames per buffer, i.e. the number of sample frames that PortAudio will request from the callback. Many apps may want to use paFramesPerBufferUnspecified, which tells PortAudio to pick the best, possibly changing, buffer size.*/ patestCallback, /* this is your callback function */ &data ); /*This is a pointer that will be passed to your callback*/ if( err != paNoError ) printf("Fehler beim Stream: %s\n",Pa_GetErrorText( err )); printf("stream\n"); err = Pa_StartStream( stream ); if( err != paNoError ) printf("Fehler beim StartStream: %s\n",Pa_GetErrorText( err )); err = Pa_StopStream( stream ); if( err != paNoError ) printf("Fehler beim StopStream: %s\n",Pa_GetErrorText( err )); termerr = Pa_Terminate(); if (termerr != paNoError) printf("Fehler bei Term: %s\n ", Pa_GetErrorText( termerr )); printf("ende\n"); return 0; } static int patestCallback( const void *inputBuffer, void *outputBuffer, unsigned long framesPerBuffer, const PaStreamCallbackTimeInfo* timeInfo, PaStreamCallbackFlags statusFlags, void *userData ) { return 0; }
-
nur mal kurz so drüber geschaut:
sollte das callback argument in Pa_OpenDefaultStream() nicht nen pointer sein ?
also &patestCallbackansonsten mal den gdb bemühen um den segfault zu lokalisieren...