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

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

Issue 1817473002: Delete VideoRendererInterface. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Fix JavaVideoRendererWrapper. Created 4 years, 9 months 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 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
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
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698