OLD | NEW |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 |
OLD | NEW |