OpenShot Audio Library | OpenShotAudio
1.0.0
Toggle main menu visibility
Loading...
Searching...
No Matches
juce_AudioSubsectionReader.cpp
1
/*
2
==============================================================================
3
4
This file is part of the JUCE library.
5
Copyright (c) 2022 - Raw Material Software Limited
6
7
JUCE is an open source library subject to commercial or open-source
8
licensing.
9
10
By using JUCE, you agree to the terms of both the JUCE 7 End-User License
11
Agreement and JUCE Privacy Policy.
12
13
End User License Agreement: www.juce.com/juce-7-licence
14
Privacy Policy: www.juce.com/juce-privacy-policy
15
16
Or: You may also use this code under the terms of the GPL v3 (see
17
www.gnu.org/licenses).
18
19
JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
20
EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE
21
DISCLAIMED.
22
23
==============================================================================
24
*/
25
26
namespace
juce
27
{
28
29
AudioSubsectionReader::AudioSubsectionReader
(
AudioFormatReader
* sourceToUse,
30
int64 startSampleToUse, int64 lengthToUse,
31
bool
deleteSource)
32
:
AudioFormatReader
(nullptr, sourceToUse->
getFormatName
()),
33
source (sourceToUse),
34
startSample (startSampleToUse),
35
deleteSourceWhenDeleted (deleteSource)
36
{
37
length = jmin (jmax ((int64) 0, source->lengthInSamples - startSample), lengthToUse);
38
39
sampleRate
= source->sampleRate;
40
bitsPerSample
= source->bitsPerSample;
41
lengthInSamples
= length;
42
numChannels
= source->numChannels;
43
usesFloatingPointData
= source->usesFloatingPointData;
44
}
45
46
AudioSubsectionReader::~AudioSubsectionReader
()
47
{
48
if
(deleteSourceWhenDeleted)
49
delete
source;
50
}
51
52
//==============================================================================
53
bool
AudioSubsectionReader::readSamples
(
int
*
const
* destSamples,
int
numDestChannels,
int
startOffsetInDestBuffer,
54
int64 startSampleInFile,
int
numSamples)
55
{
56
clearSamplesBeyondAvailableLength
(destSamples, numDestChannels, startOffsetInDestBuffer,
57
startSampleInFile, numSamples, length);
58
59
if
(numSamples <= 0)
60
return
true
;
61
62
return
source->readSamples (destSamples, numDestChannels, startOffsetInDestBuffer,
63
startSampleInFile + startSample, numSamples);
64
}
65
66
void
AudioSubsectionReader::readMaxLevels
(int64 startSampleInFile, int64 numSamples,
Range<float>
* results,
int
numChannelsToRead)
67
{
68
startSampleInFile = jmax ((int64) 0, startSampleInFile);
69
numSamples = jmax ((int64) 0, jmin (numSamples, length - startSampleInFile));
70
71
source->readMaxLevels (startSampleInFile + startSample, numSamples, results, numChannelsToRead);
72
}
73
74
}
// namespace juce
juce::AudioFormatReader::usesFloatingPointData
bool usesFloatingPointData
Definition
juce_AudioFormatReader.h:237
juce::AudioFormatReader::getFormatName
const String & getFormatName() const noexcept
Definition
juce_AudioFormatReader.h:68
juce::AudioFormatReader::clearSamplesBeyondAvailableLength
static void clearSamplesBeyondAvailableLength(int *const *destChannels, int numDestChannels, int startOffsetInDestBuffer, int64 startSampleInFile, int &numSamples, int64 fileLengthInSamples)
Definition
juce_AudioFormatReader.h:309
juce::AudioFormatReader::lengthInSamples
int64 lengthInSamples
Definition
juce_AudioFormatReader.h:231
juce::AudioFormatReader::sampleRate
double sampleRate
Definition
juce_AudioFormatReader.h:225
juce::AudioFormatReader::AudioFormatReader
AudioFormatReader(InputStream *sourceStream, const String &formatName)
Definition
juce_AudioFormatReader.cpp:29
juce::AudioFormatReader::bitsPerSample
unsigned int bitsPerSample
Definition
juce_AudioFormatReader.h:228
juce::AudioFormatReader::numChannels
unsigned int numChannels
Definition
juce_AudioFormatReader.h:234
juce::AudioSubsectionReader::AudioSubsectionReader
AudioSubsectionReader(AudioFormatReader *sourceReader, int64 subsectionStartSample, int64 subsectionLength, bool deleteSourceWhenDeleted)
Definition
juce_AudioSubsectionReader.cpp:29
juce::AudioSubsectionReader::~AudioSubsectionReader
~AudioSubsectionReader() override
Definition
juce_AudioSubsectionReader.cpp:46
juce::AudioSubsectionReader::readMaxLevels
void readMaxLevels(int64 startSample, int64 numSamples, Range< float > *results, int numChannelsToRead) override
Definition
juce_AudioSubsectionReader.cpp:66
juce::AudioSubsectionReader::readSamples
bool readSamples(int *const *destSamples, int numDestChannels, int startOffsetInDestBuffer, int64 startSampleInFile, int numSamples) override
Definition
juce_AudioSubsectionReader.cpp:53
juce::Range
Definition
juce_Range.h:40
libopenshot-audio
JuceLibraryCode
modules
juce_audio_formats
format
juce_AudioSubsectionReader.cpp
Generated by
1.18.0