00001
00002 #include "OpenNiAudio.h"
00003
00004 #if defined(ENABLE_OPENNI) || defined(ENABLE_OPENNI2)
00005
00006
00007 using namespace jbxl;
00008 using namespace jbxwl;
00009
00010
00011
00012
00013
00015
00016
00017 COpenNiMedia::COpenNiMedia(void)
00018 {
00019 }
00020
00021
00022
00023 HRESULT STDMETHODCALLTYPE COpenNiMedia::GetOutputCurrentType(DWORD index, DMO_MEDIA_TYPE *pmt)
00024 {
00025 return S_OK;
00026 }
00027
00028
00029
00030 HRESULT STDMETHODCALLTYPE COpenNiMedia::ProcessOutput(DWORD dwFlags, DWORD oputBufferCount, DMO_OUTPUT_DATA_BUFFER *outputBuffers, DWORD *pdwStatus)
00031 {
00032 return S_OK;
00033 }
00034
00035
00036
00037 HRESULT STDMETHODCALLTYPE COpenNiMedia::SetOutputType(DWORD index, const DMO_MEDIA_TYPE *pmt, DWORD flags)
00038 {
00039 return S_OK;
00040 }
00041
00042
00043
00044
00046
00047
00048
00049 COpenNiAudio::COpenNiAudio(COpenNiTool* tool)
00050 {
00051 m_audioStream = NULL;
00052
00053 m_audioMedia = NULL;
00054 m_pStream = NULL;
00055 m_mediaObj = new COpenNiMedia();
00056
00057
00058 if (tool!=NULL) init(tool);
00059 }
00060
00061
00062
00063 COpenNiAudio::~COpenNiAudio(void)
00064 {
00065 DEBUG_ERROR("DESTRUCTOR: COpenNiAudio: START\n");
00066
00067 free();
00068
00069 DEBUG_ERROR("DESTRUCTOR: COpenNiAudio: END\n");
00070 }
00071
00072
00073
00074 BOOL COpenNiAudio::init(COpenNiTool* tool)
00075 {
00076 if (tool==NULL) return FALSE;
00077
00078
00079 free();
00080
00081
00082
00083
00084
00085
00086
00087
00088
00089
00090
00091
00092
00093
00094
00095
00096
00097
00098
00099
00100
00101
00102 return FALSE;
00103 }
00104
00105
00106
00107 void COpenNiAudio::free(void)
00108 {
00109 releaseNull(m_pStream);
00110 deleteNull (m_audioStream);
00111
00112 releaseNull(m_audioMedia);
00113 deleteNull (m_mediaObj);
00114
00115
00116 }
00117
00118
00119
00120 BOOL COpenNiAudio::setMediaType(void)
00121 {
00122 WAVEFORMATEX format = getAudioFormat();
00123
00124
00125
00126
00127
00128
00129
00130
00131
00132
00133
00134 return TRUE;
00135 }
00136
00137
00138
00139 void COpenNiAudio::getAudioData(Buffer* pbuf)
00140 {
00141 if (m_pStream==NULL || pbuf==NULL) return;
00142
00143 ULONG len = 0;
00144
00145 m_pStream->Read((void*)pbuf->buf, (ULONG)pbuf->bufsz, &len);
00146 pbuf->vldsz = (int)len;
00147
00148 return;
00149 }
00150
00151
00152
00153 WAVEFORMATEX COpenNiAudio::getAudioFormat(void)
00154 {
00155 WORD blockAlign = ((OpenNiAudioBitsPerSample+7)/8)*OpenNiAudioChannels;
00156 DWORD avgBytesPerSec = blockAlign*OpenNiAudioSamplesPerSec;
00157
00158 WAVEFORMATEX format = {
00159 OpenNiAudioFormat, OpenNiAudioChannels, OpenNiAudioSamplesPerSec,
00160 avgBytesPerSec, blockAlign, OpenNiAudioBitsPerSample, 0
00161 };
00162 return format;
00163 }
00164
00165
00166 #endif // defined(ENABLE_OPENNI) || defined(ENABLE_OPENNI2)
00167
00168
00169