Index: ppapi/cpp/audio_encoder.cc |
diff --git a/ppapi/cpp/audio_encoder.cc b/ppapi/cpp/audio_encoder.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..bea733bb5b61b7a00afb2cf23c29c9c8e2cf8a38 |
--- /dev/null |
+++ b/ppapi/cpp/audio_encoder.cc |
@@ -0,0 +1,118 @@ |
+// 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/cpp/audio_encoder.h" |
+ |
+#include "ppapi/c/pp_errors.h" |
+#include "ppapi/c/ppb_audio_encoder.h" |
+#include "ppapi/cpp/completion_callback.h" |
+#include "ppapi/cpp/instance_handle.h" |
+#include "ppapi/cpp/module.h" |
+#include "ppapi/cpp/module_impl.h" |
+ |
+namespace pp { |
+ |
+namespace { |
+ |
+template <> |
+const char* interface_name<PPB_AudioEncoder_0_1>() { |
+ return PPB_AUDIOENCODER_INTERFACE_0_1; |
+} |
+ |
+} // namespace |
+ |
+AudioEncoder::AudioEncoder() { |
+} |
+ |
+AudioEncoder::AudioEncoder(const InstanceHandle& instance) { |
+ if (has_interface<PPB_AudioEncoder_0_1>()) { |
+ PassRefFromConstructor( |
+ get_interface<PPB_AudioEncoder_0_1>()->Create(instance.pp_instance())); |
+ } |
+} |
+ |
+AudioEncoder::AudioEncoder(const AudioEncoder& other) : Resource(other) { |
+} |
+ |
+int32_t AudioEncoder::GetSupportedProfiles(const CompletionCallbackWithOutput< |
+ std::vector<PP_AudioProfileDescription> >& cc) { |
+ if (has_interface<PPB_AudioEncoder_0_1>()) { |
+ return get_interface<PPB_AudioEncoder_0_1>()->GetSupportedProfiles( |
+ pp_resource(), cc.output(), cc.pp_completion_callback()); |
+ } |
+ return cc.MayForce(PP_ERROR_NOINTERFACE); |
+} |
+ |
+int32_t AudioEncoder::Initialize(uint32_t channels, |
+ PP_AudioBuffer_SampleRate input_sample_rate, |
+ PP_AudioBuffer_SampleSize input_sample_size, |
+ PP_AudioProfile output_profile, |
+ uint32_t initial_bitrate, |
+ PP_HardwareAcceleration acceleration, |
+ const CompletionCallback& cc) { |
+ if (has_interface<PPB_AudioEncoder_0_1>()) { |
+ return get_interface<PPB_AudioEncoder_0_1>()->Initialize( |
+ pp_resource(), channels, input_sample_rate, input_sample_size, |
+ output_profile, initial_bitrate, acceleration, |
+ cc.pp_completion_callback()); |
+ } |
+ return cc.MayForce(PP_ERROR_NOINTERFACE); |
+} |
+ |
+int32_t AudioEncoder::GetNumberOfSamples() { |
+ if (has_interface<PPB_AudioEncoder_0_1>()) { |
+ return get_interface<PPB_AudioEncoder_0_1>()->GetNumberOfSamples( |
+ pp_resource()); |
+ } |
+ return PP_ERROR_NOINTERFACE; |
+} |
+ |
+int32_t AudioEncoder::GetBuffer( |
+ const CompletionCallbackWithOutput<AudioBuffer>& cc) { |
+ if (has_interface<PPB_AudioEncoder_0_1>()) { |
+ return get_interface<PPB_AudioEncoder_0_1>()->GetBuffer( |
+ pp_resource(), cc.output(), cc.pp_completion_callback()); |
+ } |
+ return cc.MayForce(PP_ERROR_NOINTERFACE); |
+} |
+ |
+int32_t AudioEncoder::Encode(const AudioBuffer& audio_buffer, |
+ const CompletionCallback& cc) { |
+ if (has_interface<PPB_AudioEncoder_0_1>()) { |
+ return get_interface<PPB_AudioEncoder_0_1>()->Encode( |
+ pp_resource(), audio_buffer.pp_resource(), cc.pp_completion_callback()); |
+ } |
+ return cc.MayForce(PP_ERROR_NOINTERFACE); |
+} |
+ |
+int32_t AudioEncoder::GetBitstreamBuffer( |
+ const CompletionCallbackWithOutput<PP_AudioBitstreamBuffer>& cc) { |
+ if (has_interface<PPB_AudioEncoder_0_1>()) { |
+ return get_interface<PPB_AudioEncoder_0_1>()->GetBitstreamBuffer( |
+ pp_resource(), cc.output(), cc.pp_completion_callback()); |
+ } |
+ return cc.MayForce(PP_ERROR_NOINTERFACE); |
+} |
+ |
+void AudioEncoder::RecycleBitstreamBuffer( |
+ const PP_AudioBitstreamBuffer& bitstream_buffer) { |
+ if (has_interface<PPB_AudioEncoder_0_1>()) { |
+ get_interface<PPB_AudioEncoder_0_1>()->RecycleBitstreamBuffer( |
+ pp_resource(), &bitstream_buffer); |
+ } |
+} |
+ |
+void AudioEncoder::RequestBitrateChange(uint32_t bitrate) { |
+ if (has_interface<PPB_AudioEncoder_0_1>()) { |
+ get_interface<PPB_AudioEncoder_0_1>()->RequestBitrateChange(pp_resource(), |
+ bitrate); |
+ } |
+} |
+ |
+void AudioEncoder::Close() { |
+ if (has_interface<PPB_AudioEncoder_0_1>()) |
+ get_interface<PPB_AudioEncoder_0_1>()->Close(pp_resource()); |
+} |
+ |
+} // namespace pp |