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:
magjed
2016-03-31 00:54:15 -07:00
committed by Commit bot
parent af9e4ac4bc
commit 82b750b80e
8 changed files with 47 additions and 44 deletions

View File

@ -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 =

View File

@ -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);

View File

@ -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);

View File

@ -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());

View File

@ -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(

View File

@ -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();

View File

@ -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"),

View File

@ -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;