@@ -3562,4 +3562,68 @@ TEST_F(LibYUVPlanarTest, HalfMergeUVPlane_Opt) {
35623562 free_aligned_buffer_page_end (dst_pixels_uv_c);
35633563}
35643564
3565+ TEST_F (LibYUVPlanarTest, NV12Copy) {
3566+ const int halfwidth = (benchmark_width_ + 1 ) >> 1 ;
3567+ const int halfheight = (benchmark_height_ + 1 ) >> 1 ;
3568+ align_buffer_page_end (src_y, benchmark_width_ * benchmark_height_);
3569+ align_buffer_page_end (src_uv, halfwidth * 2 * halfheight);
3570+ align_buffer_page_end (dst_y, benchmark_width_ * benchmark_height_);
3571+ align_buffer_page_end (dst_uv, halfwidth * 2 * halfheight);
3572+
3573+ MemRandomize (src_y, benchmark_width_ * benchmark_height_);
3574+ MemRandomize (src_uv, halfwidth * 2 * halfheight);
3575+ MemRandomize (dst_y, benchmark_width_ * benchmark_height_);
3576+ MemRandomize (dst_uv, halfwidth * 2 * halfheight);
3577+
3578+ for (int i = 0 ; i < benchmark_iterations_; ++i) {
3579+ NV12Copy (src_y, benchmark_width_, src_uv, halfwidth * 2 , dst_y,
3580+ benchmark_width_, dst_uv, halfwidth * 2 , benchmark_width_,
3581+ benchmark_height_);
3582+ }
3583+
3584+ for (int i = 0 ; i < benchmark_width_ * benchmark_height_; ++i) {
3585+ EXPECT_EQ (src_y[i], dst_y[i]);
3586+ }
3587+ for (int i = 0 ; i < halfwidth * 2 * halfheight; ++i) {
3588+ EXPECT_EQ (src_uv[i], dst_uv[i]);
3589+ }
3590+
3591+ free_aligned_buffer_page_end (src_y);
3592+ free_aligned_buffer_page_end (src_uv);
3593+ free_aligned_buffer_page_end (dst_y);
3594+ free_aligned_buffer_page_end (dst_uv);
3595+ }
3596+
3597+ TEST_F (LibYUVPlanarTest, NV21Copy) {
3598+ const int halfwidth = (benchmark_width_ + 1 ) >> 1 ;
3599+ const int halfheight = (benchmark_height_ + 1 ) >> 1 ;
3600+ align_buffer_page_end (src_y, benchmark_width_ * benchmark_height_);
3601+ align_buffer_page_end (src_vu, halfwidth * 2 * halfheight);
3602+ align_buffer_page_end (dst_y, benchmark_width_ * benchmark_height_);
3603+ align_buffer_page_end (dst_vu, halfwidth * 2 * halfheight);
3604+
3605+ MemRandomize (src_y, benchmark_width_ * benchmark_height_);
3606+ MemRandomize (src_vu, halfwidth * 2 * halfheight);
3607+ MemRandomize (dst_y, benchmark_width_ * benchmark_height_);
3608+ MemRandomize (dst_vu, halfwidth * 2 * halfheight);
3609+
3610+ for (int i = 0 ; i < benchmark_iterations_; ++i) {
3611+ NV21Copy (src_y, benchmark_width_, src_vu, halfwidth * 2 , dst_y,
3612+ benchmark_width_, dst_vu, halfwidth * 2 , benchmark_width_,
3613+ benchmark_height_);
3614+ }
3615+
3616+ for (int i = 0 ; i < benchmark_width_ * benchmark_height_; ++i) {
3617+ EXPECT_EQ (src_y[i], dst_y[i]);
3618+ }
3619+ for (int i = 0 ; i < halfwidth * 2 * halfheight; ++i) {
3620+ EXPECT_EQ (src_vu[i], dst_vu[i]);
3621+ }
3622+
3623+ free_aligned_buffer_page_end (src_y);
3624+ free_aligned_buffer_page_end (src_vu);
3625+ free_aligned_buffer_page_end (dst_y);
3626+ free_aligned_buffer_page_end (dst_vu);
3627+ }
3628+
35653629} // namespace libyuv
0 commit comments