Index: talk/app/webrtc/java/jni/androidmediadecoder_jni.cc |
diff --git a/talk/app/webrtc/java/jni/androidmediadecoder_jni.cc b/talk/app/webrtc/java/jni/androidmediadecoder_jni.cc |
index fbe5b5ca785985ff069d5ed4c471ba021a480291..49b84aa58522268d65c176373595e0f4bda1dbaf 100644 |
--- a/talk/app/webrtc/java/jni/androidmediadecoder_jni.cc |
+++ b/talk/app/webrtc/java/jni/androidmediadecoder_jni.cc |
@@ -318,9 +318,19 @@ int32_t MediaCodecVideoDecoder::InitDecodeOnCodecThread() { |
frames_received_ = 0; |
frames_decoded_ = 0; |
+ jobject java_surface_texture_helper_ = nullptr; |
if (use_surface_) { |
+ java_surface_texture_helper_ = jni->CallStaticObjectMethod( |
+ FindClass(jni, "org/webrtc/SurfaceTextureHelper"), |
+ GetStaticMethodID(jni, |
+ FindClass(jni, "org/webrtc/SurfaceTextureHelper"), |
+ "create", |
+ "(Lorg/webrtc/EglBase$Context;)" |
+ "Lorg/webrtc/SurfaceTextureHelper;"), |
+ render_egl_context_); |
+ RTC_CHECK(java_surface_texture_helper_ != nullptr); |
surface_texture_helper_ = new rtc::RefCountedObject<SurfaceTextureHelper>( |
- jni, render_egl_context_); |
+ jni, java_surface_texture_helper_); |
} |
jobject j_video_codec_enum = JavaEnumFromIndex( |
@@ -331,8 +341,7 @@ int32_t MediaCodecVideoDecoder::InitDecodeOnCodecThread() { |
j_video_codec_enum, |
codec_.width, |
codec_.height, |
- use_surface_ ? surface_texture_helper_->GetJavaSurfaceTextureHelper() |
- : nullptr); |
+ java_surface_texture_helper_); |
if (CheckException(jni) || !success) { |
ALOGE << "Codec initialization error - fallback to SW codec."; |
sw_fallback_required_ = true; |