+++ /dev/null
-/*\r
-* Copyright (c) 2007-2010 SlimDX Group\r
-* \r
-* Permission is hereby granted, free of charge, to any person obtaining a copy\r
-* of this software and associated documentation files (the "Software"), to deal\r
-* in the Software without restriction, including without limitation the rights\r
-* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r
-* copies of the Software, and to permit persons to whom the Software is\r
-* furnished to do so, subject to the following conditions:\r
-* \r
-* The above copyright notice and this permission notice shall be included in\r
-* all copies or substantial portions of the Software.\r
-* \r
-* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r
-* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r
-* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\r
-* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\r
-* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r
-* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r
-* THE SOFTWARE.\r
-*/\r
-#pragma once\r
-\r
-#include "Voice.h"\r
-#include "VoiceCallback.h"\r
-#include "ContextEventArgs.h"\r
-#include "ErrorEventArgs.h"\r
-#include "StartProcessingEventArgs.h"\r
-#include "AudioBuffer.h"\r
-#include "VoiceState.h"\r
-\r
-namespace SlimDX\r
-{\r
- namespace Multimedia\r
- {\r
- ref class WaveFormat;\r
- }\r
-\r
- namespace XAudio2\r
- {\r
- ref class XAudio2;\r
-\r
- public ref class SourceVoice : Voice\r
- {\r
- private:\r
- VoiceCallbackShim *callback;\r
-\r
- property IXAudio2SourceVoice *SourcePointer\r
- {\r
- IXAudio2SourceVoice *get() { return reinterpret_cast<IXAudio2SourceVoice*>( InternalPointer ); }\r
- }\r
-\r
- internal:\r
- void InvokeBufferEnd( ContextEventArgs^ e ) { OnBufferEnd( e ); }\r
- void InvokeBufferStart( ContextEventArgs^ e ) { OnBufferStart( e ); }\r
- void InvokeLoopEnd( ContextEventArgs^ e ) { OnLoopEnd( e ); }\r
- void InvokeStreamEnd() { OnStreamEnd( System::EventArgs::Empty ); }\r
- void InvokeVoiceError( ErrorEventArgs^ e ) { OnVoiceError( e ); }\r
- void InvokeVoiceProcessingPassEnd() { OnVoiceProcessingPassEnd( System::EventArgs::Empty ); }\r
- void InvokeVoiceProcessingPassStart( int bytesRequired ) { OnVoiceProcessingPassStart( bytesRequired ); }\r
-\r
- protected:\r
- void OnBufferEnd( ContextEventArgs^ e );\r
- void OnBufferStart( ContextEventArgs^ e );\r
- void OnLoopEnd( ContextEventArgs^ e );\r
- void OnStreamEnd( System::EventArgs^ e );\r
- void OnVoiceError( ErrorEventArgs^ e );\r
- void OnVoiceProcessingPassStart( int bytesRequired );\r
- void OnVoiceProcessingPassEnd( System::EventArgs^ e );\r
-\r
- public:\r
- SourceVoice( XAudio2^ device, SlimDX::Multimedia::WaveFormat^ sourceFormat, VoiceFlags flags, float maximumFrequencyRatio );\r
- SourceVoice( XAudio2^ device, SlimDX::Multimedia::WaveFormat^ sourceFormat, VoiceFlags flags );\r
- SourceVoice( XAudio2^ device, SlimDX::Multimedia::WaveFormat^ sourceFormat );\r
- virtual ~SourceVoice();\r
-\r
- Result Discontinuity();\r
- Result FlushSourceBuffers();\r
-\r
- Result ExitLoop();\r
- Result ExitLoop( int operationSet );\r
-\r
- Result Start();\r
- Result Start( PlayFlags flags );\r
- Result Start( PlayFlags flag, int operationSet );\r
-\r
- Result Stop();\r
- Result Stop( PlayFlags flags );\r
- Result Stop( PlayFlags flags, int operationSet );\r
-\r
- Result SubmitSourceBuffer( AudioBuffer^ buffer );\r
- Result SubmitSourceBuffer( AudioBuffer^ buffer, array<int>^ decodedPacketCumulativeBytes );\r
- \r
-#if SLIMDX_XAUDIO2_VERSION >= 24\r
- Result SetSourceSampleRate( int sampleRate );\r
-#endif\r
-\r
- property VoiceState State\r
- {\r
- VoiceState get();\r
- }\r
-\r
- property float FrequencyRatio\r
- {\r
- float get();\r
- void set( float value );\r
- }\r
-\r
- event System::EventHandler<ContextEventArgs^>^ BufferEnd;\r
- event System::EventHandler<ContextEventArgs^>^ BufferStart;\r
- event System::EventHandler<ContextEventArgs^>^ LoopEnd;\r
- event System::EventHandler<StartProcessingEventArgs^>^ VoiceProcessingPassStart;\r
-\r
- event System::EventHandler<ErrorEventArgs^>^ VoiceError;\r
-\r
- event System::EventHandler^ StreamEnd;\r
- event System::EventHandler^ VoiceProcessingPassEnd;\r
- };\r
- }\r
-}
\ No newline at end of file