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

Unified Diff: talk/session/media/channel.cc

Issue 1363573002: Wire up transport sequence number / send time callbacks to webrtc via libjingle. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: No changes to const parameters. Created 5 years, 2 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 side-by-side diff with in-line comments
Download patch
Index: talk/session/media/channel.cc
diff --git a/talk/session/media/channel.cc b/talk/session/media/channel.cc
index fc998c2531e0d564447a359da9363d117ffe6d5c..4ff90569f17925e4ae89b9d5ae938421281a98a3 100644
--- a/talk/session/media/channel.cc
+++ b/talk/session/media/channel.cc
@@ -30,6 +30,7 @@
#include "talk/media/base/constants.h"
#include "talk/media/base/rtputils.h"
#include "webrtc/p2p/base/transportchannel.h"
+#include "talk/app/webrtc/mediacontroller.h"
#include "talk/session/media/channelmanager.h"
#include "webrtc/base/bind.h"
#include "webrtc/base/buffer.h"
@@ -37,6 +38,7 @@
#include "webrtc/base/common.h"
#include "webrtc/base/dscp.h"
#include "webrtc/base/logging.h"
+#include "webrtc/common_types.h"
namespace cricket {
@@ -171,12 +173,14 @@ void RtpSendParametersFromMediaDescription(
BaseChannel::BaseChannel(rtc::Thread* thread,
MediaChannel* media_channel,
+ webrtc::MediaControllerInterface* media_controller,
TransportController* transport_controller,
const std::string& content_name,
bool rtcp)
: worker_thread_(thread),
transport_controller_(transport_controller),
media_channel_(media_channel),
+ media_controller_(media_controller),
content_name_(content_name),
rtcp_transport_enabled_(rtcp),
transport_channel_(nullptr),
@@ -343,6 +347,7 @@ void BaseChannel::ConnectToTransportChannel(TransportChannel* tc) {
tc->SignalWritableState.connect(this, &BaseChannel::OnWritableState);
tc->SignalReadPacket.connect(this, &BaseChannel::OnChannelRead);
+ tc->SignalSentPacket.connect(this, &BaseChannel::OnPacketSent);
tc->SignalReadyToSend.connect(this, &BaseChannel::OnReadyToSend);
}
@@ -431,13 +436,13 @@ bool BaseChannel::IsReadyToSend() const {
}
bool BaseChannel::SendPacket(rtc::Buffer* packet,
- rtc::DiffServCodePoint dscp) {
- return SendPacket(false, packet, dscp);
+ const rtc::PacketOptions& options) {
+ return SendPacket(false, packet, options);
}
bool BaseChannel::SendRtcp(rtc::Buffer* packet,
- rtc::DiffServCodePoint dscp) {
- return SendPacket(true, packet, dscp);
+ const rtc::PacketOptions& options) {
+ return SendPacket(true, packet, options);
}
int BaseChannel::SetOption(SocketType type, rtc::Socket::Option opt,
@@ -477,6 +482,16 @@ void BaseChannel::OnChannelRead(TransportChannel* channel,
HandlePacket(rtcp, &packet, packet_time);
}
+void BaseChannel::OnPacketSent(TransportChannel* channel,
+ const rtc::SentPacket& sent_packet) {
+ if (!media_controller_)
+ return;
pthatcher1 2015/10/05 18:30:13 {}s please
stefan-webrtc 2015/10/07 16:55:25 This code has now been removed.
+ ASSERT(channel == transport_channel_ || channel == rtcp_transport_channel_);
+ webrtc::SentPacket webrtc_sent_packet(sent_packet.packet_id,
+ sent_packet.send_time_ms);
pthatcher1 2015/10/05 18:30:13 Similarly, can we have just one SentPacket struct?
+ media_controller_->OnPacketSent(webrtc_sent_packet);
pthatcher1 2015/10/05 18:30:13 Would it make sense for this to be media_controlle
+}
+
void BaseChannel::OnReadyToSend(TransportChannel* channel) {
ASSERT(channel == transport_channel_ || channel == rtcp_transport_channel_);
SetReadyToSend(channel == rtcp_transport_channel_, true);
@@ -506,8 +521,9 @@ bool BaseChannel::PacketIsRtcp(const TransportChannel* channel,
rtcp_mux_filter_.DemuxRtcp(data, static_cast<int>(len)));
}
-bool BaseChannel::SendPacket(bool rtcp, rtc::Buffer* packet,
- rtc::DiffServCodePoint dscp) {
+bool BaseChannel::SendPacket(bool rtcp,
+ rtc::Buffer* packet,
+ const rtc::PacketOptions& options) {
// SendPacket gets called from MediaEngine, typically on an encoder thread.
// If the thread is not our worker thread, we will post to our worker
// so that the real work happens on our worker. This avoids us having to
@@ -520,7 +536,7 @@ bool BaseChannel::SendPacket(bool rtcp, rtc::Buffer* packet,
int message_id = (!rtcp) ? MSG_RTPPACKET : MSG_RTCPPACKET;
PacketMessageData* data = new PacketMessageData;
data->packet = packet->Pass();
- data->dscp = dscp;
+ data->dscp = options.dscp;
worker_thread_->Post(this, message_id, data);
return true;
}
@@ -543,7 +559,8 @@ bool BaseChannel::SendPacket(bool rtcp, rtc::Buffer* packet,
return false;
}
- rtc::PacketOptions options(dscp);
+ rtc::PacketOptions updated_options;
+ updated_options = options;
// Protect if needed.
if (srtp_filter_.IsActive()) {
bool res;
@@ -559,21 +576,22 @@ bool BaseChannel::SendPacket(bool rtcp, rtc::Buffer* packet,
res = srtp_filter_.ProtectRtp(
data, len, static_cast<int>(packet->capacity()), &len);
#else
- options.packet_time_params.rtp_sendtime_extension_id =
+ updated_options.packet_time_params.rtp_sendtime_extension_id =
rtp_abs_sendtime_extn_id_;
res = srtp_filter_.ProtectRtp(
data, len, static_cast<int>(packet->capacity()), &len,
- &options.packet_time_params.srtp_packet_index);
+ &updated_options.packet_time_params.srtp_packet_index);
// If protection succeeds, let's get auth params from srtp.
if (res) {
uint8* auth_key = NULL;
int key_len;
res = srtp_filter_.GetRtpAuthParams(
- &auth_key, &key_len, &options.packet_time_params.srtp_auth_tag_len);
+ &auth_key, &key_len,
+ &updated_options.packet_time_params.srtp_auth_tag_len);
if (res) {
- options.packet_time_params.srtp_auth_key.resize(key_len);
- options.packet_time_params.srtp_auth_key.assign(auth_key,
- auth_key + key_len);
+ updated_options.packet_time_params.srtp_auth_key.resize(key_len);
+ updated_options.packet_time_params.srtp_auth_key.assign(
+ auth_key, auth_key + key_len);
}
}
#endif
@@ -1278,11 +1296,13 @@ void BaseChannel::FlushRtcpMessages() {
VoiceChannel::VoiceChannel(rtc::Thread* thread,
MediaEngineInterface* media_engine,
VoiceMediaChannel* media_channel,
+ webrtc::MediaControllerInterface* media_controller,
TransportController* transport_controller,
const std::string& content_name,
bool rtcp)
: BaseChannel(thread,
media_channel,
+ media_controller,
transport_controller,
content_name,
rtcp),
@@ -1596,11 +1616,13 @@ void VoiceChannel::GetSrtpCryptoSuiteNames(
VideoChannel::VideoChannel(rtc::Thread* thread,
VideoMediaChannel* media_channel,
+ webrtc::MediaControllerInterface* media_controller,
TransportController* transport_controller,
const std::string& content_name,
bool rtcp)
: BaseChannel(thread,
media_channel,
+ media_controller,
transport_controller,
content_name,
rtcp),
@@ -1991,6 +2013,7 @@ DataChannel::DataChannel(rtc::Thread* thread,
bool rtcp)
: BaseChannel(thread,
media_channel,
+ nullptr,
transport_controller,
content_name,
rtcp),

Powered by Google App Engine
This is Rietveld 408576698