OLD | NEW |
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 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
99 using webrtc::PeerConnectionFactoryInterface; | 99 using webrtc::PeerConnectionFactoryInterface; |
100 using webrtc::PeerConnectionInterface; | 100 using webrtc::PeerConnectionInterface; |
101 using webrtc::PeerConnectionObserver; | 101 using webrtc::PeerConnectionObserver; |
102 using webrtc::RtpReceiverInterface; | 102 using webrtc::RtpReceiverInterface; |
103 using webrtc::RtpSenderInterface; | 103 using webrtc::RtpSenderInterface; |
104 using webrtc::SessionDescriptionInterface; | 104 using webrtc::SessionDescriptionInterface; |
105 using webrtc::SetSessionDescriptionObserver; | 105 using webrtc::SetSessionDescriptionObserver; |
106 using webrtc::StatsObserver; | 106 using webrtc::StatsObserver; |
107 using webrtc::StatsReport; | 107 using webrtc::StatsReport; |
108 using webrtc::StatsReports; | 108 using webrtc::StatsReports; |
109 using webrtc::VideoRendererInterface; | |
110 using webrtc::VideoTrackSourceInterface; | 109 using webrtc::VideoTrackSourceInterface; |
111 using webrtc::VideoTrackInterface; | 110 using webrtc::VideoTrackInterface; |
112 using webrtc::VideoTrackVector; | 111 using webrtc::VideoTrackVector; |
113 using webrtc::kVideoCodecVP8; | 112 using webrtc::kVideoCodecVP8; |
114 | 113 |
115 namespace webrtc_jni { | 114 namespace webrtc_jni { |
116 | 115 |
117 // Field trials initialization string | 116 // Field trials initialization string |
118 static char *field_trials_init_string = NULL; | 117 static char *field_trials_init_string = NULL; |
119 | 118 |
(...skipping 604 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
724 } | 723 } |
725 | 724 |
726 const ScopedGlobalRef<jobject> j_observer_global_; | 725 const ScopedGlobalRef<jobject> j_observer_global_; |
727 const ScopedGlobalRef<jclass> j_observer_class_; | 726 const ScopedGlobalRef<jclass> j_observer_class_; |
728 const ScopedGlobalRef<jclass> j_stats_report_class_; | 727 const ScopedGlobalRef<jclass> j_stats_report_class_; |
729 const jmethodID j_stats_report_ctor_; | 728 const jmethodID j_stats_report_ctor_; |
730 const ScopedGlobalRef<jclass> j_value_class_; | 729 const ScopedGlobalRef<jclass> j_value_class_; |
731 const jmethodID j_value_ctor_; | 730 const jmethodID j_value_ctor_; |
732 }; | 731 }; |
733 | 732 |
734 // Adapter presenting a cricket::VideoRenderer as a | 733 // Wrapper dispatching rtc::VideoSinkInterface to a Java VideoRenderer |
735 // webrtc::VideoRendererInterface. | |
736 class VideoRendererWrapper : public VideoRendererInterface { | |
737 public: | |
738 static VideoRendererWrapper* Create(cricket::VideoRenderer* renderer) { | |
739 if (renderer) | |
740 return new VideoRendererWrapper(renderer); | |
741 return NULL; | |
742 } | |
743 | |
744 virtual ~VideoRendererWrapper() {} | |
745 | |
746 void RenderFrame(const cricket::VideoFrame* video_frame) override { | |
747 ScopedLocalRefFrame local_ref_frame(AttachCurrentThreadIfNeeded()); | |
748 renderer_->RenderFrame(video_frame->GetCopyWithRotationApplied()); | |
749 } | |
750 | |
751 private: | |
752 explicit VideoRendererWrapper(cricket::VideoRenderer* renderer) | |
753 : renderer_(renderer) {} | |
754 scoped_ptr<cricket::VideoRenderer> renderer_; | |
755 }; | |
756 | |
757 // Wrapper dispatching webrtc::VideoRendererInterface to a Java VideoRenderer | |
758 // instance. | 734 // instance. |
759 class JavaVideoRendererWrapper : public VideoRendererInterface { | 735 class JavaVideoRendererWrapper |
| 736 : public rtc::VideoSinkInterface<cricket::VideoFrame> { |
760 public: | 737 public: |
761 JavaVideoRendererWrapper(JNIEnv* jni, jobject j_callbacks) | 738 JavaVideoRendererWrapper(JNIEnv* jni, jobject j_callbacks) |
762 : j_callbacks_(jni, j_callbacks), | 739 : j_callbacks_(jni, j_callbacks), |
763 j_render_frame_id_(GetMethodID( | 740 j_render_frame_id_(GetMethodID( |
764 jni, GetObjectClass(jni, j_callbacks), "renderFrame", | 741 jni, GetObjectClass(jni, j_callbacks), "renderFrame", |
765 "(Lorg/webrtc/VideoRenderer$I420Frame;)V")), | 742 "(Lorg/webrtc/VideoRenderer$I420Frame;)V")), |
766 j_frame_class_(jni, | 743 j_frame_class_(jni, |
767 FindClass(jni, "org/webrtc/VideoRenderer$I420Frame")), | 744 FindClass(jni, "org/webrtc/VideoRenderer$I420Frame")), |
768 j_i420_frame_ctor_id_(GetMethodID( | 745 j_i420_frame_ctor_id_(GetMethodID( |
769 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")), |
770 j_texture_frame_ctor_id_(GetMethodID( | 747 j_texture_frame_ctor_id_(GetMethodID( |
771 jni, *j_frame_class_, "<init>", | 748 jni, *j_frame_class_, "<init>", |
772 "(IIII[FJ)V")), | 749 "(IIII[FJ)V")), |
773 j_byte_buffer_class_(jni, FindClass(jni, "java/nio/ByteBuffer")) { | 750 j_byte_buffer_class_(jni, FindClass(jni, "java/nio/ByteBuffer")) { |
774 CHECK_EXCEPTION(jni); | 751 CHECK_EXCEPTION(jni); |
775 } | 752 } |
776 | 753 |
777 virtual ~JavaVideoRendererWrapper() {} | 754 virtual ~JavaVideoRendererWrapper() {} |
778 | 755 |
779 void RenderFrame(const cricket::VideoFrame* video_frame) override { | 756 void OnFrame(const cricket::VideoFrame& video_frame) override { |
780 ScopedLocalRefFrame local_ref_frame(jni()); | 757 ScopedLocalRefFrame local_ref_frame(jni()); |
781 jobject j_frame = (video_frame->GetNativeHandle() != nullptr) | 758 jobject j_frame = (video_frame.GetNativeHandle() != nullptr) |
782 ? CricketToJavaTextureFrame(video_frame) | 759 ? CricketToJavaTextureFrame(&video_frame) |
783 : CricketToJavaI420Frame(video_frame); | 760 : CricketToJavaI420Frame(&video_frame); |
784 // |j_callbacks_| is responsible for releasing |j_frame| with | 761 // |j_callbacks_| is responsible for releasing |j_frame| with |
785 // VideoRenderer.renderFrameDone(). | 762 // VideoRenderer.renderFrameDone(). |
786 jni()->CallVoidMethod(*j_callbacks_, j_render_frame_id_, j_frame); | 763 jni()->CallVoidMethod(*j_callbacks_, j_render_frame_id_, j_frame); |
787 CHECK_EXCEPTION(jni()); | 764 CHECK_EXCEPTION(jni()); |
788 } | 765 } |
789 | 766 |
790 private: | 767 private: |
791 // Make a shallow copy of |frame| to be used with Java. The callee has | 768 // Make a shallow copy of |frame| to be used with Java. The callee has |
792 // ownership of the frame, and the frame should be released with | 769 // ownership of the frame, and the frame should be released with |
793 // VideoRenderer.releaseNativeFrame(). | 770 // VideoRenderer.releaseNativeFrame(). |
(...skipping 1196 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1990 | 1967 |
1991 JOW(jboolean, MediaStreamTrack_nativeSetEnabled)( | 1968 JOW(jboolean, MediaStreamTrack_nativeSetEnabled)( |
1992 JNIEnv* jni, jclass, jlong j_p, jboolean enabled) { | 1969 JNIEnv* jni, jclass, jlong j_p, jboolean enabled) { |
1993 return reinterpret_cast<MediaStreamTrackInterface*>(j_p) | 1970 return reinterpret_cast<MediaStreamTrackInterface*>(j_p) |
1994 ->set_enabled(enabled); | 1971 ->set_enabled(enabled); |
1995 } | 1972 } |
1996 | 1973 |
1997 JOW(void, VideoTrack_nativeAddRenderer)( | 1974 JOW(void, VideoTrack_nativeAddRenderer)( |
1998 JNIEnv* jni, jclass, | 1975 JNIEnv* jni, jclass, |
1999 jlong j_video_track_pointer, jlong j_renderer_pointer) { | 1976 jlong j_video_track_pointer, jlong j_renderer_pointer) { |
2000 reinterpret_cast<VideoTrackInterface*>(j_video_track_pointer)->AddRenderer( | 1977 reinterpret_cast<VideoTrackInterface*>(j_video_track_pointer) |
2001 reinterpret_cast<VideoRendererInterface*>(j_renderer_pointer)); | 1978 ->AddOrUpdateSink( |
| 1979 reinterpret_cast<rtc::VideoSinkInterface<cricket::VideoFrame>*>( |
| 1980 j_renderer_pointer), |
| 1981 rtc::VideoSinkWants()); |
2002 } | 1982 } |
2003 | 1983 |
2004 JOW(void, VideoTrack_nativeRemoveRenderer)( | 1984 JOW(void, VideoTrack_nativeRemoveRenderer)( |
2005 JNIEnv* jni, jclass, | 1985 JNIEnv* jni, jclass, |
2006 jlong j_video_track_pointer, jlong j_renderer_pointer) { | 1986 jlong j_video_track_pointer, jlong j_renderer_pointer) { |
2007 reinterpret_cast<VideoTrackInterface*>(j_video_track_pointer)->RemoveRenderer( | 1987 reinterpret_cast<VideoTrackInterface*>(j_video_track_pointer) |
2008 reinterpret_cast<VideoRendererInterface*>(j_renderer_pointer)); | 1988 ->RemoveSink( |
| 1989 reinterpret_cast<rtc::VideoSinkInterface<cricket::VideoFrame>*>( |
| 1990 j_renderer_pointer)); |
2009 } | 1991 } |
2010 | 1992 |
2011 JOW(jlong, CallSessionFileRotatingLogSink_nativeAddSink)( | 1993 JOW(jlong, CallSessionFileRotatingLogSink_nativeAddSink)( |
2012 JNIEnv* jni, jclass, | 1994 JNIEnv* jni, jclass, |
2013 jstring j_dirPath, jint j_maxFileSize, jint j_severity) { | 1995 jstring j_dirPath, jint j_maxFileSize, jint j_severity) { |
2014 std::string dir_path = JavaToStdString(jni, j_dirPath); | 1996 std::string dir_path = JavaToStdString(jni, j_dirPath); |
2015 rtc::CallSessionFileRotatingLogSink* sink = | 1997 rtc::CallSessionFileRotatingLogSink* sink = |
2016 new rtc::CallSessionFileRotatingLogSink(dir_path, j_maxFileSize); | 1998 new rtc::CallSessionFileRotatingLogSink(dir_path, j_maxFileSize); |
2017 if (!sink->Init()) { | 1999 if (!sink->Init()) { |
2018 LOG_V(rtc::LoggingSeverity::LS_WARNING) << | 2000 LOG_V(rtc::LoggingSeverity::LS_WARNING) << |
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2103 return JavaStringFromStdString( | 2085 return JavaStringFromStdString( |
2104 jni, | 2086 jni, |
2105 reinterpret_cast<RtpReceiverInterface*>(j_rtp_receiver_pointer)->id()); | 2087 reinterpret_cast<RtpReceiverInterface*>(j_rtp_receiver_pointer)->id()); |
2106 } | 2088 } |
2107 | 2089 |
2108 JOW(void, RtpReceiver_free)(JNIEnv* jni, jclass, jlong j_rtp_receiver_pointer) { | 2090 JOW(void, RtpReceiver_free)(JNIEnv* jni, jclass, jlong j_rtp_receiver_pointer) { |
2109 reinterpret_cast<RtpReceiverInterface*>(j_rtp_receiver_pointer)->Release(); | 2091 reinterpret_cast<RtpReceiverInterface*>(j_rtp_receiver_pointer)->Release(); |
2110 } | 2092 } |
2111 | 2093 |
2112 } // namespace webrtc_jni | 2094 } // namespace webrtc_jni |
OLD | NEW |