|
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 |