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

Unified Diff: webrtc/voice_engine/test/auto_test/fixtures/after_initialization_fixture.h

Issue 1335353005: Remove channel ids from various interfaces. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: rebase 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 side-by-side diff with in-line comments
Download patch
Index: webrtc/voice_engine/test/auto_test/fixtures/after_initialization_fixture.h
diff --git a/webrtc/voice_engine/test/auto_test/fixtures/after_initialization_fixture.h b/webrtc/voice_engine/test/auto_test/fixtures/after_initialization_fixture.h
index cee5a58f8ec81d839b8db13f54dc0cdd3c1d63d3..11397c1c597ab9bde4a5633a25dd9994534d244a 100644
--- a/webrtc/voice_engine/test/auto_test/fixtures/after_initialization_fixture.h
+++ b/webrtc/voice_engine/test/auto_test/fixtures/after_initialization_fixture.h
@@ -15,6 +15,7 @@
#include "webrtc/base/scoped_ptr.h"
#include "webrtc/common_types.h"
+#include "webrtc/modules/rtp_rtcp/source/byte_io.h"
#include "webrtc/system_wrappers/interface/atomic32.h"
#include "webrtc/system_wrappers/interface/critical_section_wrapper.h"
#include "webrtc/system_wrappers/interface/event_wrapper.h"
@@ -26,24 +27,27 @@ class TestErrorObserver;
class LoopBackTransport : public webrtc::Transport {
public:
- LoopBackTransport(webrtc::VoENetwork* voe_network)
+ LoopBackTransport(webrtc::VoENetwork* voe_network, int channel)
: crit_(webrtc::CriticalSectionWrapper::CreateCriticalSection()),
packet_event_(webrtc::EventWrapper::Create()),
- thread_(webrtc::ThreadWrapper::CreateThread(
- NetworkProcess, this, "LoopBackTransport")),
- voe_network_(voe_network), transmitted_packets_(0) {
+ thread_(webrtc::ThreadWrapper::CreateThread(NetworkProcess,
+ this,
+ "LoopBackTransport")),
+ channel_(channel),
+ voe_network_(voe_network),
+ transmitted_packets_(0) {
thread_->Start();
}
~LoopBackTransport() { thread_->Stop(); }
- int SendPacket(int channel, const void* data, size_t len) override {
- StorePacket(Packet::Rtp, channel, data, len);
+ int SendPacket(const void* data, size_t len) override {
+ StorePacket(Packet::Rtp, data, len);
return static_cast<int>(len);
}
- int SendRTCPPacket(int channel, const void* data, size_t len) override {
- StorePacket(Packet::Rtcp, channel, data, len);
+ int SendRTCPPacket(const void* data, size_t len) override {
+ StorePacket(Packet::Rtcp, data, len);
return static_cast<int>(len);
}
@@ -57,28 +61,32 @@ class LoopBackTransport : public webrtc::Transport {
}
}
+ void AddChannel(uint32_t ssrc, int channel) {
+ webrtc::CriticalSectionScoped lock(crit_.get());
+ channels_[ssrc] = channel;
+ }
+
private:
struct Packet {
enum Type { Rtp, Rtcp, } type;
Packet() : len(0) {}
- Packet(Type type, int channel, const void* data, size_t len)
- : type(type), channel(channel), len(len) {
+ Packet(Type type, const void* data, size_t len)
+ : type(type), len(len) {
assert(len <= 1500);
memcpy(this->data, data, len);
}
- int channel;
uint8_t data[1500];
size_t len;
};
- void StorePacket(Packet::Type type, int channel,
+ void StorePacket(Packet::Type type,
const void* data,
size_t len) {
{
webrtc::CriticalSectionScoped lock(crit_.get());
- packet_queue_.push_back(Packet(type, channel, data, len));
+ packet_queue_.push_back(Packet(type, data, len));
}
packet_event_->Set();
}
@@ -100,21 +108,34 @@ class LoopBackTransport : public webrtc::Transport {
while (true) {
Packet p;
+ int channel = channel_;
{
webrtc::CriticalSectionScoped lock(crit_.get());
if (packet_queue_.empty())
break;
p = packet_queue_.front();
packet_queue_.pop_front();
+
+ if (p.type == Packet::Rtp) {
+ uint32_t ssrc =
+ webrtc::ByteReader<uint32_t>::ReadBigEndian(&p.data[8]);
+ if (channels_[ssrc] != 0)
+ channel = channels_[ssrc];
+ }
+ // TODO(pbos): Add RTCP SSRC muxing/demuxing if anything requires it.
}
+ // Minimum RTP header size.
+ if (p.len < 12)
+ continue;
+
switch (p.type) {
case Packet::Rtp:
- voe_network_->ReceivedRTPPacket(p.channel, p.data, p.len,
+ voe_network_->ReceivedRTPPacket(channel, p.data, p.len,
webrtc::PacketTime());
break;
case Packet::Rtcp:
- voe_network_->ReceivedRTCPPacket(p.channel, p.data, p.len);
+ voe_network_->ReceivedRTCPPacket(channel, p.data, p.len);
break;
}
++transmitted_packets_;
@@ -126,6 +147,8 @@ class LoopBackTransport : public webrtc::Transport {
const rtc::scoped_ptr<webrtc::EventWrapper> packet_event_;
const rtc::scoped_ptr<webrtc::ThreadWrapper> thread_;
std::deque<Packet> packet_queue_ GUARDED_BY(crit_.get());
+ const int channel_;
+ std::map<uint32_t, int> channels_ GUARDED_BY(crit_.get());
webrtc::VoENetwork* const voe_network_;
webrtc::Atomic32 transmitted_packets_;
};

Powered by Google App Engine
This is Rietveld 408576698