forked from mirrors/linphone-iphone
add API to get default capture & playback sound cards.
git-svn-id: svn+ssh://svn.savannah.nongnu.org/linphone/trunk@256 3f6dc0c8-ddfe-455d-9043-3cd528dc4637
This commit is contained in:
parent
067a957c81
commit
6d9371ecd3
4 changed files with 65 additions and 9 deletions
|
|
@ -25,6 +25,8 @@ EXPORTS
|
|||
ms_snd_card_get_string_id
|
||||
ms_snd_card_manager_get
|
||||
ms_snd_card_manager_get_default_card
|
||||
ms_snd_card_manager_get_default_capture_card
|
||||
ms_snd_card_manager_get_default_playback_card
|
||||
ms_snd_card_manager_get_card
|
||||
ms_snd_card_manager_get_list
|
||||
ms_snd_card_dup
|
||||
|
|
|
|||
|
|
@ -161,6 +161,24 @@ MSSndCard * ms_snd_card_manager_get_card(MSSndCardManager *m, const char *id);
|
|||
*/
|
||||
MSSndCard * ms_snd_card_manager_get_default_card(MSSndCardManager *m);
|
||||
|
||||
/**
|
||||
* Retreive the default capture sound card object.
|
||||
*
|
||||
* @param m A sound card manager containing sound cards.
|
||||
*
|
||||
* Returns: MSSndCard if successfull, NULL otherwise.
|
||||
*/
|
||||
MSSndCard * ms_snd_card_manager_get_default_capture_card(MSSndCardManager *m);
|
||||
|
||||
/**
|
||||
* Retreive the default playback sound card object.
|
||||
*
|
||||
* @param m A sound card manager containing sound cards.
|
||||
*
|
||||
* Returns: MSSndCard if successfull, NULL otherwise.
|
||||
*/
|
||||
MSSndCard * ms_snd_card_manager_get_default_playback_card(MSSndCardManager *m);
|
||||
|
||||
/**
|
||||
* Retreive the list of sound card objects.
|
||||
*
|
||||
|
|
|
|||
|
|
@ -66,6 +66,28 @@ MSSndCard * ms_snd_card_manager_get_default_card(MSSndCardManager *m){
|
|||
return NULL;
|
||||
}
|
||||
|
||||
MSSndCard * ms_snd_card_manager_get_default_capture_card(MSSndCardManager *m){
|
||||
MSList *elem;
|
||||
for (elem=m->cards;elem!=NULL;elem=elem->next){
|
||||
MSSndCard *card=(MSSndCard*)elem->data;
|
||||
if (card->capabilities==(MS_SND_CARD_CAP_CAPTURE|MS_SND_CARD_CAP_PLAYBACK)
|
||||
||card->capabilities==MS_SND_CARD_CAP_CAPTURE)
|
||||
return card;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
MSSndCard * ms_snd_card_manager_get_default_playback_card(MSSndCardManager *m){
|
||||
MSList *elem;
|
||||
for (elem=m->cards;elem!=NULL;elem=elem->next){
|
||||
MSSndCard *card=(MSSndCard*)elem->data;
|
||||
if (card->capabilities==(MS_SND_CARD_CAP_CAPTURE|MS_SND_CARD_CAP_PLAYBACK)
|
||||
||card->capabilities==MS_SND_CARD_CAP_PLAYBACK)
|
||||
return card;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
const MSList * ms_snd_card_manager_get_list(MSSndCardManager *m){
|
||||
return m->cards;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -32,9 +32,11 @@ static void stop(int signum){
|
|||
|
||||
int main(int argc, char *argv[]){
|
||||
MSFilter *f1,*f2;
|
||||
MSSndCard *card;
|
||||
MSSndCard *card_capture;
|
||||
MSSndCard *card_playback;
|
||||
MSTicker *ticker;
|
||||
char *card_id=NULL;
|
||||
int rate = 16000;
|
||||
ortp_init();
|
||||
ortp_set_log_level_mask(ORTP_MESSAGE|ORTP_WARNING|ORTP_ERROR|ORTP_FATAL);
|
||||
ms_init();
|
||||
|
|
@ -46,20 +48,32 @@ int main(int argc, char *argv[]){
|
|||
|
||||
if (card_id!=NULL)
|
||||
{
|
||||
card=ms_snd_card_manager_get_card(ms_snd_card_manager_get(),card_id);
|
||||
card_capture = ms_snd_card_manager_get_card(ms_snd_card_manager_get(),card_id);
|
||||
card_playback = ms_snd_card_manager_get_card(ms_snd_card_manager_get(),card_id);
|
||||
#ifdef __linux
|
||||
if (card==NULL)
|
||||
card = ms_alsa_card_new_custom(card_id, card_id);
|
||||
if (card_playback==NULL)
|
||||
card_playback = ms_alsa_card_new_custom(card_id, card_id);
|
||||
if (card_capture==NULL)
|
||||
card_capture = ms_alsa_card_new_custom(card_id, card_id);
|
||||
#endif
|
||||
}
|
||||
else card=ms_snd_card_manager_get_default_card(ms_snd_card_manager_get());
|
||||
|
||||
if (card==NULL){
|
||||
else
|
||||
{
|
||||
card_capture = ms_snd_card_manager_get_default_capture_card(ms_snd_card_manager_get());
|
||||
card_playback = ms_snd_card_manager_get_default_playback_card(ms_snd_card_manager_get());
|
||||
}
|
||||
if (card_playback==NULL || card_capture==NULL){
|
||||
ms_error("No card.");
|
||||
return -1;
|
||||
}
|
||||
f1=ms_snd_card_create_reader(card);
|
||||
f2=ms_snd_card_create_writer(card);
|
||||
f1=ms_snd_card_create_reader(card_capture);
|
||||
f2=ms_snd_card_create_writer(card_playback);
|
||||
|
||||
ms_filter_call_method (f1, MS_FILTER_SET_SAMPLE_RATE,
|
||||
&rate);
|
||||
ms_filter_call_method (f2, MS_FILTER_SET_SAMPLE_RATE,
|
||||
&rate);
|
||||
|
||||
ticker=ms_ticker_new();
|
||||
ms_filter_link(f1,0,f2,0);
|
||||
ms_ticker_attach(ticker,f1);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue