ubuntuusers.de

Kennt sich jemand mit Alsa Programmierung aus? (C)

Status: Gelöst | Ubuntu-Version: Ubuntu MATE 18.04 (Bionic Beaver)
Antworten |

Dakuan

Avatar von Dakuan

Anmeldungsdatum:
2. November 2004

Beiträge: 6514

Wohnort: Hamburg

Erstmal vorweg, ich kenne mich mit Alsa Programmierung sehr wenig aus. Als ich vor einigen Jahren einen Morsezeichen Generator geschrieben habe, bin ich daher von einem einfachen Beispiel zur Tonerzeugung aus der Doku aus gegangen, was bedeutet, dass ich die Initialisierung im Wesentlichen abgeschrieben habe.

Wenn ich jetzt dieses alte Programm (32 Bit) in die 64-Bit Welt überführen will, bekomme ich folgende Warnung:

manfred@samurai:~/prog/dig_sig/cwgen$ gcc -Wall -ocwgen cwgen.c -lm -lasound -lpthread
cwgen.c: In function ‘set_swparams’:
cwgen.c:1239:9: warning: ‘snd_pcm_sw_params_set_xfer_align’ is deprecated [-Wdeprecated-declarations]
         err = snd_pcm_sw_params_set_xfer_align(handle, swparams, 1);
         ^~~
In file included from /usr/include/alsa/asoundlib.h:54:0,
                 from cwgen.c:27:
/usr/include/alsa/pcm.h:1302:5: note: declared here
 int snd_pcm_sw_params_set_xfer_align(snd_pcm_t *pcm, snd_pcm_sw_params_t *params, snd_pcm_uframes_t val) __attribute__((deprecated));
     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
manfred@samurai:~/prog/dig_sig/cwgen$ 

Der zugehörige Programmtext ist:

1
2
3
4
5
6
        /* align all transfers to 1 sample */
        err = snd_pcm_sw_params_set_xfer_align(handle, swparams, 1);
        if (err < 0) {
                printf("Unable to set transfer align for playback: %s\n", snd_strerror(err));
                return err;
        }

Hat jemand eine Ahnung, was ich statt dessen machen kann?

Glücklicherweise läuft das Programm erstmal trotzdem.

Marc_BlackJack_Rintsch Team-Icon

Ehemalige
Avatar von Marc_BlackJack_Rintsch

Anmeldungsdatum:
16. Juni 2006

Beiträge: 4695

Wohnort: Berlin

Wenn ich das richtig verstanden habe: https://sourceforge.net/p/alsa/mailman/message/34860672/ ist die Funktion einfach ersatzlos entfallen.

Dakuan

(Themenstarter)
Avatar von Dakuan

Anmeldungsdatum:
2. November 2004

Beiträge: 6514

Wohnort: Hamburg

Danke für den Hinweis. Ich habe den Abschnitt einfach man auskommentiert, was ich mich vorher nicht getraut hatte, und das Programm läuft trotzdem noch 👍

Ich bekomme jetzt zwar noch einen

Transfer failed: -1226821940 Unknown error

Error, aber das ist wohl ein fehlerhafter Rückgabewert von

pthread_exit();

was ein anderes Thema ist.

Antworten |