From 70958d6e6d40802c0f6ac0ed55bf704fbe2c9fc3 Mon Sep 17 00:00:00 2001 From: Ludovic Pouzenc Date: Fri, 1 Jun 2012 20:21:08 +0000 Subject: Ecriture du test5 : intégration de PulseAudio dans le code du test4. Le squelette est là, l'initialisation du contexte pulse audio aussi. Reste : ouvrir les flux, écrire le callback pulse qui récupère le niveau sonore (avec timing si possible) et qui appelle le callback applicatif du test5.c MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: file:///var/svn/2012-violon-leds/trunk@9 6be1fa4d-33ac-4c33-becc-79fcb3794bb6 --- tests/test5/capture.c | 82 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 82 insertions(+) create mode 100644 tests/test5/capture.c (limited to 'tests/test5/capture.c') diff --git a/tests/test5/capture.c b/tests/test5/capture.c new file mode 100644 index 0000000..6bc5afe --- /dev/null +++ b/tests/test5/capture.c @@ -0,0 +1,82 @@ +#include "capture.h" +#include +#include + +#define APP_TITLE "Test 5 lpo" +#define BUFSIZE 1024 + +pa_context *pa_ct=NULL; +capture_sound_level_cb_t *capture_sound_level_cb=NULL; + +int capture_init(pa_mainloop **m); +void context_state_callback(pa_context *c, void *userdata); + +void audio_thread(void *args) { + pa_mainloop *m; + int res, retval; + + capture_sound_level_cb=(capture_sound_level_cb_t *)args; + + res=capture_init(&m); + g_assert(res==0); + + res=pa_mainloop_run(m,&retval); + g_assert(res==0); + g_assert(retval==0); + +// pa_context_disconnect(pa_ct); + pa_mainloop_free(m); +} + +int capture_init(pa_mainloop **m) { + int res=0; + + *m=pa_mainloop_new(); + g_assert(*m); + + pa_ct = pa_context_new(pa_mainloop_get_api(*m), APP_TITLE); + g_assert(pa_ct); + + pa_context_set_state_callback(pa_ct, context_state_callback, NULL); + res=pa_context_connect(pa_ct, NULL, PA_CONTEXT_NOAUTOSPAWN, NULL); + + return res; +} + +void context_state_callback(pa_context *c, void *userdata) { + switch (pa_context_get_state(c)) { + case PA_CONTEXT_UNCONNECTED: + printf("PA_CONTEXT_UNCONNECTED\n"); + break; + case PA_CONTEXT_CONNECTING: + printf("PA_CONTEXT_CONNECTING\n"); + break; + case PA_CONTEXT_AUTHORIZING: + printf("PA_CONTEXT_AUTHORIZING\n"); + break; + case PA_CONTEXT_SETTING_NAME: + printf("PA_CONTEXT_SETTING_NAME\n"); + break; + case PA_CONTEXT_READY: + printf("PA_CONTEXT_READY\n"); + //g_assert(!stream); + + //if (device_name && mode == RECORD) + //pa_operation_unref(pa_context_get_source_info_by_name(c, device_name, context_get_source_info_callback, NULL)); + /*else if (device_name && mode == PLAYBACK) + pa_operation_unref(pa_context_get_sink_info_by_name(c, device_name, context_get_sink_info_callback, NULL)); + else + pa_operation_unref(pa_context_get_server_info(c, context_get_server_info_callback, NULL)); + */ + break; + + case PA_CONTEXT_FAILED: + printf("PA_CONTEXT_FAILED\n"); + break; + + case PA_CONTEXT_TERMINATED: + printf("PA_CONTEXT_TERMINATED\n"); + break; + } +} + -- cgit v1.2.3