00001 #pragma once
00002
00003 #ifdef ENABLE_KINECT_SDK
00004
00005
00006 #include "WinAudioStream.h"
00007
00008 #include <NuiApi.h>
00009 #include <mfapi.h>
00010 #include <wmcodecdsp.h>
00011 #include <uuids.h>
00012
00013
00014
00015 #pragma comment(lib, "Msdmo.lib")
00016 #pragma comment(lib, "amstrmid.lib")
00017 #pragma comment(lib, "Kinect10.lib")
00018
00019
00020 #define KINECT_AUDIO_SINGLE_AEC 0
00021 #define KINECT_AUDIO_ARRAY 2
00022 #define KINECT_AUDIO_ARRAY_AEC 4
00023 #define KINECT_AUDIO_SINGLE 5
00024
00025
00026
00027 namespace jbxwl {
00028
00029
00030
00031
00032 static const WORD KinectAudioFormat = WAVE_FORMAT_PCM;
00033 static const WORD KinectAudioChannels = 1;
00034 static const DWORD KinectAudioSamplesPerSec = 16000;
00035 static const WORD KinectAudioBitsPerSample = 16;
00036
00037
00038
00039
00040
00041 class CKinectAudio
00042 {
00043 public:
00044
00045 CKinectAudio(INuiSensor* sensor=NULL, int mode=KINECT_AUDIO_SINGLE_AEC);
00046 virtual ~CKinectAudio(void);
00047
00048 BOOL init(INuiSensor* sensor, int mode=KINECT_AUDIO_SINGLE_AEC);
00049 void free(void);
00050 IStream* getIStream(void) { return m_pStream;}
00051
00052
00053 BOOL setProperty(int mode);
00054 BOOL setMediaType(void);
00055
00056 BOOL startCapture(void) { if (m_audioStream!=NULL) return m_audioStream->startCapture(); else return FALSE;}
00057 void stopCapture(void) { if (m_audioStream!=NULL) m_audioStream->stopCapture(); }
00058
00059 Buffer getAudioData(void) { if (m_audioStream!=NULL) return m_audioStream->input(); else return init_Buffer();}
00060 void getAudioData(Buffer* pbuf);
00061
00062
00063 BOOL openOutput(void) { if (m_audioStream!=NULL) return m_audioStream->openOutput(); else return FALSE;}
00064 void closeOutput(void) { if (m_audioStream!=NULL) m_audioStream->closeOutput();}
00065
00066 public:
00067
00068 WAVEFORMATEX getAudioFormat(void);
00069
00070 private:
00071
00072 CWinAudioStream* m_audioStream;
00073
00074 INuiAudioBeam* m_audioSource;
00075 IMediaObject* m_audioMedia;
00076 IPropertyStore* m_audioProperty;
00077 IStream* m_pStream;
00078
00079 private:
00080
00081 CKinectAudio& operator = (CKinectAudio& rhs) { return rhs;}
00082
00083 };
00084
00085
00086 }
00087
00088 #endif