コード例 #1
0
ファイル: cAudioCapture.cpp プロジェクト: ComradeKeys/cAudio
	bool cAudioCapture::initialize(const char* deviceName, unsigned int frequency, AudioFormats format, unsigned int internalBufferSize)
	{
		cAudioMutexBasicLock lock(Mutex);
		DeviceName = fromUTF8(deviceName);
		Frequency = frequency;
		InternalBufferSize = internalBufferSize;

		Format = format;
		if(Format == EAF_8BIT_MONO)
			SampleSize = 1;
		else if(Format == EAF_8BIT_STEREO)
			SampleSize = 2;
		else if(Format == EAF_16BIT_MONO)
			SampleSize = 2;
		else
			SampleSize = 4;

		shutdownOpenALDevice();
		signalEvent(ON_INIT);
		bool isInit = initOpenALDevice();

#ifdef CAUDIO_USE_INTERNAL_THREAD
		if (!AudioThread)
		{
			AudioThread = new cAudioThread(this);
		}
		AudioThread->start();
#endif
		return isInit;
	}
コード例 #2
0
ファイル: cAudioCapture.cpp プロジェクト: ComradeKeys/cAudio
	void cAudioCapture::updateCaptureBuffer(bool force)
	{
		cAudioMutexBasicLock lock(Mutex);
		if(Capturing && CaptureDevice && Ready)
		{
			int AvailableSamples = 0;
			alcGetIntegerv(CaptureDevice, ALC_CAPTURE_SAMPLES, 1, &AvailableSamples);
			const unsigned int availbuffersize = AvailableSamples * SampleSize;

			//If the samples in the OpenAL buffer are more than half of its max size, grab them
			if(availbuffersize > InternalBufferSize / 2 || force)
			{
				//Fixes a bug with the capture being forced, but no data being available
				if(availbuffersize > 0)
				{
					const unsigned int oldBufferSize = CaptureBuffer.size();
					CaptureBuffer.resize(oldBufferSize + availbuffersize, 0);
					alcCaptureSamples(CaptureDevice, &CaptureBuffer[oldBufferSize], AvailableSamples);
					checkError();
					getLogger()->logDebug("AudioCapture", "Captured %i bytes of audio data.", availbuffersize);
					signalEvent(ON_UPDATE);
				}
			}
		}
	}
コード例 #3
0
ファイル: cAudioCapture.cpp プロジェクト: ComradeKeys/cAudio
	void cAudioCapture::stopCapture()
	{
		cAudioMutexBasicLock lock(Mutex);
		if(CaptureDevice && Ready)
		{
			alcCaptureStop(CaptureDevice);
			updateCaptureBuffer(true);
			checkError();
			getLogger()->logDebug("AudioCapture", "OpenAL Capture Stopped.");
			signalEvent(ON_ENDCAPTURE);
		}
		Capturing = false;
	}
コード例 #4
0
ファイル: cAudioCapture.cpp プロジェクト: ComradeKeys/cAudio
	void cAudioCapture::shutdown()
	{
		cAudioMutexBasicLock lock(Mutex);

		if (AudioThread)
		{
			AudioThread->join();
			delete AudioThread;
			AudioThread = NULL;
		}

		shutdownOpenALDevice();
		signalEvent(ON_RELEASE);
	}
コード例 #5
0
ファイル: cAudioCapture.cpp プロジェクト: ComradeKeys/cAudio
	unsigned int cAudioCapture::getCapturedAudio(void* outputBuffer, unsigned int outputBufferSize)
	{
		cAudioMutexBasicLock lock(Mutex);
		unsigned int internalBufferSize = CaptureBuffer.size();
		if(outputBuffer && outputBufferSize > 0 && internalBufferSize > 0)
		{
			int sizeToCopy = (outputBufferSize >= internalBufferSize) ? internalBufferSize : outputBufferSize;
			memcpy(outputBuffer, &CaptureBuffer[0], sizeToCopy);
			CaptureBuffer.erase(CaptureBuffer.begin(), CaptureBuffer.begin()+sizeToCopy);

			getLogger()->logDebug("AudioCapture", "Copied out %i bytes of data out of %i bytes in the buffer at user request.", sizeToCopy, internalBufferSize);
			signalEvent(ON_USERREQUESTEDBUFFER);
			return sizeToCopy;
		}
		return 0;
	}
コード例 #6
0
ファイル: cAudioCapture.cpp プロジェクト: ComradeKeys/cAudio
	void cAudioCapture::shutdownOpenALDevice()
	{
		cAudioMutexBasicLock lock(Mutex);
		if(Capturing)
			stopCapture();

		if(CaptureDevice)
		{
			alcCaptureCloseDevice(CaptureDevice);
			CaptureDevice = NULL;
			Ready = false;
			getLogger()->logDebug("AudioCapture", "OpenAL Capture Device Closed.");
			signalEvent(ON_RELEASE);
		}
		checkError();
		CaptureBuffer.clear();
	}
