当前位置: 首页>>代码示例>>C++>>正文


C++ AudioParam类代码示例

本文整理汇总了C++中AudioParam的典型用法代码示例。如果您正苦于以下问题:C++ AudioParam类的具体用法?C++ AudioParam怎么用?C++ AudioParam使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。


在下文中一共展示了AudioParam类的12个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: DisconnectFromOutputIfConnected

void
AudioNode::Disconnect(uint32_t aOutput, ErrorResult& aRv)
{
  if (aOutput >= NumberOfOutputs()) {
    aRv.Throw(NS_ERROR_DOM_INDEX_SIZE_ERR);
    return;
  }

  for (int32_t outputIndex = mOutputNodes.Length() - 1; outputIndex >= 0; --outputIndex) {
    AudioNode* dest = mOutputNodes[outputIndex];
    for (int32_t inputIndex = dest->mInputNodes.Length() - 1; inputIndex >= 0; --inputIndex) {
      InputNode& input = dest->mInputNodes[inputIndex];
      if (input.mOutputPort == aOutput) {
        DisconnectFromOutputIfConnected(*dest, outputIndex, inputIndex);
      }
    }
  }

  for (int32_t outputIndex = mOutputParams.Length() - 1; outputIndex >= 0; --outputIndex) {
    AudioParam* dest = mOutputParams[outputIndex];
    for (int32_t inputIndex = dest->InputNodes().Length() - 1; inputIndex >= 0; --inputIndex) {
      const InputNode& input = dest->InputNodes()[inputIndex];
      if (input.mOutputPort == aOutput) {
        DisconnectFromParamIfConnected(*dest, outputIndex, inputIndex);
      }
    }
  }

  // This disconnection may have disconnected a panner and a source.
  Context()->UpdatePannerSource();
}
开发者ID:brendandahl,项目名称:positron,代码行数:31,代码来源:AudioNode.cpp

示例2: valueAttrSetter

static void valueAttrSetter(v8::Local<v8::String> name, v8::Local<v8::Value> value, const v8::AccessorInfo& info)
{
    INC_STATS("DOM.AudioParam.value._set");
    AudioParam* imp = V8AudioParam::toNative(info.Holder());
    float v = static_cast<float>(value->NumberValue());
    imp->setValue(v);
    return;
}
开发者ID:,项目名称:,代码行数:8,代码来源:

示例3: cancelScheduledValuesCallback

static v8::Handle<v8::Value> cancelScheduledValuesCallback(const v8::Arguments& args)
{
    INC_STATS("DOM.AudioParam.cancelScheduledValues");
    if (args.Length() < 1)
        return throwError("Not enough arguments", V8Proxy::TypeError);
    AudioParam* imp = V8AudioParam::toNative(args.Holder());
    EXCEPTION_BLOCK(float, startTime, static_cast<float>(MAYBE_MISSING_PARAMETER(args, 0, MissingIsUndefined)->NumberValue()));
    imp->cancelScheduledValues(startTime);
    return v8::Handle<v8::Value>();
}
开发者ID:,项目名称:,代码行数:10,代码来源:

示例4: ASSERT

void AudioNodeOutput::disconnectAllParams()
{
    ASSERT(context()->isGraphOwner());

    // AudioParam::disconnect() changes m_params by calling removeParam().
    while (m_params.size()) {
        AudioParam* param = *m_params.begin();
        param->disconnect(this);
    }
}
开发者ID:tmpvar,项目名称:LabSound,代码行数:10,代码来源:AudioNodeOutput.cpp

示例5: exponentialRampToValueAtTimeCallback

static v8::Handle<v8::Value> exponentialRampToValueAtTimeCallback(const v8::Arguments& args)
{
    INC_STATS("DOM.AudioParam.exponentialRampToValueAtTime");
    if (args.Length() < 2)
        return throwError("Not enough arguments", V8Proxy::TypeError);
    AudioParam* imp = V8AudioParam::toNative(args.Holder());
    EXCEPTION_BLOCK(float, value, static_cast<float>(MAYBE_MISSING_PARAMETER(args, 0, MissingIsUndefined)->NumberValue()));
    EXCEPTION_BLOCK(float, time, static_cast<float>(MAYBE_MISSING_PARAMETER(args, 1, MissingIsUndefined)->NumberValue()));
    imp->exponentialRampToValueAtTime(value, time);
    return v8::Handle<v8::Value>();
}
开发者ID:,项目名称:,代码行数:11,代码来源:

