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

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

Issue 2471783002: Revert of Delete all use of cricket::VideoFrame and cricket::WebRtcVideoFrame. (Closed)
Patch Set: 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<webrtc::VideoFrame> { 736 : public rtc::VideoSinkInterface<cricket::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 webrtc::VideoFrame& video_frame) override { 756 void OnFrame(const cricket::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 webrtc::VideoFrame* frame) { 772 static jlong javaShallowCopy(const cricket::VideoFrame* frame) {
773 return jlongFromPointer(new webrtc::VideoFrame(*frame)); 773 return jlongFromPointer(new cricket::WebRtcVideoFrame(
774 frame->video_frame_buffer(), frame->rotation(), frame->timestamp_us()));
774 } 775 }
775 776
776 // Return a VideoRenderer.I420Frame referring to the data in |frame|. 777 // Return a VideoRenderer.I420Frame referring to the data in |frame|.
777 jobject CricketToJavaI420Frame(const webrtc::VideoFrame* frame) { 778 jobject CricketToJavaI420Frame(const cricket::VideoFrame* frame) {
778 jintArray strides = jni()->NewIntArray(3); 779 jintArray strides = jni()->NewIntArray(3);
779 jint* strides_array = jni()->GetIntArrayElements(strides, NULL); 780 jint* strides_array = jni()->GetIntArrayElements(strides, NULL);
780 strides_array[0] = frame->video_frame_buffer()->StrideY(); 781 strides_array[0] = frame->video_frame_buffer()->StrideY();
781 strides_array[1] = frame->video_frame_buffer()->StrideU(); 782 strides_array[1] = frame->video_frame_buffer()->StrideU();
782 strides_array[2] = frame->video_frame_buffer()->StrideV(); 783 strides_array[2] = frame->video_frame_buffer()->StrideV();
783 jni()->ReleaseIntArrayElements(strides, strides_array, 0); 784 jni()->ReleaseIntArrayElements(strides, strides_array, 0);
784 jobjectArray planes = jni()->NewObjectArray(3, *j_byte_buffer_class_, NULL); 785 jobjectArray planes = jni()->NewObjectArray(3, *j_byte_buffer_class_, NULL);
785 jobject y_buffer = jni()->NewDirectByteBuffer( 786 jobject y_buffer = jni()->NewDirectByteBuffer(
786 const_cast<uint8_t*>(frame->video_frame_buffer()->DataY()), 787 const_cast<uint8_t*>(frame->video_frame_buffer()->DataY()),
787 frame->video_frame_buffer()->StrideY() * 788 frame->video_frame_buffer()->StrideY() *
(...skipping 10 matching lines...) Expand all
798 jni()->SetObjectArrayElement(planes, 1, u_buffer); 799 jni()->SetObjectArrayElement(planes, 1, u_buffer);
799 jni()->SetObjectArrayElement(planes, 2, v_buffer); 800 jni()->SetObjectArrayElement(planes, 2, v_buffer);
800 return jni()->NewObject( 801 return jni()->NewObject(
801 *j_frame_class_, j_i420_frame_ctor_id_, 802 *j_frame_class_, j_i420_frame_ctor_id_,
802 frame->width(), frame->height(), 803 frame->width(), frame->height(),
803 static_cast<int>(frame->rotation()), 804 static_cast<int>(frame->rotation()),
804 strides, planes, javaShallowCopy(frame)); 805 strides, planes, javaShallowCopy(frame));
805 } 806 }
806 807
807 // Return a VideoRenderer.I420Frame referring texture object in |frame|. 808 // Return a VideoRenderer.I420Frame referring texture object in |frame|.
808 jobject CricketToJavaTextureFrame(const webrtc::VideoFrame* frame) { 809 jobject CricketToJavaTextureFrame(const cricket::VideoFrame* frame) {
809 NativeHandleImpl* handle = reinterpret_cast<NativeHandleImpl*>( 810 NativeHandleImpl* handle = reinterpret_cast<NativeHandleImpl*>(
810 frame->video_frame_buffer()->native_handle()); 811 frame->video_frame_buffer()->native_handle());
811 jfloatArray sampling_matrix = handle->sampling_matrix.ToJava(jni()); 812 jfloatArray sampling_matrix = handle->sampling_matrix.ToJava(jni());
812 813
813 return jni()->NewObject( 814 return jni()->NewObject(
814 *j_frame_class_, j_texture_frame_ctor_id_, 815 *j_frame_class_, j_texture_frame_ctor_id_,
815 frame->width(), frame->height(), 816 frame->width(), frame->height(),
816 static_cast<int>(frame->rotation()), 817 static_cast<int>(frame->rotation()),
817 handle->oes_texture_id, sampling_matrix, javaShallowCopy(frame)); 818 handle->oes_texture_id, sampling_matrix, javaShallowCopy(frame));
818 } 819 }
(...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after
943 JOW(void, MediaSource_free)(JNIEnv*, jclass, jlong j_p) { 944 JOW(void, MediaSource_free)(JNIEnv*, jclass, jlong j_p) {
944 reinterpret_cast<rtc::RefCountInterface*>(j_p)->Release(); 945 reinterpret_cast<rtc::RefCountInterface*>(j_p)->Release();
945 } 946 }
946 947
947 JOW(void, VideoRenderer_freeWrappedVideoRenderer)(JNIEnv*, jclass, jlong j_p) { 948 JOW(void, VideoRenderer_freeWrappedVideoRenderer)(JNIEnv*, jclass, jlong j_p) {
948 delete reinterpret_cast<JavaVideoRendererWrapper*>(j_p); 949 delete reinterpret_cast<JavaVideoRendererWrapper*>(j_p);
949 } 950 }
950 951
951 JOW(void, VideoRenderer_releaseNativeFrame)( 952 JOW(void, VideoRenderer_releaseNativeFrame)(
952 JNIEnv* jni, jclass, jlong j_frame_ptr) { 953 JNIEnv* jni, jclass, jlong j_frame_ptr) {
953 delete reinterpret_cast<const webrtc::VideoFrame*>(j_frame_ptr); 954 delete reinterpret_cast<const cricket::VideoFrame*>(j_frame_ptr);
954 } 955 }
955 956
956 JOW(void, MediaStreamTrack_free)(JNIEnv*, jclass, jlong j_p) { 957 JOW(void, MediaStreamTrack_free)(JNIEnv*, jclass, jlong j_p) {
957 reinterpret_cast<MediaStreamTrackInterface*>(j_p)->Release(); 958 reinterpret_cast<MediaStreamTrackInterface*>(j_p)->Release();
958 } 959 }
959 960
960 JOW(jboolean, MediaStream_nativeAddAudioTrack)( 961 JOW(jboolean, MediaStream_nativeAddAudioTrack)(
961 JNIEnv* jni, jclass, jlong pointer, jlong j_audio_track_pointer) { 962 JNIEnv* jni, jclass, jlong pointer, jlong j_audio_track_pointer) {
962 return reinterpret_cast<MediaStreamInterface*>(pointer)->AddTrack( 963 return reinterpret_cast<MediaStreamInterface*>(pointer)->AddTrack(
963 reinterpret_cast<AudioTrackInterface*>(j_audio_track_pointer)); 964 reinterpret_cast<AudioTrackInterface*>(j_audio_track_pointer));
(...skipping 1151 matching lines...) Expand 10 before | Expand all | Expand 10 after
2115 return reinterpret_cast<MediaStreamTrackInterface*>(j_p) 2116 return reinterpret_cast<MediaStreamTrackInterface*>(j_p)
2116 ->set_enabled(enabled); 2117 ->set_enabled(enabled);
2117 } 2118 }
2118 2119
2119 JOW(void, VideoTrack_nativeAddRenderer)( 2120 JOW(void, VideoTrack_nativeAddRenderer)(
2120 JNIEnv* jni, jclass, 2121 JNIEnv* jni, jclass,
2121 jlong j_video_track_pointer, jlong j_renderer_pointer) { 2122 jlong j_video_track_pointer, jlong j_renderer_pointer) {
2122 LOG(LS_INFO) << "VideoTrack::nativeAddRenderer"; 2123 LOG(LS_INFO) << "VideoTrack::nativeAddRenderer";
2123 reinterpret_cast<VideoTrackInterface*>(j_video_track_pointer) 2124 reinterpret_cast<VideoTrackInterface*>(j_video_track_pointer)
2124 ->AddOrUpdateSink( 2125 ->AddOrUpdateSink(
2125 reinterpret_cast<rtc::VideoSinkInterface<webrtc::VideoFrame>*>( 2126 reinterpret_cast<rtc::VideoSinkInterface<cricket::VideoFrame>*>(
2126 j_renderer_pointer), 2127 j_renderer_pointer),
2127 rtc::VideoSinkWants()); 2128 rtc::VideoSinkWants());
2128 } 2129 }
2129 2130
2130 JOW(void, VideoTrack_nativeRemoveRenderer)( 2131 JOW(void, VideoTrack_nativeRemoveRenderer)(
2131 JNIEnv* jni, jclass, 2132 JNIEnv* jni, jclass,
2132 jlong j_video_track_pointer, jlong j_renderer_pointer) { 2133 jlong j_video_track_pointer, jlong j_renderer_pointer) {
2133 reinterpret_cast<VideoTrackInterface*>(j_video_track_pointer) 2134 reinterpret_cast<VideoTrackInterface*>(j_video_track_pointer)
2134 ->RemoveSink( 2135 ->RemoveSink(
2135 reinterpret_cast<rtc::VideoSinkInterface<webrtc::VideoFrame>*>( 2136 reinterpret_cast<rtc::VideoSinkInterface<cricket::VideoFrame>*>(
2136 j_renderer_pointer)); 2137 j_renderer_pointer));
2137 } 2138 }
2138 2139
2139 JOW(jlong, CallSessionFileRotatingLogSink_nativeAddSink)( 2140 JOW(jlong, CallSessionFileRotatingLogSink_nativeAddSink)(
2140 JNIEnv* jni, jclass, 2141 JNIEnv* jni, jclass,
2141 jstring j_dirPath, jint j_maxFileSize, jint j_severity) { 2142 jstring j_dirPath, jint j_maxFileSize, jint j_severity) {
2142 std::string dir_path = JavaToStdString(jni, j_dirPath); 2143 std::string dir_path = JavaToStdString(jni, j_dirPath);
2143 rtc::CallSessionFileRotatingLogSink* sink = 2144 rtc::CallSessionFileRotatingLogSink* sink =
2144 new rtc::CallSessionFileRotatingLogSink(dir_path, j_maxFileSize); 2145 new rtc::CallSessionFileRotatingLogSink(dir_path, j_maxFileSize);
2145 if (!sink->Init()) { 2146 if (!sink->Init()) {
(...skipping 259 matching lines...) Expand 10 before | Expand all | Expand 10 after
2405 return JavaStringFromStdString( 2406 return JavaStringFromStdString(
2406 jni, 2407 jni,
2407 reinterpret_cast<RtpReceiverInterface*>(j_rtp_receiver_pointer)->id()); 2408 reinterpret_cast<RtpReceiverInterface*>(j_rtp_receiver_pointer)->id());
2408 } 2409 }
2409 2410
2410 JOW(void, RtpReceiver_free)(JNIEnv* jni, jclass, jlong j_rtp_receiver_pointer) { 2411 JOW(void, RtpReceiver_free)(JNIEnv* jni, jclass, jlong j_rtp_receiver_pointer) {
2411 reinterpret_cast<RtpReceiverInterface*>(j_rtp_receiver_pointer)->Release(); 2412 reinterpret_cast<RtpReceiverInterface*>(j_rtp_receiver_pointer)->Release();
2412 } 2413 }
2413 2414
2414 } // namespace webrtc_jni 2415 } // 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