From c2ced898a627d88a1322a3971ab15bcb18939a3a Mon Sep 17 00:00:00 2001 From: Guillaume Beraudo Date: Mon, 29 Nov 2010 14:08:58 +0100 Subject: [PATCH 1/5] Corrected speaker and mute buttons not correctly handling state. --- res/layout-land/dialer.xml | 8 +++--- res/layout/dialer.xml | 4 +-- src/org/linphone/DialerActivity.java | 26 ++++++++++++------- .../linphone/component/ToggleImageButton.java | 14 +++++----- 4 files changed, 30 insertions(+), 22 deletions(-) diff --git a/res/layout-land/dialer.xml b/res/layout-land/dialer.xml index 2583a3c76..cc395e052 100644 --- a/res/layout-land/dialer.xml +++ b/res/layout-land/dialer.xml @@ -25,13 +25,13 @@ android:layout_width="fill_parent"> diff --git a/res/layout/dialer.xml b/res/layout/dialer.xml index 2ac78e7b4..0943935bd 100644 --- a/res/layout/dialer.xml +++ b/res/layout/dialer.xml @@ -26,11 +26,11 @@ > diff --git a/src/org/linphone/DialerActivity.java b/src/org/linphone/DialerActivity.java index 4603263ef..82dc1ed23 100644 --- a/src/org/linphone/DialerActivity.java +++ b/src/org/linphone/DialerActivity.java @@ -249,17 +249,14 @@ public class DialerActivity extends Activity implements LinphoneCoreListener { mInCallControlRow.setVisibility(View.VISIBLE); mAddressLayout.setVisibility(View.GONE); mInCallAddressLayout.setVisibility(View.VISIBLE); - mMute.setChecked(!lLinphoneCore.isMicMuted()); + String DisplayName = lLinphoneCore.getRemoteAddress().getDisplayName(); if (DisplayName!=null) { mDisplayNameView.setText(DisplayName); } else { mDisplayNameView.setText(lLinphoneCore.getRemoteAddress().getUserName()); } - if ((Integer.parseInt(Build.VERSION.SDK) <=4 && mAudioManager.getMode() == AudioManager.MODE_NORMAL) - || Integer.parseInt(Build.VERSION.SDK) >4 &&mAudioManager.isSpeakerphoneOn()) { - mSpeaker.setChecked(true); - } + configureMuteButtons(); mWakeLock.acquire(); } } @@ -271,9 +268,9 @@ public class DialerActivity extends Activity implements LinphoneCoreListener { public void onCheckedChanged(ToggleImageButton button, boolean isChecked) { LinphoneCore lc = LinphoneService.instance().getLinphoneCore(); if (isChecked) { - lc.muteMic(false); - } else { lc.muteMic(true); + } else { + lc.muteMic(false); } } }); @@ -497,6 +494,8 @@ public class DialerActivity extends Activity implements LinphoneCoreListener { mDisplayNameView.setText(lc.getRemoteAddress().toString()); } } + configureMuteButtons(); + if (mSpeaker.isChecked()) { routeAudioToSpeaker(); } else { @@ -504,6 +503,15 @@ public class DialerActivity extends Activity implements LinphoneCoreListener { } setVolumeControlStream(AudioManager.STREAM_VOICE_CALL); } + private void configureMuteButtons() { + mMute.setChecked(LinphoneService.instance().getLinphoneCore().isMicMuted()); + if ((Integer.parseInt(Build.VERSION.SDK) <=4 && mAudioManager.getMode() == AudioManager.MODE_NORMAL) + || Integer.parseInt(Build.VERSION.SDK) >4 &&mAudioManager.isSpeakerphoneOn()) { + mSpeaker.setChecked(true); + } else { + mSpeaker.setChecked(false); + } + } private void exitCallMode() { mCallControlRow.setVisibility(View.VISIBLE); mInCallControlRow.setVisibility(View.GONE); @@ -512,13 +520,13 @@ public class DialerActivity extends Activity implements LinphoneCoreListener { mCall.setEnabled(true); mHangup.setEnabled(false); setVolumeControlStream(AudioManager.USE_DEFAULT_STREAM_TYPE); - mMute.setChecked(true); - mSpeaker.setChecked(false); mDecline.setEnabled(false); if (LinphoneService.instance().getLinphoneCore().isVideoEnabled()) { finishActivity(VIDEO_VIEW_ACTIVITY); } if (mWakeLock.isHeld())mWakeLock.release(); + mSpeaker.setChecked(false); + routeAudioToReceiver(); } private void routeAudioToSpeaker() { if (Integer.parseInt(Build.VERSION.SDK) <= 4 /* Date: Mon, 29 Nov 2010 14:37:42 +0100 Subject: [PATCH 2/5] Fix regression framerate control. --- src/org/linphone/core/AndroidCameraRecordImpl.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/org/linphone/core/AndroidCameraRecordImpl.java b/src/org/linphone/core/AndroidCameraRecordImpl.java index 38ca02fec..0409d5cb4 100644 --- a/src/org/linphone/core/AndroidCameraRecordImpl.java +++ b/src/org/linphone/core/AndroidCameraRecordImpl.java @@ -34,11 +34,11 @@ public class AndroidCameraRecordImpl extends AndroidCameraRecord implements Prev private long filterCtxPtr; private double timeElapsedBetweenFrames = 0; private long lastFrameTime = 0; - private final long expectedTimeBetweenFrames; + private final double expectedTimeBetweenFrames; public AndroidCameraRecordImpl(RecorderParams parameters) { super(parameters); - expectedTimeBetweenFrames = 1l / Math.round(parameters.fps); + expectedTimeBetweenFrames = 1d / Math.round(parameters.fps); filterCtxPtr = parameters.filterDataNativePtr; storePreviewCallBack(this); From 0cda12e3e2cafaa93b8f5fea0efb54772d8c69dd Mon Sep 17 00:00:00 2001 From: Guillaume Beraudo Date: Mon, 29 Nov 2010 14:38:23 +0100 Subject: [PATCH 3/5] Fix bad shown camera state in video call menu. --- src/org/linphone/VideoCallActivity.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/org/linphone/VideoCallActivity.java b/src/org/linphone/VideoCallActivity.java index 2254a6597..c5baede10 100644 --- a/src/org/linphone/VideoCallActivity.java +++ b/src/org/linphone/VideoCallActivity.java @@ -55,9 +55,9 @@ public class VideoCallActivity extends Activity { private void rewriteToggleCameraItem(MenuItem item) { if (recordManager.isRecording()) { - item.setTitle(getString(R.string.menu_videocall_toggle_camera_enable)); - } else { item.setTitle(getString(R.string.menu_videocall_toggle_camera_disable)); + } else { + item.setTitle(getString(R.string.menu_videocall_toggle_camera_enable)); } } From b39b2d5aee30967267262c1601891f2fc77f936f Mon Sep 17 00:00:00 2001 From: Guillaume Beraudo Date: Mon, 29 Nov 2010 14:40:00 +0100 Subject: [PATCH 4/5] Fix regression not using buffered capture on android v8. --- src/org/linphone/core/AndroidCameraRecordManager.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/org/linphone/core/AndroidCameraRecordManager.java b/src/org/linphone/core/AndroidCameraRecordManager.java index 9295bf0b0..159cc4c5a 100644 --- a/src/org/linphone/core/AndroidCameraRecordManager.java +++ b/src/org/linphone/core/AndroidCameraRecordManager.java @@ -138,7 +138,7 @@ public class AndroidCameraRecordManager { parameters.rotation = rotation; parameters.surfaceView = surfaceView; - if (version > 8) { + if (version >= 8) { recorder = new AndroidCameraRecordBufferedImpl(parameters); } else { recorder = new AndroidCameraRecordImpl(parameters); From 92d591464883009651ee807d5aa7f39b8fd4ec8b Mon Sep 17 00:00:00 2001 From: Guillaume Beraudo Date: Mon, 29 Nov 2010 14:41:51 +0100 Subject: [PATCH 5/5] Cosmetics cleanup. --- .../linphone/core/AndroidCameraRecord.java | 20 ++++++++----------- .../core/AndroidCameraRecordBufferedImpl.java | 12 ++++------- 2 files changed, 12 insertions(+), 20 deletions(-) diff --git a/src/org/linphone/core/AndroidCameraRecord.java b/src/org/linphone/core/AndroidCameraRecord.java index 560f4c947..c691a3176 100644 --- a/src/org/linphone/core/AndroidCameraRecord.java +++ b/src/org/linphone/core/AndroidCameraRecord.java @@ -52,7 +52,8 @@ public abstract class AndroidCameraRecord { public void startPreview() { // FIXME throws exception? if (previewStarted) { Log.w(tag, "Already started"); - return; + throw new RuntimeException("Video recorder already started"); + // return } if (params.surfaceView.getVisibility() != SurfaceView.VISIBLE) { @@ -91,7 +92,7 @@ public abstract class AndroidCameraRecord { } } - onSettingParameters(parameters); + onSettingCameraParameters(parameters); camera.setParameters(parameters); @@ -114,33 +115,28 @@ public abstract class AndroidCameraRecord { previewStarted = true; - // Register callback to get capture buffer - if (storedPreviewCallback != null) { - lowLevelSetPreviewCallback(camera, storedPreviewCallback); - } + lowLevelSetPreviewCallback(camera, storedPreviewCallback); - onCameraStarted(camera); + onPreviewStarted(camera); } - protected void onSettingParameters(Parameters parameters) { - - } + protected void onSettingCameraParameters(Parameters parameters) {} /** * Hook. * @param camera */ - public void onCameraStarted(Camera camera) {} + public void onPreviewStarted(Camera camera) {} public void storePreviewCallBack(PreviewCallback cb) { + this.storedPreviewCallback = cb; if (camera == null) { Log.w(tag, "Capture camera not ready, storing callback"); - this.storedPreviewCallback = cb; return; } diff --git a/src/org/linphone/core/AndroidCameraRecordBufferedImpl.java b/src/org/linphone/core/AndroidCameraRecordBufferedImpl.java index 9445b40ee..f58698df2 100644 --- a/src/org/linphone/core/AndroidCameraRecordBufferedImpl.java +++ b/src/org/linphone/core/AndroidCameraRecordBufferedImpl.java @@ -46,18 +46,14 @@ public class AndroidCameraRecordBufferedImpl extends AndroidCameraRecordImpl { } @Override - public void onCameraStarted(Camera camera) { - super.onCameraStarted(camera); + public void onPreviewStarted(Camera camera) { + super.onPreviewStarted(camera); Size s = camera.getParameters().getPreviewSize(); int wishedBufferSize = s.height * s.width * 3 / 2; camera.addCallbackBuffer(new byte[wishedBufferSize]); camera.addCallbackBuffer(new byte[wishedBufferSize]); -/* - for (int i=1; i < 30; i++) { - camera.addCallbackBuffer(new byte[wishedBufferSize]); - }*/ } @Override @@ -67,8 +63,8 @@ public class AndroidCameraRecordBufferedImpl extends AndroidCameraRecordImpl { } @Override - protected void onSettingParameters(Parameters parameters) { - super.onSettingParameters(parameters); + protected void onSettingCameraParameters(Parameters parameters) { + super.onSettingCameraParameters(parameters); // Only on v8 hardware camera.setDisplayOrientation(90 * orientationCode); }