Fix a crash in PeerConnectionFactory.SetVideoHwAccelerationOptions.
BUG=webrtc:8035 Review-Url: https://codereview.webrtc.org/2992523002 Cr-Commit-Position: refs/heads/master@{#19171}
This commit is contained in:
@ -28,7 +28,7 @@ namespace webrtc_jni {
|
|||||||
// used and all applications inject their own codecs.
|
// used and all applications inject their own codecs.
|
||||||
// This is semi broken if someone wants to create multiple peerconnection
|
// This is semi broken if someone wants to create multiple peerconnection
|
||||||
// factories.
|
// factories.
|
||||||
static MediaCodecVideoDecoderFactory* media_codec_decoder_factory;
|
static bool use_media_codec_decoder_factory;
|
||||||
|
|
||||||
cricket::WebRtcVideoEncoderFactory* CreateVideoEncoderFactory(
|
cricket::WebRtcVideoEncoderFactory* CreateVideoEncoderFactory(
|
||||||
JNIEnv* jni,
|
JNIEnv* jni,
|
||||||
@ -41,12 +41,12 @@ cricket::WebRtcVideoEncoderFactory* CreateVideoEncoderFactory(
|
|||||||
cricket::WebRtcVideoDecoderFactory* CreateVideoDecoderFactory(
|
cricket::WebRtcVideoDecoderFactory* CreateVideoDecoderFactory(
|
||||||
JNIEnv* jni,
|
JNIEnv* jni,
|
||||||
jobject j_decoder_factory) {
|
jobject j_decoder_factory) {
|
||||||
if (j_decoder_factory != nullptr) {
|
use_media_codec_decoder_factory = j_decoder_factory == nullptr;
|
||||||
media_codec_decoder_factory = nullptr;
|
|
||||||
return new VideoDecoderFactoryWrapper(jni, j_decoder_factory);
|
if (use_media_codec_decoder_factory) {
|
||||||
|
return new MediaCodecVideoDecoderFactory();
|
||||||
} else {
|
} else {
|
||||||
media_codec_decoder_factory = new MediaCodecVideoDecoderFactory();
|
return new VideoDecoderFactoryWrapper(jni, j_decoder_factory);
|
||||||
return media_codec_decoder_factory;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -109,9 +109,12 @@ JOW(void, PeerConnectionFactory_nativeSetVideoHwAccelerationOptions)
|
|||||||
encoder_factory->SetEGLContext(jni, local_egl_context);
|
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.";
|
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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user