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

Unified Diff: webrtc/common_video/libyuv/webrtc_libyuv.cc

Issue 2278883002: Move MutableDataY{,U,V} methods to I420Buffer only. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Update android capture and decoder code. Created 4 years, 4 months 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 side-by-side diff with in-line comments
Download patch
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 44577e9ac8e6beac40001a87af737422d92da624..0e8fb54288c67ec4c6d7c6cd58b5237432d240b2 100644
--- a/webrtc/common_video/libyuv/webrtc_libyuv.cc
+++ b/webrtc/common_video/libyuv/webrtc_libyuv.cc
@@ -249,23 +249,20 @@ int ConvertToI420(VideoType src_video_type,
int src_height,
size_t sample_size,
VideoRotation rotation,
- VideoFrame* dst_frame) {
- int dst_width = dst_frame->width();
- int dst_height = dst_frame->height();
+ const rtc::scoped_refptr<I420Buffer>& dst_buffer) {
+ int dst_width = dst_buffer->width();
+ int dst_height = dst_buffer->height();
// LibYuv expects pre-rotation values for dst.
// Stride values should correspond to the destination values.
if (rotation == kVideoRotation_90 || rotation == kVideoRotation_270) {
- dst_width = dst_frame->height();
- dst_height = dst_frame->width();
+ dst_width = dst_buffer->height();
+ dst_height = dst_buffer->width();
}
return libyuv::ConvertToI420(
src_frame, sample_size,
- dst_frame->video_frame_buffer()->MutableDataY(),
- dst_frame->video_frame_buffer()->StrideY(),
- dst_frame->video_frame_buffer()->MutableDataU(),
- dst_frame->video_frame_buffer()->StrideU(),
- dst_frame->video_frame_buffer()->MutableDataV(),
- dst_frame->video_frame_buffer()->StrideV(),
+ dst_buffer->MutableDataY(), dst_buffer->StrideY(),
+ dst_buffer->MutableDataU(), dst_buffer->StrideU(),
+ dst_buffer->MutableDataV(), dst_buffer->StrideV(),
crop_x, crop_y,
src_width, src_height,
dst_width, dst_height,
@@ -290,55 +287,59 @@ int ConvertFromI420(const VideoFrame& src_frame,
}
// Compute PSNR for an I420 frame (all planes)
-double I420PSNR(const VideoFrame* ref_frame, const VideoFrame* test_frame) {
- if (!ref_frame || !test_frame)
+double I420PSNR(const rtc::scoped_refptr<VideoFrameBuffer>& ref_buffer,
+ const rtc::scoped_refptr<VideoFrameBuffer>& test_buffer) {
+ if (!ref_buffer || !test_buffer)
return -1;
- else if ((ref_frame->width() != test_frame->width()) ||
- (ref_frame->height() != test_frame->height()))
+ else if ((ref_buffer->width() != test_buffer->width()) ||
+ (ref_buffer->height() != test_buffer->height()))
return -1;
- else if (ref_frame->width() < 0 || ref_frame->height() < 0)
+ else if (ref_buffer->width() < 0 || ref_buffer->height() < 0)
return -1;
- double psnr = libyuv::I420Psnr(ref_frame->video_frame_buffer()->DataY(),
- ref_frame->video_frame_buffer()->StrideY(),
- ref_frame->video_frame_buffer()->DataU(),
- ref_frame->video_frame_buffer()->StrideU(),
- ref_frame->video_frame_buffer()->DataV(),
- ref_frame->video_frame_buffer()->StrideV(),
- test_frame->video_frame_buffer()->DataY(),
- test_frame->video_frame_buffer()->StrideY(),
- test_frame->video_frame_buffer()->DataU(),
- test_frame->video_frame_buffer()->StrideU(),
- test_frame->video_frame_buffer()->DataV(),
- test_frame->video_frame_buffer()->StrideV(),
- test_frame->width(), test_frame->height());
+ double psnr = libyuv::I420Psnr(ref_buffer->DataY(), ref_buffer->StrideY(),
+ ref_buffer->DataU(), ref_buffer->StrideU(),
+ ref_buffer->DataV(), ref_buffer->StrideV(),
+ test_buffer->DataY(), test_buffer->StrideY(),
+ test_buffer->DataU(), test_buffer->StrideU(),
+ test_buffer->DataV(), test_buffer->StrideV(),
+ test_buffer->width(), test_buffer->height());
// LibYuv sets the max psnr value to 128, we restrict it here.
// In case of 0 mse in one frame, 128 can skew the results significantly.
return (psnr > kPerfectPSNR) ? kPerfectPSNR : psnr;
}
-// Compute SSIM for an I420 frame (all planes)
-double I420SSIM(const VideoFrame* ref_frame, const VideoFrame* test_frame) {
+// Compute PSNR for an I420 frame (all planes)
+double I420PSNR(const VideoFrame* ref_frame, const VideoFrame* test_frame) {
if (!ref_frame || !test_frame)
return -1;
- else if ((ref_frame->width() != test_frame->width()) ||
- (ref_frame->height() != test_frame->height()))
+ return I420PSNR(ref_frame->video_frame_buffer(),
+ test_frame->video_frame_buffer());
+}
+
+// Compute SSIM for an I420 frame (all planes)
+double I420SSIM(const rtc::scoped_refptr<VideoFrameBuffer>& ref_buffer,
+ const rtc::scoped_refptr<VideoFrameBuffer>& test_buffer) {
+ if (!ref_buffer || !test_buffer)
+ return -1;
+ else if ((ref_buffer->width() != test_buffer->width()) ||
+ (ref_buffer->height() != test_buffer->height()))
return -1;
- else if (ref_frame->width() < 0 || ref_frame->height() < 0)
+ else if (ref_buffer->width() < 0 || ref_buffer->height() < 0)
return -1;
- return libyuv::I420Ssim(ref_frame->video_frame_buffer()->DataY(),
- ref_frame->video_frame_buffer()->StrideY(),
- ref_frame->video_frame_buffer()->DataU(),
- ref_frame->video_frame_buffer()->StrideU(),
- ref_frame->video_frame_buffer()->DataV(),
- ref_frame->video_frame_buffer()->StrideV(),
- test_frame->video_frame_buffer()->DataY(),
- test_frame->video_frame_buffer()->StrideY(),
- test_frame->video_frame_buffer()->DataU(),
- test_frame->video_frame_buffer()->StrideU(),
- test_frame->video_frame_buffer()->DataV(),
- test_frame->video_frame_buffer()->StrideV(),
- test_frame->width(), test_frame->height());
+ return libyuv::I420Ssim(ref_buffer->DataY(), ref_buffer->StrideY(),
+ ref_buffer->DataU(), ref_buffer->StrideU(),
+ ref_buffer->DataV(), ref_buffer->StrideV(),
+ test_buffer->DataY(), test_buffer->StrideY(),
+ test_buffer->DataU(), test_buffer->StrideU(),
+ test_buffer->DataV(), test_buffer->StrideV(),
+ test_buffer->width(), test_buffer->height());
+}
+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());
}
} // namespace webrtc

Powered by Google App Engine
This is Rietveld 408576698