diff --git a/.vs/STARK/v14/.suo b/.vs/STARK/v14/.suo
index b0d1024..ef0a4f3 100644
Binary files a/.vs/STARK/v14/.suo and b/.vs/STARK/v14/.suo differ
diff --git a/STARK/MainWindow.xaml.cs b/STARK/MainWindow.xaml.cs
index 272f0e5..c2056bd 100644
--- a/STARK/MainWindow.xaml.cs
+++ b/STARK/MainWindow.xaml.cs
@@ -57,31 +57,36 @@ public MainWindow() {
InitializeComponent();
populateAccentComboBox();
CommandManager.synthCmd.changeCommand(TTS_CommandTextBox.Text);
+ mw = this;
InitializeMixer(ref mspStandard);
InitializeMixer(ref mspLoopback);
- //latency has to be >= 25
- InitializeMicrophone(ref wiMicrophone, 0, 25, 100);
-
- //latency has to be >= 100
- InitializeOutput(ref woStandard, 1, 100, ref mspStandard);
- InitializeOutput(ref woLoopback, 0, 100, ref mspLoopback);
-
//Startup fam
qss = new QueuedSpeechSynthesizer(ref mspStandard, ref mspLoopback, 50, -1);
afm = new AudioFileManager();
ape = new AudioPlaybackEngine(ref audioFormat, ref mspStandard, ref mspLoopback, ref afm, 10);
+
InitializeSynthQueue();
InitializeVoiceComboBox();
populateSetupComboBoxes();
InitializeAudioItemList();
- mw = this;
-
loadSettings();
+ //latency has to be >= 25
+ InitializeMicrophone(ref wiMicrophone, Setup_Microphone.SelectedIndex, 25, 100);
+
+ //latency has to be >= 100
+ InitializeOutput(ref woStandard, Setup_OutputCombined.SelectedIndex, (int)Audio_OutputVolumeSlider.Value, ref mspStandard);
+ InitializeOutput(ref woLoopback, Setup_SynthesizerOnly.SelectedIndex, (int)Audio_LoopbackVolumeSlider.Value, ref mspLoopback);
+
+ changeMicrophone(Setup_Microphone.SelectedIndex);
+ changeCombinedOutput(Setup_OutputCombined.SelectedIndex);
+ changeLoopbackOutput(Setup_SynthesizerOnly.SelectedIndex);
+
+
FindSteamApps();
loaded = true;
@@ -165,15 +170,11 @@ public void loadSettings() {
TTS_RateSliderBox.Text = "" + settings.Synthesizer_Rate;
Audio_MicVolumeTextBox.Text = "" + settings.Microphone_Volume;
- changeMicrophoneVolume(settings.Microphone_Volume);
Audio_MicBufferTextBox.Text = "" + settings.Microphone_Buffer_Time;
- changeMicrophoneBuffer(settings.Microphone_Buffer_Time);
Audio_AFFVolumeTextBox.Text = "" + settings.Media_Volume;
Audio_OutputVolumeTextBox.Text = "" + settings.Standard_Volume;
- changeStandardVolume(settings.Standard_Volume);
Audio_LoopbackVolumeTextBox.Text = "" + settings.Loopback_Volume;
- changeLoopbackVolume(settings.Loopback_Volume);
Setup_Microphone.SelectedIndex = settings.Setup_Microphone_SelectedIndex;
Setup_SynthesizerOnly.SelectedIndex = settings.Setup_Standard_Output_SelectedIndex;
@@ -217,7 +218,7 @@ public AudioFileManager getAFM() {
#region "events"
private void WiMicrophone_DataAvailable(object sender, WaveInEventArgs e) {
//Gives a buffer full exception if not outputting to anything.
- //The reason I don't enable buffer discarding is that the exception never gets thrown and usually something else is wrong.
+ //The reason I don't enable buffer discarding is that the exception never gets thrown and usually something else is wrong. axynos(05.10.2016): nvm lol
if (bwpMicrophone != null) {
bwpMicrophone.AddSamples(e.Buffer, 0, e.BytesRecorded);
}
@@ -241,21 +242,32 @@ private bool changeMicrophone(int deviceID) {
if (wiMicrophone == null) return false;
mspStandard.RemoveMixerInput(vspMicrophone);
wiMicrophone.StopRecording();
+ wiMicrophone.Dispose();
+ wiMicrophone = new WaveIn();
wiMicrophone.DeviceNumber = deviceID;
- wiMicrophone.StartRecording();
- mspStandard.AddMixerInput(vspMicrophone);
+ InitializeMicrophone(ref wiMicrophone, wiMicrophone.DeviceNumber, wiMicrophone.BufferMilliseconds, (int)Audio_MicVolumeSlider.Value);
return true;
}
private bool changeCombinedOutput(int deviceID) {
if (woStandard == null) return false;
+ woStandard.Stop();
+ woStandard.Dispose();
+ woStandard = new WaveOut();
woStandard.DeviceNumber = deviceID;
+ woStandard.Init(mspStandard);
+ woStandard.Play();
return true;
}
private bool changeLoopbackOutput(int deviceID) {
if (woLoopback == null) return false;
+ woLoopback.Stop();
+ woLoopback.Dispose();
+ woLoopback = new WaveOut();
woLoopback.DeviceNumber = deviceID;
+ woLoopback.Init(mspLoopback);
+ woLoopback.Play();
return true;
}
@@ -314,7 +326,10 @@ private void InitializeMixer(ref MixingSampleProvider msp) {
private void InitializeOutput(ref WaveOut wo, int id, int iLat, ref MixingSampleProvider source) {
//Gets rid of previous instance, if there is one
- if (wo != null) wo.Dispose();
+ if (wo != null) {
+ wo.Stop();
+ wo.Dispose();
+ }
wo = new WaveOut();
wo.DeviceNumber = id; //0 is default audio device
diff --git a/STARK/bin/Debug/MahApps.Metro.dll b/STARK/bin/Debug/MahApps.Metro.dll
new file mode 100644
index 0000000..1e55f9e
Binary files /dev/null and b/STARK/bin/Debug/MahApps.Metro.dll differ
diff --git a/STARK/bin/Debug/MahApps.Metro.pdb b/STARK/bin/Debug/MahApps.Metro.pdb
new file mode 100644
index 0000000..54e3025
Binary files /dev/null and b/STARK/bin/Debug/MahApps.Metro.pdb differ
diff --git a/STARK/bin/Debug/MahApps.Metro.xml b/STARK/bin/Debug/MahApps.Metro.xml
new file mode 100644
index 0000000..08918aa
--- /dev/null
+++ b/STARK/bin/Debug/MahApps.Metro.xml
@@ -0,0 +1,7043 @@
+
+
+
+ MahApps.Metro
+
+
+
+
+ Helper class for a common focusing problem.
+ The focus itself isn't the problem. If we use the common focusing methods the control get the focus
+ but it doesn't get the focus visual style.
+ The KeyboardNavigation class handles the visual style only if the control get the focus from a keyboard
+ device or if the SystemParameters.KeyboardCues is true.
+
+
+
+
+ Gets the KeyboardNavigationEx singleton instance.
+
+
+
+
+ Shows the focus visual of the current focused UI element.
+ Works only together with AlwaysShowFocusVisual property.
+
+
+
+
+ Focuses the specified element and shows the focus visual style.
+
+ The element which will be focused.
+
+
+
+ Attached DependencyProperty for setting AlwaysShowFocusVisual for a UI element.
+
+
+
+
+ Gets a the value which indicates if the UI element always show the focus visual style.
+
+
+
+
+ Sets a the value which indicates if the UI element always show the focus visual style.
+
+
+
+
+ An object that represents the foreground color for a Metro .
+
+
+
+
+ The ResourceDictionary that represents this Accent.
+
+
+
+
+ Gets/sets the name of the Accent.
+
+
+
+
+ Initializes a new instance of the MahApps.Metro.Accent class.
+
+
+
+
+ Initializes a new instance of the MahApps.Metro.Accent class.
+
+ The name of the new Accent.
+ The URI of the accent ResourceDictionary.
+
+
+
+ Represents the background theme of the application.
+
+
+
+
+ The ResourceDictionary that represents this application theme.
+
+
+
+
+ Gets the name of the application theme.
+
+
+
+
+ With this class we can make custom window styles.
+
+
+
+ Add and remove a native WindowStyle from the HWND.
+ The styles to be removed. These can be bitwise combined.
+ The styles to be added. These can be bitwise combined.
+ Whether the styles of the HWND were modified as a result of this call.
+
+ Critical : Calls critical methods
+
+
+
+
+ Updates all glow windows (visible, hidden, collapsed)
+
+
+
+
+ Sets the opacity to all glow windows
+
+
+
+
+ Starts the opacity storyboard 0 -> 1
+
+
+
+
+ Shows all glow windows
+
+
+
+
+ Gets or sets the bindable Password property on the PasswordBox control. This is a dependency property.
+
+
+
+
+ Handles changes to the 'Password' attached property.
+
+
+
+
+ Handle the 'PasswordChanged'-event on the PasswordBox
+
+
+
+
+ Called after the behavior is attached to an AssociatedObject.
+
+
+ Override this to hook up functionality to the AssociatedObject.
+
+
+
+
+ Called when the behavior is being detached from its AssociatedObject, but before it has actually occurred.
+
+
+ Override this to unhook functionality from the AssociatedObject.
+
+
+
+
+
+ Sets the first TabItem with Visibility="" as
+ the SelectedItem of the TabControl.
+
+
+ If there is no visible TabItem, null is set as the SelectedItem
+
+
+
+
+
+ Defines the method that determines whether the command can execute in its current state.
+
+
+ true if this command can be executed; otherwise, false.
+
+ Data used by the command. If the command does not require data to be passed, this object can be set to null.
+
+
+
+ Defines the method to be called when the command is invoked.
+
+ Data used by the command. If the command does not require data to be passed, this object can be set to null.
+
+
+
+ The DependencyProperty for the CharacterCasing property.
+ Controls whether or not content is converted to upper or lower case
+ Default Value: CharacterCasing.Normal
+
+
+
+
+ Character casing of the Content
+
+
+
+
+ The DependencyProperty for the RecognizesAccessKey property.
+ Default Value: false
+
+
+
+
+ Determine if the inner ContentPresenter should use AccessText in its style
+
+
+
+
+ Executes the specified action asynchronously with the DispatcherPriority.Background on the thread that the Dispatcher was created on.
+
+ The dispatcher object where the action runs.
+ An action that takes no parameters.
+ The dispatcher priority.
+
+
+
+ Defines the visibility for time-parts that are visible for the .
+
+
+
+
+ Represents a control that allows the user to select a date and a time.
+
+
+
+
+ Occurs when the property is changed.
+
+
+
+
+ Gets or sets the date to display
+
+
+ The date to display. The default is .
+
+
+
+
+ Gets or sets the last date to be displayed.
+
+ The last date to display.
+
+
+
+ Gets or sets the first date to be displayed.
+
+ The first date to display.
+
+
+
+ Gets or sets the day that is considered the beginning of the week.
+
+
+ A that represents the beginning of the week. The default is the
+ that is determined by the current culture.
+
+
+
+
+ Gets or sets a value that indicates whether the current date will be highlighted.
+
+ true if the current date is highlighted; otherwise, false. The default is true.
+
+
+
+ Gets or sets a value that indicates the dimension by which calendar and clock are stacked.
+
+
+ The of the calendar and clock. The default is
+ .
+
+
+
+
+ Gets or sets the currently selected date.
+
+
+ The date currently selected. The default is null.
+
+
+
+
+ The MetroThumbContentControl control can be used for titles or something else and enables basic drag movement functionality.
+
+
+
+
+ Adds or remove a DragStartedEvent handler
+
+
+
+
+ Adds or remove a DragDeltaEvent handler
+
+
+
+
+ Adds or remove a DragCompletedEvent handler
+
+
+
+
+ DependencyProperty for the IsDragging property.
+
+
+
+
+ Indicates that the left mouse button is pressed and is over the MetroThumbContentControl.
+
+
+
+
+ Gets the default instance if the dialog coordinator, which can be injected into a view model.
+
+
+
+
+ Use the dialog coordinator to help you interfact with dialogs from a view model.
+
+
+
+
+ Shows the input dialog.
+
+ Typically this should be the view model, which you register in XAML using .
+ The title of the MessageDialog.
+ The message contained within the MessageDialog.
+ Optional settings that override the global metro dialog settings.
+ The text that was entered or null (Nothing in Visual Basic) if the user cancelled the operation.
+
+
+
+ Shows the input dialog.
+
+ Typically this should be the view model, which you register in XAML using .
+ The title of the MessageDialog.
+ The message contained within the MessageDialog.
+ Optional settings that override the global metro dialog settings.
+ The text that was entered or null (Nothing in Visual Basic) if the user cancelled the operation.
+
+
+
+ Creates a LoginDialog inside of the current window.
+
+ Typically this should be the view model, which you register in XAML using .
+ The title of the LoginDialog.
+ The message contained within the LoginDialog.
+ Optional settings that override the global metro dialog settings.
+ The text that was entered or null (Nothing in Visual Basic) if the user cancelled the operation.
+
+
+
+ Creates a LoginDialog outside of the current window.
+
+ Typically this should be the view model, which you register in XAML using .
+ The title of the LoginDialog.
+ The message contained within the LoginDialog.
+ Optional settings that override the global metro dialog settings.
+ The text that was entered or null (Nothing in Visual Basic) if the user cancelled the operation.
+
+
+
+ Creates a MessageDialog inside of the current window.
+
+ Typically this should be the view model, which you register in XAML using .
+ The title of the MessageDialog.
+ The message contained within the MessageDialog.
+ The type of buttons to use.
+ Optional settings that override the global metro dialog settings.
+ A task promising the result of which button was pressed.
+
+
+
+ Creates a MessageDialog outside of the current window.
+
+ Typically this should be the view model, which you register in XAML using .
+ The title of the MessageDialog.
+ The message contained within the MessageDialog.
+ The type of buttons to use.
+ Optional settings that override the global metro dialog settings.
+ A task promising the result of which button was pressed.
+
+
+
+ Creates a ProgressDialog inside of the current window.
+
+ Typically this should be the view model, which you register in XAML using .
+ The title of the ProgressDialog.
+ The message within the ProgressDialog.
+ Determines if the cancel button is visible.
+ Optional Settings that override the global metro dialog settings.
+ A task promising the instance of ProgressDialogController for this operation.
+
+
+
+ Adds a Metro Dialog instance to the specified window and makes it visible asynchronously.
+ You have to close the resulting dialog yourself with .
+
+ Typically this should be the view model, which you register in XAML using .
+ The dialog instance itself.
+ An optional pre-defined settings instance.
+ A task representing the operation.
+ The is already visible in the window.
+
+
+
+ Hides a visible Metro Dialog instance.
+
+ Typically this should be the view model, which you register in XAML using .
+ The dialog instance to hide.
+ An optional pre-defined settings instance.
+ A task representing the operation.
+
+ The is not visible in the window.
+ This happens if hasn't been called before.
+
+
+
+
+ Gets the current shown dialog.
+
+ Typically this should be the view model, which you register in XAML using .
+
+
+
+ The base class for dialogs.
+
+ You probably don't want to use this class, if you want to add arbitrary content to your dialog,
+ use the class.
+
+
+
+
+ Gets/sets the dialog's title.
+
+
+
+
+ Gets/sets arbitrary content on top of the dialog.
+
+
+
+
+ Gets/sets arbitrary content below the dialog.
+
+
+
+
+ Gets or sets the size of the dialog title font.
+
+
+ The size of the dialog title font.
+
+
+
+
+ Gets or sets the size of the dialog message font.
+
+
+ The size of the dialog message font.
+
+
+
+
+ Initializes a new MahApps.Metro.Controls.BaseMetroDialog.
+
+ The window that is the parent of the dialog.
+ The settings for the message dialog.
+
+
+
+ Initializes a new MahApps.Metro.Controls.BaseMetroDialog.
+
+
+
+
+ This is called in the loaded event.
+
+
+
+
+ Waits for the dialog to become ready for interaction.
+
+ A task that represents the operation and it's status.
+
+
+
+ Requests an externally shown Dialog to close. Will throw an exception if the Dialog is inside of a MetroWindow.
+
+
+
+
+ A last chance virtual method for stopping an external dialog from closing.
+
+
+
+
+
+ Gets the window that owns the current Dialog IF AND ONLY IF the dialog is shown externally.
+
+
+
+
+ Gets the window that owns the current Dialog IF AND ONLY IF the dialog is shown inside of a window.
+
+
+
+
+ Waits until this dialog gets unloaded.
+
+
+
+
+
+ A class that represents the settings used by Metro Dialogs.
+
+
+
+
+ Gets/sets the text used for the Affirmative button. For example: "OK" or "Yes".
+
+
+
+
+ Gets/sets the text used for the Negative button. For example: "Cancel" or "No".
+
+
+
+
+ Gets/sets whether the metro dialog should use the default black/white appearance (theme) or try to use the current accent.
+
+
+
+
+ Enable/disable dialog showing animation.
+ "True" - play showing animation.
+ "False" - skip showing animation.
+
+
+
+
+ Enable/disable dialog hiding animation
+ "True" - play hiding animation.
+ "False" - skip hiding animation.
+
+
+
+
+ Gets/sets the default text( just the inputdialog needed)
+
+
+
+
+ Gets/sets the maximum height. (Default is unlimited height, Double.NaN)
+
+
+
+
+ Gets or sets which button should be focused by default
+
+
+
+
+ Gets/sets the token to cancel the dialog.
+
+
+
+
+ Gets/sets a custom resource dictionary which can contains custom styles, brushes or something else.
+
+
+
+
+ If set, stops standard resource dictionaries being applied to the dialog.
+
+
+
+
+ Gets or sets the size of the dialog title font.
+
+
+ The size of the dialog title font.
+
+
+
+
+ Gets or sets the size of the dialog message font.
+
+
+ The size of the dialog message font.
+
+
+
+
+ An enum representing the different choices for a color scheme in a Metro Dialog.
+
+
+
+
+ An implementation of BaseMetroDialog allowing arbitrary content.
+
+
+
+
+ Creates a LoginDialog inside of the current window.
+
+ The window that is the parent of the dialog.
+ The title of the LoginDialog.
+ The message contained within the LoginDialog.
+ Optional settings that override the global metro dialog settings.
+ The text that was entered or null (Nothing in Visual Basic) if the user cancelled the operation.
+
+
+
+ Creates a InputDialog inside of the current window.
+
+ The MetroWindow
+ The title of the MessageDialog.
+ The message contained within the MessageDialog.
+ Optional settings that override the global metro dialog settings.
+ The text that was entered or null (Nothing in Visual Basic) if the user cancelled the operation.
+
+
+
+ Creates a MessageDialog inside of the current window.
+
+ The MetroWindow
+ The title of the MessageDialog.
+ The message contained within the MessageDialog.
+ The type of buttons to use.
+ Optional settings that override the global metro dialog settings.
+ A task promising the result of which button was pressed.
+
+
+
+ Creates a ProgressDialog inside of the current window.
+
+ The MetroWindow
+ The title of the ProgressDialog.
+ The message within the ProgressDialog.
+ Determines if the cancel button is visible.
+ Optional Settings that override the global metro dialog settings.
+ A task promising the instance of ProgressDialogController for this operation.
+
+
+
+ Adds a Metro Dialog instance to the specified window and makes it visible asynchronously.
+ If you want to wait until the user has closed the dialog, use
+ You have to close the resulting dialog yourself with .
+
+ The owning window of the dialog.
+ The dialog instance itself.
+ An optional pre-defined settings instance.
+ A task representing the operation.
+ The is already visible in the window.
+
+
+
+ Hides a visible Metro Dialog instance.
+
+ The window with the dialog that is visible.
+ The dialog instance to hide.
+ An optional pre-defined settings instance.
+ A task representing the operation.
+
+ The is not visible in the window.
+ This happens if hasn't been called before.
+
+
+
+
+ Gets the current shown dialog in async way.
+
+ The dialog owner.
+
+
+
+ Creates a LoginDialog outside of the current window.
+
+ The window that is the parent of the dialog.
+ The title of the LoginDialog.
+ The message contained within the LoginDialog.
+ Optional settings that override the global metro dialog settings.
+ The text that was entered or null (Nothing in Visual Basic) if the user cancelled the operation.
+
+
+
+ Creates a InputDialog outside of the current window.
+
+ The MetroWindow
+ The title of the MessageDialog.
+ The message contained within the MessageDialog.
+ Optional settings that override the global metro dialog settings.
+ The text that was entered or null (Nothing in Visual Basic) if the user cancelled the operation.
+
+
+
+ Creates a MessageDialog ouside of the current window.
+
+ The MetroWindow
+ The title of the MessageDialog.
+ The message contained within the MessageDialog.
+ The type of buttons to use.
+ Optional settings that override the global metro dialog settings.
+ A task promising the result of which button was pressed.
+
+
+
+ InputDialog
+
+
+
+
+ InitializeComponent
+
+
+
+
+ LoginDialog
+
+
+
+
+ InitializeComponent
+
+
+
+
+ An internal control that represents a message dialog. Please use MetroWindow.ShowMessage instead!
+
+
+ MessageDialog
+
+
+
+
+ InitializeComponent
+
+
+
+
+ An enum representing the result of a Message Dialog.
+
+
+
+
+ An enum representing the different button states for a Message Dialog.
+
+
+
+
+ Just "OK"
+
+
+
+
+ "OK" and "Cancel"
+
+
+
+
+ An internal control that represents a message dialog. Please use MetroWindow.ShowMessage instead!
+
+
+ ProgressDialog
+
+
+
+
+ InitializeComponent
+
+
+
+
+ A class for manipulating an open ProgressDialog.
+
+
+
+
+ This event is raised when the associated was closed programmatically.
+
+
+
+
+ This event is raised when the associated was cancelled by the user.
+
+
+
+
+ Gets if the Cancel button has been pressed.
+
+
+
+
+ Gets if the wrapped ProgressDialog is open.
+
+
+
+
+ Sets the ProgressBar's IsIndeterminate to true. To set it to false, call SetProgress.
+
+
+
+
+ Sets if the Cancel button is visible.
+
+
+
+
+
+ Sets the dialog's progress bar value and sets IsIndeterminate to false.
+
+ The percentage to set as the value.
+
+
+
+ Gets/Sets the minimum restriction of the progress Value property
+
+
+
+
+ Gets/Sets the maximum restriction of the progress Value property
+
+
+
+
+ Sets the dialog's message content.
+
+ The message to be set.
+
+
+
+ Sets the dialog's title.
+
+ The title to be set.
+
+
+
+ Begins an operation to close the ProgressDialog.
+
+ A task representing the operation.
+
+
+
+ Represents an hour comparison operation that ensures that 12 is smaller than 1.
+ This ensures that in the control the first hour that is selectable is 12 (AM/PM).
+
+
+ This ensures that the first hour that is selectable is 12 (AM/PM).
+ This comparer is used only if in the corresponding the value for is false.
+
+
+
+
+ Overrides the text case behavior for certain buttons.
+ When set to true, the text case will be preserved and won't be changed to upper or lower case.
+
+
+
+
+ DependencyProperty for property.
+
+
+
+
+ The CornerRadius property allows users to control the roundness of the button corners independently by
+ setting a radius value for each corner. Radius values that are too large are scaled so that they
+ smoothly blend from corner to corner. (Can be used e.g. at MetroButton style)
+ Description taken from original Microsoft description :-D
+
+
+
+
+ A helper class that provides various attached properties for the ComboBox control.
+
+
+
+
+
+ Gets the Maximum number of characters the TextBox can accept.
+
+
+
+
+ Sets the Maximum number of characters the TextBox can accept.
+
+
+
+
+ Gets the Character casing of the TextBox.
+
+
+
+
+ Sets the Character casing of the TextBox.
+
+
+
+
+ A helper class that provides various controls.
+
+
+
+
+ Gets the value to handle the visibility of the DisabledVisualElement in the template.
+
+
+
+
+ Sets the value to handle the visibility of the DisabledVisualElement in the template.
+
+
+
+
+ The DependencyProperty for the CharacterCasing property.
+ Controls whether or not content is converted to upper or lower case
+
+
+
+
+ Gets the character casing of the control
+
+
+
+
+ Sets the character casing of the control
+
+
+
+
+ This property can be used to set the button width (PART_ClearText) of TextBox, PasswordBox, ComboBox, NumericUpDown
+
+
+
+
+ Sets the brush used to draw the focus border.
+
+
+
+
+ Gets the brush used to draw the focus border.
+
+
+
+
+ Sets the brush used to draw the mouse over brush.
+
+
+
+
+ Gets the brush used to draw the mouse over brush.
+
+
+
+
+ DependencyProperty for property.
+
+
+
+
+ The CornerRadius property allows users to control the roundness of the button corners independently by
+ setting a radius value for each corner. Radius values that are too large are scaled so that they
+ smoothly blend from corner to corner. (Can be used e.g. at MetroButton style)
+ Description taken from original Microsoft description :-D
+
+
+
+
+ This custom popup is used by the validation error template.
+ It provides some additional nice features:
+ - repositioning if host-window size or location changed
+ - repositioning if host-window gets maximized and vice versa
+ - it's only topmost if the host-window is activated
+
+
+
+
+ Gets/sets if the popup can be closed by left mouse button down.
+
+
+
+
+ Called when a cell has just switched to edit mode.
+
+ A reference to element returned by GenerateEditingElement.
+ The event args of the input event that caused the cell to go into edit mode. May be null.
+ The unedited value of the cell.
+
+
+
+ Synchronizes the column property. Taken from Helper code for DataGrid.
+
+
+
+
+ Taken from Helper code for DataGrid.
+
+
+
+
+ The DependencyProperty for the FontFamily property.
+ Default Value: SystemFonts.MessageFontFamily
+
+
+
+
+ The font family of the desired font.
+
+
+
+
+ The DependencyProperty for the FontSize property.
+ Default Value: SystemFonts.MessageFontSize
+
+
+
+
+ The size of the desired font.
+
+
+
+
+ The DependencyProperty for the FontStyle property.
+ Default Value: SystemFonts.MessageFontStyle
+
+
+
+
+ The style of the desired font.
+
+
+
+
+ The DependencyProperty for the FontWeight property.
+ Default Value: SystemFonts.MessageFontWeight
+
+
+
+
+ The weight or thickness of the desired font.
+
+
+
+
+ The DependencyProperty for the Foreground property.
+ Default Value: SystemColors.ControlTextBrush
+
+
+
+
+ An brush that describes the foreground color. This overrides the cell foreground inherited color.
+
+
+
+
+ Method used as property changed callback for properties which need RefreshCellContent to be called
+
+
+
+
+ The DependencyProperty for the ContentTemplate property.
+
+
+
+
+ The DependencyProperty for the ContentTemplateSelector property.
+
+
+
+
+ The DependencyProperty for the ContentStringFormat property.
+
+
+
+
+ Gets or sets the Content of this control..
+
+
+
+
+ ContentTemplate is the template used to display the content of the control.
+
+
+
+
+ ContentTemplateSelector allows to provide custom logic for choosing the template used to display the content of the control.
+
+
+ This property is ignored if is set.
+
+
+
+
+ ContentStringFormat is the format used to display the content of the control as a string
+
+
+ This property is ignored if is set.
+
+
+
+
+ Reflects the parameter to pass to the CommandProperty upon execution.
+
+
+
+
+ Gets or sets the target element on which to fire the command.
+
+
+
+
+ Get or sets the Command property.
+
+
+
+
+ Indicates whether the Menu is visible.
+
+
+
+
+ Gets or sets an extra tag.
+
+
+
+
+ Gets or sets the dimension of children stacking.
+
+
+
+
+ Gets or sets the Content used to generate the icon part.
+
+
+
+
+ Gets or sets the ContentTemplate used to display the content of the icon part.
+
+
+
+
+ Gets/sets the button style.
+
+
+
+
+ Gets/sets the menu style.
+
+
+
+
+ Gets/sets the brush of the button arrow icon.
+
+
+
+
+ Gets/sets the brush of the button arrow icon if the mouse is over the drop down button.
+
+
+
+
+ Gets/sets the brush of the button arrow icon if the arrow button is pressed.
+
+
+
+
+ Gets/sets the visibility of the button arrow icon.
+
+
+
+ Invoked when the property changes.
+ Information about the change.
+
+
+
+ A control that imitate a slideshow with back/forward buttons.
+
+
+
+
+ To counteract the double Loaded event issue.
+
+
+
+
+ Changes the current slide to the previous item.
+
+
+
+
+ Changes the current to the next item.
+
+
+
+
+ Brings the control buttons (next/previous) into view.
+
+
+
+
+ Removes the control buttons (next/previous) from view.
+
+
+
+
+ Gets or sets a value indicating whether the border for mouse over state is enabled or not.
+
+
+
+
+ Gets or sets the mouse hover border brush.
+
+
+
+
+ Gets or sets the mouse hover border thickness.
+
+
+
+
+ Gets/sets the text that is displayed in the FlipView's banner.
+
+
+
+
+ Gets/sets whether the FlipView's banner is visible.
+
+
+
+
+ Gets or sets a value indicating whether the navigation is circular, so you get the first after last and the last before first.
+
+
+
+
+ Gets/sets whether the FlipView's NavigationButton is visible.
+
+
+
+
+ A sliding panel control that is hosted in a MetroWindow via a FlyoutsControl.
+
+
+
+
+
+
+ An event that is raised when IsOpen changes.
+
+
+
+
+ An event that is raised when the closing animation has finished.
+
+
+
+
+ Gets/sets if the title is visible in this flyout.
+
+
+
+
+ Gets/sets if the close button is visible in this flyout.
+
+
+
+
+ Gets/sets if the close button is a cancel button in this flyout.
+
+
+
+
+ Gets/sets a command which will be executed if the close button was clicked.
+ Note that this won't execute when is set to false.
+
+
+
+
+ Gets/sets the command parameter which will be passed by the CloseCommand.
+
+
+
+
+ Gets/sets a command which will be executed if the close button was clicked.
+
+
+
+
+ A DataTemplate for the flyout's header.
+
+
+
+
+ Gets/sets whether this flyout is visible.
+
+
+
+
+ Gets/sets whether this flyout uses the open/close animation when changing the property. (default is true)
+
+
+
+
+ Gets/sets whether this flyout animates the opacity of the flyout when opening/closing.
+
+
+
+
+ Gets/sets whether this flyout stays open when the user clicks outside of it.
+
+
+
+
+ Gets/sets the mouse button that closes the flyout on an external mouse click.
+
+
+
+
+ Gets/sets whether this flyout is modal.
+
+
+
+
+ Gets/sets this flyout's position in the FlyoutsControl/MetroWindow.
+
+
+
+
+ Gets/sets the flyout's header.
+
+
+
+
+ Gets or sets the theme of this flyout.
+
+
+
+
+ Gets or sets the focused element.
+
+
+
+
+ Gets or sets a value indicating whether the flyout should auto close after AutoCloseInterval has passed.
+
+
+
+
+ Gets or sets the time in milliseconds when the flyout should auto close.
+
+
+
+
+ Gets or sets a value indicating whether the flyout should try focus an element.
+
+
+
+
+ A FlyoutsControl is for displaying flyouts in a MetroWindow.
+
+
+
+
+
+ Gets/sets whether is ignored and all flyouts behave as if it was set to the value of this property.
+
+
+
+
+ Gets/sets whether is ignored and all flyouts behave as if it was set false.
+
+
+
+
+ Adapts the Flyout's theme to the theme of its host window.
+
+
+
+
+ Adapts the Flyout's theme to the theme of its host window, but inverted.
+ This theme can only be applied if the host window's theme abides the "Dark" and "Light" affix convention.
+ (see for more infos.
+
+
+
+
+ The dark theme. This is the default theme.
+
+
+
+
+ The flyouts theme will match the host window's accent color.
+
+
+
+
+ GlowWindow
+
+
+
+
+ InitializeComponent
+
+
+
+
+ Save the DataGrid.
+
+
+
+
+ Get the DataGrid.
+
+
+
+
+ Gets the value to define the DataGridCell selection behavior.
+
+
+
+
+ Sets the value to define the DataGridCell selection behavior.
+
+
+
+
+ Gets the value to define the DataGridCell selection behavior.
+
+
+
+
+ Sets the value to define the DataGridCell selection behavior.
+
+
+
+
+ Gets the value to define the DataGridRow selection behavior.
+
+
+
+
+ Sets the value to define the DataGridRow selection behavior.
+
+
+
+
+ A helper class that provides various attached properties for the Expander control.
+
+
+
+
+
+ Gets the toggle button style used for the ExpandDirection Up.
+
+
+
+
+ Sets the toggle button style used for the ExpandDirection Up.
+
+
+
+
+ Gets the toggle button style used for the ExpandDirection Down.
+
+
+
+
+ Sets the toggle button style used for the ExpandDirection Down.
+
+
+
+
+ Gets the toggle button style used for the ExpandDirection Left.
+
+
+
+
+ Sets the toggle button style used for the ExpandDirection Left.
+
+
+
+
+ Gets the toggle button style used for the ExpandDirection Right.
+
+
+
+
+ Sets the toggle button style used for the ExpandDirection Right.
+
+
+
+
+ Change the value of the slider if the user rotates the mouse wheel by the value defined for
+
+
+
+
+ Change the value of the slider if the user rotates the mouse wheel by the value defined for
+
+
+
+
+ Do not change the value of the slider if the user rotates the mouse wheel.
+
+
+
+
+ Change the value of the slider only if the control is focused.
+
+
+
+
+ Changes the value of the slider if the mouse pointer is over this element.
+
+
+
+
+ Gets/Sets the type how the value will be changed if the user rotates the mouse wheel.
+
+
+
+
+ Gets/Sets the type how the value will be changed if the user rotates the mouse wheel.
+
+
+
+
+ Gets/Sets the value when the slider will be changed. Possible values are if the slider is focused or if the mouse is over the slider.
+
+
+
+
+ Gets/Sets the value when the slider will be changed. Possible values are if the slider is focused or if the mouse is over the slider.
+
+
+
+
+ Represents a control that allows the user to select a time.
+
+
+
+
+ Represents a base-class for time picking.
+
+
+
+
+ This readonly dependency property is to control whether to show the date-picker (in case of ) or hide it (in case of .
+
+
+
+
+ Represents the time 00:00:00; 12:00:00 AM respectively
+
+
+
+
+ Represents the time 23:59:59.9999999; 11:59:59.9999999 PM respectively
+
+
+
+
+ This list contains values from 0 to 55 with an interval of 5. It can be used to bind to and .
+
+
+ <MahApps:TimePicker SourceSeconds="{x:Static MahApps:TimePickerBase.IntervalOf5}" />
+ <MahApps:DateTimePicker SourceSeconds="{x:Static MahApps:TimePickerBase.IntervalOf5}" />
+
+
+ Returns a list containing {0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55}.
+
+
+
+
+ This list contains values from 0 to 50 with an interval of 10. It can be used to bind to and .
+
+
+ <MahApps:TimePicker SourceSeconds="{x:Static MahApps:TimePickerBase.IntervalOf10}" />
+ <MahApps:DateTimePicker SourceSeconds="{x:Static MahApps:TimePickerBase.IntervalOf10}" />
+
+
+ Returns a list containing {0, 10, 20, 30, 40, 50}.
+
+
+
+
+ This list contains values from 0 to 45 with an interval of 15. It can be used to bind to and .
+
+
+ <MahApps:TimePicker SourceSeconds="{x:Static MahApps:TimePickerBase.IntervalOf15}" />
+ <MahApps:DateTimePicker SourceSeconds="{x:Static MahApps:TimePickerBase.IntervalOf15}" />
+
+
+ Returns a list containing {0, 15, 30, 45}.
+
+
+
+
+ Occurs when the property is changed.
+
+
+
+
+ Gets or sets a value indicating the culture to be used in string formatting operations.
+
+
+
+
+ Gets or sets a value indicating the visibility of the clock hands in the user interface (UI).
+
+
+ The visibility definition of the clock hands. The default is .
+
+
+
+
+ Gets or sets a value indicating whether the date can be selected or not. This property is read-only.
+
+
+
+
+ Gets or sets a value indicating whether the clock of this control is visible in the user interface (UI). This is a
+ dependency property.
+
+
+ If this value is set to false then is set to
+
+
+
+ true if the clock is visible; otherwise, false. The default value is true.
+
+
+
+
+ Gets or sets a value indicating whether the drop-down for a box is currently
+ open.
+
+ true if the drop-down is open; otherwise, false. The default is false.
+
+
+
+ Gets or sets a value indicating whether the contents of the are not editable.
+
+
+ true if the is read-only; otherwise, false. The default is false.
+
+
+
+
+ Gets or sets a value indicating the visibility of the selectable date-time-parts in the user interface (UI).
+
+
+ visibility definition of the selectable date-time-parts. The default is .
+
+
+
+
+ Gets or sets the currently selected time.
+
+
+ The time currently selected. The default is null.
+
+
+
+
+ Gets or sets a collection used to generate the content for selecting the hours.
+
+
+ A collection that is used to generate the content for selecting the hours. The default is a list of interger from 0
+ to 23 if is false or a list of interger from
+ 1 to 12 otherwise..
+
+
+
+
+ Gets or sets a collection used to generate the content for selecting the minutes.
+
+
+ A collection that is used to generate the content for selecting the minutes. The default is a list of int from
+ 0 to 59.
+
+
+
+
+ Gets or sets a collection used to generate the content for selecting the seconds.
+
+
+ A collection that is used to generate the content for selecting the minutes. The default is a list of int from
+ 0 to 59.
+
+
+
+
+ Gets a value indicating whether the that is specified by the
+
+ set by the ( if null) has not a value.
+
+
+
+
+ When overridden in a derived class, is invoked whenever application code or internal processes call
+ .
+
+
+
+
+ Gets the offset from the selected to use it in as hour
+ parameter.
+
+ The current hour.
+
+ An integer representing the offset to add to the hour that is selected in the hour-picker for setting the correct
+ . The offset is determined as follows:
+
+
+ ConditionOffset
+
+ -
+ is false0
+
+ -
+ Selected hour is between 1 AM and 11 AM0
+
+ -
+ Selected hour is 12 AM-12h
+
+ -
+ Selected hour is between 12 PM and 11 PM+12h
+
+
+
+
+
+
+ A MetroTabControl (Pivot) that wraps TabItem/MetroTabItem headers on a single row.
+
+
+
+
+ Initializes a new instance of the MahApps.Metro.Controls.MetroAnimatedSingleRowTabControl class.
+
+
+
+
+ A MetroTabControl (Pivot) that uses a TransitioningContentControl to animate the contents of a TabItem/MetroTabItem.
+
+
+
+
+ Initializes a new instance of the MahApps.Metro.Controls.MetroAnimatedTabControl class.
+
+
+
+
+ A reimplementation of NavigationWindow based on MetroWindow.
+
+
+
+ MetroNavigationWindow
+
+
+
+
+ Gets an IEnumerable that you use to enumerate the entries in back navigation history for a NavigationWindow.
+
+
+
+
+
+ Gets an IEnumerable that you use to enumerate the entries in back navigation history for a NavigationWindow.
+
+
+
+
+
+ Gets the NavigationService that is used by this MetroNavigationWindow to provide navigation services to its content.
+
+
+
+
+
+ Gets a value that indicates whether there is at least one entry in back navigation history.
+
+
+
+
+
+ Gets a value that indicates whether there is at least one entry in forward navigation history.
+
+
+
+
+
+ Gets or sets the base uniform resource identifier (URI) of the current context.
+
+
+
+
+
+ Gets or sets the uniform resource identifier (URI) of the current content, or the URI of new content that is currently being navigated to.
+
+
+
+
+
+ Adds an entry to back navigation history that contains a CustomContentState object.
+
+ A CustomContentState object that represents application-defined state that is associated with a specific piece of content.
+
+
+
+
+ Removes the most recent journal entry from back history.
+
+ The most recent JournalEntry in back navigation history, if there is one.
+
+
+
+
+ Navigates to the most recent item in back navigation history.
+
+
+
+
+
+ Navigates to the most recent item in forward navigation history.
+
+
+
+
+
+ Navigates asynchronously to content that is contained by an object.
+
+ An Object that contains the content to navigate to.
+ true if a navigation is not canceled; otherwise, false.
+
+
+
+
+ Navigates asynchronously to content that is specified by a uniform resource identifier (URI).
+
+ A Uri object initialized with the URI for the desired content.
+ true if a navigation is not canceled; otherwise, false.
+
+
+
+
+ Navigates asynchronously to content that is contained by an object, and passes an object that contains data to be used for processing during navigation.
+
+ An Object that contains the content to navigate to.
+ A Object that contains data to be used for processing during navigation.
+ true if a navigation is not canceled; otherwise, false.
+
+
+
+
+ Navigates asynchronously to source content located at a uniform resource identifier (URI), and pass an object that contains data to be used for processing during navigation.
+
+ A Uri object initialized with the URI for the desired content.
+ A Object that contains data to be used for processing during navigation.
+ true if a navigation is not canceled; otherwise, false.
+
+
+
+
+ Stops further downloading of content for the current navigation request.
+
+
+
+
+
+ Occurs when navigation to a content fragment begins, which occurs immediately, if the desired fragment is in the current content, or after the source XAML content has been loaded, if the desired fragment is in different content.
+
+
+
+
+
+ Occurs when a new navigation is requested.
+
+
+
+
+
+ Occurs when an error is raised while navigating to the requested content.
+
+
+
+
+
+ Occurs periodically during a download to provide navigation progress information.
+
+
+
+
+
+ Occurs when the StopLoading method is called, or when a new navigation is requested while a current navigation is in progre
+
+
+
+
+
+ Occurs when the content that is being navigated to has been found, and is available from the PageContent property, although it may not have completed loading
+
+
+
+
+
+ Occurs when content that was navigated to has been loaded, parsed, and has begun rendering.
+
+
+
+
+
+ InitializeComponent
+
+
+
+
+ A metrofied ProgressBar.
+
+
+
+
+
+ Gets/sets the diameter of the ellipses used in the indeterminate animation.
+
+
+
+
+ Gets/sets the offset of the ellipses used in the indeterminate animation.
+
+
+
+
+ A standard MetroTabControl (Pivot).
+
+
+
+
+ Initializes a new instance of the MahApps.Metro.Controls.MetroTabControl class.
+
+
+
+
+ A base class for every MetroTabControl (Pivot).
+
+
+
+
+ Get/sets the command that executes when a MetroTabItem's close button is clicked.
+
+
+
+
+ An event that is raised when a TabItem is closed.
+
+
+
+
+ Event args that is created when a TabItem is closed.
+
+
+
+
+ Gets the MetroTabItem that will be closed.
+
+
+
+
+ An extended TabItem with a metro style.
+
+
+
+
+ Gets/sets whether the Close Button is visible.
+
+
+
+
+ Gets/sets the command that is executed when the Close Button is clicked.
+
+
+
+
+ Gets/sets the command that is executed when the Close Button is clicked.
+
+
+
+
+ Gets/sets the command parameter which is passed to the close button command.
+
+
+
+
+ This class eats little children.
+
+
+
+
+ Sets the IsHitTestVisibleInChromeProperty to a MetroWindow template child
+
+ The MetroWindow.
+ The name of the template child.
+
+
+
+
+ Sets the WindowChrome ResizeGripDirection to a MetroWindow template child.
+
+ The MetroWindow.
+ The name of the template child.
+ The direction.
+
+
+
+ Adapts the WindowCommands to the theme of the first opened, topmost && (top || right || left) flyout
+
+ The MetroWindow
+ All the flyouts! Or flyouts that fall into the category described in the summary.
+ An optional brush to reset the window commands brush to.
+
+
+
+ Represents a Windows spin box (also known as an up-down control) that displays numeric values.
+
+
+
+
+ Event fired from this NumericUpDown when its value has reached the maximum value
+
+
+
+
+ Event fired from this NumericUpDown when its value has reached the minimum value
+
+
+
+
+ Gets or sets the amount of time, in milliseconds, the NumericUpDown waits while the up/down button is pressed
+ before it starts increasing/decreasing the
+ for the specified . The value must be
+ non-negative.
+
+
+
+
+ Gets or sets a value indicating whether the user can use the arrow keys and to change values.
+
+
+
+
+ Gets or sets a value indicating whether the user can use the mouse wheel to change values.
+
+
+
+
+ Gets or sets a value indicating whether the control must have the focus in order to change values using the mouse wheel.
+
+ If the value is true then the value changes when the mouse wheel is over the control. If the value is false then the value changes only if the control has the focus. If is set to "false" then this property has no effect.
+
+
+
+
+
+ Gets or sets a value indicating whether the user can enter text in the control.
+
+
+
+
+ Gets or sets a value indicating the culture to be used in string formatting operations.
+
+
+
+
+ Gets or sets a value indicating whether the +/- button of the control is visible.
+
+
+ If the value is false then the of the control can be changed only if one of the following cases is satisfied:
+
+ -
+ is true.
+
+ -
+ is true.
+
+ -
+ is true.
+
+
+
+
+
+
+ Gets or sets a value indicating whether the text can be changed by the use of the up or down buttons only.
+
+
+
+
+ Gets or sets a value indicating whether the value to be added to or subtracted from remains
+ always
+ or if it will increase faster after pressing the up/down button/arrow some time.
+
+
+
+
+ Gets or sets the formatting for the displaying
+
+
+
+
+
+
+
+ Gets or sets the horizontal alignment of the contents of the text box.
+
+
+
+
+ Indicates if the NumericUpDown should show the decimal separator or not.
+
+
+
+
+ Called when this element or any below gets focus.
+
+
+
+
+ When overridden in a derived class, is invoked whenever application code or internal processes call
+ .
+
+
+
+
+ Raises the routed event.
+
+
+ Old value of the property
+
+
+ New value of the property
+
+
+
+
+ An Enum representing different positions, such as Left or Right.
+
+
+
+
+ AddValueChanged of dependency property descriptor results in memory leak as you already know.
+ So, as described here, you can create custom class PropertyChangeNotifier to listen
+ to any dependency property changes.
+
+ This class takes advantage of the fact that bindings use weak references to manage associations
+ so the class will not root the object who property changes it is watching. It also uses a WeakReference
+ to maintain a reference to the object whose property it is watching without rooting that object.
+ In this way, you can maintain a collection of these objects so that you can unhook the property
+ change later without worrying about that collection rooting the object whose values you are watching.
+
+ Complete implementation can be found here: http://agsmith.wordpress.com/2008/04/07/propertydescriptor-addvaluechanged-alternative/
+
+
+
+
+ Identifies the dependency property
+
+
+
+
+ Returns/sets the value of the property
+
+
+
+
+
+ This property can be used to set vertical scrollbar left side from the tabpanel (look at MetroAnimatedSingleRowTabControl)
+
+
+
+
+ Reflects the parameter to pass to the CommandProperty upon execution.
+
+
+
+
+ Gets or sets the target element on which to fire the command.
+
+
+
+
+ Get or sets the Command property.
+
+
+
+
+ Indicates whether the Popup is visible.
+
+
+
+
+ Gets or sets an extra tag.
+
+
+
+
+ Gets or sets the dimension of children stacking.
+
+
+
+
+ Gets or sets the Content used to generate the icon part.
+
+
+
+
+ Gets or sets the ContentTemplate used to display the content of the icon part.
+
+
+
+
+ Gets/sets the button style.
+
+
+
+
+ Gets/sets the button arrow style.
+
+
+
+
+ Gets/sets the popup listbox style.
+
+
+
+
+ Gets/sets the brush of the button arrow icon.
+
+
+
+
+ Gets/sets the brush of the button arrow icon if the mouse is over the split button.
+
+
+
+
+ Gets/sets the brush of the button arrow icon if the arrow button is pressed.
+
+
+
+ Updates the current selection when an item in the has changed
+ The event data.
+
+
+
+ Defines whether the underline below the is shown or not.
+
+
+
+
+ This property can be used to set the Transition for animated TabControls
+
+
+
+
+ This property can be used to handle the style for CheckBox and RadioButton
+ LeftToRight means content left and button right and RightToLeft vise versa
+
+
+
+
+ This property can be used to handle the style for CheckBox and RadioButton
+ LeftToRight means content left and button right and RightToLeft vise versa
+
+
+
+
+ An Enum representing different themes for window commands.
+
+
+
+
+ Gets or sets the value indicating current light style for the minimize button.
+
+
+
+
+ Gets or sets the value indicating current light style for the maximize button.
+
+
+
+
+ Gets or sets the value indicating current light style for the close button.
+
+
+
+
+ Gets or sets the value indicating current dark style for the minimize button.
+
+
+
+
+ Gets or sets the value indicating current dark style for the maximize button.
+
+
+
+
+ Gets or sets the value indicating current dark style for the close button.
+
+
+
+
+ Gets or sets the value indicating current theme.
+
+
+
+
+ Gets or sets the minimize button tooltip.
+
+
+
+
+ Gets or sets the maximize button tooltip.
+
+
+
+
+ Gets or sets the close button tooltip.
+
+
+
+
+ Gets or sets the restore button tooltip.
+
+
+
+
+ Doesn't overlay flyouts nor a hidden TitleBar.
+
+
+
+
+ Overlays opened controls.
+
+
+
+
+ Overlays a hidden TitleBar.
+
+
+
+
+ Based on Greg Schechter's Planerator
+ http://blogs.msdn.com/b/greg_schechter/archive/2007/10/26/enter-the-planerator-dead-simple-3d-in-wpf-with-a-stupid-name.aspx
+
+
+
+
+ Event arguments created for the RangeSlider's SelectionChanged event.
+
+
+
+
+
+ The value of the new range's beginning.
+
+
+
+
+ The value of the new range's ending.
+
+
+
+
+ A slider control with the ability to select a range between two values.
+
+
+
+
+ Get/sets value how fast thumbs will move when user press on left/right/central with left mouse button (IsMoveToPoint must be set to FALSE)
+
+
+
+
+ Get/sets precision of the value, which displaying inside AutotToolTip
+
+
+
+
+ Get/sets the converter for the tooltip text
+
+
+
+
+ Get/sets tooltip, which will show while dragging thumbs and display currect value
+
+
+
+
+ Get/sets tick placement position
+
+
+
+
+ Get/sets IsMoveToPoint feature which will enable/disable moving to exact point inside control when user clicked on it
+
+
+
+
+ Get/sets tickFrequency
+
+
+
+
+ Get/sets orientation of range slider
+
+
+
+
+ Get/sets whether possibility to make manipulations inside range with left/right mouse buttons + cotrol button
+
+
+
+
+ Get/sets whether possibility to make manipulations inside range with left/right mouse buttons + cotrol button
+
+
+
+
+ Get/sets whether whole range will be moved when press on right/left/central part of control
+
+
+
+
+ Get/sets the minimal distance between two thumbs.
+
+
+
+
+ Get/sets the beginning of the range selection.
+
+
+
+
+ Get/sets the end of the range selection.
+
+
+
+
+ Get/sets the minimum range that can be selected.
+
+
+
+
+ Responds to a change in the value of the property.
+
+ The old value of the property.The new value of the property.
+
+
+
+ Responds to a change in the value of the property.
+
+ The old value of the property.The new value of the property.
+
+
+
+ A helper class that provides various attached properties for the TextBox control.
+
+
+ Password watermarking code from: http://prabu-guru.blogspot.com/2010/06/how-to-add-watermark-text-to-textbox.html
+
+
+
+
+ The clear text button behavior property. It sets a click event to the button if the value is true.
+
+
+
+
+ This property can be used to set the button width (PART_ClearText) of TextBox, PasswordBox, ComboBox, NumericUpDown
+
+
+
+
+ Indicates if a TextBox or RichTextBox should use SpellCheck context menu
+
+
+
+
+ Gets if the attached TextBox has text.
+
+
+
+
+ Gets the clear text button visibility / feature. Can be used to enable text deletion.
+
+
+
+
+ Sets the clear text button visibility / feature. Can be used to enable text deletion.
+
+
+
+
+ Gets the text button visibility.
+
+
+
+
+ Sets the text button visibility.
+
+
+
+
+ Gets the buttons placement variant.
+
+
+
+
+ Sets the buttons placement variant.
+
+
+
+
+ Gets the clear text button behavior.
+
+
+
+
+ Sets the clear text button behavior.
+
+
+
+
+ ButtonContentTemplate is the template used to display the content of the ClearText button.
+
+
+
+
+ A Button that allows the user to toggle between two states.
+
+
+
+
+ Gets/sets the brush used for the control's foreground.
+
+
+
+
+ Gets/sets the brush used for the on-switch's foreground.
+
+
+
+
+ Gets/sets the brush used for the off-switch's foreground.
+
+
+
+
+ Gets/sets the brush used for the thumb indicator.
+
+
+
+
+ Gets/sets the brush used for the thumb indicator.
+
+
+
+
+ Gets/sets the width of the thumb indicator.
+
+
+
+
+ enumeration for the different transition types
+
+
+
+
+ Use the VisualState DefaultTransition
+
+
+
+
+ Use the VisualState Normal
+
+
+
+
+ Use the VisualState UpTransition
+
+
+
+
+ Use the VisualState DownTransition
+
+
+
+
+ Use the VisualState RightTransition
+
+
+
+
+ Use the VisualState RightReplaceTransition
+
+
+
+
+ Use the VisualState LeftTransition
+
+
+
+
+ Use the VisualState LeftReplaceTransition
+
+
+
+
+ Use a custom VisualState, the name must be set using CustomVisualStatesName property
+
+
+
+
+ A ContentControl that animates content as it loads and unloads.
+
+
+
+
+ Gets or sets the name of the custom transition visual state.
+
+
+
+
+ Gets/sets if the content is transitioning.
+
+
+
+
+ Reload the current transition if the content is the same.
+
+
+
+
+ Helper methods for UI-related tasks.
+ This class was obtained from Philip Sumi (a fellow WPF Disciples blog)
+ http://www.hardcodet.net/uploads/2009/06/UIHelper.cs
+
+
+
+
+ Finds a parent of a given item on the visual tree.
+
+ The type of the queried item.
+ A direct or indirect child of the
+ queried item.
+ The first parent item that matches the submitted
+ type parameter. If not matching item can be found, a null
+ reference is being returned.
+
+
+
+ Finds a Child of a given item in the visual tree.
+
+ A direct parent of the queried item.
+ The type of the queried item.
+ x:Name or Name of child.
+ The first parent item that matches the submitted type parameter.
+ If not matching item can be found,
+ a null parent is being returned.
+
+
+
+ This method is an alternative to WPF's
+ method, which also
+ supports content elements. Keep in mind that for content element,
+ this method falls back to the logical tree of the element!
+
+ The item to be processed.
+ The submitted item's parent, if available. Otherwise
+ null.
+
+
+
+ Analyzes both visual and logical tree in order to find all elements of a given
+ type that are descendants of the item.
+
+ The type of the queried items.
+ The root element that marks the source of the search. If the
+ source is already of the requested type, it will not be included in the result.
+ Sometimes it's better to search in the VisualTree (e.g. in tests)
+ All descendants of that match the requested type.
+
+
+
+ This method is an alternative to WPF's
+ method, which also
+ supports content elements. Keep in mind that for content elements,
+ this method falls back to the logical tree of the element.
+
+ The item to be processed.
+ Sometimes it's better to search in the VisualTree (e.g. in tests)
+ The submitted item's child elements, if available.
+
+
+
+ Tries to locate a given item within the visual tree,
+ starting with the dependency object at a given position.
+
+ The type of the element to be found
+ on the visual tree of the element at the given location.
+ The main element which is used to perform
+ hit testing.
+ The position to be evaluated on the origin.
+
+
+
+ Gets or sets the value indicating current theme.
+
+
+
+
+ Gets or sets the value indicating light theme template.
+
+
+
+
+ Gets or sets the value indicating light theme template.
+
+
+
+
+ Gets or sets the value indicating whether to show the separators.
+
+
+
+
+ Gets or sets the value indicating whether to show the last separator.
+
+
+
+
+ Gets or sets the value indicating separator height.
+
+
+
+
+ Gets or sets the value indicating whether to show the separator.
+
+
+
+
+ Refreshes the application settings property values from persistent storage.
+
+
+
+
+ Upgrades the application settings on loading.
+
+
+
+
+ Updates application settings to reflect a more recent installation of the application.
+
+
+
+
+ Stores the current values of the settings properties.
+
+
+
+
+ this settings class is the default way to save the placement of the window
+
+
+
+
+ Upgrades the application settings on loading.
+
+
+
+
+ Originally from http://xamlcoder.com/blog/2010/11/04/creating-a-metro-ui-style-control/
+
+
+
+
+ An extended, metrofied Window class.
+
+
+
+
+ Allows easy handling of window commands brush. Theme is also applied based on this brush.
+
+
+
+
+ Gets/sets whether the window's entrance transition animation is enabled.
+
+
+
+
+ Gets/sets the FlyoutsControl that hosts the window's flyouts.
+
+
+
+
+ Gets/sets the icon content template to show a custom icon.
+
+
+
+
+ Gets/sets the title content template to show a custom title.
+
+
+
+
+ Gets/sets the left window commands that hosts the user commands.
+
+
+
+
+ Gets/sets the right window commands that hosts the user commands.
+
+
+
+
+ Gets/sets the window button commands that hosts the min/max/close commands.
+
+
+
+
+ Gets/sets whether the window will ignore (and overlap) the taskbar when maximized.
+
+
+
+
+ Gets/sets the brush used for the titlebar's foreground.
+
+
+
+
+ Gets/sets whether the window will save it's position between loads.
+
+
+
+
+ Gets the window placement settings (can be overwritten).
+
+
+
+
+ Get/sets whether the titlebar icon is visible or not.
+
+
+
+
+ Get/sets whether dialogs show over the title bar.
+
+
+
+
+ Gets/sets edge mode of the titlebar icon.
+
+
+
+
+ Gets/sets bitmap scaling mode of the titlebar icon.
+
+
+
+
+ Gets/sets whether the TitleBar is visible or not.
+
+
+
+
+ Gets/sets whether the WindowStyle is None or not.
+
+
+
+
+ Gets/sets if the minimize button is visible.
+
+
+
+
+ Gets/sets if the Maximize/Restore button is visible.
+
+
+
+
+ Gets/sets if the close button is visible.
+
+
+
+
+ Gets/sets if the min button is enabled.
+
+
+
+
+ Gets/sets if the max/restore button is enabled.
+
+
+
+
+ Gets/sets if the close button is enabled.
+
+
+
+
+ Gets/sets if the the system menu should popup on right click.
+
+
+
+
+ Gets/sets the TitleBar's height.
+
+
+
+
+ Gets/sets if the TitleBar's text is automatically capitalized.
+
+
+
+
+ Character casing of the title
+
+
+
+
+ Gets/sets the title horizontal alignment.
+
+
+
+
+ Gets/sets the brush used for the Window's title bar.
+
+
+
+
+ Gets/sets the brush used for the Window's glow.
+
+
+
+
+ Gets/sets the brush used for the Window's non-active glow.
+
+
+
+
+ Gets/sets the brush used for the Window's non-active border.
+
+
+
+
+ Gets/sets the brush used for the Window's non-active title bar.
+
+
+
+
+ Begins to show the MetroWindow's overlay effect.
+
+ A task representing the process.
+
+
+
+ Begins to hide the MetroWindow's overlay effect.
+
+ A task representing the process.
+
+
+
+ Stores the given element, or the last focused element via FocusManager, for restoring the focus after closing a dialog.
+
+ The element which will be focused again.
+
+
+
+ Clears the stored element which would get the focus after closing a dialog.
+
+
+
+
+ Initializes a new instance of the MahApps.Metro.Controls.MetroWindow class.
+
+
+
+
+ Gets the template child with the given name.
+
+ The interface type inheirted from DependencyObject.
+ The name of the template child.
+
+
+
+ Gets the template child with the given name.
+
+ The name of the template child.
+
+
+
+ RevealImage
+
+
+
+
+ InitializeComponent
+
+
+
+
+ HorizontalTitleAlignment Dependency Property.
+ Default Value: HorizontalAlignment.Left
+
+
+
+
+ Gets/Sets the horizontal alignment of the title.
+
+
+
+
+ VerticalTitleAlignment Dependency Property.
+ Default Value: VerticalAlignment.Bottom
+
+
+
+
+ Gets/Sets the vertical alignment of the title.
+
+
+
+
+ A control that allows the user to toggle between two states: One represents true; The other represents false.
+
+
+
+
+ Gets/sets the font family of the header.
+
+
+
+
+ Gets/sets the text to display when the control is in it's On state.
+
+
+
+
+ Gets/sets the text to display when the control is in it's Off state.
+
+
+
+
+ Gets/sets the brush used for the switch's foreground.
+
+
+
+
+ Gets/sets the brush used for the on-switch's foreground.
+
+
+
+
+ Gets/sets the brush used for the off-switch's foreground.
+
+
+
+
+ Gets/sets the brush used for the thumb indicator.
+
+
+
+
+ Gets/sets the brush used for the thumb indicator.
+
+
+
+
+ Gets/sets the width of the thumb indicator.
+
+
+
+
+ Gets/sets the control's content flow direction.
+
+
+
+
+ Gets/sets the control's toggle switch button style.
+
+
+
+
+ Gets/sets whether the control is Checked (On) or not (Off).
+
+
+
+
+ Gets/sets the command which will be executed if the IsChecked property was changed.
+
+
+
+
+ Gets/sets the command which will be executed if the checked event of the control is fired.
+
+
+
+
+ Gets/sets the command which will be executed if the checked event of the control is fired.
+
+
+
+
+ Gets/sets the command parameter which will be passed by the CheckChangedCommand.
+
+
+
+
+ Gets/sets the command parameter which will be passed by the CheckedCommand.
+
+
+
+
+ Gets/sets the command parameter which will be passed by the UnCheckedCommand.
+
+
+
+
+ An event that is raised when the value of IsChecked changes.
+
+
+
+
+ Converts a double representing either hour/minute/second to the corresponding angle.
+
+
+
+
+ Determining Ideal Text Color Based on Specified Background Color
+ http://www.codeproject.com/KB/GDI-plus/IdealTextColor.aspx
+
+ The bg.
+
+
+
+
+ Converts the value from true to false and false to true.
+
+
+
+
+ Converts a String into a Visibility enumeration (and back)
+ The FalseEquivalent can be declared with the "FalseEquivalent" property
+
+
+
+
+ Initialize the properties with standard values
+
+
+
+
+ FalseEquivalent (default : Visibility.Collapsed => see Constructor)
+
+
+
+
+ Define whether the opposite boolean value is crucial (default : false)
+
+
+
+
+ Converts a Thickness to a new Thickness. It's possible to ignore a side With the IgnoreThicknessSide property.
+
+
+
+
+ Use all sides.
+
+
+
+
+ Ignore the left side.
+
+
+
+
+ Ignore the top side.
+
+
+
+
+ Ignore the right side.
+
+
+
+
+ Ignore the bottom side.
+
+
+
+ Converts a value.
+ A converted value. If the method returns null, the valid null value is used.
+ The value produced by the binding source.
+ The type of the binding target property.
+ The converter parameter to use.
+ The culture to use in the converter.
+
+
+ Converts a value.
+ A converted value. If the method returns null, the valid null value is used.
+ The value that is produced by the binding target.
+ The type to convert to.
+ The converter parameter to use.
+ The culture to use in the converter.
+
+
+
+ Windows Messages
+ Defined in winuser.h from Windows SDK v6.1
+ Documentation pulled from MSDN.
+
+
+
+
+ The WM_NULL message performs no operation. An application sends the WM_NULL message if it wants to post a message that the recipient window will ignore.
+
+
+
+
+ The WM_CREATE message is sent when an application requests that a window be created by calling the CreateWindowEx or CreateWindow function. (The message is sent before the function returns.) The window procedure of the new window receives this message after the window is created, but before the window becomes visible.
+
+
+
+
+ The WM_DESTROY message is sent when a window is being destroyed. It is sent to the window procedure of the window being destroyed after the window is removed from the screen.
+ This message is sent first to the window being destroyed and then to the child windows (if any) as they are destroyed. During the processing of the message, it can be assumed that all child windows still exist.
+ ///
+
+
+
+ The WM_MOVE message is sent after a window has been moved.
+
+
+
+
+ The WM_SIZE message is sent to a window after its size has changed.
+
+
+
+
+ The WM_ACTIVATE message is sent to both the window being activated and the window being deactivated. If the windows use the same input queue, the message is sent synchronously, first to the window procedure of the top-level window being deactivated, then to the window procedure of the top-level window being activated. If the windows use different input queues, the message is sent asynchronously, so the window is activated immediately.
+
+
+
+
+ The WM_SETFOCUS message is sent to a window after it has gained the keyboard focus.
+
+
+
+
+ The WM_KILLFOCUS message is sent to a window immediately before it loses the keyboard focus.
+
+
+
+
+ The WM_ENABLE message is sent when an application changes the enabled state of a window. It is sent to the window whose enabled state is changing. This message is sent before the EnableWindow function returns, but after the enabled state (WS_DISABLED style bit) of the window has changed.
+
+
+
+
+ An application sends the WM_SETREDRAW message to a window to allow changes in that window to be redrawn or to prevent changes in that window from being redrawn.
+
+
+
+
+ An application sends a WM_SETTEXT message to set the text of a window.
+
+
+
+
+ An application sends a WM_GETTEXT message to copy the text that corresponds to a window into a buffer provided by the caller.
+
+
+
+
+ An application sends a WM_GETTEXTLENGTH message to determine the length, in characters, of the text associated with a window.
+
+
+
+
+ The WM_PAINT message is sent when the system or another application makes a request to paint a portion of an application's window. The message is sent when the UpdateWindow or RedrawWindow function is called, or by the DispatchMessage function when the application obtains a WM_PAINT message by using the GetMessage or PeekMessage function.
+
+
+
+
+ The WM_CLOSE message is sent as a signal that a window or an application should terminate.
+
+
+
+
+ The WM_QUERYENDSESSION message is sent when the user chooses to end the session or when an application calls one of the system shutdown functions. If any application returns zero, the session is not ended. The system stops sending WM_QUERYENDSESSION messages as soon as one application returns zero.
+ After processing this message, the system sends the WM_ENDSESSION message with the wParam parameter set to the results of the WM_QUERYENDSESSION message.
+
+
+
+
+ The WM_QUERYOPEN message is sent to an icon when the user requests that the window be restored to its previous size and position.
+
+
+
+
+ The WM_ENDSESSION message is sent to an application after the system processes the results of the WM_QUERYENDSESSION message. The WM_ENDSESSION message informs the application whether the session is ending.
+
+
+
+
+ The WM_QUIT message indicates a request to terminate an application and is generated when the application calls the PostQuitMessage function. It causes the GetMessage function to return zero.
+
+
+
+
+ The WM_ERASEBKGND message is sent when the window background must be erased (for example, when a window is resized). The message is sent to prepare an invalidated portion of a window for painting.
+
+
+
+
+ This message is sent to all top-level windows when a change is made to a system color setting.
+
+
+
+
+ The WM_SHOWWINDOW message is sent to a window when the window is about to be hidden or shown.
+
+
+
+
+ An application sends the WM_WININICHANGE message to all top-level windows after making a change to the WIN.INI file. The SystemParametersInfo function sends this message after an application uses the function to change a setting in WIN.INI.
+ Note The WM_WININICHANGE message is provided only for compatibility with earlier versions of the system. Applications should use the WM_SETTINGCHANGE message.
+
+
+
+
+ An application sends the WM_WININICHANGE message to all top-level windows after making a change to the WIN.INI file. The SystemParametersInfo function sends this message after an application uses the function to change a setting in WIN.INI.
+ Note The WM_WININICHANGE message is provided only for compatibility with earlier versions of the system. Applications should use the WM_SETTINGCHANGE message.
+
+
+
+
+ The WM_DEVMODECHANGE message is sent to all top-level windows whenever the user changes device-mode settings.
+
+
+
+
+ The WM_ACTIVATEAPP message is sent when a window belonging to a different application than the active window is about to be activated. The message is sent to the application whose window is being activated and to the application whose window is being deactivated.
+
+
+
+
+ An application sends the WM_FONTCHANGE message to all top-level windows in the system after changing the pool of font resources.
+
+
+
+
+ A message that is sent whenever there is a change in the system time.
+
+
+
+
+ The WM_CANCELMODE message is sent to cancel certain modes, such as mouse capture. For example, the system sends this message to the active window when a dialog box or message box is displayed. Certain functions also send this message explicitly to the specified window regardless of whether it is the active window. For example, the EnableWindow function sends this message when disabling the specified window.
+
+
+
+
+ The WM_SETCURSOR message is sent to a window if the mouse causes the cursor to move within a window and mouse input is not captured.
+
+
+
+
+ The WM_MOUSEACTIVATE message is sent when the cursor is in an inactive window and the user presses a mouse button. The parent window receives this message only if the child window passes it to the DefWindowProc function.
+
+
+
+
+ The WM_CHILDACTIVATE message is sent to a child window when the user clicks the window's title bar or when the window is activated, moved, or sized.
+
+
+
+
+ The WM_QUEUESYNC message is sent by a computer-based training (CBT) application to separate user-input messages from other messages sent through the WH_JOURNALPLAYBACK Hook procedure.
+
+
+
+
+ The WM_GETMINMAXINFO message is sent to a window when the size or position of the window is about to change. An application can use this message to override the window's default maximized size and position, or its default minimum or maximum tracking size.
+
+
+
+
+ Windows NT 3.51 and earlier: The WM_PAINTICON message is sent to a minimized window when the icon is to be painted. This message is not sent by newer versions of Microsoft Windows, except in unusual circumstances explained in the Remarks.
+
+
+
+
+ Windows NT 3.51 and earlier: The WM_ICONERASEBKGND message is sent to a minimized window when the background of the icon must be filled before painting the icon. A window receives this message only if a class icon is defined for the window; otherwise, WM_ERASEBKGND is sent. This message is not sent by newer versions of Windows.
+
+
+
+
+ The WM_NEXTDLGCTL message is sent to a dialog box procedure to set the keyboard focus to a different control in the dialog box.
+
+
+
+
+ The WM_SPOOLERSTATUS message is sent from Print Manager whenever a job is added to or removed from the Print Manager queue.
+
+
+
+
+ The WM_DRAWITEM message is sent to the parent window of an owner-drawn button, combo box, list box, or menu when a visual aspect of the button, combo box, list box, or menu has changed.
+
+
+
+
+ The WM_MEASUREITEM message is sent to the owner window of a combo box, list box, list view control, or menu item when the control or menu is created.
+
+
+
+
+ Sent to the owner of a list box or combo box when the list box or combo box is destroyed or when items are removed by the LB_DELETESTRING, LB_RESETCONTENT, CB_DELETESTRING, or CB_RESETCONTENT message. The system sends a WM_DELETEITEM message for each deleted item. The system sends the WM_DELETEITEM message for any deleted list box or combo box item with nonzero item data.
+
+
+
+
+ Sent by a list box with the LBS_WANTKEYBOARDINPUT style to its owner in response to a WM_KEYDOWN message.
+
+
+
+
+ Sent by a list box with the LBS_WANTKEYBOARDINPUT style to its owner in response to a WM_CHAR message.
+
+
+
+
+ An application sends a WM_SETFONT message to specify the font that a control is to use when drawing text.
+
+
+
+
+ An application sends a WM_GETFONT message to a control to retrieve the font with which the control is currently drawing its text.
+
+
+
+
+ An application sends a WM_SETHOTKEY message to a window to associate a hot key with the window. When the user presses the hot key, the system activates the window.
+
+
+
+
+ An application sends a WM_GETHOTKEY message to determine the hot key associated with a window.
+
+
+
+
+ The WM_QUERYDRAGICON message is sent to a minimized (iconic) window. The window is about to be dragged by the user but does not have an icon defined for its class. An application can return a handle to an icon or cursor. The system displays this cursor or icon while the user drags the icon.
+
+
+
+
+ The system sends the WM_COMPAREITEM message to determine the relative position of a new item in the sorted list of an owner-drawn combo box or list box. Whenever the application adds a new item, the system sends this message to the owner of a combo box or list box created with the CBS_SORT or LBS_SORT style.
+
+
+
+
+ Active Accessibility sends the WM_GETOBJECT message to obtain information about an accessible object contained in a server application.
+ Applications never send this message directly. It is sent only by Active Accessibility in response to calls to AccessibleObjectFromPoint, AccessibleObjectFromEvent, or AccessibleObjectFromWindow. However, server applications handle this message.
+
+
+
+
+ The WM_COMPACTING message is sent to all top-level windows when the system detects more than 12.5 percent of system time over a 30- to 60-second interval is being spent compacting memory. This indicates that system memory is low.
+
+
+
+
+ WM_COMMNOTIFY is Obsolete for Win32-Based Applications
+
+
+
+
+ The WM_WINDOWPOSCHANGING message is sent to a window whose size, position, or place in the Z order is about to change as a result of a call to the SetWindowPos function or another window-management function.
+
+
+
+
+ The WM_WINDOWPOSCHANGED message is sent to a window whose size, position, or place in the Z order has changed as a result of a call to the SetWindowPos function or another window-management function.
+
+
+
+
+ Notifies applications that the system, typically a battery-powered personal computer, is about to enter a suspended mode.
+ Use: POWERBROADCAST
+
+
+
+
+ An application sends the WM_COPYDATA message to pass data to another application.
+
+
+
+
+ The WM_CANCELJOURNAL message is posted to an application when a user cancels the application's journaling activities. The message is posted with a NULL window handle.
+
+
+
+
+ Sent by a common control to its parent window when an event has occurred or the control requires some information.
+
+
+
+
+ The WM_INPUTLANGCHANGEREQUEST message is posted to the window with the focus when the user chooses a new input language, either with the hotkey (specified in the Keyboard control panel application) or from the indicator on the system taskbar. An application can accept the change by passing the message to the DefWindowProc function or reject the change (and prevent it from taking place) by returning immediately.
+
+
+
+
+ The WM_INPUTLANGCHANGE message is sent to the topmost affected window after an application's input language has been changed. You should make any application-specific settings and pass the message to the DefWindowProc function, which passes the message to all first-level child windows. These child windows can pass the message to DefWindowProc to have it pass the message to their child windows, and so on.
+
+
+
+
+ Sent to an application that has initiated a training card with Microsoft Windows Help. The message informs the application when the user clicks an authorable button. An application initiates a training card by specifying the HELP_TCARD command in a call to the WinHelp function.
+
+
+
+
+ Indicates that the user pressed the F1 key. If a menu is active when F1 is pressed, WM_HELP is sent to the window associated with the menu; otherwise, WM_HELP is sent to the window that has the keyboard focus. If no window has the keyboard focus, WM_HELP is sent to the currently active window.
+
+
+
+
+ The WM_USERCHANGED message is sent to all windows after the user has logged on or off. When the user logs on or off, the system updates the user-specific settings. The system sends this message immediately after updating the settings.
+
+
+
+
+ Determines if a window accepts ANSI or Unicode structures in the WM_NOTIFY notification message. WM_NOTIFYFORMAT messages are sent from a common control to its parent window and from the parent window to the common control.
+
+
+
+
+ The WM_CONTEXTMENU message notifies a window that the user clicked the right mouse button (right-clicked) in the window.
+
+
+
+
+ The WM_STYLECHANGING message is sent to a window when the SetWindowLong function is about to change one or more of the window's styles.
+
+
+
+
+ The WM_STYLECHANGED message is sent to a window after the SetWindowLong function has changed one or more of the window's styles
+
+
+
+
+ The WM_DISPLAYCHANGE message is sent to all windows when the display resolution has changed.
+
+
+
+
+ The WM_GETICON message is sent to a window to retrieve a handle to the large or small icon associated with a window. The system displays the large icon in the ALT+TAB dialog, and the small icon in the window caption.
+
+
+
+
+ An application sends the WM_SETICON message to associate a new large or small icon with a window. The system displays the large icon in the ALT+TAB dialog box, and the small icon in the window caption.
+
+
+
+
+ The WM_NCCREATE message is sent prior to the WM_CREATE message when a window is first created.
+
+
+
+
+ The WM_NCDESTROY message informs a window that its nonclient area is being destroyed. The DestroyWindow function sends the WM_NCDESTROY message to the window following the WM_DESTROY message. WM_DESTROY is used to free the allocated memory object associated with the window.
+ The WM_NCDESTROY message is sent after the child windows have been destroyed. In contrast, WM_DESTROY is sent before the child windows are destroyed.
+
+
+
+
+ The WM_NCCALCSIZE message is sent when the size and position of a window's client area must be calculated. By processing this message, an application can control the content of the window's client area when the size or position of the window changes.
+
+
+
+
+ The WM_NCHITTEST message is sent to a window when the cursor moves, or when a mouse button is pressed or released. If the mouse is not captured, the message is sent to the window beneath the cursor. Otherwise, the message is sent to the window that has captured the mouse.
+
+
+
+
+ The WM_NCPAINT message is sent to a window when its frame must be painted.
+
+
+
+
+ The WM_NCACTIVATE message is sent to a window when its nonclient area needs to be changed to indicate an active or inactive state.
+
+
+
+
+ The WM_GETDLGCODE message is sent to the window procedure associated with a control. By default, the system handles all keyboard input to the control; the system interprets certain types of keyboard input as dialog box navigation keys. To override this default behavior, the control can respond to the WM_GETDLGCODE message to indicate the types of input it wants to process itself.
+
+
+
+
+ The WM_SYNCPAINT message is used to synchronize painting while avoiding linking independent GUI threads.
+
+
+
+
+ The WM_NCMOUSEMOVE message is posted to a window when the cursor is moved within the nonclient area of the window. This message is posted to the window that contains the cursor. If a window has captured the mouse, this message is not posted.
+
+
+
+
+ The WM_NCLBUTTONDOWN message is posted when the user presses the left mouse button while the cursor is within the nonclient area of a window. This message is posted to the window that contains the cursor. If a window has captured the mouse, this message is not posted.
+
+
+
+
+ The WM_NCLBUTTONUP message is posted when the user releases the left mouse button while the cursor is within the nonclient area of a window. This message is posted to the window that contains the cursor. If a window has captured the mouse, this message is not posted.
+
+
+
+
+ The WM_NCLBUTTONDBLCLK message is posted when the user double-clicks the left mouse button while the cursor is within the nonclient area of a window. This message is posted to the window that contains the cursor. If a window has captured the mouse, this message is not posted.
+
+
+
+
+ The WM_NCRBUTTONDOWN message is posted when the user presses the right mouse button while the cursor is within the nonclient area of a window. This message is posted to the window that contains the cursor. If a window has captured the mouse, this message is not posted.
+
+
+
+
+ The WM_NCRBUTTONUP message is posted when the user releases the right mouse button while the cursor is within the nonclient area of a window. This message is posted to the window that contains the cursor. If a window has captured the mouse, this message is not posted.
+
+
+
+
+ The WM_NCRBUTTONDBLCLK message is posted when the user double-clicks the right mouse button while the cursor is within the nonclient area of a window. This message is posted to the window that contains the cursor. If a window has captured the mouse, this message is not posted.
+
+
+
+
+ The WM_NCMBUTTONDOWN message is posted when the user presses the middle mouse button while the cursor is within the nonclient area of a window. This message is posted to the window that contains the cursor. If a window has captured the mouse, this message is not posted.
+
+
+
+
+ The WM_NCMBUTTONUP message is posted when the user releases the middle mouse button while the cursor is within the nonclient area of a window. This message is posted to the window that contains the cursor. If a window has captured the mouse, this message is not posted.
+
+
+
+
+ The WM_NCMBUTTONDBLCLK message is posted when the user double-clicks the middle mouse button while the cursor is within the nonclient area of a window. This message is posted to the window that contains the cursor. If a window has captured the mouse, this message is not posted.
+
+
+
+
+ The WM_NCXBUTTONDOWN message is posted when the user presses the first or second X button while the cursor is in the nonclient area of a window. This message is posted to the window that contains the cursor. If a window has captured the mouse, this message is not posted.
+
+
+
+
+ The WM_NCXBUTTONUP message is posted when the user releases the first or second X button while the cursor is in the nonclient area of a window. This message is posted to the window that contains the cursor. If a window has captured the mouse, this message is not posted.
+
+
+
+
+ The WM_NCXBUTTONDBLCLK message is posted when the user double-clicks the first or second X button while the cursor is in the nonclient area of a window. This message is posted to the window that contains the cursor. If a window has captured the mouse, this message is not posted.
+
+
+
+
+ The WM_INPUT_DEVICE_CHANGE message is sent to the window that registered to receive raw input. A window receives this message through its WindowProc function.
+
+
+
+
+ The WM_INPUT message is sent to the window that is getting raw input.
+
+
+
+
+ This message filters for keyboard messages.
+
+
+
+
+ The WM_KEYDOWN message is posted to the window with the keyboard focus when a nonsystem key is pressed. A nonsystem key is a key that is pressed when the ALT key is not pressed.
+
+
+
+
+ The WM_KEYUP message is posted to the window with the keyboard focus when a nonsystem key is released. A nonsystem key is a key that is pressed when the ALT key is not pressed, or a keyboard key that is pressed when a window has the keyboard focus.
+
+
+
+
+ The WM_CHAR message is posted to the window with the keyboard focus when a WM_KEYDOWN message is translated by the TranslateMessage function. The WM_CHAR message contains the character code of the key that was pressed.
+
+
+
+
+ The WM_DEADCHAR message is posted to the window with the keyboard focus when a WM_KEYUP message is translated by the TranslateMessage function. WM_DEADCHAR specifies a character code generated by a dead key. A dead key is a key that generates a character, such as the umlaut (double-dot), that is combined with another character to form a composite character. For example, the umlaut-O character (Ö) is generated by typing the dead key for the umlaut character, and then typing the O key.
+
+
+
+
+ The WM_SYSKEYDOWN message is posted to the window with the keyboard focus when the user presses the F10 key (which activates the menu bar) or holds down the ALT key and then presses another key. It also occurs when no window currently has the keyboard focus; in this case, the WM_SYSKEYDOWN message is sent to the active window. The window that receives the message can distinguish between these two contexts by checking the context code in the lParam parameter.
+
+
+
+
+ The WM_SYSKEYUP message is posted to the window with the keyboard focus when the user releases a key that was pressed while the ALT key was held down. It also occurs when no window currently has the keyboard focus; in this case, the WM_SYSKEYUP message is sent to the active window. The window that receives the message can distinguish between these two contexts by checking the context code in the lParam parameter.
+
+
+
+
+ The WM_SYSCHAR message is posted to the window with the keyboard focus when a WM_SYSKEYDOWN message is translated by the TranslateMessage function. It specifies the character code of a system character key — that is, a character key that is pressed while the ALT key is down.
+
+
+
+
+ The WM_SYSDEADCHAR message is sent to the window with the keyboard focus when a WM_SYSKEYDOWN message is translated by the TranslateMessage function. WM_SYSDEADCHAR specifies the character code of a system dead key — that is, a dead key that is pressed while holding down the ALT key.
+
+
+
+
+ The WM_UNICHAR message is posted to the window with the keyboard focus when a WM_KEYDOWN message is translated by the TranslateMessage function. The WM_UNICHAR message contains the character code of the key that was pressed.
+ The WM_UNICHAR message is equivalent to WM_CHAR, but it uses Unicode Transformation Format (UTF)-32, whereas WM_CHAR uses UTF-16. It is designed to send or post Unicode characters to ANSI windows and it can can handle Unicode Supplementary Plane characters.
+
+
+
+
+ This message filters for keyboard messages.
+
+
+
+
+ Sent immediately before the IME generates the composition string as a result of a keystroke. A window receives this message through its WindowProc function.
+
+
+
+
+ Sent to an application when the IME ends composition. A window receives this message through its WindowProc function.
+
+
+
+
+ Sent to an application when the IME changes composition status as a result of a keystroke. A window receives this message through its WindowProc function.
+
+
+
+
+ The WM_INITDIALOG message is sent to the dialog box procedure immediately before a dialog box is displayed. Dialog box procedures typically use this message to initialize controls and carry out any other initialization tasks that affect the appearance of the dialog box.
+
+
+
+
+ The WM_COMMAND message is sent when the user selects a command item from a menu, when a control sends a notification message to its parent window, or when an accelerator keystroke is translated.
+
+
+
+
+ A window receives this message when the user chooses a command from the Window menu, clicks the maximize button, minimize button, restore button, close button, or moves the form. You can stop the form from moving by filtering this out.
+
+
+
+
+ The WM_TIMER message is posted to the installing thread's message queue when a timer expires. The message is posted by the GetMessage or PeekMessage function.
+
+
+
+
+ The WM_HSCROLL message is sent to a window when a scroll event occurs in the window's standard horizontal scroll bar. This message is also sent to the owner of a horizontal scroll bar control when a scroll event occurs in the control.
+
+
+
+
+ The WM_VSCROLL message is sent to a window when a scroll event occurs in the window's standard vertical scroll bar. This message is also sent to the owner of a vertical scroll bar control when a scroll event occurs in the control.
+
+
+
+
+ The WM_INITMENU message is sent when a menu is about to become active. It occurs when the user clicks an item on the menu bar or presses a menu key. This allows the application to modify the menu before it is displayed.
+
+
+
+
+ The WM_INITMENUPOPUP message is sent when a drop-down menu or submenu is about to become active. This allows an application to modify the menu before it is displayed, without changing the entire menu.
+
+
+
+
+ The WM_MENUSELECT message is sent to a menu's owner window when the user selects a menu item.
+
+
+
+
+ The WM_MENUCHAR message is sent when a menu is active and the user presses a key that does not correspond to any mnemonic or accelerator key. This message is sent to the window that owns the menu.
+
+
+
+
+ The WM_ENTERIDLE message is sent to the owner window of a modal dialog box or menu that is entering an idle state. A modal dialog box or menu enters an idle state when no messages are waiting in its queue after it has processed one or more previous messages.
+
+
+
+
+ The WM_MENURBUTTONUP message is sent when the user releases the right mouse button while the cursor is on a menu item.
+
+
+
+
+ The WM_MENUDRAG message is sent to the owner of a drag-and-drop menu when the user drags a menu item.
+
+
+
+
+ The WM_MENUGETOBJECT message is sent to the owner of a drag-and-drop menu when the mouse cursor enters a menu item or moves from the center of the item to the top or bottom of the item.
+
+
+
+
+ The WM_UNINITMENUPOPUP message is sent when a drop-down menu or submenu has been destroyed.
+
+
+
+
+ The WM_MENUCOMMAND message is sent when the user makes a selection from a menu.
+
+
+
+
+ An application sends the WM_CHANGEUISTATE message to indicate that the user interface (UI) state should be changed.
+
+
+
+
+ An application sends the WM_UPDATEUISTATE message to change the user interface (UI) state for the specified window and all its child windows.
+
+
+
+
+ An application sends the WM_QUERYUISTATE message to retrieve the user interface (UI) state for a window.
+
+
+
+
+ The WM_CTLCOLORMSGBOX message is sent to the owner window of a message box before Windows draws the message box. By responding to this message, the owner window can set the text and background colors of the message box by using the given display device context handle.
+
+
+
+
+ An edit control that is not read-only or disabled sends the WM_CTLCOLOREDIT message to its parent window when the control is about to be drawn. By responding to this message, the parent window can use the specified device context handle to set the text and background colors of the edit control.
+
+
+
+
+ Sent to the parent window of a list box before the system draws the list box. By responding to this message, the parent window can set the text and background colors of the list box by using the specified display device context handle.
+
+
+
+
+ The WM_CTLCOLORBTN message is sent to the parent window of a button before drawing the button. The parent window can change the button's text and background colors. However, only owner-drawn buttons respond to the parent window processing this message.
+
+
+
+
+ The WM_CTLCOLORDLG message is sent to a dialog box before the system draws the dialog box. By responding to this message, the dialog box can set its text and background colors using the specified display device context handle.
+
+
+
+
+ The WM_CTLCOLORSCROLLBAR message is sent to the parent window of a scroll bar control when the control is about to be drawn. By responding to this message, the parent window can use the display context handle to set the background color of the scroll bar control.
+
+
+
+
+ A static control, or an edit control that is read-only or disabled, sends the WM_CTLCOLORSTATIC message to its parent window when the control is about to be drawn. By responding to this message, the parent window can use the specified device context handle to set the text and background colors of the static control.
+
+
+
+
+ Use WM_MOUSEFIRST to specify the first mouse message. Use the PeekMessage() Function.
+
+
+
+
+ The WM_MOUSEMOVE message is posted to a window when the cursor moves. If the mouse is not captured, the message is posted to the window that contains the cursor. Otherwise, the message is posted to the window that has captured the mouse.
+
+
+
+
+ The WM_LBUTTONDOWN message is posted when the user presses the left mouse button while the cursor is in the client area of a window. If the mouse is not captured, the message is posted to the window beneath the cursor. Otherwise, the message is posted to the window that has captured the mouse.
+
+
+
+
+ The WM_LBUTTONUP message is posted when the user releases the left mouse button while the cursor is in the client area of a window. If the mouse is not captured, the message is posted to the window beneath the cursor. Otherwise, the message is posted to the window that has captured the mouse.
+
+
+
+
+ The WM_LBUTTONDBLCLK message is posted when the user double-clicks the left mouse button while the cursor is in the client area of a window. If the mouse is not captured, the message is posted to the window beneath the cursor. Otherwise, the message is posted to the window that has captured the mouse.
+
+
+
+
+ The WM_RBUTTONDOWN message is posted when the user presses the right mouse button while the cursor is in the client area of a window. If the mouse is not captured, the message is posted to the window beneath the cursor. Otherwise, the message is posted to the window that has captured the mouse.
+
+
+
+
+ The WM_RBUTTONUP message is posted when the user releases the right mouse button while the cursor is in the client area of a window. If the mouse is not captured, the message is posted to the window beneath the cursor. Otherwise, the message is posted to the window that has captured the mouse.
+
+
+
+
+ The WM_RBUTTONDBLCLK message is posted when the user double-clicks the right mouse button while the cursor is in the client area of a window. If the mouse is not captured, the message is posted to the window beneath the cursor. Otherwise, the message is posted to the window that has captured the mouse.
+
+
+
+
+ The WM_MBUTTONDOWN message is posted when the user presses the middle mouse button while the cursor is in the client area of a window. If the mouse is not captured, the message is posted to the window beneath the cursor. Otherwise, the message is posted to the window that has captured the mouse.
+
+
+
+
+ The WM_MBUTTONUP message is posted when the user releases the middle mouse button while the cursor is in the client area of a window. If the mouse is not captured, the message is posted to the window beneath the cursor. Otherwise, the message is posted to the window that has captured the mouse.
+
+
+
+
+ The WM_MBUTTONDBLCLK message is posted when the user double-clicks the middle mouse button while the cursor is in the client area of a window. If the mouse is not captured, the message is posted to the window beneath the cursor. Otherwise, the message is posted to the window that has captured the mouse.
+
+
+
+
+ The WM_MOUSEWHEEL message is sent to the focus window when the mouse wheel is rotated. The DefWindowProc function propagates the message to the window's parent. There should be no internal forwarding of the message, since DefWindowProc propagates it up the parent chain until it finds a window that processes it.
+
+
+
+
+ The WM_XBUTTONDOWN message is posted when the user presses the first or second X button while the cursor is in the client area of a window. If the mouse is not captured, the message is posted to the window beneath the cursor. Otherwise, the message is posted to the window that has captured the mouse.
+
+
+
+
+ The WM_XBUTTONUP message is posted when the user releases the first or second X button while the cursor is in the client area of a window. If the mouse is not captured, the message is posted to the window beneath the cursor. Otherwise, the message is posted to the window that has captured the mouse.
+
+
+
+
+ The WM_XBUTTONDBLCLK message is posted when the user double-clicks the first or second X button while the cursor is in the client area of a window. If the mouse is not captured, the message is posted to the window beneath the cursor. Otherwise, the message is posted to the window that has captured the mouse.
+
+
+
+
+ The WM_MOUSEHWHEEL message is sent to the focus window when the mouse's horizontal scroll wheel is tilted or rotated. The DefWindowProc function propagates the message to the window's parent. There should be no internal forwarding of the message, since DefWindowProc propagates it up the parent chain until it finds a window that processes it.
+
+
+
+
+ Use WM_MOUSELAST to specify the last mouse message. Used with PeekMessage() Function.
+
+
+
+
+ The WM_PARENTNOTIFY message is sent to the parent of a child window when the child window is created or destroyed, or when the user clicks a mouse button while the cursor is over the child window. When the child window is being created, the system sends WM_PARENTNOTIFY just before the CreateWindow or CreateWindowEx function that creates the window returns. When the child window is being destroyed, the system sends the message before any processing to destroy the window takes place.
+
+
+
+
+ The WM_ENTERMENULOOP message informs an application's main window procedure that a menu modal loop has been entered.
+
+
+
+
+ The WM_EXITMENULOOP message informs an application's main window procedure that a menu modal loop has been exited.
+
+
+
+
+ The WM_NEXTMENU message is sent to an application when the right or left arrow key is used to switch between the menu bar and the system menu.
+
+
+
+
+ The WM_SIZING message is sent to a window that the user is resizing. By processing this message, an application can monitor the size and position of the drag rectangle and, if needed, change its size or position.
+
+
+
+
+ The WM_CAPTURECHANGED message is sent to the window that is losing the mouse capture.
+
+
+
+
+ The WM_MOVING message is sent to a window that the user is moving. By processing this message, an application can monitor the position of the drag rectangle and, if needed, change its position.
+
+
+
+
+ Notifies applications that a power-management event has occurred.
+
+
+
+
+ Notifies an application of a change to the hardware configuration of a device or the computer.
+
+
+
+
+ An application sends the WM_MDICREATE message to a multiple-document interface (MDI) client window to create an MDI child window.
+
+
+
+
+ An application sends the WM_MDIDESTROY message to a multiple-document interface (MDI) client window to close an MDI child window.
+
+
+
+
+ An application sends the WM_MDIACTIVATE message to a multiple-document interface (MDI) client window to instruct the client window to activate a different MDI child window.
+
+
+
+
+ An application sends the WM_MDIRESTORE message to a multiple-document interface (MDI) client window to restore an MDI child window from maximized or minimized size.
+
+
+
+
+ An application sends the WM_MDINEXT message to a multiple-document interface (MDI) client window to activate the next or previous child window.
+
+
+
+
+ An application sends the WM_MDIMAXIMIZE message to a multiple-document interface (MDI) client window to maximize an MDI child window. The system resizes the child window to make its client area fill the client window. The system places the child window's window menu icon in the rightmost position of the frame window's menu bar, and places the child window's restore icon in the leftmost position. The system also appends the title bar text of the child window to that of the frame window.
+
+
+
+
+ An application sends the WM_MDITILE message to a multiple-document interface (MDI) client window to arrange all of its MDI child windows in a tile format.
+
+
+
+
+ An application sends the WM_MDICASCADE message to a multiple-document interface (MDI) client window to arrange all its child windows in a cascade format.
+
+
+
+
+ An application sends the WM_MDIICONARRANGE message to a multiple-document interface (MDI) client window to arrange all minimized MDI child windows. It does not affect child windows that are not minimized.
+
+
+
+
+ An application sends the WM_MDIGETACTIVE message to a multiple-document interface (MDI) client window to retrieve the handle to the active MDI child window.
+
+
+
+
+ An application sends the WM_MDISETMENU message to a multiple-document interface (MDI) client window to replace the entire menu of an MDI frame window, to replace the window menu of the frame window, or both.
+
+
+
+
+ The WM_ENTERSIZEMOVE message is sent one time to a window after it enters the moving or sizing modal loop. The window enters the moving or sizing modal loop when the user clicks the window's title bar or sizing border, or when the window passes the WM_SYSCOMMAND message to the DefWindowProc function and the wParam parameter of the message specifies the SC_MOVE or SC_SIZE value. The operation is complete when DefWindowProc returns.
+ The system sends the WM_ENTERSIZEMOVE message regardless of whether the dragging of full windows is enabled.
+
+
+
+
+ The WM_EXITSIZEMOVE message is sent one time to a window, after it has exited the moving or sizing modal loop. The window enters the moving or sizing modal loop when the user clicks the window's title bar or sizing border, or when the window passes the WM_SYSCOMMAND message to the DefWindowProc function and the wParam parameter of the message specifies the SC_MOVE or SC_SIZE value. The operation is complete when DefWindowProc returns.
+
+
+
+
+ Sent when the user drops a file on the window of an application that has registered itself as a recipient of dropped files.
+
+
+
+
+ An application sends the WM_MDIREFRESHMENU message to a multiple-document interface (MDI) client window to refresh the window menu of the MDI frame window.
+
+
+
+
+ Sent to an application when a window is activated. A window receives this message through its WindowProc function.
+
+
+
+
+ Sent to an application to notify it of changes to the IME window. A window receives this message through its WindowProc function.
+
+
+
+
+ Sent by an application to direct the IME window to carry out the requested command. The application uses this message to control the IME window that it has created. To send this message, the application calls the SendMessage function with the following parameters.
+
+
+
+
+ Sent to an application when the IME window finds no space to extend the area for the composition window. A window receives this message through its WindowProc function.
+
+
+
+
+ Sent to an application when the operating system is about to change the current IME. A window receives this message through its WindowProc function.
+
+
+
+
+ Sent to an application when the IME gets a character of the conversion result. A window receives this message through its WindowProc function.
+
+
+
+
+ Sent to an application to provide commands and request information. A window receives this message through its WindowProc function.
+
+
+
+
+ Sent to an application by the IME to notify the application of a key press and to keep message order. A window receives this message through its WindowProc function.
+
+
+
+
+ Sent to an application by the IME to notify the application of a key release and to keep message order. A window receives this message through its WindowProc function.
+
+
+
+
+ The WM_MOUSEHOVER message is posted to a window when the cursor hovers over the client area of the window for the period of time specified in a prior call to TrackMouseEvent.
+
+
+
+
+ The WM_MOUSELEAVE message is posted to a window when the cursor leaves the client area of the window specified in a prior call to TrackMouseEvent.
+
+
+
+
+ The WM_NCMOUSEHOVER message is posted to a window when the cursor hovers over the nonclient area of the window for the period of time specified in a prior call to TrackMouseEvent.
+
+
+
+
+ The WM_NCMOUSELEAVE message is posted to a window when the cursor leaves the nonclient area of the window specified in a prior call to TrackMouseEvent.
+
+
+
+
+ The WM_WTSSESSION_CHANGE message notifies applications of changes in session state.
+
+
+
+
+ An application sends a WM_CUT message to an edit control or combo box to delete (cut) the current selection, if any, in the edit control and copy the deleted text to the clipboard in CF_TEXT format.
+
+
+
+
+ An application sends the WM_COPY message to an edit control or combo box to copy the current selection to the clipboard in CF_TEXT format.
+
+
+
+
+ An application sends a WM_PASTE message to an edit control or combo box to copy the current content of the clipboard to the edit control at the current caret position. Data is inserted only if the clipboard contains data in CF_TEXT format.
+
+
+
+
+ An application sends a WM_CLEAR message to an edit control or combo box to delete (clear) the current selection, if any, from the edit control.
+
+
+
+
+ An application sends a WM_UNDO message to an edit control to undo the last operation. When this message is sent to an edit control, the previously deleted text is restored or the previously added text is deleted.
+
+
+
+
+ The WM_RENDERFORMAT message is sent to the clipboard owner if it has delayed rendering a specific clipboard format and if an application has requested data in that format. The clipboard owner must render data in the specified format and place it on the clipboard by calling the SetClipboardData function.
+
+
+
+
+ The WM_RENDERALLFORMATS message is sent to the clipboard owner before it is destroyed, if the clipboard owner has delayed rendering one or more clipboard formats. For the content of the clipboard to remain available to other applications, the clipboard owner must render data in all the formats it is capable of generating, and place the data on the clipboard by calling the SetClipboardData function.
+
+
+
+
+ The WM_DESTROYCLIPBOARD message is sent to the clipboard owner when a call to the EmptyClipboard function empties the clipboard.
+
+
+
+
+ The WM_DRAWCLIPBOARD message is sent to the first window in the clipboard viewer chain when the content of the clipboard changes. This enables a clipboard viewer window to display the new content of the clipboard.
+
+
+
+
+ The WM_PAINTCLIPBOARD message is sent to the clipboard owner by a clipboard viewer window when the clipboard contains data in the CF_OWNERDISPLAY format and the clipboard viewer's client area needs repainting.
+
+
+
+
+ The WM_VSCROLLCLIPBOARD message is sent to the clipboard owner by a clipboard viewer window when the clipboard contains data in the CF_OWNERDISPLAY format and an event occurs in the clipboard viewer's vertical scroll bar. The owner should scroll the clipboard image and update the scroll bar values.
+
+
+
+
+ The WM_SIZECLIPBOARD message is sent to the clipboard owner by a clipboard viewer window when the clipboard contains data in the CF_OWNERDISPLAY format and the clipboard viewer's client area has changed size.
+
+
+
+
+ The WM_ASKCBFORMATNAME message is sent to the clipboard owner by a clipboard viewer window to request the name of a CF_OWNERDISPLAY clipboard format.
+
+
+
+
+ The WM_CHANGECBCHAIN message is sent to the first window in the clipboard viewer chain when a window is being removed from the chain.
+
+
+
+
+ The WM_HSCROLLCLIPBOARD message is sent to the clipboard owner by a clipboard viewer window. This occurs when the clipboard contains data in the CF_OWNERDISPLAY format and an event occurs in the clipboard viewer's horizontal scroll bar. The owner should scroll the clipboard image and update the scroll bar values.
+
+
+
+
+ This message informs a window that it is about to receive the keyboard focus, giving the window the opportunity to realize its logical palette when it receives the focus.
+
+
+
+
+ The WM_PALETTEISCHANGING message informs applications that an application is going to realize its logical palette.
+
+
+
+
+ This message is sent by the OS to all top-level and overlapped windows after the window with the keyboard focus realizes its logical palette.
+ This message enables windows that do not have the keyboard focus to realize their logical palettes and update their client areas.
+
+
+
+
+ The WM_HOTKEY message is posted when the user presses a hot key registered by the RegisterHotKey function. The message is placed at the top of the message queue associated with the thread that registered the hot key.
+
+
+
+
+ The WM_PRINT message is sent to a window to request that it draw itself in the specified device context, most commonly in a printer device context.
+
+
+
+
+ The WM_PRINTCLIENT message is sent to a window to request that it draw its client area in the specified device context, most commonly in a printer device context.
+
+
+
+
+ The WM_APPCOMMAND message notifies a window that the user generated an application command event, for example, by clicking an application command button using the mouse or typing an application command key on the keyboard.
+
+
+
+
+ The WM_THEMECHANGED message is broadcast to every window following a theme change event. Examples of theme change events are the activation of a theme, the deactivation of a theme, or a transition from one theme to another.
+
+
+
+
+ Sent when the contents of the clipboard have changed.
+
+
+
+
+ The system will send a window the WM_DWMCOMPOSITIONCHANGED message to indicate that the availability of desktop composition has changed.
+
+
+
+
+ WM_DWMNCRENDERINGCHANGED is called when the non-client area rendering status of a window has changed. Only windows that have set the flag DWM_BLURBEHIND.fTransitionOnMaximized to true will get this message.
+
+
+
+
+ Sent to all top-level windows when the colorization color has changed.
+
+
+
+
+ WM_DWMWINDOWMAXIMIZEDCHANGE will let you know when a DWM composed window is maximized. You also have to register for this message as well. You'd have other windowd go opaque when this message is sent.
+
+
+
+
+ Sent to request extended title bar information. A window receives this message through its WindowProc function.
+
+
+
+
+ The WM_APP constant is used by applications to help define private messages, usually of the form WM_APP+X, where X is an integer value.
+
+
+
+
+ The WM_USER constant is used by applications to help define private messages for use by private window classes, usually of the form WM_USER+X, where X is an integer value.
+
+
+
+
+ An application sends the WM_CPL_LAUNCH message to Windows Control Panel to request that a Control Panel application be started.
+
+
+
+
+ The WM_CPL_LAUNCHED message is sent when a Control Panel application, started by the WM_CPL_LAUNCH message, has closed. The WM_CPL_LAUNCHED message is sent to the window identified by the wParam parameter of the WM_CPL_LAUNCH message that started the application.
+
+
+
+
+ WM_SYSTIMER is a well-known yet still undocumented message. Windows uses WM_SYSTIMER for internal actions like scrolling.
+
+
+
+ The window has a thin-line border.
+
+
+ The window has a title bar (includes the WS_BORDER style).
+
+
+ The window is a child window. A window with this style cannot have a menu bar. This style cannot be used with the WS_POPUP style.
+
+
+ Excludes the area occupied by child windows when drawing occurs within the parent window. This style is used when creating the parent window.
+
+
+
+ Clips child windows relative to each other; that is, when a particular child window receives a WM_PAINT message, the WS_CLIPSIBLINGS style clips all other overlapping child windows out of the region of the child window to be updated.
+ If WS_CLIPSIBLINGS is not specified and child windows overlap, it is possible, when drawing within the client area of a child window, to draw within the client area of a neighboring child window.
+
+
+
+ The window is initially disabled. A disabled window cannot receive input from the user. To change this after a window has been created, use the EnableWindow function.
+
+
+ The window has a border of a style typically used with dialog boxes. A window with this style cannot have a title bar.
+
+
+
+ The window is the first control of a group of controls. The group consists of this first control and all controls defined after it, up to the next control with the WS_GROUP style.
+ The first control in each group usually has the WS_TABSTOP style so that the user can move from group to group. The user can subsequently change the keyboard focus from one control in the group to the next control in the group by using the direction keys.
+ You can turn this style on and off to change dialog box navigation. To change this style after a window has been created, use the SetWindowLong function.
+
+
+
+ The window has a horizontal scroll bar.
+
+
+ The window is initially maximized.
+
+
+ The window has a maximize button. Cannot be combined with the WS_EX_CONTEXTHELP style. The WS_SYSMENU style must also be specified.
+
+
+ The window is initially minimized.
+
+
+ The window has a minimize button. Cannot be combined with the WS_EX_CONTEXTHELP style. The WS_SYSMENU style must also be specified.
+
+
+ The window is an overlapped window. An overlapped window has a title bar and a border.
+
+
+ The window is an overlapped window.
+
+
+ The window is a pop-up window. This style cannot be used with the WS_CHILD style.
+
+
+ The window is a pop-up window. The WS_CAPTION and WS_POPUPWINDOW styles must be combined to make the window menu visible.
+
+
+ The window has a sizing border.
+
+
+ The window has a window menu on its title bar. The WS_CAPTION style must also be specified.
+
+
+
+ The window is a control that can receive the keyboard focus when the user presses the TAB key.
+ Pressing the TAB key changes the keyboard focus to the next control with the WS_TABSTOP style.
+ You can turn this style on and off to change dialog box navigation. To change this style after a window has been created, use the SetWindowLong function.
+ For user-created windows and modeless dialogs to work with tab stops, alter the message loop to call the IsDialogMessage function.
+
+
+
+ The window is initially visible. This style can be turned on and off by using the ShowWindow or SetWindowPos function.
+
+
+ The window has a vertical scroll bar.
+
+
+
+ Specifies that a window created with this style accepts drag-drop files.
+
+
+
+
+ Forces a top-level window onto the taskbar when the window is visible.
+
+
+
+
+ Specifies that a window has a border with a sunken edge.
+
+
+
+
+ Windows XP: Paints all descendants of a window in bottom-to-top painting order using double-buffering. For more information, see Remarks. This cannot be used if the window has a class style of either CS_OWNDC or CS_CLASSDC.
+
+
+
+
+ Includes a question mark in the title bar of the window. When the user clicks the question mark, the cursor changes to a question mark with a pointer. If the user then clicks a child window, the child receives a WM_HELP message. The child window should pass the message to the parent window procedure, which should call the WinHelp function using the HELP_WM_HELP command. The Help application displays a pop-up window that typically contains help for the child window.
+ WS_EX_CONTEXTHELP cannot be used with the WS_MAXIMIZEBOX or WS_MINIMIZEBOX styles.
+
+
+
+
+ The window itself contains child windows that should take part in dialog box navigation. If this style is specified, the dialog manager recurses into children of this window when performing navigation operations such as handling the TAB key, an arrow key, or a keyboard mnemonic.
+
+
+
+
+ Creates a window that has a double border; the window can, optionally, be created with a title bar by specifying the WS_CAPTION style in the dwStyle parameter.
+
+
+
+
+ Windows 2000/XP: Creates a layered window. Note that this cannot be used for child windows. Also, this cannot be used if the window has a class style of either CS_OWNDC or CS_CLASSDC.
+
+
+
+
+ Arabic and Hebrew versions of Windows 98/Me, Windows 2000/XP: Creates a window whose horizontal origin is on the right edge. Increasing horizontal values advance to the left.
+
+
+
+
+ Creates a window that has generic left-aligned properties. This is the default.
+
+
+
+
+ If the shell language is Hebrew, Arabic, or another language that supports reading order alignment, the vertical scroll bar (if present) is to the left of the client area. For other languages, the style is ignored.
+
+
+
+
+ The window text is displayed using left-to-right reading-order properties. This is the default.
+
+
+
+
+ Creates a multiple-document interface (MDI) child window.
+
+
+
+
+ Windows 2000/XP: A top-level window created with this style does not become the foreground window when the user clicks it. The system does not bring this window to the foreground when the user minimizes or closes the foreground window.
+ To activate the window, use the SetActiveWindow or SetForegroundWindow function.
+ The window does not appear on the taskbar by default. To force the window to appear on the taskbar, use the WS_EX_APPWINDOW style.
+
+
+
+
+ Windows 2000/XP: A window created with this style does not pass its window layout to its child windows.
+
+
+
+
+ Specifies that a child window created with this style does not send the WM_PARENTNOTIFY message to its parent window when it is created or destroyed.
+
+
+
+
+ Combines the WS_EX_CLIENTEDGE and WS_EX_WINDOWEDGE styles.
+
+
+
+
+ Combines the WS_EX_WINDOWEDGE, WS_EX_TOOLWINDOW, and WS_EX_TOPMOST styles.
+
+
+
+
+ The window has generic "right-aligned" properties. This depends on the window class. This style has an effect only if the shell language is Hebrew, Arabic, or another language that supports reading-order alignment; otherwise, the style is ignored.
+ Using the WS_EX_RIGHT style for static or edit controls has the same effect as using the SS_RIGHT or ES_RIGHT style, respectively. Using this style with button controls has the same effect as using BS_RIGHT and BS_RIGHTBUTTON styles.
+
+
+
+
+ Vertical scroll bar (if present) is to the right of the client area. This is the default.
+
+
+
+
+ If the shell language is Hebrew, Arabic, or another language that supports reading-order alignment, the window text is displayed using right-to-left reading-order properties. For other languages, the style is ignored.
+
+
+
+
+ Creates a window with a three-dimensional border style intended to be used for items that do not accept user input.
+
+
+
+
+ Creates a tool window; that is, a window intended to be used as a floating toolbar. A tool window has a title bar that is shorter than a normal title bar, and the window title is drawn using a smaller font. A tool window does not appear in the taskbar or in the dialog that appears when the user presses ALT+TAB. If a tool window has a system menu, its icon is not displayed on the title bar. However, you can display the system menu by right-clicking or by typing ALT+SPACE.
+
+
+
+
+ Specifies that a window created with this style should be placed above all non-topmost windows and should stay above them, even when the window is deactivated. To add or remove this style, use the SetWindowPos function.
+
+
+
+
+ Specifies that a window created with this style should not be painted until siblings beneath the window (that were created by the same thread) have been painted. The window appears transparent because the bits of underlying sibling windows have already been painted.
+ To achieve transparency without these restrictions, use the SetWindowRgn function.
+
+
+
+
+ Specifies that a window has a border with a raised edge.
+
+
+
+
+ Hides the window and activates another window.
+
+
+
+
+ Activates and displays a window. If the window is minimized or maximized, the system restores it to its original size and position. An application should specify this flag when displaying the window for the first time.
+
+
+
+
+ Activates and displays a window. If the window is minimized or maximized, the system restores it to its original size and position. An application should specify this flag when displaying the window for the first time.
+
+
+
+
+ Activates the window and displays it as a minimized window.
+
+
+
+
+ Activates the window and displays it as a maximized window.
+
+
+
+
+ Maximizes the specified window.
+
+
+
+
+ Displays a window in its most recent size and position. This value is similar to , except the window is not activated.
+
+
+
+
+ Activates the window and displays it in its current size and position.
+
+
+
+
+ Minimizes the specified window and activates the next top-level window in the z-order.
+
+
+
+
+ Displays the window as a minimized window. This value is similar to , except the window is not activated.
+
+
+
+
+ Displays the window in its current size and position. This value is similar to , except the window is not activated.
+
+
+
+
+ Activates and displays the window. If the window is minimized or maximized, the system restores it to its original size and position. An application should specify this flag when restoring a minimized window.
+
+
+
+
+ Invalidates the rectangle or region that you specify in lprcUpdate or hrgnUpdate.
+ You can set only one of these parameters to a non-NULL value. If both are NULL, RDW_INVALIDATE invalidates the entire window.
+
+
+
+ Causes the OS to post a WM_PAINT message to the window regardless of whether a portion of the window is invalid.
+
+
+
+ Causes the window to receive a WM_ERASEBKGND message when the window is repainted.
+ Specify this value in combination with the RDW_INVALIDATE value; otherwise, RDW_ERASE has no effect.
+
+
+
+
+ Validates the rectangle or region that you specify in lprcUpdate or hrgnUpdate.
+ You can set only one of these parameters to a non-NULL value. If both are NULL, RDW_VALIDATE validates the entire window.
+ This value does not affect internal WM_PAINT messages.
+
+
+
+ Suppresses any pending WM_ERASEBKGND messages.
+
+
+ Excludes child windows, if any, from the repainting operation.
+
+
+ Includes child windows, if any, in the repainting operation.
+
+
+ Causes the affected windows, which you specify by setting the RDW_ALLCHILDREN and RDW_NOCHILDREN values, to receive WM_ERASEBKGND and WM_PAINT messages before the RedrawWindow returns, if necessary.
+
+
+
+ Causes the affected windows, which you specify by setting the RDW_ALLCHILDREN and RDW_NOCHILDREN values, to receive WM_ERASEBKGND messages before RedrawWindow returns, if necessary.
+ The affected windows receive WM_PAINT messages at the ordinary time.
+
+
+
+ Determine if 2 RECT are equal (deep compare)
+
+
+ Return the HashCode for this struct (not garanteed to be unique)
+
+
+ http://msdn.microsoft.com/en-us/library/ms182161.aspx
+
+
+ http://msdn.microsoft.com/en-us/library/windows/desktop/aa969518%28v=vs.85%29.aspx
+
+
+ http://msdn.microsoft.com/en-us/library/windows/desktop/aa969512%28v=vs.85%29.aspx
+
+
+ http://msdn.microsoft.com/en-us/library/windows/desktop/aa969524%28v=vs.85%29.aspx
+
+
+ http://msdn.microsoft.com/en-us/library/windows/desktop/ms633572%28v=vs.85%29.aspx
+
+
+ http://msdn.microsoft.com/en-us/library/dd144901%28v=VS.85%29.aspx
+
+
+ http://msdn.microsoft.com/en-us/library/dd145064%28v=VS.85%29.aspx
+
+
+ http://msdn.microsoft.com/en-us/library/windows/desktop/ms633545(v=vs.85).aspx
+
+
+ http://msdn.microsoft.com/en-us/library/windows/desktop/ms647486%28v=vs.85%29.aspx
+
+
+ http://msdn.microsoft.com/en-us/library/windows/desktop/ms633528(v=vs.85).aspx
+
+
+ http://msdn.microsoft.com/en-us/library/windows/desktop/ms647985(v=vs.85).aspx
+
+
+ http://msdn.microsoft.com/en-us/library/windows/desktop/ms648003(v=vs.85).aspx
+
+
+ http://msdn.microsoft.com/en-us/library/windows/desktop/ms644944(v=vs.85).aspx
+
+
+ http://msdn.microsoft.com/en-us/library/windows/desktop/ms648390(v=vs.85).aspx
+
+
+ http://msdn.microsoft.com/en-us/library/windows/desktop/ms646258(v=vs.85).aspx
+
+
+ http://msdn.microsoft.com/en-us/library/windows/desktop/ms684175%28v=vs.85%29.aspx
+
+
+ http://msdn.microsoft.com/en-us/library/windows/desktop/ms683152%28v=vs.85%29.aspx
+
+
+
+ Sets the show state and the restored, minimized, and maximized positions of the specified window.
+
+
+ A handle to the window.
+
+
+ A pointer to a WINDOWPLACEMENT structure that specifies the new show state and window positions.
+
+ Before calling SetWindowPlacement, set the length member of the WINDOWPLACEMENT structure to sizeof(WINDOWPLACEMENT). SetWindowPlacement fails if the length member is not set correctly.
+
+
+
+ If the function succeeds, the return value is nonzero.
+
+ If the function fails, the return value is zero. To get extended error information, call GetLastError.
+
+
+
+
+
+ Retrieves the show state and the restored, minimized, and maximized positions of the specified window.
+
+
+ A handle to the window.
+
+
+ A pointer to the WINDOWPLACEMENT structure that receives the show state and position information.
+
+ Before calling GetWindowPlacement, set the length member to sizeof(WINDOWPLACEMENT). GetWindowPlacement fails if lpwndpl-> length is not set correctly.
+
+
+
+ If the function succeeds, the return value is nonzero.
+
+ If the function fails, the return value is zero. To get extended error information, call GetLastError.
+
+
+
+
+ http://msdn.microsoft.com/en-us/library/windows/desktop/ms647636(v=vs.85).aspx
+
+
+
+ A class that allows for the detection and alteration of a MetroWindow's theme and accent.
+
+
+
+
+ Gets a list of all of default themes.
+
+
+
+
+ Gets a list of all of default metro themes.
+
+
+
+
+ Adds an accent with the given name.
+
+
+
+ true if the accent does not exists and can be added.
+
+
+
+ Adds an app theme with the given name.
+
+
+
+ true if the app theme does not exists and can be added.
+
+
+
+ Gets app theme with the given resource dictionary.
+
+
+ AppTheme
+
+
+
+ Gets app theme with the given name and theme type (light or dark).
+
+
+ AppTheme
+
+
+
+ Gets the inverse of the given .
+ This method relies on the "Dark" or "Light" affix to be present.
+
+ The app theme.
+ The inverse or null if it couldn't be found.
+
+ Returns BaseLight, if BaseDark is given or vice versa.
+ Custom Themes must end with "Dark" or "Light" for this to work, for example "CustomDark" and "CustomLight".
+
+
+
+
+ Gets the with the given name.
+
+
+ The or null, if the app theme wasn't found
+
+
+
+ Gets the with the given resource dictionary.
+
+
+ The or null, if the accent wasn't found.
+
+
+
+ Determines whether the specified resource dictionary represents an .
+
+ This might include runtime accents which do not have a resource uri.
+
+ The resources.
+ true if the resource dictionary is an ; otherwise, false.
+ resources
+
+
+
+ Gets a resource from the detected AppStyle.
+
+ The window to check. If this is null, the Application's sources will be checked.
+ The key to check against.
+ The resource object or null, if the resource wasn't found.
+
+
+
+ Change the theme for the whole application.
+
+
+
+
+
+
+ Change theme for the given window.
+
+
+
+
+
+
+ Change accent and theme for the whole application.
+
+ The instance of Application to change.
+ The accent to apply.
+ The theme to apply.
+
+
+
+ Change accent and theme for the given window.
+
+ The Window to change.
+ The accent to apply.
+ The theme to apply.
+
+
+
+ Changes the accent and theme of a ResourceDictionary directly.
+
+ The ResourceDictionary to modify.
+ The accent to apply to the ResourceDictionary.
+ The theme to apply to the ResourceDictionary.
+
+
+
+ Copies all resource keys from one resource to another.
+
+ The source resource dictionary.
+ The destination resource dictionary.
+
+ fromRD
+ or
+ toRD
+
+
+
+
+ Scans the window resources and returns it's accent and theme.
+
+
+
+
+ Scans the window resources and returns it's accent and theme.
+
+ The Window to scan.
+
+
+
+ Scans the application resources and returns it's accent and theme.
+
+ The Application instance to scan.
+
+
+
+ Scans a resources and returns it's accent and theme.
+
+ The ResourceDictionary to check.
+
+
+
+ This event fires if accent color and theme was changed
+ this should be using the weak event pattern, but for now it's enough
+
+
+
+
+ Invalidates global colors and resources.
+ Sometimes the ContextMenu is not changing the colors, so this will fix it.
+
+
+
+ IID_IApplicationAssociationRegistration
+
+
+ IID_IConnectionPoint
+
+
+ IID_IConnectionPointContainer
+
+
+ IID_IEnumConnectionPoints
+
+
+ IID_IEnumConnections
+
+
+ IID_IEnumIDList
+
+
+ IID_IEnumObjects
+
+
+ IID_IFileDialog
+
+
+ IID_IFileDialogEvents
+
+
+ IID_IFileOpenDialog
+
+
+ IID_IFileSaveDialog
+
+
+ IID_IHTMLDocument
+
+
+ IID_IHTMLDocument2
+
+
+ IID_IModalWindow
+
+
+ IID_IObjectArray
+
+
+ IID_IObjectCollection
+
+
+ IID_IPropertyNotifySink
+
+
+ IID_IPropertyStore
+
+
+ IID_IServiceProvider
+
+
+ IID_IShellFolder
+
+
+ IID_IShellLink
+
+
+ IID_IShellItem
+
+
+ IID_IShellItem2
+
+
+ IID_IShellItemArray
+
+
+ IID_ITaskbarList
+
+
+ IID_ITaskbarList2
+
+
+ IID_IUnknown
+
+
+ IID_IWebBrowser2
+
+
+ DIID_DWebBrowserEvents
+
+
+ IID_DWebBrowserEvents2
+
+
+ IID_IWICBitmapDecoder
+
+
+ IID_IWICBitmapFlipRotator
+
+
+ IID_IWICBitmapFrameDecode
+
+
+ IID_IWICBitmap
+
+
+ IID_IWICBitmapSource
+
+
+ IID_IWICFormatConverter
+
+
+ IID_IWICImagingFactory
+
+
+ IID_IWICStream
+
+
+ IID_IApplicationDestinations
+
+
+ IID_IApplicationDocumentLists
+
+
+ IID_ICustomDestinationList
+
+
+ IID_IObjectWithAppUserModelID
+
+
+ IID_IObjectWithProgID
+
+
+ IID_ITaskbarList3
+
+
+ IID_ITaskbarList4
+
+
+ SID_SWebBrowserApp
+
+
+ CLSID_ApplicationAssociationRegistration
+ IID_IApplicationAssociationRegistration
+
+
+ CLSID_DragDropHelper
+
+
+ CLSID_FileOpenDialog
+ IID_IFileOpenDialog
+
+
+ CLSID_FileSaveDialog
+ IID_IFileSaveDialog
+
+
+ CLSID_TaskbarList
+ IID_ITaskbarList
+
+
+ CLSID_EnumerableObjectCollection
+ IID_IEnumObjects.
+
+
+ CLSID_ShellLink
+ IID_IShellLink
+
+
+ CLSID_WICImagingFactory
+
+
+ CLSID_DestinationList
+ IID_ICustomDestinationList
+
+
+ CLSID_ApplicationDestinations
+ IID_IApplicationDestinations
+
+
+ CLSID_ApplicationDocumentLists
+ IID_IApplicationDocumentLists
+
+
+ A static class for verifying assumptions.
+
+
+ A function signature for Assert.Evaluate.
+
+
+ A function signature for Assert.Implies.
+ Returns the truth of a predicate.
+
+
+
+ Executes the specified argument.
+
+ The function to execute.
+
+
+ Obsolete: Use Standard.Assert.AreEqual instead of Assert.Equals
+ The generic type to compare for equality.
+ The first generic type data to compare. This is is the expected value.
+ The second generic type data to compare. This is the actual value.
+
+
+
+ Verifies that two generic type data are equal. The assertion fails if they are not.
+
+ The generic type to compare for equality.
+ The first generic type data to compare. This is is the expected value.
+ The second generic type data to compare. This is the actual value.
+ This breaks into the debugger in the case of a failed assertion.
+
+
+
+ Verifies that two generic type data are not equal. The assertion fails if they are.
+
+ The generic type to compare for inequality.
+ The first generic type data to compare. This is is the value that's not expected.
+ The second generic type data to compare. This is the actual value.
+ This breaks into the debugger in the case of a failed assertion.
+
+
+
+ Verifies that if the specified condition is true, then so is the result.
+ The assertion fails if the condition is true but the result is false.
+
+ if set to true [condition].
+
+ A second Boolean statement. If the first was true then so must this be.
+ If the first statement was false then the value of this is ignored.
+
+ This breaks into the debugger in the case of a failed assertion.
+
+
+
+ Lazy evaluation overload. Verifies that if a condition is true, then so is a secondary value.
+
+ The conditional value.
+ A function to be evaluated for truth if the condition argument is true.
+
+ This overload only evaluates the result if the first condition is true.
+
+
+
+
+ Verifies that a string has content. I.e. it is not null and it is not empty.
+
+ The string to verify.
+
+
+
+ Verifies that a string has content. I.e. it is not null and it is not purely whitespace.
+
+ The string to verify.
+
+
+
+ Verifies the specified value is not null. The assertion fails if it is.
+
+ The generic reference type.
+ The value to check for nullness.
+ This breaks into the debugger in the case of a failed assertion.
+
+
+
+ Verifies that the specified condition is false. The assertion fails if it is true.
+
+ The expression that should be false.
+ This breaks into the debugger in the case of a failed assertion.
+
+
+
+ Verifies that the specified condition is false. The assertion fails if it is true.
+
+ The expression that should be false.
+ The message to display if the condition is true.
+ This breaks into the debugger in the case of a failed assertion.
+
+
+
+ Verifies that the specified condition is true. The assertion fails if it is not.
+
+ A condition that is expected to be true.
+ This breaks into the debugger in the case of a failed assertion.
+
+
+
+ Verifies that the specified condition is true. The assertion fails if it is not.
+
+ A condition that is expected to be true.
+ The message to write in case the condition is false.
+ This breaks into the debugger in the case of a failed assertion.
+
+
+
+ This line should never be executed. The assertion always fails.
+
+ This breaks into the debugger in the case of a failed assertion.
+
+
+
+ This line should never be executed. The assertion always fails.
+
+ The message to display if this function is executed.
+ This breaks into the debugger in the case of a failed assertion.
+
+
+
+ Verifies that the specified object is null. The assertion fails if it is not.
+
+ The item to verify is null.
+
+
+
+ Verifies that the specified value is within the expected range. The assertion fails if it isn't.
+
+ The lower bound inclusive value.
+ The value to verify.
+ The upper bound inclusive value.
+
+
+
+ Verifies that the specified value is within the expected range. The assertion fails if it isn't.
+
+ The lower bound inclusive value.
+ The value to verify.
+ The upper bound exclusive value.
+
+
+
+ Verify the current thread's apartment state is what's expected. The assertion fails if it isn't
+
+
+ The expected apartment state for the current thread.
+
+ This breaks into the debugger in the case of a failed assertion.
+
+
+
+ DoubleUtil uses fixed eps to provide fuzzy comparison functionality for doubles.
+ Note that FP noise is a big problem and using any of these compare
+ methods is not a complete solution, but rather the way to reduce
+ the probability of repeating unnecessary work.
+
+
+
+
+ Epsilon - more or less random, more or less small number.
+
+
+
+
+ AreClose returns whether or not two doubles are "close". That is, whether or
+ not they are within epsilon of each other.
+ There are plenty of ways for this to return false even for numbers which
+ are theoretically identical, so no code calling this should fail to work if this
+ returns false.
+
+ The first double to compare.
+ The second double to compare.
+ The result of the AreClose comparision.
+
+
+
+ LessThan returns whether or not the first double is less than the second double.
+ That is, whether or not the first is strictly less than *and* not within epsilon of
+ the other number.
+ There are plenty of ways for this to return false even for numbers which
+ are theoretically identical, so no code calling this should fail to work if this
+ returns false.
+
+ The first double to compare.
+ The second double to compare.
+ The result of the LessThan comparision.
+
+
+
+ GreaterThan returns whether or not the first double is greater than the second double.
+ That is, whether or not the first is strictly greater than *and* not within epsilon of
+ the other number.
+ There are plenty of ways for this to return false even for numbers which
+ are theoretically identical, so no code calling this should fail to work if this
+ returns false.
+
+ The first double to compare.
+ The second double to compare.
+ The result of the GreaterThan comparision.
+
+
+
+ LessThanOrClose returns whether or not the first double is less than or close to
+ the second double. That is, whether or not the first is strictly less than or within
+ epsilon of the other number.
+ There are plenty of ways for this to return false even for numbers which
+ are theoretically identical, so no code calling this should fail to work if this
+ returns false.
+
+ The first double to compare.
+ The second double to compare.
+ The result of the LessThanOrClose comparision.
+
+
+
+ GreaterThanOrClose returns whether or not the first double is greater than or close to
+ the second double. That is, whether or not the first is strictly greater than or within
+ epsilon of the other number.
+ There are plenty of ways for this to return false even for numbers which
+ are theoretically identical, so no code calling this should fail to work if this
+ returns false.
+
+ The first double to compare.
+ The second double to compare.
+ The result of the GreaterThanOrClose comparision.
+
+
+
+ Test to see if a double is a finite number (is not NaN or Infinity).
+
+ The value to test.
+ Whether or not the value is a finite number.
+
+
+
+ Test to see if a double a valid size value (is finite and > 0).
+
+ The value to test.
+ Whether or not the value is a valid size value.
+
+
+
+ Convert a point in device independent pixels (1/96") to a point in the system coordinates.
+
+ A point in the logical coordinate system.
+ Returns the parameter converted to the system's coordinates.
+
+
+
+ Convert a point in system coordinates to a point in device independent pixels (1/96").
+
+ A point in the physical coordinate system.
+ Returns the parameter converted to the device independent coordinate system.
+
+
+
+ Wrapper for common Win32 status codes.
+
+
+
+ The operation completed successfully.
+
+
+ Incorrect function.
+
+
+ The system cannot find the file specified.
+
+
+ The system cannot find the path specified.
+
+
+ The system cannot open the file.
+
+
+ Access is denied.
+
+
+ The handle is invalid.
+
+
+ Not enough storage is available to complete this operation.
+
+
+ There are no more files.
+
+
+ The process cannot access the file because it is being used by another process.
+
+
+ The parameter is incorrect.
+
+
+ The data area passed to a system call is too small.
+
+
+ Cannot nest calls to LoadModule.
+
+
+ Illegal operation attempted on a registry key that has been marked for deletion.
+
+
+ Element not found.
+
+
+ There was no match for the specified key in the index.
+
+
+ An invalid device was specified.
+
+
+ The operation was canceled by the user.
+
+
+ Cannot find window class.
+
+
+ The window class was already registered.
+
+
+ The specified datatype is invalid.
+
+
+
+ Create a new Win32 error.
+
+ The integer value of the error.
+
+
+ Performs HRESULT_FROM_WIN32 conversion.
+ The Win32 error being converted to an HRESULT.
+ The equivilent HRESULT value.
+
+
+ Performs HRESULT_FROM_WIN32 conversion.
+ The equivilent HRESULT value.
+
+
+ Performs the equivalent of Win32's GetLastError()
+ A Win32Error instance with the result of the native GetLastError
+
+
+
+ Compare two Win32 error codes for equality.
+
+ The first error code to compare.
+ The second error code to compare.
+ Whether the two error codes are the same.
+
+
+
+ Compare two Win32 error codes for inequality.
+
+ The first error code to compare.
+ The second error code to compare.
+ Whether the two error codes are not the same.
+
+
+ FACILITY_NULL
+
+
+ FACILITY_RPC
+
+
+ FACILITY_DISPATCH
+
+
+ FACILITY_STORAGE
+
+
+ FACILITY_ITF
+
+
+ FACILITY_WIN32
+
+
+ FACILITY_WINDOWS
+
+
+ FACILITY_CONTROL
+
+
+ MSDN doced facility code for ESE errors.
+
+
+ FACILITY_WINCODEC (WIC)
+
+
+ Wrapper for HRESULT status codes.
+
+
+ S_OK
+
+
+ S_FALSE
+
+
+ E_PENDING
+
+
+ E_NOTIMPL
+
+
+ E_NOINTERFACE
+
+
+ E_POINTER
+
+
+ E_ABORT
+
+
+ E_FAIL
+
+
+ E_UNEXPECTED
+
+
+ STG_E_INVALIDFUNCTION
+
+
+ REGDB_E_CLASSNOTREG
+
+
+ DESTS_E_NO_MATCHING_ASSOC_HANDLER. Win7 internal error code for Jump Lists.
+ There is no Assoc Handler for the given item registered by the specified application.
+
+
+ DESTS_E_NORECDOCS. Win7 internal error code for Jump Lists.
+ The given item is excluded from the recent docs folder by the NoRecDocs bit on its registration.
+
+
+ DESTS_E_NOTALLCLEARED. Win7 internal error code for Jump Lists.
+ Not all of the items were successfully cleared
+
+
+ E_ACCESSDENIED
+ Win32Error ERROR_ACCESS_DENIED.
+
+
+ E_OUTOFMEMORY
+ Win32Error ERROR_OUTOFMEMORY.
+
+
+ E_INVALIDARG
+ Win32Error ERROR_INVALID_PARAMETER.
+
+
+ INTSAFE_E_ARITHMETIC_OVERFLOW
+
+
+ COR_E_OBJECTDISPOSED
+
+
+ WC_E_GREATERTHAN
+
+
+ WC_E_SYNTAX
+
+
+
+ Create an HRESULT from an integer value.
+
+
+
+
+
+ Convert an HRESULT to an int. Used for COM interface declarations out of our control.
+
+
+
+
+ retrieve HRESULT_FACILITY
+
+
+
+
+ retrieve HRESULT_CODE
+
+
+
+
+ Get a string representation of this HRESULT.
+
+
+
+
+
+ Convert the result of Win32 GetLastError() into a raised exception.
+
+
+
+
+ HIGHCONTRAST flags
+
+
+
+
+ DROPIMAGE_*
+
+
+
+
+ BITMAPINFOHEADER Compression type. BI_*.
+
+
+
+
+ CombingRgn flags. RGN_*
+
+
+
+
+ Creates the intersection of the two combined regions.
+
+
+
+
+ Creates the union of two combined regions.
+
+
+
+
+ Creates the union of two combined regions except for any overlapping areas.
+
+
+
+
+ Combines the parts of hrgnSrc1 that are not part of hrgnSrc2.
+
+
+
+
+ Creates a copy of the region identified by hrgnSrc1.
+
+
+
+
+ For IWebBrowser2. OLECMDEXECOPT_*
+
+
+
+
+ For IWebBrowser2. OLECMDF_*
+
+
+
+
+ For IWebBrowser2. OLECMDID_*
+
+
+
+
+ For IWebBrowser2. READYSTATE_*
+
+
+
+
+ DATAOBJ_GET_ITEM_FLAGS. DOGIF_*.
+
+
+
+ Use the system default, which is to display all error dialog boxes.
+
+
+
+ The system does not display the critical-error-handler message box.
+ Instead, the system sends the error to the calling process.
+
+
+
+
+ 64-bit Windows: The system automatically fixes memory alignment faults and makes them
+ invisible to the application. It does this for the calling process and any descendant processes.
+ After this value is set for a process, subsequent attempts to clear the value are ignored.
+
+
+
+
+ The system does not display the general-protection-fault message box.
+ This flag should only be set by debugging applications that handle general
+ protection (GP) faults themselves with an exception handler.
+
+
+
+
+ The system does not display a message box when it fails to find a file.
+ Instead, the error is returned to the calling process.
+
+
+
+
+ Non-client hit test values, HT*
+
+
+
+
+ GetClassLongPtr values, GCLP_*
+
+
+
+
+ GetWindowLongPtr values, GWL_*
+
+
+
+
+ SystemMetrics. SM_*
+
+
+
+
+ SystemParameterInfo values, SPI_*
+
+
+
+
+ SystemParameterInfo flag values, SPIF_*
+
+
+
+
+ CS_*
+
+
+
+
+ WindowStyle values, WS_*
+
+
+
+
+ Window message values, WM_*
+
+
+
+
+ Window style extended values, WS_EX_*
+
+
+
+
+ GetDeviceCaps nIndex values.
+
+
+
+ Number of bits per pixel
+
+
+
+
+ Number of planes
+
+
+
+
+ Logical pixels inch in X
+
+
+
+
+ Logical pixels inch in Y
+
+
+
+
+ "FILEOP_FLAGS", FOF_*.
+
+
+
+
+ EnableMenuItem uEnable values, MF_*
+
+
+
+
+ Possible return value for EnableMenuItem
+
+
+
+ Specifies the type of visual style attribute to set on a window.
+
+
+ Non-client area window attributes will be set.
+
+
+
+ DWMFLIP3DWINDOWPOLICY. DWMFLIP3D_*
+
+
+
+
+ DWMNCRENDERINGPOLICY. DWMNCRP_*
+
+
+
+
+ DWMWINDOWATTRIBUTE. DWMWA_*
+
+
+
+
+ WindowThemeNonClientAttributes
+
+
+
+ Prevents the window caption from being drawn.
+
+
+ Prevents the system icon from being drawn.
+
+
+ Prevents the system icon menu from appearing.
+
+
+ Prevents mirroring of the question mark, even in right-to-left (RTL) layout.
+
+
+ A mask that contains all the valid bits.
+
+
+
+ SetWindowPos options
+
+
+
+
+ ShowWindow options
+
+
+
+
+ SCF_ISSECURE
+
+
+
+
+ GDI+ Status codes
+
+
+
+
+ MSGFLT_*. New in Vista. Realiased in Windows 7.
+
+
+
+
+ Shell_NotifyIcon messages. NIM_*
+
+
+
+
+ SHAddToRecentDocuments flags. SHARD_*
+
+
+
+
+ Shell_NotifyIcon flags. NIF_*
+
+
+
+
+ Vista only.
+
+
+
+
+ Vista only.
+
+
+
+
+ Shell_NotifyIcon info flags. NIIF_*
+
+
+
+ XP SP2 and later.
+
+
+ XP and later.
+
+
+ Vista and later.
+
+
+ Windows 7 and later
+
+
+ XP and later. Native version called NIIF_ICON_MASK.
+
+
+
+ AC_*
+
+
+
+
+ The state of the icon. There are two flags that can be set independently.
+ NIS_HIDDEN = 1. The icon is hidden.
+ NIS_SHAREDICON = 2. The icon is shared.
+
+
+
+ The idlist for the shell item that should be added to the recent docs folder.
+
+
+ The id of the application that should be associated with this recent doc.
+
+
+ Defines options that are used to set window visual style attributes.
+
+
+
+ A combination of flags that modify window visual style attributes.
+ Can be a combination of the WTNCA constants.
+
+
+
+
+ A bitmask that describes how the values specified in dwFlags should be applied.
+ If the bit corresponding to a value in dwFlags is 0, that flag will be removed.
+ If the bit is 1, the flag will be added.
+
+
+
+ Width of left border that retains its size.
+
+
+ Width of right border that retains its size.
+
+
+ Height of top border that retains its size.
+
+
+ Height of bottom border that retains its size.
+
+
+
+ initialize this field using: Marshal.SizeOf(typeof(APPBARDATA));
+
+
+
+ Delegate declaration that matches native WndProc signatures.
+
+
+ Delegate declaration that matches managed WndProc signatures.
+
+
+
+ Sets attributes to control how visual styles are applied to a specified window.
+
+
+ Handle to a window to apply changes to.
+
+
+ Value of type WINDOWTHEMEATTRIBUTETYPE that specifies the type of attribute to set.
+ The value of this parameter determines the type of data that should be passed in the pvAttribute parameter.
+ Can be the following value:
+ WTA_NONCLIENT (Specifies non-client related attributes).
+ pvAttribute must be a pointer of type WTA_OPTIONS.
+
+
+ A pointer that specifies attributes to set. Type is determined by the value of the eAttribute value.
+
+
+ Specifies the size, in bytes, of the data pointed to by pvAttribute.
+
+
+
+ Overload of SystemParametersInfo for getting and setting NONCLIENTMETRICS.
+
+
+ Overload of SystemParametersInfo for getting and setting HIGHCONTRAST.
+
+
+
+ Sets the User Model AppID for the current process, enabling Windows to retrieve this ID
+
+
+
+
+
+ Retrieves the User Model AppID that has been explicitly set for the current process via SetCurrentProcessExplicitAppUserModelID
+
+
+
+
+ ASSOCIATIONLEVEL, AL_*
+
+
+ ASSOCIATIONTYPE, AT_*
+
+
+ FileDialog AddPlace options. FDAP_*
+
+
+ IFileDialog options. FOS_*
+
+
+ FDE_OVERWRITE_RESPONSE. FDEOR_*
+
+
+ FDE_SHAREVIOLATION_RESPONSE. FDESVR_*
+
+
+ ShellItem attribute flags. SIATTRIBFLAGS_*
+
+
+
+ Flags for SetTabProperties. STPF_*
+
+ The native enum was called STPFLAG.
+
+
+
+ Flags for Setting Taskbar Progress state. TBPF_*
+
+
+ The native enum was called TBPFLAG.
+
+
+
+
+ THUMBBUTTON mask. THB_*
+
+
+
+
+ THUMBBUTTON flags. THBF_*
+
+
+
+
+ GetPropertyStoreFlags. GPS_*.
+
+
+ These are new for Vista, but are used in downlevel components
+
+
+
+
+ KNOWNDESTCATEGORY. KDC_*
+
+
+
+ Objects can be copied
+ DROPEFFECT_COPY
+
+
+ Objects can be moved
+ DROPEFFECT_MOVE
+
+
+ Objects can be linked
+
+ DROPEFFECT_LINK.
+
+ If this bit is set on an item in the shell folder, a
+ 'Create Shortcut' menu item will be added to the File
+ menu and context menus for the item. If the user selects
+ that command, your IContextMenu::InvokeCommand() will be called
+ with 'link'.
+ That flag will also be used to determine if 'Create Shortcut'
+ should be added when the item in your folder is dragged to another
+ folder.
+
+
+
+ supports BindToObject(IID_IStorage)
+
+
+ Objects can be renamed
+
+
+ Objects can be deleted
+
+
+ Objects have property sheets
+
+
+ Objects are drop target
+
+
+ Object is encrypted (use alt color)
+
+
+ 'Slow' object
+
+
+ Ghosted icon
+
+
+ Shortcut (link)
+
+
+ Shared
+
+
+ Read-only
+
+
+ Hidden object
+
+
+ May contain children with SFGAO_FILESYSTEM
+
+
+ Support BindToObject(IID_IShellFolder)
+
+
+ Is a win32 file system object (file/folder/root)
+
+
+ May contain children with SFGAO_FOLDER (may be slow)
+
+
+ Invalidate cached information (may be slow)
+
+
+ Is this removeable media?
+
+
+ Object is compressed (use alt color)
+
+
+ Supports IShellFolder, but only implements CreateViewObject() (non-folder view)
+
+
+ Is a non-enumerated object (should be hidden)
+
+
+ Should show bold in explorer tree
+
+
+ Obsolete
+
+
+ Obsolete
+
+
+ Supports BindToObject(IID_IStream)
+
+
+ May contain children with SFGAO_STORAGE or SFGAO_STREAM
+
+
+ For determining storage capabilities, ie for open/save semantics
+
+
+
+ Attributes that are masked out for PKEY_SFGAOFlags because they are considered
+ to cause slow calculations or lack context
+ (SFGAO_VALIDATE | SFGAO_ISSLOW | SFGAO_HASSUBFOLDER and others)
+
+
+
+
+ IShellFolder::EnumObjects grfFlags bits. Also called SHCONT
+
+
+
+
+ IShellFolder::GetDisplayNameOf/SetNameOf uFlags. Also called SHGDNF.
+
+
+ For compatibility with SIGDN, these bits must all sit in the LOW word.
+
+
+
+
+ SHELLITEMCOMPAREHINTF. SICHINT_*.
+
+
+
+ iOrder based on display in a folder view
+
+
+ exact instance compare
+
+
+ iOrder based on canonical name (better performance)
+
+
+
+ ShellItem enum. SIGDN_*.
+
+
+
+
+ STR_GPS_*
+
+
+ When requesting a property store through IShellFolder, you can specify the equivalent of
+ GPS_DEFAULT by passing in a null IBindCtx parameter.
+
+ You can specify the equivalent of GPS_READWRITE by passing a mode of STGM_READWRITE | STGM_EXCLUSIVE
+ in the bind context
+
+ Here are the string versions of GPS_ flags, passed to IShellFolder::BindToObject() via IBindCtx::RegisterObjectParam()
+ These flags are valid when requesting an IPropertySetStorage or IPropertyStore handler
+
+ The meaning of these flags are described above.
+
+ There is no STR_ equivalent for GPS_TEMPORARY because temporary property stores
+ are provided by IShellItem2 only -- not by the underlying IShellFolder.
+
+
+
+
+ WPARAM value for a THUMBBUTTON being clicked.
+
+
+
+ fmtid
+
+
+ pid
+
+
+ PKEY_Title
+
+
+ PKEY_AppUserModel_ID
+
+
+ PKEY_AppUserModel_IsDestListSeparator
+
+
+ PKEY_AppUserModel_RelaunchCommand
+
+
+ PKEY_AppUserModel_RelaunchDisplayNameResource
+
+
+ PKEY_AppUserModel_RelaunchIconResource
+
+
+ Unknown Object Array
+
+
+
+ Shell Namespace helper
+
+
+
+
+ Shell Namespace helper 2
+
+
+
+
+ This function must be called first to validate use of other members.
+
+
+
+
+ This function adds a tab for hwnd to the taskbar.
+
+ The HWND for which to add the tab.
+
+
+
+ This function deletes a tab for hwnd from the taskbar.
+
+ The HWND for which the tab is to be deleted.
+
+
+
+ This function activates the tab associated with hwnd on the taskbar.
+
+ The HWND for which the tab is to be actuvated.
+
+
+
+ This function marks hwnd in the taskbar as the active tab.
+
+ The HWND to activate.
+
+
+
+ Marks a window as full-screen.
+
+ The handle of the window to be marked.
+ A Boolean value marking the desired full-screen status of the window.
+
+ Setting the value of fFullscreen to true, the Shell treats this window as a full-screen window, and the taskbar
+ is moved to the bottom of the z-order when this window is active. Setting the value of fFullscreen to false
+ removes the full-screen marking, but does not cause the Shell to treat the window as though it were
+ definitely not full-screen. With a false fFullscreen value, the Shell depends on its automatic detection facility
+ to specify how the window should be treated, possibly still flagging the window as full-screen.
+
+
+
+
+ Allows an application to retrieve the most recent and frequent documents opened in that app, as reported via SHAddToRecentDocs
+
+
+
+
+ Set the App User Model ID for the application retrieving this list. If an AppID is not provided via this method,
+ the system will use a heuristically determined ID. This method must be called before GetList.
+
+ App Id.
+
+
+
+ Retrieve an IEnumObjects or IObjectArray for IShellItems and/or IShellLinks.
+ Items may appear in both the frequent and recent lists.
+
+
+
+
+
+ Provides access to the App User Model ID on objects supporting this value.
+
+
+
+
+ Provides access to the ProgID associated with an object
+
+
+
+
+ Wraps an IStream interface pointer from COM into a form consumable by .Net.
+
+
+ This implementation is immutable, though it's possible that the underlying
+ stream can be changed in another context.
+
+
+
+
+ Wraps a native IStream interface into a CLR Stream subclass.
+
+
+ The stream that this object wraps.
+
+
+ Note that the parameter is passed by ref. On successful creation it is
+ zeroed out to the caller. This object becomes responsible for the lifetime
+ management of the wrapped IStream.
+
+
+
+
+ Wraps a managed stream instance into an interface pointer consumable by COM.
+
+
+
+
+ Initializes a new instance of the ManagedIStream class with the specified managed Stream object.
+
+
+ The stream that this IStream reference is wrapping.
+
+
+
+
+ Creates a new stream object with its own seek pointer that
+ references the same bytes as the original stream.
+
+
+ When this method returns, contains the new stream object. This parameter is passed uninitialized.
+
+
+ For more information, see the existing documentation for IStream::Clone in the MSDN library.
+ This class doesn't implement Clone. A COMException is thrown if it is used.
+
+
+
+
+ Ensures that any changes made to a stream object that is open in transacted
+ mode are reflected in the parent storage.
+
+
+ A value that controls how the changes for the stream object are committed.
+
+
+ For more information, see the existing documentation for IStream::Commit in the MSDN library.
+
+
+
+
+ Copies a specified number of bytes from the current seek pointer in the
+ stream to the current seek pointer in another stream.
+
+
+ A reference to the destination stream.
+
+
+ The number of bytes to copy from the source stream.
+
+
+ On successful return, contains the actual number of bytes read from the source.
+ (Note the native signature is to a ULARGE_INTEGER*, so 64 bits are written
+ to this parameter on success.)
+
+
+ On successful return, contains the actual number of bytes written to the destination.
+ (Note the native signature is to a ULARGE_INTEGER*, so 64 bits are written
+ to this parameter on success.)
+
+
+
+
+ Restricts access to a specified range of bytes in the stream.
+
+
+ The byte offset for the beginning of the range.
+
+
+ The length of the range, in bytes, to restrict.
+
+
+ The requested restrictions on accessing the range.
+
+
+ For more information, see the existing documentation for IStream::LockRegion in the MSDN library.
+ This class doesn't implement LockRegion. A COMException is thrown if it is used.
+
+
+
+
+ Reads a specified number of bytes from the stream object into memory starting at the current seek pointer.
+
+
+ When this method returns, contains the data read from the stream. This parameter is passed uninitialized.
+
+
+ The number of bytes to read from the stream object.
+
+
+ A pointer to a ULONG variable that receives the actual number of bytes read from the stream object.
+
+
+ For more information, see the existing documentation for ISequentialStream::Read in the MSDN library.
+
+
+
+
+ Discards all changes that have been made to a transacted stream since the last Commit call.
+
+
+ This class doesn't implement Revert. A COMException is thrown if it is used.
+
+
+
+
+ Changes the seek pointer to a new location relative to the beginning of the
+ stream, to the end of the stream, or to the current seek pointer.
+
+
+ The displacement to add to dwOrigin.
+
+
+ The origin of the seek. The origin can be the beginning of the file, the current seek pointer, or the end of the file.
+
+
+ On successful return, contains the offset of the seek pointer from the beginning of the stream.
+ (Note the native signature is to a ULARGE_INTEGER*, so 64 bits are written
+ to this parameter on success.)
+
+
+ For more information, see the existing documentation for IStream::Seek in the MSDN library.
+
+
+
+
+ Changes the size of the stream object.
+
+
+ The new size of the stream as a number of bytes.
+
+
+ For more information, see the existing documentation for IStream::SetSize in the MSDN library.
+
+
+
+
+ Retrieves the STATSTG structure for this stream.
+
+
+ When this method returns, contains a STATSTG structure that describes this stream object.
+ This parameter is passed uninitialized.
+
+
+ Members in the STATSTG structure that this method does not return, thus saving some memory allocation operations.
+
+
+
+
+ Removes the access restriction on a range of bytes previously restricted with the LockRegion method.
+
+ The byte offset for the beginning of the range.
+
+
+ The length, in bytes, of the range to restrict.
+
+
+ The access restrictions previously placed on the range.
+
+
+ For more information, see the existing documentation for IStream::UnlockRegion in the MSDN library.
+ This class doesn't implement UnlockRegion. A COMException is thrown if it is used.
+
+
+
+
+ Writes a specified number of bytes into the stream object starting at the current seek pointer.
+
+
+ The buffer to write this stream to.
+
+
+ The number of bytes to write to the stream.
+
+
+ On successful return, contains the actual number of bytes written to the stream object.
+ If the caller sets this pointer to null, this method does not provide the actual number
+ of bytes written.
+
+
+
+
+ Releases resources controlled by this object.
+
+
+ Dispose can be called multiple times, but trying to use the object
+ after it has been disposed will generally throw ObjectDisposedExceptions.
+
+
+
+
+ Wrapper around File.Copy to provide feedback as to whether the file wasn't copied because it didn't exist.
+
+
+
+
+
+ Simple guard against the exceptions that File.Delete throws on null and empty strings.
+
+ The path to delete. Unlike File.Delete, this can be null or empty.
+
+ Note that File.Delete, and by extension SafeDeleteFile, does not throw an exception
+ if the file does not exist.
+
+
+
+
+ Utility to help classes catenate their properties for implementing ToString().
+
+ The StringBuilder to catenate the results into.
+ The name of the property to be catenated.
+ The value of the property to be catenated.
+
+
+
+ Generates ToString functionality for a struct. This is an expensive way to do it,
+ it exists for the sake of debugging while classes are in flux.
+ Eventually this should just be removed and the classes should
+ do this without reflection.
+
+
+
+
+
+
+
+ Encodes a URL string. Duplicated functionality from System.Web.HttpUtility.UrlEncode.
+
+
+
+
+ Duplicated from System.Web.HttpUtility because System.Web isn't part of the client profile.
+ URL Encoding replaces ' ' with '+' and unsafe ASCII characters with '%XX'.
+ Safe characters are defined in RFC2396 (http://www.ietf.org/rfc/rfc2396.txt).
+ They are the 7-bit ASCII alphanumerics and the mark characters "-_.!~*'()".
+ This implementation does not treat '~' as a safe character to be consistent with the System.Web version.
+
+
+
+ GDI's DeleteObject
+
+
+ GDI+'s DisposeImage
+
+
+
+ From a list of BitmapFrames find the one that best matches the requested dimensions.
+ The methods used here are copied from Win32 sources. We want to be consistent with
+ system behaviors.
+
+
+ Convert a native integer that represent a color with an alpha channel into a Color struct.
+ The integer that represents the color. Its bits are of the format 0xAARRGGBB.
+ A Color representation of the parameter.
+
+
+
+ A static class for retail validated assertions.
+ Instead of breaking into the debugger an exception is thrown.
+
+
+
+
+ Ensure that the current thread's apartment state is what's expected.
+
+
+ The required apartment state for the current thread.
+
+
+ The message string for the exception to be thrown if the state is invalid.
+
+
+ Thrown if the calling thread's apartment state is not the same as the requiredState.
+
+
+
+
+ Ensure that an argument is neither null nor empty.
+
+ The string to validate.
+ The name of the parameter that will be presented if an exception is thrown.
+
+
+
+ Ensure that an argument is neither null nor does it consist only of whitespace.
+
+ The string to validate.
+ The name of the parameter that will be presented if an exception is thrown.
+
+
+ Verifies that an argument is not null.
+ Type of the object to validate. Must be a class.
+ The object to validate.
+ The name of the parameter that will be presented if an exception is thrown.
+
+
+ Verifies that an argument is not null.
+ Type of the object to validate. Must be a class.
+ The object to validate.
+ The name of the parameter that will be presented if an exception is thrown.
+
+
+ Verifies that an argument is null.
+ Type of the object to validate. Must be a class.
+ The object to validate.
+ The name of the parameter that will be presented if an exception is thrown.
+
+
+
+ Verifies the specified statement is true. Throws an ArgumentException if it's not.
+
+ The statement to be verified as true.
+ Name of the parameter to include in the ArgumentException.
+ The message to include in the ArgumentException.
+
+
+
+ Verifies that the specified value is within the expected range. The assertion fails if it isn't.
+
+ The lower bound inclusive value.
+ The value to verify.
+ The upper bound exclusive value.
+ The name of the parameter that caused the current exception.
+
+
+ Display the system menu at a specified location.
+ The MetroWindow
+ The location to display the system menu, in logical screen coordinates.
+
+
+
+ Private constructor. The public way to access this class is through the static Current property.
+
+
+
+ The extent of the top of the window to treat as the caption.
+
+
+ Dependency property for IgnoreTaskbarOnMaximize
+
+
+
+ If this property is true and the attached window's WindowStyle=None then when the window is maximized it will cover the entire
+ monitor, including the taskbar.
+
+
+
+
+ Is this using WPF4?
+
+
+ There are a few specific bugs in Window in 3.5SP1 and below that require workarounds
+ when handling WM_NCCALCSIZE on the HWND.
+
+
+
+ The Window that's chrome is being modified.
+
+
+ Underlying HWND for the _window.
+
+ Critical : Critical member
+
+
+
+ Underlying HWND for the _window.
+
+ Critical : Critical member provides access to HWND's window messages which are critical
+
+
+
+ Object that describes the current modifications being made to the chrome.
+
+
+
+ Critical : Store critical methods in critical callback table
+ Safe : Demands full trust permissions
+
+
+
+
+ Critical : Calls critical methods
+ Safe : Demands full trust permissions
+
+
+
+
+ Critical : Calls critical methods
+ Safe : Demands full trust permissions
+
+
+
+
+ Critical : Calls critical methods
+ Safe : Demands full trust permissions
+
+
+
+
+ Critical : Calls critical methods
+
+
+
+
+ Critical : Store critical methods in critical callback table
+ Safe : Demands full trust permissions
+
+
+
+
+ Critical : References critical methods
+
+
+
+
+ Critical : Store critical methods in critical callback table
+ Safe : Demands full trust permissions
+
+
+
+
+ Critical : Accesses critical _hwnd field
+ Safe : Demands full trust permissions
+
+
+
+
+ Critical : Calls critical methods
+
+
+
+
+ Critical : Calls critical methods
+
+
+
+
+ Critical : Store critical methods in critical callback table
+ Safe : Demands full trust permissions
+
+
+
+
+ Critical : Calls critical methods
+
+
+
+
+ Critical : Calls critical method
+
+
+
+ A borderless window lost his animation, with this we bring it back.
+
+
+
+ Critical : Accesses critical _hwnd
+
+
+
+
+ Critical : Calls critical methods
+
+
+
+
+ Critical : Calls critical methods
+
+
+
+
+ Critical : Calls critical methods
+
+
+
+
+ This method handles the window size if the taskbar is set to auto-hide.
+
+
+ Critical : Calls critical methods
+
+
+
+
+ Critical : Calls critical Marshal.PtrToStructure
+
+
+
+
+ Critical : Calls critical methods
+
+
+
+
+ Critical : Calls critical method
+
+
+
+
+ Critical : Calls critical method
+
+
+
+
+ Critical : Calls critical Marshal.PtrToStructure
+
+
+
+
+ Critical : Calls critical Marshal.PtrToStructure
+
+
+
+
+ Critical : Calls critical methods
+
+
+
+
+ Critical : Calls critical methods
+
+
+
+
+ Critical : Calls critical methods
+
+
+
+
+ Critical : Calls critical methods
+
+
+
+
+ Critical : Calls critical methods
+
+
+
+
+ Critical : Calls critical methods
+
+
+
+
+ Critical : Calls critical methods
+
+
+
+ Add and remove a native WindowStyle from the HWND.
+ The styles to be removed. These can be bitwise combined.
+ The styles to be added. These can be bitwise combined.
+ Whether the styles of the HWND were modified as a result of this call.
+
+ Critical : Calls critical methods
+
+
+
+
+ Get the WindowState as the native HWND knows it to be. This isn't necessarily the same as what Window thinks.
+
+
+ Critical : Calls critical methods
+
+
+
+
+ Get the bounding rectangle for the window in physical coordinates.
+
+ The bounding rectangle for the window.
+
+ Critical : Calls critical methods
+
+
+
+
+ Update the items in the system menu based on the current, or assumed, WindowState.
+
+
+ The state to assume that the Window is in. This can be null to query the Window's state.
+
+
+ We want to update the menu while we have some control over whether the caption will be repainted.
+
+
+ Critical : Calls critical methods
+
+
+
+
+ Critical : Calls critical methods
+
+
+
+
+ Critical : Calls critical methods
+
+
+
+
+ Critical : Calls critical methods
+
+
+
+
+ Critical : Calls critical methods
+
+
+
+
+ Critical : Calls critical methods
+
+
+
+
+ Critical : Calls critical methods
+
+
+
+
+ Critical : Calls critical methods
+
+
+
+
+ Matrix of the HT values to return when responding to NC window messages.
+
+
+
+
+ Critical : Calls critical methods
+
+
+
+
+ Critical : Unsubscribes event handler from critical _hwndSource
+
+
+
+
+ Critical : Unsubscribes critical event handler
+
+
+
+
+ Critical : Calls critical methods
+
+
+
+
+ Critical : Calls critical methods
+
+
+
+
+ GeneratedInternalTypeHelper
+
+
+
+
+ CreateInstance
+
+
+
+
+ GetPropertyValue
+
+
+
+
+ SetPropertyValue
+
+
+
+
+ CreateDelegate
+
+
+
+
+ AddEventHandler
+
+
+
+
diff --git a/STARK/bin/Debug/NAudio.dll b/STARK/bin/Debug/NAudio.dll
new file mode 100644
index 0000000..9dd5ae7
Binary files /dev/null and b/STARK/bin/Debug/NAudio.dll differ
diff --git a/STARK/bin/Debug/NAudio.xml b/STARK/bin/Debug/NAudio.xml
new file mode 100644
index 0000000..25602d9
--- /dev/null
+++ b/STARK/bin/Debug/NAudio.xml
@@ -0,0 +1,21714 @@
+
+
+
+ NAudio
+
+
+
+
+ a-law decoder
+ based on code from:
+ http://hazelware.luggle.com/tutorials/mulawcompression.html
+
+
+
+
+ only 512 bytes required, so just use a lookup
+
+
+
+
+ Converts an a-law encoded byte to a 16 bit linear sample
+
+ a-law encoded byte
+ Linear sample
+
+
+
+ A-law encoder
+
+
+
+
+ Encodes a single 16 bit sample to a-law
+
+ 16 bit PCM sample
+ a-law encoded byte
+
+
+
+ SpanDSP - a series of DSP components for telephony
+
+ g722_decode.c - The ITU G.722 codec, decode part.
+
+ Written by Steve Underwood <steveu@coppice.org>
+
+ Copyright (C) 2005 Steve Underwood
+ Ported to C# by Mark Heath 2011
+
+ Despite my general liking of the GPL, I place my own contributions
+ to this code in the public domain for the benefit of all mankind -
+ even the slimy ones who might try to proprietize my work and use it
+ to my detriment.
+
+ Based in part on a single channel G.722 codec which is:
+ Copyright (c) CMU 1993
+ Computer Science, Speech Group
+ Chengxiang Lu and Alex Hauptmann
+
+
+
+
+ hard limits to 16 bit samples
+
+
+
+
+ Decodes a buffer of G722
+
+ Codec state
+ Output buffer (to contain decompressed PCM samples)
+
+ Number of bytes in input G722 data to decode
+ Number of samples written into output buffer
+
+
+
+ Encodes a buffer of G722
+
+ Codec state
+ Output buffer (to contain encoded G722)
+ PCM 16 bit samples to encode
+ Number of samples in the input buffer to encode
+ Number of encoded bytes written into output buffer
+
+
+
+ Stores state to be used between calls to Encode or Decode
+
+
+
+
+ Creates a new instance of G722 Codec State for a
+ new encode or decode session
+
+ Bitrate (typically 64000)
+ Special options
+
+
+
+ ITU Test Mode
+ TRUE if the operating in the special ITU test mode, with the band split filters disabled.
+
+
+
+
+ TRUE if the G.722 data is packed
+
+
+
+
+ 8kHz Sampling
+ TRUE if encode from 8k samples/second
+
+
+
+
+ Bits Per Sample
+ 6 for 48000kbps, 7 for 56000kbps, or 8 for 64000kbps.
+
+
+
+
+ Signal history for the QMF (x)
+
+
+
+
+ Band
+
+
+
+
+ In bit buffer
+
+
+
+
+ Number of bits in InBuffer
+
+
+
+
+ Out bit buffer
+
+
+
+
+ Number of bits in OutBuffer
+
+
+
+
+ Band data for G722 Codec
+
+
+
+ s
+
+
+ sp
+
+
+ sz
+
+
+ r
+
+
+ a
+
+
+ ap
+
+
+ p
+
+
+ d
+
+
+ b
+
+
+ bp
+
+
+ sg
+
+
+ nb
+
+
+ det
+
+
+
+ G722 Flags
+
+
+
+
+ None
+
+
+
+
+ Using a G722 sample rate of 8000
+
+
+
+
+ Packed
+
+
+
+
+ mu-law decoder
+ based on code from:
+ http://hazelware.luggle.com/tutorials/mulawcompression.html
+
+
+
+
+ only 512 bytes required, so just use a lookup
+
+
+
+
+ Converts a mu-law encoded byte to a 16 bit linear sample
+
+ mu-law encoded byte
+ Linear sample
+
+
+
+ mu-law encoder
+ based on code from:
+ http://hazelware.luggle.com/tutorials/mulawcompression.html
+
+
+
+
+ Encodes a single 16 bit sample to mu-law
+
+ 16 bit PCM sample
+ mu-law encoded byte
+
+
+
+ Audio Capture Client
+
+
+
+
+ Gets a pointer to the buffer
+
+ Pointer to the buffer
+
+
+
+ Gets a pointer to the buffer
+
+ Number of frames to read
+ Buffer flags
+ Pointer to the buffer
+
+
+
+ Gets the size of the next packet
+
+
+
+
+ Release buffer
+
+ Number of frames written
+
+
+
+ Release the COM object
+
+
+
+
+ Windows CoreAudio AudioClient
+
+
+
+
+ Initializes the Audio Client
+
+ Share Mode
+ Stream Flags
+ Buffer Duration
+ Periodicity
+ Wave Format
+ Audio Session GUID (can be null)
+
+
+
+ Determines whether if the specified output format is supported
+
+ The share mode.
+ The desired format.
+ True if the format is supported
+
+
+
+ Determines if the specified output format is supported in shared mode
+
+ Share Mode
+ Desired Format
+ Output The closest match format.
+ True if the format is supported
+
+
+
+ Starts the audio stream
+
+
+
+
+ Stops the audio stream.
+
+
+
+
+ Set the Event Handle for buffer synchro.
+
+ The Wait Handle to setup
+
+
+
+ Resets the audio stream
+ Reset is a control method that the client calls to reset a stopped audio stream.
+ Resetting the stream flushes all pending data and resets the audio clock stream
+ position to 0. This method fails if it is called on a stream that is not stopped
+
+
+
+
+ Dispose
+
+
+
+
+ Retrieves the stream format that the audio engine uses for its internal processing of shared-mode streams.
+ Can be called before initialize
+
+
+
+
+ Retrieves the size (maximum capacity) of the audio buffer associated with the endpoint. (must initialize first)
+
+
+
+
+ Retrieves the maximum latency for the current stream and can be called any time after the stream has been initialized.
+
+
+
+
+ Retrieves the number of frames of padding in the endpoint buffer (must initialize first)
+
+
+
+
+ Retrieves the length of the periodic interval separating successive processing passes by the audio engine on the data in the endpoint buffer.
+ (can be called before initialize)
+
+
+
+
+ Gets the minimum device period
+ (can be called before initialize)
+
+
+
+
+ Returns the AudioStreamVolume service for this AudioClient.
+
+
+ This returns the AudioStreamVolume object ONLY for shared audio streams.
+
+
+ This is thrown when an exclusive audio stream is being used.
+
+
+
+
+ Gets the AudioClockClient service
+
+
+
+
+ Gets the AudioRenderClient service
+
+
+
+
+ Gets the AudioCaptureClient service
+
+
+
+
+ Audio Client Buffer Flags
+
+
+
+
+ None
+
+
+
+
+ AUDCLNT_BUFFERFLAGS_DATA_DISCONTINUITY
+
+
+
+
+ AUDCLNT_BUFFERFLAGS_SILENT
+
+
+
+
+ AUDCLNT_BUFFERFLAGS_TIMESTAMP_ERROR
+
+
+
+
+ The AudioClientProperties structure is used to set the parameters that describe the properties of the client's audio stream.
+
+ http://msdn.microsoft.com/en-us/library/windows/desktop/hh968105(v=vs.85).aspx
+
+
+
+ The size of the buffer for the audio stream.
+
+
+
+
+ Boolean value to indicate whether or not the audio stream is hardware-offloaded
+
+
+
+
+ An enumeration that is used to specify the category of the audio stream.
+
+
+
+
+ A bit-field describing the characteristics of the stream. Supported in Windows 8.1 and later.
+
+
+
+
+ AUDCLNT_SHAREMODE
+
+
+
+
+ AUDCLNT_SHAREMODE_SHARED,
+
+
+
+
+ AUDCLNT_SHAREMODE_EXCLUSIVE
+
+
+
+
+ AUDCLNT_STREAMFLAGS
+
+
+
+
+ None
+
+
+
+
+ AUDCLNT_STREAMFLAGS_CROSSPROCESS
+
+
+
+
+ AUDCLNT_STREAMFLAGS_LOOPBACK
+
+
+
+
+ AUDCLNT_STREAMFLAGS_EVENTCALLBACK
+
+
+
+
+ AUDCLNT_STREAMFLAGS_NOPERSIST
+
+
+
+
+ Defines values that describe the characteristics of an audio stream.
+
+
+
+
+ No stream options.
+
+
+
+
+ The audio stream is a 'raw' stream that bypasses all signal processing except for endpoint specific, always-on processing in the APO, driver, and hardware.
+
+
+
+
+ Audio Clock Client
+
+
+
+
+ Get Position
+
+
+
+
+ Dispose
+
+
+
+
+ Characteristics
+
+
+
+
+ Frequency
+
+
+
+
+ Adjusted Position
+
+
+
+
+ Can Adjust Position
+
+
+
+
+ Audio Endpoint Volume Channel
+
+
+
+
+ Volume Level
+
+
+
+
+ Volume Level Scalar
+
+
+
+
+ Audio Endpoint Volume Channels
+
+
+
+
+ Channel Count
+
+
+
+
+ Indexer - get a specific channel
+
+
+
+
+ Audio Endpoint Volume Notifiaction Delegate
+
+ Audio Volume Notification Data
+
+
+
+ Audio Endpoint Volume Step Information
+
+
+
+
+ Step
+
+
+
+
+ StepCount
+
+
+
+
+ Audio Endpoint Volume Volume Range
+
+
+
+
+ Minimum Decibels
+
+
+
+
+ Maximum Decibels
+
+
+
+
+ Increment Decibels
+
+
+
+
+ Audio Meter Information Channels
+
+
+
+
+ Metering Channel Count
+
+
+
+
+ Get Peak value
+
+ Channel index
+ Peak value
+
+
+
+ Audio Render Client
+
+
+
+
+ Gets a pointer to the buffer
+
+ Number of frames requested
+ Pointer to the buffer
+
+
+
+ Release buffer
+
+ Number of frames written
+ Buffer flags
+
+
+
+ Release the COM object
+
+
+
+
+ AudioSessionControl object for information
+ regarding an audio session
+
+
+
+
+ Constructor.
+
+
+
+
+
+ Dispose
+
+
+
+
+ Finalizer
+
+
+
+
+ the grouping param for an audio session grouping
+
+
+
+
+
+ For chanigng the grouping param and supplying the context of said change
+
+
+
+
+
+
+ Registers an even client for callbacks
+
+
+
+
+
+ Unregisters an event client from receiving callbacks
+
+
+
+
+
+ Audio meter information of the audio session.
+
+
+
+
+ Simple audio volume of the audio session (for volume and mute status).
+
+
+
+
+ The current state of the audio session.
+
+
+
+
+ The name of the audio session.
+
+
+
+
+ the path to the icon shown in the mixer.
+
+
+
+
+ The session identifier of the audio session.
+
+
+
+
+ The session instance identifier of the audio session.
+
+
+
+
+ The process identifier of the audio session.
+
+
+
+
+ Is the session a system sounds session.
+
+
+
+
+ AudioSessionEvents callback implementation
+
+
+
+
+ Windows CoreAudio IAudioSessionControl interface
+ Defined in AudioPolicy.h
+
+
+
+
+ Notifies the client that the display name for the session has changed.
+
+ The new display name for the session.
+ A user context value that is passed to the notification callback.
+ An HRESULT code indicating whether the operation succeeded of failed.
+
+
+
+ Notifies the client that the display icon for the session has changed.
+
+ The path for the new display icon for the session.
+ A user context value that is passed to the notification callback.
+ An HRESULT code indicating whether the operation succeeded of failed.
+
+
+
+ Notifies the client that the volume level or muting state of the session has changed.
+
+ The new volume level for the audio session.
+ The new muting state.
+ A user context value that is passed to the notification callback.
+ An HRESULT code indicating whether the operation succeeded of failed.
+
+
+
+ Notifies the client that the volume level of an audio channel in the session submix has changed.
+
+ The channel count.
+ An array of volumnes cooresponding with each channel index.
+ The number of the channel whose volume level changed.
+ A user context value that is passed to the notification callback.
+ An HRESULT code indicating whether the operation succeeded of failed.
+
+
+
+ Notifies the client that the grouping parameter for the session has changed.
+
+ The new grouping parameter for the session.
+ A user context value that is passed to the notification callback.
+ An HRESULT code indicating whether the operation succeeded of failed.
+
+
+
+ Notifies the client that the stream-activity state of the session has changed.
+
+ The new session state.
+ An HRESULT code indicating whether the operation succeeded of failed.
+
+
+
+ Notifies the client that the session has been disconnected.
+
+ The reason that the audio session was disconnected.
+ An HRESULT code indicating whether the operation succeeded of failed.
+
+
+
+ Constructor.
+
+
+
+
+
+ Notifies the client that the display name for the session has changed.
+
+ The new display name for the session.
+ A user context value that is passed to the notification callback.
+ An HRESULT code indicating whether the operation succeeded of failed.
+
+
+
+ Notifies the client that the display icon for the session has changed.
+
+ The path for the new display icon for the session.
+ A user context value that is passed to the notification callback.
+ An HRESULT code indicating whether the operation succeeded of failed.
+
+
+
+ Notifies the client that the volume level or muting state of the session has changed.
+
+ The new volume level for the audio session.
+ The new muting state.
+ A user context value that is passed to the notification callback.
+ An HRESULT code indicating whether the operation succeeded of failed.
+
+
+
+ Notifies the client that the volume level of an audio channel in the session submix has changed.
+
+ The channel count.
+ An array of volumnes cooresponding with each channel index.
+ The number of the channel whose volume level changed.
+ A user context value that is passed to the notification callback.
+ An HRESULT code indicating whether the operation succeeded of failed.
+
+
+
+ Notifies the client that the grouping parameter for the session has changed.
+
+ The new grouping parameter for the session.
+ A user context value that is passed to the notification callback.
+ An HRESULT code indicating whether the operation succeeded of failed.
+
+
+
+ Notifies the client that the stream-activity state of the session has changed.
+
+ The new session state.
+ An HRESULT code indicating whether the operation succeeded of failed.
+
+
+
+ Notifies the client that the session has been disconnected.
+
+ The reason that the audio session was disconnected.
+ An HRESULT code indicating whether the operation succeeded of failed.
+
+
+
+ AudioSessionManager
+
+ Designed to manage audio sessions and in particuar the
+ SimpleAudioVolume interface to adjust a session volume
+
+
+
+
+ Refresh session of current device.
+
+
+
+
+ Dispose.
+
+
+
+
+ Finalizer.
+
+
+
+
+ Occurs when audio session has been added (for example run another program that use audio playback).
+
+
+
+
+ SimpleAudioVolume object
+ for adjusting the volume for the user session
+
+
+
+
+ AudioSessionControl object
+ for registring for callbacks and other session information
+
+
+
+
+ Returns list of sessions of current device.
+
+
+
+
+
+
+
+
+
+
+
+ Windows CoreAudio IAudioSessionNotification interface
+ Defined in AudioPolicy.h
+
+
+
+
+
+
+ session being added
+ An HRESULT code indicating whether the operation succeeded of failed.
+
+
+
+ Specifies the category of an audio stream.
+
+
+
+
+ Other audio stream.
+
+
+
+
+ Media that will only stream when the app is in the foreground.
+
+
+
+
+ Media that can be streamed when the app is in the background.
+
+
+
+
+ Real-time communications, such as VOIP or chat.
+
+
+
+
+ Alert sounds.
+
+
+
+
+ Sound effects.
+
+
+
+
+ Game sound effects.
+
+
+
+
+ Background audio for games.
+
+
+
+
+ Manages the AudioStreamVolume for the .
+
+
+
+
+ Verify that the channel index is valid.
+
+
+
+
+
+
+ Return the current stream volumes for all channels
+
+ An array of volume levels between 0.0 and 1.0 for each channel in the audio stream.
+
+
+
+ Return the current volume for the requested channel.
+
+ The 0 based index into the channels.
+ The volume level for the channel between 0.0 and 1.0.
+
+
+
+ Set the volume level for each channel of the audio stream.
+
+ An array of volume levels (between 0.0 and 1.0) one for each channel.
+
+ A volume level MUST be supplied for reach channel in the audio stream.
+
+
+ Thrown when does not contain elements.
+
+
+
+
+ Sets the volume level for one channel in the audio stream.
+
+ The 0-based index into the channels to adjust the volume of.
+ The volume level between 0.0 and 1.0 for this channel of the audio stream.
+
+
+
+ Dispose
+
+
+
+
+ Release/cleanup objects during Dispose/finalization.
+
+ True if disposing and false if being finalized.
+
+
+
+ Returns the current number of channels in this audio stream.
+
+
+
+
+ Audio Volume Notification Data
+
+
+
+
+ Audio Volume Notification Data
+
+
+
+
+
+
+
+
+ Event Context
+
+
+
+
+ Muted
+
+
+
+
+ Master Volume
+
+
+
+
+ Channels
+
+
+
+
+ Channel Volume
+
+
+
+
+ AUDCLNT_E_NOT_INITIALIZED
+
+
+
+
+ AUDCLNT_E_UNSUPPORTED_FORMAT
+
+
+
+
+ AUDCLNT_E_DEVICE_IN_USE
+
+
+
+
+ Defined in AudioClient.h
+
+
+
+
+ Defined in AudioClient.h
+
+
+
+
+ Windows CoreAudio IAudioSessionControl interface
+ Defined in AudioPolicy.h
+
+
+
+
+ Retrieves the current state of the audio session.
+
+ Receives the current session state.
+ An HRESULT code indicating whether the operation succeeded of failed.
+
+
+
+ Retrieves the display name for the audio session.
+
+ Receives a string that contains the display name.
+ An HRESULT code indicating whether the operation succeeded of failed.
+
+
+
+ Assigns a display name to the current audio session.
+
+ A string that contains the new display name for the session.
+ A user context value that is passed to the notification callback.
+ An HRESULT code indicating whether the operation succeeded of failed.
+
+
+
+ Retrieves the path for the display icon for the audio session.
+
+ Receives a string that specifies the fully qualified path of the file that contains the icon.
+ An HRESULT code indicating whether the operation succeeded of failed.
+
+
+
+ Assigns a display icon to the current session.
+
+ A string that specifies the fully qualified path of the file that contains the new icon.
+ A user context value that is passed to the notification callback.
+ An HRESULT code indicating whether the operation succeeded of failed.
+
+
+
+ Retrieves the grouping parameter of the audio session.
+
+ Receives the grouping parameter ID.
+ An HRESULT code indicating whether the operation succeeded of failed.
+
+
+
+ Assigns a session to a grouping of sessions.
+
+ The new grouping parameter ID.
+ A user context value that is passed to the notification callback.
+ An HRESULT code indicating whether the operation succeeded of failed.
+
+
+
+ Registers the client to receive notifications of session events, including changes in the session state.
+
+ A client-implemented interface.
+ An HRESULT code indicating whether the operation succeeded of failed.
+
+
+
+ Deletes a previous registration by the client to receive notifications.
+
+ A client-implemented interface.
+ An HRESULT code indicating whether the operation succeeded of failed.
+
+
+
+ Windows CoreAudio IAudioSessionControl interface
+ Defined in AudioPolicy.h
+
+
+
+
+ Retrieves the current state of the audio session.
+
+ Receives the current session state.
+ An HRESULT code indicating whether the operation succeeded of failed.
+
+
+
+ Retrieves the display name for the audio session.
+
+ Receives a string that contains the display name.
+ An HRESULT code indicating whether the operation succeeded of failed.
+
+
+
+ Assigns a display name to the current audio session.
+
+ A string that contains the new display name for the session.
+ A user context value that is passed to the notification callback.
+ An HRESULT code indicating whether the operation succeeded of failed.
+
+
+
+ Retrieves the path for the display icon for the audio session.
+
+ Receives a string that specifies the fully qualified path of the file that contains the icon.
+ An HRESULT code indicating whether the operation succeeded of failed.
+
+
+
+ Assigns a display icon to the current session.
+
+ A string that specifies the fully qualified path of the file that contains the new icon.
+ A user context value that is passed to the notification callback.
+ An HRESULT code indicating whether the operation succeeded of failed.
+
+
+
+ Retrieves the grouping parameter of the audio session.
+
+ Receives the grouping parameter ID.
+ An HRESULT code indicating whether the operation succeeded of failed.
+
+
+
+ Assigns a session to a grouping of sessions.
+
+ The new grouping parameter ID.
+ A user context value that is passed to the notification callback.
+ An HRESULT code indicating whether the operation succeeded of failed.
+
+
+
+ Registers the client to receive notifications of session events, including changes in the session state.
+
+ A client-implemented interface.
+ An HRESULT code indicating whether the operation succeeded of failed.
+
+
+
+ Deletes a previous registration by the client to receive notifications.
+
+ A client-implemented interface.
+ An HRESULT code indicating whether the operation succeeded of failed.
+
+
+
+ Retrieves the identifier for the audio session.
+
+ Receives the session identifier.
+ An HRESULT code indicating whether the operation succeeded of failed.
+
+
+
+ Retrieves the identifier of the audio session instance.
+
+ Receives the identifier of a particular instance.
+ An HRESULT code indicating whether the operation succeeded of failed.
+
+
+
+ Retrieves the process identifier of the audio session.
+
+ Receives the process identifier of the audio session.
+ An HRESULT code indicating whether the operation succeeded of failed.
+
+
+
+ Indicates whether the session is a system sounds session.
+
+ An HRESULT code indicating whether the operation succeeded of failed.
+
+
+
+ Enables or disables the default stream attenuation experience (auto-ducking) provided by the system.
+
+ A variable that enables or disables system auto-ducking.
+ An HRESULT code indicating whether the operation succeeded of failed.
+
+
+
+ Defines constants that indicate the current state of an audio session.
+
+
+ MSDN Reference: http://msdn.microsoft.com/en-us/library/dd370792.aspx
+
+
+
+
+ The audio session is inactive.
+
+
+
+
+ The audio session is active.
+
+
+
+
+ The audio session has expired.
+
+
+
+
+ Defines constants that indicate a reason for an audio session being disconnected.
+
+
+ MSDN Reference: Unknown
+
+
+
+
+ The user removed the audio endpoint device.
+
+
+
+
+ The Windows audio service has stopped.
+
+
+
+
+ The stream format changed for the device that the audio session is connected to.
+
+
+
+
+ The user logged off the WTS session that the audio session was running in.
+
+
+
+
+ The WTS session that the audio session was running in was disconnected.
+
+
+
+
+ The (shared-mode) audio session was disconnected to make the audio endpoint device available for an exclusive-mode connection.
+
+
+
+
+ interface to receive session related events
+
+
+
+
+ notification of volume changes including muting of audio session
+
+ the current volume
+ the current mute state, true muted, false otherwise
+
+
+
+ notification of display name changed
+
+ the current display name
+
+
+
+ notification of icon path changed
+
+ the current icon path
+
+
+
+ notification of the client that the volume level of an audio channel in the session submix has changed
+
+ The channel count.
+ An array of volumnes cooresponding with each channel index.
+ The number of the channel whose volume level changed.
+
+
+
+ notification of the client that the grouping parameter for the session has changed
+
+ >The new grouping parameter for the session.
+
+
+
+ notification of the client that the stream-activity state of the session has changed
+
+ The new session state.
+
+
+
+ notification of the client that the session has been disconnected
+
+ The reason that the audio session was disconnected.
+
+
+
+ Windows CoreAudio IAudioSessionManager interface
+ Defined in AudioPolicy.h
+
+
+
+
+ Retrieves an audio session control.
+
+ A new or existing session ID.
+ Audio session flags.
+ Receives an interface for the audio session.
+ An HRESULT code indicating whether the operation succeeded of failed.
+
+
+
+ Retrieves a simple audio volume control.
+
+ A new or existing session ID.
+ Audio session flags.
+ Receives an interface for the audio session.
+ An HRESULT code indicating whether the operation succeeded of failed.
+
+
+
+ Retrieves an audio session control.
+
+ A new or existing session ID.
+ Audio session flags.
+ Receives an interface for the audio session.
+ An HRESULT code indicating whether the operation succeeded of failed.
+
+
+
+ Retrieves a simple audio volume control.
+
+ A new or existing session ID.
+ Audio session flags.
+ Receives an interface for the audio session.
+ An HRESULT code indicating whether the operation succeeded of failed.
+
+
+
+ Windows CoreAudio ISimpleAudioVolume interface
+ Defined in AudioClient.h
+
+
+
+
+ Sets the master volume level for the audio session.
+
+ The new volume level expressed as a normalized value between 0.0 and 1.0.
+ A user context value that is passed to the notification callback.
+ An HRESULT code indicating whether the operation succeeded of failed.
+
+
+
+ Retrieves the client volume level for the audio session.
+
+ Receives the volume level expressed as a normalized value between 0.0 and 1.0.
+ An HRESULT code indicating whether the operation succeeded of failed.
+
+
+
+ Sets the muting state for the audio session.
+
+ The new muting state.
+ A user context value that is passed to the notification callback.
+ An HRESULT code indicating whether the operation succeeded of failed.
+
+
+
+ Retrieves the current muting state for the audio session.
+
+ Receives the muting state.
+ An HRESULT code indicating whether the operation succeeded of failed.
+
+
+
+ Multimedia Device Collection
+
+
+
+
+ Get Enumerator
+
+ Device enumerator
+
+
+
+ Device count
+
+
+
+
+ Get device by index
+
+ Device index
+ Device at the specified index
+
+
+
+ Property Keys
+
+
+
+
+ PKEY_DeviceInterface_FriendlyName
+
+
+
+
+ PKEY_AudioEndpoint_FormFactor
+
+
+
+
+ PKEY_AudioEndpoint_ControlPanelPageProvider
+
+
+
+
+ PKEY_AudioEndpoint_Association
+
+
+
+
+ PKEY_AudioEndpoint_PhysicalSpeakers
+
+
+
+
+ PKEY_AudioEndpoint_GUID
+
+
+
+
+ PKEY_AudioEndpoint_Disable_SysFx
+
+
+
+
+ PKEY_AudioEndpoint_FullRangeSpeakers
+
+
+
+
+ PKEY_AudioEndpoint_Supports_EventDriven_Mode
+
+
+
+
+ PKEY_AudioEndpoint_JackSubType
+
+
+
+
+ PKEY_AudioEngine_DeviceFormat
+
+
+
+
+ PKEY_AudioEngine_OEMFormat
+
+
+
+
+ PKEY _Devie_FriendlyName
+
+
+
+
+ PKEY _Device_IconPath
+
+
+
+
+ Collection of sessions.
+
+
+
+
+ Returns session at index.
+
+
+
+
+
+
+ Number of current sessions.
+
+
+
+
+ Windows CoreAudio SimpleAudioVolume
+
+
+
+
+ Creates a new Audio endpoint volume
+
+ ISimpleAudioVolume COM interface
+
+
+
+ Dispose
+
+
+
+
+ Finalizer
+
+
+
+
+ Allows the user to adjust the volume from
+ 0.0 to 1.0
+
+
+
+
+ Mute
+
+
+
+
+ Envelope generator (ADSR)
+
+
+
+
+ Creates and Initializes an Envelope Generator
+
+
+
+
+ Sets the attack curve
+
+
+
+
+ Sets the decay release curve
+
+
+
+
+ Read the next volume multiplier from the envelope generator
+
+ A volume multiplier
+
+
+
+ Trigger the gate
+
+ If true, enter attack phase, if false enter release phase (unless already idle)
+
+
+
+ Reset to idle state
+
+
+
+
+ Get the current output level
+
+
+
+
+ Attack Rate (seconds * SamplesPerSecond)
+
+
+
+
+ Decay Rate (seconds * SamplesPerSecond)
+
+
+
+
+ Release Rate (seconds * SamplesPerSecond)
+
+
+
+
+ Sustain Level (1 = 100%)
+
+
+
+
+ Current envelope state
+
+
+
+
+ Envelope State
+
+
+
+
+ Idle
+
+
+
+
+ Attack
+
+
+
+
+ Decay
+
+
+
+
+ Sustain
+
+
+
+
+ Release
+
+
+
+
+ Fully managed resampler, based on Cockos WDL Resampler
+
+
+
+
+ Creates a new Resampler
+
+
+
+
+ sets the mode
+ if sinc set, it overrides interp or filtercnt
+
+
+
+
+ Sets the filter parameters
+ used for filtercnt>0 but not sinc
+
+
+
+
+ Set feed mode
+
+ if true, that means the first parameter to ResamplePrepare will specify however much input you have, not how much you want
+
+
+
+ Reset
+
+
+
+
+ Prepare
+ note that it is safe to call ResamplePrepare without calling ResampleOut (the next call of ResamplePrepare will function as normal)
+ nb inbuffer was WDL_ResampleSample **, returning a place to put the in buffer, so we return a buffer and offset
+
+ req_samples is output samples desired if !wantInputDriven, or if wantInputDriven is input samples that we have
+
+
+
+ returns number of samples desired (put these into *inbuffer)
+
+
+
+ http://tech.ebu.ch/docs/tech/tech3306-2009.pdf
+
+
+
+
+ WaveFormat
+
+
+
+
+ Data Chunk Position
+
+
+
+
+ Data Chunk Length
+
+
+
+
+ Riff Chunks
+
+
+
+
+ Audio Subtype GUIDs
+ http://msdn.microsoft.com/en-us/library/windows/desktop/aa372553%28v=vs.85%29.aspx
+
+
+
+
+ Advanced Audio Coding (AAC).
+
+
+
+
+ Not used
+
+
+
+
+ Dolby AC-3 audio over Sony/Philips Digital Interface (S/PDIF).
+
+
+
+
+ Encrypted audio data used with secure audio path.
+
+
+
+
+ Digital Theater Systems (DTS) audio.
+
+
+
+
+ Uncompressed IEEE floating-point audio.
+
+
+
+
+ MPEG Audio Layer-3 (MP3).
+
+
+
+
+ MPEG-1 audio payload.
+
+
+
+
+ Windows Media Audio 9 Voice codec.
+
+
+
+
+ Uncompressed PCM audio.
+
+
+
+
+ Windows Media Audio 9 Professional codec over S/PDIF.
+
+
+
+
+ Windows Media Audio 9 Lossless codec or Windows Media Audio 9.1 codec.
+
+
+
+
+ Windows Media Audio 8 codec, Windows Media Audio 9 codec, or Windows Media Audio 9.1 codec.
+
+
+
+
+ Windows Media Audio 9 Professional codec or Windows Media Audio 9.1 Professional codec.
+
+
+
+
+ Dolby Digital (AC-3).
+
+
+
+
+ MPEG-4 and AAC Audio Types
+ http://msdn.microsoft.com/en-us/library/windows/desktop/dd317599(v=vs.85).aspx
+ Reference : wmcodecdsp.h
+
+
+
+
+ Dolby Audio Types
+ http://msdn.microsoft.com/en-us/library/windows/desktop/dd317599(v=vs.85).aspx
+ Reference : wmcodecdsp.h
+
+
+
+
+ Dolby Audio Types
+ http://msdn.microsoft.com/en-us/library/windows/desktop/dd317599(v=vs.85).aspx
+ Reference : wmcodecdsp.h
+
+
+
+
+ μ-law coding
+ http://msdn.microsoft.com/en-us/library/windows/desktop/dd390971(v=vs.85).aspx
+ Reference : Ksmedia.h
+
+
+
+
+ Adaptive delta pulse code modulation (ADPCM)
+ http://msdn.microsoft.com/en-us/library/windows/desktop/dd390971(v=vs.85).aspx
+ Reference : Ksmedia.h
+
+
+
+
+ Dolby Digital Plus formatted for HDMI output.
+ http://msdn.microsoft.com/en-us/library/windows/hardware/ff538392(v=vs.85).aspx
+ Reference : internet
+
+
+
+
+ MSAudio1 - unknown meaning
+ Reference : wmcodecdsp.h
+
+
+
+
+ IMA ADPCM ACM Wrapper
+
+
+
+
+ WMSP2 - unknown meaning
+ Reference: wmsdkidl.h
+
+
+
+
+ Creates an instance of either the sink writer or the source reader.
+
+
+
+
+ Creates an instance of the sink writer or source reader, given a URL.
+
+
+
+
+ Creates an instance of the sink writer or source reader, given an IUnknown pointer.
+
+
+
+
+ CLSID_MFReadWriteClassFactory
+
+
+
+
+ Media Foundation Errors
+
+
+
+ RANGES
+ 14000 - 14999 = General Media Foundation errors
+ 15000 - 15999 = ASF parsing errors
+ 16000 - 16999 = Media Source errors
+ 17000 - 17999 = MEDIAFOUNDATION Network Error Events
+ 18000 - 18999 = MEDIAFOUNDATION WMContainer Error Events
+ 19000 - 19999 = MEDIAFOUNDATION Media Sink Error Events
+ 20000 - 20999 = Renderer errors
+ 21000 - 21999 = Topology Errors
+ 25000 - 25999 = Timeline Errors
+ 26000 - 26999 = Unused
+ 28000 - 28999 = Transform errors
+ 29000 - 29999 = Content Protection errors
+ 40000 - 40999 = Clock errors
+ 41000 - 41999 = MF Quality Management Errors
+ 42000 - 42999 = MF Transcode API Errors
+
+
+
+
+ MessageId: MF_E_PLATFORM_NOT_INITIALIZED
+
+ MessageText:
+
+ Platform not initialized. Please call MFStartup().%0
+
+
+
+
+ MessageId: MF_E_BUFFERTOOSMALL
+
+ MessageText:
+
+ The buffer was too small to carry out the requested action.%0
+
+
+
+
+ MessageId: MF_E_INVALIDREQUEST
+
+ MessageText:
+
+ The request is invalid in the current state.%0
+
+
+
+
+ MessageId: MF_E_INVALIDSTREAMNUMBER
+
+ MessageText:
+
+ The stream number provided was invalid.%0
+
+
+
+
+ MessageId: MF_E_INVALIDMEDIATYPE
+
+ MessageText:
+
+ The data specified for the media type is invalid, inconsistent, or not supported by this object.%0
+
+
+
+
+ MessageId: MF_E_NOTACCEPTING
+
+ MessageText:
+
+ The callee is currently not accepting further input.%0
+
+
+
+
+ MessageId: MF_E_NOT_INITIALIZED
+
+ MessageText:
+
+ This object needs to be initialized before the requested operation can be carried out.%0
+
+
+
+
+ MessageId: MF_E_UNSUPPORTED_REPRESENTATION
+
+ MessageText:
+
+ The requested representation is not supported by this object.%0
+
+
+
+
+ MessageId: MF_E_NO_MORE_TYPES
+
+ MessageText:
+
+ An object ran out of media types to suggest therefore the requested chain of streaming objects cannot be completed.%0
+
+
+
+
+ MessageId: MF_E_UNSUPPORTED_SERVICE
+
+ MessageText:
+
+ The object does not support the specified service.%0
+
+
+
+
+ MessageId: MF_E_UNEXPECTED
+
+ MessageText:
+
+ An unexpected error has occurred in the operation requested.%0
+
+
+
+
+ MessageId: MF_E_INVALIDNAME
+
+ MessageText:
+
+ Invalid name.%0
+
+
+
+
+ MessageId: MF_E_INVALIDTYPE
+
+ MessageText:
+
+ Invalid type.%0
+
+
+
+
+ MessageId: MF_E_INVALID_FILE_FORMAT
+
+ MessageText:
+
+ The file does not conform to the relevant file format specification.
+
+
+
+
+ MessageId: MF_E_INVALIDINDEX
+
+ MessageText:
+
+ Invalid index.%0
+
+
+
+
+ MessageId: MF_E_INVALID_TIMESTAMP
+
+ MessageText:
+
+ An invalid timestamp was given.%0
+
+
+
+
+ MessageId: MF_E_UNSUPPORTED_SCHEME
+
+ MessageText:
+
+ The scheme of the given URL is unsupported.%0
+
+
+
+
+ MessageId: MF_E_UNSUPPORTED_BYTESTREAM_TYPE
+
+ MessageText:
+
+ The byte stream type of the given URL is unsupported.%0
+
+
+
+
+ MessageId: MF_E_UNSUPPORTED_TIME_FORMAT
+
+ MessageText:
+
+ The given time format is unsupported.%0
+
+
+
+
+ MessageId: MF_E_NO_SAMPLE_TIMESTAMP
+
+ MessageText:
+
+ The Media Sample does not have a timestamp.%0
+
+
+
+
+ MessageId: MF_E_NO_SAMPLE_DURATION
+
+ MessageText:
+
+ The Media Sample does not have a duration.%0
+
+
+
+
+ MessageId: MF_E_INVALID_STREAM_DATA
+
+ MessageText:
+
+ The request failed because the data in the stream is corrupt.%0\n.
+
+
+
+
+ MessageId: MF_E_RT_UNAVAILABLE
+
+ MessageText:
+
+ Real time services are not available.%0
+
+
+
+
+ MessageId: MF_E_UNSUPPORTED_RATE
+
+ MessageText:
+
+ The specified rate is not supported.%0
+
+
+
+
+ MessageId: MF_E_THINNING_UNSUPPORTED
+
+ MessageText:
+
+ This component does not support stream-thinning.%0
+
+
+
+
+ MessageId: MF_E_REVERSE_UNSUPPORTED
+
+ MessageText:
+
+ The call failed because no reverse playback rates are available.%0
+
+
+
+
+ MessageId: MF_E_UNSUPPORTED_RATE_TRANSITION
+
+ MessageText:
+
+ The requested rate transition cannot occur in the current state.%0
+
+
+
+
+ MessageId: MF_E_RATE_CHANGE_PREEMPTED
+
+ MessageText:
+
+ The requested rate change has been pre-empted and will not occur.%0
+
+
+
+
+ MessageId: MF_E_NOT_FOUND
+
+ MessageText:
+
+ The specified object or value does not exist.%0
+
+
+
+
+ MessageId: MF_E_NOT_AVAILABLE
+
+ MessageText:
+
+ The requested value is not available.%0
+
+
+
+
+ MessageId: MF_E_NO_CLOCK
+
+ MessageText:
+
+ The specified operation requires a clock and no clock is available.%0
+
+
+
+
+ MessageId: MF_S_MULTIPLE_BEGIN
+
+ MessageText:
+
+ This callback and state had already been passed in to this event generator earlier.%0
+
+
+
+
+ MessageId: MF_E_MULTIPLE_BEGIN
+
+ MessageText:
+
+ This callback has already been passed in to this event generator.%0
+
+
+
+
+ MessageId: MF_E_MULTIPLE_SUBSCRIBERS
+
+ MessageText:
+
+ Some component is already listening to events on this event generator.%0
+
+
+
+
+ MessageId: MF_E_TIMER_ORPHANED
+
+ MessageText:
+
+ This timer was orphaned before its callback time arrived.%0
+
+
+
+
+ MessageId: MF_E_STATE_TRANSITION_PENDING
+
+ MessageText:
+
+ A state transition is already pending.%0
+
+
+
+
+ MessageId: MF_E_UNSUPPORTED_STATE_TRANSITION
+
+ MessageText:
+
+ The requested state transition is unsupported.%0
+
+
+
+
+ MessageId: MF_E_UNRECOVERABLE_ERROR_OCCURRED
+
+ MessageText:
+
+ An unrecoverable error has occurred.%0
+
+
+
+
+ MessageId: MF_E_SAMPLE_HAS_TOO_MANY_BUFFERS
+
+ MessageText:
+
+ The provided sample has too many buffers.%0
+
+
+
+
+ MessageId: MF_E_SAMPLE_NOT_WRITABLE
+
+ MessageText:
+
+ The provided sample is not writable.%0
+
+
+
+
+ MessageId: MF_E_INVALID_KEY
+
+ MessageText:
+
+ The specified key is not valid.
+
+
+
+
+ MessageId: MF_E_BAD_STARTUP_VERSION
+
+ MessageText:
+
+ You are calling MFStartup with the wrong MF_VERSION. Mismatched bits?
+
+
+
+
+ MessageId: MF_E_UNSUPPORTED_CAPTION
+
+ MessageText:
+
+ The caption of the given URL is unsupported.%0
+
+
+
+
+ MessageId: MF_E_INVALID_POSITION
+
+ MessageText:
+
+ The operation on the current offset is not permitted.%0
+
+
+
+
+ MessageId: MF_E_ATTRIBUTENOTFOUND
+
+ MessageText:
+
+ The requested attribute was not found.%0
+
+
+
+
+ MessageId: MF_E_PROPERTY_TYPE_NOT_ALLOWED
+
+ MessageText:
+
+ The specified property type is not allowed in this context.%0
+
+
+
+
+ MessageId: MF_E_PROPERTY_TYPE_NOT_SUPPORTED
+
+ MessageText:
+
+ The specified property type is not supported.%0
+
+
+
+
+ MessageId: MF_E_PROPERTY_EMPTY
+
+ MessageText:
+
+ The specified property is empty.%0
+
+
+
+
+ MessageId: MF_E_PROPERTY_NOT_EMPTY
+
+ MessageText:
+
+ The specified property is not empty.%0
+
+
+
+
+ MessageId: MF_E_PROPERTY_VECTOR_NOT_ALLOWED
+
+ MessageText:
+
+ The vector property specified is not allowed in this context.%0
+
+
+
+
+ MessageId: MF_E_PROPERTY_VECTOR_REQUIRED
+
+ MessageText:
+
+ A vector property is required in this context.%0
+
+
+
+
+ MessageId: MF_E_OPERATION_CANCELLED
+
+ MessageText:
+
+ The operation is cancelled.%0
+
+
+
+
+ MessageId: MF_E_BYTESTREAM_NOT_SEEKABLE
+
+ MessageText:
+
+ The provided bytestream was expected to be seekable and it is not.%0
+
+
+
+
+ MessageId: MF_E_DISABLED_IN_SAFEMODE
+
+ MessageText:
+
+ The Media Foundation platform is disabled when the system is running in Safe Mode.%0
+
+
+
+
+ MessageId: MF_E_CANNOT_PARSE_BYTESTREAM
+
+ MessageText:
+
+ The Media Source could not parse the byte stream.%0
+
+
+
+
+ MessageId: MF_E_SOURCERESOLVER_MUTUALLY_EXCLUSIVE_FLAGS
+
+ MessageText:
+
+ Mutually exclusive flags have been specified to source resolver. This flag combination is invalid.%0
+
+
+
+
+ MessageId: MF_E_MEDIAPROC_WRONGSTATE
+
+ MessageText:
+
+ MediaProc is in the wrong state%0
+
+
+
+
+ MessageId: MF_E_RT_THROUGHPUT_NOT_AVAILABLE
+
+ MessageText:
+
+ Real time I/O service can not provide requested throughput.%0
+
+
+
+
+ MessageId: MF_E_RT_TOO_MANY_CLASSES
+
+ MessageText:
+
+ The workqueue cannot be registered with more classes.%0
+
+
+
+
+ MessageId: MF_E_RT_WOULDBLOCK
+
+ MessageText:
+
+ This operation cannot succeed because another thread owns this object.%0
+
+
+
+
+ MessageId: MF_E_NO_BITPUMP
+
+ MessageText:
+
+ Internal. Bitpump not found.%0
+
+
+
+
+ MessageId: MF_E_RT_OUTOFMEMORY
+
+ MessageText:
+
+ No more RT memory available.%0
+
+
+
+
+ MessageId: MF_E_RT_WORKQUEUE_CLASS_NOT_SPECIFIED
+
+ MessageText:
+
+ An MMCSS class has not been set for this work queue.%0
+
+
+
+
+ MessageId: MF_E_INSUFFICIENT_BUFFER
+
+ MessageText:
+
+ Insufficient memory for response.%0
+
+
+
+
+ MessageId: MF_E_CANNOT_CREATE_SINK
+
+ MessageText:
+
+ Activate failed to create mediasink. Call OutputNode::GetUINT32(MF_TOPONODE_MAJORTYPE) for more information. %0
+
+
+
+
+ MessageId: MF_E_BYTESTREAM_UNKNOWN_LENGTH
+
+ MessageText:
+
+ The length of the provided bytestream is unknown.%0
+
+
+
+
+ MessageId: MF_E_SESSION_PAUSEWHILESTOPPED
+
+ MessageText:
+
+ The media session cannot pause from a stopped state.%0
+
+
+
+
+ MessageId: MF_S_ACTIVATE_REPLACED
+
+ MessageText:
+
+ The activate could not be created in the remote process for some reason it was replaced with empty one.%0
+
+
+
+
+ MessageId: MF_E_FORMAT_CHANGE_NOT_SUPPORTED
+
+ MessageText:
+
+ The data specified for the media type is supported, but would require a format change, which is not supported by this object.%0
+
+
+
+
+ MessageId: MF_E_INVALID_WORKQUEUE
+
+ MessageText:
+
+ The operation failed because an invalid combination of workqueue ID and flags was specified.%0
+
+
+
+
+ MessageId: MF_E_DRM_UNSUPPORTED
+
+ MessageText:
+
+ No DRM support is available.%0
+
+
+
+
+ MessageId: MF_E_UNAUTHORIZED
+
+ MessageText:
+
+ This operation is not authorized.%0
+
+
+
+
+ MessageId: MF_E_OUT_OF_RANGE
+
+ MessageText:
+
+ The value is not in the specified or valid range.%0
+
+
+
+
+ MessageId: MF_E_INVALID_CODEC_MERIT
+
+ MessageText:
+
+ The registered codec merit is not valid.%0
+
+
+
+
+ MessageId: MF_E_HW_MFT_FAILED_START_STREAMING
+
+ MessageText:
+
+ Hardware MFT failed to start streaming due to lack of hardware resources.%0
+
+
+
+
+ MessageId: MF_S_ASF_PARSEINPROGRESS
+
+ MessageText:
+
+ Parsing is still in progress and is not yet complete.%0
+
+
+
+
+ MessageId: MF_E_ASF_PARSINGINCOMPLETE
+
+ MessageText:
+
+ Not enough data have been parsed to carry out the requested action.%0
+
+
+
+
+ MessageId: MF_E_ASF_MISSINGDATA
+
+ MessageText:
+
+ There is a gap in the ASF data provided.%0
+
+
+
+
+ MessageId: MF_E_ASF_INVALIDDATA
+
+ MessageText:
+
+ The data provided are not valid ASF.%0
+
+
+
+
+ MessageId: MF_E_ASF_OPAQUEPACKET
+
+ MessageText:
+
+ The packet is opaque, so the requested information cannot be returned.%0
+
+
+
+
+ MessageId: MF_E_ASF_NOINDEX
+
+ MessageText:
+
+ The requested operation failed since there is no appropriate ASF index.%0
+
+
+
+
+ MessageId: MF_E_ASF_OUTOFRANGE
+
+ MessageText:
+
+ The value supplied is out of range for this operation.%0
+
+
+
+
+ MessageId: MF_E_ASF_INDEXNOTLOADED
+
+ MessageText:
+
+ The index entry requested needs to be loaded before it can be available.%0
+
+
+
+
+ MessageId: MF_E_ASF_TOO_MANY_PAYLOADS
+
+ MessageText:
+
+ The packet has reached the maximum number of payloads.%0
+
+
+
+
+ MessageId: MF_E_ASF_UNSUPPORTED_STREAM_TYPE
+
+ MessageText:
+
+ Stream type is not supported.%0
+
+
+
+
+ MessageId: MF_E_ASF_DROPPED_PACKET
+
+ MessageText:
+
+ One or more ASF packets were dropped.%0
+
+
+
+
+ MessageId: MF_E_NO_EVENTS_AVAILABLE
+
+ MessageText:
+
+ There are no events available in the queue.%0
+
+
+
+
+ MessageId: MF_E_INVALID_STATE_TRANSITION
+
+ MessageText:
+
+ A media source cannot go from the stopped state to the paused state.%0
+
+
+
+
+ MessageId: MF_E_END_OF_STREAM
+
+ MessageText:
+
+ The media stream cannot process any more samples because there are no more samples in the stream.%0
+
+
+
+
+ MessageId: MF_E_SHUTDOWN
+
+ MessageText:
+
+ The request is invalid because Shutdown() has been called.%0
+
+
+
+
+ MessageId: MF_E_MP3_NOTFOUND
+
+ MessageText:
+
+ The MP3 object was not found.%0
+
+
+
+
+ MessageId: MF_E_MP3_OUTOFDATA
+
+ MessageText:
+
+ The MP3 parser ran out of data before finding the MP3 object.%0
+
+
+
+
+ MessageId: MF_E_MP3_NOTMP3
+
+ MessageText:
+
+ The file is not really a MP3 file.%0
+
+
+
+
+ MessageId: MF_E_MP3_NOTSUPPORTED
+
+ MessageText:
+
+ The MP3 file is not supported.%0
+
+
+
+
+ MessageId: MF_E_NO_DURATION
+
+ MessageText:
+
+ The Media stream has no duration.%0
+
+
+
+
+ MessageId: MF_E_INVALID_FORMAT
+
+ MessageText:
+
+ The Media format is recognized but is invalid.%0
+
+
+
+
+ MessageId: MF_E_PROPERTY_NOT_FOUND
+
+ MessageText:
+
+ The property requested was not found.%0
+
+
+
+
+ MessageId: MF_E_PROPERTY_READ_ONLY
+
+ MessageText:
+
+ The property is read only.%0
+
+
+
+
+ MessageId: MF_E_PROPERTY_NOT_ALLOWED
+
+ MessageText:
+
+ The specified property is not allowed in this context.%0
+
+
+
+
+ MessageId: MF_E_MEDIA_SOURCE_NOT_STARTED
+
+ MessageText:
+
+ The media source is not started.%0
+
+
+
+
+ MessageId: MF_E_UNSUPPORTED_FORMAT
+
+ MessageText:
+
+ The Media format is recognized but not supported.%0
+
+
+
+
+ MessageId: MF_E_MP3_BAD_CRC
+
+ MessageText:
+
+ The MPEG frame has bad CRC.%0
+
+
+
+
+ MessageId: MF_E_NOT_PROTECTED
+
+ MessageText:
+
+ The file is not protected.%0
+
+
+
+
+ MessageId: MF_E_MEDIA_SOURCE_WRONGSTATE
+
+ MessageText:
+
+ The media source is in the wrong state%0
+
+
+
+
+ MessageId: MF_E_MEDIA_SOURCE_NO_STREAMS_SELECTED
+
+ MessageText:
+
+ No streams are selected in source presentation descriptor.%0
+
+
+
+
+ MessageId: MF_E_CANNOT_FIND_KEYFRAME_SAMPLE
+
+ MessageText:
+
+ No key frame sample was found.%0
+
+
+
+
+ MessageId: MF_E_NETWORK_RESOURCE_FAILURE
+
+ MessageText:
+
+ An attempt to acquire a network resource failed.%0
+
+
+
+
+ MessageId: MF_E_NET_WRITE
+
+ MessageText:
+
+ Error writing to the network.%0
+
+
+
+
+ MessageId: MF_E_NET_READ
+
+ MessageText:
+
+ Error reading from the network.%0
+
+
+
+
+ MessageId: MF_E_NET_REQUIRE_NETWORK
+
+ MessageText:
+
+ Internal. Entry cannot complete operation without network.%0
+
+
+
+
+ MessageId: MF_E_NET_REQUIRE_ASYNC
+
+ MessageText:
+
+ Internal. Async op is required.%0
+
+
+
+
+ MessageId: MF_E_NET_BWLEVEL_NOT_SUPPORTED
+
+ MessageText:
+
+ Internal. Bandwidth levels are not supported.%0
+
+
+
+
+ MessageId: MF_E_NET_STREAMGROUPS_NOT_SUPPORTED
+
+ MessageText:
+
+ Internal. Stream groups are not supported.%0
+
+
+
+
+ MessageId: MF_E_NET_MANUALSS_NOT_SUPPORTED
+
+ MessageText:
+
+ Manual stream selection is not supported.%0
+
+
+
+
+ MessageId: MF_E_NET_INVALID_PRESENTATION_DESCRIPTOR
+
+ MessageText:
+
+ Invalid presentation descriptor.%0
+
+
+
+
+ MessageId: MF_E_NET_CACHESTREAM_NOT_FOUND
+
+ MessageText:
+
+ Cannot find cache stream.%0
+
+
+
+
+ MessageId: MF_I_MANUAL_PROXY
+
+ MessageText:
+
+ The proxy setting is manual.%0
+
+
+
+ duplicate removed
+ MessageId=17011 Severity=Informational Facility=MEDIAFOUNDATION SymbolicName=MF_E_INVALID_REQUEST
+ Language=English
+ The request is invalid in the current state.%0
+ .
+
+ MessageId: MF_E_NET_REQUIRE_INPUT
+
+ MessageText:
+
+ Internal. Entry cannot complete operation without input.%0
+
+
+
+
+ MessageId: MF_E_NET_REDIRECT
+
+ MessageText:
+
+ The client redirected to another server.%0
+
+
+
+
+ MessageId: MF_E_NET_REDIRECT_TO_PROXY
+
+ MessageText:
+
+ The client is redirected to a proxy server.%0
+
+
+
+
+ MessageId: MF_E_NET_TOO_MANY_REDIRECTS
+
+ MessageText:
+
+ The client reached maximum redirection limit.%0
+
+
+
+
+ MessageId: MF_E_NET_TIMEOUT
+
+ MessageText:
+
+ The server, a computer set up to offer multimedia content to other computers, could not handle your request for multimedia content in a timely manner. Please try again later.%0
+
+
+
+
+ MessageId: MF_E_NET_CLIENT_CLOSE
+
+ MessageText:
+
+ The control socket is closed by the client.%0
+
+
+
+
+ MessageId: MF_E_NET_BAD_CONTROL_DATA
+
+ MessageText:
+
+ The server received invalid data from the client on the control connection.%0
+
+
+
+
+ MessageId: MF_E_NET_INCOMPATIBLE_SERVER
+
+ MessageText:
+
+ The server is not a compatible streaming media server.%0
+
+
+
+
+ MessageId: MF_E_NET_UNSAFE_URL
+
+ MessageText:
+
+ Url.%0
+
+
+
+
+ MessageId: MF_E_NET_CACHE_NO_DATA
+
+ MessageText:
+
+ Data is not available.%0
+
+
+
+
+ MessageId: MF_E_NET_EOL
+
+ MessageText:
+
+ End of line.%0
+
+
+
+
+ MessageId: MF_E_NET_BAD_REQUEST
+
+ MessageText:
+
+ The request could not be understood by the server.%0
+
+
+
+
+ MessageId: MF_E_NET_INTERNAL_SERVER_ERROR
+
+ MessageText:
+
+ The server encountered an unexpected condition which prevented it from fulfilling the request.%0
+
+
+
+
+ MessageId: MF_E_NET_SESSION_NOT_FOUND
+
+ MessageText:
+
+ Session not found.%0
+
+
+
+
+ MessageId: MF_E_NET_NOCONNECTION
+
+ MessageText:
+
+ There is no connection established with the Windows Media server. The operation failed.%0
+
+
+
+
+ MessageId: MF_E_NET_CONNECTION_FAILURE
+
+ MessageText:
+
+ The network connection has failed.%0
+
+
+
+
+ MessageId: MF_E_NET_INCOMPATIBLE_PUSHSERVER
+
+ MessageText:
+
+ The Server service that received the HTTP push request is not a compatible version of Windows Media Services (WMS). This error may indicate the push request was received by IIS instead of WMS. Ensure WMS is started and has the HTTP Server control protocol properly enabled and try again.%0
+
+
+
+
+ MessageId: MF_E_NET_SERVER_ACCESSDENIED
+
+ MessageText:
+
+ The Windows Media server is denying access. The username and/or password might be incorrect.%0
+
+
+
+
+ MessageId: MF_E_NET_PROXY_ACCESSDENIED
+
+ MessageText:
+
+ The proxy server is denying access. The username and/or password might be incorrect.%0
+
+
+
+
+ MessageId: MF_E_NET_CANNOTCONNECT
+
+ MessageText:
+
+ Unable to establish a connection to the server.%0
+
+
+
+
+ MessageId: MF_E_NET_INVALID_PUSH_TEMPLATE
+
+ MessageText:
+
+ The specified push template is invalid.%0
+
+
+
+
+ MessageId: MF_E_NET_INVALID_PUSH_PUBLISHING_POINT
+
+ MessageText:
+
+ The specified push publishing point is invalid.%0
+
+
+
+
+ MessageId: MF_E_NET_BUSY
+
+ MessageText:
+
+ The requested resource is in use.%0
+
+
+
+
+ MessageId: MF_E_NET_RESOURCE_GONE
+
+ MessageText:
+
+ The Publishing Point or file on the Windows Media Server is no longer available.%0
+
+
+
+
+ MessageId: MF_E_NET_ERROR_FROM_PROXY
+
+ MessageText:
+
+ The proxy experienced an error while attempting to contact the media server.%0
+
+
+
+
+ MessageId: MF_E_NET_PROXY_TIMEOUT
+
+ MessageText:
+
+ The proxy did not receive a timely response while attempting to contact the media server.%0
+
+
+
+
+ MessageId: MF_E_NET_SERVER_UNAVAILABLE
+
+ MessageText:
+
+ The server is currently unable to handle the request due to a temporary overloading or maintenance of the server.%0
+
+
+
+
+ MessageId: MF_E_NET_TOO_MUCH_DATA
+
+ MessageText:
+
+ The encoding process was unable to keep up with the amount of supplied data.%0
+
+
+
+
+ MessageId: MF_E_NET_SESSION_INVALID
+
+ MessageText:
+
+ Session not found.%0
+
+
+
+
+ MessageId: MF_E_OFFLINE_MODE
+
+ MessageText:
+
+ The requested URL is not available in offline mode.%0
+
+
+
+
+ MessageId: MF_E_NET_UDP_BLOCKED
+
+ MessageText:
+
+ A device in the network is blocking UDP traffic.%0
+
+
+
+
+ MessageId: MF_E_NET_UNSUPPORTED_CONFIGURATION
+
+ MessageText:
+
+ The specified configuration value is not supported.%0
+
+
+
+
+ MessageId: MF_E_NET_PROTOCOL_DISABLED
+
+ MessageText:
+
+ The networking protocol is disabled.%0
+
+
+
+
+ MessageId: MF_E_ALREADY_INITIALIZED
+
+ MessageText:
+
+ This object has already been initialized and cannot be re-initialized at this time.%0
+
+
+
+
+ MessageId: MF_E_BANDWIDTH_OVERRUN
+
+ MessageText:
+
+ The amount of data passed in exceeds the given bitrate and buffer window.%0
+
+
+
+
+ MessageId: MF_E_LATE_SAMPLE
+
+ MessageText:
+
+ The sample was passed in too late to be correctly processed.%0
+
+
+
+
+ MessageId: MF_E_FLUSH_NEEDED
+
+ MessageText:
+
+ The requested action cannot be carried out until the object is flushed and the queue is emptied.%0
+
+
+
+
+ MessageId: MF_E_INVALID_PROFILE
+
+ MessageText:
+
+ The profile is invalid.%0
+
+
+
+
+ MessageId: MF_E_INDEX_NOT_COMMITTED
+
+ MessageText:
+
+ The index that is being generated needs to be committed before the requested action can be carried out.%0
+
+
+
+
+ MessageId: MF_E_NO_INDEX
+
+ MessageText:
+
+ The index that is necessary for the requested action is not found.%0
+
+
+
+
+ MessageId: MF_E_CANNOT_INDEX_IN_PLACE
+
+ MessageText:
+
+ The requested index cannot be added in-place to the specified ASF content.%0
+
+
+
+
+ MessageId: MF_E_MISSING_ASF_LEAKYBUCKET
+
+ MessageText:
+
+ The ASF leaky bucket parameters must be specified in order to carry out this request.%0
+
+
+
+
+ MessageId: MF_E_INVALID_ASF_STREAMID
+
+ MessageText:
+
+ The stream id is invalid. The valid range for ASF stream id is from 1 to 127.%0
+
+
+
+
+ MessageId: MF_E_STREAMSINK_REMOVED
+
+ MessageText:
+
+ The requested Stream Sink has been removed and cannot be used.%0
+
+
+
+
+ MessageId: MF_E_STREAMSINKS_OUT_OF_SYNC
+
+ MessageText:
+
+ The various Stream Sinks in this Media Sink are too far out of sync for the requested action to take place.%0
+
+
+
+
+ MessageId: MF_E_STREAMSINKS_FIXED
+
+ MessageText:
+
+ Stream Sinks cannot be added to or removed from this Media Sink because its set of streams is fixed.%0
+
+
+
+
+ MessageId: MF_E_STREAMSINK_EXISTS
+
+ MessageText:
+
+ The given Stream Sink already exists.%0
+
+
+
+
+ MessageId: MF_E_SAMPLEALLOCATOR_CANCELED
+
+ MessageText:
+
+ Sample allocations have been canceled.%0
+
+
+
+
+ MessageId: MF_E_SAMPLEALLOCATOR_EMPTY
+
+ MessageText:
+
+ The sample allocator is currently empty, due to outstanding requests.%0
+
+
+
+
+ MessageId: MF_E_SINK_ALREADYSTOPPED
+
+ MessageText:
+
+ When we try to sopt a stream sink, it is already stopped %0
+
+
+
+
+ MessageId: MF_E_ASF_FILESINK_BITRATE_UNKNOWN
+
+ MessageText:
+
+ The ASF file sink could not reserve AVIO because the bitrate is unknown.%0
+
+
+
+
+ MessageId: MF_E_SINK_NO_STREAMS
+
+ MessageText:
+
+ No streams are selected in sink presentation descriptor.%0
+
+
+
+
+ MessageId: MF_S_SINK_NOT_FINALIZED
+
+ MessageText:
+
+ The sink has not been finalized before shut down. This may cause sink generate a corrupted content.%0
+
+
+
+
+ MessageId: MF_E_METADATA_TOO_LONG
+
+ MessageText:
+
+ A metadata item was too long to write to the output container.%0
+
+
+
+
+ MessageId: MF_E_SINK_NO_SAMPLES_PROCESSED
+
+ MessageText:
+
+ The operation failed because no samples were processed by the sink.%0
+
+
+
+
+ MessageId: MF_E_VIDEO_REN_NO_PROCAMP_HW
+
+ MessageText:
+
+ There is no available procamp hardware with which to perform color correction.%0
+
+
+
+
+ MessageId: MF_E_VIDEO_REN_NO_DEINTERLACE_HW
+
+ MessageText:
+
+ There is no available deinterlacing hardware with which to deinterlace the video stream.%0
+
+
+
+
+ MessageId: MF_E_VIDEO_REN_COPYPROT_FAILED
+
+ MessageText:
+
+ A video stream requires copy protection to be enabled, but there was a failure in attempting to enable copy protection.%0
+
+
+
+
+ MessageId: MF_E_VIDEO_REN_SURFACE_NOT_SHARED
+
+ MessageText:
+
+ A component is attempting to access a surface for sharing that is not shared.%0
+
+
+
+
+ MessageId: MF_E_VIDEO_DEVICE_LOCKED
+
+ MessageText:
+
+ A component is attempting to access a shared device that is already locked by another component.%0
+
+
+
+
+ MessageId: MF_E_NEW_VIDEO_DEVICE
+
+ MessageText:
+
+ The device is no longer available. The handle should be closed and a new one opened.%0
+
+
+
+
+ MessageId: MF_E_NO_VIDEO_SAMPLE_AVAILABLE
+
+ MessageText:
+
+ A video sample is not currently queued on a stream that is required for mixing.%0
+
+
+
+
+ MessageId: MF_E_NO_AUDIO_PLAYBACK_DEVICE
+
+ MessageText:
+
+ No audio playback device was found.%0
+
+
+
+
+ MessageId: MF_E_AUDIO_PLAYBACK_DEVICE_IN_USE
+
+ MessageText:
+
+ The requested audio playback device is currently in use.%0
+
+
+
+
+ MessageId: MF_E_AUDIO_PLAYBACK_DEVICE_INVALIDATED
+
+ MessageText:
+
+ The audio playback device is no longer present.%0
+
+
+
+
+ MessageId: MF_E_AUDIO_SERVICE_NOT_RUNNING
+
+ MessageText:
+
+ The audio service is not running.%0
+
+
+
+
+ MessageId: MF_E_TOPO_INVALID_OPTIONAL_NODE
+
+ MessageText:
+
+ The topology contains an invalid optional node. Possible reasons are incorrect number of outputs and inputs or optional node is at the beginning or end of a segment. %0
+
+
+
+
+ MessageId: MF_E_TOPO_CANNOT_FIND_DECRYPTOR
+
+ MessageText:
+
+ No suitable transform was found to decrypt the content. %0
+
+
+
+
+ MessageId: MF_E_TOPO_CODEC_NOT_FOUND
+
+ MessageText:
+
+ No suitable transform was found to encode or decode the content. %0
+
+
+
+
+ MessageId: MF_E_TOPO_CANNOT_CONNECT
+
+ MessageText:
+
+ Unable to find a way to connect nodes%0
+
+
+
+
+ MessageId: MF_E_TOPO_UNSUPPORTED
+
+ MessageText:
+
+ Unsupported operations in topoloader%0
+
+
+
+
+ MessageId: MF_E_TOPO_INVALID_TIME_ATTRIBUTES
+
+ MessageText:
+
+ The topology or its nodes contain incorrectly set time attributes%0
+
+
+
+
+ MessageId: MF_E_TOPO_LOOPS_IN_TOPOLOGY
+
+ MessageText:
+
+ The topology contains loops, which are unsupported in media foundation topologies%0
+
+
+
+
+ MessageId: MF_E_TOPO_MISSING_PRESENTATION_DESCRIPTOR
+
+ MessageText:
+
+ A source stream node in the topology does not have a presentation descriptor%0
+
+
+
+
+ MessageId: MF_E_TOPO_MISSING_STREAM_DESCRIPTOR
+
+ MessageText:
+
+ A source stream node in the topology does not have a stream descriptor%0
+
+
+
+
+ MessageId: MF_E_TOPO_STREAM_DESCRIPTOR_NOT_SELECTED
+
+ MessageText:
+
+ A stream descriptor was set on a source stream node but it was not selected on the presentation descriptor%0
+
+
+
+
+ MessageId: MF_E_TOPO_MISSING_SOURCE
+
+ MessageText:
+
+ A source stream node in the topology does not have a source%0
+
+
+
+
+ MessageId: MF_E_TOPO_SINK_ACTIVATES_UNSUPPORTED
+
+ MessageText:
+
+ The topology loader does not support sink activates on output nodes.%0
+
+
+
+
+ MessageId: MF_E_SEQUENCER_UNKNOWN_SEGMENT_ID
+
+ MessageText:
+
+ The sequencer cannot find a segment with the given ID.%0\n.
+
+
+
+
+ MessageId: MF_S_SEQUENCER_CONTEXT_CANCELED
+
+ MessageText:
+
+ The context was canceled.%0\n.
+
+
+
+
+ MessageId: MF_E_NO_SOURCE_IN_CACHE
+
+ MessageText:
+
+ Cannot find source in source cache.%0\n.
+
+
+
+
+ MessageId: MF_S_SEQUENCER_SEGMENT_AT_END_OF_STREAM
+
+ MessageText:
+
+ Cannot update topology flags.%0\n.
+
+
+
+
+ MessageId: MF_E_TRANSFORM_TYPE_NOT_SET
+
+ MessageText:
+
+ A valid type has not been set for this stream or a stream that it depends on.%0
+
+
+
+
+ MessageId: MF_E_TRANSFORM_STREAM_CHANGE
+
+ MessageText:
+
+ A stream change has occurred. Output cannot be produced until the streams have been renegotiated.%0
+
+
+
+
+ MessageId: MF_E_TRANSFORM_INPUT_REMAINING
+
+ MessageText:
+
+ The transform cannot take the requested action until all of the input data it currently holds is processed or flushed.%0
+
+
+
+
+ MessageId: MF_E_TRANSFORM_PROFILE_MISSING
+
+ MessageText:
+
+ The transform requires a profile but no profile was supplied or found.%0
+
+
+
+
+ MessageId: MF_E_TRANSFORM_PROFILE_INVALID_OR_CORRUPT
+
+ MessageText:
+
+ The transform requires a profile but the supplied profile was invalid or corrupt.%0
+
+
+
+
+ MessageId: MF_E_TRANSFORM_PROFILE_TRUNCATED
+
+ MessageText:
+
+ The transform requires a profile but the supplied profile ended unexpectedly while parsing.%0
+
+
+
+
+ MessageId: MF_E_TRANSFORM_PROPERTY_PID_NOT_RECOGNIZED
+
+ MessageText:
+
+ The property ID does not match any property supported by the transform.%0
+
+
+
+
+ MessageId: MF_E_TRANSFORM_PROPERTY_VARIANT_TYPE_WRONG
+
+ MessageText:
+
+ The variant does not have the type expected for this property ID.%0
+
+
+
+
+ MessageId: MF_E_TRANSFORM_PROPERTY_NOT_WRITEABLE
+
+ MessageText:
+
+ An attempt was made to set the value on a read-only property.%0
+
+
+
+
+ MessageId: MF_E_TRANSFORM_PROPERTY_ARRAY_VALUE_WRONG_NUM_DIM
+
+ MessageText:
+
+ The array property value has an unexpected number of dimensions.%0
+
+
+
+
+ MessageId: MF_E_TRANSFORM_PROPERTY_VALUE_SIZE_WRONG
+
+ MessageText:
+
+ The array or blob property value has an unexpected size.%0
+
+
+
+
+ MessageId: MF_E_TRANSFORM_PROPERTY_VALUE_OUT_OF_RANGE
+
+ MessageText:
+
+ The property value is out of range for this transform.%0
+
+
+
+
+ MessageId: MF_E_TRANSFORM_PROPERTY_VALUE_INCOMPATIBLE
+
+ MessageText:
+
+ The property value is incompatible with some other property or mediatype set on the transform.%0
+
+
+
+
+ MessageId: MF_E_TRANSFORM_NOT_POSSIBLE_FOR_CURRENT_OUTPUT_MEDIATYPE
+
+ MessageText:
+
+ The requested operation is not supported for the currently set output mediatype.%0
+
+
+
+
+ MessageId: MF_E_TRANSFORM_NOT_POSSIBLE_FOR_CURRENT_INPUT_MEDIATYPE
+
+ MessageText:
+
+ The requested operation is not supported for the currently set input mediatype.%0
+
+
+
+
+ MessageId: MF_E_TRANSFORM_NOT_POSSIBLE_FOR_CURRENT_MEDIATYPE_COMBINATION
+
+ MessageText:
+
+ The requested operation is not supported for the currently set combination of mediatypes.%0
+
+
+
+
+ MessageId: MF_E_TRANSFORM_CONFLICTS_WITH_OTHER_CURRENTLY_ENABLED_FEATURES
+
+ MessageText:
+
+ The requested feature is not supported in combination with some other currently enabled feature.%0
+
+
+
+
+ MessageId: MF_E_TRANSFORM_NEED_MORE_INPUT
+
+ MessageText:
+
+ The transform cannot produce output until it gets more input samples.%0
+
+
+
+
+ MessageId: MF_E_TRANSFORM_NOT_POSSIBLE_FOR_CURRENT_SPKR_CONFIG
+
+ MessageText:
+
+ The requested operation is not supported for the current speaker configuration.%0
+
+
+
+
+ MessageId: MF_E_TRANSFORM_CANNOT_CHANGE_MEDIATYPE_WHILE_PROCESSING
+
+ MessageText:
+
+ The transform cannot accept mediatype changes in the middle of processing.%0
+
+
+
+
+ MessageId: MF_S_TRANSFORM_DO_NOT_PROPAGATE_EVENT
+
+ MessageText:
+
+ The caller should not propagate this event to downstream components.%0
+
+
+
+
+ MessageId: MF_E_UNSUPPORTED_D3D_TYPE
+
+ MessageText:
+
+ The input type is not supported for D3D device.%0
+
+
+
+
+ MessageId: MF_E_TRANSFORM_ASYNC_LOCKED
+
+ MessageText:
+
+ The caller does not appear to support this transform's asynchronous capabilities.%0
+
+
+
+
+ MessageId: MF_E_TRANSFORM_CANNOT_INITIALIZE_ACM_DRIVER
+
+ MessageText:
+
+ An audio compression manager driver could not be initialized by the transform.%0
+
+
+
+
+ MessageId: MF_E_LICENSE_INCORRECT_RIGHTS
+
+ MessageText:
+
+ You are not allowed to open this file. Contact the content provider for further assistance.%0
+
+
+
+
+ MessageId: MF_E_LICENSE_OUTOFDATE
+
+ MessageText:
+
+ The license for this media file has expired. Get a new license or contact the content provider for further assistance.%0
+
+
+
+
+ MessageId: MF_E_LICENSE_REQUIRED
+
+ MessageText:
+
+ You need a license to perform the requested operation on this media file.%0
+
+
+
+
+ MessageId: MF_E_DRM_HARDWARE_INCONSISTENT
+
+ MessageText:
+
+ The licenses for your media files are corrupted. Contact Microsoft product support.%0
+
+
+
+
+ MessageId: MF_E_NO_CONTENT_PROTECTION_MANAGER
+
+ MessageText:
+
+ The APP needs to provide IMFContentProtectionManager callback to access the protected media file.%0
+
+
+
+
+ MessageId: MF_E_LICENSE_RESTORE_NO_RIGHTS
+
+ MessageText:
+
+ Client does not have rights to restore licenses.%0
+
+
+
+
+ MessageId: MF_E_BACKUP_RESTRICTED_LICENSE
+
+ MessageText:
+
+ Licenses are restricted and hence can not be backed up.%0
+
+
+
+
+ MessageId: MF_E_LICENSE_RESTORE_NEEDS_INDIVIDUALIZATION
+
+ MessageText:
+
+ License restore requires machine to be individualized.%0
+
+
+
+
+ MessageId: MF_S_PROTECTION_NOT_REQUIRED
+
+ MessageText:
+
+ Protection for stream is not required.%0
+
+
+
+
+ MessageId: MF_E_COMPONENT_REVOKED
+
+ MessageText:
+
+ Component is revoked.%0
+
+
+
+
+ MessageId: MF_E_TRUST_DISABLED
+
+ MessageText:
+
+ Trusted functionality is currently disabled on this component.%0
+
+
+
+
+ MessageId: MF_E_WMDRMOTA_NO_ACTION
+
+ MessageText:
+
+ No Action is set on WMDRM Output Trust Authority.%0
+
+
+
+
+ MessageId: MF_E_WMDRMOTA_ACTION_ALREADY_SET
+
+ MessageText:
+
+ Action is already set on WMDRM Output Trust Authority.%0
+
+
+
+
+ MessageId: MF_E_WMDRMOTA_DRM_HEADER_NOT_AVAILABLE
+
+ MessageText:
+
+ DRM Heaader is not available.%0
+
+
+
+
+ MessageId: MF_E_WMDRMOTA_DRM_ENCRYPTION_SCHEME_NOT_SUPPORTED
+
+ MessageText:
+
+ Current encryption scheme is not supported.%0
+
+
+
+
+ MessageId: MF_E_WMDRMOTA_ACTION_MISMATCH
+
+ MessageText:
+
+ Action does not match with current configuration.%0
+
+
+
+
+ MessageId: MF_E_WMDRMOTA_INVALID_POLICY
+
+ MessageText:
+
+ Invalid policy for WMDRM Output Trust Authority.%0
+
+
+
+
+ MessageId: MF_E_POLICY_UNSUPPORTED
+
+ MessageText:
+
+ The policies that the Input Trust Authority requires to be enforced are unsupported by the outputs.%0
+
+
+
+
+ MessageId: MF_E_OPL_NOT_SUPPORTED
+
+ MessageText:
+
+ The OPL that the license requires to be enforced are not supported by the Input Trust Authority.%0
+
+
+
+
+ MessageId: MF_E_TOPOLOGY_VERIFICATION_FAILED
+
+ MessageText:
+
+ The topology could not be successfully verified.%0
+
+
+
+
+ MessageId: MF_E_SIGNATURE_VERIFICATION_FAILED
+
+ MessageText:
+
+ Signature verification could not be completed successfully for this component.%0
+
+
+
+
+ MessageId: MF_E_DEBUGGING_NOT_ALLOWED
+
+ MessageText:
+
+ Running this process under a debugger while using protected content is not allowed.%0
+
+
+
+
+ MessageId: MF_E_CODE_EXPIRED
+
+ MessageText:
+
+ MF component has expired.%0
+
+
+
+
+ MessageId: MF_E_GRL_VERSION_TOO_LOW
+
+ MessageText:
+
+ The current GRL on the machine does not meet the minimum version requirements.%0
+
+
+
+
+ MessageId: MF_E_GRL_RENEWAL_NOT_FOUND
+
+ MessageText:
+
+ The current GRL on the machine does not contain any renewal entries for the specified revocation.%0
+
+
+
+
+ MessageId: MF_E_GRL_EXTENSIBLE_ENTRY_NOT_FOUND
+
+ MessageText:
+
+ The current GRL on the machine does not contain any extensible entries for the specified extension GUID.%0
+
+
+
+
+ MessageId: MF_E_KERNEL_UNTRUSTED
+
+ MessageText:
+
+ The kernel isn't secure for high security level content.%0
+
+
+
+
+ MessageId: MF_E_PEAUTH_UNTRUSTED
+
+ MessageText:
+
+ The response from protected environment driver isn't valid.%0
+
+
+
+
+ MessageId: MF_E_NON_PE_PROCESS
+
+ MessageText:
+
+ A non-PE process tried to talk to PEAuth.%0
+
+
+
+
+ MessageId: MF_E_REBOOT_REQUIRED
+
+ MessageText:
+
+ We need to reboot the machine.%0
+
+
+
+
+ MessageId: MF_S_WAIT_FOR_POLICY_SET
+
+ MessageText:
+
+ Protection for this stream is not guaranteed to be enforced until the MEPolicySet event is fired.%0
+
+
+
+
+ MessageId: MF_S_VIDEO_DISABLED_WITH_UNKNOWN_SOFTWARE_OUTPUT
+
+ MessageText:
+
+ This video stream is disabled because it is being sent to an unknown software output.%0
+
+
+
+
+ MessageId: MF_E_GRL_INVALID_FORMAT
+
+ MessageText:
+
+ The GRL file is not correctly formed, it may have been corrupted or overwritten.%0
+
+
+
+
+ MessageId: MF_E_GRL_UNRECOGNIZED_FORMAT
+
+ MessageText:
+
+ The GRL file is in a format newer than those recognized by this GRL Reader.%0
+
+
+
+
+ MessageId: MF_E_ALL_PROCESS_RESTART_REQUIRED
+
+ MessageText:
+
+ The GRL was reloaded and required all processes that can run protected media to restart.%0
+
+
+
+
+ MessageId: MF_E_PROCESS_RESTART_REQUIRED
+
+ MessageText:
+
+ The GRL was reloaded and the current process needs to restart.%0
+
+
+
+
+ MessageId: MF_E_USERMODE_UNTRUSTED
+
+ MessageText:
+
+ The user space is untrusted for protected content play.%0
+
+
+
+
+ MessageId: MF_E_PEAUTH_SESSION_NOT_STARTED
+
+ MessageText:
+
+ PEAuth communication session hasn't been started.%0
+
+
+
+
+ MessageId: MF_E_PEAUTH_PUBLICKEY_REVOKED
+
+ MessageText:
+
+ PEAuth's public key is revoked.%0
+
+
+
+
+ MessageId: MF_E_GRL_ABSENT
+
+ MessageText:
+
+ The GRL is absent.%0
+
+
+
+
+ MessageId: MF_S_PE_TRUSTED
+
+ MessageText:
+
+ The Protected Environment is trusted.%0
+
+
+
+
+ MessageId: MF_E_PE_UNTRUSTED
+
+ MessageText:
+
+ The Protected Environment is untrusted.%0
+
+
+
+
+ MessageId: MF_E_PEAUTH_NOT_STARTED
+
+ MessageText:
+
+ The Protected Environment Authorization service (PEAUTH) has not been started.%0
+
+
+
+
+ MessageId: MF_E_INCOMPATIBLE_SAMPLE_PROTECTION
+
+ MessageText:
+
+ The sample protection algorithms supported by components are not compatible.%0
+
+
+
+
+ MessageId: MF_E_PE_SESSIONS_MAXED
+
+ MessageText:
+
+ No more protected environment sessions can be supported.%0
+
+
+
+
+ MessageId: MF_E_HIGH_SECURITY_LEVEL_CONTENT_NOT_ALLOWED
+
+ MessageText:
+
+ WMDRM ITA does not allow protected content with high security level for this release.%0
+
+
+
+
+ MessageId: MF_E_TEST_SIGNED_COMPONENTS_NOT_ALLOWED
+
+ MessageText:
+
+ WMDRM ITA cannot allow the requested action for the content as one or more components is not properly signed.%0
+
+
+
+
+ MessageId: MF_E_ITA_UNSUPPORTED_ACTION
+
+ MessageText:
+
+ WMDRM ITA does not support the requested action.%0
+
+
+
+
+ MessageId: MF_E_ITA_ERROR_PARSING_SAP_PARAMETERS
+
+ MessageText:
+
+ WMDRM ITA encountered an error in parsing the Secure Audio Path parameters.%0
+
+
+
+
+ MessageId: MF_E_POLICY_MGR_ACTION_OUTOFBOUNDS
+
+ MessageText:
+
+ The Policy Manager action passed in is invalid.%0
+
+
+
+
+ MessageId: MF_E_BAD_OPL_STRUCTURE_FORMAT
+
+ MessageText:
+
+ The structure specifying Output Protection Level is not the correct format.%0
+
+
+
+
+ MessageId: MF_E_ITA_UNRECOGNIZED_ANALOG_VIDEO_PROTECTION_GUID
+
+ MessageText:
+
+ WMDRM ITA does not recognize the Explicite Analog Video Output Protection guid specified in the license.%0
+
+
+
+
+ MessageId: MF_E_NO_PMP_HOST
+
+ MessageText:
+
+ IMFPMPHost object not available.%0
+
+
+
+
+ MessageId: MF_E_ITA_OPL_DATA_NOT_INITIALIZED
+
+ MessageText:
+
+ WMDRM ITA could not initialize the Output Protection Level data.%0
+
+
+
+
+ MessageId: MF_E_ITA_UNRECOGNIZED_ANALOG_VIDEO_OUTPUT
+
+ MessageText:
+
+ WMDRM ITA does not recognize the Analog Video Output specified by the OTA.%0
+
+
+
+
+ MessageId: MF_E_ITA_UNRECOGNIZED_DIGITAL_VIDEO_OUTPUT
+
+ MessageText:
+
+ WMDRM ITA does not recognize the Digital Video Output specified by the OTA.%0
+
+
+
+
+ MessageId: MF_E_CLOCK_INVALID_CONTINUITY_KEY
+
+ MessageText:
+
+ The continuity key supplied is not currently valid.%0
+
+
+
+
+ MessageId: MF_E_CLOCK_NO_TIME_SOURCE
+
+ MessageText:
+
+ No Presentation Time Source has been specified.%0
+
+
+
+
+ MessageId: MF_E_CLOCK_STATE_ALREADY_SET
+
+ MessageText:
+
+ The clock is already in the requested state.%0
+
+
+
+
+ MessageId: MF_E_CLOCK_NOT_SIMPLE
+
+ MessageText:
+
+ The clock has too many advanced features to carry out the request.%0
+
+
+
+
+ MessageId: MF_S_CLOCK_STOPPED
+
+ MessageText:
+
+ Timer::SetTimer returns this success code if called happened while timer is stopped. Timer is not going to be dispatched until clock is running%0
+
+
+
+
+ MessageId: MF_E_NO_MORE_DROP_MODES
+
+ MessageText:
+
+ The component does not support any more drop modes.%0
+
+
+
+
+ MessageId: MF_E_NO_MORE_QUALITY_LEVELS
+
+ MessageText:
+
+ The component does not support any more quality levels.%0
+
+
+
+
+ MessageId: MF_E_DROPTIME_NOT_SUPPORTED
+
+ MessageText:
+
+ The component does not support drop time functionality.%0
+
+
+
+
+ MessageId: MF_E_QUALITYKNOB_WAIT_LONGER
+
+ MessageText:
+
+ Quality Manager needs to wait longer before bumping the Quality Level up.%0
+
+
+
+
+ MessageId: MF_E_QM_INVALIDSTATE
+
+ MessageText:
+
+ Quality Manager is in an invalid state. Quality Management is off at this moment.%0
+
+
+
+
+ MessageId: MF_E_TRANSCODE_NO_CONTAINERTYPE
+
+ MessageText:
+
+ No transcode output container type is specified.%0
+
+
+
+
+ MessageId: MF_E_TRANSCODE_PROFILE_NO_MATCHING_STREAMS
+
+ MessageText:
+
+ The profile does not have a media type configuration for any selected source streams.%0
+
+
+
+
+ MessageId: MF_E_TRANSCODE_NO_MATCHING_ENCODER
+
+ MessageText:
+
+ Cannot find an encoder MFT that accepts the user preferred output type.%0
+
+
+
+
+ MessageId: MF_E_ALLOCATOR_NOT_INITIALIZED
+
+ MessageText:
+
+ Memory allocator is not initialized.%0
+
+
+
+
+ MessageId: MF_E_ALLOCATOR_NOT_COMMITED
+
+ MessageText:
+
+ Memory allocator is not committed yet.%0
+
+
+
+
+ MessageId: MF_E_ALLOCATOR_ALREADY_COMMITED
+
+ MessageText:
+
+ Memory allocator has already been committed.%0
+
+
+
+
+ MessageId: MF_E_STREAM_ERROR
+
+ MessageText:
+
+ An error occurred in media stream.%0
+
+
+
+
+ MessageId: MF_E_INVALID_STREAM_STATE
+
+ MessageText:
+
+ Stream is not in a state to handle the request.%0
+
+
+
+
+ MessageId: MF_E_HW_STREAM_NOT_CONNECTED
+
+ MessageText:
+
+ Hardware stream is not connected yet.%0
+
+
+
+
+ Major Media Types
+ http://msdn.microsoft.com/en-us/library/windows/desktop/aa367377%28v=vs.85%29.aspx
+
+
+
+
+ Default
+
+
+
+
+ Audio
+
+
+
+
+ Video
+
+
+
+
+ Protected Media
+
+
+
+
+ Synchronized Accessible Media Interchange (SAMI) captions.
+
+
+
+
+ Script stream
+
+
+
+
+ Still image stream.
+
+
+
+
+ HTML stream.
+
+
+
+
+ Binary stream.
+
+
+
+
+ A stream that contains data files.
+
+
+
+
+ Chunk Identifier helpers
+
+
+
+
+ Chunk identifier to Int32 (replaces mmioStringToFOURCC)
+
+ four character chunk identifier
+ Chunk identifier as int 32
+
+
+
+ Allows us to add descriptions to interop members
+
+
+
+
+ Field description
+
+
+
+
+ String representation
+
+
+
+
+
+ The description
+
+
+
+
+ IMFActivate, defined in mfobjects.h
+
+
+
+
+ Provides a generic way to store key/value pairs on an object.
+ http://msdn.microsoft.com/en-gb/library/windows/desktop/ms704598%28v=vs.85%29.aspx
+
+
+
+
+ Retrieves the value associated with a key.
+
+
+
+
+ Retrieves the data type of the value associated with a key.
+
+
+
+
+ Queries whether a stored attribute value equals a specified PROPVARIANT.
+
+
+
+
+ Compares the attributes on this object with the attributes on another object.
+
+
+
+
+ Retrieves a UINT32 value associated with a key.
+
+
+
+
+ Retrieves a UINT64 value associated with a key.
+
+
+
+
+ Retrieves a double value associated with a key.
+
+
+
+
+ Retrieves a GUID value associated with a key.
+
+
+
+
+ Retrieves the length of a string value associated with a key.
+
+
+
+
+ Retrieves a wide-character string associated with a key.
+
+
+
+
+ Retrieves a wide-character string associated with a key. This method allocates the memory for the string.
+
+
+
+
+ Retrieves the length of a byte array associated with a key.
+
+
+
+
+ Retrieves a byte array associated with a key.
+
+
+
+
+ Retrieves a byte array associated with a key. This method allocates the memory for the array.
+
+
+
+
+ Retrieves an interface pointer associated with a key.
+
+
+
+
+ Associates an attribute value with a key.
+
+
+
+
+ Removes a key/value pair from the object's attribute list.
+
+
+
+
+ Removes all key/value pairs from the object's attribute list.
+
+
+
+
+ Associates a UINT32 value with a key.
+
+
+
+
+ Associates a UINT64 value with a key.
+
+
+
+
+ Associates a double value with a key.
+
+
+
+
+ Associates a GUID value with a key.
+
+
+
+
+ Associates a wide-character string with a key.
+
+
+
+
+ Associates a byte array with a key.
+
+
+
+
+ Associates an IUnknown pointer with a key.
+
+
+
+
+ Locks the attribute store so that no other thread can access it.
+
+
+
+
+ Unlocks the attribute store.
+
+
+
+
+ Retrieves the number of attributes that are set on this object.
+
+
+
+
+ Retrieves an attribute at the specified index.
+
+
+
+
+ Copies all of the attributes from this object into another attribute store.
+
+
+
+
+ Retrieves the value associated with a key.
+
+
+
+
+ Retrieves the data type of the value associated with a key.
+
+
+
+
+ Queries whether a stored attribute value equals a specified PROPVARIANT.
+
+
+
+
+ Compares the attributes on this object with the attributes on another object.
+
+
+
+
+ Retrieves a UINT32 value associated with a key.
+
+
+
+
+ Retrieves a UINT64 value associated with a key.
+
+
+
+
+ Retrieves a double value associated with a key.
+
+
+
+
+ Retrieves a GUID value associated with a key.
+
+
+
+
+ Retrieves the length of a string value associated with a key.
+
+
+
+
+ Retrieves a wide-character string associated with a key.
+
+
+
+
+ Retrieves a wide-character string associated with a key. This method allocates the memory for the string.
+
+
+
+
+ Retrieves the length of a byte array associated with a key.
+
+
+
+
+ Retrieves a byte array associated with a key.
+
+
+
+
+ Retrieves a byte array associated with a key. This method allocates the memory for the array.
+
+
+
+
+ Retrieves an interface pointer associated with a key.
+
+
+
+
+ Associates an attribute value with a key.
+
+
+
+
+ Removes a key/value pair from the object's attribute list.
+
+
+
+
+ Removes all key/value pairs from the object's attribute list.
+
+
+
+
+ Associates a UINT32 value with a key.
+
+
+
+
+ Associates a UINT64 value with a key.
+
+
+
+
+ Associates a double value with a key.
+
+
+
+
+ Associates a GUID value with a key.
+
+
+
+
+ Associates a wide-character string with a key.
+
+
+
+
+ Associates a byte array with a key.
+
+
+
+
+ Associates an IUnknown pointer with a key.
+
+
+
+
+ Locks the attribute store so that no other thread can access it.
+
+
+
+
+ Unlocks the attribute store.
+
+
+
+
+ Retrieves the number of attributes that are set on this object.
+
+
+
+
+ Retrieves an attribute at the specified index.
+
+
+
+
+ Copies all of the attributes from this object into another attribute store.
+
+
+
+
+ Creates the object associated with this activation object.
+
+
+
+
+ Shuts down the created object.
+
+
+
+
+ Detaches the created object from the activation object.
+
+
+
+
+ Represents a generic collection of IUnknown pointers.
+
+
+
+
+ Retrieves the number of objects in the collection.
+
+
+
+
+ Retrieves an object in the collection.
+
+
+
+
+ Adds an object to the collection.
+
+
+
+
+ Removes an object from the collection.
+
+
+
+
+ Removes an object from the collection.
+
+
+
+
+ Removes all items from the collection.
+
+
+
+
+ IMFMediaEvent - Represents an event generated by a Media Foundation object. Use this interface to get information about the event.
+ http://msdn.microsoft.com/en-us/library/windows/desktop/ms702249%28v=vs.85%29.aspx
+ Mfobjects.h
+
+
+
+
+ Retrieves the value associated with a key.
+
+
+
+
+ Retrieves the data type of the value associated with a key.
+
+
+
+
+ Queries whether a stored attribute value equals a specified PROPVARIANT.
+
+
+
+
+ Compares the attributes on this object with the attributes on another object.
+
+
+
+
+ Retrieves a UINT32 value associated with a key.
+
+
+
+
+ Retrieves a UINT64 value associated with a key.
+
+
+
+
+ Retrieves a double value associated with a key.
+
+
+
+
+ Retrieves a GUID value associated with a key.
+
+
+
+
+ Retrieves the length of a string value associated with a key.
+
+
+
+
+ Retrieves a wide-character string associated with a key.
+
+
+
+
+ Retrieves a wide-character string associated with a key. This method allocates the memory for the string.
+
+
+
+
+ Retrieves the length of a byte array associated with a key.
+
+
+
+
+ Retrieves a byte array associated with a key.
+
+
+
+
+ Retrieves a byte array associated with a key. This method allocates the memory for the array.
+
+
+
+
+ Retrieves an interface pointer associated with a key.
+
+
+
+
+ Associates an attribute value with a key.
+
+
+
+
+ Removes a key/value pair from the object's attribute list.
+
+
+
+
+ Removes all key/value pairs from the object's attribute list.
+
+
+
+
+ Associates a UINT32 value with a key.
+
+
+
+
+ Associates a UINT64 value with a key.
+
+
+
+
+ Associates a double value with a key.
+
+
+
+
+ Associates a GUID value with a key.
+
+
+
+
+ Associates a wide-character string with a key.
+
+
+
+
+ Associates a byte array with a key.
+
+
+
+
+ Associates an IUnknown pointer with a key.
+
+
+
+
+ Locks the attribute store so that no other thread can access it.
+
+
+
+
+ Unlocks the attribute store.
+
+
+
+
+ Retrieves the number of attributes that are set on this object.
+
+
+
+
+ Retrieves an attribute at the specified index.
+
+
+
+
+ Copies all of the attributes from this object into another attribute store.
+
+
+
+
+ Retrieves the event type.
+
+
+ virtual HRESULT STDMETHODCALLTYPE GetType(
+ /* [out] */ __RPC__out MediaEventType *pmet) = 0;
+
+
+
+
+ Retrieves the extended type of the event.
+
+
+ virtual HRESULT STDMETHODCALLTYPE GetExtendedType(
+ /* [out] */ __RPC__out GUID *pguidExtendedType) = 0;
+
+
+
+
+ Retrieves an HRESULT that specifies the event status.
+
+
+ virtual HRESULT STDMETHODCALLTYPE GetStatus(
+ /* [out] */ __RPC__out HRESULT *phrStatus) = 0;
+
+
+
+
+ Retrieves the value associated with the event, if any.
+
+
+ virtual HRESULT STDMETHODCALLTYPE GetValue(
+ /* [out] */ __RPC__out PROPVARIANT *pvValue) = 0;
+
+
+
+
+ Implemented by the Microsoft Media Foundation sink writer object.
+
+
+
+
+ Adds a stream to the sink writer.
+
+
+
+
+ Sets the input format for a stream on the sink writer.
+
+
+
+
+ Initializes the sink writer for writing.
+
+
+
+
+ Delivers a sample to the sink writer.
+
+
+
+
+ Indicates a gap in an input stream.
+
+
+
+
+ Places a marker in the specified stream.
+
+
+
+
+ Notifies the media sink that a stream has reached the end of a segment.
+
+
+
+
+ Flushes one or more streams.
+
+
+
+
+ (Finalize) Completes all writing operations on the sink writer.
+
+
+
+
+ Queries the underlying media sink or encoder for an interface.
+
+
+
+
+ Gets statistics about the performance of the sink writer.
+
+
+
+
+ IMFTransform, defined in mftransform.h
+
+
+
+
+ Retrieves the minimum and maximum number of input and output streams.
+
+
+ virtual HRESULT STDMETHODCALLTYPE GetStreamLimits(
+ /* [out] */ __RPC__out DWORD *pdwInputMinimum,
+ /* [out] */ __RPC__out DWORD *pdwInputMaximum,
+ /* [out] */ __RPC__out DWORD *pdwOutputMinimum,
+ /* [out] */ __RPC__out DWORD *pdwOutputMaximum) = 0;
+
+
+
+
+ Retrieves the current number of input and output streams on this MFT.
+
+
+ virtual HRESULT STDMETHODCALLTYPE GetStreamCount(
+ /* [out] */ __RPC__out DWORD *pcInputStreams,
+ /* [out] */ __RPC__out DWORD *pcOutputStreams) = 0;
+
+
+
+
+ Retrieves the stream identifiers for the input and output streams on this MFT.
+
+
+ virtual HRESULT STDMETHODCALLTYPE GetStreamIDs(
+ DWORD dwInputIDArraySize,
+ /* [size_is][out] */ __RPC__out_ecount_full(dwInputIDArraySize) DWORD *pdwInputIDs,
+ DWORD dwOutputIDArraySize,
+ /* [size_is][out] */ __RPC__out_ecount_full(dwOutputIDArraySize) DWORD *pdwOutputIDs) = 0;
+
+
+
+
+ Gets the buffer requirements and other information for an input stream on this Media Foundation transform (MFT).
+
+
+ virtual HRESULT STDMETHODCALLTYPE GetInputStreamInfo(
+ DWORD dwInputStreamID,
+ /* [out] */ __RPC__out MFT_INPUT_STREAM_INFO *pStreamInfo) = 0;
+
+
+
+
+ Gets the buffer requirements and other information for an output stream on this Media Foundation transform (MFT).
+
+
+ virtual HRESULT STDMETHODCALLTYPE GetOutputStreamInfo(
+ DWORD dwOutputStreamID,
+ /* [out] */ __RPC__out MFT_OUTPUT_STREAM_INFO *pStreamInfo) = 0;
+
+
+
+
+ Gets the global attribute store for this Media Foundation transform (MFT).
+
+
+ virtual HRESULT STDMETHODCALLTYPE GetAttributes(
+ /* [out] */ __RPC__deref_out_opt IMFAttributes **pAttributes) = 0;
+
+
+
+
+ Retrieves the attribute store for an input stream on this MFT.
+
+
+ virtual HRESULT STDMETHODCALLTYPE GetInputStreamAttributes(
+ DWORD dwInputStreamID,
+ /* [out] */ __RPC__deref_out_opt IMFAttributes **pAttributes) = 0;
+
+
+
+
+ Retrieves the attribute store for an output stream on this MFT.
+
+
+ virtual HRESULT STDMETHODCALLTYPE GetOutputStreamAttributes(
+ DWORD dwOutputStreamID,
+ /* [out] */ __RPC__deref_out_opt IMFAttributes **pAttributes) = 0;
+
+
+
+
+ Removes an input stream from this MFT.
+
+
+ virtual HRESULT STDMETHODCALLTYPE DeleteInputStream(
+ DWORD dwStreamID) = 0;
+
+
+
+
+ Adds one or more new input streams to this MFT.
+
+
+ virtual HRESULT STDMETHODCALLTYPE AddInputStreams(
+ DWORD cStreams,
+ /* [in] */ __RPC__in DWORD *adwStreamIDs) = 0;
+
+
+
+
+ Gets an available media type for an input stream on this Media Foundation transform (MFT).
+
+
+ virtual HRESULT STDMETHODCALLTYPE GetInputAvailableType(
+ DWORD dwInputStreamID,
+ DWORD dwTypeIndex,
+ /* [out] */ __RPC__deref_out_opt IMFMediaType **ppType) = 0;
+
+
+
+
+ Retrieves an available media type for an output stream on this MFT.
+
+
+ virtual HRESULT STDMETHODCALLTYPE GetOutputAvailableType(
+ DWORD dwOutputStreamID,
+ DWORD dwTypeIndex,
+ /* [out] */ __RPC__deref_out_opt IMFMediaType **ppType) = 0;
+
+
+
+
+ Sets, tests, or clears the media type for an input stream on this Media Foundation transform (MFT).
+
+
+ virtual HRESULT STDMETHODCALLTYPE SetInputType(
+ DWORD dwInputStreamID,
+ /* [in] */ __RPC__in_opt IMFMediaType *pType,
+ DWORD dwFlags) = 0;
+
+
+
+
+ Sets, tests, or clears the media type for an output stream on this Media Foundation transform (MFT).
+
+
+ virtual HRESULT STDMETHODCALLTYPE SetOutputType(
+ DWORD dwOutputStreamID,
+ /* [in] */ __RPC__in_opt IMFMediaType *pType,
+ DWORD dwFlags) = 0;
+
+
+
+
+ Gets the current media type for an input stream on this Media Foundation transform (MFT).
+
+
+ virtual HRESULT STDMETHODCALLTYPE GetInputCurrentType(
+ DWORD dwInputStreamID,
+ /* [out] */ __RPC__deref_out_opt IMFMediaType **ppType) = 0;
+
+
+
+
+ Gets the current media type for an output stream on this Media Foundation transform (MFT).
+
+
+ virtual HRESULT STDMETHODCALLTYPE GetOutputCurrentType(
+ DWORD dwOutputStreamID,
+ /* [out] */ __RPC__deref_out_opt IMFMediaType **ppType) = 0;
+
+
+
+
+ Queries whether an input stream on this Media Foundation transform (MFT) can accept more data.
+
+
+ virtual HRESULT STDMETHODCALLTYPE GetInputStatus(
+ DWORD dwInputStreamID,
+ /* [out] */ __RPC__out DWORD *pdwFlags) = 0;
+
+
+
+
+ Queries whether the Media Foundation transform (MFT) is ready to produce output data.
+
+
+ virtual HRESULT STDMETHODCALLTYPE GetOutputStatus(
+ /* [out] */ __RPC__out DWORD *pdwFlags) = 0;
+
+
+
+
+ Sets the range of time stamps the client needs for output.
+
+
+ virtual HRESULT STDMETHODCALLTYPE SetOutputBounds(
+ LONGLONG hnsLowerBound,
+ LONGLONG hnsUpperBound) = 0;
+
+
+
+
+ Sends an event to an input stream on this Media Foundation transform (MFT).
+
+
+ virtual HRESULT STDMETHODCALLTYPE ProcessEvent(
+ DWORD dwInputStreamID,
+ /* [in] */ __RPC__in_opt IMFMediaEvent *pEvent) = 0;
+
+
+
+
+ Sends a message to the Media Foundation transform (MFT).
+
+
+ virtual HRESULT STDMETHODCALLTYPE ProcessMessage(
+ MFT_MESSAGE_TYPE eMessage,
+ ULONG_PTR ulParam) = 0;
+
+
+
+
+ Delivers data to an input stream on this Media Foundation transform (MFT).
+
+
+ virtual /* [local] */ HRESULT STDMETHODCALLTYPE ProcessInput(
+ DWORD dwInputStreamID,
+ IMFSample *pSample,
+ DWORD dwFlags) = 0;
+
+
+
+
+ Generates output from the current input data.
+
+
+ virtual /* [local] */ HRESULT STDMETHODCALLTYPE ProcessOutput(
+ DWORD dwFlags,
+ DWORD cOutputBufferCount,
+ /* [size_is][out][in] */ MFT_OUTPUT_DATA_BUFFER *pOutputSamples,
+ /* [out] */ DWORD *pdwStatus) = 0;
+
+
+
+
+ See mfobjects.h
+
+
+
+
+ Unknown event type.
+
+
+
+
+ Signals a serious error.
+
+
+
+
+ Custom event type.
+
+
+
+
+ A non-fatal error occurred during streaming.
+
+
+
+
+ Session Unknown
+
+
+
+
+ Raised after the IMFMediaSession::SetTopology method completes asynchronously
+
+
+
+
+ Raised by the Media Session when the IMFMediaSession::ClearTopologies method completes asynchronously.
+
+
+
+
+ Raised when the IMFMediaSession::Start method completes asynchronously.
+
+
+
+
+ Raised when the IMFMediaSession::Pause method completes asynchronously.
+
+
+
+
+ Raised when the IMFMediaSession::Stop method completes asynchronously.
+
+
+
+
+ Raised when the IMFMediaSession::Close method completes asynchronously.
+
+
+
+
+ Raised by the Media Session when it has finished playing the last presentation in the playback queue.
+
+
+
+
+ Raised by the Media Session when the playback rate changes.
+
+
+
+
+ Raised by the Media Session when it completes a scrubbing request.
+
+
+
+
+ Raised by the Media Session when the session capabilities change.
+
+
+
+
+ Raised by the Media Session when the status of a topology changes.
+
+
+
+
+ Raised by the Media Session when a new presentation starts.
+
+
+
+
+ Raised by a media source a new presentation is ready.
+
+
+
+
+ License acquisition is about to begin.
+
+
+
+
+ License acquisition is complete.
+
+
+
+
+ Individualization is about to begin.
+
+
+
+
+ Individualization is complete.
+
+
+
+
+ Signals the progress of a content enabler object.
+
+
+
+
+ A content enabler object's action is complete.
+
+
+
+
+ Raised by a trusted output if an error occurs while enforcing the output policy.
+
+
+
+
+ Contains status information about the enforcement of an output policy.
+
+
+
+
+ A media source started to buffer data.
+
+
+
+
+ A media source stopped buffering data.
+
+
+
+
+ The network source started opening a URL.
+
+
+
+
+ The network source finished opening a URL.
+
+
+
+
+ Raised by a media source at the start of a reconnection attempt.
+
+
+
+
+ Raised by a media source at the end of a reconnection attempt.
+
+
+
+
+ Raised by the enhanced video renderer (EVR) when it receives a user event from the presenter.
+
+
+
+
+ Raised by the Media Session when the format changes on a media sink.
+
+
+
+
+ Source Unknown
+
+
+
+
+ Raised when a media source starts without seeking.
+
+
+
+
+ Raised by a media stream when the source starts without seeking.
+
+
+
+
+ Raised when a media source seeks to a new position.
+
+
+
+
+ Raised by a media stream after a call to IMFMediaSource::Start causes a seek in the stream.
+
+
+
+
+ Raised by a media source when it starts a new stream.
+
+
+
+
+ Raised by a media source when it restarts or seeks a stream that is already active.
+
+
+
+
+ Raised by a media source when the IMFMediaSource::Stop method completes asynchronously.
+
+
+
+
+ Raised by a media stream when the IMFMediaSource::Stop method completes asynchronously.
+
+
+
+
+ Raised by a media source when the IMFMediaSource::Pause method completes asynchronously.
+
+
+
+
+ Raised by a media stream when the IMFMediaSource::Pause method completes asynchronously.
+
+
+
+
+ Raised by a media source when a presentation ends.
+
+
+
+
+ Raised by a media stream when the stream ends.
+
+
+
+
+ Raised when a media stream delivers a new sample.
+
+
+
+
+ Signals that a media stream does not have data available at a specified time.
+
+
+
+
+ Raised by a media stream when it starts or stops thinning the stream.
+
+
+
+
+ Raised by a media stream when the media type of the stream changes.
+
+
+
+
+ Raised by a media source when the playback rate changes.
+
+
+
+
+ Raised by the sequencer source when a segment is completed and is followed by another segment.
+
+
+
+
+ Raised by a media source when the source's characteristics change.
+
+
+
+
+ Raised by a media source to request a new playback rate.
+
+
+
+
+ Raised by a media source when it updates its metadata.
+
+
+
+
+ Raised by the sequencer source when the IMFSequencerSource::UpdateTopology method completes asynchronously.
+
+
+
+
+ Sink Unknown
+
+
+
+
+ Raised by a stream sink when it completes the transition to the running state.
+
+
+
+
+ Raised by a stream sink when it completes the transition to the stopped state.
+
+
+
+
+ Raised by a stream sink when it completes the transition to the paused state.
+
+
+
+
+ Raised by a stream sink when the rate has changed.
+
+
+
+
+ Raised by a stream sink to request a new media sample from the pipeline.
+
+
+
+
+ Raised by a stream sink after the IMFStreamSink::PlaceMarker method is called.
+
+
+
+
+ Raised by a stream sink when the stream has received enough preroll data to begin rendering.
+
+
+
+
+ Raised by a stream sink when it completes a scrubbing request.
+
+
+
+
+ Raised by a stream sink when the sink's media type is no longer valid.
+
+
+
+
+ Raised by the stream sinks of the EVR if the video device changes.
+
+
+
+
+ Provides feedback about playback quality to the quality manager.
+
+
+
+
+ Raised when a media sink becomes invalid.
+
+
+
+
+ The audio session display name changed.
+
+
+
+
+ The volume or mute state of the audio session changed
+
+
+
+
+ The audio device was removed.
+
+
+
+
+ The Windows audio server system was shut down.
+
+
+
+
+ The grouping parameters changed for the audio session.
+
+
+
+
+ The audio session icon changed.
+
+
+
+
+ The default audio format for the audio device changed.
+
+
+
+
+ The audio session was disconnected from a Windows Terminal Services session
+
+
+
+
+ The audio session was preempted by an exclusive-mode connection.
+
+
+
+
+ Trust Unknown
+
+
+
+
+ The output policy for a stream changed.
+
+
+
+
+ Content protection message
+
+
+
+
+ The IMFOutputTrustAuthority::SetPolicy method completed.
+
+
+
+
+ DRM License Backup Completed
+
+
+
+
+ DRM License Backup Progress
+
+
+
+
+ DRM License Restore Completed
+
+
+
+
+ DRM License Restore Progress
+
+
+
+
+ DRM License Acquisition Completed
+
+
+
+
+ DRM Individualization Completed
+
+
+
+
+ DRM Individualization Progress
+
+
+
+
+ DRM Proximity Completed
+
+
+
+
+ DRM License Store Cleaned
+
+
+
+
+ DRM Revocation Download Completed
+
+
+
+
+ Transform Unknown
+
+
+
+
+ Sent by an asynchronous MFT to request a new input sample.
+
+
+
+
+ Sent by an asynchronous MFT when new output data is available from the MFT.
+
+
+
+
+ Sent by an asynchronous Media Foundation transform (MFT) when a drain operation is complete.
+
+
+
+
+ Sent by an asynchronous MFT in response to an MFT_MESSAGE_COMMAND_MARKER message.
+
+
+
+
+ Media Foundation attribute guids
+ http://msdn.microsoft.com/en-us/library/windows/desktop/ms696989%28v=vs.85%29.aspx
+
+
+
+
+ Specifies whether an MFT performs asynchronous processing.
+
+
+
+
+ Enables the use of an asynchronous MFT.
+
+
+
+
+ Contains flags for an MFT activation object.
+
+
+
+
+ Specifies the category for an MFT.
+
+
+
+
+ Contains the class identifier (CLSID) of an MFT.
+
+
+
+
+ Contains the registered input types for a Media Foundation transform (MFT).
+
+
+
+
+ Contains the registered output types for a Media Foundation transform (MFT).
+
+
+
+
+ Contains the symbolic link for a hardware-based MFT.
+
+
+
+
+ Contains the display name for a hardware-based MFT.
+
+
+
+
+ Contains a pointer to the stream attributes of the connected stream on a hardware-based MFT.
+
+
+
+
+ Specifies whether a hardware-based MFT is connected to another hardware-based MFT.
+
+
+
+
+ Specifies the preferred output format for an encoder.
+
+
+
+
+ Specifies whether an MFT is registered only in the application's process.
+
+
+
+
+ Contains configuration properties for an encoder.
+
+
+
+
+ Specifies whether a hardware device source uses the system time for time stamps.
+
+
+
+
+ Contains an IMFFieldOfUseMFTUnlock pointer, which can be used to unlock the MFT.
+
+
+
+
+ Contains the merit value of a hardware codec.
+
+
+
+
+ Specifies whether a decoder is optimized for transcoding rather than for playback.
+
+
+
+
+ Contains a pointer to the proxy object for the application's presentation descriptor.
+
+
+
+
+ Contains a pointer to the presentation descriptor from the protected media path (PMP).
+
+
+
+
+ Specifies the duration of a presentation, in 100-nanosecond units.
+
+
+
+
+ Specifies the total size of the source file, in bytes.
+
+
+
+
+ Specifies the audio encoding bit rate for the presentation, in bits per second.
+
+
+
+
+ Specifies the video encoding bit rate for the presentation, in bits per second.
+
+
+
+
+ Specifies the MIME type of the content.
+
+
+
+
+ Specifies when a presentation was last modified.
+
+
+
+
+ The identifier of the playlist element in the presentation.
+
+
+
+
+ Contains the preferred RFC 1766 language of the media source.
+
+
+
+
+ The time at which the presentation must begin, relative to the start of the media source.
+
+
+
+
+ Specifies whether the audio streams in the presentation have a variable bit rate.
+
+
+
+
+ Media type Major Type
+
+
+
+
+ Media Type subtype
+
+
+
+
+ Audio block alignment
+
+
+
+
+ Audio average bytes per second
+
+
+
+
+ Audio number of channels
+
+
+
+
+ Audio samples per second
+
+
+
+
+ Audio bits per sample
+
+
+
+
+ Enables the source reader or sink writer to use hardware-based Media Foundation transforms (MFTs).
+
+
+
+
+ Contains additional format data for a media type.
+
+
+
+
+ Specifies for a media type whether each sample is independent of the other samples in the stream.
+
+
+
+
+ Specifies for a media type whether the samples have a fixed size.
+
+
+
+
+ Contains a DirectShow format GUID for a media type.
+
+
+
+
+ Specifies the preferred legacy format structure to use when converting an audio media type.
+
+
+
+
+ Specifies for a media type whether the media data is compressed.
+
+
+
+
+ Approximate data rate of the video stream, in bits per second, for a video media type.
+
+
+
+
+ Specifies the payload type of an Advanced Audio Coding (AAC) stream.
+ 0 - The stream contains raw_data_block elements only
+ 1 - Audio Data Transport Stream (ADTS). The stream contains an adts_sequence, as defined by MPEG-2.
+ 2 - Audio Data Interchange Format (ADIF). The stream contains an adif_sequence, as defined by MPEG-2.
+ 3 - The stream contains an MPEG-4 audio transport stream with a synchronization layer (LOAS) and a multiplex layer (LATM).
+
+
+
+
+ Specifies the audio profile and level of an Advanced Audio Coding (AAC) stream, as defined by ISO/IEC 14496-3.
+
+
+
+
+ Main interface for using Media Foundation with NAudio
+
+
+
+
+ initializes MediaFoundation - only needs to be called once per process
+
+
+
+
+ Enumerate the installed MediaFoundation transforms in the specified category
+
+ A category from MediaFoundationTransformCategories
+
+
+
+
+ uninitializes MediaFoundation
+
+
+
+
+ Creates a Media type
+
+
+
+
+ Creates a media type from a WaveFormat
+
+
+
+
+ Creates a memory buffer of the specified size
+
+ Memory buffer size in bytes
+ The memory buffer
+
+
+
+ Creates a sample object
+
+ The sample object
+
+
+
+ Creates a new attributes store
+
+ Initial size
+ The attributes store
+
+
+
+ Creates a media foundation byte stream based on a stream object
+ (usable with WinRT streams)
+
+ The input stream
+ A media foundation byte stream
+
+
+
+ Creates a source reader based on a byte stream
+
+ The byte stream
+ A media foundation source reader
+
+
+
+ Interop definitions for MediaFoundation
+ thanks to Lucian Wischik for the initial work on many of these definitions (also various interfaces)
+ n.b. the goal is to make as much of this internal as possible, and provide
+ better .NET APIs using the MediaFoundationApi class instead
+
+
+
+
+ All streams
+
+
+
+
+ First audio stream
+
+
+
+
+ First video stream
+
+
+
+
+ Media source
+
+
+
+
+ Media Foundation SDK Version
+
+
+
+
+ Media Foundation API Version
+
+
+
+
+ Media Foundation Version
+
+
+
+
+ Initializes Microsoft Media Foundation.
+
+
+
+
+ Shuts down the Microsoft Media Foundation platform
+
+
+
+
+ Creates an empty media type.
+
+
+
+
+ Initializes a media type from a WAVEFORMATEX structure.
+
+
+
+
+ Converts a Media Foundation audio media type to a WAVEFORMATEX structure.
+
+ TODO: try making second parameter out WaveFormatExtraData
+
+
+
+ Creates the source reader from a URL.
+
+
+
+
+ Creates the source reader from a byte stream.
+
+
+
+
+ Creates the sink writer from a URL or byte stream.
+
+
+
+
+ Creates a Microsoft Media Foundation byte stream that wraps an IRandomAccessStream object.
+
+
+
+
+ Gets a list of Microsoft Media Foundation transforms (MFTs) that match specified search criteria.
+
+
+
+
+ Creates an empty media sample.
+
+
+
+
+ Allocates system memory and creates a media buffer to manage it.
+
+
+
+
+ Creates an empty attribute store.
+
+
+
+
+ Gets a list of output formats from an audio encoder.
+
+
+
+
+ IMFByteStream
+ http://msdn.microsoft.com/en-gb/library/windows/desktop/ms698720%28v=vs.85%29.aspx
+
+
+
+
+ Retrieves the characteristics of the byte stream.
+ virtual HRESULT STDMETHODCALLTYPE GetCapabilities(/*[out]*/ __RPC__out DWORD *pdwCapabilities) = 0;
+
+
+
+
+ Retrieves the length of the stream.
+ virtual HRESULT STDMETHODCALLTYPE GetLength(/*[out]*/ __RPC__out QWORD *pqwLength) = 0;
+
+
+
+
+ Sets the length of the stream.
+ virtual HRESULT STDMETHODCALLTYPE SetLength(/*[in]*/ QWORD qwLength) = 0;
+
+
+
+
+ Retrieves the current read or write position in the stream.
+ virtual HRESULT STDMETHODCALLTYPE GetCurrentPosition(/*[out]*/ __RPC__out QWORD *pqwPosition) = 0;
+
+
+
+
+ Sets the current read or write position.
+ virtual HRESULT STDMETHODCALLTYPE SetCurrentPosition(/*[in]*/ QWORD qwPosition) = 0;
+
+
+
+
+ Queries whether the current position has reached the end of the stream.
+ virtual HRESULT STDMETHODCALLTYPE IsEndOfStream(/*[out]*/ __RPC__out BOOL *pfEndOfStream) = 0;
+
+
+
+
+ Reads data from the stream.
+ virtual HRESULT STDMETHODCALLTYPE Read(/*[size_is][out]*/ __RPC__out_ecount_full(cb) BYTE *pb, /*[in]*/ ULONG cb, /*[out]*/ __RPC__out ULONG *pcbRead) = 0;
+
+
+
+
+ Begins an asynchronous read operation from the stream.
+ virtual /*[local]*/ HRESULT STDMETHODCALLTYPE BeginRead(/*[out]*/ _Out_writes_bytes_(cb) BYTE *pb, /*[in]*/ ULONG cb, /*[in]*/ IMFAsyncCallback *pCallback, /*[in]*/ IUnknown *punkState) = 0;
+
+
+
+
+ Completes an asynchronous read operation.
+ virtual /*[local]*/ HRESULT STDMETHODCALLTYPE EndRead(/*[in]*/ IMFAsyncResult *pResult, /*[out]*/ _Out_ ULONG *pcbRead) = 0;
+
+
+
+
+ Writes data to the stream.
+ virtual HRESULT STDMETHODCALLTYPE Write(/*[size_is][in]*/ __RPC__in_ecount_full(cb) const BYTE *pb, /*[in]*/ ULONG cb, /*[out]*/ __RPC__out ULONG *pcbWritten) = 0;
+
+
+
+
+ Begins an asynchronous write operation to the stream.
+ virtual /*[local]*/ HRESULT STDMETHODCALLTYPE BeginWrite(/*[in]*/ _In_reads_bytes_(cb) const BYTE *pb, /*[in]*/ ULONG cb, /*[in]*/ IMFAsyncCallback *pCallback, /*[in]*/ IUnknown *punkState) = 0;
+
+
+
+
+ Completes an asynchronous write operation.
+ virtual /*[local]*/ HRESULT STDMETHODCALLTYPE EndWrite(/*[in]*/ IMFAsyncResult *pResult, /*[out]*/ _Out_ ULONG *pcbWritten) = 0;
+
+
+
+
+ Moves the current position in the stream by a specified offset.
+ virtual HRESULT STDMETHODCALLTYPE Seek(/*[in]*/ MFBYTESTREAM_SEEK_ORIGIN SeekOrigin, /*[in]*/ LONGLONG llSeekOffset, /*[in]*/ DWORD dwSeekFlags, /*[out]*/ __RPC__out QWORD *pqwCurrentPosition) = 0;
+
+
+
+
+ Clears any internal buffers used by the stream.
+ virtual HRESULT STDMETHODCALLTYPE Flush( void) = 0;
+
+
+
+
+ Closes the stream and releases any resources associated with the stream.
+ virtual HRESULT STDMETHODCALLTYPE Close( void) = 0;
+
+
+
+
+ IMFMediaBuffer
+ http://msdn.microsoft.com/en-gb/library/windows/desktop/ms696261%28v=vs.85%29.aspx
+
+
+
+
+ Gives the caller access to the memory in the buffer.
+
+
+
+
+ Unlocks a buffer that was previously locked.
+
+
+
+
+ Retrieves the length of the valid data in the buffer.
+
+
+
+
+ Sets the length of the valid data in the buffer.
+
+
+
+
+ Retrieves the allocated size of the buffer.
+
+
+
+
+ Represents a description of a media format.
+ http://msdn.microsoft.com/en-us/library/windows/desktop/ms704850%28v=vs.85%29.aspx
+
+
+
+
+ Retrieves the value associated with a key.
+
+
+
+
+ Retrieves the data type of the value associated with a key.
+
+
+
+
+ Queries whether a stored attribute value equals a specified PROPVARIANT.
+
+
+
+
+ Compares the attributes on this object with the attributes on another object.
+
+
+
+
+ Retrieves a UINT32 value associated with a key.
+
+
+
+
+ Retrieves a UINT64 value associated with a key.
+
+
+
+
+ Retrieves a double value associated with a key.
+
+
+
+
+ Retrieves a GUID value associated with a key.
+
+
+
+
+ Retrieves the length of a string value associated with a key.
+
+
+
+
+ Retrieves a wide-character string associated with a key.
+
+
+
+
+ Retrieves a wide-character string associated with a key. This method allocates the memory for the string.
+
+
+
+
+ Retrieves the length of a byte array associated with a key.
+
+
+
+
+ Retrieves a byte array associated with a key.
+
+
+
+
+ Retrieves a byte array associated with a key. This method allocates the memory for the array.
+
+
+
+
+ Retrieves an interface pointer associated with a key.
+
+
+
+
+ Associates an attribute value with a key.
+
+
+
+
+ Removes a key/value pair from the object's attribute list.
+
+
+
+
+ Removes all key/value pairs from the object's attribute list.
+
+
+
+
+ Associates a UINT32 value with a key.
+
+
+
+
+ Associates a UINT64 value with a key.
+
+
+
+
+ Associates a double value with a key.
+
+
+
+
+ Associates a GUID value with a key.
+
+
+
+
+ Associates a wide-character string with a key.
+
+
+
+
+ Associates a byte array with a key.
+
+
+
+
+ Associates an IUnknown pointer with a key.
+
+
+
+
+ Locks the attribute store so that no other thread can access it.
+
+
+
+
+ Unlocks the attribute store.
+
+
+
+
+ Retrieves the number of attributes that are set on this object.
+
+
+
+
+ Retrieves an attribute at the specified index.
+
+
+
+
+ Copies all of the attributes from this object into another attribute store.
+
+
+
+
+ Retrieves the major type of the format.
+
+
+
+
+ Queries whether the media type is a compressed format.
+
+
+
+
+ Compares two media types and determines whether they are identical.
+
+
+
+
+ Retrieves an alternative representation of the media type.
+
+
+
+
+ Frees memory that was allocated by the GetRepresentation method.
+
+
+
+
+ http://msdn.microsoft.com/en-gb/library/windows/desktop/ms702192%28v=vs.85%29.aspx
+
+
+
+
+ Retrieves the value associated with a key.
+
+
+
+
+ Retrieves the data type of the value associated with a key.
+
+
+
+
+ Queries whether a stored attribute value equals a specified PROPVARIANT.
+
+
+
+
+ Compares the attributes on this object with the attributes on another object.
+
+
+
+
+ Retrieves a UINT32 value associated with a key.
+
+
+
+
+ Retrieves a UINT64 value associated with a key.
+
+
+
+
+ Retrieves a double value associated with a key.
+
+
+
+
+ Retrieves a GUID value associated with a key.
+
+
+
+
+ Retrieves the length of a string value associated with a key.
+
+
+
+
+ Retrieves a wide-character string associated with a key.
+
+
+
+
+ Retrieves a wide-character string associated with a key. This method allocates the memory for the string.
+
+
+
+
+ Retrieves the length of a byte array associated with a key.
+
+
+
+
+ Retrieves a byte array associated with a key.
+
+
+
+
+ Retrieves a byte array associated with a key. This method allocates the memory for the array.
+
+
+
+
+ Retrieves an interface pointer associated with a key.
+
+
+
+
+ Associates an attribute value with a key.
+
+
+
+
+ Removes a key/value pair from the object's attribute list.
+
+
+
+
+ Removes all key/value pairs from the object's attribute list.
+
+
+
+
+ Associates a UINT32 value with a key.
+
+
+
+
+ Associates a UINT64 value with a key.
+
+
+
+
+ Associates a double value with a key.
+
+
+
+
+ Associates a GUID value with a key.
+
+
+
+
+ Associates a wide-character string with a key.
+
+
+
+
+ Associates a byte array with a key.
+
+
+
+
+ Associates an IUnknown pointer with a key.
+
+
+
+
+ Locks the attribute store so that no other thread can access it.
+
+
+
+
+ Unlocks the attribute store.
+
+
+
+
+ Retrieves the number of attributes that are set on this object.
+
+
+
+
+ Retrieves an attribute at the specified index.
+
+
+
+
+ Copies all of the attributes from this object into another attribute store.
+
+
+
+
+ Retrieves flags associated with the sample.
+
+
+
+
+ Sets flags associated with the sample.
+
+
+
+
+ Retrieves the presentation time of the sample.
+
+
+
+
+ Sets the presentation time of the sample.
+
+
+
+
+ Retrieves the duration of the sample.
+
+
+
+
+ Sets the duration of the sample.
+
+
+
+
+ Retrieves the number of buffers in the sample.
+
+
+
+
+ Retrieves a buffer from the sample.
+
+
+
+
+ Converts a sample with multiple buffers into a sample with a single buffer.
+
+
+
+
+ Adds a buffer to the end of the list of buffers in the sample.
+
+
+
+
+ Removes a buffer at a specified index from the sample.
+
+
+
+
+ Removes all buffers from the sample.
+
+
+
+
+ Retrieves the total length of the valid data in all of the buffers in the sample.
+
+
+
+
+ Copies the sample data to a buffer.
+
+
+
+
+ IMFSourceReader interface
+ http://msdn.microsoft.com/en-us/library/windows/desktop/dd374655%28v=vs.85%29.aspx
+
+
+
+
+ Queries whether a stream is selected.
+
+
+
+
+ Selects or deselects one or more streams.
+
+
+
+
+ Gets a format that is supported natively by the media source.
+
+
+
+
+ Gets the current media type for a stream.
+
+
+
+
+ Sets the media type for a stream.
+
+
+
+
+ Seeks to a new position in the media source.
+
+
+
+
+ Reads the next sample from the media source.
+
+
+
+
+ Flushes one or more streams.
+
+
+
+
+ Queries the underlying media source or decoder for an interface.
+
+
+
+
+ Gets an attribute from the underlying media source.
+
+
+
+
+ Contains flags that indicate the status of the IMFSourceReader::ReadSample method
+ http://msdn.microsoft.com/en-us/library/windows/desktop/dd375773(v=vs.85).aspx
+
+
+
+
+ No Error
+
+
+
+
+ An error occurred. If you receive this flag, do not make any further calls to IMFSourceReader methods.
+
+
+
+
+ The source reader reached the end of the stream.
+
+
+
+
+ One or more new streams were created
+
+
+
+
+ The native format has changed for one or more streams. The native format is the format delivered by the media source before any decoders are inserted.
+
+
+
+
+ The current media has type changed for one or more streams. To get the current media type, call the IMFSourceReader::GetCurrentMediaType method.
+
+
+
+
+ There is a gap in the stream. This flag corresponds to an MEStreamTick event from the media source.
+
+
+
+
+ All transforms inserted by the application have been removed for a particular stream.
+
+
+
+
+ Media Foundation Transform Categories
+
+
+
+
+ MFT_CATEGORY_VIDEO_DECODER
+
+
+
+
+ MFT_CATEGORY_VIDEO_ENCODER
+
+
+
+
+ MFT_CATEGORY_VIDEO_EFFECT
+
+
+
+
+ MFT_CATEGORY_MULTIPLEXER
+
+
+
+
+ MFT_CATEGORY_DEMULTIPLEXER
+
+
+
+
+ MFT_CATEGORY_AUDIO_DECODER
+
+
+
+
+ MFT_CATEGORY_AUDIO_ENCODER
+
+
+
+
+ MFT_CATEGORY_AUDIO_EFFECT
+
+
+
+
+ MFT_CATEGORY_VIDEO_PROCESSOR
+
+
+
+
+ MFT_CATEGORY_OTHER
+
+
+
+
+ Contains information about an input stream on a Media Foundation transform (MFT)
+
+
+
+
+ Maximum amount of time between an input sample and the corresponding output sample, in 100-nanosecond units.
+
+
+
+
+ Bitwise OR of zero or more flags from the _MFT_INPUT_STREAM_INFO_FLAGS enumeration.
+
+
+
+
+ The minimum size of each input buffer, in bytes.
+
+
+
+
+ Maximum amount of input data, in bytes, that the MFT holds to perform lookahead.
+
+
+
+
+ The memory alignment required for input buffers. If the MFT does not require a specific alignment, the value is zero.
+
+
+
+
+ Contains information about an output buffer for a Media Foundation transform.
+
+
+
+
+ Output stream identifier.
+
+
+
+
+ Pointer to the IMFSample interface.
+
+
+
+
+ Before calling ProcessOutput, set this member to zero.
+
+
+
+
+ Before calling ProcessOutput, set this member to NULL.
+
+
+
+
+ Contains information about an output stream on a Media Foundation transform (MFT).
+
+
+
+
+ Bitwise OR of zero or more flags from the _MFT_OUTPUT_STREAM_INFO_FLAGS enumeration.
+
+
+
+
+ Minimum size of each output buffer, in bytes.
+
+
+
+
+ The memory alignment required for output buffers.
+
+
+
+
+ Defines messages for a Media Foundation transform (MFT).
+
+
+
+
+ Requests the MFT to flush all stored data.
+
+
+
+
+ Requests the MFT to drain any stored data.
+
+
+
+
+ Sets or clears the Direct3D Device Manager for DirectX Video Accereration (DXVA).
+
+
+
+
+ Drop samples - requires Windows 7
+
+
+
+
+ Command Tick - requires Windows 8
+
+
+
+
+ Notifies the MFT that streaming is about to begin.
+
+
+
+
+ Notifies the MFT that streaming is about to end.
+
+
+
+
+ Notifies the MFT that an input stream has ended.
+
+
+
+
+ Notifies the MFT that the first sample is about to be processed.
+
+
+
+
+ Marks a point in the stream. This message applies only to asynchronous MFTs. Requires Windows 7
+
+
+
+
+ Contains media type information for registering a Media Foundation transform (MFT).
+
+
+
+
+ The major media type.
+
+
+
+
+ The Media Subtype
+
+
+
+
+ Contains statistics about the performance of the sink writer.
+
+
+
+
+ The size of the structure, in bytes.
+
+
+
+
+ The time stamp of the most recent sample given to the sink writer.
+
+
+
+
+ The time stamp of the most recent sample to be encoded.
+
+
+
+
+ The time stamp of the most recent sample given to the media sink.
+
+
+
+
+ The time stamp of the most recent stream tick.
+
+
+
+
+ The system time of the most recent sample request from the media sink.
+
+
+
+
+ The number of samples received.
+
+
+
+
+ The number of samples encoded.
+
+
+
+
+ The number of samples given to the media sink.
+
+
+
+
+ The number of stream ticks received.
+
+
+
+
+ The amount of data, in bytes, currently waiting to be processed.
+
+
+
+
+ The total amount of data, in bytes, that has been sent to the media sink.
+
+
+
+
+ The number of pending sample requests.
+
+
+
+
+ The average rate, in media samples per 100-nanoseconds, at which the application sent samples to the sink writer.
+
+
+
+
+ The average rate, in media samples per 100-nanoseconds, at which the sink writer sent samples to the encoder
+
+
+
+
+ The average rate, in media samples per 100-nanoseconds, at which the sink writer sent samples to the media sink.
+
+
+
+
+ Contains flags for registering and enumeration Media Foundation transforms (MFTs).
+
+
+
+
+ None
+
+
+
+
+ The MFT performs synchronous data processing in software.
+
+
+
+
+ The MFT performs asynchronous data processing in software.
+
+
+
+
+ The MFT performs hardware-based data processing, using either the AVStream driver or a GPU-based proxy MFT.
+
+
+
+
+ The MFT that must be unlocked by the application before use.
+
+
+
+
+ For enumeration, include MFTs that were registered in the caller's process.
+
+
+
+
+ The MFT is optimized for transcoding rather than playback.
+
+
+
+
+ For enumeration, sort and filter the results.
+
+
+
+
+ Bitwise OR of all the flags, excluding MFT_ENUM_FLAG_SORTANDFILTER.
+
+
+
+
+ Indicates the status of an input stream on a Media Foundation transform (MFT).
+
+
+
+
+ None
+
+
+
+
+ The input stream can receive more data at this time.
+
+
+
+
+ Describes an input stream on a Media Foundation transform (MFT).
+
+
+
+
+ No flags set
+
+
+
+
+ Each media sample (IMFSample interface) of input data must contain complete, unbroken units of data.
+
+
+
+
+ Each media sample that the client provides as input must contain exactly one unit of data, as defined for the MFT_INPUT_STREAM_WHOLE_SAMPLES flag.
+
+
+
+
+ All input samples must be the same size.
+
+
+
+
+ MTF Input Stream Holds buffers
+
+
+
+
+ The MFT does not hold input samples after the IMFTransform::ProcessInput method returns.
+
+
+
+
+ This input stream can be removed by calling IMFTransform::DeleteInputStream.
+
+
+
+
+ This input stream is optional.
+
+
+
+
+ The MFT can perform in-place processing.
+
+
+
+
+ Defines flags for the IMFTransform::ProcessOutput method.
+
+
+
+
+ None
+
+
+
+
+ The MFT can still generate output from this stream without receiving any more input.
+
+
+
+
+ The format has changed on this output stream, or there is a new preferred format for this stream.
+
+
+
+
+ The MFT has removed this output stream.
+
+
+
+
+ There is no sample ready for this stream.
+
+
+
+
+ Indicates whether a Media Foundation transform (MFT) can produce output data.
+
+
+
+
+ None
+
+
+
+
+ There is a sample available for at least one output stream.
+
+
+
+
+ Describes an output stream on a Media Foundation transform (MFT).
+
+
+
+
+ No flags set
+
+
+
+
+ Each media sample (IMFSample interface) of output data from the MFT contains complete, unbroken units of data.
+
+
+
+
+ Each output sample contains exactly one unit of data, as defined for the MFT_OUTPUT_STREAM_WHOLE_SAMPLES flag.
+
+
+
+
+ All output samples are the same size.
+
+
+
+
+ The MFT can discard the output data from this output stream, if requested by the client.
+
+
+
+
+ This output stream is optional.
+
+
+
+
+ The MFT provides the output samples for this stream, either by allocating them internally or by operating directly on the input samples.
+
+
+
+
+ The MFT can either provide output samples for this stream or it can use samples that the client allocates.
+
+
+
+
+ The MFT does not require the client to process the output for this stream.
+
+
+
+
+ The MFT might remove this output stream during streaming.
+
+
+
+
+ Defines flags for processing output samples in a Media Foundation transform (MFT).
+
+
+
+
+ None
+
+
+
+
+ Do not produce output for streams in which the pSample member of the MFT_OUTPUT_DATA_BUFFER structure is NULL.
+
+
+
+
+ Regenerates the last output sample.
+
+
+
+
+ Process Output Status flags
+
+
+
+
+ None
+
+
+
+
+ The Media Foundation transform (MFT) has created one or more new output streams.
+
+
+
+
+ Defines flags for the setting or testing the media type on a Media Foundation transform (MFT).
+
+
+
+
+ None
+
+
+
+
+ Test the proposed media type, but do not set it.
+
+
+
+
+ MIDI In Message Information
+
+
+
+
+ Create a new MIDI In Message EventArgs
+
+
+
+
+
+
+ The Raw message received from the MIDI In API
+
+
+
+
+ The raw message interpreted as a MidiEvent
+
+
+
+
+ The timestamp in milliseconds for this message
+
+
+
+
+ these will become extension methods once we move to .NET 3.5
+
+
+
+
+ Checks if the buffer passed in is entirely full of nulls
+
+
+
+
+ Converts to a string containing the buffer described in hex
+
+
+
+
+ Decodes the buffer using the specified encoding, stopping at the first null
+
+
+
+
+ Concatenates the given arrays into a single array.
+
+ The arrays to concatenate
+ The concatenated resulting array.
+
+
+
+ Helper to get descriptions
+
+
+
+
+ Describes the Guid by looking for a FieldDescription attribute on the specified class
+
+
+
+
+ WavePosition extension methods
+
+
+
+
+ Get Position as timespan
+
+
+
+
+ Methods for converting between IEEE 80-bit extended double precision
+ and standard C# double precision.
+
+
+
+
+ Converts a C# double precision number to an 80-bit
+ IEEE extended double precision number (occupying 10 bytes).
+
+ The double precision number to convert to IEEE extended.
+ An array of 10 bytes containing the IEEE extended number.
+
+
+
+ Converts an IEEE 80-bit extended precision number to a
+ C# double precision number.
+
+ The 80-bit IEEE extended number (as an array of 10 bytes).
+ A C# double precision number that is a close representation of the IEEE extended number.
+
+
+
+ General purpose native methods for internal NAudio use
+
+
+
+
+ ASIODriverCapability holds all the information from the ASIODriver.
+ Use ASIODriverExt to get the Capabilities
+
+
+
+
+ ASIO Sample Type
+
+
+
+
+ Int 16 MSB
+
+
+
+
+ Int 24 MSB (used for 20 bits as well)
+
+
+
+
+ Int 32 MSB
+
+
+
+
+ IEEE 754 32 bit float
+
+
+
+
+ IEEE 754 64 bit double float
+
+
+
+
+ 32 bit data with 16 bit alignment
+
+
+
+
+ 32 bit data with 18 bit alignment
+
+
+
+
+ 32 bit data with 20 bit alignment
+
+
+
+
+ 32 bit data with 24 bit alignment
+
+
+
+
+ Int 16 LSB
+
+
+
+
+ Int 24 LSB
+ used for 20 bits as well
+
+
+
+
+ Int 32 LSB
+
+
+
+
+ IEEE 754 32 bit float, as found on Intel x86 architecture
+
+
+
+
+ IEEE 754 64 bit double float, as found on Intel x86 architecture
+
+
+
+
+ 32 bit data with 16 bit alignment
+
+
+
+
+ 32 bit data with 18 bit alignment
+
+
+
+
+ 32 bit data with 20 bit alignment
+
+
+
+
+ 32 bit data with 24 bit alignment
+
+
+
+
+ DSD 1 bit data, 8 samples per byte. First sample in Least significant bit.
+
+
+
+
+ DSD 1 bit data, 8 samples per byte. First sample in Most significant bit.
+
+
+
+
+ DSD 8 bit data, 1 sample per byte. No Endianness required.
+
+
+
+
+ Flags for use with acmDriverAdd
+
+
+
+
+ ACM_DRIVERADDF_LOCAL
+
+
+
+
+ ACM_DRIVERADDF_GLOBAL
+
+
+
+
+ ACM_DRIVERADDF_FUNCTION
+
+
+
+
+ ACM_DRIVERADDF_NOTIFYHWND
+
+
+
+
+ ADSR sample provider allowing you to specify attack, decay, sustain and release values
+
+
+
+
+ Like IWaveProvider, but makes it much simpler to put together a 32 bit floating
+ point mixing engine
+
+
+
+
+ Fill the specified buffer with 32 bit floating point samples
+
+ The buffer to fill with samples.
+ Offset into buffer
+ The number of samples to read
+ the number of samples written to the buffer.
+
+
+
+ Gets the WaveFormat of this Sample Provider.
+
+ The wave format.
+
+
+
+ Creates a new AdsrSampleProvider with default values
+
+
+
+
+ Reads audio from this sample provider
+
+
+
+
+ Enters the Release phase
+
+
+
+
+ Attack time in seconds
+
+
+
+
+ Release time in seconds
+
+
+
+
+ The output WaveFormat
+
+
+
+
+ Sample Provider to allow fading in and out
+
+
+
+
+ Creates a new FadeInOutSampleProvider
+
+ The source stream with the audio to be faded in or out
+ If true, we start faded out
+
+
+
+ Requests that a fade-in begins (will start on the next call to Read)
+
+ Duration of fade in milliseconds
+
+
+
+ Requests that a fade-out begins (will start on the next call to Read)
+
+ Duration of fade in milliseconds
+
+
+
+ Reads samples from this sample provider
+
+ Buffer to read into
+ Offset within buffer to write to
+ Number of samples desired
+ Number of samples read
+
+
+
+ WaveFormat of this SampleProvider
+
+
+
+
+ Allows any number of inputs to be patched to outputs
+ Uses could include swapping left and right channels, turning mono into stereo,
+ feeding different input sources to different soundcard outputs etc
+
+
+
+
+ Creates a multiplexing sample provider, allowing re-patching of input channels to different
+ output channels
+
+ Input sample providers. Must all be of the same sample rate, but can have any number of channels
+ Desired number of output channels.
+
+
+
+ persistent temporary buffer to prevent creating work for garbage collector
+
+
+
+
+ Reads samples from this sample provider
+
+ Buffer to be filled with sample data
+ Offset into buffer to start writing to, usually 0
+ Number of samples required
+ Number of samples read
+
+
+
+ Connects a specified input channel to an output channel
+
+ Input Channel index (zero based). Must be less than InputChannelCount
+ Output Channel index (zero based). Must be less than OutputChannelCount
+
+
+
+ The output WaveFormat for this SampleProvider
+
+
+
+
+ The number of input channels. Note that this is not the same as the number of input wave providers. If you pass in
+ one stereo and one mono input provider, the number of input channels is three.
+
+
+
+
+ The number of output channels, as specified in the constructor.
+
+
+
+
+ Allows you to:
+ 1. insert a pre-delay of silence before the source begins
+ 2. skip over a certain amount of the beginning of the source
+ 3. only play a set amount from the source
+ 4. insert silence at the end after the source is complete
+
+
+
+
+ Creates a new instance of offsetSampleProvider
+
+ The Source Sample Provider to read from
+
+
+
+ Reads from this sample provider
+
+ Sample buffer
+ Offset within sample buffer to read to
+ Number of samples required
+ Number of samples read
+
+
+
+ Number of samples of silence to insert before playing source
+
+
+
+
+ Amount of silence to insert before playing
+
+
+
+
+ Number of samples in source to discard
+
+
+
+
+ Amount of audio to skip over from the source before beginning playback
+
+
+
+
+ Number of samples to read from source (if 0, then read it all)
+
+
+
+
+ Amount of audio to take from the source (TimeSpan.Zero means play to end)
+
+
+
+
+ Number of samples of silence to insert after playing source
+
+
+
+
+ Amount of silence to insert after playing source
+
+
+
+
+ The WaveFormat of this SampleProvider
+
+
+
+
+ Converts an IWaveProvider containing 32 bit PCM to an
+ ISampleProvider
+
+
+
+
+ Helper base class for classes converting to ISampleProvider
+
+
+
+
+ Source Wave Provider
+
+
+
+
+ Source buffer (to avoid constantly creating small buffers during playback)
+
+
+
+
+ Initialises a new instance of SampleProviderConverterBase
+
+ Source Wave provider
+
+
+
+ Reads samples from the source wave provider
+
+ Sample buffer
+ Offset into sample buffer
+ Number of samples required
+ Number of samples read
+
+
+
+ Ensure the source buffer exists and is big enough
+
+ Bytes required
+
+
+
+ Wave format of this wave provider
+
+
+
+
+ Initialises a new instance of Pcm32BitToSampleProvider
+
+ Source Wave Provider
+
+
+
+ Reads floating point samples from this sample provider
+
+ sample buffer
+ offset within sample buffer to write to
+ number of samples required
+ number of samples provided
+
+
+
+ Utility class for converting to SampleProvider
+
+
+
+
+ Helper function to go from IWaveProvider to a SampleProvider
+ Must already be PCM or IEEE float
+
+ The WaveProvider to convert
+ A sample provider
+
+
+
+ Converts a sample provider to 16 bit PCM, optionally clipping and adjusting volume along the way
+
+
+
+
+ Generic interface for all WaveProviders.
+
+
+
+
+ Fill the specified buffer with wave data.
+
+ The buffer to fill of wave data.
+ Offset into buffer
+ The number of bytes to read
+ the number of bytes written to the buffer.
+
+
+
+ Gets the WaveFormat of this WaveProvider.
+
+ The wave format.
+
+
+
+ Converts from an ISampleProvider (IEEE float) to a 16 bit PCM IWaveProvider.
+ Number of channels and sample rate remain unchanged.
+
+ The input source provider
+
+
+
+ Reads bytes from this wave stream
+
+ The destination buffer
+ Offset into the destination buffer
+ Number of bytes read
+ Number of bytes read.
+
+
+
+
+
+
+
+
+ Volume of this channel. 1.0 = full scale
+
+
+
+
+ Converts a sample provider to 24 bit PCM, optionally clipping and adjusting volume along the way
+
+
+
+
+ Converts from an ISampleProvider (IEEE float) to a 16 bit PCM IWaveProvider.
+ Number of channels and sample rate remain unchanged.
+
+ The input source provider
+
+
+
+ Reads bytes from this wave stream, clipping if necessary
+
+ The destination buffer
+ Offset into the destination buffer
+ Number of bytes read
+ Number of bytes read.
+
+
+
+ The Format of this IWaveProvider
+
+
+
+
+
+ Volume of this channel. 1.0 = full scale, 0.0 to mute
+
+
+
+
+ Signal Generator
+ Sin, Square, Triangle, SawTooth, White Noise, Pink Noise, Sweep.
+
+
+ Posibility to change ISampleProvider
+ Example :
+ ---------
+ WaveOut _waveOutGene = new WaveOut();
+ WaveGenerator wg = new SignalGenerator();
+ wg.Type = ...
+ wg.Frequency = ...
+ wg ...
+ _waveOutGene.Init(wg);
+ _waveOutGene.Play();
+
+
+
+
+ Initializes a new instance for the Generator (Default :: 44.1Khz, 2 channels, Sinus, Frequency = 440, Gain = 1)
+
+
+
+
+ Initializes a new instance for the Generator (UserDef SampleRate & Channels)
+
+ Desired sample rate
+ Number of channels
+
+
+
+ Reads from this provider.
+
+
+
+
+ Private :: Random for WhiteNoise & Pink Noise (Value form -1 to 1)
+
+ Random value from -1 to +1
+
+
+
+ The waveformat of this WaveProvider (same as the source)
+
+
+
+
+ Frequency for the Generator. (20.0 - 20000.0 Hz)
+ Sin, Square, Triangle, SawTooth, Sweep (Start Frequency).
+
+
+
+
+ Return Log of Frequency Start (Read only)
+
+
+
+
+ End Frequency for the Sweep Generator. (Start Frequency in Frequency)
+
+
+
+
+ Return Log of Frequency End (Read only)
+
+
+
+
+ Gain for the Generator. (0.0 to 1.0)
+
+
+
+
+ Channel PhaseReverse
+
+
+
+
+ Type of Generator.
+
+
+
+
+ Length Seconds for the Sweep Generator.
+
+
+
+
+ Signal Generator type
+
+
+
+
+ Pink noise
+
+
+
+
+ White noise
+
+
+
+
+ Sweep
+
+
+
+
+ Sine wave
+
+
+
+
+ Square wave
+
+
+
+
+ Triangle Wave
+
+
+
+
+ Sawtooth wave
+
+
+
+
+ Helper class turning an already 64 bit floating point IWaveProvider
+ into an ISampleProvider - hopefully not needed for most applications
+
+
+
+
+ Initializes a new instance of the WaveToSampleProvider class
+
+ Source wave provider, must be IEEE float
+
+
+
+ Reads from this provider
+
+
+
+
+ Fully managed resampling sample provider, based on the WDL Resampler
+
+
+
+
+ Constructs a new resampler
+
+ Source to resample
+ Desired output sample rate
+
+
+
+ Reads from this sample provider
+
+
+
+
+ Output WaveFormat
+
+
+
+
+ Useful extension methods to make switching between WaveAndSampleProvider easier
+
+
+
+
+ Converts a WaveProvider into a SampleProvider (only works for PCM)
+
+ WaveProvider to convert
+
+
+
+
+ Allows sending a SampleProvider directly to an IWavePlayer without needing to convert
+ back to an IWaveProvider
+
+ The WavePlayer
+
+
+
+
+
+ Recording using waveIn api with event callbacks.
+ Use this for recording in non-gui applications
+ Events are raised as recorded buffers are made available
+
+
+
+
+ Generic interface for wave recording
+
+
+
+
+ Start Recording
+
+
+
+
+ Stop Recording
+
+
+
+
+ Recording WaveFormat
+
+
+
+
+ Indicates recorded data is available
+
+
+
+
+ Indicates that all recorded data has now been received.
+
+
+
+
+ Prepares a Wave input device for recording
+
+
+
+
+ Retrieves the capabilities of a waveIn device
+
+ Device to test
+ The WaveIn device capabilities
+
+
+
+ Start recording
+
+
+
+
+ Stop recording
+
+
+
+
+ Dispose pattern
+
+
+
+
+ Microphone Level
+
+
+
+
+ Dispose method
+
+
+
+
+ Indicates recorded data is available
+
+
+
+
+ Indicates that all recorded data has now been received.
+
+
+
+
+ Returns the number of Wave In devices available in the system
+
+
+
+
+ Milliseconds for the buffer. Recommended value is 100ms
+
+
+
+
+ Number of Buffers to use (usually 2 or 3)
+
+
+
+
+ The device number to use
+
+
+
+
+ WaveFormat we are recording in
+
+
+
+
+ Audio Capture using Wasapi
+ See http://msdn.microsoft.com/en-us/library/dd370800%28VS.85%29.aspx
+
+
+
+
+ Initialises a new instance of the WASAPI capture class
+
+
+
+
+ Initialises a new instance of the WASAPI capture class
+
+ Capture device to use
+
+
+
+ Initializes a new instance of the class.
+
+ The capture device.
+ true if sync is done with event. false use sleep.
+
+
+
+ Gets the default audio capture device
+
+ The default audio capture device
+
+
+
+ To allow overrides to specify different flags (e.g. loopback)
+
+
+
+
+ Start Recording
+
+
+
+
+ Stop Recording (requests a stop, wait for RecordingStopped event to know it has finished)
+
+
+
+
+ Dispose
+
+
+
+
+ Indicates recorded data is available
+
+
+
+
+ Indicates that all recorded data has now been received.
+
+
+
+
+ Share Mode - set before calling StartRecording
+
+
+
+
+ Recording wave format
+
+
+
+
+ Contains the name and CLSID of a DirectX Media Object
+
+
+
+
+ Initializes a new instance of DmoDescriptor
+
+
+
+
+ Name
+
+
+
+
+ Clsid
+
+
+
+
+ DirectX Media Object Enumerator
+
+
+
+
+ Get audio effect names
+
+ Audio effect names
+
+
+
+ Get audio encoder names
+
+ Audio encoder names
+
+
+
+ Get audio decoder names
+
+ Audio decoder names
+
+
+
+ DMO Guids for use with DMOEnum
+ dmoreg.h
+
+
+
+
+ MediaErr.h
+
+
+
+
+ DMO_PARTIAL_MEDIATYPE
+
+
+
+
+ defined in Medparam.h
+
+
+
+
+ Windows Media Resampler Props
+ wmcodecdsp.h
+
+
+
+
+ Range is 1 to 60
+
+
+
+
+ Specifies the channel matrix.
+
+
+
+
+ Attempting to implement the COM IMediaBuffer interface as a .NET object
+ Not sure what will happen when I pass this to an unmanaged object
+
+
+
+
+ IMediaBuffer Interface
+
+
+
+
+ Set Length
+
+ Length
+ HRESULT
+
+
+
+ Get Max Length
+
+ Max Length
+ HRESULT
+
+
+
+ Get Buffer and Length
+
+ Pointer to variable into which to write the Buffer Pointer
+ Pointer to variable into which to write the Valid Data Length
+ HRESULT
+
+
+
+ Creates a new Media Buffer
+
+ Maximum length in bytes
+
+
+
+ Dispose and free memory for buffer
+
+
+
+
+ Finalizer
+
+
+
+
+ Set length of valid data in the buffer
+
+ length
+ HRESULT
+
+
+
+ Gets the maximum length of the buffer
+
+ Max length (output parameter)
+ HRESULT
+
+
+
+ Gets buffer and / or length
+
+ Pointer to variable into which buffer pointer should be written
+ Pointer to variable into which valid data length should be written
+ HRESULT
+
+
+
+ Loads data into this buffer
+
+ Data to load
+ Number of bytes to load
+
+
+
+ Retrieves the data in the output buffer
+
+ buffer to retrieve into
+ offset within that buffer
+
+
+
+ Length of data in the media buffer
+
+
+
+
+ Media Object
+
+
+
+
+ Creates a new Media Object
+
+ Media Object COM interface
+
+
+
+ Gets the input media type for the specified input stream
+
+ Input stream index
+ Input type index
+ DMO Media Type or null if there are no more input types
+
+
+
+ Gets the DMO Media Output type
+
+ The output stream
+ Output type index
+ DMO Media Type or null if no more available
+
+
+
+ retrieves the media type that was set for an output stream, if any
+
+ Output stream index
+ DMO Media Type or null if no more available
+
+
+
+ Enumerates the supported input types
+
+ Input stream index
+ Enumeration of input types
+
+
+
+ Enumerates the output types
+
+ Output stream index
+ Enumeration of supported output types
+
+
+
+ Querys whether a specified input type is supported
+
+ Input stream index
+ Media type to check
+ true if supports
+
+
+
+ Sets the input type helper method
+
+ Input stream index
+ Media type
+ Flags (can be used to test rather than set)
+
+
+
+ Sets the input type
+
+ Input stream index
+ Media Type
+
+
+
+ Sets the input type to the specified Wave format
+
+ Input stream index
+ Wave format
+
+
+
+ Requests whether the specified Wave format is supported as an input
+
+ Input stream index
+ Wave format
+ true if supported
+
+
+
+ Helper function to make a DMO Media Type to represent a particular WaveFormat
+
+
+
+
+ Checks if a specified output type is supported
+ n.b. you may need to set the input type first
+
+ Output stream index
+ Media type
+ True if supported
+
+
+
+ Tests if the specified Wave Format is supported for output
+ n.b. may need to set the input type first
+
+ Output stream index
+ Wave format
+ True if supported
+
+
+
+ Helper method to call SetOutputType
+
+
+
+
+ Sets the output type
+ n.b. may need to set the input type first
+
+ Output stream index
+ Media type to set
+
+
+
+ Set output type to the specified wave format
+ n.b. may need to set input type first
+
+ Output stream index
+ Wave format
+
+
+
+ Get Input Size Info
+
+ Input Stream Index
+ Input Size Info
+
+
+
+ Get Output Size Info
+
+ Output Stream Index
+ Output Size Info
+
+
+
+ Process Input
+
+ Input Stream index
+ Media Buffer
+ Flags
+ Timestamp
+ Duration
+
+
+
+ Process Output
+
+ Flags
+ Output buffer count
+ Output buffers
+
+
+
+ Gives the DMO a chance to allocate any resources needed for streaming
+
+
+
+
+ Tells the DMO to free any resources needed for streaming
+
+
+
+
+ Gets maximum input latency
+
+ input stream index
+ Maximum input latency as a ref-time
+
+
+
+ Flushes all buffered data
+
+
+
+
+ Report a discontinuity on the specified input stream
+
+ Input Stream index
+
+
+
+ Is this input stream accepting data?
+
+ Input Stream index
+ true if accepting data
+
+
+
+ Experimental code, not currently being called
+ Not sure if it is necessary anyway
+
+
+
+
+ Number of input streams
+
+
+
+
+ Number of output streams
+
+
+
+
+ Media Object Size Info
+
+
+
+
+ Media Object Size Info
+
+
+
+
+ ToString
+
+
+
+
+ Minimum Buffer Size, in bytes
+
+
+
+
+ Max Lookahead
+
+
+
+
+ Alignment
+
+
+
+
+ MP_PARAMINFO
+
+
+
+
+ MP_TYPE
+
+
+
+
+ MPT_INT
+
+
+
+
+ MPT_FLOAT
+
+
+
+
+ MPT_BOOL
+
+
+
+
+ MPT_ENUM
+
+
+
+
+ MPT_MAX
+
+
+
+
+ MP_CURVE_TYPE
+
+
+
+
+ uuids.h, ksuuids.h
+
+
+
+
+ implements IMediaObject (DirectX Media Object)
+ implements IMFTransform (Media Foundation Transform)
+ On Windows XP, it is always an MM (if present at all)
+
+
+
+
+ Windows Media MP3 Decoder (as a DMO)
+ WORK IN PROGRESS - DO NOT USE!
+
+
+
+
+ Creates a new Resampler based on the DMO Resampler
+
+
+
+
+ Dispose code - experimental at the moment
+ Was added trying to track down why Resampler crashes NUnit
+ This code not currently being called by ResamplerDmoStream
+
+
+
+
+ Media Object
+
+
+
+
+ BiQuad filter
+
+
+
+
+ Passes a single sample through the filter
+
+ Input sample
+ Output sample
+
+
+
+ Set this up as a low pass filter
+
+ Sample Rate
+ Cut-off Frequency
+ Bandwidth
+
+
+
+ Set this up as a peaking EQ
+
+ Sample Rate
+ Centre Frequency
+ Bandwidth (Q)
+ Gain in decibels
+
+
+
+ Set this as a high pass filter
+
+
+
+
+ Create a low pass filter
+
+
+
+
+ Create a High pass filter
+
+
+
+
+ Create a bandpass filter with constant skirt gain
+
+
+
+
+ Create a bandpass filter with constant peak gain
+
+
+
+
+ Creates a notch filter
+
+
+
+
+ Creaes an all pass filter
+
+
+
+
+ Create a Peaking EQ
+
+
+
+
+ H(s) = A * (s^2 + (sqrt(A)/Q)*s + A)/(A*s^2 + (sqrt(A)/Q)*s + 1)
+
+
+
+ a "shelf slope" parameter (for shelving EQ only).
+ When S = 1, the shelf slope is as steep as it can be and remain monotonically
+ increasing or decreasing gain with frequency. The shelf slope, in dB/octave,
+ remains proportional to S for all other values for a fixed f0/Fs and dBgain.
+ Gain in decibels
+
+
+
+ H(s) = A * (A*s^2 + (sqrt(A)/Q)*s + 1)/(s^2 + (sqrt(A)/Q)*s + A)
+
+
+
+
+
+
+
+
+
+ Type to represent complex number
+
+
+
+
+ Real Part
+
+
+
+
+ Imaginary Part
+
+
+
+
+ Summary description for FastFourierTransform.
+
+
+
+
+ This computes an in-place complex-to-complex FFT
+ x and y are the real and imaginary arrays of 2^m points.
+
+
+
+
+ Applies a Hamming Window
+
+ Index into frame
+ Frame size (e.g. 1024)
+ Multiplier for Hamming window
+
+
+
+ Applies a Hann Window
+
+ Index into frame
+ Frame size (e.g. 1024)
+ Multiplier for Hann window
+
+
+
+ Applies a Blackman-Harris Window
+
+ Index into frame
+ Frame size (e.g. 1024)
+ Multiplier for Blackmann-Harris window
+
+
+
+ Summary description for ImpulseResponseConvolution.
+
+
+
+
+ A very simple mono convolution algorithm
+
+
+ This will be very slow
+
+
+
+
+ This is actually a downwards normalize for data that will clip
+
+
+
+
+ Represents an entry in a Cakewalk drum map
+
+
+
+
+ Describes this drum map entry
+
+
+
+
+ User customisable note name
+
+
+
+
+ Input MIDI note number
+
+
+
+
+ Output MIDI note number
+
+
+
+
+ Output port
+
+
+
+
+ Output MIDI Channel
+
+
+
+
+ Velocity adjustment
+
+
+
+
+ Velocity scaling - in percent
+
+
+
+
+ Represents a Cakewalk Drum Map file (.map)
+
+
+
+
+ Parses a Cakewalk Drum Map file
+
+ Path of the .map file
+
+
+
+ Describes this drum map
+
+
+
+
+ The drum mappings in this drum map
+
+
+
+
+ Channel Mode
+
+
+
+
+ Stereo
+
+
+
+
+ Joint Stereo
+
+
+
+
+ Dual Channel
+
+
+
+
+ Mono
+
+
+
+
+ MP3 Frame decompressor using the Windows Media MP3 Decoder DMO object
+
+
+
+
+ Interface for MP3 frame by frame decoder
+
+
+
+
+ Decompress a single MP3 frame
+
+ Frame to decompress
+ Output buffer
+ Offset within output buffer
+ Bytes written to output buffer
+
+
+
+ Tell the decoder that we have repositioned
+
+
+
+
+ PCM format that we are converting into
+
+
+
+
+ Initializes a new instance of the DMO MP3 Frame decompressor
+
+
+
+
+
+ Decompress a single frame of MP3
+
+
+
+
+ Alerts us that a reposition has occured so the MP3 decoder needs to reset its state
+
+
+
+
+ Dispose of this obejct and clean up resources
+
+
+
+
+ Converted PCM WaveFormat
+
+
+
+
+ An ID3v2 Tag
+
+
+
+
+ Reads an ID3v2 tag from a stream
+
+
+
+
+ Creates a new ID3v2 tag from a collection of key-value pairs.
+
+ A collection of key-value pairs containing the tags to include in the ID3v2 tag.
+ A new ID3v2 tag
+
+
+
+ Convert the frame size to a byte array.
+
+ The frame body size.
+
+
+
+
+ Creates an ID3v2 frame for the given key-value pair.
+
+
+
+
+
+
+
+ Gets the Id3v2 Header size. The size is encoded so that only 7 bits per byte are actually used.
+
+
+
+
+
+
+ Creates the Id3v2 tag header and returns is as a byte array.
+
+ The Id3v2 frames that will be included in the file. This is used to calculate the ID3v2 tag size.
+
+
+
+
+ Creates the Id3v2 tag for the given key-value pairs and returns it in the a stream.
+
+
+
+
+
+
+ Raw data from this tag
+
+
+
+
+ Represents an MP3 Frame
+
+
+
+
+ Reads an MP3 frame from a stream
+
+ input stream
+ A valid MP3 frame, or null if none found
+
+
+ Reads an MP3Frame from a stream
+ http://mpgedit.org/mpgedit/mpeg_format/mpeghdr.htm has some good info
+ also see http://www.codeproject.com/KB/audio-video/mpegaudioinfo.aspx
+
+ A valid MP3 frame, or null if none found
+
+
+
+ Constructs an MP3 frame
+
+
+
+
+ checks if the four bytes represent a valid header,
+ if they are, will parse the values into Mp3Frame
+
+
+
+
+ Sample rate of this frame
+
+
+
+
+ Frame length in bytes
+
+
+
+
+ Bit Rate
+
+
+
+
+ Raw frame data (includes header bytes)
+
+
+
+
+ MPEG Version
+
+
+
+
+ MPEG Layer
+
+
+
+
+ Channel Mode
+
+
+
+
+ The number of samples in this frame
+
+
+
+
+ The channel extension bits
+
+
+
+
+ The bitrate index (directly from the header)
+
+
+
+
+ Whether the Copyright bit is set
+
+
+
+
+ Whether a CRC is present
+
+
+
+
+ Not part of the MP3 frame itself - indicates where in the stream we found this header
+
+
+
+
+ MP3 Frame Decompressor using ACM
+
+
+
+
+ Creates a new ACM frame decompressor
+
+ The MP3 source format
+
+
+
+ Decompresses a frame
+
+ The MP3 frame
+ destination buffer
+ Offset within destination buffer
+ Bytes written into destination buffer
+
+
+
+ Resets the MP3 Frame Decompressor after a reposition operation
+
+
+
+
+ Disposes of this MP3 frame decompressor
+
+
+
+
+ Finalizer ensuring that resources get released properly
+
+
+
+
+ Output format (PCM)
+
+
+
+
+ MPEG Layer flags
+
+
+
+
+ Reserved
+
+
+
+
+ Layer 3
+
+
+
+
+ Layer 2
+
+
+
+
+ Layer 1
+
+
+
+
+ MPEG Version Flags
+
+
+
+
+ Version 2.5
+
+
+
+
+ Reserved
+
+
+
+
+ Version 2
+
+
+
+
+ Version 1
+
+
+
+
+ Represents a Xing VBR header
+
+
+
+
+ Load Xing Header
+
+ Frame
+ Xing Header
+
+
+
+ Sees if a frame contains a Xing header
+
+
+
+
+ Number of frames
+
+
+
+
+ Number of bytes
+
+
+
+
+ VBR Scale property
+
+
+
+
+ The MP3 frame
+
+
+
+
+ Soundfont generator
+
+
+
+
+
+
+
+
+
+ Gets the generator type
+
+
+
+
+ Generator amount as an unsigned short
+
+
+
+
+ Generator amount as a signed short
+
+
+
+
+ Low byte amount
+
+
+
+
+ High byte amount
+
+
+
+
+ Instrument
+
+
+
+
+ Sample Header
+
+
+
+
+ base class for structures that can read themselves
+
+
+
+
+ Generator types
+
+
+
+ Start address offset
+
+
+ End address offset
+
+
+ Start loop address offset
+
+
+ End loop address offset
+
+
+ Start address coarse offset
+
+
+ Modulation LFO to pitch
+
+
+ Vibrato LFO to pitch
+
+
+ Modulation envelope to pitch
+
+
+ Initial filter cutoff frequency
+
+
+ Initial filter Q
+
+
+ Modulation LFO to filter Cutoff frequency
+
+
+ Modulation envelope to filter cutoff frequency
+
+
+ End address coarse offset
+
+
+ Modulation LFO to volume
+
+
+ Unused
+
+
+ Chorus effects send
+
+
+ Reverb effects send
+
+
+ Pan
+
+
+ Unused
+
+
+ Unused
+
+
+ Unused
+
+
+ Delay modulation LFO
+
+
+ Frequency modulation LFO
+
+
+ Delay vibrato LFO
+
+
+ Frequency vibrato LFO
+
+
+ Delay modulation envelope
+
+
+ Attack modulation envelope
+
+
+ Hold modulation envelope
+
+
+ Decay modulation envelope
+
+
+ Sustain modulation envelop
+
+
+ Release modulation envelope
+
+
+ Key number to modulation envelope hold
+
+
+ Key number to modulation envelope decay
+
+
+ Delay volume envelope
+
+
+ Attack volume envelope
+
+
+ Hold volume envelope
+
+
+ Decay volume envelope
+
+
+ Sustain volume envelope
+
+
+ Release volume envelope
+
+
+ Key number to volume envelope hold
+
+
+ Key number to volume envelope decay
+
+
+ Instrument
+
+
+ Reserved
+
+
+ Key range
+
+
+ Velocity range
+
+
+ Start loop address coarse offset
+
+
+ Key number
+
+
+ Velocity
+
+
+ Initial attenuation
+
+
+ Reserved
+
+
+ End loop address coarse offset
+
+
+ Coarse tune
+
+
+ Fine tune
+
+
+ Sample ID
+
+
+ Sample modes
+
+
+ Reserved
+
+
+ Scale tuning
+
+
+ Exclusive class
+
+
+ Overriding root key
+
+
+ Unused
+
+
+ Unused
+
+
+
+ A soundfont info chunk
+
+
+
+
+
+
+
+
+
+ SoundFont Version
+
+
+
+
+ WaveTable sound engine
+
+
+
+
+ Bank name
+
+
+
+
+ Data ROM
+
+
+
+
+ Creation Date
+
+
+
+
+ Author
+
+
+
+
+ Target Product
+
+
+
+
+ Copyright
+
+
+
+
+ Comments
+
+
+
+
+ Tools
+
+
+
+
+ ROM Version
+
+
+
+
+ SoundFont instrument
+
+
+
+
+
+
+
+
+
+ instrument name
+
+
+
+
+ Zones
+
+
+
+
+ Instrument Builder
+
+
+
+
+ Transform Types
+
+
+
+
+ Linear
+
+
+
+
+ Modulator
+
+
+
+
+
+
+
+
+
+ Source Modulation data type
+
+
+
+
+ Destination generator type
+
+
+
+
+ Amount
+
+
+
+
+ Source Modulation Amount Type
+
+
+
+
+ Source Transform Type
+
+
+
+
+ Controller Sources
+
+
+
+
+ No Controller
+
+
+
+
+ Note On Velocity
+
+
+
+
+ Note On Key Number
+
+
+
+
+ Poly Pressure
+
+
+
+
+ Channel Pressure
+
+
+
+
+ Pitch Wheel
+
+
+
+
+ Pitch Wheel Sensitivity
+
+
+
+
+ Source Types
+
+
+
+
+ Linear
+
+
+
+
+ Concave
+
+
+
+
+ Convex
+
+
+
+
+ Switch
+
+
+
+
+ Modulator Type
+
+
+
+
+
+
+
+
+
+
+ A SoundFont Preset
+
+
+
+
+
+
+
+
+
+ Preset name
+
+
+
+
+ Patch Number
+
+
+
+
+ Bank number
+
+
+
+
+ Zones
+
+
+
+
+ Class to read the SoundFont file presets chunk
+
+
+
+
+
+
+
+
+
+ The Presets contained in this chunk
+
+
+
+
+ The instruments contained in this chunk
+
+
+
+
+ The sample headers contained in this chunk
+
+
+
+
+ just reads a chunk ID at the current position
+
+ chunk ID
+
+
+
+ reads a chunk at the current position
+
+
+
+
+ creates a new riffchunk from current position checking that we're not
+ at the end of this chunk first
+
+ the new chunk
+
+
+
+ useful for chunks that just contain a string
+
+ chunk as string
+
+
+
+ A SoundFont Sample Header
+
+
+
+
+ The sample name
+
+
+
+
+ Start offset
+
+
+
+
+ End offset
+
+
+
+
+ Start loop point
+
+
+
+
+ End loop point
+
+
+
+
+ Sample Rate
+
+
+
+
+ Original pitch
+
+
+
+
+ Pitch correction
+
+
+
+
+ Sample Link
+
+
+
+
+ SoundFont Sample Link Type
+
+
+
+
+
+
+
+
+
+ SoundFont sample modes
+
+
+
+
+ No loop
+
+
+
+
+ Loop Continuously
+
+
+
+
+ Reserved no loop
+
+
+
+
+ Loop and continue
+
+
+
+
+ Sample Link Type
+
+
+
+
+ Mono Sample
+
+
+
+
+ Right Sample
+
+
+
+
+ Left Sample
+
+
+
+
+ Linked Sample
+
+
+
+
+ ROM Mono Sample
+
+
+
+
+ ROM Right Sample
+
+
+
+
+ ROM Left Sample
+
+
+
+
+ ROM Linked Sample
+
+
+
+
+ SoundFont Version Structure
+
+
+
+
+ Major Version
+
+
+
+
+ Minor Version
+
+
+
+
+ Builds a SoundFont version
+
+
+
+
+ Reads a SoundFont Version structure
+
+
+
+
+ Writes a SoundFont Version structure
+
+
+
+
+ Gets the length of this structure
+
+
+
+
+ Represents a SoundFont
+
+
+
+
+ Loads a SoundFont from a file
+
+ Filename of the SoundFont
+
+
+
+ Loads a SoundFont from a stream
+
+ stream
+
+
+
+
+
+
+
+
+ The File Info Chunk
+
+
+
+
+ The Presets
+
+
+
+
+ The Instruments
+
+
+
+
+ The Sample Headers
+
+
+
+
+ The Sample Data
+
+
+
+
+ A SoundFont zone
+
+
+
+
+
+
+
+
+
+ Modulators for this Zone
+
+
+
+
+ Generators for this Zone
+
+
+
+
+ Summary description for Fader.
+
+
+
+
+ Required designer variable.
+
+
+
+
+ Creates a new Fader control
+
+
+
+
+ Clean up any resources being used.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Required method for Designer support - do not modify
+ the contents of this method with the code editor.
+
+
+
+
+ Minimum value of this fader
+
+
+
+
+ Maximum value of this fader
+
+
+
+
+ Current value of this fader
+
+
+
+
+ Fader orientation
+
+
+
+
+ Pan slider control
+
+
+
+
+ Required designer variable.
+
+
+
+
+ Creates a new PanSlider control
+
+
+
+
+ Clean up any resources being used.
+
+
+
+
+ Required method for Designer support - do not modify
+ the contents of this method with the code editor.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ True when pan value changed
+
+
+
+
+ The current Pan setting
+
+
+
+
+ Control that represents a potentiometer
+ TODO list:
+ Optional Log scale
+ Optional reverse scale
+ Keyboard control
+ Optional bitmap mode
+ Optional complete draw mode
+ Tooltip support
+
+
+
+
+ Creates a new pot control
+
+
+
+
+ Draws the control
+
+
+
+
+ Handles the mouse down event to allow changing value by dragging
+
+
+
+
+ Handles the mouse up event to allow changing value by dragging
+
+
+
+
+ Handles the mouse down event to allow changing value by dragging
+
+
+
+
+ Required designer variable.
+
+
+
+
+ Clean up any resources being used.
+
+ true if managed resources should be disposed; otherwise, false.
+
+
+
+ Required method for Designer support - do not modify
+ the contents of this method with the code editor.
+
+
+
+
+ Value changed event
+
+
+
+
+ Minimum Value of the Pot
+
+
+
+
+ Maximum Value of the Pot
+
+
+
+
+ The current value of the pot
+
+
+
+
+ Implements a rudimentary volume meter
+
+
+
+
+ Basic volume meter
+
+
+
+
+ On Fore Color Changed
+
+
+
+
+ Paints the volume meter
+
+
+
+
+ Required designer variable.
+
+
+
+
+ Clean up any resources being used.
+
+ true if managed resources should be disposed; otherwise, false.
+
+
+
+ Required method for Designer support - do not modify
+ the contents of this method with the code editor.
+
+
+
+
+ Current Value
+
+
+
+
+ Minimum decibels
+
+
+
+
+ Maximum decibels
+
+
+
+
+ Meter orientation
+
+
+
+
+ VolumeSlider control
+
+
+
+
+ Required designer variable.
+
+
+
+
+ Creates a new VolumeSlider control
+
+
+
+
+ Clean up any resources being used.
+
+
+
+
+ Required method for Designer support - do not modify
+ the contents of this method with the code editor.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Volume changed event
+
+
+
+
+ The volume for this control
+
+
+
+
+ Windows Forms control for painting audio waveforms
+
+
+
+
+ Constructs a new instance of the WaveFormPainter class
+
+
+
+
+ On Resize
+
+
+
+
+ On ForeColor Changed
+
+
+
+
+
+ Add Max Value
+
+
+
+
+
+ On Paint
+
+
+
+
+ Required designer variable.
+
+
+
+
+ Clean up any resources being used.
+
+ true if managed resources should be disposed; otherwise, false.
+
+
+
+ Required method for Designer support - do not modify
+ the contents of this method with the code editor.
+
+
+
+
+ Control for viewing waveforms
+
+
+
+
+ Required designer variable.
+
+
+
+
+ Creates a new WaveViewer control
+
+
+
+
+ Clean up any resources being used.
+
+
+
+
+
+
+
+
+
+ Required method for Designer support - do not modify
+ the contents of this method with the code editor.
+
+
+
+
+ sets the associated wavestream
+
+
+
+
+ The zoom level, in samples per pixel
+
+
+
+
+ Start position (currently in bytes)
+
+
+
+
+ Represents a MIDI Channel AfterTouch Event.
+
+
+
+
+ Represents an individual MIDI event
+
+
+
+ The MIDI command code
+
+
+
+ Creates a MidiEvent from a raw message received using
+ the MME MIDI In APIs
+
+ The short MIDI message
+ A new MIDI Event
+
+
+
+ Constructs a MidiEvent from a BinaryStream
+
+ The binary stream of MIDI data
+ The previous MIDI event (pass null for first event)
+ A new MidiEvent
+
+
+
+ Converts this MIDI event to a short message (32 bit integer) that
+ can be sent by the Windows MIDI out short message APIs
+ Cannot be implemented for all MIDI messages
+
+ A short message
+
+
+
+ Default constructor
+
+
+
+
+ Creates a MIDI event with specified parameters
+
+ Absolute time of this event
+ MIDI channel number
+ MIDI command code
+
+
+
+ Whether this is a note off event
+
+
+
+
+ Whether this is a note on event
+
+
+
+
+ Determines if this is an end track event
+
+
+
+
+ Displays a summary of the MIDI event
+
+ A string containing a brief description of this MIDI event
+
+
+
+ Utility function that can read a variable length integer from a binary stream
+
+ The binary stream
+ The integer read
+
+
+
+ Writes a variable length integer to a binary stream
+
+ Binary stream
+ The value to write
+
+
+
+ Exports this MIDI event's data
+ Overriden in derived classes, but they should call this version
+
+ Absolute time used to calculate delta.
+ Is updated ready for the next delta calculation
+ Stream to write to
+
+
+
+ The MIDI Channel Number for this event (1-16)
+
+
+
+
+ The Delta time for this event
+
+
+
+
+ The absolute time for this event
+
+
+
+
+ The command code for this event
+
+
+
+
+ Creates a new ChannelAfterTouchEvent from raw MIDI data
+
+ A binary reader
+
+
+
+ Creates a new Channel After-Touch Event
+
+ Absolute time
+ Channel
+ After-touch pressure
+
+
+
+ Calls base class export first, then exports the data
+ specific to this event
+ MidiEvent.Export
+
+
+
+
+ The aftertouch pressure value
+
+
+
+
+ Represents a MIDI control change event
+
+
+
+
+ Reads a control change event from a MIDI stream
+
+ Binary reader on the MIDI stream
+
+
+
+ Creates a control change event
+
+ Time
+ MIDI Channel Number
+ The MIDI Controller
+ Controller value
+
+
+
+ Describes this control change event
+
+ A string describing this event
+
+
+
+
+
+
+
+
+ Calls base class export first, then exports the data
+ specific to this event
+ MidiEvent.Export
+
+
+
+
+ The controller number
+
+
+
+
+ The controller value
+
+
+
+
+ Represents a MIDI key signature event event
+
+
+
+
+ Represents a MIDI meta event
+
+
+
+
+ Empty constructor
+
+
+
+
+ Custom constructor for use by derived types, who will manage the data themselves
+
+ Meta event type
+ Meta data length
+ Absolute time
+
+
+
+ Reads a meta-event from a stream
+
+ A binary reader based on the stream of MIDI data
+ A new MetaEvent object
+
+
+
+ Describes this Meta event
+
+ String describing the metaevent
+
+
+
+
+
+
+
+
+ Gets the type of this meta event
+
+
+
+
+ Reads a new track sequence number event from a MIDI stream
+
+ The MIDI stream
+ the data length
+
+
+
+ Creates a new Key signature event with the specified data
+
+
+
+
+ Describes this event
+
+ String describing the event
+
+
+
+ Calls base class export first, then exports the data
+ specific to this event
+ MidiEvent.Export
+
+
+
+
+ Number of sharps or flats
+
+
+
+
+ Major or Minor key
+
+
+
+
+ MIDI MetaEvent Type
+
+
+
+ Track sequence number
+
+
+ Text event
+
+
+ Copyright
+
+
+ Sequence track name
+
+
+ Track instrument name
+
+
+ Lyric
+
+
+ Marker
+
+
+ Cue point
+
+
+ Program (patch) name
+
+
+ Device (port) name
+
+
+ MIDI Channel (not official?)
+
+
+ MIDI Port (not official?)
+
+
+ End track
+
+
+ Set tempo
+
+
+ SMPTE offset
+
+
+ Time signature
+
+
+ Key signature
+
+
+ Sequencer specific
+
+
+
+ MIDI command codes
+
+
+
+ Note Off
+
+
+ Note On
+
+
+ Key After-touch
+
+
+ Control change
+
+
+ Patch change
+
+
+ Channel after-touch
+
+
+ Pitch wheel change
+
+
+ Sysex message
+
+
+ Eox (comes at end of a sysex message)
+
+
+ Timing clock (used when synchronization is required)
+
+
+ Start sequence
+
+
+ Continue sequence
+
+
+ Stop sequence
+
+
+ Auto-Sensing
+
+
+ Meta-event
+
+
+
+ MidiController enumeration
+ http://www.midi.org/techspecs/midimessages.php#3
+
+
+
+ Bank Select (MSB)
+
+
+ Modulation (MSB)
+
+
+ Breath Controller
+
+
+ Foot controller (MSB)
+
+
+ Main volume
+
+
+ Pan
+
+
+ Expression
+
+
+ Bank Select LSB
+
+
+ Sustain
+
+
+ Portamento On/Off
+
+
+ Sostenuto On/Off
+
+
+ Soft Pedal On/Off
+
+
+ Legato Footswitch
+
+
+ Reset all controllers
+
+
+ All notes off
+
+
+
+ A helper class to manage collection of MIDI events
+ It has the ability to organise them in tracks
+
+
+
+
+ Creates a new Midi Event collection
+
+ Initial file type
+ Delta Ticks Per Quarter Note
+
+
+
+ Gets events on a specified track
+
+ Track number
+ The list of events
+
+
+
+ Adds a new track
+
+ The new track event list
+
+
+
+ Adds a new track
+
+ Initial events to add to the new track
+ The new track event list
+
+
+
+ Removes a track
+
+ Track number to remove
+
+
+
+ Clears all events
+
+
+
+
+ Adds an event to the appropriate track depending on file type
+
+ The event to be added
+ The original (or desired) track number
+ When adding events in type 0 mode, the originalTrack parameter
+ is ignored. If in type 1 mode, it will use the original track number to
+ store the new events. If the original track was 0 and this is a channel based
+ event, it will create new tracks if necessary and put it on the track corresponding
+ to its channel number
+
+
+
+ Sorts, removes empty tracks and adds end track markers
+
+
+
+
+ Gets an enumerator for the lists of track events
+
+
+
+
+ Gets an enumerator for the lists of track events
+
+
+
+
+ The number of tracks
+
+
+
+
+ The absolute time that should be considered as time zero
+ Not directly used here, but useful for timeshifting applications
+
+
+
+
+ The number of ticks per quarter note
+
+
+
+
+ Gets events on a specific track
+
+ Track number
+ The list of events
+
+
+
+ The MIDI file type
+
+
+
+
+ Utility class for comparing MidiEvent objects
+
+
+
+
+ Compares two MidiEvents
+ Sorts by time, with EndTrack always sorted to the end
+
+
+
+
+ Class able to read a MIDI file
+
+
+
+
+ Opens a MIDI file for reading
+
+ Name of MIDI file
+
+
+
+ Opens a MIDI file for reading
+
+ Name of MIDI file
+ If true will error on non-paired note events
+
+
+
+ Describes the MIDI file
+
+ A string describing the MIDI file and its events
+
+
+
+ Exports a MIDI file
+
+ Filename to export to
+ Events to export
+
+
+
+ MIDI File format
+
+
+
+
+ The collection of events in this MIDI file
+
+
+
+
+ Number of tracks in this MIDI file
+
+
+
+
+ Delta Ticks Per Quarter Note
+
+
+
+
+ Represents a MIDI in device
+
+
+
+
+ Opens a specified MIDI in device
+
+ The device number
+
+
+
+ Closes this MIDI in device
+
+
+
+
+ Closes this MIDI in device
+
+
+
+
+ Start the MIDI in device
+
+
+
+
+ Stop the MIDI in device
+
+
+
+
+ Reset the MIDI in device
+
+
+
+
+ Gets the MIDI in device info
+
+
+
+
+ Closes the MIDI out device
+
+ True if called from Dispose
+
+
+
+ Cleanup
+
+
+
+
+ Called when a MIDI message is received
+
+
+
+
+ An invalid MIDI message
+
+
+
+
+ Gets the number of MIDI input devices available in the system
+
+
+
+
+ MIDI In Device Capabilities
+
+
+
+
+ wMid
+
+
+
+
+ wPid
+
+
+
+
+ vDriverVersion
+
+
+
+
+ Product Name
+
+
+
+
+ Support - Reserved
+
+
+
+
+ Gets the manufacturer of this device
+
+
+
+
+ Gets the product identifier (manufacturer specific)
+
+
+
+
+ Gets the product name
+
+
+
+
+ MIM_OPEN
+
+
+
+
+ MIM_CLOSE
+
+
+
+
+ MIM_DATA
+
+
+
+
+ MIM_LONGDATA
+
+
+
+
+ MIM_ERROR
+
+
+
+
+ MIM_LONGERROR
+
+
+
+
+ MIM_MOREDATA
+
+
+
+
+ MOM_OPEN
+
+
+
+
+ MOM_CLOSE
+
+
+
+
+ MOM_DONE
+
+
+
+
+ Represents a MIDI message
+
+
+
+
+ Creates a new MIDI message
+
+ Status
+ Data parameter 1
+ Data parameter 2
+
+
+
+ Creates a new MIDI message from a raw message
+
+ A packed MIDI message from an MMIO function
+
+
+
+ Creates a Note On message
+
+ Note number
+ Volume
+ MIDI channel
+ A new MidiMessage object
+
+
+
+ Creates a Note Off message
+
+ Note number
+ Volume
+ MIDI channel (1-16)
+ A new MidiMessage object
+
+
+
+ Creates a patch change message
+
+ The patch number
+ The MIDI channel number (1-16)
+ A new MidiMessageObject
+
+
+
+ Creates a Control Change message
+
+ The controller number to change
+ The value to set the controller to
+ The MIDI channel number (1-16)
+ A new MidiMessageObject
+
+
+
+ Returns the raw MIDI message data
+
+
+
+
+ Represents a MIDI out device
+
+
+
+
+ Gets the MIDI Out device info
+
+
+
+
+ Opens a specified MIDI out device
+
+ The device number
+
+
+
+ Closes this MIDI out device
+
+
+
+
+ Closes this MIDI out device
+
+
+
+
+ Resets the MIDI out device
+
+
+
+
+ Sends a MIDI out message
+
+ Message
+ Parameter 1
+ Parameter 2
+
+
+
+ Sends a MIDI message to the MIDI out device
+
+ The message to send
+
+
+
+ Closes the MIDI out device
+
+ True if called from Dispose
+
+
+
+ Send a long message, for example sysex.
+
+ The bytes to send.
+
+
+
+ Cleanup
+
+
+
+
+ Gets the number of MIDI devices available in the system
+
+
+
+
+ Gets or sets the volume for this MIDI out device
+
+
+
+
+ class representing the capabilities of a MIDI out device
+ MIDIOUTCAPS: http://msdn.microsoft.com/en-us/library/dd798467%28VS.85%29.aspx
+
+
+
+
+ Queries whether a particular channel is supported
+
+ Channel number to test
+ True if the channel is supported
+
+
+
+ Gets the manufacturer of this device
+
+
+
+
+ Gets the product identifier (manufacturer specific)
+
+
+
+
+ Gets the product name
+
+
+
+
+ Returns the number of supported voices
+
+
+
+
+ Gets the polyphony of the device
+
+
+
+
+ Returns true if the device supports all channels
+
+
+
+
+ Returns true if the device supports patch caching
+
+
+
+
+ Returns true if the device supports separate left and right volume
+
+
+
+
+ Returns true if the device supports MIDI stream out
+
+
+
+
+ Returns true if the device supports volume control
+
+
+
+
+ Returns the type of technology used by this MIDI out device
+
+
+
+
+ MIDICAPS_VOLUME
+
+
+
+
+ separate left-right volume control
+ MIDICAPS_LRVOLUME
+
+
+
+
+ MIDICAPS_CACHE
+
+
+
+
+ MIDICAPS_STREAM
+ driver supports midiStreamOut directly
+
+
+
+
+ Represents the different types of technology used by a MIDI out device
+
+ from mmsystem.h
+
+
+ The device is a MIDI port
+
+
+ The device is a MIDI synth
+
+
+ The device is a square wave synth
+
+
+ The device is an FM synth
+
+
+ The device is a MIDI mapper
+
+
+ The device is a WaveTable synth
+
+
+ The device is a software synth
+
+
+
+ Represents a note MIDI event
+
+
+
+
+ Reads a NoteEvent from a stream of MIDI data
+
+ Binary Reader for the stream
+
+
+
+ Creates a MIDI Note Event with specified parameters
+
+ Absolute time of this event
+ MIDI channel number
+ MIDI command code
+ MIDI Note Number
+ MIDI Note Velocity
+
+
+
+
+
+
+
+
+ Describes the Note Event
+
+ Note event as a string
+
+
+
+
+
+
+
+
+ The MIDI note number
+
+
+
+
+ The note velocity
+
+
+
+
+ The note name
+
+
+
+
+ Represents a MIDI note on event
+
+
+
+
+ Reads a new Note On event from a stream of MIDI data
+
+ Binary reader on the MIDI data stream
+
+
+
+ Creates a NoteOn event with specified parameters
+
+ Absolute time of this event
+ MIDI channel number
+ MIDI note number
+ MIDI note velocity
+ MIDI note duration
+
+
+
+ Calls base class export first, then exports the data
+ specific to this event
+ MidiEvent.Export
+
+
+
+
+ The associated Note off event
+
+
+
+
+ Get or set the Note Number, updating the off event at the same time
+
+
+
+
+ Get or set the channel, updating the off event at the same time
+
+
+
+
+ The duration of this note
+
+
+ There must be a note off event
+
+
+
+
+ Represents a MIDI patch change event
+
+
+
+
+ Gets the default MIDI instrument names
+
+
+
+
+ Reads a new patch change event from a MIDI stream
+
+ Binary reader for the MIDI stream
+
+
+
+ Creates a new patch change event
+
+ Time of the event
+ Channel number
+ Patch number
+
+
+
+ Describes this patch change event
+
+ String describing the patch change event
+
+
+
+ Gets as a short message for sending with the midiOutShortMsg API
+
+ short message
+
+
+
+ Calls base class export first, then exports the data
+ specific to this event
+ MidiEvent.Export
+
+
+
+
+ The Patch Number
+
+
+
+
+ Represents a MIDI pitch wheel change event
+
+
+
+
+ Reads a pitch wheel change event from a MIDI stream
+
+ The MIDI stream to read from
+
+
+
+ Creates a new pitch wheel change event
+
+ Absolute event time
+ Channel
+ Pitch wheel value
+
+
+
+ Describes this pitch wheel change event
+
+ String describing this pitch wheel change event
+
+
+
+ Gets a short message
+
+ Integer to sent as short message
+
+
+
+ Calls base class export first, then exports the data
+ specific to this event
+ MidiEvent.Export
+
+
+
+
+ Pitch Wheel Value 0 is minimum, 0x2000 (8192) is default, 0x4000 (16384) is maximum
+
+
+
+
+ Represents a Sequencer Specific event
+
+
+
+
+ Reads a new sequencer specific event from a MIDI stream
+
+ The MIDI stream
+ The data length
+
+
+
+ Creates a new Sequencer Specific event
+
+ The sequencer specific data
+ Absolute time of this event
+
+
+
+ Describes this MIDI text event
+
+ A string describing this event
+
+
+
+ Calls base class export first, then exports the data
+ specific to this event
+ MidiEvent.Export
+
+
+
+
+ The contents of this sequencer specific
+
+
+
+
+ Reads a new time signature event from a MIDI stream
+
+ The MIDI stream
+ The data length
+
+
+
+ Describes this time signature event
+
+ A string describing this event
+
+
+
+ Calls base class export first, then exports the data
+ specific to this event
+ MidiEvent.Export
+
+
+
+
+ Hours
+
+
+
+
+ Minutes
+
+
+
+
+ Seconds
+
+
+
+
+ Frames
+
+
+
+
+ SubFrames
+
+
+
+
+ Represents a MIDI sysex message
+
+
+
+
+ Reads a sysex message from a MIDI stream
+
+ Stream of MIDI data
+ a new sysex message
+
+
+
+ Describes this sysex message
+
+ A string describing the sysex message
+
+
+
+ Calls base class export first, then exports the data
+ specific to this event
+ MidiEvent.Export
+
+
+
+
+ Represents a MIDI tempo event
+
+
+
+
+ Reads a new tempo event from a MIDI stream
+
+ The MIDI stream
+ the data length
+
+
+
+ Creates a new tempo event with specified settings
+
+ Microseconds per quarter note
+ Absolute time
+
+
+
+ Describes this tempo event
+
+ String describing the tempo event
+
+
+
+ Calls base class export first, then exports the data
+ specific to this event
+ MidiEvent.Export
+
+
+
+
+ Microseconds per quarter note
+
+
+
+
+ Tempo
+
+
+
+
+ Represents a MIDI text event
+
+
+
+
+ Reads a new text event from a MIDI stream
+
+ The MIDI stream
+ The data length
+
+
+
+ Creates a new TextEvent
+
+ The text in this type
+ MetaEvent type (must be one that is
+ associated with text data)
+ Absolute time of this event
+
+
+
+ Describes this MIDI text event
+
+ A string describing this event
+
+
+
+ Calls base class export first, then exports the data
+ specific to this event
+ MidiEvent.Export
+
+
+
+
+ The contents of this text event
+
+
+
+
+ Represents a MIDI time signature event
+
+
+
+
+ Reads a new time signature event from a MIDI stream
+
+ The MIDI stream
+ The data length
+
+
+
+ Creates a new TimeSignatureEvent
+
+ Time at which to create this event
+ Numerator
+ Denominator
+ Ticks in Metronome Click
+ No of 32nd Notes in Quarter Click
+
+
+
+ Creates a new time signature event with the specified parameters
+
+
+
+
+ Describes this time signature event
+
+ A string describing this event
+
+
+
+ Calls base class export first, then exports the data
+ specific to this event
+ MidiEvent.Export
+
+
+
+
+ Numerator (number of beats in a bar)
+
+
+
+
+ Denominator (Beat unit),
+ 1 means 2, 2 means 4 (crochet), 3 means 8 (quaver), 4 means 16 and 5 means 32
+
+
+
+
+ Ticks in a metronome click
+
+
+
+
+ Number of 32nd notes in a quarter note
+
+
+
+
+ The time signature
+
+
+
+
+ Represents a MIDI track sequence number event event
+
+
+
+
+ Reads a new track sequence number event from a MIDI stream
+
+ The MIDI stream
+ the data length
+
+
+
+ Describes this event
+
+ String describing the event
+
+
+
+ Calls base class export first, then exports the data
+ specific to this event
+ MidiEvent.Export
+
+
+
+
+ Boolean mixer control
+
+
+
+
+ Represents a mixer control
+
+
+
+
+ Mixer Handle
+
+
+
+
+ Number of Channels
+
+
+
+
+ Mixer Handle Type
+
+
+
+
+ Gets all the mixer controls
+
+ Mixer Handle
+ Mixer Line
+ Mixer Handle Type
+
+
+
+
+ Gets a specified Mixer Control
+
+ Mixer Handle
+ Line ID
+ Control ID
+ Number of Channels
+ Flags to use (indicates the meaning of mixerHandle)
+
+
+
+
+ Gets the control details
+
+
+
+
+ Gets the control details
+
+
+
+
+
+ Returns true if this is a boolean control
+
+ Control type
+
+
+
+ Determines whether a specified mixer control type is a list text control
+
+
+
+
+ String representation for debug purposes
+
+
+
+
+ Mixer control name
+
+
+
+
+ Mixer control type
+
+
+
+
+ Is this a boolean control
+
+
+
+
+ True if this is a list text control
+
+
+
+
+ True if this is a signed control
+
+
+
+
+ True if this is an unsigned control
+
+
+
+
+ True if this is a custom control
+
+
+
+
+ Gets the details for this control
+
+ memory pointer
+
+
+
+ The current value of the control
+
+
+
+
+ Custom Mixer control
+
+
+
+
+ Get the data for this custom control
+
+ pointer to memory to receive data
+
+
+
+ List text mixer control
+
+
+
+
+ Get the details for this control
+
+ Memory location to read to
+
+
+ Represents a Windows mixer device
+
+
+ Connects to the specified mixer
+ The index of the mixer to use.
+ This should be between zero and NumberOfDevices - 1
+
+
+ Retrieve the specified MixerDestination object
+ The ID of the destination to use.
+ Should be between 0 and DestinationCount - 1
+
+
+ The number of mixer devices available
+
+
+ The number of destinations this mixer supports
+
+
+ The name of this mixer device
+
+
+ The manufacturer code for this mixer device
+
+
+ The product identifier code for this mixer device
+
+
+
+ A way to enumerate the destinations
+
+
+
+
+ A way to enumerate all available devices
+
+
+
+
+ Mixer control types
+
+
+
+ Custom
+
+
+ Boolean meter
+
+
+ Signed meter
+
+
+ Peak meter
+
+
+ Unsigned meter
+
+
+ Boolean
+
+
+ On Off
+
+
+ Mute
+
+
+ Mono
+
+
+ Loudness
+
+
+ Stereo Enhance
+
+
+ Button
+
+
+ Decibels
+
+
+ Signed
+
+
+ Unsigned
+
+
+ Percent
+
+
+ Slider
+
+
+ Pan
+
+
+ Q-sound pan
+
+
+ Fader
+
+
+ Volume
+
+
+ Bass
+
+
+ Treble
+
+
+ Equaliser
+
+
+ Single Select
+
+
+ Mux
+
+
+ Multiple select
+
+
+ Mixer
+
+
+ Micro time
+
+
+ Milli time
+
+
+
+ Represents a mixer line (source or destination)
+
+
+
+
+ Creates a new mixer destination
+
+ Mixer Handle
+ Destination Index
+ Mixer Handle Type
+
+
+
+ Creates a new Mixer Source For a Specified Source
+
+ Mixer Handle
+ Destination Index
+ Source Index
+ Flag indicating the meaning of mixerHandle
+
+
+
+ Creates a new Mixer Source
+
+ Wave In Device
+
+
+
+ Gets the specified source
+
+
+
+
+ Describes this Mixer Line (for diagnostic purposes)
+
+
+
+
+ Mixer Line Name
+
+
+
+
+ Mixer Line short name
+
+
+
+
+ The line ID
+
+
+
+
+ Component Type
+
+
+
+
+ Mixer destination type description
+
+
+
+
+ Number of channels
+
+
+
+
+ Number of sources
+
+
+
+
+ Number of controls
+
+
+
+
+ Is this destination active
+
+
+
+
+ Is this destination disconnected
+
+
+
+
+ Is this destination a source
+
+
+
+
+ Enumerator for the controls on this Mixer Limne
+
+
+
+
+ Enumerator for the sources on this Mixer Line
+
+
+
+
+ The name of the target output device
+
+
+
+
+ Mixer Interop Flags
+
+
+
+
+ MIXER_OBJECTF_HANDLE = 0x80000000;
+
+
+
+
+ MIXER_OBJECTF_MIXER = 0x00000000;
+
+
+
+
+ MIXER_OBJECTF_HMIXER
+
+
+
+
+ MIXER_OBJECTF_WAVEOUT
+
+
+
+
+ MIXER_OBJECTF_HWAVEOUT
+
+
+
+
+ MIXER_OBJECTF_WAVEIN
+
+
+
+
+ MIXER_OBJECTF_HWAVEIN
+
+
+
+
+ MIXER_OBJECTF_MIDIOUT
+
+
+
+
+ MIXER_OBJECTF_HMIDIOUT
+
+
+
+
+ MIXER_OBJECTF_MIDIIN
+
+
+
+
+ MIXER_OBJECTF_HMIDIIN
+
+
+
+
+ MIXER_OBJECTF_AUX
+
+
+
+
+ MIXER_GETCONTROLDETAILSF_VALUE = 0x00000000;
+ MIXER_SETCONTROLDETAILSF_VALUE = 0x00000000;
+
+
+
+
+ MIXER_GETCONTROLDETAILSF_LISTTEXT = 0x00000001;
+ MIXER_SETCONTROLDETAILSF_LISTTEXT = 0x00000001;
+
+
+
+
+ MIXER_GETCONTROLDETAILSF_QUERYMASK = 0x0000000F;
+ MIXER_SETCONTROLDETAILSF_QUERYMASK = 0x0000000F;
+ MIXER_GETLINECONTROLSF_QUERYMASK = 0x0000000F;
+
+
+
+
+ MIXER_GETLINECONTROLSF_ALL = 0x00000000;
+
+
+
+
+ MIXER_GETLINECONTROLSF_ONEBYID = 0x00000001;
+
+
+
+
+ MIXER_GETLINECONTROLSF_ONEBYTYPE = 0x00000002;
+
+
+
+
+ MIXER_GETLINEINFOF_DESTINATION = 0x00000000;
+
+
+
+
+ MIXER_GETLINEINFOF_SOURCE = 0x00000001;
+
+
+
+
+ MIXER_GETLINEINFOF_LINEID = 0x00000002;
+
+
+
+
+ MIXER_GETLINEINFOF_COMPONENTTYPE = 0x00000003;
+
+
+
+
+ MIXER_GETLINEINFOF_TARGETTYPE = 0x00000004;
+
+
+
+
+ MIXER_GETLINEINFOF_QUERYMASK = 0x0000000F;
+
+
+
+
+ Mixer Line Flags
+
+
+
+
+ Audio line is active. An active line indicates that a signal is probably passing
+ through the line.
+
+
+
+
+ Audio line is disconnected. A disconnected line's associated controls can still be
+ modified, but the changes have no effect until the line is connected.
+
+
+
+
+ Audio line is an audio source line associated with a single audio destination line.
+ If this flag is not set, this line is an audio destination line associated with zero
+ or more audio source lines.
+
+
+
+
+ BOUNDS structure
+
+
+
+
+ dwMinimum / lMinimum / reserved 0
+
+
+
+
+ dwMaximum / lMaximum / reserved 1
+
+
+
+
+ reserved 2
+
+
+
+
+ reserved 3
+
+
+
+
+ reserved 4
+
+
+
+
+ reserved 5
+
+
+
+
+ METRICS structure
+
+
+
+
+ cSteps / reserved[0]
+
+
+
+
+ cbCustomData / reserved[1], number of bytes for control details
+
+
+
+
+ reserved 2
+
+
+
+
+ reserved 3
+
+
+
+
+ reserved 4
+
+
+
+
+ reserved 5
+
+
+
+
+ MIXERCONTROL struct
+ http://msdn.microsoft.com/en-us/library/dd757293%28VS.85%29.aspx
+
+
+
+
+ Mixer Line Component type enumeration
+
+
+
+
+ Audio line is a destination that cannot be defined by one of the standard component types. A mixer device is required to use this component type for line component types that have not been defined by Microsoft Corporation.
+ MIXERLINE_COMPONENTTYPE_DST_UNDEFINED
+
+
+
+
+ Audio line is a digital destination (for example, digital input to a DAT or CD audio device).
+ MIXERLINE_COMPONENTTYPE_DST_DIGITAL
+
+
+
+
+ Audio line is a line level destination (for example, line level input from a CD audio device) that will be the final recording source for the analog-to-digital converter (ADC). Because most audio cards for personal computers provide some sort of gain for the recording audio source line, the mixer device will use the MIXERLINE_COMPONENTTYPE_DST_WAVEIN type.
+ MIXERLINE_COMPONENTTYPE_DST_LINE
+
+
+
+
+ Audio line is a destination used for a monitor.
+ MIXERLINE_COMPONENTTYPE_DST_MONITOR
+
+
+
+
+ Audio line is an adjustable (gain and/or attenuation) destination intended to drive speakers. This is the typical component type for the audio output of audio cards for personal computers.
+ MIXERLINE_COMPONENTTYPE_DST_SPEAKERS
+
+
+
+
+ Audio line is an adjustable (gain and/or attenuation) destination intended to drive headphones. Most audio cards use the same audio destination line for speakers and headphones, in which case the mixer device simply uses the MIXERLINE_COMPONENTTYPE_DST_SPEAKERS type.
+ MIXERLINE_COMPONENTTYPE_DST_HEADPHONES
+
+
+
+
+ Audio line is a destination that will be routed to a telephone line.
+ MIXERLINE_COMPONENTTYPE_DST_TELEPHONE
+
+
+
+
+ Audio line is a destination that will be the final recording source for the waveform-audio input (ADC). This line typically provides some sort of gain or attenuation. This is the typical component type for the recording line of most audio cards for personal computers.
+ MIXERLINE_COMPONENTTYPE_DST_WAVEIN
+
+
+
+
+ Audio line is a destination that will be the final recording source for voice input. This component type is exactly like MIXERLINE_COMPONENTTYPE_DST_WAVEIN but is intended specifically for settings used during voice recording/recognition. Support for this line is optional for a mixer device. Many mixer devices provide only MIXERLINE_COMPONENTTYPE_DST_WAVEIN.
+ MIXERLINE_COMPONENTTYPE_DST_VOICEIN
+
+
+
+
+ Audio line is a source that cannot be defined by one of the standard component types. A mixer device is required to use this component type for line component types that have not been defined by Microsoft Corporation.
+ MIXERLINE_COMPONENTTYPE_SRC_UNDEFINED
+
+
+
+
+ Audio line is a digital source (for example, digital output from a DAT or audio CD).
+ MIXERLINE_COMPONENTTYPE_SRC_DIGITAL
+
+
+
+
+ Audio line is a line-level source (for example, line-level input from an external stereo) that can be used as an optional recording source. Because most audio cards for personal computers provide some sort of gain for the recording source line, the mixer device will use the MIXERLINE_COMPONENTTYPE_SRC_AUXILIARY type.
+ MIXERLINE_COMPONENTTYPE_SRC_LINE
+
+
+
+
+ Audio line is a microphone recording source. Most audio cards for personal computers provide at least two types of recording sources: an auxiliary audio line and microphone input. A microphone audio line typically provides some sort of gain. Audio cards that use a single input for use with a microphone or auxiliary audio line should use the MIXERLINE_COMPONENTTYPE_SRC_MICROPHONE component type.
+ MIXERLINE_COMPONENTTYPE_SRC_MICROPHONE
+
+
+
+
+ Audio line is a source originating from the output of an internal synthesizer. Most audio cards for personal computers provide some sort of MIDI synthesizer (for example, an Adlib®-compatible or OPL/3 FM synthesizer).
+ MIXERLINE_COMPONENTTYPE_SRC_SYNTHESIZER
+
+
+
+
+ Audio line is a source originating from the output of an internal audio CD. This component type is provided for audio cards that provide an audio source line intended to be connected to an audio CD (or CD-ROM playing an audio CD).
+ MIXERLINE_COMPONENTTYPE_SRC_COMPACTDISC
+
+
+
+
+ Audio line is a source originating from an incoming telephone line.
+ MIXERLINE_COMPONENTTYPE_SRC_TELEPHONE
+
+
+
+
+ Audio line is a source originating from personal computer speaker. Several audio cards for personal computers provide the ability to mix what would typically be played on the internal speaker with the output of an audio card. Some audio cards support the ability to use this output as a recording source.
+ MIXERLINE_COMPONENTTYPE_SRC_PCSPEAKER
+
+
+
+
+ Audio line is a source originating from the waveform-audio output digital-to-analog converter (DAC). Most audio cards for personal computers provide this component type as a source to the MIXERLINE_COMPONENTTYPE_DST_SPEAKERS destination. Some cards also allow this source to be routed to the MIXERLINE_COMPONENTTYPE_DST_WAVEIN destination.
+ MIXERLINE_COMPONENTTYPE_SRC_WAVEOUT
+
+
+
+
+ Audio line is a source originating from the auxiliary audio line. This line type is intended as a source with gain or attenuation that can be routed to the MIXERLINE_COMPONENTTYPE_DST_SPEAKERS destination and/or recorded from the MIXERLINE_COMPONENTTYPE_DST_WAVEIN destination.
+ MIXERLINE_COMPONENTTYPE_SRC_AUXILIARY
+
+
+
+
+ Audio line is an analog source (for example, analog output from a video-cassette tape).
+ MIXERLINE_COMPONENTTYPE_SRC_ANALOG
+
+
+
+
+ Represents a signed mixer control
+
+
+
+
+ Gets details for this contrl
+
+
+
+
+ String Representation for debugging purposes
+
+
+
+
+
+ The value of the control
+
+
+
+
+ Minimum value for this control
+
+
+
+
+ Maximum value for this control
+
+
+
+
+ Value of the control represented as a percentage
+
+
+
+
+ Represents an unsigned mixer control
+
+
+
+
+ Gets the details for this control
+
+
+
+
+ String Representation for debugging purposes
+
+
+
+
+ The control value
+
+
+
+
+ The control's minimum value
+
+
+
+
+ The control's maximum value
+
+
+
+
+ Value of the control represented as a percentage
+
+
+
+
+ Helper methods for working with audio buffers
+
+
+
+
+ Ensures the buffer is big enough
+
+
+
+
+
+
+
+ Ensures the buffer is big enough
+
+
+
+
+
+
+
+ An encoding for use with file types that have one byte per character
+
+
+
+
+ The one and only instance of this class
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A very basic circular buffer implementation
+
+
+
+
+ Create a new circular buffer
+
+ Max buffer size in bytes
+
+
+
+ Write data to the buffer
+
+ Data to write
+ Offset into data
+ Number of bytes to write
+ number of bytes written
+
+
+
+ Read from the buffer
+
+ Buffer to read into
+ Offset into read buffer
+ Bytes to read
+ Number of bytes actually read
+
+
+
+ Resets the buffer
+
+
+
+
+ Advances the buffer, discarding bytes
+
+ Bytes to advance
+
+
+
+ Maximum length of this circular buffer
+
+
+
+
+ Number of bytes currently stored in the circular buffer
+
+
+
+
+ A util class for conversions
+
+
+
+
+ linear to dB conversion
+
+ linear value
+ decibel value
+
+
+
+ dB to linear conversion
+
+ decibel value
+ linear value
+
+
+
+ HResult
+
+
+
+
+ S_OK
+
+
+
+
+ S_FALSE
+
+
+
+
+ E_INVALIDARG (from winerror.h)
+
+
+
+
+ MAKE_HRESULT macro
+
+
+
+
+ Helper to deal with the fact that in Win Store apps,
+ the HResult property name has changed
+
+ COM Exception
+ The HResult
+
+
+
+ Pass-through stream that ignores Dispose
+ Useful for dealing with MemoryStreams that you want to re-use
+
+
+
+
+ Creates a new IgnoreDisposeStream
+
+ The source stream
+
+
+
+ Flushes the underlying stream
+
+
+
+
+ Reads from the underlying stream
+
+
+
+
+ Seeks on the underlying stream
+
+
+
+
+ Sets the length of the underlying stream
+
+
+
+
+ Writes to the underlying stream
+
+
+
+
+ Dispose - by default (IgnoreDispose = true) will do nothing,
+ leaving the underlying stream undisposed
+
+
+
+
+ The source stream all other methods fall through to
+
+
+
+
+ If true the Dispose will be ignored, if false, will pass through to the SourceStream
+ Set to true by default
+
+
+
+
+ Can Read
+
+
+
+
+ Can Seek
+
+
+
+
+ Can write to the underlying stream
+
+
+
+
+ Gets the length of the underlying stream
+
+
+
+
+ Gets or sets the position of the underlying stream
+
+
+
+
+ In-place and stable implementation of MergeSort
+
+
+
+
+ MergeSort a list of comparable items
+
+
+
+
+ MergeSort a list
+
+
+
+
+ A thread-safe Progress Log Control
+
+
+
+
+ Creates a new progress log control
+
+
+
+
+ Log a message
+
+
+
+
+ Clear the log
+
+
+
+
+ Required designer variable.
+
+
+
+
+ Clean up any resources being used.
+
+ true if managed resources should be disposed; otherwise, false.
+
+
+
+ Required method for Designer support - do not modify
+ the contents of this method with the code editor.
+
+
+
+
+ The contents of the log as text
+
+
+
+
+ Audio Endpoint Volume
+
+
+
+
+ Volume Step Up
+
+
+
+
+ Volume Step Down
+
+
+
+
+ Creates a new Audio endpoint volume
+
+ IAudioEndpointVolume COM interface
+
+
+
+ Dispose
+
+
+
+
+ Finalizer
+
+
+
+
+ On Volume Notification
+
+
+
+
+ Volume Range
+
+
+
+
+ Hardware Support
+
+
+
+
+ Step Information
+
+
+
+
+ Channels
+
+
+
+
+ Master Volume Level
+
+
+
+
+ Master Volume Level Scalar
+
+
+
+
+ Mute
+
+
+
+
+ Audio Meter Information
+
+
+
+
+ Peak Values
+
+
+
+
+ Hardware Support
+
+
+
+
+ Master Peak Value
+
+
+
+
+ Device State
+
+
+
+
+ DEVICE_STATE_ACTIVE
+
+
+
+
+ DEVICE_STATE_DISABLED
+
+
+
+
+ DEVICE_STATE_NOTPRESENT
+
+
+
+
+ DEVICE_STATE_UNPLUGGED
+
+
+
+
+ DEVICE_STATEMASK_ALL
+
+
+
+
+ Endpoint Hardware Support
+
+
+
+
+ Volume
+
+
+
+
+ Mute
+
+
+
+
+ Meter
+
+
+
+
+ is defined in WTypes.h
+
+
+
+
+ The EDataFlow enumeration defines constants that indicate the direction
+ in which audio data flows between an audio endpoint device and an application
+
+
+
+
+ Audio rendering stream.
+ Audio data flows from the application to the audio endpoint device, which renders the stream.
+
+
+
+
+ Audio capture stream. Audio data flows from the audio endpoint device that captures the stream,
+ to the application
+
+
+
+
+ Audio rendering or capture stream. Audio data can flow either from the application to the audio
+ endpoint device, or from the audio endpoint device to the application.
+
+
+
+
+ Windows CoreAudio IAudioClient interface
+ Defined in AudioClient.h
+
+
+
+
+ The GetBufferSize method retrieves the size (maximum capacity) of the endpoint buffer.
+
+
+
+
+ The GetService method accesses additional services from the audio client object.
+
+ The interface ID for the requested service.
+ Pointer to a pointer variable into which the method writes the address of an instance of the requested interface.
+
+
+
+ defined in MMDeviceAPI.h
+
+
+
+
+ IMMNotificationClient
+
+
+
+
+ Device State Changed
+
+
+
+
+ Device Added
+
+
+
+
+ Device Removed
+
+
+
+
+ Default Device Changed
+
+
+
+
+ Property Value Changed
+
+
+
+
+
+
+ is defined in propsys.h
+
+
+
+
+ implements IMMDeviceEnumerator
+
+
+
+
+ MMDevice STGM enumeration
+
+
+
+
+ PROPERTYKEY is defined in wtypes.h
+
+
+
+
+ Format ID
+
+
+
+
+ Property ID
+
+
+
+
+
+
+
+
+
+
+ from Propidl.h.
+ http://msdn.microsoft.com/en-us/library/aa380072(VS.85).aspx
+ contains a union so we have to do an explicit layout
+
+
+
+
+ Creates a new PropVariant containing a long value
+
+
+
+
+ Helper method to gets blob data
+
+
+
+
+ Interprets a blob as an array of structs
+
+
+
+
+ allows freeing up memory, might turn this into a Dispose method?
+
+
+
+
+ Gets the type of data in this PropVariant
+
+
+
+
+ Property value
+
+
+
+
+ The ERole enumeration defines constants that indicate the role
+ that the system has assigned to an audio endpoint device
+
+
+
+
+ Games, system notification sounds, and voice commands.
+
+
+
+
+ Music, movies, narration, and live music recording
+
+
+
+
+ Voice communications (talking to another person).
+
+
+
+
+ MM Device
+
+
+
+
+ To string
+
+
+
+
+ Audio Client
+
+
+
+
+ Audio Meter Information
+
+
+
+
+ Audio Endpoint Volume
+
+
+
+
+ AudioSessionManager instance
+
+
+
+
+ Properties
+
+
+
+
+ Friendly name for the endpoint
+
+
+
+
+ Friendly name of device
+
+
+
+
+ Icon path of device
+
+
+
+
+ Device ID
+
+
+
+
+ Data Flow
+
+
+
+
+ Device State
+
+
+
+
+ MM Device Enumerator
+
+
+
+
+ Creates a new MM Device Enumerator
+
+
+
+
+ Enumerate Audio Endpoints
+
+ Desired DataFlow
+ State Mask
+ Device Collection
+
+
+
+ Get Default Endpoint
+
+ Data Flow
+ Role
+ Device
+
+
+
+ Check to see if a default audio end point exists without needing an exception.
+
+ Data Flow
+ Role
+ True if one exists, and false if one does not exist.
+
+
+
+ Get device by ID
+
+ Device ID
+ Device
+
+
+
+ Registers a call back for Device Events
+
+ Object implementing IMMNotificationClient type casted as IMMNotificationClient interface
+
+
+
+
+ Unregisters a call back for Device Events
+
+ Object implementing IMMNotificationClient type casted as IMMNotificationClient interface
+
+
+
+
+ Property Store class, only supports reading properties at the moment.
+
+
+
+
+ Contains property guid
+
+ Looks for a specific key
+ True if found
+
+
+
+ Gets property key at sepecified index
+
+ Index
+ Property key
+
+
+
+ Gets property value at specified index
+
+ Index
+ Property value
+
+
+
+ Creates a new property store
+
+ IPropertyStore COM interface
+
+
+
+ Property Count
+
+
+
+
+ Gets property by index
+
+ Property index
+ The property
+
+
+
+ Indexer by guid
+
+ Property Key
+ Property or null if not found
+
+
+
+ Property Store Property
+
+
+
+
+ Property Key
+
+
+
+
+ Property Value
+
+
+
+
+ Main ASIODriver Class. To use this class, you need to query first the GetASIODriverNames() and
+ then use the GetASIODriverByName to instantiate the correct ASIODriver.
+ This is the first ASIODriver binding fully implemented in C#!
+
+ Contributor: Alexandre Mutel - email: alexandre_mutel at yahoo.fr
+
+
+
+
+ Gets the ASIO driver names installed.
+
+ a list of driver names. Use this name to GetASIODriverByName
+
+
+
+ Instantiate a ASIODriver given its name.
+
+ The name of the driver
+ an ASIODriver instance
+
+
+
+ Instantiate the ASIO driver by GUID.
+
+ The GUID.
+ an ASIODriver instance
+
+
+
+ Inits the ASIODriver..
+
+ The sys handle.
+
+
+
+
+ Gets the name of the driver.
+
+
+
+
+
+ Gets the driver version.
+
+
+
+
+
+ Gets the error message.
+
+
+
+
+
+ Starts this instance.
+
+
+
+
+ Stops this instance.
+
+
+
+
+ Gets the channels.
+
+ The num input channels.
+ The num output channels.
+
+
+
+ Gets the latencies (n.b. does not throw an exception)
+
+ The input latency.
+ The output latency.
+
+
+
+ Gets the size of the buffer.
+
+ Size of the min.
+ Size of the max.
+ Size of the preferred.
+ The granularity.
+
+
+
+ Determines whether this instance can use the specified sample rate.
+
+ The sample rate.
+
+ true if this instance [can sample rate] the specified sample rate; otherwise, false.
+
+
+
+
+ Gets the sample rate.
+
+
+
+
+
+ Sets the sample rate.
+
+ The sample rate.
+
+
+
+ Gets the clock sources.
+
+ The clocks.
+ The num sources.
+
+
+
+ Sets the clock source.
+
+ The reference.
+
+
+
+ Gets the sample position.
+
+ The sample pos.
+ The time stamp.
+
+
+
+ Gets the channel info.
+
+ The channel number.
+ if set to true [true for input info].
+
+
+
+
+ Creates the buffers.
+
+ The buffer infos.
+ The num channels.
+ Size of the buffer.
+ The callbacks.
+
+
+
+ Disposes the buffers.
+
+
+
+
+ Controls the panel.
+
+
+
+
+ Futures the specified selector.
+
+ The selector.
+ The opt.
+
+
+
+ Notifies OutputReady to the ASIODriver.
+
+
+
+
+
+ Releases this instance.
+
+
+
+
+ Handles the exception. Throws an exception based on the error.
+
+ The error to check.
+ Method name
+
+
+
+ Inits the vTable method from GUID. This is a tricky part of this class.
+
+ The ASIO GUID.
+
+
+
+ Internal VTable structure to store all the delegates to the C++ COM method.
+
+
+
+
+ Callback used by the ASIODriverExt to get wave data
+
+
+
+
+ ASIODriverExt is a simplified version of the ASIODriver. It provides an easier
+ way to access the capabilities of the Driver and implement the callbacks necessary
+ for feeding the driver.
+ Implementation inspired from Rob Philpot's with a managed C++ ASIO wrapper BlueWave.Interop.Asio
+ http://www.codeproject.com/KB/mcpp/Asio.Net.aspx
+
+ Contributor: Alexandre Mutel - email: alexandre_mutel at yahoo.fr
+
+
+
+
+ Initializes a new instance of the class based on an already
+ instantiated ASIODriver instance.
+
+ A ASIODriver already instantiated.
+
+
+
+ Allows adjustment of which is the first output channel we write to
+
+ Output Channel offset
+ Input Channel offset
+
+
+
+ Starts playing the buffers.
+
+
+
+
+ Stops playing the buffers.
+
+
+
+
+ Shows the control panel.
+
+
+
+
+ Releases this instance.
+
+
+
+
+ Determines whether the specified sample rate is supported.
+
+ The sample rate.
+
+ true if [is sample rate supported]; otherwise, false.
+
+
+
+
+ Sets the sample rate.
+
+ The sample rate.
+
+
+
+ Creates the buffers for playing.
+
+ The number of outputs channels.
+ The number of input channel.
+ if set to true [use max buffer size] else use Prefered size
+
+
+
+ Builds the capabilities internally.
+
+
+
+
+ Callback called by the ASIODriver on fill buffer demand. Redirect call to external callback.
+
+ Index of the double buffer.
+ if set to true [direct process].
+
+
+
+ Callback called by the ASIODriver on event "Samples rate changed".
+
+ The sample rate.
+
+
+
+ Asio message call back.
+
+ The selector.
+ The value.
+ The message.
+ The opt.
+
+
+
+
+ Buffers switch time info call back.
+
+ The asio time param.
+ Index of the double buffer.
+ if set to true [direct process].
+
+
+
+
+ Gets the driver used.
+
+ The ASIOdriver.
+
+
+
+ Gets or sets the fill buffer callback.
+
+ The fill buffer callback.
+
+
+
+ Gets the capabilities of the ASIODriver.
+
+ The capabilities.
+
+
+
+ This class stores convertors for different interleaved WaveFormat to ASIOSampleType separate channel
+ format.
+
+
+
+
+ Selects the sample convertor based on the input WaveFormat and the output ASIOSampleTtype.
+
+ The wave format.
+ The type.
+
+
+
+
+ Optimized convertor for 2 channels SHORT
+
+
+
+
+ Generic convertor for SHORT
+
+
+
+
+ Optimized convertor for 2 channels FLOAT
+
+
+
+
+ Generic convertor SHORT
+
+
+
+
+ Optimized convertor for 2 channels SHORT
+
+
+
+
+ Generic convertor for SHORT
+
+
+
+
+ Optimized convertor for 2 channels FLOAT
+
+
+
+
+ Generic convertor SHORT
+
+
+
+
+ Generic converter 24 LSB
+
+
+
+
+ Generic convertor for float
+
+
+
+
+ ASIO common Exception.
+
+
+
+
+ Gets the name of the error.
+
+ The error.
+ the name of the error
+
+
+
+ Represents an installed ACM Driver
+
+
+
+
+ Helper function to determine whether a particular codec is installed
+
+ The short name of the function
+ Whether the codec is installed
+
+
+
+ Attempts to add a new ACM driver from a file
+
+ Full path of the .acm or dll file containing the driver
+ Handle to the driver
+
+
+
+ Removes a driver previously added using AddLocalDriver
+
+ Local driver to remove
+
+
+
+ Show Format Choose Dialog
+
+ Owner window handle, can be null
+ Window title
+ Enumeration flags. None to get everything
+ Enumeration format. Only needed with certain enumeration flags
+ The selected format
+ Textual description of the selected format
+ Textual description of the selected format tag
+ True if a format was selected
+
+
+
+ Finds a Driver by its short name
+
+ Short Name
+ The driver, or null if not found
+
+
+
+ Gets a list of the ACM Drivers installed
+
+
+
+
+ The callback for acmDriverEnum
+
+
+
+
+ Creates a new ACM Driver object
+
+ Driver handle
+
+
+
+ ToString
+
+
+
+
+ Gets all the supported formats for a given format tag
+
+ Format tag
+ Supported formats
+
+
+
+ Opens this driver
+
+
+
+
+ Closes this driver
+
+
+
+
+ Dispose
+
+
+
+
+ Gets the maximum size needed to store a WaveFormat for ACM interop functions
+
+
+
+
+ The short name of this driver
+
+
+
+
+ The full name of this driver
+
+
+
+
+ The driver ID
+
+
+
+
+ The list of FormatTags for this ACM Driver
+
+
+
+
+ Interop structure for ACM driver details (ACMDRIVERDETAILS)
+ http://msdn.microsoft.com/en-us/library/dd742889%28VS.85%29.aspx
+
+
+
+
+ ACMDRIVERDETAILS_SHORTNAME_CHARS
+
+
+
+
+ ACMDRIVERDETAILS_LONGNAME_CHARS
+
+
+
+
+ ACMDRIVERDETAILS_COPYRIGHT_CHARS
+
+
+
+
+ ACMDRIVERDETAILS_LICENSING_CHARS
+
+
+
+
+ ACMDRIVERDETAILS_FEATURES_CHARS
+
+
+
+
+ DWORD cbStruct
+
+
+
+
+ FOURCC fccType
+
+
+
+
+ FOURCC fccComp
+
+
+
+
+ WORD wMid;
+
+
+
+
+ WORD wPid
+
+
+
+
+ DWORD vdwACM
+
+
+
+
+ DWORD vdwDriver
+
+
+
+
+ DWORD fdwSupport;
+
+
+
+
+ DWORD cFormatTags
+
+
+
+
+ DWORD cFilterTags
+
+
+
+
+ HICON hicon
+
+
+
+
+ TCHAR szShortName[ACMDRIVERDETAILS_SHORTNAME_CHARS];
+
+
+
+
+ TCHAR szLongName[ACMDRIVERDETAILS_LONGNAME_CHARS];
+
+
+
+
+ TCHAR szCopyright[ACMDRIVERDETAILS_COPYRIGHT_CHARS];
+
+
+
+
+ TCHAR szLicensing[ACMDRIVERDETAILS_LICENSING_CHARS];
+
+
+
+
+ TCHAR szFeatures[ACMDRIVERDETAILS_FEATURES_CHARS];
+
+
+
+
+ Flags indicating what support a particular ACM driver has
+
+
+
+ ACMDRIVERDETAILS_SUPPORTF_CODEC - Codec
+
+
+ ACMDRIVERDETAILS_SUPPORTF_CONVERTER - Converter
+
+
+ ACMDRIVERDETAILS_SUPPORTF_FILTER - Filter
+
+
+ ACMDRIVERDETAILS_SUPPORTF_HARDWARE - Hardware
+
+
+ ACMDRIVERDETAILS_SUPPORTF_ASYNC - Async
+
+
+ ACMDRIVERDETAILS_SUPPORTF_LOCAL - Local
+
+
+ ACMDRIVERDETAILS_SUPPORTF_DISABLED - Disabled
+
+
+
+ ACM_DRIVERENUMF_NOLOCAL, Only global drivers should be included in the enumeration
+
+
+
+
+ ACM_DRIVERENUMF_DISABLED, Disabled ACM drivers should be included in the enumeration
+
+
+
+
+ ACM Format
+
+
+
+
+ Format Index
+
+
+
+
+ Format Tag
+
+
+
+
+ Support Flags
+
+
+
+
+ WaveFormat
+
+
+
+
+ WaveFormat Size
+
+
+
+
+ Format Description
+
+
+
+
+ ACMFORMATCHOOSE
+ http://msdn.microsoft.com/en-us/library/dd742911%28VS.85%29.aspx
+
+
+
+
+ DWORD cbStruct;
+
+
+
+
+ DWORD fdwStyle;
+
+
+
+
+ HWND hwndOwner;
+
+
+
+
+ LPWAVEFORMATEX pwfx;
+
+
+
+
+ DWORD cbwfx;
+
+
+
+
+ LPCTSTR pszTitle;
+
+
+
+
+ TCHAR szFormatTag[ACMFORMATTAGDETAILS_FORMATTAG_CHARS];
+
+
+
+
+ TCHAR szFormat[ACMFORMATDETAILS_FORMAT_CHARS];
+
+
+
+
+ LPTSTR pszName;
+ n.b. can be written into
+
+
+
+
+ DWORD cchName
+ Should be at least 128 unless name is zero
+
+
+
+
+ DWORD fdwEnum;
+
+
+
+
+ LPWAVEFORMATEX pwfxEnum;
+
+
+
+
+ HINSTANCE hInstance;
+
+
+
+
+ LPCTSTR pszTemplateName;
+
+
+
+
+ LPARAM lCustData;
+
+
+
+
+ ACMFORMATCHOOSEHOOKPROC pfnHook;
+
+
+
+
+ None
+
+
+
+
+ ACMFORMATCHOOSE_STYLEF_SHOWHELP
+
+
+
+
+ ACMFORMATCHOOSE_STYLEF_ENABLEHOOK
+
+
+
+
+ ACMFORMATCHOOSE_STYLEF_ENABLETEMPLATE
+
+
+
+
+ ACMFORMATCHOOSE_STYLEF_ENABLETEMPLATEHANDLE
+
+
+
+
+ ACMFORMATCHOOSE_STYLEF_INITTOWFXSTRUCT
+
+
+
+
+ ACMFORMATCHOOSE_STYLEF_CONTEXTHELP
+
+
+
+
+ ACMFORMATDETAILS
+ http://msdn.microsoft.com/en-us/library/dd742913%28VS.85%29.aspx
+
+
+
+
+ ACMFORMATDETAILS_FORMAT_CHARS
+
+
+
+
+ DWORD cbStruct;
+
+
+
+
+ DWORD dwFormatIndex;
+
+
+
+
+ DWORD dwFormatTag;
+
+
+
+
+ DWORD fdwSupport;
+
+
+
+
+ LPWAVEFORMATEX pwfx;
+
+
+
+
+ DWORD cbwfx;
+
+
+
+
+ TCHAR szFormat[ACMFORMATDETAILS_FORMAT_CHARS];
+
+
+
+
+ Format Enumeration Flags
+
+
+
+
+ None
+
+
+
+
+ ACM_FORMATENUMF_CONVERT
+ The WAVEFORMATEX structure pointed to by the pwfx member of the ACMFORMATDETAILS structure is valid. The enumerator will only enumerate destination formats that can be converted from the given pwfx format.
+
+
+
+
+ ACM_FORMATENUMF_HARDWARE
+ The enumerator should only enumerate formats that are supported as native input or output formats on one or more of the installed waveform-audio devices. This flag provides a way for an application to choose only formats native to an installed waveform-audio device. This flag must be used with one or both of the ACM_FORMATENUMF_INPUT and ACM_FORMATENUMF_OUTPUT flags. Specifying both ACM_FORMATENUMF_INPUT and ACM_FORMATENUMF_OUTPUT will enumerate only formats that can be opened for input or output. This is true regardless of whether this flag is specified.
+
+
+
+
+ ACM_FORMATENUMF_INPUT
+ Enumerator should enumerate only formats that are supported for input (recording).
+
+
+
+
+ ACM_FORMATENUMF_NCHANNELS
+ The nChannels member of the WAVEFORMATEX structure pointed to by the pwfx member of the ACMFORMATDETAILS structure is valid. The enumerator will enumerate only a format that conforms to this attribute.
+
+
+
+
+ ACM_FORMATENUMF_NSAMPLESPERSEC
+ The nSamplesPerSec member of the WAVEFORMATEX structure pointed to by the pwfx member of the ACMFORMATDETAILS structure is valid. The enumerator will enumerate only a format that conforms to this attribute.
+
+
+
+
+ ACM_FORMATENUMF_OUTPUT
+ Enumerator should enumerate only formats that are supported for output (playback).
+
+
+
+
+ ACM_FORMATENUMF_SUGGEST
+ The WAVEFORMATEX structure pointed to by the pwfx member of the ACMFORMATDETAILS structure is valid. The enumerator will enumerate all suggested destination formats for the given pwfx format. This mechanism can be used instead of the acmFormatSuggest function to allow an application to choose the best suggested format for conversion. The dwFormatIndex member will always be set to zero on return.
+
+
+
+
+ ACM_FORMATENUMF_WBITSPERSAMPLE
+ The wBitsPerSample member of the WAVEFORMATEX structure pointed to by the pwfx member of the ACMFORMATDETAILS structure is valid. The enumerator will enumerate only a format that conforms to this attribute.
+
+
+
+
+ ACM_FORMATENUMF_WFORMATTAG
+ The wFormatTag member of the WAVEFORMATEX structure pointed to by the pwfx member of the ACMFORMATDETAILS structure is valid. The enumerator will enumerate only a format that conforms to this attribute. The dwFormatTag member of the ACMFORMATDETAILS structure must be equal to the wFormatTag member.
+
+
+
+
+ ACM_FORMATSUGGESTF_WFORMATTAG
+
+
+
+
+ ACM_FORMATSUGGESTF_NCHANNELS
+
+
+
+
+ ACM_FORMATSUGGESTF_NSAMPLESPERSEC
+
+
+
+
+ ACM_FORMATSUGGESTF_WBITSPERSAMPLE
+
+
+
+
+ ACM_FORMATSUGGESTF_TYPEMASK
+
+
+
+
+ ACM Format Tag
+
+
+
+
+ Format Tag Index
+
+
+
+
+ Format Tag
+
+
+
+
+ Format Size
+
+
+
+
+ Support Flags
+
+
+
+
+ Standard Formats Count
+
+
+
+
+ Format Description
+
+
+
+
+ ACMFORMATTAGDETAILS_FORMATTAG_CHARS
+
+
+
+
+ DWORD cbStruct;
+
+
+
+
+ DWORD dwFormatTagIndex;
+
+
+
+
+ DWORD dwFormatTag;
+
+
+
+
+ DWORD cbFormatSize;
+
+
+
+
+ DWORD fdwSupport;
+
+
+
+
+ DWORD cStandardFormats;
+
+
+
+
+ TCHAR szFormatTag[ACMFORMATTAGDETAILS_FORMATTAG_CHARS];
+
+
+
+
+ Interop definitions for Windows ACM (Audio Compression Manager) API
+
+
+
+
+ http://msdn.microsoft.com/en-us/library/dd742916%28VS.85%29.aspx
+ MMRESULT acmFormatSuggest(
+ HACMDRIVER had,
+ LPWAVEFORMATEX pwfxSrc,
+ LPWAVEFORMATEX pwfxDst,
+ DWORD cbwfxDst,
+ DWORD fdwSuggest);
+
+
+
+
+ http://msdn.microsoft.com/en-us/library/dd742928%28VS.85%29.aspx
+ MMRESULT acmStreamOpen(
+ LPHACMSTREAM phas,
+ HACMDRIVER had,
+ LPWAVEFORMATEX pwfxSrc,
+ LPWAVEFORMATEX pwfxDst,
+ LPWAVEFILTER pwfltr,
+ DWORD_PTR dwCallback,
+ DWORD_PTR dwInstance,
+ DWORD fdwOpen
+
+
+
+
+ A version with pointers for troubleshooting
+
+
+
+
+ http://msdn.microsoft.com/en-us/library/dd742910%28VS.85%29.aspx
+ UINT ACMFORMATCHOOSEHOOKPROC acmFormatChooseHookProc(
+ HWND hwnd,
+ UINT uMsg,
+ WPARAM wParam,
+ LPARAM lParam
+
+
+
+ ACM_METRIC_COUNT_DRIVERS
+
+
+ ACM_METRIC_COUNT_CODECS
+
+
+ ACM_METRIC_COUNT_CONVERTERS
+
+
+ ACM_METRIC_COUNT_FILTERS
+
+
+ ACM_METRIC_COUNT_DISABLED
+
+
+ ACM_METRIC_COUNT_HARDWARE
+
+
+ ACM_METRIC_COUNT_LOCAL_DRIVERS
+
+
+ ACM_METRIC_COUNT_LOCAL_CODECS
+
+
+ ACM_METRIC_COUNT_LOCAL_CONVERTERS
+
+
+ ACM_METRIC_COUNT_LOCAL_FILTERS
+
+
+ ACM_METRIC_COUNT_LOCAL_DISABLED
+
+
+ ACM_METRIC_HARDWARE_WAVE_INPUT
+
+
+ ACM_METRIC_HARDWARE_WAVE_OUTPUT
+
+
+ ACM_METRIC_MAX_SIZE_FORMAT
+
+
+ ACM_METRIC_MAX_SIZE_FILTER
+
+
+ ACM_METRIC_DRIVER_SUPPORT
+
+
+ ACM_METRIC_DRIVER_PRIORITY
+
+
+
+ AcmStream encapsulates an Audio Compression Manager Stream
+ used to convert audio from one format to another
+
+
+
+
+ Creates a new ACM stream to convert one format to another. Note that
+ not all conversions can be done in one step
+
+ The source audio format
+ The destination audio format
+
+
+
+ Creates a new ACM stream to convert one format to another, using a
+ specified driver identified and wave filter
+
+ the driver identifier
+ the source format
+ the wave filter
+
+
+
+ Returns the number of output bytes for a given number of input bytes
+
+ Number of input bytes
+ Number of output bytes
+
+
+
+ Returns the number of source bytes for a given number of destination bytes
+
+ Number of destination bytes
+ Number of source bytes
+
+
+
+ Suggests an appropriate PCM format that the compressed format can be converted
+ to in one step
+
+ The compressed format
+ The PCM format
+
+
+
+ Report that we have repositioned in the source stream
+
+
+
+
+ Converts the contents of the SourceBuffer into the DestinationBuffer
+
+ The number of bytes in the SourceBuffer
+ that need to be converted
+ The number of source bytes actually converted
+ The number of converted bytes in the DestinationBuffer
+
+
+
+ Converts the contents of the SourceBuffer into the DestinationBuffer
+
+ The number of bytes in the SourceBuffer
+ that need to be converted
+ The number of converted bytes in the DestinationBuffer
+
+
+
+ Frees resources associated with this ACM Stream
+
+
+
+
+ Frees resources associated with this ACM Stream
+
+
+
+
+ Frees resources associated with this ACM Stream
+
+
+
+
+ Returns the Source Buffer. Fill this with data prior to calling convert
+
+
+
+
+ Returns the Destination buffer. This will contain the converted data
+ after a successful call to Convert
+
+
+
+
+ ACM_STREAMCONVERTF_BLOCKALIGN
+
+
+
+
+ ACM_STREAMCONVERTF_START
+
+
+
+
+ ACM_STREAMCONVERTF_END
+
+
+
+
+ ACMSTREAMHEADER_STATUSF_DONE
+
+
+
+
+ ACMSTREAMHEADER_STATUSF_PREPARED
+
+
+
+
+ ACMSTREAMHEADER_STATUSF_INQUEUE
+
+
+
+
+ Interop structure for ACM stream headers.
+ ACMSTREAMHEADER
+ http://msdn.microsoft.com/en-us/library/dd742926%28VS.85%29.aspx
+
+
+
+
+ ACM_STREAMOPENF_QUERY, ACM will be queried to determine whether it supports the given conversion. A conversion stream will not be opened, and no handle will be returned in the phas parameter.
+
+
+
+
+ ACM_STREAMOPENF_ASYNC, Stream conversion should be performed asynchronously. If this flag is specified, the application can use a callback function to be notified when the conversion stream is opened and closed and after each buffer is converted. In addition to using a callback function, an application can examine the fdwStatus member of the ACMSTREAMHEADER structure for the ACMSTREAMHEADER_STATUSF_DONE flag.
+
+
+
+
+ ACM_STREAMOPENF_NONREALTIME, ACM will not consider time constraints when converting the data. By default, the driver will attempt to convert the data in real time. For some formats, specifying this flag might improve the audio quality or other characteristics.
+
+
+
+
+ CALLBACK_TYPEMASK, callback type mask
+
+
+
+
+ CALLBACK_NULL, no callback
+
+
+
+
+ CALLBACK_WINDOW, dwCallback is a HWND
+
+
+
+
+ CALLBACK_TASK, dwCallback is a HTASK
+
+
+
+
+ CALLBACK_FUNCTION, dwCallback is a FARPROC
+
+
+
+
+ CALLBACK_THREAD, thread ID replaces 16 bit task
+
+
+
+
+ CALLBACK_EVENT, dwCallback is an EVENT Handle
+
+
+
+
+ ACM_STREAMSIZEF_SOURCE
+
+
+
+
+ ACM_STREAMSIZEF_DESTINATION
+
+
+
+
+ Summary description for WaveFilter.
+
+
+
+
+ cbStruct
+
+
+
+
+ dwFilterTag
+
+
+
+
+ fdwFilter
+
+
+
+
+ reserved
+
+
+
+
+ Manufacturer codes from mmreg.h
+
+
+
+ Microsoft Corporation
+
+
+ Creative Labs, Inc
+
+
+ Media Vision, Inc.
+
+
+ Fujitsu Corp.
+
+
+ Artisoft, Inc.
+
+
+ Turtle Beach, Inc.
+
+
+ IBM Corporation
+
+
+ Vocaltec LTD.
+
+
+ Roland
+
+
+ DSP Solutions, Inc.
+
+
+ NEC
+
+
+ ATI
+
+
+ Wang Laboratories, Inc
+
+
+ Tandy Corporation
+
+
+ Voyetra
+
+
+ Antex Electronics Corporation
+
+
+ ICL Personal Systems
+
+
+ Intel Corporation
+
+
+ Advanced Gravis
+
+
+ Video Associates Labs, Inc.
+
+
+ InterActive Inc
+
+
+ Yamaha Corporation of America
+
+
+ Everex Systems, Inc
+
+
+ Echo Speech Corporation
+
+
+ Sierra Semiconductor Corp
+
+
+ Computer Aided Technologies
+
+
+ APPS Software International
+
+
+ DSP Group, Inc
+
+
+ microEngineering Labs
+
+
+ Computer Friends, Inc.
+
+
+ ESS Technology
+
+
+ Audio, Inc.
+
+
+ Motorola, Inc.
+
+
+ Canopus, co., Ltd.
+
+
+ Seiko Epson Corporation
+
+
+ Truevision
+
+
+ Aztech Labs, Inc.
+
+
+ Videologic
+
+
+ SCALACS
+
+
+ Korg Inc.
+
+
+ Audio Processing Technology
+
+
+ Integrated Circuit Systems, Inc.
+
+
+ Iterated Systems, Inc.
+
+
+ Metheus
+
+
+ Logitech, Inc.
+
+
+ Winnov, Inc.
+
+
+ NCR Corporation
+
+
+ EXAN
+
+
+ AST Research Inc.
+
+
+ Willow Pond Corporation
+
+
+ Sonic Foundry
+
+
+ Vitec Multimedia
+
+
+ MOSCOM Corporation
+
+
+ Silicon Soft, Inc.
+
+
+ Supermac
+
+
+ Audio Processing Technology
+
+
+ Speech Compression
+
+
+ Ahead, Inc.
+
+
+ Dolby Laboratories
+
+
+ OKI
+
+
+ AuraVision Corporation
+
+
+ Ing C. Olivetti & C., S.p.A.
+
+
+ I/O Magic Corporation
+
+
+ Matsushita Electric Industrial Co., LTD.
+
+
+ Control Resources Limited
+
+
+ Xebec Multimedia Solutions Limited
+
+
+ New Media Corporation
+
+
+ Natural MicroSystems
+
+
+ Lyrrus Inc.
+
+
+ Compusic
+
+
+ OPTi Computers Inc.
+
+
+ Adlib Accessories Inc.
+
+
+ Compaq Computer Corp.
+
+
+ Dialogic Corporation
+
+
+ InSoft, Inc.
+
+
+ M.P. Technologies, Inc.
+
+
+ Weitek
+
+
+ Lernout & Hauspie
+
+
+ Quanta Computer Inc.
+
+
+ Apple Computer, Inc.
+
+
+ Digital Equipment Corporation
+
+
+ Mark of the Unicorn
+
+
+ Workbit Corporation
+
+
+ Ositech Communications Inc.
+
+
+ miro Computer Products AG
+
+
+ Cirrus Logic
+
+
+ ISOLUTION B.V.
+
+
+ Horizons Technology, Inc
+
+
+ Computer Concepts Ltd
+
+
+ Voice Technologies Group, Inc.
+
+
+ Radius
+
+
+ Rockwell International
+
+
+ Co. XYZ for testing
+
+
+ Opcode Systems
+
+
+ Voxware Inc
+
+
+ Northern Telecom Limited
+
+
+ APICOM
+
+
+ Grande Software
+
+
+ ADDX
+
+
+ Wildcat Canyon Software
+
+
+ Rhetorex Inc
+
+
+ Brooktree Corporation
+
+
+ ENSONIQ Corporation
+
+
+ FAST Multimedia AG
+
+
+ NVidia Corporation
+
+
+ OKSORI Co., Ltd.
+
+
+ DiAcoustics, Inc.
+
+
+ Gulbransen, Inc.
+
+
+ Kay Elemetrics, Inc.
+
+
+ Crystal Semiconductor Corporation
+
+
+ Splash Studios
+
+
+ Quarterdeck Corporation
+
+
+ TDK Corporation
+
+
+ Digital Audio Labs, Inc.
+
+
+ Seer Systems, Inc.
+
+
+ PictureTel Corporation
+
+
+ AT&T Microelectronics
+
+
+ Osprey Technologies, Inc.
+
+
+ Mediatrix Peripherals
+
+
+ SounDesignS M.C.S. Ltd.
+
+
+ A.L. Digital Ltd.
+
+
+ Spectrum Signal Processing, Inc.
+
+
+ Electronic Courseware Systems, Inc.
+
+
+ AMD
+
+
+ Core Dynamics
+
+
+ CANAM Computers
+
+
+ Softsound, Ltd.
+
+
+ Norris Communications, Inc.
+
+
+ Danka Data Devices
+
+
+ EuPhonics
+
+
+ Precept Software, Inc.
+
+
+ Crystal Net Corporation
+
+
+ Chromatic Research, Inc
+
+
+ Voice Information Systems, Inc
+
+
+ Vienna Systems
+
+
+ Connectix Corporation
+
+
+ Gadget Labs LLC
+
+
+ Frontier Design Group LLC
+
+
+ Viona Development GmbH
+
+
+ Casio Computer Co., LTD
+
+
+ Diamond Multimedia
+
+
+ S3
+
+
+ Fraunhofer
+
+
+
+ Summary description for MmException.
+
+
+
+
+ Creates a new MmException
+
+ The result returned by the Windows API call
+ The name of the Windows API that failed
+
+
+
+ Helper function to automatically raise an exception on failure
+
+ The result of the API call
+ The API function name
+
+
+
+ Returns the Windows API result
+
+
+
+
+ Windows multimedia error codes from mmsystem.h.
+
+
+
+ no error, MMSYSERR_NOERROR
+
+
+ unspecified error, MMSYSERR_ERROR
+
+
+ device ID out of range, MMSYSERR_BADDEVICEID
+
+
+ driver failed enable, MMSYSERR_NOTENABLED
+
+
+ device already allocated, MMSYSERR_ALLOCATED
+
+
+ device handle is invalid, MMSYSERR_INVALHANDLE
+
+
+ no device driver present, MMSYSERR_NODRIVER
+
+
+ memory allocation error, MMSYSERR_NOMEM
+
+
+ function isn't supported, MMSYSERR_NOTSUPPORTED
+
+
+ error value out of range, MMSYSERR_BADERRNUM
+
+
+ invalid flag passed, MMSYSERR_INVALFLAG
+
+
+ invalid parameter passed, MMSYSERR_INVALPARAM
+
+
+ handle being used simultaneously on another thread (eg callback),MMSYSERR_HANDLEBUSY
+
+
+ specified alias not found, MMSYSERR_INVALIDALIAS
+
+
+ bad registry database, MMSYSERR_BADDB
+
+
+ registry key not found, MMSYSERR_KEYNOTFOUND
+
+
+ registry read error, MMSYSERR_READERROR
+
+
+ registry write error, MMSYSERR_WRITEERROR
+
+
+ registry delete error, MMSYSERR_DELETEERROR
+
+
+ registry value not found, MMSYSERR_VALNOTFOUND
+
+
+ driver does not call DriverCallback, MMSYSERR_NODRIVERCB
+
+
+ more data to be returned, MMSYSERR_MOREDATA
+
+
+ unsupported wave format, WAVERR_BADFORMAT
+
+
+ still something playing, WAVERR_STILLPLAYING
+
+
+ header not prepared, WAVERR_UNPREPARED
+
+
+ device is synchronous, WAVERR_SYNC
+
+
+ Conversion not possible (ACMERR_NOTPOSSIBLE)
+
+
+ Busy (ACMERR_BUSY)
+
+
+ Header Unprepared (ACMERR_UNPREPARED)
+
+
+ Cancelled (ACMERR_CANCELED)
+
+
+ invalid line (MIXERR_INVALLINE)
+
+
+ invalid control (MIXERR_INVALCONTROL)
+
+
+ invalid value (MIXERR_INVALVALUE)
+
+
+
+ WaveHeader interop structure (WAVEHDR)
+ http://msdn.microsoft.com/en-us/library/dd743837%28VS.85%29.aspx
+
+
+
+ pointer to locked data buffer (lpData)
+
+
+ length of data buffer (dwBufferLength)
+
+
+ used for input only (dwBytesRecorded)
+
+
+ for client's use (dwUser)
+
+
+ assorted flags (dwFlags)
+
+
+ loop control counter (dwLoops)
+
+
+ PWaveHdr, reserved for driver (lpNext)
+
+
+ reserved for driver
+
+
+
+ Wave Header Flags enumeration
+
+
+
+
+ WHDR_BEGINLOOP
+ This buffer is the first buffer in a loop. This flag is used only with output buffers.
+
+
+
+
+ WHDR_DONE
+ Set by the device driver to indicate that it is finished with the buffer and is returning it to the application.
+
+
+
+
+ WHDR_ENDLOOP
+ This buffer is the last buffer in a loop. This flag is used only with output buffers.
+
+
+
+
+ WHDR_INQUEUE
+ Set by Windows to indicate that the buffer is queued for playback.
+
+
+
+
+ WHDR_PREPARED
+ Set by Windows to indicate that the buffer has been prepared with the waveInPrepareHeader or waveOutPrepareHeader function.
+
+
+
+
+ WASAPI Loopback Capture
+ based on a contribution from "Pygmy" - http://naudio.codeplex.com/discussions/203605
+
+
+
+
+ Initialises a new instance of the WASAPI capture class
+
+
+
+
+ Initialises a new instance of the WASAPI capture class
+
+ Capture device to use
+
+
+
+ Gets the default audio loopback capture device
+
+ The default audio loopback capture device
+
+
+
+ Specify loopback
+
+
+
+
+ Recording wave format
+
+
+
+
+ Allows recording using the Windows waveIn APIs
+ Events are raised as recorded buffers are made available
+
+
+
+
+ Prepares a Wave input device for recording
+
+
+
+
+ Creates a WaveIn device using the specified window handle for callbacks
+
+ A valid window handle
+
+
+
+ Prepares a Wave input device for recording
+
+
+
+
+ Retrieves the capabilities of a waveIn device
+
+ Device to test
+ The WaveIn device capabilities
+
+
+
+ Called when we get a new buffer of recorded data
+
+
+
+
+ Start recording
+
+
+
+
+ Stop recording
+
+
+
+
+ Dispose pattern
+
+
+
+
+ Microphone Level
+
+
+
+
+ Dispose method
+
+
+
+
+ Indicates recorded data is available
+
+
+
+
+ Indicates that all recorded data has now been received.
+
+
+
+
+ Returns the number of Wave In devices available in the system
+
+
+
+
+ Milliseconds for the buffer. Recommended value is 100ms
+
+
+
+
+ Number of Buffers to use (usually 2 or 3)
+
+
+
+
+ The device number to use
+
+
+
+
+ WaveFormat we are recording in
+
+
+
+
+ WaveInCapabilities structure (based on WAVEINCAPS2 from mmsystem.h)
+ http://msdn.microsoft.com/en-us/library/ms713726(VS.85).aspx
+
+
+
+
+ wMid
+
+
+
+
+ wPid
+
+
+
+
+ vDriverVersion
+
+
+
+
+ Product Name (szPname)
+
+
+
+
+ Supported formats (bit flags) dwFormats
+
+
+
+
+ Supported channels (1 for mono 2 for stereo) (wChannels)
+ Seems to be set to -1 on a lot of devices
+
+
+
+
+ wReserved1
+
+
+
+
+ Checks to see if a given SupportedWaveFormat is supported
+
+ The SupportedWaveFormat
+ true if supported
+
+
+
+ Number of channels supported
+
+
+
+
+ The product name
+
+
+
+
+ The device name Guid (if provided)
+
+
+
+
+ The product name Guid (if provided)
+
+
+
+
+ The manufacturer guid (if provided)
+
+
+
+
+ The device name from the registry if supported
+
+
+
+
+ Event Args for WaveInStream event
+
+
+
+
+ Creates new WaveInEventArgs
+
+
+
+
+ Buffer containing recorded data. Note that it might not be completely
+ full.
+
+
+
+
+ The number of recorded bytes in Buffer.
+
+
+
+
+ MME Wave function interop
+
+
+
+
+ CALLBACK_NULL
+ No callback
+
+
+
+
+ CALLBACK_FUNCTION
+ dwCallback is a FARPROC
+
+
+
+
+ CALLBACK_EVENT
+ dwCallback is an EVENT handle
+
+
+
+
+ CALLBACK_WINDOW
+ dwCallback is a HWND
+
+
+
+
+ CALLBACK_THREAD
+ callback is a thread ID
+
+
+
+
+ WIM_OPEN
+
+
+
+
+ WIM_CLOSE
+
+
+
+
+ WIM_DATA
+
+
+
+
+ WOM_CLOSE
+
+
+
+
+ WOM_DONE
+
+
+
+
+ WOM_OPEN
+
+
+
+
+ WaveOutCapabilities structure (based on WAVEOUTCAPS2 from mmsystem.h)
+ http://msdn.microsoft.com/library/default.asp?url=/library/en-us/multimed/htm/_win32_waveoutcaps_str.asp
+
+
+
+
+ wMid
+
+
+
+
+ wPid
+
+
+
+
+ vDriverVersion
+
+
+
+
+ Product Name (szPname)
+
+
+
+
+ Supported formats (bit flags) dwFormats
+
+
+
+
+ Supported channels (1 for mono 2 for stereo) (wChannels)
+ Seems to be set to -1 on a lot of devices
+
+
+
+
+ wReserved1
+
+
+
+
+ Optional functionality supported by the device
+
+
+
+
+ Checks to see if a given SupportedWaveFormat is supported
+
+ The SupportedWaveFormat
+ true if supported
+
+
+
+ Number of channels supported
+
+
+
+
+ Whether playback control is supported
+
+
+
+
+ The product name
+
+
+
+
+ The device name Guid (if provided)
+
+
+
+
+ The product name Guid (if provided)
+
+
+
+
+ The manufacturer guid (if provided)
+
+
+
+
+ Supported wave formats for WaveOutCapabilities
+
+
+
+
+ 11.025 kHz, Mono, 8-bit
+
+
+
+
+ 11.025 kHz, Stereo, 8-bit
+
+
+
+
+ 11.025 kHz, Mono, 16-bit
+
+
+
+
+ 11.025 kHz, Stereo, 16-bit
+
+
+
+
+ 22.05 kHz, Mono, 8-bit
+
+
+
+
+ 22.05 kHz, Stereo, 8-bit
+
+
+
+
+ 22.05 kHz, Mono, 16-bit
+
+
+
+
+ 22.05 kHz, Stereo, 16-bit
+
+
+
+
+ 44.1 kHz, Mono, 8-bit
+
+
+
+
+ 44.1 kHz, Stereo, 8-bit
+
+
+
+
+ 44.1 kHz, Mono, 16-bit
+
+
+
+
+ 44.1 kHz, Stereo, 16-bit
+
+
+
+
+ 44.1 kHz, Mono, 8-bit
+
+
+
+
+ 44.1 kHz, Stereo, 8-bit
+
+
+
+
+ 44.1 kHz, Mono, 16-bit
+
+
+
+
+ 44.1 kHz, Stereo, 16-bit
+
+
+
+
+ 48 kHz, Mono, 8-bit
+
+
+
+
+ 48 kHz, Stereo, 8-bit
+
+
+
+
+ 48 kHz, Mono, 16-bit
+
+
+
+
+ 48 kHz, Stereo, 16-bit
+
+
+
+
+ 96 kHz, Mono, 8-bit
+
+
+
+
+ 96 kHz, Stereo, 8-bit
+
+
+
+
+ 96 kHz, Mono, 16-bit
+
+
+
+
+ 96 kHz, Stereo, 16-bit
+
+
+
+
+ Flags indicating what features this WaveOut device supports
+
+
+
+ supports pitch control (WAVECAPS_PITCH)
+
+
+ supports playback rate control (WAVECAPS_PLAYBACKRATE)
+
+
+ supports volume control (WAVECAPS_VOLUME)
+
+
+ supports separate left-right volume control (WAVECAPS_LRVOLUME)
+
+
+ (WAVECAPS_SYNC)
+
+
+ (WAVECAPS_SAMPLEACCURATE)
+
+
+
+ Sample provider interface to make WaveChannel32 extensible
+ Still a bit ugly, hence internal at the moment - and might even make these into
+ bit depth converting WaveProviders
+
+
+
+
+ A sample provider mixer, allowing inputs to be added and removed
+
+
+
+
+ Creates a new MixingSampleProvider, with no inputs, but a specified WaveFormat
+
+ The WaveFormat of this mixer. All inputs must be in this format
+
+
+
+ Creates a new MixingSampleProvider, based on the given inputs
+
+ Mixer inputs - must all have the same waveformat, and must
+ all be of the same WaveFormat. There must be at least one input
+
+
+
+ Adds a WaveProvider as a Mixer input.
+ Must be PCM or IEEE float already
+
+ IWaveProvider mixer input
+
+
+
+ Adds a new mixer input
+
+ Mixer input
+
+
+
+ Removes a mixer input
+
+ Mixer input to remove
+
+
+
+ Removes all mixer inputs
+
+
+
+
+ Reads samples from this sample provider
+
+ Sample buffer
+ Offset into sample buffer
+ Number of samples required
+ Number of samples read
+
+
+
+ When set to true, the Read method always returns the number
+ of samples requested, even if there are no inputs, or if the
+ current inputs reach their end. Setting this to true effectively
+ makes this a never-ending sample provider, so take care if you plan
+ to write it out to a file.
+
+
+
+
+ The output WaveFormat of this sample provider
+
+
+
+
+ Converts a mono sample provider to stereo, with a customisable pan strategy
+
+
+
+
+ Initialises a new instance of the PanningSampleProvider
+
+ Source sample provider, must be mono
+
+
+
+ Reads samples from this sample provider
+
+ Sample buffer
+ Offset into sample buffer
+ Number of samples desired
+ Number of samples read
+
+
+
+ Pan value, must be between -1 (left) and 1 (right)
+
+
+
+
+ The pan strategy currently in use
+
+
+
+
+ The WaveFormat of this sample provider
+
+
+
+
+ Pair of floating point values, representing samples or multipliers
+
+
+
+
+ Left value
+
+
+
+
+ Right value
+
+
+
+
+ Required Interface for a Panning Strategy
+
+
+
+
+ Gets the left and right multipliers for a given pan value
+
+ Pan value from -1 to 1
+ Left and right multipliers in a stereo sample pair
+
+
+
+ Simplistic "balance" control - treating the mono input as if it was stereo
+ In the centre, both channels full volume. Opposite channel decays linearly
+ as balance is turned to to one side
+
+
+
+
+ Gets the left and right channel multipliers for this pan value
+
+ Pan value, between -1 and 1
+ Left and right multipliers
+
+
+
+ Square Root Pan, thanks to Yuval Naveh
+
+
+
+
+ Gets the left and right channel multipliers for this pan value
+
+ Pan value, between -1 and 1
+ Left and right multipliers
+
+
+
+ Sinus Pan, thanks to Yuval Naveh
+
+
+
+
+ Gets the left and right channel multipliers for this pan value
+
+ Pan value, between -1 and 1
+ Left and right multipliers
+
+
+
+ Linear Pan
+
+
+
+
+ Gets the left and right channel multipliers for this pan value
+
+ Pan value, between -1 and 1
+ Left and right multipliers
+
+
+
+ GSM 610
+
+
+
+
+ Represents a Wave file format
+
+
+
+ format type
+
+
+ number of channels
+
+
+ sample rate
+
+
+ for buffer estimation
+
+
+ block size of data
+
+
+ number of bits per sample of mono data
+
+
+ number of following bytes
+
+
+
+ Creates a new PCM 44.1Khz stereo 16 bit format
+
+
+
+
+ Creates a new 16 bit wave format with the specified sample
+ rate and channel count
+
+ Sample Rate
+ Number of channels
+
+
+
+ Gets the size of a wave buffer equivalent to the latency in milliseconds.
+
+ The milliseconds.
+
+
+
+
+ Creates a WaveFormat with custom members
+
+ The encoding
+ Sample Rate
+ Number of channels
+ Average Bytes Per Second
+ Block Align
+ Bits Per Sample
+
+
+
+
+ Creates an A-law wave format
+
+ Sample Rate
+ Number of Channels
+ Wave Format
+
+
+
+ Creates a Mu-law wave format
+
+ Sample Rate
+ Number of Channels
+ Wave Format
+
+
+
+ Creates a new PCM format with the specified sample rate, bit depth and channels
+
+
+
+
+ Creates a new 32 bit IEEE floating point wave format
+
+ sample rate
+ number of channels
+
+
+
+ Helper function to retrieve a WaveFormat structure from a pointer
+
+ WaveFormat structure
+
+
+
+
+ Helper function to marshal WaveFormat to an IntPtr
+
+ WaveFormat
+ IntPtr to WaveFormat structure (needs to be freed by callee)
+
+
+
+ Reads in a WaveFormat (with extra data) from a fmt chunk (chunk identifier and
+ length should already have been read)
+
+ Binary reader
+ Format chunk length
+ A WaveFormatExtraData
+
+
+
+ Reads a new WaveFormat object from a stream
+
+ A binary reader that wraps the stream
+
+
+
+ Reports this WaveFormat as a string
+
+ String describing the wave format
+
+
+
+ Compares with another WaveFormat object
+
+ Object to compare to
+ True if the objects are the same
+
+
+
+ Provides a Hashcode for this WaveFormat
+
+ A hashcode
+
+
+
+ Writes this WaveFormat object to a stream
+
+ the output stream
+
+
+
+ Returns the encoding type used
+
+
+
+
+ Returns the number of channels (1=mono,2=stereo etc)
+
+
+
+
+ Returns the sample rate (samples per second)
+
+
+
+
+ Returns the average number of bytes used per second
+
+
+
+
+ Returns the block alignment
+
+
+
+
+ Returns the number of bits per sample (usually 16 or 32, sometimes 24 or 8)
+ Can be 0 for some codecs
+
+
+
+
+ Returns the number of extra bytes used by this waveformat. Often 0,
+ except for compressed formats which store extra data after the WAVEFORMATEX header
+
+
+
+
+ Creates a GSM 610 WaveFormat
+ For now hardcoded to 13kbps
+
+
+
+
+ Writes this structure to a BinaryWriter
+
+
+
+
+ Samples per block
+
+
+
+
+ IMA/DVI ADPCM Wave Format
+ Work in progress
+
+
+
+
+ parameterless constructor for Marshalling
+
+
+
+
+ Creates a new IMA / DVI ADPCM Wave Format
+
+ Sample Rate
+ Number of channels
+ Bits Per Sample
+
+
+
+ MP3 WaveFormat, MPEGLAYER3WAVEFORMAT from mmreg.h
+
+
+
+
+ Wave format ID (wID)
+
+
+
+
+ Padding flags (fdwFlags)
+
+
+
+
+ Block Size (nBlockSize)
+
+
+
+
+ Frames per block (nFramesPerBlock)
+
+
+
+
+ Codec Delay (nCodecDelay)
+
+
+
+
+ Creates a new MP3 WaveFormat
+
+
+
+
+ Wave Format Padding Flags
+
+
+
+
+ MPEGLAYER3_FLAG_PADDING_ISO
+
+
+
+
+ MPEGLAYER3_FLAG_PADDING_ON
+
+
+
+
+ MPEGLAYER3_FLAG_PADDING_OFF
+
+
+
+
+ Wave Format ID
+
+
+
+ MPEGLAYER3_ID_UNKNOWN
+
+
+ MPEGLAYER3_ID_MPEG
+
+
+ MPEGLAYER3_ID_CONSTANTFRAMESIZE
+
+
+
+ DSP Group TrueSpeech
+
+
+
+
+ DSP Group TrueSpeech WaveFormat
+
+
+
+
+ Writes this structure to a BinaryWriter
+
+
+
+
+ Microsoft ADPCM
+ See http://icculus.org/SDL_sound/downloads/external_documentation/wavecomp.htm
+
+
+
+
+ Empty constructor needed for marshalling from a pointer
+
+
+
+
+ Microsoft ADPCM
+
+ Sample Rate
+ Channels
+
+
+
+ Serializes this wave format
+
+ Binary writer
+
+
+
+ String Description of this WaveFormat
+
+
+
+
+ Samples per block
+
+
+
+
+ Number of coefficients
+
+
+
+
+ Coefficients
+
+
+
+
+ Custom marshaller for WaveFormat structures
+
+
+
+
+ Gets the instance of this marshaller
+
+
+
+
+
+
+ Clean up managed data
+
+
+
+
+ Clean up native data
+
+
+
+
+
+ Get native data size
+
+
+
+
+ Marshal managed to native
+
+
+
+
+ Marshal Native to Managed
+
+
+
+
+ Summary description for WaveFormatEncoding.
+
+
+
+ WAVE_FORMAT_UNKNOWN, Microsoft Corporation
+
+
+ WAVE_FORMAT_PCM Microsoft Corporation
+
+
+ WAVE_FORMAT_ADPCM Microsoft Corporation
+
+
+ WAVE_FORMAT_IEEE_FLOAT Microsoft Corporation
+
+
+ WAVE_FORMAT_VSELP Compaq Computer Corp.
+
+
+ WAVE_FORMAT_IBM_CVSD IBM Corporation
+
+
+ WAVE_FORMAT_ALAW Microsoft Corporation
+
+
+ WAVE_FORMAT_MULAW Microsoft Corporation
+
+
+ WAVE_FORMAT_DTS Microsoft Corporation
+
+
+ WAVE_FORMAT_DRM Microsoft Corporation
+
+
+ WAVE_FORMAT_WMAVOICE9
+
+
+ WAVE_FORMAT_OKI_ADPCM OKI
+
+
+ WAVE_FORMAT_DVI_ADPCM Intel Corporation
+
+
+ WAVE_FORMAT_IMA_ADPCM Intel Corporation
+
+
+ WAVE_FORMAT_MEDIASPACE_ADPCM Videologic
+
+
+ WAVE_FORMAT_SIERRA_ADPCM Sierra Semiconductor Corp
+
+
+ WAVE_FORMAT_G723_ADPCM Antex Electronics Corporation
+
+
+ WAVE_FORMAT_DIGISTD DSP Solutions, Inc.
+
+
+ WAVE_FORMAT_DIGIFIX DSP Solutions, Inc.
+
+
+ WAVE_FORMAT_DIALOGIC_OKI_ADPCM Dialogic Corporation
+
+
+ WAVE_FORMAT_MEDIAVISION_ADPCM Media Vision, Inc.
+
+
+ WAVE_FORMAT_CU_CODEC Hewlett-Packard Company
+
+
+ WAVE_FORMAT_YAMAHA_ADPCM Yamaha Corporation of America
+
+
+ WAVE_FORMAT_SONARC Speech Compression
+
+
+ WAVE_FORMAT_DSPGROUP_TRUESPEECH DSP Group, Inc
+
+
+ WAVE_FORMAT_ECHOSC1 Echo Speech Corporation
+
+
+ WAVE_FORMAT_AUDIOFILE_AF36, Virtual Music, Inc.
+
+
+ WAVE_FORMAT_APTX Audio Processing Technology
+
+
+ WAVE_FORMAT_AUDIOFILE_AF10, Virtual Music, Inc.
+
+
+ WAVE_FORMAT_PROSODY_1612, Aculab plc
+
+
+ WAVE_FORMAT_LRC, Merging Technologies S.A.
+
+
+ WAVE_FORMAT_DOLBY_AC2, Dolby Laboratories
+
+
+ WAVE_FORMAT_GSM610, Microsoft Corporation
+
+
+ WAVE_FORMAT_MSNAUDIO, Microsoft Corporation
+
+
+ WAVE_FORMAT_ANTEX_ADPCME, Antex Electronics Corporation
+
+
+ WAVE_FORMAT_CONTROL_RES_VQLPC, Control Resources Limited
+
+
+ WAVE_FORMAT_DIGIREAL, DSP Solutions, Inc.
+
+
+ WAVE_FORMAT_DIGIADPCM, DSP Solutions, Inc.
+
+
+ WAVE_FORMAT_CONTROL_RES_CR10, Control Resources Limited
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ WAVE_FORMAT_MPEG, Microsoft Corporation
+
+
+
+
+
+
+
+
+ WAVE_FORMAT_MPEGLAYER3, ISO/MPEG Layer3 Format Tag
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ WAVE_FORMAT_GSM
+
+
+ WAVE_FORMAT_G729
+
+
+ WAVE_FORMAT_G723
+
+
+ WAVE_FORMAT_ACELP
+
+
+
+ WAVE_FORMAT_RAW_AAC1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Windows Media Audio, WAVE_FORMAT_WMAUDIO2, Microsoft Corporation
+
+
+
+
+ Windows Media Audio Professional WAVE_FORMAT_WMAUDIO3, Microsoft Corporation
+
+
+
+
+ Windows Media Audio Lossless, WAVE_FORMAT_WMAUDIO_LOSSLESS
+
+
+
+
+ Windows Media Audio Professional over SPDIF WAVE_FORMAT_WMASPDIF (0x0164)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Advanced Audio Coding (AAC) audio in Audio Data Transport Stream (ADTS) format.
+ The format block is a WAVEFORMATEX structure with wFormatTag equal to WAVE_FORMAT_MPEG_ADTS_AAC.
+
+
+ The WAVEFORMATEX structure specifies the core AAC-LC sample rate and number of channels,
+ prior to applying spectral band replication (SBR) or parametric stereo (PS) tools, if present.
+ No additional data is required after the WAVEFORMATEX structure.
+
+ http://msdn.microsoft.com/en-us/library/dd317599%28VS.85%29.aspx
+
+
+
+ Source wmCodec.h
+
+
+
+ MPEG-4 audio transport stream with a synchronization layer (LOAS) and a multiplex layer (LATM).
+ The format block is a WAVEFORMATEX structure with wFormatTag equal to WAVE_FORMAT_MPEG_LOAS.
+
+
+ The WAVEFORMATEX structure specifies the core AAC-LC sample rate and number of channels,
+ prior to applying spectral SBR or PS tools, if present.
+ No additional data is required after the WAVEFORMATEX structure.
+
+ http://msdn.microsoft.com/en-us/library/dd317599%28VS.85%29.aspx
+
+
+ NOKIA_MPEG_ADTS_AAC
+ Source wmCodec.h
+
+
+ NOKIA_MPEG_RAW_AAC
+ Source wmCodec.h
+
+
+ VODAFONE_MPEG_ADTS_AAC
+ Source wmCodec.h
+
+
+ VODAFONE_MPEG_RAW_AAC
+ Source wmCodec.h
+
+
+
+ High-Efficiency Advanced Audio Coding (HE-AAC) stream.
+ The format block is an HEAACWAVEFORMAT structure.
+
+ http://msdn.microsoft.com/en-us/library/dd317599%28VS.85%29.aspx
+
+
+ WAVE_FORMAT_DVM
+
+
+ WAVE_FORMAT_VORBIS1 "Og" Original stream compatible
+
+
+ WAVE_FORMAT_VORBIS2 "Pg" Have independent header
+
+
+ WAVE_FORMAT_VORBIS3 "Qg" Have no codebook header
+
+
+ WAVE_FORMAT_VORBIS1P "og" Original stream compatible
+
+
+ WAVE_FORMAT_VORBIS2P "pg" Have independent headere
+
+
+ WAVE_FORMAT_VORBIS3P "qg" Have no codebook header
+
+
+ WAVE_FORMAT_EXTENSIBLE
+
+
+
+
+
+
+ WaveFormatExtensible
+ http://www.microsoft.com/whdc/device/audio/multichaud.mspx
+
+
+
+
+ Parameterless constructor for marshalling
+
+
+
+
+ Creates a new WaveFormatExtensible for PCM or IEEE
+
+
+
+
+ WaveFormatExtensible for PCM or floating point can be awkward to work with
+ This creates a regular WaveFormat structure representing the same audio format
+
+
+
+
+
+ Serialize
+
+
+
+
+
+ String representation
+
+
+
+
+ SubFormat (may be one of AudioMediaSubtypes)
+
+
+
+
+ This class used for marshalling from unmanaged code
+
+
+
+
+ parameterless constructor for marshalling
+
+
+
+
+ Reads this structure from a BinaryReader
+
+
+
+
+ Writes this structure to a BinaryWriter
+
+
+
+
+ Allows the extra data to be read
+
+
+
+
+ The WMA wave format.
+ May not be much use because WMA codec is a DirectShow DMO not an ACM
+
+
+
+
+ This class writes audio data to a .aif file on disk
+
+
+
+
+ Creates an Aiff file by reading all the data from a WaveProvider
+ BEWARE: the WaveProvider MUST return 0 from its Read method when it is finished,
+ or the Aiff File will grow indefinitely.
+
+ The filename to use
+ The source WaveProvider
+
+
+
+ AiffFileWriter that actually writes to a stream
+
+ Stream to be written to
+ Wave format to use
+
+
+
+ Creates a new AiffFileWriter
+
+ The filename to write to
+ The Wave Format of the output data
+
+
+
+ Read is not supported for a AiffFileWriter
+
+
+
+
+ Seek is not supported for a AiffFileWriter
+
+
+
+
+ SetLength is not supported for AiffFileWriter
+
+
+
+
+
+ Appends bytes to the AiffFile (assumes they are already in the correct format)
+
+ the buffer containing the wave data
+ the offset from which to start writing
+ the number of bytes to write
+
+
+
+ Writes a single sample to the Aiff file
+
+ the sample to write (assumed floating point with 1.0f as max value)
+
+
+
+ Writes 32 bit floating point samples to the Aiff file
+ They will be converted to the appropriate bit depth depending on the WaveFormat of the AIF file
+
+ The buffer containing the floating point samples
+ The offset from which to start writing
+ The number of floating point samples to write
+
+
+
+ Writes 16 bit samples to the Aiff file
+
+ The buffer containing the 16 bit samples
+ The offset from which to start writing
+ The number of 16 bit samples to write
+
+
+
+ Ensures data is written to disk
+
+
+
+
+ Actually performs the close,making sure the header contains the correct data
+
+ True if called from Dispose
+
+
+
+ Updates the header with file size information
+
+
+
+
+ Finaliser - should only be called if the user forgot to close this AiffFileWriter
+
+
+
+
+ The aiff file name or null if not applicable
+
+
+
+
+ Number of bytes of audio in the data chunk
+
+
+
+
+ WaveFormat of this aiff file
+
+
+
+
+ Returns false: Cannot read from a AiffFileWriter
+
+
+
+
+ Returns true: Can write to a AiffFileWriter
+
+
+
+
+ Returns false: Cannot seek within a AiffFileWriter
+
+
+
+
+ Gets the Position in the AiffFile (i.e. number of bytes written so far)
+
+
+
+
+ Raised when ASIO data has been recorded.
+ It is important to handle this as quickly as possible as it is in the buffer callback
+
+
+
+
+ Initialises a new instance of AsioAudioAvailableEventArgs
+
+ Pointers to the ASIO buffers for each channel
+ Pointers to the ASIO buffers for each channel
+ Number of samples in each buffer
+ Audio format within each buffer
+
+
+
+ Converts all the recorded audio into a buffer of 32 bit floating point samples, interleaved by channel
+
+ The samples as 32 bit floating point, interleaved
+
+
+
+ Gets as interleaved samples, allocating a float array
+
+ The samples as 32 bit floating point values
+
+
+
+ Pointer to a buffer per input channel
+
+
+
+
+ Pointer to a buffer per output channel
+ Allows you to write directly to the output buffers
+ If you do so, set SamplesPerBuffer = true,
+ and make sure all buffers are written to with valid data
+
+
+
+
+ Set to true if you have written to the output buffers
+ If so, AsioOut will not read from its source
+
+
+
+
+ Number of samples in each buffer
+
+
+
+
+ Audio format within each buffer
+ Most commonly this will be one of, Int32LSB, Int16LSB, Int24LSB or Float32LSB
+
+
+
+
+ ASIO Out Player. New implementation using an internal C# binding.
+
+ This implementation is only supporting Short16Bit and Float32Bit formats and is optimized
+ for 2 outputs channels .
+ SampleRate is supported only if ASIODriver is supporting it
+
+ This implementation is probably the first ASIODriver binding fully implemented in C#!
+
+ Original Contributor: Mark Heath
+ New Contributor to C# binding : Alexandre Mutel - email: alexandre_mutel at yahoo.fr
+
+
+
+
+ Represents the interface to a device that can play a WaveFile
+
+
+
+
+ Begin playback
+
+
+
+
+ Stop playback
+
+
+
+
+ Pause Playback
+
+
+
+
+ Initialise playback
+
+ The waveprovider to be played
+
+
+
+ Current playback state
+
+
+
+
+ The volume 1.0 is full scale
+
+
+
+
+ Indicates that playback has gone into a stopped state due to
+ reaching the end of the input stream or an error has been encountered during playback
+
+
+
+
+ Initializes a new instance of the class with the first
+ available ASIO Driver.
+
+
+
+
+ Initializes a new instance of the class with the driver name.
+
+ Name of the device.
+
+
+
+ Opens an ASIO output device
+
+ Device number (zero based)
+
+
+
+ Releases unmanaged resources and performs other cleanup operations before the
+ is reclaimed by garbage collection.
+
+
+
+
+ Dispose
+
+
+
+
+ Gets the names of the installed ASIO Driver.
+
+ an array of driver names
+
+
+
+ Determines whether ASIO is supported.
+
+
+ true if ASIO is supported; otherwise, false.
+
+
+
+
+ Inits the driver from the asio driver name.
+
+ Name of the driver.
+
+
+
+ Shows the control panel
+
+
+
+
+ Starts playback
+
+
+
+
+ Stops playback
+
+
+
+
+ Pauses playback
+
+
+
+
+ Initialises to play
+
+ Source wave provider
+
+
+
+ Initialises to play, with optional recording
+
+ Source wave provider - set to null for record only
+ Number of channels to record
+ Specify sample rate here if only recording, ignored otherwise
+
+
+
+ driver buffer update callback to fill the wave buffer.
+
+ The input channels.
+ The output channels.
+
+
+
+ Get the input channel name
+
+ channel index (zero based)
+ channel name
+
+
+
+ Get the output channel name
+
+ channel index (zero based)
+ channel name
+
+
+
+ Playback Stopped
+
+
+
+
+ When recording, fires whenever recorded audio is available
+
+
+
+
+ Gets the latency (in ms) of the playback driver
+
+
+
+
+ Playback State
+
+
+
+
+ Driver Name
+
+
+
+
+ The number of output channels we are currently using for playback
+ (Must be less than or equal to DriverOutputChannelCount)
+
+
+
+
+ The number of input channels we are currently recording from
+ (Must be less than or equal to DriverInputChannelCount)
+
+
+
+
+ The maximum number of input channels this ASIO driver supports
+
+
+
+
+ The maximum number of output channels this ASIO driver supports
+
+
+
+
+ By default the first channel on the input WaveProvider is sent to the first ASIO output.
+ This option sends it to the specified channel number.
+ Warning: make sure you don't set it higher than the number of available output channels -
+ the number of source channels.
+ n.b. Future NAudio may modify this
+
+
+
+
+ Input channel offset (used when recording), allowing you to choose to record from just one
+ specific input rather than them all
+
+
+
+
+ Sets the volume (1.0 is unity gain)
+ Not supported for ASIO Out. Set the volume on the input stream instead
+
+
+
+
+ A wave file writer that adds cue support
+
+
+
+
+ This class writes WAV data to a .wav file on disk
+
+
+
+
+ Creates a 16 bit Wave File from an ISampleProvider
+ BEWARE: the source provider must not return data indefinitely
+
+ The filename to write to
+ The source sample provider
+
+
+
+ Creates a Wave file by reading all the data from a WaveProvider
+ BEWARE: the WaveProvider MUST return 0 from its Read method when it is finished,
+ or the Wave File will grow indefinitely.
+
+ The filename to use
+ The source WaveProvider
+
+
+
+ WaveFileWriter that actually writes to a stream
+
+ Stream to be written to
+ Wave format to use
+
+
+
+ Creates a new WaveFileWriter
+
+ The filename to write to
+ The Wave Format of the output data
+
+
+
+ Read is not supported for a WaveFileWriter
+
+
+
+
+ Seek is not supported for a WaveFileWriter
+
+
+
+
+ SetLength is not supported for WaveFileWriter
+
+
+
+
+
+ Appends bytes to the WaveFile (assumes they are already in the correct format)
+
+ the buffer containing the wave data
+ the offset from which to start writing
+ the number of bytes to write
+
+
+
+ Appends bytes to the WaveFile (assumes they are already in the correct format)
+
+ the buffer containing the wave data
+ the offset from which to start writing
+ the number of bytes to write
+
+
+
+ Writes a single sample to the Wave file
+
+ the sample to write (assumed floating point with 1.0f as max value)
+
+
+
+ Writes 32 bit floating point samples to the Wave file
+ They will be converted to the appropriate bit depth depending on the WaveFormat of the WAV file
+
+ The buffer containing the floating point samples
+ The offset from which to start writing
+ The number of floating point samples to write
+
+
+
+ Writes 16 bit samples to the Wave file
+
+ The buffer containing the 16 bit samples
+ The offset from which to start writing
+ The number of 16 bit samples to write
+
+
+
+ Writes 16 bit samples to the Wave file
+
+ The buffer containing the 16 bit samples
+ The offset from which to start writing
+ The number of 16 bit samples to write
+
+
+
+ Ensures data is written to disk
+
+
+
+
+ Actually performs the close,making sure the header contains the correct data
+
+ True if called from Dispose
+
+
+
+ Updates the header with file size information
+
+
+
+
+ Finaliser - should only be called if the user forgot to close this WaveFileWriter
+
+
+
+
+ The wave file name or null if not applicable
+
+
+
+
+ Number of bytes of audio in the data chunk
+
+
+
+
+ WaveFormat of this wave file
+
+
+
+
+ Returns false: Cannot read from a WaveFileWriter
+
+
+
+
+ Returns true: Can write to a WaveFileWriter
+
+
+
+
+ Returns false: Cannot seek within a WaveFileWriter
+
+
+
+
+ Gets the Position in the WaveFile (i.e. number of bytes written so far)
+
+
+
+
+ Writes a wave file, including a cues chunk
+
+
+
+
+ Adds a cue to the Wave file
+
+ Sample position
+ Label text
+
+
+
+ Updates the header, and writes the cues out
+
+
+
+
+ Media Foundation Encoder class allows you to use Media Foundation to encode an IWaveProvider
+ to any supported encoding format
+
+
+
+
+ Queries the available bitrates for a given encoding output type, sample rate and number of channels
+
+ Audio subtype - a value from the AudioSubtypes class
+ The sample rate of the PCM to encode
+ The number of channels of the PCM to encode
+ An array of available bitrates in average bits per second
+
+
+
+ Gets all the available media types for a particular
+
+ Audio subtype - a value from the AudioSubtypes class
+ An array of available media types that can be encoded with this subtype
+
+
+
+ Helper function to simplify encoding Window Media Audio
+ Should be supported on Vista and above (not tested)
+
+ Input provider, must be PCM
+ Output file path, should end with .wma
+ Desired bitrate. Use GetEncodeBitrates to find the possibilities for your input type
+
+
+
+ Helper function to simplify encoding to MP3
+ By default, will only be available on Windows 8 and above
+
+ Input provider, must be PCM
+ Output file path, should end with .mp3
+ Desired bitrate. Use GetEncodeBitrates to find the possibilities for your input type
+
+
+
+ Helper function to simplify encoding to AAC
+ By default, will only be available on Windows 7 and above
+
+ Input provider, must be PCM
+ Output file path, should end with .mp4 (or .aac on Windows 8)
+ Desired bitrate. Use GetEncodeBitrates to find the possibilities for your input type
+
+
+
+ Tries to find the encoding media type with the closest bitrate to that specified
+
+ Audio subtype, a value from AudioSubtypes
+ Your encoder input format (used to check sample rate and channel count)
+ Your desired bitrate
+ The closest media type, or null if none available
+
+
+
+ Creates a new encoder that encodes to the specified output media type
+
+ Desired output media type
+
+
+
+ Encodes a file
+
+ Output filename (container type is deduced from the filename)
+ Input provider (should be PCM, some encoders will also allow IEEE float)
+
+
+
+ Disposes this instance
+
+
+
+
+
+ Disposes this instance
+
+
+
+
+ Finalizer
+
+
+
+
+ Media Type helper class, simplifying working with IMFMediaType
+ (will probably change in the future, to inherit from an attributes class)
+ Currently does not release the COM object, so you must do that yourself
+
+
+
+
+ Wraps an existing IMFMediaType object
+
+ The IMFMediaType object
+
+
+
+ Creates and wraps a new IMFMediaType object
+
+
+
+
+ Creates and wraps a new IMFMediaType object based on a WaveFormat
+
+ WaveFormat
+
+
+
+ Tries to get a UINT32 value, returning a default value if it doesn't exist
+
+ Attribute key
+ Default value
+ Value or default if key doesn't exist
+
+
+
+ The Sample Rate (valid for audio media types)
+
+
+
+
+ The number of Channels (valid for audio media types)
+
+
+
+
+ The number of bits per sample (n.b. not always valid for compressed audio types)
+
+
+
+
+ The average bytes per second (valid for audio media types)
+
+
+
+
+ The Media Subtype. For audio, is a value from the AudioSubtypes class
+
+
+
+
+ The Major type, e.g. audio or video (from the MediaTypes class)
+
+
+
+
+ Access to the actual IMFMediaType object
+ Use to pass to MF APIs or Marshal.ReleaseComObject when you are finished with it
+
+
+
+
+ Stopped Event Args
+
+
+
+
+ Initializes a new instance of StoppedEventArgs
+
+ An exception to report (null if no exception)
+
+
+
+ An exception. Will be null if the playback or record operation stopped
+
+
+
+
+ IWaveBuffer interface use to store wave datas.
+ Data can be manipulated with arrays (,,
+ , ) that are pointing to the same memory buffer.
+ This is a requirement for all subclasses.
+
+ Use the associated Count property based on the type of buffer to get the number of data in the
+ buffer.
+
+ for the standard implementation using C# unions.
+
+
+
+
+ Gets the byte buffer.
+
+ The byte buffer.
+
+
+
+ Gets the float buffer.
+
+ The float buffer.
+
+
+
+ Gets the short buffer.
+
+ The short buffer.
+
+
+
+ Gets the int buffer.
+
+ The int buffer.
+
+
+
+ Gets the max size in bytes of the byte buffer..
+
+ Maximum number of bytes in the buffer.
+
+
+
+ Gets the byte buffer count.
+
+ The byte buffer count.
+
+
+
+ Gets the float buffer count.
+
+ The float buffer count.
+
+
+
+ Gets the short buffer count.
+
+ The short buffer count.
+
+
+
+ Gets the int buffer count.
+
+ The int buffer count.
+
+
+
+ Interface for IWavePlayers that can report position
+
+
+
+
+ Position (in terms of bytes played - does not necessarily)
+
+ Position in bytes
+
+
+
+ Gets a instance indicating the format the hardware is using.
+
+
+
+
+ NativeDirectSoundOut using DirectSound COM interop.
+ Contact author: Alexandre Mutel - alexandre_mutel at yahoo.fr
+ Modified by: Graham "Gee" Plumb
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+ (40ms seems to work under Vista).
+
+ The latency.
+ Selected device
+
+
+
+ Releases unmanaged resources and performs other cleanup operations before the
+ is reclaimed by garbage collection.
+
+
+
+
+ Begin playback
+
+
+
+
+ Stop playback
+
+
+
+
+ Pause Playback
+
+
+
+
+ Gets the current position in bytes from the wave output device.
+ (n.b. this is not the same thing as the position within your reader
+ stream)
+
+ Position in bytes
+
+
+
+ Initialise playback
+
+ The waveprovider to be played
+
+
+
+ Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
+
+
+
+
+ Determines whether the SecondaryBuffer is lost.
+
+
+ true if [is buffer lost]; otherwise, false.
+
+
+
+
+ Convert ms to bytes size according to WaveFormat
+
+ The ms
+ number of byttes
+
+
+
+ Processes the samples in a separate thread.
+
+
+
+
+ Stop playback
+
+
+
+
+ Feeds the SecondaryBuffer with the WaveStream
+
+ number of bytes to feed
+
+
+
+ Instanciate DirectSound from the DLL
+
+ The GUID.
+ The direct sound.
+ The p unk outer.
+
+
+
+ DirectSound default playback device GUID
+
+
+
+
+ DirectSound default capture device GUID
+
+
+
+
+ DirectSound default device for voice playback
+
+
+
+
+ DirectSound default device for voice capture
+
+
+
+
+ The DirectSoundEnumerate function enumerates the DirectSound drivers installed in the system.
+
+ callback function
+ User context
+
+
+
+ Gets the HANDLE of the desktop window.
+
+ HANDLE of the Desktop window
+
+
+
+ Playback Stopped
+
+
+
+
+ Gets the DirectSound output devices in the system
+
+
+
+
+ Gets the current position from the wave output device.
+
+
+
+
+ Current playback state
+
+
+
+
+
+ The volume 1.0 is full scale
+
+
+
+
+
+ IDirectSound interface
+
+
+
+
+ IDirectSoundBuffer interface
+
+
+
+
+ IDirectSoundNotify interface
+
+
+
+
+ The DSEnumCallback function is an application-defined callback function that enumerates the DirectSound drivers.
+ The system calls this function in response to the application's call to the DirectSoundEnumerate or DirectSoundCaptureEnumerate function.
+
+ Address of the GUID that identifies the device being enumerated, or NULL for the primary device. This value can be passed to the DirectSoundCreate8 or DirectSoundCaptureCreate8 function to create a device object for that driver.
+ Address of a null-terminated string that provides a textual description of the DirectSound device.
+ Address of a null-terminated string that specifies the module name of the DirectSound driver corresponding to this device.
+ Address of application-defined data. This is the pointer passed to DirectSoundEnumerate or DirectSoundCaptureEnumerate as the lpContext parameter.
+ Returns TRUE to continue enumerating drivers, or FALSE to stop.
+
+
+
+ Class for enumerating DirectSound devices
+
+
+
+
+ The device identifier
+
+
+
+
+ Device description
+
+
+
+
+ Device module name
+
+
+
+
+ Playback State
+
+
+
+
+ Stopped
+
+
+
+
+ Playing
+
+
+
+
+ Paused
+
+
+
+
+ Support for playback using Wasapi
+
+
+
+
+ WASAPI Out using default audio endpoint
+
+ ShareMode - shared or exclusive
+ Desired latency in milliseconds
+
+
+
+ WASAPI Out using default audio endpoint
+
+ ShareMode - shared or exclusive
+ true if sync is done with event. false use sleep.
+ Desired latency in milliseconds
+
+
+
+ Creates a new WASAPI Output
+
+ Device to use
+
+ true if sync is done with event. false use sleep.
+
+
+
+
+ Gets the current position in bytes from the wave output device.
+ (n.b. this is not the same thing as the position within your reader
+ stream)
+
+ Position in bytes
+
+
+
+ Begin Playback
+
+
+
+
+ Stop playback and flush buffers
+
+
+
+
+ Stop playback without flushing buffers
+
+
+
+
+ Initialize for playing the specified wave stream
+
+ IWaveProvider to play
+
+
+
+ Dispose
+
+
+
+
+ Playback Stopped
+
+
+
+
+ Gets a instance indicating the format the hardware is using.
+
+
+
+
+ Playback State
+
+
+
+
+ Volume
+
+
+
+
+ Retrieve the AudioStreamVolume object for this audio stream
+
+
+ This returns the AudioStreamVolume object ONLY for shared audio streams.
+
+
+ This is thrown when an exclusive audio stream is being used.
+
+
+
+
+ WaveBuffer class use to store wave datas. Data can be manipulated with arrays
+ (,,, ) that are pointing to the
+ same memory buffer. Use the associated Count property based on the type of buffer to get the number of
+ data in the buffer.
+ Implicit casting is now supported to float[], byte[], int[], short[].
+ You must not use Length on returned arrays.
+
+ n.b. FieldOffset is 8 now to allow it to work natively on 64 bit
+
+
+
+
+ Number of Bytes
+
+
+
+
+ Initializes a new instance of the class.
+
+ The number of bytes. The size of the final buffer will be aligned on 4 Bytes (upper bound)
+
+
+
+ Initializes a new instance of the class binded to a specific byte buffer.
+
+ A byte buffer to bound the WaveBuffer to.
+
+
+
+ Binds this WaveBuffer instance to a specific byte buffer.
+
+ A byte buffer to bound the WaveBuffer to.
+
+
+
+ Performs an implicit conversion from to .
+
+ The wave buffer.
+ The result of the conversion.
+
+
+
+ Performs an implicit conversion from to .
+
+ The wave buffer.
+ The result of the conversion.
+
+
+
+ Performs an implicit conversion from to .
+
+ The wave buffer.
+ The result of the conversion.
+
+
+
+ Performs an implicit conversion from to .
+
+ The wave buffer.
+ The result of the conversion.
+
+
+
+ Clears the associated buffer.
+
+
+
+
+ Copy this WaveBuffer to a destination buffer up to ByteBufferCount bytes.
+
+
+
+
+ Checks the validity of the count parameters.
+
+ Name of the arg.
+ The value.
+ The size of value.
+
+
+
+ Gets the byte buffer.
+
+ The byte buffer.
+
+
+
+ Gets the float buffer.
+
+ The float buffer.
+
+
+
+ Gets the short buffer.
+
+ The short buffer.
+
+
+
+ Gets the int buffer.
+
+ The int buffer.
+
+
+
+ Gets the max size in bytes of the byte buffer..
+
+ Maximum number of bytes in the buffer.
+
+
+
+ Gets or sets the byte buffer count.
+
+ The byte buffer count.
+
+
+
+ Gets or sets the float buffer count.
+
+ The float buffer count.
+
+
+
+ Gets or sets the short buffer count.
+
+ The short buffer count.
+
+
+
+ Gets or sets the int buffer count.
+
+ The int buffer count.
+
+
+
+ Wave Callback Info
+
+
+
+
+ Sets up a new WaveCallbackInfo for function callbacks
+
+
+
+
+ Sets up a new WaveCallbackInfo to use a New Window
+ IMPORTANT: only use this on the GUI thread
+
+
+
+
+ Sets up a new WaveCallbackInfo to use an existing window
+ IMPORTANT: only use this on the GUI thread
+
+
+
+
+ Callback Strategy
+
+
+
+
+ Window Handle (if applicable)
+
+
+
+
+ Wave Callback Strategy
+
+
+
+
+ Use a function
+
+
+
+
+ Create a new window (should only be done if on GUI thread)
+
+
+
+
+ Use an existing window handle
+
+
+
+
+ Use an event handle
+
+
+
+
+ Represents a wave out device
+
+
+
+
+ Retrieves the capabilities of a waveOut device
+
+ Device to test
+ The WaveOut device capabilities
+
+
+
+ Creates a default WaveOut device
+ Will use window callbacks if called from a GUI thread, otherwise function
+ callbacks
+
+
+
+
+ Creates a WaveOut device using the specified window handle for callbacks
+
+ A valid window handle
+
+
+
+ Opens a WaveOut device
+
+
+
+
+ Initialises the WaveOut device
+
+ WaveProvider to play
+
+
+
+ Start playing the audio from the WaveStream
+
+
+
+
+ Pause the audio
+
+
+
+
+ Resume playing after a pause from the same position
+
+
+
+
+ Stop and reset the WaveOut device
+
+
+
+
+ Gets the current position in bytes from the wave output device.
+ (n.b. this is not the same thing as the position within your reader
+ stream - it calls directly into waveOutGetPosition)
+
+ Position in bytes
+
+
+
+ Closes this WaveOut device
+
+
+
+
+ Closes the WaveOut device and disposes of buffers
+
+ True if called from Dispose
+
+
+
+ Finalizer. Only called when user forgets to call Dispose
+
+
+
+
+ Indicates playback has stopped automatically
+
+
+
+
+ Returns the number of Wave Out devices available in the system
+
+
+
+
+ Gets or sets the desired latency in milliseconds
+ Should be set before a call to Init
+
+
+
+
+ Gets or sets the number of buffers used
+ Should be set before a call to Init
+
+
+
+
+ Gets or sets the device number
+ Should be set before a call to Init
+ This must be between 0 and DeviceCount - 1.
+
+
+
+
+ Gets a instance indicating the format the hardware is using.
+
+
+
+
+ Playback State
+
+
+
+
+ Volume for this device 1.0 is full scale
+
+
+
+
+ Alternative WaveOut class, making use of the Event callback
+
+
+
+
+ Opens a WaveOut device
+
+
+
+
+ Initialises the WaveOut device
+
+ WaveProvider to play
+
+
+
+ Start playing the audio from the WaveStream
+
+
+
+
+ Pause the audio
+
+
+
+
+ Resume playing after a pause from the same position
+
+
+
+
+ Stop and reset the WaveOut device
+
+
+
+
+ Gets the current position in bytes from the wave output device.
+ (n.b. this is not the same thing as the position within your reader
+ stream - it calls directly into waveOutGetPosition)
+
+ Position in bytes
+
+
+
+ Closes this WaveOut device
+
+
+
+
+ Closes the WaveOut device and disposes of buffers
+
+ True if called from Dispose
+
+
+
+ Finalizer. Only called when user forgets to call Dispose
+
+
+
+
+ Indicates playback has stopped automatically
+
+
+
+
+ Gets or sets the desired latency in milliseconds
+ Should be set before a call to Init
+
+
+
+
+ Gets or sets the number of buffers used
+ Should be set before a call to Init
+
+
+
+
+ Gets or sets the device number
+ Should be set before a call to Init
+ This must be between 0 and DeviceCount - 1.
+
+
+
+
+ Gets a instance indicating the format the hardware is using.
+
+
+
+
+ Playback State
+
+
+
+
+ Obsolete property
+
+
+
+
+ Simple SampleProvider that passes through audio unchanged and raises
+ an event every n samples with the maximum sample value from the period
+ for metering purposes
+
+
+
+
+ Initialises a new instance of MeteringSampleProvider that raises 10 stream volume
+ events per second
+
+ Source sample provider
+
+
+
+ Initialises a new instance of MeteringSampleProvider
+
+ source sampler provider
+ Number of samples between notifications
+
+
+
+ Reads samples from this Sample Provider
+
+ Sample buffer
+ Offset into sample buffer
+ Number of samples required
+ Number of samples read
+
+
+
+ Number of Samples per notification
+
+
+
+
+ Raised periodically to inform the user of the max volume
+
+
+
+
+ The WaveFormat of this sample provider
+
+
+
+
+ Event args for aggregated stream volume
+
+
+
+
+ Max sample values array (one for each channel)
+
+
+
+
+ Simple class that raises an event on every sample
+
+
+
+
+ An interface for WaveStreams which can report notification of individual samples
+
+
+
+
+ A sample has been detected
+
+
+
+
+ Initializes a new instance of NotifyingSampleProvider
+
+ Source Sample Provider
+
+
+
+ Reads samples from this sample provider
+
+ Sample buffer
+ Offset into sample buffer
+ Number of samples desired
+ Number of samples read
+
+
+
+ WaveFormat
+
+
+
+
+ Sample notifier
+
+
+
+
+ Very simple sample provider supporting adjustable gain
+
+
+
+
+ Initializes a new instance of VolumeSampleProvider
+
+ Source Sample Provider
+
+
+
+ Reads samples from this sample provider
+
+ Sample buffer
+ Offset into sample buffer
+ Number of samples desired
+ Number of samples read
+
+
+
+ WaveFormat
+
+
+
+
+ Allows adjusting the volume, 1.0f = full volume
+
+
+
+
+ Helper class for when you need to convert back to an IWaveProvider from
+ an ISampleProvider. Keeps it as IEEE float
+
+
+
+
+ Initializes a new instance of the WaveProviderFloatToWaveProvider class
+
+ Source wave provider
+
+
+
+ Reads from this provider
+
+
+
+
+ The waveformat of this WaveProvider (same as the source)
+
+
+
+
+ Provides a buffered store of samples
+ Read method will return queued samples or fill buffer with zeroes
+ Now backed by a circular buffer
+
+
+
+
+ Creates a new buffered WaveProvider
+
+ WaveFormat
+
+
+
+ Adds samples. Takes a copy of buffer, so that buffer can be reused if necessary
+
+
+
+
+ Reads from this WaveProvider
+ Will always return count bytes, since we will zero-fill the buffer if not enough available
+
+
+
+
+ Discards all audio from the buffer
+
+
+
+
+ Buffer length in bytes
+
+
+
+
+ Buffer duration
+
+
+
+
+ If true, when the buffer is full, start throwing away data
+ if false, AddSamples will throw an exception when buffer is full
+
+
+
+
+ The number of buffered bytes
+
+
+
+
+ Buffered Duration
+
+
+
+
+ Gets the WaveFormat
+
+
+
+
+ No nonsense mono to stereo provider, no volume adjustment,
+ just copies input to left and right.
+
+
+
+
+ Initializes a new instance of MonoToStereoSampleProvider
+
+ Source sample provider
+
+
+
+ Reads samples from this provider
+
+ Sample buffer
+ Offset into sample buffer
+ Number of samples required
+ Number of samples read
+
+
+
+ WaveFormat of this provider
+
+
+
+
+ The Media Foundation Resampler Transform
+
+
+
+
+ An abstract base class for simplifying working with Media Foundation Transforms
+ You need to override the method that actually creates and configures the transform
+
+
+
+
+ The Source Provider
+
+
+
+
+ The Output WaveFormat
+
+
+
+
+ Constructs a new MediaFoundationTransform wrapper
+ Will read one second at a time
+
+ The source provider for input data to the transform
+ The desired output format
+
+
+
+ To be implemented by overriding classes. Create the transform object, set up its input and output types,
+ and configure any custom properties in here
+
+ An object implementing IMFTrasform
+
+
+
+ Disposes this MediaFoundation transform
+
+
+
+
+ Disposes this Media Foundation Transform
+
+
+
+
+ Destructor
+
+
+
+
+ Reads data out of the source, passing it through the transform
+
+ Output buffer
+ Offset within buffer to write to
+ Desired byte count
+ Number of bytes read
+
+
+
+ Attempts to read from the transform
+ Some useful info here:
+ http://msdn.microsoft.com/en-gb/library/windows/desktop/aa965264%28v=vs.85%29.aspx#process_data
+
+
+
+
+
+ Indicate that the source has been repositioned and completely drain out the transforms buffers
+
+
+
+
+ The output WaveFormat of this Media Foundation Transform
+
+
+
+
+ Creates the Media Foundation Resampler, allowing modifying of sample rate, bit depth and channel count
+
+ Source provider, must be PCM
+ Output format, must also be PCM
+
+
+
+ Creates a resampler with a specified target output sample rate
+
+ Source provider
+ Output sample rate
+
+
+
+ Creates and configures the actual Resampler transform
+
+ A newly created and configured resampler MFT
+
+
+
+ Disposes this resampler
+
+
+
+
+ Gets or sets the Resampler quality. n.b. set the quality before starting to resample.
+ 1 is lowest quality (linear interpolation) and 60 is best quality
+
+
+
+
+ WaveProvider that can mix together multiple 32 bit floating point input provider
+ All channels must have the same number of inputs and same sample rate
+ n.b. Work in Progress - not tested yet
+
+
+
+
+ Creates a new MixingWaveProvider32
+
+
+
+
+ Creates a new 32 bit MixingWaveProvider32
+
+ inputs - must all have the same format.
+ Thrown if the input streams are not 32 bit floating point,
+ or if they have different formats to each other
+
+
+
+ Add a new input to the mixer
+
+ The wave input to add
+
+
+
+ Remove an input from the mixer
+
+ waveProvider to remove
+
+
+
+ Reads bytes from this wave stream
+
+ buffer to read into
+ offset into buffer
+ number of bytes required
+ Number of bytes read.
+ Thrown if an invalid number of bytes requested
+
+
+
+ Actually performs the mixing
+
+
+
+
+ The number of inputs to this mixer
+
+
+
+
+
+
+
+
+
+ Allows any number of inputs to be patched to outputs
+ Uses could include swapping left and right channels, turning mono into stereo,
+ feeding different input sources to different soundcard outputs etc
+
+
+
+
+ Creates a multiplexing wave provider, allowing re-patching of input channels to different
+ output channels
+
+ Input wave providers. Must all be of the same format, but can have any number of channels
+ Desired number of output channels.
+
+
+
+ persistent temporary buffer to prevent creating work for garbage collector
+
+
+
+
+ Reads data from this WaveProvider
+
+ Buffer to be filled with sample data
+ Offset to write to within buffer, usually 0
+ Number of bytes required
+ Number of bytes read
+
+
+
+ Connects a specified input channel to an output channel
+
+ Input Channel index (zero based). Must be less than InputChannelCount
+ Output Channel index (zero based). Must be less than OutputChannelCount
+
+
+
+ The WaveFormat of this WaveProvider
+
+
+
+
+ The number of input channels. Note that this is not the same as the number of input wave providers. If you pass in
+ one stereo and one mono input provider, the number of input channels is three.
+
+
+
+
+ The number of output channels, as specified in the constructor.
+
+
+
+
+ Takes a stereo 16 bit input and turns it mono, allowing you to select left or right channel only or mix them together
+
+
+
+
+ Creates a new mono waveprovider based on a stereo input
+
+ Stereo 16 bit PCM input
+
+
+
+ Reads bytes from this WaveProvider
+
+
+
+
+ 1.0 to mix the mono source entirely to the left channel
+
+
+
+
+ 1.0 to mix the mono source entirely to the right channel
+
+
+
+
+ Output Wave Format
+
+
+
+
+ Converts from mono to stereo, allowing freedom to route all, some, or none of the incoming signal to left or right channels
+
+
+
+
+ Creates a new stereo waveprovider based on a mono input
+
+ Mono 16 bit PCM input
+
+
+
+ Reads bytes from this WaveProvider
+
+
+
+
+ 1.0 to copy the mono stream to the left channel without adjusting volume
+
+
+
+
+ 1.0 to copy the mono stream to the right channel without adjusting volume
+
+
+
+
+ Output Wave Format
+
+
+
+
+ Helper class allowing us to modify the volume of a 16 bit stream without converting to IEEE float
+
+
+
+
+ Constructs a new VolumeWaveProvider16
+
+ Source provider, must be 16 bit PCM
+
+
+
+ Read bytes from this WaveProvider
+
+ Buffer to read into
+ Offset within buffer to read to
+ Bytes desired
+ Bytes read
+
+
+
+ Gets or sets volume.
+ 1.0 is full scale, 0.0 is silence, anything over 1.0 will amplify but potentially clip
+
+
+
+
+ WaveFormat of this WaveProvider
+
+
+
+
+ Converts IEEE float to 16 bit PCM, optionally clipping and adjusting volume along the way
+
+
+
+
+ Creates a new WaveFloatTo16Provider
+
+ the source provider
+
+
+
+ Reads bytes from this wave stream
+
+ The destination buffer
+ Offset into the destination buffer
+ Number of bytes read
+ Number of bytes read.
+
+
+
+
+
+
+
+
+ Volume of this channel. 1.0 = full scale
+
+
+
+
+ Converts 16 bit PCM to IEEE float, optionally adjusting volume along the way
+
+
+
+
+ Creates a new Wave16toFloatProvider
+
+ the source provider
+
+
+
+ Reads bytes from this wave stream
+
+ The destination buffer
+ Offset into the destination buffer
+ Number of bytes read
+ Number of bytes read.
+
+
+
+
+
+
+
+
+ Volume of this channel. 1.0 = full scale
+
+
+
+
+ Buffered WaveProvider taking source data from WaveIn
+
+
+
+
+ Creates a new WaveInProvider
+ n.b. Should make sure the WaveFormat is set correctly on IWaveIn before calling
+
+ The source of wave data
+
+
+
+ Reads data from the WaveInProvider
+
+
+
+
+ The WaveFormat
+
+
+
+
+ Base class for creating a 16 bit wave provider
+
+
+
+
+ Initializes a new instance of the WaveProvider16 class
+ defaulting to 44.1kHz mono
+
+
+
+
+ Initializes a new instance of the WaveProvider16 class with the specified
+ sample rate and number of channels
+
+
+
+
+ Allows you to specify the sample rate and channels for this WaveProvider
+ (should be initialised before you pass it to a wave player)
+
+
+
+
+ Implements the Read method of IWaveProvider by delegating to the abstract
+ Read method taking a short array
+
+
+
+
+ Method to override in derived classes
+ Supply the requested number of samples into the buffer
+
+
+
+
+ The Wave Format
+
+
+
+
+ Base class for creating a 32 bit floating point wave provider
+ Can also be used as a base class for an ISampleProvider that can
+ be plugged straight into anything requiring an IWaveProvider
+
+
+
+
+ Initializes a new instance of the WaveProvider32 class
+ defaulting to 44.1kHz mono
+
+
+
+
+ Initializes a new instance of the WaveProvider32 class with the specified
+ sample rate and number of channels
+
+
+
+
+ Allows you to specify the sample rate and channels for this WaveProvider
+ (should be initialised before you pass it to a wave player)
+
+
+
+
+ Implements the Read method of IWaveProvider by delegating to the abstract
+ Read method taking a float array
+
+
+
+
+ Method to override in derived classes
+ Supply the requested number of samples into the buffer
+
+
+
+
+ The Wave Format
+
+
+
+
+ Helper class turning an already 32 bit floating point IWaveProvider
+ into an ISampleProvider - hopefully not needed for most applications
+
+
+
+
+ Initializes a new instance of the WaveToSampleProvider class
+
+ Source wave provider, must be IEEE float
+
+
+
+ Reads from this provider
+
+
+
+
+ Utility class to intercept audio from an IWaveProvider and
+ save it to disk
+
+
+
+
+ Constructs a new WaveRecorder
+
+ The location to write the WAV file to
+ The Source Wave Provider
+
+
+
+ Read simply returns what the source returns, but writes to disk along the way
+
+
+
+
+ Closes the WAV file
+
+
+
+
+ The WaveFormat
+
+
+
+ A read-only stream of AIFF data based on an aiff file
+ with an associated WaveFormat
+ originally contributed to NAudio by Giawa
+
+
+
+
+ Base class for all WaveStream classes. Derives from stream.
+
+
+
+
+ Flush does not need to do anything
+ See
+
+
+
+
+ An alternative way of repositioning.
+ See
+
+
+
+
+ Sets the length of the WaveStream. Not Supported.
+
+
+
+
+
+ Writes to the WaveStream. Not Supported.
+
+
+
+
+ Moves forward or backwards the specified number of seconds in the stream
+
+ Number of seconds to move, can be negative
+
+
+
+ Whether the WaveStream has non-zero sample data at the current position for the
+ specified count
+
+ Number of bytes to read
+
+
+
+ Retrieves the WaveFormat for this stream
+
+
+
+
+ We can read from this stream
+
+
+
+
+ We can seek within this stream
+
+
+
+
+ We can't write to this stream
+
+
+
+
+ The block alignment for this wavestream. Do not modify the Position
+ to anything that is not a whole multiple of this value
+
+
+
+
+ The current position in the stream in Time format
+
+
+
+
+ Total length in real-time of the stream (may be an estimate for compressed files)
+
+
+
+ Supports opening a AIF file
+ The AIF is of similar nastiness to the WAV format.
+ This supports basic reading of uncompressed PCM AIF files,
+ with 8, 16, 24 and 32 bit PCM data.
+
+
+
+
+ Creates an Aiff File Reader based on an input stream
+
+ The input stream containing a AIF file including header
+
+
+
+ Ensures valid AIFF header and then finds data offset.
+
+ The stream, positioned at the start of audio data
+ The format found
+ The position of the data chunk
+ The length of the data chunk
+ Additional chunks found
+
+
+
+ Cleans up the resources associated with this AiffFileReader
+
+
+
+
+ Reads bytes from the AIFF File
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Number of Samples (if possible to calculate)
+
+
+
+
+ Position in the AIFF file
+
+
+
+
+
+ AIFF Chunk
+
+
+
+
+ Chunk Name
+
+
+
+
+ Chunk Length
+
+
+
+
+ Chunk start
+
+
+
+
+ Creates a new AIFF Chunk
+
+
+
+
+ AudioFileReader simplifies opening an audio file in NAudio
+ Simply pass in the filename, and it will attempt to open the
+ file and set up a conversion path that turns into PCM IEEE float.
+ ACM codecs will be used for conversion.
+ It provides a volume property and implements both WaveStream and
+ ISampleProvider, making it possibly the only stage in your audio
+ pipeline necessary for simple playback scenarios
+
+
+
+
+ Initializes a new instance of AudioFileReader
+
+ The file to open
+
+
+
+ Creates the reader stream, supporting all filetypes in the core NAudio library,
+ and ensuring we are in PCM format
+
+ File Name
+
+
+
+ Reads from this wave stream
+
+ Audio buffer
+ Offset into buffer
+ Number of bytes required
+ Number of bytes read
+
+
+
+ Reads audio from this sample provider
+
+ Sample buffer
+ Offset into sample buffer
+ Number of samples required
+ Number of samples read
+
+
+
+ Helper to convert source to dest bytes
+
+
+
+
+ Helper to convert dest to source bytes
+
+
+
+
+ Disposes this AudioFileReader
+
+ True if called from Dispose
+
+
+
+ WaveFormat of this stream
+
+
+
+
+ Length of this stream (in bytes)
+
+
+
+
+ Position of this stream (in bytes)
+
+
+
+
+ Gets or Sets the Volume of this AudioFileReader. 1.0f is full volume
+
+
+
+
+ Helper stream that lets us read from compressed audio files with large block alignment
+ as though we could read any amount and reposition anywhere
+
+
+
+
+ Creates a new BlockAlignReductionStream
+
+ the input stream
+
+
+
+ Disposes this WaveStream
+
+
+
+
+ Reads data from this stream
+
+
+
+
+
+
+
+
+ Block alignment of this stream
+
+
+
+
+ Wave Format
+
+
+
+
+ Length of this Stream
+
+
+
+
+ Current position within stream
+
+
+
+
+ Holds information on a cue: a labeled position within a Wave file
+
+
+
+
+ Creates a Cue based on a sample position and label
+
+
+
+
+
+
+ Cue position in samples
+
+
+
+
+ Label of the cue
+
+
+
+
+ Holds a list of cues
+
+
+ The specs for reading and writing cues from the cue and list RIFF chunks
+ are from http://www.sonicspot.com/guide/wavefiles.html and http://www.wotsit.org/
+ ------------------------------
+ The cues are stored like this:
+ ------------------------------
+ struct CuePoint
+ {
+ Int32 dwIdentifier;
+ Int32 dwPosition;
+ Int32 fccChunk;
+ Int32 dwChunkStart;
+ Int32 dwBlockStart;
+ Int32 dwSampleOffset;
+ }
+
+ struct CueChunk
+ {
+ Int32 chunkID;
+ Int32 chunkSize;
+ Int32 dwCuePoints;
+ CuePoint[] points;
+ }
+ ------------------------------
+ Labels look like this:
+ ------------------------------
+ struct ListHeader
+ {
+ Int32 listID; /* 'list' */
+ Int32 chunkSize; /* includes the Type ID below */
+ Int32 typeID; /* 'adtl' */
+ }
+
+ struct LabelChunk
+ {
+ Int32 chunkID;
+ Int32 chunkSize;
+ Int32 dwIdentifier;
+ Char[] dwText; /* Encoded with extended ASCII */
+ } LabelChunk;
+
+
+
+
+ Creates an empty cue list
+
+
+
+
+ Adds an item to the list
+
+ Cue
+
+
+
+ Creates a cue list from the cue RIFF chunk and the list RIFF chunk
+
+ The data contained in the cue chunk
+ The data contained in the list chunk
+
+
+
+ Gets the cues as the concatenated cue and list RIFF chunks.
+
+ RIFF chunks containing the cue data
+
+
+
+ Checks if the cue and list chunks exist and if so, creates a cue list
+
+
+
+
+ Gets sample positions for the embedded cues
+
+ Array containing the cue positions
+
+
+
+ Gets labels for the embedded cues
+
+ Array containing the labels
+
+
+
+ Number of cues
+
+
+
+
+ Accesses the cue at the specified index
+
+
+
+
+
+
+ A wave file reader supporting cue reading
+
+
+
+ This class supports the reading of WAV files,
+ providing a repositionable WaveStream that returns the raw data
+ contained in the WAV file
+
+
+
+ Supports opening a WAV file
+ The WAV file format is a real mess, but we will only
+ support the basic WAV file format which actually covers the vast
+ majority of WAV files out there. For more WAV file format information
+ visit www.wotsit.org. If you have a WAV file that can't be read by
+ this class, email it to the NAudio project and we will probably
+ fix this reader to support it
+
+
+
+
+ Creates a Wave File Reader based on an input stream
+
+ The input stream containing a WAV file including header
+
+
+
+ Gets the data for the specified chunk
+
+
+
+
+ Cleans up the resources associated with this WaveFileReader
+
+
+
+
+ Reads bytes from the Wave File
+
+
+
+
+
+ Attempts to read the next sample or group of samples as floating point normalised into the range -1.0f to 1.0f
+
+ An array of samples, 1 for mono, 2 for stereo etc. Null indicates end of file reached
+
+
+
+
+ Attempts to read a sample into a float. n.b. only applicable for uncompressed formats
+ Will normalise the value read into the range -1.0f to 1.0f if it comes from a PCM encoding
+
+ False if the end of the WAV data chunk was reached
+
+
+
+ Gets a list of the additional chunks found in this file
+
+
+
+
+
+
+
+
+
+ This is the length of audio data contained in this WAV file, in bytes
+ (i.e. the byte length of the data chunk, not the length of the WAV file itself)
+
+
+
+
+
+ Number of Samples (if possible to calculate)
+ This currently does not take into account number of channels, so
+ divide again by number of channels if you want the number of
+ audio 'frames'
+
+
+
+
+ Position in the WAV data chunk.
+
+
+
+
+
+ Loads a wavefile and supports reading cues
+
+
+
+
+
+ Cue List (can be null if cues not present)
+
+
+
+
+ Sample event arguments
+
+
+
+
+ Constructor
+
+
+
+
+ Left sample
+
+
+
+
+ Right sample
+
+
+
+
+ Class for reading any file that Media Foundation can play
+ Will only work in Windows Vista and above
+ Automatically converts to PCM
+ If it is a video file with multiple audio streams, it will pick out the first audio stream
+
+
+
+
+ Creates a new MediaFoundationReader based on the supplied file
+
+ Filename (can also be a URL e.g. http:// mms:// file://)
+
+
+
+ Creates a new MediaFoundationReader based on the supplied file
+
+ Filename
+ Advanced settings
+
+
+
+ Creates the reader (overridable by )
+
+
+
+
+ Reads from this wave stream
+
+ Buffer to read into
+ Offset in buffer
+ Bytes required
+ Number of bytes read; 0 indicates end of stream
+
+
+
+ Cleans up after finishing with this reader
+
+ true if called from Dispose
+
+
+
+ WaveFormat of this stream (n.b. this is after converting to PCM)
+
+
+
+
+ The bytesRequired of this stream in bytes (n.b may not be accurate)
+
+
+
+
+ Current position within this stream
+
+
+
+
+ WaveFormat has changed
+
+
+
+
+ Allows customisation of this reader class
+
+
+
+
+ Sets up the default settings for MediaFoundationReader
+
+
+
+
+ Allows us to request IEEE float output (n.b. no guarantee this will be accepted)
+
+
+
+
+ If true, the reader object created in the constructor is used in Read
+ Should only be set to true if you are working entirely on an STA thread, or
+ entirely with MTA threads.
+
+
+
+
+ If true, the reposition does not happen immediately, but waits until the
+ next call to read to be processed.
+
+
+
+
+ Class for reading from MP3 files
+
+
+
+ Supports opening a MP3 file
+
+
+ Supports opening a MP3 file
+ MP3 File name
+ Factory method to build a frame decompressor
+
+
+
+ Opens MP3 from a stream rather than a file
+ Will not dispose of this stream itself
+
+ The incoming stream containing MP3 data
+
+
+
+ Opens MP3 from a stream rather than a file
+ Will not dispose of this stream itself
+
+ The incoming stream containing MP3 data
+ Factory method to build a frame decompressor
+
+
+
+ Creates an ACM MP3 Frame decompressor. This is the default with NAudio
+
+ A WaveFormat object based
+
+
+
+
+ Gets the total length of this file in milliseconds.
+
+
+
+
+ Reads the next mp3 frame
+
+ Next mp3 frame, or null if EOF
+
+
+
+ Reads the next mp3 frame
+
+ Next mp3 frame, or null if EOF
+
+
+
+ Reads decompressed PCM data from our MP3 file.
+
+
+
+
+ Disposes this WaveStream
+
+
+
+
+ The MP3 wave format (n.b. NOT the output format of this stream - see the WaveFormat property)
+
+
+
+
+ ID3v2 tag if present
+
+
+
+
+ ID3v1 tag if present
+
+
+
+
+ This is the length in bytes of data available to be read out from the Read method
+ (i.e. the decompressed MP3 length)
+ n.b. this may return 0 for files whose length is unknown
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Xing header if present
+
+
+
+
+ Function that can create an MP3 Frame decompressor
+
+ A WaveFormat object describing the MP3 file format
+ An MP3 Frame decompressor
+
+
+
+ Converts an IWaveProvider containing 16 bit PCM to an
+ ISampleProvider
+
+
+
+
+ Initialises a new instance of Pcm16BitToSampleProvider
+
+ Source wave provider
+
+
+
+ Reads samples from this sample provider
+
+ Sample buffer
+ Offset into sample buffer
+ Samples required
+ Number of samples read
+
+
+
+ Converts an IWaveProvider containing 24 bit PCM to an
+ ISampleProvider
+
+
+
+
+ Initialises a new instance of Pcm24BitToSampleProvider
+
+ Source Wave Provider
+
+
+
+ Reads floating point samples from this sample provider
+
+ sample buffer
+ offset within sample buffer to write to
+ number of samples required
+ number of samples provided
+
+
+
+ Converts an IWaveProvider containing 8 bit PCM to an
+ ISampleProvider
+
+
+
+
+ Initialises a new instance of Pcm8BitToSampleProvider
+
+ Source wave provider
+
+
+
+ Reads samples from this sample provider
+
+ Sample buffer
+ Offset into sample buffer
+ Number of samples to read
+ Number of samples read
+
+
+
+ WaveStream that simply passes on data from its source stream
+ (e.g. a MemoryStream)
+
+
+
+
+ Initialises a new instance of RawSourceWaveStream
+
+ The source stream containing raw audio
+ The waveformat of the audio in the source stream
+
+
+
+ Reads data from the stream
+
+
+
+
+ The WaveFormat of this stream
+
+
+
+
+ The length in bytes of this stream (if supported)
+
+
+
+
+ The current position in this stream
+
+
+
+
+ Wave Stream for converting between sample rates
+
+
+
+
+ WaveStream to resample using the DMO Resampler
+
+ Input Stream
+ Desired Output Format
+
+
+
+ Reads data from input stream
+
+ buffer
+ offset into buffer
+ Bytes required
+ Number of bytes read
+
+
+
+ Dispose
+
+ True if disposing (not from finalizer)
+
+
+
+ Stream Wave Format
+
+
+
+
+ Stream length in bytes
+
+
+
+
+ Stream position in bytes
+
+
+
+
+ Holds information about a RIFF file chunk
+
+
+
+
+ Creates a RiffChunk object
+
+
+
+
+ The chunk identifier
+
+
+
+
+ The chunk identifier converted to a string
+
+
+
+
+ The chunk length
+
+
+
+
+ The stream position this chunk is located at
+
+
+
+
+ A simple compressor
+
+
+
+
+ Create a new simple compressor stream
+
+ Source stream
+
+
+
+ Determine whether the stream has the required amount of data.
+
+ Number of bytes of data required from the stream.
+ Flag indicating whether the required amount of data is avialable.
+
+
+
+ Reads bytes from this stream
+
+ Buffer to read into
+ Offset in array to read into
+ Number of bytes to read
+ Number of bytes read
+
+
+
+ Disposes this stream
+
+ true if the user called this
+
+
+
+ Make-up Gain
+
+
+
+
+ Threshold
+
+
+
+
+ Ratio
+
+
+
+
+ Attack time
+
+
+
+
+ Release time
+
+
+
+
+ Turns gain on or off
+
+
+
+
+ Returns the stream length
+
+
+
+
+ Gets or sets the current position in the stream
+
+
+
+
+ Gets the WaveFormat of this stream
+
+
+
+
+ Gets the block alignment for this stream
+
+
+
+
+ WaveStream that converts 32 bit audio back down to 16 bit, clipping if necessary
+
+
+
+
+ Creates a new Wave32To16Stream
+
+ the source stream
+
+
+
+ Reads bytes from this wave stream
+
+ Destination buffer
+ Offset into destination buffer
+
+ Number of bytes read.
+
+
+
+ Conversion to 16 bit and clipping
+
+
+
+
+ Disposes this WaveStream
+
+
+
+
+ Sets the volume for this stream. 1.0f is full scale
+
+
+
+
+
+
+
+
+
+ Returns the stream length
+
+
+
+
+ Gets or sets the current position in the stream
+
+
+
+
+
+
+
+
+
+ Clip indicator. Can be reset.
+
+
+
+
+ Represents Channel for the WaveMixerStream
+ 32 bit output and 16 bit input
+ It's output is always stereo
+ The input stream can be panned
+
+
+
+
+ Creates a new WaveChannel32
+
+ the source stream
+ stream volume (1 is 0dB)
+ pan control (-1 to 1)
+
+
+
+ Creates a WaveChannel32 with default settings
+
+ The source stream
+
+
+
+ Reads bytes from this wave stream
+
+ The destination buffer
+ Offset into the destination buffer
+ Number of bytes read
+ Number of bytes read.
+
+
+
+ Determines whether this channel has any data to play
+ to allow optimisation to not read, but bump position forward
+
+
+
+
+ Disposes this WaveStream
+
+
+
+
+ Raise the sample event (no check for null because it has already been done)
+
+
+
+
+ Gets the block alignment for this WaveStream
+
+
+
+
+ Returns the stream length
+
+
+
+
+ Gets or sets the current position in the stream
+
+
+
+
+ If true, Read always returns the number of bytes requested
+
+
+
+
+
+
+
+
+
+ Volume of this channel. 1.0 = full scale
+
+
+
+
+ Pan of this channel (from -1 to 1)
+
+
+
+
+ Sample
+
+
+
+
+ Utility class that takes an IWaveProvider input at any bit depth
+ and exposes it as an ISampleProvider. Can turn mono inputs into stereo,
+ and allows adjusting of volume
+ (The eventual successor to WaveChannel32)
+ This class also serves as an example of how you can link together several simple
+ Sample Providers to form a more useful class.
+
+
+
+
+ Initialises a new instance of SampleChannel
+
+ Source wave provider, must be PCM or IEEE
+
+
+
+ Initialises a new instance of SampleChannel
+
+ Source wave provider, must be PCM or IEEE
+ force mono inputs to become stereo
+
+
+
+ Reads samples from this sample provider
+
+ Sample buffer
+ Offset into sample buffer
+ Number of samples desired
+ Number of samples read
+
+
+
+ The WaveFormat of this Sample Provider
+
+
+
+
+ Allows adjusting the volume, 1.0f = full volume
+
+
+
+
+ Raised periodically to inform the user of the max volume
+ (before the volume meter)
+
+
+
+
+ WaveStream that passes through an ACM Codec
+
+
+
+
+ Creates a stream that can convert to PCM
+
+ The source stream
+ A PCM stream
+
+
+
+ Create a new WaveFormat conversion stream
+
+ Desired output format
+ Source stream
+
+
+
+ Converts source bytes to destination bytes
+
+
+
+
+ Converts destination bytes to source bytes
+
+
+
+
+ Reads bytes from this stream
+
+ Buffer to read into
+ Offset in buffer to read into
+ Number of bytes to read
+ Number of bytes read
+
+
+
+ Disposes this stream
+
+ true if the user called this
+
+
+
+ Returns the stream length
+
+
+
+
+ Gets or sets the current position in the stream
+
+
+
+
+ Gets the WaveFormat of this stream
+
+
+
+
+ A buffer of Wave samples
+
+
+
+
+ creates a new wavebuffer
+
+ WaveIn device to write to
+ Buffer size in bytes
+
+
+
+ Place this buffer back to record more audio
+
+
+
+
+ Finalizer for this wave buffer
+
+
+
+
+ Releases resources held by this WaveBuffer
+
+
+
+
+ Releases resources held by this WaveBuffer
+
+
+
+
+ Provides access to the actual record buffer (for reading only)
+
+
+
+
+ Indicates whether the Done flag is set on this buffer
+
+
+
+
+ Indicates whether the InQueue flag is set on this buffer
+
+
+
+
+ Number of bytes recorded
+
+
+
+
+ The buffer size in bytes
+
+
+
+
+ WaveStream that can mix together multiple 32 bit input streams
+ (Normally used with stereo input channels)
+ All channels must have the same number of inputs
+
+
+
+
+ Creates a new 32 bit WaveMixerStream
+
+
+
+
+ Creates a new 32 bit WaveMixerStream
+
+ An Array of WaveStreams - must all have the same format.
+ Use WaveChannel is designed for this purpose.
+ Automatically stop when all inputs have been read
+ Thrown if the input streams are not 32 bit floating point,
+ or if they have different formats to each other
+
+
+
+ Add a new input to the mixer
+
+ The wave input to add
+
+
+
+ Remove a WaveStream from the mixer
+
+ waveStream to remove
+
+
+
+ Reads bytes from this wave stream
+
+ buffer to read into
+ offset into buffer
+ number of bytes required
+ Number of bytes read.
+ Thrown if an invalid number of bytes requested
+
+
+
+ Actually performs the mixing
+
+
+
+
+ Disposes this WaveStream
+
+
+
+
+ The number of inputs to this mixer
+
+
+
+
+ Automatically stop when all inputs have been read
+
+
+
+
+
+
+
+
+
+ Length of this Wave Stream (in bytes)
+
+
+
+
+
+ Position within this Wave Stream (in bytes)
+
+
+
+
+
+
+
+
+
+
+ Simply shifts the input stream in time, optionally
+ clipping its start and end.
+ (n.b. may include looping in the future)
+
+
+
+
+ Creates a new WaveOffsetStream
+
+ the source stream
+ the time at which we should start reading from the source stream
+ amount to trim off the front of the source stream
+ length of time to play from source stream
+
+
+
+ Creates a WaveOffsetStream with default settings (no offset or pre-delay,
+ and whole length of source stream)
+
+ The source stream
+
+
+
+ Reads bytes from this wave stream
+
+ The destination buffer
+ Offset into the destination buffer
+ Number of bytes read
+ Number of bytes read.
+
+
+
+ Determines whether this channel has any data to play
+ to allow optimisation to not read, but bump position forward
+
+
+
+
+ Disposes this WaveStream
+
+
+
+
+ The length of time before which no audio will be played
+
+
+
+
+ An offset into the source stream from which to start playing
+
+
+
+
+ Length of time to read from the source stream
+
+
+
+
+ Gets the block alignment for this WaveStream
+
+
+
+
+ Returns the stream length
+
+
+
+
+ Gets or sets the current position in the stream
+
+
+
+
+
+
+
+
+
+ A buffer of Wave samples for streaming to a Wave Output device
+
+
+
+
+ creates a new wavebuffer
+
+ WaveOut device to write to
+ Buffer size in bytes
+ Stream to provide more data
+ Lock to protect WaveOut API's from being called on >1 thread
+
+
+
+ Finalizer for this wave buffer
+
+
+
+
+ Releases resources held by this WaveBuffer
+
+
+
+
+ Releases resources held by this WaveBuffer
+
+
+
+ this is called by the WAVE callback and should be used to refill the buffer
+
+
+
+ Whether the header's in queue flag is set
+
+
+
+
+ The buffer size in bytes
+
+
+
+
+ DMO Input Data Buffer Flags
+
+
+
+
+ None
+
+
+
+
+ DMO_INPUT_DATA_BUFFERF_SYNCPOINT
+
+
+
+
+ DMO_INPUT_DATA_BUFFERF_TIME
+
+
+
+
+ DMO_INPUT_DATA_BUFFERF_TIMELENGTH
+
+
+
+
+ http://msdn.microsoft.com/en-us/library/aa929922.aspx
+ DMO_MEDIA_TYPE
+
+
+
+
+ Gets the structure as a Wave format (if it is one)
+
+
+
+
+ Sets this object up to point to a wave format
+
+ Wave format structure
+
+
+
+ Major type
+
+
+
+
+ Major type name
+
+
+
+
+ Subtype
+
+
+
+
+ Subtype name
+
+
+
+
+ Fixed size samples
+
+
+
+
+ Sample size
+
+
+
+
+ Format type
+
+
+
+
+ Format type name
+
+
+
+
+ DMO Output Data Buffer
+
+
+
+
+ Creates a new DMO Output Data Buffer structure
+
+ Maximum buffer size
+
+
+
+ Dispose
+
+
+
+
+ Retrives the data in this buffer
+
+ Buffer to receive data
+ Offset into buffer
+
+
+
+ Media Buffer
+
+
+
+
+ Length of data in buffer
+
+
+
+
+ Status Flags
+
+
+
+
+ Timestamp
+
+
+
+
+ Duration
+
+
+
+
+ Is more data available
+ If true, ProcessOuput should be called again
+
+
+
+
+ DMO Output Data Buffer Flags
+
+
+
+
+ None
+
+
+
+
+ DMO_OUTPUT_DATA_BUFFERF_SYNCPOINT
+
+
+
+
+ DMO_OUTPUT_DATA_BUFFERF_TIME
+
+
+
+
+ DMO_OUTPUT_DATA_BUFFERF_TIMELENGTH
+
+
+
+
+ DMO_OUTPUT_DATA_BUFFERF_INCOMPLETE
+
+
+
+
+ DMO Process Output Flags
+
+
+
+
+ None
+
+
+
+
+ DMO_PROCESS_OUTPUT_DISCARD_WHEN_NO_BUFFER
+
+
+
+
+ defined in mediaobj.h
+
+
+
+
+ From wmcodecsdp.h
+ Implements:
+ - IMediaObject
+ - IMFTransform (Media foundation - we will leave this for now as there is loads of MF stuff)
+ - IPropertyStore
+ - IWMResamplerProps
+ Can resample PCM or IEEE
+
+
+
+
+ DMO Resampler
+
+
+
+
+ Creates a new Resampler based on the DMO Resampler
+
+
+
+
+ Dispose code - experimental at the moment
+ Was added trying to track down why Resampler crashes NUnit
+ This code not currently being called by ResamplerDmoStream
+
+
+
+
+ Media Object
+
+
+
+
diff --git a/STARK/bin/Debug/STARK.exe b/STARK/bin/Debug/STARK.exe
new file mode 100644
index 0000000..e6225ff
Binary files /dev/null and b/STARK/bin/Debug/STARK.exe differ
diff --git a/STARK/bin/Debug/STARK.pdb b/STARK/bin/Debug/STARK.pdb
new file mode 100644
index 0000000..b56cd75
Binary files /dev/null and b/STARK/bin/Debug/STARK.pdb differ
diff --git a/STARK/bin/Debug/System.Windows.Interactivity.dll b/STARK/bin/Debug/System.Windows.Interactivity.dll
new file mode 100644
index 0000000..931c744
Binary files /dev/null and b/STARK/bin/Debug/System.Windows.Interactivity.dll differ
diff --git a/STARK/bin/Release/STARK.exe b/STARK/bin/Release/STARK.exe
index 0e24767..785cb6b 100644
Binary files a/STARK/bin/Release/STARK.exe and b/STARK/bin/Release/STARK.exe differ
diff --git a/STARK/bin/Release/STARK.pdb b/STARK/bin/Release/STARK.pdb
index 13e9126..f4481a4 100644
Binary files a/STARK/bin/Release/STARK.pdb and b/STARK/bin/Release/STARK.pdb differ
diff --git a/STARK/obj/Debug/App.baml b/STARK/obj/Debug/App.baml
new file mode 100644
index 0000000..55f01b1
Binary files /dev/null and b/STARK/obj/Debug/App.baml differ
diff --git a/STARK/obj/Debug/App.g.cs b/STARK/obj/Debug/App.g.cs
new file mode 100644
index 0000000..65ba606
--- /dev/null
+++ b/STARK/obj/Debug/App.g.cs
@@ -0,0 +1,83 @@
+#pragma checksum "..\..\App.xaml" "{406ea660-64cf-4c82-b6f0-42d48172a799}" "7E711219D72DC81EFF758C66358C39F7"
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Runtime Version:4.0.30319.42000
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+using STARK;
+using System;
+using System.Diagnostics;
+using System.Windows;
+using System.Windows.Automation;
+using System.Windows.Controls;
+using System.Windows.Controls.Primitives;
+using System.Windows.Data;
+using System.Windows.Documents;
+using System.Windows.Ink;
+using System.Windows.Input;
+using System.Windows.Markup;
+using System.Windows.Media;
+using System.Windows.Media.Animation;
+using System.Windows.Media.Effects;
+using System.Windows.Media.Imaging;
+using System.Windows.Media.Media3D;
+using System.Windows.Media.TextFormatting;
+using System.Windows.Navigation;
+using System.Windows.Shapes;
+using System.Windows.Shell;
+
+
+namespace STARK {
+
+
+ ///
+ /// App
+ ///
+ public partial class App : System.Windows.Application {
+
+ private bool _contentLoaded;
+
+ ///
+ /// InitializeComponent
+ ///
+ [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")]
+ public void InitializeComponent() {
+ if (_contentLoaded) {
+ return;
+ }
+ _contentLoaded = true;
+
+ #line 5 "..\..\App.xaml"
+ this.StartupUri = new System.Uri("MainWindow.xaml", System.UriKind.Relative);
+
+ #line default
+ #line hidden
+ System.Uri resourceLocater = new System.Uri("/STARK;component/app.xaml", System.UriKind.Relative);
+
+ #line 1 "..\..\App.xaml"
+ System.Windows.Application.LoadComponent(this, resourceLocater);
+
+ #line default
+ #line hidden
+ }
+
+ ///
+ /// Application Entry Point.
+ ///
+ [System.STAThreadAttribute()]
+ [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")]
+ public static void Main() {
+ STARK.App app = new STARK.App();
+ app.InitializeComponent();
+ app.Run();
+ }
+ }
+}
+
diff --git a/STARK/obj/Debug/Common.cs b/STARK/obj/Debug/Common.cs
new file mode 100644
index 0000000..014f7fd
--- /dev/null
+++ b/STARK/obj/Debug/Common.cs
@@ -0,0 +1,293 @@
+using System;
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.Globalization;
+using System.IO;
+using System.IO.Compression;
+using System.Reflection;
+using System.Runtime.InteropServices;
+using System.Security.AccessControl;
+using System.Security.Cryptography;
+using System.Security.Principal;
+using System.Text;
+using System.Threading;
+
+static class Common
+{
+ private const int DelayUntilReboot = 4;
+
+ [DllImport("kernel32.dll", SetLastError = true, CharSet = CharSet.Unicode)]
+ static extern bool MoveFileEx(string lpExistingFileName, string lpNewFileName, int dwFlags);
+
+ [DllImport("kernel32", SetLastError = true, CharSet = CharSet.Unicode)]
+ static extern IntPtr LoadLibrary(string dllToLoad);
+
+ [DllImport("kernel32.dll", SetLastError = true, CharSet = CharSet.Unicode)]
+ [return: MarshalAs(UnmanagedType.Bool)]
+ static extern bool SetDllDirectory(string lpPathName);
+
+ [Conditional("DEBUG")]
+ public static void Log(string format, params object[] args)
+ {
+ // Should this be trace?
+ Debug.WriteLine("=== COSTURA === " + string.Format(format, args));
+ }
+
+ static void CopyTo(Stream source, Stream destination)
+ {
+ var array = new byte[81920];
+ int count;
+ while ((count = source.Read(array, 0, array.Length)) != 0)
+ {
+ destination.Write(array, 0, count);
+ }
+ }
+
+ static void CreateDirectory(string tempBasePath)
+ {
+ if (!Directory.Exists(tempBasePath))
+ {
+ Directory.CreateDirectory(tempBasePath);
+ }
+ }
+
+ static byte[] ReadStream(Stream stream)
+ {
+ var data = new Byte[stream.Length];
+ stream.Read(data, 0, data.Length);
+ return data;
+ }
+
+ public static string CalculateChecksum(string filename)
+ {
+ using (FileStream fs = new FileStream(filename, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
+ using (BufferedStream bs = new BufferedStream(fs))
+ {
+ using (SHA1Managed sha1 = new SHA1Managed())
+ {
+ byte[] hash = sha1.ComputeHash(bs);
+ StringBuilder formatted = new StringBuilder(2 * hash.Length);
+ foreach (byte b in hash)
+ {
+ formatted.AppendFormat("{0:X2}", b);
+ }
+ return formatted.ToString();
+ }
+ }
+ }
+
+ public static Assembly ReadExistingAssembly(AssemblyName name)
+ {
+ var currentDomain = AppDomain.CurrentDomain;
+ var assemblies = currentDomain.GetAssemblies();
+ foreach (var assembly in assemblies)
+ {
+ var currentName = assembly.GetName();
+ if (string.Equals(currentName.Name, name.Name, StringComparison.InvariantCultureIgnoreCase) &&
+ string.Equals(CultureToString(currentName.CultureInfo), CultureToString(name.CultureInfo), StringComparison.InvariantCultureIgnoreCase))
+ {
+ Log("Assembly '{0}' already loaded, returning existing assembly", assembly.FullName);
+
+ return assembly;
+ }
+ }
+ return null;
+ }
+
+ static string CultureToString(CultureInfo culture)
+ {
+ if (culture == null)
+ return "";
+
+ return culture.Name;
+ }
+
+ public static Assembly ReadFromDiskCache(string tempBasePath, AssemblyName requestedAssemblyName)
+ {
+ var name = requestedAssemblyName.Name.ToLowerInvariant();
+
+ if (requestedAssemblyName.CultureInfo != null && !String.IsNullOrEmpty(requestedAssemblyName.CultureInfo.Name))
+ name = String.Format("{0}.{1}", requestedAssemblyName.CultureInfo.Name, name);
+
+ var bittyness = IntPtr.Size == 8 ? "64" : "32";
+ var assemblyTempFilePath = Path.Combine(tempBasePath, String.Concat(name, ".dll"));
+ if (File.Exists(assemblyTempFilePath))
+ {
+ return Assembly.LoadFile(assemblyTempFilePath);
+ }
+ assemblyTempFilePath = Path.ChangeExtension(assemblyTempFilePath, "exe");
+ if (File.Exists(assemblyTempFilePath))
+ {
+ return Assembly.LoadFile(assemblyTempFilePath);
+ }
+ assemblyTempFilePath = Path.Combine(Path.Combine(tempBasePath, bittyness), String.Concat(name, ".dll"));
+ if (File.Exists(assemblyTempFilePath))
+ {
+ return Assembly.LoadFile(assemblyTempFilePath);
+ }
+ assemblyTempFilePath = Path.ChangeExtension(assemblyTempFilePath, "exe");
+ if (File.Exists(assemblyTempFilePath))
+ {
+ return Assembly.LoadFile(assemblyTempFilePath);
+ }
+ return null;
+ }
+
+ public static Assembly ReadFromEmbeddedResources(Dictionary assemblyNames, Dictionary symbolNames, AssemblyName requestedAssemblyName)
+ {
+ var name = requestedAssemblyName.Name.ToLowerInvariant();
+
+ if (requestedAssemblyName.CultureInfo != null && !String.IsNullOrEmpty(requestedAssemblyName.CultureInfo.Name))
+ name = String.Format("{0}.{1}", requestedAssemblyName.CultureInfo.Name, name);
+
+ byte[] assemblyData;
+ using (var assemblyStream = LoadStream(assemblyNames, name))
+ {
+ if (assemblyStream == null)
+ {
+ return null;
+ }
+ assemblyData = ReadStream(assemblyStream);
+ }
+
+ using (var pdbStream = LoadStream(symbolNames, name))
+ {
+ if (pdbStream != null)
+ {
+ var pdbData = ReadStream(pdbStream);
+ return Assembly.Load(assemblyData, pdbData);
+ }
+ }
+
+ return Assembly.Load(assemblyData);
+ }
+
+ static Stream LoadStream(Dictionary resourceNames, string name)
+ {
+ string value;
+ if (resourceNames.TryGetValue(name, out value))
+ return LoadStream(value);
+
+ return null;
+ }
+
+ static Stream LoadStream(string fullname)
+ {
+ var executingAssembly = Assembly.GetExecutingAssembly();
+
+ if (fullname.EndsWith(".zip"))
+ {
+ using (var stream = executingAssembly.GetManifestResourceStream(fullname))
+ using (var compressStream = new DeflateStream(stream, CompressionMode.Decompress))
+ {
+ var memStream = new MemoryStream();
+ CopyTo(compressStream, memStream);
+ memStream.Position = 0;
+ return memStream;
+ }
+ }
+
+ return executingAssembly.GetManifestResourceStream(fullname);
+ }
+
+ // Mutex code from http://stackoverflow.com/questions/229565/what-is-a-good-pattern-for-using-a-global-mutex-in-c
+ public static void PreloadUnmanagedLibraries(string hash, string tempBasePath, IEnumerable libs, Dictionary checksums)
+ {
+ string mutexId = string.Format("Global\\Costura{0}", hash);
+
+ using (var mutex = new Mutex(false, mutexId))
+ {
+ var allowEveryoneRule = new MutexAccessRule(new SecurityIdentifier(WellKnownSidType.WorldSid, null), MutexRights.FullControl, AccessControlType.Allow);
+ var securitySettings = new MutexSecurity();
+ securitySettings.AddAccessRule(allowEveryoneRule);
+ mutex.SetAccessControl(securitySettings);
+
+ var hasHandle = false;
+ try
+ {
+ try
+ {
+ hasHandle = mutex.WaitOne(60000, false);
+ if (hasHandle == false)
+ throw new TimeoutException("Timeout waiting for exclusive access");
+ }
+ catch (AbandonedMutexException)
+ {
+ hasHandle = true;
+ }
+
+ var bittyness = IntPtr.Size == 8 ? "64" : "32";
+ CreateDirectory(Path.Combine(tempBasePath, bittyness));
+ InternalPreloadUnmanagedLibraries(tempBasePath, libs, checksums);
+ }
+ finally
+ {
+ if (hasHandle)
+ mutex.ReleaseMutex();
+ }
+ }
+ }
+
+ static void InternalPreloadUnmanagedLibraries(string tempBasePath, IEnumerable libs, Dictionary checksums)
+ {
+ string name;
+
+ foreach (var lib in libs)
+ {
+ name = ResourceNameToPath(lib);
+
+ var assemblyTempFilePath = Path.Combine(tempBasePath, name);
+
+ if (File.Exists(assemblyTempFilePath))
+ {
+ var checksum = CalculateChecksum(assemblyTempFilePath);
+ if (checksum != checksums[lib])
+ File.Delete(assemblyTempFilePath);
+ }
+
+ if (!File.Exists(assemblyTempFilePath))
+ {
+ using (var copyStream = LoadStream(lib))
+ using (var assemblyTempFile = File.OpenWrite(assemblyTempFilePath))
+ {
+ CopyTo(copyStream, assemblyTempFile);
+ }
+ if (!MoveFileEx(assemblyTempFilePath, null, DelayUntilReboot))
+ {
+ //TODO: for now we ignore the return value.
+ }
+ }
+ }
+
+ SetDllDirectory(tempBasePath);
+
+ foreach (var lib in libs)
+ {
+ name = ResourceNameToPath(lib);
+
+ if (name.EndsWith(".dll"))
+ {
+ var assemblyTempFilePath = Path.Combine(tempBasePath, name);
+
+ LoadLibrary(assemblyTempFilePath);
+ }
+ }
+ }
+
+ static string ResourceNameToPath(string lib)
+ {
+ var bittyness = IntPtr.Size == 8 ? "64" : "32";
+
+ string name = lib;
+
+ if (lib.StartsWith(String.Concat("costura", bittyness, ".")))
+ name = Path.Combine(bittyness, lib.Substring(10));
+ else if (lib.StartsWith("costura."))
+ name = lib.Substring(8);
+
+ if (name.EndsWith(".zip"))
+ name = name.Substring(0, name.Length - 4);
+
+ return name;
+ }
+}
\ No newline at end of file
diff --git a/STARK/obj/Debug/Costura/01C30F77D3F8F2983483AECC548D06CC1EA9B1CE.costura.mahapps.metro.dll.zip b/STARK/obj/Debug/Costura/01C30F77D3F8F2983483AECC548D06CC1EA9B1CE.costura.mahapps.metro.dll.zip
new file mode 100644
index 0000000..5a330a8
Binary files /dev/null and b/STARK/obj/Debug/Costura/01C30F77D3F8F2983483AECC548D06CC1EA9B1CE.costura.mahapps.metro.dll.zip differ
diff --git a/STARK/obj/Debug/Costura/40E24634933B74BBFCA5AFD117D9FF058472FE22.costura.mahapps.metro.pdb.zip b/STARK/obj/Debug/Costura/40E24634933B74BBFCA5AFD117D9FF058472FE22.costura.mahapps.metro.pdb.zip
new file mode 100644
index 0000000..27330e5
Binary files /dev/null and b/STARK/obj/Debug/Costura/40E24634933B74BBFCA5AFD117D9FF058472FE22.costura.mahapps.metro.pdb.zip differ
diff --git a/STARK/obj/Debug/Costura/A3B8E87D2975B8B7CB5656A16D3794E85AEB8166.costura.naudio.dll.zip b/STARK/obj/Debug/Costura/A3B8E87D2975B8B7CB5656A16D3794E85AEB8166.costura.naudio.dll.zip
new file mode 100644
index 0000000..e18456b
Binary files /dev/null and b/STARK/obj/Debug/Costura/A3B8E87D2975B8B7CB5656A16D3794E85AEB8166.costura.naudio.dll.zip differ
diff --git a/STARK/obj/Debug/Costura/CE6C4C18CF638F980905B9CB6710EE1FA73BB397.costura.system.windows.interactivity.dll.zip b/STARK/obj/Debug/Costura/CE6C4C18CF638F980905B9CB6710EE1FA73BB397.costura.system.windows.interactivity.dll.zip
new file mode 100644
index 0000000..00009d0
Binary files /dev/null and b/STARK/obj/Debug/Costura/CE6C4C18CF638F980905B9CB6710EE1FA73BB397.costura.system.windows.interactivity.dll.zip differ
diff --git a/STARK/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache b/STARK/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache
index 8b4c2fd..d974d0c 100644
Binary files a/STARK/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache and b/STARK/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache differ
diff --git a/STARK/obj/Debug/GeneratedInternalTypeHelper.g.cs b/STARK/obj/Debug/GeneratedInternalTypeHelper.g.cs
new file mode 100644
index 0000000..136dd1b
--- /dev/null
+++ b/STARK/obj/Debug/GeneratedInternalTypeHelper.g.cs
@@ -0,0 +1,62 @@
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Runtime Version:4.0.30319.42000
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+namespace XamlGeneratedNamespace {
+
+
+ ///
+ /// GeneratedInternalTypeHelper
+ ///
+ [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")]
+ [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)]
+ public sealed class GeneratedInternalTypeHelper : System.Windows.Markup.InternalTypeHelper {
+
+ ///
+ /// CreateInstance
+ ///
+ protected override object CreateInstance(System.Type type, System.Globalization.CultureInfo culture) {
+ return System.Activator.CreateInstance(type, ((System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.NonPublic)
+ | (System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.CreateInstance)), null, null, culture);
+ }
+
+ ///
+ /// GetPropertyValue
+ ///
+ protected override object GetPropertyValue(System.Reflection.PropertyInfo propertyInfo, object target, System.Globalization.CultureInfo culture) {
+ return propertyInfo.GetValue(target, System.Reflection.BindingFlags.Default, null, null, culture);
+ }
+
+ ///
+ /// SetPropertyValue
+ ///
+ protected override void SetPropertyValue(System.Reflection.PropertyInfo propertyInfo, object target, object value, System.Globalization.CultureInfo culture) {
+ propertyInfo.SetValue(target, value, System.Reflection.BindingFlags.Default, null, null, culture);
+ }
+
+ ///
+ /// CreateDelegate
+ ///
+ protected override System.Delegate CreateDelegate(System.Type delegateType, object target, string handler) {
+ return ((System.Delegate)(target.GetType().InvokeMember("_CreateDelegate", (System.Reflection.BindingFlags.InvokeMethod
+ | (System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance)), null, target, new object[] {
+ delegateType,
+ handler}, null)));
+ }
+
+ ///
+ /// AddEventHandler
+ ///
+ protected override void AddEventHandler(System.Reflection.EventInfo eventInfo, object target, System.Delegate handler) {
+ eventInfo.AddEventHandler(target, handler);
+ }
+ }
+}
+
diff --git a/STARK/obj/Debug/ILTemplate.cs b/STARK/obj/Debug/ILTemplate.cs
new file mode 100644
index 0000000..f5da6a5
--- /dev/null
+++ b/STARK/obj/Debug/ILTemplate.cs
@@ -0,0 +1,48 @@
+using System;
+using System.Collections.Generic;
+using System.Reflection;
+
+static class ILTemplate
+{
+ static readonly Dictionary nullCache = new Dictionary();
+
+ static readonly Dictionary assemblyNames = new Dictionary();
+ static readonly Dictionary symbolNames = new Dictionary();
+
+ public static void Attach()
+ {
+ var currentDomain = AppDomain.CurrentDomain;
+ currentDomain.AssemblyResolve += (s, e) => ResolveAssembly(e.Name);
+ }
+
+ public static Assembly ResolveAssembly(string assemblyName)
+ {
+ if (nullCache.ContainsKey(assemblyName))
+ {
+ return null;
+ }
+
+ var requestedAssemblyName = new AssemblyName(assemblyName);
+
+ var assembly = Common.ReadExistingAssembly(requestedAssemblyName);
+ if (assembly != null)
+ {
+ return assembly;
+ }
+
+ Common.Log("Loading assembly '{0}' into the AppDomain", requestedAssemblyName);
+
+ assembly = Common.ReadFromEmbeddedResources(assemblyNames, symbolNames, requestedAssemblyName);
+ if (assembly == null)
+ {
+ nullCache.Add(assemblyName, true);
+
+ // Handles retargeted assemblies like PCL
+ if (requestedAssemblyName.Flags == AssemblyNameFlags.Retargetable)
+ {
+ assembly = Assembly.Load(requestedAssemblyName);
+ }
+ }
+ return assembly;
+ }
+}
\ No newline at end of file
diff --git a/STARK/obj/Debug/MainWindow.baml b/STARK/obj/Debug/MainWindow.baml
new file mode 100644
index 0000000..4994d89
Binary files /dev/null and b/STARK/obj/Debug/MainWindow.baml differ
diff --git a/STARK/obj/Debug/MainWindow.g.cs b/STARK/obj/Debug/MainWindow.g.cs
new file mode 100644
index 0000000..3b34b1d
--- /dev/null
+++ b/STARK/obj/Debug/MainWindow.g.cs
@@ -0,0 +1,968 @@
+#pragma checksum "..\..\MainWindow.xaml" "{406ea660-64cf-4c82-b6f0-42d48172a799}" "A0E54F4CDDBD8D025F2A4AE0EEC2C593"
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Runtime Version:4.0.30319.42000
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+using MahApps.Metro.Controls;
+using STARK;
+using System;
+using System.Diagnostics;
+using System.Windows;
+using System.Windows.Automation;
+using System.Windows.Controls;
+using System.Windows.Controls.Primitives;
+using System.Windows.Data;
+using System.Windows.Documents;
+using System.Windows.Ink;
+using System.Windows.Input;
+using System.Windows.Markup;
+using System.Windows.Media;
+using System.Windows.Media.Animation;
+using System.Windows.Media.Effects;
+using System.Windows.Media.Imaging;
+using System.Windows.Media.Media3D;
+using System.Windows.Media.TextFormatting;
+using System.Windows.Navigation;
+using System.Windows.Shapes;
+using System.Windows.Shell;
+
+
+namespace STARK {
+
+
+ ///
+ /// MainWindow
+ ///
+ public partial class MainWindow : MahApps.Metro.Controls.MetroWindow, System.Windows.Markup.IComponentConnector {
+
+
+ #line 1 "..\..\MainWindow.xaml"
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+ internal STARK.MainWindow STARK;
+
+ #line default
+ #line hidden
+
+
+ #line 14 "..\..\MainWindow.xaml"
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+ internal System.Windows.Controls.Button donateButton;
+
+ #line default
+ #line hidden
+
+
+ #line 19 "..\..\MainWindow.xaml"
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+ internal MahApps.Metro.Controls.MetroAnimatedTabControl tabControl;
+
+ #line default
+ #line hidden
+
+
+ #line 24 "..\..\MainWindow.xaml"
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+ internal System.Windows.Controls.CheckBox synthesizerToggle;
+
+ #line default
+ #line hidden
+
+
+ #line 27 "..\..\MainWindow.xaml"
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+ internal System.Windows.Controls.TextBox TTS_CommandTextBox;
+
+ #line default
+ #line hidden
+
+
+ #line 28 "..\..\MainWindow.xaml"
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+ internal System.Windows.Controls.Label CommandLabel;
+
+ #line default
+ #line hidden
+
+
+ #line 31 "..\..\MainWindow.xaml"
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+ internal System.Windows.Controls.Button TTS_Pause;
+
+ #line default
+ #line hidden
+
+
+ #line 32 "..\..\MainWindow.xaml"
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+ internal System.Windows.Controls.Button TTS_Skip;
+
+ #line default
+ #line hidden
+
+
+ #line 35 "..\..\MainWindow.xaml"
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+ internal System.Windows.Controls.Slider TTS_VolumeSlider;
+
+ #line default
+ #line hidden
+
+
+ #line 36 "..\..\MainWindow.xaml"
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+ internal System.Windows.Controls.TextBox TTS_VolumeSliderBox;
+
+ #line default
+ #line hidden
+
+
+ #line 37 "..\..\MainWindow.xaml"
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+ internal System.Windows.Controls.Label TTS_VolumeLabel;
+
+ #line default
+ #line hidden
+
+
+ #line 40 "..\..\MainWindow.xaml"
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+ internal System.Windows.Controls.Slider TTS_RateSlider;
+
+ #line default
+ #line hidden
+
+
+ #line 41 "..\..\MainWindow.xaml"
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+ internal System.Windows.Controls.TextBox TTS_RateSliderBox;
+
+ #line default
+ #line hidden
+
+
+ #line 42 "..\..\MainWindow.xaml"
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+ internal System.Windows.Controls.Label TTS_RateLabel;
+
+ #line default
+ #line hidden
+
+
+ #line 44 "..\..\MainWindow.xaml"
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+ internal System.Windows.Controls.Button TTS_Clear;
+
+ #line default
+ #line hidden
+
+
+ #line 45 "..\..\MainWindow.xaml"
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+ internal System.Windows.Controls.Button TTS_Delete;
+
+ #line default
+ #line hidden
+
+
+ #line 48 "..\..\MainWindow.xaml"
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+ internal System.Windows.Controls.ComboBox TTS_VoiceComboBox;
+
+ #line default
+ #line hidden
+
+
+ #line 49 "..\..\MainWindow.xaml"
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+ internal System.Windows.Controls.Label TTS_VoiceLabel;
+
+ #line default
+ #line hidden
+
+
+ #line 52 "..\..\MainWindow.xaml"
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+ internal System.Windows.Controls.ListView SynthQueue;
+
+ #line default
+ #line hidden
+
+
+ #line 60 "..\..\MainWindow.xaml"
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+ internal System.Windows.Controls.TextBox TTS_AddTextBox;
+
+ #line default
+ #line hidden
+
+
+ #line 61 "..\..\MainWindow.xaml"
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+ internal System.Windows.Controls.Button TTS_Pause_Copy;
+
+ #line default
+ #line hidden
+
+
+ #line 70 "..\..\MainWindow.xaml"
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+ internal System.Windows.Controls.CheckBox Audio_MicCheckBox;
+
+ #line default
+ #line hidden
+
+
+ #line 73 "..\..\MainWindow.xaml"
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+ internal System.Windows.Controls.Slider Audio_MicVolumeSlider;
+
+ #line default
+ #line hidden
+
+
+ #line 74 "..\..\MainWindow.xaml"
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+ internal System.Windows.Controls.TextBox Audio_MicVolumeTextBox;
+
+ #line default
+ #line hidden
+
+
+ #line 75 "..\..\MainWindow.xaml"
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+ internal System.Windows.Controls.Label Audio_MicVolumeLabel;
+
+ #line default
+ #line hidden
+
+
+ #line 78 "..\..\MainWindow.xaml"
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+ internal System.Windows.Controls.Slider Audio_MicBufferSlider;
+
+ #line default
+ #line hidden
+
+
+ #line 79 "..\..\MainWindow.xaml"
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+ internal System.Windows.Controls.TextBox Audio_MicBufferTextBox;
+
+ #line default
+ #line hidden
+
+
+ #line 80 "..\..\MainWindow.xaml"
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+ internal System.Windows.Controls.Label Audio_MicBufferLabel;
+
+ #line default
+ #line hidden
+
+
+ #line 83 "..\..\MainWindow.xaml"
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+ internal System.Windows.Controls.Slider Audio_LoopbackVolumeSlider;
+
+ #line default
+ #line hidden
+
+
+ #line 84 "..\..\MainWindow.xaml"
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+ internal System.Windows.Controls.TextBox Audio_LoopbackVolumeTextBox;
+
+ #line default
+ #line hidden
+
+
+ #line 85 "..\..\MainWindow.xaml"
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+ internal System.Windows.Controls.Label Audio_LoopbackVolumeLabel;
+
+ #line default
+ #line hidden
+
+
+ #line 88 "..\..\MainWindow.xaml"
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+ internal System.Windows.Controls.Slider Audio_AFFVolumeSlider;
+
+ #line default
+ #line hidden
+
+
+ #line 89 "..\..\MainWindow.xaml"
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+ internal System.Windows.Controls.TextBox Audio_AFFVolumeTextBox;
+
+ #line default
+ #line hidden
+
+
+ #line 90 "..\..\MainWindow.xaml"
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+ internal System.Windows.Controls.Label Audio_AFFVolumeLabel;
+
+ #line default
+ #line hidden
+
+
+ #line 93 "..\..\MainWindow.xaml"
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+ internal System.Windows.Controls.Slider Audio_OutputVolumeSlider;
+
+ #line default
+ #line hidden
+
+
+ #line 94 "..\..\MainWindow.xaml"
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+ internal System.Windows.Controls.TextBox Audio_OutputVolumeTextBox;
+
+ #line default
+ #line hidden
+
+
+ #line 95 "..\..\MainWindow.xaml"
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+ internal System.Windows.Controls.Label Audio_OutputVolumeLabel;
+
+ #line default
+ #line hidden
+
+
+ #line 98 "..\..\MainWindow.xaml"
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+ internal System.Windows.Controls.ListView AudioItemList;
+
+ #line default
+ #line hidden
+
+
+ #line 118 "..\..\MainWindow.xaml"
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+ internal System.Windows.Controls.Label AccentLabel;
+
+ #line default
+ #line hidden
+
+
+ #line 119 "..\..\MainWindow.xaml"
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+ internal System.Windows.Controls.ComboBox AccentComboBox;
+
+ #line default
+ #line hidden
+
+
+ #line 126 "..\..\MainWindow.xaml"
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+ internal System.Windows.Controls.ComboBox Setup_Microphone;
+
+ #line default
+ #line hidden
+
+
+ #line 127 "..\..\MainWindow.xaml"
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+ internal System.Windows.Controls.Label Setup_MicrophoneLabel;
+
+ #line default
+ #line hidden
+
+
+ #line 130 "..\..\MainWindow.xaml"
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+ internal System.Windows.Controls.ComboBox Setup_OutputCombined;
+
+ #line default
+ #line hidden
+
+
+ #line 131 "..\..\MainWindow.xaml"
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+ internal System.Windows.Controls.Label Setup_OutputCombinedLabel;
+
+ #line default
+ #line hidden
+
+
+ #line 134 "..\..\MainWindow.xaml"
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+ internal System.Windows.Controls.ComboBox Setup_SynthesizerOnly;
+
+ #line default
+ #line hidden
+
+
+ #line 135 "..\..\MainWindow.xaml"
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+ internal System.Windows.Controls.Label Setup_SynthesizerOnlyLabel;
+
+ #line default
+ #line hidden
+
+
+ #line 136 "..\..\MainWindow.xaml"
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+ internal System.Windows.Controls.TextBox steamAppsFolderPath;
+
+ #line default
+ #line hidden
+
+
+ #line 137 "..\..\MainWindow.xaml"
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+ internal System.Windows.Controls.Label Setup_steamAppsLabel;
+
+ #line default
+ #line hidden
+
+
+ #line 138 "..\..\MainWindow.xaml"
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+ internal System.Windows.Controls.Button steamAppsFolderSelectButton;
+
+ #line default
+ #line hidden
+
+
+ #line 141 "..\..\MainWindow.xaml"
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+ internal System.Windows.Controls.ComboBox Setup_Game;
+
+ #line default
+ #line hidden
+
+
+ #line 142 "..\..\MainWindow.xaml"
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+ internal System.Windows.Controls.Label Setup_GameLabel;
+
+ #line default
+ #line hidden
+
+
+ #line 143 "..\..\MainWindow.xaml"
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+ internal System.Windows.Controls.Button Setup_GameLaunch;
+
+ #line default
+ #line hidden
+
+
+ #line 146 "..\..\MainWindow.xaml"
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+ internal System.Windows.Controls.TextBox watchFolderPath;
+
+ #line default
+ #line hidden
+
+
+ #line 147 "..\..\MainWindow.xaml"
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+ internal System.Windows.Controls.Label watchFolderLabel;
+
+ #line default
+ #line hidden
+
+
+ #line 148 "..\..\MainWindow.xaml"
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+ internal System.Windows.Controls.Button watchFolderSelectButton_Copy;
+
+ #line default
+ #line hidden
+
+
+ #line 154 "..\..\MainWindow.xaml"
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+ internal System.Windows.Controls.Label label;
+
+ #line default
+ #line hidden
+
+
+ #line 155 "..\..\MainWindow.xaml"
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+ internal System.Windows.Controls.Label label_Copy;
+
+ #line default
+ #line hidden
+
+
+ #line 156 "..\..\MainWindow.xaml"
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+ internal System.Windows.Controls.Label label_Copy1;
+
+ #line default
+ #line hidden
+
+
+ #line 157 "..\..\MainWindow.xaml"
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+ internal System.Windows.Controls.Label label_Copy2;
+
+ #line default
+ #line hidden
+
+
+ #line 158 "..\..\MainWindow.xaml"
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+ internal System.Windows.Controls.Label label_Copy3;
+
+ #line default
+ #line hidden
+
+
+ #line 159 "..\..\MainWindow.xaml"
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+ internal System.Windows.Controls.Label label_Copy4;
+
+ #line default
+ #line hidden
+
+
+ #line 160 "..\..\MainWindow.xaml"
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+ internal System.Windows.Controls.Label label_Copy5;
+
+ #line default
+ #line hidden
+
+
+ #line 161 "..\..\MainWindow.xaml"
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+ internal System.Windows.Controls.Label label_Copy6;
+
+ #line default
+ #line hidden
+
+
+ #line 162 "..\..\MainWindow.xaml"
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+ internal System.Windows.Controls.Label label_Copy7;
+
+ #line default
+ #line hidden
+
+
+ #line 163 "..\..\MainWindow.xaml"
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+ internal System.Windows.Controls.Label label_Copy8;
+
+ #line default
+ #line hidden
+
+ private bool _contentLoaded;
+
+ ///
+ /// InitializeComponent
+ ///
+ [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")]
+ public void InitializeComponent() {
+ if (_contentLoaded) {
+ return;
+ }
+ _contentLoaded = true;
+ System.Uri resourceLocater = new System.Uri("/STARK;component/mainwindow.xaml", System.UriKind.Relative);
+
+ #line 1 "..\..\MainWindow.xaml"
+ System.Windows.Application.LoadComponent(this, resourceLocater);
+
+ #line default
+ #line hidden
+ }
+
+ [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")]
+ [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)]
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Design", "CA1033:InterfaceMethodsShouldBeCallableByChildTypes")]
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Maintainability", "CA1502:AvoidExcessiveComplexity")]
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1800:DoNotCastUnnecessarily")]
+ void System.Windows.Markup.IComponentConnector.Connect(int connectionId, object target) {
+ switch (connectionId)
+ {
+ case 1:
+ this.STARK = ((STARK.MainWindow)(target));
+
+ #line 11 "..\..\MainWindow.xaml"
+ this.STARK.Closing += new System.ComponentModel.CancelEventHandler(this.STARK_Closing);
+
+ #line default
+ #line hidden
+ return;
+ case 2:
+ this.donateButton = ((System.Windows.Controls.Button)(target));
+
+ #line 14 "..\..\MainWindow.xaml"
+ this.donateButton.Click += new System.Windows.RoutedEventHandler(this.donateButton_Click);
+
+ #line default
+ #line hidden
+ return;
+ case 3:
+ this.tabControl = ((MahApps.Metro.Controls.MetroAnimatedTabControl)(target));
+ return;
+ case 4:
+ this.synthesizerToggle = ((System.Windows.Controls.CheckBox)(target));
+
+ #line 24 "..\..\MainWindow.xaml"
+ this.synthesizerToggle.Checked += new System.Windows.RoutedEventHandler(this.synthesizerToggle_Checked);
+
+ #line default
+ #line hidden
+
+ #line 24 "..\..\MainWindow.xaml"
+ this.synthesizerToggle.Unchecked += new System.Windows.RoutedEventHandler(this.synthesizerToggle_Checked);
+
+ #line default
+ #line hidden
+ return;
+ case 5:
+ this.TTS_CommandTextBox = ((System.Windows.Controls.TextBox)(target));
+
+ #line 27 "..\..\MainWindow.xaml"
+ this.TTS_CommandTextBox.TextChanged += new System.Windows.Controls.TextChangedEventHandler(this.TTS_CommandTextBox_TextChanged);
+
+ #line default
+ #line hidden
+ return;
+ case 6:
+ this.CommandLabel = ((System.Windows.Controls.Label)(target));
+ return;
+ case 7:
+ this.TTS_Pause = ((System.Windows.Controls.Button)(target));
+
+ #line 31 "..\..\MainWindow.xaml"
+ this.TTS_Pause.Click += new System.Windows.RoutedEventHandler(this.TTS_Pause_Click);
+
+ #line default
+ #line hidden
+ return;
+ case 8:
+ this.TTS_Skip = ((System.Windows.Controls.Button)(target));
+
+ #line 32 "..\..\MainWindow.xaml"
+ this.TTS_Skip.Click += new System.Windows.RoutedEventHandler(this.TTS_Skip_Click);
+
+ #line default
+ #line hidden
+ return;
+ case 9:
+ this.TTS_VolumeSlider = ((System.Windows.Controls.Slider)(target));
+
+ #line 35 "..\..\MainWindow.xaml"
+ this.TTS_VolumeSlider.ValueChanged += new System.Windows.RoutedPropertyChangedEventHandler(this.TTS_VolumeSlider_ValueChanged);
+
+ #line default
+ #line hidden
+ return;
+ case 10:
+ this.TTS_VolumeSliderBox = ((System.Windows.Controls.TextBox)(target));
+ return;
+ case 11:
+ this.TTS_VolumeLabel = ((System.Windows.Controls.Label)(target));
+ return;
+ case 12:
+ this.TTS_RateSlider = ((System.Windows.Controls.Slider)(target));
+
+ #line 40 "..\..\MainWindow.xaml"
+ this.TTS_RateSlider.ValueChanged += new System.Windows.RoutedPropertyChangedEventHandler(this.TTS_RateSlider_ValueChanged);
+
+ #line default
+ #line hidden
+ return;
+ case 13:
+ this.TTS_RateSliderBox = ((System.Windows.Controls.TextBox)(target));
+ return;
+ case 14:
+ this.TTS_RateLabel = ((System.Windows.Controls.Label)(target));
+ return;
+ case 15:
+ this.TTS_Clear = ((System.Windows.Controls.Button)(target));
+
+ #line 44 "..\..\MainWindow.xaml"
+ this.TTS_Clear.Click += new System.Windows.RoutedEventHandler(this.TTS_Clear_Click);
+
+ #line default
+ #line hidden
+ return;
+ case 16:
+ this.TTS_Delete = ((System.Windows.Controls.Button)(target));
+
+ #line 45 "..\..\MainWindow.xaml"
+ this.TTS_Delete.Click += new System.Windows.RoutedEventHandler(this.TTS_Delete_Click);
+
+ #line default
+ #line hidden
+ return;
+ case 17:
+ this.TTS_VoiceComboBox = ((System.Windows.Controls.ComboBox)(target));
+
+ #line 48 "..\..\MainWindow.xaml"
+ this.TTS_VoiceComboBox.SelectionChanged += new System.Windows.Controls.SelectionChangedEventHandler(this.TTS_VoiceComboBox_SelectionChanged);
+
+ #line default
+ #line hidden
+ return;
+ case 18:
+ this.TTS_VoiceLabel = ((System.Windows.Controls.Label)(target));
+ return;
+ case 19:
+ this.SynthQueue = ((System.Windows.Controls.ListView)(target));
+ return;
+ case 20:
+ this.TTS_AddTextBox = ((System.Windows.Controls.TextBox)(target));
+
+ #line 60 "..\..\MainWindow.xaml"
+ this.TTS_AddTextBox.KeyUp += new System.Windows.Input.KeyEventHandler(this.TTS_AddTextBox_KeyUp);
+
+ #line default
+ #line hidden
+ return;
+ case 21:
+ this.TTS_Pause_Copy = ((System.Windows.Controls.Button)(target));
+
+ #line 61 "..\..\MainWindow.xaml"
+ this.TTS_Pause_Copy.Click += new System.Windows.RoutedEventHandler(this.TTS_Add_Click);
+
+ #line default
+ #line hidden
+ return;
+ case 22:
+ this.Audio_MicCheckBox = ((System.Windows.Controls.CheckBox)(target));
+
+ #line 70 "..\..\MainWindow.xaml"
+ this.Audio_MicCheckBox.Checked += new System.Windows.RoutedEventHandler(this.Audio_MicCheckBox_Checked);
+
+ #line default
+ #line hidden
+
+ #line 70 "..\..\MainWindow.xaml"
+ this.Audio_MicCheckBox.Unchecked += new System.Windows.RoutedEventHandler(this.Audio_MicCheckBox_Checked);
+
+ #line default
+ #line hidden
+ return;
+ case 23:
+ this.Audio_MicVolumeSlider = ((System.Windows.Controls.Slider)(target));
+
+ #line 73 "..\..\MainWindow.xaml"
+ this.Audio_MicVolumeSlider.ValueChanged += new System.Windows.RoutedPropertyChangedEventHandler(this.Audio_MicVolumeSlider_ValueChanged);
+
+ #line default
+ #line hidden
+ return;
+ case 24:
+ this.Audio_MicVolumeTextBox = ((System.Windows.Controls.TextBox)(target));
+ return;
+ case 25:
+ this.Audio_MicVolumeLabel = ((System.Windows.Controls.Label)(target));
+ return;
+ case 26:
+ this.Audio_MicBufferSlider = ((System.Windows.Controls.Slider)(target));
+
+ #line 78 "..\..\MainWindow.xaml"
+ this.Audio_MicBufferSlider.ValueChanged += new System.Windows.RoutedPropertyChangedEventHandler(this.Audio_MicBufferSlider_ValueChanged);
+
+ #line default
+ #line hidden
+ return;
+ case 27:
+ this.Audio_MicBufferTextBox = ((System.Windows.Controls.TextBox)(target));
+ return;
+ case 28:
+ this.Audio_MicBufferLabel = ((System.Windows.Controls.Label)(target));
+ return;
+ case 29:
+ this.Audio_LoopbackVolumeSlider = ((System.Windows.Controls.Slider)(target));
+
+ #line 83 "..\..\MainWindow.xaml"
+ this.Audio_LoopbackVolumeSlider.ValueChanged += new System.Windows.RoutedPropertyChangedEventHandler(this.Audio_LoopbackVolumeSlider_ValueChanged);
+
+ #line default
+ #line hidden
+ return;
+ case 30:
+ this.Audio_LoopbackVolumeTextBox = ((System.Windows.Controls.TextBox)(target));
+ return;
+ case 31:
+ this.Audio_LoopbackVolumeLabel = ((System.Windows.Controls.Label)(target));
+ return;
+ case 32:
+ this.Audio_AFFVolumeSlider = ((System.Windows.Controls.Slider)(target));
+
+ #line 88 "..\..\MainWindow.xaml"
+ this.Audio_AFFVolumeSlider.ValueChanged += new System.Windows.RoutedPropertyChangedEventHandler(this.Audio_AFFVolumeSlider_ValueChanged);
+
+ #line default
+ #line hidden
+ return;
+ case 33:
+ this.Audio_AFFVolumeTextBox = ((System.Windows.Controls.TextBox)(target));
+ return;
+ case 34:
+ this.Audio_AFFVolumeLabel = ((System.Windows.Controls.Label)(target));
+ return;
+ case 35:
+ this.Audio_OutputVolumeSlider = ((System.Windows.Controls.Slider)(target));
+
+ #line 93 "..\..\MainWindow.xaml"
+ this.Audio_OutputVolumeSlider.ValueChanged += new System.Windows.RoutedPropertyChangedEventHandler(this.Audio_OutputVolumeSlider_ValueChanged);
+
+ #line default
+ #line hidden
+ return;
+ case 36:
+ this.Audio_OutputVolumeTextBox = ((System.Windows.Controls.TextBox)(target));
+ return;
+ case 37:
+ this.Audio_OutputVolumeLabel = ((System.Windows.Controls.Label)(target));
+ return;
+ case 38:
+ this.AudioItemList = ((System.Windows.Controls.ListView)(target));
+ return;
+ case 39:
+ this.AccentLabel = ((System.Windows.Controls.Label)(target));
+ return;
+ case 40:
+ this.AccentComboBox = ((System.Windows.Controls.ComboBox)(target));
+
+ #line 119 "..\..\MainWindow.xaml"
+ this.AccentComboBox.SelectionChanged += new System.Windows.Controls.SelectionChangedEventHandler(this.AccentComboBox_SelectionChanged);
+
+ #line default
+ #line hidden
+ return;
+ case 41:
+ this.Setup_Microphone = ((System.Windows.Controls.ComboBox)(target));
+
+ #line 126 "..\..\MainWindow.xaml"
+ this.Setup_Microphone.SelectionChanged += new System.Windows.Controls.SelectionChangedEventHandler(this.Setup_Microphone_SelectionChanged);
+
+ #line default
+ #line hidden
+ return;
+ case 42:
+ this.Setup_MicrophoneLabel = ((System.Windows.Controls.Label)(target));
+ return;
+ case 43:
+ this.Setup_OutputCombined = ((System.Windows.Controls.ComboBox)(target));
+
+ #line 130 "..\..\MainWindow.xaml"
+ this.Setup_OutputCombined.SelectionChanged += new System.Windows.Controls.SelectionChangedEventHandler(this.Setup_OutputCombined_SelectionChanged);
+
+ #line default
+ #line hidden
+ return;
+ case 44:
+ this.Setup_OutputCombinedLabel = ((System.Windows.Controls.Label)(target));
+ return;
+ case 45:
+ this.Setup_SynthesizerOnly = ((System.Windows.Controls.ComboBox)(target));
+
+ #line 134 "..\..\MainWindow.xaml"
+ this.Setup_SynthesizerOnly.SelectionChanged += new System.Windows.Controls.SelectionChangedEventHandler(this.Setup_SynthesizerOnly_SelectionChanged);
+
+ #line default
+ #line hidden
+ return;
+ case 46:
+ this.Setup_SynthesizerOnlyLabel = ((System.Windows.Controls.Label)(target));
+ return;
+ case 47:
+ this.steamAppsFolderPath = ((System.Windows.Controls.TextBox)(target));
+ return;
+ case 48:
+ this.Setup_steamAppsLabel = ((System.Windows.Controls.Label)(target));
+ return;
+ case 49:
+ this.steamAppsFolderSelectButton = ((System.Windows.Controls.Button)(target));
+
+ #line 138 "..\..\MainWindow.xaml"
+ this.steamAppsFolderSelectButton.Click += new System.Windows.RoutedEventHandler(this.steamAppsFolderSelectButton_Click);
+
+ #line default
+ #line hidden
+ return;
+ case 50:
+ this.Setup_Game = ((System.Windows.Controls.ComboBox)(target));
+
+ #line 141 "..\..\MainWindow.xaml"
+ this.Setup_Game.SelectionChanged += new System.Windows.Controls.SelectionChangedEventHandler(this.Setup_Game_SelectionChanged);
+
+ #line default
+ #line hidden
+ return;
+ case 51:
+ this.Setup_GameLabel = ((System.Windows.Controls.Label)(target));
+ return;
+ case 52:
+ this.Setup_GameLaunch = ((System.Windows.Controls.Button)(target));
+
+ #line 143 "..\..\MainWindow.xaml"
+ this.Setup_GameLaunch.Click += new System.Windows.RoutedEventHandler(this.Setup_GameLaunch_Click);
+
+ #line default
+ #line hidden
+ return;
+ case 53:
+ this.watchFolderPath = ((System.Windows.Controls.TextBox)(target));
+ return;
+ case 54:
+ this.watchFolderLabel = ((System.Windows.Controls.Label)(target));
+ return;
+ case 55:
+ this.watchFolderSelectButton_Copy = ((System.Windows.Controls.Button)(target));
+
+ #line 148 "..\..\MainWindow.xaml"
+ this.watchFolderSelectButton_Copy.Click += new System.Windows.RoutedEventHandler(this.watchFolderSelectButton_Click);
+
+ #line default
+ #line hidden
+ return;
+ case 56:
+ this.label = ((System.Windows.Controls.Label)(target));
+ return;
+ case 57:
+ this.label_Copy = ((System.Windows.Controls.Label)(target));
+ return;
+ case 58:
+ this.label_Copy1 = ((System.Windows.Controls.Label)(target));
+ return;
+ case 59:
+ this.label_Copy2 = ((System.Windows.Controls.Label)(target));
+ return;
+ case 60:
+ this.label_Copy3 = ((System.Windows.Controls.Label)(target));
+ return;
+ case 61:
+ this.label_Copy4 = ((System.Windows.Controls.Label)(target));
+ return;
+ case 62:
+ this.label_Copy5 = ((System.Windows.Controls.Label)(target));
+ return;
+ case 63:
+ this.label_Copy6 = ((System.Windows.Controls.Label)(target));
+ return;
+ case 64:
+ this.label_Copy7 = ((System.Windows.Controls.Label)(target));
+ return;
+ case 65:
+ this.label_Copy8 = ((System.Windows.Controls.Label)(target));
+ return;
+ }
+ this._contentLoaded = true;
+ }
+ }
+}
+
diff --git a/STARK/obj/Debug/Resources/Icons.baml b/STARK/obj/Debug/Resources/Icons.baml
new file mode 100644
index 0000000..30cd5b6
Binary files /dev/null and b/STARK/obj/Debug/Resources/Icons.baml differ
diff --git a/STARK/obj/Debug/Resources/IconsNonShared.baml b/STARK/obj/Debug/Resources/IconsNonShared.baml
new file mode 100644
index 0000000..fe631e2
Binary files /dev/null and b/STARK/obj/Debug/Resources/IconsNonShared.baml differ
diff --git a/STARK/obj/Debug/STARK.Properties.Resources.resources b/STARK/obj/Debug/STARK.Properties.Resources.resources
new file mode 100644
index 0000000..6c05a97
Binary files /dev/null and b/STARK/obj/Debug/STARK.Properties.Resources.resources differ
diff --git a/STARK/obj/Debug/STARK.csproj.FileListAbsolute.txt b/STARK/obj/Debug/STARK.csproj.FileListAbsolute.txt
index d9762fa..e287996 100644
--- a/STARK/obj/Debug/STARK.csproj.FileListAbsolute.txt
+++ b/STARK/obj/Debug/STARK.csproj.FileListAbsolute.txt
@@ -53,3 +53,26 @@ F:\_Development\Visual_Studio\STARK\STARK\obj\Debug\STARK.g.resources
F:\_Development\Visual_Studio\STARK\STARK\obj\Debug\STARK.Properties.Resources.resources
F:\_Development\Visual_Studio\STARK\STARK\obj\Debug\STARK.csproj.GenerateResource.Cache
F:\_Development\_Desktop\_Visual Studio\STARK\STARK\bin\Debug\STARK.exe.config
+F:\_Development\_Desktop\_Visual Studio\STARK\STARK\bin\Debug\STARK.exe
+F:\_Development\_Desktop\_Visual Studio\STARK\STARK\bin\Debug\STARK.pdb
+F:\_Development\_Desktop\_Visual Studio\STARK\STARK\bin\Debug\MahApps.Metro.dll
+F:\_Development\_Desktop\_Visual Studio\STARK\STARK\bin\Debug\NAudio.dll
+F:\_Development\_Desktop\_Visual Studio\STARK\STARK\bin\Debug\System.Windows.Interactivity.dll
+F:\_Development\_Desktop\_Visual Studio\STARK\STARK\bin\Debug\MahApps.Metro.pdb
+F:\_Development\_Desktop\_Visual Studio\STARK\STARK\bin\Debug\MahApps.Metro.xml
+F:\_Development\_Desktop\_Visual Studio\STARK\STARK\bin\Debug\NAudio.xml
+F:\_Development\_Desktop\_Visual Studio\STARK\STARK\obj\Debug\Resources\Icons.baml
+F:\_Development\_Desktop\_Visual Studio\STARK\STARK\obj\Debug\Resources\IconsNonShared.baml
+F:\_Development\_Desktop\_Visual Studio\STARK\STARK\obj\Debug\MainWindow.g.cs
+F:\_Development\_Desktop\_Visual Studio\STARK\STARK\obj\Debug\App.g.cs
+F:\_Development\_Desktop\_Visual Studio\STARK\STARK\obj\Debug\GeneratedInternalTypeHelper.g.cs
+F:\_Development\_Desktop\_Visual Studio\STARK\STARK\obj\Debug\STARK_MarkupCompile.cache
+F:\_Development\_Desktop\_Visual Studio\STARK\STARK\obj\Debug\STARK_MarkupCompile.lref
+F:\_Development\_Desktop\_Visual Studio\STARK\STARK\obj\Debug\App.baml
+F:\_Development\_Desktop\_Visual Studio\STARK\STARK\obj\Debug\MainWindow.baml
+F:\_Development\_Desktop\_Visual Studio\STARK\STARK\obj\Debug\STARK.g.resources
+F:\_Development\_Desktop\_Visual Studio\STARK\STARK\obj\Debug\STARK.Properties.Resources.resources
+F:\_Development\_Desktop\_Visual Studio\STARK\STARK\obj\Debug\STARK.csproj.GenerateResource.Cache
+F:\_Development\_Desktop\_Visual Studio\STARK\STARK\obj\Debug\STARK.exe
+F:\_Development\_Desktop\_Visual Studio\STARK\STARK\obj\Debug\STARK.pdb
+F:\_Development\_Desktop\_Visual Studio\STARK\STARK\obj\Debug\STARK.csprojResolveAssemblyReference.cache
diff --git a/STARK/obj/Debug/STARK.csproj.GenerateResource.Cache b/STARK/obj/Debug/STARK.csproj.GenerateResource.Cache
new file mode 100644
index 0000000..435ac0a
Binary files /dev/null and b/STARK/obj/Debug/STARK.csproj.GenerateResource.Cache differ
diff --git a/STARK/obj/Debug/STARK.csprojResolveAssemblyReference.cache b/STARK/obj/Debug/STARK.csprojResolveAssemblyReference.cache
new file mode 100644
index 0000000..8eeab87
Binary files /dev/null and b/STARK/obj/Debug/STARK.csprojResolveAssemblyReference.cache differ
diff --git a/STARK/obj/Debug/STARK.exe b/STARK/obj/Debug/STARK.exe
new file mode 100644
index 0000000..e6225ff
Binary files /dev/null and b/STARK/obj/Debug/STARK.exe differ
diff --git a/STARK/obj/Debug/STARK.g.resources b/STARK/obj/Debug/STARK.g.resources
new file mode 100644
index 0000000..4e66187
Binary files /dev/null and b/STARK/obj/Debug/STARK.g.resources differ
diff --git a/STARK/obj/Debug/STARK.pdb b/STARK/obj/Debug/STARK.pdb
new file mode 100644
index 0000000..b56cd75
Binary files /dev/null and b/STARK/obj/Debug/STARK.pdb differ
diff --git a/STARK/obj/Debug/STARK_MarkupCompile.cache b/STARK/obj/Debug/STARK_MarkupCompile.cache
new file mode 100644
index 0000000..833a178
--- /dev/null
+++ b/STARK/obj/Debug/STARK_MarkupCompile.cache
@@ -0,0 +1,20 @@
+STARK
+
+
+winexe
+C#
+.cs
+F:\_Development\_Desktop\_Visual Studio\STARK\STARK\obj\Debug\
+STARK
+none
+false
+DEBUG;TRACE
+F:\_Development\_Desktop\_Visual Studio\STARK\STARK\App.xaml
+3-1260861683
+
+17-1786567394
+18149226738
+MainWindow.xaml;Resources\Icons.xaml;Resources\IconsNonShared.xaml;
+
+False
+
diff --git a/STARK/obj/Debug/STARK_MarkupCompile.i.cache b/STARK/obj/Debug/STARK_MarkupCompile.i.cache
index dd73b02..23e7ba2 100644
--- a/STARK/obj/Debug/STARK_MarkupCompile.i.cache
+++ b/STARK/obj/Debug/STARK_MarkupCompile.i.cache
@@ -13,7 +13,7 @@ F:\_Development\_Desktop\_Visual Studio\STARK\STARK\App.xaml
3-1260861683
21-1351854477
-201739124649
+18149226738
MainWindow.xaml;Resources\Icons.xaml;Resources\IconsNonShared.xaml;
False
diff --git a/STARK/obj/Debug/STARK_MarkupCompile.lref b/STARK/obj/Debug/STARK_MarkupCompile.lref
new file mode 100644
index 0000000..9aad4ec
--- /dev/null
+++ b/STARK/obj/Debug/STARK_MarkupCompile.lref
@@ -0,0 +1,4 @@
+
+FF:\_Development\_Desktop\_Visual Studio\STARK\STARK\App.xaml;;
+FF:\_Development\_Desktop\_Visual Studio\STARK\STARK\MainWindow.xaml;;
+
diff --git a/STARK/obj/Debug/TempPE/Properties.Resources.Designer.cs.dll b/STARK/obj/Debug/TempPE/Properties.Resources.Designer.cs.dll
index b987b50..cda54a9 100644
Binary files a/STARK/obj/Debug/TempPE/Properties.Resources.Designer.cs.dll and b/STARK/obj/Debug/TempPE/Properties.Resources.Designer.cs.dll differ
diff --git a/STARK/obj/Release/DesignTimeResolveAssemblyReferences.cache b/STARK/obj/Release/DesignTimeResolveAssemblyReferences.cache
new file mode 100644
index 0000000..23f5f66
Binary files /dev/null and b/STARK/obj/Release/DesignTimeResolveAssemblyReferences.cache differ
diff --git a/STARK/obj/Release/STARK.exe b/STARK/obj/Release/STARK.exe
index 0e24767..785cb6b 100644
Binary files a/STARK/obj/Release/STARK.exe and b/STARK/obj/Release/STARK.exe differ
diff --git a/STARK/obj/Release/STARK.pdb b/STARK/obj/Release/STARK.pdb
index 13e9126..f4481a4 100644
Binary files a/STARK/obj/Release/STARK.pdb and b/STARK/obj/Release/STARK.pdb differ
diff --git a/ipch/LOOPBACKMANAGEMENTDLL-50f273a1/LOOPBACKMANAGEMENTDLL-e7117a0a.ipch b/ipch/LOOPBACKMANAGEMENTDLL-50f273a1/LOOPBACKMANAGEMENTDLL-e7117a0a.ipch
deleted file mode 100644
index b57f730..0000000
Binary files a/ipch/LOOPBACKMANAGEMENTDLL-50f273a1/LOOPBACKMANAGEMENTDLL-e7117a0a.ipch and /dev/null differ