[SCM] handbrake/master: Improvements to 0010-Remove-FAAC-dependency.patch:

fabian-guest at users.alioth.debian.org fabian-guest at users.alioth.debian.org
Tue Jun 12 09:31:06 UTC 2012


The following commit has been merged in the master branch:
commit 1fee22d68e78f0643a14f1f4b8770bb3901b59ca
Author: Fabian Greffrath <fabian at greffrath.com>
Date:   Tue Jun 12 11:23:49 2012 +0200

    Improvements to 0010-Remove-FAAC-dependency.patch:
    
    - Do not pretend to support FAAC by silently falling back to the libav "ffaac" implementation.
      Disable it in the GUI instead.
    - Fall back to LAME whenever it is possible and makes sense.
    - I consider it unfair to remove credits to the libfaac authors, just because we decided not to use their code.
    - Comment out libhb/encfaac.c entirely, instead of removing it and thus duplicating it in the patch.

diff --git a/debian/patches/0010-Remove-FAAC-dependency.patch b/debian/patches/0010-Remove-FAAC-dependency.patch
index 69b60c9..eaf7ebd 100644
--- a/debian/patches/0010-Remove-FAAC-dependency.patch
+++ b/debian/patches/0010-Remove-FAAC-dependency.patch
@@ -44,16 +44,18 @@ to enter Debian.
  endif
 --- a/gtk/src/audiohandler.c
 +++ b/gtk/src/audiohandler.c
-@@ -72,7 +72,7 @@
- 			if ( mux == HB_MUX_MKV )
+@@ -69,10 +69,7 @@
+ 		if (hb_audio_encoders[ii].encoder == fallback &&
+ 			!(hb_audio_encoders[ii].muxers & mux))
+ 		{
+-			if ( mux == HB_MUX_MKV )
  				fallback = HB_ACODEC_LAME;
- 			else
+-			else
 -				fallback = HB_ACODEC_FAAC;
-+				fallback = HB_ACODEC_FFAAC;
  			break;
  		}
  	}
-@@ -139,7 +139,7 @@
+@@ -139,7 +136,7 @@
  			return HB_ACODEC_LAME;
  
  		case HB_ACODEC_AAC_PASS:
@@ -62,7 +64,7 @@ to enter Debian.
  
  		case HB_ACODEC_AC3_PASS:
  			return HB_ACODEC_AC3;
-@@ -155,7 +155,6 @@
+@@ -155,7 +152,6 @@
  	{
  		mask = 	HB_ACODEC_LAME |
  				HB_ACODEC_FFAAC |
@@ -70,23 +72,6 @@ to enter Debian.
  				HB_ACODEC_AC3;
  	}
  	if ( mux == HB_MUX_MKV )
---- a/gtk/src/ghb.ui
-+++ b/gtk/src/ghb.ui
-@@ -7397,14 +7397,6 @@
-   Billy Biggs
-   Christian Wolff
- 
--libfaac authors:
--  M. Bakker
--  Tony Lenox
--  RageOMatic
--  thebard
--  Ivan Dimkovic
--  Krzysztof Nikiel
--
- libmp3lame authors:
-   Mike Cheng
-   Robert Hegemann
 --- a/gtk/src/hb-backend.c
 +++ b/gtk/src/hb-backend.c
 @@ -3731,7 +3731,7 @@
@@ -94,51 +79,53 @@ to enter Debian.
  ghb_get_default_acodec()
  {
 -	return HB_ACODEC_FAAC;
-+	return HB_ACODEC_FFAAC;
++	return HB_ACODEC_LAME;
  }
  
  static void
-@@ -4493,7 +4493,7 @@
+@@ -4487,13 +4487,9 @@
+ 			{
+ 				codec = HB_ACODEC_AC3;
  			}
+-			else if (mux == HB_MUX_MKV)
+-			{
+-				codec = HB_ACODEC_LAME;
+-			}
  			else
  			{
 -				codec = HB_ACODEC_FAAC;
-+				codec = HB_ACODEC_FFAAC;
++				codec = HB_ACODEC_LAME;
  			}
  			value = ghb_lookup_acodec_value(codec);
  			ghb_settings_take_value(asettings, "AudioEncoder", value);
-@@ -4507,7 +4507,7 @@
+@@ -4507,7 +4503,7 @@
  			if (codec == HB_ACODEC_VORBIS)
  			{
  				a_unsup = "Vorbis";
 -				codec = HB_ACODEC_FAAC;
-+				codec = HB_ACODEC_FFAAC;
++				codec = HB_ACODEC_LAME;
  			}
  		}
  		if (a_unsup)
 --- a/gtk/src/preset_xlat.c
 +++ b/gtk/src/preset_xlat.c
