~ubuntu-branches/ubuntu/vivid/linphone/vivid

« back to all changes in this revision

Viewing changes to mediastreamer2/src/mssndcard.c

  • Committer: Bazaar Package Importer
  • Author(s): Samuel Mimram
  • Date: 2006-11-15 10:34:50 UTC
  • mfrom: (1.2.1 upstream) (2.1.8 feisty)
  • Revision ID: james.westby@ubuntu.com-20061115103450-qgafwcks2lkhctlj
* New upstream release.
* Enable video support.
* Fix mismatched #endif in mscommon.h, closes: #398307.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
mediastreamer2 library - modular sound and video processing and streaming
 
3
Copyright (C) 2006  Simon MORLAT (simon.morlat@linphone.org)
 
4
 
 
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.
 
9
 
 
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.
 
14
 
 
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.
 
18
*/
 
19
 
 
20
#include "mediastreamer2/mssndcard.h"
 
21
 
 
22
static MSSndCardManager *scm=NULL;
 
23
 
 
24
static MSSndCardManager * create_manager(){
 
25
        MSSndCardManager *obj=ms_new(MSSndCardManager,1);
 
26
        obj->cards=NULL;
 
27
        return obj;
 
28
}
 
29
 
 
30
void ms_snd_card_manager_destroy(void){
 
31
        if (scm!=NULL){
 
32
                ms_list_for_each(scm->cards,(void (*)(void*))ms_snd_card_destroy);
 
33
                ms_list_free(scm->cards);
 
34
        }
 
35
}
 
36
 
 
37
MSSndCardManager * ms_snd_card_manager_get(void){
 
38
        if (scm==NULL) scm=create_manager();
 
39
        return scm;
 
40
}
 
41
 
 
42
MSSndCard * ms_snd_card_manager_get_card(MSSndCardManager *m, const char *id){
 
43
        MSList *elem;
 
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;
 
47
        }
 
48
        ms_warning("no card with id %s",id);
 
49
        return NULL;
 
50
}
 
51
 
 
52
MSSndCard * ms_snd_card_manager_get_default_card(MSSndCardManager *m){
 
53
        if (m->cards!=NULL) return (MSSndCard*)m->cards->data;
 
54
        return NULL;
 
55
}
 
56
 
 
57
const MSList * ms_snd_card_manager_get_list(MSSndCardManager *m){
 
58
        return m->cards;
 
59
}
 
60
 
 
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);
 
64
}
 
65
 
 
66
void ms_snd_card_manager_register_desc(MSSndCardManager *m, MSSndCardDesc *desc){
 
67
        if (desc->detect!=NULL)
 
68
                desc->detect(m);
 
69
}
 
70
 
 
71
MSSndCard * ms_snd_card_dup(MSSndCard *card){
 
72
        MSSndCard *obj=NULL;
 
73
        if (card->desc->duplicate!=NULL)
 
74
                obj=card->desc->duplicate(card);
 
75
        return obj;
 
76
}
 
77
 
 
78
MSSndCard * ms_snd_card_new(MSSndCardDesc *desc){
 
79
        MSSndCard *obj=ms_new(MSSndCard,1);
 
80
        obj->desc=desc;
 
81
        obj->name=NULL;
 
82
        obj->data=NULL;
 
83
        obj->id=NULL;
 
84
        if (desc->init!=NULL)
 
85
                desc->init(obj);
 
86
        return obj;
 
87
}
 
88
 
 
89
const char *ms_snd_card_get_driver_type(const MSSndCard *obj){
 
90
        return obj->desc->driver_type;
 
91
}
 
92
 
 
93
const char *ms_snd_card_get_name(const MSSndCard *obj){
 
94
        return obj->name;
 
95
}
 
96
 
 
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);
 
99
        return obj->id;
 
100
}
 
101
 
 
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);
 
106
}
 
107
 
 
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);
 
111
        else {
 
112
                ms_warning("ms_snd_card_set_capture: unimplemented by %s wrapper",obj->desc->driver_type);
 
113
                return -1;
 
114
        }
 
115
}
 
116
 
 
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);
 
121
}
 
122
 
 
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);
 
127
        return NULL;
 
128
}
 
129
 
 
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);
 
134
        return NULL;
 
135
}
 
136
 
 
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);
 
141
        ms_free(obj);
 
142
}