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

Side by Side Diff: media/cast/transport/rtp_sender/rtp_sender.h

Issue 388663003: Cast: Reshuffle files under media/cast (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: missing includes Created 6 years, 5 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
OLDNEW
(Empty)
1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 // This file contains the interface to the cast RTP sender.
6
7 #ifndef MEDIA_CAST_TRANSPORT_RTP_SENDER_RTP_SENDER_H_
8 #define MEDIA_CAST_TRANSPORT_RTP_SENDER_RTP_SENDER_H_
9
10 #include <map>
11 #include <set>
12
13 #include "base/memory/scoped_ptr.h"
14 #include "base/time/tick_clock.h"
15 #include "base/time/time.h"
16 #include "base/memory/weak_ptr.h"
17 #include "media/cast/cast_config.h"
18 #include "media/cast/cast_environment.h"
19 #include "media/cast/transport/cast_transport_defines.h"
20 #include "media/cast/transport/cast_transport_sender.h"
21 #include "media/cast/transport/pacing/paced_sender.h"
22 #include "media/cast/transport/rtp_sender/packet_storage/packet_storage.h"
23 #include "media/cast/transport/rtp_sender/rtp_packetizer/rtp_packetizer.h"
24
25 namespace media {
26 namespace cast {
27
28 namespace transport {
29
30 // This object is only called from the main cast thread.
31 // This class handles splitting encoded audio and video frames into packets and
32 // add an RTP header to each packet. The sent packets are stored until they are
33 // acknowledged by the remote peer or timed out.
34 class RtpSender {
35 public:
36 RtpSender(
37 base::TickClock* clock,
38 const scoped_refptr<base::SingleThreadTaskRunner>& transport_task_runner,
39 PacedSender* const transport);
40
41 ~RtpSender();
42
43 // This must be called before sending any frames. Returns false if
44 // configuration is invalid.
45 bool Initialize(const CastTransportRtpConfig& config);
46
47 void SendFrame(const EncodedFrame& frame);
48
49 void ResendPackets(const MissingFramesAndPacketsMap& missing_packets,
50 bool cancel_rtx_if_not_in_list,
51 base::TimeDelta dedupe_window);
52
53 size_t send_packet_count() const {
54 return packetizer_ ? packetizer_->send_packet_count() : 0;
55 }
56 size_t send_octet_count() const {
57 return packetizer_ ? packetizer_->send_octet_count() : 0;
58 }
59 uint32 ssrc() const { return config_.ssrc; }
60
61 private:
62 void UpdateSequenceNumber(Packet* packet);
63
64 base::TickClock* clock_; // Not owned by this class.
65 RtpPacketizerConfig config_;
66 scoped_ptr<RtpPacketizer> packetizer_;
67 scoped_ptr<PacketStorage> storage_;
68 PacedSender* const transport_;
69 scoped_refptr<base::SingleThreadTaskRunner> transport_task_runner_;
70
71 // NOTE: Weak pointers must be invalidated before all other member variables.
72 base::WeakPtrFactory<RtpSender> weak_factory_;
73
74 DISALLOW_COPY_AND_ASSIGN(RtpSender);
75 };
76
77 } // namespace transport
78 } // namespace cast
79 } // namespace media
80
81 #endif // MEDIA_CAST_TRANSPORT_RTP_SENDER_RTP_SENDER_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698