www.pudn.com > mediator15src.zip > AudioCodecEnumerator.h
/* * AudioCodecEnumerator.h * Copyright (C) 2002 Arno Hornberger* Original Version Copyright (C) Alberto Vigata - January 2000 - ultraflask@yahoo.com * * This file is part of MPEG Mediator, a free MPEG stream converter. * * MPEG Mediator is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * MPEG Mediator is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef AUDIOCODECENUMERATOR_H #define AUDIOCODECENUMERATOR_H #include #include #include class AudioCodecEnumerator { public: class CWaveFormatEx : public CByteArray { public: CWaveFormatEx& operator =(const CWaveFormatEx &src) { Copy(src); return *this; } WAVEFORMATEX *Get() { return (WAVEFORMATEX *)GetData(); } }; class CAudioCodecInfo { public: // MFC doesnt define the assigment operator for CArray class. CAudioCodecInfo& operator =(const CAudioCodecInfo &src) { strcpy(szFormatTag, src.szFormatTag); hadid = src.hadid; formatTag = src.formatTag; m_vFormatDetailsList.Copy(src.m_vFormatDetailsList); m_vWaveFormatExList.Copy(src.m_vWaveFormatExList); return *this; } char szFormatTag[ACMFORMATTAGDETAILS_FORMATTAG_CHARS]; DWORD formatTag; HACMDRIVERID hadid; CArray m_vFormatDetailsList; CArray m_vWaveFormatExList; }; AudioCodecEnumerator() { } ~AudioCodecEnumerator() { } bool IsEnumerated(HACMDRIVERID hadid, WAVEFORMATEX *wfx, int cbSize, int *dwFormatTagIdx, int *FormatIdx); void Enumerate(LPWAVEFORMATEX lpwfx); const CArray & GetEnumeratedCodecs(); friend BOOL CALLBACK acmDriverEnumCallback(HACMDRIVERID hadid, DWORD dwInstance, DWORD fdwSupport); friend BOOL CALLBACK acmFormatEnumCallback(HACMDRIVERID hadid, LPACMFORMATDETAILS pafd, DWORD dwInstance, DWORD fdwSupport); friend BOOL CALLBACK acmFormatTagEnumCallback(HACMDRIVERID hadid, LPACMFORMATTAGDETAILS paftd, DWORD dwInstance, DWORD fdwSupport); private: CArray m_vAudioCodecList; char szTempFormatTag[ACMFORMATTAGDETAILS_FORMATTAG_CHARS]; HACMDRIVER m_hHad; // handle to opened driver int m_nSampleFreq; int m_nChannels; int m_nBitsPerSample; ACMDRIVERDETAILS m_add; }; #endif