NifTK  16.4.1 - 0798f20
CMIC's Translational Medical Imaging Platform
niftkQtAudioDataSourceService.h
Go to the documentation of this file.
1 /*=============================================================================
2 
3  NifTK: A software platform for medical image computing.
4 
5  Copyright (c) University College London (UCL). All rights reserved.
6 
7  This software is distributed WITHOUT ANY WARRANTY; without even
8  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
9  PURPOSE.
10 
11  See LICENSE.txt in the top level directory for details.
12 
13 =============================================================================*/
14 #ifndef niftkQtAudioDataSourceService_h
15 #define niftkQtAudioDataSourceService_h
16 
17 #include <niftkIGIDataSource.h>
20 
21 #include <QObject>
22 #include <QSet>
23 #include <QMutex>
24 #include <QString>
25 #include <QAudioInput>
26 
27 // forward-decl
28 class QAudioDeviceInfo;
29 class QAudioFormat;
30 class QFile;
31 
32 namespace niftk
33 {
34 
42  : public QObject
43  , public IGIDataSource
44 {
45 
46  Q_OBJECT
47 
48 public:
49 
51  mitkNewMacro3Param(QtAudioDataSourceService, QString, const IGIDataSourceProperties&, mitk::DataStorage::Pointer)
52 
56  virtual void StartPlayback(niftk::IGIDataType::IGITimeType firstTimeStamp,
57  niftk::IGIDataType::IGITimeType lastTimeStamp) override;
58 
62  void PlaybackData(niftk::IGIDataType::IGITimeType requestedTimeStamp) override;
63 
67  virtual void StopPlayback() override;
68 
72  virtual std::vector<IGIDataItemInfo> Update(const niftk::IGIDataType::IGITimeType& time) override;
73 
77  bool ProbeRecordedData(niftk::IGIDataType::IGITimeType* firstTimeStampInStore,
78  niftk::IGIDataType::IGITimeType* lastTimeStampInStore) override;
79 
83  virtual void StartRecording() override;
84 
88  virtual void StopRecording() override;
89 
93  virtual void SetProperties(const IGIDataSourceProperties& properties) override;
94 
98  virtual IGIDataSourceProperties GetProperties() const override;
99 
100 protected:
101 
102  QtAudioDataSourceService(QString factoryName,
103  const IGIDataSourceProperties& properties,
104  mitk::DataStorage::Pointer dataStorage
105  );
106  virtual ~QtAudioDataSourceService();
107 
108 private slots:
109 
110  void OnStateChanged(QAudio::State state);
111  void OnReadyRead();
112 
113 private:
114 
115  QtAudioDataSourceService(const QtAudioDataSourceService&); // deliberately not implemented
116  QtAudioDataSourceService& operator=(const QtAudioDataSourceService&); // deliberately not implemented
117 
118  void StartWAVFile();
119  void FinishWAVFile();
120 
121  static niftk::IGIDataSourceLocker s_Lock;
122  QMutex m_Lock;
123  int m_SourceNumber;
124  niftk::IGIDataType::IGIIndexType m_FrameId;
125 
126  QAudioInput* m_InputDevice;
127  QIODevice* m_InputStream; // we do not own this one!
128  QFile* m_OutputFile;
129  QAudioDeviceInfo m_DeviceInfo;
130  QAudioFormat m_Inputformat;
131  int m_SegmentCounter;
132 
133 }; // end class
134 
135 } // end namespace
136 
137 #endif
const IGIDataSourceProperties virtual mitk::DataStorage::Pointer void StartPlayback(niftk::IGIDataType::IGITimeType firstTimeStamp, niftk::IGIDataType::IGITimeType lastTimeStamp) override
Definition: niftkQtAudioDataSourceService.cxx:310
Definition: niftkMeshSmoother.cxx:19
Definition: ReceptorMemberCommandTest.cxx:25
void PlaybackData(niftk::IGIDataType::IGITimeType requestedTimeStamp) override
Definition: niftkQtAudioDataSourceService.cxx:325
mitkClassMacroItkParent(QtAudioDataSourceService, IGIDataSource) mitkNewMacro3Param(QtAudioDataSourceService
virtual void SetProperties(const IGIDataSourceProperties &properties) override
IGIDataSourceI::SetProperties()
Definition: niftkQtAudioDataSourceService.cxx:294
virtual void StopRecording() override
Definition: niftkQtAudioDataSourceService.cxx:360
Abstract base class for IGI Data, such as objects containing tracking data, video frames or ultrasoun...
Definition: niftkIGIDataType.h:35
QMap< QString, QVariant > IGIDataSourceProperties
Definition: niftkIGIDataSourceI.h:33
bool ProbeRecordedData(niftk::IGIDataType::IGITimeType *firstTimeStampInStore, niftk::IGIDataType::IGITimeType *lastTimeStampInStore) override
Definition: niftkQtAudioDataSourceService.cxx:332
virtual std::vector< IGIDataItemInfo > Update(const niftk::IGIDataType::IGITimeType &time) override
Definition: niftkQtAudioDataSourceService.cxx:379
virtual IGIDataSourceProperties GetProperties() const override
IGIDataSourceI::GetProperties()
Definition: niftkQtAudioDataSourceService.cxx:301
Info class to describe current state, so that GUI can display status.
Definition: niftkIGIDataSourceI.h:47
Abstract base class for IGI DataSources, such as objects that produce tracking data, video frames or ultrasound frames.
Definition: niftkIGIDataSource.h:47
Helper class to provide a class-level counter.
Definition: niftkIGIDataSourceLocker.h:29
virtual void StopPlayback() override
Definition: niftkQtAudioDataSourceService.cxx:318
QString
Definition: niftkQtAudioDataSourceService.h:51
Provides a feed of images from QtAudio MDP, as an IGIDataSourceServiceI.
Definition: niftkQtAudioDataSourceService.h:41
virtual void StartRecording() override
Definition: niftkQtAudioDataSourceService.cxx:340
Definition: niftkExceptionObject.h:21