diff options
Diffstat (limited to 'media/cast/rtp_sender/rtp_packetizer/rtp_packetizer.cc')
-rw-r--r-- | media/cast/rtp_sender/rtp_packetizer/rtp_packetizer.cc | 24 |
1 files changed, 11 insertions, 13 deletions
diff --git a/media/cast/rtp_sender/rtp_packetizer/rtp_packetizer.cc b/media/cast/rtp_sender/rtp_packetizer/rtp_packetizer.cc index 3fdbefec92..6c5141d604 100644 --- a/media/cast/rtp_sender/rtp_packetizer/rtp_packetizer.cc +++ b/media/cast/rtp_sender/rtp_packetizer/rtp_packetizer.cc @@ -25,7 +25,6 @@ RtpPacketizer::RtpPacketizer(PacedPacketSender* transport, packet_storage_(packet_storage), sequence_number_(config_.sequence_number), rtp_timestamp_(config_.rtp_timestamp), - frame_id_(0), packet_id_(0), send_packets_count_(0), send_octet_count_(0) { @@ -40,14 +39,12 @@ void RtpPacketizer::IncomingEncodedVideoFrame( DCHECK(!config_.audio) << "Invalid state"; if (config_.audio) return; - base::TimeTicks zero_time; - base::TimeDelta capture_delta = capture_time - zero_time; - // Timestamp is in 90 KHz for video. - rtp_timestamp_ = static_cast<uint32>(capture_delta.InMilliseconds() * 90); + rtp_timestamp_ = GetVideoRtpTimestamp(capture_time); time_last_sent_rtp_timestamp_ = capture_time; Cast(video_frame->key_frame, + video_frame->frame_id, video_frame->last_referenced_frame_id, rtp_timestamp_, video_frame->data); @@ -61,7 +58,7 @@ void RtpPacketizer::IncomingEncodedAudioFrame( rtp_timestamp_ += audio_frame->samples; // Timestamp is in samples for audio. time_last_sent_rtp_timestamp_ = recorded_time; - Cast(true, 0, rtp_timestamp_, audio_frame->data); + Cast(true, audio_frame->frame_id, 0, rtp_timestamp_, audio_frame->data); } uint16 RtpPacketizer::NextSequenceNumber() { @@ -78,10 +75,12 @@ 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, - uint8 reference_frame_id, + uint32 frame_id, + uint32 reference_frame_id, uint32 timestamp, - Packet data) { + const std::string& data) { uint16 rtp_header_length = kCommonRtpHeaderLength + kCastRtpHeaderLength; uint16 max_length = config_.max_payload_length - rtp_header_length - 1; @@ -93,7 +92,7 @@ void RtpPacketizer::Cast(bool is_key, PacketList packets; size_t remaining_size = data.size(); - Packet::iterator data_iter = data.begin(); + std::string::const_iterator data_iter = data.begin(); while (remaining_size > 0) { Packet packet; @@ -106,19 +105,19 @@ void RtpPacketizer::Cast(bool is_key, // Build Cast header. packet.push_back( (is_key ? kCastKeyFrameBitMask : 0) | kCastReferenceFrameIdBitMask); - packet.push_back(frame_id_); + packet.push_back(frame_id); size_t start_size = packet.size(); packet.resize(start_size + 4); net::BigEndianWriter big_endian_writer(&(packet[start_size]), 4); big_endian_writer.WriteU16(packet_id_); big_endian_writer.WriteU16(static_cast<uint16>(num_packets - 1)); - packet.push_back(reference_frame_id); + packet.push_back(static_cast<uint8>(reference_frame_id)); // Copy payload data. packet.insert(packet.end(), data_iter, data_iter + payload_length); // Store packet. - packet_storage_->StorePacket(frame_id_, packet_id_, &packet); + packet_storage_->StorePacket(frame_id, packet_id_, &packet); ++packet_id_; data_iter += payload_length; @@ -134,7 +133,6 @@ void RtpPacketizer::Cast(bool is_key, // Prepare for next frame. packet_id_ = 0; - frame_id_ = static_cast<uint8>(frame_id_ + 1); } void RtpPacketizer::BuildCommonRTPheader( |