Index: talk/app/webrtc/java/jni/native_handle_impl.cc |
diff --git a/talk/app/webrtc/java/jni/native_handle_impl.cc b/talk/app/webrtc/java/jni/native_handle_impl.cc |
index ed9ad8e8918ad1d6e5adb21c42fbb30c82960802..bb31ba648c76fb4b21cdcbb0f8f16d6775398acb 100644 |
--- a/talk/app/webrtc/java/jni/native_handle_impl.cc |
+++ b/talk/app/webrtc/java/jni/native_handle_impl.cc |
@@ -28,9 +28,17 @@ |
#include "talk/app/webrtc/java/jni/native_handle_impl.h" |
#include "webrtc/base/checks.h" |
+#include "webrtc/base/bind.h" |
+ |
+using rtc::scoped_refptr; |
+using webrtc::NativeHandleBuffer; |
namespace webrtc_jni { |
+namespace { |
+void ScaledFrameNotInUse(scoped_refptr<NativeHandleBuffer> original) {} |
+} // anonymous namespace |
+ |
NativeHandleImpl::NativeHandleImpl(JNIEnv* jni, |
jint j_oes_texture_id, |
jfloatArray j_transform_matrix) |
@@ -64,4 +72,22 @@ AndroidTextureBuffer::NativeToI420Buffer() { |
return nullptr; |
} |
+rtc::scoped_refptr<AndroidTextureBuffer> AndroidTextureBuffer::CropAndScale( |
+ int cropped_input_width, |
+ int cropped_input_height, |
+ int dst_widht, |
+ int dst_height) { |
+ // TODO(perkj) Implement cropping. |
+ RTC_CHECK_EQ(cropped_input_width, width_); |
+ RTC_CHECK_EQ(cropped_input_height, height_); |
+ |
+ // Here we use Bind magic to add a reference count to |this| until the newly |
+ // created AndroidTextureBuffer is destructed. ScaledFrameNotInUse will be |
+ // called that happens and when it finishes, the reference count to |this| |
+ // will be decreased by one. |
+ return new rtc::RefCountedObject<AndroidTextureBuffer>( |
+ dst_widht, dst_height, native_handle_, |
+ rtc::Bind(&ScaledFrameNotInUse, this)); |
+} |
+ |
} // namespace webrtc_jni |