| // Copyright 2014 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/proxy/audio_buffer_resource.h" | |
| #include "base/logging.h" | |
| #include "ppapi/c/pp_bool.h" | |
| #include "ppapi/shared_impl/media_stream_buffer.h" | |
| #include "ppapi/shared_impl/var.h" | |
| namespace ppapi { | |
| namespace proxy { | |
| AudioBufferResource::AudioBufferResource(PP_Instance instance, | |
| int32_t index, | |
| MediaStreamBuffer* buffer) | |
| : Resource(OBJECT_IS_PROXY, instance), | |
| index_(index), | |
| buffer_(buffer) { | |
| DCHECK_EQ(buffer_->header.type, MediaStreamBuffer::TYPE_AUDIO); | |
| } | |
| AudioBufferResource::~AudioBufferResource() { | |
| CHECK(!buffer_) << "An unused (or unrecycled) buffer is destroyed."; | |
| } | |
| thunk::PPB_AudioBuffer_API* AudioBufferResource::AsPPB_AudioBuffer_API() { | |
| return this; | |
| } | |
| PP_TimeDelta AudioBufferResource::GetTimestamp() { | |
| if (!buffer_) { | |
| VLOG(1) << "Buffer is invalid"; | |
| return 0.0; | |
| } | |
| return buffer_->audio.timestamp; | |
| } | |
| void AudioBufferResource::SetTimestamp(PP_TimeDelta timestamp) { | |
| if (!buffer_) { | |
| VLOG(1) << "Buffer is invalid"; | |
| return; | |
| } | |
| buffer_->audio.timestamp = timestamp; | |
| } | |
| PP_AudioBuffer_SampleRate AudioBufferResource::GetSampleRate() { | |
| if (!buffer_) { | |
| VLOG(1) << "Buffer is invalid"; | |
| return PP_AUDIOBUFFER_SAMPLERATE_UNKNOWN; | |
| } | |
| return buffer_->audio.sample_rate; | |
| } | |
| PP_AudioBuffer_SampleSize AudioBufferResource::GetSampleSize() { | |
| if (!buffer_) { | |
| VLOG(1) << "Buffer is invalid"; | |
| return PP_AUDIOBUFFER_SAMPLESIZE_UNKNOWN; | |
| } | |
| return PP_AUDIOBUFFER_SAMPLESIZE_16_BITS; | |
| } | |
| uint32_t AudioBufferResource::GetNumberOfChannels() { | |
| if (!buffer_) { | |
| VLOG(1) << "Buffer is invalid"; | |
| return 0; | |
| } | |
| return buffer_->audio.number_of_channels; | |
| } | |
| uint32_t AudioBufferResource::GetNumberOfSamples() { | |
| if (!buffer_) { | |
| VLOG(1) << "Buffer is invalid"; | |
| return 0; | |
| } | |
| return buffer_->audio.number_of_samples; | |
| } | |
| void* AudioBufferResource::GetDataBuffer() { | |
| if (!buffer_) { | |
| VLOG(1) << "Buffer is invalid"; | |
| return NULL; | |
| } | |
| return buffer_->audio.data; | |
| } | |
| uint32_t AudioBufferResource::GetDataBufferSize() { | |
| if (!buffer_) { | |
| VLOG(1) << "Buffer is invalid"; | |
| return 0; | |
| } | |
| return buffer_->audio.data_size; | |
| } | |
| MediaStreamBuffer* AudioBufferResource::GetBuffer() { | |
| return buffer_; | |
| } | |
| int32_t AudioBufferResource::GetBufferIndex() { | |
| return index_; | |
| } | |
| void AudioBufferResource::Invalidate() { | |
| DCHECK(buffer_); | |
| DCHECK_GE(index_, 0); | |
| buffer_ = NULL; | |
| index_ = -1; | |
| } | |
| } // namespace proxy | |
| } // namespace ppapi |