Revert of Android: Move CameraStatistics from API to src (patchset #1 id:1 of https://codereview.webrtc.org/2821373003/ )
Reason for revert:
Breaks external clients.
Original issue's description:
> Android: Move CameraStatistics from API to src
>
> BUG=webrtc:7172
>
> Review-Url: https://codereview.webrtc.org/2821373003
> Cr-Commit-Position: refs/heads/master@{#17765}
> Committed: 800daef50a
TBR=sakal@webrtc.org
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=webrtc:7172
Review-Url: https://codereview.webrtc.org/2825383002
Cr-Commit-Position: refs/heads/master@{#17767}
This commit is contained in:
parent
ed754e71ae
commit
d5c77abbaa
@ -183,7 +183,6 @@ android_library("libjingle_peerconnection_java") {
|
|||||||
"src/java/org/webrtc/Camera1Session.java",
|
"src/java/org/webrtc/Camera1Session.java",
|
||||||
"src/java/org/webrtc/Camera2Session.java",
|
"src/java/org/webrtc/Camera2Session.java",
|
||||||
"src/java/org/webrtc/CameraCapturer.java",
|
"src/java/org/webrtc/CameraCapturer.java",
|
||||||
"src/java/org/webrtc/CameraStatistics.java",
|
|
||||||
"src/java/org/webrtc/CameraSession.java",
|
"src/java/org/webrtc/CameraSession.java",
|
||||||
"src/java/org/webrtc/Histogram.java",
|
"src/java/org/webrtc/Histogram.java",
|
||||||
"src/java/org/webrtc/YuvConverter.java",
|
"src/java/org/webrtc/YuvConverter.java",
|
||||||
|
|||||||
@ -58,4 +58,73 @@ public interface CameraVideoCapturer extends VideoCapturer {
|
|||||||
* This function can be called from any thread.
|
* This function can be called from any thread.
|
||||||
*/
|
*/
|
||||||
void switchCamera(CameraSwitchHandler switchEventsHandler);
|
void switchCamera(CameraSwitchHandler switchEventsHandler);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Helper class to log framerate and detect if the camera freezes. It will run periodic callbacks
|
||||||
|
* on the SurfaceTextureHelper thread passed in the ctor, and should only be operated from that
|
||||||
|
* thread.
|
||||||
|
*/
|
||||||
|
public static class CameraStatistics {
|
||||||
|
private final static String TAG = "CameraStatistics";
|
||||||
|
private final static int CAMERA_OBSERVER_PERIOD_MS = 2000;
|
||||||
|
private final static int CAMERA_FREEZE_REPORT_TIMOUT_MS = 4000;
|
||||||
|
|
||||||
|
private final SurfaceTextureHelper surfaceTextureHelper;
|
||||||
|
private final CameraEventsHandler eventsHandler;
|
||||||
|
private int frameCount;
|
||||||
|
private int freezePeriodCount;
|
||||||
|
// Camera observer - monitors camera framerate. Observer is executed on camera thread.
|
||||||
|
private final Runnable cameraObserver = new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
final int cameraFps = Math.round(frameCount * 1000.0f / CAMERA_OBSERVER_PERIOD_MS);
|
||||||
|
Logging.d(TAG, "Camera fps: " + cameraFps + ".");
|
||||||
|
if (frameCount == 0) {
|
||||||
|
++freezePeriodCount;
|
||||||
|
if (CAMERA_OBSERVER_PERIOD_MS * freezePeriodCount >= CAMERA_FREEZE_REPORT_TIMOUT_MS
|
||||||
|
&& eventsHandler != null) {
|
||||||
|
Logging.e(TAG, "Camera freezed.");
|
||||||
|
if (surfaceTextureHelper.isTextureInUse()) {
|
||||||
|
// This can only happen if we are capturing to textures.
|
||||||
|
eventsHandler.onCameraFreezed("Camera failure. Client must return video buffers.");
|
||||||
|
} else {
|
||||||
|
eventsHandler.onCameraFreezed("Camera failure.");
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
freezePeriodCount = 0;
|
||||||
|
}
|
||||||
|
frameCount = 0;
|
||||||
|
surfaceTextureHelper.getHandler().postDelayed(this, CAMERA_OBSERVER_PERIOD_MS);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
public CameraStatistics(
|
||||||
|
SurfaceTextureHelper surfaceTextureHelper, CameraEventsHandler eventsHandler) {
|
||||||
|
if (surfaceTextureHelper == null) {
|
||||||
|
throw new IllegalArgumentException("SurfaceTextureHelper is null");
|
||||||
|
}
|
||||||
|
this.surfaceTextureHelper = surfaceTextureHelper;
|
||||||
|
this.eventsHandler = eventsHandler;
|
||||||
|
this.frameCount = 0;
|
||||||
|
this.freezePeriodCount = 0;
|
||||||
|
surfaceTextureHelper.getHandler().postDelayed(cameraObserver, CAMERA_OBSERVER_PERIOD_MS);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void checkThread() {
|
||||||
|
if (Thread.currentThread() != surfaceTextureHelper.getHandler().getLooper().getThread()) {
|
||||||
|
throw new IllegalStateException("Wrong thread");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void addFrame() {
|
||||||
|
checkThread();
|
||||||
|
++frameCount;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void release() {
|
||||||
|
surfaceTextureHelper.getHandler().removeCallbacks(cameraObserver);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,80 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2017 The WebRTC project authors. All Rights Reserved.
|
|
||||||
*
|
|
||||||
* Use of this source code is governed by a BSD-style license
|
|
||||||
* that can be found in the LICENSE file in the root of the source
|
|
||||||
* tree. An additional intellectual property rights grant can be found
|
|
||||||
* in the file PATENTS. All contributing project authors may
|
|
||||||
* be found in the AUTHORS file in the root of the source tree.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package org.webrtc;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Helper class to log framerate and detect if the camera freezes. It will run periodic callbacks
|
|
||||||
* on the SurfaceTextureHelper thread passed in the ctor, and should only be operated from that
|
|
||||||
* thread.
|
|
||||||
*/
|
|
||||||
class CameraStatistics {
|
|
||||||
private final static String TAG = "CameraStatistics";
|
|
||||||
private final static int CAMERA_OBSERVER_PERIOD_MS = 2000;
|
|
||||||
private final static int CAMERA_FREEZE_REPORT_TIMOUT_MS = 4000;
|
|
||||||
|
|
||||||
private final SurfaceTextureHelper surfaceTextureHelper;
|
|
||||||
private final CameraVideoCapturer.CameraEventsHandler eventsHandler;
|
|
||||||
private int frameCount;
|
|
||||||
private int freezePeriodCount;
|
|
||||||
// Camera observer - monitors camera framerate. Observer is executed on camera thread.
|
|
||||||
private final Runnable cameraObserver = new Runnable() {
|
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
final int cameraFps = Math.round(frameCount * 1000.0f / CAMERA_OBSERVER_PERIOD_MS);
|
|
||||||
Logging.d(TAG, "Camera fps: " + cameraFps + ".");
|
|
||||||
if (frameCount == 0) {
|
|
||||||
++freezePeriodCount;
|
|
||||||
if (CAMERA_OBSERVER_PERIOD_MS * freezePeriodCount >= CAMERA_FREEZE_REPORT_TIMOUT_MS
|
|
||||||
&& eventsHandler != null) {
|
|
||||||
Logging.e(TAG, "Camera freezed.");
|
|
||||||
if (surfaceTextureHelper.isTextureInUse()) {
|
|
||||||
// This can only happen if we are capturing to textures.
|
|
||||||
eventsHandler.onCameraFreezed("Camera failure. Client must return video buffers.");
|
|
||||||
} else {
|
|
||||||
eventsHandler.onCameraFreezed("Camera failure.");
|
|
||||||
}
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
freezePeriodCount = 0;
|
|
||||||
}
|
|
||||||
frameCount = 0;
|
|
||||||
surfaceTextureHelper.getHandler().postDelayed(this, CAMERA_OBSERVER_PERIOD_MS);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
public CameraStatistics(SurfaceTextureHelper surfaceTextureHelper,
|
|
||||||
CameraVideoCapturer.CameraEventsHandler eventsHandler) {
|
|
||||||
if (surfaceTextureHelper == null) {
|
|
||||||
throw new IllegalArgumentException("SurfaceTextureHelper is null");
|
|
||||||
}
|
|
||||||
this.surfaceTextureHelper = surfaceTextureHelper;
|
|
||||||
this.eventsHandler = eventsHandler;
|
|
||||||
this.frameCount = 0;
|
|
||||||
this.freezePeriodCount = 0;
|
|
||||||
surfaceTextureHelper.getHandler().postDelayed(cameraObserver, CAMERA_OBSERVER_PERIOD_MS);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void checkThread() {
|
|
||||||
if (Thread.currentThread() != surfaceTextureHelper.getHandler().getLooper().getThread()) {
|
|
||||||
throw new IllegalStateException("Wrong thread");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void addFrame() {
|
|
||||||
checkThread();
|
|
||||||
++frameCount;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void release() {
|
|
||||||
surfaceTextureHelper.getHandler().removeCallbacks(cameraObserver);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Loading…
x
Reference in New Issue
Block a user