mirror of
https://github.com/nextcloud/talk-android
synced 2025-07-14 08:15:04 +01:00
Magic
Signed-off-by: Mario Danic <mario@lovelyhq.com>
This commit is contained in:
parent
9f8d60fce8
commit
17aa050669
@ -113,6 +113,10 @@ public class CallActivity extends AppCompatActivity {
|
|||||||
@BindView(R.id.pip_video_view)
|
@BindView(R.id.pip_video_view)
|
||||||
SurfaceViewRenderer pipVideoView;
|
SurfaceViewRenderer pipVideoView;
|
||||||
|
|
||||||
|
@BindView(R.id.full_screen_surface_view)
|
||||||
|
SurfaceViewRenderer fullScreenVideoView;
|
||||||
|
|
||||||
|
|
||||||
@BindView(R.id.remote_renderers_layout)
|
@BindView(R.id.remote_renderers_layout)
|
||||||
LinearLayout remoteRenderersLayout;
|
LinearLayout remoteRenderersLayout;
|
||||||
|
|
||||||
@ -233,6 +237,13 @@ public class CallActivity extends AppCompatActivity {
|
|||||||
pipVideoView.setZOrderMediaOverlay(true);
|
pipVideoView.setZOrderMediaOverlay(true);
|
||||||
pipVideoView.setEnableHardwareScaler(true);
|
pipVideoView.setEnableHardwareScaler(true);
|
||||||
pipVideoView.setScalingType(RendererCommon.ScalingType.SCALE_ASPECT_FIT);
|
pipVideoView.setScalingType(RendererCommon.ScalingType.SCALE_ASPECT_FIT);
|
||||||
|
|
||||||
|
fullScreenVideoView.setMirror(true);
|
||||||
|
fullScreenVideoView.init(rootEglBase.getEglBaseContext(), null);
|
||||||
|
fullScreenVideoView.setZOrderMediaOverlay(true);
|
||||||
|
fullScreenVideoView.setEnableHardwareScaler(true);
|
||||||
|
fullScreenVideoView.setScalingType(RendererCommon.ScalingType.SCALE_ASPECT_FILL);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void start() {
|
public void start() {
|
||||||
@ -283,7 +294,7 @@ public class CallActivity extends AppCompatActivity {
|
|||||||
videoCapturerAndroid.startCapture(px, px, 30);
|
videoCapturerAndroid.startCapture(px, px, 30);
|
||||||
|
|
||||||
//create a videoRenderer based on SurfaceViewRenderer instance
|
//create a videoRenderer based on SurfaceViewRenderer instance
|
||||||
localRenderer = new VideoRenderer(pipVideoView);
|
localRenderer = new VideoRenderer(fullScreenVideoView);
|
||||||
// And finally, with our VideoRenderer ready, we
|
// And finally, with our VideoRenderer ready, we
|
||||||
// can add our renderer to the VideoTrack.
|
// can add our renderer to the VideoTrack.
|
||||||
localVideoTrack.addRenderer(localRenderer);
|
localVideoTrack.addRenderer(localRenderer);
|
||||||
@ -684,16 +695,22 @@ public class CallActivity extends AppCompatActivity {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void gotRemoteStream(MediaStream stream, String session) {
|
private void gotRemoteStream(MediaStream stream, String session) {
|
||||||
//we have remote video stream. add to the renderer.
|
if (fullScreenVideoView.getVisibility() != View.GONE) {
|
||||||
removeMediaStream(session);
|
fullScreenVideoView.setVisibility(View.GONE);
|
||||||
if (stream.videoTracks.size() < 2 && stream.audioTracks.size() < 2) {
|
remoteRenderersLayout.setVisibility(View.VISIBLE);
|
||||||
if (stream.videoTracks.size() == 1) {
|
pipVideoView.setVisibility(View.VISIBLE);
|
||||||
|
localRenderer = new VideoRenderer(pipVideoView);
|
||||||
|
localVideoTrack.removeRenderer(localRenderer);
|
||||||
|
localRenderer = new VideoRenderer(pipVideoView);
|
||||||
|
localVideoTrack.addRenderer(localRenderer);
|
||||||
|
fullScreenVideoView.setVisibility(View.GONE);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
removeMediaStream(session);
|
||||||
|
|
||||||
VideoTrack videoTrack = stream.videoTracks.get(0);
|
|
||||||
runOnUiThread(new Runnable() {
|
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
if (stream.videoTracks.size() == 1) {
|
if (stream.videoTracks.size() == 1) {
|
||||||
|
VideoTrack videoTrack = stream.videoTracks.get(0);
|
||||||
try {
|
try {
|
||||||
RelativeLayout relativeLayout = (RelativeLayout)
|
RelativeLayout relativeLayout = (RelativeLayout)
|
||||||
getLayoutInflater().inflate(R.layout.surface_renderer, remoteRenderersLayout,
|
getLayoutInflater().inflate(R.layout.surface_renderer, remoteRenderersLayout,
|
||||||
@ -712,20 +729,10 @@ public class CallActivity extends AppCompatActivity {
|
|||||||
relativeLayout.invalidate();
|
relativeLayout.invalidate();
|
||||||
gotNick(session, getPeerConnectionWrapperForSessionId(session).getNick());
|
gotNick(session, getPeerConnectionWrapperForSessionId(session).getNick());
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
e.printStackTrace();
|
Log.d(TAG, "Failed to create a new video view");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
if (stream.audioTracks.size() == 1) {
|
|
||||||
AudioTrack audioTrack = stream.audioTracks.get(0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onDestroy() {
|
public void onDestroy() {
|
||||||
@ -787,7 +794,7 @@ public class CallActivity extends AppCompatActivity {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Subscribe(threadMode = ThreadMode.BACKGROUND)
|
@Subscribe(threadMode = ThreadMode.MAIN)
|
||||||
public void onMessageEvent(MediaStreamEvent mediaStreamEvent) {
|
public void onMessageEvent(MediaStreamEvent mediaStreamEvent) {
|
||||||
if (mediaStreamEvent.getMediaStream() != null) {
|
if (mediaStreamEvent.getMediaStream() != null) {
|
||||||
gotRemoteStream(mediaStreamEvent.getMediaStream(), mediaStreamEvent.getSession());
|
gotRemoteStream(mediaStreamEvent.getMediaStream(), mediaStreamEvent.getSession());
|
||||||
|
@ -27,12 +27,18 @@
|
|||||||
android:fitsSystemWindows="true"
|
android:fitsSystemWindows="true"
|
||||||
tools:context=".activities.CallActivity">
|
tools:context=".activities.CallActivity">
|
||||||
|
|
||||||
|
<org.webrtc.SurfaceViewRenderer
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
android:id="@+id/full_screen_surface_view"/>
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:id="@+id/remote_renderers_layout"
|
android:id="@+id/remote_renderers_layout"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:animateLayoutChanges="true"
|
android:animateLayoutChanges="true"
|
||||||
android:orientation="vertical">
|
android:orientation="vertical"
|
||||||
|
android:visibility="invisible">
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
<org.webrtc.SurfaceViewRenderer
|
<org.webrtc.SurfaceViewRenderer
|
||||||
@ -41,6 +47,7 @@
|
|||||||
android:layout_height="120dp"
|
android:layout_height="120dp"
|
||||||
android:layout_alignParentBottom="true"
|
android:layout_alignParentBottom="true"
|
||||||
android:layout_alignParentEnd="true"
|
android:layout_alignParentEnd="true"
|
||||||
android:layout_margin="16dp"/>
|
android:layout_margin="16dp"
|
||||||
|
android:visibility="invisible"/>
|
||||||
|
|
||||||
</RelativeLayout>
|
</RelativeLayout>
|
Loading…
Reference in New Issue
Block a user