#include <WinAudioTool.h>
Public Member Functions | |
CWinAudioTool (void) | |
virtual | ~CWinAudioTool (void) |
BOOL | init (void) |
void | free (void) |
IStream * | getIStream (void) |
BOOL | setMediaType (void) |
BOOL | startCapture (void) |
void | stopCapture (void) |
Buffer | getAudioData (void) |
void | getAudioData (Buffer *pbuf) |
BOOL | openOutput (void) |
void | closeOutput (void) |
WAVEFORMATEX | getAudioFormat (void) |
Private Member Functions | |
CWinAudioTool & | operator= (CWinAudioTool &rhs) |
Private Attributes | |
CWinAudioStream * | m_audioStream |
IMediaObject * | m_audioMedia |
IPropertyStore * | m_audioProperty |
IStream * | m_pStream |
Definition at line 40 of file WinAudioTool.h.
CWinAudioTool | ( | void | ) |
Definition at line 17 of file WinAudioTool.cpp.
References CWinAudioTool::init(), CWinAudioTool::m_audioMedia, CWinAudioTool::m_audioProperty, CWinAudioTool::m_audioStream, and CWinAudioTool::m_pStream.
00018 { 00019 m_audioStream = NULL; 00020 m_audioMedia = NULL; 00021 m_audioProperty = NULL; 00022 m_pStream = NULL; 00023 00024 // 00025 init(); 00026 }
~CWinAudioTool | ( | void | ) | [virtual] |
Definition at line 30 of file WinAudioTool.cpp.
References CWinAudioTool::free().
00031 { 00032 DEBUG_INFO("DESTRUCTOR: CWinAudioTool: START\n"); 00033 00034 free(); 00035 00036 DEBUG_INFO("DESTRUCTOR: CWinAudioTool: END\n"); 00037 }
void closeOutput | ( | void | ) | [inline] |
Definition at line 62 of file WinAudioTool.h.
References CWinAudioStream::closeOutput(), and CWinAudioTool::m_audioStream.
00062 { if (m_audioStream!=NULL) m_audioStream->closeOutput();}
void free | ( | void | ) |
Definition at line 61 of file WinAudioTool.cpp.
References jbxwl::deleteNull(), CWinAudioTool::m_audioMedia, CWinAudioTool::m_audioProperty, CWinAudioTool::m_audioStream, CWinAudioTool::m_pStream, and jbxwl::releaseNull().
Referenced by CWinAudioTool::init(), and CWinAudioTool::~CWinAudioTool().
00062 { 00063 releaseNull(m_pStream); 00064 deleteNull (m_audioStream); 00065 00066 releaseNull(m_audioProperty); 00067 releaseNull(m_audioMedia); 00068 }
void getAudioData | ( | Buffer * | pbuf | ) |
Definition at line 101 of file WinAudioTool.cpp.
References CWinAudioTool::m_pStream.
Buffer getAudioData | ( | void | ) | [inline] |
Definition at line 57 of file WinAudioTool.h.
References CWinAudioStream::input(), and CWinAudioTool::m_audioStream.
00057 { if (m_audioStream!=NULL) return m_audioStream->input(); else return init_Buffer();} // not free
WAVEFORMATEX getAudioFormat | ( | void | ) |
Definition at line 115 of file WinAudioTool.cpp.
References jbxwl::WinAudioToolBitsPerSample, jbxwl::WinAudioToolChannels, jbxwl::WinAudioToolFormat, and jbxwl::WinAudioToolSamplesPerSec.
Referenced by CWinAudioTool::setMediaType().
00116 { 00117 WORD blockAlign = ((WinAudioToolBitsPerSample+7)/8)*WinAudioToolChannels; 00118 DWORD avgBytesPerSec = blockAlign*WinAudioToolSamplesPerSec; 00119 00120 WAVEFORMATEX format = { 00121 WinAudioToolFormat, WinAudioToolChannels, WinAudioToolSamplesPerSec, 00122 avgBytesPerSec, blockAlign, WinAudioToolBitsPerSample, 0 00123 }; 00124 return format; 00125 }
IStream* getIStream | ( | void | ) | [inline] |
Definition at line 49 of file WinAudioTool.h.
References CWinAudioTool::m_pStream.
00049 { return m_pStream;}
BOOL init | ( | void | ) |
Definition at line 41 of file WinAudioTool.cpp.
References CWinAudioTool::free(), CWinAudioTool::m_audioMedia, CWinAudioTool::m_audioStream, CWinAudioTool::m_pStream, CWinAudioStream::QueryInterface(), and CWinAudioTool::setMediaType().
Referenced by CWinAudioTool::CWinAudioTool().
00042 { 00043 free(); 00044 00045 // if (SUCCEEDED(hr)) hr = m_audioSource->QueryInterface(IID_IMediaObject, (void**)&m_audioMedia); 00046 // if (SUCCEEDED(hr)) hr = m_audioSource->QueryInterface(IID_IPropertyStore, (void**)&m_audioProperty); 00047 // 00048 //BOOL ret = setProperty(mode); 00049 BOOL ret = setMediaType(); 00050 if (ret) { 00051 m_audioStream = new CWinAudioStream(m_audioMedia); 00052 m_audioStream->QueryInterface(IID_IStream, (void**)&m_pStream); 00053 return TRUE; 00054 } 00055 00056 return FALSE; 00057 }
BOOL openOutput | ( | void | ) | [inline] |
Definition at line 61 of file WinAudioTool.h.
References CWinAudioTool::m_audioStream, and CWinAudioStream::openOutput().
00061 { if (m_audioStream!=NULL) return m_audioStream->openOutput(); else return FALSE;}
CWinAudioTool& operator= | ( | CWinAudioTool & | rhs | ) | [inline, private] |
Definition at line 78 of file WinAudioTool.h.
BOOL setMediaType | ( | void | ) |
Definition at line 72 of file WinAudioTool.cpp.
References CWinAudioTool::getAudioFormat(), CWinAudioTool::m_audioMedia, CWinAudioTool::m_audioStream, CWinAudioTool::m_pStream, and CWinAudioStream::QueryInterface().
Referenced by CWinAudioTool::init().
00073 { 00074 if (m_audioMedia==NULL) return FALSE; 00075 00076 DMO_MEDIA_TYPE mt = {0}; 00077 MoInitMediaType(&mt, sizeof(WAVEFORMATEX)); 00078 mt.majortype = MEDIATYPE_Audio; 00079 mt.subtype = MEDIASUBTYPE_PCM; 00080 mt.lSampleSize = 0; 00081 mt.bFixedSizeSamples = TRUE; 00082 mt.bTemporalCompression = FALSE; 00083 mt.formattype = FORMAT_WaveFormatEx; 00084 memcpy(mt.pbFormat, &getAudioFormat(), sizeof(WAVEFORMATEX)); 00085 00086 HRESULT hr = m_audioMedia->SetOutputType(0, &mt, 0); 00087 MoFreeMediaType(&mt); 00088 00089 if (FAILED(hr)) return FALSE; 00090 return TRUE; 00091 00092 // 00093 if (SUCCEEDED(hr)) { 00094 m_audioStream = new CWinAudioStream(m_audioMedia); 00095 m_audioStream->QueryInterface(IID_IStream, (void**)&m_pStream); 00096 } 00097 }
BOOL startCapture | ( | void | ) | [inline] |
Definition at line 54 of file WinAudioTool.h.
References CWinAudioTool::m_audioStream, and CWinAudioStream::startCapture().
00054 { if (m_audioStream!=NULL) return m_audioStream->startCapture(); else return FALSE;}
void stopCapture | ( | void | ) | [inline] |
Definition at line 55 of file WinAudioTool.h.
References CWinAudioTool::m_audioStream, and CWinAudioStream::stopCapture().
00055 { if (m_audioStream!=NULL) m_audioStream->stopCapture(); }
IMediaObject* m_audioMedia [private] |
Definition at line 72 of file WinAudioTool.h.
Referenced by CWinAudioTool::CWinAudioTool(), CWinAudioTool::free(), CWinAudioTool::init(), and CWinAudioTool::setMediaType().
IPropertyStore* m_audioProperty [private] |
Definition at line 73 of file WinAudioTool.h.
Referenced by CWinAudioTool::CWinAudioTool(), and CWinAudioTool::free().
CWinAudioStream* m_audioStream [private] |
Definition at line 70 of file WinAudioTool.h.
Referenced by CWinAudioTool::closeOutput(), CWinAudioTool::CWinAudioTool(), CWinAudioTool::free(), CWinAudioTool::getAudioData(), CWinAudioTool::init(), CWinAudioTool::openOutput(), CWinAudioTool::setMediaType(), CWinAudioTool::startCapture(), and CWinAudioTool::stopCapture().
IStream* m_pStream [private] |
Definition at line 74 of file WinAudioTool.h.
Referenced by CWinAudioTool::CWinAudioTool(), CWinAudioTool::free(), CWinAudioTool::getAudioData(), CWinAudioTool::getIStream(), CWinAudioTool::init(), and CWinAudioTool::setMediaType().