aboutsummaryrefslogtreecommitdiff
path: root/audio/darkice
diff options
context:
space:
mode:
authorPav Lucistnik <pav@FreeBSD.org>2011-01-24 15:32:47 +0000
committerPav Lucistnik <pav@FreeBSD.org>2011-01-24 15:32:47 +0000
commit905807b959dcb05e866672e060ce2420ac74afa1 (patch)
treeb08ded6e8d996e8c51242e41aa7d49d7e951d305 /audio/darkice
parent5953b8e26f4146cd50a52fb48cb115783fd5c8fb (diff)
downloadports-905807b959dcb05e866672e060ce2420ac74afa1.tar.gz
ports-905807b959dcb05e866672e060ce2420ac74afa1.zip
- Update to work with libaacplus.2
PR: ports/153519 Submitted by: Takefu <takefu@airport.fm> Feature safe: yes
Notes
Notes: svn path=/head/; revision=268172
Diffstat (limited to 'audio/darkice')
-rw-r--r--audio/darkice/Makefile22
-rw-r--r--audio/darkice/distinfo1
-rw-r--r--audio/darkice/files/patch-configure.in11
-rw-r--r--audio/darkice/files/patch-darkice.cfg10
-rw-r--r--audio/darkice/files/patch-src_aacPlusEncoder.cpp328
-rw-r--r--audio/darkice/files/patch-src_aacPlusEncoder.h194
6 files changed, 552 insertions, 14 deletions
diff --git a/audio/darkice/Makefile b/audio/darkice/Makefile
index 8cd7fcff6686..fa10aef9ee9b 100644
--- a/audio/darkice/Makefile
+++ b/audio/darkice/Makefile
@@ -8,21 +8,23 @@
PORTNAME= darkice
PORTVERSION= 1.0
-PORTREVISION= 2
+PORTREVISION= 3
CATEGORIES= audio net
MASTER_SITES= GOOGLE_CODE
MAINTAINER= ports@FreeBSD.org
COMMENT= An IceCast, IceCast2 and ShoutCast live audio streamer
+LICENSE= GPLv3
+
OPTIONS= VORBIS "Ogg Vorbis support" on \
LAME "LAME support for MP3" off \
TWOLAME "TwoLAME support for MP2" off \
FAAC "FAAC support for AAC" off \
JACK "Jack support" off \
- AACPLUS "AAC HEv2 support" off \
- SAMPLERATE "Libsamplerate support" off
+ AACPLUS "AAC HEv2 and libsamplerate support" off
+USE_AUTOTOOLS= aclocal autoconf
GNU_CONFIGURE= yes
CONFIGURE_ENV= CPPFLAGS="${PTHREAD_CFLAGS}" LDFLAGS="${PTHREAD_LIBS}" \
ac_cv_prog_acx_pthread_config=no
@@ -73,17 +75,11 @@ CONFIGURE_ARGS+= --without-jack
.endif
.if defined(WITH_AACPLUS)
-LIB_DEPENDS+= aacplus.1:${PORTSDIR}/audio/libaacplus
-CONFIGURE_ARGS+= --with-aacplus-prefix=${LOCALBASE}
-.else
-CONFIGURE_ARGS+= --without-aacplus
-.endif
-
-.if defined(WITH_SAMPLERATE)
-LIB_DEPENDS+= samplerate.1:${PORTSDIR}/audio/libsamplerate
-CONFIGURE_ARGS+= --with-samplerate-prefix=${LOCALBASE}
+LIB_DEPENDS+= aacplus.2:${PORTSDIR}/audio/libaacplus \
+ samplerate.1:${PORTSDIR}/audio/libsamplerate
+CONFIGURE_ARGS+= --with-aacplus-prefix=${LOCALBASE} --with-samplerate-prefix=${LOCALBASE}
.else
-CONFIGURE_ARGS+= --without-samplerate
+CONFIGURE_ARGS+= --without-aacplus --without-samplerate
.endif
post-patch:
diff --git a/audio/darkice/distinfo b/audio/darkice/distinfo
index b7d8a1feca49..6b18851d1d25 100644
--- a/audio/darkice/distinfo
+++ b/audio/darkice/distinfo
@@ -1,3 +1,2 @@
-MD5 (darkice-1.0.tar.gz) = 1804e63d42a9703d01fe378c9a77c473
SHA256 (darkice-1.0.tar.gz) = 61a05c4dab206c22c3e3d5570ee4841f9c8875241098adf687717e7dcc6df332
SIZE (darkice-1.0.tar.gz) = 311567
diff --git a/audio/darkice/files/patch-configure.in b/audio/darkice/files/patch-configure.in
new file mode 100644
index 000000000000..2e48f4b16bbe
--- /dev/null
+++ b/audio/darkice/files/patch-configure.in
@@ -0,0 +1,11 @@
+--- configure.in.orig 2010-05-10 06:38:57.000000000 +0900
++++ configure.in 2010-12-29 19:11:40.000000000 +0900
+@@ -166,7 +166,7 @@
+
+ if test "x${USE_AACPLUS}" = "xyes" ; then
+ AC_MSG_CHECKING( [for aacplus library at ${CONFIG_AACPLUS_PREFIX}] )
+- LA_SEARCH_LIB( AACPLUS_LIB_LOC, AACPLUS_INC_LOC, libaacplus.a libaacplus.so, sbr_main.h,
++ LA_SEARCH_LIB( AACPLUS_LIB_LOC, AACPLUS_INC_LOC, libaacplus.a libaacplus.so, aacplus.h,
+ ${CONFIG_AACPLUS_PREFIX})
+ if test "x${AACPLUS_LIB_LOC}" != "x" ; then
+ AC_DEFINE( HAVE_AACPLUS_LIB, 1, [build with aacplus library] )
diff --git a/audio/darkice/files/patch-darkice.cfg b/audio/darkice/files/patch-darkice.cfg
new file mode 100644
index 000000000000..59354fe2410d
--- /dev/null
+++ b/audio/darkice/files/patch-darkice.cfg
@@ -0,0 +1,10 @@
+--- darkice.cfg.orig 2010-05-10 05:26:19.000000000 +0900
++++ darkice.cfg 2010-12-29 19:17:57.000000000 +0900
+@@ -6,6 +6,7 @@
+ duration = 60 # duration of encoding, in seconds. 0 means forever
+ bufferSecs = 5 # size of internal slip buffer, in seconds
+ reconnect = yes # reconnect to the server(s) if disconnected
++realtime = yes # run the encoder with POSIX realtime priority
+
+ # this section describes the audio input that will be streamed
+ [input]
diff --git a/audio/darkice/files/patch-src_aacPlusEncoder.cpp b/audio/darkice/files/patch-src_aacPlusEncoder.cpp
new file mode 100644
index 000000000000..2093b16877f7
--- /dev/null
+++ b/audio/darkice/files/patch-src_aacPlusEncoder.cpp
@@ -0,0 +1,328 @@
+--- src/aacPlusEncoder.cpp.orig 2010-05-10 00:18:48.000000000 +0200
++++ src/aacPlusEncoder.cpp 2011-01-20 13:39:21.000000000 +0100
+@@ -5,8 +5,8 @@
+ Tyrell DarkIce
+
+ File : aacPlusEncoder.cpp
+- Version : $Revision: 474 $
+- Author : $Author: rafael@riseup.net $
++ Version : $Revision$
++ Author : $Author$
+ Location : $HeadURL$
+
+ Copyright notice:
+@@ -51,7 +51,7 @@
+ /*------------------------------------------------------------------------------
+ * File identity
+ *----------------------------------------------------------------------------*/
+-static const char fileid[] = "$Id: aacPlusEncoder.cpp 474 2010-05-10 01:18:15Z rafael@riseup.net $";
++static const char fileid[] = "$Id$";
+
+
+ /* =============================================== local function prototypes */
+@@ -76,82 +76,27 @@
+ "aacplus lib opening underlying sink error");
+ }
+
+- reportEvent(1, "Using aacplus codec version", "720 3gpp");
++ reportEvent(1, "Using aacplus codec");
+
+- bitrate = getOutBitrate() * 1000;
+- bandwidth = 0;
+- useParametricStereo = 0;
+- numAncDataBytes=0;
+- coreWriteOffset = 0;
+- envReadOffset = 0;
+- writeOffset = INPUT_DELAY*MAX_CHANNELS;
+- writtenSamples = 0;
+- aacEnc = NULL;
+- hEnvEnc=NULL;
+-
+- /* set up basic parameters for aacPlus codec */
+- AacInitDefaultConfig(&config);
+- nChannelsAAC = nChannelsSBR = getOutChannel();
+-
+- if ( (getInChannel() == 2) && (bitrate >= 16000) && (bitrate < 44001) ) {
+- useParametricStereo = 1;
+- nChannelsAAC = 1;
+- nChannelsSBR = 2;
+-
+- reportEvent(10, "use Parametric Stereo");
+-
+- envReadOffset = (MAX_DS_FILTER_DELAY + INPUT_DELAY)*MAX_CHANNELS;
+- coreWriteOffset = CORE_INPUT_OFFSET_PS;
+- writeOffset = envReadOffset;
+- } else {
+- /* set up 2:1 downsampling */
+- InitIIR21_Resampler(&(IIR21_reSampler[0]));
+- InitIIR21_Resampler(&(IIR21_reSampler[1]));
+-
+- if(IIR21_reSampler[0].delay > MAX_DS_FILTER_DELAY)
+- throw Exception(__FILE__, __LINE__, "IIR21 resampler delay is bigger then MAX_DS_FILTER_DELAY");
+- writeOffset += IIR21_reSampler[0].delay*MAX_CHANNELS;
++ encoderHandle = aacplusEncOpen(getOutSampleRate(),
++ getInChannel(),
++ &inputSamples,
++ &maxOutputBytes);
++
++ aacplusEncConfiguration * aacplusConfig;
++
++ aacplusConfig = aacplusEncGetCurrentConfiguration(encoderHandle);
++
++ aacplusConfig->bitRate = getOutBitrate() * 1000;
++ aacplusConfig->bandWidth = lowpass;
++ aacplusConfig->outputFormat = 1;
++ aacplusConfig->inputFormat = AACPLUS_INPUT_16BIT;
++ aacplusConfig->nChannelsOut = getOutChannel();
++
++ if (!aacplusEncSetConfiguration(encoderHandle, aacplusConfig)) {
++ throw Exception(__FILE__, __LINE__,
++ "error configuring libaacplus library");
+ }
+-
+- sampleRateAAC = getOutSampleRate();
+- config.bitRate = bitrate;
+- config.nChannelsIn=getInChannel();
+- config.nChannelsOut=nChannelsAAC;
+- config.bandWidth=bandwidth;
+-
+- /* set up SBR configuration */
+- if(!IsSbrSettingAvail(bitrate, nChannelsAAC, sampleRateAAC, &sampleRateAAC))
+- throw Exception(__FILE__, __LINE__, "No valid SBR configuration found");
+-
+- InitializeSbrDefaults (&sbrConfig);
+- sbrConfig.usePs = useParametricStereo;
+-
+- AdjustSbrSettings( &sbrConfig,
+- bitrate,
+- nChannelsAAC,
+- sampleRateAAC,
+- AACENC_TRANS_FAC,
+- 24000);
+-
+- EnvOpen( &hEnvEnc,
+- inBuf + coreWriteOffset,
+- &sbrConfig,
+- &config.bandWidth);
+-
+- /* set up AAC encoder, now that samling rate is known */
+- config.sampleRate = sampleRateAAC;
+- if (AacEncOpen(&aacEnc, config) != 0){
+- AacEncClose(aacEnc);
+- throw Exception(__FILE__, __LINE__, "Initialisation of AAC failed !");
+- }
+-
+- init_plans();
+-
+- /* create the ADTS header */
+- adts_hdr(outBuf, &config);
+-
+- inSamples = AACENC_BLOCKSIZE * getInChannel() * 2;
+-
+
+ // initialize the resampling coverter if needed
+ if ( converter ) {
+@@ -159,8 +104,8 @@
+ converterData.input_frames = 4096/((getInBitsPerSample() / 8) * getInChannel());
+ converterData.data_in = new float[converterData.input_frames*getInChannel()];
+ converterData.output_frames = (int) (converterData.input_frames * resampleRatio + 1);
+- if ((int) inSamples > getInChannel() * converterData.output_frames) {
+- resampledOffset = new float[2 * inSamples];
++ if ((int) inputSamples > getInChannel() * converterData.output_frames) {
++ resampledOffset = new float[2 * inputSamples];
+ } else {
+ resampledOffset = new float[2 * getInChannel() * converterData.input_frames];
+ }
+@@ -178,13 +123,9 @@
+ }
+
+ aacplusOpen = true;
+- reportEvent(10, "bitrate=", bitrate);
+- reportEvent(10, "nChannelsIn", getInChannel());
+- reportEvent(10, "nChannelsOut", getOutChannel());
+- reportEvent(10, "nChannelsSBR", nChannelsSBR);
+- reportEvent(10, "nChannelsAAC", nChannelsAAC);
+- reportEvent(10, "sampleRateAAC", sampleRateAAC);
+- reportEvent(10, "inSamples", inSamples);
++ reportEvent(10, "nChannelsAAC", aacplusConfig->nChannelsOut);
++ reportEvent(10, "sampleRateAAC", aacplusConfig->sampleRate);
++ reportEvent(10, "inSamples", inputSamples);
+ return true;
+ }
+
+@@ -199,21 +140,23 @@
+ if ( !isOpen() || len == 0) {
+ return 0;
+ }
+-
++
+ unsigned int channels = getInChannel();
+ unsigned int bitsPerSample = getInBitsPerSample();
+ unsigned int sampleSize = (bitsPerSample / 8) * channels;
++ unsigned char * b = (unsigned char*) buf;
+ unsigned int processed = len - (len % sampleSize);
+ unsigned int nSamples = processed / sampleSize;
+- unsigned int samples = (unsigned int) nSamples * channels;
+- int processedSamples = 0;
+-
+-
++ unsigned char * aacplusBuf = new unsigned char[maxOutputBytes];
++ int samples = (int) nSamples * channels;
++ int processedSamples = 0;
++
++
+
+ if ( converter ) {
+ unsigned int converted;
+ #ifdef HAVE_SRC_LIB
+- src_short_to_float_array ((short *) buf, converterData.data_in, samples);
++ src_short_to_float_array ((short *) b, converterData.data_in, samples);
+ converterData.input_frames = nSamples;
+ converterData.data_out = resampledOffset + (resampledOffsetSize * channels);
+ int srcError = src_process (converter, &converterData);
+@@ -224,7 +167,6 @@
+ int inCount = nSamples;
+ short int * shortBuffer = new short int[samples];
+ int outCount = (int) (inCount * resampleRatio);
+- unsigned char * b = (unsigned char*) buf;
+ Util::conv( bitsPerSample, b, processed, shortBuffer, isInBigEndian());
+ converted = converter->resample( inCount,
+ outCount+1,
+@@ -235,18 +177,27 @@
+ resampledOffsetSize += converted;
+
+ // encode samples (if enough)
+- while(resampledOffsetSize - processedSamples >= inSamples/channels) {
++ while(resampledOffsetSize - processedSamples >= inputSamples/channels) {
++ int outputBytes;
+ #ifdef HAVE_SRC_LIB
+- short *shortData = new short[inSamples];
++ short *shortData = new short[inputSamples];
+ src_float_to_short_array(resampledOffset + (processedSamples * channels),
+- shortData, inSamples) ;
+-
+- encodeAacSamples (shortData, inSamples, channels);
++ shortData, inputSamples) ;
++ outputBytes = aacplusEncEncode(encoderHandle,
++ (int32_t*) shortData,
++ inputSamples,
++ aacplusBuf,
++ maxOutputBytes);
+ delete [] shortData;
+ #else
+- encodeAacSamples (&resampledOffset[processedSamples*channels], inSamples, channels);
++ outputBytes = aacplusEncEncode(encoderHandle,
++ (int32_t*) &resampledOffset[processedSamples*channels],
++ inputSamples,
++ aacplusBuf,
++ maxOutputBytes);
+ #endif
+- processedSamples+=inSamples/channels;
++ getSink()->write(aacplusBuf, outputBytes);
++ processedSamples+=inputSamples/channels;
+ }
+
+ if (processedSamples && (int) resampledOffsetSize >= processedSamples) {
+@@ -262,70 +213,27 @@
+ #endif
+ }
+ } else {
+- encodeAacSamples ((short *) buf, samples, channels);
+- }
++ while (processedSamples < samples) {
++ int outputBytes;
++ int inSamples = samples - processedSamples < (int) inputSamples
++ ? samples - processedSamples
++ : inputSamples;
++
++ outputBytes = aacplusEncEncode(encoderHandle,
++ (int32_t*) (b + processedSamples/sampleSize),
++ inSamples,
++ aacplusBuf,
++ maxOutputBytes);
++ getSink()->write(aacplusBuf, outputBytes);
+
+- return samples;
+-}
+-
+-void
+-aacPlusEncoder :: encodeAacSamples (short *TimeDataPcm, unsigned int samples, int channels)
+- throw ( Exception )
+-{
+- unsigned int i;
+- int ch, outSamples, numOutBytes;
+-
+- for (i=0; i<samples; i++)
+- inBuf[(2/channels)*i+writeOffset+writtenSamples] = (float) TimeDataPcm[i];
+-
+- writtenSamples+=samples;
+-
+- if (writtenSamples < inSamples)
+- return;
+-
+- /* encode one SBR frame */
+- EnvEncodeFrame( hEnvEnc,
+- inBuf + envReadOffset,
+- inBuf + coreWriteOffset,
+- MAX_CHANNELS,
+- &numAncDataBytes,
+- ancDataBytes);
+-
+- /* 2:1 downsampling for AAC core */
+- if (!useParametricStereo) {
+- for( ch=0; ch<nChannelsAAC; ch++ )
+- IIR21_Downsample( &(IIR21_reSampler[ch]),
+- inBuf + writeOffset+ch,
+- writtenSamples/channels,
+- MAX_CHANNELS,
+- inBuf+ch,
+- &outSamples,
+- MAX_CHANNELS);
+- }
+-
+- /* encode one AAC frame */
+- AacEncEncode( aacEnc,
+- inBuf,
+- useParametricStereo ? 1 : MAX_CHANNELS, /* stride (step) */
+- ancDataBytes,
+- &numAncDataBytes,
+- (unsigned *) (outBuf+ADTS_HEADER_SIZE),
+- &numOutBytes);
+- if (useParametricStereo) {
+- memcpy( inBuf,inBuf+AACENC_BLOCKSIZE,CORE_INPUT_OFFSET_PS*sizeof(float));
+- } else {
+- memmove( inBuf,inBuf+AACENC_BLOCKSIZE*2*MAX_CHANNELS,writeOffset*sizeof(float));
+- }
+-
+- /* Write one frame of encoded audio */
+- if (numOutBytes) {
+- adts_hdr_up(outBuf, numOutBytes);
+- sink->write(outBuf, numOutBytes+ADTS_HEADER_SIZE);
++ processedSamples += inSamples;
++ }
+ }
+-
+- writtenSamples=0;
+
+- return;
++ delete[] aacplusBuf;
++
++// return processedSamples;
++ return samples;
+ }
+
+ /*------------------------------------------------------------------------------
+@@ -352,12 +260,7 @@
+ if ( isOpen() ) {
+ flush();
+
+- destroy_plans();
+- AacEncClose(aacEnc);
+- if (hEnvEnc) {
+- EnvClose(hEnvEnc);
+- }
+-
++ aacplusEncClose(encoderHandle);
+ aacplusOpen = false;
+
+ sink->close();
diff --git a/audio/darkice/files/patch-src_aacPlusEncoder.h b/audio/darkice/files/patch-src_aacPlusEncoder.h
new file mode 100644
index 000000000000..b77150ce5a15
--- /dev/null
+++ b/audio/darkice/files/patch-src_aacPlusEncoder.h
@@ -0,0 +1,194 @@
+--- src/aacPlusEncoder.h.orig 2010-05-10 00:18:48.000000000 +0200
++++ src/aacPlusEncoder.h 2011-01-20 13:41:06.000000000 +0100
+@@ -5,8 +5,8 @@
+ Tyrell DarkIce
+
+ File : aacPlusEncoder.h
+- Version : $Revision: 474 $
+- Author : $Author: rafael@riseup.net $
++ Version : $Revision$
++ Author : $Author$
+ Location : $HeadURL$
+
+ Copyright notice:
+@@ -41,18 +41,7 @@
+ #endif
+
+ #ifdef HAVE_AACPLUS_LIB
+-extern "C" {
+-#include <libaacplus/cfftn.h>
+-#include <libaacplus/FloatFR.h>
+-#include <libaacplus/aacenc.h>
+-#include <libaacplus/resampler.h>
+-
+-#include <libaacplus/adts.h>
+-
+-#include <libaacplus/sbr_main.h>
+-#include <libaacplus/aac_ram.h>
+-#include <libaacplus/aac_rom.h>
+-}
++#include <aacplus.h>
+ #else
+ #error configure with aacplus
+ #endif
+@@ -83,16 +72,10 @@
+ /**
+ * A class representing aacplus AAC+ encoder.
+ *
+- * @author $Author: rafael@riseup.net $
+- * @version $Revision: 474 $
++ * @author $Author$
++ * @version $Revision$
+ */
+
+-#define CORE_DELAY (1600)
+-#define INPUT_DELAY ((CORE_DELAY)*2 +6*64-2048+1) /* ((1600 (core codec)*2 (multi rate) + 6*64 (sbr dec delay) - 2048 (sbr enc delay) + magic*/
+-#define MAX_DS_FILTER_DELAY 16 /* the additional max resampler filter delay (source fs)*/
+-
+-#define CORE_INPUT_OFFSET_PS (0) /* (96-64) makes AAC still some 64 core samples too early wrt SBR ... maybe -32 would be even more correct, but 1024-32 would need additional SBR bitstream delay by one frame */
+-
+ class aacPlusEncoder : public AudioEncoder, public virtual Reporter
+ {
+ private:
+@@ -124,31 +107,26 @@
+ */
+ Ref<Sink> sink;
+
+- float inBuf[(AACENC_BLOCKSIZE*2 + MAX_DS_FILTER_DELAY + INPUT_DELAY)*MAX_CHANNELS];
+- char outBuf[(6144/8)*MAX_CHANNELS+ADTS_HEADER_SIZE];
+- IIR21_RESAMPLER IIR21_reSampler[MAX_CHANNELS];
+-
+- AACENC_CONFIG config;
+-
+- int nChannelsAAC, nChannelsSBR;
+- unsigned int sampleRateAAC;
+-
+- int bitrate;
+- int bandwidth;
+-
+- unsigned int numAncDataBytes;
+- unsigned char ancDataBytes[MAX_PAYLOAD_SIZE];
+-
+- bool useParametricStereo;
+- int coreWriteOffset;
+- int envReadOffset;
+- int writeOffset;
+- struct AAC_ENCODER *aacEnc;
+- unsigned int inSamples;
+- unsigned int writtenSamples;
+-
+- HANDLE_SBR_ENCODER hEnvEnc;
+- sbrConfiguration sbrConfig;
++ /**
++ * The handle to the AAC+ encoder instance.
++ */
++ aacplusEncHandle encoderHandle;
++
++ /**
++ * The maximum number of input samples to supply to the encoder.
++ */
++ unsigned long inputSamples;
++
++ /**
++ * The maximum number of output bytes the encoder returns in one call.
++ */
++ unsigned long maxOutputBytes;
++
++ /**
++ * Lowpass filter. Sound frequency in Hz, from where up the
++ * input is cut.
++ */
++ int lowpass;
+
+ /**
+ * Initialize the object.
+@@ -157,10 +135,11 @@
+ * @exception Exception
+ */
+ inline void
+- init ( Sink * sink) throw (Exception)
++ init ( Sink * sink, int lowpass) throw (Exception)
+ {
+ this->aacplusOpen = false;
+ this->sink = sink;
++ this->lowpass = lowpass;
+
+ /* TODO: if we have float as input, we don't need conversion */
+ if ( getInBitsPerSample() != 16 && getInBitsPerSample() != 32 ) {
+@@ -179,11 +158,6 @@
+ "unsupported number of output channels for the encoder",
+ getOutChannel() );
+ }
+- /* TODO: this will be neede when we implement mono aac+ encoding */
+- if ( getInChannel() != getOutChannel() ) {
+- throw Exception( __FILE__, __LINE__,
+- "input channels and output channels do not match");
+- }
+
+ if ( getOutSampleRate() == getInSampleRate() ) {
+ resampleRatio = 1;
+@@ -237,17 +211,6 @@
+ "specified bits per sample with samplerate conversion not supported",
+ getInBitsPerSample() );
+ }
+-
+- bitrate = getOutBitrate() * 1000;
+- bandwidth = 0;
+- useParametricStereo = 0;
+- numAncDataBytes=0;
+- coreWriteOffset = 0;
+- envReadOffset = 0;
+- writeOffset = INPUT_DELAY*MAX_CHANNELS;
+- writtenSamples = 0;
+- aacEnc = NULL;
+- hEnvEnc=NULL;
+ }
+
+ /**
+@@ -269,10 +232,6 @@
+ }
+ }
+
+- void
+- encodeAacSamples (short *TimeDataPcm, unsigned int samples, int channels)
+- throw ( Exception );
+-
+ protected:
+
+ /**
+@@ -335,7 +294,7 @@
+ outSampleRate,
+ outChannel )
+ {
+- init( sink);
++ init( sink, lowpass);
+ }
+
+ /**
+@@ -376,7 +335,7 @@
+ outSampleRate,
+ outChannel )
+ {
+- init( sink);
++ init( sink, lowpass );
+ }
+
+ /**
+@@ -389,7 +348,7 @@
+ throw ( Exception )
+ : AudioEncoder( encoder )
+ {
+- init( encoder.sink.get());
++ init( encoder.sink.get(), encoder.lowpass);
+ }
+
+
+@@ -420,7 +379,7 @@
+ if ( this != &encoder ) {
+ strip();
+ AudioEncoder::operator=( encoder);
+- init( encoder.sink.get());
++ init( encoder.sink.get(), encoder.lowpass);
+ }
+
+ return *this;