Anzeige:
Ergebnis 1 bis 10 von 10

Thema: [C++] Sound Problem unter Linux

  1. #1
    Registrierter Benutzer
    Registriert seit
    12.03.2003
    Ort
    Delligsen
    Beiträge
    62

    [C++] Sound Problem unter Linux

    Hallo ersteinmal,
    also ich habe folgendes Problem, ich schreibe im moment ein Voice over IP tool unter Linux, welches auf die OpenH323 Bibliothek aufsetzt (und somit auch auf die PWLIB). So, nun passiert folgendes (wohlbemerkt nicht auf allen systemen) wenn ich den client starte funktioniert erstmal alles ganz gut, aber sobald dieser angerufen wird, bekommt der ne cpu auslastung von 100% (und macht auch keine Soundausgabe), selbst wenn die verbindung shon abgebaut ist, bleibt die auslastung (aber immer mit der statusmeldung alles sei in ordnung). Dies tritt wohlbemerkt auch nur auf, wenn ich das tool mit /dev/dsp öffne, mit der loopback device nicht. So, ich hab nun die vermutung, dass das Sound device nicht mehr will, wenn es schon von einem anderen task geöffnet ist, obwohl es im duplexmodus geöffnet wird. Meine vermutung rührt daher, das mein voip tool die sample rate auf 16000Hz herunterstellen will, und es dadurch zu nem block im tool kommt, kann das sein ???
    ich bin für jeden tip dankbar.

    mfg
    hpf

  2. #2
    Registrierter Benutzer Avatar von oracle2025
    Registriert seit
    18.03.2002
    Beiträge
    136
    Verwende ALSA unter Linux, und nutze das dmix Plugin, das wandelt IMHO alle Sampleraten passend für die jeweilige Soundkarte um.
    Niemand dringt hier durch und
    gar mit der Botschaft eines Toten.
    Du aber sitzt an Deinem Fenster und
    erträumst sie Dir, wenn der Abend kommt.

  3. #3
    Registrierter Benutzer
    Registriert seit
    12.03.2003
    Ort
    Delligsen
    Beiträge
    62

    nicht genau das was ich gesucht habe

    erstmal thx für die schnelle antwort, aber das klappt leider nur bei alsa programmen, die pwlib, baut aber leider auf oss auf

    mfg hpf

  4. #4
    Registrierter Benutzer Avatar von oracle2025
    Registriert seit
    18.03.2002
    Beiträge
    136
    probier mal aoss und dmix, aoss ist ein LD_PRELOAD, das oss auf also umlenkt
    Niemand dringt hier durch und
    gar mit der Botschaft eines Toten.
    Du aber sitzt an Deinem Fenster und
    erträumst sie Dir, wenn der Abend kommt.

  5. #5
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    oss ist einfach zu limitiert.

    Das bettelt quasi gerade zu nach Zugriffproblemen, weil es vom Treiber bzw der Fähigkeit der Karte abhängt, ob mehr als ein Prozess das Device öffnen kann.
    Normalfall: nur ein Prozess kann.

    Wenn man als Entwickler oss benutzen will weil man dessen API auch unter anderen Betriebsystemen außer Linux hat, dann sollte man sich dieser Einschränkung bewußt sein und entsprechend dokumentieren.

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  6. #6
    Registrierter Benutzer
    Registriert seit
    12.03.2003
    Ort
    Delligsen
    Beiträge
    62
    @ anda_skoa
    thx, aber ich muss leider oss nutzen, kann man denn irgendwie über eine c++ methode rausfinden, ob schon irgendein prozess das sound device geöffnet hat ??, dann könnte ich immerhin mit nem fehler abbrechen. dann weiß der anwender wenigstens, dass er die anderen prozesse abschalten muss.

  7. #7
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Zitat Zitat von hpf
    @ anda_skoa
    thx, aber ich muss leider oss nutzen
    Das nenn ich Künstlerpech

    Stellt sich natürlich zusätzlich die Frage wie lange oss unter Linux noch unterstützt wird.

    kann man denn irgendwie über eine c++ methode rausfinden, ob schon irgendein prozess das sound device geöffnet hat ??
    Vermutlich nicht Betriebsystemunabhängig.
    Eventuell ein non blocking open benutzen und den Fehlerfall behandeln?

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  8. #8
    Registrierter Benutzer
    Registriert seit
    12.03.2003
    Ort
    Delligsen
    Beiträge
    62
    also, das soll bei nem kunden ausschließlich unter linux laufen, das linux selbst soll wohl auf der distribution die es im moment hat (suse 7.3) bleiben. das öffnen der soundkarte geschieht in der pwlib, ich könnte das überschreiben, aber es liefert leider keinen fehler zurück wenn ich es im non blocking mode öffne, hängt sich aber trotzdem auf. würde es im blocking mode darauf bestehen, dass kein anderer prozess das device geöffnet hat (würde das durch open geprüft?)??

    mfg
    hpf

  9. #9
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Zitat Zitat von hpf
    also, das soll bei nem kunden ausschließlich unter linux laufen, das linux selbst soll wohl auf der distribution die es im moment hat (suse 7.3) bleiben.
    Du könntest eventuell mit einem Aufruf von fuser arbeiten.
    Oder vielleicht steht da auch etwas in /proc

    das öffnen der soundkarte geschieht in der pwlib, ich könnte das überschreiben, aber es liefert leider keinen fehler zurück wenn ich es im non blocking mode öffne, hängt sich aber trotzdem auf. würde es im blocking mode darauf bestehen, dass kein anderer prozess das device geöffnet hat (würde das durch open geprüft?)??
    Vielleicht mit O_EXCL in den open flags.
    Oder mit einem fcntl oder ioctl Aufruf.

    Scheint aber nicht so leicht zu sein, die meisten oss Applikationen haben das Problem.

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  10. #10
    Registrierter Benutzer
    Registriert seit
    12.03.2003
    Ort
    Delligsen
    Beiträge
    62
    danke nochmal für die schnelle hilfe.
    dann muss ich wohl mit dieser einschränkung von oss leben .

    mf hpf

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •