Changeset 1049:da935660c926 in mediastreamer2
- Timestamp:
- Jul 6, 2010 11:28:48 AM (3 years ago)
- Branch:
- default
- Files:
-
- 3 edited
-
include/mediastreamer2/msfilter.h (modified) (2 diffs)
-
src/audiostream.c (modified) (2 diffs)
-
src/msandroid.cpp (modified) (7 diffs)
Legend:
- Unmodified
- Added
- Removed
-
include/mediastreamer2/msfilter.h
r1002 r1049 470 470 #define MS_FILTER_SET_MTU MS_FILTER_BASE_METHOD(9,int) 471 471 #define MS_FILTER_GET_MTU MS_FILTER_BASE_METHOD(10,int) 472 /**Filters can return their latency in milliseconds (if known) using this method:*/ 473 #define MS_FILTER_GET_LATENCY MS_FILTER_BASE_METHOD(11,int) 472 474 473 475 … … 484 486 485 487 /* more specific methods: to be moved into implementation specific header files*/ 486 #define MS_FILTER_SET_FRAMESIZE MS_FILTER_BASE_METHOD(11,int)487 488 #define MS_FILTER_SET_FILTERLENGTH MS_FILTER_BASE_METHOD(12,int) 488 489 #define MS_FILTER_SET_OUTPUT_SAMPLE_RATE MS_FILTER_BASE_METHOD(13,int) -
src/audiostream.c
r1015 r1049 246 246 } 247 247 248 if (use_ec) {249 stream->ec=ms_filter_new(MS_SPEEX_EC_ID);250 ms_filter_call_method(stream->ec,MS_FILTER_SET_SAMPLE_RATE,&pt->clock_rate);251 if (stream->ec_tail_len!=0)252 ms_filter_call_method(stream->ec,MS_ECHO_CANCELLER_SET_TAIL_LENGTH,&stream->ec_tail_len);253 if (stream->ec_delay!=0)254 ms_filter_call_method(stream->ec,MS_ECHO_CANCELLER_SET_DELAY,&stream->ec_delay);255 if (stream->ec_framesize!=0)256 ms_filter_call_method(stream->ec,MS_ECHO_CANCELLER_SET_FRAMESIZE,&stream->ec_framesize);257 }258 259 248 if (stream->el_type!=ELInactive || stream->use_gc || stream->use_ng){ 260 249 stream->volsend=ms_filter_new(MS_VOLUME_ID); … … 292 281 } 293 282 294 295 283 tmp=1; 296 284 ms_filter_call_method(stream->soundwrite,MS_FILTER_SET_NCHANNELS, &tmp); 285 286 /*configure the echo canceller if required */ 287 if (use_ec) { 288 stream->ec=ms_filter_new(MS_SPEEX_EC_ID); 289 ms_filter_call_method(stream->ec,MS_FILTER_SET_SAMPLE_RATE,&pt->clock_rate); 290 if (stream->ec_tail_len!=0) 291 ms_filter_call_method(stream->ec,MS_ECHO_CANCELLER_SET_TAIL_LENGTH,&stream->ec_tail_len); 292 if (stream->ec_delay!=0){ 293 ms_filter_call_method(stream->ec,MS_ECHO_CANCELLER_SET_DELAY,&stream->ec_delay); 294 }else{ 295 /*configure from latency of sound card in case it is availlable */ 296 int latency=0; 297 ms_filter_call_method(stream->soundread,MS_FILTER_GET_LATENCY,&latency); 298 latency-=30; /*keep 30 milliseconds security margin*/ 299 if (latency<0) latency=0; 300 ms_filter_call_method(stream->ec,MS_ECHO_CANCELLER_SET_DELAY,&latency); 301 } 302 if (stream->ec_framesize!=0) 303 ms_filter_call_method(stream->ec,MS_ECHO_CANCELLER_SET_FRAMESIZE,&stream->ec_framesize); 304 } 297 305 298 306 /* give the encoder/decoder some parameters*/ -
src/msandroid.cpp
r1040 r1049 27 27 static JavaVM *ms_andsnd_jvm; 28 28 29 29 static void sound_read_setup(MSFilter *f); 30 30 31 31 /* … … 136 136 d->rate=proposed_rate; 137 137 return 0; 138 /*d->rate=44100; //to improve latency on msn 7k 139 if (proposed_rate == d->rate) { 138 } 139 140 static int get_latency(MSFilter *f, void *arg){ 141 msandroid_sound_data *d=(msandroid_sound_data*)f->data; 142 if (!d->started){ 143 sound_read_setup(f); 144 ((int*)arg)=(1000*d->buff_size)/(d->nchannels*2*d->rate); 145 } 140 146 return 0; 141 } else { 142 return d->rate; 143 }*/ 144 } 147 } 148 145 149 146 150 MSFilterMethod msandroid_sound_read_methods[]={ … … 148 152 { MS_FILTER_GET_SAMPLE_RATE , get_rate }, 149 153 { MS_FILTER_SET_NCHANNELS , set_nchannels }, 154 { MS_FILTER_GET_LATENCY , get_latency}, 150 155 { 0 , NULL } 151 156 }; … … 211 216 } 212 217 213 void msandroid_sound_read_preprocess(MSFilter *f){218 static void sound_read_setup(MSFilter *f){ 214 219 ms_debug("andsnd_read_preprocess"); 215 220 msandroid_sound_read_data *d=(msandroid_sound_read_data*)f->data; … … 301 306 } 302 307 303 void msandroid_sound_read_postprocess(MSFilter *f){ 308 static void sound_read_preprocess(MSFilter *f){ 309 ms_debug("andsnd_read_preprocess"); 310 if (!d->started) 311 sound_read_setup(f); 312 } 313 314 static void sound_read_postprocess(MSFilter *f){ 304 315 msandroid_sound_read_data *d=(msandroid_sound_read_data*)f->data; 305 316 JNIEnv *jni_env = 0; … … 345 356 } 346 357 347 void msandroid_sound_read_process(MSFilter *f){358 static void sound_read_process(MSFilter *f){ 348 359 msandroid_sound_read_data *d=(msandroid_sound_read_data*)f->data; 349 360 mblk_t *m; … … 374 385 /*.noutputs=*/1, 375 386 /*.init*/NULL, 376 /*.preprocess=*/ msandroid_sound_read_preprocess,377 /*.process=*/ msandroid_sound_read_process,378 /*.postprocess=*/ msandroid_sound_read_postprocess,387 /*.preprocess=*/sound_read_preprocess, 388 /*.process=*/sound_read_process, 389 /*.postprocess=*/sound_read_postprocess, 379 390 /*.uninit*/NULL, 380 391 /*.methods=*/msandroid_sound_read_methods
Note: See TracChangeset
for help on using the changeset viewer.
