From 2f6ce2d647aa5d70589caa1f68a32e9deeed9c4d Mon Sep 17 00:00:00 2001 From: smorlat Date: Fri, 20 Mar 2009 09:38:59 +0000 Subject: [PATCH] improve doxygen generation msvolume work in progress. git-svn-id: svn+ssh://svn.savannah.nongnu.org/linphone/trunk@354 3f6dc0c8-ddfe-455d-9043-3cd528dc4637 --- linphone/mediastreamer2/configure.ac | 9 ++- .../help/{DoxyFile.in => Doxyfile.in} | 11 ++-- linphone/mediastreamer2/help/Makefile.am | 32 +++++++++- .../include/mediastreamer2/msvolume.h | 4 ++ .../include/mediastreamer2/mswebcam.h | 19 +----- linphone/mediastreamer2/src/msvolume.c | 60 +++++++++++++++++-- linphone/oRTP/Makefile.am | 3 +- linphone/oRTP/configure.ac | 2 +- 8 files changed, 107 insertions(+), 33 deletions(-) rename linphone/mediastreamer2/help/{DoxyFile.in => Doxyfile.in} (97%) diff --git a/linphone/mediastreamer2/configure.ac b/linphone/mediastreamer2/configure.ac index f08d101d3..be4fbc572 100644 --- a/linphone/mediastreamer2/configure.ac +++ b/linphone/mediastreamer2/configure.ac @@ -405,6 +405,13 @@ AC_SUBST(PACKAGE_DATA_DIR) dnl check for video4linux headers AC_CHECK_HEADERS(linux/videodev.h linux/videodev2.h) +dnl ################################################## +dnl # Check for doxygen +dnl ################################################## + +AC_PATH_PROG(DOXYGEN,doxygen,false) +AM_CONDITIONAL(HAVE_DOXYGEN, test $DOXYGEN != false) + dnl ################################################## dnl # Check for ESP Packager @@ -480,6 +487,6 @@ build/wince/Makefile mediastreamer.pc mediastreamer2.spec help/Makefile -help/DoxyFile +help/Doxyfile help/doxygen.dox ) diff --git a/linphone/mediastreamer2/help/DoxyFile.in b/linphone/mediastreamer2/help/Doxyfile.in similarity index 97% rename from linphone/mediastreamer2/help/DoxyFile.in rename to linphone/mediastreamer2/help/Doxyfile.in index e14d2f4e4..1c7f5b41c 100644 --- a/linphone/mediastreamer2/help/DoxyFile.in +++ b/linphone/mediastreamer2/help/Doxyfile.in @@ -5,7 +5,7 @@ #--------------------------------------------------------------------------- PROJECT_NAME = mediastreamer2 PROJECT_NUMBER = @MEDIASTREAMER_VERSION@ -OUTPUT_DIRECTORY = help/doc +OUTPUT_DIRECTORY = doc CREATE_SUBDIRS = NO OUTPUT_LANGUAGE = English USE_WINDOWS_ENCODING = NO @@ -80,8 +80,9 @@ WARN_LOGFILE = #--------------------------------------------------------------------------- # configuration options related to the input files #--------------------------------------------------------------------------- -INPUT = help/ \ - include/ +INPUT = . \ + ../include/ \ + ../src FILE_PATTERNS = *.h \ *.c \ *.dox @@ -89,7 +90,7 @@ RECURSIVE = YES EXCLUDE = EXCLUDE_SYMLINKS = NO EXCLUDE_PATTERNS = -EXAMPLE_PATH = . +EXAMPLE_PATH = ../ EXAMPLE_PATTERNS = EXAMPLE_RECURSIVE = NO IMAGE_PATH = @@ -188,7 +189,7 @@ ENABLE_PREPROCESSING = YES MACRO_EXPANSION = YES EXPAND_ONLY_PREDEF = NO SEARCH_INCLUDES = YES -INCLUDE_PATH = include/ +INCLUDE_PATH = ../include/mediastreamer2 INCLUDE_FILE_PATTERNS = *.h PREDEFINED = DOXYGEN EXPAND_AS_DEFINED = diff --git a/linphone/mediastreamer2/help/Makefile.am b/linphone/mediastreamer2/help/Makefile.am index 25e92d69d..22cc898e1 100644 --- a/linphone/mediastreamer2/help/Makefile.am +++ b/linphone/mediastreamer2/help/Makefile.am @@ -1,4 +1,32 @@ -EXTRA_DIST = DoxyFile.in doxygen.dox.in +EXTRA_DIST = Doxyfile.in doxygen.dox.in -all: DoxyFile doxygen.dox +#html doc +if HAVE_DOXYGEN + +SOURCES=$(top_srcdir)/include/mediastreamer2/*.h $(top_srcdir)/src/*.c $(top_srcdir)/src/*.h + +# doxdir & pkgdocdir are not always defined by automake +docdir=$(datadir)/doc +pkgdocdir=$(docdir)/$(PACKAGE)-$(VERSION) +doc_htmldir=$(pkgdocdir)/html + +doc_html_DATA = $(top_builddir)/help/doc/html/html.tar + +$(doc_html_DATA): $(top_builddir)/help/doc/html/index.html + cd $(energy=0; v->norm_en=0; v->static_gain=v->gain=1; + v->ea_active=FALSE; f->data=v; } @@ -63,20 +66,54 @@ static int volume_get_linear(MSFilter *f, void *arg){ static void volume_echo_avoider_process(Volume *v){ float peer_e; + float gain; ms_filter_call_method(v->peer,MS_VOLUME_GET_LINEAR,&peer_e); - if (peer_e>noise_thres){ - /*lower our output*/ - v->gain=v->static_gain*(1-peer_e); - }else v->gain=v->static_gain; + if (v->ea_active){ + if (peer_e>noise_thres){ + /*lower our output*/ + gain=v->static_gain*(1-peer_e); + }else { + gain=v->static_gain; + v->ea_active=FALSE; + } + }else{ + int peer_active=FALSE; + ms_filter_call_method(v->peer,MS_VOLUME_GET_EA_STATE,&peer_active); + if (peer_e>noise_thres && ! peer_active){ + /*lower our output*/ + gain=v->static_gain*(1-peer_e); + v->ea_active=TRUE; + }else gain=v->static_gain; + } + v->gain=(v->gain*(1-gain_k)) + (gain_k*coef); } -static void volume_set_gain(MSFilter *f, void *arg){ +static int volume_set_gain(MSFilter *f, void *arg){ float *farg=(float*)arg; Volume *v=(Volume*)f->data; v->gain=v->static_gain=*farg; return 0; } + +static int volume_get_ea_state(MSFilter *f, void *arg){ + int *barg=(int*)arg; + Volume *v=(Volume*)f->data; + *barg=v->ea_active; + return 0; +} + +static int volume_set_peer(MSFilter *f, void *arg){ + MSFilter *p=(MSFilter*)arg; + Volume *v=(Volume*)f->data; + v->peer=p; + return 0; +} + +static inline int16_t saturate(float val){ + return (val>32767) ? 32767 : ( (val<-32767) ? -32767 : val); +} + static void volume_process(MSFilter *f){ mblk_t *m; int16_t *sample; @@ -89,6 +126,17 @@ static void volume_process(MSFilter *f){ float s=*sample; en=(s*s*coef) + (1.0-coef)*en; } + if (v->peer){ + volume_echo_avoider_process(v); + } + if (v->gain!=1){ + for ( sample=(int16_t*)m->b_rptr; + sample<(int16_t*)m->b_wptr; + ++sample){ + float s=*sample; + *sample=saturate(s*v->gain); + } + } ms_queue_put(f->outputs[0],m); } v->energy=en; @@ -98,6 +146,8 @@ static MSFilterMethod methods[]={ { MS_VOLUME_GET , volume_get }, { MS_VOLUME_GET_LINEAR , volume_get_linear }, { MS_VOLUME_SET_GAIN , volume_set_gain }, + { MS_VOLUME_GET_EA_STATE , volume_get_ea_state }, + { MS_VOLUME_SET_PEER , volume_set_peer }, { 0 , NULL } }; diff --git a/linphone/oRTP/Makefile.am b/linphone/oRTP/Makefile.am index 498efe1ab..5a549cfc1 100644 --- a/linphone/oRTP/Makefile.am +++ b/linphone/oRTP/Makefile.am @@ -7,6 +7,7 @@ SUBDIRS=src build include pkgconfigdir = $(libdir)/pkgconfig pkgconfig_DATA = ortp.pc +SOURCES=include/ortp/*.h src/*.c src/*.h #html doc if HAVE_DOXYGEN @@ -29,7 +30,7 @@ install-data-hook: cd $(DESTDIR)$(doc_htmldir) && tar xf html.tar && rm -f html.tar uninstall-hook: - cd $(DESTDIR)$(doc_htmldir) && rm -rf * + cd $(DESTDIR)$(doc_htmldir) && rm -rf html endif diff --git a/linphone/oRTP/configure.ac b/linphone/oRTP/configure.ac index bead7e062..7cfdec4a4 100644 --- a/linphone/oRTP/configure.ac +++ b/linphone/oRTP/configure.ac @@ -247,7 +247,7 @@ echo "$ORTPDEPS_CFLAGS" > ortp.defs dnl ################################################## -dnl # Check for gtk-doc. +dnl # Check for doxygen dnl ################################################## AC_PATH_PROG(DOXYGEN,doxygen,false)