-@@ -260,7 +260,7 @@
+@@ -260,7 +260,6 @@
  
  static value_map_t acodec_xlat[] =
  {
 -	{"AAC (faac)", "faac"},
-+	{"AAC (faac)", "ffaac"},
  	{"AC3 Passthru", "ac3"},
  	{"MP3 (lame)", "lame"},
  	{"Vorbis (vorbis)", "vorbis"},
 --- a/gtk/src/presets.c
 +++ b/gtk/src/presets.c
-@@ -2000,9 +2000,9 @@
+@@ -2000,9 +2000,6 @@
  static value_map_t acodec_xlat[] =
  {
  	{"AAC (ffmpeg)", "ffaac"},
 -	{"AAC (faac)", "faac"},
 -	{"AAC (CoreAudio)", "faac"},
 -	{"HE-AAC (CoreAudio)", "faac"},
-+	{"AAC (faac)", "ffaac"},
-+	{"AAC (CoreAudio)", "ffaac"},
-+	{"HE-AAC (CoreAudio)", "ffaac"},
  	{"AC3 (ffmpeg)", "ffac3"},
  	{"AC3 (ffmpeg)", "ac3"},
  	{"AC3", "ac3"},			// Backwards compatibility with mac ui
@@ -149,7 +136,7 @@ to enter Debian.
    { "HE-AAC (CoreAudio)", "ca_haac",    HB_ACODEC_CA_HAAC,      HB_MUX_MP4|HB_MUX_MKV },
  #endif
 -  { "AAC (faac)",         "faac",       HB_ACODEC_FAAC,         HB_MUX_MP4|HB_MUX_MKV },
-+  { "AAC (faac)",         "faac",       HB_ACODEC_FFAAC,        HB_MUX_MP4|HB_MUX_MKV },
++  { "AAC (faac)",         "faac",       HB_ACODEC_FAAC,                             0 },
    { "AAC (ffmpeg)",       "ffaac",      HB_ACODEC_FFAAC,        HB_MUX_MP4|HB_MUX_MKV },
    { "AAC Passthru",       "copy:aac",   HB_ACODEC_AAC_PASS,     HB_MUX_MP4|HB_MUX_MKV },
    { "AC3 (ffmpeg)",       "ffac3",      HB_ACODEC_AC3,          HB_MUX_MP4|HB_MUX_MKV },
@@ -181,7 +168,7 @@ to enter Debian.
      /* Initalize some sensable defaults */
      audiocfg->in.track = audiocfg->out.track = 0;
 -    audiocfg->out.codec = HB_ACODEC_FAAC;
-+    audiocfg->out.codec = HB_ACODEC_FFAAC;
++    audiocfg->out.codec = HB_ACODEC_LAME;
      audiocfg->out.bitrate = -1;
      audiocfg->out.quality = HB_INVALID_AUDIO_QUALITY;
      audiocfg->out.compression_level = -1;
@@ -196,326 +183,17 @@ to enter Debian.
  extern hb_work_object_t hb_encvorbis;
  extern hb_work_object_t hb_muxer;
 --- a/libhb/encfaac.c
-+++ /dev/null
-@@ -1,318 +0,0 @@
--/* $Id: encfaac.c,v 1.13 2005/03/03 17:21:57 titer Exp $
--
--   This file is part of the HandBrake source code.
--   Homepage: <http://handbrake.fr/>.
--   It may be used under the terms of the GNU General Public License. */
--
--#include "hb.h"
--
--#include "faac.h"
--
--struct hb_work_private_s
--{
--    hb_job_t   * job;
--
--    faacEncHandle * faac;
--    unsigned long   input_samples;
--    unsigned long   output_bytes;
--    uint8_t       * buf;
--    uint8_t       * obuf;
--    hb_list_t     * list;
--    double          pts;
--    double          framedur;
--	int             out_discrete_channels;
--};
--
--int  encfaacInit( hb_work_object_t *, hb_job_t * );
--int  encfaacWork( hb_work_object_t *, hb_buffer_t **, hb_buffer_t ** );
--void encfaacClose( hb_work_object_t * );
--
--hb_work_object_t hb_encfaac =
--{
--    WORK_ENCFAAC,
--    "AAC encoder (libfaac)",
--    encfaacInit,
--    encfaacWork,
--    encfaacClose
--};
--
--static const int valid_rates[] =
--{
--    22050, 24000, 32000, 44100, 48000, 0
--};
--
--static int find_samplerate( int rate )
--{
--    int i;
--
--    for ( i = 0; valid_rates[i] && rate > valid_rates[i]; ++i )
--    {
--    }
--    return i;
--}
--
--/***********************************************************************
-- * hb_work_encfaac_init
-- ***********************************************************************
-- *
-- **********************************************************************/
--int encfaacInit( hb_work_object_t * w, hb_job_t * job )
--{
--    hb_work_private_t * pv = calloc( 1, sizeof( hb_work_private_t ) );
--    hb_audio_t * audio = w->audio;
--    faacEncConfigurationPtr cfg;
--    uint8_t * bytes;
--    unsigned long length;
--
--    w->private_data = pv;
--
--    pv->job   = job;
--
--	/* pass the number of channels used into the private work data */
--    pv->out_discrete_channels = HB_AMIXDOWN_GET_DISCRETE_CHANNEL_COUNT(audio->config.out.mixdown);
--
--    /* if the sample rate is 'auto' and that has given us an invalid output */
--    /* rate, map it to the next highest output rate or 48K if above the highest. */
--    int rate_index = find_samplerate(audio->config.out.samplerate);
--    if ( audio->config.out.samplerate != valid_rates[rate_index] )
--    {
--        int rate = valid_rates[valid_rates[rate_index]? rate_index : rate_index - 1];
--        hb_log( "encfaac changing output samplerate from %d to %d",
--                audio->config.out.samplerate, rate );
--        audio->config.out.samplerate = rate;
--
--        /* if the new rate is over the max bandwidth per channel limit */
--        /* lower the bandwidth. */
--        double bw = audio->config.out.bitrate * 1000 / pv->out_discrete_channels;
--        if ( bw > (double)rate * (6144./1024.) )
--        {
--            int newbr = (double)rate * (6.144/1024.) * pv->out_discrete_channels;
--            hb_log( "encfaac changing output bitrate from %d to %d",
--                    audio->config.out.bitrate, newbr );
--            audio->config.out.bitrate = newbr;
--        }
--    }
--
--    pv->faac = faacEncOpen( audio->config.out.samplerate, pv->out_discrete_channels,
--                            &pv->input_samples, &pv->output_bytes );
--    pv->buf  = malloc( pv->input_samples * sizeof( float ) );
--    pv->obuf = malloc( pv->output_bytes );
--    pv->framedur = 90000.0 * pv->input_samples /
--                   ( audio->config.out.samplerate * pv->out_discrete_channels );
--    audio->config.out.samples_per_frame = pv->input_samples / pv->out_discrete_channels;
--
--    cfg                = faacEncGetCurrentConfiguration( pv->faac );
--    cfg->mpegVersion   = MPEG4;
--    cfg->aacObjectType = LOW;
--    cfg->allowMidside  = 1;
--
--	if (pv->out_discrete_channels == 6) {
--		/* we are preserving 5.1 audio into 6-channel AAC,
--		so indicate that we have an lfe channel */
--		cfg->useLfe    = 1;
--	} else {
--		cfg->useLfe    = 0;
--	}
--
--    cfg->useTns        = 0;
--    cfg->bitRate       = audio->config.out.bitrate * 1000 / pv->out_discrete_channels; /* Per channel */
--    cfg->bandWidth     = 0;
--    cfg->outputFormat  = 0;
--    cfg->inputFormat   =  FAAC_INPUT_FLOAT;
--
--    if( ( audio->config.out.mixdown == HB_AMIXDOWN_6CH ) && ( audio->config.in.channel_map != &hb_qt_chan_map ) )
--    {
--        if( audio->config.in.channel_map == &hb_ac3_chan_map )
--        {
--            cfg->channel_map[0] = 2;
--            cfg->channel_map[1] = 1;
--            cfg->channel_map[2] = 3;
--            cfg->channel_map[3] = 4;
--            cfg->channel_map[4] = 5;
--            cfg->channel_map[5] = 0;
--        }
--        else if( audio->config.in.channel_map == &hb_smpte_chan_map )
--        {
--            cfg->channel_map[0] = 2;
--            cfg->channel_map[1] = 0;
--            cfg->channel_map[2] = 1;
--            cfg->channel_map[3] = 4;
--            cfg->channel_map[4] = 5;
--            cfg->channel_map[5] = 3;
--        }
--    }
--
--    if( !faacEncSetConfiguration( pv->faac, cfg ) )
--    {
--        hb_log( "faacEncSetConfiguration failed" );
--        *job->die = 1;
--        return 0;
--    }
--
--    if( faacEncGetDecoderSpecificInfo( pv->faac, &bytes, &length ) < 0 )
--    {
--        hb_log( "faacEncGetDecoderSpecificInfo failed" );
--        *job->die = 1;
--        return 0;
--    }
--    memcpy( w->config->extradata.bytes, bytes, length );
--    w->config->extradata.length = length;
--    free( bytes );
--
--    pv->list = hb_list_init();
--
--    return 0;
--}
--
--/***********************************************************************
-- * Close
-- ***********************************************************************
-- *
-- **********************************************************************/
--void encfaacClose( hb_work_object_t * w )
--{
--    hb_work_private_t * pv = w->private_data;
--    if ( pv )
--    {
--        if ( pv->faac )
--        {
--            faacEncClose( pv->faac );
--            pv->faac = NULL;
--        }
--        if ( pv->buf )
--        {
--            free( pv->buf );
--            pv->buf = NULL;
--        }
--        if ( pv->obuf )
--        {
--            free( pv->obuf );
--            pv->obuf = NULL;
--        }
--        if ( pv->list )
--            hb_list_empty( &pv->list );
--
--        free( pv );
--        w->private_data = NULL;
--    }
--}
--
--/***********************************************************************
-- * Encode
-- ***********************************************************************
-- *
-- **********************************************************************/
--static hb_buffer_t * Encode( hb_work_object_t * w )
--{
--    hb_work_private_t * pv = w->private_data;
--
--    if( hb_list_bytes( pv->list ) < pv->input_samples * sizeof( float ) )
--    {
--        /* Need more data */
--        return NULL;
--    }
--
--    uint64_t pts, pos;
--    hb_list_getbytes( pv->list, pv->buf, pv->input_samples * sizeof( float ),
--                      &pts, &pos );
--
--    int i;
--    float *fltBuf = (float*)pv->buf;
--    for ( i = 0; i < pv->input_samples; i++ )
--        fltBuf[i] *= 32768.0;
--        
--    int size = faacEncEncode( pv->faac, (int32_t *)pv->buf, pv->input_samples,
--                              pv->obuf, pv->output_bytes );
--
--    // AAC needs four frames before it can start encoding so we'll get nothing
--    // on the first three calls to the encoder.
--    if ( size > 0 )
--    {
--        hb_buffer_t * buf = hb_buffer_init( size );
--        memcpy( buf->data, pv->obuf, size );
--        buf->size = size;
--        buf->start = pv->pts;
--        pv->pts += pv->framedur;
--        buf->stop = pv->pts;
--        buf->frametype   = HB_FRAME_AUDIO;
--        return buf;
--    }
--    return NULL;
--}
--
--static hb_buffer_t *Flush( hb_work_object_t *w, hb_buffer_t *bufin )
--{
--    hb_work_private_t *pv = w->private_data;
--
--    // pad whatever data we have out to four input frames.
--    int nbytes = hb_list_bytes( pv->list );
--    int pad = pv->input_samples * sizeof(float) * 4 - nbytes;
--    if ( pad > 0 )
--    {
--        hb_buffer_t *tmp = hb_buffer_init( pad );
--        memset( tmp->data, 0, pad );
--        hb_list_add( pv->list, tmp );
--    }
--
--    // There are up to three frames buffered in the encoder plus one
--    // in our list buffer so four calls to Encode should get them all.
--    hb_buffer_t *bufout = NULL, *buf = NULL;
--    while ( hb_list_bytes( pv->list ) >= pv->input_samples * sizeof(float) )
--    {
--        hb_buffer_t *b = Encode( w );
--        if ( b )
--        {
--            if ( bufout == NULL )
--            {
--                bufout = b;
--            }
--            else
--            {
--                buf->next = b;
--            }
--            buf = b;
--        }
--    }
--    // add the eof marker to the end of our buf chain
--    if ( buf )
--        buf->next = bufin;
--    else
--        bufout = bufin;
--    return bufout;
--}
--
--/***********************************************************************
-- * Work
-- ***********************************************************************
-- *
-- **********************************************************************/
--int encfaacWork( hb_work_object_t * w, hb_buffer_t ** buf_in,
--                 hb_buffer_t ** buf_out )
--{
--    hb_work_private_t * pv = w->private_data;
--    hb_buffer_t * buf;
--
--    if ( (*buf_in)->size <= 0 )
--    {
--        // EOF on input. Finish encoding what we have buffered then send
--        // it & the eof downstream.
--
--        *buf_out = Flush( w, *buf_in );
--        *buf_in = NULL;
--        return HB_WORK_DONE;
--    }
--
--    hb_list_add( pv->list, *buf_in );
--    *buf_in = NULL;
--
--    *buf_out = buf = Encode( w );
--
--    while( buf )
--    {
--        buf->next = Encode( w );
--        buf       = buf->next;
--    }
--
--    return HB_WORK_OK;
--}
--
++++ b/libhb/encfaac.c
+@@ -1,3 +1,4 @@
++#if 0
+ /* $Id: encfaac.c,v 1.13 2005/03/03 17:21:57 titer Exp $
+ 
+    This file is part of the HandBrake source code.
+@@ -316,3 +317,4 @@
+     return HB_WORK_OK;
+ }
+ 
++#endif /* 0 */
 --- a/libhb/hb.c
 +++ b/libhb/hb.c
 @@ -455,7 +455,6 @@

-- 
handbrake packaging



More information about the pkg-multimedia-commits mailing list