示例6: setValueCurveAtTimeCallback

static v8::Handle<v8::Value> setValueCurveAtTimeCallback(const v8::Arguments& args)
{
    INC_STATS("DOM.AudioParam.setValueCurveAtTime");
    if (args.Length() < 3)
        return throwError("Not enough arguments", V8Proxy::TypeError);
    AudioParam* imp = V8AudioParam::toNative(args.Holder());
    EXCEPTION_BLOCK(Float32Array*, values, V8Float32Array::HasInstance(MAYBE_MISSING_PARAMETER(args, 0, MissingIsUndefined)) ? V8Float32Array::toNative(v8::Handle<v8::Object>::Cast(MAYBE_MISSING_PARAMETER(args, 0, MissingIsUndefined))) : 0);
    EXCEPTION_BLOCK(float, time, static_cast<float>(MAYBE_MISSING_PARAMETER(args, 1, MissingIsUndefined)->NumberValue()));
    EXCEPTION_BLOCK(float, duration, static_cast<float>(MAYBE_MISSING_PARAMETER(args, 2, MissingIsUndefined)->NumberValue()));
    imp->setValueCurveAtTime(values, time, duration);
    return v8::Handle<v8::Value>();
}
开发者ID:,项目名称:,代码行数:12,代码来源:

示例7:

bool
AudioNode::DisconnectFromParamIfConnected(AudioParam& aDestination, uint32_t aOutputIndex, uint32_t aInputIndex)
{
  MOZ_ASSERT(aOutputIndex < mOutputParams.Length());
  MOZ_ASSERT(aInputIndex < aDestination.InputNodes().Length());

  const InputNode& input = aDestination.InputNodes()[aInputIndex];
  if (input.mInputNode != this) {
    return false;
  }
  aDestination.RemoveInputNode(aInputIndex);
  // Remove one instance of 'dest' from mOutputParams. There could be
  // others, and it's not correct to remove them all since some of them
  // could be for different output ports.
  mOutputParams.RemoveElementAt(aOutputIndex);
  return true;
}
开发者ID:brendandahl,项目名称:positron,代码行数:17,代码来源:AudioNode.cpp

示例8: MOZ_ASSERT

void
AudioNode::Connect(AudioParam& aDestination, uint32_t aOutput,
                   ErrorResult& aRv)
{
  if (aOutput >= NumberOfOutputs()) {
    aRv.Throw(NS_ERROR_DOM_INDEX_SIZE_ERR);
    return;
  }

  if (Context() != aDestination.GetParentObject()) {
    aRv.Throw(NS_ERROR_DOM_INVALID_ACCESS_ERR);
    return;
  }

  if (FindIndexOfNodeWithPorts(aDestination.InputNodes(),
                               this, INVALID_PORT, aOutput) !=
      nsTArray<AudioNode::InputNode>::NoIndex) {
    // connection already exists.
    return;
  }

  mOutputParams.AppendElement(&aDestination);
  InputNode* input = aDestination.AppendInputNode();
  input->mInputNode = this;
  input->mInputPort = INVALID_PORT;
  input->mOutputPort = aOutput;

  MediaStream* stream = aDestination.Stream();
  MOZ_ASSERT(stream->AsProcessedStream());
  ProcessedMediaStream* ps = static_cast<ProcessedMediaStream*>(stream);
  if (mStream) {
    // Setup our stream as an input to the AudioParam's stream
    MOZ_ASSERT(aOutput <= UINT16_MAX, "Unexpected large output port number");
    input->mStreamPort =
      ps->AllocateInputPort(mStream, AudioNodeStream::AUDIO_TRACK, TRACK_ANY,
                            0, static_cast<uint16_t>(aOutput));
  }
}
开发者ID:luke-chang,项目名称:gecko-1,代码行数:38,代码来源:AudioNode.cpp

示例9: DisconnectFromParamIfConnected

