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

Side by Side Diff: media/cast/net/cast_transport_sender_impl.h

Issue 445933002: Cast: Move retransmission to the transport (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fixed test compile Created 6 years, 4 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « media/cast/net/cast_transport_sender.h ('k') | media/cast/net/cast_transport_sender_impl.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 // This class maintains a send transport for audio and video in a Cast 5 // This class maintains a send transport for audio and video in a Cast
6 // Streaming session. 6 // Streaming session.
7 // Audio, video frames and RTCP messages are submitted to this object 7 // Audio, video frames and RTCP messages are submitted to this object
8 // and then packetized and paced to the underlying UDP socket. 8 // and then packetized and paced to the underlying UDP socket.
9 // 9 //
10 // The hierarchy of send transport in a Cast Streaming session: 10 // The hierarchy of send transport in a Cast Streaming session:
11 // 11 //
12 // CastTransportSender RTP RTCP 12 // CastTransportSender RTP RTCP
13 // ------------------------------------------------------------------ 13 // ------------------------------------------------------------------
14 // TransportEncryptionHandler (A/V) 14 // TransportEncryptionHandler (A/V)
15 // RtpSender (A/V) Rtcp (A/V) 15 // RtpSender (A/V) Rtcp (A/V)
16 // PacedSender (Shared) 16 // PacedSender (Shared)
17 // UdpTransport (Shared) 17 // UdpTransport (Shared)
18 // 18 //
19 // There are objects of TransportEncryptionHandler, RtpSender and Rtcp 19 // There are objects of TransportEncryptionHandler, RtpSender and Rtcp
20 // for each audio and video stream. 20 // for each audio and video stream.
21 // PacedSender and UdpTransport are shared between all RTP and RTCP 21 // PacedSender and UdpTransport are shared between all RTP and RTCP
22 // streams. 22 // streams.
23 23
24 #ifndef MEDIA_CAST_NET_CAST_TRANSPORT_IMPL_H_ 24 #ifndef MEDIA_CAST_NET_CAST_TRANSPORT_IMPL_H_
25 #define MEDIA_CAST_NET_CAST_TRANSPORT_IMPL_H_ 25 #define MEDIA_CAST_NET_CAST_TRANSPORT_IMPL_H_
26 26
27 #include "base/callback.h" 27 #include "base/callback.h"
28 #include "base/gtest_prod_util.h"
28 #include "base/memory/ref_counted.h" 29 #include "base/memory/ref_counted.h"
29 #include "base/memory/scoped_ptr.h" 30 #include "base/memory/scoped_ptr.h"
30 #include "base/memory/weak_ptr.h" 31 #include "base/memory/weak_ptr.h"
31 #include "base/time/tick_clock.h" 32 #include "base/time/tick_clock.h"
32 #include "base/time/time.h" 33 #include "base/time/time.h"
33 #include "base/timer/timer.h" 34 #include "base/timer/timer.h"
34 #include "media/cast/common/transport_encryption_handler.h" 35 #include "media/cast/common/transport_encryption_handler.h"
35 #include "media/cast/logging/logging_defines.h" 36 #include "media/cast/logging/logging_defines.h"
36 #include "media/cast/logging/simple_event_subscriber.h" 37 #include "media/cast/logging/simple_event_subscriber.h"
37 #include "media/cast/net/cast_transport_config.h" 38 #include "media/cast/net/cast_transport_config.h"
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
72 const RtcpCastMessageCallback& cast_message_cb, 73 const RtcpCastMessageCallback& cast_message_cb,
73 const RtcpRttCallback& rtt_cb) OVERRIDE; 74 const RtcpRttCallback& rtt_cb) OVERRIDE;
74 virtual void InsertCodedAudioFrame(const EncodedFrame& audio_frame) OVERRIDE; 75 virtual void InsertCodedAudioFrame(const EncodedFrame& audio_frame) OVERRIDE;
75 virtual void InsertCodedVideoFrame(const EncodedFrame& video_frame) OVERRIDE; 76 virtual void InsertCodedVideoFrame(const EncodedFrame& video_frame) OVERRIDE;
76 77
77 virtual void SendSenderReport( 78 virtual void SendSenderReport(
78 uint32 ssrc, 79 uint32 ssrc,
79 base::TimeTicks current_time, 80 base::TimeTicks current_time,
80 uint32 current_time_as_rtp_timestamp) OVERRIDE; 81 uint32 current_time_as_rtp_timestamp) OVERRIDE;
81 82
82 virtual void ResendPackets(bool is_audio, 83 virtual void CancelSendingFrames(
83 const MissingFramesAndPacketsMap& missing_packets, 84 uint32 ssrc,
84 bool cancel_rtx_if_not_in_list, 85 const std::vector<uint32>& frame_ids) OVERRIDE;
85 base::TimeDelta dedupe_window) 86
86 OVERRIDE; 87 virtual void ResendFrameForKickstart(uint32 ssrc, uint32 frame_id) OVERRIDE;
87 88
88 virtual PacketReceiverCallback PacketReceiverForTesting() OVERRIDE; 89 virtual PacketReceiverCallback PacketReceiverForTesting() OVERRIDE;
89 90
90 private: 91 private:
92 FRIEND_TEST_ALL_PREFIXES(CastTransportSenderImplTest, NacksCancelRetransmits);
93 FRIEND_TEST_ALL_PREFIXES(CastTransportSenderImplTest, CancelRetransmits);
94 FRIEND_TEST_ALL_PREFIXES(CastTransportSenderImplTest, Kickstart);
95
96 // Resend packets for the stream identified by |ssrc|.
97 // If |cancel_rtx_if_not_in_list| is true then transmission of packets for the
98 // frames but not in the list will be dropped.
99 // If packet was sent after |now - dedupe_window| then it will not be sent.
100 void ResendPackets(uint32 ssrc,
101 const MissingFramesAndPacketsMap& missing_packets,
102 bool cancel_rtx_if_not_in_list,
103 base::TimeDelta dedupe_window);
104
91 // If |raw_events_callback_| is non-null, calls it with events collected 105 // If |raw_events_callback_| is non-null, calls it with events collected
92 // by |event_subscriber_| since last call. 106 // by |event_subscriber_| since last call.
93 void SendRawEvents(); 107 void SendRawEvents();
94 108
95 // Called when a packet is received. 109 // Called when a packet is received.
96 void OnReceivedPacket(scoped_ptr<Packet> packet); 110 void OnReceivedPacket(scoped_ptr<Packet> packet);
97 111
98 // Called when a log message is received. 112 // Called when a log message is received.
99 void OnReceivedLogMessage(EventMediaType media_type, 113 void OnReceivedLogMessage(EventMediaType media_type,
100 const RtcpReceiverLogMessage& log); 114 const RtcpReceiverLogMessage& log);
101 115
116 // Called when a RTCP Cast message is received.
117 void OnReceivedCastMessage(uint32 ssrc,
118 const RtcpCastMessageCallback& cast_message_cb,
119 const RtcpCastMessage& cast_message);
120
102 base::TickClock* clock_; // Not owned by this class. 121 base::TickClock* clock_; // Not owned by this class.
103 CastTransportStatusCallback status_callback_; 122 CastTransportStatusCallback status_callback_;
104 scoped_refptr<base::SingleThreadTaskRunner> transport_task_runner_; 123 scoped_refptr<base::SingleThreadTaskRunner> transport_task_runner_;
105 124
106 LoggingImpl logging_; 125 LoggingImpl logging_;
107 126
108 // Interface to a UDP socket. 127 // Interface to a UDP socket.
109 scoped_ptr<UdpTransport> transport_; 128 scoped_ptr<UdpTransport> transport_;
110 129
111 // Packet sender that performs pacing. 130 // Packet sender that performs pacing.
(...skipping 22 matching lines...) Expand all
134 153
135 base::WeakPtrFactory<CastTransportSenderImpl> weak_factory_; 154 base::WeakPtrFactory<CastTransportSenderImpl> weak_factory_;
136 155
137 DISALLOW_COPY_AND_ASSIGN(CastTransportSenderImpl); 156 DISALLOW_COPY_AND_ASSIGN(CastTransportSenderImpl);
138 }; 157 };
139 158
140 } // namespace cast 159 } // namespace cast
141 } // namespace media 160 } // namespace media
142 161
143 #endif // MEDIA_CAST_NET_CAST_TRANSPORT_IMPL_H_ 162 #endif // MEDIA_CAST_NET_CAST_TRANSPORT_IMPL_H_
OLDNEW
« no previous file with comments | « media/cast/net/cast_transport_sender.h ('k') | media/cast/net/cast_transport_sender_impl.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698