OLD | NEW |
---|---|
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 |
11 #include "webrtc/modules/video_coding/video_coding_impl.h" | 11 #include "webrtc/modules/video_coding/video_coding_impl.h" |
12 | 12 |
13 #include <algorithm> | 13 #include <algorithm> |
14 #include <utility> | 14 #include <utility> |
15 | 15 |
16 #include "webrtc/base/criticalsection.h" | 16 #include "webrtc/base/criticalsection.h" |
17 #include "webrtc/base/thread_checker.h" | |
17 #include "webrtc/common_types.h" | 18 #include "webrtc/common_types.h" |
18 #include "webrtc/common_video/include/video_bitrate_allocator.h" | 19 #include "webrtc/common_video/include/video_bitrate_allocator.h" |
19 #include "webrtc/common_video/libyuv/include/webrtc_libyuv.h" | 20 #include "webrtc/common_video/libyuv/include/webrtc_libyuv.h" |
20 #include "webrtc/modules/video_coding/codecs/vp8/temporal_layers.h" | 21 #include "webrtc/modules/video_coding/codecs/vp8/temporal_layers.h" |
21 #include "webrtc/modules/video_coding/encoded_frame.h" | 22 #include "webrtc/modules/video_coding/encoded_frame.h" |
22 #include "webrtc/modules/video_coding/include/video_codec_initializer.h" | 23 #include "webrtc/modules/video_coding/include/video_codec_initializer.h" |
23 #include "webrtc/modules/video_coding/include/video_codec_interface.h" | 24 #include "webrtc/modules/video_coding/include/video_codec_interface.h" |
24 #include "webrtc/modules/video_coding/jitter_buffer.h" | 25 #include "webrtc/modules/video_coding/jitter_buffer.h" |
25 #include "webrtc/modules/video_coding/packet.h" | 26 #include "webrtc/modules/video_coding/packet.h" |
26 #include "webrtc/modules/video_coding/timing.h" | 27 #include "webrtc/modules/video_coding/timing.h" |
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
91 pre_decode_image_callback, | 92 pre_decode_image_callback, |
92 timing_.get(), | 93 timing_.get(), |
93 nack_sender, | 94 nack_sender, |
94 keyframe_request_sender) {} | 95 keyframe_request_sender) {} |
95 | 96 |
96 virtual ~VideoCodingModuleImpl() {} | 97 virtual ~VideoCodingModuleImpl() {} |
97 | 98 |
98 int64_t TimeUntilNextProcess() override { | 99 int64_t TimeUntilNextProcess() override { |
99 int64_t sender_time = sender_.TimeUntilNextProcess(); | 100 int64_t sender_time = sender_.TimeUntilNextProcess(); |
100 int64_t receiver_time = receiver_.TimeUntilNextProcess(); | 101 int64_t receiver_time = receiver_.TimeUntilNextProcess(); |
101 assert(sender_time >= 0); | 102 RTC_DCHECK(sender_time >= 0); |
102 assert(receiver_time >= 0); | 103 RTC_DCHECK(receiver_time >= 0); |
stefan-webrtc
2017/03/14 09:58:17
GE
tommi
2017/03/14 10:52:10
Done.
| |
103 return VCM_MIN(sender_time, receiver_time); | 104 return VCM_MIN(sender_time, receiver_time); |
104 } | 105 } |
105 | 106 |
106 void Process() override { | 107 void Process() override { |
107 sender_.Process(); | 108 sender_.Process(); |
108 receiver_.Process(); | 109 receiver_.Process(); |
109 } | 110 } |
110 | 111 |
111 int32_t RegisterSendCodec(const VideoCodec* sendCodec, | 112 int32_t RegisterSendCodec(const VideoCodec* sendCodec, |
112 uint32_t numberOfCores, | 113 uint32_t numberOfCores, |
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
183 requireKeyFrame); | 184 requireKeyFrame); |
184 } | 185 } |
185 | 186 |
186 void RegisterExternalDecoder(VideoDecoder* externalDecoder, | 187 void RegisterExternalDecoder(VideoDecoder* externalDecoder, |
187 uint8_t payloadType) override { | 188 uint8_t payloadType) override { |
188 receiver_.RegisterExternalDecoder(externalDecoder, payloadType); | 189 receiver_.RegisterExternalDecoder(externalDecoder, payloadType); |
189 } | 190 } |
190 | 191 |
191 int32_t RegisterReceiveCallback( | 192 int32_t RegisterReceiveCallback( |
192 VCMReceiveCallback* receiveCallback) override { | 193 VCMReceiveCallback* receiveCallback) override { |
194 RTC_DCHECK(construction_thread_.CalledOnValidThread()); | |
193 return receiver_.RegisterReceiveCallback(receiveCallback); | 195 return receiver_.RegisterReceiveCallback(receiveCallback); |
194 } | 196 } |
195 | 197 |
196 int32_t RegisterReceiveStatisticsCallback( | 198 int32_t RegisterReceiveStatisticsCallback( |
197 VCMReceiveStatisticsCallback* receiveStats) override { | 199 VCMReceiveStatisticsCallback* receiveStats) override { |
198 return receiver_.RegisterReceiveStatisticsCallback(receiveStats); | 200 return receiver_.RegisterReceiveStatisticsCallback(receiveStats); |
199 } | 201 } |
200 | 202 |
201 int32_t RegisterDecoderTimingCallback( | 203 int32_t RegisterDecoderTimingCallback( |
202 VCMDecoderTimingCallback* decoderTiming) override { | 204 VCMDecoderTimingCallback* decoderTiming) override { |
203 return receiver_.RegisterDecoderTimingCallback(decoderTiming); | 205 return receiver_.RegisterDecoderTimingCallback(decoderTiming); |
204 } | 206 } |
205 | 207 |
206 int32_t RegisterFrameTypeCallback( | 208 int32_t RegisterFrameTypeCallback( |
207 VCMFrameTypeCallback* frameTypeCallback) override { | 209 VCMFrameTypeCallback* frameTypeCallback) override { |
208 return receiver_.RegisterFrameTypeCallback(frameTypeCallback); | 210 return receiver_.RegisterFrameTypeCallback(frameTypeCallback); |
209 } | 211 } |
210 | 212 |
211 int32_t RegisterPacketRequestCallback( | 213 int32_t RegisterPacketRequestCallback( |
212 VCMPacketRequestCallback* callback) override { | 214 VCMPacketRequestCallback* callback) override { |
215 RTC_DCHECK(construction_thread_.CalledOnValidThread()); | |
213 return receiver_.RegisterPacketRequestCallback(callback); | 216 return receiver_.RegisterPacketRequestCallback(callback); |
214 } | 217 } |
215 | 218 |
216 int32_t Decode(uint16_t maxWaitTimeMs) override { | 219 int32_t Decode(uint16_t maxWaitTimeMs) override { |
217 return receiver_.Decode(maxWaitTimeMs); | 220 return receiver_.Decode(maxWaitTimeMs); |
218 } | 221 } |
219 | 222 |
220 int32_t ReceiveCodec(VideoCodec* currentReceiveCodec) const override { | 223 int32_t ReceiveCodec(VideoCodec* currentReceiveCodec) const override { |
221 return receiver_.ReceiveCodec(currentReceiveCodec); | 224 return receiver_.ReceiveCodec(currentReceiveCodec); |
222 } | 225 } |
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
270 } | 273 } |
271 | 274 |
272 void RegisterPostEncodeImageCallback( | 275 void RegisterPostEncodeImageCallback( |
273 EncodedImageCallback* observer) override { | 276 EncodedImageCallback* observer) override { |
274 post_encode_callback_.Register(observer); | 277 post_encode_callback_.Register(observer); |
275 } | 278 } |
276 | 279 |
277 void TriggerDecoderShutdown() override { receiver_.TriggerDecoderShutdown(); } | 280 void TriggerDecoderShutdown() override { receiver_.TriggerDecoderShutdown(); } |
278 | 281 |
279 private: | 282 private: |
283 rtc::ThreadChecker construction_thread_; | |
280 EncodedImageCallbackWrapper post_encode_callback_; | 284 EncodedImageCallbackWrapper post_encode_callback_; |
281 vcm::VideoSender sender_; | 285 vcm::VideoSender sender_; |
282 std::unique_ptr<VideoBitrateAllocator> rate_allocator_; | 286 std::unique_ptr<VideoBitrateAllocator> rate_allocator_; |
283 std::unique_ptr<VCMTiming> timing_; | 287 std::unique_ptr<VCMTiming> timing_; |
284 vcm::VideoReceiver receiver_; | 288 vcm::VideoReceiver receiver_; |
285 }; | 289 }; |
286 } // namespace | 290 } // namespace |
287 | 291 |
288 void VideoCodingModule::Codec(VideoCodecType codecType, VideoCodec* codec) { | 292 void VideoCodingModule::Codec(VideoCodecType codecType, VideoCodec* codec) { |
289 VCMCodecDataBase::Codec(codecType, codec); | 293 VCMCodecDataBase::Codec(codecType, codec); |
(...skipping 19 matching lines...) Expand all Loading... | |
309 nullptr, // NackSender | 313 nullptr, // NackSender |
310 nullptr); // KeyframeRequestSender | 314 nullptr); // KeyframeRequestSender |
311 } | 315 } |
312 | 316 |
313 // Create method for the new jitter buffer. | 317 // Create method for the new jitter buffer. |
314 VideoCodingModule* VideoCodingModule::Create( | 318 VideoCodingModule* VideoCodingModule::Create( |
315 Clock* clock, | 319 Clock* clock, |
316 EventFactory* event_factory, | 320 EventFactory* event_factory, |
317 NackSender* nack_sender, | 321 NackSender* nack_sender, |
318 KeyFrameRequestSender* keyframe_request_sender) { | 322 KeyFrameRequestSender* keyframe_request_sender) { |
319 assert(clock); | 323 RTC_DCHECK(clock); |
320 assert(event_factory); | 324 RTC_DCHECK(event_factory); |
321 return new VideoCodingModuleImpl(clock, event_factory, nack_sender, | 325 return new VideoCodingModuleImpl(clock, event_factory, nack_sender, |
322 keyframe_request_sender, nullptr); | 326 keyframe_request_sender, nullptr); |
323 } | 327 } |
324 | 328 |
325 } // namespace webrtc | 329 } // namespace webrtc |
OLD | NEW |