Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(57)

Unified Diff: webrtc/sdk/android/src/jni/video_jni.cc

Issue 2992523002: Fix a crash in PeerConnectionFactory.SetVideoHwAccelerationOptions. (Closed)
Patch Set: Created 3 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: webrtc/sdk/android/src/jni/video_jni.cc
diff --git a/webrtc/sdk/android/src/jni/video_jni.cc b/webrtc/sdk/android/src/jni/video_jni.cc
index fc6f30cbcf522c5837fbdda38bf73d2052ca8c1d..5bf9f34155e8dc6ab5ea1ff7c0b8c714f36e3b60 100644
--- a/webrtc/sdk/android/src/jni/video_jni.cc
+++ b/webrtc/sdk/android/src/jni/video_jni.cc
@@ -28,7 +28,7 @@ namespace webrtc_jni {
// used and all applications inject their own codecs.
// This is semi broken if someone wants to create multiple peerconnection
// factories.
-static MediaCodecVideoDecoderFactory* media_codec_decoder_factory;
+static bool use_media_codec_decoder_factory;
cricket::WebRtcVideoEncoderFactory* CreateVideoEncoderFactory(
JNIEnv* jni,
@@ -41,12 +41,12 @@ cricket::WebRtcVideoEncoderFactory* CreateVideoEncoderFactory(
cricket::WebRtcVideoDecoderFactory* CreateVideoDecoderFactory(
JNIEnv* jni,
jobject j_decoder_factory) {
- if (j_decoder_factory != nullptr) {
- media_codec_decoder_factory = nullptr;
- return new VideoDecoderFactoryWrapper(jni, j_decoder_factory);
+ use_media_codec_decoder_factory = j_decoder_factory == nullptr;
+
+ if (use_media_codec_decoder_factory) {
+ return new MediaCodecVideoDecoderFactory();
} else {
- media_codec_decoder_factory = new MediaCodecVideoDecoderFactory();
- return media_codec_decoder_factory;
+ return new VideoDecoderFactoryWrapper(jni, j_decoder_factory);
}
}
@@ -109,9 +109,12 @@ JOW(void, PeerConnectionFactory_nativeSetVideoHwAccelerationOptions)
encoder_factory->SetEGLContext(jni, local_egl_context);
}
- if (media_codec_decoder_factory) {
+ MediaCodecVideoDecoderFactory* decoder_factory =
+ static_cast<MediaCodecVideoDecoderFactory*>(
+ owned_factory->decoder_factory());
+ if (use_media_codec_decoder_factory && decoder_factory) {
LOG(LS_INFO) << "Set EGL context for HW decoding.";
- media_codec_decoder_factory->SetEGLContext(jni, remote_egl_context);
+ decoder_factory->SetEGLContext(jni, remote_egl_context);
}
}
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698