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

Side by Side Diff: media/cast/transport/transport_video_sender.cc

Issue 314593002: [Cast] Cleanup: Remove TransportXXXXXSender, an unnecessary layer of indirection. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix CastTransportHostFilterTest.SimpleMessages. Created 6 years, 6 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 2014 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 #include "media/cast/transport/transport_video_sender.h"
6
7 #include "base/bind.h"
8 #include "base/logging.h"
9 #include "base/message_loop/message_loop.h"
10 #include "media/base/video_frame.h"
11 #include "media/cast/transport/pacing/paced_sender.h"
12
13 namespace media {
14 namespace cast {
15 namespace transport {
16
17 TransportVideoSender::TransportVideoSender(
18 const CastTransportVideoConfig& config,
19 base::TickClock* clock,
20 const scoped_refptr<base::SingleThreadTaskRunner>& transport_task_runner,
21 PacedSender* const paced_packet_sender)
22 : rtp_sender_(clock, transport_task_runner, paced_packet_sender) {
23 initialized_ = rtp_sender_.InitializeVideo(config) &&
24 encryptor_.Initialize(config.rtp.config.aes_key,
25 config.rtp.config.aes_iv_mask);
26 }
27
28 TransportVideoSender::~TransportVideoSender() {}
29
30 void TransportVideoSender::SendFrame(const EncodedFrame& video_frame) {
31 if (!initialized_) {
32 return;
33 }
34 if (encryptor_.initialized()) {
35 EncodedFrame encrypted_frame;
36 if (!EncryptVideoFrame(video_frame, &encrypted_frame)) {
37 NOTREACHED();
38 return;
39 }
40 rtp_sender_.SendFrame(encrypted_frame);
41 } else {
42 rtp_sender_.SendFrame(video_frame);
43 }
44 }
45
46 bool TransportVideoSender::EncryptVideoFrame(
47 const EncodedFrame& video_frame, EncodedFrame* encrypted_frame) {
48 if (!initialized_) {
49 return false;
50 }
51 if (!encryptor_.Encrypt(
52 video_frame.frame_id, video_frame.data, &(encrypted_frame->data)))
53 return false;
54
55 encrypted_frame->dependency = video_frame.dependency;
56 encrypted_frame->frame_id = video_frame.frame_id;
57 encrypted_frame->referenced_frame_id = video_frame.referenced_frame_id;
58 encrypted_frame->rtp_timestamp = video_frame.rtp_timestamp;
59 encrypted_frame->reference_time = video_frame.reference_time;
60 return true;
61 }
62
63 void TransportVideoSender::ResendPackets(
64 const MissingFramesAndPacketsMap& missing_frames_and_packets) {
65 if (!initialized_) {
66 return;
67 }
68 rtp_sender_.ResendPackets(missing_frames_and_packets);
69 }
70
71 } // namespace transport
72 } // namespace cast
73 } // namespace media
OLDNEW
« no previous file with comments | « media/cast/transport/transport_video_sender.h ('k') | media/cast/transport/utility/transport_encryption_handler.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698