Chromium Code Reviews| Index: webrtc/sdk/android/src/jni/videoencoderfactorywrapper.h |
| diff --git a/webrtc/sdk/android/src/jni/videoencoderfactorywrapper.h b/webrtc/sdk/android/src/jni/videoencoderfactorywrapper.h |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..b9ac2e878c65a68cb834c5cf6882b91dc8bd94ee |
| --- /dev/null |
| +++ b/webrtc/sdk/android/src/jni/videoencoderfactorywrapper.h |
| @@ -0,0 +1,63 @@ |
| +/* |
| + * Copyright 2017 The WebRTC project authors. All Rights Reserved. |
| + * |
| + * Use of this source code is governed by a BSD-style license |
| + * that can be found in the LICENSE file in the root of the source |
| + * tree. An additional intellectual property rights grant can be found |
| + * in the file PATENTS. All contributing project authors may |
| + * be found in the AUTHORS file in the root of the source tree. |
| + */ |
| + |
| +#ifndef WEBRTC_SDK_ANDROID_SRC_JNI_VIDEOENCODERFACTORYWRAPPER_H_ |
| +#define WEBRTC_SDK_ANDROID_SRC_JNI_VIDEOENCODERFACTORYWRAPPER_H_ |
| + |
| +#include <jni.h> |
| +#include <vector> |
| + |
| +#include "webrtc/media/engine/webrtcvideoencoderfactory.h" |
| +#include "webrtc/sdk/android/src/jni/jni_helpers.h" |
| + |
| +namespace webrtc_jni { |
|
magjed_webrtc
2017/08/28 16:54:21
Nest the namespaces instead.
sakal
2017/08/29 12:59:38
Done.
|
| + |
| +// Wrapper for Java VideoEncoderFactory class. Delegates method calls through |
| +// JNI and wraps the encoder inside VideoEncoderWrapper. |
| +class VideoEncoderFactoryWrapper : public cricket::WebRtcVideoEncoderFactory { |
| + public: |
| + VideoEncoderFactoryWrapper(JNIEnv* jni, jobject encoder_factory); |
| + |
| + // Caller takes the ownership of the returned object and it should be released |
| + // by calling DestroyVideoEncoder(). |
| + webrtc::VideoEncoder* CreateVideoEncoder( |
| + const cricket::VideoCodec& codec) override; |
| + |
| + // Returns a list of supported codecs in order of preference. |
| + const std::vector<cricket::VideoCodec>& supported_codecs() const override { |
| + return supported_codecs_; |
| + } |
| + |
| + void DestroyVideoEncoder(webrtc::VideoEncoder* encoder) override; |
| + |
| + private: |
| + std::vector<cricket::VideoCodec> GetSupportedCodecs(JNIEnv* jni) const; |
| + jobject ToJavaCodecInfo(JNIEnv* jni, const cricket::VideoCodec& codec); |
| + |
| + const ScopedGlobalRef<jclass> video_codec_info_class_; |
| + const ScopedGlobalRef<jclass> hash_map_class_; |
| + const ScopedGlobalRef<jobject> encoder_factory_; |
| + |
| + jmethodID create_encoder_method_; |
| + jmethodID get_supported_codecs_method_; |
| + |
| + jmethodID video_codec_info_constructor_; |
| + jfieldID payload_field_; |
| + jfieldID name_field_; |
| + |
| + jmethodID hash_map_constructor_; |
| + jmethodID put_method_; |
| + |
| + std::vector<cricket::VideoCodec> supported_codecs_; |
| +}; |
| + |
| +} // namespace webrtc_jni |
| + |
| +#endif // WEBRTC_SDK_ANDROID_SRC_JNI_VIDEOENCODERFACTORYWRAPPER_H_ |