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

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

Issue 174183003: Cast:Transport: Dividing A/V Initialization pipeline (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fixing errors and yet another rebase Created 6 years, 9 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
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 #include "media/cast/transport/transport_video_sender.h" 5 #include "media/cast/transport/transport_video_sender.h"
6 6
7 #include <list> 7 #include <list>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/logging.h" 10 #include "base/logging.h"
11 #include "base/message_loop/message_loop.h" 11 #include "base/message_loop/message_loop.h"
12 #include "media/base/video_frame.h" 12 #include "media/base/video_frame.h"
13 #include "media/cast/transport/pacing/paced_sender.h" 13 #include "media/cast/transport/pacing/paced_sender.h"
14 14
15 namespace media { 15 namespace media {
16 namespace cast { 16 namespace cast {
17 namespace transport { 17 namespace transport {
18 18
19 TransportVideoSender::TransportVideoSender( 19 TransportVideoSender::TransportVideoSender(
20 const CastTransportConfig& config, 20 const CastTransportVideoConfig& config,
21 base::TickClock* clock, 21 base::TickClock* clock,
22 const scoped_refptr<base::TaskRunner>& transport_task_runner, 22 const scoped_refptr<base::SingleThreadTaskRunner>& transport_task_runner,
23 PacedSender* const paced_packet_sender) 23 PacedSender* const paced_packet_sender)
24 : rtp_max_delay_(base::TimeDelta::FromMilliseconds( 24 : rtp_max_delay_(base::TimeDelta::FromMilliseconds(
25 config.video_rtp_config.max_delay_ms)), 25 config.base.rtp_config.max_delay_ms)),
26 encryptor_(), 26 encryptor_(),
27 rtp_sender_(clock, 27 rtp_sender_(clock, transport_task_runner, paced_packet_sender) {
28 config, 28 rtp_sender_.InitializeVideo(config);
29 false, 29 initialized_ =
30 transport_task_runner, 30 encryptor_.Initialize(config.base.aes_key, config.base.aes_iv_mask);
31 paced_packet_sender) {
32 initialized_ = encryptor_.Initialize(config.aes_key, config.aes_iv_mask);
33 } 31 }
34 32
35 TransportVideoSender::~TransportVideoSender() {} 33 TransportVideoSender::~TransportVideoSender() {}
36 34
37 void TransportVideoSender::InsertCodedVideoFrame( 35 void TransportVideoSender::InsertCodedVideoFrame(
38 const EncodedVideoFrame* coded_frame, 36 const EncodedVideoFrame* coded_frame,
39 const base::TimeTicks& capture_time) { 37 const base::TimeTicks& capture_time) {
40 if (encryptor_.initialized()) { 38 if (encryptor_.initialized()) {
41 EncodedVideoFrame encrypted_video_frame; 39 EncodedVideoFrame encrypted_video_frame;
42 40
43 if (!EncryptVideoFrame(*coded_frame, &encrypted_video_frame)) 41 if (!EncryptVideoFrame(*coded_frame, &encrypted_video_frame))
44 return; 42 return;
45 43
46 rtp_sender_.IncomingEncodedVideoFrame(&encrypted_video_frame, capture_time); 44 rtp_sender_.IncomingEncodedVideoFrame(&encrypted_video_frame, capture_time);
47 } else { 45 } else {
48 rtp_sender_.IncomingEncodedVideoFrame(coded_frame, capture_time); 46 rtp_sender_.IncomingEncodedVideoFrame(coded_frame, capture_time);
49 } 47 }
50 if (coded_frame->key_frame) { 48 if (coded_frame->key_frame) {
51 VLOG(1) << "Send encoded key frame; frame_id:" 49 VLOG(1) << "Send encoded key frame; frame_id:"
52 << static_cast<int>(coded_frame->frame_id); 50 << static_cast<int>(coded_frame->frame_id);
53 } 51 }
54 } 52 }
55 53
56 bool TransportVideoSender::EncryptVideoFrame( 54 bool TransportVideoSender::EncryptVideoFrame(
57 const EncodedVideoFrame& video_frame, 55 const EncodedVideoFrame& video_frame,
58 EncodedVideoFrame* encrypted_frame) { 56 EncodedVideoFrame* encrypted_frame) {
59 if (!encryptor_.Encrypt( 57 if (!encryptor_.Encrypt(
60 video_frame.frame_id, video_frame.data, &(encrypted_frame->data))) 58 video_frame.frame_id, video_frame.data, &(encrypted_frame->data)))
61 return false; 59 return false;
62 60
63 encrypted_frame->codec = video_frame.codec; 61 encrypted_frame->codec = video_frame.codec;
64 encrypted_frame->key_frame = video_frame.key_frame; 62 encrypted_frame->key_frame = video_frame.key_frame;
65 encrypted_frame->frame_id = video_frame.frame_id; 63 encrypted_frame->frame_id = video_frame.frame_id;
66 encrypted_frame->last_referenced_frame_id = 64 encrypted_frame->last_referenced_frame_id =
67 video_frame.last_referenced_frame_id; 65 video_frame.last_referenced_frame_id;
68 return true; 66 return true;
69 } 67 }
70 68
71 void TransportVideoSender::ResendPackets( 69 void TransportVideoSender::ResendPackets(
72 const MissingFramesAndPacketsMap& missing_frames_and_packets) { 70 const MissingFramesAndPacketsMap& missing_frames_and_packets) {
73 rtp_sender_.ResendPackets(missing_frames_and_packets); 71 rtp_sender_.ResendPackets(missing_frames_and_packets);
74 } 72 }
75 73
76 void TransportVideoSender::SubscribeVideoRtpStatsCallback( 74 void TransportVideoSender::SubscribeVideoRtpStatsCallback(
77 const CastTransportRtpStatistics& callback) { 75 const CastTransportRtpStatistics& callback) {
78 rtp_sender_.SubscribeRtpStatsCallback(callback); 76 rtp_sender_.SubscribeRtpStatsCallback(callback);
79 } 77 }
80 78
81 } // namespace transport 79 } // namespace transport
82 } // namespace cast 80 } // namespace cast
83 } // namespace media 81 } // namespace media
OLDNEW
« no previous file with comments | « media/cast/transport/transport_video_sender.h ('k') | media/cast/video_sender/video_sender_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698