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

Side by Side Diff: talk/app/webrtc/java/jni/peerconnection_jni.cc

Issue 1368143002: Java binding for RtpSender/RtpReceiver. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Getting rid of obsolete methods, and using unmodifiableList. Created 5 years, 2 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 * libjingle 2 * libjingle
3 * Copyright 2013 Google Inc. 3 * Copyright 2013 Google Inc.
4 * 4 *
5 * Redistribution and use in source and binary forms, with or without 5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are met: 6 * modification, are permitted provided that the following conditions are met:
7 * 7 *
8 * 1. Redistributions of source code must retain the above copyright notice, 8 * 1. Redistributions of source code must retain the above copyright notice,
9 * this list of conditions and the following disclaimer. 9 * this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright notice, 10 * 2. Redistributions in binary form must reproduce the above copyright notice,
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
57 #define JNIEXPORT __attribute__((visibility("default"))) 57 #define JNIEXPORT __attribute__((visibility("default")))
58 58
59 #include <limits> 59 #include <limits>
60 60
61 #include "talk/app/webrtc/java/jni/classreferenceholder.h" 61 #include "talk/app/webrtc/java/jni/classreferenceholder.h"
62 #include "talk/app/webrtc/java/jni/jni_helpers.h" 62 #include "talk/app/webrtc/java/jni/jni_helpers.h"
63 #include "talk/app/webrtc/java/jni/native_handle_impl.h" 63 #include "talk/app/webrtc/java/jni/native_handle_impl.h"
64 #include "talk/app/webrtc/dtlsidentitystore.h" 64 #include "talk/app/webrtc/dtlsidentitystore.h"
65 #include "talk/app/webrtc/mediaconstraintsinterface.h" 65 #include "talk/app/webrtc/mediaconstraintsinterface.h"
66 #include "talk/app/webrtc/peerconnectioninterface.h" 66 #include "talk/app/webrtc/peerconnectioninterface.h"
67 #include "talk/app/webrtc/rtpreceiverinterface.h"
68 #include "talk/app/webrtc/rtpsenderinterface.h"
67 #include "talk/app/webrtc/videosourceinterface.h" 69 #include "talk/app/webrtc/videosourceinterface.h"
68 #include "talk/media/base/videocapturer.h" 70 #include "talk/media/base/videocapturer.h"
69 #include "talk/media/base/videorenderer.h" 71 #include "talk/media/base/videorenderer.h"
70 #include "talk/media/devices/videorendererfactory.h" 72 #include "talk/media/devices/videorendererfactory.h"
71 #include "talk/media/webrtc/webrtcvideodecoderfactory.h" 73 #include "talk/media/webrtc/webrtcvideodecoderfactory.h"
72 #include "talk/media/webrtc/webrtcvideoencoderfactory.h" 74 #include "talk/media/webrtc/webrtcvideoencoderfactory.h"
73 #include "webrtc/base/bind.h" 75 #include "webrtc/base/bind.h"
74 #include "webrtc/base/checks.h" 76 #include "webrtc/base/checks.h"
75 #include "webrtc/base/logging.h" 77 #include "webrtc/base/logging.h"
76 #include "webrtc/base/logsinks.h" 78 #include "webrtc/base/logsinks.h"
(...skipping 29 matching lines...) Expand all
106 using webrtc::DataChannelInterface; 108 using webrtc::DataChannelInterface;
107 using webrtc::DataChannelObserver; 109 using webrtc::DataChannelObserver;
108 using webrtc::IceCandidateInterface; 110 using webrtc::IceCandidateInterface;
109 using webrtc::MediaConstraintsInterface; 111 using webrtc::MediaConstraintsInterface;
110 using webrtc::MediaSourceInterface; 112 using webrtc::MediaSourceInterface;
111 using webrtc::MediaStreamInterface; 113 using webrtc::MediaStreamInterface;
112 using webrtc::MediaStreamTrackInterface; 114 using webrtc::MediaStreamTrackInterface;
113 using webrtc::PeerConnectionFactoryInterface; 115 using webrtc::PeerConnectionFactoryInterface;
114 using webrtc::PeerConnectionInterface; 116 using webrtc::PeerConnectionInterface;
115 using webrtc::PeerConnectionObserver; 117 using webrtc::PeerConnectionObserver;
118 using webrtc::RtpReceiverInterface;
119 using webrtc::RtpSenderInterface;
116 using webrtc::SessionDescriptionInterface; 120 using webrtc::SessionDescriptionInterface;
117 using webrtc::SetSessionDescriptionObserver; 121 using webrtc::SetSessionDescriptionObserver;
118 using webrtc::StatsObserver; 122 using webrtc::StatsObserver;
119 using webrtc::StatsReport; 123 using webrtc::StatsReport;
120 using webrtc::StatsReports; 124 using webrtc::StatsReports;
121 using webrtc::VideoRendererInterface; 125 using webrtc::VideoRendererInterface;
122 using webrtc::VideoSourceInterface; 126 using webrtc::VideoSourceInterface;
123 using webrtc::VideoTrackInterface; 127 using webrtc::VideoTrackInterface;
124 using webrtc::VideoTrackVector; 128 using webrtc::VideoTrackVector;
125 using webrtc::kVideoCodecVP8; 129 using webrtc::kVideoCodecVP8;
(...skipping 838 matching lines...) Expand 10 before | Expand all | Expand 10 after
964 JOW(void, VideoRenderer_freeWrappedVideoRenderer)(JNIEnv*, jclass, jlong j_p) { 968 JOW(void, VideoRenderer_freeWrappedVideoRenderer)(JNIEnv*, jclass, jlong j_p) {
965 delete reinterpret_cast<JavaVideoRendererWrapper*>(j_p); 969 delete reinterpret_cast<JavaVideoRendererWrapper*>(j_p);
966 } 970 }
967 971
968 JOW(void, VideoRenderer_releaseNativeFrame)( 972 JOW(void, VideoRenderer_releaseNativeFrame)(
969 JNIEnv* jni, jclass, jlong j_frame_ptr) { 973 JNIEnv* jni, jclass, jlong j_frame_ptr) {
970 delete reinterpret_cast<const cricket::VideoFrame*>(j_frame_ptr); 974 delete reinterpret_cast<const cricket::VideoFrame*>(j_frame_ptr);
971 } 975 }
972 976
973 JOW(void, MediaStreamTrack_free)(JNIEnv*, jclass, jlong j_p) { 977 JOW(void, MediaStreamTrack_free)(JNIEnv*, jclass, jlong j_p) {
974 CHECK_RELEASE(reinterpret_cast<MediaStreamTrackInterface*>(j_p)); 978 reinterpret_cast<MediaStreamTrackInterface*>(j_p)->Release();
975 } 979 }
976 980
977 JOW(jboolean, MediaStream_nativeAddAudioTrack)( 981 JOW(jboolean, MediaStream_nativeAddAudioTrack)(
978 JNIEnv* jni, jclass, jlong pointer, jlong j_audio_track_pointer) { 982 JNIEnv* jni, jclass, jlong pointer, jlong j_audio_track_pointer) {
979 return reinterpret_cast<MediaStreamInterface*>(pointer)->AddTrack( 983 return reinterpret_cast<MediaStreamInterface*>(pointer)->AddTrack(
980 reinterpret_cast<AudioTrackInterface*>(j_audio_track_pointer)); 984 reinterpret_cast<AudioTrackInterface*>(j_audio_track_pointer));
981 } 985 }
982 986
983 JOW(jboolean, MediaStream_nativeAddVideoTrack)( 987 JOW(jboolean, MediaStream_nativeAddVideoTrack)(
984 JNIEnv* jni, jclass, jlong pointer, jlong j_video_track_pointer) { 988 JNIEnv* jni, jclass, jlong pointer, jlong j_video_track_pointer) {
(...skipping 634 matching lines...) Expand 10 before | Expand all | Expand 10 after
1619 return ExtractNativePC(jni, j_pc)->AddStream( 1623 return ExtractNativePC(jni, j_pc)->AddStream(
1620 reinterpret_cast<MediaStreamInterface*>(native_stream)); 1624 reinterpret_cast<MediaStreamInterface*>(native_stream));
1621 } 1625 }
1622 1626
1623 JOW(void, PeerConnection_nativeRemoveLocalStream)( 1627 JOW(void, PeerConnection_nativeRemoveLocalStream)(
1624 JNIEnv* jni, jobject j_pc, jlong native_stream) { 1628 JNIEnv* jni, jobject j_pc, jlong native_stream) {
1625 ExtractNativePC(jni, j_pc)->RemoveStream( 1629 ExtractNativePC(jni, j_pc)->RemoveStream(
1626 reinterpret_cast<MediaStreamInterface*>(native_stream)); 1630 reinterpret_cast<MediaStreamInterface*>(native_stream));
1627 } 1631 }
1628 1632
1633 JOW(jobject, PeerConnection_nativeGetSenders)(JNIEnv* jni, jobject j_pc) {
1634 jclass j_array_list_class = FindClass(jni, "java/util/ArrayList");
1635 jmethodID j_array_list_ctor =
1636 GetMethodID(jni, j_array_list_class, "<init>", "()V");
1637 jmethodID j_array_list_add =
1638 GetMethodID(jni, j_array_list_class, "add", "(Ljava/lang/Object;)Z");
1639 jobject j_senders = jni->NewObject(j_array_list_class, j_array_list_ctor);
1640 CHECK_EXCEPTION(jni) << "error during NewObject";
1641
1642 jclass j_rtp_sender_class = FindClass(jni, "org/webrtc/RtpSender");
1643 jmethodID j_rtp_sender_ctor =
1644 GetMethodID(jni, j_rtp_sender_class, "<init>", "(J)V");
1645
1646 auto senders = ExtractNativePC(jni, j_pc)->GetSenders();
1647 for (const auto& sender : senders) {
1648 jlong nativeSenderPtr = jlongFromPointer(sender.get());
1649 jobject j_sender =
1650 jni->NewObject(j_rtp_sender_class, j_rtp_sender_ctor, nativeSenderPtr);
1651 CHECK_EXCEPTION(jni) << "error during NewObject";
1652 // Sender is now owned by Java object, and will be freed from there.
1653 sender->AddRef();
1654 jni->CallBooleanMethod(j_senders, j_array_list_add, j_sender);
1655 CHECK_EXCEPTION(jni) << "error during CallBooleanMethod";
1656 }
1657 return j_senders;
1658 }
1659
1660 JOW(jobject, PeerConnection_nativeGetReceivers)(JNIEnv* jni, jobject j_pc) {
1661 jclass j_array_list_class = FindClass(jni, "java/util/ArrayList");
1662 jmethodID j_array_list_ctor =
1663 GetMethodID(jni, j_array_list_class, "<init>", "()V");
1664 jmethodID j_array_list_add =
1665 GetMethodID(jni, j_array_list_class, "add", "(Ljava/lang/Object;)Z");
1666 jobject j_receivers = jni->NewObject(j_array_list_class, j_array_list_ctor);
1667 CHECK_EXCEPTION(jni) << "error during NewObject";
1668
1669 jclass j_rtp_receiver_class = FindClass(jni, "org/webrtc/RtpReceiver");
1670 jmethodID j_rtp_receiver_ctor =
1671 GetMethodID(jni, j_rtp_receiver_class, "<init>", "(J)V");
1672
1673 auto receivers = ExtractNativePC(jni, j_pc)->GetReceivers();
1674 for (const auto& receiver : receivers) {
1675 jlong nativeReceiverPtr = jlongFromPointer(receiver.get());
1676 jobject j_receiver = jni->NewObject(j_rtp_receiver_class,
1677 j_rtp_receiver_ctor, nativeReceiverPtr);
1678 CHECK_EXCEPTION(jni) << "error during NewObject";
1679 // Receiver is now owned by Java object, and will be freed from there.
1680 receiver->AddRef();
1681 jni->CallBooleanMethod(j_receivers, j_array_list_add, j_receiver);
1682 CHECK_EXCEPTION(jni) << "error during CallBooleanMethod";
1683 }
1684 return j_receivers;
1685 }
1686
1629 JOW(bool, PeerConnection_nativeGetStats)( 1687 JOW(bool, PeerConnection_nativeGetStats)(
1630 JNIEnv* jni, jobject j_pc, jobject j_observer, jlong native_track) { 1688 JNIEnv* jni, jobject j_pc, jobject j_observer, jlong native_track) {
1631 rtc::scoped_refptr<StatsObserverWrapper> observer( 1689 rtc::scoped_refptr<StatsObserverWrapper> observer(
1632 new rtc::RefCountedObject<StatsObserverWrapper>(jni, j_observer)); 1690 new rtc::RefCountedObject<StatsObserverWrapper>(jni, j_observer));
1633 return ExtractNativePC(jni, j_pc)->GetStats( 1691 return ExtractNativePC(jni, j_pc)->GetStats(
1634 observer, 1692 observer,
1635 reinterpret_cast<MediaStreamTrackInterface*>(native_track), 1693 reinterpret_cast<MediaStreamTrackInterface*>(native_track),
1636 PeerConnectionInterface::kStatsOutputLevelStandard); 1694 PeerConnectionInterface::kStatsOutputLevelStandard);
1637 } 1695 }
1638 1696
(...skipping 225 matching lines...) Expand 10 before | Expand all | Expand 10 after
1864 size_t read = 0; 1922 size_t read = 0;
1865 rtc::scoped_ptr<jbyte> buffer(static_cast<jbyte*>(malloc(log_size))); 1923 rtc::scoped_ptr<jbyte> buffer(static_cast<jbyte*>(malloc(log_size)));
1866 stream->ReadAll(buffer.get(), log_size, &read, nullptr); 1924 stream->ReadAll(buffer.get(), log_size, &read, nullptr);
1867 1925
1868 jbyteArray result = jni->NewByteArray(read); 1926 jbyteArray result = jni->NewByteArray(read);
1869 jni->SetByteArrayRegion(result, 0, read, buffer.get()); 1927 jni->SetByteArrayRegion(result, 0, read, buffer.get());
1870 1928
1871 return result; 1929 return result;
1872 } 1930 }
1873 1931
1932 JOW(void, RtpSender_nativeSetTrack)(JNIEnv* jni,
1933 jclass,
1934 jlong j_rtp_sender_pointer,
1935 jlong j_track_pointer) {
1936 reinterpret_cast<RtpSenderInterface*>(j_rtp_sender_pointer)
1937 ->SetTrack(reinterpret_cast<MediaStreamTrackInterface*>(j_track_pointer));
1938 }
1939
1940 JOW(jlong, RtpSender_nativeGetTrack)(JNIEnv* jni,
1941 jclass,
1942 jlong j_rtp_sender_pointer,
1943 jlong j_track_pointer) {
1944 return jlongFromPointer(
1945 reinterpret_cast<RtpSenderInterface*>(j_rtp_sender_pointer)
1946 ->track()
1947 .release());
1948 }
1949
1950 JOW(jstring, RtpSender_nativeId)(
1951 JNIEnv* jni, jclass, jlong j_rtp_sender_pointer) {
1952 return JavaStringFromStdString(
1953 jni, reinterpret_cast<RtpSenderInterface*>(j_rtp_sender_pointer)->id());
1954 }
1955
1956 JOW(void, RtpSender_free)(JNIEnv* jni, jclass, jlong j_rtp_sender_pointer) {
1957 reinterpret_cast<RtpSenderInterface*>(j_rtp_sender_pointer)->Release();
1958 }
1959
1960 JOW(jlong, RtpReceiver_nativeGetTrack)(JNIEnv* jni,
1961 jclass,
1962 jlong j_rtp_receiver_pointer,
1963 jlong j_track_pointer) {
1964 return jlongFromPointer(
1965 reinterpret_cast<RtpReceiverInterface*>(j_rtp_receiver_pointer)
1966 ->track()
1967 .release());
1968 }
1969
1970 JOW(jstring, RtpReceiver_nativeId)(
1971 JNIEnv* jni, jclass, jlong j_rtp_receiver_pointer) {
1972 return JavaStringFromStdString(
1973 jni,
1974 reinterpret_cast<RtpReceiverInterface*>(j_rtp_receiver_pointer)->id());
1975 }
1976
1977 JOW(void, RtpReceiver_free)(JNIEnv* jni, jclass, jlong j_rtp_receiver_pointer) {
1978 reinterpret_cast<RtpReceiverInterface*>(j_rtp_receiver_pointer)->Release();
1979 }
1980
1874 } // namespace webrtc_jni 1981 } // namespace webrtc_jni
OLDNEW
« no previous file with comments | « talk/app/webrtc/java/jni/classreferenceholder.cc ('k') | talk/app/webrtc/java/src/org/webrtc/PeerConnection.java » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698