| // 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 |