View | Details | Raw Unified | Return to bug 1218429
Collapse All | Expand All

(-)a/test/resize_test.cc (+85 lines)
Lines 870-874 AV1_INSTANTIATE_TEST_SUITE(ResizeRealtim Link Here
870
                           ::testing::Range(6, 10));
870
                           ::testing::Range(6, 10));
871
AV1_INSTANTIATE_TEST_SUITE(ResizeCspTest,
871
AV1_INSTANTIATE_TEST_SUITE(ResizeCspTest,
872
                           ::testing::Values(::libaom_test::kRealTime));
872
                           ::testing::Values(::libaom_test::kRealTime));
873
TEST(ResizeSimpleTest, TemporarySmallerFrameSizeMultiThread) {
874
  constexpr int kWidth = 512;
875
  constexpr int kHeight = 512;
876
  constexpr int kFirstWidth = 256;
877
  constexpr int kFirstHeight = 256;
878
  // Buffer of zero samples.
879
  constexpr size_t kBufferSize = 3 * kWidth * kHeight;
880
  std::vector<unsigned char> buffer(kBufferSize, static_cast<unsigned char>(0));
881
882
  aom_image_t img1;
883
  EXPECT_EQ(&img1, aom_img_wrap(&img1, AOM_IMG_FMT_I420, kFirstWidth,
884
                                kFirstHeight, 1, buffer.data()));
885
886
  aom_image_t img2;
887
  EXPECT_EQ(&img2, aom_img_wrap(&img2, AOM_IMG_FMT_I420, kWidth, kHeight, 1,
888
                                buffer.data()));
889
890
  aom_codec_iface_t *iface = aom_codec_av1_cx();
891
  aom_codec_enc_cfg_t cfg;
892
  EXPECT_EQ(AOM_CODEC_OK,
893
            aom_codec_enc_config_default(iface, &cfg, AOM_USAGE_GOOD_QUALITY));
894
  cfg.g_threads = 4;
895
  cfg.g_lag_in_frames = 1;
896
  cfg.g_w = kFirstWidth;
897
  cfg.g_h = kFirstHeight;
898
  cfg.g_forced_max_frame_width = kWidth;
899
  cfg.g_forced_max_frame_height = kHeight;
900
  aom_codec_ctx_t enc;
901
  EXPECT_EQ(AOM_CODEC_OK, aom_codec_enc_init(&enc, iface, &cfg, 0));
902
  EXPECT_EQ(AOM_CODEC_OK, aom_codec_control(&enc, AOME_SET_CPUUSED, 6));
903
904
  EXPECT_EQ(AOM_CODEC_OK, aom_codec_encode(&enc, &img1, 0, 1, 0));
905
906
  cfg.g_w = kWidth;
907
  cfg.g_h = kHeight;
908
  EXPECT_EQ(AOM_CODEC_OK, aom_codec_enc_config_set(&enc, &cfg));
909
  EXPECT_EQ(AOM_CODEC_OK, aom_codec_encode(&enc, &img2, 1, 1, 0));
910
911
  EXPECT_EQ(AOM_CODEC_OK, aom_codec_encode(&enc, nullptr, 0, 0, 0));
912
  EXPECT_EQ(AOM_CODEC_OK, aom_codec_destroy(&enc));
913
}
914
// This test differs from "TemporarySmallerFrameSizeMultiThread" in that
915
// it changes the number of threads from 4 to 2 before coding the second frame.
916
TEST(ResizeSimpleTest, TemporarySmallerFrameSizeMultiThread2) {
917
  constexpr int kWidth = 512;
918
  constexpr int kHeight = 512;
919
  constexpr int kFirstWidth = 256;
920
  constexpr int kFirstHeight = 256;
921
  // Buffer of zero samples.
922
  constexpr size_t kBufferSize = 3 * kWidth * kHeight;
923
  std::vector<unsigned char> buffer(kBufferSize, static_cast<unsigned char>(0));
924
925
  aom_image_t img1;
926
  EXPECT_EQ(&img1, aom_img_wrap(&img1, AOM_IMG_FMT_I420, kFirstWidth,
927
                                kFirstHeight, 1, buffer.data()));
928
929
  aom_image_t img2;
930
  EXPECT_EQ(&img2, aom_img_wrap(&img2, AOM_IMG_FMT_I420, kWidth, kHeight, 1,
931
                                buffer.data()));
932
933
  aom_codec_iface_t *iface = aom_codec_av1_cx();
934
  aom_codec_enc_cfg_t cfg;
935
  EXPECT_EQ(AOM_CODEC_OK,
936
            aom_codec_enc_config_default(iface, &cfg, AOM_USAGE_GOOD_QUALITY));
937
  cfg.g_threads = 4;
938
  cfg.g_lag_in_frames = 1;
939
  cfg.g_w = kFirstWidth;
940
  cfg.g_h = kFirstHeight;
941
  cfg.g_forced_max_frame_width = kWidth;
942
  cfg.g_forced_max_frame_height = kHeight;
943
  aom_codec_ctx_t enc;
944
  EXPECT_EQ(AOM_CODEC_OK, aom_codec_enc_init(&enc, iface, &cfg, 0));
945
  EXPECT_EQ(AOM_CODEC_OK, aom_codec_control(&enc, AOME_SET_CPUUSED, 6));
946
947
  EXPECT_EQ(AOM_CODEC_OK, aom_codec_encode(&enc, &img1, 0, 1, 0));
948
949
  cfg.g_threads = 2;
950
  cfg.g_w = kWidth;
951
  cfg.g_h = kHeight;
952
  EXPECT_EQ(AOM_CODEC_OK, aom_codec_enc_config_set(&enc, &cfg));
953
  EXPECT_EQ(AOM_CODEC_OK, aom_codec_encode(&enc, &img2, 1, 1, 0));
954
955
  EXPECT_EQ(AOM_CODEC_OK, aom_codec_encode(&enc, nullptr, 0, 0, 0));
956
  EXPECT_EQ(AOM_CODEC_OK, aom_codec_destroy(&enc));
957
}
873
958
874
}  // namespace
959
}  // namespace

Return to bug 1218429