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

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

Issue 3003873002: Bindings for injectable Java video encoders. (Closed)
Patch Set: Rebase Created 3 years, 4 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
Index: webrtc/sdk/android/src/jni/pc/video_jni.cc
diff --git a/webrtc/sdk/android/src/jni/pc/video_jni.cc b/webrtc/sdk/android/src/jni/pc/video_jni.cc
index 5362c28e7e2cf7ed4aad2d4515a253aab34fdb45..25499526f7881c392c5f5caee35e43568c797adc 100644
--- a/webrtc/sdk/android/src/jni/pc/video_jni.cc
+++ b/webrtc/sdk/android/src/jni/pc/video_jni.cc
@@ -21,6 +21,7 @@
#include "webrtc/sdk/android/src/jni/pc/ownedfactoryandthreads.h"
#include "webrtc/sdk/android/src/jni/surfacetexturehelper_jni.h"
#include "webrtc/sdk/android/src/jni/videodecoderfactorywrapper.h"
+#include "webrtc/sdk/android/src/jni/videoencoderfactorywrapper.h"
namespace webrtc_jni {
@@ -28,14 +29,19 @@ namespace webrtc_jni {
// used and all applications inject their own codecs.
// This is semi broken if someone wants to create multiple peerconnection
// factories.
+static bool use_media_codec_encoder_factory;
static bool use_media_codec_decoder_factory;
cricket::WebRtcVideoEncoderFactory* CreateVideoEncoderFactory(
JNIEnv* jni,
jobject j_encoder_factory) {
- RTC_DCHECK(j_encoder_factory == nullptr)
- << "Injectable video encoders are not supported yet.";
- return new MediaCodecVideoEncoderFactory();
+ use_media_codec_encoder_factory = j_encoder_factory == nullptr;
+
+ if (use_media_codec_encoder_factory) {
+ return new MediaCodecVideoEncoderFactory();
+ } else {
+ return new VideoEncoderFactoryWrapper(jni, j_encoder_factory);
+ }
}
cricket::WebRtcVideoDecoderFactory* CreateVideoDecoderFactory(
@@ -111,7 +117,7 @@ JNI_FUNCTION_DECLARATION(
MediaCodecVideoEncoderFactory* encoder_factory =
static_cast<MediaCodecVideoEncoderFactory*>(
owned_factory->encoder_factory());
- if (encoder_factory &&
+ if (use_media_codec_encoder_factory && encoder_factory &&
jni->IsInstanceOf(local_egl_context, j_eglbase14_context_class)) {
LOG(LS_INFO) << "Set EGL context for HW encoding.";
encoder_factory->SetEGLContext(jni, local_egl_context);

Powered by Google App Engine
This is Rietveld 408576698