Index: webrtc/examples/androidapp/src/org/appspot/apprtc/PeerConnectionClient.java |
diff --git a/webrtc/examples/androidapp/src/org/appspot/apprtc/PeerConnectionClient.java b/webrtc/examples/androidapp/src/org/appspot/apprtc/PeerConnectionClient.java |
index 238d123dea4f3d3249e0fab8b8139e83ca95e6e9..05ed71eb6ab1edd1d389fd68e8150bd4e19e1bd7 100644 |
--- a/webrtc/examples/androidapp/src/org/appspot/apprtc/PeerConnectionClient.java |
+++ b/webrtc/examples/androidapp/src/org/appspot/apprtc/PeerConnectionClient.java |
@@ -40,6 +40,9 @@ import org.webrtc.StatsObserver; |
import org.webrtc.StatsReport; |
import org.webrtc.VideoCapturer; |
import org.webrtc.VideoRenderer; |
+import org.webrtc.VideoCapturerAndroid; |
+import org.webrtc.CameraVideoCapturer; |
+import org.webrtc.FileVideoCapturer; |
import org.webrtc.VideoSource; |
import org.webrtc.VideoTrack; |
import org.webrtc.voiceengine.WebRtcAudioManager; |
@@ -163,6 +166,9 @@ public class PeerConnectionClient { |
public final boolean disableBuiltInAGC; |
public final boolean disableBuiltInNS; |
public final boolean enableLevelControl; |
+ public final String videoFileAsCamera; |
+ public final int videoFileAsCameraWidth; |
+ public final int videoFileAsCameraHeight; |
public PeerConnectionParameters( |
boolean videoCallEnabled, boolean loopback, boolean tracing, boolean useCamera2, |
@@ -171,7 +177,9 @@ public class PeerConnectionClient { |
boolean captureToTexture, int audioStartBitrate, String audioCodec, |
boolean noAudioProcessing, boolean aecDump, boolean useOpenSLES, |
boolean disableBuiltInAEC, boolean disableBuiltInAGC, boolean disableBuiltInNS, |
- boolean enableLevelControl) { |
+ boolean enableLevelControl, |
+ String videoFileAsCamera, int videoFileAsCameraWidth, int videoFileAsCameraHeight) { |
+ |
this.videoCallEnabled = videoCallEnabled; |
this.useCamera2 = useCamera2; |
this.loopback = loopback; |
@@ -192,6 +200,9 @@ public class PeerConnectionClient { |
this.disableBuiltInAGC = disableBuiltInAGC; |
this.disableBuiltInNS = disableBuiltInNS; |
this.enableLevelControl = enableLevelControl; |
+ this.videoFileAsCamera = videoFileAsCamera; |
+ this.videoFileAsCameraWidth = videoFileAsCameraWidth; |
+ this.videoFileAsCameraHeight = videoFileAsCameraHeight; |
} |
} |
@@ -557,11 +568,26 @@ public class PeerConnectionClient { |
Logging.d(TAG, "Creating capturer using camera1 API."); |
createCapturer(new Camera1Enumerator(peerConnectionParameters.captureToTexture)); |
} |
- |
if (videoCapturer == null) { |
reportError("Failed to open camera"); |
return; |
} |
+ if (peerConnectionParameters.videoFileAsCamera != null) { |
+ CameraVideoCapturer fileVideoCapturer = FileVideoCapturer.create( |
+ new File(peerConnectionParameters.videoFileAsCamera), |
+ peerConnectionParameters.videoFileAsCameraWidth, |
+ peerConnectionParameters.videoFileAsCameraHeight, |
+ videoCapturer); |
+ |
+ if (fileVideoCapturer == null) { |
+ Log.d(TAG, "Failed to open video file for emulated camera"); |
+ reportError("Failed to open video file for emulated camera"); |
+ return; |
+ } |
+ else { |
+ videoCapturer = fileVideoCapturer; |
+ } |
+ } |
mediaStream.addTrack(createVideoTrack(videoCapturer)); |
} |