already_AddRefed<GainNode> AudioContext::CreateGain(ErrorResult& aRv) { if (CheckClosed(aRv)) { return nullptr; } nsRefPtr<GainNode> gainNode = new GainNode(this); return gainNode.forget(); }
already_AddRefed<ConvolverNode> AudioContext::CreateConvolver(ErrorResult& aRv) { if (CheckClosed(aRv)) { return nullptr; } nsRefPtr<ConvolverNode> convolverNode = new ConvolverNode(this); return convolverNode.forget(); }
already_AddRefed<StereoPannerNode> AudioContext::CreateStereoPanner(ErrorResult& aRv) { if (CheckClosed(aRv)) { return nullptr; } nsRefPtr<StereoPannerNode> stereoPannerNode = new StereoPannerNode(this); return stereoPannerNode.forget(); }
already_AddRefed<AnalyserNode> AudioContext::CreateAnalyser(ErrorResult& aRv) { if (CheckClosed(aRv)) { return nullptr; } nsRefPtr<AnalyserNode> analyserNode = new AnalyserNode(this); return analyserNode.forget(); }
already_AddRefed<WaveShaperNode> AudioContext::CreateWaveShaper(ErrorResult& aRv) { if (CheckClosed(aRv)) { return nullptr; } nsRefPtr<WaveShaperNode> waveShaperNode = new WaveShaperNode(this); return waveShaperNode.forget(); }
already_AddRefed<DynamicsCompressorNode> AudioContext::CreateDynamicsCompressor(ErrorResult& aRv) { if (CheckClosed(aRv)) { return nullptr; } RefPtr<DynamicsCompressorNode> compressorNode = new DynamicsCompressorNode(this); return compressorNode.forget(); }
already_AddRefed<PannerNode> AudioContext::CreatePanner(ErrorResult& aRv) { if (CheckClosed(aRv)) { return nullptr; } RefPtr<PannerNode> pannerNode = new PannerNode(this); mPannerNodes.PutEntry(pannerNode); return pannerNode.forget(); }
already_AddRefed<AudioBufferSourceNode> AudioContext::CreateBufferSource(ErrorResult& aRv) { if (CheckClosed(aRv)) { return nullptr; } RefPtr<AudioBufferSourceNode> bufferNode = new AudioBufferSourceNode(this); return bufferNode.forget(); }
already_AddRefed<OscillatorNode> AudioContext::CreateOscillator(ErrorResult& aRv) { if (CheckClosed(aRv)) { return nullptr; } RefPtr<OscillatorNode> oscillatorNode = new OscillatorNode(this); return oscillatorNode.forget(); }
already_AddRefed<BiquadFilterNode> AudioContext::CreateBiquadFilter(ErrorResult& aRv) { if (CheckClosed(aRv)) { return nullptr; } RefPtr<BiquadFilterNode> filterNode = new BiquadFilterNode(this); return filterNode.forget(); }
already_AddRefed<DelayNode> AudioContext::CreateDelay(double aMaxDelayTime, ErrorResult& aRv) { if (CheckClosed(aRv)) { return nullptr; } if (aMaxDelayTime > 0. && aMaxDelayTime < 180.) { RefPtr<DelayNode> delayNode = new DelayNode(this, aMaxDelayTime); return delayNode.forget(); } aRv.Throw(NS_ERROR_DOM_NOT_SUPPORTED_ERR); return nullptr; }
already_AddRefed<MediaStreamAudioSourceNode> AudioContext::CreateMediaStreamSource(DOMMediaStream& aMediaStream, ErrorResult& aRv) { if (mIsOffline) { aRv.Throw(NS_ERROR_DOM_NOT_SUPPORTED_ERR); return nullptr; } if (CheckClosed(aRv)) { return nullptr; } return MediaStreamAudioSourceNode::Create(this, &aMediaStream, aRv); }
already_AddRefed<MediaStreamAudioDestinationNode> AudioContext::CreateMediaStreamDestination(ErrorResult& aRv) { if (mIsOffline) { aRv.Throw(NS_ERROR_DOM_NOT_SUPPORTED_ERR); return nullptr; } if (CheckClosed(aRv)) { return nullptr; } RefPtr<MediaStreamAudioDestinationNode> node = new MediaStreamAudioDestinationNode(this); return node.forget(); }
already_AddRefed<ChannelMergerNode> AudioContext::CreateChannelMerger(uint32_t aNumberOfInputs, ErrorResult& aRv) { if (aNumberOfInputs == 0 || aNumberOfInputs > WebAudioUtils::MaxChannelCount) { aRv.Throw(NS_ERROR_DOM_INDEX_SIZE_ERR); return nullptr; } if (CheckClosed(aRv)) { return nullptr; } RefPtr<ChannelMergerNode> mergerNode = new ChannelMergerNode(this, aNumberOfInputs); return mergerNode.forget(); }
already_AddRefed<ScriptProcessorNode> AudioContext::CreateScriptProcessor(uint32_t aBufferSize, uint32_t aNumberOfInputChannels, uint32_t aNumberOfOutputChannels, ErrorResult& aRv) { if ((aNumberOfInputChannels == 0 && aNumberOfOutputChannels == 0) || aNumberOfInputChannels > WebAudioUtils::MaxChannelCount || aNumberOfOutputChannels > WebAudioUtils::MaxChannelCount || !IsValidBufferSize(aBufferSize)) { aRv.Throw(NS_ERROR_DOM_INDEX_SIZE_ERR); return nullptr; } if (CheckClosed(aRv)) { return nullptr; } RefPtr<ScriptProcessorNode> scriptProcessor = new ScriptProcessorNode(this, aBufferSize, aNumberOfInputChannels, aNumberOfOutputChannels); return scriptProcessor.forget(); }
bool EQStream::HasOutgoingData() { bool flag; //once closed, we have nothing more to say if(CheckClosed()) return(false); MOutboundQueue.lock(); flag=(!NonSequencedQueue.empty()); if (!flag) { //not only wait until we send it all, but wait until they ack everything. flag = !SequencedQueue.empty(); } MOutboundQueue.unlock(); if (!flag) { MAcks.lock(); flag= (NextAckToSend>LastAckSent); MAcks.unlock(); } return flag; }
void CPathFind::FindChildPathSub(_PathNode *node, int x, int y, int dx, int dy, int arg) { int g, c=0; _PathNode *old_node,*t_node; g = node->g + arg; if((old_node = CheckOpen(x, y)) != NULL) { for(c = 0; c < 8; c++) { if(node->Child[c] == NULL) { break; } } node->Child[c] = old_node; if(g < old_node->g) { old_node->Parent = node; old_node->g = g; old_node->f = g + old_node->h; } } else if((old_node = CheckClosed(x, y)) != NULL) { for(c = 0; c < 8; c++) { if(node->Child[c] == NULL) { break; } } node->Child[c] = old_node; if(g < old_node->g) { old_node->Parent = node; old_node->g = g; old_node->f = g + old_node->h; PropagateDown(old_node); } } else { t_node = (_PathNode *)calloc(1, sizeof(_PathNode)); t_node->Parent = node; t_node->g = g; // t_node->h = (int)sqrt((x-dx)*(x-dx) + (y-dy)*(y-dy)); t_node->h = (int)max( x-dx, y-dy ); t_node->f = g + t_node->h; t_node->x = x; t_node->y = y; Insert(t_node); for(c = 0; c < 8; c++) { if(node->Child[c] == NULL) { break; } } node->Child[c] = t_node; } }