コード例 #1
0
ファイル: WaveBank.cs プロジェクト: kiates/FNA
 internal void OnWaveBankDestroyed()
 {
     IsDisposed = true;
     if (bankData != IntPtr.Zero)
     {
         if (bankDataLen != IntPtr.Zero)
         {
             FNAPlatform.FreeFilePointer(bankData);
             bankDataLen = IntPtr.Zero;
         }
         else
         {
             FAudio.FAudio_close(bankData);
         }
         bankData = IntPtr.Zero;
     }
     handle        = IntPtr.Zero;
     selfReference = null;
 }
コード例 #2
0
        public SoundBank(AudioEngine audioEngine, string filename)
        {
            if (audioEngine == null)
            {
                throw new ArgumentNullException("audioEngine");
            }
            if (String.IsNullOrEmpty(filename))
            {
                throw new ArgumentNullException("filename");
            }

            IntPtr bufferLen;
            IntPtr buffer = TitleContainer.ReadToPointer(filename, out bufferLen);

            FAudio.FACTAudioEngine_CreateSoundBank(
                audioEngine.handle,
                buffer,
                (uint)bufferLen,
                0,
                0,
                out handle
                );

            FNAPlatform.FreeFilePointer(buffer);

            engine        = audioEngine;
            selfReference = new WeakReference(this, true);
            dspSettings   = new FAudio.F3DAUDIO_DSP_SETTINGS();
            dspSettings.SrcChannelCount     = 1;
            dspSettings.DstChannelCount     = engine.channels;
            dspSettings.pMatrixCoefficients = Marshal.AllocHGlobal(
                4 *
                (int)dspSettings.SrcChannelCount *
                (int)dspSettings.DstChannelCount
                );
            engine.RegisterPointer(handle, selfReference);
            IsDisposed = false;
        }