// 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() { return PPB_AUDIOENCODER_INTERFACE_0_1; } } // namespace AudioEncoder::AudioEncoder() { } AudioEncoder::AudioEncoder(const InstanceHandle& instance) { if (has_interface()) { PassRefFromConstructor( get_interface()->Create(instance.pp_instance())); } } AudioEncoder::AudioEncoder(const AudioEncoder& other) : Resource(other) { } int32_t AudioEncoder::GetSupportedProfiles(const CompletionCallbackWithOutput< std::vector >& cc) { if (has_interface()) { return get_interface()->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()) { return get_interface()->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()) { return get_interface()->GetNumberOfSamples( pp_resource()); } return PP_ERROR_NOINTERFACE; } int32_t AudioEncoder::GetBuffer( const CompletionCallbackWithOutput& cc) { if (has_interface()) { return get_interface()->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()) { return get_interface()->Encode( pp_resource(), audio_buffer.pp_resource(), cc.pp_completion_callback()); } return cc.MayForce(PP_ERROR_NOINTERFACE); } int32_t AudioEncoder::GetBitstreamBuffer( const CompletionCallbackWithOutput& cc) { if (has_interface()) { return get_interface()->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()) { get_interface()->RecycleBitstreamBuffer( pp_resource(), &bitstream_buffer); } } void AudioEncoder::RequestBitrateChange(uint32_t bitrate) { if (has_interface()) { get_interface()->RequestBitrateChange(pp_resource(), bitrate); } } void AudioEncoder::Close() { if (has_interface()) get_interface()->Close(pp_resource()); } } // namespace pp