OLD | NEW |
1 /* | 1 /* |
2 * Copyright (c) 2013 The WebRTC project authors. All Rights Reserved. | 2 * Copyright (c) 2013 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 |
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
58 } | 58 } |
59 | 59 |
60 FrameGeneratorCapturer::FrameGeneratorCapturer(Clock* clock, | 60 FrameGeneratorCapturer::FrameGeneratorCapturer(Clock* clock, |
61 VideoCaptureInput* input, | 61 VideoCaptureInput* input, |
62 FrameGenerator* frame_generator, | 62 FrameGenerator* frame_generator, |
63 int target_fps) | 63 int target_fps) |
64 : VideoCapturer(input), | 64 : VideoCapturer(input), |
65 clock_(clock), | 65 clock_(clock), |
66 sending_(false), | 66 sending_(false), |
67 tick_(EventTimerWrapper::Create()), | 67 tick_(EventTimerWrapper::Create()), |
| 68 thread_(FrameGeneratorCapturer::Run, this, "FrameGeneratorCapturer"), |
68 frame_generator_(frame_generator), | 69 frame_generator_(frame_generator), |
69 target_fps_(target_fps), | 70 target_fps_(target_fps), |
70 first_frame_capture_time_(-1) { | 71 first_frame_capture_time_(-1) { |
71 assert(input != NULL); | 72 assert(input != NULL); |
72 assert(frame_generator != NULL); | 73 assert(frame_generator != NULL); |
73 assert(target_fps > 0); | 74 assert(target_fps > 0); |
74 } | 75 } |
75 | 76 |
76 FrameGeneratorCapturer::~FrameGeneratorCapturer() { | 77 FrameGeneratorCapturer::~FrameGeneratorCapturer() { |
77 Stop(); | 78 Stop(); |
78 | 79 |
79 if (thread_.get() != NULL) | 80 thread_.Stop(); |
80 thread_->Stop(); | |
81 } | 81 } |
82 | 82 |
83 bool FrameGeneratorCapturer::Init() { | 83 bool FrameGeneratorCapturer::Init() { |
84 // This check is added because frame_generator_ might be file based and should | 84 // This check is added because frame_generator_ might be file based and should |
85 // not crash because a file moved. | 85 // not crash because a file moved. |
86 if (frame_generator_.get() == NULL) | 86 if (frame_generator_.get() == NULL) |
87 return false; | 87 return false; |
88 | 88 |
89 if (!tick_->StartTimer(true, 1000 / target_fps_)) | 89 if (!tick_->StartTimer(true, 1000 / target_fps_)) |
90 return false; | 90 return false; |
91 thread_ = PlatformThread::CreateThread(FrameGeneratorCapturer::Run, this, | 91 thread_.Start(); |
92 "FrameGeneratorCapturer"); | 92 thread_.SetPriority(rtc::kHighPriority); |
93 if (thread_.get() == NULL) | |
94 return false; | |
95 if (!thread_->Start()) { | |
96 thread_.reset(); | |
97 return false; | |
98 } | |
99 thread_->SetPriority(webrtc::kHighPriority); | |
100 return true; | 93 return true; |
101 } | 94 } |
102 | 95 |
103 bool FrameGeneratorCapturer::Run(void* obj) { | 96 bool FrameGeneratorCapturer::Run(void* obj) { |
104 static_cast<FrameGeneratorCapturer*>(obj)->InsertFrame(); | 97 static_cast<FrameGeneratorCapturer*>(obj)->InsertFrame(); |
105 return true; | 98 return true; |
106 } | 99 } |
107 | 100 |
108 void FrameGeneratorCapturer::InsertFrame() { | 101 void FrameGeneratorCapturer::InsertFrame() { |
109 { | 102 { |
(...skipping 18 matching lines...) Expand all Loading... |
128 void FrameGeneratorCapturer::Stop() { | 121 void FrameGeneratorCapturer::Stop() { |
129 rtc::CritScope cs(&lock_); | 122 rtc::CritScope cs(&lock_); |
130 sending_ = false; | 123 sending_ = false; |
131 } | 124 } |
132 | 125 |
133 void FrameGeneratorCapturer::ForceFrame() { | 126 void FrameGeneratorCapturer::ForceFrame() { |
134 tick_->Set(); | 127 tick_->Set(); |
135 } | 128 } |
136 } // test | 129 } // test |
137 } // webrtc | 130 } // webrtc |
OLD | NEW |