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 12 namespace ppapi { 13 namespace proxy { 14 AudioBufferResource(PP_Instance instance,int32_t index,MediaStreamBuffer * buffer)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 ~AudioBufferResource()24AudioBufferResource::~AudioBufferResource() { 25 CHECK(!buffer_) << "An unused (or unrecycled) buffer is destroyed."; 26 } 27 AsPPB_AudioBuffer_API()28thunk::PPB_AudioBuffer_API* AudioBufferResource::AsPPB_AudioBuffer_API() { 29 return this; 30 } 31 GetTimestamp()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 SetTimestamp(PP_TimeDelta timestamp)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 GetSampleRate()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 GetSampleSize()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 GetNumberOfChannels()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 GetNumberOfSamples()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 GetDataBuffer()80void* AudioBufferResource::GetDataBuffer() { 81 if (!buffer_) { 82 VLOG(1) << "Buffer is invalid"; 83 return NULL; 84 } 85 return buffer_->audio.data; 86 } 87 GetDataBufferSize()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 GetBuffer()96MediaStreamBuffer* AudioBufferResource::GetBuffer() { 97 return buffer_; 98 } 99 GetBufferIndex()100int32_t AudioBufferResource::GetBufferIndex() { 101 return index_; 102 } 103 Invalidate()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