| Index: webrtc/common_video/libyuv/webrtc_libyuv.cc
|
| diff --git a/webrtc/common_video/libyuv/webrtc_libyuv.cc b/webrtc/common_video/libyuv/webrtc_libyuv.cc
|
| index fd08029d1cda3465e3947532b72b71b208ba7fee..2f60e0931fac49ce3dd3da656e3ac256f4307a80 100644
|
| --- a/webrtc/common_video/libyuv/webrtc_libyuv.cc
|
| +++ b/webrtc/common_video/libyuv/webrtc_libyuv.cc
|
| @@ -70,11 +70,11 @@ static int PrintPlane(const uint8_t* buf,
|
| }
|
|
|
| // TODO(nisse): Belongs with the test code?
|
| -int PrintVideoFrame(const VideoFrameBuffer& frame, FILE* file) {
|
| +int PrintVideoFrame(const I420BufferInterface& frame, FILE* file) {
|
| int width = frame.width();
|
| int height = frame.height();
|
| - int chroma_width = (width + 1) / 2;
|
| - int chroma_height = (height + 1) / 2;
|
| + int chroma_width = frame.ChromaWidth();
|
| + int chroma_height = frame.ChromaHeight();
|
|
|
| if (PrintPlane(frame.DataY(), width, height,
|
| frame.StrideY(), file) < 0) {
|
| @@ -94,10 +94,10 @@ int PrintVideoFrame(const VideoFrameBuffer& frame, FILE* file) {
|
| }
|
|
|
| int PrintVideoFrame(const VideoFrame& frame, FILE* file) {
|
| - return PrintVideoFrame(*frame.video_frame_buffer(), file);
|
| + return PrintVideoFrame(*frame.video_frame_buffer()->ToI420(), file);
|
| }
|
|
|
| -int ExtractBuffer(const rtc::scoped_refptr<VideoFrameBuffer>& input_frame,
|
| +int ExtractBuffer(const rtc::scoped_refptr<I420BufferInterface>& input_frame,
|
| size_t size,
|
| uint8_t* buffer) {
|
| RTC_DCHECK(buffer);
|
| @@ -110,8 +110,8 @@ int ExtractBuffer(const rtc::scoped_refptr<VideoFrameBuffer>& input_frame,
|
| return -1;
|
| }
|
|
|
| - int chroma_width = (width + 1) / 2;
|
| - int chroma_height = (height + 1) / 2;
|
| + int chroma_width = input_frame->ChromaWidth();
|
| + int chroma_height = input_frame->ChromaHeight();
|
|
|
| libyuv::I420Copy(input_frame->DataY(),
|
| input_frame->StrideY(),
|
| @@ -129,7 +129,8 @@ int ExtractBuffer(const rtc::scoped_refptr<VideoFrameBuffer>& input_frame,
|
| }
|
|
|
| int ExtractBuffer(const VideoFrame& input_frame, size_t size, uint8_t* buffer) {
|
| - return ExtractBuffer(input_frame.video_frame_buffer(), size, buffer);
|
| + return ExtractBuffer(input_frame.video_frame_buffer()->ToI420(), size,
|
| + buffer);
|
| }
|
|
|
| int ConvertNV12ToRGB565(const uint8_t* src_frame,
|
| @@ -240,21 +241,18 @@ int ConvertFromI420(const VideoFrame& src_frame,
|
| VideoType dst_video_type,
|
| int dst_sample_size,
|
| uint8_t* dst_frame) {
|
| + rtc::scoped_refptr<I420BufferInterface> i420_buffer =
|
| + src_frame.video_frame_buffer()->ToI420();
|
| return libyuv::ConvertFromI420(
|
| - src_frame.video_frame_buffer()->DataY(),
|
| - src_frame.video_frame_buffer()->StrideY(),
|
| - src_frame.video_frame_buffer()->DataU(),
|
| - src_frame.video_frame_buffer()->StrideU(),
|
| - src_frame.video_frame_buffer()->DataV(),
|
| - src_frame.video_frame_buffer()->StrideV(),
|
| - dst_frame, dst_sample_size,
|
| - src_frame.width(), src_frame.height(),
|
| + i420_buffer->DataY(), i420_buffer->StrideY(), i420_buffer->DataU(),
|
| + i420_buffer->StrideU(), i420_buffer->DataV(), i420_buffer->StrideV(),
|
| + dst_frame, dst_sample_size, src_frame.width(), src_frame.height(),
|
| ConvertVideoType(dst_video_type));
|
| }
|
|
|
| // Compute PSNR for an I420 frame (all planes). Can upscale test frame.
|
| -double I420PSNR(const VideoFrameBuffer& ref_buffer,
|
| - const VideoFrameBuffer& test_buffer) {
|
| +double I420PSNR(const I420BufferInterface& ref_buffer,
|
| + const I420BufferInterface& test_buffer) {
|
| RTC_DCHECK_GE(ref_buffer.width(), test_buffer.width());
|
| RTC_DCHECK_GE(ref_buffer.height(), test_buffer.height());
|
| if ((ref_buffer.width() != test_buffer.width()) ||
|
| @@ -279,13 +277,13 @@ double I420PSNR(const VideoFrameBuffer& ref_buffer,
|
| double I420PSNR(const VideoFrame* ref_frame, const VideoFrame* test_frame) {
|
| if (!ref_frame || !test_frame)
|
| return -1;
|
| - return I420PSNR(*ref_frame->video_frame_buffer(),
|
| - *test_frame->video_frame_buffer());
|
| + return I420PSNR(*ref_frame->video_frame_buffer()->ToI420(),
|
| + *test_frame->video_frame_buffer()->ToI420());
|
| }
|
|
|
| // Compute SSIM for an I420 frame (all planes). Can upscale test_buffer.
|
| -double I420SSIM(const VideoFrameBuffer& ref_buffer,
|
| - const VideoFrameBuffer& test_buffer) {
|
| +double I420SSIM(const I420BufferInterface& ref_buffer,
|
| + const I420BufferInterface& test_buffer) {
|
| RTC_DCHECK_GE(ref_buffer.width(), test_buffer.width());
|
| RTC_DCHECK_GE(ref_buffer.height(), test_buffer.height());
|
| if ((ref_buffer.width() != test_buffer.width()) ||
|
| @@ -305,8 +303,8 @@ double I420SSIM(const VideoFrameBuffer& ref_buffer,
|
| double I420SSIM(const VideoFrame* ref_frame, const VideoFrame* test_frame) {
|
| if (!ref_frame || !test_frame)
|
| return -1;
|
| - return I420SSIM(*ref_frame->video_frame_buffer(),
|
| - *test_frame->video_frame_buffer());
|
| + return I420SSIM(*ref_frame->video_frame_buffer()->ToI420(),
|
| + *test_frame->video_frame_buffer()->ToI420());
|
| }
|
|
|
| void NV12Scale(std::vector<uint8_t>* tmp_buffer,
|
|
|