Unosquare.FFmpegMediaElement Defines various constants used across all classes Represents a multimedia source with its corresponding control methods. Provides audio data samples in PCM, 16-bit format. This class is used to keep track of the samples and matching frames times It also ensures samples are not repeated and are unique in a discrete timeline Initializes a new instance of the class. The media. Clears the buffer and frame times Provides the next small buffer that the audio device requests. the buffer to fill is a non-null reference to the buffer that needs to be filled The return value represents how many bytes were written to buffer. Gets a value indicating whether the wall clock is in the first time segment. true if this instance is in first time segment; otherwise, false. Gets a value indicating whether the wall clock is in the last time segment. true if this instance is in last time segment; otherwise, false. Gets a value indicating whether frame bound should be checked. Typically, if the realtime clock is in the first time segment, we don't check for bounds true if [check frame bounds]; otherwise, false. Waits for the frame extractor to be ready for playback. Returns true if successful, false if it timed out. Gets the estimated duration in number of seconds. This is not necessarily the real, precise duration in all media streams but it tends to be extremely close. The duration. Gets the start time of the leading media stream. The start time. Gets the end time of the leading media stream. The end time. Determines if the input is a live stream. Gets the current position in number of seconds. Use the Seek method to move to a different position within the input. The position. Queries if a leading frame for the given position is immediately available. The position. Gets or sets the volume of the current session. Valid ranges are anything from 0 to 1 The volume. Gets or sets the video playback speed ratio. By default the speed ratio is 1.0M Note: Audio will not be rendered when the speed ratio is not exactly 1.0M The speed ratio. Gets a value indicating whether we have reached the end of stream. This does not necessarily means the media has reached an end. It simply means that all data within the media has been read (not necessarily that it all has been rendered). true if this we are at end of stream; otherwise, false. Gets a value indicating whether the real-time clock is on the last media frame. true if this instance has media ended; otherwise, false. Gets a value indicating whether the media is playing. true if the media is playing; otherwise, false. Sets the Volume to 0 Starts or resumes media playback Pauses media playback Rewinds and pauses media playback Seeks to the specified target second. The target second. Multicast event for property change notifications. Checks if a property already matches a desired value. Sets the property and notifies listeners only when necessary. Type of the property. Reference to a property with both getter and setter. Desired value for the property. Name of the property used to notify listeners. This value is optional and can be provided automatically when invoked from compilers that support CallerMemberName. True if the value was changed, false if the existing value matched the desired value. Notifies listeners that a property value has changed. Name of the property used to notify listeners. This value is optional and can be provided automatically when invoked from compilers that support . Initializes a new instance of the class. The file path. The error callback. Initializes a new instance of the class. The file path. The error callback. The referer. Leave null or emtpy to skip setting it. The user agent. Leave null or empty in order to skip setting a User Agent errorCallback cannot be null or filePath cannot be null or empty errorCallback cannot be null or filePath cannot be null or empty Internals the seek input. The render time. Extracts the media frames continuously. Renders the video image. This method is called on a Dispatcher timer. It is responsible for rendering the decoded video image continuously. It also avoids rendering the same image again. The sender. The instance containing the event data. Renders the audio buffer. This is the implementation of IAudioDataProvider.RenderAudioBufferMethod It basically gets the decoded PCM bytes from the audio buffer provider. This method is called by the audio device itself. The buffer to fill. The bytes written. Initializes the internal transcoder -- This create the input, processing, and output blocks that make up the video and audio decoding stream. The file path. Name of the input format. Leave null or empty to detect automatically The referer. Leave null or empty to skip setting it The user agent. Leave null or empty to skip setting it. Could not find stream info or Media must contain at least a video or and audio stream Could not open file or Could not find stream info or Media must contain a video stream or Media must contain an audio stream or Unsupported codec or Could not initialize the output conversion context or Could not create output codec context from input or Could not open codec Initializes the audio. Unsupported audio codec or Could not create audio output codec context from input or Could not open codec Could not load media file Pulls the next-available frame. This does not queue the frame in either the video or audio queue. Please keep in mind that you will need to manually call the Release() method the returned object are done with it. If working with Media Caches, the cache will automatically release the frame Error while decoding frame Releases all managed and unmanaged resources Represents a control that contains audio and/or video. In contrast with System.Windows.Controls.MediaElement, this version uses the FFmpeg library to perform reading and decoding of media streams. Defines constants for Property Names that are used to either register dependency properties or notify property changes. Called when [source property changed]. The dependency object. The instance containing the event data. Gets/Sets the Source on this MediaElement. The Source property is the Uri of the media to be played. Note: Currently, this does not support the pack protocol (pack://) DependencyProperty for Stretch property. Called when [stretch property changed]. The dependency object. The instance containing the event data. Gets/Sets the Stretch on this MediaElement. The Stretch property determines how large the MediaElement will be drawn. DependencyProperty for StretchDirection property. Called when [stretch direction property changed]. The dependency object. The instance containing the event data. Gets/Sets the stretch direction of the Viewbox, which determines the restrictions on scaling that are applied to the content inside the Viewbox.  For instance, this property can be used to prevent the content from being smaller than its native size or larger than its native size.     The DependencyProperty for the MediaElement.Volume property. Gets/Sets the Volume property on the MediaElement. Note: Valid values are from 0 to 1     The DependencyProperty for the MediaElement.Balance property. Gets/Sets the Balance property on the MediaElement. Note: Balance changes are not yet supported. Value will always be 0; The DependencyProperty for the MediaElement.ScrubbingEnabled property. Gets/Sets the ScrubbingEnabled property on the MediaElement. Note: Frame scrubbing is always enabled. The real effect of this property is that when it is set to true, setting values on the Position property occurs synchronously. Wehn it is set to false, setting values on the Position property occurs asyncrhonously The DependencyProperty for the MediaElement.UnloadedBehavior property. Specifies how the underlying media should behave when the given MediaElement is unloaded, the default behavior is to Close the media. The DependencyProperty for the MediaElement.LoadedBehavior property. Specifies the behavior that the media element should have when it is loaded. The default behavior is that it is under manual control (i.e. the caller should call methods such as Play in order to play the media). If a source is set, then the default behavior changes to to be playing the media. If a source is set and a loaded behavior is also set, then the loaded behavior takes control. The DependencyProperty for the MediaElement.IsMuted property. Gets/Sets the IsMuted property on the MediaElement. Note: Muting Sets the Volume to 0; Unmuting set the volume to what it originally was before muting.     The DependencyProperty for the MediaElement.Position property. Callback when the seek position timer ticks. The sender. The instance containing the event data. Gets/Sets the Position property on the MediaElement.     The DependencyProperty for the MediaElement.SpeedRatio property. Gets/Sets the SpeedRatio property on the MediaElement. Dependency property for the user agent property Gets or sets the user agent. Property takes effect only upon loading live streams such as m3u8 files. The user agent. Dependency property for the Referer property Gets or sets the referer. Property takes effect only upon loading live streams such as m3u8 files. The user agent. Returns whether the given media has audio. Only valid after the MediaOpened event has fired. Returns whether the given media has video. Only valid after the MediaOpened event has fired. Gets the video codec. Only valid after the MediaOpened event has fired. Gets the video bitrate. Only valid after the MediaOpened event has fired. Returns the natural width of the media in the video. Only valid after the MediaOpened event has fired. Returns the natural height of the media in the video. Only valid after the MediaOpened event has fired. Gets the video frame rate. Only valid after the MediaOpened event has fired. Gets the length of the video frame. Only valid after the MediaOpened event has fired. Gets the audio codec. Only valid after the MediaOpened event has fired. Gets the audio bitrate. Only valid after the MediaOpened event has fired. Gets the audio channels count. Only valid after the MediaOpened event has fired. Gets the audio output bits per sample. Only valid after the MediaOpened event has fired. This value will always have to be 16 Gets the audio sample rate. Only valid after the MediaOpened event has fired. Gets the audio output sample rate. Only valid after the MediaOpened event has fired. Gets the audio bytes per sample. Only valid after the MediaOpened event has fired. Gets the Media's natural duration Only valid after the MediaOpened event has fired. Returns whether the given media can be paused. This is only valid after the MediaOpened event has fired. Note: This property is computed based on wether the stream is detected to be a live stream. Gets a value indicating whether the media is playing. Gets a value indicating whether the media has reached its end. true if this instance has media ended; otherwise, false. Handles the PropertyChanged event of the underlying media. The source of the event. The instance containing the event data. Called when a media error occurs. The sender. The ex. Opens the media. The source URI. The referer. Optional -- Leave null or empty if you do not wish to set it. The user agent. Optional -- Leave null or empty if you do not wish to set it. Closes the media. if set to true [update properties]. Updates the media properties. Defines constants that contain Routed event names MediaFailedEvent is a routed event. Raised when the media fails to load or a fatal error has occurred which prevents playback. MediaErrorEvent is a routed event. Raised when a problem with the media is found MediaOpened is a routed event. Raised when the media is opened MediaEnded is a routed event Raised when the corresponding media ends. Gets or sets the horizontal alignment characteristics applied to this element when it is composed within a parent element, such as a panel or items control. Gets the current frame being displayed Clone of the current frame Provides access to the paths where FFmpeg binaries are extracted to Initializes the class. Gets the path to where the FFmpeg binaries are stored Gets the full path to ffmpeg.exe Gets the full path to ffprobe.exe Gets the full path to ffplay.exe Initializes the class. Initializes a new instance of the class. Initializes the seek position timer. Multicast event for property change notifications. Checks if a property already matches a desired value. Sets the property and notifies listeners only when necessary. Type of the property. Reference to a property with both getter and setter. Desired value for the property. Name of the property used to notify listeners. This value is optional and can be provided automatically when invoked from compilers that support CallerMemberName. True if the value was changed, false if the existing value matched the desired value. Notifies listeners that a property value has changed. Name of the property used to notify listeners. This value is optional and can be provided automatically when invoked from compilers that support . Gets or sets the base URI of the current application context. Dumps the state into a string dictionary. Optionally, it prints the output to the debugging console Begins playback if not already playing Pauses media playback. Stops media playback. Closes the media source and releases its resources Provides methods and constants for miscellaneous operations Miscellaneous native methods Extracts the FFmpeg Dlls. The resource prefix. Registers FFmpeg library and initializes its components. Determines if we are currently in Design Time true if this instance is in design time; otherwise, false. Converts a Timestamp to seconds. The ts. The stream time base. Converts seconds to a timestamp value. The seconds. The stream time base. Gets the FFmpeg error mesage based on the error code The code. Represents a set of ordered media frames of a given type Gets the capacity in number frames. Gets the current amount of frames. Gets the index of the middle frame. Gets the PTS in seconds of the first frame Gets the PTS in seconds of the last frame Gets the PTS in seconds of the middle frame Gets the best effort resentation time (PTS) of the first frame. Gets the end time. Last Frame Time + Last Frame Duration Gets the total duration from the first frame start time to the last frame start time + its duration. Gets a value indicating whether this cache is full. Gets a value indicating whether this cache is empty. Gets the type of frames this cache is holding. Gets the frame right at the middle of the collection Gets the first frame. Gets the last frame. Initializes a new instance of the class. This copies all properties from an existing cache excluding frames of course. The other cache. Initializes a new instance of the class. The frame rate. The type. Recomputes the properties. Throws the invalid frame type exception. Type of the frame. Replaces the internally-held frames with the specified new frames. The new frames. Buffer does not support the capacity of new elements Adds the specified frame at the right location. This method ensures the collection stays ordered The frame. Buffer is already at capacity. Removes the first frame and releases it. Removes the last frame and releases it. Clears all the frames and releases them. Highly optimized frame search function combining guess, binary and finally, linear search The render time. Gets the frame at the given index. The index. Gets a frame at the given render time. The render time. Gets a maximum of frameCount frames at the given starting renderTime The render time. The frame count. Gets a maximum duration of frames at the given starting renderTime The render time. The duration. Gets the index of the frame. Returns -1 for not found. The frame. Gets the index of the frame. Returns -1 if not found. The render time. Enumerates the different media frame types Represents a video or audio frame. Gets or sets the flags. For video frames, gets or sets the type of the picture. Gets the frame's best effort PTS in seconds For video frames, gets the pointer to the decoded picture buffer For video frames, gets the length of the decoded picture buffer For video frames, gets the coded picture number. Gets the duration in seconds of the frame. Gets the frame's best effort PTS Gets the type of frame Gets the stream index this frame belongs to For audio frames, holds the bytes array with the decoded waveform For video frames, A pointer to the decodes picture For video frames, A Pointer to the decoded picture buffer Synchronized lock for frame disposal Initializes a new instance of the class. All properties need to be set immediately after instantiation Enumerates the flags of a decoded frame Enumerates the picture types for video frames Represents an event that occurs when the underlying media stream fails to load or corrupt packets are found within the stream. Gets the error exception. Enumerates Media Playback error codes Represents an error that occurs during media playback or during a seek operation. A high precision timer designed to keep track of media playback. Control methods mimic media playback control methods such as Play Pause, Stop and Seek Initializes a new instance of the class. Gets a value indicating whether the timer is running. If the timer is stopped or paused, then this property will return false. Stops the timer and makes the elapsed time effectively 0 Starts or resumes the timer Pauses the timer Sets the Position to the specified value. If the timer is running, it will be paused after this method call. The ts. Sets the Position to the specified value. If the timer is running, it will be paused after this method call. The seconds. Sets the Position to the specified value. If the timer is running, it will be paused after this method call. The ticks. Gets or sets the speed ratio at which the timer runs. Gets or Sets the position in ticks. Gets or Sets the position in the elapsed seconds Gets or Sets the TimeSpan representing the total elapsed milliseconds. A strongly-typed resource class, for looking up localized strings, etc. Returns the cached ResourceManager instance used by this class. Overrides the current thread's CurrentUICulture property for all resource lookups using this strongly typed resource class. Looks up a localized resource of type System.Drawing.Bitmap. An interface that defines a callback method providing audio data When called in its implementation, this method fills the buffer with audio data and sets the amount of bytes written The buffer to fill. The bytes written. True if the audio device should request more samples. False if the audio device needs to be shutdown Represents a calss that renders audio data to speakers via callbacks A thread-safe callback provider Initializes a new instance of the class. Initializes the specified provider. The provider. The sample rate. The channels. The bits per sample. Wave device already started Stops the underlying audio device Wave device not started Plays the underlying audio device Wave device not started Pauses the underlying audio device Wave device not started Gets a value indicating whether this instance has initialized. true if this instance has initialized; otherwise, false. Gets or sets the volume (amplitude) of the data samples. Valid range is from 0.0 to 1.0 Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. Microsoft ADPCM See http://icculus.org/SDL_sound/downloads/external_documentation/wavecomp.htm Empty constructor needed for marshalling from a pointer Samples per block Number of coefficients Coefficients Microsoft ADPCM Sample Rate Channels Serializes this wave format Binary writer String Description of this WaveFormat NativeDirectSoundOut using DirectSound COM interop. Contact author: Alexandre Mutel - alexandre_mutel at yahoo.fr Modified by: Graham "Gee" Plumb Playback Stopped Gets the DirectSound output devices in the system 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 Gets the current position from the wave output device. Initialise playback The waveprovider to be played Current playback state The volume 1.0 is full scale 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 IDirectSound interface IDirectSoundBuffer interface IDirectSoundNotify interface 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 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. 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 Class for enumerating DirectSound devices The device identifier Device description Device module name GSM 610 Creates a GSM 610 WaveFormat For now hardcoded to 13kbps Samples per block Writes this structure to a BinaryWriter 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 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. Generic interface for all WaveProviders. Gets the WaveFormat of this WaveProvider. The wave format. 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. Playback State Stopped Playing Paused 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 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 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 Read bytes from this WaveProvider Buffer to read into Offset within buffer to read to Bytes desired Bytes read 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 Returns the encoding type used Writes this WaveFormat object to a stream the output stream 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 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 Returns the WaveFormat unchanged for non PCM or IEEE float SubFormat (may be one of AudioMediaSubtypes) Serialize String representation This class used for marshalling from unmanaged code Allows the extra data to be read parameterless constructor for marshalling Reads this structure from a BinaryReader Writes this structure to a BinaryWriter