public Session build() {
		Session session;

		session = new Session();
		session.setOrigin(mOrigin);
		session.setDestination(mDestination);
		session.setTimeToLive(mTimeToLive);
		session.setCallback(mCallback);

		switch (mAudioEncoder) {
		case AUDIO_AAC:
			AACStream stream = new AACStream();
			session.addAudioTrack(stream);
			if (mContext!=null) 
				stream.setPreferences(PreferenceManager.getDefaultSharedPreferences(mContext));
			break;
		case AUDIO_AMRNB:
			session.addAudioTrack(new AMRNBStream());
			break;
		}

		switch (mVideoEncoder) {
		case VIDEO_H263:
			session.addVideoTrack(new H263Stream(mCamera));
			break;
		case VIDEO_H264:
			H264Stream stream = new H264Stream(mCamera);
			if (mContext!=null) 
				stream.setPreferences(PreferenceManager.getDefaultSharedPreferences(mContext));
			session.addVideoTrack(stream);
			break;
		}

		if (session.getVideoTrack()!=null) {
			VideoStream video = session.getVideoTrack();
			video.setFlashState(mFlash);
			video.setVideoQuality(mVideoQuality);
			video.setSurfaceView(mSurfaceView);
			video.setPreviewOrientation(mOrientation);
			video.setDestinationPorts(5006);
		}

		if (session.getAudioTrack()!=null) {
			AudioStream audio = session.getAudioTrack();
			audio.setAudioQuality(mAudioQuality);
			audio.setDestinationPorts(5004);
		}

		return session;

	}
Creates a new {@link Session}.
@return The new Session
@throws IOException
src/net/majorkernelpanic/streaming/SessionBuilder.java