< prev index next >

modules/javafx.web/src/main/native/Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp

Print this page




  18  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
  19  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
  20  * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
  21  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  22  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  23  */
  24 
  25 #include "config.h"
  26 #include "LibWebRTCMediaEndpoint.h"
  27 
  28 #if USE(LIBWEBRTC)
  29 
  30 #include "EventNames.h"
  31 #include "JSRTCStatsReport.h"
  32 #include "LibWebRTCDataChannelHandler.h"
  33 #include "LibWebRTCPeerConnectionBackend.h"
  34 #include "LibWebRTCProvider.h"
  35 #include "Logging.h"
  36 #include "MediaStreamEvent.h"
  37 #include "NotImplemented.h"

  38 #include "PlatformStrategies.h"
  39 #include "RTCDataChannel.h"
  40 #include "RTCDataChannelEvent.h"
  41 #include "RTCOfferOptions.h"
  42 #include "RTCPeerConnection.h"
  43 #include "RTCSessionDescription.h"
  44 #include "RTCStatsReport.h"
  45 #include "RTCTrackEvent.h"
  46 #include "RealtimeIncomingAudioSource.h"
  47 #include "RealtimeIncomingVideoSource.h"
  48 #include "RuntimeEnabledFeatures.h"
  49 #include <webrtc/base/physicalsocketserver.h>
  50 #include <webrtc/p2p/base/basicpacketsocketfactory.h>
  51 #include <webrtc/p2p/client/basicportallocator.h>
  52 #include <webrtc/pc/peerconnectionfactory.h>

  53 #include <wtf/MainThread.h>
  54 
  55 #include "CoreMediaSoftLink.h"
  56 
  57 namespace WebCore {
  58 
  59 LibWebRTCMediaEndpoint::LibWebRTCMediaEndpoint(LibWebRTCPeerConnectionBackend& peerConnection, LibWebRTCProvider& client)
  60     : m_peerConnectionBackend(peerConnection)
  61     , m_peerConnectionFactory(*client.factory())
  62     , m_createSessionDescriptionObserver(*this)
  63     , m_setLocalSessionDescriptionObserver(*this)
  64     , m_setRemoteSessionDescriptionObserver(*this)
  65     , m_statsLogTimer(*this, &LibWebRTCMediaEndpoint::gatherStatsForLogging)
  66 {
  67     ASSERT(client.factory());
  68 }
  69 
  70 bool LibWebRTCMediaEndpoint::setConfiguration(LibWebRTCProvider& client, webrtc::PeerConnectionInterface::RTCConfiguration&& configuration)
  71 {
  72     if (!m_backend) {


 286         if (protectedThis->m_backend)
 287             protectedThis->m_backend->GetStats(collector.get());
 288     });
 289 }
 290 
 291 LibWebRTCMediaEndpoint::StatsCollector::StatsCollector(Ref<LibWebRTCMediaEndpoint>&& endpoint, const DeferredPromise& promise, MediaStreamTrack* track)
 292     : m_endpoint(WTFMove(endpoint))
 293     , m_promise(promise)
 294 {
 295     if (track)
 296         m_id = track->id();
 297 }
 298 
 299 static inline String fromStdString(const std::string& value)
 300 {
 301     return String(value.data(), value.length());
 302 }
 303 
 304 static inline void fillRTCStats(RTCStatsReport::Stats& stats, const webrtc::RTCStats& rtcStats)
 305 {
 306     stats.timestamp = rtcStats.timestamp_us() / 1000.0;
 307     stats.id = fromStdString(rtcStats.id());
 308 }
 309 
 310 static inline void fillRTCRTPStreamStats(RTCStatsReport::RTCRTPStreamStats& stats, const webrtc::RTCRTPStreamStats& rtcStats)
 311 {
 312     fillRTCStats(stats, rtcStats);
 313 
 314     if (rtcStats.ssrc.is_defined())
 315         stats.ssrc = *rtcStats.ssrc;
 316     if (rtcStats.associate_stats_id.is_defined())
 317         stats.associateStatsId = fromStdString(*rtcStats.associate_stats_id);
 318     if (rtcStats.is_remote.is_defined())
 319         stats.isRemote = *rtcStats.is_remote;
 320     if (rtcStats.media_type.is_defined())
 321         stats.mediaType = fromStdString(*rtcStats.media_type);
 322     if (rtcStats.track_id.is_defined())
 323         stats.mediaTrackId = fromStdString(*rtcStats.track_id);
 324     if (rtcStats.transport_id.is_defined())
 325         stats.transportId = fromStdString(*rtcStats.transport_id);
 326     if (rtcStats.codec_id.is_defined())




  18  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
  19  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
  20  * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
  21  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  22  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  23  */
  24 
  25 #include "config.h"
  26 #include "LibWebRTCMediaEndpoint.h"
  27 
  28 #if USE(LIBWEBRTC)
  29 
  30 #include "EventNames.h"
  31 #include "JSRTCStatsReport.h"
  32 #include "LibWebRTCDataChannelHandler.h"
  33 #include "LibWebRTCPeerConnectionBackend.h"
  34 #include "LibWebRTCProvider.h"
  35 #include "Logging.h"
  36 #include "MediaStreamEvent.h"
  37 #include "NotImplemented.h"
  38 #include "Performance.h"
  39 #include "PlatformStrategies.h"
  40 #include "RTCDataChannel.h"
  41 #include "RTCDataChannelEvent.h"
  42 #include "RTCOfferOptions.h"
  43 #include "RTCPeerConnection.h"
  44 #include "RTCSessionDescription.h"
  45 #include "RTCStatsReport.h"
  46 #include "RTCTrackEvent.h"
  47 #include "RealtimeIncomingAudioSource.h"
  48 #include "RealtimeIncomingVideoSource.h"
  49 #include "RuntimeEnabledFeatures.h"
  50 #include <webrtc/base/physicalsocketserver.h>
  51 #include <webrtc/p2p/base/basicpacketsocketfactory.h>
  52 #include <webrtc/p2p/client/basicportallocator.h>
  53 #include <webrtc/pc/peerconnectionfactory.h>
  54 #include <wtf/CurrentTime.h>
  55 #include <wtf/MainThread.h>
  56 
  57 #include "CoreMediaSoftLink.h"
  58 
  59 namespace WebCore {
  60 
  61 LibWebRTCMediaEndpoint::LibWebRTCMediaEndpoint(LibWebRTCPeerConnectionBackend& peerConnection, LibWebRTCProvider& client)
  62     : m_peerConnectionBackend(peerConnection)
  63     , m_peerConnectionFactory(*client.factory())
  64     , m_createSessionDescriptionObserver(*this)
  65     , m_setLocalSessionDescriptionObserver(*this)
  66     , m_setRemoteSessionDescriptionObserver(*this)
  67     , m_statsLogTimer(*this, &LibWebRTCMediaEndpoint::gatherStatsForLogging)
  68 {
  69     ASSERT(client.factory());
  70 }
  71 
  72 bool LibWebRTCMediaEndpoint::setConfiguration(LibWebRTCProvider& client, webrtc::PeerConnectionInterface::RTCConfiguration&& configuration)
  73 {
  74     if (!m_backend) {


 288         if (protectedThis->m_backend)
 289             protectedThis->m_backend->GetStats(collector.get());
 290     });
 291 }
 292 
 293 LibWebRTCMediaEndpoint::StatsCollector::StatsCollector(Ref<LibWebRTCMediaEndpoint>&& endpoint, const DeferredPromise& promise, MediaStreamTrack* track)
 294     : m_endpoint(WTFMove(endpoint))
 295     , m_promise(promise)
 296 {
 297     if (track)
 298         m_id = track->id();
 299 }
 300 
 301 static inline String fromStdString(const std::string& value)
 302 {
 303     return String(value.data(), value.length());
 304 }
 305 
 306 static inline void fillRTCStats(RTCStatsReport::Stats& stats, const webrtc::RTCStats& rtcStats)
 307 {
 308     stats.timestamp = Performance::reduceTimeResolution(Seconds::fromMicroseconds(rtcStats.timestamp_us())).milliseconds();
 309     stats.id = fromStdString(rtcStats.id());
 310 }
 311 
 312 static inline void fillRTCRTPStreamStats(RTCStatsReport::RTCRTPStreamStats& stats, const webrtc::RTCRTPStreamStats& rtcStats)
 313 {
 314     fillRTCStats(stats, rtcStats);
 315 
 316     if (rtcStats.ssrc.is_defined())
 317         stats.ssrc = *rtcStats.ssrc;
 318     if (rtcStats.associate_stats_id.is_defined())
 319         stats.associateStatsId = fromStdString(*rtcStats.associate_stats_id);
 320     if (rtcStats.is_remote.is_defined())
 321         stats.isRemote = *rtcStats.is_remote;
 322     if (rtcStats.media_type.is_defined())
 323         stats.mediaType = fromStdString(*rtcStats.media_type);
 324     if (rtcStats.track_id.is_defined())
 325         stats.mediaTrackId = fromStdString(*rtcStats.track_id);
 326     if (rtcStats.transport_id.is_defined())
 327         stats.transportId = fromStdString(*rtcStats.transport_id);
 328     if (rtcStats.codec_id.is_defined())


< prev index next >