2
mediastreamer2 library - modular sound and video processing and streaming
3
Copyright (C) 2006 Simon MORLAT (simon.morlat@linphone.org)
5
This program is free software; you can redistribute it and/or
6
modify it under the terms of the GNU General Public License
7
as published by the Free Software Foundation; either version 2
8
of the License, or (at your option) any later version.
10
This program is distributed in the hope that it will be useful,
11
but WITHOUT ANY WARRANTY; without even the implied warranty of
12
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
GNU General Public License for more details.
15
You should have received a copy of the GNU General Public License
16
along with this program; if not, write to the Free Software
17
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
20
#include "mediastreamer2/mssndcard.h"
22
static MSSndCardManager *scm=NULL;
24
static MSSndCardManager * create_manager(){
25
MSSndCardManager *obj=ms_new(MSSndCardManager,1);
30
void ms_snd_card_manager_destroy(void){
32
ms_list_for_each(scm->cards,(void (*)(void*))ms_snd_card_destroy);
33
ms_list_free(scm->cards);
37
MSSndCardManager * ms_snd_card_manager_get(void){
38
if (scm==NULL) scm=create_manager();
42
MSSndCard * ms_snd_card_manager_get_card(MSSndCardManager *m, const char *id){
44
for (elem=m->cards;elem!=NULL;elem=elem->next){
45
MSSndCard *card=(MSSndCard*)elem->data;
46
if (strcmp(ms_snd_card_get_string_id(card),id)==0) return card;
48
ms_warning("no card with id %s",id);
52
MSSndCard * ms_snd_card_manager_get_default_card(MSSndCardManager *m){
53
if (m->cards!=NULL) return (MSSndCard*)m->cards->data;
57
const MSList * ms_snd_card_manager_get_list(MSSndCardManager *m){
61
void ms_snd_card_manager_add_card(MSSndCardManager *m, MSSndCard *c){
62
ms_message("Card %s added",ms_snd_card_get_string_id(c));
63
m->cards=ms_list_append(m->cards,c);
66
void ms_snd_card_manager_register_desc(MSSndCardManager *m, MSSndCardDesc *desc){
67
if (desc->detect!=NULL)
71
MSSndCard * ms_snd_card_dup(MSSndCard *card){
73
if (card->desc->duplicate!=NULL)
74
obj=card->desc->duplicate(card);
78
MSSndCard * ms_snd_card_new(MSSndCardDesc *desc){
79
MSSndCard *obj=ms_new(MSSndCard,1);
89
const char *ms_snd_card_get_driver_type(const MSSndCard *obj){
90
return obj->desc->driver_type;
93
const char *ms_snd_card_get_name(const MSSndCard *obj){
97
const char *ms_snd_card_get_string_id(MSSndCard *obj){
98
if (obj->id==NULL) obj->id=ms_strdup_printf("%s: %s",obj->desc->driver_type,obj->name);
102
void ms_snd_card_set_level(MSSndCard *obj, MSSndCardMixerElem e, int percent){
103
if (obj->desc->set_level!=NULL)
104
obj->desc->set_level(obj,e,percent);
105
else ms_warning("ms_snd_card_set_capture: unimplemented by %s wrapper",obj->desc->driver_type);
108
int ms_snd_card_get_level(MSSndCard *obj, MSSndCardMixerElem e){
109
if (obj->desc->get_level!=NULL)
110
return obj->desc->get_level(obj,e);
112
ms_warning("ms_snd_card_set_capture: unimplemented by %s wrapper",obj->desc->driver_type);
117
void ms_snd_card_set_capture(MSSndCard *obj, MSSndCardCapture c){
118
if (obj->desc->set_capture!=NULL)
119
obj->desc->set_capture(obj,c);
120
else ms_warning("ms_snd_card_set_capture: unimplemented by %s wrapper",obj->desc->driver_type);
123
struct _MSFilter * ms_snd_card_create_reader(MSSndCard *obj){
124
if (obj->desc->create_reader!=NULL)
125
return obj->desc->create_reader(obj);
126
else ms_warning("ms_snd_card_create_reader: unimplemented by %s wrapper",obj->desc->driver_type);
130
struct _MSFilter * ms_snd_card_create_writer(MSSndCard *obj){
131
if (obj->desc->create_writer!=NULL)
132
return obj->desc->create_writer(obj);
133
else ms_warning("ms_snd_card_create_writer: unimplemented by %s wrapper",obj->desc->driver_type);
137
void ms_snd_card_destroy(MSSndCard *obj){
138
if (obj->desc->uninit!=NULL) obj->desc->uninit(obj);
139
if (obj->name!=NULL) ms_free(obj->name);
140
if (obj->id!=NULL) ms_free(obj->id);