// found in the LICENSE file.
#include "media/cast/rtcp/test_rtcp_packet_builder.h"
-
#include "base/logging.h"
namespace media {
namespace cast {
TestRtcpPacketBuilder::TestRtcpPacketBuilder()
- : ptr_of_length_(NULL),
- big_endian_writer_(buffer_, kMaxIpPacketSize) {
-}
+ : ptr_of_length_(NULL), big_endian_writer_(buffer_, kMaxIpPacketSize) {}
void TestRtcpPacketBuilder::AddSr(uint32 sender_ssrc,
int number_of_report_blocks) {
}
void TestRtcpPacketBuilder::AddXrUnknownBlock() {
- big_endian_writer_.WriteU8(9); // Block type.
- big_endian_writer_.WriteU8(0); // Reserved.
+ big_endian_writer_.WriteU8(9); // Block type.
+ big_endian_writer_.WriteU8(0); // Reserved.
big_endian_writer_.WriteU16(4); // Block length.
// First receiver same as sender of this report.
big_endian_writer_.WriteU32(0);
}
void TestRtcpPacketBuilder::AddXrDlrrBlock(uint32 sender_ssrc) {
- big_endian_writer_.WriteU8(5); // Block type.
- big_endian_writer_.WriteU8(0); // Reserved.
+ big_endian_writer_.WriteU8(5); // Block type.
+ big_endian_writer_.WriteU8(0); // Reserved.
big_endian_writer_.WriteU16(3); // Block length.
// First receiver same as sender of this report.
}
void TestRtcpPacketBuilder::AddXrExtendedDlrrBlock(uint32 sender_ssrc) {
- big_endian_writer_.WriteU8(5); // Block type.
- big_endian_writer_.WriteU8(0); // Reserved.
+ big_endian_writer_.WriteU8(5); // Block type.
+ big_endian_writer_.WriteU8(0); // Reserved.
big_endian_writer_.WriteU16(9); // Block length.
big_endian_writer_.WriteU32(0xaaaaaaaa);
big_endian_writer_.WriteU32(0xaaaaaaaa);
}
void TestRtcpPacketBuilder::AddXrRrtrBlock() {
- big_endian_writer_.WriteU8(4); // Block type.
- big_endian_writer_.WriteU8(0); // Reserved.
+ big_endian_writer_.WriteU8(4); // Block type.
+ big_endian_writer_.WriteU8(0); // Reserved.
big_endian_writer_.WriteU16(2); // Block length.
big_endian_writer_.WriteU32(kNtpHigh);
big_endian_writer_.WriteU32(kNtpLow);
uint64 picture_id = kPictureId;
for (int i = 9; i > 0; i--) {
- big_endian_writer_.WriteU8(
- 0x80 | static_cast<uint8>(picture_id >> (i * 7)));
+ big_endian_writer_.WriteU8(0x80 |
+ static_cast<uint8>(picture_id >> (i * 7)));
}
// Add last byte of picture ID.
big_endian_writer_.WriteU8(static_cast<uint8>(picture_id & 0x7f));
big_endian_writer_.WriteU8('S');
big_endian_writer_.WriteU8('T');
big_endian_writer_.WriteU8(kAckFrameId);
- big_endian_writer_.WriteU8(3); // Loss fields.
+ big_endian_writer_.WriteU8(3); // Loss fields.
big_endian_writer_.WriteU16(0); // Reserved.
big_endian_writer_.WriteU8(kLostFrameId);
big_endian_writer_.WriteU16(kRtcpCastAllPacketsLost);
void TestRtcpPacketBuilder::AddSenderFrameLog(uint8 event_id,
uint32 rtp_timestamp) {
- big_endian_writer_.WriteU32(
- (static_cast<uint32>(event_id) << 24) + (rtp_timestamp & 0xffffff));
+ big_endian_writer_.WriteU32((static_cast<uint32>(event_id) << 24) +
+ (rtp_timestamp & 0xffffff));
}
void TestRtcpPacketBuilder::AddReceiverLog(uint32 sender_ssrc) {
}
void TestRtcpPacketBuilder::AddReceiverFrameLog(uint32 rtp_timestamp,
- int num_events, uint32 event_timesamp_base) {
+ int num_events,
+ uint32 event_timesamp_base) {
big_endian_writer_.WriteU32(rtp_timestamp);
big_endian_writer_.WriteU8(static_cast<uint8>(num_events - 1));
big_endian_writer_.WriteU8(static_cast<uint8>(event_timesamp_base >> 16));
}
void TestRtcpPacketBuilder::AddReceiverEventLog(uint16 event_data,
- uint8 event_id, uint16 event_timesamp_delta) {
+ uint8 event_id,
+ uint16 event_timesamp_delta) {
big_endian_writer_.WriteU16(event_data);
uint16 type_and_delta = static_cast<uint16>(event_id) << 12;
type_and_delta += event_timesamp_delta & 0x0fff;
big_endian_writer_.WriteU16(type_and_delta);
}
-const uint8* TestRtcpPacketBuilder::Packet() {
+scoped_ptr<media::cast::Packet> TestRtcpPacketBuilder::GetPacket() {
+ PatchLengthField();
+ return scoped_ptr<media::cast::Packet>(
+ new media::cast::Packet(buffer_, buffer_ + Length()));
+}
+
+const uint8* TestRtcpPacketBuilder::Data() {
PatchLengthField();
return buffer_;
}