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 156 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 26 matching lines...) Expand all Loading... |
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 assert(clock); |
320 assert(event_factory); | 324 assert(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 |