1// Copyright 2014 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/proxy/audio_buffer_resource.h" 6 7#include "base/logging.h" 8#include "ppapi/c/pp_bool.h" 9#include "ppapi/shared_impl/media_stream_buffer.h" 10#include "ppapi/shared_impl/var.h" 11 12namespace ppapi { 13namespace proxy { 14 15AudioBufferResource::AudioBufferResource(PP_Instance instance, 16 int32_t index, 17 MediaStreamBuffer* buffer) 18 : Resource(OBJECT_IS_PROXY, instance), 19 index_(index), 20 buffer_(buffer) { 21 DCHECK_EQ(buffer_->header.type, MediaStreamBuffer::TYPE_AUDIO); 22} 23 24AudioBufferResource::~AudioBufferResource() { 25 CHECK(!buffer_) << "An unused (or unrecycled) buffer is destroyed."; 26} 27 28thunk::PPB_AudioBuffer_API* AudioBufferResource::AsPPB_AudioBuffer_API() { 29 return this; 30} 31 32PP_TimeDelta AudioBufferResource::GetTimestamp() { 33 if (!buffer_) { 34 VLOG(1) << "Buffer is invalid"; 35 return 0.0; 36 } 37 return buffer_->audio.timestamp; 38} 39 40void AudioBufferResource::SetTimestamp(PP_TimeDelta timestamp) { 41 if (!buffer_) { 42 VLOG(1) << "Buffer is invalid"; 43 return; 44 } 45 buffer_->audio.timestamp = timestamp; 46} 47 48PP_AudioBuffer_SampleRate AudioBufferResource::GetSampleRate() { 49 if (!buffer_) { 50 VLOG(1) << "Buffer is invalid"; 51 return PP_AUDIOBUFFER_SAMPLERATE_UNKNOWN; 52 } 53 return buffer_->audio.sample_rate; 54} 55 56PP_AudioBuffer_SampleSize AudioBufferResource::GetSampleSize() { 57 if (!buffer_) { 58 VLOG(1) << "Buffer is invalid"; 59 return PP_AUDIOBUFFER_SAMPLESIZE_UNKNOWN; 60 } 61 return PP_AUDIOBUFFER_SAMPLESIZE_16_BITS; 62} 63 64uint32_t AudioBufferResource::GetNumberOfChannels() { 65 if (!buffer_) { 66 VLOG(1) << "Buffer is invalid"; 67 return 0; 68 } 69 return buffer_->audio.number_of_channels; 70} 71 72uint32_t AudioBufferResource::GetNumberOfSamples() { 73 if (!buffer_) { 74 VLOG(1) << "Buffer is invalid"; 75 return 0; 76 } 77 return buffer_->audio.number_of_samples; 78} 79 80void* AudioBufferResource::GetDataBuffer() { 81 if (!buffer_) { 82 VLOG(1) << "Buffer is invalid"; 83 return NULL; 84 } 85 return buffer_->audio.data; 86} 87 88uint32_t AudioBufferResource::GetDataBufferSize() { 89 if (!buffer_) { 90 VLOG(1) << "Buffer is invalid"; 91 return 0; 92 } 93 return buffer_->audio.data_size; 94} 95 96MediaStreamBuffer* AudioBufferResource::GetBuffer() { 97 return buffer_; 98} 99 100int32_t AudioBufferResource::GetBufferIndex() { 101 return index_; 102} 103 104void AudioBufferResource::Invalidate() { 105 DCHECK(buffer_); 106 DCHECK_GE(index_, 0); 107 buffer_ = NULL; 108 index_ = -1; 109} 110 111} // namespace proxy 112} // namespace ppapi 113