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

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

Issue 1351803002: Exposing RtpSenders and RtpReceivers from PeerConnection. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Created 5 years, 3 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 1452 matching lines...) Expand 10 before | Expand all | Expand 10 after
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
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
OLDNEW
« no previous file with comments | « no previous file | talk/app/webrtc/java/src/org/webrtc/PeerConnection.java » ('j') | talk/app/webrtc/mediastreamsignaling.h » ('J')

Powered by Google App Engine
This is Rietveld 408576698