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

Side by Side 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: Don't rely on sizes from the plugin 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 unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "ppapi/tests/test_audio_encoder.h"
6
7 #include "ppapi/c/pp_codecs.h"
8 #include "ppapi/c/pp_errors.h"
9 #include "ppapi/cpp/audio_encoder.h"
10 #include "ppapi/tests/testing_instance.h"
11
12 REGISTER_TEST_CASE(AudioEncoder);
13
14 bool TestAudioEncoder::Init() {
15 audio_encoder_interface_ = static_cast<const PPB_AudioEncoder_0_1*>(
16 pp::Module::Get()->GetBrowserInterface(PPB_AUDIOENCODER_INTERFACE_0_1));
17 return audio_encoder_interface_ && CheckTestingInterface();
18 }
19
20 void TestAudioEncoder::RunTests(const std::string& filter) {
21 RUN_CALLBACK_TEST(TestAudioEncoder, AvailableCodecs, filter);
22 RUN_CALLBACK_TEST(TestAudioEncoder, IncorrectParametersFails, filter);
23 RUN_CALLBACK_TEST(TestAudioEncoder, InitializeTwiceFails, filter);
24 RUN_CALLBACK_TEST(TestAudioEncoder, InitializeOpusMono, filter);
bbudge 2015/11/18 17:57:57 test TestInitializeOpusStereo
llandwerlin-old 2015/11/18 18:05:27 Done.
25 }
26
27 std::string TestAudioEncoder::TestAvailableCodecs() {
28 // Test that we get results for supported formats. We should at
29 // least get the software supported formats.
30 pp::AudioEncoder audio_encoder(instance_);
31 ASSERT_FALSE(audio_encoder.is_null());
32
33 TestCompletionCallbackWithOutput<std::vector<PP_AudioProfileDescription>>
34 callback(instance_->pp_instance(), false);
35 callback.WaitForResult(
36 audio_encoder.GetSupportedProfiles(callback.GetCallback()));
37 ASSERT_GE(callback.result(), 1U);
38
39 const std::vector<PP_AudioProfileDescription> audio_profiles =
40 callback.output();
41 ASSERT_GE(audio_profiles.size(), 1U);
42
43 bool found_opus_48hz = false;
44 for (uint32_t i = 0; i < audio_profiles.size(); ++i) {
45 const PP_AudioProfileDescription& description = audio_profiles[i];
46 if (description.profile == PP_AUDIOPROFILE_OPUS &&
47 description.sample_rate == PP_AUDIOBUFFER_SAMPLERATE_48000 &&
48 description.max_channels >= 2)
49 found_opus_48hz = true;
50 }
51 ASSERT_TRUE(found_opus_48hz);
52
53 PASS();
54 }
55
56 std::string TestAudioEncoder::TestIncorrectParametersFails() {
57 // Test that initializing the encoder with incorrect size fails.
58 pp::AudioEncoder audio_encoder(instance_);
59 ASSERT_FALSE(audio_encoder.is_null());
60
61 // Invalid number of channels.
62 TestCompletionCallback callback(instance_->pp_instance(), false);
63 callback.WaitForResult(audio_encoder.Initialize(
64 42, static_cast<PP_AudioBuffer_SampleRate>(48000),
bbudge 2015/11/18 17:57:57 PP_AUDIOBUFFER_SAMPLERATE_48000
llandwerlin-old 2015/11/18 18:05:26 Done.
65 static_cast<PP_AudioBuffer_SampleSize>(2), PP_AUDIOPROFILE_OPUS, 10000,
66 PP_HARDWAREACCELERATION_WITHFALLBACK, callback.GetCallback()));
67 ASSERT_EQ(PP_ERROR_NOTSUPPORTED, callback.result());
68
69 // Invalid sampling rate.
70 callback.WaitForResult(audio_encoder.Initialize(
71 2, static_cast<PP_AudioBuffer_SampleRate>(123456),
72 static_cast<PP_AudioBuffer_SampleSize>(2), PP_AUDIOPROFILE_OPUS, 10000,
bbudge 2015/11/18 17:57:57 PP_AUDIOBUFFER_SAMPLESIZE_16_BITS
llandwerlin-old 2015/11/18 18:05:26 Done.
73 PP_HARDWAREACCELERATION_WITHFALLBACK, callback.GetCallback()));
74 ASSERT_EQ(PP_ERROR_NOTSUPPORTED, callback.result());
75
76 // Invalid sample size.
77 callback.WaitForResult(audio_encoder.Initialize(
78 2, static_cast<PP_AudioBuffer_SampleRate>(48000),
79 static_cast<PP_AudioBuffer_SampleSize>(72), PP_AUDIOPROFILE_OPUS, 10000,
80 PP_HARDWAREACCELERATION_WITHFALLBACK, callback.GetCallback()));
81 ASSERT_EQ(PP_ERROR_NOTSUPPORTED, callback.result());
82
83 PASS();
84 }
85
86 std::string TestAudioEncoder::TestInitializeTwiceFails() {
87 // Test that initializing the encoder with incorrect size fails.
88 pp::AudioEncoder audio_encoder(instance_);
89 ASSERT_FALSE(audio_encoder.is_null());
90
91 TestCompletionCallback callback(instance_->pp_instance(), false);
92 callback.WaitForResult(audio_encoder.Initialize(
93 2, PP_AUDIOBUFFER_SAMPLERATE_48000, PP_AUDIOBUFFER_SAMPLESIZE_16_BITS,
94 PP_AUDIOPROFILE_OPUS, 10000, PP_HARDWAREACCELERATION_WITHFALLBACK,
95 callback.GetCallback()));
96 ASSERT_EQ(PP_OK, callback.result());
97
98 callback.WaitForResult(audio_encoder.Initialize(
99 2, PP_AUDIOBUFFER_SAMPLERATE_48000, PP_AUDIOBUFFER_SAMPLESIZE_16_BITS,
100 PP_AUDIOPROFILE_OPUS, 10000, PP_HARDWAREACCELERATION_WITHFALLBACK,
101 callback.GetCallback()));
102 ASSERT_EQ(PP_ERROR_FAILED, callback.result());
103
104 PASS();
105 }
106
107 std::string TestAudioEncoder::TestInitializeOpusMono() {
108 return TestInitializeCodec(1, PP_AUDIOBUFFER_SAMPLERATE_48000,
109 PP_AUDIOBUFFER_SAMPLESIZE_16_BITS,
110 PP_AUDIOPROFILE_OPUS);
111 }
112
113 std::string TestAudioEncoder::TestInitializeOpusStereo() {
114 return TestInitializeCodec(2, PP_AUDIOBUFFER_SAMPLERATE_48000,
115 PP_AUDIOBUFFER_SAMPLESIZE_16_BITS,
116 PP_AUDIOPROFILE_OPUS);
117 }
118
119 std::string TestAudioEncoder::TestInitializeCodec(
120 uint32_t channels,
121 PP_AudioBuffer_SampleRate input_sample_rate,
122 PP_AudioBuffer_SampleSize input_sample_size,
123 PP_AudioProfile output_profile) {
124 pp::AudioEncoder audio_encoder(instance_);
125 ASSERT_FALSE(audio_encoder.is_null());
126 pp::Size audio_size(640, 480);
127
128 TestCompletionCallback callback(instance_->pp_instance(), false);
129 callback.WaitForResult(audio_encoder.Initialize(
130 channels, input_sample_rate, input_sample_size, output_profile, 10000,
131 PP_HARDWAREACCELERATION_WITHFALLBACK, callback.GetCallback()));
132 ASSERT_EQ(PP_OK, callback.result());
133
134 ASSERT_GE(audio_encoder.GetNumberOfSamples(), 2U);
135
136 TestCompletionCallbackWithOutput<pp::AudioBuffer> get_buffer(
137 instance_->pp_instance(), false);
138 get_buffer.WaitForResult(audio_encoder.GetBuffer(get_buffer.GetCallback()));
139 ASSERT_EQ(PP_OK, get_buffer.result());
140
141 PASS();
142 }
OLDNEW
« content/renderer/pepper/pepper_audio_encoder_host.cc ('K') | « ppapi/tests/test_audio_encoder.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698