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

Side by Side Diff: webrtc/common_video/incoming_video_stream.cc

Issue 1813173002: Deletes the class VideoRendererCallback. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Break long lines. Add explicit keyword on IncomingVideoStream constructor. Created 4 years, 8 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 /* 1 /*
2 * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. 2 * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license 4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source 5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found 6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may 7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree. 8 * be found in the AUTHORS file in the root of the source tree.
9 */ 9 */
10 10
(...skipping 14 matching lines...) Expand all
25 #include "webrtc/common_video/libyuv/include/webrtc_libyuv.h" 25 #include "webrtc/common_video/libyuv/include/webrtc_libyuv.h"
26 #include "webrtc/common_video/video_render_frames.h" 26 #include "webrtc/common_video/video_render_frames.h"
27 #include "webrtc/system_wrappers/include/critical_section_wrapper.h" 27 #include "webrtc/system_wrappers/include/critical_section_wrapper.h"
28 #include "webrtc/system_wrappers/include/event_wrapper.h" 28 #include "webrtc/system_wrappers/include/event_wrapper.h"
29 #include "webrtc/system_wrappers/include/tick_util.h" 29 #include "webrtc/system_wrappers/include/tick_util.h"
30 #include "webrtc/system_wrappers/include/trace.h" 30 #include "webrtc/system_wrappers/include/trace.h"
31 #include "webrtc/video_renderer.h" 31 #include "webrtc/video_renderer.h"
32 32
33 namespace webrtc { 33 namespace webrtc {
34 34
35 IncomingVideoStream::IncomingVideoStream(uint32_t stream_id, 35 IncomingVideoStream::IncomingVideoStream(bool disable_prerenderer_smoothing)
36 bool disable_prerenderer_smoothing) 36 : disable_prerenderer_smoothing_(disable_prerenderer_smoothing),
37 : stream_id_(stream_id),
38 disable_prerenderer_smoothing_(disable_prerenderer_smoothing),
39 incoming_render_thread_(), 37 incoming_render_thread_(),
40 deliver_buffer_event_(EventTimerWrapper::Create()), 38 deliver_buffer_event_(EventTimerWrapper::Create()),
41 running_(false), 39 running_(false),
42 external_callback_(nullptr), 40 external_callback_(nullptr),
43 render_callback_(nullptr), 41 render_callback_(nullptr),
44 render_buffers_(new VideoRenderFrames()), 42 render_buffers_(new VideoRenderFrames()),
45 incoming_rate_(0), 43 incoming_rate_(0),
46 last_rate_calculation_time_ms_(0), 44 last_rate_calculation_time_ms_(0),
47 num_frames_since_last_calculation_(0), 45 num_frames_since_last_calculation_(0),
48 last_render_time_ms_(0), 46 last_render_time_ms_(0),
49 temp_frame_(), 47 temp_frame_(),
50 start_image_(), 48 start_image_(),
51 timeout_image_(), 49 timeout_image_(),
52 timeout_time_() {} 50 timeout_time_() {}
53 51
54 IncomingVideoStream::~IncomingVideoStream() { 52 IncomingVideoStream::~IncomingVideoStream() {
55 Stop(); 53 Stop();
56 } 54 }
57 55
58 VideoRenderCallback* IncomingVideoStream::ModuleCallback() { 56 rtc::VideoSinkInterface<VideoFrame>* IncomingVideoStream::ModuleCallback() {
59 return this; 57 return this;
60 } 58 }
61 59
62 int32_t IncomingVideoStream::RenderFrame(const uint32_t stream_id, 60 void IncomingVideoStream::OnFrame(const VideoFrame& video_frame) {
63 const VideoFrame& video_frame) {
64 rtc::CritScope csS(&stream_critsect_); 61 rtc::CritScope csS(&stream_critsect_);
65 62
66 if (!running_) { 63 if (!running_) {
67 return -1; 64 return;
68 } 65 }
69 66
70 // Rate statistics. 67 // Rate statistics.
71 num_frames_since_last_calculation_++; 68 num_frames_since_last_calculation_++;
72 int64_t now_ms = TickTime::MillisecondTimestamp(); 69 int64_t now_ms = TickTime::MillisecondTimestamp();
73 if (now_ms >= last_rate_calculation_time_ms_ + kFrameRatePeriodMs) { 70 if (now_ms >= last_rate_calculation_time_ms_ + kFrameRatePeriodMs) {
74 incoming_rate_ = 71 incoming_rate_ =
75 static_cast<uint32_t>(1000 * num_frames_since_last_calculation_ / 72 static_cast<uint32_t>(1000 * num_frames_since_last_calculation_ /
76 (now_ms - last_rate_calculation_time_ms_)); 73 (now_ms - last_rate_calculation_time_ms_));
77 num_frames_since_last_calculation_ = 0; 74 num_frames_since_last_calculation_ = 0;
78 last_rate_calculation_time_ms_ = now_ms; 75 last_rate_calculation_time_ms_ = now_ms;
79 } 76 }
80 77
81 // Hand over or insert frame. 78 // Hand over or insert frame.
82 if (disable_prerenderer_smoothing_) { 79 if (disable_prerenderer_smoothing_) {
83 DeliverFrame(video_frame); 80 DeliverFrame(video_frame);
84 } else { 81 } else {
85 rtc::CritScope csB(&buffer_critsect_); 82 rtc::CritScope csB(&buffer_critsect_);
86 if (render_buffers_->AddFrame(video_frame) == 1) { 83 if (render_buffers_->AddFrame(video_frame) == 1) {
87 deliver_buffer_event_->Set(); 84 deliver_buffer_event_->Set();
88 } 85 }
89 } 86 }
90 return 0;
91 } 87 }
92 88
93 void IncomingVideoStream::SetStartImage(const VideoFrame& video_frame) { 89 void IncomingVideoStream::SetStartImage(const VideoFrame& video_frame) {
94 rtc::CritScope csS(&thread_critsect_); 90 rtc::CritScope csS(&thread_critsect_);
95 start_image_.CopyFrame(video_frame); 91 start_image_.CopyFrame(video_frame);
96 } 92 }
97 93
98 void IncomingVideoStream::SetTimeoutImage(const VideoFrame& video_frame, 94 void IncomingVideoStream::SetTimeoutImage(const VideoFrame& video_frame,
99 const uint32_t timeout) { 95 const uint32_t timeout) {
100 rtc::CritScope csS(&thread_critsect_); 96 rtc::CritScope csS(&thread_critsect_);
101 timeout_time_ = timeout; 97 timeout_time_ = timeout;
102 timeout_image_.CopyFrame(video_frame); 98 timeout_image_.CopyFrame(video_frame);
103 } 99 }
104 100
105 void IncomingVideoStream::SetRenderCallback( 101 void IncomingVideoStream::SetRenderCallback(
106 VideoRenderCallback* render_callback) { 102 rtc::VideoSinkInterface<VideoFrame>* render_callback) {
107 rtc::CritScope cs(&thread_critsect_); 103 rtc::CritScope cs(&thread_critsect_);
108 render_callback_ = render_callback; 104 render_callback_ = render_callback;
109 } 105 }
110 106
111 int32_t IncomingVideoStream::SetExpectedRenderDelay( 107 int32_t IncomingVideoStream::SetExpectedRenderDelay(
112 int32_t delay_ms) { 108 int32_t delay_ms) {
113 rtc::CritScope csS(&stream_critsect_); 109 rtc::CritScope csS(&stream_critsect_);
114 if (running_) { 110 if (running_) {
115 return -1; 111 return -1;
116 } 112 }
117 rtc::CritScope cs(&buffer_critsect_); 113 rtc::CritScope cs(&buffer_critsect_);
118 return render_buffers_->SetRenderDelay(delay_ms); 114 return render_buffers_->SetRenderDelay(delay_ms);
119 } 115 }
120 116
121 void IncomingVideoStream::SetExternalCallback( 117 void IncomingVideoStream::SetExternalCallback(
122 VideoRenderCallback* external_callback) { 118 rtc::VideoSinkInterface<VideoFrame>* external_callback) {
123 rtc::CritScope cs(&thread_critsect_); 119 rtc::CritScope cs(&thread_critsect_);
124 external_callback_ = external_callback; 120 external_callback_ = external_callback;
125 } 121 }
126 122
127 int32_t IncomingVideoStream::Start() { 123 int32_t IncomingVideoStream::Start() {
128 rtc::CritScope csS(&stream_critsect_); 124 rtc::CritScope csS(&stream_critsect_);
129 if (running_) { 125 if (running_) {
130 return 0; 126 return 0;
131 } 127 }
132 128
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
176 running_ = false; 172 running_ = false;
177 return 0; 173 return 0;
178 } 174 }
179 175
180 int32_t IncomingVideoStream::Reset() { 176 int32_t IncomingVideoStream::Reset() {
181 rtc::CritScope cs_buffer(&buffer_critsect_); 177 rtc::CritScope cs_buffer(&buffer_critsect_);
182 render_buffers_->ReleaseAllFrames(); 178 render_buffers_->ReleaseAllFrames();
183 return 0; 179 return 0;
184 } 180 }
185 181
186 uint32_t IncomingVideoStream::StreamId() const {
187 return stream_id_;
188 }
189
190 uint32_t IncomingVideoStream::IncomingRate() const { 182 uint32_t IncomingVideoStream::IncomingRate() const {
191 rtc::CritScope cs(&stream_critsect_); 183 rtc::CritScope cs(&stream_critsect_);
192 return incoming_rate_; 184 return incoming_rate_;
193 } 185 }
194 186
195 bool IncomingVideoStream::IncomingVideoStreamThreadFun(void* obj) { 187 bool IncomingVideoStream::IncomingVideoStreamThreadFun(void* obj) {
196 return static_cast<IncomingVideoStream*>(obj)->IncomingVideoStreamProcess(); 188 return static_cast<IncomingVideoStream*>(obj)->IncomingVideoStreamProcess();
197 } 189 }
198 190
199 bool IncomingVideoStream::IncomingVideoStreamProcess() { 191 bool IncomingVideoStream::IncomingVideoStreamProcess() {
(...skipping 24 matching lines...) Expand all
224 return true; 216 return true;
225 } 217 }
226 218
227 void IncomingVideoStream::DeliverFrame(const VideoFrame& video_frame) { 219 void IncomingVideoStream::DeliverFrame(const VideoFrame& video_frame) {
228 rtc::CritScope cs(&thread_critsect_); 220 rtc::CritScope cs(&thread_critsect_);
229 if (video_frame.IsZeroSize()) { 221 if (video_frame.IsZeroSize()) {
230 if (render_callback_) { 222 if (render_callback_) {
231 if (last_render_time_ms_ == 0 && !start_image_.IsZeroSize()) { 223 if (last_render_time_ms_ == 0 && !start_image_.IsZeroSize()) {
232 // We have not rendered anything and have a start image. 224 // We have not rendered anything and have a start image.
233 temp_frame_.CopyFrame(start_image_); 225 temp_frame_.CopyFrame(start_image_);
234 render_callback_->RenderFrame(stream_id_, temp_frame_); 226 render_callback_->OnFrame(temp_frame_);
235 } else if (!timeout_image_.IsZeroSize() && 227 } else if (!timeout_image_.IsZeroSize() &&
236 last_render_time_ms_ + timeout_time_ < 228 last_render_time_ms_ + timeout_time_ <
237 TickTime::MillisecondTimestamp()) { 229 TickTime::MillisecondTimestamp()) {
238 // Render a timeout image. 230 // Render a timeout image.
239 temp_frame_.CopyFrame(timeout_image_); 231 temp_frame_.CopyFrame(timeout_image_);
240 render_callback_->RenderFrame(stream_id_, temp_frame_); 232 render_callback_->OnFrame(temp_frame_);
241 } 233 }
242 } 234 }
243 235
244 // No frame. 236 // No frame.
245 return; 237 return;
246 } 238 }
247 239
248 // Send frame for rendering. 240 // Send frame for rendering.
249 if (external_callback_) { 241 if (external_callback_) {
250 external_callback_->RenderFrame(stream_id_, video_frame); 242 external_callback_->OnFrame(video_frame);
251 } else if (render_callback_) { 243 } else if (render_callback_) {
252 render_callback_->RenderFrame(stream_id_, video_frame); 244 render_callback_->OnFrame(video_frame);
253 } 245 }
254 246
255 // We're done with this frame. 247 // We're done with this frame.
256 last_render_time_ms_ = video_frame.render_time_ms(); 248 last_render_time_ms_ = video_frame.render_time_ms();
257 } 249 }
258 250
259 } // namespace webrtc 251 } // namespace webrtc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698