Code:
/ DotNET / DotNET / 8.0 / untmp / WIN_WINDOWS / lh_tools_devdiv_wpf / Windows / wcp / Speech / Src / Internal / Synthesis / WaveHeader.cs / 1 / WaveHeader.cs
//------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//
// This class defines the header used to identify a waveform-audio
// buffer.
//
// with the CLR 607
// History:
// 2/1/2005 [....] Created from the Sapi Managed code
//-----------------------------------------------------------------
using System;
using System.Runtime.InteropServices;
using System.Speech.Synthesis.TtsEngine;
namespace System.Speech.Internal.Synthesis
{
///
///
///
internal sealed class WaveHeader : IDisposable
{
//*******************************************************************
//
// Constructors
//
//*******************************************************************
#region Constructors
///
/// Initialize an instance of a byte array.
///
///
/// MMSYSERR.NOERROR if successful
internal WaveHeader (byte [] buffer)
{
_dwBufferLength = buffer.Length;
_gcHandle = GCHandle.Alloc (buffer, GCHandleType.Pinned);
}
///
/// Frees any memory allocated for the buffer.
///
~WaveHeader ()
{
Dispose (false);
}
///
/// TODOC
///
public void Dispose ()
{
Dispose (true);
GC.SuppressFinalize (this);
}
///
/// Frees any memory allocated for the buffer.
///
private void Dispose (bool disposing)
{
if (disposing)
{
ReleaseData ();
if (_gcHandleWaveHdr.IsAllocated)
{
_gcHandleWaveHdr.Free ();
}
}
}
#endregion
//********************************************************************
//
// Internal Methods
//
//*******************************************************************
#region Internal Methods
internal void ReleaseData ()
{
if (_gcHandle.IsAllocated)
{
_gcHandle.Free ();
}
}
#endregion
//********************************************************************
//
// Internal Properties
//
//********************************************************************
#region Internal Properties
internal GCHandle WAVEHDR
{
get
{
if (!_gcHandleWaveHdr.IsAllocated)
{
_waveHdr.lpData = _gcHandle.AddrOfPinnedObject ();
_waveHdr.dwBufferLength = (uint) _dwBufferLength;
_waveHdr.dwBytesRecorded = 0;
_waveHdr.dwUser = 0;
_waveHdr.dwFlags = 0;
_waveHdr.dwLoops = 0;
_waveHdr.lpNext = IntPtr.Zero;
_gcHandleWaveHdr = GCHandle.Alloc (_waveHdr, GCHandleType.Pinned);
}
return _gcHandleWaveHdr;
}
}
internal int SizeHDR
{
get
{
return Marshal.SizeOf (_waveHdr);
}
}
#endregion
//*******************************************************************
//
// Internal Fields
//
//********************************************************************
#region Internal Fields
///
/// Used by dwFlags in WaveHeader
/// Set by the device driver to indicate that it is finished with the buffer
/// and is returning it to the application.
///
internal const int WHDR_DONE = 0x00000001;
///
/// Used by dwFlags in WaveHeader
/// Set by Windows to indicate that the buffer has been prepared with the
/// waveInPrepareHeader or waveOutPrepareHeader function.
///
internal const int WHDR_PREPARED = 0x00000002;
///
/// Used by dwFlags in WaveHeader
/// This buffer is the first buffer in a loop. This flag is used only with
/// output buffers.
///
internal const int WHDR_BEGINLOOP = 0x00000004;
///
/// Used by dwFlags in WaveHeader
/// This buffer is the last buffer in a loop. This flag is used only with
/// output buffers.
///
internal const int WHDR_ENDLOOP = 0x00000008;
///
/// Used by dwFlags in WaveHeader
/// Set by Windows to indicate that the buffer is queued for playback.
///
internal const int WHDR_INQUEUE = 0x00000010;
///
/// Set in WaveFormat.wFormatTag to specify PCM data.
///
internal const int WAVE_FORMAT_PCM = 1;
#endregion
//*******************************************************************
//
// Private Fields
//
//*******************************************************************
#region private Fields
///
/// Long pointer to the address of the waveform buffer. This buffer must
/// be block-aligned according to the nBlockAlign member of the
/// WaveFormat structure used to open the device.
///
private GCHandle _gcHandle = new GCHandle ();
private GCHandle _gcHandleWaveHdr = new GCHandle ();
private WAVEHDR _waveHdr = new WAVEHDR ();
///
/// Specifies the length, in bytes, of the buffer.
///
internal int _dwBufferLength;
#endregion
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- BinaryMethodMessage.cs
- AttributeProviderAttribute.cs
- TableColumn.cs
- WebSysDisplayNameAttribute.cs
- Component.cs
- shaperfactoryquerycachekey.cs
- _ContextAwareResult.cs
- SettingsAttributes.cs
- DataGridItem.cs
- MSG.cs
- RIPEMD160Managed.cs
- PriorityBindingExpression.cs
- EntitySetBaseCollection.cs
- CTreeGenerator.cs
- XmlChoiceIdentifierAttribute.cs
- XmlExtensionFunction.cs
- XPathAncestorQuery.cs
- Soap.cs
- ComplexBindingPropertiesAttribute.cs
- FileFormatException.cs
- DataContractAttribute.cs
- Helpers.cs
- SqlDataRecord.cs
- ImageField.cs
- sqlnorm.cs
- RecommendedAsConfigurableAttribute.cs
- ReadOnlyCollection.cs
- BodyGlyph.cs
- StringUtil.cs
- DataRowView.cs
- AppDomainEvidenceFactory.cs
- _ConnectOverlappedAsyncResult.cs
- TextElementEnumerator.cs
- TogglePattern.cs
- DataServices.cs
- TreeViewItemAutomationPeer.cs
- MachineKeySection.cs
- PreDigestedSignedInfo.cs
- XPathMultyIterator.cs
- EntityDataSourceView.cs
- SemaphoreSlim.cs
- ApplicationFileParser.cs
- TrackingAnnotationCollection.cs
- XPathNavigator.cs
- MediaEntryAttribute.cs
- VectorCollection.cs
- CodeSnippetExpression.cs
- VisualTreeHelper.cs
- DefaultPropertyAttribute.cs
- BitmapImage.cs
- FixedNode.cs
- Scripts.cs
- ServiceActivationException.cs
- PermissionToken.cs
- ProtocolsConfiguration.cs
- AssemblyAttributes.cs
- DesignTimeParseData.cs
- Transaction.cs
- FrameworkObject.cs
- RowToParametersTransformer.cs
- OrderedDictionary.cs
- TextSegment.cs
- CheckBoxPopupAdapter.cs
- PointLightBase.cs
- DefaultTraceListener.cs
- TriState.cs
- HttpModuleActionCollection.cs
- PatternMatcher.cs
- EditorPart.cs
- PopupEventArgs.cs
- FormsAuthenticationModule.cs
- AudienceUriMode.cs
- CopyNodeSetAction.cs
- Point3DConverter.cs
- DataColumn.cs
- ConsoleKeyInfo.cs
- ReflectPropertyDescriptor.cs
- ErrorHandler.cs
- ErrorWebPart.cs
- GeometryHitTestParameters.cs
- ResXDataNode.cs
- SymbolType.cs
- AuthenticationException.cs
- _Semaphore.cs
- Adorner.cs
- MetadataArtifactLoader.cs
- DateTimeOffsetStorage.cs
- Base64Stream.cs
- ThreadStartException.cs
- ConsoleTraceListener.cs
- Polygon.cs
- WindowsFormsLinkLabel.cs
- DrawListViewColumnHeaderEventArgs.cs
- StringFreezingAttribute.cs
- MergeFailedEvent.cs
- UnmanagedMarshal.cs
- Viewport3DVisual.cs
- WebServiceClientProxyGenerator.cs
- InitializationEventAttribute.cs
- MetadataSerializer.cs