[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