コード例 #7
0
 void ReplicationExecutor::run() {
     _networkInterface->startup();
     _dblockWorkers.startThreads();
     std::pair<WorkItem, CallbackHandle> work;
     while ((work = getWork()).first.callback) {
         {
             boost::lock_guard<boost::mutex> lk(_terribleExLockSyncMutex);
             const Status inStatus = work.first.isCanceled ?
                 Status(ErrorCodes::CallbackCanceled, "Callback canceled") :
                 Status::OK();
             makeNoExcept(stdx::bind(work.first.callback,
                                     CallbackData(this, work.second, inStatus)))();
         }
         signalEvent(work.first.finishedEvent);
     }
     finishShutdown();
     _networkInterface->shutdown();
 }
コード例 #8
0
ファイル: cAudioCapture.cpp プロジェクト: ComradeKeys/cAudio
	bool cAudioCapture::beginCapture()
	{
		cAudioMutexBasicLock lock(Mutex);
		if(!Capturing)
		{
			CaptureBuffer.clear();
			if(CaptureDevice && Ready)
			{
				alcCaptureStart(CaptureDevice);
				Capturing = true;
				getLogger()->logDebug("AudioCapture", "OpenAL Capture Started.");
				signalEvent(ON_BEGINCAPTURE);
			}
			checkError();
			return Capturing;
		}
		checkError();
		return false;
	}
コード例 #9
0
void QWidgetExtended::mouseMoveEvent(QMouseEvent *event) {
    signalEvent(event, MOVED);
}
コード例 #10
0
void QWidgetExtended::mouseReleaseEvent(QMouseEvent *event) {
    signalEvent(event, RELEASED);
}
コード例 #11
0
void QWidgetExtended::mousePressEvent(QMouseEvent *event) {
    signalEvent(event, PRESSED);
}
コード例 #12
0
//*************************************************************************************************
//Main part of the macro
//*************************************************************************************************
void HWWDistributions(const string signalInputFilename, const string bkgInputFilename,                       
                      int OnlyThisFinalState = -1,
                      const string SignalName = "", const string cutValuesFile = "") {
  TTree* signalTree = getTreeFromFile(signalInputFilename.c_str(),"all");
  TTree* bkgTree = getTreeFromFile(bkgInputFilename.c_str(),"all");
  assert(signalTree);
  assert(bkgTree);

  CheckInitialCutValueConsistency();
  
  //Load cut values from a root file;
  if (cutValuesFile != "" && SignalName != "")
    LoadCutValues(cutValuesFile, SignalName);

  //Summarize Cuts
  cout << "*********************************************************************\n";
  cout << "**  Load Cut Values from file " << cutValuesFile << endl;
  cout << "*********************************************************************\n";
  cout << "Final Cuts" << endl;
  cout << "*************************************************************************" << endl;

  for (int f=0; f<=2;f++) {  
    cout << "Final State : " << finalstatestring[f] << endl;
    for (int v = 0; v < NVARIABLES;v++) {
      cout << fVariableNames[v] << " : ";
      if (fCutBelow[v])
        cout << fCutBelowInitialValue[f][v];
      else 
        cout << "-Infinity ";
      cout << " -> ";
      if (fCutAbove[v])
        cout << fCutAboveInitialValue[f][v];      
      else 
        cout << " Infinity ";
      cout << endl;
    }
    cout << "----------------------------------------------------------------------" << endl;
  }


  MitNtupleEvent signalEvent(signalTree);
  MitNtupleEvent bkgEvent(bkgTree);

  cout << "*************************************************************************" << endl;
  cout << "Make Distribution Plots" << endl;
  cout << "*************************************************************************" << endl;
  if (OnlyThisFinalState == -1) {
    for (int f=10; f<=12;f++) {
      MakeStackedDistributionPlots(&signalEvent , &bkgEvent , signalTree->GetEntries(), 
                                   bkgTree->GetEntries(), f);
    }
  } else {
    MakeStackedDistributionPlots(&signalEvent , &bkgEvent , signalTree->GetEntries(), 
                                 bkgTree->GetEntries(), OnlyThisFinalState);
  }
  

  cout << "*************************************************************************" << endl;
  cout << "Print Final Results" << endl;
  cout << "*************************************************************************" << endl;
  if (OnlyThisFinalState == -1) {
    for (int f=10; f<=12;f++) {
      PrintFinalResults(&signalEvent , &bkgEvent , signalTree->GetEntries(), 
                        bkgTree->GetEntries(), f);
    }
  } else {
    PrintFinalResults(&signalEvent , &bkgEvent , signalTree->GetEntries(), 
                      bkgTree->GetEntries(), OnlyThisFinalState);
  }
  
}