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

Unified Diff: ppapi/tests/test_audio_encoder.cc

Issue 1348563003: ppapi: implement PPB_AudioEncoder (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 1 month 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
« no previous file with comments | « ppapi/tests/test_audio_encoder.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ppapi/tests/test_audio_encoder.cc
diff --git a/ppapi/tests/test_audio_encoder.cc b/ppapi/tests/test_audio_encoder.cc
new file mode 100644
index 0000000000000000000000000000000000000000..e28721eda6044b841f46f66dbdfb82c43e721b7e
--- /dev/null
+++ b/ppapi/tests/test_audio_encoder.cc
@@ -0,0 +1,143 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "ppapi/tests/test_audio_encoder.h"
+
+#include "ppapi/c/pp_codecs.h"
+#include "ppapi/c/pp_errors.h"
+#include "ppapi/cpp/audio_encoder.h"
+#include "ppapi/tests/testing_instance.h"
+
+REGISTER_TEST_CASE(AudioEncoder);
+
+bool TestAudioEncoder::Init() {
+ audio_encoder_interface_ = static_cast<const PPB_AudioEncoder_0_1*>(
+ pp::Module::Get()->GetBrowserInterface(PPB_AUDIOENCODER_INTERFACE_0_1));
+ return audio_encoder_interface_ && CheckTestingInterface();
+}
+
+void TestAudioEncoder::RunTests(const std::string& filter) {
+ RUN_CALLBACK_TEST(TestAudioEncoder, AvailableCodecs, filter);
+ RUN_CALLBACK_TEST(TestAudioEncoder, IncorrectParametersFails, filter);
+ RUN_CALLBACK_TEST(TestAudioEncoder, InitializeTwiceFails, filter);
+ RUN_CALLBACK_TEST(TestAudioEncoder, InitializeOpusMono, filter);
+ RUN_CALLBACK_TEST(TestAudioEncoder, InitializeOpusStereo, filter);
+}
+
+std::string TestAudioEncoder::TestAvailableCodecs() {
+ // Test that we get results for supported formats. We should at
+ // least get the software supported formats.
+ pp::AudioEncoder audio_encoder(instance_);
+ ASSERT_FALSE(audio_encoder.is_null());
+
+ TestCompletionCallbackWithOutput<std::vector<PP_AudioProfileDescription>>
Adrian Kuegel 2015/11/19 15:54:30 The two closing '>' break the GN build. Please fix
+ callback(instance_->pp_instance(), false);
+ callback.WaitForResult(
+ audio_encoder.GetSupportedProfiles(callback.GetCallback()));
+ ASSERT_GE(callback.result(), 1U);
+
+ const std::vector<PP_AudioProfileDescription> audio_profiles =
+ callback.output();
+ ASSERT_GE(audio_profiles.size(), 1U);
+
+ bool found_opus_48hz = false;
+ for (uint32_t i = 0; i < audio_profiles.size(); ++i) {
+ const PP_AudioProfileDescription& description = audio_profiles[i];
+ if (description.profile == PP_AUDIOPROFILE_OPUS &&
+ description.sample_rate == PP_AUDIOBUFFER_SAMPLERATE_48000 &&
+ description.max_channels >= 2)
+ found_opus_48hz = true;
+ }
+ ASSERT_TRUE(found_opus_48hz);
+
+ PASS();
+}
+
+std::string TestAudioEncoder::TestIncorrectParametersFails() {
+ // Test that initializing the encoder with incorrect size fails.
+ pp::AudioEncoder audio_encoder(instance_);
+ ASSERT_FALSE(audio_encoder.is_null());
+
+ // Invalid number of channels.
+ TestCompletionCallback callback(instance_->pp_instance(), false);
+ callback.WaitForResult(audio_encoder.Initialize(
+ 42, PP_AUDIOBUFFER_SAMPLERATE_48000, PP_AUDIOBUFFER_SAMPLESIZE_16_BITS,
+ PP_AUDIOPROFILE_OPUS, 10000, PP_HARDWAREACCELERATION_WITHFALLBACK,
+ callback.GetCallback()));
+ ASSERT_EQ(PP_ERROR_NOTSUPPORTED, callback.result());
+
+ // Invalid sampling rate.
+ callback.WaitForResult(audio_encoder.Initialize(
+ 2, static_cast<PP_AudioBuffer_SampleRate>(123456),
+ PP_AUDIOBUFFER_SAMPLESIZE_16_BITS, PP_AUDIOPROFILE_OPUS, 10000,
+ PP_HARDWAREACCELERATION_WITHFALLBACK, callback.GetCallback()));
+ ASSERT_EQ(PP_ERROR_NOTSUPPORTED, callback.result());
+
+ // Invalid sample size.
+ callback.WaitForResult(audio_encoder.Initialize(
+ 2, static_cast<PP_AudioBuffer_SampleRate>(48000),
+ static_cast<PP_AudioBuffer_SampleSize>(72), PP_AUDIOPROFILE_OPUS, 10000,
+ PP_HARDWAREACCELERATION_WITHFALLBACK, callback.GetCallback()));
+ ASSERT_EQ(PP_ERROR_NOTSUPPORTED, callback.result());
+
+ PASS();
+}
+
+std::string TestAudioEncoder::TestInitializeTwiceFails() {
+ // Test that initializing the encoder with incorrect size fails.
+ pp::AudioEncoder audio_encoder(instance_);
+ ASSERT_FALSE(audio_encoder.is_null());
+
+ TestCompletionCallback callback(instance_->pp_instance(), false);
+ callback.WaitForResult(audio_encoder.Initialize(
+ 2, PP_AUDIOBUFFER_SAMPLERATE_48000, PP_AUDIOBUFFER_SAMPLESIZE_16_BITS,
+ PP_AUDIOPROFILE_OPUS, 10000, PP_HARDWAREACCELERATION_WITHFALLBACK,
+ callback.GetCallback()));
+ ASSERT_EQ(PP_OK, callback.result());
+
+ callback.WaitForResult(audio_encoder.Initialize(
+ 2, PP_AUDIOBUFFER_SAMPLERATE_48000, PP_AUDIOBUFFER_SAMPLESIZE_16_BITS,
+ PP_AUDIOPROFILE_OPUS, 10000, PP_HARDWAREACCELERATION_WITHFALLBACK,
+ callback.GetCallback()));
+ ASSERT_EQ(PP_ERROR_FAILED, callback.result());
+
+ PASS();
+}
+
+std::string TestAudioEncoder::TestInitializeOpusMono() {
+ return TestInitializeCodec(1, PP_AUDIOBUFFER_SAMPLERATE_48000,
+ PP_AUDIOBUFFER_SAMPLESIZE_16_BITS,
+ PP_AUDIOPROFILE_OPUS);
+}
+
+std::string TestAudioEncoder::TestInitializeOpusStereo() {
+ return TestInitializeCodec(2, PP_AUDIOBUFFER_SAMPLERATE_48000,
+ PP_AUDIOBUFFER_SAMPLESIZE_16_BITS,
+ PP_AUDIOPROFILE_OPUS);
+}
+
+std::string TestAudioEncoder::TestInitializeCodec(
+ uint32_t channels,
+ PP_AudioBuffer_SampleRate input_sample_rate,
+ PP_AudioBuffer_SampleSize input_sample_size,
+ PP_AudioProfile output_profile) {
+ pp::AudioEncoder audio_encoder(instance_);
+ ASSERT_FALSE(audio_encoder.is_null());
+ pp::Size audio_size(640, 480);
+
+ TestCompletionCallback callback(instance_->pp_instance(), false);
+ callback.WaitForResult(audio_encoder.Initialize(
+ channels, input_sample_rate, input_sample_size, output_profile, 10000,
+ PP_HARDWAREACCELERATION_WITHFALLBACK, callback.GetCallback()));
+ ASSERT_EQ(PP_OK, callback.result());
+
+ ASSERT_GE(audio_encoder.GetNumberOfSamples(), 2U);
+
+ TestCompletionCallbackWithOutput<pp::AudioBuffer> get_buffer(
+ instance_->pp_instance(), false);
+ get_buffer.WaitForResult(audio_encoder.GetBuffer(get_buffer.GetCallback()));
+ ASSERT_EQ(PP_OK, get_buffer.result());
+
+ PASS();
+}
« no previous file with comments | « ppapi/tests/test_audio_encoder.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698