OLD | NEW |
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 Loading... |
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 Loading... |
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 1452 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1578 return ExtractNativePC(jni, j_pc)->AddStream( | 1582 return ExtractNativePC(jni, j_pc)->AddStream( |
1579 reinterpret_cast<MediaStreamInterface*>(native_stream)); | 1583 reinterpret_cast<MediaStreamInterface*>(native_stream)); |
1580 } | 1584 } |
1581 | 1585 |
1582 JOW(void, PeerConnection_nativeRemoveLocalStream)( | 1586 JOW(void, PeerConnection_nativeRemoveLocalStream)( |
1583 JNIEnv* jni, jobject j_pc, jlong native_stream) { | 1587 JNIEnv* jni, jobject j_pc, jlong native_stream) { |
1584 ExtractNativePC(jni, j_pc)->RemoveStream( | 1588 ExtractNativePC(jni, j_pc)->RemoveStream( |
1585 reinterpret_cast<MediaStreamInterface*>(native_stream)); | 1589 reinterpret_cast<MediaStreamInterface*>(native_stream)); |
1586 } | 1590 } |
1587 | 1591 |
| 1592 JOW(jobject, PeerConnection_getSenders)(JNIEnv* jni, jobject j_pc) { |
| 1593 jclass j_array_list_class = FindClass(jni, "java/util/ArrayList"); |
| 1594 jmethodID j_array_list_ctor = |
| 1595 GetMethodID(jni, j_array_list_class, "<init>", "(V)V"); |
| 1596 jmethodID j_array_list_add = |
| 1597 GetMethodID(jni, j_array_list_class, "add", "(java/lang/Object)Z"); |
| 1598 jobject j_senders = jni->NewObject(j_array_list_class, j_array_list_ctor); |
| 1599 |
| 1600 jclass j_rtp_sender_class = FindClass(jni, "org/webrtc/RtpSender"); |
| 1601 jmethodID j_rtp_sender_ctor = |
| 1602 GetMethodID(jni, j_rtp_sender_class, "<init>", "(J)V"); |
| 1603 |
| 1604 PeerConnectionInterface::RtpSenders senders = |
| 1605 ExtractNativePC(jni, j_pc)->GetSenders(); |
| 1606 |
| 1607 for (const auto& sender : senders) { |
| 1608 jlong nativeSenderPtr = jlongFromPointer(sender.get()); |
| 1609 jobject j_sender = |
| 1610 jni->NewObject(j_rtp_sender_class, j_rtp_sender_ctor, nativeSenderPtr); |
| 1611 CHECK_EXCEPTION(jni) << "error during NewObject"; |
| 1612 // Sender is now owned by Java object, and will be freed from there. |
| 1613 int bumped_count = sender->AddRef(); |
| 1614 jni->CallBooleanMethod(j_senders, j_array_list_add, j_sender); |
| 1615 } |
| 1616 return j_senders; |
| 1617 } |
| 1618 |
| 1619 JOW(jobject, PeerConnection_getReceivers)(JNIEnv* jni, jobject j_pc) { |
| 1620 } |
| 1621 |
1588 JOW(bool, PeerConnection_nativeGetStats)( | 1622 JOW(bool, PeerConnection_nativeGetStats)( |
1589 JNIEnv* jni, jobject j_pc, jobject j_observer, jlong native_track) { | 1623 JNIEnv* jni, jobject j_pc, jobject j_observer, jlong native_track) { |
1590 rtc::scoped_refptr<StatsObserverWrapper> observer( | 1624 rtc::scoped_refptr<StatsObserverWrapper> observer( |
1591 new rtc::RefCountedObject<StatsObserverWrapper>(jni, j_observer)); | 1625 new rtc::RefCountedObject<StatsObserverWrapper>(jni, j_observer)); |
1592 return ExtractNativePC(jni, j_pc)->GetStats( | 1626 return ExtractNativePC(jni, j_pc)->GetStats( |
1593 observer, | 1627 observer, |
1594 reinterpret_cast<MediaStreamTrackInterface*>(native_track), | 1628 reinterpret_cast<MediaStreamTrackInterface*>(native_track), |
1595 PeerConnectionInterface::kStatsOutputLevelStandard); | 1629 PeerConnectionInterface::kStatsOutputLevelStandard); |
1596 } | 1630 } |
1597 | 1631 |
(...skipping 221 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1819 size_t read = 0; | 1853 size_t read = 0; |
1820 rtc::scoped_ptr<jbyte> buffer(static_cast<jbyte*>(malloc(log_size))); | 1854 rtc::scoped_ptr<jbyte> buffer(static_cast<jbyte*>(malloc(log_size))); |
1821 stream->ReadAll(buffer.get(), log_size, &read, nullptr); | 1855 stream->ReadAll(buffer.get(), log_size, &read, nullptr); |
1822 | 1856 |
1823 jbyteArray result = jni->NewByteArray(read); | 1857 jbyteArray result = jni->NewByteArray(read); |
1824 jni->SetByteArrayRegion(result, 0, read, buffer.get()); | 1858 jni->SetByteArrayRegion(result, 0, read, buffer.get()); |
1825 | 1859 |
1826 return result; | 1860 return result; |
1827 } | 1861 } |
1828 | 1862 |
| 1863 JOW(void, RtpSender_nativeSetTrack)(JNIEnv* jni, |
| 1864 jclass, |
| 1865 jlong j_rtp_sender_pointer, |
| 1866 jlong j_track_pointer) { |
| 1867 reinterpret_cast<RtpSenderInterface*>(j_rtp_sender_pointer) |
| 1868 ->SetTrack(reinterpret_cast<MediaStreamTrackInterface*>(j_track_pointer)); |
| 1869 } |
| 1870 |
| 1871 JOW(jlong, RtpSender_nativeTrack)(JNIEnv* jni, |
| 1872 jclass, |
| 1873 jlong j_rtp_sender_pointer, |
| 1874 jlong j_track_pointer) { |
| 1875 return jlongFromPointer( |
| 1876 reinterpret_cast<RtpSenderInterface*>(j_rtp_sender_pointer) |
| 1877 ->track() |
| 1878 .release()); |
| 1879 } |
| 1880 |
| 1881 JOW(jstring, |
| 1882 RtpSender_nativeMid)(JNIEnv* jni, jclass, jlong j_rtp_sender_pointer) { |
| 1883 return JavaStringFromStdString( |
| 1884 jni, reinterpret_cast<RtpSenderInterface*>(j_rtp_sender_pointer)->mid()); |
| 1885 } |
| 1886 |
| 1887 JOW(void, RtpSender_free)(JNIEnv* jni, jclass, jlong j_rtp_sender_pointer) { |
| 1888 reinterpret_cast<RtpSenderInterface*>(j_rtp_sender_pointer)->Release(); |
| 1889 } |
| 1890 |
| 1891 JOW(jlong, RtpReceiver_nativeTrack)(JNIEnv* jni, |
| 1892 jclass, |
| 1893 jlong j_rtp_receiver_pointer, |
| 1894 jlong j_track_pointer) { |
| 1895 return jlongFromPointer( |
| 1896 reinterpret_cast<RtpReceiverInterface*>(j_rtp_receiver_pointer) |
| 1897 ->track() |
| 1898 .release()); |
| 1899 } |
| 1900 |
| 1901 JOW(jstring, |
| 1902 RtpReceiver_nativeMid)(JNIEnv* jni, jclass, jlong j_rtp_receiver_pointer) { |
| 1903 return JavaStringFromStdString(jni, reinterpret_cast<RtpReceiverInterface*>( |
| 1904 j_rtp_receiver_pointer)->mid()); |
| 1905 } |
| 1906 |
| 1907 JOW(void, RtpReceiver_free)(JNIEnv* jni, jclass, jlong j_rtp_receiver_pointer) { |
| 1908 reinterpret_cast<RtpReceiverInterface*>(j_rtp_receiver_pointer)->Release(); |
| 1909 } |
| 1910 |
1829 } // namespace webrtc_jni | 1911 } // namespace webrtc_jni |
OLD | NEW |