Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(84)

Side by Side Diff: talk/app/webrtc/java/jni/androidvideocapturer_jni.cc

Issue 1493913007: VideoCapturerAndroid, handle cvo correctly (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: fixed tests. Cleaned up Created 5 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * libjingle 2 * libjingle
3 * Copyright 2015 Google Inc. 3 * Copyright 2015 Google Inc.
4 * 4 *
5 * Redistribution and use in source and binary forms, with or without 5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are met: 6 * modification, are permitted provided that the following conditions are met:
7 * 7 *
8 * 1. Redistributions of source code must retain the above copyright notice, 8 * 1. Redistributions of source code must retain the above copyright notice,
9 * this list of conditions and the following disclaimer. 9 * this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright notice, 10 * 2. Redistributions in binary form must reproduce the above copyright notice,
(...skipping 164 matching lines...) Expand 10 before | Expand all | Expand 10 after
175 uv_stride, 175 uv_stride,
176 rtc::Bind(&AndroidVideoCapturerJni::ReturnBuffer, this, 176 rtc::Bind(&AndroidVideoCapturerJni::ReturnBuffer, this,
177 timestamp_ns))); 177 timestamp_ns)));
178 AsyncCapturerInvoke("OnIncomingFrame", 178 AsyncCapturerInvoke("OnIncomingFrame",
179 &webrtc::AndroidVideoCapturer::OnIncomingFrame, 179 &webrtc::AndroidVideoCapturer::OnIncomingFrame,
180 buffer, rotation, timestamp_ns); 180 buffer, rotation, timestamp_ns);
181 } 181 }
182 182
183 void AndroidVideoCapturerJni::OnTextureFrame(int width, 183 void AndroidVideoCapturerJni::OnTextureFrame(int width,
184 int height, 184 int height,
185 int rotation,
185 int64_t timestamp_ns, 186 int64_t timestamp_ns,
186 const NativeHandleImpl& handle) { 187 const NativeHandleImpl& handle) {
187 rtc::scoped_refptr<webrtc::VideoFrameBuffer> buffer( 188 rtc::scoped_refptr<webrtc::VideoFrameBuffer> buffer(
188 new rtc::RefCountedObject<AndroidTextureBuffer>( 189 new rtc::RefCountedObject<AndroidTextureBuffer>(
189 width, height, handle, 190 width, height, handle,
190 rtc::Bind(&AndroidVideoCapturerJni::ReturnBuffer, this, 191 rtc::Bind(&AndroidVideoCapturerJni::ReturnBuffer, this,
191 timestamp_ns))); 192 timestamp_ns)));
192 AsyncCapturerInvoke("OnIncomingFrame", 193 AsyncCapturerInvoke("OnIncomingFrame",
193 &webrtc::AndroidVideoCapturer::OnIncomingFrame, 194 &webrtc::AndroidVideoCapturer::OnIncomingFrame,
194 buffer, 0, timestamp_ns); 195 buffer, rotation, timestamp_ns);
195 } 196 }
196 197
197 void AndroidVideoCapturerJni::OnOutputFormatRequest(int width, 198 void AndroidVideoCapturerJni::OnOutputFormatRequest(int width,
198 int height, 199 int height,
199 int fps) { 200 int fps) {
200 AsyncCapturerInvoke("OnOutputFormatRequest", 201 AsyncCapturerInvoke("OnOutputFormatRequest",
201 &webrtc::AndroidVideoCapturer::OnOutputFormatRequest, 202 &webrtc::AndroidVideoCapturer::OnOutputFormatRequest,
202 width, height, fps); 203 width, height, fps);
203 } 204 }
204 205
(...skipping 13 matching lines...) Expand all
218 RTC_CHECK(!is_copy) 219 RTC_CHECK(!is_copy)
219 << "NativeObserver_nativeOnFrameCaptured: frame is a copy"; 220 << "NativeObserver_nativeOnFrameCaptured: frame is a copy";
220 reinterpret_cast<AndroidVideoCapturerJni*>(j_capturer) 221 reinterpret_cast<AndroidVideoCapturerJni*>(j_capturer)
221 ->OnMemoryBufferFrame(bytes, length, width, height, rotation, timestamp); 222 ->OnMemoryBufferFrame(bytes, length, width, height, rotation, timestamp);
222 jni->ReleaseByteArrayElements(j_frame, bytes, JNI_ABORT); 223 jni->ReleaseByteArrayElements(j_frame, bytes, JNI_ABORT);
223 } 224 }
224 225
225 JOW(void, VideoCapturerAndroid_00024NativeObserver_nativeOnTextureFrameCaptured) 226 JOW(void, VideoCapturerAndroid_00024NativeObserver_nativeOnTextureFrameCaptured)
226 (JNIEnv* jni, jclass, jlong j_capturer, jint j_width, jint j_height, 227 (JNIEnv* jni, jclass, jlong j_capturer, jint j_width, jint j_height,
227 jint j_oes_texture_id, jfloatArray j_transform_matrix, 228 jint j_oes_texture_id, jfloatArray j_transform_matrix,
228 jlong j_timestamp) { 229 jint j_rotation, jlong j_timestamp) {
229 reinterpret_cast<AndroidVideoCapturerJni*>(j_capturer) 230 reinterpret_cast<AndroidVideoCapturerJni*>(j_capturer)
230 ->OnTextureFrame(j_width, j_height, j_timestamp, 231 ->OnTextureFrame(j_width, j_height, j_rotation, j_timestamp,
231 NativeHandleImpl(jni, j_oes_texture_id, 232 NativeHandleImpl(jni, j_oes_texture_id,
232 j_transform_matrix)); 233 j_transform_matrix));
233 } 234 }
234 235
235 JOW(void, VideoCapturerAndroid_00024NativeObserver_nativeCapturerStarted) 236 JOW(void, VideoCapturerAndroid_00024NativeObserver_nativeCapturerStarted)
236 (JNIEnv* jni, jclass, jlong j_capturer, jboolean j_success) { 237 (JNIEnv* jni, jclass, jlong j_capturer, jboolean j_success) {
237 LOG(LS_INFO) << "NativeObserver_nativeCapturerStarted"; 238 LOG(LS_INFO) << "NativeObserver_nativeCapturerStarted";
238 reinterpret_cast<AndroidVideoCapturerJni*>(j_capturer)->OnCapturerStarted( 239 reinterpret_cast<AndroidVideoCapturerJni*>(j_capturer)->OnCapturerStarted(
239 j_success); 240 j_success);
240 } 241 }
(...skipping 10 matching lines...) Expand all
251 (JNIEnv* jni, jclass, jobject j_video_capturer) { 252 (JNIEnv* jni, jclass, jobject j_video_capturer) {
252 rtc::scoped_refptr<webrtc::AndroidVideoCapturerDelegate> delegate = 253 rtc::scoped_refptr<webrtc::AndroidVideoCapturerDelegate> delegate =
253 new rtc::RefCountedObject<AndroidVideoCapturerJni>(jni, j_video_capturer); 254 new rtc::RefCountedObject<AndroidVideoCapturerJni>(jni, j_video_capturer);
254 rtc::scoped_ptr<cricket::VideoCapturer> capturer( 255 rtc::scoped_ptr<cricket::VideoCapturer> capturer(
255 new webrtc::AndroidVideoCapturer(delegate)); 256 new webrtc::AndroidVideoCapturer(delegate));
256 // Caller takes ownership of the cricket::VideoCapturer* pointer. 257 // Caller takes ownership of the cricket::VideoCapturer* pointer.
257 return jlongFromPointer(capturer.release()); 258 return jlongFromPointer(capturer.release());
258 } 259 }
259 260
260 } // namespace webrtc_jni 261 } // namespace webrtc_jni
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698