Changeset 954:1392254333a4 in mediastreamer2
- Timestamp:
- May 6, 2010 11:12:51 AM (3 years ago)
- Branch:
- default
- Files:
-
- 2 edited
-
src/pulseaudio.c (modified) (9 diffs)
-
tests/mediastream.c (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/pulseaudio.c
r952 r954 150 150 attr.prebuf=-1; 151 151 attr.minreq=-1; 152 attr.fragsize=s->fragsize=latency_req* s->channels*s->rate*2;152 attr.fragsize=s->fragsize=latency_req*(float)s->channels*(float)s->rate*2; 153 153 154 154 s->stream=pa_stream_new(context,"mediastreamer2 read filter",&pss,NULL); … … 157 157 return; 158 158 } 159 pa_threaded_mainloop_lock(pa_loop); 159 160 err=pa_stream_connect_record(s->stream,NULL,&attr, PA_STREAM_ADJUST_LATENCY); 161 pa_threaded_mainloop_unlock(pa_loop); 160 162 if (err!=0){ 161 163 ms_error("pa_stream_connect_record() failed"); … … 163 165 } 164 166 165 static void stub(void *p){166 }167 167 168 168 static void pulse_read_process(MSFilter *f){ … … 172 172 173 173 if (s->stream!=NULL){ 174 pa_stream_peek(s->stream,&buffer,&nbytes); 175 if (buffer!=NULL){ 176 pa_stream_drop(s->stream); 177 mblk_t *om=esballoc((uint8_t*)buffer,nbytes,0,stub); 174 pa_threaded_mainloop_lock(pa_loop); 175 while (pa_stream_peek(s->stream,&buffer,&nbytes)==0 && nbytes>0){ 176 mblk_t *om; 177 om=allocb(nbytes,0); 178 memcpy(om->b_wptr,buffer,nbytes); 178 179 om->b_wptr+=nbytes; 179 180 ms_queue_put(f->outputs[0],om); 181 nbytes=0; 182 pa_stream_drop(s->stream); 180 183 } 184 pa_threaded_mainloop_unlock(pa_loop); 181 185 } 182 186 } … … 187 191 188 192 if (s->stream) { 193 pa_threaded_mainloop_lock(pa_loop); 189 194 pa_stream_disconnect(s->stream); 190 195 pa_stream_unref(s->stream); 196 pa_threaded_mainloop_unlock(pa_loop); 191 197 } 192 198 } … … 253 259 pss.channels=s->channels; 254 260 pss.rate=s->rate; 261 262 s->fragsize=latency_req*(float)s->channels*(float)s->rate*2; 255 263 256 264 attr.maxlength=-1; 257 attr.tlength= -1;265 attr.tlength=s->fragsize; 258 266 attr.prebuf=-1; 259 267 attr.minreq=-1; 260 attr.fragsize= s->fragsize=latency_req*s->channels*s->rate*2;268 attr.fragsize=-1; 261 269 262 270 s->stream=pa_stream_new(context,"mediastreamer2",&pss,NULL); … … 265 273 return; 266 274 } 275 pa_threaded_mainloop_lock(pa_loop); 267 276 err=pa_stream_connect_playback(s->stream,NULL,&attr, PA_STREAM_ADJUST_LATENCY,NULL,NULL); 277 pa_threaded_mainloop_unlock(pa_loop); 268 278 if (err!=0){ 269 279 ms_error("pa_stream_connect_playback() failed"); … … 277 287 int bsize=msgdsize(im); 278 288 if (s->stream){ 289 pa_threaded_mainloop_lock(pa_loop); 279 290 if (pa_stream_writable_size(s->stream)>=bsize){ 280 291 //ms_message("Pushing data to pulseaudio"); 281 292 pa_stream_write(s->stream,im->b_rptr,bsize,NULL,0,PA_SEEK_RELATIVE); 282 293 } 294 pa_threaded_mainloop_unlock(pa_loop); 283 295 } 284 296 freemsg(im); … … 289 301 PulseWriteState *s=(PulseWriteState*)f->data; 290 302 if (s->stream) { 303 pa_threaded_mainloop_lock(pa_loop); 291 304 pa_stream_disconnect(s->stream); 292 305 pa_stream_unref(s->stream); 306 pa_threaded_mainloop_unlock(pa_loop); 293 307 } 294 308 } -
tests/mediastream.c
r951 r954 43 43 44 44 static const char * capture_card=NULL; 45 static const char * playback_card=NULL; 45 46 static float ng_threshold=-1; 46 47 static bool_t use_ng=FALSE; … … 140 141 "[ --ng (enable noise gate)]\n" 141 142 "[ --ng-threshold <(float) [0-1]> (noise gate threshold)]\n" 142 "[ --capture-card <index>] \n"; 143 "[ --capture-card <name>] \n" 144 "[ --playback-card <name>] \n"; 143 145 144 146 static void run_media_streams(int localport, const char *remote_ip, int remoteport, int payload, const char *fmtp, … … 212 214 i++; 213 215 capture_card=argv[i]; 216 }else if (strcmp(argv[i],"--playback-card")==0){ 217 i++; 218 playback_card=argv[i]; 214 219 }else if (strcmp(argv[i],"--ec")==0){ 215 220 ec=TRUE; … … 256 261 MSSndCard *capt= capture_card==NULL ? ms_snd_card_manager_get_default_capture_card(manager) : 257 262 ms_snd_card_manager_get_card(manager,capture_card); 263 MSSndCard *play= playback_card==NULL ? ms_snd_card_manager_get_default_playback_card(manager) : 264 ms_snd_card_manager_get_card(manager,playback_card); 258 265 audio=audio_stream_new(localport,ms_is_ipv6(remote_ip)); 259 266 audio_stream_enable_automatic_gain_control(audio,agc); 260 267 audio_stream_enable_noise_gate(audio,use_ng); 261 audio_stream_set_echo_canceller_params(audio,ec_len_ms,ec_delay_ms,ec_framesize);262 printf("Starting audio stream.\n");268 audio_stream_set_echo_canceller_params(audio,ec_len_ms,ec_delay_ms,ec_framesize); 269 printf("Starting audio stream.\n"); 263 270 audio_stream_start_now(audio,profile,remote_ip,remoteport,remoteport+1,payload,jitter, 264 ms_snd_card_manager_get_default_playback_card(manager),271 play, 265 272 capt, 266 273 ec);
Note: See TracChangeset
for help on using the changeset viewer.
