@@ -192,6 +192,19 @@ webrtc::BiplanarYuv8Buffer* BiplanarYuv8Buffer::buffer() const {
192192I420Buffer::I420Buffer (rtc::scoped_refptr<webrtc::I420BufferInterface> buffer)
193193 : PlanarYuv8Buffer(buffer) {}
194194
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+
195208I420ABuffer::I420ABuffer (
196209 rtc::scoped_refptr<webrtc::I420ABufferInterface> buffer)
197210 : I420Buffer(buffer) {}
@@ -208,18 +221,79 @@ webrtc::I420ABufferInterface* I420ABuffer::buffer() const {
208221 return static_cast <webrtc::I420ABufferInterface*>(buffer_.get ());
209222}
210223
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+
211233I422Buffer::I422Buffer (rtc::scoped_refptr<webrtc::I422BufferInterface> buffer)
212234 : PlanarYuv8Buffer(buffer) {}
213235
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+
214249I444Buffer::I444Buffer (rtc::scoped_refptr<webrtc::I444BufferInterface> buffer)
215250 : PlanarYuv8Buffer(buffer) {}
216251
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+
217265I010Buffer::I010Buffer (rtc::scoped_refptr<webrtc::I010BufferInterface> buffer)
218266 : PlanarYuv16BBuffer(buffer) {}
219267
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+
220281NV12Buffer::NV12Buffer (rtc::scoped_refptr<webrtc::NV12BufferInterface> buffer)
221282 : BiplanarYuv8Buffer(buffer) {}
222283
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+
223297std::unique_ptr<I420Buffer> copy_i420_buffer (
224298 const std::unique_ptr<I420Buffer>& i420) {
225299 return std::make_unique<I420Buffer>(webrtc::I420Buffer::Copy (*i420->get ()));
0 commit comments