src/org/sipdroid/media/RtpStreamReceiver.java
changeset 826 8649e502be0e
parent 823 2036ebfaccda
child 830 c8b4ace735ea
equal deleted inserted replaced
825:b87f8688118c 826:8649e502be0e
   217 		REAL_BUFFER_SIZE = BUFFER_SIZE * codec_divider;
   217 		REAL_BUFFER_SIZE = BUFFER_SIZE * codec_divider;
   218 		speakermode = AudioManager.MODE_IN_CALL;
   218 		speakermode = AudioManager.MODE_IN_CALL;
   219 		android.os.Process.setThreadPriority(android.os.Process.THREAD_PRIORITY_AUDIO);
   219 		android.os.Process.setThreadPriority(android.os.Process.THREAD_PRIORITY_AUDIO);
   220 		am = (AudioManager) mContext.getSystemService(Context.AUDIO_SERVICE);
   220 		am = (AudioManager) mContext.getSystemService(Context.AUDIO_SERVICE);
   221 		cr = mContext.getContentResolver();
   221 		cr = mContext.getContentResolver();
   222 		saveSettings();
   222 		//saveSettings();
   223 
   223 
   224 		Settings.System.putInt(cr, Settings.System.WIFI_SLEEP_POLICY,Settings.System.WIFI_SLEEP_POLICY_NEVER);
   224 		Settings.System.putInt(cr, Settings.System.WIFI_SLEEP_POLICY,Settings.System.WIFI_SLEEP_POLICY_NEVER);
   225 		am.setVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER,AudioManager.VIBRATE_SETTING_OFF);
   225 		//am.setVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER,AudioManager.VIBRATE_SETTING_OFF);
   226 		am.setVibrateSetting(AudioManager.VIBRATE_TYPE_NOTIFICATION,AudioManager.VIBRATE_SETTING_OFF);
   226 		//am.setVibrateSetting(AudioManager.VIBRATE_TYPE_NOTIFICATION,AudioManager.VIBRATE_SETTING_OFF);
   227 		oldvol = am.getStreamVolume(AudioManager.STREAM_MUSIC);
   227 		//oldvol = am.getStreamVolume(AudioManager.STREAM_MUSIC);
   228 		restoreVolume();
   228 		restoreVolume();
   229 
   229 
   230 		track = new AudioTrack(AudioManager.STREAM_MUSIC, sampling_rate, AudioFormat.CHANNEL_CONFIGURATION_MONO, AudioFormat.ENCODING_PCM_16BIT,
   230 		track = new AudioTrack(AudioManager.STREAM_MUSIC, sampling_rate, AudioFormat.CHANNEL_CONFIGURATION_MONO, AudioFormat.ENCODING_PCM_16BIT,
   231 				REAL_BUFFER_SIZE*2*2, AudioTrack.MODE_STREAM);
   231 				REAL_BUFFER_SIZE*2*2, AudioTrack.MODE_STREAM);
   232 		track.play();
   232 		track.play();
   309 				m = 1;
   309 				m = 1;
   310 				seq = (frame.getPkt()[0]).getSeqNumber();
   310 				seq = (frame.getPkt()[0]).getSeqNumber();
   311 				DataFramePool.getInstance().returnFrame(frame);
   311 				DataFramePool.getInstance().returnFrame(frame);
   312 				//println("headroom " + headroom + " user " + user + " server " + server + " luser " + luser + " lserver " + lserver);
   312 				//println("headroom " + headroom + " user " + user + " server " + server + " luser " + luser + " lserver " + lserver);
   313 				if (user >= luser + sampling_rate) {
   313 				if (user >= luser + sampling_rate) {
   314 					if (am.getMode() != speakermode) {
   314 					/*if (am.getMode() != speakermode) {
   315 						am.setMode(speakermode);
   315 						am.setMode(speakermode);
   316 						switch (speakermode) {
   316 						switch (speakermode) {
   317 						case AudioManager.MODE_IN_CALL:
   317 						case AudioManager.MODE_IN_CALL:
   318 							/*am.setStreamVolume(AudioManager.STREAM_RING,(int)(
   318 							am.setStreamVolume(AudioManager.STREAM_RING,(int)(
   319 									am.getStreamMaxVolume(AudioManager.STREAM_RING)*
   319 									am.getStreamMaxVolume(AudioManager.STREAM_RING)*
   320 									com.mbdsys.sfrdroid.ui.Settings.getEarGain()), 0);
   320 									com.mbdsys.sfrdroid.ui.Settings.getEarGain()), 0);
   321 							track.setStereoVolume(AudioTrack.getMaxVolume()*
   321 							track.setStereoVolume(AudioTrack.getMaxVolume()*
   322 									com.mbdsys.sfrdroid.ui.Settings.getEarGain()
   322 									com.mbdsys.sfrdroid.ui.Settings.getEarGain()
   323 									,AudioTrack.getMaxVolume()*
   323 									,AudioTrack.getMaxVolume()*
   324 									com.mbdsys.sfrdroid.ui.Settings.getEarGain());*/
   324 									com.mbdsys.sfrdroid.ui.Settings.getEarGain());
   325 							//running = false;
   325 							//running = false;
   326 						case AudioManager.MODE_NORMAL:
   326 						case AudioManager.MODE_NORMAL:
   327 							track.setStereoVolume(AudioTrack.getMaxVolume(),AudioTrack.getMaxVolume());
   327 							track.setStereoVolume(AudioTrack.getMaxVolume(),AudioTrack.getMaxVolume());
   328 							//running = false;
   328 							//running = false;
   329 						}
   329 						}
   330 					}
   330 					}*/
   331 					luser = user;
   331 					luser = user;
   332 				}
   332 				}
   333 				lserver = server;
   333 				lserver = server;
   334 				System.arraycopy(lin, 0, lin2, 0, REAL_BUFFER_SIZE);
   334 				System.arraycopy(lin, 0, lin2, 0, REAL_BUFFER_SIZE);
   335 			}
   335 			}
   336 		}
   336 		}
   337 		println("POOL SIZE " + DatagramPool.getInstance().getPoolSize());
   337 		println("POOL SIZE " + DatagramPool.getInstance().getPoolSize());
   338 		track.stop();
   338 		track.stop();
   339 		//if (Receiver.pstn_state == null || Receiver.pstn_state.equals("IDLE"))
   339 		//if (Receiver.pstn_state == null || Receiver.pstn_state.equals("IDLE"))
   340 		//	am.setMode(AudioManager.MODE_NORMAL);
   340 		//	am.setMode(AudioManager.MODE_NORMAL);
   341 		saveVolume();
   341 		//saveVolume();
   342 		am.setStreamVolume(AudioManager.STREAM_MUSIC,oldvol,0);
   342 		//am.setStreamVolume(AudioManager.STREAM_MUSIC,oldvol,0);
   343 		restoreSettings();
   343 		//restoreSettings();
   344 		ToneGenerator tg = new ToneGenerator(AudioManager.STREAM_RING,ToneGenerator.MAX_VOLUME/4*3);
   344 		ToneGenerator tg = new ToneGenerator(AudioManager.STREAM_RING,ToneGenerator.MAX_VOLUME/4*3);
   345 		tg.startTone(ToneGenerator.TONE_PROP_PROMPT);
   345 		tg.startTone(ToneGenerator.TONE_PROP_PROMPT);
   346 		try {
   346 		try {
   347 			Thread.sleep(500);
   347 			Thread.sleep(500);
   348 		} catch (InterruptedException e) {
   348 		} catch (InterruptedException e) {
   353 		codec.cleanDecoder(codecCtx);
   353 		codec.cleanDecoder(codecCtx);
   354 		codec = null;
   354 		codec = null;
   355 		println("rtp receiver terminated");
   355 		println("rtp receiver terminated");
   356 	}
   356 	}
   357 
   357 
   358 	public void endReceiver() {
       
   359 		track.stop();
       
   360 		//if (Receiver.pstn_state == null || Receiver.pstn_state.equals("IDLE"))
       
   361 		//	am.setMode(AudioManager.MODE_NORMAL);
       
   362 		saveVolume();
       
   363 		am.setStreamVolume(AudioManager.STREAM_MUSIC,oldvol,0);
       
   364 		restoreSettings();
       
   365 		ToneGenerator tg = new ToneGenerator(AudioManager.STREAM_RING,ToneGenerator.MAX_VOLUME/4*3);
       
   366 		tg.startTone(ToneGenerator.TONE_PROP_PROMPT);
       
   367 		try {
       
   368 			Thread.sleep(500);
       
   369 		} catch (InterruptedException e) {
       
   370 		}
       
   371 		tg.stopTone();
       
   372 		rtpSession = null;
       
   373 		track = null;
       
   374 		codec.cleanDecoder(codecCtx);
       
   375 		codec = null;
       
   376 		println("rtp receiver terminated");
       
   377 	}
       
   378 
       
   379 	/** Debug output */
   358 	/** Debug output */
   380 	static int i = 0;
   359 	static int i = 0;
   381 	private static void println(String str) {
   360 	private static void println(String str) {
   382 		System.out.println("RtpStreamReceiver "+ i++ +": " + str);
   361 		System.out.println("RtpStreamReceiver "+ i++ +": " + str);
   383 	}
   362 	}