Commit 80a8aaec authored by miu@chromium.org's avatar miu@chromium.org

[Cast] Correct serialization of packet sequence number.

Code that modifies an already-serialized packet was erroneously writing
out a 16-bit value using little-endian byte order.  This change corrects
that to be written big-endian, per the spec.

BUG=385894

Review URL: https://codereview.chromium.org/342003007

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@278335 0039d316-1c4b-4281-b951-d872f2087c98
parent ed179c4f
...@@ -4,6 +4,7 @@ ...@@ -4,6 +4,7 @@
#include "media/cast/transport/rtp_sender/rtp_sender.h" #include "media/cast/transport/rtp_sender/rtp_sender.h"
#include "base/big_endian.h"
#include "base/logging.h" #include "base/logging.h"
#include "base/rand_util.h" #include "base/rand_util.h"
#include "media/cast/transport/cast_transport_defines.h" #include "media/cast/transport/cast_transport_defines.h"
...@@ -134,10 +135,13 @@ void RtpSender::ResendPackets( ...@@ -134,10 +135,13 @@ void RtpSender::ResendPackets(
} }
void RtpSender::UpdateSequenceNumber(Packet* packet) { void RtpSender::UpdateSequenceNumber(Packet* packet) {
uint16 new_sequence_number = packetizer_->NextSequenceNumber(); // TODO(miu): This is an abstraction violation. This needs to be a part of
int index = 2; // the overall packet (de)serialization consolidation.
(*packet)[index] = (static_cast<uint8>(new_sequence_number)); static const int kByteOffsetToSequenceNumber = 2;
(*packet)[index + 1] = (static_cast<uint8>(new_sequence_number >> 8)); base::BigEndianWriter big_endian_writer(
reinterpret_cast<char*>((&packet->front()) + kByteOffsetToSequenceNumber),
sizeof(uint16));
big_endian_writer.WriteU16(packetizer_->NextSequenceNumber());
} }
} // namespace transport } // namespace transport
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment