Skip to main content

Posts

Showing posts from 2014

DirectShow Source Filter that reads data from application

Mentioned below is an example of a DirectShow source filter that reads data from application For reference I have taken CPushSource filter from DirectShow samples Include the code mentioned below in a common header file DECLARE_INTERFACE_ ( IMySettingsInterface , IUnknown ) { STDMETHOD ( GetParamInt )( char * szName , int * pParam ) = 0 ; STDMETHOD ( SetParamInt )( char * szName , int nParam ) = 0 ; }; // {F350FE9E-65BA-4AC1-A6C0-FD9F2979D342} DEFINE_GUID ( IID_IMySettings , 0xf350fe9e , 0x65ba , 0x4ac1 , 0xa6 , 0xc0 , 0xfd , 0x9f , 0x29 , 0x79 , 0xd3 , 0x42 ); Change made to CPushSourceDesktop class: class CPushSourceDesktop : public CSource , public IMySettingsInterface { private : // Constructor is private because you have to use CreateInstance CPushSourceDesktop ( IUnknown * pUnk , HRESULT * phr ); ~ CPushSourceDesktop (); CPushPinDesktop * m_pPin ; public : DECLARE_IUNKNOWN ; static CUnknown * WINAPI Creat

Getting and Setting Microphone Gain or Microphone Boost on Windows 7 / 8 Programmatically

After hours of searching the net I have finally figured out a way to programmatically get and set the microphone gain (boost) value. The code mentioned below can be built on VS and does the job of setting gain value. #include "stdafx.h" #include <mmdeviceapi.h> #include <endpointvolume.h> #include <Functiondiscoverykeys_devpkey.h> #include "Audioclient.h" #include "comutil.h" #define EXIT_ON_ERROR(hres)   if (FAILED(hres)) { goto Exit; } #define SAFE_RELEASE(punk)   if ((punk) != NULL)  { (punk)->Release(); (punk) = NULL; } HRESULT getMicrophoneBoostVolumeLevel(IMMDevice *pEndptDev, IAudioVolumeLevel** ppVolumeLevel) { HRESULT hr = S_OK; DataFlow flow; IDeviceTopology *pDeviceTopology = NULL; IConnector *pConnFrom = NULL; IConnector *pConnTo = NULL; IPart *pPartPrev = NULL; IPart *pPartNext = NULL; *ppVolumeLevel = NULL; wchar_t microphoneBoostName[] = L"Microphone Boost";//if your system