@@ -192,6 +192,19 @@ webrtc::BiplanarYuv8Buffer* BiplanarYuv8Buffer::buffer() const {
192
192
I420Buffer::I420Buffer (rtc::scoped_refptr<webrtc::I420BufferInterface> buffer)
193
193
: PlanarYuv8Buffer(buffer) {}
194
194
195
+ webrtc::I420BufferInterface* I420Buffer::buffer () const {
196
+ return static_cast <webrtc::I420BufferInterface*>(buffer_.get ());
197
+ }
198
+
199
+ std::unique_ptr<I420Buffer> I420Buffer::scale (int scaled_width,
200
+ int scaled_height) const {
201
+ rtc::scoped_refptr<webrtc::VideoFrameBuffer> result =
202
+ buffer ()->Scale (scaled_width, scaled_height);
203
+ return std::make_unique<I420Buffer>(
204
+ rtc::scoped_refptr<webrtc::I420BufferInterface>(
205
+ const_cast <webrtc::I420BufferInterface*>(result->GetI420 ())));
206
+ }
207
+
195
208
I420ABuffer::I420ABuffer (
196
209
rtc::scoped_refptr<webrtc::I420ABufferInterface> buffer)
197
210
: I420Buffer(buffer) {}
@@ -208,18 +221,79 @@ webrtc::I420ABufferInterface* I420ABuffer::buffer() const {
208
221
return static_cast <webrtc::I420ABufferInterface*>(buffer_.get ());
209
222
}
210
223
224
+ std::unique_ptr<I420ABuffer> I420ABuffer::scale (int scaled_width,
225
+ int scaled_height) const {
226
+ rtc::scoped_refptr<webrtc::VideoFrameBuffer> result =
227
+ buffer ()->Scale (scaled_width, scaled_height);
228
+ return std::make_unique<I420ABuffer>(
229
+ rtc::scoped_refptr<webrtc::I420ABufferInterface>(
230
+ const_cast <webrtc::I420ABufferInterface*>(result->GetI420A ())));
231
+ }
232
+
211
233
I422Buffer::I422Buffer (rtc::scoped_refptr<webrtc::I422BufferInterface> buffer)
212
234
: PlanarYuv8Buffer(buffer) {}
213
235
236
+ webrtc::I422BufferInterface* I422Buffer::buffer () const {
237
+ return static_cast <webrtc::I422BufferInterface*>(buffer_.get ());
238
+ }
239
+
240
+ std::unique_ptr<I422Buffer> I422Buffer::scale (int scaled_width,
241
+ int scaled_height) const {
242
+ rtc::scoped_refptr<webrtc::VideoFrameBuffer> result =
243
+ buffer ()->Scale (scaled_width, scaled_height);
244
+ return std::make_unique<I422Buffer>(
245
+ rtc::scoped_refptr<webrtc::I422BufferInterface>(
246
+ const_cast <webrtc::I422BufferInterface*>(result->GetI422 ())));
247
+ }
248
+
214
249
I444Buffer::I444Buffer (rtc::scoped_refptr<webrtc::I444BufferInterface> buffer)
215
250
: PlanarYuv8Buffer(buffer) {}
216
251
252
+ webrtc::I444BufferInterface* I444Buffer::buffer () const {
253
+ return static_cast <webrtc::I444BufferInterface*>(buffer_.get ());
254
+ }
255
+
256
+ std::unique_ptr<I444Buffer> I444Buffer::scale (int scaled_width,
257
+ int scaled_height) const {
258
+ rtc::scoped_refptr<webrtc::VideoFrameBuffer> result =
259
+ buffer ()->Scale (scaled_width, scaled_height);
260
+ return std::make_unique<I444Buffer>(
261
+ rtc::scoped_refptr<webrtc::I444BufferInterface>(
262
+ const_cast <webrtc::I444BufferInterface*>(result->GetI444 ())));
263
+ }
264
+
217
265
I010Buffer::I010Buffer (rtc::scoped_refptr<webrtc::I010BufferInterface> buffer)
218
266
: PlanarYuv16BBuffer(buffer) {}
219
267
268
+ webrtc::I010BufferInterface* I010Buffer::buffer () const {
269
+ return static_cast <webrtc::I010BufferInterface*>(buffer_.get ());
270
+ }
271
+
272
+ std::unique_ptr<I010Buffer> I010Buffer::scale (int scaled_width,
273
+ int scaled_height) const {
274
+ rtc::scoped_refptr<webrtc::VideoFrameBuffer> result =
275
+ buffer ()->Scale (scaled_width, scaled_height);
276
+ return std::make_unique<I010Buffer>(
277
+ rtc::scoped_refptr<webrtc::I010BufferInterface>(
278
+ const_cast <webrtc::I010BufferInterface*>(result->GetI010 ())));
279
+ }
280
+
220
281
NV12Buffer::NV12Buffer (rtc::scoped_refptr<webrtc::NV12BufferInterface> buffer)
221
282
: BiplanarYuv8Buffer(buffer) {}
222
283
284
+ webrtc::NV12BufferInterface* NV12Buffer::buffer () const {
285
+ return static_cast <webrtc::NV12BufferInterface*>(buffer_.get ());
286
+ }
287
+
288
+ std::unique_ptr<NV12Buffer> NV12Buffer::scale (int scaled_width,
289
+ int scaled_height) const {
290
+ rtc::scoped_refptr<webrtc::VideoFrameBuffer> result =
291
+ buffer ()->Scale (scaled_width, scaled_height);
292
+ return std::make_unique<NV12Buffer>(
293
+ rtc::scoped_refptr<webrtc::NV12BufferInterface>(
294
+ const_cast <webrtc::NV12BufferInterface*>(result->GetNV12 ())));
295
+ }
296
+
223
297
std::unique_ptr<I420Buffer> copy_i420_buffer (
224
298
const std::unique_ptr<I420Buffer>& i420) {
225
299
return std::make_unique<I420Buffer>(webrtc::I420Buffer::Copy (*i420->get ()));
0 commit comments