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

Side by Side Diff: remoting/protocol/webrtc_dummy_video_encoder.cc

Issue 2335923002: Add WebrtcCaptureScheduler interface. (Closed)
Patch Set: include <algorithm> Created 4 years, 3 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 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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 "remoting/protocol/webrtc_dummy_video_encoder.h" 5 #include "remoting/protocol/webrtc_dummy_video_encoder.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <vector> 8 #include <vector>
9 9
10 #include "base/callback.h" 10 #include "base/callback.h"
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
87 VLOG(1) << "WebrtcDummyVideoEncoder::SetRates bitrate:framerate " << bitrate 87 VLOG(1) << "WebrtcDummyVideoEncoder::SetRates bitrate:framerate " << bitrate
88 << ":" << framerate; 88 << ":" << framerate;
89 if (!target_bitrate_cb_.is_null()) 89 if (!target_bitrate_cb_.is_null())
90 target_bitrate_cb_.Run(bitrate); 90 target_bitrate_cb_.Run(bitrate);
91 // framerate is not expected to be valid given we never report captured 91 // framerate is not expected to be valid given we never report captured
92 // frames 92 // frames
93 return WEBRTC_VIDEO_CODEC_OK; 93 return WEBRTC_VIDEO_CODEC_OK;
94 } 94 }
95 95
96 webrtc::EncodedImageCallback::Result WebrtcDummyVideoEncoder::SendEncodedFrame( 96 webrtc::EncodedImageCallback::Result WebrtcDummyVideoEncoder::SendEncodedFrame(
97 std::unique_ptr<WebrtcVideoEncoder::EncodedFrame> frame, 97 const WebrtcVideoEncoder::EncodedFrame& frame,
98 base::TimeTicks capture_time) { 98 base::TimeTicks capture_time) {
99 uint8_t* buffer = 99 uint8_t* buffer =
100 reinterpret_cast<uint8_t*>(const_cast<char*>(frame->data.data())); 100 reinterpret_cast<uint8_t*>(const_cast<char*>(frame.data.data()));
101 size_t buffer_size = frame->data.size(); 101 size_t buffer_size = frame.data.size();
102 base::AutoLock lock(lock_); 102 base::AutoLock lock(lock_);
103 if (state_ == kUninitialized) { 103 if (state_ == kUninitialized) {
104 LOG(ERROR) << "encoder interface uninitialized"; 104 LOG(ERROR) << "encoder interface uninitialized";
105 return webrtc::EncodedImageCallback::Result( 105 return webrtc::EncodedImageCallback::Result(
106 webrtc::EncodedImageCallback::Result::ERROR_SEND_FAILED); 106 webrtc::EncodedImageCallback::Result::ERROR_SEND_FAILED);
107 } 107 }
108 108
109 webrtc::EncodedImage encoded_image(buffer, buffer_size, buffer_size); 109 webrtc::EncodedImage encoded_image(buffer, buffer_size, buffer_size);
110 encoded_image._encodedWidth = frame->size.width(); 110 encoded_image._encodedWidth = frame.size.width();
111 encoded_image._encodedHeight = frame->size.height(); 111 encoded_image._encodedHeight = frame.size.height();
112 encoded_image._completeFrame = true; 112 encoded_image._completeFrame = true;
113 encoded_image._frameType = 113 encoded_image._frameType =
114 frame->key_frame ? webrtc::kVideoFrameKey : webrtc::kVideoFrameDelta; 114 frame.key_frame ? webrtc::kVideoFrameKey : webrtc::kVideoFrameDelta;
115 int64_t capture_time_ms = (capture_time - base::TimeTicks()).InMilliseconds(); 115 int64_t capture_time_ms = (capture_time - base::TimeTicks()).InMilliseconds();
116 encoded_image.capture_time_ms_ = capture_time_ms; 116 encoded_image.capture_time_ms_ = capture_time_ms;
117 encoded_image._timeStamp = static_cast<uint32_t>(capture_time_ms * 90); 117 encoded_image._timeStamp = static_cast<uint32_t>(capture_time_ms * 90);
118 encoded_image.playout_delay_.min_ms = 0; 118 encoded_image.playout_delay_.min_ms = 0;
119 encoded_image.playout_delay_.max_ms = 0; 119 encoded_image.playout_delay_.max_ms = 0;
120 120
121 webrtc::CodecSpecificInfo codec_specific_info; 121 webrtc::CodecSpecificInfo codec_specific_info;
122 memset(&codec_specific_info, 0, sizeof(codec_specific_info)); 122 memset(&codec_specific_info, 0, sizeof(codec_specific_info));
123 codec_specific_info.codecType = webrtc::kVideoCodecVP8; 123 codec_specific_info.codecType = webrtc::kVideoCodecVP8;
124 124
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
199 if ((*pos).get() == encoder) { 199 if ((*pos).get() == encoder) {
200 encoders_.erase(pos); 200 encoders_.erase(pos);
201 return; 201 return;
202 } 202 }
203 } 203 }
204 DCHECK(false) << "Asked to remove encoder not owned by factory"; 204 DCHECK(false) << "Asked to remove encoder not owned by factory";
205 } 205 }
206 206
207 webrtc::EncodedImageCallback::Result 207 webrtc::EncodedImageCallback::Result
208 WebrtcDummyVideoEncoderFactory::SendEncodedFrame( 208 WebrtcDummyVideoEncoderFactory::SendEncodedFrame(
209 std::unique_ptr<WebrtcVideoEncoder::EncodedFrame> frame, 209 const WebrtcVideoEncoder::EncodedFrame& frame,
210 base::TimeTicks capture_time) { 210 base::TimeTicks capture_time) {
211 if (encoders_.size() != 1) { 211 if (encoders_.size() != 1) {
212 LOG(ERROR) << "Unexpected number of encoders " << encoders_.size(); 212 LOG(ERROR) << "Unexpected number of encoders " << encoders_.size();
213 return webrtc::EncodedImageCallback::Result( 213 return webrtc::EncodedImageCallback::Result(
214 webrtc::EncodedImageCallback::Result::ERROR_SEND_FAILED); 214 webrtc::EncodedImageCallback::Result::ERROR_SEND_FAILED);
215 } 215 }
216 return encoders_.front()->SendEncodedFrame(std::move(frame), capture_time); 216 return encoders_.front()->SendEncodedFrame(frame, capture_time);
217 } 217 }
218 218
219 void WebrtcDummyVideoEncoderFactory::SetKeyFrameRequestCallback( 219 void WebrtcDummyVideoEncoderFactory::SetKeyFrameRequestCallback(
220 const base::Closure& key_frame_request) { 220 const base::Closure& key_frame_request) {
221 base::AutoLock lock(lock_); 221 base::AutoLock lock(lock_);
222 key_frame_request_ = key_frame_request; 222 key_frame_request_ = key_frame_request;
223 if (encoders_.size() == 1) { 223 if (encoders_.size() == 1) {
224 encoders_.front()->SetKeyFrameRequestCallback(key_frame_request); 224 encoders_.front()->SetKeyFrameRequestCallback(key_frame_request);
225 } else { 225 } else {
226 LOG(ERROR) << "Dropping key frame request callback with unexpected" 226 LOG(ERROR) << "Dropping key frame request callback with unexpected"
(...skipping 10 matching lines...) Expand all
237 encoders_.front()->SetTargetBitrateCallback(target_bitrate_cb); 237 encoders_.front()->SetTargetBitrateCallback(target_bitrate_cb);
238 } else { 238 } else {
239 LOG(ERROR) << "Dropping target bitrate request callback with unexpected" 239 LOG(ERROR) << "Dropping target bitrate request callback with unexpected"
240 " number of encoders: " 240 " number of encoders: "
241 << encoders_.size(); 241 << encoders_.size();
242 } 242 }
243 } 243 }
244 244
245 } // namespace protocol 245 } // namespace protocol
246 } // namespace remoting 246 } // namespace remoting
OLDNEW
« no previous file with comments | « remoting/protocol/webrtc_dummy_video_encoder.h ('k') | remoting/protocol/webrtc_frame_scheduler.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698