From c61e5444d44413f019aa10c5acf0d8cacbd08f9e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Siret?= <loic.siret@savoirfairelinux.com> Date: Thu, 17 Aug 2017 12:07:55 -0400 Subject: [PATCH] androidTV: Preview size Prior this patch the preview size was good only for the camid == 1. This fixes the size of the preview on device and TV by removing check on the cam id and applying the good preview size on each Video event. Change-Id: Icb6eba0baefc6faf6dba8e78c3b26ba2ad8cc958 --- .../cx/ring/services/HardwareServiceImpl.java | 36 +++++++------------ .../main/java/cx/ring/call/CallPresenter.java | 8 ++--- .../main/java/cx/ring/model/ServiceEvent.java | 1 - 3 files changed, 16 insertions(+), 29 deletions(-) diff --git a/ring-android/app/src/main/java/cx/ring/services/HardwareServiceImpl.java b/ring-android/app/src/main/java/cx/ring/services/HardwareServiceImpl.java index f894e00f0..4f9f733dc 100644 --- a/ring-android/app/src/main/java/cx/ring/services/HardwareServiceImpl.java +++ b/ring-android/app/src/main/java/cx/ring/services/HardwareServiceImpl.java @@ -47,21 +47,17 @@ import cx.ring.utils.Log; public class HardwareServiceImpl extends HardwareService { public static final String TAG = HardwareServiceImpl.class.getName(); - + private static WeakReference<SurfaceHolder> mCameraPreviewSurface = new WeakReference<>(null); + private static Map<String, WeakReference<SurfaceHolder>> videoSurfaces = Collections.synchronizedMap(new HashMap<String, WeakReference<SurfaceHolder>>()); + private final Map<String, Shm> videoInputs = new HashMap<>(); + private final HashMap<String, VideoParams> mParams = new HashMap<>(); + private final LongSparseArray<DeviceParams> mNativeParams = new LongSparseArray<>(); private Context mContext; - private int cameraFront = 0; private int cameraBack = 0; - private int currentCamera = -1; - - private final Map<String, Shm> videoInputs = new HashMap<>(); - private static WeakReference<SurfaceHolder> mCameraPreviewSurface = new WeakReference<>(null); - private static Map<String, WeakReference<SurfaceHolder>> videoSurfaces = Collections.synchronizedMap(new HashMap<String, WeakReference<SurfaceHolder>>()); private VideoParams previewParams = null; private Camera previewCamera = null; - private final HashMap<String, VideoParams> mParams = new HashMap<>(); - private final LongSparseArray<DeviceParams> mNativeParams = new LongSparseArray<>(); public HardwareServiceImpl(Context mContext) { this.mContext = mContext; @@ -203,7 +199,7 @@ public class HardwareServiceImpl extends HardwareService { rates.add(rate); } p.rate = rates.get(0); - Log.d(TAG, "getCameraInfo: using resolution " + p.size.x + "x" + p.size.y + " " + p.rate/1000 + " FPS"); + Log.d(TAG, "getCameraInfo: using resolution " + p.size.x + "x" + p.size.y + " " + p.rate / 1000 + " FPS"); p.infos = new Camera.CameraInfo(); Camera.getCameraInfo(id, p.infos); @@ -339,7 +335,6 @@ public class HardwareServiceImpl extends HardwareService { previewParams = videoParams; ServiceEvent event = new ServiceEvent(ServiceEvent.EventType.VIDEO_EVENT); - event.addEventInput(ServiceEvent.EventInput.VIDEO_CAMERA, videoParams.id == 1); event.addEventInput(ServiceEvent.EventInput.VIDEO_STARTED, true); event.addEventInput(ServiceEvent.EventInput.VIDEO_WIDTH, videoParams.rotWidth); event.addEventInput(ServiceEvent.EventInput.VIDEO_HEIGHT, videoParams.rotHeight); @@ -364,7 +359,6 @@ public class HardwareServiceImpl extends HardwareService { } ServiceEvent event = new ServiceEvent(ServiceEvent.EventType.VIDEO_EVENT); - event.addEventInput(ServiceEvent.EventInput.VIDEO_CAMERA, params.id == 1); event.addEventInput(ServiceEvent.EventInput.VIDEO_STARTED, false); event.addEventInput(ServiceEvent.EventInput.VIDEO_WIDTH, params.width); event.addEventInput(ServiceEvent.EventInput.VIDEO_HEIGHT, params.height); @@ -534,27 +528,23 @@ public class HardwareServiceImpl extends HardwareService { } private static class VideoParams { - public VideoParams(int id, int format, int width, int height, int rate) { - this.id = id; - this.format = format; - this.width = width; - this.height = height; - this.rate = rate; - } - public int id; public int format; - // size as captured by Android public int width; public int height; - //size, rotated, as seen by the daemon public int rotWidth; public int rotHeight; - public int rate; public int rotation; + public VideoParams(int id, int format, int width, int height, int rate) { + this.id = id; + this.format = format; + this.width = width; + this.height = height; + this.rate = rate; + } } private static class DeviceParams { diff --git a/ring-android/libringclient/src/main/java/cx/ring/call/CallPresenter.java b/ring-android/libringclient/src/main/java/cx/ring/call/CallPresenter.java index 8b47ca8f2..6fa04322b 100644 --- a/ring-android/libringclient/src/main/java/cx/ring/call/CallPresenter.java +++ b/ring-android/libringclient/src/main/java/cx/ring/call/CallPresenter.java @@ -345,16 +345,14 @@ public class CallPresenter extends RootPresenter<CallView> implements Observer<S switch (event.getEventType()) { case VIDEO_EVENT: boolean videoStart = event.getEventInput(ServiceEvent.EventInput.VIDEO_START, Boolean.class, false); - boolean camera = event.getEventInput(ServiceEvent.EventInput.VIDEO_CAMERA, Boolean.class, false); String callId = event.getEventInput(ServiceEvent.EventInput.VIDEO_CALL, String.class); - Log.d(TAG, "VIDEO_EVENT: " + videoStart + " " + camera + " " + callId); + Log.d(TAG, "VIDEO_EVENT: " + videoStart + " " + callId); + previewWidth = event.getEventInput(ServiceEvent.EventInput.VIDEO_WIDTH, Integer.class, 0); + previewHeight = event.getEventInput(ServiceEvent.EventInput.VIDEO_HEIGHT, Integer.class, 0); if (videoStart) { getView().displayVideoSurface(true); - } else if (camera) { - previewWidth = event.getEventInput(ServiceEvent.EventInput.VIDEO_WIDTH, Integer.class, 0); - previewHeight = event.getEventInput(ServiceEvent.EventInput.VIDEO_HEIGHT, Integer.class, 0); } else if (mSipCall != null && callId != null && mSipCall.getCallId().equals(callId)) { boolean videoStarted = event.getEventInput(ServiceEvent.EventInput.VIDEO_STARTED, Boolean.class, false); getView().displayVideoSurface(videoStarted); diff --git a/ring-android/libringclient/src/main/java/cx/ring/model/ServiceEvent.java b/ring-android/libringclient/src/main/java/cx/ring/model/ServiceEvent.java index 0dc923de8..598b57fb1 100644 --- a/ring-android/libringclient/src/main/java/cx/ring/model/ServiceEvent.java +++ b/ring-android/libringclient/src/main/java/cx/ring/model/ServiceEvent.java @@ -110,7 +110,6 @@ public class ServiceEvent { BUDDY_URI, LINE_STATE, VIDEO_START, - VIDEO_CAMERA, VIDEO_STARTED, VIDEO_WIDTH, VIDEO_HEIGHT, -- GitLab