Mercurial > sdl-ios-xcode
comparison src/audio/alsa/SDL_alsa_audio.c @ 4331:a24454ed4ac4 SDL-1.2
Fixed debug code to print correct values
Passed a meaningful value to snd_pcm_sw_params_set_start_threshold()
author | Sam Lantinga <slouken@libsdl.org> |
---|---|
date | Tue, 13 Oct 2009 09:24:05 +0000 |
parents | 9716da353104 |
children | 67e799ffcadf |
comparison
equal
deleted
inserted
replaced
4330:33570eec2d4f | 4331:a24454ed4ac4 |
---|---|
57 | 57 |
58 static const char *alsa_library = SDL_AUDIO_DRIVER_ALSA_DYNAMIC; | 58 static const char *alsa_library = SDL_AUDIO_DRIVER_ALSA_DYNAMIC; |
59 static void *alsa_handle = NULL; | 59 static void *alsa_handle = NULL; |
60 static int alsa_loaded = 0; | 60 static int alsa_loaded = 0; |
61 | 61 |
62 static int (*SDL_snd_pcm_open)(snd_pcm_t **pcm, const char *name, snd_pcm_stream_t stream, int mode); | |
63 static int (*SDL_NAME(snd_pcm_open))(snd_pcm_t **pcm, const char *name, snd_pcm_stream_t stream, int mode); | 62 static int (*SDL_NAME(snd_pcm_open))(snd_pcm_t **pcm, const char *name, snd_pcm_stream_t stream, int mode); |
64 static int (*SDL_NAME(snd_pcm_close))(snd_pcm_t *pcm); | 63 static int (*SDL_NAME(snd_pcm_close))(snd_pcm_t *pcm); |
65 static snd_pcm_sframes_t (*SDL_NAME(snd_pcm_writei))(snd_pcm_t *pcm, const void *buffer, snd_pcm_uframes_t size); | 64 static snd_pcm_sframes_t (*SDL_NAME(snd_pcm_writei))(snd_pcm_t *pcm, const void *buffer, snd_pcm_uframes_t size); |
66 static int (*SDL_NAME(snd_pcm_resume))(snd_pcm_t *pcm); | 65 static int (*SDL_NAME(snd_pcm_resume))(snd_pcm_t *pcm); |
67 static int (*SDL_NAME(snd_pcm_prepare))(snd_pcm_t *pcm); | 66 static int (*SDL_NAME(snd_pcm_prepare))(snd_pcm_t *pcm); |
71 static size_t (*SDL_NAME(snd_pcm_sw_params_sizeof))(void); | 70 static size_t (*SDL_NAME(snd_pcm_sw_params_sizeof))(void); |
72 static int (*SDL_NAME(snd_pcm_hw_params_any))(snd_pcm_t *pcm, snd_pcm_hw_params_t *params); | 71 static int (*SDL_NAME(snd_pcm_hw_params_any))(snd_pcm_t *pcm, snd_pcm_hw_params_t *params); |
73 static int (*SDL_NAME(snd_pcm_hw_params_set_access))(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, snd_pcm_access_t access); | 72 static int (*SDL_NAME(snd_pcm_hw_params_set_access))(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, snd_pcm_access_t access); |
74 static int (*SDL_NAME(snd_pcm_hw_params_set_format))(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, snd_pcm_format_t val); | 73 static int (*SDL_NAME(snd_pcm_hw_params_set_format))(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, snd_pcm_format_t val); |
75 static int (*SDL_NAME(snd_pcm_hw_params_set_channels))(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, unsigned int val); | 74 static int (*SDL_NAME(snd_pcm_hw_params_set_channels))(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, unsigned int val); |
75 static int (*SDL_NAME(snd_pcm_hw_params_get_channels))(const snd_pcm_hw_params_t *params, unsigned int *val); | |
76 static int (*SDL_NAME(snd_pcm_hw_params_set_rate_near))(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, unsigned int *val, int *dir); | 76 static int (*SDL_NAME(snd_pcm_hw_params_set_rate_near))(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, unsigned int *val, int *dir); |
77 static int (*SDL_NAME(snd_pcm_hw_params_set_period_size_near))(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, snd_pcm_uframes_t *val, int *dir); | 77 static int (*SDL_NAME(snd_pcm_hw_params_set_period_size_near))(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, snd_pcm_uframes_t *val, int *dir); |
78 static int (*SDL_NAME(snd_pcm_hw_params_get_channels))(const snd_pcm_hw_params_t *params, unsigned int *val); | 78 static int (*SDL_NAME(snd_pcm_hw_params_get_period_size))(const snd_pcm_hw_params_t *params, snd_pcm_uframes_t *frames, int *dir); |
79 static snd_pcm_sframes_t (*SDL_NAME(snd_pcm_hw_params_get_period_size))(const snd_pcm_hw_params_t *params); | |
80 static int (*SDL_NAME(snd_pcm_hw_params_set_periods_near))(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, unsigned int *val, int *dir); | 79 static int (*SDL_NAME(snd_pcm_hw_params_set_periods_near))(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, unsigned int *val, int *dir); |
81 static int (*SDL_NAME(snd_pcm_hw_params_get_periods))(snd_pcm_hw_params_t *params); | 80 static int (*SDL_NAME(snd_pcm_hw_params_get_periods))(const snd_pcm_hw_params_t *params, unsigned int *val, int *dir); |
81 static int (*SDL_NAME(snd_pcm_hw_params_get_buffer_size))(const snd_pcm_hw_params_t *params, snd_pcm_uframes_t *val); | |
82 static int (*SDL_NAME(snd_pcm_hw_params))(snd_pcm_t *pcm, snd_pcm_hw_params_t *params); | 82 static int (*SDL_NAME(snd_pcm_hw_params))(snd_pcm_t *pcm, snd_pcm_hw_params_t *params); |
83 /* | 83 /* |
84 */ | 84 */ |
85 static int (*SDL_NAME(snd_pcm_sw_params_current))(snd_pcm_t *pcm, snd_pcm_sw_params_t *swparams); | 85 static int (*SDL_NAME(snd_pcm_sw_params_current))(snd_pcm_t *pcm, snd_pcm_sw_params_t *swparams); |
86 static int (*SDL_NAME(snd_pcm_sw_params_set_start_threshold))(snd_pcm_t *pcm, snd_pcm_sw_params_t *params, snd_pcm_uframes_t val); | 86 static int (*SDL_NAME(snd_pcm_sw_params_set_start_threshold))(snd_pcm_t *pcm, snd_pcm_sw_params_t *params, snd_pcm_uframes_t val); |
112 { "snd_pcm_hw_params_set_rate_near", (void**)(char*)&SDL_NAME(snd_pcm_hw_params_set_rate_near) }, | 112 { "snd_pcm_hw_params_set_rate_near", (void**)(char*)&SDL_NAME(snd_pcm_hw_params_set_rate_near) }, |
113 { "snd_pcm_hw_params_set_period_size_near", (void**)(char*)&SDL_NAME(snd_pcm_hw_params_set_period_size_near) }, | 113 { "snd_pcm_hw_params_set_period_size_near", (void**)(char*)&SDL_NAME(snd_pcm_hw_params_set_period_size_near) }, |
114 { "snd_pcm_hw_params_get_period_size", (void**)(char*)&SDL_NAME(snd_pcm_hw_params_get_period_size) }, | 114 { "snd_pcm_hw_params_get_period_size", (void**)(char*)&SDL_NAME(snd_pcm_hw_params_get_period_size) }, |
115 { "snd_pcm_hw_params_set_periods_near", (void**)(char*)&SDL_NAME(snd_pcm_hw_params_set_periods_near) }, | 115 { "snd_pcm_hw_params_set_periods_near", (void**)(char*)&SDL_NAME(snd_pcm_hw_params_set_periods_near) }, |
116 { "snd_pcm_hw_params_get_periods", (void**)(char*)&SDL_NAME(snd_pcm_hw_params_get_periods) }, | 116 { "snd_pcm_hw_params_get_periods", (void**)(char*)&SDL_NAME(snd_pcm_hw_params_get_periods) }, |
117 { "snd_pcm_hw_params_get_buffer_size", (void**)(char*)&SDL_NAME(snd_pcm_hw_params_get_buffer_size) }, | |
117 { "snd_pcm_hw_params", (void**)(char*)&SDL_NAME(snd_pcm_hw_params) }, | 118 { "snd_pcm_hw_params", (void**)(char*)&SDL_NAME(snd_pcm_hw_params) }, |
118 { "snd_pcm_sw_params_current", (void**)(char*)&SDL_NAME(snd_pcm_sw_params_current) }, | 119 { "snd_pcm_sw_params_current", (void**)(char*)&SDL_NAME(snd_pcm_sw_params_current) }, |
119 { "snd_pcm_sw_params_set_start_threshold", (void**)(char*)&SDL_NAME(snd_pcm_sw_params_set_start_threshold) }, | 120 { "snd_pcm_sw_params_set_start_threshold", (void**)(char*)&SDL_NAME(snd_pcm_sw_params_set_start_threshold) }, |
120 { "snd_pcm_sw_params_set_avail_min", (void**)(char*)&SDL_NAME(snd_pcm_sw_params_set_avail_min) }, | 121 { "snd_pcm_sw_params_set_avail_min", (void**)(char*)&SDL_NAME(snd_pcm_sw_params_set_avail_min) }, |
121 { "snd_pcm_sw_params", (void**)(char*)&SDL_NAME(snd_pcm_sw_params) }, | 122 { "snd_pcm_sw_params", (void**)(char*)&SDL_NAME(snd_pcm_sw_params) }, |
483 ALSA_CloseAudio(this); | 484 ALSA_CloseAudio(this); |
484 return(-1); | 485 return(-1); |
485 } | 486 } |
486 | 487 |
487 /* This is useful for debugging... */ | 488 /* This is useful for debugging... */ |
488 /* | 489 #if 0 |
489 { snd_pcm_sframes_t bufsize; int fragments; | 490 { snd_pcm_uframes_t bufsize; snd_pcm_sframes_t persize; unsigned int periods; int dir; |
490 bufsize = SDL_NAME(snd_pcm_hw_params_get_period_size)(hwparams); | 491 SDL_NAME(snd_pcm_hw_params_get_buffer_size)(hwparams, &bufsize); |
491 fragments = SDL_NAME(snd_pcm_hw_params_get_periods)(hwparams); | 492 SDL_NAME(snd_pcm_hw_params_get_period_size)(hwparams, &persize, &dir); |
492 | 493 SDL_NAME(snd_pcm_hw_params_get_periods)(hwparams, &periods, &dir); |
493 fprintf(stderr, "ALSA: bufsize = %ld, fragments = %d\n", bufsize, fragments); | 494 |
494 } | 495 fprintf(stderr, "ALSA: period size = %ld, periods = %u, buffer size = %lu\n", persize, periods, bufsize); |
495 */ | 496 } |
497 #endif | |
496 | 498 |
497 /* Set the software parameters */ | 499 /* Set the software parameters */ |
498 snd_pcm_sw_params_alloca(&swparams); | 500 snd_pcm_sw_params_alloca(&swparams); |
499 status = SDL_NAME(snd_pcm_sw_params_current)(pcm_handle, swparams); | 501 status = SDL_NAME(snd_pcm_sw_params_current)(pcm_handle, swparams); |
500 if ( status < 0 ) { | 502 if ( status < 0 ) { |
501 SDL_SetError("Couldn't get software config: %s", SDL_NAME(snd_strerror)(status)); | 503 SDL_SetError("Couldn't get software config: %s", SDL_NAME(snd_strerror)(status)); |
502 ALSA_CloseAudio(this); | 504 ALSA_CloseAudio(this); |
503 return(-1); | 505 return(-1); |
504 } | 506 } |
505 status = SDL_NAME(snd_pcm_sw_params_set_start_threshold)(pcm_handle, swparams, 0); | 507 status = SDL_NAME(snd_pcm_sw_params_set_start_threshold)(pcm_handle, swparams, 1); |
506 if ( status < 0 ) { | 508 if ( status < 0 ) { |
507 SDL_SetError("Couldn't set start threshold: %s", SDL_NAME(snd_strerror)(status)); | 509 SDL_SetError("Couldn't set start threshold: %s", SDL_NAME(snd_strerror)(status)); |
508 ALSA_CloseAudio(this); | 510 ALSA_CloseAudio(this); |
509 return(-1); | 511 return(-1); |
510 } | 512 } |