void
AudioNode::Disconnect(AudioParam& aDestination, uint32_t aOutput, ErrorResult& aRv)
{
  if (aOutput >= NumberOfOutputs()) {
    aRv.Throw(NS_ERROR_DOM_INDEX_SIZE_ERR);
    return;
  }

  bool wasConnected = false;

  for (int32_t outputIndex = mOutputParams.Length() - 1; outputIndex >= 0; --outputIndex) {
    for (int32_t inputIndex = aDestination.InputNodes().Length() - 1; inputIndex >= 0; --inputIndex) {
      const InputNode& input = aDestination.InputNodes()[inputIndex];
      if (input.mOutputPort == aOutput) {
        wasConnected |= DisconnectFromParamIfConnected(aDestination, outputIndex, inputIndex);
      }
    }
  }

  if (!wasConnected) {
    aRv.Throw(NS_ERROR_DOM_INVALID_ACCESS_ERR);
    return;
  }
}
开发者ID:brendandahl,项目名称:positron,代码行数:24,代码来源:AudioNode.cpp

示例10: RunnableRelease

void
AudioNode::Disconnect(uint32_t aOutput, ErrorResult& aRv)
{
  if (aOutput >= NumberOfOutputs()) {
    aRv.Throw(NS_ERROR_DOM_INDEX_SIZE_ERR);
    return;
  }

  // An upstream node may be starting to play on the graph thread, and the
  // engine for a downstream node may be sending a PlayingRefChangeHandler
  // ADDREF message to this (main) thread.  Wait for a round trip before
  // releasing nodes, to give engines receiving sound now time to keep their
  // nodes alive.
  class RunnableRelease final : public nsRunnable
  {
  public:
    explicit RunnableRelease(already_AddRefed<AudioNode> aNode)
      : mNode(aNode) {}

    NS_IMETHODIMP Run() override
    {
      mNode = nullptr;
      return NS_OK;
    }
  private:
    nsRefPtr<AudioNode> mNode;
  };

  for (int32_t i = mOutputNodes.Length() - 1; i >= 0; --i) {
    AudioNode* dest = mOutputNodes[i];
    for (int32_t j = dest->mInputNodes.Length() - 1; j >= 0; --j) {
      InputNode& input = dest->mInputNodes[j];
      if (input.mInputNode == this && input.mOutputPort == aOutput) {
        // Destroying the InputNode here sends a message to the graph thread
        // to disconnect the streams, which should be sent before the
        // RunAfterPendingUpdates() call below.
        dest->mInputNodes.RemoveElementAt(j);
        // Remove one instance of 'dest' from mOutputNodes. There could be
        // others, and it's not correct to remove them all since some of them
        // could be for different output ports.
        nsRefPtr<AudioNode> output = mOutputNodes[i].forget();
        mOutputNodes.RemoveElementAt(i);
        output->NotifyInputsChanged();
        if (mStream) {
          nsRefPtr<nsIRunnable> runnable = new RunnableRelease(output.forget());
          mStream->RunAfterPendingUpdates(runnable.forget());
        }
        break;
      }
    }
  }

  for (int32_t i = mOutputParams.Length() - 1; i >= 0; --i) {
    AudioParam* dest = mOutputParams[i];
    for (int32_t j = dest->InputNodes().Length() - 1; j >= 0; --j) {
      const InputNode& input = dest->InputNodes()[j];
      if (input.mInputNode == this && input.mOutputPort == aOutput) {
        dest->RemoveInputNode(j);
        // Remove one instance of 'dest' from mOutputParams. There could be
        // others, and it's not correct to remove them all since some of them
        // could be for different output ports.
        mOutputParams.RemoveElementAt(i);
        break;
      }
    }
  }

  // This disconnection may have disconnected a panner and a source.
  Context()->UpdatePannerSource();
}
开发者ID:eeejay,项目名称:gecko-dev,代码行数:70,代码来源:AudioNode.cpp

示例11: unitsAttrGetter

static v8::Handle<v8::Value> unitsAttrGetter(v8::Local<v8::String> name, const v8::AccessorInfo& info)
{
    INC_STATS("DOM.AudioParam.units._get");
    AudioParam* imp = V8AudioParam::toNative(info.Holder());
    return v8::Integer::New(imp->units());
}
开发者ID:,项目名称:,代码行数:6,代码来源:

示例12: nameAttrGetter

static v8::Handle<v8::Value> nameAttrGetter(v8::Local<v8::String> name, const v8::AccessorInfo& info)
{
    INC_STATS("DOM.AudioParam.name._get");
    AudioParam* imp = V8AudioParam::toNative(info.Holder());
    return v8String(imp->name());
}
开发者ID:,项目名称:,代码行数:6,代码来源:


注:本文中的AudioParam类示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。