forked from Sneeds-Feed-and-Seed/sneedacity
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathProjectAudioIO.cpp
90 lines (71 loc) · 1.91 KB
/
ProjectAudioIO.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
/**********************************************************************
Sneedacity: A Digital Audio Editor
ProjectAudioIO.cpp
Paul Licameli split from SneedacityProject.cpp
**********************************************************************/
#include "ProjectAudioIO.h"
#include "AudioIOBase.h"
#include "Project.h"
#include "widgets/MeterPanelBase.h"
static const SneedacityProject::AttachedObjects::RegisteredFactory sAudioIOKey{
[]( SneedacityProject &parent ){
return std::make_shared< ProjectAudioIO >( parent );
}
};
ProjectAudioIO &ProjectAudioIO::Get( SneedacityProject &project )
{
return project.AttachedObjects::Get< ProjectAudioIO >( sAudioIOKey );
}
const ProjectAudioIO &ProjectAudioIO::Get( const SneedacityProject &project )
{
return Get( const_cast<SneedacityProject &>(project) );
}
ProjectAudioIO::ProjectAudioIO( SneedacityProject &project )
: mProject{ project }
{
}
ProjectAudioIO::~ProjectAudioIO()
{
}
int ProjectAudioIO::GetAudioIOToken() const
{
return mAudioIOToken;
}
void ProjectAudioIO::SetAudioIOToken(int token)
{
mAudioIOToken = token;
}
bool ProjectAudioIO::IsAudioActive() const
{
auto gAudioIO = AudioIOBase::Get();
return GetAudioIOToken() > 0 &&
gAudioIO->IsStreamActive(GetAudioIOToken());
}
MeterPanelBase *ProjectAudioIO::GetPlaybackMeter()
{
return mPlaybackMeter;
}
void ProjectAudioIO::SetPlaybackMeter(MeterPanelBase *playback)
{
auto &project = mProject;
mPlaybackMeter = playback;
auto gAudioIO = AudioIOBase::Get();
if (gAudioIO)
{
gAudioIO->SetPlaybackMeter( &project , mPlaybackMeter );
}
}
MeterPanelBase *ProjectAudioIO::GetCaptureMeter()
{
return mCaptureMeter;
}
void ProjectAudioIO::SetCaptureMeter(MeterPanelBase *capture)
{
auto &project = mProject;
mCaptureMeter = capture;
auto gAudioIO = AudioIOBase::Get();
if (gAudioIO)
{
gAudioIO->SetCaptureMeter( &project, mCaptureMeter );
}
}