Пример #1
0
void kXAudioEngine::free_all()
{
    debug("kXAudioEngine[%p]::free_all() - %s\n",this,is_running?"[still running!]":"");
    if(is_running)
		stopAudioEngine();
    
		// free buffers
    setNumSampleFramesPerBuffer(0);
    
    for(int i=0;i<n_channels;i++)
    {
		if(out_streams[i])
		{
			out_streams[i]->setSampleBuffer (NULL, 0);
			out_streams[i]->release();
			out_streams[i]=NULL;
		}
		if(in_streams[i])
		{
			in_streams[i]->setSampleBuffer (NULL, 0);
			in_streams[i]->release();
			in_streams[i]=NULL;
		}
		
		if(hw)
		{
			freeAudioStream(i,kIOAudioStreamDirectionInput);
			freeAudioStream(i,kIOAudioStreamDirectionOutput);
		}
    }
    
    if(hw)
    {
		if((hw->initialized&KX_ENGINE_INITED) && !(hw->initialized&KX_DEVICE_INITED))
		{
			debug("kXAudioEngine[%p]::free_all() - close iKX interface\n",this);
			kx_close(&hw);
			hw=0;
		}
		else
		{
			debug("kXAudioEngine[%p]::free_all() - dereference iKX interface\n",this);
			hw->initialized&=(~KX_ENGINE_INITED);
			hw=NULL;
		}
    }
    else
		debug("kXAudioEngine[%p]::free_all() - iKX interface already closed\n",this);
}
Пример #2
0
int BIKPlayer::EndAudio()
{
	freeAudioStream(s_stream);
	av_freep((void **) &s_bands);
	if (header.audioflag&BINK_AUD_USEDCT)
		ff_dct_end(&s_trans.dct);
	else
		ff_rdft_end(&s_trans.rdft);
	return 0;
}