BASS.NET API for the Un4seen BASS Audio LibraryEncoderWinampAACplus ClassBASS.NET API for the Un4seen BASS Audio Library
Encoder class implementation for Winamp AACplus encoding using "enc_aacPlus.exe" (the command-line encoder using the following Winamp DLLs: "enc_aacplus.dll", "nscrt.dll" and "libmp4v2.dll").
Inheritance Hierarchy


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

public sealed class EncoderWinampAACplus : BaseEncoder

The EncoderWinampAACplus type exposes the following members.


Public methodEncoderWinampAACplus
Creates an instance of a Winamp AACplus 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 (either ".aac" or ".m4a").
(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 AACPlus_xxx properties).
(Overrides BaseEncoderEncoderCommandLine.)
Public propertyEncoderDirectory
Gets or Sets the encoder's base directory.
(Inherited from BaseEncoder.)
Public propertyEncoderExists
This property return , if the files "enc_aacPlus.exe" and "enc_aacplus.dll" 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_AAC is always returned.
(Overrides BaseEncoderEncoderType.)
Public propertyForce16Bit
Always returns true, since this encoder only supports receiving 16 bit sample data.
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
The special "enc_aacPlus.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 methodStatic memberIsWinampInstalled
Determines, if Winamp is installed on your machine.
Public methodPause
Pauses or resumes an encoder.
(Inherited from BaseEncoder.)
Public methodSettingsString
Returns the string representation of the current encoder settings.
(Overrides BaseEncoderSettingsString.)
Public methodStart
This method starts the actual AACplus 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 fieldAACPlus_Bitrate
--br: bitrate in kbps, default 128 kbps.
Public fieldAACPlus_EnableParametricStereo
--ps: Enable Parametric Stereo (bitrates up to 56000, only with HE-AAC, default=).
Public fieldAACPlus_HE
--he: Encode as HE-AAC (supports bitrate up to 128000, default=).
Public fieldAACPlus_High
--high: Encode as HE-AAC+ with high bitrates (supports bitrate up to 256000, multichannel not supported, default=).
Public fieldAACPlus_IndependedStereo
--is: Independed Stereo, disables Joint Stereo M/S coding (default=).
Public fieldAACPlus_LC
--lc: Encode as LC-AAC (supports bitrate up to 320000, default=).
Public fieldAACPlus_Mono
--mono: Encode as Mono (default=).
Public fieldAACPlus_Mpeg2Aac
--mpeg2aac: Force MPEG2 AAC instead of letting the encoder choose (default=).
Public fieldAACPlus_Mpeg4Aac
--mpeg4aac: Force MPEG4 AAC instead of letting the encoder choose (default=).
Public fieldAACPlus_PNS
--pns: Enable Perceptual Noise Subsitution (default=).
Public fieldAACPlus_PreferDualChannel
--dc: Prefer Dual Channel (default=).
Public fieldAACPlus_Speech
--speech: Tune for Speech encoding (default=).
Public fieldAACPlus_UseMp4Output
Box the output to a MP4 container using the .m4a output file extension (default=).

This class uses the BASS_CTYPE_STREAM_AAC encoder type.

Please make sure to use the special "enc_aacPlus.exe" version (made by Bernd Niedergesäß) which can be downloaded here:

Since "enc_aacPlus.exe" also needs the mentioned Winamp DLLs ("enc_aacplus.dll", "nscrt.dll" and and "libmp4v2.dll" as of version 5.57 or above) you also need to install Winamp and copy the Winamp DLLs from the Winamp/PlugIns folder into the same folder which contains enc_aacPlus.exe (or you might also copy enc_aacPlus.exe into the Winamp/PlugIns folder).

Since the Winamp AACPlus library does only support 16-bit sample data as input, the BASS_ENCODE_FP_16BIT will always be used. Also note, that 8-bit sample data is also not supported! This will be used, whenever the underlying channel handle is float or the BASS_CONFIG_FLOATDSP option has been set.

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

This encoder does not support 8-bit channels!

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!

The extension of the OutputFile can be either .acc to write an aac bitstream output file or .m4a/.mp4 to box the output to a MP4 container (note, that using m4a/mp4 requires "libmp4v2.dll" to be present).

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