Android: Update VideoDecoderFactoryWrapper to implement CreateVideoDecoderWithParams.

Old CreateVideoDecoder interface is deprecated. This allows
VideoDecoderFactoryWrapper to create codecs for types that WebRTC
doesn't know about.

Bug: webrtc:8140
Change-Id: I69aa1a0164642b4e4377daa1abeb9039c04fd884
Reviewed-on: https://webrtc-review.googlesource.com/15401
Reviewed-by: Magnus Jedvert <magjed@webrtc.org>
Commit-Queue: Sami Kalliomäki <sakal@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#20438}
This commit is contained in:
Sami Kalliomäki
2017-10-25 14:28:52 +02:00
committed by Commit Bot
parent fb6d32602c
commit 68e56a5951
2 changed files with 7 additions and 5 deletions

View File

@ -27,12 +27,12 @@ VideoDecoderFactoryWrapper::VideoDecoderFactoryWrapper(JNIEnv* jni,
"(Ljava/lang/String;)Lorg/webrtc/VideoDecoder;"); "(Ljava/lang/String;)Lorg/webrtc/VideoDecoder;");
} }
VideoDecoder* VideoDecoderFactoryWrapper::CreateVideoDecoder( VideoDecoder* VideoDecoderFactoryWrapper::CreateVideoDecoderWithParams(
VideoCodecType type) { const cricket::VideoCodec& codec,
cricket::VideoDecoderParams params) {
JNIEnv* jni = AttachCurrentThreadIfNeeded(); JNIEnv* jni = AttachCurrentThreadIfNeeded();
ScopedLocalRefFrame local_ref_frame(jni); ScopedLocalRefFrame local_ref_frame(jni);
const char* type_payload = CodecTypeToPayloadString(type); jstring name = JavaStringFromStdString(jni, codec.name);
jstring name = jni->NewStringUTF(type_payload);
jobject decoder = jobject decoder =
jni->CallObjectMethod(*decoder_factory_, create_decoder_method_, name); jni->CallObjectMethod(*decoder_factory_, create_decoder_method_, name);
return decoder != nullptr ? new VideoDecoderWrapper(jni, decoder) : nullptr; return decoder != nullptr ? new VideoDecoderWrapper(jni, decoder) : nullptr;

View File

@ -27,7 +27,9 @@ class VideoDecoderFactoryWrapper : public cricket::WebRtcVideoDecoderFactory {
// Caller takes the ownership of the returned object and it should be released // Caller takes the ownership of the returned object and it should be released
// by calling DestroyVideoDecoder(). // by calling DestroyVideoDecoder().
VideoDecoder* CreateVideoDecoder(VideoCodecType type) override; VideoDecoder* CreateVideoDecoderWithParams(
const cricket::VideoCodec& codec,
cricket::VideoDecoderParams params) override;
void DestroyVideoDecoder(VideoDecoder* decoder) override; void DestroyVideoDecoder(VideoDecoder* decoder) override;
private: private: