diff options
author | Minghai Shang <minghai@google.com> | 2014-03-20 15:12:14 -0700 |
---|---|---|
committer | Gerrit Code Review <gerrit@gerrit.golo.chromium.org> | 2014-03-20 15:12:14 -0700 |
commit | 03d75182f7d345b54ceec3ac32df887af8a02d82 (patch) | |
tree | 19bb7ce282cefc075a37eac36772536737aa77aa /test | |
parent | 03781ff22da8e32fe67ce124ba07c3173f2d1fc0 (diff) | |
parent | d205335060940b527639a69a2ea15eaaf263a821 (diff) | |
download | libvpx-03d75182f7d345b54ceec3ac32df887af8a02d82.tar libvpx-03d75182f7d345b54ceec3ac32df887af8a02d82.tar.gz libvpx-03d75182f7d345b54ceec3ac32df887af8a02d82.tar.bz2 libvpx-03d75182f7d345b54ceec3ac32df887af8a02d82.zip |
Merge "[svc] Finalize spatial svc first pass rate control"
Diffstat (limited to 'test')
-rw-r--r-- | test/svc_test.cc | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/test/svc_test.cc b/test/svc_test.cc index 2e5653424..dff2ec767 100644 --- a/test/svc_test.cc +++ b/test/svc_test.cc @@ -362,4 +362,39 @@ TEST_F(SvcTest, GetLayerResolution) { EXPECT_EQ(kHeight * 8 / 16, layer_height); } +TEST_F(SvcTest, FirstPassEncode) { + svc_.spatial_layers = 2; + codec_enc_.g_pass = VPX_RC_FIRST_PASS; + vpx_svc_set_scale_factors(&svc_, "4/16,16/16"); + vpx_svc_set_quantizers(&svc_, "40,30", 0); + + vpx_codec_err_t res = + vpx_svc_init(&svc_, &codec_, vpx_codec_vp9_cx(), &codec_enc_); + ASSERT_EQ(VPX_CODEC_OK, res); + codec_initialized_ = true; + + libvpx_test::I420VideoSource video(test_file_name_, kWidth, kHeight, + codec_enc_.g_timebase.den, + codec_enc_.g_timebase.num, 0, 30); + // FRAME 0 + video.Begin(); + res = vpx_svc_encode(&svc_, &codec_, video.img(), video.pts(), + video.duration(), VPX_DL_GOOD_QUALITY); + ASSERT_EQ(VPX_CODEC_OK, res); + EXPECT_GT(vpx_svc_get_rc_stats_buffer_size(&svc_), 0U); + + // FRAME 1 + video.Next(); + res = vpx_svc_encode(&svc_, &codec_, video.img(), video.pts(), + video.duration(), VPX_DL_GOOD_QUALITY); + ASSERT_EQ(VPX_CODEC_OK, res); + EXPECT_GT(vpx_svc_get_rc_stats_buffer_size(&svc_), 0U); + + // Flush encoder and test EOS packet + res = vpx_svc_encode(&svc_, &codec_, NULL, video.pts(), + video.duration(), VPX_DL_GOOD_QUALITY); + ASSERT_EQ(VPX_CODEC_OK, res); + EXPECT_GT(vpx_svc_get_rc_stats_buffer_size(&svc_), 0U); +} + } // namespace |