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/common_video/include/incoming_video_stream.h" | 11 #include "webrtc/common_video/include/incoming_video_stream.h" |
12 | 12 |
13 #include <memory> | 13 #include <memory> |
14 | 14 |
15 #include "webrtc/base/timeutils.h" | 15 #include "webrtc/base/timeutils.h" |
| 16 #include "webrtc/base/trace_event.h" |
16 #include "webrtc/common_video/video_render_frames.h" | 17 #include "webrtc/common_video/video_render_frames.h" |
17 #include "webrtc/system_wrappers/include/critical_section_wrapper.h" | 18 #include "webrtc/system_wrappers/include/critical_section_wrapper.h" |
18 #include "webrtc/system_wrappers/include/event_wrapper.h" | 19 #include "webrtc/system_wrappers/include/event_wrapper.h" |
19 | 20 |
20 namespace webrtc { | 21 namespace webrtc { |
21 namespace { | 22 namespace { |
22 const char kIncomingQueueName[] = "IncomingVideoStream"; | 23 const char kIncomingQueueName[] = "IncomingVideoStream"; |
23 } | 24 } |
24 | 25 |
25 // Capture by moving (std::move) into a lambda isn't possible in C++11 | 26 // Capture by moving (std::move) into a lambda isn't possible in C++11 |
(...skipping 27 matching lines...) Expand all Loading... |
53 : render_buffers_(delay_ms), | 54 : render_buffers_(delay_ms), |
54 callback_(callback), | 55 callback_(callback), |
55 incoming_render_queue_(kIncomingQueueName, | 56 incoming_render_queue_(kIncomingQueueName, |
56 rtc::TaskQueue::Priority::HIGH) {} | 57 rtc::TaskQueue::Priority::HIGH) {} |
57 | 58 |
58 IncomingVideoStream::~IncomingVideoStream() { | 59 IncomingVideoStream::~IncomingVideoStream() { |
59 RTC_DCHECK(main_thread_checker_.CalledOnValidThread()); | 60 RTC_DCHECK(main_thread_checker_.CalledOnValidThread()); |
60 } | 61 } |
61 | 62 |
62 void IncomingVideoStream::OnFrame(const VideoFrame& video_frame) { | 63 void IncomingVideoStream::OnFrame(const VideoFrame& video_frame) { |
| 64 TRACE_EVENT0("webrtc", "IncomingVideoStream::OnFrame"); |
63 RTC_CHECK_RUNS_SERIALIZED(&decoder_race_checker_); | 65 RTC_CHECK_RUNS_SERIALIZED(&decoder_race_checker_); |
64 RTC_DCHECK(!incoming_render_queue_.IsCurrent()); | 66 RTC_DCHECK(!incoming_render_queue_.IsCurrent()); |
65 incoming_render_queue_.PostTask( | 67 incoming_render_queue_.PostTask( |
66 std::unique_ptr<rtc::QueuedTask>(new NewFrameTask(this, video_frame))); | 68 std::unique_ptr<rtc::QueuedTask>(new NewFrameTask(this, video_frame))); |
67 } | 69 } |
68 | 70 |
69 void IncomingVideoStream::Dequeue() { | 71 void IncomingVideoStream::Dequeue() { |
| 72 TRACE_EVENT0("webrtc", "IncomingVideoStream::Dequeue"); |
70 RTC_DCHECK(incoming_render_queue_.IsCurrent()); | 73 RTC_DCHECK(incoming_render_queue_.IsCurrent()); |
71 rtc::Optional<VideoFrame> frame_to_render = render_buffers_.FrameToRender(); | 74 rtc::Optional<VideoFrame> frame_to_render = render_buffers_.FrameToRender(); |
72 if (frame_to_render) | 75 if (frame_to_render) |
73 callback_->OnFrame(*frame_to_render); | 76 callback_->OnFrame(*frame_to_render); |
74 | 77 |
75 if (render_buffers_.HasPendingFrames()) { | 78 if (render_buffers_.HasPendingFrames()) { |
76 uint32_t wait_time = render_buffers_.TimeToNextFrameRelease(); | 79 uint32_t wait_time = render_buffers_.TimeToNextFrameRelease(); |
77 incoming_render_queue_.PostDelayedTask([this]() { Dequeue(); }, wait_time); | 80 incoming_render_queue_.PostDelayedTask([this]() { Dequeue(); }, wait_time); |
78 } | 81 } |
79 } | 82 } |
80 | 83 |
81 } // namespace webrtc | 84 } // namespace webrtc |
OLD | NEW |