Fix a bug where all wrapped codecs were considered software codecs.

This is not the case for fallback codecs.

Bug: webrtc:7925
Change-Id: I5039d8879923a2db1e7c08bb5640763dd20ea8e7
Reviewed-on: https://webrtc-review.googlesource.com/24863
Commit-Queue: Sami Kalliomäki <sakal@webrtc.org>
Reviewed-by: Magnus Jedvert <magjed@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#20861}
This commit is contained in:
Sami Kalliomäki
2017-11-24 11:00:04 +01:00
committed by Commit Bot
parent 1f2a3e7058
commit 6196feb2ed
7 changed files with 31 additions and 5 deletions

View File

@ -53,13 +53,9 @@ VideoEncoderFactory::CodecInfo VideoEncoderFactoryWrapper::QueryVideoEncoder(
jobject encoder = jni->CallObjectMethod(*encoder_factory_,
create_encoder_method_, j_codec_info);
jclass wrapped_native_encoder_class =
GetClass(jni, "org/webrtc/WrappedNativeVideoEncoder");
CodecInfo codec_info;
// Check if this is a wrapped native software encoder implementation.
codec_info.is_hardware_accelerated =
!jni->IsInstanceOf(encoder, wrapped_native_encoder_class);
codec_info.is_hardware_accelerated = !IsWrappedSoftwareEncoder(jni, encoder);
codec_info.has_internal_source = false;
return codec_info;
}

View File

@ -51,5 +51,10 @@ std::unique_ptr<VideoEncoder> JavaToNativeVideoEncoder(JNIEnv* jni,
return std::unique_ptr<VideoEncoder>(encoder);
}
bool IsWrappedSoftwareEncoder(JNIEnv* jni, jobject j_encoder) {
return Java_WrappedNativeVideoEncoder_isWrappedSoftwareEncoder(jni,
j_encoder);
}
} // namespace jni
} // namespace webrtc

View File

@ -32,6 +32,8 @@ std::unique_ptr<VideoDecoder> JavaToNativeVideoDecoder(JNIEnv* jni,
std::unique_ptr<VideoEncoder> JavaToNativeVideoEncoder(JNIEnv* jni,
jobject j_encoder);
bool IsWrappedSoftwareEncoder(JNIEnv* jni, jobject j_encoder);
} // namespace jni
} // namespace webrtc