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

Side by Side Diff: webrtc/pc/channel.cc

Issue 2863123002: Wire up BWE stats through WebrtcSession so that they are filled in both for audio and video calls. (Closed)
Patch Set: Comments addressed." Created 3 years, 6 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
« no previous file with comments | « webrtc/pc/channel.h ('k') | webrtc/pc/rtcstatscollector.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright 2004 The WebRTC project authors. All Rights Reserved. 2 * Copyright 2004 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 425 matching lines...) Expand 10 before | Expand all | Expand 10 after
436 436
437 bool BaseChannel::Enable(bool enable) { 437 bool BaseChannel::Enable(bool enable) {
438 worker_thread_->Invoke<void>( 438 worker_thread_->Invoke<void>(
439 RTC_FROM_HERE, 439 RTC_FROM_HERE,
440 Bind(enable ? &BaseChannel::EnableMedia_w : &BaseChannel::DisableMedia_w, 440 Bind(enable ? &BaseChannel::EnableMedia_w : &BaseChannel::DisableMedia_w,
441 this)); 441 this));
442 return true; 442 return true;
443 } 443 }
444 444
445 bool BaseChannel::AddRecvStream(const StreamParams& sp) { 445 bool BaseChannel::AddRecvStream(const StreamParams& sp) {
446 return InvokeOnWorker(RTC_FROM_HERE, 446 return InvokeOnWorker<bool>(RTC_FROM_HERE,
447 Bind(&BaseChannel::AddRecvStream_w, this, sp)); 447 Bind(&BaseChannel::AddRecvStream_w, this, sp));
448 } 448 }
449 449
450 bool BaseChannel::RemoveRecvStream(uint32_t ssrc) { 450 bool BaseChannel::RemoveRecvStream(uint32_t ssrc) {
451 return InvokeOnWorker(RTC_FROM_HERE, 451 return InvokeOnWorker<bool>(
452 Bind(&BaseChannel::RemoveRecvStream_w, this, ssrc)); 452 RTC_FROM_HERE, Bind(&BaseChannel::RemoveRecvStream_w, this, ssrc));
453 } 453 }
454 454
455 bool BaseChannel::AddSendStream(const StreamParams& sp) { 455 bool BaseChannel::AddSendStream(const StreamParams& sp) {
456 return InvokeOnWorker( 456 return InvokeOnWorker<bool>(
457 RTC_FROM_HERE, Bind(&MediaChannel::AddSendStream, media_channel(), sp)); 457 RTC_FROM_HERE, Bind(&MediaChannel::AddSendStream, media_channel(), sp));
458 } 458 }
459 459
460 bool BaseChannel::RemoveSendStream(uint32_t ssrc) { 460 bool BaseChannel::RemoveSendStream(uint32_t ssrc) {
461 return InvokeOnWorker(RTC_FROM_HERE, Bind(&MediaChannel::RemoveSendStream, 461 return InvokeOnWorker<bool>(
462 media_channel(), ssrc)); 462 RTC_FROM_HERE,
463 Bind(&MediaChannel::RemoveSendStream, media_channel(), ssrc));
463 } 464 }
464 465
465 bool BaseChannel::SetLocalContent(const MediaContentDescription* content, 466 bool BaseChannel::SetLocalContent(const MediaContentDescription* content,
466 ContentAction action, 467 ContentAction action,
467 std::string* error_desc) { 468 std::string* error_desc) {
468 TRACE_EVENT0("webrtc", "BaseChannel::SetLocalContent"); 469 TRACE_EVENT0("webrtc", "BaseChannel::SetLocalContent");
469 return InvokeOnWorker(RTC_FROM_HERE, Bind(&BaseChannel::SetLocalContent_w, 470 return InvokeOnWorker<bool>(
470 this, content, action, error_desc)); 471 RTC_FROM_HERE,
472 Bind(&BaseChannel::SetLocalContent_w, this, content, action, error_desc));
471 } 473 }
472 474
473 bool BaseChannel::SetRemoteContent(const MediaContentDescription* content, 475 bool BaseChannel::SetRemoteContent(const MediaContentDescription* content,
474 ContentAction action, 476 ContentAction action,
475 std::string* error_desc) { 477 std::string* error_desc) {
476 TRACE_EVENT0("webrtc", "BaseChannel::SetRemoteContent"); 478 TRACE_EVENT0("webrtc", "BaseChannel::SetRemoteContent");
477 return InvokeOnWorker(RTC_FROM_HERE, Bind(&BaseChannel::SetRemoteContent_w, 479 return InvokeOnWorker<bool>(
478 this, content, action, error_desc)); 480 RTC_FROM_HERE, Bind(&BaseChannel::SetRemoteContent_w, this, content,
481 action, error_desc));
479 } 482 }
480 483
481 void BaseChannel::StartConnectionMonitor(int cms) { 484 void BaseChannel::StartConnectionMonitor(int cms) {
482 // We pass in the BaseChannel instead of the rtp_dtls_transport_ 485 // We pass in the BaseChannel instead of the rtp_dtls_transport_
483 // because if the rtp_dtls_transport_ changes, the ConnectionMonitor 486 // because if the rtp_dtls_transport_ changes, the ConnectionMonitor
484 // would be pointing to the wrong TransportChannel. 487 // would be pointing to the wrong TransportChannel.
485 // We pass in the network thread because on that thread connection monitor 488 // We pass in the network thread because on that thread connection monitor
486 // will call BaseChannel::GetConnectionStats which must be called on the 489 // will call BaseChannel::GetConnectionStats which must be called on the
487 // network thread. 490 // network thread.
488 connection_monitor_.reset( 491 connection_monitor_.reset(
(...skipping 1009 matching lines...) Expand 10 before | Expand all | Expand 10 after
1498 StopMediaMonitor(); 1501 StopMediaMonitor();
1499 // this can't be done in the base class, since it calls a virtual 1502 // this can't be done in the base class, since it calls a virtual
1500 DisableMedia_w(); 1503 DisableMedia_w();
1501 Deinit(); 1504 Deinit();
1502 } 1505 }
1503 1506
1504 bool VoiceChannel::SetAudioSend(uint32_t ssrc, 1507 bool VoiceChannel::SetAudioSend(uint32_t ssrc,
1505 bool enable, 1508 bool enable,
1506 const AudioOptions* options, 1509 const AudioOptions* options,
1507 AudioSource* source) { 1510 AudioSource* source) {
1508 return InvokeOnWorker(RTC_FROM_HERE, 1511 return InvokeOnWorker<bool>(
1509 Bind(&VoiceMediaChannel::SetAudioSend, media_channel(), 1512 RTC_FROM_HERE, Bind(&VoiceMediaChannel::SetAudioSend, media_channel(),
1510 ssrc, enable, options, source)); 1513 ssrc, enable, options, source));
1511 } 1514 }
1512 1515
1513 // TODO(juberti): Handle early media the right way. We should get an explicit 1516 // TODO(juberti): Handle early media the right way. We should get an explicit
1514 // ringing message telling us to start playing local ringback, which we cancel 1517 // ringing message telling us to start playing local ringback, which we cancel
1515 // if any early media actually arrives. For now, we do the opposite, which is 1518 // if any early media actually arrives. For now, we do the opposite, which is
1516 // to wait 1 second for early media, and start playing local ringback if none 1519 // to wait 1 second for early media, and start playing local ringback if none
1517 // arrives. 1520 // arrives.
1518 void VoiceChannel::SetEarlyMedia(bool enable) { 1521 void VoiceChannel::SetEarlyMedia(bool enable) {
1519 if (enable) { 1522 if (enable) {
1520 // Start the early media timeout 1523 // Start the early media timeout
1521 worker_thread()->PostDelayed(RTC_FROM_HERE, kEarlyMediaTimeout, this, 1524 worker_thread()->PostDelayed(RTC_FROM_HERE, kEarlyMediaTimeout, this,
1522 MSG_EARLYMEDIATIMEOUT); 1525 MSG_EARLYMEDIATIMEOUT);
1523 } else { 1526 } else {
1524 // Stop the timeout if currently going. 1527 // Stop the timeout if currently going.
1525 worker_thread()->Clear(this, MSG_EARLYMEDIATIMEOUT); 1528 worker_thread()->Clear(this, MSG_EARLYMEDIATIMEOUT);
1526 } 1529 }
1527 } 1530 }
1528 1531
1529 bool VoiceChannel::CanInsertDtmf() { 1532 bool VoiceChannel::CanInsertDtmf() {
1530 return InvokeOnWorker( 1533 return InvokeOnWorker<bool>(
1531 RTC_FROM_HERE, Bind(&VoiceMediaChannel::CanInsertDtmf, media_channel())); 1534 RTC_FROM_HERE, Bind(&VoiceMediaChannel::CanInsertDtmf, media_channel()));
1532 } 1535 }
1533 1536
1534 bool VoiceChannel::InsertDtmf(uint32_t ssrc, 1537 bool VoiceChannel::InsertDtmf(uint32_t ssrc,
1535 int event_code, 1538 int event_code,
1536 int duration) { 1539 int duration) {
1537 return InvokeOnWorker(RTC_FROM_HERE, Bind(&VoiceChannel::InsertDtmf_w, this, 1540 return InvokeOnWorker<bool>(
1538 ssrc, event_code, duration)); 1541 RTC_FROM_HERE,
1542 Bind(&VoiceChannel::InsertDtmf_w, this, ssrc, event_code, duration));
1539 } 1543 }
1540 1544
1541 bool VoiceChannel::SetOutputVolume(uint32_t ssrc, double volume) { 1545 bool VoiceChannel::SetOutputVolume(uint32_t ssrc, double volume) {
1542 return InvokeOnWorker(RTC_FROM_HERE, Bind(&VoiceMediaChannel::SetOutputVolume, 1546 return InvokeOnWorker<bool>(
1543 media_channel(), ssrc, volume)); 1547 RTC_FROM_HERE,
1548 Bind(&VoiceMediaChannel::SetOutputVolume, media_channel(), ssrc, volume));
1544 } 1549 }
1545 1550
1546 void VoiceChannel::SetRawAudioSink( 1551 void VoiceChannel::SetRawAudioSink(
1547 uint32_t ssrc, 1552 uint32_t ssrc,
1548 std::unique_ptr<webrtc::AudioSinkInterface> sink) { 1553 std::unique_ptr<webrtc::AudioSinkInterface> sink) {
1549 // We need to work around Bind's lack of support for unique_ptr and ownership 1554 // We need to work around Bind's lack of support for unique_ptr and ownership
1550 // passing. So we invoke to our own little routine that gets a pointer to 1555 // passing. So we invoke to our own little routine that gets a pointer to
1551 // our local variable. This is OK since we're synchronously invoking. 1556 // our local variable. This is OK since we're synchronously invoking.
1552 InvokeOnWorker(RTC_FROM_HERE, 1557 InvokeOnWorker<bool>(RTC_FROM_HERE,
1553 Bind(&SetRawAudioSink_w, media_channel(), ssrc, &sink)); 1558 Bind(&SetRawAudioSink_w, media_channel(), ssrc, &sink));
1554 } 1559 }
1555 1560
1556 webrtc::RtpParameters VoiceChannel::GetRtpSendParameters(uint32_t ssrc) const { 1561 webrtc::RtpParameters VoiceChannel::GetRtpSendParameters(uint32_t ssrc) const {
1557 return worker_thread()->Invoke<webrtc::RtpParameters>( 1562 return worker_thread()->Invoke<webrtc::RtpParameters>(
1558 RTC_FROM_HERE, Bind(&VoiceChannel::GetRtpSendParameters_w, this, ssrc)); 1563 RTC_FROM_HERE, Bind(&VoiceChannel::GetRtpSendParameters_w, this, ssrc));
1559 } 1564 }
1560 1565
1561 webrtc::RtpParameters VoiceChannel::GetRtpSendParameters_w( 1566 webrtc::RtpParameters VoiceChannel::GetRtpSendParameters_w(
1562 uint32_t ssrc) const { 1567 uint32_t ssrc) const {
1563 return media_channel()->GetRtpSendParameters(ssrc); 1568 return media_channel()->GetRtpSendParameters(ssrc);
1564 } 1569 }
1565 1570
1566 bool VoiceChannel::SetRtpSendParameters( 1571 bool VoiceChannel::SetRtpSendParameters(
1567 uint32_t ssrc, 1572 uint32_t ssrc,
1568 const webrtc::RtpParameters& parameters) { 1573 const webrtc::RtpParameters& parameters) {
1569 return InvokeOnWorker( 1574 return InvokeOnWorker<bool>(
1570 RTC_FROM_HERE, 1575 RTC_FROM_HERE,
1571 Bind(&VoiceChannel::SetRtpSendParameters_w, this, ssrc, parameters)); 1576 Bind(&VoiceChannel::SetRtpSendParameters_w, this, ssrc, parameters));
1572 } 1577 }
1573 1578
1574 bool VoiceChannel::SetRtpSendParameters_w(uint32_t ssrc, 1579 bool VoiceChannel::SetRtpSendParameters_w(uint32_t ssrc,
1575 webrtc::RtpParameters parameters) { 1580 webrtc::RtpParameters parameters) {
1576 return media_channel()->SetRtpSendParameters(ssrc, parameters); 1581 return media_channel()->SetRtpSendParameters(ssrc, parameters);
1577 } 1582 }
1578 1583
1579 webrtc::RtpParameters VoiceChannel::GetRtpReceiveParameters( 1584 webrtc::RtpParameters VoiceChannel::GetRtpReceiveParameters(
1580 uint32_t ssrc) const { 1585 uint32_t ssrc) const {
1581 return worker_thread()->Invoke<webrtc::RtpParameters>( 1586 return worker_thread()->Invoke<webrtc::RtpParameters>(
1582 RTC_FROM_HERE, 1587 RTC_FROM_HERE,
1583 Bind(&VoiceChannel::GetRtpReceiveParameters_w, this, ssrc)); 1588 Bind(&VoiceChannel::GetRtpReceiveParameters_w, this, ssrc));
1584 } 1589 }
1585 1590
1586 webrtc::RtpParameters VoiceChannel::GetRtpReceiveParameters_w( 1591 webrtc::RtpParameters VoiceChannel::GetRtpReceiveParameters_w(
1587 uint32_t ssrc) const { 1592 uint32_t ssrc) const {
1588 return media_channel()->GetRtpReceiveParameters(ssrc); 1593 return media_channel()->GetRtpReceiveParameters(ssrc);
1589 } 1594 }
1590 1595
1591 bool VoiceChannel::SetRtpReceiveParameters( 1596 bool VoiceChannel::SetRtpReceiveParameters(
1592 uint32_t ssrc, 1597 uint32_t ssrc,
1593 const webrtc::RtpParameters& parameters) { 1598 const webrtc::RtpParameters& parameters) {
1594 return InvokeOnWorker( 1599 return InvokeOnWorker<bool>(
1595 RTC_FROM_HERE, 1600 RTC_FROM_HERE,
1596 Bind(&VoiceChannel::SetRtpReceiveParameters_w, this, ssrc, parameters)); 1601 Bind(&VoiceChannel::SetRtpReceiveParameters_w, this, ssrc, parameters));
1597 } 1602 }
1598 1603
1599 bool VoiceChannel::SetRtpReceiveParameters_w(uint32_t ssrc, 1604 bool VoiceChannel::SetRtpReceiveParameters_w(uint32_t ssrc,
1600 webrtc::RtpParameters parameters) { 1605 webrtc::RtpParameters parameters) {
1601 return media_channel()->SetRtpReceiveParameters(ssrc, parameters); 1606 return media_channel()->SetRtpReceiveParameters(ssrc, parameters);
1602 } 1607 }
1603 1608
1604 bool VoiceChannel::GetStats(VoiceMediaInfo* stats) { 1609 bool VoiceChannel::GetStats(VoiceMediaInfo* stats) {
1605 return InvokeOnWorker(RTC_FROM_HERE, Bind(&VoiceMediaChannel::GetStats, 1610 return InvokeOnWorker<bool>(RTC_FROM_HERE, Bind(&VoiceMediaChannel::GetStats,
1606 media_channel(), stats)); 1611 media_channel(), stats));
1607 } 1612 }
1608 1613
1609 std::vector<webrtc::RtpSource> VoiceChannel::GetSources(uint32_t ssrc) const { 1614 std::vector<webrtc::RtpSource> VoiceChannel::GetSources(uint32_t ssrc) const {
1610 return worker_thread()->Invoke<std::vector<webrtc::RtpSource>>( 1615 return worker_thread()->Invoke<std::vector<webrtc::RtpSource>>(
1611 RTC_FROM_HERE, 1616 RTC_FROM_HERE,
1612 Bind(&WebRtcVoiceMediaChannel::GetSources, 1617 Bind(&WebRtcVoiceMediaChannel::GetSources,
1613 static_cast<WebRtcVoiceMediaChannel*>(media_channel()), ssrc)); 1618 static_cast<WebRtcVoiceMediaChannel*>(media_channel()), ssrc));
1614 } 1619 }
1615 1620
1616 void VoiceChannel::StartMediaMonitor(int cms) { 1621 void VoiceChannel::StartMediaMonitor(int cms) {
(...skipping 298 matching lines...) Expand 10 before | Expand all | Expand 10 after
1915 RTC_FROM_HERE, 1920 RTC_FROM_HERE,
1916 Bind(&VideoMediaChannel::SetSink, media_channel(), ssrc, sink)); 1921 Bind(&VideoMediaChannel::SetSink, media_channel(), ssrc, sink));
1917 return true; 1922 return true;
1918 } 1923 }
1919 1924
1920 bool VideoChannel::SetVideoSend( 1925 bool VideoChannel::SetVideoSend(
1921 uint32_t ssrc, 1926 uint32_t ssrc,
1922 bool mute, 1927 bool mute,
1923 const VideoOptions* options, 1928 const VideoOptions* options,
1924 rtc::VideoSourceInterface<webrtc::VideoFrame>* source) { 1929 rtc::VideoSourceInterface<webrtc::VideoFrame>* source) {
1925 return InvokeOnWorker(RTC_FROM_HERE, 1930 return InvokeOnWorker<bool>(
1926 Bind(&VideoMediaChannel::SetVideoSend, media_channel(), 1931 RTC_FROM_HERE, Bind(&VideoMediaChannel::SetVideoSend, media_channel(),
1927 ssrc, mute, options, source)); 1932 ssrc, mute, options, source));
1928 } 1933 }
1929 1934
1930 webrtc::RtpParameters VideoChannel::GetRtpSendParameters(uint32_t ssrc) const { 1935 webrtc::RtpParameters VideoChannel::GetRtpSendParameters(uint32_t ssrc) const {
1931 return worker_thread()->Invoke<webrtc::RtpParameters>( 1936 return worker_thread()->Invoke<webrtc::RtpParameters>(
1932 RTC_FROM_HERE, Bind(&VideoChannel::GetRtpSendParameters_w, this, ssrc)); 1937 RTC_FROM_HERE, Bind(&VideoChannel::GetRtpSendParameters_w, this, ssrc));
1933 } 1938 }
1934 1939
1935 webrtc::RtpParameters VideoChannel::GetRtpSendParameters_w( 1940 webrtc::RtpParameters VideoChannel::GetRtpSendParameters_w(
1936 uint32_t ssrc) const { 1941 uint32_t ssrc) const {
1937 return media_channel()->GetRtpSendParameters(ssrc); 1942 return media_channel()->GetRtpSendParameters(ssrc);
1938 } 1943 }
1939 1944
1940 bool VideoChannel::SetRtpSendParameters( 1945 bool VideoChannel::SetRtpSendParameters(
1941 uint32_t ssrc, 1946 uint32_t ssrc,
1942 const webrtc::RtpParameters& parameters) { 1947 const webrtc::RtpParameters& parameters) {
1943 return InvokeOnWorker( 1948 return InvokeOnWorker<bool>(
1944 RTC_FROM_HERE, 1949 RTC_FROM_HERE,
1945 Bind(&VideoChannel::SetRtpSendParameters_w, this, ssrc, parameters)); 1950 Bind(&VideoChannel::SetRtpSendParameters_w, this, ssrc, parameters));
1946 } 1951 }
1947 1952
1948 bool VideoChannel::SetRtpSendParameters_w(uint32_t ssrc, 1953 bool VideoChannel::SetRtpSendParameters_w(uint32_t ssrc,
1949 webrtc::RtpParameters parameters) { 1954 webrtc::RtpParameters parameters) {
1950 return media_channel()->SetRtpSendParameters(ssrc, parameters); 1955 return media_channel()->SetRtpSendParameters(ssrc, parameters);
1951 } 1956 }
1952 1957
1953 webrtc::RtpParameters VideoChannel::GetRtpReceiveParameters( 1958 webrtc::RtpParameters VideoChannel::GetRtpReceiveParameters(
1954 uint32_t ssrc) const { 1959 uint32_t ssrc) const {
1955 return worker_thread()->Invoke<webrtc::RtpParameters>( 1960 return worker_thread()->Invoke<webrtc::RtpParameters>(
1956 RTC_FROM_HERE, 1961 RTC_FROM_HERE,
1957 Bind(&VideoChannel::GetRtpReceiveParameters_w, this, ssrc)); 1962 Bind(&VideoChannel::GetRtpReceiveParameters_w, this, ssrc));
1958 } 1963 }
1959 1964
1960 webrtc::RtpParameters VideoChannel::GetRtpReceiveParameters_w( 1965 webrtc::RtpParameters VideoChannel::GetRtpReceiveParameters_w(
1961 uint32_t ssrc) const { 1966 uint32_t ssrc) const {
1962 return media_channel()->GetRtpReceiveParameters(ssrc); 1967 return media_channel()->GetRtpReceiveParameters(ssrc);
1963 } 1968 }
1964 1969
1965 bool VideoChannel::SetRtpReceiveParameters( 1970 bool VideoChannel::SetRtpReceiveParameters(
1966 uint32_t ssrc, 1971 uint32_t ssrc,
1967 const webrtc::RtpParameters& parameters) { 1972 const webrtc::RtpParameters& parameters) {
1968 return InvokeOnWorker( 1973 return InvokeOnWorker<bool>(
1969 RTC_FROM_HERE, 1974 RTC_FROM_HERE,
1970 Bind(&VideoChannel::SetRtpReceiveParameters_w, this, ssrc, parameters)); 1975 Bind(&VideoChannel::SetRtpReceiveParameters_w, this, ssrc, parameters));
1971 } 1976 }
1972 1977
1973 bool VideoChannel::SetRtpReceiveParameters_w(uint32_t ssrc, 1978 bool VideoChannel::SetRtpReceiveParameters_w(uint32_t ssrc,
1974 webrtc::RtpParameters parameters) { 1979 webrtc::RtpParameters parameters) {
1975 return media_channel()->SetRtpReceiveParameters(ssrc, parameters); 1980 return media_channel()->SetRtpReceiveParameters(ssrc, parameters);
1976 } 1981 }
1977 1982
1978 void VideoChannel::UpdateMediaSendRecvState_w() { 1983 void VideoChannel::UpdateMediaSendRecvState_w() {
1979 // Send outgoing data if we're the active call, we have the remote content, 1984 // Send outgoing data if we're the active call, we have the remote content,
1980 // and we have had some form of connectivity. 1985 // and we have had some form of connectivity.
1981 bool send = IsReadyToSendMedia_w(); 1986 bool send = IsReadyToSendMedia_w();
1982 if (!media_channel()->SetSend(send)) { 1987 if (!media_channel()->SetSend(send)) {
1983 LOG(LS_ERROR) << "Failed to SetSend on video channel"; 1988 LOG(LS_ERROR) << "Failed to SetSend on video channel";
1984 // TODO(gangji): Report error back to server. 1989 // TODO(gangji): Report error back to server.
1985 } 1990 }
1986 1991
1987 LOG(LS_INFO) << "Changing video state, send=" << send; 1992 LOG(LS_INFO) << "Changing video state, send=" << send;
1988 } 1993 }
1989 1994
1995 void VideoChannel::FillBitrateInfo(BandwidthEstimationInfo* bwe_info) {
1996 InvokeOnWorker<void>(RTC_FROM_HERE, Bind(&VideoMediaChannel::FillBitrateInfo,
1997 media_channel(), bwe_info));
1998 }
1999
1990 bool VideoChannel::GetStats(VideoMediaInfo* stats) { 2000 bool VideoChannel::GetStats(VideoMediaInfo* stats) {
1991 return InvokeOnWorker(RTC_FROM_HERE, Bind(&VideoMediaChannel::GetStats, 2001 return InvokeOnWorker<bool>(RTC_FROM_HERE, Bind(&VideoMediaChannel::GetStats,
1992 media_channel(), stats)); 2002 media_channel(), stats));
1993 } 2003 }
1994 2004
1995 void VideoChannel::StartMediaMonitor(int cms) { 2005 void VideoChannel::StartMediaMonitor(int cms) {
1996 media_monitor_.reset(new VideoMediaMonitor(media_channel(), worker_thread(), 2006 media_monitor_.reset(new VideoMediaMonitor(media_channel(), worker_thread(),
1997 rtc::Thread::Current())); 2007 rtc::Thread::Current()));
1998 media_monitor_->SignalUpdate.connect( 2008 media_monitor_->SignalUpdate.connect(
1999 this, &VideoChannel::OnMediaMonitorUpdate); 2009 this, &VideoChannel::OnMediaMonitorUpdate);
2000 media_monitor_->Start(cms); 2010 media_monitor_->Start(cms);
2001 } 2011 }
2002 2012
(...skipping 169 matching lines...) Expand 10 before | Expand all | Expand 10 after
2172 media_channel()->SignalDataReceived.connect(this, 2182 media_channel()->SignalDataReceived.connect(this,
2173 &RtpDataChannel::OnDataReceived); 2183 &RtpDataChannel::OnDataReceived);
2174 media_channel()->SignalReadyToSend.connect( 2184 media_channel()->SignalReadyToSend.connect(
2175 this, &RtpDataChannel::OnDataChannelReadyToSend); 2185 this, &RtpDataChannel::OnDataChannelReadyToSend);
2176 return true; 2186 return true;
2177 } 2187 }
2178 2188
2179 bool RtpDataChannel::SendData(const SendDataParams& params, 2189 bool RtpDataChannel::SendData(const SendDataParams& params,
2180 const rtc::CopyOnWriteBuffer& payload, 2190 const rtc::CopyOnWriteBuffer& payload,
2181 SendDataResult* result) { 2191 SendDataResult* result) {
2182 return InvokeOnWorker( 2192 return InvokeOnWorker<bool>(
2183 RTC_FROM_HERE, Bind(&DataMediaChannel::SendData, media_channel(), params, 2193 RTC_FROM_HERE, Bind(&DataMediaChannel::SendData, media_channel(), params,
2184 payload, result)); 2194 payload, result));
2185 } 2195 }
2186 2196
2187 const ContentInfo* RtpDataChannel::GetFirstContent( 2197 const ContentInfo* RtpDataChannel::GetFirstContent(
2188 const SessionDescription* sdesc) { 2198 const SessionDescription* sdesc) {
2189 return GetFirstDataContent(sdesc); 2199 return GetFirstDataContent(sdesc);
2190 } 2200 }
2191 2201
2192 bool RtpDataChannel::CheckDataChannelTypeFromContent( 2202 bool RtpDataChannel::CheckDataChannelTypeFromContent(
(...skipping 207 matching lines...) Expand 10 before | Expand all | Expand 10 after
2400 2410
2401 void RtpDataChannel::OnDataChannelReadyToSend(bool writable) { 2411 void RtpDataChannel::OnDataChannelReadyToSend(bool writable) {
2402 // This is usded for congestion control to indicate that the stream is ready 2412 // This is usded for congestion control to indicate that the stream is ready
2403 // to send by the MediaChannel, as opposed to OnReadyToSend, which indicates 2413 // to send by the MediaChannel, as opposed to OnReadyToSend, which indicates
2404 // that the transport channel is ready. 2414 // that the transport channel is ready.
2405 signaling_thread()->Post(RTC_FROM_HERE, this, MSG_READYTOSENDDATA, 2415 signaling_thread()->Post(RTC_FROM_HERE, this, MSG_READYTOSENDDATA,
2406 new DataChannelReadyToSendMessageData(writable)); 2416 new DataChannelReadyToSendMessageData(writable));
2407 } 2417 }
2408 2418
2409 } // namespace cricket 2419 } // namespace cricket
OLDNEW
« no previous file with comments | « webrtc/pc/channel.h ('k') | webrtc/pc/rtcstatscollector.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698