BASS.NET API for the Un4seen BASS Audio LibraryEncoderOGG ClassBASS.NET API for the Un4seen BASS Audio Library
Encoder class implementation for OGG-Vorbis encoding using "oggenc2.exe".
Inheritance Hierarchy


Namespace: Un4seen.Bass.Misc
Assembly: Bass.Net (in Bass.Net.dll) Version:

public sealed class EncoderOGG : BaseEncoder

The EncoderOGG type exposes the following members.


Public methodEncoderOGG
Creates an instance of a OGG encoder implementation.

Public propertyChannelBitwidth
This property returns the actual bitwidth of the sample data of the channel (e.g. 8, 16, 32).
(Inherited from BaseEncoder.)
Public propertyChannelHandle
Gets or Sets the channel handle which is used to create the broadcast encoder class.
(Inherited from BaseEncoder.)
Public propertyChannelInfo
Returns the general channel info.
(Inherited from BaseEncoder.)
Public propertyChannelNumChans
This property returns the actual number of channles of the sample data BASS is using with the channel (e.g. 1=mono, 2=stereo, etc.).
(Inherited from BaseEncoder.)
Public propertyChannelSampleRate
This property returns the actual sample rate in Hz of the sample data BASS is using with the channel (e.g. 44100).
(Inherited from BaseEncoder.)
Public propertyDefaultOutputExtension
This return the default extension of an output file for this encoder (".ogg").
(Overrides BaseEncoderDefaultOutputExtension.)
Public propertyEffectiveBitrate
Returns the effective encoder bitrate (in kbps) of the output.
(Overrides BaseEncoderEffectiveBitrate.)
Public propertyEncoderCommandLine
Gets the actual encoder command-line string (using all OGG_xxx properties).
(Overrides BaseEncoderEncoderCommandLine.)
Public propertyEncoderDirectory
Gets or Sets the encoder's base directory.
(Inherited from BaseEncoder.)
Public propertyEncoderExists
This property return , if the file "oggenc2.exe" exists in the EncoderDirectory - else is returned.
(Overrides BaseEncoderEncoderExists.)
Public propertyEncoderHandle
Gets or sets the current HENCODE encoder handle.
(Inherited from BaseEncoder.)
Public propertyEncoderType
Gets a value indicating the type of content. Here BASS_CTYPE_STREAM_OGG is always returned.
(Overrides BaseEncoderEncoderType.)
Public propertyForce16Bit
Gets or Sets if a encoding in 16-bit sample data should be forced (default is ).
(Inherited from BaseEncoder.)
Public propertyInputFile
Gets or Sets the input file name to be processed by the encoder (null = STDIN, default).
(Inherited from BaseEncoder.)
Public propertyIsActive
Gets a value indicating if the encoder has been started (see Start(ENCODEPROC, IntPtr, Boolean)) and is active - else will be returned.
(Inherited from BaseEncoder.)
Public propertyIsPaused
Gets a value indicating if the encoder has been paused (see Pause(Boolean)) - else must be returned.
(Inherited from BaseEncoder.)
Public propertyNoLimit
Gets or Sets if encoding should use the CAST_NOLIMIT flag (which is only needed, if the encoder is used for streaming).
(Inherited from BaseEncoder.)
Public propertyOutputFile
Gets or Sets the output file name to be processed by the encoder (null = STDOUT, default).
(Inherited from BaseEncoder.)
Public propertySupportsSTDOUT
"oggenc2.exe" implements STDOUT, so is always returned.
(Overrides BaseEncoderSupportsSTDOUT.)
Public propertyTAGs
Gets or Sets the TAG_INFO structure associated with the encoder.
(Inherited from BaseEncoder.)
Public propertyUseAsyncQueue
Gets or Sets if encoding should use an async queue (i.e. the BASS_ENCODE_QUEUE flag).
(Inherited from BaseEncoder.)

