diff --git a/talk/app/webrtc/java/jni/native_handle_impl.cc b/talk/app/webrtc/java/jni/native_handle_impl.cc new file mode 100644 index 0000000000..37f5489ac5 --- /dev/null +++ b/talk/app/webrtc/java/jni/native_handle_impl.cc @@ -0,0 +1,62 @@ +/* + * libjingle + * Copyright 2015 Google Inc. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "talk/app/webrtc/java/jni/native_handle_impl.h" + +#include "webrtc/base/checks.h" + +namespace webrtc_jni { + +NativeHandleImpl::NativeHandleImpl() : texture_object_(NULL), texture_id_(-1) {} + +void* NativeHandleImpl::GetHandle() { + return texture_object_; +} + +int NativeHandleImpl::GetTextureId() { + return texture_id_; +} + +void NativeHandleImpl::SetTextureObject(void* texture_object, int texture_id) { + texture_object_ = reinterpret_cast(texture_object); + texture_id_ = texture_id; +} + +JniNativeHandleBuffer::JniNativeHandleBuffer(void* native_handle, + int width, + int height) + : NativeHandleBuffer(native_handle, width, height) {} + +rtc::scoped_refptr +JniNativeHandleBuffer::NativeToI420Buffer() { + // TODO(pbos): Implement before using this in the encoder pipeline (or + // remove the RTC_CHECK() in VideoCapture). + RTC_NOTREACHED(); + return nullptr; +} + +} // namespace webrtc_jni diff --git a/talk/app/webrtc/java/jni/native_handle_impl.h b/talk/app/webrtc/java/jni/native_handle_impl.h index 68b213bf53..2ce2b73b13 100644 --- a/talk/app/webrtc/java/jni/native_handle_impl.h +++ b/talk/app/webrtc/java/jni/native_handle_impl.h @@ -29,7 +29,8 @@ #ifndef TALK_APP_WEBRTC_JAVA_JNI_NATIVE_HANDLE_IMPL_H_ #define TALK_APP_WEBRTC_JAVA_JNI_NATIVE_HANDLE_IMPL_H_ -#include "webrtc/base/checks.h" +#include + #include "webrtc/common_video/interface/video_frame_buffer.h" namespace webrtc_jni { @@ -37,18 +38,11 @@ namespace webrtc_jni { // Wrapper for texture object. class NativeHandleImpl { public: - NativeHandleImpl() : texture_object_(NULL), texture_id_(-1) {} + NativeHandleImpl(); - void* GetHandle() { - return texture_object_; - } - int GetTextureId() { - return texture_id_; - } - void SetTextureObject(void *texture_object, int texture_id) { - texture_object_ = reinterpret_cast(texture_object); - texture_id_ = texture_id; - } + void* GetHandle(); + int GetTextureId(); + void SetTextureObject(void* texture_object, int texture_id); private: jobject texture_object_; @@ -57,19 +51,13 @@ class NativeHandleImpl { class JniNativeHandleBuffer : public webrtc::NativeHandleBuffer { public: - JniNativeHandleBuffer(void* native_handle, int width, int height) - : NativeHandleBuffer(native_handle, width, height) {} + JniNativeHandleBuffer(void* native_handle, int width, int height); // TODO(pbos): Override destructor to release native handle, at the moment the // native handle is not released based on refcount. private: - rtc::scoped_refptr NativeToI420Buffer() override { - // TODO(pbos): Implement before using this in the encoder pipeline (or - // remove the RTC_CHECK() in VideoCapture). - RTC_NOTREACHED(); - return nullptr; - } + rtc::scoped_refptr NativeToI420Buffer() override; }; } // namespace webrtc_jni diff --git a/talk/libjingle.gyp b/talk/libjingle.gyp index 9f41b27055..c7e45f7714 100755 --- a/talk/libjingle.gyp +++ b/talk/libjingle.gyp @@ -53,6 +53,7 @@ 'app/webrtc/java/jni/classreferenceholder.h', 'app/webrtc/java/jni/jni_helpers.cc', 'app/webrtc/java/jni/jni_helpers.h', + 'app/webrtc/java/jni/native_handle_impl.cc', 'app/webrtc/java/jni/native_handle_impl.h', 'app/webrtc/java/jni/peerconnection_jni.cc', ],