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