Audacity 3.2.0
SampleBlock.cpp
Go to the documentation of this file.
1/**********************************************************************
2
3Audacity: A Digital Audio Editor
4
5SampleBlock.cpp
6
7**********************************************************************/
8
9
11#include "SampleBlock.h"
12#include "SampleFormat.h"
13
14#include <wx/defs.h>
15
17{
18 auto &factory = Factory::Get();
19 if ( ! factory )
21 return factory( project );
22}
23
25
27 size_t numsamples,
28 sampleFormat srcformat)
29{
30 auto result = DoCreate(src, numsamples, srcformat);
31 if (!result)
34 return result;
35}
36
38 size_t numsamples,
39 sampleFormat srcformat)
40{
41 auto result = DoCreateSilent(numsamples, srcformat);
42 if (!result)
45 return result;
46}
47
49 sampleFormat srcformat,
50 const AttributesList &attrs)
51{
52 auto result = DoCreateFromXML(srcformat, attrs);
53 if (!result)
56 return result;
57}
58
60
62 sampleFormat destformat,
63 size_t sampleoffset,
64 size_t numsamples, bool mayThrow)
65{
66 try{ return DoGetSamples(dest, destformat, sampleoffset, numsamples); }
67 catch( ... ) {
68 if( mayThrow )
69 throw;
70 ClearSamples( dest, destformat, 0, numsamples );
71 return 0;
72 }
73}
74
76 size_t start, size_t len, bool mayThrow)
77{
78 try{ return DoGetMinMaxRMS(start, len); }
79 catch( ... ) {
80 if( mayThrow )
81 throw;
82 return {};
83 }
84}
85
87{
88 try{ return DoGetMinMaxRMS(); }
89 catch( ... ) {
90 if( mayThrow )
91 throw;
92 return {};
93 }
94}
95
MessageBoxException for violation of preconditions or assertions.
#define THROW_INCONSISTENCY_EXCEPTION
Throw InconsistencyException, using C++ preprocessor to identify the source code location.
std::shared_ptr< SampleBlock > SampleBlockPtr
Definition: SampleBlock.h:28
std::shared_ptr< SampleBlockFactory > SampleBlockFactoryPtr
Definition: SampleBlock.h:30
void ClearSamples(samplePtr dst, sampleFormat format, size_t start, size_t len)
sampleFormat
The ordering of these values with operator < agrees with the order of increasing bit width.
Definition: SampleFormat.h:30
char * samplePtr
Definition: SampleFormat.h:57
const char * constSamplePtr
Definition: SampleFormat.h:58
const auto project
std::vector< Attribute > AttributesList
Definition: XMLTagHandler.h:40
The top-level handle to an Audacity project. It serves as a source of events that other objects can b...
Definition: Project.h:90
CallbackReturn Publish(const SampleBlockCreateMessage &message)
Send a message to connected callbacks.
Definition: Observer.h:207
virtual SampleBlockPtr DoCreateFromXML(sampleFormat srcformat, const AttributesList &attrs)=0
static SampleBlockFactoryPtr New(AudacityProject &project)
Definition: SampleBlock.cpp:16
SampleBlockPtr CreateSilent(size_t numsamples, sampleFormat srcformat)
Definition: SampleBlock.cpp:37
virtual ~SampleBlockFactory()
virtual SampleBlockPtr DoCreateSilent(size_t numsamples, sampleFormat srcformat)=0
SampleBlockPtr Create(constSamplePtr src, size_t numsamples, sampleFormat srcformat)
Definition: SampleBlock.cpp:26
virtual SampleBlockPtr DoCreate(constSamplePtr src, size_t numsamples, sampleFormat srcformat)=0
SampleBlockPtr CreateFromXML(sampleFormat srcformat, const AttributesList &attrs)
Definition: SampleBlock.cpp:48
MinMaxRMS GetMinMaxRMS(size_t start, size_t len, bool mayThrow=true)
Gets extreme values for the specified region.
Definition: SampleBlock.cpp:75
virtual MinMaxRMS DoGetMinMaxRMS() const =0
size_t GetSamples(samplePtr dest, sampleFormat destformat, size_t sampleoffset, size_t numsamples, bool mayThrow=true)
Definition: SampleBlock.cpp:61
virtual size_t DoGetSamples(samplePtr dest, sampleFormat destformat, size_t sampleoffset, size_t numsamples)=0
virtual ~SampleBlock()
static RegisteredToolbarFactory factory