mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-02-09 08:48:07 +00:00
Bug 1109248: Merge with webrtc.org update (android compile/merge fixes) r=jesup
ON A CLOSED TREE
This commit is contained in:
parent
f82b381b47
commit
adfc170313
@ -11,6 +11,7 @@
|
||||
package org.webrtc.videoengine;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.concurrent.Exchanger;
|
||||
|
||||
@ -367,7 +368,7 @@ public class VideoCaptureAndroid implements PreviewCallback, Callback, AppStateL
|
||||
// We already got onPause, but now the native code wants us to stop.
|
||||
// Do not resume capturing when resuming the app.
|
||||
mResumeCapture = false;
|
||||
return true;
|
||||
return;
|
||||
}
|
||||
throw new RuntimeException("Camera is already stopped!");
|
||||
}
|
||||
@ -476,7 +477,7 @@ public class VideoCaptureAndroid implements PreviewCallback, Callback, AppStateL
|
||||
rotation = (info.orientation + rotation) % 360;
|
||||
|
||||
if (data != null) {
|
||||
ProvideCameraFrame(data, data.length, native_capturer, mCaptureRotation);
|
||||
ProvideCameraFrame(data, data.length, mCaptureRotation, lastCaptureTimeMs, native_capturer);
|
||||
camera.addCallbackBuffer(data);
|
||||
}
|
||||
}
|
||||
|
@ -10,6 +10,7 @@
|
||||
|
||||
package org.webrtc.videoengine;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import android.hardware.Camera.CameraInfo;
|
||||
@ -83,11 +84,11 @@ public class VideoCaptureDeviceInfoAndroid {
|
||||
supportedFpsRanges.add(range);
|
||||
}
|
||||
} else {
|
||||
Log.e(TAG, "Camera doesn't know its own framerate, guessing 25fps.");
|
||||
Log.e(TAG, "Camera doesn't know its own framerate, guessing 30fps.");
|
||||
int[] range = new int[2];
|
||||
// Your guess is as good as mine
|
||||
range[0] = 25 * 1000;
|
||||
range[1] = 25 * 1000;
|
||||
range[0] = 30 * 1000;
|
||||
range[1] = 30 * 1000;
|
||||
supportedFpsRanges.add(range);
|
||||
}
|
||||
}
|
||||
@ -99,6 +100,29 @@ public class VideoCaptureDeviceInfoAndroid {
|
||||
continue;
|
||||
}
|
||||
|
||||
boolean is30fpsRange = false;
|
||||
boolean is15fpsRange = false;
|
||||
// If there is constant 30 fps mode, but no 15 fps - add 15 fps
|
||||
// mode to the list of supported ranges. Frame drop will be done
|
||||
// in software.
|
||||
for (int[] range : supportedFpsRanges) {
|
||||
if (range[0] == 30000 &&
|
||||
range[1] == 30000) {
|
||||
is30fpsRange = true;
|
||||
}
|
||||
if (range[0] == 15000 &&
|
||||
range[1] == 15000) {
|
||||
is15fpsRange = true;
|
||||
}
|
||||
}
|
||||
if (is30fpsRange && !is15fpsRange) {
|
||||
Log.d(TAG, "Adding 15 fps support");
|
||||
int[] range = new int[2];
|
||||
range[0] = 15 * 1000;
|
||||
range[1] = 15 * 1000;
|
||||
supportedFpsRanges.add(range);
|
||||
}
|
||||
|
||||
CaptureCapabilityAndroid device = new CaptureCapabilityAndroid();
|
||||
|
||||
int sizeLen = supportedSizes.size();
|
||||
@ -132,95 +156,5 @@ public class VideoCaptureDeviceInfoAndroid {
|
||||
}
|
||||
return allDevices.toArray(new CaptureCapabilityAndroid[0]);
|
||||
}
|
||||
/*
|
||||
private static String getDeviceInfo() {
|
||||
try {
|
||||
JSONArray devices = new JSONArray();
|
||||
for (int i = 0; i < Camera.getNumberOfCameras(); ++i) {
|
||||
CameraInfo info = new CameraInfo();
|
||||
Camera.getCameraInfo(i, info);
|
||||
String uniqueName = deviceUniqueName(i, info);
|
||||
JSONObject cameraDict = new JSONObject();
|
||||
devices.put(cameraDict);
|
||||
List<Size> supportedSizes;
|
||||
List<int[]> supportedFpsRanges;
|
||||
Camera camera = null;
|
||||
try {
|
||||
camera = Camera.open(i);
|
||||
Parameters parameters = camera.getParameters();
|
||||
supportedSizes = parameters.getSupportedPreviewSizes();
|
||||
supportedFpsRanges = parameters.getSupportedPreviewFpsRange();
|
||||
Log.d(TAG, uniqueName);
|
||||
} catch (RuntimeException e) {
|
||||
Log.e(TAG, "Failed to open " + uniqueName + ", skipping", e);
|
||||
continue;
|
||||
} finally {
|
||||
if (camera != null) {
|
||||
camera.release();
|
||||
}
|
||||
}
|
||||
|
||||
JSONArray sizes = new JSONArray();
|
||||
for (Size supportedSize : supportedSizes) {
|
||||
JSONObject size = new JSONObject();
|
||||
size.put("width", supportedSize.width);
|
||||
size.put("height", supportedSize.height);
|
||||
sizes.put(size);
|
||||
}
|
||||
|
||||
boolean is30fpsRange = false;
|
||||
boolean is15fpsRange = false;
|
||||
// If there is constant 30 fps mode, but no 15 fps - add 15 fps
|
||||
// mode to the list of supported ranges. Frame drop will be done
|
||||
// in software.
|
||||
for (int[] range : supportedFpsRanges) {
|
||||
if (range[Parameters.PREVIEW_FPS_MIN_INDEX] == 30000 &&
|
||||
range[Parameters.PREVIEW_FPS_MAX_INDEX] == 30000) {
|
||||
is30fpsRange = true;
|
||||
}
|
||||
if (range[Parameters.PREVIEW_FPS_MIN_INDEX] == 15000 &&
|
||||
range[Parameters.PREVIEW_FPS_MAX_INDEX] == 15000) {
|
||||
is15fpsRange = true;
|
||||
}
|
||||
}
|
||||
if (is30fpsRange && !is15fpsRange) {
|
||||
Log.d(TAG, "Adding 15 fps support");
|
||||
int[] newRange = new int [Parameters.PREVIEW_FPS_MAX_INDEX + 1];
|
||||
newRange[Parameters.PREVIEW_FPS_MIN_INDEX] = 15000;
|
||||
newRange[Parameters.PREVIEW_FPS_MAX_INDEX] = 15000;
|
||||
for (int j = 0; j < supportedFpsRanges.size(); j++ ) {
|
||||
int[] range = supportedFpsRanges.get(j);
|
||||
if (range[Parameters.PREVIEW_FPS_MAX_INDEX] >
|
||||
newRange[Parameters.PREVIEW_FPS_MAX_INDEX]) {
|
||||
supportedFpsRanges.add(j, newRange);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
JSONArray mfpsRanges = new JSONArray();
|
||||
for (int[] range : supportedFpsRanges) {
|
||||
JSONObject mfpsRange = new JSONObject();
|
||||
// Android SDK deals in integral "milliframes per second"
|
||||
// (i.e. fps*1000, instead of floating-point frames-per-second) so we
|
||||
// preserve that through the Java->C++->Java round-trip.
|
||||
mfpsRange.put("min_mfps", range[Parameters.PREVIEW_FPS_MIN_INDEX]);
|
||||
mfpsRange.put("max_mfps", range[Parameters.PREVIEW_FPS_MAX_INDEX]);
|
||||
mfpsRanges.put(mfpsRange);
|
||||
}
|
||||
|
||||
cameraDict.put("name", uniqueName);
|
||||
cameraDict.put("front_facing", isFrontFacing(info))
|
||||
.put("orientation", info.orientation)
|
||||
.put("sizes", sizes)
|
||||
.put("mfpsRanges", mfpsRanges);
|
||||
}
|
||||
String ret = devices.toString(2);
|
||||
Log.d(TAG, ret);
|
||||
return ret;
|
||||
} catch (JSONException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
*/
|
||||
}
|
||||
|
@ -24,6 +24,9 @@ import org.mozilla.gecko.util.ThreadUtils;
|
||||
public class ViERenderer {
|
||||
private final static String TAG = "WEBRTC-ViEREnderer";
|
||||
|
||||
// View used for local rendering that Cameras can use for Video Overlay.
|
||||
private static SurfaceHolder g_localRenderer;
|
||||
|
||||
public static SurfaceView CreateRenderer(Context context) {
|
||||
return CreateRenderer(context, false);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user