// PCMVolumeTransformer.cpp: implementation of the PCMVolumeTransformer class. // ////////////////////////////////////////////////////////////////////// #include #include "AudioSample.h" #include "AudioSampleManager.h" #include "PCMVolumeTransformer.h" using namespace std; ////////////////////////////////////////////////////////////////////// // Construction/Destruction ////////////////////////////////////////////////////////////////////// PCMVolumeTransformer::PCMVolumeTransformer() { char subFacilityName[100]; sprintf(subFacilityName, "PCMVolumeTransformer:%x", this); tracer.SetSubFacilityName(subFacilityName); SetTraceLevel(); volume = 0; } PCMVolumeTransformer::~PCMVolumeTransformer() { } int PCMVolumeTransformer::SetTraceLevel() { long SystemMask = 0; if ((SystemMask = GetRegKeyLong(HKEY_CURRENT_USER, "Software\\Cisco Systems\\MTC\\Tracing", "AllComponents", 0x0)) == 0) { SystemMask = GetRegKeyLong(HKEY_CURRENT_USER, "Software\\Cisco Systems\\MTC\\Tracing", "PCMVolumeTransformer", 0x100000); } tracer.SetSystemMask(SystemMask); return 0; } int PCMVolumeTransformer::SetVolume(int newVolume) { newVolume = min(100, newVolume); newVolume = max(0, newVolume); volume = (unsigned int)newVolume; return 0; } int PCMVolumeTransformer::GetVolume() { return volume; } int PCMVolumeTransformer::TransformAudioSamples(std::vector > &data, AudioSample **ppAudioSample) { int result = 0; AudioSample *inSample = NULL; if (data.size() > 0) { inSample = data[0].first; } if (inSample) { inSample->AddRef(this); int numSamples = inSample->DataSize() / 2; short *dataIn = (short *)(inSample->Data()); for (int i=0; i