| OLD | NEW |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 |
| OLD | NEW |