Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(506)

Side by Side Diff: content/renderer/media/webrtc/webrtc_video_capturer_adapter.cc

Issue 686523002: Standardize usage of virtual/override/final specifiers. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase Created 6 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 "content/renderer/media/webrtc/webrtc_video_capturer_adapter.h" 5 #include "content/renderer/media/webrtc/webrtc_video_capturer_adapter.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/debug/trace_event.h" 8 #include "base/debug/trace_event.h"
9 #include "base/memory/aligned_memory.h" 9 #include "base/memory/aligned_memory.h"
10 #include "media/base/video_frame.h" 10 #include "media/base/video_frame.h"
(...skipping 20 matching lines...) Expand all
31 public: 31 public:
32 VideoFrameWrapper(const scoped_refptr<media::VideoFrame>& frame, 32 VideoFrameWrapper(const scoped_refptr<media::VideoFrame>& frame,
33 int64 elapsed_time) 33 int64 elapsed_time)
34 : frame_(media::VideoFrame::WrapVideoFrame( 34 : frame_(media::VideoFrame::WrapVideoFrame(
35 frame, 35 frame,
36 frame->visible_rect(), 36 frame->visible_rect(),
37 frame->natural_size(), 37 frame->natural_size(),
38 base::Bind(&ReleaseOriginalFrame, frame))), 38 base::Bind(&ReleaseOriginalFrame, frame))),
39 elapsed_time_(elapsed_time) {} 39 elapsed_time_(elapsed_time) {}
40 40
41 virtual VideoFrame* Copy() const override { 41 VideoFrame* Copy() const override {
42 DCHECK(thread_checker_.CalledOnValidThread()); 42 DCHECK(thread_checker_.CalledOnValidThread());
43 return new VideoFrameWrapper(frame_, elapsed_time_); 43 return new VideoFrameWrapper(frame_, elapsed_time_);
44 } 44 }
45 45
46 virtual size_t GetWidth() const override { 46 size_t GetWidth() const override {
47 DCHECK(thread_checker_.CalledOnValidThread()); 47 DCHECK(thread_checker_.CalledOnValidThread());
48 return static_cast<size_t>(frame_->visible_rect().width()); 48 return static_cast<size_t>(frame_->visible_rect().width());
49 } 49 }
50 50
51 virtual size_t GetHeight() const override { 51 size_t GetHeight() const override {
52 DCHECK(thread_checker_.CalledOnValidThread()); 52 DCHECK(thread_checker_.CalledOnValidThread());
53 return static_cast<size_t>(frame_->visible_rect().height()); 53 return static_cast<size_t>(frame_->visible_rect().height());
54 } 54 }
55 55
56 virtual const uint8* GetYPlane() const override { 56 const uint8* GetYPlane() const override {
57 DCHECK(thread_checker_.CalledOnValidThread()); 57 DCHECK(thread_checker_.CalledOnValidThread());
58 return frame_->visible_data(media::VideoFrame::kYPlane); 58 return frame_->visible_data(media::VideoFrame::kYPlane);
59 } 59 }
60 60
61 virtual const uint8* GetUPlane() const override { 61 const uint8* GetUPlane() const override {
62 DCHECK(thread_checker_.CalledOnValidThread()); 62 DCHECK(thread_checker_.CalledOnValidThread());
63 return frame_->visible_data(media::VideoFrame::kUPlane); 63 return frame_->visible_data(media::VideoFrame::kUPlane);
64 } 64 }
65 65
66 virtual const uint8* GetVPlane() const override { 66 const uint8* GetVPlane() const override {
67 DCHECK(thread_checker_.CalledOnValidThread()); 67 DCHECK(thread_checker_.CalledOnValidThread());
68 return frame_->visible_data(media::VideoFrame::kVPlane); 68 return frame_->visible_data(media::VideoFrame::kVPlane);
69 } 69 }
70 70
71 virtual uint8* GetYPlane() override { 71 uint8* GetYPlane() override {
72 DCHECK(thread_checker_.CalledOnValidThread()); 72 DCHECK(thread_checker_.CalledOnValidThread());
73 return frame_->visible_data(media::VideoFrame::kYPlane); 73 return frame_->visible_data(media::VideoFrame::kYPlane);
74 } 74 }
75 75
76 virtual uint8* GetUPlane() override { 76 uint8* GetUPlane() override {
77 DCHECK(thread_checker_.CalledOnValidThread()); 77 DCHECK(thread_checker_.CalledOnValidThread());
78 return frame_->visible_data(media::VideoFrame::kUPlane); 78 return frame_->visible_data(media::VideoFrame::kUPlane);
79 } 79 }
80 80
81 virtual uint8* GetVPlane() override { 81 uint8* GetVPlane() override {
82 DCHECK(thread_checker_.CalledOnValidThread()); 82 DCHECK(thread_checker_.CalledOnValidThread());
83 return frame_->visible_data(media::VideoFrame::kVPlane); 83 return frame_->visible_data(media::VideoFrame::kVPlane);
84 } 84 }
85 85
86 virtual int32 GetYPitch() const override { 86 int32 GetYPitch() const override {
87 DCHECK(thread_checker_.CalledOnValidThread()); 87 DCHECK(thread_checker_.CalledOnValidThread());
88 return frame_->stride(media::VideoFrame::kYPlane); 88 return frame_->stride(media::VideoFrame::kYPlane);
89 } 89 }
90 90
91 virtual int32 GetUPitch() const override { 91 int32 GetUPitch() const override {
92 DCHECK(thread_checker_.CalledOnValidThread()); 92 DCHECK(thread_checker_.CalledOnValidThread());
93 return frame_->stride(media::VideoFrame::kUPlane); 93 return frame_->stride(media::VideoFrame::kUPlane);
94 } 94 }
95 95
96 virtual int32 GetVPitch() const override { 96 int32 GetVPitch() const override {
97 DCHECK(thread_checker_.CalledOnValidThread()); 97 DCHECK(thread_checker_.CalledOnValidThread());
98 return frame_->stride(media::VideoFrame::kVPlane); 98 return frame_->stride(media::VideoFrame::kVPlane);
99 } 99 }
100 100
101 virtual void* GetNativeHandle() const override { 101 void* GetNativeHandle() const override {
102 DCHECK(thread_checker_.CalledOnValidThread()); 102 DCHECK(thread_checker_.CalledOnValidThread());
103 return NULL; 103 return NULL;
104 } 104 }
105 105
106 virtual size_t GetPixelWidth() const override { 106 size_t GetPixelWidth() const override {
107 DCHECK(thread_checker_.CalledOnValidThread()); 107 DCHECK(thread_checker_.CalledOnValidThread());
108 return 1; 108 return 1;
109 } 109 }
110 virtual size_t GetPixelHeight() const override { 110 size_t GetPixelHeight() const override {
111 DCHECK(thread_checker_.CalledOnValidThread()); 111 DCHECK(thread_checker_.CalledOnValidThread());
112 return 1; 112 return 1;
113 } 113 }
114 114
115 virtual int64 GetElapsedTime() const override { 115 int64 GetElapsedTime() const override {
116 DCHECK(thread_checker_.CalledOnValidThread()); 116 DCHECK(thread_checker_.CalledOnValidThread());
117 return elapsed_time_; 117 return elapsed_time_;
118 } 118 }
119 119
120 virtual int64 GetTimeStamp() const override { 120 int64 GetTimeStamp() const override {
121 DCHECK(thread_checker_.CalledOnValidThread()); 121 DCHECK(thread_checker_.CalledOnValidThread());
122 return frame_->timestamp().InMicroseconds() * 122 return frame_->timestamp().InMicroseconds() *
123 base::Time::kNanosecondsPerMicrosecond; 123 base::Time::kNanosecondsPerMicrosecond;
124 } 124 }
125 125
126 virtual void SetElapsedTime(int64 elapsed_time) override { 126 void SetElapsedTime(int64 elapsed_time) override {
127 DCHECK(thread_checker_.CalledOnValidThread()); 127 DCHECK(thread_checker_.CalledOnValidThread());
128 elapsed_time_ = elapsed_time; 128 elapsed_time_ = elapsed_time;
129 } 129 }
130 130
131 virtual void SetTimeStamp(int64 time_stamp) override { 131 void SetTimeStamp(int64 time_stamp) override {
132 DCHECK(thread_checker_.CalledOnValidThread()); 132 DCHECK(thread_checker_.CalledOnValidThread());
133 // Round to closest microsecond. 133 // Round to closest microsecond.
134 frame_->set_timestamp(base::TimeDelta::FromMicroseconds( 134 frame_->set_timestamp(base::TimeDelta::FromMicroseconds(
135 (time_stamp + base::Time::kNanosecondsPerMicrosecond / 2) / 135 (time_stamp + base::Time::kNanosecondsPerMicrosecond / 2) /
136 base::Time::kNanosecondsPerMicrosecond)); 136 base::Time::kNanosecondsPerMicrosecond));
137 } 137 }
138 138
139 virtual int GetRotation() const override { 139 int GetRotation() const override {
140 DCHECK(thread_checker_.CalledOnValidThread()); 140 DCHECK(thread_checker_.CalledOnValidThread());
141 return 0; 141 return 0;
142 } 142 }
143 143
144 // TODO(magjed): Refactor into base class. 144 // TODO(magjed): Refactor into base class.
145 virtual size_t ConvertToRgbBuffer(uint32 to_fourcc, 145 size_t ConvertToRgbBuffer(uint32 to_fourcc,
146 uint8* buffer, 146 uint8* buffer,
147 size_t size, 147 size_t size,
148 int stride_rgb) const override { 148 int stride_rgb) const override {
149 DCHECK(thread_checker_.CalledOnValidThread()); 149 DCHECK(thread_checker_.CalledOnValidThread());
150 const size_t needed = std::abs(stride_rgb) * GetHeight(); 150 const size_t needed = std::abs(stride_rgb) * GetHeight();
151 if (size < needed) { 151 if (size < needed) {
152 DLOG(WARNING) << "RGB buffer is not large enough"; 152 DLOG(WARNING) << "RGB buffer is not large enough";
153 return needed; 153 return needed;
154 } 154 }
155 155
156 if (libyuv::ConvertFromI420(GetYPlane(), 156 if (libyuv::ConvertFromI420(GetYPlane(),
157 GetYPitch(), 157 GetYPitch(),
158 GetUPlane(), 158 GetUPlane(),
159 GetUPitch(), 159 GetUPitch(),
160 GetVPlane(), 160 GetVPlane(),
161 GetVPitch(), 161 GetVPitch(),
162 buffer, 162 buffer,
163 stride_rgb, 163 stride_rgb,
164 static_cast<int>(GetWidth()), 164 static_cast<int>(GetWidth()),
165 static_cast<int>(GetHeight()), 165 static_cast<int>(GetHeight()),
166 to_fourcc)) { 166 to_fourcc)) {
167 DLOG(ERROR) << "RGB type not supported: " << to_fourcc; 167 DLOG(ERROR) << "RGB type not supported: " << to_fourcc;
168 return 0; // 0 indicates error 168 return 0; // 0 indicates error
169 } 169 }
170 return needed; 170 return needed;
171 } 171 }
172 172
173 // The rest of the public methods are NOTIMPLEMENTED. 173 // The rest of the public methods are NOTIMPLEMENTED.
174 virtual bool InitToBlack(int w, 174 bool InitToBlack(int w,
175 int h, 175 int h,
176 size_t pixel_width, 176 size_t pixel_width,
177 size_t pixel_height, 177 size_t pixel_height,
178 int64 elapsed_time, 178 int64 elapsed_time,
179 int64 time_stamp) override { 179 int64 time_stamp) override {
180 NOTIMPLEMENTED(); 180 NOTIMPLEMENTED();
181 return false; 181 return false;
182 } 182 }
183 183
184 virtual bool Reset(uint32 fourcc, 184 bool Reset(uint32 fourcc,
185 int w, 185 int w,
186 int h, 186 int h,
187 int dw, 187 int dw,
188 int dh, 188 int dh,
189 uint8* sample, 189 uint8* sample,
190 size_t sample_size, 190 size_t sample_size,
191 size_t pixel_width, 191 size_t pixel_width,
192 size_t pixel_height, 192 size_t pixel_height,
193 int64 elapsed_time, 193 int64 elapsed_time,
194 int64 time_stamp, 194 int64 time_stamp,
195 int rotation) override { 195 int rotation) override {
196 NOTIMPLEMENTED(); 196 NOTIMPLEMENTED();
197 return false; 197 return false;
198 } 198 }
199 199
200 virtual bool MakeExclusive() override { 200 bool MakeExclusive() override {
201 NOTIMPLEMENTED(); 201 NOTIMPLEMENTED();
202 return false; 202 return false;
203 } 203 }
204 204
205 virtual size_t CopyToBuffer(uint8* buffer, size_t size) const override { 205 size_t CopyToBuffer(uint8* buffer, size_t size) const override {
206 NOTIMPLEMENTED(); 206 NOTIMPLEMENTED();
207 return 0; 207 return 0;
208 } 208 }
209 209
210 protected: 210 protected:
211 // TODO(magjed): Refactor as a static method in WebRtcVideoFrame. 211 // TODO(magjed): Refactor as a static method in WebRtcVideoFrame.
212 virtual VideoFrame* CreateEmptyFrame(int w, 212 VideoFrame* CreateEmptyFrame(int w,
213 int h, 213 int h,
214 size_t pixel_width, 214 size_t pixel_width,
215 size_t pixel_height, 215 size_t pixel_height,
216 int64 elapsed_time, 216 int64 elapsed_time,
217 int64 time_stamp) const override { 217 int64 time_stamp) const override {
218 DCHECK(thread_checker_.CalledOnValidThread()); 218 DCHECK(thread_checker_.CalledOnValidThread());
219 VideoFrame* frame = new cricket::WebRtcVideoFrame(); 219 VideoFrame* frame = new cricket::WebRtcVideoFrame();
220 frame->InitToBlack( 220 frame->InitToBlack(
221 w, h, pixel_width, pixel_height, elapsed_time, time_stamp); 221 w, h, pixel_width, pixel_height, elapsed_time, time_stamp);
222 return frame; 222 return frame;
223 } 223 }
224 224
225 private: 225 private:
226 scoped_refptr<media::VideoFrame> frame_; 226 scoped_refptr<media::VideoFrame> frame_;
227 int64 elapsed_time_; 227 int64 elapsed_time_;
(...skipping 29 matching lines...) Expand all
257 257
258 frame_ = frame; 258 frame_ = frame;
259 } 259 }
260 260
261 void ReleaseFrame() { frame_ = NULL; } 261 void ReleaseFrame() { frame_ = NULL; }
262 262
263 const cricket::CapturedFrame* GetCapturedFrame() const { 263 const cricket::CapturedFrame* GetCapturedFrame() const {
264 return &captured_frame_; 264 return &captured_frame_;
265 } 265 }
266 266
267 virtual cricket::VideoFrame* CreateAliasedFrame( 267 cricket::VideoFrame* CreateAliasedFrame(
268 const cricket::CapturedFrame* captured_frame, 268 const cricket::CapturedFrame* captured_frame,
269 int dst_width, 269 int dst_width,
270 int dst_height) const override { 270 int dst_height) const override {
271 // Check that captured_frame is actually our frame. 271 // Check that captured_frame is actually our frame.
272 DCHECK(captured_frame == &captured_frame_); 272 DCHECK(captured_frame == &captured_frame_);
273 DCHECK(frame_.get()); 273 DCHECK(frame_.get());
274 274
275 scoped_refptr<media::VideoFrame> video_frame = frame_; 275 scoped_refptr<media::VideoFrame> video_frame = frame_;
276 // Check if scaling is needed. 276 // Check if scaling is needed.
277 if (dst_width != frame_->visible_rect().width() || 277 if (dst_width != frame_->visible_rect().width() ||
(...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after
407 DCHECK(frame_factory_ == frame_factory()); 407 DCHECK(frame_factory_ == frame_factory());
408 frame_factory_->SetFrame(frame, elapsed_time); 408 frame_factory_->SetFrame(frame, elapsed_time);
409 409
410 // This signals to libJingle that a new VideoFrame is available. 410 // This signals to libJingle that a new VideoFrame is available.
411 SignalFrameCaptured(this, frame_factory_->GetCapturedFrame()); 411 SignalFrameCaptured(this, frame_factory_->GetCapturedFrame());
412 412
413 frame_factory_->ReleaseFrame(); // Release the frame ASAP. 413 frame_factory_->ReleaseFrame(); // Release the frame ASAP.
414 } 414 }
415 415
416 } // namespace content 416 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698