diff --git a/res/layout-land/video.xml b/res/layout-land/video.xml deleted file mode 100644 index 207405d19..000000000 --- a/res/layout-land/video.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/res/layout-land/video_no_opengl.xml b/res/layout-land/video_no_opengl.xml deleted file mode 100644 index 7e71989de..000000000 --- a/res/layout-land/video_no_opengl.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - diff --git a/res/layout-sw533dp-land/video.xml b/res/layout-sw533dp-land/video.xml deleted file mode 100644 index 06ced7910..000000000 --- a/res/layout-sw533dp-land/video.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/res/layout-sw533dp-land/video_no_opengl.xml b/res/layout-sw533dp-land/video_no_opengl.xml deleted file mode 100644 index 4a20a7911..000000000 --- a/res/layout-sw533dp-land/video_no_opengl.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - diff --git a/res/layout-sw720dp-land/video.xml b/res/layout-sw720dp-land/video.xml deleted file mode 100644 index 48c9ca2b1..000000000 --- a/res/layout-sw720dp-land/video.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/res/layout-sw720dp-land/video_no_opengl.xml b/res/layout-sw720dp-land/video_no_opengl.xml deleted file mode 100644 index 42131ad95..000000000 --- a/res/layout-sw720dp-land/video_no_opengl.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - diff --git a/res/layout/video.xml b/res/layout/video.xml index 4bb4e3218..86b7465e8 100644 --- a/res/layout/video.xml +++ b/res/layout/video.xml @@ -12,8 +12,8 @@ diff --git a/res/layout/video_no_opengl.xml b/res/layout/video_no_opengl.xml index ea88c256d..d53c33a85 100644 --- a/res/layout/video_no_opengl.xml +++ b/res/layout/video_no_opengl.xml @@ -12,8 +12,8 @@ diff --git a/src/android/org/linphone/CallVideoFragment.java b/src/android/org/linphone/CallVideoFragment.java index ebc0d20c8..39b03632a 100644 --- a/src/android/org/linphone/CallVideoFragment.java +++ b/src/android/org/linphone/CallVideoFragment.java @@ -23,12 +23,16 @@ import org.linphone.compatibility.Compatibility; import org.linphone.compatibility.CompatibilityScaleGestureDetector; import org.linphone.compatibility.CompatibilityScaleGestureListener; import org.linphone.core.LinphoneCall; +import org.linphone.core.LinphoneCore; +import org.linphone.core.VideoSize; import org.linphone.mediastream.Log; import org.linphone.mediastream.video.AndroidVideoWindowImpl; import org.linphone.mediastream.video.capture.hwconf.AndroidCameraConfiguration; import android.app.Fragment; +import android.content.Context; import android.os.Bundle; +import android.util.DisplayMetrics; import android.view.GestureDetector; import android.view.GestureDetector.OnDoubleTapListener; import android.view.GestureDetector.OnGestureListener; @@ -82,6 +86,7 @@ public class CallVideoFragment extends Fragment implements OnGestureListener, On public void onVideoPreviewSurfaceReady(AndroidVideoWindowImpl vw, SurfaceView surface) { mCaptureView = surface; LinphoneManager.getLc().setPreviewWindow(mCaptureView); + resizePreview(); } public void onVideoPreviewSurfaceDestroyed(AndroidVideoWindowImpl vw) { @@ -139,6 +144,33 @@ public class CallVideoFragment extends Fragment implements OnGestureListener, On } } + private void resizePreview() { + LinphoneCore lc = LinphoneManager.getLc(); + if (lc.getCallsNb() > 0) { + LinphoneCall call = lc.getCurrentCall(); + if (call == null) { + call = lc.getCalls()[0]; + } + if (call == null) return; + + DisplayMetrics metrics = new DisplayMetrics(); + getActivity().getWindowManager().getDefaultDisplay().getMetrics(metrics); + int screenHeight = metrics.heightPixels; + int maxHeight = screenHeight / 4; // Let's take at most 1/4 of the screen for the camera preview + + VideoSize videoSize = call.getCurrentParams().getSentVideoSize(); // It already takes care of rotation + int width = videoSize.width; + int height = videoSize.height; + + Log.d("Video height is " + height + ", width is " + width); + width = width * maxHeight / height; + height = maxHeight; + + mCaptureView.getHolder().setFixedSize(width, height); + Log.d("Video preview size set to " + width + "x" + height); + } + } + private void fixZOrder(SurfaceView video, SurfaceView preview) { video.setZOrderOnTop(false); preview.setZOrderOnTop(true); @@ -177,6 +209,8 @@ public class CallVideoFragment extends Fragment implements OnGestureListener, On mGestureDetector = new GestureDetector(inCallActivity, this); mScaleDetector = Compatibility.getScaleGestureDetector(inCallActivity, this); + + resizePreview(); } @Override