Android SurfaceTextureHelper: Distinguish thread names for decoder and camera
Review URL: https://codereview.webrtc.org/1843973002 Cr-Commit-Position: refs/heads/master@{#12176}
This commit is contained in:
@ -250,8 +250,8 @@ public final class GlRectDrawerTest extends ActivityTestCase {
|
||||
eglBase.createPbufferSurface(WIDTH, HEIGHT);
|
||||
|
||||
// Create resources for generating OES textures.
|
||||
final SurfaceTextureHelper surfaceTextureHelper =
|
||||
SurfaceTextureHelper.create(eglBase.getEglBaseContext());
|
||||
final SurfaceTextureHelper surfaceTextureHelper = SurfaceTextureHelper.create(
|
||||
"SurfaceTextureHelper test" /* threadName */, eglBase.getEglBaseContext());
|
||||
final StubOesTextureProducer oesProducer = new StubOesTextureProducer(
|
||||
eglBase.getEglBaseContext(), surfaceTextureHelper.getSurfaceTexture(), WIDTH, HEIGHT);
|
||||
final SurfaceTextureHelperTest.MockTextureListener listener =
|
||||
|
||||
@ -102,8 +102,8 @@ public final class SurfaceTextureHelperTest extends ActivityTestCase {
|
||||
final GlRectDrawer drawer = new GlRectDrawer();
|
||||
|
||||
// Create SurfaceTextureHelper and listener.
|
||||
final SurfaceTextureHelper surfaceTextureHelper =
|
||||
SurfaceTextureHelper.create(eglBase.getEglBaseContext());
|
||||
final SurfaceTextureHelper surfaceTextureHelper = SurfaceTextureHelper.create(
|
||||
"SurfaceTextureHelper test" /* threadName */, eglBase.getEglBaseContext());
|
||||
final MockTextureListener listener = new MockTextureListener();
|
||||
surfaceTextureHelper.startListening(listener);
|
||||
surfaceTextureHelper.getSurfaceTexture().setDefaultBufferSize(width, height);
|
||||
@ -169,8 +169,8 @@ public final class SurfaceTextureHelperTest extends ActivityTestCase {
|
||||
eglBase.createPbufferSurface(width, height);
|
||||
|
||||
// Create SurfaceTextureHelper and listener.
|
||||
final SurfaceTextureHelper surfaceTextureHelper =
|
||||
SurfaceTextureHelper.create(eglBase.getEglBaseContext());
|
||||
final SurfaceTextureHelper surfaceTextureHelper = SurfaceTextureHelper.create(
|
||||
"SurfaceTextureHelper test" /* threadName */, eglBase.getEglBaseContext());
|
||||
final MockTextureListener listener = new MockTextureListener();
|
||||
surfaceTextureHelper.startListening(listener);
|
||||
surfaceTextureHelper.getSurfaceTexture().setDefaultBufferSize(width, height);
|
||||
@ -229,8 +229,8 @@ public final class SurfaceTextureHelperTest extends ActivityTestCase {
|
||||
@MediumTest
|
||||
public static void testDispose() throws InterruptedException {
|
||||
// Create SurfaceTextureHelper and listener.
|
||||
final SurfaceTextureHelper surfaceTextureHelper =
|
||||
SurfaceTextureHelper.create(null);
|
||||
final SurfaceTextureHelper surfaceTextureHelper = SurfaceTextureHelper.create(
|
||||
"SurfaceTextureHelper test" /* threadName */, null);
|
||||
final MockTextureListener listener = new MockTextureListener();
|
||||
surfaceTextureHelper.startListening(listener);
|
||||
// Create EglBase with the SurfaceTexture as target EGLSurface.
|
||||
@ -265,8 +265,8 @@ public final class SurfaceTextureHelperTest extends ActivityTestCase {
|
||||
*/
|
||||
@SmallTest
|
||||
public static void testDisposeImmediately() {
|
||||
final SurfaceTextureHelper surfaceTextureHelper =
|
||||
SurfaceTextureHelper.create(null);
|
||||
final SurfaceTextureHelper surfaceTextureHelper = SurfaceTextureHelper.create(
|
||||
"SurfaceTextureHelper test" /* threadName */, null);
|
||||
surfaceTextureHelper.dispose();
|
||||
}
|
||||
|
||||
@ -288,8 +288,8 @@ public final class SurfaceTextureHelperTest extends ActivityTestCase {
|
||||
@MediumTest
|
||||
public static void testStopListening() throws InterruptedException {
|
||||
// Create SurfaceTextureHelper and listener.
|
||||
final SurfaceTextureHelper surfaceTextureHelper =
|
||||
SurfaceTextureHelper.create(null);
|
||||
final SurfaceTextureHelper surfaceTextureHelper = SurfaceTextureHelper.create(
|
||||
"SurfaceTextureHelper test" /* threadName */, null);
|
||||
final MockTextureListener listener = new MockTextureListener();
|
||||
surfaceTextureHelper.startListening(listener);
|
||||
// Create EglBase with the SurfaceTexture as target EGLSurface.
|
||||
@ -324,8 +324,8 @@ public final class SurfaceTextureHelperTest extends ActivityTestCase {
|
||||
*/
|
||||
@SmallTest
|
||||
public static void testStopListeningImmediately() throws InterruptedException {
|
||||
final SurfaceTextureHelper surfaceTextureHelper =
|
||||
SurfaceTextureHelper.create(null);
|
||||
final SurfaceTextureHelper surfaceTextureHelper = SurfaceTextureHelper.create(
|
||||
"SurfaceTextureHelper test" /* threadName */, null);
|
||||
final MockTextureListener listener = new MockTextureListener();
|
||||
surfaceTextureHelper.startListening(listener);
|
||||
stopListeningOnHandlerThread(surfaceTextureHelper);
|
||||
@ -338,8 +338,8 @@ public final class SurfaceTextureHelperTest extends ActivityTestCase {
|
||||
*/
|
||||
@SmallTest
|
||||
public static void testStopListeningImmediatelyOnHandlerThread() throws InterruptedException {
|
||||
final SurfaceTextureHelper surfaceTextureHelper =
|
||||
SurfaceTextureHelper.create(null);
|
||||
final SurfaceTextureHelper surfaceTextureHelper = SurfaceTextureHelper.create(
|
||||
"SurfaceTextureHelper test" /* threadName */, null);
|
||||
final MockTextureListener listener = new MockTextureListener();
|
||||
|
||||
final CountDownLatch stopListeningBarrier = new CountDownLatch(1);
|
||||
@ -377,8 +377,8 @@ public final class SurfaceTextureHelperTest extends ActivityTestCase {
|
||||
@MediumTest
|
||||
public static void testRestartListeningWithNewListener() throws InterruptedException {
|
||||
// Create SurfaceTextureHelper and listener.
|
||||
final SurfaceTextureHelper surfaceTextureHelper =
|
||||
SurfaceTextureHelper.create(null);
|
||||
final SurfaceTextureHelper surfaceTextureHelper = SurfaceTextureHelper.create(
|
||||
"SurfaceTextureHelper test" /* threadName */, null);
|
||||
final MockTextureListener listener1 = new MockTextureListener();
|
||||
surfaceTextureHelper.startListening(listener1);
|
||||
// Create EglBase with the SurfaceTexture as target EGLSurface.
|
||||
@ -425,8 +425,8 @@ public final class SurfaceTextureHelperTest extends ActivityTestCase {
|
||||
final EglBase eglBase = EglBase.create(null, EglBase.CONFIG_PLAIN);
|
||||
|
||||
// Create SurfaceTextureHelper and listener.
|
||||
final SurfaceTextureHelper surfaceTextureHelper =
|
||||
SurfaceTextureHelper.create(eglBase.getEglBaseContext());
|
||||
final SurfaceTextureHelper surfaceTextureHelper = SurfaceTextureHelper.create(
|
||||
"SurfaceTextureHelper test" /* threadName */, eglBase.getEglBaseContext());
|
||||
final MockTextureListener listener = new MockTextureListener();
|
||||
surfaceTextureHelper.startListening(listener);
|
||||
surfaceTextureHelper.getSurfaceTexture().setDefaultBufferSize(width, height);
|
||||
|
||||
@ -286,8 +286,8 @@ public class VideoCapturerAndroidTestFixtures {
|
||||
final List<CaptureFormat> formats = capturer.getSupportedFormats();
|
||||
final CameraEnumerationAndroid.CaptureFormat format = formats.get(0);
|
||||
|
||||
final SurfaceTextureHelper surfaceTextureHelper =
|
||||
SurfaceTextureHelper.create(null /* sharedContext */);
|
||||
final SurfaceTextureHelper surfaceTextureHelper = SurfaceTextureHelper.create(
|
||||
"SurfaceTextureHelper test" /* threadName */, null /* sharedContext */);
|
||||
final FakeCapturerObserver observer = new FakeCapturerObserver();
|
||||
capturer.startCapture(format.width, format.height, format.maxFramerate,
|
||||
surfaceTextureHelper, appContext, observer);
|
||||
@ -310,8 +310,8 @@ public class VideoCapturerAndroidTestFixtures {
|
||||
final List<CaptureFormat> formats = capturer.getSupportedFormats();
|
||||
final CameraEnumerationAndroid.CaptureFormat format = formats.get(0);
|
||||
|
||||
final SurfaceTextureHelper surfaceTextureHelper =
|
||||
SurfaceTextureHelper.create(null /* sharedContext */);
|
||||
final SurfaceTextureHelper surfaceTextureHelper = SurfaceTextureHelper.create(
|
||||
"SurfaceTextureHelper test" /* threadName */, null /* sharedContext */);
|
||||
final FakeCapturerObserver observer = new FakeCapturerObserver();
|
||||
capturer.startCapture(format.width, format.height, format.maxFramerate,
|
||||
surfaceTextureHelper, appContext, observer);
|
||||
@ -356,8 +356,8 @@ public class VideoCapturerAndroidTestFixtures {
|
||||
|
||||
static public void startStopWithDifferentResolutions(VideoCapturerAndroid capturer,
|
||||
Context appContext) throws InterruptedException {
|
||||
final SurfaceTextureHelper surfaceTextureHelper =
|
||||
SurfaceTextureHelper.create(null /* sharedContext */);
|
||||
final SurfaceTextureHelper surfaceTextureHelper = SurfaceTextureHelper.create(
|
||||
"SurfaceTextureHelper test" /* threadName */, null /* sharedContext */);
|
||||
FakeCapturerObserver observer = new FakeCapturerObserver();
|
||||
List<CaptureFormat> formats = capturer.getSupportedFormats();
|
||||
|
||||
@ -409,8 +409,8 @@ public class VideoCapturerAndroidTestFixtures {
|
||||
final CameraEnumerationAndroid.CaptureFormat format = formats.get(0);
|
||||
Camera camera = Camera.open(capturer.getCurrentCameraId());
|
||||
|
||||
final SurfaceTextureHelper surfaceTextureHelper =
|
||||
SurfaceTextureHelper.create(null /* sharedContext */);
|
||||
final SurfaceTextureHelper surfaceTextureHelper = SurfaceTextureHelper.create(
|
||||
"SurfaceTextureHelper test" /* threadName */, null /* sharedContext */);
|
||||
final FakeCapturerObserver observer = new FakeCapturerObserver();
|
||||
capturer.startCapture(format.width, format.height, format.maxFramerate,
|
||||
surfaceTextureHelper, appContext, observer);
|
||||
@ -434,8 +434,8 @@ public class VideoCapturerAndroidTestFixtures {
|
||||
final CameraEnumerationAndroid.CaptureFormat format = formats.get(0);
|
||||
Camera camera = Camera.open(capturer.getCurrentCameraId());
|
||||
|
||||
final SurfaceTextureHelper surfaceTextureHelper =
|
||||
SurfaceTextureHelper.create(null /* sharedContext */);
|
||||
final SurfaceTextureHelper surfaceTextureHelper = SurfaceTextureHelper.create(
|
||||
"SurfaceTextureHelper test" /* threadName */, null /* sharedContext */);
|
||||
final FakeCapturerObserver observer = new FakeCapturerObserver();
|
||||
capturer.startCapture(format.width, format.height, format.maxFramerate,
|
||||
surfaceTextureHelper, appContext, observer);
|
||||
@ -460,8 +460,8 @@ public class VideoCapturerAndroidTestFixtures {
|
||||
final CameraEnumerationAndroid.CaptureFormat format = formats.get(0);
|
||||
Camera camera = Camera.open(capturer.getCurrentCameraId());
|
||||
|
||||
final SurfaceTextureHelper surfaceTextureHelper =
|
||||
SurfaceTextureHelper.create(null /* sharedContext */);
|
||||
final SurfaceTextureHelper surfaceTextureHelper = SurfaceTextureHelper.create(
|
||||
"SurfaceTextureHelper test" /* threadName */, null /* sharedContext */);
|
||||
final FakeCapturerObserver observer = new FakeCapturerObserver();
|
||||
capturer.startCapture(format.width, format.height, format.maxFramerate,
|
||||
surfaceTextureHelper, appContext, observer);
|
||||
@ -473,8 +473,8 @@ public class VideoCapturerAndroidTestFixtures {
|
||||
|
||||
static public void returnBufferLate(VideoCapturerAndroid capturer,
|
||||
Context appContext) throws InterruptedException {
|
||||
final SurfaceTextureHelper surfaceTextureHelper =
|
||||
SurfaceTextureHelper.create(null /* sharedContext */);
|
||||
final SurfaceTextureHelper surfaceTextureHelper = SurfaceTextureHelper.create(
|
||||
"SurfaceTextureHelper test" /* threadName */, null /* sharedContext */);
|
||||
FakeCapturerObserver observer = new FakeCapturerObserver();
|
||||
|
||||
List<CaptureFormat> formats = capturer.getSupportedFormats();
|
||||
@ -550,8 +550,8 @@ public class VideoCapturerAndroidTestFixtures {
|
||||
final List<CaptureFormat> formats = capturer.getSupportedFormats();
|
||||
final CameraEnumerationAndroid.CaptureFormat format = formats.get(0);
|
||||
|
||||
final SurfaceTextureHelper surfaceTextureHelper =
|
||||
SurfaceTextureHelper.create(null /* sharedContext */);
|
||||
final SurfaceTextureHelper surfaceTextureHelper = SurfaceTextureHelper.create(
|
||||
"SurfaceTextureHelper test" /* threadName */, null /* sharedContext */);
|
||||
final FakeCapturerObserver observer = new FakeCapturerObserver();
|
||||
capturer.startCapture(format.width, format.height, format.maxFramerate,
|
||||
surfaceTextureHelper, appContext, observer);
|
||||
|
||||
@ -52,8 +52,9 @@ class SurfaceTextureHelper {
|
||||
* Construct a new SurfaceTextureHelper sharing OpenGL resources with |sharedContext|. A dedicated
|
||||
* thread and handler is created for handling the SurfaceTexture.
|
||||
*/
|
||||
public static SurfaceTextureHelper create(final EglBase.Context sharedContext) {
|
||||
final HandlerThread thread = new HandlerThread(TAG);
|
||||
public static SurfaceTextureHelper create(
|
||||
final String threadName, final EglBase.Context sharedContext) {
|
||||
final HandlerThread thread = new HandlerThread(threadName);
|
||||
thread.start();
|
||||
final Handler handler = new Handler(thread.getLooper());
|
||||
|
||||
|
||||
@ -345,7 +345,7 @@ int32_t MediaCodecVideoDecoder::InitDecodeOnCodecThread() {
|
||||
|
||||
if (use_surface_) {
|
||||
surface_texture_helper_ = new rtc::RefCountedObject<SurfaceTextureHelper>(
|
||||
jni, render_egl_context_);
|
||||
jni, "Decoder SurfaceTextureHelper", render_egl_context_);
|
||||
}
|
||||
|
||||
jobject j_video_codec_enum = JavaEnumFromIndexAndClassName(
|
||||
|
||||
@ -42,7 +42,7 @@ AndroidVideoCapturerJni::AndroidVideoCapturerJni(
|
||||
FindClass(jni,
|
||||
"org/webrtc/VideoCapturer$NativeObserver")),
|
||||
surface_texture_helper_(new rtc::RefCountedObject<SurfaceTextureHelper>(
|
||||
jni, j_egl_context)),
|
||||
jni, "Camera SurfaceTextureHelper", j_egl_context)),
|
||||
capturer_(nullptr) {
|
||||
LOG(LS_INFO) << "AndroidVideoCapturerJni ctor";
|
||||
thread_checker_.DetachFromThread();
|
||||
|
||||
@ -18,15 +18,15 @@
|
||||
namespace webrtc_jni {
|
||||
|
||||
SurfaceTextureHelper::SurfaceTextureHelper(
|
||||
JNIEnv* jni, jobject j_egl_context)
|
||||
JNIEnv* jni, const char* thread_name, jobject j_egl_context)
|
||||
: j_surface_texture_helper_(jni, jni->CallStaticObjectMethod(
|
||||
FindClass(jni, "org/webrtc/SurfaceTextureHelper"),
|
||||
GetStaticMethodID(jni,
|
||||
FindClass(jni, "org/webrtc/SurfaceTextureHelper"),
|
||||
"create",
|
||||
"(Lorg/webrtc/EglBase$Context;)"
|
||||
"(Ljava/lang/String;Lorg/webrtc/EglBase$Context;)"
|
||||
"Lorg/webrtc/SurfaceTextureHelper;"),
|
||||
j_egl_context)),
|
||||
jni->NewStringUTF(thread_name), j_egl_context)),
|
||||
j_return_texture_method_(
|
||||
GetMethodID(jni,
|
||||
FindClass(jni, "org/webrtc/SurfaceTextureHelper"),
|
||||
|
||||
@ -38,7 +38,9 @@ namespace webrtc_jni {
|
||||
// 4. Call CreateTextureFrame to wrap the Java texture in a VideoFrameBuffer.
|
||||
class SurfaceTextureHelper : public rtc::RefCountInterface {
|
||||
public:
|
||||
SurfaceTextureHelper(JNIEnv* jni, jobject j_egl_context);
|
||||
SurfaceTextureHelper(JNIEnv* jni,
|
||||
const char* thread_name,
|
||||
jobject j_egl_context);
|
||||
|
||||
jobject GetJavaSurfaceTextureHelper() const;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user