Regards
--Michele
Index: include/mediastreamer2/msfilter.h
===================================================================
--- include/mediastreamer2/msfilter.h (revision 313)
+++ include/mediastreamer2/msfilter.h (working copy)
@@ -333,6 +333,15 @@
MSFilterId ms_filter_get_id(MSFilter *f);
/**
+ * Check if a filter is a source: no input are linked to that filter.
+ *
+ * @param f A MSFilter object.
+ *
+ * Returns: TRUE if f is a source, FALSE otherwise.
+ */
+bool_t ms_filter_is_source(MSFilter *f);
+
+/**
* Destroy a filter object.
*
* @param f A MSFilter object.
Index: src/msticker.c
===================================================================
--- src/msticker.c (revision 313)
+++ src/msticker.c (working copy)
@@ -106,7 +106,7 @@
MSFilter *f;
for(;filters!=NULL;filters=filters->next){
f=(MSFilter*)filters->data;
- if (f->desc->ninputs==0){
+ if (ms_filter_is_source(f)){
sources=ms_list_append(sources,f);
}
}
@@ -190,7 +190,7 @@
static void call_process(MSFilter *f){
bool_t process_done=FALSE;
- if (f->desc->ninputs==0 || f->desc->flags & MS_FILTER_IS_PUMP){
+ if (ms_filter_is_source(f) || f->desc->flags & MS_FILTER_IS_PUMP){
ms_filter_process(f);
}else{
while (ms_filter_inputs_have_data(f)) {
Index: src/msfilter.c
===================================================================
--- src/msfilter.c (revision 313)
+++ src/msfilter.c (working copy)
@@ -233,3 +233,14 @@
if (f->notify!=NULL)
f->notify(f->notify_ud,id,NULL);
}
+
+bool_t ms_filter_is_source(MSFilter *f){
+ int i;
+ for (i=0;i<f->desc->ninputs;++i){
+ if (f->inputs[i]){
+ return FALSE;
+ }
+ }
+ return TRUE;
+}
+}
_______________________________________________
Linphone-developers mailing list
address@hidden
http://lists.nongnu.org/mailman/listinfo/linphone-developers