Pulseaudio streaming



  • Ich habe schon wochenlang Mr. Google befragt bin aber noch immer zu keiner Lösung gekommen:

    Das Ziel
    ----------
    Ich möchte sound von verschiedenen dedizierten LineIn Anschlüssen in meiner Applikation demdulieren.

    Eine wavfile -> speaker Anwendung läuft einwandfrei.
    Mein Problem liegt HIER:

    pa_stream_write(clsPulseAudio->paStream,clsPulseAudio->DataPointer()+clsPulseAudio->playBackPtr,writeSize,NULL,0,PA_SEEK_RELATIVE);
    

    Tests:

    printf("DATA %d\n\n", clsPulseAudio->paStream);

    Der Abruf des Puffers liefert immer 6366048

    printf("DATA %d\n\n", clsPulseAudio->DataPointer()+clsPulseAudio->playBackPtr,writeSize);

    liefert irgendwelche "doubles" rund um -134585944
    --------------------------------------------------
    eigentlich sollte ich einen unsigned char mit 512 Byte zurückbekommen den ich dann in das modem einspeisen kann.
    --------------------------------------------------

    Referenzen:

    int pa_stream_write(
                    pa_stream *     p,
                    const void *    data,
                    size_t          nbytes,
                    pa_free_cb_t    free_cb,
                    int64_t         offset,
                    pa_seek_mode_t  seek
            )
    

    http://freedesktop.org/software/pulseaudio/doxygen/stream_8h.html#
    ------------------------------------------
    Danke im voraus für einen kick in die richtige Richtung.

    willi



  • das wird bestimmt nen dicken kick geben, nen kick ins c-forum! 😃
    irgedwie fehlt mir die beschreibung deines problems.
    daher kann ich nur vermuten: du hörst nichts?
    tjaaa, sound gibt man normalerweise nicht mit printf in der konsole aus. 🤡 *scnr*



  • moserwi schrieb:

    Ich möchte sound von verschiedenen dedizierten LineIn Anschlüssen in meiner Applikation demdulieren.

    demdulieren?
    demodulieren vielleicht?

    Mein Problem liegt HIER:

    pa_stream_write(clsPulseAudio->paStream,clsPulseAudio->DataPointer()+clsPulseAudio->playBackPtr,writeSize,NULL,0,PA_SEEK_RELATIVE);
    

    Na, mit pa_stream_write() wirst du nix vom Line-IN lesen können, ist ja schliesslich ne Playback Funktion.

    BTW: das richtige Forum wäre vermutlich "Rund um die Programmierung", da es hier weder um C noch um C++ sondern um PulseAudio geht.



  • OK Danke versuche den Beitrag rüberzuschieben.

    Der fetch des sounds ist wirklich noch ein Problem aber ich habe ja die "Testumgebung" mit der wav datei und das funktioniert derzeit.

    Mein Problem ist: wie kann ich dn Puffer abfragen und ggf die Audioausgabe an die Speaker verhindern.

    Playbackfunktion:
    also stream write schreibt den stream. Das ist richtig.
    Die Parameter

    pa_stream * p, /// Pointer auf Stream??
    const void * data, /// Pointer auf Streamvariable = Buffer??

    sind meines erachtens die Dinger auf die es ankommt. clsPulseAudio->paStream wurde bereits vorher initialisiert und durch

    clsPulseAudio->DataPointer()+clsPulseAudio->playBackPtr

    wird der Streambuffer weggeschrieben.

    Ich denke das hat schon was mit CPP zu tun. Ich häng mich einfach mit der "pointerei" auf und finde es auserdem - erklärungslos wie ich bin - seltsam dass man den DataPointer und dem playBackPtr addieren kann.

    Und genau da liegt mein Fehler - ich sehe das falsch weiss aber nicht wie es richtig sein sollte.

    Danke



  • Dieser Thread wurde von Moderator/in SeppJ aus dem Forum C++ (auch C++0x und C++11) in das Forum Rund um die Programmierung verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Achje... naja vielleicht liegt es daran dass %d keine doubles ausgibt sondern Integers.
    Versuchs mal mit %f.



  • hustbaer schrieb:

    Achje... naja vielleicht liegt es daran dass %d keine doubles ausgibt sondern Integers.
    Versuchs mal mit %f.

    Ja mit beiden Params versucht..
    Resultat 0.00000
    also leider auch nicht..
    allerdings kommt beim testen mit parameter %s undefinierbarer zeichenschrummmel raus. Ich denke dass das genau das Resultat ist das ich brauche.

    Ob das stimmt wird die Übergabe und Aufbereitung durch den Demodulator und dann Decorder zeigen.

    Sag ichs Doch DANKE für den Kick in die richtige Richtung.
    Ich lasse den Task trotzdem bis zur Verifizierung durch das decoding offen.

    DANKE NOCHMALS!!!


Anmelden zum Antworten