From fc8c18e0548da8684555c99851fecae69bdd489b Mon Sep 17 00:00:00 2001 From: pabloFuente Date: Fri, 20 Apr 2018 15:50:19 +0200 Subject: [PATCH] openvidu-java-client: custom recording layout --- .../io/openvidu/java/client/OpenVidu.java | 2 ++ .../openvidu/java/client/RecordingLayout.java | 3 +- .../java/client/RecordingProperties.java | 28 +++++++++++++------ .../java/io/openvidu/java/client/Session.java | 5 ++-- .../java/client/SessionProperties.java | 19 +++++++++++-- 5 files changed, 44 insertions(+), 13 deletions(-) diff --git a/openvidu-java-client/src/main/java/io/openvidu/java/client/OpenVidu.java b/openvidu-java-client/src/main/java/io/openvidu/java/client/OpenVidu.java index f1175364..febcc86e 100644 --- a/openvidu-java-client/src/main/java/io/openvidu/java/client/OpenVidu.java +++ b/openvidu-java-client/src/main/java/io/openvidu/java/client/OpenVidu.java @@ -98,6 +98,8 @@ public class OpenVidu { json.put("name", properties.name()); json.put("recordingLayout", (properties.recordingLayout() != null) ? properties.recordingLayout().name() : ""); + json.put("customLayout", + (properties.customLayout() != null) ? properties.customLayout() : ""); StringEntity params = new StringEntity(json.toString()); request.setHeader(HttpHeaders.CONTENT_TYPE, "application/json"); diff --git a/openvidu-java-client/src/main/java/io/openvidu/java/client/RecordingLayout.java b/openvidu-java-client/src/main/java/io/openvidu/java/client/RecordingLayout.java index d66402f2..65b91351 100644 --- a/openvidu-java-client/src/main/java/io/openvidu/java/client/RecordingLayout.java +++ b/openvidu-java-client/src/main/java/io/openvidu/java/client/RecordingLayout.java @@ -4,5 +4,6 @@ public enum RecordingLayout { BEST_FIT, // All the videos are evenly distributed, taking up as much space as possible PICTURE_IN_PICTURE, VERTICAL_PRESENTATION, - HORIZONTAL_PRESENTATION + HORIZONTAL_PRESENTATION, + CUSTOM } diff --git a/openvidu-java-client/src/main/java/io/openvidu/java/client/RecordingProperties.java b/openvidu-java-client/src/main/java/io/openvidu/java/client/RecordingProperties.java index f36c0904..c49a9657 100644 --- a/openvidu-java-client/src/main/java/io/openvidu/java/client/RecordingProperties.java +++ b/openvidu-java-client/src/main/java/io/openvidu/java/client/RecordingProperties.java @@ -1,42 +1,54 @@ package io.openvidu.java.client; public class RecordingProperties { - + private String name; private RecordingLayout recordingLayout; - + private String customLayout; + public static class Builder { private String name = ""; private RecordingLayout recordingLayout; + private String customLayout; public RecordingProperties build() { - return new RecordingProperties(this.name, this.recordingLayout); + return new RecordingProperties(this.name, this.recordingLayout, this.customLayout); } public RecordingProperties.Builder name(String name) { this.name = name; return this; } - + public RecordingProperties.Builder recordingLayout(RecordingLayout layout) { this.recordingLayout = layout; return this; } + public RecordingProperties.Builder customLayout(String path) { + this.customLayout = path; + return this; + } + } - - protected RecordingProperties(String name, RecordingLayout layout) { + + protected RecordingProperties(String name, RecordingLayout layout, String customLayout) { this.name = name; this.recordingLayout = layout; + this.customLayout = customLayout; } - + public String name() { return this.name; } - + public RecordingLayout recordingLayout() { return this.recordingLayout; } + public String customLayout() { + return this.customLayout; + } + } diff --git a/openvidu-java-client/src/main/java/io/openvidu/java/client/Session.java b/openvidu-java-client/src/main/java/io/openvidu/java/client/Session.java index 65a4d000..cf23ec96 100644 --- a/openvidu-java-client/src/main/java/io/openvidu/java/client/Session.java +++ b/openvidu-java-client/src/main/java/io/openvidu/java/client/Session.java @@ -44,9 +44,10 @@ public class Session { HttpPost request = new HttpPost(this.urlOpenViduServer + API_SESSIONS); JSONObject json = new JSONObject(); - json.put("defaultRecordingLayout", properties.defaultRecordingLayout().name()); - json.put("recordingMode", properties.recordingMode().name()); json.put("mediaMode", properties.mediaMode().name()); + json.put("recordingMode", properties.recordingMode().name()); + json.put("defaultRecordingLayout", properties.defaultRecordingLayout().name()); + json.put("defaultCustomLayout", properties.defaultCustomLayout()); StringEntity params = new StringEntity(json.toString()); request.setHeader(HttpHeaders.CONTENT_TYPE, "application/json"); diff --git a/openvidu-java-client/src/main/java/io/openvidu/java/client/SessionProperties.java b/openvidu-java-client/src/main/java/io/openvidu/java/client/SessionProperties.java index e5c54251..9c9e089f 100644 --- a/openvidu-java-client/src/main/java/io/openvidu/java/client/SessionProperties.java +++ b/openvidu-java-client/src/main/java/io/openvidu/java/client/SessionProperties.java @@ -5,15 +5,18 @@ public class SessionProperties { private MediaMode mediaMode; private RecordingMode recordingMode; private RecordingLayout defaultRecordingLayout; + private String defaultCustomLayout; public static class Builder { private MediaMode mediaMode = MediaMode.ROUTED; private RecordingMode recordingMode = RecordingMode.MANUAL; private RecordingLayout defaultRecordingLayout = RecordingLayout.BEST_FIT; + private String defaultCustomLayout = ""; public SessionProperties build() { - return new SessionProperties(this.mediaMode, this.recordingMode, this.defaultRecordingLayout); + return new SessionProperties(this.mediaMode, this.recordingMode, this.defaultRecordingLayout, + this.defaultCustomLayout); } public SessionProperties.Builder mediaMode(MediaMode mediaMode) { @@ -31,18 +34,26 @@ public class SessionProperties { return this; } + public SessionProperties.Builder defaultCustomLayout(String path) { + this.defaultCustomLayout = path; + return this; + } + } protected SessionProperties() { this.mediaMode = MediaMode.ROUTED; this.recordingMode = RecordingMode.MANUAL; this.defaultRecordingLayout = RecordingLayout.BEST_FIT; + this.defaultCustomLayout = ""; } - private SessionProperties(MediaMode mediaMode, RecordingMode recordingMode, RecordingLayout layout) { + private SessionProperties(MediaMode mediaMode, RecordingMode recordingMode, RecordingLayout layout, + String defaultCustomLayout) { this.mediaMode = mediaMode; this.recordingMode = recordingMode; this.defaultRecordingLayout = layout; + this.defaultCustomLayout = defaultCustomLayout; } public RecordingMode recordingMode() { @@ -57,4 +68,8 @@ public class SessionProperties { return this.defaultRecordingLayout; } + public String defaultCustomLayout() { + return this.defaultCustomLayout; + } + } \ No newline at end of file