Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 29 Dec 2010 19:29:25 +0900
From:      Takefu <takefu@airport.fm>
To:        freebsd-gnats-submit@FreeBSD.org
Subject:   ports/153519: [PATCH] audio/darkice: fix libaacplus2
Message-ID:  <4D1B0D85.5070409@airport.fm>
Resent-Message-ID: <201012291030.oBTAUAft026809@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help

>Number:         153519
>Category:       ports
>Synopsis:       [PATCH] audio/darkice: fix libaacplus2
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    freebsd-ports-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          update
>Submitter-Id:   current-users
>Arrival-Date:   Wed Dec 29 10:30:10 UTC 2010
>Closed-Date:
>Last-Modified:
>Originator:     Takefu
>Release:        FreeBSD 8.2-RC1 amd64
>Organization:
FOX Amateur Radio Club
>Environment:
>Description:
>How-To-Repeat:
>Fix:

--- darkice-1.0.3.patch begins here ---
diff -ruN /usr/ports/audio/darkice/Makefile audio/darkice/Makefile
--- /usr/ports/audio/darkice/Makefile	2010-11-01 08:27:03.000000000 +0900
+++ audio/darkice/Makefile	2010-12-29 19:03:11.000000000 +0900
@@ -8,21 +8,25 @@

 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
+LICENSE_FILE=	${WRKSRC}/COPYING
+
 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 \
+		AACPLUS "AAC HEv2 support (required for use SAMPLERATE)" off \
 		SAMPLERATE "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,7 +77,7 @@
 .endif

 .if defined(WITH_AACPLUS)
-LIB_DEPENDS+=	aacplus.1:${PORTSDIR}/audio/libaacplus
+LIB_DEPENDS+=	aacplus.2:${PORTSDIR}/audio/libaacplus
 CONFIGURE_ARGS+=	--with-aacplus-prefix=${LOCALBASE}
 .else
 CONFIGURE_ARGS+=	--without-aacplus
diff -ruN /usr/ports/audio/darkice/distinfo audio/darkice/distinfo
--- /usr/ports/audio/darkice/distinfo	2010-07-21 16:52:35.000000000 +0900
+++ audio/darkice/distinfo	2010-12-29 14:20:11.000000000 +0900
@@ -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 -ruN /usr/ports/audio/darkice/files/patch-configure.in audio/darkice/files/patch-configure.in
--- /usr/ports/audio/darkice/files/patch-configure.in	1970-01-01 09:00:00.000000000 +0900
+++ audio/darkice/files/patch-configure.in	2010-12-29 19:12:09.000000000 +0900
@@ -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 -ruN /usr/ports/audio/darkice/files/patch-darkice.cfg audio/darkice/files/patch-darkice.cfg
--- /usr/ports/audio/darkice/files/patch-darkice.cfg	1970-01-01 09:00:00.000000000 +0900
+++ audio/darkice/files/patch-darkice.cfg	2010-12-29 19:18:01.000000000 +0900
@@ -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 -ruN /usr/ports/audio/darkice/files/patch-src_aacPlusEncoder.cpp audio/darkice/files/patch-src_aacPlusEncoder.cpp
--- /usr/ports/audio/darkice/files/patch-src_aacPlusEncoder.cpp	1970-01-01 09:00:00.000000000 +0900
+++ audio/darkice/files/patch-src_aacPlusEncoder.cpp	2010-12-29 13:40:33.000000000 +0900
@@ -0,0 +1,328 @@
+--- src/aacPlusEncoder.cpp.orig	2010-05-10 07:18:48.000000000 +0900
++++ src/aacPlusEncoder.cpp	2010-10-13 07:42:25.000000000 +0900
+@@ -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 -ruN /usr/ports/audio/darkice/files/patch-src_aacPlusEncoder.h audio/darkice/files/patch-src_aacPlusEncoder.h
--- /usr/ports/audio/darkice/files/patch-src_aacPlusEncoder.h	1970-01-01 09:00:00.000000000 +0900
+++ audio/darkice/files/patch-src_aacPlusEncoder.h	2010-12-29 13:42:17.000000000 +0900
@@ -0,0 +1,194 @@
+--- src/aacPlusEncoder.h.orig	2010-05-10 07:18:48.000000000 +0900
++++ src/aacPlusEncoder.h	2010-10-13 07:42:25.000000000 +0900
+@@ -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;
--- darkice-1.0.3.patch ends here ---
>Release-Note:
>Audit-Trail:
>Unformatted:



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4D1B0D85.5070409>