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

Side by Side Diff: webrtc/api/android/jni/peerconnection_jni.cc

Issue 2487633002: Reland of Delete all use of cricket::VideoFrame and cricket::WebRtcVideoFrame. (Closed)
Patch Set: Rebase, and update rtcstatscollector_unittest.cc. Created 4 years, 1 month 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 * Copyright 2013 The WebRTC project authors. All Rights Reserved. 2 * Copyright 2013 The WebRTC project authors. All Rights Reserved.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license 4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source 5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found 6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may 7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree. 8 * be found in the AUTHORS file in the root of the source tree.
9 */ 9 */
10 10
(...skipping 715 matching lines...) Expand 10 before | Expand all | Expand 10 after
726 const ScopedGlobalRef<jclass> j_observer_class_; 726 const ScopedGlobalRef<jclass> j_observer_class_;
727 const ScopedGlobalRef<jclass> j_stats_report_class_; 727 const ScopedGlobalRef<jclass> j_stats_report_class_;
728 const jmethodID j_stats_report_ctor_; 728 const jmethodID j_stats_report_ctor_;
729 const ScopedGlobalRef<jclass> j_value_class_; 729 const ScopedGlobalRef<jclass> j_value_class_;
730 const jmethodID j_value_ctor_; 730 const jmethodID j_value_ctor_;
731 }; 731 };
732 732
733 // Wrapper dispatching rtc::VideoSinkInterface to a Java VideoRenderer 733 // Wrapper dispatching rtc::VideoSinkInterface to a Java VideoRenderer
734 // instance. 734 // instance.
735 class JavaVideoRendererWrapper 735 class JavaVideoRendererWrapper
736 : public rtc::VideoSinkInterface<cricket::VideoFrame> { 736 : public rtc::VideoSinkInterface<webrtc::VideoFrame> {
737 public: 737 public:
738 JavaVideoRendererWrapper(JNIEnv* jni, jobject j_callbacks) 738 JavaVideoRendererWrapper(JNIEnv* jni, jobject j_callbacks)
739 : j_callbacks_(jni, j_callbacks), 739 : j_callbacks_(jni, j_callbacks),
740 j_render_frame_id_(GetMethodID( 740 j_render_frame_id_(GetMethodID(
741 jni, GetObjectClass(jni, j_callbacks), "renderFrame", 741 jni, GetObjectClass(jni, j_callbacks), "renderFrame",
742 "(Lorg/webrtc/VideoRenderer$I420Frame;)V")), 742 "(Lorg/webrtc/VideoRenderer$I420Frame;)V")),
743 j_frame_class_(jni, 743 j_frame_class_(jni,
744 FindClass(jni, "org/webrtc/VideoRenderer$I420Frame")), 744 FindClass(jni, "org/webrtc/VideoRenderer$I420Frame")),
745 j_i420_frame_ctor_id_(GetMethodID( 745 j_i420_frame_ctor_id_(GetMethodID(
746 jni, *j_frame_class_, "<init>", "(III[I[Ljava/nio/ByteBuffer;J)V")), 746 jni, *j_frame_class_, "<init>", "(III[I[Ljava/nio/ByteBuffer;J)V")),
747 j_texture_frame_ctor_id_(GetMethodID( 747 j_texture_frame_ctor_id_(GetMethodID(
748 jni, *j_frame_class_, "<init>", 748 jni, *j_frame_class_, "<init>",
749 "(IIII[FJ)V")), 749 "(IIII[FJ)V")),
750 j_byte_buffer_class_(jni, FindClass(jni, "java/nio/ByteBuffer")) { 750 j_byte_buffer_class_(jni, FindClass(jni, "java/nio/ByteBuffer")) {
751 CHECK_EXCEPTION(jni); 751 CHECK_EXCEPTION(jni);
752 } 752 }
753 753
754 virtual ~JavaVideoRendererWrapper() {} 754 virtual ~JavaVideoRendererWrapper() {}
755 755
756 void OnFrame(const cricket::VideoFrame& video_frame) override { 756 void OnFrame(const webrtc::VideoFrame& video_frame) override {
757 ScopedLocalRefFrame local_ref_frame(jni()); 757 ScopedLocalRefFrame local_ref_frame(jni());
758 jobject j_frame = 758 jobject j_frame =
759 (video_frame.video_frame_buffer()->native_handle() != nullptr) 759 (video_frame.video_frame_buffer()->native_handle() != nullptr)
760 ? CricketToJavaTextureFrame(&video_frame) 760 ? CricketToJavaTextureFrame(&video_frame)
761 : CricketToJavaI420Frame(&video_frame); 761 : CricketToJavaI420Frame(&video_frame);
762 // |j_callbacks_| is responsible for releasing |j_frame| with 762 // |j_callbacks_| is responsible for releasing |j_frame| with
763 // VideoRenderer.renderFrameDone(). 763 // VideoRenderer.renderFrameDone().
764 jni()->CallVoidMethod(*j_callbacks_, j_render_frame_id_, j_frame); 764 jni()->CallVoidMethod(*j_callbacks_, j_render_frame_id_, j_frame);
765 CHECK_EXCEPTION(jni()); 765 CHECK_EXCEPTION(jni());
766 } 766 }
767 767
768 private: 768 private:
769 // Make a shallow copy of |frame| to be used with Java. The callee has 769 // Make a shallow copy of |frame| to be used with Java. The callee has
770 // ownership of the frame, and the frame should be released with 770 // ownership of the frame, and the frame should be released with
771 // VideoRenderer.releaseNativeFrame(). 771 // VideoRenderer.releaseNativeFrame().
772 static jlong javaShallowCopy(const cricket::VideoFrame* frame) { 772 static jlong javaShallowCopy(const webrtc::VideoFrame* frame) {
773 return jlongFromPointer(new cricket::WebRtcVideoFrame( 773 return jlongFromPointer(new webrtc::VideoFrame(*frame));
774 frame->video_frame_buffer(), frame->rotation(), frame->timestamp_us()));
775 } 774 }
776 775
777 // Return a VideoRenderer.I420Frame referring to the data in |frame|. 776 // Return a VideoRenderer.I420Frame referring to the data in |frame|.
778 jobject CricketToJavaI420Frame(const cricket::VideoFrame* frame) { 777 jobject CricketToJavaI420Frame(const webrtc::VideoFrame* frame) {
779 jintArray strides = jni()->NewIntArray(3); 778 jintArray strides = jni()->NewIntArray(3);
780 jint* strides_array = jni()->GetIntArrayElements(strides, NULL); 779 jint* strides_array = jni()->GetIntArrayElements(strides, NULL);
781 strides_array[0] = frame->video_frame_buffer()->StrideY(); 780 strides_array[0] = frame->video_frame_buffer()->StrideY();
782 strides_array[1] = frame->video_frame_buffer()->StrideU(); 781 strides_array[1] = frame->video_frame_buffer()->StrideU();
783 strides_array[2] = frame->video_frame_buffer()->StrideV(); 782 strides_array[2] = frame->video_frame_buffer()->StrideV();
784 jni()->ReleaseIntArrayElements(strides, strides_array, 0); 783 jni()->ReleaseIntArrayElements(strides, strides_array, 0);
785 jobjectArray planes = jni()->NewObjectArray(3, *j_byte_buffer_class_, NULL); 784 jobjectArray planes = jni()->NewObjectArray(3, *j_byte_buffer_class_, NULL);
786 jobject y_buffer = jni()->NewDirectByteBuffer( 785 jobject y_buffer = jni()->NewDirectByteBuffer(
787 const_cast<uint8_t*>(frame->video_frame_buffer()->DataY()), 786 const_cast<uint8_t*>(frame->video_frame_buffer()->DataY()),
788 frame->video_frame_buffer()->StrideY() * 787 frame->video_frame_buffer()->StrideY() *
(...skipping 10 matching lines...) Expand all
799 jni()->SetObjectArrayElement(planes, 1, u_buffer); 798 jni()->SetObjectArrayElement(planes, 1, u_buffer);
800 jni()->SetObjectArrayElement(planes, 2, v_buffer); 799 jni()->SetObjectArrayElement(planes, 2, v_buffer);
801 return jni()->NewObject( 800 return jni()->NewObject(
802 *j_frame_class_, j_i420_frame_ctor_id_, 801 *j_frame_class_, j_i420_frame_ctor_id_,
803 frame->width(), frame->height(), 802 frame->width(), frame->height(),
804 static_cast<int>(frame->rotation()), 803 static_cast<int>(frame->rotation()),
805 strides, planes, javaShallowCopy(frame)); 804 strides, planes, javaShallowCopy(frame));
806 } 805 }
807 806
808 // Return a VideoRenderer.I420Frame referring texture object in |frame|. 807 // Return a VideoRenderer.I420Frame referring texture object in |frame|.
809 jobject CricketToJavaTextureFrame(const cricket::VideoFrame* frame) { 808 jobject CricketToJavaTextureFrame(const webrtc::VideoFrame* frame) {
810 NativeHandleImpl* handle = reinterpret_cast<NativeHandleImpl*>( 809 NativeHandleImpl* handle = reinterpret_cast<NativeHandleImpl*>(
811 frame->video_frame_buffer()->native_handle()); 810 frame->video_frame_buffer()->native_handle());
812 jfloatArray sampling_matrix = handle->sampling_matrix.ToJava(jni()); 811 jfloatArray sampling_matrix = handle->sampling_matrix.ToJava(jni());
813 812
814 return jni()->NewObject( 813 return jni()->NewObject(
815 *j_frame_class_, j_texture_frame_ctor_id_, 814 *j_frame_class_, j_texture_frame_ctor_id_,
816 frame->width(), frame->height(), 815 frame->width(), frame->height(),
817 static_cast<int>(frame->rotation()), 816 static_cast<int>(frame->rotation()),
818 handle->oes_texture_id, sampling_matrix, javaShallowCopy(frame)); 817 handle->oes_texture_id, sampling_matrix, javaShallowCopy(frame));
819 } 818 }
(...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after
944 JOW(void, MediaSource_free)(JNIEnv*, jclass, jlong j_p) { 943 JOW(void, MediaSource_free)(JNIEnv*, jclass, jlong j_p) {
945 reinterpret_cast<rtc::RefCountInterface*>(j_p)->Release(); 944 reinterpret_cast<rtc::RefCountInterface*>(j_p)->Release();
946 } 945 }
947 946
948 JOW(void, VideoRenderer_freeWrappedVideoRenderer)(JNIEnv*, jclass, jlong j_p) { 947 JOW(void, VideoRenderer_freeWrappedVideoRenderer)(JNIEnv*, jclass, jlong j_p) {
949 delete reinterpret_cast<JavaVideoRendererWrapper*>(j_p); 948 delete reinterpret_cast<JavaVideoRendererWrapper*>(j_p);
950 } 949 }
951 950
952 JOW(void, VideoRenderer_releaseNativeFrame)( 951 JOW(void, VideoRenderer_releaseNativeFrame)(
953 JNIEnv* jni, jclass, jlong j_frame_ptr) { 952 JNIEnv* jni, jclass, jlong j_frame_ptr) {
954 delete reinterpret_cast<const cricket::VideoFrame*>(j_frame_ptr); 953 delete reinterpret_cast<const webrtc::VideoFrame*>(j_frame_ptr);
955 } 954 }
956 955
957 JOW(void, MediaStreamTrack_free)(JNIEnv*, jclass, jlong j_p) { 956 JOW(void, MediaStreamTrack_free)(JNIEnv*, jclass, jlong j_p) {
958 reinterpret_cast<MediaStreamTrackInterface*>(j_p)->Release(); 957 reinterpret_cast<MediaStreamTrackInterface*>(j_p)->Release();
959 } 958 }
960 959
961 JOW(jboolean, MediaStream_nativeAddAudioTrack)( 960 JOW(jboolean, MediaStream_nativeAddAudioTrack)(
962 JNIEnv* jni, jclass, jlong pointer, jlong j_audio_track_pointer) { 961 JNIEnv* jni, jclass, jlong pointer, jlong j_audio_track_pointer) {
963 return reinterpret_cast<MediaStreamInterface*>(pointer)->AddTrack( 962 return reinterpret_cast<MediaStreamInterface*>(pointer)->AddTrack(
964 reinterpret_cast<AudioTrackInterface*>(j_audio_track_pointer)); 963 reinterpret_cast<AudioTrackInterface*>(j_audio_track_pointer));
(...skipping 1151 matching lines...) Expand 10 before | Expand all | Expand 10 after
2116 return reinterpret_cast<MediaStreamTrackInterface*>(j_p) 2115 return reinterpret_cast<MediaStreamTrackInterface*>(j_p)
2117 ->set_enabled(enabled); 2116 ->set_enabled(enabled);
2118 } 2117 }
2119 2118
2120 JOW(void, VideoTrack_nativeAddRenderer)( 2119 JOW(void, VideoTrack_nativeAddRenderer)(
2121 JNIEnv* jni, jclass, 2120 JNIEnv* jni, jclass,
2122 jlong j_video_track_pointer, jlong j_renderer_pointer) { 2121 jlong j_video_track_pointer, jlong j_renderer_pointer) {
2123 LOG(LS_INFO) << "VideoTrack::nativeAddRenderer"; 2122 LOG(LS_INFO) << "VideoTrack::nativeAddRenderer";
2124 reinterpret_cast<VideoTrackInterface*>(j_video_track_pointer) 2123 reinterpret_cast<VideoTrackInterface*>(j_video_track_pointer)
2125 ->AddOrUpdateSink( 2124 ->AddOrUpdateSink(
2126 reinterpret_cast<rtc::VideoSinkInterface<cricket::VideoFrame>*>( 2125 reinterpret_cast<rtc::VideoSinkInterface<webrtc::VideoFrame>*>(
2127 j_renderer_pointer), 2126 j_renderer_pointer),
2128 rtc::VideoSinkWants()); 2127 rtc::VideoSinkWants());
2129 } 2128 }
2130 2129
2131 JOW(void, VideoTrack_nativeRemoveRenderer)( 2130 JOW(void, VideoTrack_nativeRemoveRenderer)(
2132 JNIEnv* jni, jclass, 2131 JNIEnv* jni, jclass,
2133 jlong j_video_track_pointer, jlong j_renderer_pointer) { 2132 jlong j_video_track_pointer, jlong j_renderer_pointer) {
2134 reinterpret_cast<VideoTrackInterface*>(j_video_track_pointer) 2133 reinterpret_cast<VideoTrackInterface*>(j_video_track_pointer)
2135 ->RemoveSink( 2134 ->RemoveSink(
2136 reinterpret_cast<rtc::VideoSinkInterface<cricket::VideoFrame>*>( 2135 reinterpret_cast<rtc::VideoSinkInterface<webrtc::VideoFrame>*>(
2137 j_renderer_pointer)); 2136 j_renderer_pointer));
2138 } 2137 }
2139 2138
2140 JOW(jlong, CallSessionFileRotatingLogSink_nativeAddSink)( 2139 JOW(jlong, CallSessionFileRotatingLogSink_nativeAddSink)(
2141 JNIEnv* jni, jclass, 2140 JNIEnv* jni, jclass,
2142 jstring j_dirPath, jint j_maxFileSize, jint j_severity) { 2141 jstring j_dirPath, jint j_maxFileSize, jint j_severity) {
2143 std::string dir_path = JavaToStdString(jni, j_dirPath); 2142 std::string dir_path = JavaToStdString(jni, j_dirPath);
2144 rtc::CallSessionFileRotatingLogSink* sink = 2143 rtc::CallSessionFileRotatingLogSink* sink =
2145 new rtc::CallSessionFileRotatingLogSink(dir_path, j_maxFileSize); 2144 new rtc::CallSessionFileRotatingLogSink(dir_path, j_maxFileSize);
2146 if (!sink->Init()) { 2145 if (!sink->Init()) {
(...skipping 259 matching lines...) Expand 10 before | Expand all | Expand 10 after
2406 return JavaStringFromStdString( 2405 return JavaStringFromStdString(
2407 jni, 2406 jni,
2408 reinterpret_cast<RtpReceiverInterface*>(j_rtp_receiver_pointer)->id()); 2407 reinterpret_cast<RtpReceiverInterface*>(j_rtp_receiver_pointer)->id());
2409 } 2408 }
2410 2409
2411 JOW(void, RtpReceiver_free)(JNIEnv* jni, jclass, jlong j_rtp_receiver_pointer) { 2410 JOW(void, RtpReceiver_free)(JNIEnv* jni, jclass, jlong j_rtp_receiver_pointer) {
2412 reinterpret_cast<RtpReceiverInterface*>(j_rtp_receiver_pointer)->Release(); 2411 reinterpret_cast<RtpReceiverInterface*>(j_rtp_receiver_pointer)->Release();
2413 } 2412 }
2414 2413
2415 } // namespace webrtc_jni 2414 } // namespace webrtc_jni
OLDNEW
« no previous file with comments | « webrtc/api/android/java/src/org/webrtc/VideoRenderer.java ('k') | webrtc/api/androidvideotracksource.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698