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

Unified Diff: webrtc/video/rtc_event_log_unittest.cc

Issue 1257163003: Changed LogRtpHeader to read the header length from the packet (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Created 5 years, 5 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
« webrtc/video/rtc_event_log.cc ('K') | « webrtc/video/rtc_event_log.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: webrtc/video/rtc_event_log_unittest.cc
diff --git a/webrtc/video/rtc_event_log_unittest.cc b/webrtc/video/rtc_event_log_unittest.cc
index 0c18e750cc79cbd5938890211b8b64d43ee45135..44c05d7e6093c7a7267b7074e3a07f2d8948c966 100644
--- a/webrtc/video/rtc_event_log_unittest.cc
+++ b/webrtc/video/rtc_event_log_unittest.cc
@@ -18,6 +18,7 @@
#include "webrtc/base/checks.h"
#include "webrtc/base/scoped_ptr.h"
#include "webrtc/call.h"
+#include "webrtc/modules/rtp_rtcp/source/rtp_sender.h"
#include "webrtc/system_wrappers/interface/clock.h"
#include "webrtc/test/test_suite.h"
#include "webrtc/test/testsupport/fileutils.h"
@@ -254,6 +255,61 @@ void VerifyLogStartEvent(const rtclog::Event& event) {
EXPECT_EQ(rtclog::DebugEvent::LOG_START, debug_event.type());
}
+size_t GenerateRtpPacket(uint8_t* packet, size_t packet_size) {
+ Clock* clock = Clock::GetRealTimeClock();
+
+ RTPSender rtp_sender(rand(), // int32_t id
hlundin-webrtc 2015/08/04 09:43:50 Use 0 as id instead. This test is not for testing
terelius 2015/08/12 13:12:40 Done.
+ false, // bool audio
+ clock, // Clock* clock
+ nullptr, // Transport*
+ nullptr, // RtpAudioFeedback*
+ nullptr, // PacedSender*
+ nullptr, // BitrateStatisticsObserver*
+ nullptr, // FrameCountObserver*
+ nullptr); // SendSideDelayObserver*
+
+ std::vector<uint32_t> csrcs;
+ csrcs.push_back(rand());
+ rtp_sender.SetCsrcs(csrcs);
+ rtp_sender.SetSSRC(rand());
+ rtp_sender.SetStartTimestamp(rand(), true);
+ rtp_sender.SetSequenceNumber(rand());
+
+ RTPExtensionType extension_types[] = {
+ RTPExtensionType::kRtpExtensionTransmissionTimeOffset,
+ RTPExtensionType::kRtpExtensionAudioLevel,
+ RTPExtensionType::kRtpExtensionAbsoluteSendTime,
+ RTPExtensionType::kRtpExtensionVideoRotation,
+ RTPExtensionType::kRtpExtensionTransportSequenceNumber,
+ };
+ for (int i=0; i<5; i++) {
+ if (rand()%2) {
hlundin-webrtc 2015/08/04 09:43:50 I don't like this randomized test configuration. C
terelius 2015/08/12 13:12:40 I've rewritten to the tests to allow manual contro
+ rtp_sender.RegisterRtpHeaderExtension(extension_types[i], i+2);
+ }
+ }
+
+ int8_t payload_type = rand()%128;
+ bool marker_bit = rand()&0x01;
+ uint32_t capture_timestamp = rand();
+ int64_t capture_time_ms = rand();
+ bool timestamp_provided = rand()&0x01;
+ bool inc_sequence_number = rand()&0x01;
+
+ size_t header_size = rtp_sender.BuildRTPheader(packet,
+ payload_type,
+ marker_bit,
+ capture_timestamp,
+ capture_time_ms,
+ timestamp_provided,
+ inc_sequence_number);
+
+ for (size_t i = header_size; i < packet_size; i++) {
+ packet[i] = rand();
+ }
+
+ return header_size;
+}
+
void GenerateVideoReceiveConfig(VideoReceiveStream::Config* config) {
// Create a map from a payload type to an encoder name.
VideoReceiveStream::Decoder decoder;
@@ -306,7 +362,9 @@ void GenerateVideoSendConfig(VideoSendStream::Config* config) {
// Test for the RtcEventLog class. Dumps some RTP packets to disk, then reads
// them back to see if they match.
void LogSessionAndReadBack(size_t rtp_count, unsigned random_seed) {
- std::vector<std::vector<uint8_t>> rtp_packets;
+ std::vector<uint8_t*> rtp_packets;
+ std::vector<size_t> rtp_packet_sizes;
+ std::vector<size_t> rtp_header_sizes;
ivoc 2015/08/06 12:29:44 I don't see the advantage of this collection of da
terelius 2015/08/12 13:12:40 I agree that memory leaks is a concern, but all ot
ivoc 2015/08/14 11:21:53 I think in your example the vector code could look
terelius 2015/08/14 18:17:45 Some functions like BuildRTPHeader writes some byt
hlundin-webrtc 2015/08/17 13:47:07 My random thoughts: 1. Consider using rtc::Buffer
kwiberg-webrtc 2015/08/17 18:41:57 +1
std::vector<uint8_t> incoming_rtcp_packet;
std::vector<uint8_t> outgoing_rtcp_packet;
@@ -316,14 +374,12 @@ void LogSessionAndReadBack(size_t rtp_count, unsigned random_seed) {
srand(random_seed);
// Create rtp_count RTP packets containing random data.
- const size_t rtp_header_size = 20;
for (size_t i = 0; i < rtp_count; i++) {
size_t packet_size = 1000 + rand() % 30;
- rtp_packets.push_back(std::vector<uint8_t>());
- rtp_packets[i].reserve(packet_size);
- for (size_t j = 0; j < packet_size; j++) {
- rtp_packets[i].push_back(rand());
- }
+ rtp_packet_sizes.push_back(packet_size);
+ rtp_packets.push_back(new uint8_t[packet_size]);
+ size_t header_size = GenerateRtpPacket(rtp_packets[i], packet_size);
+ rtp_header_sizes.push_back(header_size);
}
// Create two RTCP packets containing random data.
size_t packet_size = 1000 + rand() % 30;
@@ -357,7 +413,7 @@ void LogSessionAndReadBack(size_t rtp_count, unsigned random_seed) {
log_dumper->LogRtpHeader(
(i % 2 == 0), // Every second packet is incoming.
(i % 3 == 0) ? MediaType::AUDIO : MediaType::VIDEO,
- rtp_packets[i].data(), rtp_header_size, rtp_packets[i].size());
+ rtp_packets[i], rtp_packet_sizes[i]);
}
log_dumper->LogRtcpPacket(false, MediaType::AUDIO,
outgoing_rtcp_packet.data(),
@@ -367,7 +423,7 @@ void LogSessionAndReadBack(size_t rtp_count, unsigned random_seed) {
log_dumper->LogRtpHeader(
(i % 2 == 0), // Every second packet is incoming,
(i % 3 == 0) ? MediaType::AUDIO : MediaType::VIDEO,
- rtp_packets[i].data(), rtp_header_size, rtp_packets[i].size());
+ rtp_packets[i], rtp_packet_sizes[i]);
}
log_dumper->LogRtcpPacket(true, MediaType::VIDEO,
incoming_rtcp_packet.data(),
@@ -393,8 +449,7 @@ void LogSessionAndReadBack(size_t rtp_count, unsigned random_seed) {
VerifyRtpEvent(parsed_stream.stream(config_count + i),
(i % 2 == 0), // Every second packet is incoming.
(i % 3 == 0) ? MediaType::AUDIO : MediaType::VIDEO,
- rtp_packets[i].data(), rtp_header_size,
- rtp_packets[i].size());
+ rtp_packets[i], rtp_header_sizes[i], rtp_packet_sizes[i]);
}
VerifyRtcpEvent(parsed_stream.stream(config_count + rtp_count / 2),
false, // Outgoing RTCP packet.
@@ -406,8 +461,7 @@ void LogSessionAndReadBack(size_t rtp_count, unsigned random_seed) {
VerifyRtpEvent(parsed_stream.stream(2 + config_count + i),
(i % 2 == 0), // Every second packet is incoming.
(i % 3 == 0) ? MediaType::AUDIO : MediaType::VIDEO,
- rtp_packets[i].data(), rtp_header_size,
- rtp_packets[i].size());
+ rtp_packets[i], rtp_header_sizes[i], rtp_packet_sizes[i]);
}
VerifyRtcpEvent(parsed_stream.stream(2 + config_count + rtp_count),
true, // Incoming RTCP packet.
@@ -416,6 +470,11 @@ void LogSessionAndReadBack(size_t rtp_count, unsigned random_seed) {
// Clean up temporary file - can be pretty slow.
remove(temp_filename.c_str());
+
+ // Free memory
+ for (size_t i = 0; i < rtp_count; i++) {
hlundin-webrtc 2015/08/04 09:43:50 for (auto packet : rtp_packets) { delete[] packe
terelius 2015/08/12 13:12:40 Done.
+ delete[] rtp_packets[i];
+ }
}
TEST(RtcEventLogTest, LogSessionAndReadBack) {
« webrtc/video/rtc_event_log.cc ('K') | « webrtc/video/rtc_event_log.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698