NAP
audiobufferresource.h
1 /* This Source Code Form is subject to the terms of the Mozilla Public
2  * License, v. 2.0. If a copy of the MPL was not distributed with this
3  * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
4 
5 #pragma once
6 
7 // Nap includes
8 #include <nap/resource.h>
9 #include <nap/core.h>
10 #include <audio/utility/safeptr.h>
11 #include <rtti/object.h>
12 #include <rtti/factory.h>
13 
14 // Audio includes
15 #include <audio/utility/audiotypes.h>
16 
17 namespace nap
18 {
19  namespace audio
20  {
21 
22  // Forward declarations
23  class AudioService;
24 
28  class NAPAPI AudioBufferResource : public Resource
29  {
30  RTTI_ENABLE(Resource)
31  public:
32 
34 
38  float getSampleRate() const { return mSampleRate; }
39 
43  DiscreteTimeValue getSize() const { return mBuffer->getSize(); }
44 
48  unsigned int getChannelCount() const { return mBuffer->getChannelCount(); }
49 
53  SafePtr<MultiSampleBuffer> getBuffer() { return mBuffer.get(); }
54 
58  DiscreteTimeValue toSamples(TimeValue milliseconds) const { return milliseconds * (mSampleRate / 1000.f); }
59 
63  TimeValue toMilliseconds(DiscreteTimeValue samples) const { return samples / (mSampleRate / 1000.f); }
64 
65  protected:
69  void setSampleRate(float sampleRate) { mSampleRate = sampleRate; }
70 
71  private:
72  float mSampleRate = 0;
73  SafeOwner<MultiSampleBuffer> mBuffer = nullptr;
74  };
75 
76  }
77 }
nap::audio::AudioBufferResource::getChannelCount
unsigned int getChannelCount() const
Definition: audiobufferresource.h:48
nap::audio::AudioBufferResource::toMilliseconds
TimeValue toMilliseconds(DiscreteTimeValue samples) const
Definition: audiobufferresource.h:63
nap::audio::AudioBufferResource::toSamples
DiscreteTimeValue toSamples(TimeValue milliseconds) const
Definition: audiobufferresource.h:58
nap::audio::TimeValue
float TimeValue
Definition: audiotypes.h:119
nap::audio::AudioBufferResource::getBuffer
SafePtr< MultiSampleBuffer > getBuffer()
Definition: audiobufferresource.h:53
nap::Core
Definition: core.h:82
nap::audio::SafeOwner
Definition: safeptr.h:25
nap::audio::DiscreteTimeValue
nap::uint64 DiscreteTimeValue
Definition: audiotypes.h:125
nap
Definition: templateapp.h:17
nap::audio::AudioBufferResource::getSize
DiscreteTimeValue getSize() const
Definition: audiobufferresource.h:43
nap::Resource
Definition: resource.h:19
nap::audio::AudioBufferResource::setSampleRate
void setSampleRate(float sampleRate)
Definition: audiobufferresource.h:69
nap::audio::AudioBufferResource::getSampleRate
float getSampleRate() const
Definition: audiobufferresource.h:38
nap::audio::AudioBufferResource
Definition: audiobufferresource.h:28
nap::audio::SafePtr
Definition: safeptr.h:28