Public methodDispose
Implement IDisposable.
(Inherited from BaseEncoder.)
Protected methodFinalize
Finalization code.
(Inherited from BaseEncoder.)
Public methodKbps2Quality
Converts a bitrate (between 32 kbps and 498 kbps) to an approx. quality level.
Public methodPause
Pauses or resumes an encoder.
(Inherited from BaseEncoder.)
Public methodQuality2Kbps
Converts a quality setting (between -2.0 and 10.0) to an approx. bitrate (in kbps).
Public methodSettingsString
Returns the string representation of the current encoder settings.
(Overrides BaseEncoderSettingsString.)
Public methodStart
This method starts the actual OGG encoder.
(Overrides BaseEncoderStart(ENCODEPROC, IntPtr, Boolean).)
Public methodStop
Stops the encoder (if started).
(Inherited from BaseEncoder.)
Public methodStop(Boolean)
Stops the encoder (if started).
(Inherited from BaseEncoder.)
Public methodToString
Returns the name of the Encoder.
(Overrides ObjectToString.)

Public fieldOGG_Bitrate
-b: Choose a nominal bitrate to encode at. Attempt to encode at a bitrate averaging this. Takes an argument in kbps.
Public fieldOGG_Converter
-S: Specify the resampling engine to be used. Options are: Best, Medium (default) and Fast.
Public fieldOGG_CustomOptions
The custom parameter string, which should be used, if the OGG_UseCustomOptionsOnly property is set to .
Public fieldOGG_Downmix
--downmix: Downmix from stereo to mono? (default is ).
Public fieldOGG_MaxBitrate
-M: Specify a maximum bitrate in kbps. Useful for streaming applications. If set to 0 (zero, default) this property is not evaluated!
Public fieldOGG_MinBitrate
-m: Specify a minimum bitrate (in kbps). Useful for encoding for a fixed-size channel. If set to 0 (zero, default) this property is not evaluated!
Public fieldOGG_Quality
-q: Specify quality between -2 (low) and 10 (high) (default=4), instead of specifying a particular bitrate (OGG_Bitrate).
Public fieldOGG_Scale
--scale: Scale input data to n (n = between 0.00 and 1.00, multiply PCM data). Set to 1.0 (default) for no scaling.
Public fieldOGG_TargetSampleRate
--resample: target sampling frequency of output (in Hz). Set to 0 (zero) if you don't want to do any resampling (default).
Public fieldOGG_UseCustomOptionsOnly
Use the OGG_CustomOptions parameter string only (default=).
Public fieldOGG_UseManagedBitrate
--managed: Enable the bitrate management engine. This will allow much greater control over the precise bitrate(s) used, but encoding will be much slower. Don't use it unless you have a strong need for detailed control over bitrate, such as for streaming.
Public fieldOGG_UseQualityMode
Use Quality-Mode? (default is ).

This class uses the BASS_CTYPE_STREAM_OGG encoder type.

"oggenc2.exe" must be downloaded separately (e.g. from or

Since "oggenc2.exe" does support 8/, 16/ and 32-bit(IEEE float) sample data as input, no BASS_ENCODE_FP_ flag will be used.

Make sure to set the OGG_xxx flags before retrieving the EncoderCommandLine or calling Start(ENCODEPROC, IntPtr, Boolean).

There are several versions of "oggenc.exe" or "oggenc2.exe" out there (some are highly optimized for SSE etc.). This encoder implementation tries to support the latest version 2.x set of parameters. If you downloaded another OGG-Vorbis encoder version, just try it out and simply make sure that you rename the executable to "oggenc2.exe".

This implementation uses the automatic DSP system for encoding. Meaning the sending of sample data to the encoder is done automatically when you play the channel (BASS_ChannelPlay(Int32, Boolean)) or call BASS_ChannelGetData(Int32, IntPtr, Int32) (if it's a decoding channel). So there is no need to call BASS_Encode_Write(Int32, IntPtr, Int32) manually!

If you simply want to encode a physical file please also take a look to the EncodeFile(String, String, BaseEncoder, BaseEncoderENCODEFILEPROC, Boolean, Boolean).

See Also