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

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

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

Powered by Google App Engine
This is Rietveld 408576698