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

Unified Diff: media/cast/transport/rtp_sender/rtp_packetizer/rtp_packetizer.cc

Issue 288103002: [Cast] EncodedAudioFrame+EncodedVideoFrame+reference_time --> EncodedFrame (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 7 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: media/cast/transport/rtp_sender/rtp_packetizer/rtp_packetizer.cc
diff --git a/media/cast/transport/rtp_sender/rtp_packetizer/rtp_packetizer.cc b/media/cast/transport/rtp_sender/rtp_packetizer/rtp_packetizer.cc
index 3a72faf085aca9d11ce9274d60dea7395c7a14a9..fbb774f217d33daef74d647f23ed6c854fcaf37f 100644
--- a/media/cast/transport/rtp_sender/rtp_packetizer/rtp_packetizer.cc
+++ b/media/cast/transport/rtp_sender/rtp_packetizer/rtp_packetizer.cc
@@ -45,36 +45,6 @@ RtpPacketizer::RtpPacketizer(PacedSender* const transport,
RtpPacketizer::~RtpPacketizer() {}
-void RtpPacketizer::IncomingEncodedVideoFrame(
- const EncodedVideoFrame* video_frame,
- const base::TimeTicks& capture_time) {
- DCHECK(!config_.audio) << "Invalid state";
- if (config_.audio)
- return;
-
- Cast(video_frame->key_frame,
- video_frame->frame_id,
- video_frame->last_referenced_frame_id,
- video_frame->rtp_timestamp,
- video_frame->data,
- capture_time);
-}
-
-void RtpPacketizer::IncomingEncodedAudioFrame(
- const EncodedAudioFrame* audio_frame,
- const base::TimeTicks& recorded_time) {
- DCHECK(config_.audio) << "Invalid state";
- if (!config_.audio)
- return;
-
- Cast(true,
- audio_frame->frame_id,
- 0,
- audio_frame->rtp_timestamp,
- audio_frame->data,
- recorded_time);
-}
-
uint16 RtpPacketizer::NextSequenceNumber() {
++sequence_number_;
return sequence_number_ - 1;
@@ -90,27 +60,21 @@ bool RtpPacketizer::LastSentTimestamp(base::TimeTicks* time_sent,
return true;
}
-// TODO(mikhal): Switch to pass data with a const_ref.
-void RtpPacketizer::Cast(bool is_key,
- uint32 frame_id,
- uint32 reference_frame_id,
- uint32 timestamp,
- const std::string& data,
- const base::TimeTicks& capture_time) {
- time_last_sent_rtp_timestamp_ = capture_time;
+void RtpPacketizer::SendFrameAsPackets(const EncodedFrame& frame) {
+ time_last_sent_rtp_timestamp_ = frame.reference_time;
uint16 rtp_header_length = kCommonRtpHeaderLength + kCastRtpHeaderLength;
uint16 max_length = config_.max_payload_length - rtp_header_length - 1;
- rtp_timestamp_ = timestamp;
+ rtp_timestamp_ = frame.rtp_timestamp;
// Split the payload evenly (round number up).
- size_t num_packets = (data.size() + max_length) / max_length;
- size_t payload_length = (data.size() + num_packets) / num_packets;
+ size_t num_packets = (frame.data.size() + max_length) / max_length;
+ size_t payload_length = (frame.data.size() + num_packets) / num_packets;
DCHECK_LE(payload_length, max_length) << "Invalid argument";
SendPacketVector packets;
- size_t remaining_size = data.size();
- std::string::const_iterator data_iter = data.begin();
+ size_t remaining_size = frame.data.size();
+ std::string::const_iterator data_iter = frame.data.begin();
while (remaining_size > 0) {
PacketRef packet(new base::RefCountedData<Packet>);
@@ -118,31 +82,34 @@ void RtpPacketizer::Cast(bool is_key,
payload_length = remaining_size;
}
remaining_size -= payload_length;
- BuildCommonRTPheader(&packet->data, remaining_size == 0, timestamp);
+ BuildCommonRTPheader(
+ &packet->data, remaining_size == 0, frame.rtp_timestamp);
// Build Cast header.
+ const bool is_key = (frame.frame_id == frame.base_frame_id);
Alpha Left Google 2014/05/15 22:11:23 As described before frame_id == base_frame_id does
miu 2014/05/16 04:27:25 Done.
+ // TODO(miu): Should we *really* always send the reference_frame_id?
packet->data.push_back((is_key ? kCastKeyFrameBitMask : 0) |
kCastReferenceFrameIdBitMask);
- packet->data.push_back(frame_id);
+ packet->data.push_back(static_cast<uint8>(frame.frame_id));
size_t start_size = packet->data.size();
packet->data.resize(start_size + 4);
base::BigEndianWriter big_endian_writer(
reinterpret_cast<char*>(&(packet->data[start_size])), 4);
big_endian_writer.WriteU16(packet_id_);
big_endian_writer.WriteU16(static_cast<uint16>(num_packets - 1));
- packet->data.push_back(static_cast<uint8>(reference_frame_id));
+ packet->data.push_back(static_cast<uint8>(frame.base_frame_id));
// Copy payload data.
packet->data.insert(packet->data.end(),
data_iter,
data_iter + payload_length);
- PacketKey key = PacedPacketSender::MakePacketKey(capture_time,
+ PacketKey key = PacedPacketSender::MakePacketKey(frame.reference_time,
config_.ssrc,
packet_id_);
// Store packet.
- packet_storage_->StorePacket(frame_id, packet_id_, key, packet);
+ packet_storage_->StorePacket(frame.frame_id, packet_id_, key, packet);
++packet_id_;
data_iter += payload_length;

Powered by Google App Engine
This is Rietveld 408576698