本文整理汇总了C++中AudioInput类的典型用法代码示例。如果您正苦于以下问题:C++ AudioInput类的具体用法?C++ AudioInput怎么用?C++ AudioInput使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了AudioInput类的12个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: qBound
AudioInput *AudioMixer::createInputSerialized(
QDataStream *stream, int before)
{
if(before < 0) {
// Position is relative to the right
before += m_inputs.count() + 1;
}
before = qBound(0, before, m_inputs.count());
AudioInput *input = new AudioInput(this, 0, m_profile->getAudioMode());
appLog(LOG_CAT)
<< "Unserializing audio input " << input->getIdString(false)
<< "...";
if(!input->unserialize(stream)) {
// Failed to unserialize data
appLog(LOG_CAT, Log::Warning)
<< "Failed to fully unserialize audio input data";
delete input;
return NULL;
}
m_inputs.insert(before, input);
appLog(LOG_CAT) << "Created audio input " << input->getIdString();
input->setInitialized();
calcMinInputDelay();
emit inputAdded(input, before);
return input;
}
示例2: qWarning
void EngineMicrophone::onInputDisconnected(AudioInput input) {
if (input.getType() != AudioPath::MICROPHONE ||
AudioInput::channelsNeededForType(input.getType()) != 1) {
// This is an error!
qWarning() << "EngineMicrophone connected to AudioInput for a non-Microphone type or a non-mono buffer!";
return;
}
m_sampleBuffer.clear();
m_pEnabled->set(0.0f);
}
示例3: qWarning
void EngineMicrophone::receiveBuffer(AudioInput input, const CSAMPLE* pBuffer,
unsigned int nFrames) {
if (!isTalkover()) {
return;
}
if (input.getType() != AudioPath::MICROPHONE) {
// This is an error!
qWarning() << "EngineMicrophone receieved an AudioInput for a non-Microphone type!";
return;
}
const unsigned int iChannels = input.getChannelGroup().getChannelCount();
// Check that the number of mono frames doesn't exceed MAX_BUFFER_LEN/2
// because thats our conversion buffer size.
if (nFrames > MAX_BUFFER_LEN / iChannels) {
qWarning() << "Dropping microphone samples because the input buffer is too large.";
nFrames = MAX_BUFFER_LEN / iChannels;
}
const CSAMPLE* pWriteBuffer = NULL;
unsigned int samplesToWrite = 0;
if (iChannels == 1) {
// Do mono -> stereo conversion.
for (unsigned int i = 0; i < nFrames; ++i) {
m_pConversionBuffer[i*2 + 0] = pBuffer[i];
m_pConversionBuffer[i*2 + 1] = pBuffer[i];
}
pWriteBuffer = m_pConversionBuffer;
samplesToWrite = nFrames * 2;
} else if (iChannels == 2) {
// Already in stereo. Use pBuffer as-is.
pWriteBuffer = pBuffer;
samplesToWrite = nFrames * iChannels;
} else {
qWarning() << "EngineMicrophone got greater than stereo input. Not currently handled.";
}
if (pWriteBuffer != NULL) {
// TODO(rryan) do we need to verify the input is the one we asked for?
// Oh well.
unsigned int samplesWritten = m_sampleBuffer.write(pWriteBuffer,
samplesToWrite);
if (samplesWritten < samplesToWrite) {
// Buffer overflow. We aren't processing samples fast enough. This
// shouldn't happen since the mic spits out samples just as fast as they
// come in, right?
qWarning() << "ERROR: Buffer overflow in EngineMicrophone. Dropping samples on the floor.";
}
}
}
示例4: serialize
void AudioMixer::serialize(QDataStream *stream) const
{
// Write data version number
*stream << (quint32)0;
// Save our data
*stream << (qint32)m_masterAttenuation;
*stream << (quint32)m_inputs.count();
for(int i = 0; i < m_inputs.count(); i++) {
AudioInput *input = m_inputs.at(i);
input->serialize(stream);
}
}
示例5: qDebug
void EngineDeck::onInputUnconfigured(AudioInput input) {
if (input.getType() != AudioPath::VINYLCONTROL) {
// This is an error!
qDebug() << "WARNING: EngineDeck connected to AudioInput for a non-vinylcontrol type!";
return;
}
m_sampleBuffer = NULL;
}
示例6: qWarning
void EngineMicrophone::onInputUnconfigured(AudioInput input) {
if (input.getType() != AudioPath::MICROPHONE) {
// This is an error!
qWarning() << "EngineMicrophone connected to AudioInput for a non-Microphone type!";
return;
}
m_sampleBuffer = NULL;
m_pEnabled->set(0.0);
}
示例7: qDebug
void EngineAux::onInputUnconfigured(AudioInput input) {
if (input.getType() != AudioPath::AUXILIARY) {
// This is an error!
qDebug() << "WARNING: EngineAux connected to AudioInput for a non-auxiliary type!";
return;
}
m_sampleBuffer = NULL;
m_pEnabled->set(0.0);
}
示例8: setup
void setup()
{
// start AudioInputphone
mic.startCapturing();
// setup plane and sphere
plane.init( 100000 );
plane.setPosition( width/2, height/2 + 500, 0 );
sphere.init( 100 );
sphere.setPosition( width/2, height/2, 0 );
// setup light
ambientLight( 20, 20, 20 );
light.init( 0, 0, 0, width/2, height/2, 200 );
}
示例9: switch
void EngineMaster::onInputDisconnected(AudioInput input) {
switch (input.getType()) {
case AudioInput::MICROPHONE:
m_pNumMicsConfigured->set(m_pNumMicsConfigured->get() - 1);
break;
case AudioInput::AUXILIARY:
// We don't track enabled auxiliary inputs.
break;
case AudioInput::VINYLCONTROL:
// We don't track enabled vinyl control inputs.
break;
case AudioInput::RECORD_BROADCAST:
m_bExternalRecordBroadcastInputConnected = false;
break;
default:
break;
}
}
示例10: qHash
/**
* Defined for QHash, so AudioInput can be used as a QHash key.
*/
unsigned int qHash(const AudioInput &input) {
return input.getHash();
}
示例11: switch
void UndoList::clearDelete()
{
if (!empty())
{
for (iUndo iu = begin(); iu != end(); ++iu)
{
Undo& u = *iu;
for (riUndoOp i = u.rbegin(); i != u.rend(); ++i)
{
switch (i->type)
{
case UndoOp::DeleteTrack:
if (i->oTrack)
{
delete i->oTrack;
iUndo iu2 = iu;
++iu2;
for (; iu2 != end(); ++iu2)
{
Undo& u2 = *iu2;
for (riUndoOp i2 = u2.rbegin(); i2 != u2.rend(); ++i2)
{
if (i2->type == UndoOp::DeleteTrack)
{
if (i2->oTrack == i->oTrack)
i2->oTrack = 0;
}
}
}
}
break;
case UndoOp::ModifyTrack:
if (i->oTrack)
{
// Prevent delete i->oTrack from crashing.
switch (i->oTrack->type())
{
case Track::AUDIO_OUTPUT:
{
AudioOutput* ao = (AudioOutput*) i->oTrack;
for (int ch = 0; ch < ao->channels(); ++ch)
ao->setJackPort(ch, 0);
}
break;
case Track::AUDIO_INPUT:
{
AudioInput* ai = (AudioInput*) i->oTrack;
for (int ch = 0; ch < ai->channels(); ++ch)
ai->setJackPort(ch, 0);
}
break;
default:
break;
}
if (!i->oTrack->isMidiTrack())
((AudioTrack*) i->oTrack)->clearEfxList();
delete i->oTrack;
iUndo iu2 = iu;
++iu2;
for (; iu2 != end(); ++iu2)
{
Undo& u2 = *iu2;
for (riUndoOp i2 = u2.rbegin(); i2 != u2.rend(); ++i2)
{
if (i2->type == UndoOp::ModifyTrack)
{
if (i2->oTrack == i->oTrack)
i2->oTrack = 0;
}
}
}
}
break;
//case UndoOp::DeletePart:
//delete i->oPart;
// break;
//case UndoOp::DeleteTempo:
// break;
//case UndoOp::DeleteSig:
// break;
case UndoOp::ModifyMarker:
if (i->copyMarker)
delete i->copyMarker;
default:
break;
}
}
u.clear();
}
}
clear();
}
示例12: draw
void draw()
{
// get the mic level and map it to the range 0..255 to use as color
// the sensitivity variable allows you to adjust how sensitive it is (depends on the audio card input level)
float soundLevel = mic.getCurrentLevel();
float sensitivity = 250;
soundLevel = constrain( soundLevel * sensitivity, 0, 1 );
println( "Sound Level: %f", soundLevel );
float soundLevelRamapped = map( soundLevel, 0, 1, 0, 255 );
// calculate mic level average (to smooth out results)
average.addValue( soundLevelRamapped );
float soundLevelAv = average.getValue();
// change color of the light
println( "Sound Level AV: %f", soundLevelAv );
light.setDiffuseColor( soundLevelAv, soundLevelAv, soundLevelAv );
}