OpenShot Library | libopenshot 0.2.7
AudioBufferSource.h
Go to the documentation of this file.
1/**
2 * @file
3 * @brief Header file for AudioBufferSource class
4 * @author Jonathan Thomas <jonathan@openshot.org>
5 *
6 * @ref License
7 */
8
9/* LICENSE
10 *
11 * Copyright (c) 2008-2019 OpenShot Studios, LLC
12 * <http://www.openshotstudios.com/>. This file is part of
13 * OpenShot Library (libopenshot), an open-source project dedicated to
14 * delivering high quality video editing and animation solutions to the
15 * world. For more information visit <http://www.openshot.org/>.
16 *
17 * OpenShot Library (libopenshot) is free software: you can redistribute it
18 * and/or modify it under the terms of the GNU Lesser General Public License
19 * as published by the Free Software Foundation, either version 3 of the
20 * License, or (at your option) any later version.
21 *
22 * OpenShot Library (libopenshot) is distributed in the hope that it will be
23 * useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
24 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
25 * GNU Lesser General Public License for more details.
26 *
27 * You should have received a copy of the GNU Lesser General Public License
28 * along with OpenShot Library. If not, see <http://www.gnu.org/licenses/>.
29 */
30
31#ifndef OPENSHOT_AUDIOBUFFERSOURCE_H
32#define OPENSHOT_AUDIOBUFFERSOURCE_H
33
34#include <iomanip>
35#include <OpenShotAudio.h>
36
37/// This namespace is the default namespace for all code in the openshot library
38namespace openshot
39{
40
41 /**
42 * @brief This class is used to expose an AudioSampleBuffer as an AudioSource in JUCE.
43 *
44 * The <a href="http://www.juce.com/">JUCE</a> library cannot play audio directly from an AudioSampleBuffer, so this class exposes
45 * an AudioSampleBuffer as a AudioSource, so that JUCE can play the audio.
46 */
47 class AudioBufferSource : public juce::PositionableAudioSource
48 {
49 private:
50 int position;
51 bool repeat;
52 juce::AudioSampleBuffer *buffer;
53
54 public:
55 /// @brief Default constructor
56 /// @param audio_buffer This buffer contains the samples you want to play through JUCE.
57 AudioBufferSource(juce::AudioSampleBuffer *audio_buffer);
58
59 /// Destructor
61
62 /// @brief Get the next block of audio samples
63 /// @param info This struct informs us of which samples are needed next.
64 void getNextAudioBlock (const juce::AudioSourceChannelInfo& info);
65
66 /// Prepare to play this audio source
67 void prepareToPlay(int, double);
68
69 /// Release all resources
70 void releaseResources();
71
72 /// @brief Set the next read position of this source
73 /// @param newPosition The sample # to start reading from
74 void setNextReadPosition (juce::int64 newPosition);
75
76 /// Get the next read position of this source
78
79 /// Get the total length (in samples) of this audio source
81
82 /// Determines if this audio source should repeat when it reaches the end
83 bool isLooping() const;
84
85 /// @brief Set if this audio source should repeat when it reaches the end
86 /// @param shouldLoop Determines if the audio source should repeat when it reaches the end
87 void setLooping (bool shouldLoop);
88
89 /// Update the internal buffer used by this source
90 void setBuffer (juce::AudioSampleBuffer *audio_buffer);
91 };
92
93}
94
95#endif
#define int64
Definition: Clip.h:35
This class is used to expose an AudioSampleBuffer as an AudioSource in JUCE.
void prepareToPlay(int, double)
Prepare to play this audio source.
void releaseResources()
Release all resources.
void setBuffer(juce::AudioSampleBuffer *audio_buffer)
Update the internal buffer used by this source.
AudioBufferSource(juce::AudioSampleBuffer *audio_buffer)
Default constructor.
void getNextAudioBlock(const juce::AudioSourceChannelInfo &info)
Get the next block of audio samples.
bool isLooping() const
Determines if this audio source should repeat when it reaches the end.
void setNextReadPosition(juce::int64 newPosition)
Set the next read position of this source.
juce::int64 getNextReadPosition() const
Get the next read position of this source.
juce::int64 getTotalLength() const
Get the total length (in samples) of this audio source.
void setLooping(bool shouldLoop)
Set if this audio source should repeat when it reaches the end.
This namespace is the default namespace for all code in the openshot library.
Definition: Compressor.h:47