diff -Nru handbrake-0.9.9+dfsg/contrib/a52dec/A00-a52-state-t-public.patch handbrake-0.9.9+ppa1/contrib/a52dec/A00-a52-state-t-public.patch --- handbrake-0.9.9+dfsg/contrib/a52dec/A00-a52-state-t-public.patch 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/contrib/a52dec/A00-a52-state-t-public.patch 2012-08-02 21:43:22.000000000 +0000 @@ -0,0 +1,152 @@ +diff -Naur a52dec.old/include/a52.h a52dec.new/include/a52.h +--- a52dec.old/include/a52.h 2002-01-28 06:37:54.000000000 +0100 ++++ a52dec.new/include/a52.h 2012-07-16 14:13:35.000000000 +0200 +@@ -30,7 +30,71 @@ + typedef double sample_t; + #endif + +-typedef struct a52_state_s a52_state_t; ++typedef struct { ++ uint8_t bai; /* fine SNR offset, fast gain */ ++ uint8_t deltbae; /* delta bit allocation exists */ ++ int8_t deltba[50]; /* per-band delta bit allocation */ ++} ba_t; ++ ++typedef struct { ++ uint8_t exp[256]; /* decoded channel exponents */ ++ int8_t bap[256]; /* derived channel bit allocation */ ++} expbap_t; ++ ++typedef struct { ++ uint8_t fscod; /* sample rate */ ++ uint8_t halfrate; /* halfrate factor */ ++ uint8_t acmod; /* coded channels */ ++ uint8_t lfeon; /* coded lfe channel */ ++ sample_t clev; /* centre channel mix level */ ++ sample_t slev; /* surround channels mix level */ ++ ++ int output; /* type of output */ ++ sample_t level; /* output level */ ++ sample_t bias; /* output bias */ ++ ++ int dynrnge; /* apply dynamic range */ ++ sample_t dynrng; /* dynamic range */ ++ void * dynrngdata; /* dynamic range callback funtion and data */ ++ sample_t (* dynrngcall) (sample_t range, void * dynrngdata); ++ ++ uint8_t chincpl; /* channel coupled */ ++ uint8_t phsflginu; /* phase flags in use (stereo only) */ ++ uint8_t cplstrtmant; /* coupling channel start mantissa */ ++ uint8_t cplendmant; /* coupling channel end mantissa */ ++ uint32_t cplbndstrc; /* coupling band structure */ ++ sample_t cplco[5][18]; /* coupling coordinates */ ++ ++ /* derived information */ ++ uint8_t cplstrtbnd; /* coupling start band (for bit allocation) */ ++ uint8_t ncplbnd; /* number of coupling bands */ ++ ++ uint8_t rematflg; /* stereo rematrixing */ ++ ++ uint8_t endmant[5]; /* channel end mantissa */ ++ ++ uint16_t bai; /* bit allocation information */ ++ ++ uint32_t * buffer_start; ++ uint16_t lfsr_state; /* dither state */ ++ uint32_t bits_left; ++ uint32_t current_word; ++ ++ uint8_t csnroffst; /* coarse SNR offset */ ++ ba_t cplba; /* coupling bit allocation parameters */ ++ ba_t ba[5]; /* channel bit allocation parameters */ ++ ba_t lfeba; /* lfe bit allocation parameters */ ++ ++ uint8_t cplfleak; /* coupling fast leak init */ ++ uint8_t cplsleak; /* coupling slow leak init */ ++ ++ expbap_t cpl_expbap; ++ expbap_t fbw_expbap[5]; ++ expbap_t lfe_expbap; ++ ++ sample_t * samples; ++ int downmixed; ++} a52_state_t; + + #define A52_CHANNEL 0 + #define A52_MONO 1 +diff -Naur a52dec.old/liba52/a52_internal.h a52dec.new/liba52/a52_internal.h +--- a52dec.old/liba52/a52_internal.h 2002-07-28 03:52:06.000000000 +0200 ++++ a52dec.new/liba52/a52_internal.h 2012-07-16 14:11:47.000000000 +0200 +@@ -21,72 +21,6 @@ + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +-typedef struct { +- uint8_t bai; /* fine SNR offset, fast gain */ +- uint8_t deltbae; /* delta bit allocation exists */ +- int8_t deltba[50]; /* per-band delta bit allocation */ +-} ba_t; +- +-typedef struct { +- uint8_t exp[256]; /* decoded channel exponents */ +- int8_t bap[256]; /* derived channel bit allocation */ +-} expbap_t; +- +-struct a52_state_s { +- uint8_t fscod; /* sample rate */ +- uint8_t halfrate; /* halfrate factor */ +- uint8_t acmod; /* coded channels */ +- uint8_t lfeon; /* coded lfe channel */ +- sample_t clev; /* centre channel mix level */ +- sample_t slev; /* surround channels mix level */ +- +- int output; /* type of output */ +- sample_t level; /* output level */ +- sample_t bias; /* output bias */ +- +- int dynrnge; /* apply dynamic range */ +- sample_t dynrng; /* dynamic range */ +- void * dynrngdata; /* dynamic range callback funtion and data */ +- sample_t (* dynrngcall) (sample_t range, void * dynrngdata); +- +- uint8_t chincpl; /* channel coupled */ +- uint8_t phsflginu; /* phase flags in use (stereo only) */ +- uint8_t cplstrtmant; /* coupling channel start mantissa */ +- uint8_t cplendmant; /* coupling channel end mantissa */ +- uint32_t cplbndstrc; /* coupling band structure */ +- sample_t cplco[5][18]; /* coupling coordinates */ +- +- /* derived information */ +- uint8_t cplstrtbnd; /* coupling start band (for bit allocation) */ +- uint8_t ncplbnd; /* number of coupling bands */ +- +- uint8_t rematflg; /* stereo rematrixing */ +- +- uint8_t endmant[5]; /* channel end mantissa */ +- +- uint16_t bai; /* bit allocation information */ +- +- uint32_t * buffer_start; +- uint16_t lfsr_state; /* dither state */ +- uint32_t bits_left; +- uint32_t current_word; +- +- uint8_t csnroffst; /* coarse SNR offset */ +- ba_t cplba; /* coupling bit allocation parameters */ +- ba_t ba[5]; /* channel bit allocation parameters */ +- ba_t lfeba; /* lfe bit allocation parameters */ +- +- uint8_t cplfleak; /* coupling fast leak init */ +- uint8_t cplsleak; /* coupling slow leak init */ +- +- expbap_t cpl_expbap; +- expbap_t fbw_expbap[5]; +- expbap_t lfe_expbap; +- +- sample_t * samples; +- int downmixed; +-}; +- + #define LEVEL_PLUS6DB 2.0 + #define LEVEL_PLUS3DB 1.4142135623730951 + #define LEVEL_3DB 0.7071067811865476 diff -Nru handbrake-0.9.9+dfsg/contrib/a52dec/A01-thread-safe.patch handbrake-0.9.9+ppa1/contrib/a52dec/A01-thread-safe.patch --- handbrake-0.9.9+dfsg/contrib/a52dec/A01-thread-safe.patch 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/contrib/a52dec/A01-thread-safe.patch 2012-08-02 21:43:22.000000000 +0000 @@ -0,0 +1,462 @@ +diff -Naur a52dec.old/include/a52.h a52dec.new/include/a52.h +--- a52dec.old/include/a52.h 2012-07-16 14:24:14.000000000 +0200 ++++ a52dec.new/include/a52.h 2012-07-16 14:31:37.000000000 +0200 +@@ -42,6 +42,11 @@ + } expbap_t; + + typedef struct { ++ sample_t real; ++ sample_t imag; ++} complex_t; ++ ++typedef struct { + uint8_t fscod; /* sample rate */ + uint8_t halfrate; /* halfrate factor */ + uint8_t acmod; /* coded channels */ +@@ -94,6 +99,20 @@ + + sample_t * samples; + int downmixed; ++ ++ /* Root values for IFFT */ ++ sample_t * roots16; // size 3 ++ sample_t * roots32; // size 7 ++ sample_t * roots64; // size 15 ++ sample_t * roots128; // size 31 ++ ++ /* Twiddle factors for IMDCT */ ++ complex_t * pre1; // size 128 ++ complex_t * post1; // size 64 ++ complex_t * pre2; // size 64 ++ complex_t * post2; // size 32 ++ ++ sample_t * a52_imdct_window; // size 256 + } a52_state_t; + + #define A52_CHANNEL 0 +diff -Naur a52dec.old/liba52/a52_internal.h a52dec.new/liba52/a52_internal.h +--- a52dec.old/liba52/a52_internal.h 2012-07-16 14:24:14.000000000 +0200 ++++ a52dec.new/liba52/a52_internal.h 2012-07-16 14:28:33.000000000 +0200 +@@ -49,6 +49,6 @@ + sample_t clev, sample_t slev); + void a52_upmix (sample_t * samples, int acmod, int output); + +-void a52_imdct_init (uint32_t mm_accel); +-void a52_imdct_256 (sample_t * data, sample_t * delay, sample_t bias); +-void a52_imdct_512 (sample_t * data, sample_t * delay, sample_t bias); ++void a52_imdct_init (a52_state_t * state, uint32_t mm_accel); ++void a52_imdct_256 (a52_state_t * state, sample_t * data, sample_t * delay, sample_t bias); ++void a52_imdct_512 (a52_state_t * state, sample_t * data, sample_t * delay, sample_t bias); +diff -Naur a52dec.old/liba52/imdct.c a52dec.new/liba52/imdct.c +--- a52dec.old/liba52/imdct.c 2012-07-16 14:24:14.000000000 +0200 ++++ a52dec.new/liba52/imdct.c 2012-07-16 14:33:00.000000000 +0200 +@@ -40,11 +40,6 @@ + #include "a52_internal.h" + #include "mm_accel.h" + +-typedef struct complex_s { +- sample_t real; +- sample_t imag; +-} complex_t; +- + static uint8_t fftorder[] = { + 0,128, 64,192, 32,160,224, 96, 16,144, 80,208,240,112, 48,176, + 8,136, 72,200, 40,168,232,104,248,120, 56,184, 24,152,216, 88, +@@ -56,22 +51,8 @@ + 6,134, 70,198, 38,166,230,102,246,118, 54,182, 22,150,214, 86 + }; + +-/* Root values for IFFT */ +-static sample_t roots16[3]; +-static sample_t roots32[7]; +-static sample_t roots64[15]; +-static sample_t roots128[31]; +- +-/* Twiddle factors for IMDCT */ +-static complex_t pre1[128]; +-static complex_t post1[64]; +-static complex_t pre2[64]; +-static complex_t post2[32]; +- +-static sample_t a52_imdct_window[256]; +- +-static void (* ifft128) (complex_t * buf); +-static void (* ifft64) (complex_t * buf); ++static void (* ifft128) (a52_state_t * state, complex_t * buf); ++static void (* ifft64) (a52_state_t * state, complex_t * buf); + + static inline void ifft2 (complex_t * buf) + { +@@ -167,7 +148,7 @@ + a1.imag += tmp4; \ + } while (0) + +-static inline void ifft8 (complex_t * buf) ++static inline void ifft8 (a52_state_t * state, complex_t * buf) + { + double tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8; + +@@ -175,7 +156,7 @@ + ifft2 (buf + 4); + ifft2 (buf + 6); + BUTTERFLY_ZERO (buf[0], buf[2], buf[4], buf[6]); +- BUTTERFLY_HALF (buf[1], buf[3], buf[5], buf[7], roots16[1]); ++ BUTTERFLY_HALF (buf[1], buf[3], buf[5], buf[7], state->roots16[1]); + } + + static void ifft_pass (complex_t * buf, sample_t * weight, int n) +@@ -205,66 +186,66 @@ + } while (--i); + } + +-static void ifft16 (complex_t * buf) ++static void ifft16 (a52_state_t * state, complex_t * buf) + { +- ifft8 (buf); ++ ifft8 (state, buf); + ifft4 (buf + 8); + ifft4 (buf + 12); +- ifft_pass (buf, roots16 - 4, 4); ++ ifft_pass (buf, state->roots16 - 4, 4); + } + +-static void ifft32 (complex_t * buf) ++static void ifft32 (a52_state_t * state, complex_t * buf) + { +- ifft16 (buf); +- ifft8 (buf + 16); +- ifft8 (buf + 24); +- ifft_pass (buf, roots32 - 8, 8); ++ ifft16 (state, buf); ++ ifft8 (state, buf + 16); ++ ifft8 (state, buf + 24); ++ ifft_pass (buf, state->roots32 - 8, 8); + } + +-static void ifft64_c (complex_t * buf) ++static void ifft64_c (a52_state_t * state, complex_t * buf) + { +- ifft32 (buf); +- ifft16 (buf + 32); +- ifft16 (buf + 48); +- ifft_pass (buf, roots64 - 16, 16); ++ ifft32 (state, buf); ++ ifft16 (state, buf + 32); ++ ifft16 (state, buf + 48); ++ ifft_pass (buf, state->roots64 - 16, 16); + } + +-static void ifft128_c (complex_t * buf) ++static void ifft128_c (a52_state_t * state, complex_t * buf) + { +- ifft32 (buf); +- ifft16 (buf + 32); +- ifft16 (buf + 48); +- ifft_pass (buf, roots64 - 16, 16); ++ ifft32 (state, buf); ++ ifft16 (state, buf + 32); ++ ifft16 (state, buf + 48); ++ ifft_pass (buf, state->roots64 - 16, 16); + +- ifft32 (buf + 64); +- ifft32 (buf + 96); +- ifft_pass (buf, roots128 - 32, 32); ++ ifft32 (state, buf + 64); ++ ifft32 (state, buf + 96); ++ ifft_pass (buf, state->roots128 - 32, 32); + } + +-void a52_imdct_512 (sample_t * data, sample_t * delay, sample_t bias) ++void a52_imdct_512 (a52_state_t * state, sample_t * data, sample_t * delay, sample_t bias) + { + int i, k; + sample_t t_r, t_i, a_r, a_i, b_r, b_i, w_1, w_2; +- const sample_t * window = a52_imdct_window; ++ const sample_t * window = state->a52_imdct_window; + complex_t buf[128]; + + for (i = 0; i < 128; i++) { + k = fftorder[i]; +- t_r = pre1[i].real; +- t_i = pre1[i].imag; ++ t_r = state->pre1[i].real; ++ t_i = state->pre1[i].imag; + + buf[i].real = t_i * data[255-k] + t_r * data[k]; + buf[i].imag = t_r * data[255-k] - t_i * data[k]; + } + +- ifft128 (buf); ++ ifft128 (state, buf); + + /* Post IFFT complex multiply plus IFFT complex conjugate*/ + /* Window and convert to real valued signal */ + for (i = 0; i < 64; i++) { + /* y[n] = z[n] * (xcos1[n] + j * xsin1[n]) ; */ +- t_r = post1[i].real; +- t_i = post1[i].imag; ++ t_r = state->post1[i].real; ++ t_i = state->post1[i].imag; + + a_r = t_r * buf[i].real + t_i * buf[i].imag; + a_i = t_i * buf[i].real - t_r * buf[i].imag; +@@ -285,18 +266,18 @@ + } + } + +-void a52_imdct_256(sample_t * data, sample_t * delay, sample_t bias) ++void a52_imdct_256(a52_state_t * state, sample_t * data, sample_t * delay, sample_t bias) + { + int i, k; + sample_t t_r, t_i, a_r, a_i, b_r, b_i, c_r, c_i, d_r, d_i, w_1, w_2; +- const sample_t * window = a52_imdct_window; ++ const sample_t * window = state->a52_imdct_window; + complex_t buf1[64], buf2[64]; + + /* Pre IFFT complex multiply plus IFFT cmplx conjugate */ + for (i = 0; i < 64; i++) { + k = fftorder[i]; +- t_r = pre2[i].real; +- t_i = pre2[i].imag; ++ t_r = state->pre2[i].real; ++ t_i = state->pre2[i].imag; + + buf1[i].real = t_i * data[254-k] + t_r * data[k]; + buf1[i].imag = t_r * data[254-k] - t_i * data[k]; +@@ -305,15 +286,15 @@ + buf2[i].imag = t_r * data[255-k] - t_i * data[k+1]; + } + +- ifft64 (buf1); +- ifft64 (buf2); ++ ifft64 (state, buf1); ++ ifft64 (state, buf2); + + /* Post IFFT complex multiply */ + /* Window and convert to real valued signal */ + for (i = 0; i < 32; i++) { + /* y1[n] = z1[n] * (xcos2[n] + j * xs in2[n]) ; */ +- t_r = post2[i].real; +- t_i = post2[i].imag; ++ t_r = state->post2[i].real; ++ t_i = state->post2[i].imag; + + a_r = t_r * buf1[i].real + t_i * buf1[i].imag; + a_i = t_i * buf1[i].real - t_r * buf1[i].imag; +@@ -362,7 +343,7 @@ + return bessel; + } + +-void a52_imdct_init (uint32_t mm_accel) ++void a52_imdct_init (a52_state_t * state, uint32_t mm_accel) + { + int i, k; + double sum; +@@ -371,50 +352,50 @@ + sum = 0; + for (i = 0; i < 256; i++) { + sum += besselI0 (i * (256 - i) * (5 * M_PI / 256) * (5 * M_PI / 256)); +- a52_imdct_window[i] = sum; ++ state->a52_imdct_window[i] = sum; + } + sum++; + for (i = 0; i < 256; i++) +- a52_imdct_window[i] = sqrt (a52_imdct_window[i] / sum); ++ state->a52_imdct_window[i] = sqrt (state->a52_imdct_window[i] / sum); + + for (i = 0; i < 3; i++) +- roots16[i] = cos ((M_PI / 8) * (i + 1)); ++ state->roots16[i] = cos ((M_PI / 8) * (i + 1)); + + for (i = 0; i < 7; i++) +- roots32[i] = cos ((M_PI / 16) * (i + 1)); ++ state->roots32[i] = cos ((M_PI / 16) * (i + 1)); + + for (i = 0; i < 15; i++) +- roots64[i] = cos ((M_PI / 32) * (i + 1)); ++ state->roots64[i] = cos ((M_PI / 32) * (i + 1)); + + for (i = 0; i < 31; i++) +- roots128[i] = cos ((M_PI / 64) * (i + 1)); ++ state->roots128[i] = cos ((M_PI / 64) * (i + 1)); + + for (i = 0; i < 64; i++) { + k = fftorder[i] / 2 + 64; +- pre1[i].real = cos ((M_PI / 256) * (k - 0.25)); +- pre1[i].imag = sin ((M_PI / 256) * (k - 0.25)); ++ state->pre1[i].real = cos ((M_PI / 256) * (k - 0.25)); ++ state->pre1[i].imag = sin ((M_PI / 256) * (k - 0.25)); + } + + for (i = 64; i < 128; i++) { + k = fftorder[i] / 2 + 64; +- pre1[i].real = -cos ((M_PI / 256) * (k - 0.25)); +- pre1[i].imag = -sin ((M_PI / 256) * (k - 0.25)); ++ state->pre1[i].real = -cos ((M_PI / 256) * (k - 0.25)); ++ state->pre1[i].imag = -sin ((M_PI / 256) * (k - 0.25)); + } + + for (i = 0; i < 64; i++) { +- post1[i].real = cos ((M_PI / 256) * (i + 0.5)); +- post1[i].imag = sin ((M_PI / 256) * (i + 0.5)); ++ state->post1[i].real = cos ((M_PI / 256) * (i + 0.5)); ++ state->post1[i].imag = sin ((M_PI / 256) * (i + 0.5)); + } + + for (i = 0; i < 64; i++) { + k = fftorder[i] / 4; +- pre2[i].real = cos ((M_PI / 128) * (k - 0.25)); +- pre2[i].imag = sin ((M_PI / 128) * (k - 0.25)); ++ state->pre2[i].real = cos ((M_PI / 128) * (k - 0.25)); ++ state->pre2[i].imag = sin ((M_PI / 128) * (k - 0.25)); + } + + for (i = 0; i < 32; i++) { +- post2[i].real = cos ((M_PI / 128) * (i + 0.5)); +- post2[i].imag = sin ((M_PI / 128) * (i + 0.5)); ++ state->post2[i].real = cos ((M_PI / 128) * (i + 0.5)); ++ state->post2[i].imag = sin ((M_PI / 128) * (i + 0.5)); + } + + #ifdef LIBA52_DJBFFT +diff -Naur a52dec.old/liba52/parse.c a52dec.new/liba52/parse.c +--- a52dec.old/liba52/parse.c 2012-07-16 14:24:14.000000000 +0200 ++++ a52dec.new/liba52/parse.c 2012-07-16 14:33:00.000000000 +0200 +@@ -56,16 +56,53 @@ + a52_state_t * state; + int i; + +- state = malloc (sizeof (a52_state_t)); ++ state = calloc (1, sizeof (a52_state_t)); + if (state == NULL) + return NULL; + + state->samples = memalign (16, 256 * 12 * sizeof (sample_t)); + if (state->samples == NULL) { +- free (state); +- return NULL; ++ goto fail; + } + ++ /* Root values for IFFT */ ++ state->roots16 = memalign (16, 3 * sizeof (sample_t)); ++ if (state->roots16 == NULL) ++ goto fail; ++ ++ state->roots32 = memalign (16, 7 * sizeof (sample_t)); ++ if (state->roots32 == NULL) ++ goto fail; ++ ++ state->roots64 = memalign (16, 15 * sizeof (sample_t)); ++ if (state->roots64 == NULL) ++ goto fail; ++ ++ state->roots128 = memalign (16, 31 * sizeof (sample_t)); ++ if (state->roots128 == NULL) ++ goto fail; ++ ++ /* Twiddle factors for IMDCT */ ++ state->pre1 = memalign (16, 128 * sizeof (complex_t)); ++ if (state->pre1 == NULL) ++ goto fail; ++ ++ state->post1 = memalign (16, 64 * sizeof (complex_t)); ++ if (state->post1 == NULL) ++ goto fail; ++ ++ state->pre2 = memalign (16, 64 * sizeof (complex_t)); ++ if (state->pre2 == NULL) ++ goto fail; ++ ++ state->post2 = memalign (16, 32 * sizeof (complex_t)); ++ if (state->post2 == NULL) ++ goto fail; ++ ++ state->a52_imdct_window = memalign (16, 256 * sizeof (sample_t)); ++ if (state->a52_imdct_window == NULL) ++ goto fail; ++ + for (i = 0; i < 256 * 12; i++) + state->samples[i] = 0; + +@@ -73,9 +110,27 @@ + + state->lfsr_state = 1; + +- a52_imdct_init (mm_accel); ++ a52_imdct_init (state, mm_accel); + + return state; ++ ++fail: ++ if ( state ) ++ { ++ free (state->a52_imdct_window); ++ free (state->post2); ++ free (state->pre2); ++ free (state->post1); ++ free (state->pre1); ++ free (state->roots128); ++ free (state->roots64); ++ free (state->roots32); ++ free (state->roots16); ++ free (state->samples); ++ free (state); ++ } ++ return NULL; ++ + } + + sample_t * a52_samples (a52_state_t * state) +@@ -825,7 +880,7 @@ + state->dynrng, 0, 7); + for (i = 7; i < 256; i++) + (samples-256)[i] = 0; +- a52_imdct_512 (samples - 256, samples + 1536 - 256, state->bias); ++ a52_imdct_512 (state, samples - 256, samples + 1536 - 256, state->bias); + } else { + /* just skip the LFE coefficients */ + coeff_get (state, samples + 1280, &state->lfe_expbap, &quantizer, +@@ -854,10 +909,10 @@ + + if (coeff[i]) { + if (blksw[i]) +- a52_imdct_256 (samples + 256 * i, samples + 1536 + 256 * i, ++ a52_imdct_256 (state, samples + 256 * i, samples + 1536 + 256 * i, + bias); + else +- a52_imdct_512 (samples + 256 * i, samples + 1536 + 256 * i, ++ a52_imdct_512 (state, samples + 256 * i, samples + 1536 + 256 * i, + bias); + } else { + int j; +@@ -883,11 +938,11 @@ + + if (blksw[0]) + for (i = 0; i < nfchans; i++) +- a52_imdct_256 (samples + 256 * i, samples + 1536 + 256 * i, ++ a52_imdct_256 (state, samples + 256 * i, samples + 1536 + 256 * i, + state->bias); + else + for (i = 0; i < nfchans; i++) +- a52_imdct_512 (samples + 256 * i, samples + 1536 + 256 * i, ++ a52_imdct_512 (state, samples + 256 * i, samples + 1536 + 256 * i, + state->bias); + } + +@@ -896,6 +951,15 @@ + + void a52_free (a52_state_t * state) + { ++ free (state->a52_imdct_window); ++ free (state->post2); ++ free (state->pre2); ++ free (state->post1); ++ free (state->pre1); ++ free (state->roots128); ++ free (state->roots64); ++ free (state->roots32); ++ free (state->roots16); + free (state->samples); + free (state); + } diff -Nru handbrake-0.9.9+dfsg/contrib/a52dec/A02-imdct-shutup.patch handbrake-0.9.9+ppa1/contrib/a52dec/A02-imdct-shutup.patch --- handbrake-0.9.9+dfsg/contrib/a52dec/A02-imdct-shutup.patch 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/contrib/a52dec/A02-imdct-shutup.patch 2012-08-02 21:43:22.000000000 +0000 @@ -0,0 +1,11 @@ +diff -Naur a52dec_original/liba52/imdct.c a52dec_patched/liba52/imdct.c +--- a52dec.old/liba52/imdct.c 2002-07-28 03:52:07.000000000 +0200 ++++ a52dec.new/liba52/imdct.c 2011-07-15 20:29:09.000000000 +0200 +@@ -425,7 +425,6 @@ + } else + #endif + { +- fprintf (stderr, "No accelerated IMDCT transform found\n"); + ifft128 = ifft128_c; + ifft64 = ifft64_c; + } diff -Nru handbrake-0.9.9+dfsg/contrib/a52dec/A03-automake.patch handbrake-0.9.9+ppa1/contrib/a52dec/A03-automake.patch --- handbrake-0.9.9+dfsg/contrib/a52dec/A03-automake.patch 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/contrib/a52dec/A03-automake.patch 2013-01-29 02:44:40.000000000 +0000 @@ -0,0 +1,12 @@ +diff -Naur a52dec.orig/configure.in a52dec/configure.in +--- a52dec.orig/configure.in 2002-07-27 23:50:20.000000000 -0400 ++++ a52dec/configure.in 2013-01-28 21:06:27.000000000 -0500 +@@ -6,7 +6,7 @@ + AC_CONFIG_FILES([Makefile autotools/Makefile include/Makefile test/Makefile + doc/Makefile src/Makefile liba52/Makefile libao/Makefile vc++/Makefile]) + AM_INIT_AUTOMAKE([a52dec],[0.7.4]) +-AM_CONFIG_HEADER(include/config.h) ++AC_CONFIG_HEADER(include/config.h) + AM_MAINTAINER_MODE + AC_CANONICAL_HOST + diff -Nru handbrake-0.9.9+dfsg/contrib/a52dec/module.defs handbrake-0.9.9+ppa1/contrib/a52dec/module.defs --- handbrake-0.9.9+dfsg/contrib/a52dec/module.defs 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/contrib/a52dec/module.defs 2011-07-11 18:19:51.000000000 +0000 @@ -0,0 +1,8 @@ +$(eval $(call import.MODULE.defs,A52DEC,a52dec)) +$(eval $(call import.CONTRIB.defs,A52DEC)) + +A52DEC.FETCH.url = http://download.handbrake.fr/handbrake/contrib/a52dec-0.7.4.tar.gz +A52DEC.EXTRACT.tarbase = a52dec +A52DEC.INSTALL.strip = liba52.a + +A52DEC.CONFIGURE.bootstrap = rm -fr aclocal.m4 autom4te.cache; autoreconf -fiv; diff -Nru handbrake-0.9.9+dfsg/contrib/a52dec/module.rules handbrake-0.9.9+ppa1/contrib/a52dec/module.rules --- handbrake-0.9.9+dfsg/contrib/a52dec/module.rules 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/contrib/a52dec/module.rules 2009-03-01 17:28:24.000000000 +0000 @@ -0,0 +1,2 @@ +$(eval $(call import.MODULE.rules,A52DEC)) +$(eval $(call import.CONTRIB.rules,A52DEC)) diff -Nru handbrake-0.9.9+dfsg/contrib/autoconf/module.defs handbrake-0.9.9+ppa1/contrib/autoconf/module.defs --- handbrake-0.9.9+dfsg/contrib/autoconf/module.defs 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/contrib/autoconf/module.defs 2012-09-07 20:10:37.000000000 +0000 @@ -0,0 +1,4 @@ +$(eval $(call import.MODULE.defs,AUTOCONF,autoconf,M4)) +$(eval $(call import.CONTRIB.defs,AUTOCONF)) + +AUTOCONF.FETCH.url = http://download.handbrake.fr/handbrake/contrib/autoconf-2.69.tar.bz2 diff -Nru handbrake-0.9.9+dfsg/contrib/autoconf/module.rules handbrake-0.9.9+ppa1/contrib/autoconf/module.rules --- handbrake-0.9.9+dfsg/contrib/autoconf/module.rules 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/contrib/autoconf/module.rules 2012-09-07 20:10:37.000000000 +0000 @@ -0,0 +1,2 @@ +$(eval $(call import.MODULE.rules,AUTOCONF)) +$(eval $(call import.CONTRIB.rules,AUTOCONF)) diff -Nru handbrake-0.9.9+dfsg/contrib/automake/module.defs handbrake-0.9.9+ppa1/contrib/automake/module.defs --- handbrake-0.9.9+dfsg/contrib/automake/module.defs 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/contrib/automake/module.defs 2013-01-29 14:14:36.000000000 +0000 @@ -0,0 +1,4 @@ +$(eval $(call import.MODULE.defs,AUTOMAKE,automake,AUTOCONF)) +$(eval $(call import.CONTRIB.defs,AUTOMAKE)) + +AUTOMAKE.FETCH.url = http://download.handbrake.fr/handbrake/contrib/automake-1.13.1.tar.bz2 diff -Nru handbrake-0.9.9+dfsg/contrib/automake/module.rules handbrake-0.9.9+ppa1/contrib/automake/module.rules --- handbrake-0.9.9+dfsg/contrib/automake/module.rules 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/contrib/automake/module.rules 2012-09-07 20:10:37.000000000 +0000 @@ -0,0 +1,2 @@ +$(eval $(call import.MODULE.rules,AUTOMAKE)) +$(eval $(call import.CONTRIB.rules,AUTOMAKE)) diff -Nru handbrake-0.9.9+dfsg/contrib/bzip2/module.defs handbrake-0.9.9+ppa1/contrib/bzip2/module.defs --- handbrake-0.9.9+dfsg/contrib/bzip2/module.defs 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/contrib/bzip2/module.defs 2013-02-19 22:49:15.000000000 +0000 @@ -0,0 +1,26 @@ +$(eval $(call import.MODULE.defs,BZIP2,bzip2)) +$(eval $(call import.CONTRIB.defs,BZIP2)) + +BZIP2.FETCH.url = http://download.handbrake.fr/handbrake/contrib/bzip2-1.0.6.tar.gz +BZIP2.EXTRACT.tarbase = bzip2 +BZIP2.CONFIGURE = $(TOUCH.exe) $@ + +BZIP2.BUILD.extra = \ + PREFIX="$(BZIP2.CONFIGURE.prefix)" \ + CC="$(BZIP2.GCC.gcc)" \ + $(BZIP2.CONFIGURE.env.CFLAGS) \ + RANLIB="$(RANLIB.exe)" + +BZIP2.BUILD.ntargets = libbz2.a + +define BZIP2.INSTALL + $(CP.exe) $(BZIP2.EXTRACT.dir/)libbz2.a $(CONTRIB.build/)lib/ + $(CP.exe) $(BZIP2.EXTRACT.dir/)bzlib.h $(CONTRIB.build/)include/ + $(TOUCH.exe) $@ +endef + +define BZIP2.UNINSTALL + $(RM.exe) -f $(CONTRIB.build/)lib/libbz2.a + $(RM.exe) -f $(CONTRIB.build/)include/bzlib.h + $(RM.exe) -f $(BZIP2.INSTALL.target) +endef diff -Nru handbrake-0.9.9+dfsg/contrib/bzip2/module.rules handbrake-0.9.9+ppa1/contrib/bzip2/module.rules --- handbrake-0.9.9+dfsg/contrib/bzip2/module.rules 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/contrib/bzip2/module.rules 2009-03-01 17:28:24.000000000 +0000 @@ -0,0 +1,2 @@ +$(eval $(call import.MODULE.rules,BZIP2)) +$(eval $(call import.CONTRIB.rules,BZIP2)) diff -Nru handbrake-0.9.9+dfsg/contrib/faac/A00-bitrates.patch handbrake-0.9.9+ppa1/contrib/faac/A00-bitrates.patch --- handbrake-0.9.9+dfsg/contrib/faac/A00-bitrates.patch 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/contrib/faac/A00-bitrates.patch 2012-09-03 12:37:16.000000000 +0000 @@ -0,0 +1,60 @@ +diff -Naur faac-1.28.old/libfaac/frame.c faac-1.28.new/libfaac/frame.c +--- faac-1.28.old/libfaac/frame.c 2004-11-17 06:26:06.000000000 -0800 ++++ faac-1.28.new/libfaac/frame.c 2010-04-10 12:26:28.200614437 -0700 +@@ -196,6 +196,8 @@ + {47000, 10000}, + {64000, 16000}, + {76000, 20000}, ++ {128000, 22000}, ++ {160000, 22000}, + #endif + {0, 0} + }; +@@ -242,8 +244,6 @@ + config->bitRate = tmpbitRate * hEncoder->sampleRate / 44100; + #endif + +- if (config->bandWidth > bwbase) +- config->bandWidth = bwbase; + } + + hEncoder->config.bitRate = config->bitRate; +@@ -251,6 +251,7 @@ + if (!config->bandWidth) + { + config->bandWidth = (config->quantqual - 100) * bwmult + bwbase; ++ config->bandWidth *= (double)hEncoder->sampleRate / 44100; + } + + hEncoder->config.bandWidth = config->bandWidth; +@@ -261,8 +262,8 @@ + if (hEncoder->config.bandWidth > (hEncoder->sampleRate / 2)) + hEncoder->config.bandWidth = hEncoder->sampleRate / 2; + +- if (config->quantqual > 500) +- config->quantqual = 500; ++ if (config->quantqual > 700) ++ config->quantqual = 700; + if (config->quantqual < 10) + config->quantqual = 10; + +@@ -328,8 +329,6 @@ + hEncoder->config.useTns = 0; + hEncoder->config.bitRate = 0; /* default bitrate / channel */ + hEncoder->config.bandWidth = bwfac * hEncoder->sampleRate; +- if (hEncoder->config.bandWidth > bwbase) +- hEncoder->config.bandWidth = bwbase; + hEncoder->config.quantqual = 100; + hEncoder->config.psymodellist = (psymodellist_t *)psymodellist; + hEncoder->config.psymodelidx = 0; +@@ -888,8 +887,8 @@ + if (((diff > 0) && (fix > 0.0)) || ((diff < 0) && (fix < 0.0))) + { + hEncoder->aacquantCfg.quality *= (1.0 - fix); +- if (hEncoder->aacquantCfg.quality > 300) +- hEncoder->aacquantCfg.quality = 300; ++ if (hEncoder->aacquantCfg.quality > 700) ++ hEncoder->aacquantCfg.quality = 700; + if (hEncoder->aacquantCfg.quality < 50) + hEncoder->aacquantCfg.quality = 50; + } diff -Nru handbrake-0.9.9+dfsg/contrib/faac/A01-multichannel-improvements.patch handbrake-0.9.9+ppa1/contrib/faac/A01-multichannel-improvements.patch --- handbrake-0.9.9+dfsg/contrib/faac/A01-multichannel-improvements.patch 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/contrib/faac/A01-multichannel-improvements.patch 2012-09-03 12:37:16.000000000 +0000 @@ -0,0 +1,752 @@ +diff -Naur faac-1.28.old/frontend/main.c faac-1.28.new/frontend/main.c +--- faac-1.28.old/frontend/main.c 2009-01-24 02:10:20.000000000 +0100 ++++ faac-1.28.new/frontend/main.c 2012-08-06 21:15:34.000000000 +0200 +@@ -858,7 +858,7 @@ + break; + } + if (infile->channels >= 6) +- myFormat->useLfe = 1; ++ myFormat->numLFEChannels = 1; + myFormat->allowMidside = useMidSide; + if (bitRate) + myFormat->bitRate = bitRate / infile->channels; +diff -Naur faac-1.28.old/include/faaccfg.h faac-1.28.new/include/faaccfg.h +--- faac-1.28.old/include/faaccfg.h 2004-07-04 14:12:05.000000000 +0200 ++++ faac-1.28.new/include/faaccfg.h 2012-08-06 21:15:34.000000000 +0200 +@@ -66,8 +66,14 @@ + /* Allow mid/side coding */ + unsigned int allowMidside; + +- /* Use one of the channels as LFE channel */ +- unsigned int useLfe; ++ /* Channel configuration */ ++ unsigned int channelConfiguration; ++ ++ /* Number of front, side, back & LFE channels */ ++ unsigned int numFrontChannels; ++ unsigned int numSideChannels; ++ unsigned int numBackChannels; ++ unsigned int numLFEChannels; + + /* Use Temporal Noise Shaping */ + unsigned int useTns; +diff -Naur faac-1.28.old/libfaac/bitstream.c faac-1.28.new/libfaac/bitstream.c +--- faac-1.28.old/libfaac/bitstream.c 2007-06-05 20:59:47.000000000 +0200 ++++ faac-1.28.new/libfaac/bitstream.c 2012-08-06 21:15:34.000000000 +0200 +@@ -1032,6 +1032,219 @@ + return j; + } + ++/* write a program_config_element() */ ++int WritePCE(faacEncHandle hEncoder, ++ BitStream *bitStream, ++ int byte_alignment, ++ int instance_tag, ++ int writeFlag) ++{ ++ int i; ++ int bits = 0; ++ ++ /* we can have up to 29 full-bandwidth channels of each type: ++ * 4 bits -> 0 - 15 elements, 14 CPEs (28 channels) and 1 SCE (1 channel) ++ * we can have up to 3 LFE channels: ++ * 2 bits -> 0 - 3 elements, 3 LFEs (1 channel) */ ++ if (hEncoder->config.numFrontChannels > 29) { ++ fprintf(stderr, "WritePCE: too many front channels (%u)\n", ++ hEncoder->config.numFrontChannels); ++ return 0; ++ } ++ if (hEncoder->config.numSideChannels > 29) { ++ fprintf(stderr, "WritePCE: too many side channels (%u)\n", ++ hEncoder->config.numSideChannels); ++ return 0; ++ } ++ if (hEncoder->config.numBackChannels > 29) { ++ fprintf(stderr, "WritePCE: too many back channels (%u)\n", ++ hEncoder->config.numBackChannels); ++ return 0; ++ } ++ if (hEncoder->config.numLFEChannels > 3) { ++ fprintf(stderr, "WritePCE: too many LFE channels (%u)\n", ++ hEncoder->config.numLFEChannels); ++ return 0; ++ } ++ /* program_config_element() shall be used only for the audio object types: ++ * AAC main, AAC SSR, AAC LC and AAC LTP */ ++ if (hEncoder->config.aacObjectType > 4) { ++ fprintf(stderr, "WritePCE: unsupported AudioObjectType %u", ++ hEncoder->config.aacObjectType); ++ return 0; ++ } ++ ++ /* Determine the channel configuration (see GetChannelInfo) */ ++ int sceTag = 0; ++ int cpeTag = 0; ++ int lfeTag = 0; ++ int num_front_channel_elements = 0; ++ int front_element_is_cpe[15] = { 0 }; ++ int front_element_tag_select[15] = { 0 }; ++ int num_side_channel_elements = 0; ++ int side_element_is_cpe[15] = { 0 }; ++ int side_element_tag_select[15] = { 0 }; ++ int num_back_channel_elements = 0; ++ int back_element_is_cpe[15] = { 0 }; ++ int back_element_tag_select[15] = { 0 }; ++ int num_lfe_channel_elements = 0; ++ int lfe_element_tag_select[3] = { 0 }; ++ // Front channels ++ i = hEncoder->config.numFrontChannels; ++ if (i % 2) { ++ front_element_is_cpe[num_front_channel_elements] = 0; ++ front_element_tag_select[num_front_channel_elements] = sceTag; ++ num_front_channel_elements++; ++ sceTag++; ++ i--; ++ } ++ while (i) { ++ front_element_is_cpe[num_front_channel_elements] = 1; ++ front_element_tag_select[num_front_channel_elements] = cpeTag; ++ num_front_channel_elements++; ++ cpeTag++; ++ i -= 2; ++ } ++ // Side channels ++ i = hEncoder->config.numSideChannels; ++ while (i > 1) { ++ side_element_is_cpe[num_side_channel_elements] = 1; ++ side_element_tag_select[num_side_channel_elements] = cpeTag; ++ num_side_channel_elements++; ++ cpeTag++; ++ i -= 2; ++ } ++ if (i) { ++ side_element_is_cpe[num_side_channel_elements] = 0; ++ side_element_tag_select[num_side_channel_elements] = sceTag; ++ num_side_channel_elements++; ++ sceTag++; ++ i--; ++ } ++ // Back channels ++ i = hEncoder->config.numBackChannels; ++ while (i > 1) { ++ back_element_is_cpe[num_back_channel_elements] = 1; ++ back_element_tag_select[num_back_channel_elements] = cpeTag; ++ num_back_channel_elements++; ++ cpeTag++; ++ i -= 2; ++ } ++ if (i) { ++ back_element_is_cpe[num_back_channel_elements] = 0; ++ back_element_tag_select[num_back_channel_elements] = sceTag; ++ num_back_channel_elements++; ++ sceTag++; ++ i--; ++ } ++ // LFE channels ++ i = hEncoder->config.numLFEChannels; ++ while (i) { ++ lfe_element_tag_select[num_lfe_channel_elements] = lfeTag; ++ num_lfe_channel_elements++; ++ lfeTag++; ++ i--; ++ } ++ ++ /* element_instance_tag */ ++ if (writeFlag) ++ PutBit(bitStream, instance_tag, 4); ++ bits =+ 4; ++ ++ /* object_type */ ++ if (writeFlag) ++ PutBit(bitStream, hEncoder->config.aacObjectType - 1, 2); ++ bits += 2; ++ ++ /* sampling_frequency_index */ ++ if (writeFlag) ++ PutBit(bitStream, hEncoder->sampleRateIdx, 4); ++ bits += 4; ++ ++ /* num_front_channel_elements */ ++ if (writeFlag) ++ PutBit(bitStream, num_front_channel_elements, 4); ++ bits += 4; ++ ++ /* num_side_channel_elements */ ++ if (writeFlag) ++ PutBit(bitStream, num_side_channel_elements, 4); ++ bits += 4; ++ ++ /* num_back_channel_elements */ ++ if (writeFlag) ++ PutBit(bitStream, num_back_channel_elements, 4); ++ bits += 4; ++ ++ /* num_lfe_channel_elements */ ++ if (writeFlag) ++ PutBit(bitStream, num_lfe_channel_elements, 2); ++ bits += 2; ++ ++ /* num_assoc_data_elements */ ++ if (writeFlag) ++ PutBit(bitStream, 0, 3); ++ bits += 3; ++ ++ /* num_valid_cc_elements */ ++ if (writeFlag) ++ PutBit(bitStream, 0, 4); ++ bits += 4; ++ ++ /* mono_mixdown_present */ ++ if (writeFlag) ++ PutBit(bitStream, 0, 1); ++ bits++; ++ ++ /* stereo_mixdown_present */ ++ if (writeFlag) ++ PutBit(bitStream, 0, 1); ++ bits++; ++ ++ /* matrix_mixdown_idx_present */ ++ if (writeFlag) ++ PutBit(bitStream, 0, 1); ++ bits++; ++ ++ /* describe the channel configuration */ ++ for (i = 0; i < num_front_channel_elements; i++) { ++ if (writeFlag) { ++ PutBit(bitStream, front_element_is_cpe[i], 1); ++ PutBit(bitStream, front_element_tag_select[i], 4); ++ } ++ bits += 5; ++ } ++ for (i = 0; i < num_side_channel_elements; i++) { ++ if (writeFlag) { ++ PutBit(bitStream, side_element_is_cpe[i], 1); ++ PutBit(bitStream, side_element_tag_select[i], 4); ++ } ++ bits += 5; ++ } ++ for (i = 0; i < num_back_channel_elements; i++) { ++ if (writeFlag) { ++ PutBit(bitStream, back_element_is_cpe[i], 1); ++ PutBit(bitStream, back_element_tag_select[i], 4); ++ } ++ bits += 5; ++ } ++ for (i = 0; i < num_lfe_channel_elements; i++) { ++ if (writeFlag) ++ PutBit(bitStream, lfe_element_tag_select[i], 4); ++ bits += 4; ++ } ++ ++ /* byte_alignment() */ ++ bits += ByteAlign(bitStream, writeFlag, bits + byte_alignment); ++ ++ /* comment_field_bytes */ ++ if (writeFlag) ++ PutBit(bitStream, 0, 8); ++ bits += 8; ++ ++ return bits; ++} ++ + #ifdef DRM + /* + **************************************************************************** +diff -Naur faac-1.28.old/libfaac/bitstream.h faac-1.28.new/libfaac/bitstream.h +--- faac-1.28.old/libfaac/bitstream.h 2004-07-04 14:10:52.000000000 +0200 ++++ faac-1.28.new/libfaac/bitstream.h 2012-08-06 21:15:34.000000000 +0200 +@@ -164,6 +164,13 @@ + unsigned long data, + int numBit); + ++/* write a program_config_element() */ ++int WritePCE(faacEncHandle hEncoder, ++ BitStream *bitStream, ++ int byte_alignment, ++ int instance_tag, ++ int writeFlag); ++ + #ifdef __cplusplus + } + #endif /* __cplusplus */ +diff -Naur faac-1.28.old/libfaac/channels.c faac-1.28.new/libfaac/channels.c +--- faac-1.28.old/libfaac/channels.c 2001-09-04 20:39:35.000000000 +0200 ++++ faac-1.28.new/libfaac/channels.c 2012-08-06 21:15:34.000000000 +0200 +@@ -28,83 +28,112 @@ + #include "coder.h" + #include "util.h" + +-/* If LFE present */ +-/* Num channels # of SCE's # of CPE's #of LFE's */ +-/* ============ ========== ========== ========= */ +-/* 1 1 0 0 */ +-/* 2 0 1 0 */ +-/* 3 1 1 0 */ +-/* 4 1 1 1 */ +-/* 5 1 2 0 */ +-/* For more than 5 channels, use the following elements: */ +-/* 2*N 1 2*(N-1) 1 */ +-/* 2*N+1 1 2*N 0 */ +-/* */ +-/* Else: */ +-/* */ +-/* Num channels # of SCE's # of CPE's #of LFE's */ +-/* ============ ========== ========== ========= */ +-/* 1 1 0 0 */ +-/* 2 0 1 0 */ +-/* 3 1 1 0 */ +-/* 4 2 1 0 */ +-/* 5 1 2 0 */ +-/* For more than 5 channels, use the following elements: */ +-/* 2*N 2 2*(N-1) 0 */ +-/* 2*N+1 1 2*N 0 */ +- +-void GetChannelInfo(ChannelInfo *channelInfo, int numChannels, int useLfe) +-{ +- int sceTag = 0; +- int lfeTag = 0; +- int cpeTag = 0; +- int numChannelsLeft = numChannels; ++static void addSCE(ChannelInfo *channelInfo, int numChannels, int numChannelsLeft, int tag); ++static void addCPE(ChannelInfo *channelInfo, int numChannels, int numChannelsLeft, int tag); ++static void addLFE(ChannelInfo *channelInfo, int numChannels, int numChannelsLeft, int tag); + + +- /* First element is sce, except for 2 channel case */ +- if (numChannelsLeft != 2) { +- channelInfo[numChannels-numChannelsLeft].present = 1; +- channelInfo[numChannels-numChannelsLeft].tag = sceTag++; +- channelInfo[numChannels-numChannelsLeft].cpe = 0; +- channelInfo[numChannels-numChannelsLeft].lfe = 0; ++void GetChannelInfo(ChannelInfo *channelInfo, int numFrontChannels, int numSideChannels, int numBackChannels, int numLFEChannels) ++{ ++ int i; ++ int sceTag = 0; ++ int cpeTag = 0; ++ int lfeTag = 0; ++ int numChannels = (numFrontChannels + ++ numSideChannels + ++ numBackChannels + ++ numLFEChannels); ++ int numChannelsLeft = numChannels; ++ ++ /* Front channels */ ++ i = numFrontChannels; ++ if (i % 2) { ++ // Front Center ++ addSCE(channelInfo, numChannels, numChannelsLeft, sceTag); + numChannelsLeft--; ++ sceTag++; ++ i--; ++ } ++ while (i) { ++ // Front Left/Right, Front Left/Right of Center, ??? ++ addCPE(channelInfo, numChannels, numChannelsLeft, cpeTag); ++ numChannelsLeft -= 2; ++ cpeTag++; ++ i -= 2; + } + +- /* Next elements are cpe's */ +- while (numChannelsLeft > 1) { +- /* Left channel info */ +- channelInfo[numChannels-numChannelsLeft].present = 1; +- channelInfo[numChannels-numChannelsLeft].tag = cpeTag++; +- channelInfo[numChannels-numChannelsLeft].cpe = 1; +- channelInfo[numChannels-numChannelsLeft].common_window = 0; +- channelInfo[numChannels-numChannelsLeft].ch_is_left = 1; +- channelInfo[numChannels-numChannelsLeft].paired_ch = numChannels-numChannelsLeft+1; +- channelInfo[numChannels-numChannelsLeft].lfe = 0; ++ /* Side channels */ ++ i = numSideChannels; ++ while (i > 1) { ++ // Surround Left/Right (if rear surrounds present), ??? ++ addCPE(channelInfo, numChannels, numChannelsLeft, cpeTag); ++ numChannelsLeft -= 2; ++ cpeTag++; ++ i -= 2; ++ } ++ if (i) { ++ // ??? ++ addSCE(channelInfo, numChannels, numChannelsLeft, sceTag); + numChannelsLeft--; ++ sceTag++; ++ i--; ++ } + +- /* Right channel info */ +- channelInfo[numChannels-numChannelsLeft].present = 1; +- channelInfo[numChannels-numChannelsLeft].cpe = 1; +- channelInfo[numChannels-numChannelsLeft].common_window = 0; +- channelInfo[numChannels-numChannelsLeft].ch_is_left = 0; +- channelInfo[numChannels-numChannelsLeft].paired_ch = numChannels-numChannelsLeft-1; +- channelInfo[numChannels-numChannelsLeft].lfe = 0; ++ /* Back channels */ ++ i = numBackChannels; ++ while (i > 1) { ++ // Surround Left/Right (if rear surrounds absent), Rear Surround Left/Right, ??? ++ addCPE(channelInfo, numChannels, numChannelsLeft, cpeTag); ++ numChannelsLeft -= 2; ++ cpeTag++; ++ i -= 2; ++ } ++ if (i) { ++ // Surround Center ++ addSCE(channelInfo, numChannels, numChannelsLeft, sceTag); + numChannelsLeft--; ++ sceTag++; ++ i--; + } + +- /* Is there another channel left ? */ +- if (numChannelsLeft) { +- if (useLfe) { +- channelInfo[numChannels-numChannelsLeft].present = 1; +- channelInfo[numChannels-numChannelsLeft].tag = lfeTag++; +- channelInfo[numChannels-numChannelsLeft].cpe = 0; +- channelInfo[numChannels-numChannelsLeft].lfe = 1; +- } else { +- channelInfo[numChannels-numChannelsLeft].present = 1; +- channelInfo[numChannels-numChannelsLeft].tag = sceTag++; +- channelInfo[numChannels-numChannelsLeft].cpe = 0; +- channelInfo[numChannels-numChannelsLeft].lfe = 0; +- } ++ /* LFE channel */ ++ i = numLFEChannels; ++ while (i) { ++ addLFE(channelInfo, numChannels, numChannelsLeft, lfeTag); + numChannelsLeft--; ++ lfeTag++; ++ i--; + } + } ++ ++static void addSCE(ChannelInfo *channelInfo, int numChannels, int numChannelsLeft, int tag) { ++ channelInfo[numChannels-numChannelsLeft].present = 1; ++ channelInfo[numChannels-numChannelsLeft].cpe = 0; ++ channelInfo[numChannels-numChannelsLeft].lfe = 0; ++ channelInfo[numChannels-numChannelsLeft].tag = tag; ++} ++ ++static void addCPE(ChannelInfo *channelInfo, int numChannels, int numChannelsLeft, int tag) { ++ /* Left channel info */ ++ channelInfo[numChannels-numChannelsLeft].present = 1; ++ channelInfo[numChannels-numChannelsLeft].cpe = 1; ++ channelInfo[numChannels-numChannelsLeft].lfe = 0; ++ channelInfo[numChannels-numChannelsLeft].tag = tag; ++ channelInfo[numChannels-numChannelsLeft].ch_is_left = 1; ++ channelInfo[numChannels-numChannelsLeft].common_window = 0; ++ channelInfo[numChannels-numChannelsLeft].paired_ch = numChannels-numChannelsLeft+1; ++ /* Right channel info */ ++ channelInfo[numChannels-numChannelsLeft+1].present = 1; ++ channelInfo[numChannels-numChannelsLeft+1].cpe = 1; ++ channelInfo[numChannels-numChannelsLeft+1].lfe = 0; ++ channelInfo[numChannels-numChannelsLeft+1].ch_is_left = 0; ++ channelInfo[numChannels-numChannelsLeft+1].common_window = 0; ++ channelInfo[numChannels-numChannelsLeft+1].paired_ch = numChannels-numChannelsLeft; ++} ++ ++static void addLFE(ChannelInfo *channelInfo, int numChannels, int numChannelsLeft, int tag) { ++ channelInfo[numChannels-numChannelsLeft].present = 1; ++ channelInfo[numChannels-numChannelsLeft].cpe = 0; ++ channelInfo[numChannels-numChannelsLeft].lfe = 1; ++ channelInfo[numChannels-numChannelsLeft].tag = tag; ++} +diff -Naur faac-1.28.old/libfaac/channels.h faac-1.28.new/libfaac/channels.h +--- faac-1.28.old/libfaac/channels.h 2003-06-26 21:19:41.000000000 +0200 ++++ faac-1.28.new/libfaac/channels.h 2012-08-06 21:15:34.000000000 +0200 +@@ -45,7 +45,7 @@ + MSInfo msInfo; + } ChannelInfo; + +-void GetChannelInfo(ChannelInfo *channelInfo, int numChannels, int useLfe); ++void GetChannelInfo(ChannelInfo *channelInfo, int numFrontChannels, int numSideChannels, int numBackChannels, int numLFEChannels); + + #ifdef __cplusplus + } +diff -Naur faac-1.28.old/libfaac/frame.c faac-1.28.new/libfaac/frame.c +--- faac-1.28.old/libfaac/frame.c 2004-11-17 15:26:06.000000000 +0100 ++++ faac-1.28.new/libfaac/frame.c 2012-08-06 21:15:34.000000000 +0200 +@@ -99,21 +99,47 @@ + return -2; /* not supported */ + } + +- *pSizeOfDecoderSpecificInfo = 2; +- *ppBuffer = malloc(2); ++ if (hEncoder->config.channelConfiguration > 7) { ++ fprintf(stderr, "faacEncGetDecoderSpecificInfo: " ++ "invalid channel configuration %u\n", ++ hEncoder->config.channelConfiguration); ++ return -2; ++ } else if (hEncoder->config.channelConfiguration) { ++ // 16 bits ++ *pSizeOfDecoderSpecificInfo = 2; ++ } else { ++ // 16 bits + size of the program_config_element() ++ *pSizeOfDecoderSpecificInfo = 2 + (WritePCE(hEncoder, NULL, 0, 0, 0) / 8); ++ } + +- if(*ppBuffer != NULL){ ++ *ppBuffer = malloc(*pSizeOfDecoderSpecificInfo); + ++ if (*ppBuffer != NULL) { + memset(*ppBuffer,0,*pSizeOfDecoderSpecificInfo); + pBitStream = OpenBitStream(*pSizeOfDecoderSpecificInfo, *ppBuffer); + PutBit(pBitStream, hEncoder->config.aacObjectType, 5); + PutBit(pBitStream, hEncoder->sampleRateIdx, 4); +- PutBit(pBitStream, hEncoder->numChannels, 4); ++ PutBit(pBitStream, hEncoder->config.channelConfiguration, 4); ++ PutBit(pBitStream, 0, 1); // frameLengthFlag ++ PutBit(pBitStream, 0, 1); // dependsOnCoreCoder ++ PutBit(pBitStream, 0, 1); // extensionFlag ++ if (!hEncoder->config.channelConfiguration) { ++ /* a program_config_element() must be written */ ++ if (WritePCE(hEncoder, pBitStream, 0, 0, 1) <= 0) { ++ fprintf(stderr, ++ "faacEncGetDecoderSpecificInfo: WritePCE() failed!\n"); ++ *pSizeOfDecoderSpecificInfo = 0; ++ CloseBitStream(pBitStream); ++ free(*ppBuffer); ++ *ppBuffer = NULL; ++ return -3; ++ } ++ } + CloseBitStream(pBitStream); +- + return 0; + } else { +- return -3; ++ *pSizeOfDecoderSpecificInfo = 0; ++ return -4; + } + } + +@@ -131,7 +157,6 @@ + int i; + + hEncoder->config.allowMidside = config->allowMidside; +- hEncoder->config.useLfe = config->useLfe; + hEncoder->config.useTns = config->useTns; + hEncoder->config.aacObjectType = config->aacObjectType; + hEncoder->config.mpegVersion = config->mpegVersion; +@@ -139,6 +164,77 @@ + hEncoder->config.inputFormat = config->inputFormat; + hEncoder->config.shortctl = config->shortctl; + ++ if (!config->channelConfiguration) { ++ if (hEncoder->numChannels != (config->numFrontChannels + ++ config->numSideChannels + ++ config->numBackChannels + ++ config->numLFEChannels)) { ++ fprintf(stderr, "faacEncSetConfiguration: " ++ "numChannels doesn't match the custom channel configuration\n"); ++ return 0; ++ } ++ hEncoder->config.numFrontChannels = config->numFrontChannels; ++ hEncoder->config.numSideChannels = config->numSideChannels; ++ hEncoder->config.numBackChannels = config->numBackChannels; ++ hEncoder->config.numLFEChannels = config->numLFEChannels; ++ } else if (config->channelConfiguration > 7) { ++ fprintf(stderr, "faacEncSetConfiguration: " ++ "invalid channel configuration %u\n", ++ config->channelConfiguration); ++ return 0; ++ } else { ++ if ((config->channelConfiguration == 7 && hEncoder->numChannels != 8) || ++ (config->channelConfiguration != 7 && hEncoder->numChannels != config->channelConfiguration)) { ++ fprintf(stderr, "faacEncSetConfiguration: " ++ "numChannels doesn't match the channel configuration\n"); ++ return 0; ++ } ++ switch (config->channelConfiguration) { ++ case 7: ++ hEncoder->config.numFrontChannels = 5; ++ hEncoder->config.numSideChannels = 0; ++ hEncoder->config.numBackChannels = 2; ++ hEncoder->config.numLFEChannels = 1; ++ break; ++ case 6: ++ hEncoder->config.numFrontChannels = 3; ++ hEncoder->config.numSideChannels = 0; ++ hEncoder->config.numBackChannels = 2; ++ hEncoder->config.numLFEChannels = 1; ++ break; ++ case 5: ++ hEncoder->config.numFrontChannels = 3; ++ hEncoder->config.numSideChannels = 0; ++ hEncoder->config.numBackChannels = 2; ++ hEncoder->config.numLFEChannels = 0; ++ break; ++ case 4: ++ hEncoder->config.numFrontChannels = 3; ++ hEncoder->config.numSideChannels = 0; ++ hEncoder->config.numBackChannels = 1; ++ hEncoder->config.numLFEChannels = 0; ++ break; ++ case 3: ++ hEncoder->config.numFrontChannels = 3; ++ hEncoder->config.numSideChannels = 0; ++ hEncoder->config.numBackChannels = 0; ++ hEncoder->config.numLFEChannels = 0; ++ break; ++ case 2: ++ hEncoder->config.numFrontChannels = 2; ++ hEncoder->config.numSideChannels = 0; ++ hEncoder->config.numBackChannels = 0; ++ hEncoder->config.numLFEChannels = 0; ++ break; ++ case 1: ++ hEncoder->config.numFrontChannels = 1; ++ hEncoder->config.numSideChannels = 0; ++ hEncoder->config.numBackChannels = 0; ++ hEncoder->config.numLFEChannels = 0; ++ break; ++ } ++ } ++ + assert((hEncoder->config.outputFormat == 0) || (hEncoder->config.outputFormat == 1)); + + switch( hEncoder->config.inputFormat ) +@@ -306,6 +402,12 @@ + *maxOutputBytes += 1; /* for CRC */ + #endif + ++ if (!numChannels || numChannels > 64) { ++ fprintf(stderr, "faacEncOpen: invalid number of channels %u\n", ++ numChannels); ++ return NULL; ++ } ++ + hEncoder = (faacEncStruct*)AllocMemory(sizeof(faacEncStruct)); + SetMemory(hEncoder, 0, sizeof(faacEncStruct)); + +@@ -324,7 +426,6 @@ + hEncoder->config.mpegVersion = MPEG4; + hEncoder->config.aacObjectType = LTP; + hEncoder->config.allowMidside = 1; +- hEncoder->config.useLfe = 1; + hEncoder->config.useTns = 0; + hEncoder->config.bitRate = 0; /* default bitrate / channel */ + hEncoder->config.bandWidth = bwfac * hEncoder->sampleRate; +@@ -340,6 +441,91 @@ + /* default channel map is straight-through */ + for( channel = 0; channel < 64; channel++ ) + hEncoder->config.channel_map[channel] = channel; ++ ++ /* Define a sensible default channel configuration */ ++ if (numChannels <= 6 || numChannels == 8) { ++ switch (numChannels) { ++ case 8: ++ hEncoder->config.channelConfiguration = 7; ++ hEncoder->config.numFrontChannels = 5; ++ hEncoder->config.numSideChannels = 0; ++ hEncoder->config.numBackChannels = 2; ++ hEncoder->config.numLFEChannels = 1; ++ break; ++ case 6: ++ hEncoder->config.channelConfiguration = 6; ++ hEncoder->config.numFrontChannels = 3; ++ hEncoder->config.numSideChannels = 0; ++ hEncoder->config.numBackChannels = 2; ++ hEncoder->config.numLFEChannels = 1; ++ break; ++ case 5: ++ hEncoder->config.channelConfiguration = 5; ++ hEncoder->config.numFrontChannels = 3; ++ hEncoder->config.numSideChannels = 0; ++ hEncoder->config.numBackChannels = 2; ++ hEncoder->config.numLFEChannels = 0; ++ break; ++ case 4: ++ hEncoder->config.channelConfiguration = 4; ++ hEncoder->config.numFrontChannels = 3; ++ hEncoder->config.numSideChannels = 0; ++ hEncoder->config.numBackChannels = 1; ++ hEncoder->config.numLFEChannels = 0; ++ break; ++ case 3: ++ hEncoder->config.channelConfiguration = 3; ++ hEncoder->config.numFrontChannels = 3; ++ hEncoder->config.numSideChannels = 0; ++ hEncoder->config.numBackChannels = 0; ++ hEncoder->config.numLFEChannels = 0; ++ break; ++ case 2: ++ hEncoder->config.channelConfiguration = 2; ++ hEncoder->config.numFrontChannels = 2; ++ hEncoder->config.numSideChannels = 0; ++ hEncoder->config.numBackChannels = 0; ++ hEncoder->config.numLFEChannels = 0; ++ break; ++ case 1: ++ hEncoder->config.channelConfiguration = 1; ++ hEncoder->config.numFrontChannels = 1; ++ hEncoder->config.numSideChannels = 0; ++ hEncoder->config.numBackChannels = 0; ++ hEncoder->config.numLFEChannels = 0; ++ break; ++ } ++ } else { ++ hEncoder->config.channelConfiguration = 0; ++ hEncoder->config.numFrontChannels = 0; ++ hEncoder->config.numSideChannels = 0; ++ hEncoder->config.numBackChannels = 0; ++ hEncoder->config.numLFEChannels = 0; ++ for (channel = numChannels; channel > 0; channel--) { ++ // 7 channels: 7.0 (C L R Ls Rs Rls Rrs) ++ // 9 channels: 9.0 (Lc Rc L R Ls Rs Rls Rrs Cs) ++ // 10 channels: 10.0 (C Lc Rc L R Ls Rs Rls Rrs Cs) ++ // for more than 10 channels, use faacEncSetConfiguration() ++ if (hEncoder->config.numFrontChannels < 3) { ++ // C, L, R ++ hEncoder->config.numFrontChannels++; ++ } else if (hEncoder->config.numBackChannels < 2) { ++ // Ls or Rls, Rs or Rrs ++ hEncoder->config.numBackChannels++; ++ } else if (hEncoder->config.numSideChannels < 2) { ++ // Ls, Rs ++ hEncoder->config.numSideChannels++; ++ } else if (hEncoder->config.numBackChannels < 3) { ++ // Cs ++ hEncoder->config.numBackChannels++; ++ } else if (hEncoder->config.numFrontChannels < 5) { ++ // Lc, Rc ++ hEncoder->config.numFrontChannels++; ++ } else { ++ break; ++ } ++ } ++ } + + /* + by default we have to be compatible with all previous software +@@ -459,14 +645,13 @@ + double fix; + #endif + +- /* local copy's of parameters */ ++ /* local copies of parameters */ + ChannelInfo *channelInfo = hEncoder->channelInfo; + CoderInfo *coderInfo = hEncoder->coderInfo; + unsigned int numChannels = hEncoder->numChannels; + unsigned int sampleRate = hEncoder->sampleRate; + unsigned int aacObjectType = hEncoder->config.aacObjectType; + unsigned int mpegVersion = hEncoder->config.mpegVersion; +- unsigned int useLfe = hEncoder->config.useLfe; + unsigned int useTns = hEncoder->config.useTns; + unsigned int allowMidside = hEncoder->config.allowMidside; + unsigned int bandWidth = hEncoder->config.bandWidth; +@@ -484,7 +669,11 @@ + return 0; + + /* Determine the channel configuration */ +- GetChannelInfo(channelInfo, numChannels, useLfe); ++ GetChannelInfo(channelInfo, ++ hEncoder->config.numFrontChannels, ++ hEncoder->config.numSideChannels, ++ hEncoder->config.numBackChannels, ++ hEncoder->config.numLFEChannels); + + /* Update current sample buffers */ + for (channel = 0; channel < numChannels; channel++) diff -Nru handbrake-0.9.9+dfsg/contrib/faac/module.defs handbrake-0.9.9+ppa1/contrib/faac/module.defs --- handbrake-0.9.9+dfsg/contrib/faac/module.defs 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/contrib/faac/module.defs 2011-02-04 19:54:10.000000000 +0000 @@ -0,0 +1,9 @@ +$(eval $(call import.MODULE.defs,FAAC,faac)) +$(eval $(call import.CONTRIB.defs,FAAC)) + +FAAC.FETCH.url = http://download.handbrake.fr/handbrake/contrib/faac-1.28.tar.gz +FAAC.EXTRACT.tarbase = faac-1.28 + +# If faac not already bootstrapped then add the following +#FAAC.CONFIGURE.bootstrap = ./bootstrap; +FAAC.CONFIGURE.extra = --without-mp4v2 diff -Nru handbrake-0.9.9+dfsg/contrib/faac/module.rules handbrake-0.9.9+ppa1/contrib/faac/module.rules --- handbrake-0.9.9+dfsg/contrib/faac/module.rules 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/contrib/faac/module.rules 2009-03-01 17:28:24.000000000 +0000 @@ -0,0 +1,2 @@ +$(eval $(call import.MODULE.rules,FAAC)) +$(eval $(call import.CONTRIB.rules,FAAC)) diff -Nru handbrake-0.9.9+dfsg/contrib/faac/P00-cygwin.patch handbrake-0.9.9+ppa1/contrib/faac/P00-cygwin.patch --- handbrake-0.9.9+dfsg/contrib/faac/P00-cygwin.patch 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/contrib/faac/P00-cygwin.patch 2012-09-03 12:37:16.000000000 +0000 @@ -0,0 +1,12 @@ +diff -Naur faac-1.28.old/include/faac.h faac-1.28.new/include/faac.h +--- faac-1.28.old/include/faac.h 2009-01-25 13:50:32.000000000 -0500 ++++ faac-1.28.new/include/faac.h 2009-03-20 03:31:46.000000000 -0400 +@@ -50,7 +50,7 @@ + typedef void *faacEncHandle; + + #ifndef HAVE_INT32_T +-typedef signed int int32_t; ++//typedef signed int int32_t; + #endif + + /* diff -Nru handbrake-0.9.9+dfsg/contrib/faad2/module.defs handbrake-0.9.9+ppa1/contrib/faad2/module.defs --- handbrake-0.9.9+dfsg/contrib/faad2/module.defs 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/contrib/faad2/module.defs 2011-02-04 19:54:10.000000000 +0000 @@ -0,0 +1,8 @@ +$(eval $(call import.MODULE.defs,FAAD2,faad2)) +$(eval $(call import.CONTRIB.defs,FAAD2)) + +FAAD2.FETCH.url = http://download.handbrake.fr/handbrake/contrib/faad2-2.7.tar.gz +FAAD2.EXTRACT.tarbase = faad2-2.7 + +# If faad not already bootstrapped then add the following +#FAAD2.CONFIGURE.bootstrap = ./bootstrap; diff -Nru handbrake-0.9.9+dfsg/contrib/faad2/module.rules handbrake-0.9.9+ppa1/contrib/faad2/module.rules --- handbrake-0.9.9+dfsg/contrib/faad2/module.rules 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/contrib/faad2/module.rules 2009-03-01 17:28:24.000000000 +0000 @@ -0,0 +1,2 @@ +$(eval $(call import.MODULE.rules,FAAD2)) +$(eval $(call import.CONTRIB.rules,FAAD2)) diff -Nru handbrake-0.9.9+dfsg/contrib/faad2/P00-mingw-types.patch handbrake-0.9.9+ppa1/contrib/faad2/P00-mingw-types.patch --- handbrake-0.9.9+dfsg/contrib/faad2/P00-mingw-types.patch 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/contrib/faad2/P00-mingw-types.patch 2009-04-14 20:10:57.000000000 +0000 @@ -0,0 +1,25 @@ +diff -Naur faad2.orig/common/mp4ff/mp4ff_int_types.h faad2/common/mp4ff/mp4ff_int_types.h +--- faad2.orig/common/mp4ff/mp4ff_int_types.h 2005-02-01 08:15:55.000000000 -0500 ++++ faad2/common/mp4ff/mp4ff_int_types.h 2008-10-07 16:43:06.000000000 -0400 +@@ -1,7 +1,7 @@ + #ifndef _MP4FF_INT_TYPES_H_ + #define _MP4FF_INT_TYPES_H_ + +-#if defined (_WIN32) ++#if defined(_WIN32) && !defined(__MINGW32__) + + typedef char int8_t; + typedef unsigned char uint8_t; +diff -Naur faad2.orig/frontend/main.c faad2/frontend/main.c +--- faad2.orig/frontend/main.c 2007-11-01 08:33:29.000000000 -0400 ++++ faad2/frontend/main.c 2008-10-07 16:55:49.000000000 -0400 +@@ -31,7 +31,9 @@ + #ifdef _WIN32 + #define WIN32_LEAN_AND_MEAN + #include ++#ifndef __MINGW32__ + #define off_t __int64 ++#endif + #else + #include + #endif diff -Nru handbrake-0.9.9+dfsg/contrib/faad2/P00-solaris.patch handbrake-0.9.9+ppa1/contrib/faad2/P00-solaris.patch --- handbrake-0.9.9+dfsg/contrib/faad2/P00-solaris.patch 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/contrib/faad2/P00-solaris.patch 2009-03-20 07:25:37.000000000 +0000 @@ -0,0 +1,23 @@ +diff -Naur faad2-2.7.orig/libfaad/Makefile.am faad2-2.7/libfaad/Makefile.am +--- faad2-2.7.orig/libfaad/Makefile.am 2009-02-04 19:51:03.000000000 -0500 ++++ faad2-2.7/libfaad/Makefile.am 2009-03-20 03:20:46.326379809 -0400 +@@ -1,6 +1,6 @@ + lib_LTLIBRARIES = libfaad.la + +-AM_CFLAGS = -iquote $(top_srcdir)/include ++AM_CFLAGS = -I$(top_srcdir)/include + include_HEADERS = $(top_srcdir)/include/faad.h \ + $(top_srcdir)/include/neaacdec.h + +diff -Naur faad2-2.7.orig/libfaad/Makefile.in faad2-2.7/libfaad/Makefile.in +--- faad2-2.7.orig/libfaad/Makefile.in 2009-02-10 03:36:11.000000000 -0500 ++++ faad2-2.7/libfaad/Makefile.in 2009-03-20 03:20:57.702298514 -0400 +@@ -195,7 +195,7 @@ + sysconfdir = @sysconfdir@ + target_alias = @target_alias@ + lib_LTLIBRARIES = libfaad.la +-AM_CFLAGS = -iquote $(top_srcdir)/include ++AM_CFLAGS = -I$(top_srcdir)/include + include_HEADERS = $(top_srcdir)/include/faad.h \ + $(top_srcdir)/include/neaacdec.h + diff -Nru handbrake-0.9.9+dfsg/contrib/fdk-aac/module.defs handbrake-0.9.9+ppa1/contrib/fdk-aac/module.defs --- handbrake-0.9.9+dfsg/contrib/fdk-aac/module.defs 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/contrib/fdk-aac/module.defs 2013-03-03 16:18:16.000000000 +0000 @@ -0,0 +1,5 @@ +$(eval $(call import.MODULE.defs,FDKAAC,fdkaac)) +$(eval $(call import.CONTRIB.defs,FDKAAC)) + +FDKAAC.FETCH.url = http://download.handbrake.fr/handbrake/contrib/fdk-aac-v0.1.1-6-gbae4553.tar.bz2 + diff -Nru handbrake-0.9.9+dfsg/contrib/fdk-aac/module.rules handbrake-0.9.9+ppa1/contrib/fdk-aac/module.rules --- handbrake-0.9.9+dfsg/contrib/fdk-aac/module.rules 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/contrib/fdk-aac/module.rules 2013-03-03 16:18:16.000000000 +0000 @@ -0,0 +1,2 @@ +$(eval $(call import.MODULE.rules,FDKAAC)) +$(eval $(call import.CONTRIB.rules,FDKAAC)) diff -Nru handbrake-0.9.9+dfsg/contrib/ffmpeg/A01-h264-recovery-point.patch handbrake-0.9.9+ppa1/contrib/ffmpeg/A01-h264-recovery-point.patch --- handbrake-0.9.9+dfsg/contrib/ffmpeg/A01-h264-recovery-point.patch 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/contrib/ffmpeg/A01-h264-recovery-point.patch 2013-05-13 00:49:46.000000000 +0000 @@ -0,0 +1,63 @@ +diff --git a/libavcodec/h264.c b/libavcodec/h264.c +index 8625b0f..e862701 100644 +--- a/libavcodec/h264.c ++++ b/libavcodec/h264.c +@@ -2164,6 +2164,7 @@ static void flush_dpb(AVCodecContext *avctx) + + flush_change(h); + ff_mpeg_flush(avctx); ++ h->recovery_frame= -1; + } + + static int init_poc(H264Context *h) +@@ -4001,9 +4002,18 @@ again: + if ((err = decode_slice_header(hx, h))) + break; + ++ if (h->sei_recovery_frame_cnt >= 0 && h->recovery_frame < 0) { ++ h->recovery_frame = (h->frame_num + h->sei_recovery_frame_cnt) % ++ (1 << h->sps.log2_max_frame_num); ++ } ++ + s->current_picture_ptr->f.key_frame |= +- (hx->nal_unit_type == NAL_IDR_SLICE) || +- (h->sei_recovery_frame_cnt >= 0); ++ (hx->nal_unit_type == NAL_IDR_SLICE); ++ ++ if (h->recovery_frame == h->frame_num) { ++ s->current_picture_ptr->f.key_frame |= 1; ++ h->recovery_frame = -1; ++ } + + if (h->current_slice == 1) { + if (!(s->flags2 & CODEC_FLAG2_CHUNKS)) +diff --git a/libavcodec/h264.h b/libavcodec/h264.h +index 898ebf7..42aaa6f 100644 +--- a/libavcodec/h264.h ++++ b/libavcodec/h264.h +@@ -568,6 +568,13 @@ typedef struct H264Context { + * frames. + */ + int sei_recovery_frame_cnt; ++ /** ++ * recovery_frame is the frame_num at which the next frame should ++ * be fully constructed. ++ * ++ * Set to -1 when not expecting a recovery point. ++ */ ++ int recovery_frame; + + int luma_weight_flag[2]; ///< 7.4.3.2 luma_weight_lX_flag + int chroma_weight_flag[2]; ///< 7.4.3.2 chroma_weight_lX_flag +diff --git a/libavcodec/h264_sei.c b/libavcodec/h264_sei.c +index 2e5fb65..ea33a18 100644 +--- a/libavcodec/h264_sei.c ++++ b/libavcodec/h264_sei.c +@@ -38,6 +38,7 @@ static const uint8_t sei_num_clock_ts_table[9]={ + }; + + void ff_h264_reset_sei(H264Context *h) { ++ h->recovery_frame = -1; + h->sei_recovery_frame_cnt = -1; + h->sei_dpb_output_delay = 0; + h->sei_cpb_removal_delay = -1; diff -Nru handbrake-0.9.9+dfsg/contrib/ffmpeg/A02-dca-resync.patch handbrake-0.9.9+ppa1/contrib/ffmpeg/A02-dca-resync.patch --- handbrake-0.9.9+dfsg/contrib/ffmpeg/A02-dca-resync.patch 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/contrib/ffmpeg/A02-dca-resync.patch 2013-03-01 12:34:15.000000000 +0000 @@ -0,0 +1,73 @@ +From 9922584ba3b5b02d913e629ea74d72e994870873 Mon Sep 17 00:00:00 2001 +From: John Stebbins +Date: Thu, 17 Jan 2013 19:57:26 +0100 +Subject: [PATCH] dca_parser: Handle changes in dca frame size + +A change in framesize caused a perpetual loss of synchronization. +So read (and use) the frame size from the frame header instead of +setting it only once. +--- + libavcodec/dca_parser.c | 15 +++++++++------ + 1 file changed, 9 insertions(+), 6 deletions(-) + +diff --git a/libavcodec/dca_parser.c b/libavcodec/dca_parser.c +index ab235cf..12180f3 100644 +--- a/libavcodec/dca_parser.c ++++ b/libavcodec/dca_parser.c +@@ -62,10 +62,12 @@ static int dca_find_frame_end(DCAParseContext * pc1, const uint8_t * buf, + if (IS_MARKER(state, i, buf, buf_size)) { + if (pc1->lastmarker && state == pc1->lastmarker) { + start_found = 1; ++ i++; + break; + } else if (!pc1->lastmarker) { + start_found = 1; + pc1->lastmarker = state; ++ i++; + break; + } + } +@@ -80,9 +82,6 @@ static int dca_find_frame_end(DCAParseContext * pc1, const uint8_t * buf, + if (state == pc1->lastmarker && IS_MARKER(state, i, buf, buf_size)) { + if(pc1->framesize > pc1->size) + continue; +- if(!pc1->framesize){ +- pc1->framesize = pc1->hd_pos ? pc1->hd_pos : pc1->size; +- } + pc->frame_start_found = 0; + pc->state = -1; + pc1->size = 0; +@@ -139,7 +138,7 @@ int ff_dca_convert_bitstream(const uint8_t *src, int src_size, uint8_t *dst, + } + + static int dca_parse_params(const uint8_t *buf, int buf_size, int *duration, +- int *sample_rate) ++ int *sample_rate, int *framesize) + { + GetBitContext gb; + uint8_t hdr[12 + FF_INPUT_BUFFER_PADDING_SIZE] = { 0 }; +@@ -159,7 +158,11 @@ static int dca_parse_params(const uint8_t *buf, int buf_size, int *duration, + return AVERROR_INVALIDDATA; + *duration = 256 * (sample_blocks / 8); + +- skip_bits(&gb, 20); ++ *framesize = get_bits(&gb, 14) + 1; ++ if (*framesize < 95) ++ return AVERROR_INVALIDDATA; ++ ++ skip_bits(&gb, 6); + sr_code = get_bits(&gb, 4); + *sample_rate = avpriv_dca_sample_rates[sr_code]; + if (*sample_rate == 0) +@@ -190,7 +193,7 @@ static int dca_parse(AVCodecParserContext * s, + } + + /* read the duration and sample rate from the frame header */ +- if (!dca_parse_params(buf, buf_size, &duration, &sample_rate)) { ++ if (!dca_parse_params(buf, buf_size, &duration, &sample_rate, &pc1->framesize)) { + s->duration = duration; + avctx->sample_rate = sample_rate; + } else +-- +1.7.10.4 + diff -Nru handbrake-0.9.9+dfsg/contrib/ffmpeg/A03-truehd-downmix.patch handbrake-0.9.9+ppa1/contrib/ffmpeg/A03-truehd-downmix.patch --- handbrake-0.9.9+dfsg/contrib/ffmpeg/A03-truehd-downmix.patch 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/contrib/ffmpeg/A03-truehd-downmix.patch 2013-03-01 12:34:15.000000000 +0000 @@ -0,0 +1,33 @@ +diff --git a/libavcodec/mlpdec.c b/libavcodec/mlpdec.c +index 0eaf2e3..ef1812d 100644 +--- a/libavcodec/mlpdec.c ++++ b/libavcodec/mlpdec.c +@@ -445,14 +445,24 @@ static int read_restart_header(MLPDecodeContext *m, GetBitContext *gbp, + return AVERROR_INVALIDDATA; + } + +- if (m->avctx->request_channels > 0 +- && s->max_channel + 1 >= m->avctx->request_channels +- && substr < m->max_decoded_substream) { ++#if FF_API_REQUEST_CHANNELS ++ if (m->avctx->request_channels > 0 && ++ m->avctx->request_channels <= s->max_channel + 1 && ++ m->max_decoded_substream > substr) { + av_log(m->avctx, AV_LOG_DEBUG, +- "Extracting %d channel downmix from substream %d. " ++ "Extracting %d-channel downmix from substream %d. " + "Further substreams will be skipped.\n", + s->max_channel + 1, substr); + m->max_decoded_substream = substr; ++ } else ++#endif ++ if (m->avctx->request_channel_layout == s->ch_layout && ++ m->max_decoded_substream > substr) { ++ av_log(m->avctx, AV_LOG_DEBUG, ++ "Extracting %d-channel downmix (0x%"PRIx64") from substream %d. " ++ "Further substreams will be skipped.\n", ++ s->max_channel + 1, s->ch_layout, substr); ++ m->max_decoded_substream = substr; + } + + s->noise_shift = get_bits(gbp, 4); diff -Nru handbrake-0.9.9+dfsg/contrib/ffmpeg/module.defs handbrake-0.9.9+ppa1/contrib/ffmpeg/module.defs --- handbrake-0.9.9+dfsg/contrib/ffmpeg/module.defs 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/contrib/ffmpeg/module.defs 2013-05-13 00:49:46.000000000 +0000 @@ -0,0 +1,111 @@ +$(eval $(call import.MODULE.defs,FFMPEG,ffmpeg,YASM BZIP2 ZLIB FDKAAC)) +$(eval $(call import.CONTRIB.defs,FFMPEG)) + +FFMPEG.FETCH.url = http://download.handbrake.fr/handbrake/contrib/libav-v9.6.tar.bz2 + +FFMPEG.CONFIGURE.deps = +FFMPEG.CONFIGURE.env = +FFMPEG.CONFIGURE.host = + +FFMPEG.CONFIGURE.extra = \ + --enable-gpl \ + --disable-doc \ + --disable-bsfs \ + --disable-avconv \ + --disable-avplay \ + --disable-avprobe \ + --disable-avdevice \ + --disable-avfilter \ + --disable-avserver \ + --disable-muxers \ + --disable-network \ + --disable-hwaccels \ + --disable-encoders \ + --enable-encoder=aac \ + --enable-encoder=ac3 \ + --enable-encoder=flac \ + --enable-encoder=mpeg2video \ + --enable-encoder=mpeg4 \ + --enable-encoder=snow \ + --enable-zlib \ + --enable-bzlib \ + --cc="$(FFMPEG.GCC.gcc)" \ + --extra-ldflags="$(call fn.ARGS,FFMPEG.GCC,*archs *sysroot *minver ?extra) -L$(call fn.ABSOLUTE,$(CONTRIB.build/)lib)" + +ifeq (1,$(FEATURE.fdk_aac)) +FFMPEG.CONFIGURE.extra += \ + --enable-nonfree \ + --enable-libfdk-aac \ + --enable-encoder=libfdk_aac +endif + +## check against tuple: B-SYSTEM where B is { 0 | 1 } for cross-compiling flag +ifeq (0-cygwin,$(BUILD.cross)-$(BUILD.system)) + FFMPEG.CONFIGURE.extra += --enable-pthreads --enable-memalign-hack + FFMPEG.GCC.args.extra += -fno-common +else ifeq (darwin,$(BUILD.system)) + ## section for darwin-archs + FFMPEG.CONFIGURE.extra += --enable-pthreads --enable-cross-compile --arch=$(BUILD.machine) --target-os=darwin +else ifeq (1-mingw,$(BUILD.cross)-$(BUILD.system)) + FFMPEG.CONFIGURE.extra += \ + --enable-w32threads \ + --enable-memalign-hack \ + --target-os=mingw32 \ + --arch=i386 \ + --enable-cross-compile --cross-prefix=$(BUILD.cross.prefix) + FFMPEG.GCC.args.extra += -fno-common +else + FFMPEG.CONFIGURE.extra += --enable-pthreads +endif + +ifneq (none,$(FFMPEG.GCC.g)) + FFMPEG.CONFIGURE.extra += --enable-debug + +ifeq (max,$(FFMPEG.GCC.g)) + FFMPEG.CONFIGURE.extra += --extra-cflags="$(call fn.ARGS,FFMPEG.GCC,*archs *sysroot *minver ?extra) -I$(call fn.ABSOLUTE,$(CONTRIB.build/)include) -DDEBUG" +else + FFMPEG.CONFIGURE.extra += --extra-cflags="$(call fn.ARGS,FFMPEG.GCC,*archs *sysroot *minver ?extra) -I$(call fn.ABSOLUTE,$(CONTRIB.build/)include) -DNDEBUG" +endif + +else + FFMPEG.CONFIGURE.extra += --disable-debug + FFMPEG.CONFIGURE.extra += --extra-cflags="$(call fn.ARGS,FFMPEG.GCC,*archs *sysroot *minver ?extra) -I$(call fn.ABSOLUTE,$(CONTRIB.build/)include) -DNDEBUG" +endif + +ifeq (none,$(FFMPEG.GCC.O)) + FFMPEG.CONFIGURE.extra += --disable-optimizations +endif + +## enable compile verbosity +FFMPEG.BUILD.extra = V=1 + +## +## llvm inline assembler (used in llvm-gcc and clang) runs out of registers +## on darwin i386 - unclear if it is a source code or llvm bug. +## +ifeq (darwin-i386,$(BUILD.system)-$(BUILD.machine)) + ## optimize mode hack: use clang + ifneq (none,$(FFMPEG.GCC.O)) + FFMPEG.GCC.gcc = clang + endif + + ## debug mode hack: omit frame pointer + ifneq (none,$(FFMPEG.GCC.g)) + FFMPEG.GCC.args.extra += -fomit-frame-pointer + endif +endif + +## For POSIX.1-2001 +ifeq (solaris,$(BUILD.system)) + FFMPEG.CONFIGURE.extra += --extra-libs=/usr/lib/values-xpg6.o +endif + +## MPC8 Doesn't compile on SPARC +ifeq (solaris-sparc,$(BUILD.system)-$(BUILD.machine)) + FFMPEG.CONFIGURE.extra += --disable-demuxer=mpc8 +endif + +ifeq (1,$(FEATURE.local_yasm)) + FFMPEG.CONFIGURE.env = PATH="$(call fn.ABSOLUTE,$(CONTRIB.build/)bin):$(PATH)" + FFMPEG.BUILD.env = PATH="$(call fn.ABSOLUTE,$(CONTRIB.build/)bin):$(PATH)" +endif diff -Nru handbrake-0.9.9+dfsg/contrib/ffmpeg/module.rules handbrake-0.9.9+ppa1/contrib/ffmpeg/module.rules --- handbrake-0.9.9+dfsg/contrib/ffmpeg/module.rules 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/contrib/ffmpeg/module.rules 2009-03-01 17:28:24.000000000 +0000 @@ -0,0 +1,2 @@ +$(eval $(call import.MODULE.rules,FFMPEG)) +$(eval $(call import.CONTRIB.rules,FFMPEG)) diff -Nru handbrake-0.9.9+dfsg/contrib/ffmpeg/P01-solaris.patch handbrake-0.9.9+ppa1/contrib/ffmpeg/P01-solaris.patch --- handbrake-0.9.9+dfsg/contrib/ffmpeg/P01-solaris.patch 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/contrib/ffmpeg/P01-solaris.patch 2013-05-13 00:49:46.000000000 +0000 @@ -0,0 +1,13 @@ +diff --git a/configure b/configure +index 6ab04ae..1c8ab46 100755 +--- a/configure ++++ b/configure +@@ -3171,7 +3171,7 @@ EOF + check_cc <config.fate + +-check_cpp_condition stdlib.h "defined(__PIC__) || defined(__pic__) || defined(PIC)" && enable pic ++#check_cpp_condition stdlib.h "defined(__PIC__) || defined(__pic__) || defined(PIC)" && enable pic + + set_default $PATHS_LIST + set_default nm diff -Nru handbrake-0.9.9+dfsg/contrib/fontconfig/A00-config.patch handbrake-0.9.9+ppa1/contrib/fontconfig/A00-config.patch --- handbrake-0.9.9+dfsg/contrib/fontconfig/A00-config.patch 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/contrib/fontconfig/A00-config.patch 2012-01-09 17:45:28.000000000 +0000 @@ -0,0 +1,20621 @@ +diff -Nur fontconfig-2.8.0-orig/aclocal.m4 fontconfig-2.8.0-config/aclocal.m4 +--- fontconfig-2.8.0-orig/aclocal.m4 2009-11-18 15:49:34.000000000 -0800 ++++ fontconfig-2.8.0-config/aclocal.m4 2012-01-06 13:29:51.360613980 -0800 +@@ -1,4 +1,4 @@ +-# generated automatically by aclocal 1.11 -*- Autoconf -*- ++# generated automatically by aclocal 1.11.1 -*- Autoconf -*- + + # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, + # 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. +@@ -13,8 +13,8 @@ + + m4_ifndef([AC_AUTOCONF_VERSION], + [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl +-m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.63],, +-[m4_warning([this file was generated for autoconf 2.63. ++m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.66],, ++[m4_warning([this file was generated for autoconf 2.66. + You have another version of autoconf. It may work, but is not guaranteed to. + If you have problems, you may need to regenerate the build system entirely. + To do so, use the procedure documented by the package, typically `autoreconf'.])]) +@@ -22,7 +22,8 @@ + # libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- + # + # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, +-# 2006, 2007, 2008 Free Software Foundation, Inc. ++# 2006, 2007, 2008, 2009, 2010 Free Software Foundation, ++# Inc. + # Written by Gordon Matzigkeit, 1996 + # + # This file is free software; the Free Software Foundation gives +@@ -31,7 +32,8 @@ + + m4_define([_LT_COPYING], [dnl + # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, +-# 2006, 2007, 2008 Free Software Foundation, Inc. ++# 2006, 2007, 2008, 2009, 2010 Free Software Foundation, ++# Inc. + # Written by Gordon Matzigkeit, 1996 + # + # This file is part of GNU Libtool. +@@ -58,7 +60,7 @@ + # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + ]) + +-# serial 56 LT_INIT ++# serial 57 LT_INIT + + + # LT_PREREQ(VERSION) +@@ -87,6 +89,7 @@ + # ------------------ + AC_DEFUN([LT_INIT], + [AC_PREREQ([2.58])dnl We use AC_INCLUDES_DEFAULT ++AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl + AC_BEFORE([$0], [LT_LANG])dnl + AC_BEFORE([$0], [LT_OUTPUT])dnl + AC_BEFORE([$0], [LTDL_INIT])dnl +@@ -103,6 +106,8 @@ + AC_REQUIRE([LTOBSOLETE_VERSION])dnl + m4_require([_LT_PROG_LTMAIN])dnl + ++_LT_SHELL_INIT([SHELL=${CONFIG_SHELL-/bin/sh}]) ++ + dnl Parse OPTIONS + _LT_SET_OPTIONS([$0], [$1]) + +@@ -139,7 +144,7 @@ + *) break;; + esac + done +-cc_basename=`$ECHO "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` ++cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` + ]) + + +@@ -159,6 +164,9 @@ + m4_defun([_LT_SETUP], + [AC_REQUIRE([AC_CANONICAL_HOST])dnl + AC_REQUIRE([AC_CANONICAL_BUILD])dnl ++AC_REQUIRE([_LT_PREPARE_SED_QUOTE_VARS])dnl ++AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl ++ + _LT_DECL([], [host_alias], [0], [The host system])dnl + _LT_DECL([], [host], [0])dnl + _LT_DECL([], [host_os], [0])dnl +@@ -200,7 +208,6 @@ + _LT_CHECK_OBJDIR + + m4_require([_LT_TAG_COMPILER])dnl +-_LT_PROG_ECHO_BACKSLASH + + case $host_os in + aix3*) +@@ -214,23 +221,6 @@ + ;; + esac + +-# Sed substitution that helps us do robust quoting. It backslashifies +-# metacharacters that are still active within double-quoted strings. +-sed_quote_subst='s/\([["`$\\]]\)/\\\1/g' +- +-# Same as above, but do not quote variable references. +-double_quote_subst='s/\([["`\\]]\)/\\\1/g' +- +-# Sed substitution to delay expansion of an escaped shell variable in a +-# double_quote_subst'ed string. +-delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' +- +-# Sed substitution to delay expansion of an escaped single quote. +-delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' +- +-# Sed substitution to avoid accidental globbing in evaled expressions +-no_glob_subst='s/\*/\\\*/g' +- + # Global variables: + ofile=libtool + can_build_shared=yes +@@ -271,6 +261,28 @@ + ])# _LT_SETUP + + ++# _LT_PREPARE_SED_QUOTE_VARS ++# -------------------------- ++# Define a few sed substitution that help us do robust quoting. ++m4_defun([_LT_PREPARE_SED_QUOTE_VARS], ++[# Backslashify metacharacters that are still active within ++# double-quoted strings. ++sed_quote_subst='s/\([["`$\\]]\)/\\\1/g' ++ ++# Same as above, but do not quote variable references. ++double_quote_subst='s/\([["`\\]]\)/\\\1/g' ++ ++# Sed substitution to delay expansion of an escaped shell variable in a ++# double_quote_subst'ed string. ++delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' ++ ++# Sed substitution to delay expansion of an escaped single quote. ++delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' ++ ++# Sed substitution to avoid accidental globbing in evaled expressions ++no_glob_subst='s/\*/\\\*/g' ++]) ++ + # _LT_PROG_LTMAIN + # --------------- + # Note that this code is called both from `configure', and `config.status' +@@ -423,7 +435,7 @@ + # declaration there will have the same value as in `configure'. VARNAME + # must have a single quote delimited value for this to work. + m4_define([_LT_CONFIG_STATUS_DECLARE], +-[$1='`$ECHO "X$][$1" | $Xsed -e "$delay_single_quote_subst"`']) ++[$1='`$ECHO "$][$1" | $SED "$delay_single_quote_subst"`']) + + + # _LT_CONFIG_STATUS_DECLARATIONS +@@ -433,7 +445,7 @@ + # embedded single quotes properly. In configure, this macro expands + # each variable declared with _LT_DECL (and _LT_TAGDECL) into: + # +-# ='`$ECHO "X$" | $Xsed -e "$delay_single_quote_subst"`' ++# ='`$ECHO "$" | $SED "$delay_single_quote_subst"`' + m4_defun([_LT_CONFIG_STATUS_DECLARATIONS], + [m4_foreach([_lt_var], m4_quote(lt_decl_all_varnames), + [m4_n([_LT_CONFIG_STATUS_DECLARE(_lt_var)])])]) +@@ -532,12 +544,20 @@ + LTCFLAGS='$LTCFLAGS' + compiler='$compiler_DEFAULT' + ++# A function that is used when there is no print builtin or printf. ++func_fallback_echo () ++{ ++ eval 'cat <<_LTECHO_EOF ++\$[]1 ++_LTECHO_EOF' ++} ++ + # Quote evaled strings. + for var in lt_decl_all_varnames([[ \ + ]], lt_decl_quote_varnames); do +- case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in ++ case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in + *[[\\\\\\\`\\"\\\$]]*) +- eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ++ eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" + ;; + *) + eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" +@@ -548,9 +568,9 @@ + # Double-quote double-evaled strings. + for var in lt_decl_all_varnames([[ \ + ]], lt_decl_dquote_varnames); do +- case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in ++ case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in + *[[\\\\\\\`\\"\\\$]]*) +- eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ++ eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" + ;; + *) + eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" +@@ -558,16 +578,38 @@ + esac + done + +-# Fix-up fallback echo if it was mangled by the above quoting rules. +-case \$lt_ECHO in +-*'\\\[$]0 --fallback-echo"')dnl " +- lt_ECHO=\`\$ECHO "X\$lt_ECHO" | \$Xsed -e 's/\\\\\\\\\\\\\\\[$]0 --fallback-echo"\[$]/\[$]0 --fallback-echo"/'\` +- ;; +-esac +- + _LT_OUTPUT_LIBTOOL_INIT + ]) + ++# _LT_GENERATED_FILE_INIT(FILE, [COMMENT]) ++# ------------------------------------ ++# Generate a child script FILE with all initialization necessary to ++# reuse the environment learned by the parent script, and make the ++# file executable. If COMMENT is supplied, it is inserted after the ++# `#!' sequence but before initialization text begins. After this ++# macro, additional text can be appended to FILE to form the body of ++# the child script. The macro ends with non-zero status if the ++# file could not be fully written (such as if the disk is full). ++m4_ifdef([AS_INIT_GENERATED], ++[m4_defun([_LT_GENERATED_FILE_INIT],[AS_INIT_GENERATED($@)])], ++[m4_defun([_LT_GENERATED_FILE_INIT], ++[m4_require([AS_PREPARE])]dnl ++[m4_pushdef([AS_MESSAGE_LOG_FD])]dnl ++[lt_write_fail=0 ++cat >$1 <<_ASEOF || lt_write_fail=1 ++#! $SHELL ++# Generated by $as_me. ++$2 ++SHELL=\${CONFIG_SHELL-$SHELL} ++export SHELL ++_ASEOF ++cat >>$1 <<\_ASEOF || lt_write_fail=1 ++AS_SHELL_SANITIZE ++_AS_PREPARE ++exec AS_MESSAGE_FD>&1 ++_ASEOF ++test $lt_write_fail = 0 && chmod +x $1[]dnl ++m4_popdef([AS_MESSAGE_LOG_FD])])])# _LT_GENERATED_FILE_INIT + + # LT_OUTPUT + # --------- +@@ -577,20 +619,11 @@ + AC_DEFUN([LT_OUTPUT], + [: ${CONFIG_LT=./config.lt} + AC_MSG_NOTICE([creating $CONFIG_LT]) +-cat >"$CONFIG_LT" <<_LTEOF +-#! $SHELL +-# Generated by $as_me. +-# Run this file to recreate a libtool stub with the current configuration. +- +-lt_cl_silent=false +-SHELL=\${CONFIG_SHELL-$SHELL} +-_LTEOF ++_LT_GENERATED_FILE_INIT(["$CONFIG_LT"], ++[# Run this file to recreate a libtool stub with the current configuration.]) + + cat >>"$CONFIG_LT" <<\_LTEOF +-AS_SHELL_SANITIZE +-_AS_PREPARE +- +-exec AS_MESSAGE_FD>&1 ++lt_cl_silent=false + exec AS_MESSAGE_LOG_FD>>config.log + { + echo +@@ -616,7 +649,7 @@ + m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION]) + configured by $[0], generated by m4_PACKAGE_STRING. + +-Copyright (C) 2008 Free Software Foundation, Inc. ++Copyright (C) 2010 Free Software Foundation, Inc. + This config.lt script is free software; the Free Software Foundation + gives unlimited permision to copy, distribute and modify it." + +@@ -661,15 +694,13 @@ + # appending to config.log, which fails on DOS, as config.log is still kept + # open by configure. Here we exec the FD to /dev/null, effectively closing + # config.log, so it can be properly (re)opened and appended to by config.lt. +-if test "$no_create" != yes; then +- lt_cl_success=: +- test "$silent" = yes && +- lt_config_lt_args="$lt_config_lt_args --quiet" +- exec AS_MESSAGE_LOG_FD>/dev/null +- $SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false +- exec AS_MESSAGE_LOG_FD>>config.log +- $lt_cl_success || AS_EXIT(1) +-fi ++lt_cl_success=: ++test "$silent" = yes && ++ lt_config_lt_args="$lt_config_lt_args --quiet" ++exec AS_MESSAGE_LOG_FD>/dev/null ++$SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false ++exec AS_MESSAGE_LOG_FD>>config.log ++$lt_cl_success || AS_EXIT(1) + ])# LT_OUTPUT + + +@@ -846,11 +877,13 @@ + AU_DEFUN([AC_LIBTOOL_F77], [LT_LANG(Fortran 77)]) + AU_DEFUN([AC_LIBTOOL_FC], [LT_LANG(Fortran)]) + AU_DEFUN([AC_LIBTOOL_GCJ], [LT_LANG(Java)]) ++AU_DEFUN([AC_LIBTOOL_RC], [LT_LANG(Windows Resource)]) + dnl aclocal-1.4 backwards compatibility: + dnl AC_DEFUN([AC_LIBTOOL_CXX], []) + dnl AC_DEFUN([AC_LIBTOOL_F77], []) + dnl AC_DEFUN([AC_LIBTOOL_FC], []) + dnl AC_DEFUN([AC_LIBTOOL_GCJ], []) ++dnl AC_DEFUN([AC_LIBTOOL_RC], []) + + + # _LT_TAG_COMPILER +@@ -955,6 +988,31 @@ + [lt_cv_ld_exported_symbols_list=no]) + LDFLAGS="$save_LDFLAGS" + ]) ++ AC_CACHE_CHECK([for -force_load linker flag],[lt_cv_ld_force_load], ++ [lt_cv_ld_force_load=no ++ cat > conftest.c << _LT_EOF ++int forced_loaded() { return 2;} ++_LT_EOF ++ echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&AS_MESSAGE_LOG_FD ++ $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&AS_MESSAGE_LOG_FD ++ echo "$AR cru libconftest.a conftest.o" >&AS_MESSAGE_LOG_FD ++ $AR cru libconftest.a conftest.o 2>&AS_MESSAGE_LOG_FD ++ echo "$RANLIB libconftest.a" >&AS_MESSAGE_LOG_FD ++ $RANLIB libconftest.a 2>&AS_MESSAGE_LOG_FD ++ cat > conftest.c << _LT_EOF ++int main() { return 0;} ++_LT_EOF ++ echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&AS_MESSAGE_LOG_FD ++ $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err ++ _lt_result=$? ++ if test -f conftest && test ! -s conftest.err && test $_lt_result = 0 && $GREP forced_load conftest 2>&1 >/dev/null; then ++ lt_cv_ld_force_load=yes ++ else ++ cat conftest.err >&AS_MESSAGE_LOG_FD ++ fi ++ rm -f conftest.err libconftest.a conftest conftest.c ++ rm -rf conftest.dSYM ++ ]) + case $host_os in + rhapsody* | darwin1.[[012]]) + _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; +@@ -982,7 +1040,7 @@ + else + _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}' + fi +- if test "$DSYMUTIL" != ":"; then ++ if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then + _lt_dsymutil='~$DSYMUTIL $lib || :' + else + _lt_dsymutil= +@@ -1002,7 +1060,11 @@ + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_automatic, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported +- _LT_TAGVAR(whole_archive_flag_spec, $1)='' ++ if test "$lt_cv_ld_force_load" = "yes"; then ++ _LT_TAGVAR(whole_archive_flag_spec, $1)='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' ++ else ++ _LT_TAGVAR(whole_archive_flag_spec, $1)='' ++ fi + _LT_TAGVAR(link_all_deplibs, $1)=yes + _LT_TAGVAR(allow_undefined_flag, $1)="$_lt_dar_allow_undefined" + case $cc_basename in +@@ -1010,7 +1072,7 @@ + *) _lt_dar_can_shared=$GCC ;; + esac + if test "$_lt_dar_can_shared" = "yes"; then +- output_verbose_link_cmd=echo ++ output_verbose_link_cmd=func_echo_all + _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" + _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" + _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" +@@ -1056,170 +1118,65 @@ + # _LT_SHELL_INIT(ARG) + # ------------------- + m4_define([_LT_SHELL_INIT], +-[ifdef([AC_DIVERSION_NOTICE], +- [AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)], +- [AC_DIVERT_PUSH(NOTICE)]) +-$1 +-AC_DIVERT_POP +-])# _LT_SHELL_INIT ++[m4_divert_text([M4SH-INIT], [$1 ++])])# _LT_SHELL_INIT ++ + + + # _LT_PROG_ECHO_BACKSLASH + # ----------------------- +-# Add some code to the start of the generated configure script which +-# will find an echo command which doesn't interpret backslashes. ++# Find how we can fake an echo command that does not interpret backslash. ++# In particular, with Autoconf 2.60 or later we add some code to the start ++# of the generated configure script which will find a shell with a builtin ++# printf (which we can use as an echo command). + m4_defun([_LT_PROG_ECHO_BACKSLASH], +-[_LT_SHELL_INIT([ +-# Check that we are running under the correct shell. +-SHELL=${CONFIG_SHELL-/bin/sh} +- +-case X$lt_ECHO in +-X*--fallback-echo) +- # Remove one level of quotation (which was required for Make). +- ECHO=`echo "$lt_ECHO" | sed 's,\\\\\[$]\\[$]0,'[$]0','` +- ;; +-esac +- +-ECHO=${lt_ECHO-echo} +-if test "X[$]1" = X--no-reexec; then +- # Discard the --no-reexec flag, and continue. +- shift +-elif test "X[$]1" = X--fallback-echo; then +- # Avoid inline document here, it may be left over +- : +-elif test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' ; then +- # Yippee, $ECHO works! +- : ++[ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' ++ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO ++ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO ++ ++AC_MSG_CHECKING([how to print strings]) ++# Test print first, because it will be a builtin if present. ++if test "X`print -r -- -n 2>/dev/null`" = X-n && \ ++ test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then ++ ECHO='print -r --' ++elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then ++ ECHO='printf %s\n' + else +- # Restart under the correct shell. +- exec $SHELL "[$]0" --no-reexec ${1+"[$]@"} +-fi +- +-if test "X[$]1" = X--fallback-echo; then +- # used as fallback echo +- shift +- cat <<_LT_EOF +-[$]* +-_LT_EOF +- exit 0 ++ # Use this function as a fallback that always works. ++ func_fallback_echo () ++ { ++ eval 'cat <<_LTECHO_EOF ++$[]1 ++_LTECHO_EOF' ++ } ++ ECHO='func_fallback_echo' + fi + +-# The HP-UX ksh and POSIX shell print the target directory to stdout +-# if CDPATH is set. +-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH +- +-if test -z "$lt_ECHO"; then +- if test "X${echo_test_string+set}" != Xset; then +- # find a string as large as possible, as long as the shell can cope with it +- for cmd in 'sed 50q "[$]0"' 'sed 20q "[$]0"' 'sed 10q "[$]0"' 'sed 2q "[$]0"' 'echo test'; do +- # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ... +- if { echo_test_string=`eval $cmd`; } 2>/dev/null && +- { test "X$echo_test_string" = "X$echo_test_string"; } 2>/dev/null +- then +- break +- fi +- done +- fi +- +- if test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' && +- echo_testing_string=`{ $ECHO "$echo_test_string"; } 2>/dev/null` && +- test "X$echo_testing_string" = "X$echo_test_string"; then +- : +- else +- # The Solaris, AIX, and Digital Unix default echo programs unquote +- # backslashes. This makes it impossible to quote backslashes using +- # echo "$something" | sed 's/\\/\\\\/g' +- # +- # So, first we look for a working echo in the user's PATH. +- +- lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR +- for dir in $PATH /usr/ucb; do +- IFS="$lt_save_ifs" +- if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && +- test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && +- echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` && +- test "X$echo_testing_string" = "X$echo_test_string"; then +- ECHO="$dir/echo" +- break +- fi +- done +- IFS="$lt_save_ifs" +- +- if test "X$ECHO" = Xecho; then +- # We didn't find a better echo, so look for alternatives. +- if test "X`{ print -r '\t'; } 2>/dev/null`" = 'X\t' && +- echo_testing_string=`{ print -r "$echo_test_string"; } 2>/dev/null` && +- test "X$echo_testing_string" = "X$echo_test_string"; then +- # This shell has a builtin print -r that does the trick. +- ECHO='print -r' +- elif { test -f /bin/ksh || test -f /bin/ksh$ac_exeext; } && +- test "X$CONFIG_SHELL" != X/bin/ksh; then +- # If we have ksh, try running configure again with it. +- ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} +- export ORIGINAL_CONFIG_SHELL +- CONFIG_SHELL=/bin/ksh +- export CONFIG_SHELL +- exec $CONFIG_SHELL "[$]0" --no-reexec ${1+"[$]@"} +- else +- # Try using printf. +- ECHO='printf %s\n' +- if test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' && +- echo_testing_string=`{ $ECHO "$echo_test_string"; } 2>/dev/null` && +- test "X$echo_testing_string" = "X$echo_test_string"; then +- # Cool, printf works +- : +- elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` && +- test "X$echo_testing_string" = 'X\t' && +- echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` && +- test "X$echo_testing_string" = "X$echo_test_string"; then +- CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL +- export CONFIG_SHELL +- SHELL="$CONFIG_SHELL" +- export SHELL +- ECHO="$CONFIG_SHELL [$]0 --fallback-echo" +- elif echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` && +- test "X$echo_testing_string" = 'X\t' && +- echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` && +- test "X$echo_testing_string" = "X$echo_test_string"; then +- ECHO="$CONFIG_SHELL [$]0 --fallback-echo" +- else +- # maybe with a smaller string... +- prev=: +- +- for cmd in 'echo test' 'sed 2q "[$]0"' 'sed 10q "[$]0"' 'sed 20q "[$]0"' 'sed 50q "[$]0"'; do +- if { test "X$echo_test_string" = "X`eval $cmd`"; } 2>/dev/null +- then +- break +- fi +- prev="$cmd" +- done ++# func_echo_all arg... ++# Invoke $ECHO with all args, space-separated. ++func_echo_all () ++{ ++ $ECHO "$*" ++} + +- if test "$prev" != 'sed 50q "[$]0"'; then +- echo_test_string=`eval $prev` +- export echo_test_string +- exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "[$]0" ${1+"[$]@"} +- else +- # Oops. We lost completely, so just stick with echo. +- ECHO=echo +- fi +- fi +- fi +- fi +- fi +-fi ++case "$ECHO" in ++ printf*) AC_MSG_RESULT([printf]) ;; ++ print*) AC_MSG_RESULT([print -r]) ;; ++ *) AC_MSG_RESULT([cat]) ;; ++esac + +-# Copy echo and quote the copy suitably for passing to libtool from +-# the Makefile, instead of quoting the original, which is used later. +-lt_ECHO=$ECHO +-if test "X$lt_ECHO" = "X$CONFIG_SHELL [$]0 --fallback-echo"; then +- lt_ECHO="$CONFIG_SHELL \\\$\[$]0 --fallback-echo" +-fi ++m4_ifdef([_AS_DETECT_SUGGESTED], ++[_AS_DETECT_SUGGESTED([ ++ test -n "${ZSH_VERSION+set}${BASH_VERSION+set}" || ( ++ ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' ++ ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO ++ ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO ++ PATH=/empty FPATH=/empty; export PATH FPATH ++ test "X`printf %s $ECHO`" = "X$ECHO" \ ++ || test "X`print -r -- $ECHO`" = "X$ECHO" )])]) + +-AC_SUBST(lt_ECHO) +-]) + _LT_DECL([], [SHELL], [1], [Shell to use when invoking shell scripts]) +-_LT_DECL([], [ECHO], [1], +- [An echo program that does not interpret backslashes]) ++_LT_DECL([], [ECHO], [1], [An echo program that protects backslashes]) + ])# _LT_PROG_ECHO_BACKSLASH + + +@@ -1251,7 +1208,7 @@ + ;; + *-*-irix6*) + # Find out which ABI we are using. +- echo '[#]line __oline__ "configure"' > conftest.$ac_ext ++ echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + if test "$lt_cv_prog_gnu_ld" = yes; then + case `/usr/bin/file conftest.$ac_objext` in +@@ -1403,10 +1360,19 @@ + esac + old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" + fi ++ ++case $host_os in ++ darwin*) ++ lock_old_archive_extraction=yes ;; ++ *) ++ lock_old_archive_extraction=no ;; ++esac + _LT_DECL([], [old_postinstall_cmds], [2]) + _LT_DECL([], [old_postuninstall_cmds], [2]) + _LT_TAGDECL([], [old_archive_cmds], [2], + [Commands used to build an old-style archive]) ++_LT_DECL([], [lock_old_archive_extraction], [0], ++ [Whether to use a lock for old archive extraction]) + ])# _LT_CMD_OLD_ARCHIVE + + +@@ -1431,15 +1397,15 @@ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` +- (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD) ++ (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&AS_MESSAGE_LOG_FD +- echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD ++ echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. +- $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp ++ $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + $2=yes +@@ -1479,7 +1445,7 @@ + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&AS_MESSAGE_LOG_FD +- $ECHO "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp ++ $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + $2=yes +@@ -1542,6 +1508,11 @@ + lt_cv_sys_max_cmd_len=8192; + ;; + ++ mint*) ++ # On MiNT this can take a long time and run out of memory. ++ lt_cv_sys_max_cmd_len=8192; ++ ;; ++ + amigaos*) + # On AmigaOS with pdksh, this test takes hours, literally. + # So we just punt and use a minimum line length of 8192. +@@ -1606,8 +1577,8 @@ + # If test is not a shell built-in, we'll probably end up computing a + # maximum length that is only half of the actual maximum length, but + # we can't tell. +- while { test "X"`$SHELL [$]0 --fallback-echo "X$teststring$teststring" 2>/dev/null` \ +- = "XX$teststring$teststring"; } >/dev/null 2>&1 && ++ while { test "X"`func_fallback_echo "$teststring$teststring" 2>/dev/null` \ ++ = "X$teststring$teststring"; } >/dev/null 2>&1 && + test $i != 17 # 1/2 MB should be enough + do + i=`expr $i + 1` +@@ -1658,7 +1629,7 @@ + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +-[#line __oline__ "configure" ++[#line $LINENO "configure" + #include "confdefs.h" + + #if HAVE_DLFCN_H +@@ -1699,7 +1670,13 @@ + # endif + #endif + +-void fnord() { int i=42;} ++/* When -fvisbility=hidden is used, assume the code has been annotated ++ correspondingly for the symbols needed. */ ++#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) ++void fnord () __attribute__((visibility("default"))); ++#endif ++ ++void fnord () { int i=42; } + int main () + { + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); +@@ -1708,7 +1685,11 @@ + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; +- else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; ++ else ++ { ++ if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; ++ else puts (dlerror ()); ++ } + /* dlclose (self); */ + } + else +@@ -1884,16 +1865,16 @@ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` +- (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD) ++ (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&AS_MESSAGE_LOG_FD +- echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD ++ echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings +- $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp ++ $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes +@@ -2052,6 +2033,7 @@ + m4_require([_LT_FILEUTILS_DEFAULTS])dnl + m4_require([_LT_DECL_OBJDUMP])dnl + m4_require([_LT_DECL_SED])dnl ++m4_require([_LT_CHECK_SHELL_FEATURES])dnl + AC_MSG_CHECKING([dynamic linker characteristics]) + m4_if([$1], + [], [ +@@ -2060,16 +2042,23 @@ + darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; + *) lt_awk_arg="/^libraries:/" ;; + esac +- lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e "s,=/,/,g"` +- if $ECHO "$lt_search_path_spec" | $GREP ';' >/dev/null ; then ++ case $host_os in ++ mingw* | cegcc*) lt_sed_strip_eq="s,=\([[A-Za-z]]:\),\1,g" ;; ++ *) lt_sed_strip_eq="s,=/,/,g" ;; ++ esac ++ lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` ++ case $lt_search_path_spec in ++ *\;*) + # if the path contains ";" then we assume it to be the separator + # otherwise default to the standard path separator (i.e. ":") - it is + # assumed that no part of a normal pathname contains ";" but that should + # okay in the real world where ";" in dirpaths is itself problematic. +- lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED -e 's/;/ /g'` +- else +- lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` +- fi ++ lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` ++ ;; ++ *) ++ lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` ++ ;; ++ esac + # Ok, now we have the path, separated by spaces, we can step through it + # and add multilib dir if necessary. + lt_tmp_lt_search_path_spec= +@@ -2082,7 +2071,7 @@ + lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" + fi + done +- lt_search_path_spec=`$ECHO $lt_tmp_lt_search_path_spec | awk ' ++ lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' + BEGIN {RS=" "; FS="/|\n";} { + lt_foo=""; + lt_count=0; +@@ -2102,7 +2091,13 @@ + if (lt_foo != "") { lt_freq[[lt_foo]]++; } + if (lt_freq[[lt_foo]] == 1) { print lt_foo; } + }'` +- sys_lib_search_path_spec=`$ECHO $lt_search_path_spec` ++ # AWK program above erroneously prepends '/' to C:/dos/paths ++ # for these hosts. ++ case $host_os in ++ mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ ++ $SED 's,/\([[A-Za-z]]:\),\1,g'` ;; ++ esac ++ sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` + else + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" + fi]) +@@ -2190,7 +2185,7 @@ + m68k) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. +- finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$ECHO "X$lib" | $Xsed -e '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ++ finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + ;; + esac + ;; +@@ -2243,23 +2238,12 @@ + cygwin*) + # Cygwin DLLs use 'cyg' prefix rather than 'lib' + soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' +- sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" ++m4_if([$1], [],[ ++ sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"]) + ;; + mingw* | cegcc*) + # MinGW DLLs use traditional 'lib' prefix + soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' +- sys_lib_search_path_spec=`$CC -print-search-dirs | $GREP "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` +- if $ECHO "$sys_lib_search_path_spec" | [$GREP ';[c-zC-Z]:/' >/dev/null]; then +- # It is most probably a Windows format PATH printed by +- # mingw gcc, but we are running on Cygwin. Gcc prints its search +- # path with ; separators, and with drive letters. We can handle the +- # drive letters (cygwin fileutils understands them), so leave them, +- # especially as we might pass files found there to a mingw objdump, +- # which wouldn't understand a cygwinified path. Ahh. +- sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` +- else +- sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` +- fi + ;; + pw32*) + # pw32 DLLs use 'pw' prefix rather than 'lib' +@@ -2359,6 +2343,19 @@ + hardcode_into_libs=yes + ;; + ++haiku*) ++ version_type=linux ++ need_lib_prefix=no ++ need_version=no ++ dynamic_linker="$host_os runtime_loader" ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ shlibpath_var=LIBRARY_PATH ++ shlibpath_overrides_runpath=yes ++ sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' ++ hardcode_into_libs=yes ++ ;; ++ + hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. +@@ -2401,8 +2398,10 @@ + soname_spec='${libname}${release}${shared_ext}$major' + ;; + esac +- # HP-UX runs *really* slowly unless shared libraries are mode 555. ++ # HP-UX runs *really* slowly unless shared libraries are mode 555, ... + postinstall_cmds='chmod 555 $lib' ++ # or fails outright, so override atomically: ++ install_override_mode=555 + ;; + + interix[[3-9]]*) +@@ -2460,7 +2459,7 @@ + ;; + + # This must be Linux ELF. +-linux* | k*bsd*-gnu) ++linux* | k*bsd*-gnu | kopensolaris*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no +@@ -2469,16 +2468,21 @@ + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no ++ + # Some binutils ld are patched to set DT_RUNPATH +- save_LDFLAGS=$LDFLAGS +- save_libdir=$libdir +- eval "libdir=/foo; wl=\"$_LT_TAGVAR(lt_prog_compiler_wl, $1)\"; \ +- LDFLAGS=\"\$LDFLAGS $_LT_TAGVAR(hardcode_libdir_flag_spec, $1)\"" +- AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], +- [AS_IF([ ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null], +- [shlibpath_overrides_runpath=yes])]) +- LDFLAGS=$save_LDFLAGS +- libdir=$save_libdir ++ AC_CACHE_VAL([lt_cv_shlibpath_overrides_runpath], ++ [lt_cv_shlibpath_overrides_runpath=no ++ save_LDFLAGS=$LDFLAGS ++ save_libdir=$libdir ++ eval "libdir=/foo; wl=\"$_LT_TAGVAR(lt_prog_compiler_wl, $1)\"; \ ++ LDFLAGS=\"\$LDFLAGS $_LT_TAGVAR(hardcode_libdir_flag_spec, $1)\"" ++ AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], ++ [AS_IF([ ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null], ++ [lt_cv_shlibpath_overrides_runpath=yes])]) ++ LDFLAGS=$save_LDFLAGS ++ libdir=$save_libdir ++ ]) ++ shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath + + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install +@@ -2490,8 +2494,9 @@ + + # Append ld.so.conf contents to the search path + if test -f /etc/ld.so.conf; then +- lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` ++ lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec $lt_ld_extra" ++ + fi + + # We used to test for /lib/ld.so.1 and disable shared libraries on +@@ -2723,6 +2728,8 @@ + The last name is the one that the linker finds with -lNAME]]) + _LT_DECL([], [soname_spec], [1], + [[The coded name of the library, if different from the real name]]) ++_LT_DECL([], [install_override_mode], [1], ++ [Permission mode override for installation of shared libraries]) + _LT_DECL([], [postinstall_cmds], [2], + [Command to use after installation of a shared archive]) + _LT_DECL([], [postuninstall_cmds], [2], +@@ -2835,6 +2842,7 @@ + AC_REQUIRE([AC_CANONICAL_BUILD])dnl + m4_require([_LT_DECL_SED])dnl + m4_require([_LT_DECL_EGREP])dnl ++m4_require([_LT_PROG_ECHO_BACKSLASH])dnl + + AC_ARG_WITH([gnu-ld], + [AS_HELP_STRING([--with-gnu-ld], +@@ -2964,8 +2972,8 @@ + fi + ;; + esac +-_LT_DECL([], [reload_flag], [1], [How to create reloadable object files])dnl +-_LT_DECL([], [reload_cmds], [2])dnl ++_LT_TAGDECL([], [reload_flag], [1], [How to create reloadable object files])dnl ++_LT_TAGDECL([], [reload_cmds], [2])dnl + ])# _LT_CMD_RELOAD + + +@@ -3017,16 +3025,18 @@ + # Base MSYS/MinGW do not provide the 'file' command needed by + # func_win32_libid shell function, so use a weaker test based on 'objdump', + # unless we find 'file', for example because we are cross-compiling. +- if ( file / ) >/dev/null 2>&1; then ++ # func_win32_libid assumes BSD nm, so disallow it if using MS dumpbin. ++ if ( test "$lt_cv_nm_interface" = "BSD nm" && file / ) >/dev/null 2>&1; then + lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' + lt_cv_file_magic_cmd='func_win32_libid' + else +- lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?' ++ # Keep this pattern in sync with the one in func_win32_libid. ++ lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' + lt_cv_file_magic_cmd='$OBJDUMP -f' + fi + ;; + +-cegcc) ++cegcc*) + # use the weaker test based on 'objdump'. See mingw*. + lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' + lt_cv_file_magic_cmd='$OBJDUMP -f' +@@ -3056,6 +3066,10 @@ + lt_cv_deplibs_check_method=pass_all + ;; + ++haiku*) ++ lt_cv_deplibs_check_method=pass_all ++ ;; ++ + hpux10.20* | hpux11*) + lt_cv_file_magic_cmd=/usr/bin/file + case $host_cpu in +@@ -3064,11 +3078,11 @@ + lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so + ;; + hppa*64*) +- [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]'] ++ [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]'] + lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl + ;; + *) +- lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]].[[0-9]]) shared library' ++ lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]]\.[[0-9]]) shared library' + lt_cv_file_magic_test_file=/usr/lib/libc.sl + ;; + esac +@@ -3090,7 +3104,7 @@ + ;; + + # This must be Linux ELF. +-linux* | k*bsd*-gnu) ++linux* | k*bsd*-gnu | kopensolaris*-gnu) + lt_cv_deplibs_check_method=pass_all + ;; + +@@ -3232,7 +3246,19 @@ + NM="$lt_cv_path_NM" + else + # Didn't find any BSD compatible name lister, look for dumpbin. +- AC_CHECK_TOOLS(DUMPBIN, ["dumpbin -symbols" "link -dump -symbols"], :) ++ if test -n "$DUMPBIN"; then : ++ # Let the user override the test. ++ else ++ AC_CHECK_TOOLS(DUMPBIN, [dumpbin "link -dump"], :) ++ case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in ++ *COFF*) ++ DUMPBIN="$DUMPBIN -symbols" ++ ;; ++ *) ++ DUMPBIN=: ++ ;; ++ esac ++ fi + AC_SUBST([DUMPBIN]) + if test "$DUMPBIN" != ":"; then + NM="$DUMPBIN" +@@ -3245,13 +3271,13 @@ + AC_CACHE_CHECK([the name lister ($NM) interface], [lt_cv_nm_interface], + [lt_cv_nm_interface="BSD nm" + echo "int some_variable = 0;" > conftest.$ac_ext +- (eval echo "\"\$as_me:__oline__: $ac_compile\"" >&AS_MESSAGE_LOG_FD) ++ (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&AS_MESSAGE_LOG_FD) + (eval "$ac_compile" 2>conftest.err) + cat conftest.err >&AS_MESSAGE_LOG_FD +- (eval echo "\"\$as_me:__oline__: $NM \\\"conftest.$ac_objext\\\"\"" >&AS_MESSAGE_LOG_FD) ++ (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&AS_MESSAGE_LOG_FD) + (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) + cat conftest.err >&AS_MESSAGE_LOG_FD +- (eval echo "\"\$as_me:__oline__: output\"" >&AS_MESSAGE_LOG_FD) ++ (eval echo "\"\$as_me:$LINENO: output\"" >&AS_MESSAGE_LOG_FD) + cat conftest.out >&AS_MESSAGE_LOG_FD + if $GREP 'External.*some_variable' conftest.out > /dev/null; then + lt_cv_nm_interface="MS dumpbin" +@@ -3274,7 +3300,7 @@ + [AC_REQUIRE([AC_CANONICAL_HOST])dnl + LIBM= + case $host in +-*-*-beos* | *-*-cygwin* | *-*-pw32* | *-*-darwin*) ++*-*-beos* | *-*-cegcc* | *-*-cygwin* | *-*-haiku* | *-*-pw32* | *-*-darwin*) + # These system don't have libm, or don't need it + ;; + *-ncr-sysv4.3*) +@@ -3302,7 +3328,12 @@ + _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= + + if test "$GCC" = yes; then +- _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' ++ case $cc_basename in ++ nvcc*) ++ _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -Xcompiler -fno-builtin' ;; ++ *) ++ _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' ;; ++ esac + + _LT_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions], + lt_cv_prog_compiler_rtti_exceptions, +@@ -3319,6 +3350,7 @@ + m4_defun([_LT_CMD_GLOBAL_SYMBOLS], + [AC_REQUIRE([AC_CANONICAL_HOST])dnl + AC_REQUIRE([AC_PROG_CC])dnl ++AC_REQUIRE([AC_PROG_AWK])dnl + AC_REQUIRE([LT_PATH_NM])dnl + AC_REQUIRE([LT_PATH_LD])dnl + m4_require([_LT_DECL_SED])dnl +@@ -3444,7 +3476,7 @@ + if AC_TRY_EVAL(ac_compile); then + # Now try to grab the symbols. + nlist=conftest.nm +- if AC_TRY_EVAL(NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) && test -s "$nlist"; then ++ if AC_TRY_EVAL(NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) && test -s "$nlist"; then + # Try sorting and uniquifying the output. + if sort "$nlist" | uniq > "$nlist"T; then + mv -f "$nlist"T "$nlist" +@@ -3606,6 +3638,11 @@ + # DJGPP does not support shared libraries at all + _LT_TAGVAR(lt_prog_compiler_pic, $1)= + ;; ++ haiku*) ++ # PIC is the default for Haiku. ++ # The "-static" flag exists, but is broken. ++ _LT_TAGVAR(lt_prog_compiler_static, $1)= ++ ;; + interix[[3-9]]*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. +@@ -3711,7 +3748,7 @@ + ;; + esac + ;; +- linux* | k*bsd*-gnu) ++ linux* | k*bsd*-gnu | kopensolaris*-gnu) + case $cc_basename in + KCC*) + # KAI C++ Compiler +@@ -3744,8 +3781,8 @@ + _LT_TAGVAR(lt_prog_compiler_pic, $1)= + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; +- xlc* | xlC*) +- # IBM XL 8.0 on PPC ++ xlc* | xlC* | bgxl[[cC]]* | mpixl[[cC]]*) ++ # IBM XL 8.0, 9.0 on PPC and BlueGene + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' +@@ -3807,7 +3844,7 @@ + ;; + solaris*) + case $cc_basename in +- CC*) ++ CC* | sunCC*) + # Sun C++ 4.2, 5.x and Centerline C++ + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' +@@ -3911,6 +3948,12 @@ + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' + ;; + ++ haiku*) ++ # PIC is the default for Haiku. ++ # The "-static" flag exists, but is broken. ++ _LT_TAGVAR(lt_prog_compiler_static, $1)= ++ ;; ++ + hpux*) + # PIC is the default for 64-bit PA HP-UX, but not for 32-bit + # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag +@@ -3953,6 +3996,13 @@ + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac ++ ++ case $cc_basename in ++ nvcc*) # Cuda Compiler Driver 2.2 ++ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Xlinker ' ++ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-Xcompiler -fPIC' ++ ;; ++ esac + else + # PORTME Check for flag to pass linker flags through the system compiler. + case $host_os in +@@ -3995,7 +4045,7 @@ + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + +- linux* | k*bsd*-gnu) ++ linux* | k*bsd*-gnu | kopensolaris*-gnu) + case $cc_basename in + # old Intel for x86_64 which still supported -KPIC. + ecc*) +@@ -4016,7 +4066,7 @@ + _LT_TAGVAR(lt_prog_compiler_pic, $1)='--shared' + _LT_TAGVAR(lt_prog_compiler_static, $1)='--static' + ;; +- pgcc* | pgf77* | pgf90* | pgf95*) ++ pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) + # Portland Group compilers (*not* the Pentium gcc compiler, + # which looks to be a dead project) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' +@@ -4028,25 +4078,25 @@ + # All Alpha code is PIC. + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; +- xl*) +- # IBM XL C 8.0/Fortran 10.1 on PPC ++ xl* | bgxl* | bgf* | mpixl*) ++ # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' + ;; + *) + case `$CC -V 2>&1 | sed 5q` in +- *Sun\ C*) +- # Sun C 5.9 ++ *Sun\ F* | *Sun*Fortran*) ++ # Sun Fortran 8.3 passes all unrecognized flags to the linker + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' +- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' ++ _LT_TAGVAR(lt_prog_compiler_wl, $1)='' + ;; +- *Sun\ F*) +- # Sun Fortran 8.3 passes all unrecognized flags to the linker ++ *Sun\ C*) ++ # Sun C 5.9 + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' +- _LT_TAGVAR(lt_prog_compiler_wl, $1)='' ++ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + ;; + esac + ;; +@@ -4078,7 +4128,7 @@ + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + case $cc_basename in +- f77* | f90* | f95*) ++ f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';; + *) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';; +@@ -4188,8 +4238,10 @@ + aix[[4-9]]*) + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to AIX nm, but means don't demangle with GNU nm ++ # Also, AIX nm treats weak defined symbols like other global defined ++ # symbols, whereas GNU nm marks them as "W". + if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then +- _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' ++ _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + else + _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + fi +@@ -4267,7 +4319,33 @@ + esac + + _LT_TAGVAR(ld_shlibs, $1)=yes ++ ++ # On some targets, GNU ld is compatible enough with the native linker ++ # that we're better off using the native interface for both. ++ lt_use_gnu_ld_interface=no + if test "$with_gnu_ld" = yes; then ++ case $host_os in ++ aix*) ++ # The AIX port of GNU ld has always aspired to compatibility ++ # with the native linker. However, as the warning in the GNU ld ++ # block says, versions before 2.19.5* couldn't really create working ++ # shared libraries, regardless of the interface used. ++ case `$LD -v 2>&1` in ++ *\ \(GNU\ Binutils\)\ 2.19.5*) ;; ++ *\ \(GNU\ Binutils\)\ 2.[[2-9]]*) ;; ++ *\ \(GNU\ Binutils\)\ [[3-9]]*) ;; ++ *) ++ lt_use_gnu_ld_interface=yes ++ ;; ++ esac ++ ;; ++ *) ++ lt_use_gnu_ld_interface=yes ++ ;; ++ esac ++ fi ++ ++ if test "$lt_use_gnu_ld_interface" = yes; then + # If archive_cmds runs LD, not CC, wlarc should be empty + wlarc='${wl}' + +@@ -4285,6 +4363,7 @@ + fi + supports_anon_versioning=no + case `$LD -v 2>&1` in ++ *GNU\ gold*) supports_anon_versioning=yes ;; + *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11 + *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... + *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... +@@ -4300,11 +4379,12 @@ + _LT_TAGVAR(ld_shlibs, $1)=no + cat <<_LT_EOF 1>&2 + +-*** Warning: the GNU linker, at least up to release 2.9.1, is reported ++*** Warning: the GNU linker, at least up to release 2.19, is reported + *** to be unable to reliably create shared libraries on AIX. + *** Therefore, libtool is disabling shared libraries support. If you +-*** really care for shared libraries, you may want to modify your PATH +-*** so that a non-GNU linker is found, and then restart. ++*** really care for shared libraries, you may want to install binutils ++*** 2.20 or above, or modify your PATH so that a non-GNU linker is found. ++*** You will then need to restart the configuration process. + + _LT_EOF + fi +@@ -4340,6 +4420,7 @@ + # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, + # as there is no search path for DLLs. + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' ++ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols' + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(always_export_symbols, $1)=no + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes +@@ -4361,6 +4442,11 @@ + fi + ;; + ++ haiku*) ++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' ++ _LT_TAGVAR(link_all_deplibs, $1)=yes ++ ;; ++ + interix[[3-9]]*) + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no +@@ -4376,7 +4462,7 @@ + _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + +- gnu* | linux* | tpf* | k*bsd*-gnu) ++ gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) + tmp_diet=no + if test "$host_os" = linux-dietlibc; then + case $cc_basename in +@@ -4390,11 +4476,12 @@ + tmp_sharedflag='-shared' + case $cc_basename,$host_cpu in + pgcc*) # Portland Group C compiler +- _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' ++ _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag' + ;; +- pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers +- _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' ++ pgf77* | pgf90* | pgf95* | pgfortran*) ++ # Portland Group f77 and f90 compilers ++ _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag -Mnomain' ;; + ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 + tmp_addflag=' -i_dynamic' ;; +@@ -4405,13 +4492,17 @@ + lf95*) # Lahey Fortran 8.1 + _LT_TAGVAR(whole_archive_flag_spec, $1)= + tmp_sharedflag='--shared' ;; +- xl[[cC]]*) # IBM XL C 8.0 on PPC (deal with xlf below) ++ xl[[cC]]* | bgxl[[cC]]* | mpixl[[cC]]*) # IBM XL C 8.0 on PPC (deal with xlf below) + tmp_sharedflag='-qmkshrobj' + tmp_addflag= ;; ++ nvcc*) # Cuda Compiler Driver 2.2 ++ _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' ++ _LT_TAGVAR(compiler_needs_object, $1)=yes ++ ;; + esac + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) # Sun C 5.9 +- _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' ++ _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + _LT_TAGVAR(compiler_needs_object, $1)=yes + tmp_sharedflag='-G' ;; + *Sun\ F*) # Sun Fortran 8.3 +@@ -4427,17 +4518,17 @@ + fi + + case $cc_basename in +- xlf*) ++ xlf* | bgf* | bgxlf* | mpixlf*) + # IBM XL Fortran 10.1 on PPC cannot create shared libs itself + _LT_TAGVAR(whole_archive_flag_spec, $1)='--whole-archive$convenience --no-whole-archive' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= + _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='-rpath $libdir' +- _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $compiler_flags -soname $soname -o $lib' ++ _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' + if test "x$supports_anon_versioning" = xyes; then + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ +- $LD -shared $libobjs $deplibs $compiler_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' ++ $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' + fi + ;; + esac +@@ -4558,8 +4649,10 @@ + else + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to AIX nm, but means don't demangle with GNU nm ++ # Also, AIX nm treats weak defined symbols like other global ++ # defined symbols, whereas GNU nm marks them as "W". + if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then +- _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' ++ _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + else + _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + fi +@@ -4648,7 +4741,7 @@ + # empty executable. + _LT_SYS_MODULE_PATH_AIX + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" +- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then $ECHO "X${wl}${allow_undefined_flag}" | $Xsed; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" ++ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' +@@ -4663,8 +4756,13 @@ + # -berok will link without error, but may produce a broken library. + _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' + _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' +- # Exported symbols can be pulled into shared objects from archives +- _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' ++ if test "$with_gnu_ld" = yes; then ++ # We only use this code for GNU lds that support --whole-archive. ++ _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' ++ else ++ # Exported symbols can be pulled into shared objects from archives ++ _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' ++ fi + _LT_TAGVAR(archive_cmds_need_lc, $1)=yes + # This is similar to how AIX traditionally builds its shared libraries. + _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' +@@ -4703,7 +4801,7 @@ + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=".dll" + # FIXME: Setting linknames here is a bad hack. +- _LT_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `$ECHO "X$deplibs" | $Xsed -e '\''s/ -lc$//'\''` -link -dll~linknames=' ++ _LT_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' + # The linker will automatically build a .lib file if we build a DLL. + _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' + # FIXME: Should let the user specify the lib program. +@@ -4770,7 +4868,7 @@ + ;; + + hpux10*) +- if test "$GCC" = yes -a "$with_gnu_ld" = no; then ++ if test "$GCC" = yes && test "$with_gnu_ld" = no; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' +@@ -4789,7 +4887,7 @@ + ;; + + hpux11*) +- if test "$GCC" = yes -a "$with_gnu_ld" = no; then ++ if test "$GCC" = yes && test "$with_gnu_ld" = no; then + case $host_cpu in + hppa*64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' +@@ -4810,7 +4908,14 @@ + _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) +- _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ++ m4_if($1, [], [ ++ # Older versions of the 11.00 compiler do not understand -b yet ++ # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) ++ _LT_LINKER_OPTION([if $CC understands -b], ++ _LT_TAGVAR(lt_cv_prog_compiler__b, $1), [-b], ++ [_LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'], ++ [_LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'])], ++ [_LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags']) + ;; + esac + fi +@@ -4838,19 +4943,19 @@ + + irix5* | irix6* | nonstopux*) + if test "$GCC" = yes; then +- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' ++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + # Try to use the -exported_symbol ld option, if it does not + # work, assume that -exports_file does not work either and + # implicitly export all symbols. + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null" + AC_LINK_IFELSE(int foo(void) {}, +- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib' ++ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib' + ) + LDFLAGS="$save_LDFLAGS" + else +- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' +- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib' ++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' ++ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib' + fi + _LT_TAGVAR(archive_cmds_need_lc, $1)='no' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' +@@ -4912,17 +5017,17 @@ + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported +- _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$ECHO DATA >> $output_objdir/$libname.def~$ECHO " SINGLE NONSHARED" >> $output_objdir/$libname.def~$ECHO EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' ++ _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~echo DATA >> $output_objdir/$libname.def~echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' + _LT_TAGVAR(old_archive_from_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' + ;; + + osf3*) + if test "$GCC" = yes; then + _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' +- _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' ++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' +- _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' ++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' + fi + _LT_TAGVAR(archive_cmds_need_lc, $1)='no' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' +@@ -4932,13 +5037,13 @@ + osf4* | osf5*) # as osf3* with the addition of -msym flag + if test "$GCC" = yes; then + _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' +- _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' ++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + else + _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' +- _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' ++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ +- $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp' ++ $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp' + + # Both c and cxx compiler support -rpath directly + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' +@@ -5129,36 +5234,38 @@ + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. +- AC_MSG_CHECKING([whether -lc should be explicitly linked in]) +- $RM conftest* +- echo "$lt_simple_compile_test_code" > conftest.$ac_ext +- +- if AC_TRY_EVAL(ac_compile) 2>conftest.err; then +- soname=conftest +- lib=conftest +- libobjs=conftest.$ac_objext +- deplibs= +- wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) +- pic_flag=$_LT_TAGVAR(lt_prog_compiler_pic, $1) +- compiler_flags=-v +- linker_flags=-v +- verstring= +- output_objdir=. +- libname=conftest +- lt_save_allow_undefined_flag=$_LT_TAGVAR(allow_undefined_flag, $1) +- _LT_TAGVAR(allow_undefined_flag, $1)= +- if AC_TRY_EVAL(_LT_TAGVAR(archive_cmds, $1) 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) +- then +- _LT_TAGVAR(archive_cmds_need_lc, $1)=no +- else +- _LT_TAGVAR(archive_cmds_need_lc, $1)=yes +- fi +- _LT_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag +- else +- cat conftest.err 1>&5 +- fi +- $RM conftest* +- AC_MSG_RESULT([$_LT_TAGVAR(archive_cmds_need_lc, $1)]) ++ AC_CACHE_CHECK([whether -lc should be explicitly linked in], ++ [lt_cv_]_LT_TAGVAR(archive_cmds_need_lc, $1), ++ [$RM conftest* ++ echo "$lt_simple_compile_test_code" > conftest.$ac_ext ++ ++ if AC_TRY_EVAL(ac_compile) 2>conftest.err; then ++ soname=conftest ++ lib=conftest ++ libobjs=conftest.$ac_objext ++ deplibs= ++ wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) ++ pic_flag=$_LT_TAGVAR(lt_prog_compiler_pic, $1) ++ compiler_flags=-v ++ linker_flags=-v ++ verstring= ++ output_objdir=. ++ libname=conftest ++ lt_save_allow_undefined_flag=$_LT_TAGVAR(allow_undefined_flag, $1) ++ _LT_TAGVAR(allow_undefined_flag, $1)= ++ if AC_TRY_EVAL(_LT_TAGVAR(archive_cmds, $1) 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) ++ then ++ lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=no ++ else ++ lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=yes ++ fi ++ _LT_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag ++ else ++ cat conftest.err 1>&5 ++ fi ++ $RM conftest* ++ ]) ++ _LT_TAGVAR(archive_cmds_need_lc, $1)=$lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1) + ;; + esac + fi +@@ -5324,37 +5431,21 @@ + ])# _LT_LANG_C_CONFIG + + +-# _LT_PROG_CXX +-# ------------ +-# Since AC_PROG_CXX is broken, in that it returns g++ if there is no c++ +-# compiler, we have our own version here. +-m4_defun([_LT_PROG_CXX], +-[ +-pushdef([AC_MSG_ERROR], [_lt_caught_CXX_error=yes]) +-AC_PROG_CXX +-if test -n "$CXX" && ( test "X$CXX" != "Xno" && +- ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || +- (test "X$CXX" != "Xg++"))) ; then +- AC_PROG_CXXCPP +-else +- _lt_caught_CXX_error=yes +-fi +-popdef([AC_MSG_ERROR]) +-])# _LT_PROG_CXX +- +-dnl aclocal-1.4 backwards compatibility: +-dnl AC_DEFUN([_LT_PROG_CXX], []) +- +- + # _LT_LANG_CXX_CONFIG([TAG]) + # -------------------------- + # Ensure that the configuration variables for a C++ compiler are suitably + # defined. These variables are subsequently used by _LT_CONFIG to write + # the compiler configuration to `libtool'. + m4_defun([_LT_LANG_CXX_CONFIG], +-[AC_REQUIRE([_LT_PROG_CXX])dnl +-m4_require([_LT_FILEUTILS_DEFAULTS])dnl ++[m4_require([_LT_FILEUTILS_DEFAULTS])dnl + m4_require([_LT_DECL_EGREP])dnl ++if test -n "$CXX" && ( test "X$CXX" != "Xno" && ++ ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || ++ (test "X$CXX" != "Xg++"))) ; then ++ AC_PROG_CXXCPP ++else ++ _lt_caught_CXX_error=yes ++fi + + AC_LANG_PUSH(C++) + _LT_TAGVAR(archive_cmds_need_lc, $1)=no +@@ -5376,6 +5467,8 @@ + _LT_TAGVAR(module_expsym_cmds, $1)= + _LT_TAGVAR(link_all_deplibs, $1)=unknown + _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds ++_LT_TAGVAR(reload_flag, $1)=$reload_flag ++_LT_TAGVAR(reload_cmds, $1)=$reload_cmds + _LT_TAGVAR(no_undefined_flag, $1)= + _LT_TAGVAR(whole_archive_flag_spec, $1)= + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no +@@ -5478,7 +5571,7 @@ + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. +- output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"' ++ output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' + + else + GXX=no +@@ -5590,7 +5683,7 @@ + _LT_SYS_MODULE_PATH_AIX + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" + +- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then $ECHO "X${wl}${allow_undefined_flag}" | $Xsed; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" ++ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' +@@ -5605,8 +5698,13 @@ + # -berok will link without error, but may produce a broken library. + _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' + _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' +- # Exported symbols can be pulled into shared objects from archives +- _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' ++ if test "$with_gnu_ld" = yes; then ++ # We only use this code for GNU lds that support --whole-archive. ++ _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' ++ else ++ # Exported symbols can be pulled into shared objects from archives ++ _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' ++ fi + _LT_TAGVAR(archive_cmds_need_lc, $1)=yes + # This is similar to how AIX traditionally builds its shared + # libraries. +@@ -5639,6 +5737,7 @@ + # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, + # as there is no search path for DLLs. + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' ++ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols' + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(always_export_symbols, $1)=no + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes +@@ -5699,6 +5798,11 @@ + gnu*) + ;; + ++ haiku*) ++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' ++ _LT_TAGVAR(link_all_deplibs, $1)=yes ++ ;; ++ + hpux9*) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: +@@ -5723,7 +5827,7 @@ + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. +- output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed' ++ output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + ;; + *) + if test "$GXX" = yes; then +@@ -5788,7 +5892,7 @@ + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. +- output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed' ++ output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + ;; + *) + if test "$GXX" = yes; then +@@ -5831,7 +5935,7 @@ + case $cc_basename in + CC*) + # SGI C++ +- _LT_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' ++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' + + # Archives containing C++ object files must be created using + # "CC -ar", where "CC" is the IRIX C++ compiler. This is +@@ -5842,9 +5946,9 @@ + *) + if test "$GXX" = yes; then + if test "$with_gnu_ld" = no; then +- _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' ++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else +- _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` -o $lib' ++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` -o $lib' + fi + fi + _LT_TAGVAR(link_all_deplibs, $1)=yes +@@ -5855,7 +5959,7 @@ + _LT_TAGVAR(inherit_rpath, $1)=yes + ;; + +- linux* | k*bsd*-gnu) ++ linux* | k*bsd*-gnu | kopensolaris*-gnu) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler +@@ -5873,7 +5977,7 @@ + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. +- output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed' ++ output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' +@@ -5910,26 +6014,26 @@ + pgCC* | pgcpp*) + # Portland Group C++ compiler + case `$CC -V` in +- *pgCC\ [[1-5]]* | *pgcpp\ [[1-5]]*) ++ *pgCC\ [[1-5]].* | *pgcpp\ [[1-5]].*) + _LT_TAGVAR(prelink_cmds, $1)='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ +- compile_command="$compile_command `find $tpldir -name \*.o | $NL2SP`"' ++ compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"' + _LT_TAGVAR(old_archive_cmds, $1)='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ +- $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | $NL2SP`~ ++ $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~ + $RANLIB $oldlib' + _LT_TAGVAR(archive_cmds, $1)='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ +- $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' ++ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ +- $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' ++ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' + ;; +- *) # Version 6 will use weak symbols ++ *) # Version 6 and above use weak symbols + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' + ;; +@@ -5937,7 +6041,7 @@ + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' +- _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' ++ _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + ;; + cxx*) + # Compaq C++ +@@ -5956,9 +6060,9 @@ + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. +- output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`$ECHO "X$templist" | $Xsed -e "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed' ++ output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed' + ;; +- xl*) ++ xl* | mpixl* | bgxl*) + # IBM XL 8.0 on PPC, with GNU ld + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' +@@ -5978,13 +6082,13 @@ + _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' +- _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' ++ _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + _LT_TAGVAR(compiler_needs_object, $1)=yes + + # Not sure whether something based on + # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 + # would be better. +- output_verbose_link_cmd='echo' ++ output_verbose_link_cmd='func_echo_all' + + # Archives containing C++ object files must be created using + # "CC -xar", where "CC" is the Sun C++ compiler. This is +@@ -6053,7 +6157,7 @@ + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + fi +- output_verbose_link_cmd=echo ++ output_verbose_link_cmd=func_echo_all + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi +@@ -6088,15 +6192,15 @@ + case $host in + osf3*) + _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' +- _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && $ECHO "X${wl}-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' ++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && func_echo_all "${wl}-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + ;; + *) + _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' +- _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' ++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ + echo "-hidden">> $lib.exp~ +- $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib~ ++ $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~ + $RM $lib.exp' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' + ;; +@@ -6112,17 +6216,17 @@ + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. +- output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`$ECHO "X$templist" | $Xsed -e "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed' ++ output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + ;; + *) + if test "$GXX" = yes && test "$with_gnu_ld" = no; then + _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' + case $host in + osf3*) +- _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' ++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + ;; + *) +- _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' ++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + ;; + esac + +@@ -6132,7 +6236,7 @@ + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. +- output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"' ++ output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' + + else + # FIXME: insert proper C++ library support +@@ -6168,7 +6272,7 @@ + + solaris*) + case $cc_basename in +- CC*) ++ CC* | sunCC*) + # Sun C++ 4.2, 5.x and Centerline C++ + _LT_TAGVAR(archive_cmds_need_lc,$1)=yes + _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' +@@ -6189,7 +6293,7 @@ + esac + _LT_TAGVAR(link_all_deplibs, $1)=yes + +- output_verbose_link_cmd='echo' ++ output_verbose_link_cmd='func_echo_all' + + # Archives containing C++ object files must be created using + # "CC -xar", where "CC" is the Sun C++ compiler. This is +@@ -6216,7 +6320,7 @@ + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. +- output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"' ++ output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' + else + # g++ 2.7 appears to require `-G' NOT `-shared' on this + # platform. +@@ -6227,7 +6331,7 @@ + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. +- output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"' ++ output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' + fi + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir' +@@ -6281,6 +6385,10 @@ + CC*) + _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ++ _LT_TAGVAR(old_archive_cmds, $1)='$CC -Tprelink_objects $oldobjs~ ++ '"$_LT_TAGVAR(old_archive_cmds, $1)" ++ _LT_TAGVAR(reload_cmds, $1)='$CC -Tprelink_objects $reload_objs~ ++ '"$_LT_TAGVAR(reload_cmds, $1)" + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' +@@ -6527,7 +6635,7 @@ + + solaris*) + case $cc_basename in +- CC*) ++ CC* | sunCC*) + # The more standards-conforming stlport4 library is + # incompatible with the Cstd library. Avoid specifying + # it if it's in CXXFLAGS. Ignore libCrun as +@@ -6571,32 +6679,16 @@ + ])# _LT_SYS_HIDDEN_LIBDEPS + + +-# _LT_PROG_F77 +-# ------------ +-# Since AC_PROG_F77 is broken, in that it returns the empty string +-# if there is no fortran compiler, we have our own version here. +-m4_defun([_LT_PROG_F77], +-[ +-pushdef([AC_MSG_ERROR], [_lt_disable_F77=yes]) +-AC_PROG_F77 +-if test -z "$F77" || test "X$F77" = "Xno"; then +- _lt_disable_F77=yes +-fi +-popdef([AC_MSG_ERROR]) +-])# _LT_PROG_F77 +- +-dnl aclocal-1.4 backwards compatibility: +-dnl AC_DEFUN([_LT_PROG_F77], []) +- +- + # _LT_LANG_F77_CONFIG([TAG]) + # -------------------------- + # Ensure that the configuration variables for a Fortran 77 compiler are + # suitably defined. These variables are subsequently used by _LT_CONFIG + # to write the compiler configuration to `libtool'. + m4_defun([_LT_LANG_F77_CONFIG], +-[AC_REQUIRE([_LT_PROG_F77])dnl +-AC_LANG_PUSH(Fortran 77) ++[AC_LANG_PUSH(Fortran 77) ++if test -z "$F77" || test "X$F77" = "Xno"; then ++ _lt_disable_F77=yes ++fi + + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(allow_undefined_flag, $1)= +@@ -6615,6 +6707,8 @@ + _LT_TAGVAR(module_expsym_cmds, $1)= + _LT_TAGVAR(link_all_deplibs, $1)=unknown + _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds ++_LT_TAGVAR(reload_flag, $1)=$reload_flag ++_LT_TAGVAR(reload_cmds, $1)=$reload_cmds + _LT_TAGVAR(no_undefined_flag, $1)= + _LT_TAGVAR(whole_archive_flag_spec, $1)= + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no +@@ -6714,32 +6808,17 @@ + ])# _LT_LANG_F77_CONFIG + + +-# _LT_PROG_FC +-# ----------- +-# Since AC_PROG_FC is broken, in that it returns the empty string +-# if there is no fortran compiler, we have our own version here. +-m4_defun([_LT_PROG_FC], +-[ +-pushdef([AC_MSG_ERROR], [_lt_disable_FC=yes]) +-AC_PROG_FC +-if test -z "$FC" || test "X$FC" = "Xno"; then +- _lt_disable_FC=yes +-fi +-popdef([AC_MSG_ERROR]) +-])# _LT_PROG_FC +- +-dnl aclocal-1.4 backwards compatibility: +-dnl AC_DEFUN([_LT_PROG_FC], []) +- +- + # _LT_LANG_FC_CONFIG([TAG]) + # ------------------------- + # Ensure that the configuration variables for a Fortran compiler are + # suitably defined. These variables are subsequently used by _LT_CONFIG + # to write the compiler configuration to `libtool'. + m4_defun([_LT_LANG_FC_CONFIG], +-[AC_REQUIRE([_LT_PROG_FC])dnl +-AC_LANG_PUSH(Fortran) ++[AC_LANG_PUSH(Fortran) ++ ++if test -z "$FC" || test "X$FC" = "Xno"; then ++ _lt_disable_FC=yes ++fi + + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(allow_undefined_flag, $1)= +@@ -6758,6 +6837,8 @@ + _LT_TAGVAR(module_expsym_cmds, $1)= + _LT_TAGVAR(link_all_deplibs, $1)=unknown + _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds ++_LT_TAGVAR(reload_flag, $1)=$reload_flag ++_LT_TAGVAR(reload_cmds, $1)=$reload_cmds + _LT_TAGVAR(no_undefined_flag, $1)= + _LT_TAGVAR(whole_archive_flag_spec, $1)= + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no +@@ -6903,6 +6984,8 @@ + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + + _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds ++_LT_TAGVAR(reload_flag, $1)=$reload_flag ++_LT_TAGVAR(reload_cmds, $1)=$reload_cmds + + if test -n "$compiler"; then + _LT_COMPILER_NO_RTTI($1) +@@ -7264,7 +7347,7 @@ + func_dirname () + { + # Extract subdirectory from the argument. +- func_dirname_result=`$ECHO "X${1}" | $Xsed -e "$dirname"` ++ func_dirname_result=`$ECHO "${1}" | $SED "$dirname"` + if test "X$func_dirname_result" = "X${1}"; then + func_dirname_result="${3}" + else +@@ -7275,7 +7358,7 @@ + # func_basename file + func_basename () + { +- func_basename_result=`$ECHO "X${1}" | $Xsed -e "$basename"` ++ func_basename_result=`$ECHO "${1}" | $SED "$basename"` + } + + dnl func_dirname_and_basename +@@ -7291,10 +7374,8 @@ + func_stripname () + { + case ${2} in +- .*) func_stripname_result=`$ECHO "X${3}" \ +- | $Xsed -e "s%^${1}%%" -e "s%\\\\${2}\$%%"`;; +- *) func_stripname_result=`$ECHO "X${3}" \ +- | $Xsed -e "s%^${1}%%" -e "s%${2}\$%%"`;; ++ .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;; ++ *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;; + esac + } + +@@ -7305,20 +7386,20 @@ + # func_opt_split + func_opt_split () + { +- func_opt_split_opt=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_opt"` +- func_opt_split_arg=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_arg"` ++ func_opt_split_opt=`$ECHO "${1}" | $SED "$my_sed_long_opt"` ++ func_opt_split_arg=`$ECHO "${1}" | $SED "$my_sed_long_arg"` + } + + # func_lo2o object + func_lo2o () + { +- func_lo2o_result=`$ECHO "X${1}" | $Xsed -e "$lo2o"` ++ func_lo2o_result=`$ECHO "${1}" | $SED "$lo2o"` + } + + # func_xform libobj-or-source + func_xform () + { +- func_xform_result=`$ECHO "X${1}" | $Xsed -e 's/\.[[^.]]*$/.lo/'` ++ func_xform_result=`$ECHO "${1}" | $SED 's/\.[[^.]]*$/.lo/'` + } + + # func_arith arithmetic-term... +@@ -7366,14 +7447,15 @@ + + # Helper functions for option handling. -*- Autoconf -*- + # +-# Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc. ++# Copyright (C) 2004, 2005, 2007, 2008, 2009 Free Software Foundation, ++# Inc. + # Written by Gary V. Vaughan, 2004 + # + # This file is free software; the Free Software Foundation gives + # unlimited permission to copy and/or distribute it, with or without + # modifications, as long as this notice is preserved. + +-# serial 6 ltoptions.m4 ++# serial 7 ltoptions.m4 + + # This is to help aclocal find these macros, as it can't see m4_define. + AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])]) +@@ -7488,7 +7570,7 @@ + [enable_win32_dll=yes + + case $host in +-*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-cegcc*) ++*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*) + AC_CHECK_TOOL(AS, as, false) + AC_CHECK_TOOL(DLLTOOL, dlltool, false) + AC_CHECK_TOOL(OBJDUMP, objdump, false) +@@ -7496,13 +7578,13 @@ + esac + + test -z "$AS" && AS=as +-_LT_DECL([], [AS], [0], [Assembler program])dnl ++_LT_DECL([], [AS], [1], [Assembler program])dnl + + test -z "$DLLTOOL" && DLLTOOL=dlltool +-_LT_DECL([], [DLLTOOL], [0], [DLL creation program])dnl ++_LT_DECL([], [DLLTOOL], [1], [DLL creation program])dnl + + test -z "$OBJDUMP" && OBJDUMP=objdump +-_LT_DECL([], [OBJDUMP], [0], [Object dumper program])dnl ++_LT_DECL([], [OBJDUMP], [1], [Object dumper program])dnl + ])# win32-dll + + AU_DEFUN([AC_LIBTOOL_WIN32_DLL], +@@ -7862,29 +7944,29 @@ + + # Generated from ltversion.in. + +-# serial 3012 ltversion.m4 ++# serial 3175 ltversion.m4 + # This file is part of GNU Libtool + +-m4_define([LT_PACKAGE_VERSION], [2.2.6]) +-m4_define([LT_PACKAGE_REVISION], [1.3012]) ++m4_define([LT_PACKAGE_VERSION], [2.2.10]) ++m4_define([LT_PACKAGE_REVISION], [1.3175]) + + AC_DEFUN([LTVERSION_VERSION], +-[macro_version='2.2.6' +-macro_revision='1.3012' ++[macro_version='2.2.10' ++macro_revision='1.3175' + _LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?]) + _LT_DECL(, macro_revision, 0) + ]) + + # lt~obsolete.m4 -- aclocal satisfying obsolete definitions. -*-Autoconf-*- + # +-# Copyright (C) 2004, 2005, 2007 Free Software Foundation, Inc. ++# Copyright (C) 2004, 2005, 2007, 2009 Free Software Foundation, Inc. + # Written by Scott James Remnant, 2004. + # + # This file is free software; the Free Software Foundation gives + # unlimited permission to copy and/or distribute it, with or without + # modifications, as long as this notice is preserved. + +-# serial 4 lt~obsolete.m4 ++# serial 5 lt~obsolete.m4 + + # These exist entirely to fool aclocal when bootstrapping libtool. + # +@@ -7954,7 +8036,6 @@ + m4_ifndef([_LT_AC_LANG_CXX], [AC_DEFUN([_LT_AC_LANG_CXX])]) + m4_ifndef([_LT_AC_LANG_F77], [AC_DEFUN([_LT_AC_LANG_F77])]) + m4_ifndef([_LT_AC_LANG_GCJ], [AC_DEFUN([_LT_AC_LANG_GCJ])]) +-m4_ifndef([AC_LIBTOOL_RC], [AC_DEFUN([AC_LIBTOOL_RC])]) + m4_ifndef([AC_LIBTOOL_LANG_C_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])]) + m4_ifndef([_LT_AC_LANG_C_CONFIG], [AC_DEFUN([_LT_AC_LANG_C_CONFIG])]) + m4_ifndef([AC_LIBTOOL_LANG_CXX_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])]) +@@ -7967,8 +8048,16 @@ + m4_ifndef([_LT_AC_LANG_RC_CONFIG], [AC_DEFUN([_LT_AC_LANG_RC_CONFIG])]) + m4_ifndef([AC_LIBTOOL_CONFIG], [AC_DEFUN([AC_LIBTOOL_CONFIG])]) + m4_ifndef([_LT_AC_FILE_LTDLL_C], [AC_DEFUN([_LT_AC_FILE_LTDLL_C])]) ++m4_ifndef([_LT_REQUIRED_DARWIN_CHECKS], [AC_DEFUN([_LT_REQUIRED_DARWIN_CHECKS])]) ++m4_ifndef([_LT_AC_PROG_CXXCPP], [AC_DEFUN([_LT_AC_PROG_CXXCPP])]) ++m4_ifndef([_LT_PREPARE_SED_QUOTE_VARS], [AC_DEFUN([_LT_PREPARE_SED_QUOTE_VARS])]) ++m4_ifndef([_LT_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_PROG_ECHO_BACKSLASH])]) ++m4_ifndef([_LT_PROG_F77], [AC_DEFUN([_LT_PROG_F77])]) ++m4_ifndef([_LT_PROG_FC], [AC_DEFUN([_LT_PROG_FC])]) ++m4_ifndef([_LT_PROG_CXX], [AC_DEFUN([_LT_PROG_CXX])]) + + # pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*- ++# serial 1 (pkg-config-0.24) + # + # Copyright © 2004 Scott James Remnant . + # +@@ -7996,7 +8085,10 @@ + AC_DEFUN([PKG_PROG_PKG_CONFIG], + [m4_pattern_forbid([^_?PKG_[A-Z_]+$]) + m4_pattern_allow([^PKG_CONFIG(_PATH)?$]) +-AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility])dnl ++AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility]) ++AC_ARG_VAR([PKG_CONFIG_PATH], [directories to add to pkg-config's search path]) ++AC_ARG_VAR([PKG_CONFIG_LIBDIR], [path overriding pkg-config's built-in search path]) ++ + if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then + AC_PATH_TOOL([PKG_CONFIG], [pkg-config]) + fi +@@ -8009,7 +8101,6 @@ + AC_MSG_RESULT([no]) + PKG_CONFIG="" + fi +- + fi[]dnl + ])# PKG_PROG_PKG_CONFIG + +@@ -8018,21 +8109,20 @@ + # Check to see whether a particular set of modules exists. Similar + # to PKG_CHECK_MODULES(), but does not set variables or print errors. + # +-# +-# Similar to PKG_CHECK_MODULES, make sure that the first instance of +-# this or PKG_CHECK_MODULES is called, or make sure to call +-# PKG_CHECK_EXISTS manually ++# Please remember that m4 expands AC_REQUIRE([PKG_PROG_PKG_CONFIG]) ++# only at the first occurence in configure.ac, so if the first place ++# it's called might be skipped (such as if it is within an "if", you ++# have to call PKG_CHECK_EXISTS manually + # -------------------------------------------------------------- + AC_DEFUN([PKG_CHECK_EXISTS], + [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl + if test -n "$PKG_CONFIG" && \ + AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then +- m4_ifval([$2], [$2], [:]) ++ m4_default([$2], [:]) + m4_ifvaln([$3], [else + $3])dnl + fi]) + +- + # _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES]) + # --------------------------------------------- + m4_define([_PKG_CONFIG], +@@ -8085,6 +8175,7 @@ + See the pkg-config man page for more details.]) + + if test $pkg_failed = yes; then ++ AC_MSG_RESULT([no]) + _PKG_SHORT_ERRORS_SUPPORTED + if test $_pkg_short_errors_supported = yes; then + $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "$2" 2>&1` +@@ -8094,7 +8185,7 @@ + # Put the nasty error message in config.log where it belongs + echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD + +- ifelse([$4], , [AC_MSG_ERROR(dnl ++ m4_default([$4], [AC_MSG_ERROR( + [Package requirements ($2) were not met: + + $$1_PKG_ERRORS +@@ -8102,25 +8193,24 @@ + Consider adjusting the PKG_CONFIG_PATH environment variable if you + installed software in a non-standard prefix. + +-_PKG_TEXT +-])], +- [AC_MSG_RESULT([no]) +- $4]) ++_PKG_TEXT]) ++ ]) + elif test $pkg_failed = untried; then +- ifelse([$4], , [AC_MSG_FAILURE(dnl ++ AC_MSG_RESULT([no]) ++ m4_default([$4], [AC_MSG_FAILURE( + [The pkg-config script could not be found or is too old. Make sure it + is in your PATH or set the PKG_CONFIG environment variable to the full + path to pkg-config. + + _PKG_TEXT + +-To get pkg-config, see .])], +- [$4]) ++To get pkg-config, see .]) ++ ]) + else + $1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS + $1[]_LIBS=$pkg_cv_[]$1[]_LIBS + AC_MSG_RESULT([yes]) +- ifelse([$3], , :, [$3]) ++ $3 + fi[]dnl + ])# PKG_CHECK_MODULES + +@@ -8139,7 +8229,7 @@ + [am__api_version='1.11' + dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to + dnl require some minimum version. Point them to the right macro. +-m4_if([$1], [1.11], [], ++m4_if([$1], [1.11.1], [], + [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl + ]) + +@@ -8155,7 +8245,7 @@ + # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. + # This function is AC_REQUIREd by AM_INIT_AUTOMAKE. + AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], +-[AM_AUTOMAKE_VERSION([1.11])dnl ++[AM_AUTOMAKE_VERSION([1.11.1])dnl + m4_ifndef([AC_AUTOCONF_VERSION], + [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl + _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) +diff -Nur fontconfig-2.8.0-orig/conf.d/Makefile.in fontconfig-2.8.0-config/conf.d/Makefile.in +--- fontconfig-2.8.0-orig/conf.d/Makefile.in 2009-11-18 15:49:37.000000000 -0800 ++++ fontconfig-2.8.0-config/conf.d/Makefile.in 2012-01-06 13:29:53.147928189 -0800 +@@ -1,4 +1,4 @@ +-# Makefile.in generated by automake 1.11 from Makefile.am. ++# Makefile.in generated by automake 1.11.1 from Makefile.am. + # @configure_input@ + + # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +@@ -134,6 +134,7 @@ + EXEEXT_FOR_BUILD = @EXEEXT_FOR_BUILD@ + EXPAT_CFLAGS = @EXPAT_CFLAGS@ + EXPAT_LIBS = @EXPAT_LIBS@ ++FCPATH = @FCPATH@ + FC_ADD_FONTS = @FC_ADD_FONTS@ + FC_CACHEDIR = @FC_CACHEDIR@ + FC_DEFAULT_FONTS = @FC_DEFAULT_FONTS@ +@@ -182,9 +183,12 @@ + PACKAGE_NAME = @PACKAGE_NAME@ + PACKAGE_STRING = @PACKAGE_STRING@ + PACKAGE_TARNAME = @PACKAGE_TARNAME@ ++PACKAGE_URL = @PACKAGE_URL@ + PACKAGE_VERSION = @PACKAGE_VERSION@ + PATH_SEPARATOR = @PATH_SEPARATOR@ + PKG_CONFIG = @PKG_CONFIG@ ++PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ ++PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ + RANLIB = @RANLIB@ + SED = @SED@ + SET_MAKE = @SET_MAKE@ +@@ -217,6 +221,7 @@ + dvidir = @dvidir@ + exec_prefix = @exec_prefix@ + fc_cachedir = @fc_cachedir@ ++fcpath = @fcpath@ + ft_config = @ft_config@ + host = @host@ + host_alias = @host_alias@ +@@ -231,7 +236,6 @@ + libexecdir = @libexecdir@ + localedir = @localedir@ + localstatedir = @localstatedir@ +-lt_ECHO = @lt_ECHO@ + mandir = @mandir@ + mkdir_p = @mkdir_p@ + ms_librarian = @ms_librarian@ +diff -Nur fontconfig-2.8.0-orig/config.guess fontconfig-2.8.0-config/config.guess +--- fontconfig-2.8.0-orig/config.guess 2008-08-07 09:01:11.000000000 -0700 ++++ fontconfig-2.8.0-config/config.guess 2012-01-06 13:29:53.082916760 -0800 +@@ -1,10 +1,10 @@ + #! /bin/sh + # Attempt to guess a canonical system name. + # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, +-# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 ++# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 + # Free Software Foundation, Inc. + +-timestamp='2008-01-23' ++timestamp='2009-11-20' + + # This file is free software; you can redistribute it and/or modify it + # under the terms of the GNU General Public License as published by +@@ -27,16 +27,16 @@ + # the same distribution terms that you use for the rest of that program. + + +-# Originally written by Per Bothner . +-# Please send patches to . Submit a context +-# diff and a properly formatted ChangeLog entry. ++# Originally written by Per Bothner. Please send patches (context ++# diff format) to and include a ChangeLog ++# entry. + # + # This script attempts to guess a canonical system name similar to + # config.sub. If it succeeds, it prints the system name on stdout, and + # exits with 0. Otherwise, it exits with 1. + # +-# The plan is that this can be called by configure scripts if you +-# don't specify an explicit build system type. ++# You can get the latest version of this script from: ++# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD + + me=`echo "$0" | sed -e 's,.*/,,'` + +@@ -170,7 +170,7 @@ + arm*|i386|m68k|ns32k|sh3*|sparc|vax) + eval $set_cc_for_build + if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ +- | grep __ELF__ >/dev/null ++ | grep -q __ELF__ + then + # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). + # Return netbsd for either. FIX? +@@ -324,14 +324,33 @@ + case `/usr/bin/uname -p` in + sparc) echo sparc-icl-nx7; exit ;; + esac ;; ++ s390x:SunOS:*:*) ++ echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` ++ exit ;; + sun4H:SunOS:5.*:*) + echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) + echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; ++ i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) ++ echo i386-pc-auroraux${UNAME_RELEASE} ++ exit ;; + i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) +- echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` ++ eval $set_cc_for_build ++ SUN_ARCH="i386" ++ # If there is a compiler, see if it is configured for 64-bit objects. ++ # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. ++ # This test works for both compilers. ++ if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then ++ if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ ++ (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ ++ grep IS_64BIT_ARCH >/dev/null ++ then ++ SUN_ARCH="x86_64" ++ fi ++ fi ++ echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + sun4*:SunOS:6*:*) + # According to config.sub, this is the proper way to canonicalize +@@ -640,7 +659,7 @@ + # => hppa64-hp-hpux11.23 + + if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | +- grep __LP64__ >/dev/null ++ grep -q __LP64__ + then + HP_ARCH="hppa2.0w" + else +@@ -791,12 +810,12 @@ + i*:PW*:*) + echo ${UNAME_MACHINE}-pc-pw32 + exit ;; +- *:Interix*:[3456]*) ++ *:Interix*:*) + case ${UNAME_MACHINE} in + x86) + echo i586-pc-interix${UNAME_RELEASE} + exit ;; +- EM64T | authenticamd) ++ authenticamd | genuineintel | EM64T) + echo x86_64-unknown-interix${UNAME_RELEASE} + exit ;; + IA64) +@@ -806,6 +825,9 @@ + [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) + echo i${UNAME_MACHINE}-pc-mks + exit ;; ++ 8664:Windows_NT:*) ++ echo x86_64-pc-mks ++ exit ;; + i*:Windows_NT*:* | Pentium*:Windows_NT*:*) + # How do we know it's Interix rather than the generic POSIX subsystem? + # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we +@@ -835,6 +857,20 @@ + i*86:Minix:*:*) + echo ${UNAME_MACHINE}-pc-minix + exit ;; ++ alpha:Linux:*:*) ++ case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in ++ EV5) UNAME_MACHINE=alphaev5 ;; ++ EV56) UNAME_MACHINE=alphaev56 ;; ++ PCA56) UNAME_MACHINE=alphapca56 ;; ++ PCA57) UNAME_MACHINE=alphapca56 ;; ++ EV6) UNAME_MACHINE=alphaev6 ;; ++ EV67) UNAME_MACHINE=alphaev67 ;; ++ EV68*) UNAME_MACHINE=alphaev68 ;; ++ esac ++ objdump --private-headers /bin/sh | grep -q ld.so.1 ++ if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi ++ echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} ++ exit ;; + arm*:Linux:*:*) + eval $set_cc_for_build + if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ +@@ -857,6 +893,17 @@ + frv:Linux:*:*) + echo frv-unknown-linux-gnu + exit ;; ++ i*86:Linux:*:*) ++ LIBC=gnu ++ eval $set_cc_for_build ++ sed 's/^ //' << EOF >$dummy.c ++ #ifdef __dietlibc__ ++ LIBC=dietlibc ++ #endif ++EOF ++ eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'` ++ echo "${UNAME_MACHINE}-pc-linux-${LIBC}" ++ exit ;; + ia64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; +@@ -866,74 +913,33 @@ + m68*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; +- mips:Linux:*:*) +- eval $set_cc_for_build +- sed 's/^ //' << EOF >$dummy.c +- #undef CPU +- #undef mips +- #undef mipsel +- #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) +- CPU=mipsel +- #else +- #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) +- CPU=mips +- #else +- CPU= +- #endif +- #endif +-EOF +- eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n ' +- /^CPU/{ +- s: ::g +- p +- }'`" +- test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; } +- ;; +- mips64:Linux:*:*) ++ mips:Linux:*:* | mips64:Linux:*:*) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #undef CPU +- #undef mips64 +- #undef mips64el ++ #undef ${UNAME_MACHINE} ++ #undef ${UNAME_MACHINE}el + #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) +- CPU=mips64el ++ CPU=${UNAME_MACHINE}el + #else + #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) +- CPU=mips64 ++ CPU=${UNAME_MACHINE} + #else + CPU= + #endif + #endif + EOF +- eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n ' +- /^CPU/{ +- s: ::g +- p +- }'`" ++ eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'` + test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; } + ;; + or32:Linux:*:*) + echo or32-unknown-linux-gnu + exit ;; +- ppc:Linux:*:*) +- echo powerpc-unknown-linux-gnu +- exit ;; +- ppc64:Linux:*:*) +- echo powerpc64-unknown-linux-gnu ++ padre:Linux:*:*) ++ echo sparc-unknown-linux-gnu + exit ;; +- alpha:Linux:*:*) +- case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in +- EV5) UNAME_MACHINE=alphaev5 ;; +- EV56) UNAME_MACHINE=alphaev56 ;; +- PCA56) UNAME_MACHINE=alphapca56 ;; +- PCA57) UNAME_MACHINE=alphapca56 ;; +- EV6) UNAME_MACHINE=alphaev6 ;; +- EV67) UNAME_MACHINE=alphaev67 ;; +- EV68*) UNAME_MACHINE=alphaev68 ;; +- esac +- objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null +- if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi +- echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} ++ parisc64:Linux:*:* | hppa64:Linux:*:*) ++ echo hppa64-unknown-linux-gnu + exit ;; + parisc:Linux:*:* | hppa:Linux:*:*) + # Look for CPU level +@@ -943,8 +949,11 @@ + *) echo hppa-unknown-linux-gnu ;; + esac + exit ;; +- parisc64:Linux:*:* | hppa64:Linux:*:*) +- echo hppa64-unknown-linux-gnu ++ ppc64:Linux:*:*) ++ echo powerpc64-unknown-linux-gnu ++ exit ;; ++ ppc:Linux:*:*) ++ echo powerpc-unknown-linux-gnu + exit ;; + s390:Linux:*:* | s390x:Linux:*:*) + echo ${UNAME_MACHINE}-ibm-linux +@@ -967,69 +976,6 @@ + xtensa*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; +- i*86:Linux:*:*) +- # The BFD linker knows what the default object file format is, so +- # first see if it will tell us. cd to the root directory to prevent +- # problems with other programs or directories called `ld' in the path. +- # Set LC_ALL=C to ensure ld outputs messages in English. +- ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \ +- | sed -ne '/supported targets:/!d +- s/[ ][ ]*/ /g +- s/.*supported targets: *// +- s/ .*// +- p'` +- case "$ld_supported_targets" in +- elf32-i386) +- TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu" +- ;; +- a.out-i386-linux) +- echo "${UNAME_MACHINE}-pc-linux-gnuaout" +- exit ;; +- coff-i386) +- echo "${UNAME_MACHINE}-pc-linux-gnucoff" +- exit ;; +- "") +- # Either a pre-BFD a.out linker (linux-gnuoldld) or +- # one that does not give us useful --help. +- echo "${UNAME_MACHINE}-pc-linux-gnuoldld" +- exit ;; +- esac +- # Determine whether the default compiler is a.out or elf +- eval $set_cc_for_build +- sed 's/^ //' << EOF >$dummy.c +- #include +- #ifdef __ELF__ +- # ifdef __GLIBC__ +- # if __GLIBC__ >= 2 +- LIBC=gnu +- # else +- LIBC=gnulibc1 +- # endif +- # else +- LIBC=gnulibc1 +- # endif +- #else +- #if defined(__INTEL_COMPILER) || defined(__PGI) || defined(__SUNPRO_C) || defined(__SUNPRO_CC) +- LIBC=gnu +- #else +- LIBC=gnuaout +- #endif +- #endif +- #ifdef __dietlibc__ +- LIBC=dietlibc +- #endif +-EOF +- eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n ' +- /^LIBC/{ +- s: ::g +- p +- }'`" +- test x"${LIBC}" != x && { +- echo "${UNAME_MACHINE}-pc-linux-${LIBC}" +- exit +- } +- test x"${TENTATIVE}" != x && { echo "${TENTATIVE}"; exit; } +- ;; + i*86:DYNIX/ptx:4*:*) + # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. + # earlier versions are messed up and put the nodename in both +@@ -1058,7 +1004,7 @@ + i*86:syllable:*:*) + echo ${UNAME_MACHINE}-pc-syllable + exit ;; +- i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*) ++ i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) + echo i386-unknown-lynxos${UNAME_RELEASE} + exit ;; + i*86:*DOS:*:*) +@@ -1102,8 +1048,11 @@ + pc:*:*:*) + # Left here for compatibility: + # uname -m prints for DJGPP always 'pc', but it prints nothing about +- # the processor, so we play safe by assuming i386. +- echo i386-pc-msdosdjgpp ++ # the processor, so we play safe by assuming i586. ++ # Note: whatever this is, it MUST be the same as what config.sub ++ # prints for the "djgpp" host, or else GDB configury will decide that ++ # this is a cross-build. ++ echo i586-pc-msdosdjgpp + exit ;; + Intel:Mach:3*:*) + echo i386-pc-mach3 +@@ -1141,6 +1090,16 @@ + 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4; exit; } ;; ++ NCR*:*:4.2:* | MPRAS*:*:4.2:*) ++ OS_REL='.3' ++ test -r /etc/.relid \ ++ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` ++ /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ ++ && { echo i486-ncr-sysv4.3${OS_REL}; exit; } ++ /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ ++ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ++ /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ ++ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; + m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) + echo m68k-unknown-lynxos${UNAME_RELEASE} + exit ;; +@@ -1153,7 +1112,7 @@ + rs6000:LynxOS:2.*:*) + echo rs6000-unknown-lynxos${UNAME_RELEASE} + exit ;; +- PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*) ++ PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) + echo powerpc-unknown-lynxos${UNAME_RELEASE} + exit ;; + SM[BE]S:UNIX_SV:*:*) +@@ -1216,6 +1175,9 @@ + BePC:BeOS:*:*) # BeOS running on Intel PC compatible. + echo i586-pc-beos + exit ;; ++ BePC:Haiku:*:*) # Haiku running on Intel PC compatible. ++ echo i586-pc-haiku ++ exit ;; + SX-4:SUPER-UX:*:*) + echo sx4-nec-superux${UNAME_RELEASE} + exit ;; +@@ -1243,6 +1205,16 @@ + *:Darwin:*:*) + UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown + case $UNAME_PROCESSOR in ++ i386) ++ eval $set_cc_for_build ++ if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then ++ if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ ++ (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ ++ grep IS_64BIT_ARCH >/dev/null ++ then ++ UNAME_PROCESSOR="x86_64" ++ fi ++ fi ;; + unknown) UNAME_PROCESSOR=powerpc ;; + esac + echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} +@@ -1324,6 +1296,9 @@ + i*86:rdos:*:*) + echo ${UNAME_MACHINE}-pc-rdos + exit ;; ++ i*86:AROS:*:*) ++ echo ${UNAME_MACHINE}-pc-aros ++ exit ;; + esac + + #echo '(No uname command or uname output not recognized.)' 1>&2 +diff -Nur fontconfig-2.8.0-orig/config.h.in fontconfig-2.8.0-config/config.h.in +--- fontconfig-2.8.0-orig/config.h.in 2009-11-18 15:49:52.000000000 -0800 ++++ fontconfig-2.8.0-config/config.h.in 2012-01-06 13:29:52.000000000 -0800 +@@ -6,6 +6,9 @@ + /* Use libxml2 instead of Expat */ + #undef ENABLE_LIBXML2 + ++/* Font configuration directory */ ++#undef FCPATH ++ + /* Additional font directories */ + #undef FC_ADD_FONTS + +@@ -135,6 +138,9 @@ + */ + #undef HAVE_SYS_NDIR_H + ++/* Define to 1 if you have the header file. */ ++#undef HAVE_SYS_PARAM_H ++ + /* Define to 1 if you have the header file. */ + #undef HAVE_SYS_STAT_H + +@@ -175,6 +181,9 @@ + /* Define to the one symbol short name of this package. */ + #undef PACKAGE_TARNAME + ++/* Define to the home page for this package. */ ++#undef PACKAGE_URL ++ + /* Define to the version of this package. */ + #undef PACKAGE_VERSION + +diff -Nur fontconfig-2.8.0-orig/config.sub fontconfig-2.8.0-config/config.sub +--- fontconfig-2.8.0-orig/config.sub 2008-08-07 09:01:11.000000000 -0700 ++++ fontconfig-2.8.0-config/config.sub 2012-01-06 13:29:53.084917112 -0800 +@@ -1,10 +1,10 @@ + #! /bin/sh + # Configuration validation subroutine script. + # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, +-# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 ++# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 + # Free Software Foundation, Inc. + +-timestamp='2008-01-16' ++timestamp='2009-11-20' + + # This file is (in principle) common to ALL GNU software. + # The presence of a machine in this file suggests that SOME GNU software +@@ -32,13 +32,16 @@ + + + # Please send patches to . Submit a context +-# diff and a properly formatted ChangeLog entry. ++# diff and a properly formatted GNU ChangeLog entry. + # + # Configuration subroutine to validate and canonicalize a configuration type. + # Supply the specified configuration type as an argument. + # If it is invalid, we print an error message on stderr and exit with code 1. + # Otherwise, we print the canonical config type on stdout and succeed. + ++# You can get the latest version of this script from: ++# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD ++ + # This file is supposed to be the same for all GNU packages + # and recognize all the CPU types, system types and aliases + # that are meaningful with *any* GNU software. +@@ -122,6 +125,7 @@ + case $maybe_os in + nto-qnx* | linux-gnu* | linux-dietlibc | linux-newlib* | linux-uclibc* | \ + uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | \ ++ kopensolaris*-gnu* | \ + storm-chaos* | os2-emx* | rtmk-nova*) + os=-$maybe_os + basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` +@@ -148,10 +152,13 @@ + -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ + -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ + -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ +- -apple | -axis | -knuth | -cray) ++ -apple | -axis | -knuth | -cray | -microblaze) + os= + basic_machine=$1 + ;; ++ -bluegene*) ++ os=-cnk ++ ;; + -sim | -cisco | -oki | -wec | -winbond) + os= + basic_machine=$1 +@@ -249,13 +256,16 @@ + | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ + | i370 | i860 | i960 | ia64 \ + | ip2k | iq2000 \ ++ | lm32 \ + | m32c | m32r | m32rle | m68000 | m68k | m88k \ +- | maxq | mb | microblaze | mcore | mep \ ++ | maxq | mb | microblaze | mcore | mep | metag \ + | mips | mipsbe | mipseb | mipsel | mipsle \ + | mips16 \ + | mips64 | mips64el \ +- | mips64vr | mips64vrel \ ++ | mips64octeon | mips64octeonel \ + | mips64orion | mips64orionel \ ++ | mips64r5900 | mips64r5900el \ ++ | mips64vr | mips64vrel \ + | mips64vr4100 | mips64vr4100el \ + | mips64vr4300 | mips64vr4300el \ + | mips64vr5000 | mips64vr5000el \ +@@ -268,6 +278,7 @@ + | mipsisa64sr71k | mipsisa64sr71kel \ + | mipstx39 | mipstx39el \ + | mn10200 | mn10300 \ ++ | moxie \ + | mt \ + | msp430 \ + | nios | nios2 \ +@@ -276,20 +287,22 @@ + | pdp10 | pdp11 | pj | pjl \ + | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \ + | pyramid \ ++ | rx \ + | score \ +- | sh | sh[1234] | sh[24]a | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ ++ | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ + | sh64 | sh64le \ + | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ + | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ + | spu | strongarm \ + | tahoe | thumb | tic4x | tic80 | tron \ ++ | ubicom32 \ + | v850 | v850e \ + | we32k \ + | x86 | xc16x | xscale | xscalee[bl] | xstormy16 | xtensa \ +- | z8k) ++ | z8k | z80) + basic_machine=$basic_machine-unknown + ;; +- m6811 | m68hc11 | m6812 | m68hc12) ++ m6811 | m68hc11 | m6812 | m68hc12 | picochip) + # Motorola 68HC11/12. + basic_machine=$basic_machine-unknown + os=-none +@@ -329,14 +342,17 @@ + | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ + | i*86-* | i860-* | i960-* | ia64-* \ + | ip2k-* | iq2000-* \ ++ | lm32-* \ + | m32c-* | m32r-* | m32rle-* \ + | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ +- | m88110-* | m88k-* | maxq-* | mcore-* \ ++ | m88110-* | m88k-* | maxq-* | mcore-* | metag-* | microblaze-* \ + | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ + | mips16-* \ + | mips64-* | mips64el-* \ +- | mips64vr-* | mips64vrel-* \ ++ | mips64octeon-* | mips64octeonel-* \ + | mips64orion-* | mips64orionel-* \ ++ | mips64r5900-* | mips64r5900el-* \ ++ | mips64vr-* | mips64vrel-* \ + | mips64vr4100-* | mips64vr4100el-* \ + | mips64vr4300-* | mips64vr4300el-* \ + | mips64vr5000-* | mips64vr5000el-* \ +@@ -357,21 +373,22 @@ + | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ + | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \ + | pyramid-* \ +- | romp-* | rs6000-* \ +- | sh-* | sh[1234]-* | sh[24]a-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ ++ | romp-* | rs6000-* | rx-* \ ++ | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ + | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ + | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ + | sparclite-* \ + | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | strongarm-* | sv1-* | sx?-* \ + | tahoe-* | thumb-* \ +- | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ ++ | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* | tile-* \ + | tron-* \ ++ | ubicom32-* \ + | v850-* | v850e-* | vax-* \ + | we32k-* \ + | x86-* | x86_64-* | xc16x-* | xps100-* | xscale-* | xscalee[bl]-* \ + | xstormy16-* | xtensa*-* \ + | ymp-* \ +- | z8k-*) ++ | z8k-* | z80-*) + ;; + # Recognize the basic CPU types without company name, with glob match. + xtensa*) +@@ -439,6 +456,10 @@ + basic_machine=m68k-apollo + os=-bsd + ;; ++ aros) ++ basic_machine=i386-pc ++ os=-aros ++ ;; + aux) + basic_machine=m68k-apple + os=-aux +@@ -455,10 +476,18 @@ + basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'` + os=-linux + ;; ++ bluegene*) ++ basic_machine=powerpc-ibm ++ os=-cnk ++ ;; + c90) + basic_machine=c90-cray + os=-unicos + ;; ++ cegcc) ++ basic_machine=arm-unknown ++ os=-cegcc ++ ;; + convex-c1) + basic_machine=c1-convex + os=-bsd +@@ -526,6 +555,10 @@ + basic_machine=m88k-motorola + os=-sysv3 + ;; ++ dicos) ++ basic_machine=i686-pc ++ os=-dicos ++ ;; + djgpp) + basic_machine=i586-pc + os=-msdosdjgpp +@@ -699,6 +732,9 @@ + basic_machine=ns32k-utek + os=-sysv + ;; ++ microblaze) ++ basic_machine=microblaze-xilinx ++ ;; + mingw32) + basic_machine=i386-pc + os=-mingw32 +@@ -1128,6 +1164,10 @@ + basic_machine=z8k-unknown + os=-sim + ;; ++ z80-*-coff) ++ basic_machine=z80-unknown ++ os=-sim ++ ;; + none) + basic_machine=none-none + os=-none +@@ -1166,7 +1206,7 @@ + we32k) + basic_machine=we32k-att + ;; +- sh[1234] | sh[24]a | sh[34]eb | sh[1234]le | sh[23]ele) ++ sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele) + basic_machine=sh-unknown + ;; + sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v) +@@ -1216,6 +1256,9 @@ + # First match some system type aliases + # that might get confused with valid system types. + # -solaris* is a basic system type, with this one exception. ++ -auroraux) ++ os=-auroraux ++ ;; + -solaris1 | -solaris1.*) + os=`echo $os | sed -e 's|solaris1|sunos4|'` + ;; +@@ -1236,10 +1279,11 @@ + # Each alternative MUST END IN A *, to match a version number. + # -sysv* is not here because it comes later, after sysvr4. + -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ +- | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\ +- | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \ ++ | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ ++ | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \ ++ | -sym* | -kopensolaris* \ + | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ +- | -aos* \ ++ | -aos* | -aros* \ + | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ + | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ + | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ +@@ -1248,7 +1292,7 @@ + | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ + | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ + | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ +- | -chorusos* | -chorusrdb* \ ++ | -chorusos* | -chorusrdb* | -cegcc* \ + | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ + | -mingw32* | -linux-gnu* | -linux-newlib* | -linux-uclibc* \ + | -uxpv* | -beos* | -mpeix* | -udk* \ +@@ -1258,7 +1302,7 @@ + | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ + | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ + | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ +- | -skyos* | -haiku* | -rdos* | -toppers* | -drops*) ++ | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es*) + # Remember, each alternative MUST END IN *, to match a version number. + ;; + -qnx*) +@@ -1388,6 +1432,9 @@ + -zvmoe) + os=-zvmoe + ;; ++ -dicos*) ++ os=-dicos ++ ;; + -none) + ;; + *) +@@ -1585,7 +1632,7 @@ + -sunos*) + vendor=sun + ;; +- -aix*) ++ -cnk*|-aix*) + vendor=ibm + ;; + -beos*) +diff -Nur fontconfig-2.8.0-orig/configure fontconfig-2.8.0-config/configure +--- fontconfig-2.8.0-orig/configure 2009-11-18 15:49:41.000000000 -0800 ++++ fontconfig-2.8.0-config/configure 2012-01-06 13:29:52.114746556 -0800 +@@ -1,18 +1,22 @@ + #! /bin/sh + # Guess values for system-dependent variables and create Makefiles. +-# Generated by GNU Autoconf 2.63. ++# Generated by GNU Autoconf 2.66. ++# + # + # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, +-# 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. ++# 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software ++# Foundation, Inc. ++# ++# + # This configure script is free software; the Free Software Foundation + # gives unlimited permission to copy, distribute and modify it. +-## --------------------- ## +-## M4sh Initialization. ## +-## --------------------- ## ++## -------------------- ## ++## M4sh Initialization. ## ++## -------------------- ## + + # Be more Bourne compatible + DUALCASE=1; export DUALCASE # for MKS sh +-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then ++if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which +@@ -20,23 +24,15 @@ + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST + else +- case `(set -o) 2>/dev/null` in +- *posix*) set -o posix ;; ++ case `(set -o) 2>/dev/null` in #( ++ *posix*) : ++ set -o posix ;; #( ++ *) : ++ ;; + esac +- + fi + + +- +- +-# PATH needs CR +-# Avoid depending upon Character Ranges. +-as_cr_letters='abcdefghijklmnopqrstuvwxyz' +-as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +-as_cr_Letters=$as_cr_letters$as_cr_LETTERS +-as_cr_digits='0123456789' +-as_cr_alnum=$as_cr_Letters$as_cr_digits +- + as_nl=' + ' + export as_nl +@@ -44,7 +40,13 @@ + as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' + as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo + as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo +-if (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then ++# Prefer a ksh shell builtin over an external printf program on Solaris, ++# but without wasting forks for bash or zsh. ++if test -z "$BASH_VERSION$ZSH_VERSION" \ ++ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then ++ as_echo='print -r --' ++ as_echo_n='print -rn --' ++elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='printf %s\n' + as_echo_n='printf %s' + else +@@ -55,7 +57,7 @@ + as_echo_body='eval expr "X$1" : "X\\(.*\\)"' + as_echo_n_body='eval + arg=$1; +- case $arg in ++ case $arg in #( + *"$as_nl"*) + expr "X$arg" : "X\\(.*\\)$as_nl"; + arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; +@@ -78,13 +80,6 @@ + } + fi + +-# Support unset when possible. +-if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then +- as_unset=unset +-else +- as_unset=false +-fi +- + + # IFS + # We need space, tab and new line, in precisely that order. Quoting is +@@ -94,15 +89,15 @@ + IFS=" "" $as_nl" + + # Find who we are. Look in the path if we contain no directory separator. +-case $0 in ++case $0 in #(( + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR + for as_dir in $PATH + do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. +- test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break +-done ++ test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break ++ done + IFS=$as_save_IFS + + ;; +@@ -114,12 +109,16 @@ + fi + if test ! -f "$as_myself"; then + $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 +- { (exit 1); exit 1; } ++ exit 1 + fi + +-# Work around bugs in pre-3.0 UWIN ksh. +-for as_var in ENV MAIL MAILPATH +-do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var ++# Unset variables that we do not need and which cause bugs (e.g. in ++# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" ++# suppresses any "Segmentation fault" message there. '((' could ++# trigger a bug in pdksh 5.2.14. ++for as_var in BASH_ENV ENV MAIL MAILPATH ++do eval test x\${$as_var+set} = xset \ ++ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : + done + PS1='$ ' + PS2='> ' +@@ -131,330 +130,307 @@ + LANGUAGE=C + export LANGUAGE + +-# Required to use basename. +-if expr a : '\(a\)' >/dev/null 2>&1 && +- test "X`expr 00001 : '.*\(...\)'`" = X001; then +- as_expr=expr +-else +- as_expr=false +-fi +- +-if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then +- as_basename=basename +-else +- as_basename=false +-fi +- +- +-# Name of the executable. +-as_me=`$as_basename -- "$0" || +-$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ +- X"$0" : 'X\(//\)$' \| \ +- X"$0" : 'X\(/\)' \| . 2>/dev/null || +-$as_echo X/"$0" | +- sed '/^.*\/\([^/][^/]*\)\/*$/{ +- s//\1/ +- q +- } +- /^X\/\(\/\/\)$/{ +- s//\1/ +- q +- } +- /^X\/\(\/\).*/{ +- s//\1/ +- q +- } +- s/.*/./; q'` +- + # CDPATH. +-$as_unset CDPATH +- ++(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + + if test "x$CONFIG_SHELL" = x; then +- if (eval ":") 2>/dev/null; then +- as_have_required=yes ++ as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : ++ emulate sh ++ NULLCMD=: ++ # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which ++ # is contrary to our usage. Disable this feature. ++ alias -g '\${1+\"\$@\"}'='\"\$@\"' ++ setopt NO_GLOB_SUBST + else +- as_have_required=no ++ case \`(set -o) 2>/dev/null\` in #( ++ *posix*) : ++ set -o posix ;; #( ++ *) : ++ ;; ++esac + fi +- +- if test $as_have_required = yes && (eval ": +-(as_func_return () { +- (exit \$1) +-} +-as_func_success () { +- as_func_return 0 +-} +-as_func_failure () { +- as_func_return 1 +-} +-as_func_ret_success () { +- return 0 +-} +-as_func_ret_failure () { +- return 1 +-} ++" ++ as_required="as_fn_return () { (exit \$1); } ++as_fn_success () { as_fn_return 0; } ++as_fn_failure () { as_fn_return 1; } ++as_fn_ret_success () { return 0; } ++as_fn_ret_failure () { return 1; } + + exitcode=0 +-if as_func_success; then +- : +-else +- exitcode=1 +- echo as_func_success failed. +-fi +- +-if as_func_failure; then +- exitcode=1 +- echo as_func_failure succeeded. +-fi +- +-if as_func_ret_success; then +- : +-else +- exitcode=1 +- echo as_func_ret_success failed. +-fi +- +-if as_func_ret_failure; then +- exitcode=1 +- echo as_func_ret_failure succeeded. +-fi +- +-if ( set x; as_func_ret_success y && test x = \"\$1\" ); then +- : ++as_fn_success || { exitcode=1; echo as_fn_success failed.; } ++as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } ++as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } ++as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } ++if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : ++ ++else ++ exitcode=1; echo positional parameters were not saved. ++fi ++test x\$exitcode = x0 || exit 1" ++ as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO ++ as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO ++ eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && ++ test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 ++ ++ test -n \"\${ZSH_VERSION+set}\${BASH_VERSION+set}\" || ( ++ ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' ++ ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO ++ ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO ++ PATH=/empty FPATH=/empty; export PATH FPATH ++ test \"X\`printf %s \$ECHO\`\" = \"X\$ECHO\" \\ ++ || test \"X\`print -r -- \$ECHO\`\" = \"X\$ECHO\" ) || exit 1 ++test \$(( 1 + 1 )) = 2 || exit 1" ++ if (eval "$as_required") 2>/dev/null; then : ++ as_have_required=yes + else +- exitcode=1 +- echo positional parameters were not saved. ++ as_have_required=no + fi ++ if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : + +-test \$exitcode = 0) || { (exit 1); exit 1; } +- +-( +- as_lineno_1=\$LINENO +- as_lineno_2=\$LINENO +- test \"x\$as_lineno_1\" != \"x\$as_lineno_2\" && +- test \"x\`expr \$as_lineno_1 + 1\`\" = \"x\$as_lineno_2\") || { (exit 1); exit 1; } +-") 2> /dev/null; then +- : + else +- as_candidate_shells= +- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++as_found=false + for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH + do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. +- case $as_dir in ++ as_found=: ++ case $as_dir in #( + /*) + for as_base in sh bash ksh sh5; do +- as_candidate_shells="$as_candidate_shells $as_dir/$as_base" ++ # Try only shells that exist, to save several forks. ++ as_shell=$as_dir/$as_base ++ if { test -f "$as_shell" || test -f "$as_shell.exe"; } && ++ { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : ++ CONFIG_SHELL=$as_shell as_have_required=yes ++ if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : ++ break 2 ++fi ++fi + done;; + esac ++ as_found=false + done ++$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && ++ { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : ++ CONFIG_SHELL=$SHELL as_have_required=yes ++fi; } + IFS=$as_save_IFS + + +- for as_shell in $as_candidate_shells $SHELL; do +- # Try only shells that exist, to save several forks. +- if { test -f "$as_shell" || test -f "$as_shell.exe"; } && +- { ("$as_shell") 2> /dev/null <<\_ASEOF +-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then +- emulate sh +- NULLCMD=: +- # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which +- # is contrary to our usage. Disable this feature. +- alias -g '${1+"$@"}'='"$@"' +- setopt NO_GLOB_SUBST +-else +- case `(set -o) 2>/dev/null` in +- *posix*) set -o posix ;; +-esac +- +-fi +- +- +-: +-_ASEOF +-}; then +- CONFIG_SHELL=$as_shell +- as_have_required=yes +- if { "$as_shell" 2> /dev/null <<\_ASEOF +-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then +- emulate sh +- NULLCMD=: +- # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which +- # is contrary to our usage. Disable this feature. +- alias -g '${1+"$@"}'='"$@"' +- setopt NO_GLOB_SUBST +-else +- case `(set -o) 2>/dev/null` in +- *posix*) set -o posix ;; +-esac +- +-fi +- +- +-: +-(as_func_return () { +- (exit $1) +-} +-as_func_success () { +- as_func_return 0 +-} +-as_func_failure () { +- as_func_return 1 +-} +-as_func_ret_success () { +- return 0 +-} +-as_func_ret_failure () { +- return 1 +-} +- +-exitcode=0 +-if as_func_success; then +- : +-else +- exitcode=1 +- echo as_func_success failed. +-fi +- +-if as_func_failure; then +- exitcode=1 +- echo as_func_failure succeeded. +-fi +- +-if as_func_ret_success; then +- : +-else +- exitcode=1 +- echo as_func_ret_success failed. +-fi +- +-if as_func_ret_failure; then +- exitcode=1 +- echo as_func_ret_failure succeeded. +-fi +- +-if ( set x; as_func_ret_success y && test x = "$1" ); then +- : +-else +- exitcode=1 +- echo positional parameters were not saved. +-fi +- +-test $exitcode = 0) || { (exit 1); exit 1; } +- +-( +- as_lineno_1=$LINENO +- as_lineno_2=$LINENO +- test "x$as_lineno_1" != "x$as_lineno_2" && +- test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2") || { (exit 1); exit 1; } +- +-_ASEOF +-}; then +- break +-fi +- +-fi +- +- done +- +- if test "x$CONFIG_SHELL" != x; then +- for as_var in BASH_ENV ENV +- do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var +- done ++ if test "x$CONFIG_SHELL" != x; then : ++ # We cannot yet assume a decent shell, so we have to provide a ++ # neutralization value for shells without unset; and this also ++ # works around shells that cannot unset nonexistent variables. ++ BASH_ENV=/dev/null ++ ENV=/dev/null ++ (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV + export CONFIG_SHELL + exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"} + fi + +- +- if test $as_have_required = no; then +- echo This script requires a shell more modern than all the +- echo shells that I found on your system. Please install a +- echo modern shell, or manually run the script under such a +- echo shell if you do have one. +- { (exit 1); exit 1; } ++ if test x$as_have_required = xno; then : ++ $as_echo "$0: This script requires a shell more modern than all" ++ $as_echo "$0: the shells that I found on your system." ++ if test x${ZSH_VERSION+set} = xset ; then ++ $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" ++ $as_echo "$0: be upgraded to zsh 4.3.4 or later." ++ else ++ $as_echo "$0: Please tell bug-autoconf@gnu.org about your system, ++$0: including any error possibly output before this ++$0: message. Then install a modern shell, or manually run ++$0: the script under such a shell if you do have one." ++ fi ++ exit 1 + fi +- +- + fi +- + fi ++SHELL=${CONFIG_SHELL-/bin/sh} ++export SHELL ++# Unset more variables known to interfere with behavior of common tools. ++CLICOLOR_FORCE= GREP_OPTIONS= ++unset CLICOLOR_FORCE GREP_OPTIONS + ++## --------------------- ## ++## M4sh Shell Functions. ## ++## --------------------- ## ++# as_fn_unset VAR ++# --------------- ++# Portably unset VAR. ++as_fn_unset () ++{ ++ { eval $1=; unset $1;} ++} ++as_unset=as_fn_unset ++ ++# as_fn_set_status STATUS ++# ----------------------- ++# Set $? to STATUS, without forking. ++as_fn_set_status () ++{ ++ return $1 ++} # as_fn_set_status ++ ++# as_fn_exit STATUS ++# ----------------- ++# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. ++as_fn_exit () ++{ ++ set +e ++ as_fn_set_status $1 ++ exit $1 ++} # as_fn_exit ++ ++# as_fn_mkdir_p ++# ------------- ++# Create "$as_dir" as a directory, including parents if necessary. ++as_fn_mkdir_p () ++{ ++ ++ case $as_dir in #( ++ -*) as_dir=./$as_dir;; ++ esac ++ test -d "$as_dir" || eval $as_mkdir_p || { ++ as_dirs= ++ while :; do ++ case $as_dir in #( ++ *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( ++ *) as_qdir=$as_dir;; ++ esac ++ as_dirs="'$as_qdir' $as_dirs" ++ as_dir=`$as_dirname -- "$as_dir" || ++$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ ++ X"$as_dir" : 'X\(//\)[^/]' \| \ ++ X"$as_dir" : 'X\(//\)$' \| \ ++ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || ++$as_echo X"$as_dir" | ++ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)[^/].*/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\).*/{ ++ s//\1/ ++ q ++ } ++ s/.*/./; q'` ++ test -d "$as_dir" && break ++ done ++ test -z "$as_dirs" || eval "mkdir $as_dirs" ++ } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +-(eval "as_func_return () { +- (exit \$1) +-} +-as_func_success () { +- as_func_return 0 +-} +-as_func_failure () { +- as_func_return 1 +-} +-as_func_ret_success () { +- return 0 +-} +-as_func_ret_failure () { +- return 1 +-} ++} # as_fn_mkdir_p ++# as_fn_append VAR VALUE ++# ---------------------- ++# Append the text in VALUE to the end of the definition contained in VAR. Take ++# advantage of any shell optimizations that allow amortized linear growth over ++# repeated appends, instead of the typical quadratic growth present in naive ++# implementations. ++if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : ++ eval 'as_fn_append () ++ { ++ eval $1+=\$2 ++ }' ++else ++ as_fn_append () ++ { ++ eval $1=\$$1\$2 ++ } ++fi # as_fn_append + +-exitcode=0 +-if as_func_success; then +- : ++# as_fn_arith ARG... ++# ------------------ ++# Perform arithmetic evaluation on the ARGs, and store the result in the ++# global $as_val. Take advantage of shells that can avoid forks. The arguments ++# must be portable across $(()) and expr. ++if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : ++ eval 'as_fn_arith () ++ { ++ as_val=$(( $* )) ++ }' + else +- exitcode=1 +- echo as_func_success failed. +-fi ++ as_fn_arith () ++ { ++ as_val=`expr "$@" || test $? -eq 1` ++ } ++fi # as_fn_arith + +-if as_func_failure; then +- exitcode=1 +- echo as_func_failure succeeded. +-fi + +-if as_func_ret_success; then +- : ++# as_fn_error STATUS ERROR [LINENO LOG_FD] ++# ---------------------------------------- ++# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are ++# provided, also output the error to LOG_FD, referencing LINENO. Then exit the ++# script with STATUS, using 1 if that was 0. ++as_fn_error () ++{ ++ as_status=$1; test $as_status -eq 0 && as_status=1 ++ if test "$4"; then ++ as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack ++ $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 ++ fi ++ $as_echo "$as_me: error: $2" >&2 ++ as_fn_exit $as_status ++} # as_fn_error ++ ++if expr a : '\(a\)' >/dev/null 2>&1 && ++ test "X`expr 00001 : '.*\(...\)'`" = X001; then ++ as_expr=expr + else +- exitcode=1 +- echo as_func_ret_success failed. ++ as_expr=false + fi + +-if as_func_ret_failure; then +- exitcode=1 +- echo as_func_ret_failure succeeded. ++if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then ++ as_basename=basename ++else ++ as_basename=false + fi + +-if ( set x; as_func_ret_success y && test x = \"\$1\" ); then +- : ++if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then ++ as_dirname=dirname + else +- exitcode=1 +- echo positional parameters were not saved. ++ as_dirname=false + fi + +-test \$exitcode = 0") || { +- echo No shell found that supports shell functions. +- echo Please tell bug-autoconf@gnu.org about your system, +- echo including any error possibly output before this message. +- echo This can help us improve future autoconf versions. +- echo Configuration will now proceed without shell functions. +-} ++as_me=`$as_basename -- "$0" || ++$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ ++ X"$0" : 'X\(//\)$' \| \ ++ X"$0" : 'X\(/\)' \| . 2>/dev/null || ++$as_echo X/"$0" | ++ sed '/^.*\/\([^/][^/]*\)\/*$/{ ++ s//\1/ ++ q ++ } ++ /^X\/\(\/\/\)$/{ ++ s//\1/ ++ q ++ } ++ /^X\/\(\/\).*/{ ++ s//\1/ ++ q ++ } ++ s/.*/./; q'` + ++# Avoid depending upon Character Ranges. ++as_cr_letters='abcdefghijklmnopqrstuvwxyz' ++as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' ++as_cr_Letters=$as_cr_letters$as_cr_LETTERS ++as_cr_digits='0123456789' ++as_cr_alnum=$as_cr_Letters$as_cr_digits + + +- as_lineno_1=$LINENO +- as_lineno_2=$LINENO +- test "x$as_lineno_1" != "x$as_lineno_2" && +- test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || { +- +- # Create $as_me.lineno as a copy of $as_myself, but with $LINENO +- # uniformly replaced by the line number. The first 'sed' inserts a +- # line-number line after each line using $LINENO; the second 'sed' +- # does the real work. The second script uses 'N' to pair each +- # line-number line with the line containing $LINENO, and appends +- # trailing '-' during substitution so that $LINENO is not a special +- # case at line end. +- # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the +- # scripts with optimization help from Paolo Bonzini. Blame Lee +- # E. McMahon (1931-1989) for sed's syntax. :-) ++ as_lineno_1=$LINENO as_lineno_1a=$LINENO ++ as_lineno_2=$LINENO as_lineno_2a=$LINENO ++ eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && ++ test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { ++ # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) + sed -n ' + p + /[$]LINENO/= +@@ -471,8 +447,7 @@ + s/-\n.*// + ' >$as_me.lineno && + chmod +x "$as_me.lineno" || +- { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 +- { (exit 1); exit 1; }; } ++ { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } + + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the +@@ -482,29 +457,18 @@ + exit + } + +- +-if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then +- as_dirname=dirname +-else +- as_dirname=false +-fi +- + ECHO_C= ECHO_N= ECHO_T= +-case `echo -n x` in ++case `echo -n x` in #((((( + -n*) +- case `echo 'x\c'` in ++ case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. +- *) ECHO_C='\c';; ++ xy) ECHO_C='\c';; ++ *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ++ ECHO_T=' ';; + esac;; + *) + ECHO_N='-n';; + esac +-if expr a : '\(a\)' >/dev/null 2>&1 && +- test "X`expr 00001 : '.*\(...\)'`" = X001; then +- as_expr=expr +-else +- as_expr=false +-fi + + rm -f conf$$ conf$$.exe conf$$.file + if test -d conf$$.dir; then +@@ -534,7 +498,7 @@ + rmdir conf$$.dir 2>/dev/null + + if mkdir -p . 2>/dev/null; then +- as_mkdir_p=: ++ as_mkdir_p='mkdir -p "$as_dir"' + else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +@@ -553,10 +517,10 @@ + if test -d "$1"; then + test -d "$1/."; + else +- case $1 in ++ case $1 in #( + -*)set "./$1";; + esac; +- case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in ++ case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #(( + ???[sx]*):;;*)false;;esac;fi + '\'' sh + ' +@@ -569,161 +533,14 @@ + # Sed expression to map a string onto a valid variable name. + as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + +- +- +- +-# Check that we are running under the correct shell. + SHELL=${CONFIG_SHELL-/bin/sh} + +-case X$lt_ECHO in +-X*--fallback-echo) +- # Remove one level of quotation (which was required for Make). +- ECHO=`echo "$lt_ECHO" | sed 's,\\\\\$\\$0,'$0','` +- ;; +-esac +- +-ECHO=${lt_ECHO-echo} +-if test "X$1" = X--no-reexec; then +- # Discard the --no-reexec flag, and continue. +- shift +-elif test "X$1" = X--fallback-echo; then +- # Avoid inline document here, it may be left over +- : +-elif test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' ; then +- # Yippee, $ECHO works! +- : +-else +- # Restart under the correct shell. +- exec $SHELL "$0" --no-reexec ${1+"$@"} +-fi +- +-if test "X$1" = X--fallback-echo; then +- # used as fallback echo +- shift +- cat <<_LT_EOF +-$* +-_LT_EOF +- exit 0 +-fi +- +-# The HP-UX ksh and POSIX shell print the target directory to stdout +-# if CDPATH is set. +-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH +- +-if test -z "$lt_ECHO"; then +- if test "X${echo_test_string+set}" != Xset; then +- # find a string as large as possible, as long as the shell can cope with it +- for cmd in 'sed 50q "$0"' 'sed 20q "$0"' 'sed 10q "$0"' 'sed 2q "$0"' 'echo test'; do +- # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ... +- if { echo_test_string=`eval $cmd`; } 2>/dev/null && +- { test "X$echo_test_string" = "X$echo_test_string"; } 2>/dev/null +- then +- break +- fi +- done +- fi +- +- if test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' && +- echo_testing_string=`{ $ECHO "$echo_test_string"; } 2>/dev/null` && +- test "X$echo_testing_string" = "X$echo_test_string"; then +- : +- else +- # The Solaris, AIX, and Digital Unix default echo programs unquote +- # backslashes. This makes it impossible to quote backslashes using +- # echo "$something" | sed 's/\\/\\\\/g' +- # +- # So, first we look for a working echo in the user's PATH. +- +- lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR +- for dir in $PATH /usr/ucb; do +- IFS="$lt_save_ifs" +- if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && +- test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && +- echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` && +- test "X$echo_testing_string" = "X$echo_test_string"; then +- ECHO="$dir/echo" +- break +- fi +- done +- IFS="$lt_save_ifs" +- +- if test "X$ECHO" = Xecho; then +- # We didn't find a better echo, so look for alternatives. +- if test "X`{ print -r '\t'; } 2>/dev/null`" = 'X\t' && +- echo_testing_string=`{ print -r "$echo_test_string"; } 2>/dev/null` && +- test "X$echo_testing_string" = "X$echo_test_string"; then +- # This shell has a builtin print -r that does the trick. +- ECHO='print -r' +- elif { test -f /bin/ksh || test -f /bin/ksh$ac_exeext; } && +- test "X$CONFIG_SHELL" != X/bin/ksh; then +- # If we have ksh, try running configure again with it. +- ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} +- export ORIGINAL_CONFIG_SHELL +- CONFIG_SHELL=/bin/ksh +- export CONFIG_SHELL +- exec $CONFIG_SHELL "$0" --no-reexec ${1+"$@"} +- else +- # Try using printf. +- ECHO='printf %s\n' +- if test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' && +- echo_testing_string=`{ $ECHO "$echo_test_string"; } 2>/dev/null` && +- test "X$echo_testing_string" = "X$echo_test_string"; then +- # Cool, printf works +- : +- elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` && +- test "X$echo_testing_string" = 'X\t' && +- echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` && +- test "X$echo_testing_string" = "X$echo_test_string"; then +- CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL +- export CONFIG_SHELL +- SHELL="$CONFIG_SHELL" +- export SHELL +- ECHO="$CONFIG_SHELL $0 --fallback-echo" +- elif echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` && +- test "X$echo_testing_string" = 'X\t' && +- echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` && +- test "X$echo_testing_string" = "X$echo_test_string"; then +- ECHO="$CONFIG_SHELL $0 --fallback-echo" +- else +- # maybe with a smaller string... +- prev=: +- +- for cmd in 'echo test' 'sed 2q "$0"' 'sed 10q "$0"' 'sed 20q "$0"' 'sed 50q "$0"'; do +- if { test "X$echo_test_string" = "X`eval $cmd`"; } 2>/dev/null +- then +- break +- fi +- prev="$cmd" +- done +- +- if test "$prev" != 'sed 50q "$0"'; then +- echo_test_string=`eval $prev` +- export echo_test_string +- exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "$0" ${1+"$@"} +- else +- # Oops. We lost completely, so just stick with echo. +- ECHO=echo +- fi +- fi +- fi +- fi +- fi +-fi +- +-# Copy echo and quote the copy suitably for passing to libtool from +-# the Makefile, instead of quoting the original, which is used later. +-lt_ECHO=$ECHO +-if test "X$lt_ECHO" = "X$CONFIG_SHELL $0 --fallback-echo"; then +- lt_ECHO="$CONFIG_SHELL \\\$\$0 --fallback-echo" +-fi +- +- + +- +-exec 7<&0 &1 ++test -n "$DJDIR" || exec 7<&0 &1 + + # Name of the host. +-# hostname on some systems (SVR3.2, Linux) returns a bogus exit status, ++# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, + # so uname gets run too. + ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` + +@@ -738,7 +555,6 @@ + subdirs= + MFLAGS= + MAKEFLAGS= +-SHELL=${CONFIG_SHELL-/bin/sh} + + # Identity of this package. + PACKAGE_NAME= +@@ -746,6 +562,7 @@ + PACKAGE_VERSION= + PACKAGE_STRING= + PACKAGE_BUGREPORT= ++PACKAGE_URL= + + ac_unique_file="fonts.dtd" + # Factoring default headers for most tests. +@@ -784,6 +601,7 @@ + # include + #endif" + ++ac_header_list= + ac_subst_vars='am__EXEEXT_FALSE + am__EXEEXT_TRUE + LTLIBOBJS +@@ -795,6 +613,8 @@ + USEDOCBOOK_FALSE + USEDOCBOOK_TRUE + HASDOCBOOK ++FCPATH ++fcpath + CONFDIR + confdir + FC_FONTDATE +@@ -805,6 +625,8 @@ + FC_DEFAULT_FONTS + LIBXML2_LIBS + LIBXML2_CFLAGS ++PKG_CONFIG_LIBDIR ++PKG_CONFIG_PATH + PKG_CONFIG + EXPAT_LIBS + EXPAT_CFLAGS +@@ -823,6 +645,8 @@ + MS_LIB_AVAILABLE_FALSE + MS_LIB_AVAILABLE_TRUE + ms_librarian ++OS_WIN32_ENABLE_SHARED_FALSE ++OS_WIN32_ENABLE_SHARED_TRUE + OS_WIN32_FALSE + OS_WIN32_TRUE + LTCXXCOMPILE +@@ -834,7 +658,6 @@ + LIPO + NMEDIT + DSYMUTIL +-lt_ECHO + RANLIB + AR + NM +@@ -936,6 +759,7 @@ + program_transform_name + prefix + exec_prefix ++PACKAGE_URL + PACKAGE_BUGREPORT + PACKAGE_STRING + PACKAGE_VERSION +@@ -965,6 +789,7 @@ + with_add_fonts + with_cache_dir + with_confdir ++with_fcpath + enable_docs + ' + ac_precious_vars='build_alias +@@ -977,6 +802,8 @@ + CPPFLAGS + CPP + PKG_CONFIG ++PKG_CONFIG_PATH ++PKG_CONFIG_LIBDIR + LIBXML2_CFLAGS + LIBXML2_LIBS' + +@@ -1087,8 +914,7 @@ + ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && +- { $as_echo "$as_me: error: invalid feature name: $ac_useropt" >&2 +- { (exit 1); exit 1; }; } ++ as_fn_error $? "invalid feature name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in +@@ -1114,8 +940,7 @@ + ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && +- { $as_echo "$as_me: error: invalid feature name: $ac_useropt" >&2 +- { (exit 1); exit 1; }; } ++ as_fn_error $? "invalid feature name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in +@@ -1319,8 +1144,7 @@ + ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && +- { $as_echo "$as_me: error: invalid package name: $ac_useropt" >&2 +- { (exit 1); exit 1; }; } ++ as_fn_error $? "invalid package name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in +@@ -1336,8 +1160,7 @@ + ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && +- { $as_echo "$as_me: error: invalid package name: $ac_useropt" >&2 +- { (exit 1); exit 1; }; } ++ as_fn_error $? "invalid package name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in +@@ -1367,17 +1190,17 @@ + | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) + x_libraries=$ac_optarg ;; + +- -*) { $as_echo "$as_me: error: unrecognized option: $ac_option +-Try \`$0 --help' for more information." >&2 +- { (exit 1); exit 1; }; } ++ -*) as_fn_error $? "unrecognized option: \`$ac_option' ++Try \`$0 --help' for more information" + ;; + + *=*) + ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` + # Reject names that are not valid shell variable names. +- expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && +- { $as_echo "$as_me: error: invalid variable name: $ac_envvar" >&2 +- { (exit 1); exit 1; }; } ++ case $ac_envvar in #( ++ '' | [0-9]* | *[!_$as_cr_alnum]* ) ++ as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; ++ esac + eval $ac_envvar=\$ac_optarg + export $ac_envvar ;; + +@@ -1394,15 +1217,13 @@ + + if test -n "$ac_prev"; then + ac_option=--`echo $ac_prev | sed 's/_/-/g'` +- { $as_echo "$as_me: error: missing argument to $ac_option" >&2 +- { (exit 1); exit 1; }; } ++ as_fn_error $? "missing argument to $ac_option" + fi + + if test -n "$ac_unrecognized_opts"; then + case $enable_option_checking in + no) ;; +- fatal) { $as_echo "$as_me: error: unrecognized options: $ac_unrecognized_opts" >&2 +- { (exit 1); exit 1; }; } ;; ++ fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; + *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; + esac + fi +@@ -1425,8 +1246,7 @@ + [\\/$]* | ?:[\\/]* ) continue;; + NONE | '' ) case $ac_var in *prefix ) continue;; esac;; + esac +- { $as_echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 +- { (exit 1); exit 1; }; } ++ as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" + done + + # There might be people who depend on the old broken behavior: `$host' +@@ -1440,8 +1260,8 @@ + if test "x$host_alias" != x; then + if test "x$build_alias" = x; then + cross_compiling=maybe +- $as_echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host. +- If a cross compiler is detected then cross compile mode will be used." >&2 ++ $as_echo "$as_me: WARNING: if you wanted to set the --build type, don't use --host. ++ If a cross compiler is detected then cross compile mode will be used" >&2 + elif test "x$build_alias" != "x$host_alias"; then + cross_compiling=yes + fi +@@ -1456,11 +1276,9 @@ + ac_pwd=`pwd` && test -n "$ac_pwd" && + ac_ls_di=`ls -di .` && + ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || +- { $as_echo "$as_me: error: working directory cannot be determined" >&2 +- { (exit 1); exit 1; }; } ++ as_fn_error $? "working directory cannot be determined" + test "X$ac_ls_di" = "X$ac_pwd_ls_di" || +- { $as_echo "$as_me: error: pwd does not report name of working directory" >&2 +- { (exit 1); exit 1; }; } ++ as_fn_error $? "pwd does not report name of working directory" + + + # Find the source files, if location was not specified. +@@ -1499,13 +1317,11 @@ + fi + if test ! -r "$srcdir/$ac_unique_file"; then + test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." +- { $as_echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 +- { (exit 1); exit 1; }; } ++ as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" + fi + ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" + ac_abs_confdir=`( +- cd "$srcdir" && test -r "./$ac_unique_file" || { $as_echo "$as_me: error: $ac_msg" >&2 +- { (exit 1); exit 1; }; } ++ cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" + pwd)` + # When building in place, set srcdir=. + if test "$ac_abs_confdir" = "$ac_pwd"; then +@@ -1545,7 +1361,7 @@ + --help=short display options specific to this package + --help=recursive display the short help of all the included packages + -V, --version display version information and exit +- -q, --quiet, --silent do not print \`checking...' messages ++ -q, --quiet, --silent do not print \`checking ...' messages + --cache-file=FILE cache test results in FILE [disabled] + -C, --config-cache alias for \`--cache-file=config.cache' + -n, --no-create do not create output files +@@ -1636,6 +1452,7 @@ + --with-add-fonts=DIR1,DIR2,...Find additional fonts in DIR1,DIR2,... + --with-cache-dir=DIR Use DIR to store cache files (default LOCALSTATEDIR/cache/fontconfig) + --with-confdir=DIR Use DIR to store configuration files (default SYSCONFDIR/fonts) ++ --with-fcpath=DIR Use DIR to search for configuration files (default SYSCONFDIR/fonts) + + Some influential environment variables: + CC C compiler command +@@ -1643,10 +1460,14 @@ + LDFLAGS linker flags, e.g. -L if you have libraries in a + nonstandard directory + LIBS libraries to pass to the linker, e.g. -l +- CPPFLAGS C/C++/Objective C preprocessor flags, e.g. -I if ++ CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if + you have headers in a nonstandard directory + CPP C preprocessor + PKG_CONFIG path to pkg-config utility ++ PKG_CONFIG_PATH ++ directories to add to pkg-config's search path ++ PKG_CONFIG_LIBDIR ++ path overriding pkg-config's built-in search path + LIBXML2_CFLAGS + C compiler flags for LIBXML2, overriding pkg-config + LIBXML2_LIBS +@@ -1655,6 +1476,7 @@ + Use these variables to override the choices made by `configure' or to help + it to find libraries and programs with nonstandard names/locations. + ++Report bugs to the package provider. + _ACEOF + ac_status=$? + fi +@@ -1718,150 +1540,610 @@ + if $ac_init_version; then + cat <<\_ACEOF + configure +-generated by GNU Autoconf 2.63 ++generated by GNU Autoconf 2.66 + +-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, +-2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. ++Copyright (C) 2010 Free Software Foundation, Inc. + This configure script is free software; the Free Software Foundation + gives unlimited permission to copy, distribute and modify it. + _ACEOF + exit + fi +-cat >config.log <<_ACEOF +-This file contains any messages produced by compilers while +-running configure, to aid debugging if configure makes a mistake. + +-It was created by $as_me, which was +-generated by GNU Autoconf 2.63. Invocation command line was ++## ------------------------ ## ++## Autoconf initialization. ## ++## ------------------------ ## ++ ++# ac_fn_c_try_compile LINENO ++# -------------------------- ++# Try to compile conftest.$ac_ext, and return whether this succeeded. ++ac_fn_c_try_compile () ++{ ++ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack ++ rm -f conftest.$ac_objext ++ if { { ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" ++$as_echo "$ac_try_echo"; } >&5 ++ (eval "$ac_compile") 2>conftest.err ++ ac_status=$? ++ if test -s conftest.err; then ++ grep -v '^ *+' conftest.err >conftest.er1 ++ cat conftest.er1 >&5 ++ mv -f conftest.er1 conftest.err ++ fi ++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 ++ test $ac_status = 0; } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then : ++ ac_retval=0 ++else ++ $as_echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 + +- $ $0 $@ ++ ac_retval=1 ++fi ++ eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} ++ as_fn_set_status $ac_retval + +-_ACEOF +-exec 5>>config.log ++} # ac_fn_c_try_compile ++ ++# ac_fn_c_try_link LINENO ++# ----------------------- ++# Try to link conftest.$ac_ext, and return whether this succeeded. ++ac_fn_c_try_link () + { +-cat <<_ASUNAME +-## --------- ## +-## Platform. ## +-## --------- ## ++ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack ++ rm -f conftest.$ac_objext conftest$ac_exeext ++ if { { ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" ++$as_echo "$ac_try_echo"; } >&5 ++ (eval "$ac_link") 2>conftest.err ++ ac_status=$? ++ if test -s conftest.err; then ++ grep -v '^ *+' conftest.err >conftest.er1 ++ cat conftest.er1 >&5 ++ mv -f conftest.er1 conftest.err ++ fi ++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 ++ test $ac_status = 0; } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && { ++ test "$cross_compiling" = yes || ++ $as_test_x conftest$ac_exeext ++ }; then : ++ ac_retval=0 ++else ++ $as_echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 + +-hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` +-uname -m = `(uname -m) 2>/dev/null || echo unknown` +-uname -r = `(uname -r) 2>/dev/null || echo unknown` +-uname -s = `(uname -s) 2>/dev/null || echo unknown` +-uname -v = `(uname -v) 2>/dev/null || echo unknown` ++ ac_retval=1 ++fi ++ # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information ++ # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would ++ # interfere with the next link command; also delete a directory that is ++ # left behind by Apple's compiler. We do this before executing the actions. ++ rm -rf conftest.dSYM conftest_ipa8_conftest.oo ++ eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} ++ as_fn_set_status $ac_retval + +-/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` +-/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` ++} # ac_fn_c_try_link + +-/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` +-/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` +-/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` +-/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` +-/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` +-/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` +-/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` ++# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES ++# ------------------------------------------------------- ++# Tests whether HEADER exists and can be compiled using the include files in ++# INCLUDES, setting the cache variable VAR accordingly. ++ac_fn_c_check_header_compile () ++{ ++ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 ++$as_echo_n "checking for $2... " >&6; } ++if eval "test \"\${$3+set}\"" = set; then : ++ $as_echo_n "(cached) " >&6 ++else ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ ++$4 ++#include <$2> ++_ACEOF ++if ac_fn_c_try_compile "$LINENO"; then : ++ eval "$3=yes" ++else ++ eval "$3=no" ++fi ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++fi ++eval ac_res=\$$3 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 ++$as_echo "$ac_res" >&6; } ++ eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} + +-_ASUNAME ++} # ac_fn_c_check_header_compile + +-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +-for as_dir in $PATH +-do +- IFS=$as_save_IFS +- test -z "$as_dir" && as_dir=. +- $as_echo "PATH: $as_dir" +-done +-IFS=$as_save_IFS ++# ac_fn_c_try_cpp LINENO ++# ---------------------- ++# Try to preprocess conftest.$ac_ext, and return whether this succeeded. ++ac_fn_c_try_cpp () ++{ ++ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack ++ if { { ac_try="$ac_cpp conftest.$ac_ext" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" ++$as_echo "$ac_try_echo"; } >&5 ++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err ++ ac_status=$? ++ if test -s conftest.err; then ++ grep -v '^ *+' conftest.err >conftest.er1 ++ cat conftest.er1 >&5 ++ mv -f conftest.er1 conftest.err ++ fi ++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 ++ test $ac_status = 0; } >/dev/null && { ++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || ++ test ! -s conftest.err ++ }; then : ++ ac_retval=0 ++else ++ $as_echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 + +-} >&5 ++ ac_retval=1 ++fi ++ eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} ++ as_fn_set_status $ac_retval + +-cat >&5 <<_ACEOF ++} # ac_fn_c_try_cpp + ++# ac_fn_c_try_run LINENO ++# ---------------------- ++# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes ++# that executables *can* be run. ++ac_fn_c_try_run () ++{ ++ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack ++ if { { ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" ++$as_echo "$ac_try_echo"; } >&5 ++ (eval "$ac_link") 2>&5 ++ ac_status=$? ++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 ++ test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' ++ { { case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" ++$as_echo "$ac_try_echo"; } >&5 ++ (eval "$ac_try") 2>&5 ++ ac_status=$? ++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 ++ test $ac_status = 0; }; }; then : ++ ac_retval=0 ++else ++ $as_echo "$as_me: program exited with status $ac_status" >&5 ++ $as_echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 + +-## ----------- ## +-## Core tests. ## +-## ----------- ## ++ ac_retval=$ac_status ++fi ++ rm -rf conftest.dSYM conftest_ipa8_conftest.oo ++ eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} ++ as_fn_set_status $ac_retval + +-_ACEOF ++} # ac_fn_c_try_run + ++# ac_fn_c_check_func LINENO FUNC VAR ++# ---------------------------------- ++# Tests whether FUNC exists, setting the cache variable VAR accordingly ++ac_fn_c_check_func () ++{ ++ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 ++$as_echo_n "checking for $2... " >&6; } ++if eval "test \"\${$3+set}\"" = set; then : ++ $as_echo_n "(cached) " >&6 ++else ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ ++/* Define $2 to an innocuous variant, in case declares $2. ++ For example, HP-UX 11i declares gettimeofday. */ ++#define $2 innocuous_$2 + +-# Keep a trace of the command line. +-# Strip out --no-create and --no-recursion so they do not pile up. +-# Strip out --silent because we don't want to record it for future runs. +-# Also quote any args containing shell meta-characters. +-# Make two passes to allow for proper duplicate-argument suppression. +-ac_configure_args= +-ac_configure_args0= +-ac_configure_args1= +-ac_must_keep_next=false +-for ac_pass in 1 2 +-do +- for ac_arg +- do +- case $ac_arg in +- -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; +- -q | -quiet | --quiet | --quie | --qui | --qu | --q \ +- | -silent | --silent | --silen | --sile | --sil) +- continue ;; +- *\'*) +- ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; +- esac +- case $ac_pass in +- 1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;; +- 2) +- ac_configure_args1="$ac_configure_args1 '$ac_arg'" +- if test $ac_must_keep_next = true; then +- ac_must_keep_next=false # Got value, back to normal. +- else +- case $ac_arg in +- *=* | --config-cache | -C | -disable-* | --disable-* \ +- | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ +- | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ +- | -with-* | --with-* | -without-* | --without-* | --x) +- case "$ac_configure_args0 " in +- "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; +- esac +- ;; +- -* ) ac_must_keep_next=true ;; +- esac +- fi +- ac_configure_args="$ac_configure_args '$ac_arg'" +- ;; +- esac +- done +-done +-$as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; } +-$as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; } ++/* System header to define __stub macros and hopefully few prototypes, ++ which can conflict with char $2 (); below. ++ Prefer to if __STDC__ is defined, since ++ exists even on freestanding compilers. */ + +-# When interrupted or exit'd, cleanup temporary files, and complete +-# config.log. We remove comments because anyway the quotes in there +-# would cause problems or look ugly. +-# WARNING: Use '\'' to represent an apostrophe within the trap. +-# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. +-trap 'exit_status=$? +- # Save into config.log some information that might help in debugging. +- { +- echo ++#ifdef __STDC__ ++# include ++#else ++# include ++#endif + +- cat <<\_ASBOX +-## ---------------- ## +-## Cache variables. ## +-## ---------------- ## +-_ASBOX +- echo +- # The following way of writing the cache mishandles newlines in values, +-( +- for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do +- eval ac_val=\$$ac_var +- case $ac_val in #( +- *${as_nl}*) +- case $ac_var in #( +- *_cv_*) { $as_echo "$as_me:$LINENO: WARNING: cache variable $ac_var contains a newline" >&5 +-$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; ++#undef $2 ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char $2 (); ++/* The GNU C library defines this for functions which it implements ++ to always fail with ENOSYS. Some functions are actually named ++ something starting with __ and the normal name is an alias. */ ++#if defined __stub_$2 || defined __stub___$2 ++choke me ++#endif ++ ++int ++main () ++{ ++return $2 (); ++ ; ++ return 0; ++} ++_ACEOF ++if ac_fn_c_try_link "$LINENO"; then : ++ eval "$3=yes" ++else ++ eval "$3=no" ++fi ++rm -f core conftest.err conftest.$ac_objext \ ++ conftest$ac_exeext conftest.$ac_ext ++fi ++eval ac_res=\$$3 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 ++$as_echo "$ac_res" >&6; } ++ eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} ++ ++} # ac_fn_c_check_func ++ ++# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES ++# ------------------------------------------------------- ++# Tests whether HEADER exists, giving a warning if it cannot be compiled using ++# the include files in INCLUDES and setting the cache variable VAR ++# accordingly. ++ac_fn_c_check_header_mongrel () ++{ ++ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack ++ if eval "test \"\${$3+set}\"" = set; then : ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 ++$as_echo_n "checking for $2... " >&6; } ++if eval "test \"\${$3+set}\"" = set; then : ++ $as_echo_n "(cached) " >&6 ++fi ++eval ac_res=\$$3 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 ++$as_echo "$ac_res" >&6; } ++else ++ # Is the header compilable? ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 ++$as_echo_n "checking $2 usability... " >&6; } ++cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ ++$4 ++#include <$2> ++_ACEOF ++if ac_fn_c_try_compile "$LINENO"; then : ++ ac_header_compiler=yes ++else ++ ac_header_compiler=no ++fi ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 ++$as_echo "$ac_header_compiler" >&6; } ++ ++# Is the header present? ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 ++$as_echo_n "checking $2 presence... " >&6; } ++cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ ++#include <$2> ++_ACEOF ++if ac_fn_c_try_cpp "$LINENO"; then : ++ ac_header_preproc=yes ++else ++ ac_header_preproc=no ++fi ++rm -f conftest.err conftest.$ac_ext ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 ++$as_echo "$ac_header_preproc" >&6; } ++ ++# So? What about this header? ++case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #(( ++ yes:no: ) ++ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 ++$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} ++ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 ++$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} ++ ;; ++ no:yes:* ) ++ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 ++$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} ++ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 ++$as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} ++ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 ++$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} ++ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 ++$as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} ++ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 ++$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} ++ ;; ++esac ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 ++$as_echo_n "checking for $2... " >&6; } ++if eval "test \"\${$3+set}\"" = set; then : ++ $as_echo_n "(cached) " >&6 ++else ++ eval "$3=\$ac_header_compiler" ++fi ++eval ac_res=\$$3 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 ++$as_echo "$ac_res" >&6; } ++fi ++ eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} ++ ++} # ac_fn_c_check_header_mongrel ++ ++# ac_fn_c_check_type LINENO TYPE VAR INCLUDES ++# ------------------------------------------- ++# Tests whether TYPE exists after having included INCLUDES, setting cache ++# variable VAR accordingly. ++ac_fn_c_check_type () ++{ ++ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 ++$as_echo_n "checking for $2... " >&6; } ++if eval "test \"\${$3+set}\"" = set; then : ++ $as_echo_n "(cached) " >&6 ++else ++ eval "$3=no" ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ ++$4 ++int ++main () ++{ ++if (sizeof ($2)) ++ return 0; ++ ; ++ return 0; ++} ++_ACEOF ++if ac_fn_c_try_compile "$LINENO"; then : ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ ++$4 ++int ++main () ++{ ++if (sizeof (($2))) ++ return 0; ++ ; ++ return 0; ++} ++_ACEOF ++if ac_fn_c_try_compile "$LINENO"; then : ++ ++else ++ eval "$3=yes" ++fi ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++fi ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++fi ++eval ac_res=\$$3 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 ++$as_echo "$ac_res" >&6; } ++ eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} ++ ++} # ac_fn_c_check_type ++ ++# ac_fn_c_check_member LINENO AGGR MEMBER VAR INCLUDES ++# ---------------------------------------------------- ++# Tries to find if the field MEMBER exists in type AGGR, after including ++# INCLUDES, setting cache variable VAR accordingly. ++ac_fn_c_check_member () ++{ ++ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2.$3" >&5 ++$as_echo_n "checking for $2.$3... " >&6; } ++if eval "test \"\${$4+set}\"" = set; then : ++ $as_echo_n "(cached) " >&6 ++else ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ ++$5 ++int ++main () ++{ ++static $2 ac_aggr; ++if (ac_aggr.$3) ++return 0; ++ ; ++ return 0; ++} ++_ACEOF ++if ac_fn_c_try_compile "$LINENO"; then : ++ eval "$4=yes" ++else ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ ++$5 ++int ++main () ++{ ++static $2 ac_aggr; ++if (sizeof ac_aggr.$3) ++return 0; ++ ; ++ return 0; ++} ++_ACEOF ++if ac_fn_c_try_compile "$LINENO"; then : ++ eval "$4=yes" ++else ++ eval "$4=no" ++fi ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++fi ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++fi ++eval ac_res=\$$4 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 ++$as_echo "$ac_res" >&6; } ++ eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} ++ ++} # ac_fn_c_check_member ++cat >config.log <<_ACEOF ++This file contains any messages produced by compilers while ++running configure, to aid debugging if configure makes a mistake. ++ ++It was created by $as_me, which was ++generated by GNU Autoconf 2.66. Invocation command line was ++ ++ $ $0 $@ ++ ++_ACEOF ++exec 5>>config.log ++{ ++cat <<_ASUNAME ++## --------- ## ++## Platform. ## ++## --------- ## ++ ++hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` ++uname -m = `(uname -m) 2>/dev/null || echo unknown` ++uname -r = `(uname -r) 2>/dev/null || echo unknown` ++uname -s = `(uname -s) 2>/dev/null || echo unknown` ++uname -v = `(uname -v) 2>/dev/null || echo unknown` ++ ++/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` ++/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` ++ ++/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` ++/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` ++/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` ++/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` ++/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` ++/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` ++/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` ++ ++_ASUNAME ++ ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ $as_echo "PATH: $as_dir" ++ done ++IFS=$as_save_IFS ++ ++} >&5 ++ ++cat >&5 <<_ACEOF ++ ++ ++## ----------- ## ++## Core tests. ## ++## ----------- ## ++ ++_ACEOF ++ ++ ++# Keep a trace of the command line. ++# Strip out --no-create and --no-recursion so they do not pile up. ++# Strip out --silent because we don't want to record it for future runs. ++# Also quote any args containing shell meta-characters. ++# Make two passes to allow for proper duplicate-argument suppression. ++ac_configure_args= ++ac_configure_args0= ++ac_configure_args1= ++ac_must_keep_next=false ++for ac_pass in 1 2 ++do ++ for ac_arg ++ do ++ case $ac_arg in ++ -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; ++ -q | -quiet | --quiet | --quie | --qui | --qu | --q \ ++ | -silent | --silent | --silen | --sile | --sil) ++ continue ;; ++ *\'*) ++ ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; ++ esac ++ case $ac_pass in ++ 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; ++ 2) ++ as_fn_append ac_configure_args1 " '$ac_arg'" ++ if test $ac_must_keep_next = true; then ++ ac_must_keep_next=false # Got value, back to normal. ++ else ++ case $ac_arg in ++ *=* | --config-cache | -C | -disable-* | --disable-* \ ++ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ ++ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ ++ | -with-* | --with-* | -without-* | --without-* | --x) ++ case "$ac_configure_args0 " in ++ "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; ++ esac ++ ;; ++ -* ) ac_must_keep_next=true ;; ++ esac ++ fi ++ as_fn_append ac_configure_args " '$ac_arg'" ++ ;; ++ esac ++ done ++done ++{ ac_configure_args0=; unset ac_configure_args0;} ++{ ac_configure_args1=; unset ac_configure_args1;} ++ ++# When interrupted or exit'd, cleanup temporary files, and complete ++# config.log. We remove comments because anyway the quotes in there ++# would cause problems or look ugly. ++# WARNING: Use '\'' to represent an apostrophe within the trap. ++# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. ++trap 'exit_status=$? ++ # Save into config.log some information that might help in debugging. ++ { ++ echo ++ ++ $as_echo "## ---------------- ## ++## Cache variables. ## ++## ---------------- ##" ++ echo ++ # The following way of writing the cache mishandles newlines in values, ++( ++ for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do ++ eval ac_val=\$$ac_var ++ case $ac_val in #( ++ *${as_nl}*) ++ case $ac_var in #( ++ *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 ++$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( +- *) $as_unset $ac_var ;; ++ *) { eval $ac_var=; unset $ac_var;} ;; + esac ;; + esac + done +@@ -1880,11 +2162,9 @@ + ) + echo + +- cat <<\_ASBOX +-## ----------------- ## ++ $as_echo "## ----------------- ## + ## Output variables. ## +-## ----------------- ## +-_ASBOX ++## ----------------- ##" + echo + for ac_var in $ac_subst_vars + do +@@ -1897,11 +2177,9 @@ + echo + + if test -n "$ac_subst_files"; then +- cat <<\_ASBOX +-## ------------------- ## ++ $as_echo "## ------------------- ## + ## File substitutions. ## +-## ------------------- ## +-_ASBOX ++## ------------------- ##" + echo + for ac_var in $ac_subst_files + do +@@ -1915,11 +2193,9 @@ + fi + + if test -s confdefs.h; then +- cat <<\_ASBOX +-## ----------- ## ++ $as_echo "## ----------- ## + ## confdefs.h. ## +-## ----------- ## +-_ASBOX ++## ----------- ##" + echo + cat confdefs.h + echo +@@ -1933,46 +2209,53 @@ + exit $exit_status + ' 0 + for ac_signal in 1 2 13 15; do +- trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal ++ trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal + done + ac_signal=0 + + # confdefs.h avoids OS command line length limits that DEFS can exceed. + rm -f -r conftest* confdefs.h + ++$as_echo "/* confdefs.h */" > confdefs.h ++ + # Predefined preprocessor variables. + + cat >>confdefs.h <<_ACEOF + #define PACKAGE_NAME "$PACKAGE_NAME" + _ACEOF + +- + cat >>confdefs.h <<_ACEOF + #define PACKAGE_TARNAME "$PACKAGE_TARNAME" + _ACEOF + +- + cat >>confdefs.h <<_ACEOF + #define PACKAGE_VERSION "$PACKAGE_VERSION" + _ACEOF + +- + cat >>confdefs.h <<_ACEOF + #define PACKAGE_STRING "$PACKAGE_STRING" + _ACEOF + +- + cat >>confdefs.h <<_ACEOF + #define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" + _ACEOF + ++cat >>confdefs.h <<_ACEOF ++#define PACKAGE_URL "$PACKAGE_URL" ++_ACEOF ++ + + # Let the site file select an alternate cache file if it wants to. + # Prefer an explicitly selected file to automatically selected ones. + ac_site_file1=NONE + ac_site_file2=NONE + if test -n "$CONFIG_SITE"; then +- ac_site_file1=$CONFIG_SITE ++ # We do not want a PATH search for config.site. ++ case $CONFIG_SITE in #(( ++ -*) ac_site_file1=./$CONFIG_SITE;; ++ */*) ac_site_file1=$CONFIG_SITE;; ++ *) ac_site_file1=./$CONFIG_SITE;; ++ esac + elif test "x$prefix" != xNONE; then + ac_site_file1=$prefix/share/config.site + ac_site_file2=$prefix/etc/config.site +@@ -1983,19 +2266,23 @@ + for ac_site_file in "$ac_site_file1" "$ac_site_file2" + do + test "x$ac_site_file" = xNONE && continue +- if test -r "$ac_site_file"; then +- { $as_echo "$as_me:$LINENO: loading site script $ac_site_file" >&5 ++ if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 + $as_echo "$as_me: loading site script $ac_site_file" >&6;} + sed 's/^/| /' "$ac_site_file" >&5 +- . "$ac_site_file" ++ . "$ac_site_file" \ ++ || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 ++$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} ++as_fn_error $? "failed to load site script $ac_site_file ++See \`config.log' for more details" "$LINENO" 5; } + fi + done + + if test -r "$cache_file"; then +- # Some versions of bash will fail to source /dev/null (special +- # files actually), so we avoid doing that. +- if test -f "$cache_file"; then +- { $as_echo "$as_me:$LINENO: loading cache $cache_file" >&5 ++ # Some versions of bash will fail to source /dev/null (special files ++ # actually), so we avoid doing that. DJGPP emulates it as a regular file. ++ if test /dev/null != "$cache_file" && test -f "$cache_file"; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 + $as_echo "$as_me: loading cache $cache_file" >&6;} + case $cache_file in + [\\/]* | ?:[\\/]* ) . "$cache_file";; +@@ -2003,11 +2290,14 @@ + esac + fi + else +- { $as_echo "$as_me:$LINENO: creating cache $cache_file" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 + $as_echo "$as_me: creating cache $cache_file" >&6;} + >$cache_file + fi + ++as_fn_append ac_header_list " stdlib.h" ++as_fn_append ac_header_list " unistd.h" ++as_fn_append ac_header_list " sys/param.h" + # Check that the precious variables saved in the cache have kept the same + # value. + ac_cache_corrupted=false +@@ -2018,11 +2308,11 @@ + eval ac_new_val=\$ac_env_${ac_var}_value + case $ac_old_set,$ac_new_set in + set,) +- { $as_echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 + $as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,set) +- { $as_echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 + $as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,);; +@@ -2032,17 +2322,17 @@ + ac_old_val_w=`echo x $ac_old_val` + ac_new_val_w=`echo x $ac_new_val` + if test "$ac_old_val_w" != "$ac_new_val_w"; then +- { $as_echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 + $as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} + ac_cache_corrupted=: + else +- { $as_echo "$as_me:$LINENO: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 + $as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} + eval $ac_var=\$ac_old_val + fi +- { $as_echo "$as_me:$LINENO: former value: \`$ac_old_val'" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 + $as_echo "$as_me: former value: \`$ac_old_val'" >&2;} +- { $as_echo "$as_me:$LINENO: current value: \`$ac_new_val'" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 + $as_echo "$as_me: current value: \`$ac_new_val'" >&2;} + fi;; + esac +@@ -2054,35 +2344,20 @@ + esac + case " $ac_configure_args " in + *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. +- *) ac_configure_args="$ac_configure_args '$ac_arg'" ;; ++ *) as_fn_append ac_configure_args " '$ac_arg'" ;; + esac + fi + done + if $ac_cache_corrupted; then +- { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 + $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +- { $as_echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 + $as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} +- { { $as_echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5 +-$as_echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;} +- { (exit 1); exit 1; }; } ++ as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 + fi +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- ++## -------------------- ## ++## Main body of script. ## ++## -------------------- ## + + ac_ext=c + ac_cpp='$CPP $CPPFLAGS' +@@ -2112,9 +2387,7 @@ + fi + done + if test -z "$ac_aux_dir"; then +- { { $as_echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&5 +-$as_echo "$as_me: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&2;} +- { (exit 1); exit 1; }; } ++ as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5 + fi + + # These three variables are undocumented and unsupported, +@@ -2140,10 +2413,10 @@ + # OS/2's system install, which has a completely different semantic + # ./install, which can be erroneously created by make from ./install.sh. + # Reject install programs that cannot install multiple files. +-{ $as_echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 + $as_echo_n "checking for a BSD-compatible install... " >&6; } + if test -z "$INSTALL"; then +-if test "${ac_cv_path_install+set}" = set; then ++if test "${ac_cv_path_install+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +@@ -2151,11 +2424,11 @@ + do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. +- # Account for people who put trailing slashes in PATH elements. +-case $as_dir/ in +- ./ | .// | /cC/* | \ ++ # Account for people who put trailing slashes in PATH elements. ++case $as_dir/ in #(( ++ ./ | .// | /[cC]/* | \ + /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ +- ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \ ++ ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ + /usr/ucb/* ) ;; + *) + # OSF1 and SCO ODT 3.0 have their own names for install. +@@ -2192,7 +2465,7 @@ + ;; + esac + +-done ++ done + IFS=$as_save_IFS + + rm -rf conftest.one conftest.two conftest.dir +@@ -2208,7 +2481,7 @@ + INSTALL=$ac_install_sh + fi + fi +-{ $as_echo "$as_me:$LINENO: result: $INSTALL" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 + $as_echo "$INSTALL" >&6; } + + # Use test -z because SunOS4 sh mishandles braces in ${var-val}. +@@ -2219,7 +2492,7 @@ + + test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' + +-{ $as_echo "$as_me:$LINENO: checking whether build environment is sane" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 + $as_echo_n "checking whether build environment is sane... " >&6; } + # Just in case + sleep 1 +@@ -2230,15 +2503,11 @@ + ' + case `pwd` in + *[\\\"\#\$\&\'\`$am_lf]*) +- { { $as_echo "$as_me:$LINENO: error: unsafe absolute working directory name" >&5 +-$as_echo "$as_me: error: unsafe absolute working directory name" >&2;} +- { (exit 1); exit 1; }; };; ++ as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;; + esac + case $srcdir in + *[\\\"\#\$\&\'\`$am_lf\ \ ]*) +- { { $as_echo "$as_me:$LINENO: error: unsafe srcdir value: \`$srcdir'" >&5 +-$as_echo "$as_me: error: unsafe srcdir value: \`$srcdir'" >&2;} +- { (exit 1); exit 1; }; };; ++ as_fn_error $? "unsafe srcdir value: \`$srcdir'" "$LINENO" 5;; + esac + + # Do `set' in a subshell so we don't clobber the current shell's +@@ -2260,11 +2529,8 @@ + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". +- { { $as_echo "$as_me:$LINENO: error: ls -t appears to fail. Make sure there is not a broken +-alias in your environment" >&5 +-$as_echo "$as_me: error: ls -t appears to fail. Make sure there is not a broken +-alias in your environment" >&2;} +- { (exit 1); exit 1; }; } ++ as_fn_error $? "ls -t appears to fail. Make sure there is not a broken ++alias in your environment" "$LINENO" 5 + fi + + test "$2" = conftest.file +@@ -2273,13 +2539,10 @@ + # Ok. + : + else +- { { $as_echo "$as_me:$LINENO: error: newly created file is older than distributed files! +-Check your system clock" >&5 +-$as_echo "$as_me: error: newly created file is older than distributed files! +-Check your system clock" >&2;} +- { (exit 1); exit 1; }; } ++ as_fn_error $? "newly created file is older than distributed files! ++Check your system clock" "$LINENO" 5 + fi +-{ $as_echo "$as_me:$LINENO: result: yes" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 + $as_echo "yes" >&6; } + test "$program_prefix" != NONE && + program_transform_name="s&^&$program_prefix&;$program_transform_name" +@@ -2307,7 +2570,7 @@ + am_missing_run="$MISSING --run " + else + am_missing_run= +- { $as_echo "$as_me:$LINENO: WARNING: \`missing' script is too old or missing" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`missing' script is too old or missing" >&5 + $as_echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;} + fi + +@@ -2328,9 +2591,9 @@ + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. + set dummy ${ac_tool_prefix}strip; ac_word=$2 +-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 + $as_echo_n "checking for $ac_word... " >&6; } +-if test "${ac_cv_prog_STRIP+set}" = set; then ++if test "${ac_cv_prog_STRIP+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + if test -n "$STRIP"; then +@@ -2341,24 +2604,24 @@ + do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. +- for ac_exec_ext in '' $ac_executable_extensions; do ++ for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_STRIP="${ac_tool_prefix}strip" +- $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi + done +-done ++ done + IFS=$as_save_IFS + + fi + fi + STRIP=$ac_cv_prog_STRIP + if test -n "$STRIP"; then +- { $as_echo "$as_me:$LINENO: result: $STRIP" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 + $as_echo "$STRIP" >&6; } + else +- { $as_echo "$as_me:$LINENO: result: no" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + $as_echo "no" >&6; } + fi + +@@ -2368,9 +2631,9 @@ + ac_ct_STRIP=$STRIP + # Extract the first word of "strip", so it can be a program name with args. + set dummy strip; ac_word=$2 +-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 + $as_echo_n "checking for $ac_word... " >&6; } +-if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then ++if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + if test -n "$ac_ct_STRIP"; then +@@ -2381,24 +2644,24 @@ + do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. +- for ac_exec_ext in '' $ac_executable_extensions; do ++ for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_STRIP="strip" +- $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi + done +-done ++ done + IFS=$as_save_IFS + + fi + fi + ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP + if test -n "$ac_ct_STRIP"; then +- { $as_echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 + $as_echo "$ac_ct_STRIP" >&6; } + else +- { $as_echo "$as_me:$LINENO: result: no" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + $as_echo "no" >&6; } + fi + +@@ -2407,7 +2670,7 @@ + else + case $cross_compiling:$ac_tool_warned in + yes:) +-{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 + $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} + ac_tool_warned=yes ;; + esac +@@ -2420,10 +2683,10 @@ + fi + INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" + +-{ $as_echo "$as_me:$LINENO: checking for a thread-safe mkdir -p" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5 + $as_echo_n "checking for a thread-safe mkdir -p... " >&6; } + if test -z "$MKDIR_P"; then +- if test "${ac_cv_path_mkdir+set}" = set; then ++ if test "${ac_cv_path_mkdir+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +@@ -2431,7 +2694,7 @@ + do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. +- for ac_prog in mkdir gmkdir; do ++ for ac_prog in mkdir gmkdir; do + for ac_exec_ext in '' $ac_executable_extensions; do + { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; } || continue + case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( +@@ -2443,11 +2706,12 @@ + esac + done + done +-done ++ done + IFS=$as_save_IFS + + fi + ++ test -d ./--version && rmdir ./--version + if test "${ac_cv_path_mkdir+set}" = set; then + MKDIR_P="$ac_cv_path_mkdir -p" + else +@@ -2455,11 +2719,10 @@ + # value for MKDIR_P within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the value is a relative name. +- test -d ./--version && rmdir ./--version + MKDIR_P="$ac_install_sh -d" + fi + fi +-{ $as_echo "$as_me:$LINENO: result: $MKDIR_P" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 + $as_echo "$MKDIR_P" >&6; } + + mkdir_p="$MKDIR_P" +@@ -2472,9 +2735,9 @@ + do + # Extract the first word of "$ac_prog", so it can be a program name with args. + set dummy $ac_prog; ac_word=$2 +-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 + $as_echo_n "checking for $ac_word... " >&6; } +-if test "${ac_cv_prog_AWK+set}" = set; then ++if test "${ac_cv_prog_AWK+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + if test -n "$AWK"; then +@@ -2485,24 +2748,24 @@ + do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. +- for ac_exec_ext in '' $ac_executable_extensions; do ++ for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_AWK="$ac_prog" +- $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi + done +-done ++ done + IFS=$as_save_IFS + + fi + fi + AWK=$ac_cv_prog_AWK + if test -n "$AWK"; then +- { $as_echo "$as_me:$LINENO: result: $AWK" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 + $as_echo "$AWK" >&6; } + else +- { $as_echo "$as_me:$LINENO: result: no" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + $as_echo "no" >&6; } + fi + +@@ -2510,11 +2773,11 @@ + test -n "$AWK" && break + done + +-{ $as_echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 + $as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } + set x ${MAKE-make} + ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` +-if { as_var=ac_cv_prog_make_${ac_make}_set; eval "test \"\${$as_var+set}\" = set"; }; then ++if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\"" = set; then : + $as_echo_n "(cached) " >&6 + else + cat >conftest.make <<\_ACEOF +@@ -2522,7 +2785,7 @@ + all: + @echo '@@@%%%=$(MAKE)=@@@%%%' + _ACEOF +-# GNU make sometimes prints "make[1]: Entering...", which would confuse us. ++# GNU make sometimes prints "make[1]: Entering ...", which would confuse us. + case `${MAKE-make} -f conftest.make 2>/dev/null` in + *@@@%%%=?*=@@@%%%*) + eval ac_cv_prog_make_${ac_make}_set=yes;; +@@ -2532,11 +2795,11 @@ + rm -f conftest.make + fi + if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then +- { $as_echo "$as_me:$LINENO: result: yes" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 + $as_echo "yes" >&6; } + SET_MAKE= + else +- { $as_echo "$as_me:$LINENO: result: no" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + $as_echo "no" >&6; } + SET_MAKE="MAKE=${MAKE-make}" + fi +@@ -2556,9 +2819,7 @@ + am__isrc=' -I$(srcdir)' + # test to see if srcdir already configured + if test -f $srcdir/config.status; then +- { { $as_echo "$as_me:$LINENO: error: source directory already configured; run \"make distclean\" there first" >&5 +-$as_echo "$as_me: error: source directory already configured; run \"make distclean\" there first" >&2;} +- { (exit 1); exit 1; }; } ++ as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5 + fi + fi + +@@ -2615,7 +2876,7 @@ + + + # Check whether --enable-silent-rules was given. +-if test "${enable_silent_rules+set}" = set; then ++if test "${enable_silent_rules+set}" = set; then : + enableval=$enable_silent_rules; + fi + +@@ -2627,16 +2888,16 @@ + AM_BACKSLASH='\' + + +-{ $as_echo "$as_me:$LINENO: checking whether to enable maintainer-specific portions of Makefiles" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable maintainer-specific portions of Makefiles" >&5 + $as_echo_n "checking whether to enable maintainer-specific portions of Makefiles... " >&6; } + # Check whether --enable-maintainer-mode was given. +-if test "${enable_maintainer_mode+set}" = set; then ++if test "${enable_maintainer_mode+set}" = set; then : + enableval=$enable_maintainer_mode; USE_MAINTAINER_MODE=$enableval + else + USE_MAINTAINER_MODE=no + fi + +- { $as_echo "$as_me:$LINENO: result: $USE_MAINTAINER_MODE" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_MAINTAINER_MODE" >&5 + $as_echo "$USE_MAINTAINER_MODE" >&6; } + if test $USE_MAINTAINER_MODE = yes; then + MAINTAINER_MODE_TRUE= +@@ -2675,9 +2936,9 @@ + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. + set dummy ${ac_tool_prefix}gcc; ac_word=$2 +-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 + $as_echo_n "checking for $ac_word... " >&6; } +-if test "${ac_cv_prog_CC+set}" = set; then ++if test "${ac_cv_prog_CC+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + if test -n "$CC"; then +@@ -2688,24 +2949,24 @@ + do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. +- for ac_exec_ext in '' $ac_executable_extensions; do ++ for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_CC="${ac_tool_prefix}gcc" +- $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi + done +-done ++ done + IFS=$as_save_IFS + + fi + fi + CC=$ac_cv_prog_CC + if test -n "$CC"; then +- { $as_echo "$as_me:$LINENO: result: $CC" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 + $as_echo "$CC" >&6; } + else +- { $as_echo "$as_me:$LINENO: result: no" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + $as_echo "no" >&6; } + fi + +@@ -2715,9 +2976,9 @@ + ac_ct_CC=$CC + # Extract the first word of "gcc", so it can be a program name with args. + set dummy gcc; ac_word=$2 +-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 + $as_echo_n "checking for $ac_word... " >&6; } +-if test "${ac_cv_prog_ac_ct_CC+set}" = set; then ++if test "${ac_cv_prog_ac_ct_CC+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + if test -n "$ac_ct_CC"; then +@@ -2728,24 +2989,24 @@ + do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. +- for ac_exec_ext in '' $ac_executable_extensions; do ++ for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_CC="gcc" +- $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi + done +-done ++ done + IFS=$as_save_IFS + + fi + fi + ac_ct_CC=$ac_cv_prog_ac_ct_CC + if test -n "$ac_ct_CC"; then +- { $as_echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 + $as_echo "$ac_ct_CC" >&6; } + else +- { $as_echo "$as_me:$LINENO: result: no" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + $as_echo "no" >&6; } + fi + +@@ -2754,7 +3015,7 @@ + else + case $cross_compiling:$ac_tool_warned in + yes:) +-{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 + $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} + ac_tool_warned=yes ;; + esac +@@ -2768,9 +3029,9 @@ + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. + set dummy ${ac_tool_prefix}cc; ac_word=$2 +-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 + $as_echo_n "checking for $ac_word... " >&6; } +-if test "${ac_cv_prog_CC+set}" = set; then ++if test "${ac_cv_prog_CC+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + if test -n "$CC"; then +@@ -2781,24 +3042,24 @@ + do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. +- for ac_exec_ext in '' $ac_executable_extensions; do ++ for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_CC="${ac_tool_prefix}cc" +- $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi + done +-done ++ done + IFS=$as_save_IFS + + fi + fi + CC=$ac_cv_prog_CC + if test -n "$CC"; then +- { $as_echo "$as_me:$LINENO: result: $CC" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 + $as_echo "$CC" >&6; } + else +- { $as_echo "$as_me:$LINENO: result: no" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + $as_echo "no" >&6; } + fi + +@@ -2808,9 +3069,9 @@ + if test -z "$CC"; then + # Extract the first word of "cc", so it can be a program name with args. + set dummy cc; ac_word=$2 +-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 + $as_echo_n "checking for $ac_word... " >&6; } +-if test "${ac_cv_prog_CC+set}" = set; then ++if test "${ac_cv_prog_CC+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + if test -n "$CC"; then +@@ -2822,18 +3083,18 @@ + do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. +- for ac_exec_ext in '' $ac_executable_extensions; do ++ for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then + ac_prog_rejected=yes + continue + fi + ac_cv_prog_CC="cc" +- $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi + done +-done ++ done + IFS=$as_save_IFS + + if test $ac_prog_rejected = yes; then +@@ -2852,10 +3113,10 @@ + fi + CC=$ac_cv_prog_CC + if test -n "$CC"; then +- { $as_echo "$as_me:$LINENO: result: $CC" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 + $as_echo "$CC" >&6; } + else +- { $as_echo "$as_me:$LINENO: result: no" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + $as_echo "no" >&6; } + fi + +@@ -2867,9 +3128,9 @@ + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. + set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 + $as_echo_n "checking for $ac_word... " >&6; } +-if test "${ac_cv_prog_CC+set}" = set; then ++if test "${ac_cv_prog_CC+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + if test -n "$CC"; then +@@ -2880,24 +3141,24 @@ + do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. +- for ac_exec_ext in '' $ac_executable_extensions; do ++ for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_CC="$ac_tool_prefix$ac_prog" +- $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi + done +-done ++ done + IFS=$as_save_IFS + + fi + fi + CC=$ac_cv_prog_CC + if test -n "$CC"; then +- { $as_echo "$as_me:$LINENO: result: $CC" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 + $as_echo "$CC" >&6; } + else +- { $as_echo "$as_me:$LINENO: result: no" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + $as_echo "no" >&6; } + fi + +@@ -2911,9 +3172,9 @@ + do + # Extract the first word of "$ac_prog", so it can be a program name with args. + set dummy $ac_prog; ac_word=$2 +-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 + $as_echo_n "checking for $ac_word... " >&6; } +-if test "${ac_cv_prog_ac_ct_CC+set}" = set; then ++if test "${ac_cv_prog_ac_ct_CC+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + if test -n "$ac_ct_CC"; then +@@ -2924,24 +3185,24 @@ + do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. +- for ac_exec_ext in '' $ac_executable_extensions; do ++ for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_CC="$ac_prog" +- $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi + done +-done ++ done + IFS=$as_save_IFS + + fi + fi + ac_ct_CC=$ac_cv_prog_ac_ct_CC + if test -n "$ac_ct_CC"; then +- { $as_echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 + $as_echo "$ac_ct_CC" >&6; } + else +- { $as_echo "$as_me:$LINENO: result: no" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + $as_echo "no" >&6; } + fi + +@@ -2954,7 +3215,7 @@ + else + case $cross_compiling:$ac_tool_warned in + yes:) +-{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 + $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} + ac_tool_warned=yes ;; + esac +@@ -2965,57 +3226,37 @@ + fi + + +-test -z "$CC" && { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 ++test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 + $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +-{ { $as_echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH +-See \`config.log' for more details." >&5 +-$as_echo "$as_me: error: no acceptable C compiler found in \$PATH +-See \`config.log' for more details." >&2;} +- { (exit 1); exit 1; }; }; } ++as_fn_error $? "no acceptable C compiler found in \$PATH ++See \`config.log' for more details" "$LINENO" 5; } + + # Provide some information about the compiler. +-$as_echo "$as_me:$LINENO: checking for C compiler version" >&5 ++$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 + set X $ac_compile + ac_compiler=$2 +-{ (ac_try="$ac_compiler --version >&5" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_compiler --version >&5") 2>&5 +- ac_status=$? +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } +-{ (ac_try="$ac_compiler -v >&5" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_compiler -v >&5") 2>&5 +- ac_status=$? +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } +-{ (ac_try="$ac_compiler -V >&5" ++for ac_option in --version -v -V -qversion; do ++ { { ac_try="$ac_compiler $ac_option >&5" + case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; + esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_compiler -V >&5") 2>&5 ++eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" ++$as_echo "$ac_try_echo"; } >&5 ++ (eval "$ac_compiler $ac_option >&5") 2>conftest.err + ac_status=$? +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } ++ if test -s conftest.err; then ++ sed '10a\ ++... rest of stderr output deleted ... ++ 10q' conftest.err >conftest.er1 ++ cat conftest.er1 >&5 ++ fi ++ rm -f conftest.er1 conftest.err ++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 ++ test $ac_status = 0; } ++done + +-cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF ++cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + + int +@@ -3031,8 +3272,8 @@ + # Try to create an executable without -o first, disregard a.out. + # It will help us diagnose broken compilers, and finding out an intuition + # of exeext. +-{ $as_echo "$as_me:$LINENO: checking for C compiler default output file name" >&5 +-$as_echo_n "checking for C compiler default output file name... " >&6; } ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 ++$as_echo_n "checking whether the C compiler works... " >&6; } + ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` + + # The possible output files: +@@ -3048,17 +3289,17 @@ + done + rm -f $ac_rmfiles + +-if { (ac_try="$ac_link_default" ++if { { ac_try="$ac_link_default" + case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; + esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 ++eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" ++$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link_default") 2>&5 + ac_status=$? +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; then ++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 ++ test $ac_status = 0; }; then : + # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. + # So ignore a value of `no', otherwise this would lead to `EXEEXT = no' + # in a Makefile. We should not override ac_cv_exeext if it was cached, +@@ -3075,7 +3316,7 @@ + # certainly right. + break;; + *.* ) +- if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; ++ if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; + then :; else + ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + fi +@@ -3094,84 +3335,41 @@ + else + ac_file='' + fi +- +-{ $as_echo "$as_me:$LINENO: result: $ac_file" >&5 +-$as_echo "$ac_file" >&6; } +-if test -z "$ac_file"; then +- $as_echo "$as_me: failed program was:" >&5 ++if test -z "$ac_file"; then : ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++$as_echo "no" >&6; } ++$as_echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-{ { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 ++{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 + $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +-{ { $as_echo "$as_me:$LINENO: error: C compiler cannot create executables +-See \`config.log' for more details." >&5 +-$as_echo "$as_me: error: C compiler cannot create executables +-See \`config.log' for more details." >&2;} +- { (exit 77); exit 77; }; }; } ++as_fn_error 77 "C compiler cannot create executables ++See \`config.log' for more details" "$LINENO" 5; } ++else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 ++$as_echo "yes" >&6; } + fi +- ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 ++$as_echo_n "checking for C compiler default output file name... " >&6; } ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 ++$as_echo "$ac_file" >&6; } + ac_exeext=$ac_cv_exeext + +-# Check that the compiler produces executables we can run. If not, either +-# the compiler is broken, or we cross compile. +-{ $as_echo "$as_me:$LINENO: checking whether the C compiler works" >&5 +-$as_echo_n "checking whether the C compiler works... " >&6; } +-# FIXME: These cross compiler hacks should be removed for Autoconf 3.0 +-# If not cross compiling, check that we can run a simple program. +-if test "$cross_compiling" != yes; then +- if { ac_try='./$ac_file' +- { (case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_try") 2>&5 +- ac_status=$? +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- cross_compiling=no +- else +- if test "$cross_compiling" = maybe; then +- cross_compiling=yes +- else +- { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 +-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +-{ { $as_echo "$as_me:$LINENO: error: cannot run C compiled programs. +-If you meant to cross compile, use \`--host'. +-See \`config.log' for more details." >&5 +-$as_echo "$as_me: error: cannot run C compiled programs. +-If you meant to cross compile, use \`--host'. +-See \`config.log' for more details." >&2;} +- { (exit 1); exit 1; }; }; } +- fi +- fi +-fi +-{ $as_echo "$as_me:$LINENO: result: yes" >&5 +-$as_echo "yes" >&6; } +- + rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out + ac_clean_files=$ac_clean_files_save +-# Check that the compiler produces executables we can run. If not, either +-# the compiler is broken, or we cross compile. +-{ $as_echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 +-$as_echo_n "checking whether we are cross compiling... " >&6; } +-{ $as_echo "$as_me:$LINENO: result: $cross_compiling" >&5 +-$as_echo "$cross_compiling" >&6; } +- +-{ $as_echo "$as_me:$LINENO: checking for suffix of executables" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 + $as_echo_n "checking for suffix of executables... " >&6; } +-if { (ac_try="$ac_link" ++if { { ac_try="$ac_link" + case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; + esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 ++eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" ++$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; then ++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 ++ test $ac_status = 0; }; then : + # If both `conftest.exe' and `conftest' are `present' (well, observable) + # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will + # work properly (i.e., refer to `conftest.exe'), while it won't with +@@ -3186,32 +3384,83 @@ + esac + done + else +- { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 ++ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 + $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +-{ { $as_echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link +-See \`config.log' for more details." >&5 +-$as_echo "$as_me: error: cannot compute suffix of executables: cannot compile and link +-See \`config.log' for more details." >&2;} +- { (exit 1); exit 1; }; }; } ++as_fn_error $? "cannot compute suffix of executables: cannot compile and link ++See \`config.log' for more details" "$LINENO" 5; } + fi +- +-rm -f conftest$ac_cv_exeext +-{ $as_echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 ++rm -f conftest conftest$ac_cv_exeext ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 + $as_echo "$ac_cv_exeext" >&6; } + + rm -f conftest.$ac_ext + EXEEXT=$ac_cv_exeext + ac_exeext=$EXEEXT +-{ $as_echo "$as_me:$LINENO: checking for suffix of object files" >&5 ++cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ ++#include ++int ++main () ++{ ++FILE *f = fopen ("conftest.out", "w"); ++ return ferror (f) || fclose (f) != 0; ++ ++ ; ++ return 0; ++} ++_ACEOF ++ac_clean_files="$ac_clean_files conftest.out" ++# Check that the compiler produces executables we can run. If not, either ++# the compiler is broken, or we cross compile. ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 ++$as_echo_n "checking whether we are cross compiling... " >&6; } ++if test "$cross_compiling" != yes; then ++ { { ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" ++$as_echo "$ac_try_echo"; } >&5 ++ (eval "$ac_link") 2>&5 ++ ac_status=$? ++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 ++ test $ac_status = 0; } ++ if { ac_try='./conftest$ac_cv_exeext' ++ { { case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" ++$as_echo "$ac_try_echo"; } >&5 ++ (eval "$ac_try") 2>&5 ++ ac_status=$? ++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 ++ test $ac_status = 0; }; }; then ++ cross_compiling=no ++ else ++ if test "$cross_compiling" = maybe; then ++ cross_compiling=yes ++ else ++ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 ++$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} ++as_fn_error $? "cannot run C compiled programs. ++If you meant to cross compile, use \`--host'. ++See \`config.log' for more details" "$LINENO" 5; } ++ fi ++ fi ++fi ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 ++$as_echo "$cross_compiling" >&6; } ++ ++rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out ++ac_clean_files=$ac_clean_files_save ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 + $as_echo_n "checking for suffix of object files... " >&6; } +-if test "${ac_cv_objext+set}" = set; then ++if test "${ac_cv_objext+set}" = set; then : + $as_echo_n "(cached) " >&6 + else +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + + int +@@ -3223,17 +3472,17 @@ + } + _ACEOF + rm -f conftest.o conftest.obj +-if { (ac_try="$ac_compile" ++if { { ac_try="$ac_compile" + case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; + esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 ++eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" ++$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>&5 + ac_status=$? +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; then ++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 ++ test $ac_status = 0; }; then : + for ac_file in conftest.o conftest.obj conftest.*; do + test -f "$ac_file" || continue; + case $ac_file in +@@ -3246,31 +3495,23 @@ + $as_echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-{ { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 ++{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 + $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +-{ { $as_echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile +-See \`config.log' for more details." >&5 +-$as_echo "$as_me: error: cannot compute suffix of object files: cannot compile +-See \`config.log' for more details." >&2;} +- { (exit 1); exit 1; }; }; } ++as_fn_error $? "cannot compute suffix of object files: cannot compile ++See \`config.log' for more details" "$LINENO" 5; } + fi +- + rm -f conftest.$ac_cv_objext conftest.$ac_ext + fi +-{ $as_echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 + $as_echo "$ac_cv_objext" >&6; } + OBJEXT=$ac_cv_objext + ac_objext=$OBJEXT +-{ $as_echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 + $as_echo_n "checking whether we are using the GNU C compiler... " >&6; } +-if test "${ac_cv_c_compiler_gnu+set}" = set; then ++if test "${ac_cv_c_compiler_gnu+set}" = set; then : + $as_echo_n "(cached) " >&6 + else +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + + int +@@ -3284,37 +3525,16 @@ + return 0; + } + _ACEOF +-rm -f conftest.$ac_objext +-if { (ac_try="$ac_compile" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_compile") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest.$ac_objext; then ++if ac_fn_c_try_compile "$LINENO"; then : + ac_compiler_gnu=yes + else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- ac_compiler_gnu=no ++ ac_compiler_gnu=no + fi +- + rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_cv_c_compiler_gnu=$ac_compiler_gnu + + fi +-{ $as_echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 + $as_echo "$ac_cv_c_compiler_gnu" >&6; } + if test $ac_compiler_gnu = yes; then + GCC=yes +@@ -3323,20 +3543,16 @@ + fi + ac_test_CFLAGS=${CFLAGS+set} + ac_save_CFLAGS=$CFLAGS +-{ $as_echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 + $as_echo_n "checking whether $CC accepts -g... " >&6; } +-if test "${ac_cv_prog_cc_g+set}" = set; then ++if test "${ac_cv_prog_cc_g+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + ac_save_c_werror_flag=$ac_c_werror_flag + ac_c_werror_flag=yes + ac_cv_prog_cc_g=no + CFLAGS="-g" +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + + int +@@ -3347,35 +3563,11 @@ + return 0; + } + _ACEOF +-rm -f conftest.$ac_objext +-if { (ac_try="$ac_compile" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_compile") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest.$ac_objext; then ++if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_g=yes + else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- CFLAGS="" +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF ++ CFLAGS="" ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + + int +@@ -3386,36 +3578,12 @@ + return 0; + } + _ACEOF +-rm -f conftest.$ac_objext +-if { (ac_try="$ac_compile" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_compile") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest.$ac_objext; then +- : +-else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 ++if ac_fn_c_try_compile "$LINENO"; then : + +- ac_c_werror_flag=$ac_save_c_werror_flag ++else ++ ac_c_werror_flag=$ac_save_c_werror_flag + CFLAGS="-g" +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + + int +@@ -3426,42 +3594,17 @@ + return 0; + } + _ACEOF +-rm -f conftest.$ac_objext +-if { (ac_try="$ac_compile" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_compile") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest.$ac_objext; then ++if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_g=yes +-else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- + fi +- + rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi +- + rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi +- + rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_c_werror_flag=$ac_save_c_werror_flag + fi +-{ $as_echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 + $as_echo "$ac_cv_prog_cc_g" >&6; } + if test "$ac_test_CFLAGS" = set; then + CFLAGS=$ac_save_CFLAGS +@@ -3478,18 +3621,14 @@ + CFLAGS= + fi + fi +-{ $as_echo "$as_me:$LINENO: checking for $CC option to accept ISO C89" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 + $as_echo_n "checking for $CC option to accept ISO C89... " >&6; } +-if test "${ac_cv_prog_cc_c89+set}" = set; then ++if test "${ac_cv_prog_cc_c89+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + ac_cv_prog_cc_c89=no + ac_save_CC=$CC +-cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF ++cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + #include + #include +@@ -3546,32 +3685,9 @@ + -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" + do + CC="$ac_save_CC $ac_arg" +- rm -f conftest.$ac_objext +-if { (ac_try="$ac_compile" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_compile") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest.$ac_objext; then ++ if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_c89=$ac_arg +-else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- + fi +- + rm -f core conftest.err conftest.$ac_objext + test "x$ac_cv_prog_cc_c89" != "xno" && break + done +@@ -3582,17 +3698,19 @@ + # AC_CACHE_VAL + case "x$ac_cv_prog_cc_c89" in + x) +- { $as_echo "$as_me:$LINENO: result: none needed" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 + $as_echo "none needed" >&6; } ;; + xno) +- { $as_echo "$as_me:$LINENO: result: unsupported" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 + $as_echo "unsupported" >&6; } ;; + *) + CC="$CC $ac_cv_prog_cc_c89" +- { $as_echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 + $as_echo "$ac_cv_prog_cc_c89" >&6; } ;; + esac ++if test "x$ac_cv_prog_cc_c89" != xno; then : + ++fi + + ac_ext=c + ac_cpp='$CPP $CPPFLAGS' +@@ -3611,7 +3729,7 @@ + .PHONY: am__doit + END + # If we don't find an include directive, just comment out the code. +-{ $as_echo "$as_me:$LINENO: checking for style of include used by $am_make" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5 + $as_echo_n "checking for style of include used by $am_make... " >&6; } + am__include="#" + am__quote= +@@ -3639,12 +3757,12 @@ + fi + + +-{ $as_echo "$as_me:$LINENO: result: $_am_result" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5 + $as_echo "$_am_result" >&6; } + rm -f confinc confmf + + # Check whether --enable-dependency-tracking was given. +-if test "${enable_dependency_tracking+set}" = set; then ++if test "${enable_dependency_tracking+set}" = set; then : + enableval=$enable_dependency_tracking; + fi + +@@ -3664,9 +3782,9 @@ + + depcc="$CC" am_compiler_list= + +-{ $as_echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 + $as_echo_n "checking dependency style of $depcc... " >&6; } +-if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then ++if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then +@@ -3774,7 +3892,7 @@ + fi + + fi +-{ $as_echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 + $as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } + CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type + +@@ -3789,141 +3907,41 @@ + fi + + +-# Find a good install program. We prefer a C program (faster), +-# so one script is as good as another. But avoid the broken or +-# incompatible versions: +-# SysV /etc/install, /usr/sbin/install +-# SunOS /usr/etc/install +-# IRIX /sbin/install +-# AIX /bin/install +-# AmigaOS /C/install, which installs bootblocks on floppy discs +-# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag +-# AFS /usr/afsws/bin/install, which mishandles nonexistent args +-# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" +-# OS/2's system install, which has a completely different semantic +-# ./install, which can be erroneously created by make from ./install.sh. +-# Reject install programs that cannot install multiple files. +-{ $as_echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 +-$as_echo_n "checking for a BSD-compatible install... " >&6; } +-if test -z "$INSTALL"; then +-if test "${ac_cv_path_install+set}" = set; then +- $as_echo_n "(cached) " >&6 +-else +- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +-for as_dir in $PATH +-do +- IFS=$as_save_IFS +- test -z "$as_dir" && as_dir=. +- # Account for people who put trailing slashes in PATH elements. +-case $as_dir/ in +- ./ | .// | /cC/* | \ +- /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ +- ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \ +- /usr/ucb/* ) ;; +- *) +- # OSF1 and SCO ODT 3.0 have their own names for install. +- # Don't use installbsd from OSF since it installs stuff as root +- # by default. +- for ac_prog in ginstall scoinst install; do +- for ac_exec_ext in '' $ac_executable_extensions; do +- if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then +- if test $ac_prog = install && +- grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then +- # AIX install. It has an incompatible calling convention. +- : +- elif test $ac_prog = install && +- grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then +- # program-specific install script used by HP pwplus--don't use. +- : +- else +- rm -rf conftest.one conftest.two conftest.dir +- echo one > conftest.one +- echo two > conftest.two +- mkdir conftest.dir +- if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && +- test -s conftest.one && test -s conftest.two && +- test -s conftest.dir/conftest.one && +- test -s conftest.dir/conftest.two +- then +- ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" +- break 3 +- fi +- fi +- fi +- done +- done +- ;; +-esac +- +-done +-IFS=$as_save_IFS +- +-rm -rf conftest.one conftest.two conftest.dir +- +-fi +- if test "${ac_cv_path_install+set}" = set; then +- INSTALL=$ac_cv_path_install +- else +- # As a last resort, use the slow shell script. Don't cache a +- # value for INSTALL within a source directory, because that will +- # break other packages using the cache if that directory is +- # removed, or if the value is a relative name. +- INSTALL=$ac_install_sh +- fi +-fi +-{ $as_echo "$as_me:$LINENO: result: $INSTALL" >&5 +-$as_echo "$INSTALL" >&6; } +- +-# Use test -z because SunOS4 sh mishandles braces in ${var-val}. +-# It thinks the first close brace ends the variable substitution. +-test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' +- +-test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' +- +-test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' +- +-{ $as_echo "$as_me:$LINENO: checking whether ln -s works" >&5 +-$as_echo_n "checking whether ln -s works... " >&6; } +-LN_S=$as_ln_s +-if test "$LN_S" = "ln -s"; then +- { $as_echo "$as_me:$LINENO: result: yes" >&5 +-$as_echo "yes" >&6; } +-else +- { $as_echo "$as_me:$LINENO: result: no, using $LN_S" >&5 +-$as_echo "no, using $LN_S" >&6; } +-fi +- +-# Make sure we can run config.sub. +-$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || +- { { $as_echo "$as_me:$LINENO: error: cannot run $SHELL $ac_aux_dir/config.sub" >&5 +-$as_echo "$as_me: error: cannot run $SHELL $ac_aux_dir/config.sub" >&2;} +- { (exit 1); exit 1; }; } +- +-{ $as_echo "$as_me:$LINENO: checking build system type" >&5 +-$as_echo_n "checking build system type... " >&6; } +-if test "${ac_cv_build+set}" = set; then ++ ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 ++$as_echo_n "checking whether ln -s works... " >&6; } ++LN_S=$as_ln_s ++if test "$LN_S" = "ln -s"; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 ++$as_echo "yes" >&6; } ++else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 ++$as_echo "no, using $LN_S" >&6; } ++fi ++ ++# Make sure we can run config.sub. ++$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || ++ as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 ++ ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 ++$as_echo_n "checking build system type... " >&6; } ++if test "${ac_cv_build+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + ac_build_alias=$build_alias + test "x$ac_build_alias" = x && + ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` + test "x$ac_build_alias" = x && +- { { $as_echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5 +-$as_echo "$as_me: error: cannot guess build type; you must specify one" >&2;} +- { (exit 1); exit 1; }; } ++ as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 + ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || +- { { $as_echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&5 +-$as_echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&2;} +- { (exit 1); exit 1; }; } ++ as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 + + fi +-{ $as_echo "$as_me:$LINENO: result: $ac_cv_build" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 + $as_echo "$ac_cv_build" >&6; } + case $ac_cv_build in + *-*-*) ;; +-*) { { $as_echo "$as_me:$LINENO: error: invalid value of canonical build" >&5 +-$as_echo "$as_me: error: invalid value of canonical build" >&2;} +- { (exit 1); exit 1; }; };; ++*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; + esac + build=$ac_cv_build + ac_save_IFS=$IFS; IFS='-' +@@ -3939,28 +3957,24 @@ + case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac + + +-{ $as_echo "$as_me:$LINENO: checking host system type" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 + $as_echo_n "checking host system type... " >&6; } +-if test "${ac_cv_host+set}" = set; then ++if test "${ac_cv_host+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + if test "x$host_alias" = x; then + ac_cv_host=$ac_cv_build + else + ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || +- { { $as_echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&5 +-$as_echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&2;} +- { (exit 1); exit 1; }; } ++ as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 + fi + + fi +-{ $as_echo "$as_me:$LINENO: result: $ac_cv_host" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 + $as_echo "$ac_cv_host" >&6; } + case $ac_cv_host in + *-*-*) ;; +-*) { { $as_echo "$as_me:$LINENO: error: invalid value of canonical host" >&5 +-$as_echo "$as_me: error: invalid value of canonical host" >&2;} +- { (exit 1); exit 1; }; };; ++*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; + esac + host=$ac_cv_host + ac_save_IFS=$IFS; IFS='-' +@@ -3979,13 +3993,13 @@ + enable_win32_dll=yes + + case $host in +-*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-cegcc*) ++*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*) + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}as", so it can be a program name with args. + set dummy ${ac_tool_prefix}as; ac_word=$2 +-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 + $as_echo_n "checking for $ac_word... " >&6; } +-if test "${ac_cv_prog_AS+set}" = set; then ++if test "${ac_cv_prog_AS+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + if test -n "$AS"; then +@@ -3996,24 +4010,24 @@ + do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. +- for ac_exec_ext in '' $ac_executable_extensions; do ++ for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_AS="${ac_tool_prefix}as" +- $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi + done +-done ++ done + IFS=$as_save_IFS + + fi + fi + AS=$ac_cv_prog_AS + if test -n "$AS"; then +- { $as_echo "$as_me:$LINENO: result: $AS" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AS" >&5 + $as_echo "$AS" >&6; } + else +- { $as_echo "$as_me:$LINENO: result: no" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + $as_echo "no" >&6; } + fi + +@@ -4023,9 +4037,9 @@ + ac_ct_AS=$AS + # Extract the first word of "as", so it can be a program name with args. + set dummy as; ac_word=$2 +-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 + $as_echo_n "checking for $ac_word... " >&6; } +-if test "${ac_cv_prog_ac_ct_AS+set}" = set; then ++if test "${ac_cv_prog_ac_ct_AS+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + if test -n "$ac_ct_AS"; then +@@ -4036,24 +4050,24 @@ + do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. +- for ac_exec_ext in '' $ac_executable_extensions; do ++ for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_AS="as" +- $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi + done +-done ++ done + IFS=$as_save_IFS + + fi + fi + ac_ct_AS=$ac_cv_prog_ac_ct_AS + if test -n "$ac_ct_AS"; then +- { $as_echo "$as_me:$LINENO: result: $ac_ct_AS" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AS" >&5 + $as_echo "$ac_ct_AS" >&6; } + else +- { $as_echo "$as_me:$LINENO: result: no" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + $as_echo "no" >&6; } + fi + +@@ -4062,7 +4076,7 @@ + else + case $cross_compiling:$ac_tool_warned in + yes:) +-{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 + $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} + ac_tool_warned=yes ;; + esac +@@ -4075,9 +4089,9 @@ + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args. + set dummy ${ac_tool_prefix}dlltool; ac_word=$2 +-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 + $as_echo_n "checking for $ac_word... " >&6; } +-if test "${ac_cv_prog_DLLTOOL+set}" = set; then ++if test "${ac_cv_prog_DLLTOOL+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + if test -n "$DLLTOOL"; then +@@ -4088,24 +4102,24 @@ + do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. +- for ac_exec_ext in '' $ac_executable_extensions; do ++ for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool" +- $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi + done +-done ++ done + IFS=$as_save_IFS + + fi + fi + DLLTOOL=$ac_cv_prog_DLLTOOL + if test -n "$DLLTOOL"; then +- { $as_echo "$as_me:$LINENO: result: $DLLTOOL" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5 + $as_echo "$DLLTOOL" >&6; } + else +- { $as_echo "$as_me:$LINENO: result: no" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + $as_echo "no" >&6; } + fi + +@@ -4115,9 +4129,9 @@ + ac_ct_DLLTOOL=$DLLTOOL + # Extract the first word of "dlltool", so it can be a program name with args. + set dummy dlltool; ac_word=$2 +-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 + $as_echo_n "checking for $ac_word... " >&6; } +-if test "${ac_cv_prog_ac_ct_DLLTOOL+set}" = set; then ++if test "${ac_cv_prog_ac_ct_DLLTOOL+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + if test -n "$ac_ct_DLLTOOL"; then +@@ -4128,24 +4142,24 @@ + do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. +- for ac_exec_ext in '' $ac_executable_extensions; do ++ for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_DLLTOOL="dlltool" +- $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi + done +-done ++ done + IFS=$as_save_IFS + + fi + fi + ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL + if test -n "$ac_ct_DLLTOOL"; then +- { $as_echo "$as_me:$LINENO: result: $ac_ct_DLLTOOL" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5 + $as_echo "$ac_ct_DLLTOOL" >&6; } + else +- { $as_echo "$as_me:$LINENO: result: no" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + $as_echo "no" >&6; } + fi + +@@ -4154,7 +4168,7 @@ + else + case $cross_compiling:$ac_tool_warned in + yes:) +-{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 + $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} + ac_tool_warned=yes ;; + esac +@@ -4167,9 +4181,9 @@ + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. + set dummy ${ac_tool_prefix}objdump; ac_word=$2 +-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 + $as_echo_n "checking for $ac_word... " >&6; } +-if test "${ac_cv_prog_OBJDUMP+set}" = set; then ++if test "${ac_cv_prog_OBJDUMP+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + if test -n "$OBJDUMP"; then +@@ -4180,24 +4194,24 @@ + do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. +- for ac_exec_ext in '' $ac_executable_extensions; do ++ for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" +- $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi + done +-done ++ done + IFS=$as_save_IFS + + fi + fi + OBJDUMP=$ac_cv_prog_OBJDUMP + if test -n "$OBJDUMP"; then +- { $as_echo "$as_me:$LINENO: result: $OBJDUMP" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5 + $as_echo "$OBJDUMP" >&6; } + else +- { $as_echo "$as_me:$LINENO: result: no" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + $as_echo "no" >&6; } + fi + +@@ -4207,9 +4221,9 @@ + ac_ct_OBJDUMP=$OBJDUMP + # Extract the first word of "objdump", so it can be a program name with args. + set dummy objdump; ac_word=$2 +-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 + $as_echo_n "checking for $ac_word... " >&6; } +-if test "${ac_cv_prog_ac_ct_OBJDUMP+set}" = set; then ++if test "${ac_cv_prog_ac_ct_OBJDUMP+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + if test -n "$ac_ct_OBJDUMP"; then +@@ -4220,24 +4234,24 @@ + do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. +- for ac_exec_ext in '' $ac_executable_extensions; do ++ for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_OBJDUMP="objdump" +- $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi + done +-done ++ done + IFS=$as_save_IFS + + fi + fi + ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP + if test -n "$ac_ct_OBJDUMP"; then +- { $as_echo "$as_me:$LINENO: result: $ac_ct_OBJDUMP" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5 + $as_echo "$ac_ct_OBJDUMP" >&6; } + else +- { $as_echo "$as_me:$LINENO: result: no" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + $as_echo "no" >&6; } + fi + +@@ -4246,7 +4260,7 @@ + else + case $cross_compiling:$ac_tool_warned in + yes:) +-{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 + $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} + ac_tool_warned=yes ;; + esac +@@ -4281,14 +4295,14 @@ + + case `pwd` in + *\ * | *\ *) +- { $as_echo "$as_me:$LINENO: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5 + $as_echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;; + esac + + + +-macro_version='2.2.6' +-macro_revision='1.3012' ++macro_version='2.2.10' ++macro_revision='1.3175' + + + +@@ -4304,9 +4318,78 @@ + + ltmain="$ac_aux_dir/ltmain.sh" + +-{ $as_echo "$as_me:$LINENO: checking for a sed that does not truncate output" >&5 ++# Backslashify metacharacters that are still active within ++# double-quoted strings. ++sed_quote_subst='s/\(["`$\\]\)/\\\1/g' ++ ++# Same as above, but do not quote variable references. ++double_quote_subst='s/\(["`\\]\)/\\\1/g' ++ ++# Sed substitution to delay expansion of an escaped shell variable in a ++# double_quote_subst'ed string. ++delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' ++ ++# Sed substitution to delay expansion of an escaped single quote. ++delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' ++ ++# Sed substitution to avoid accidental globbing in evaled expressions ++no_glob_subst='s/\*/\\\*/g' ++ ++ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' ++ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO ++ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO ++ ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5 ++$as_echo_n "checking how to print strings... " >&6; } ++# Test print first, because it will be a builtin if present. ++if test "X`print -r -- -n 2>/dev/null`" = X-n && \ ++ test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then ++ ECHO='print -r --' ++elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then ++ ECHO='printf %s\n' ++else ++ # Use this function as a fallback that always works. ++ func_fallback_echo () ++ { ++ eval 'cat <<_LTECHO_EOF ++$1 ++_LTECHO_EOF' ++ } ++ ECHO='func_fallback_echo' ++fi ++ ++# func_echo_all arg... ++# Invoke $ECHO with all args, space-separated. ++func_echo_all () ++{ ++ $ECHO "" ++} ++ ++case "$ECHO" in ++ printf*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: printf" >&5 ++$as_echo "printf" >&6; } ;; ++ print*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: print -r" >&5 ++$as_echo "print -r" >&6; } ;; ++ *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: cat" >&5 ++$as_echo "cat" >&6; } ;; ++esac ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 + $as_echo_n "checking for a sed that does not truncate output... " >&6; } +-if test "${ac_cv_path_SED+set}" = set; then ++if test "${ac_cv_path_SED+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ +@@ -4314,7 +4397,7 @@ + ac_script="$ac_script$as_nl$ac_script" + done + echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed +- $as_unset ac_script || ac_script= ++ { ac_script=; unset ac_script;} + if test -z "$SED"; then + ac_path_SED_found=false + # Loop through the user's path and test for each of PROGNAME-LIST +@@ -4323,7 +4406,7 @@ + do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. +- for ac_prog in sed gsed; do ++ for ac_prog in sed gsed; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_SED="$as_dir/$ac_prog$ac_exec_ext" + { test -f "$ac_path_SED" && $as_test_x "$ac_path_SED"; } || continue +@@ -4343,7 +4426,7 @@ + $as_echo '' >> "conftest.nl" + "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break +- ac_count=`expr $ac_count + 1` ++ as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_SED_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_SED="$ac_path_SED" +@@ -4358,19 +4441,17 @@ + $ac_path_SED_found && break 3 + done + done +-done ++ done + IFS=$as_save_IFS + if test -z "$ac_cv_path_SED"; then +- { { $as_echo "$as_me:$LINENO: error: no acceptable sed could be found in \$PATH" >&5 +-$as_echo "$as_me: error: no acceptable sed could be found in \$PATH" >&2;} +- { (exit 1); exit 1; }; } ++ as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5 + fi + else + ac_cv_path_SED=$SED + fi + + fi +-{ $as_echo "$as_me:$LINENO: result: $ac_cv_path_SED" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 + $as_echo "$ac_cv_path_SED" >&6; } + SED="$ac_cv_path_SED" + rm -f conftest.sed +@@ -4388,9 +4469,9 @@ + + + +-{ $as_echo "$as_me:$LINENO: checking for grep that handles long lines and -e" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 + $as_echo_n "checking for grep that handles long lines and -e... " >&6; } +-if test "${ac_cv_path_GREP+set}" = set; then ++if test "${ac_cv_path_GREP+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + if test -z "$GREP"; then +@@ -4401,7 +4482,7 @@ + do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. +- for ac_prog in grep ggrep; do ++ for ac_prog in grep ggrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" + { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue +@@ -4421,7 +4502,7 @@ + $as_echo 'GREP' >> "conftest.nl" + "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break +- ac_count=`expr $ac_count + 1` ++ as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_GREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_GREP="$ac_path_GREP" +@@ -4436,26 +4517,24 @@ + $ac_path_GREP_found && break 3 + done + done +-done ++ done + IFS=$as_save_IFS + if test -z "$ac_cv_path_GREP"; then +- { { $as_echo "$as_me:$LINENO: error: no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 +-$as_echo "$as_me: error: no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} +- { (exit 1); exit 1; }; } ++ as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi + else + ac_cv_path_GREP=$GREP + fi + + fi +-{ $as_echo "$as_me:$LINENO: result: $ac_cv_path_GREP" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 + $as_echo "$ac_cv_path_GREP" >&6; } + GREP="$ac_cv_path_GREP" + + +-{ $as_echo "$as_me:$LINENO: checking for egrep" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 + $as_echo_n "checking for egrep... " >&6; } +-if test "${ac_cv_path_EGREP+set}" = set; then ++if test "${ac_cv_path_EGREP+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 +@@ -4469,7 +4548,7 @@ + do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. +- for ac_prog in egrep; do ++ for ac_prog in egrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" + { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue +@@ -4489,7 +4568,7 @@ + $as_echo 'EGREP' >> "conftest.nl" + "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break +- ac_count=`expr $ac_count + 1` ++ as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_EGREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_EGREP="$ac_path_EGREP" +@@ -4504,12 +4583,10 @@ + $ac_path_EGREP_found && break 3 + done + done +-done ++ done + IFS=$as_save_IFS + if test -z "$ac_cv_path_EGREP"; then +- { { $as_echo "$as_me:$LINENO: error: no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 +-$as_echo "$as_me: error: no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} +- { (exit 1); exit 1; }; } ++ as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi + else + ac_cv_path_EGREP=$EGREP +@@ -4517,14 +4594,14 @@ + + fi + fi +-{ $as_echo "$as_me:$LINENO: result: $ac_cv_path_EGREP" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 + $as_echo "$ac_cv_path_EGREP" >&6; } + EGREP="$ac_cv_path_EGREP" + + +-{ $as_echo "$as_me:$LINENO: checking for fgrep" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5 + $as_echo_n "checking for fgrep... " >&6; } +-if test "${ac_cv_path_FGREP+set}" = set; then ++if test "${ac_cv_path_FGREP+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1 +@@ -4538,7 +4615,7 @@ + do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. +- for ac_prog in fgrep; do ++ for ac_prog in fgrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext" + { test -f "$ac_path_FGREP" && $as_test_x "$ac_path_FGREP"; } || continue +@@ -4558,7 +4635,7 @@ + $as_echo 'FGREP' >> "conftest.nl" + "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break +- ac_count=`expr $ac_count + 1` ++ as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_FGREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_FGREP="$ac_path_FGREP" +@@ -4573,12 +4650,10 @@ + $ac_path_FGREP_found && break 3 + done + done +-done ++ done + IFS=$as_save_IFS + if test -z "$ac_cv_path_FGREP"; then +- { { $as_echo "$as_me:$LINENO: error: no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 +-$as_echo "$as_me: error: no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} +- { (exit 1); exit 1; }; } ++ as_fn_error $? "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi + else + ac_cv_path_FGREP=$FGREP +@@ -4586,7 +4661,7 @@ + + fi + fi +-{ $as_echo "$as_me:$LINENO: result: $ac_cv_path_FGREP" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5 + $as_echo "$ac_cv_path_FGREP" >&6; } + FGREP="$ac_cv_path_FGREP" + +@@ -4612,7 +4687,7 @@ + + + # Check whether --with-gnu-ld was given. +-if test "${with_gnu_ld+set}" = set; then ++if test "${with_gnu_ld+set}" = set; then : + withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes + else + with_gnu_ld=no +@@ -4621,7 +4696,7 @@ + ac_prog=ld + if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. +- { $as_echo "$as_me:$LINENO: checking for ld used by $CC" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 + $as_echo_n "checking for ld used by $CC... " >&6; } + case $host in + *-*-mingw*) +@@ -4651,13 +4726,13 @@ + ;; + esac + elif test "$with_gnu_ld" = yes; then +- { $as_echo "$as_me:$LINENO: checking for GNU ld" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 + $as_echo_n "checking for GNU ld... " >&6; } + else +- { $as_echo "$as_me:$LINENO: checking for non-GNU ld" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 + $as_echo_n "checking for non-GNU ld... " >&6; } + fi +-if test "${lt_cv_path_LD+set}" = set; then ++if test "${lt_cv_path_LD+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + if test -z "$LD"; then +@@ -4688,18 +4763,16 @@ + + LD="$lt_cv_path_LD" + if test -n "$LD"; then +- { $as_echo "$as_me:$LINENO: result: $LD" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5 + $as_echo "$LD" >&6; } + else +- { $as_echo "$as_me:$LINENO: result: no" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + $as_echo "no" >&6; } + fi +-test -z "$LD" && { { $as_echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5 +-$as_echo "$as_me: error: no acceptable ld found in \$PATH" >&2;} +- { (exit 1); exit 1; }; } +-{ $as_echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5 ++test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 + $as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } +-if test "${lt_cv_prog_gnu_ld+set}" = set; then ++if test "${lt_cv_prog_gnu_ld+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + # I'd rather use --version here, but apparently some GNU lds only accept -v. +@@ -4712,7 +4785,7 @@ + ;; + esac + fi +-{ $as_echo "$as_me:$LINENO: result: $lt_cv_prog_gnu_ld" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_gnu_ld" >&5 + $as_echo "$lt_cv_prog_gnu_ld" >&6; } + with_gnu_ld=$lt_cv_prog_gnu_ld + +@@ -4724,9 +4797,9 @@ + + + +-{ $as_echo "$as_me:$LINENO: checking for BSD- or MS-compatible name lister (nm)" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5 + $as_echo_n "checking for BSD- or MS-compatible name lister (nm)... " >&6; } +-if test "${lt_cv_path_NM+set}" = set; then ++if test "${lt_cv_path_NM+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + if test -n "$NM"; then +@@ -4773,20 +4846,23 @@ + : ${lt_cv_path_NM=no} + fi + fi +-{ $as_echo "$as_me:$LINENO: result: $lt_cv_path_NM" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5 + $as_echo "$lt_cv_path_NM" >&6; } + if test "$lt_cv_path_NM" != "no"; then + NM="$lt_cv_path_NM" + else + # Didn't find any BSD compatible name lister, look for dumpbin. +- if test -n "$ac_tool_prefix"; then +- for ac_prog in "dumpbin -symbols" "link -dump -symbols" ++ if test -n "$DUMPBIN"; then : ++ # Let the user override the test. ++ else ++ if test -n "$ac_tool_prefix"; then ++ for ac_prog in dumpbin "link -dump" + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. + set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 + $as_echo_n "checking for $ac_word... " >&6; } +-if test "${ac_cv_prog_DUMPBIN+set}" = set; then ++if test "${ac_cv_prog_DUMPBIN+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + if test -n "$DUMPBIN"; then +@@ -4797,24 +4873,24 @@ + do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. +- for ac_exec_ext in '' $ac_executable_extensions; do ++ for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog" +- $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi + done +-done ++ done + IFS=$as_save_IFS + + fi + fi + DUMPBIN=$ac_cv_prog_DUMPBIN + if test -n "$DUMPBIN"; then +- { $as_echo "$as_me:$LINENO: result: $DUMPBIN" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5 + $as_echo "$DUMPBIN" >&6; } + else +- { $as_echo "$as_me:$LINENO: result: no" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + $as_echo "no" >&6; } + fi + +@@ -4824,13 +4900,13 @@ + fi + if test -z "$DUMPBIN"; then + ac_ct_DUMPBIN=$DUMPBIN +- for ac_prog in "dumpbin -symbols" "link -dump -symbols" ++ for ac_prog in dumpbin "link -dump" + do + # Extract the first word of "$ac_prog", so it can be a program name with args. + set dummy $ac_prog; ac_word=$2 +-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 + $as_echo_n "checking for $ac_word... " >&6; } +-if test "${ac_cv_prog_ac_ct_DUMPBIN+set}" = set; then ++if test "${ac_cv_prog_ac_ct_DUMPBIN+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + if test -n "$ac_ct_DUMPBIN"; then +@@ -4841,24 +4917,24 @@ + do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. +- for ac_exec_ext in '' $ac_executable_extensions; do ++ for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_DUMPBIN="$ac_prog" +- $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi + done +-done ++ done + IFS=$as_save_IFS + + fi + fi + ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN + if test -n "$ac_ct_DUMPBIN"; then +- { $as_echo "$as_me:$LINENO: result: $ac_ct_DUMPBIN" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5 + $as_echo "$ac_ct_DUMPBIN" >&6; } + else +- { $as_echo "$as_me:$LINENO: result: no" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + $as_echo "no" >&6; } + fi + +@@ -4871,7 +4947,7 @@ + else + case $cross_compiling:$ac_tool_warned in + yes:) +-{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 + $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} + ac_tool_warned=yes ;; + esac +@@ -4879,6 +4955,15 @@ + fi + fi + ++ case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in ++ *COFF*) ++ DUMPBIN="$DUMPBIN -symbols" ++ ;; ++ *) ++ DUMPBIN=: ++ ;; ++ esac ++ fi + + if test "$DUMPBIN" != ":"; then + NM="$DUMPBIN" +@@ -4891,33 +4976,33 @@ + + + +-{ $as_echo "$as_me:$LINENO: checking the name lister ($NM) interface" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5 + $as_echo_n "checking the name lister ($NM) interface... " >&6; } +-if test "${lt_cv_nm_interface+set}" = set; then ++if test "${lt_cv_nm_interface+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + lt_cv_nm_interface="BSD nm" + echo "int some_variable = 0;" > conftest.$ac_ext +- (eval echo "\"\$as_me:4901: $ac_compile\"" >&5) ++ (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&5) + (eval "$ac_compile" 2>conftest.err) + cat conftest.err >&5 +- (eval echo "\"\$as_me:4904: $NM \\\"conftest.$ac_objext\\\"\"" >&5) ++ (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&5) + (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) + cat conftest.err >&5 +- (eval echo "\"\$as_me:4907: output\"" >&5) ++ (eval echo "\"\$as_me:$LINENO: output\"" >&5) + cat conftest.out >&5 + if $GREP 'External.*some_variable' conftest.out > /dev/null; then + lt_cv_nm_interface="MS dumpbin" + fi + rm -f conftest* + fi +-{ $as_echo "$as_me:$LINENO: result: $lt_cv_nm_interface" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5 + $as_echo "$lt_cv_nm_interface" >&6; } + + # find the maximum length of command line arguments +-{ $as_echo "$as_me:$LINENO: checking the maximum length of command line arguments" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5 + $as_echo_n "checking the maximum length of command line arguments... " >&6; } +-if test "${lt_cv_sys_max_cmd_len+set}" = set; then ++if test "${lt_cv_sys_max_cmd_len+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + i=0 +@@ -4950,6 +5035,11 @@ + lt_cv_sys_max_cmd_len=8192; + ;; + ++ mint*) ++ # On MiNT this can take a long time and run out of memory. ++ lt_cv_sys_max_cmd_len=8192; ++ ;; ++ + amigaos*) + # On AmigaOS with pdksh, this test takes hours, literally. + # So we just punt and use a minimum line length of 8192. +@@ -5014,8 +5104,8 @@ + # If test is not a shell built-in, we'll probably end up computing a + # maximum length that is only half of the actual maximum length, but + # we can't tell. +- while { test "X"`$SHELL $0 --fallback-echo "X$teststring$teststring" 2>/dev/null` \ +- = "XX$teststring$teststring"; } >/dev/null 2>&1 && ++ while { test "X"`func_fallback_echo "$teststring$teststring" 2>/dev/null` \ ++ = "X$teststring$teststring"; } >/dev/null 2>&1 && + test $i != 17 # 1/2 MB should be enough + do + i=`expr $i + 1` +@@ -5035,10 +5125,10 @@ + fi + + if test -n $lt_cv_sys_max_cmd_len ; then +- { $as_echo "$as_me:$LINENO: result: $lt_cv_sys_max_cmd_len" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5 + $as_echo "$lt_cv_sys_max_cmd_len" >&6; } + else +- { $as_echo "$as_me:$LINENO: result: none" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5 + $as_echo "none" >&6; } + fi + max_cmd_len=$lt_cv_sys_max_cmd_len +@@ -5052,7 +5142,7 @@ + : ${MV="mv -f"} + : ${RM="rm -f"} + +-{ $as_echo "$as_me:$LINENO: checking whether the shell understands some XSI constructs" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands some XSI constructs" >&5 + $as_echo_n "checking whether the shell understands some XSI constructs... " >&6; } + # Try some XSI features + xsi_shell=no +@@ -5062,17 +5152,17 @@ + && eval 'test $(( 1 + 1 )) -eq 2 \ + && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \ + && xsi_shell=yes +-{ $as_echo "$as_me:$LINENO: result: $xsi_shell" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xsi_shell" >&5 + $as_echo "$xsi_shell" >&6; } + + +-{ $as_echo "$as_me:$LINENO: checking whether the shell understands \"+=\"" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands \"+=\"" >&5 + $as_echo_n "checking whether the shell understands \"+=\"... " >&6; } + lt_shell_append=no + ( foo=bar; set foo baz; eval "$1+=\$2" && test "$foo" = barbaz ) \ + >/dev/null 2>&1 \ + && lt_shell_append=yes +-{ $as_echo "$as_me:$LINENO: result: $lt_shell_append" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_shell_append" >&5 + $as_echo "$lt_shell_append" >&6; } + + +@@ -5107,14 +5197,14 @@ + + + +-{ $as_echo "$as_me:$LINENO: checking for $LD option to reload object files" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5 + $as_echo_n "checking for $LD option to reload object files... " >&6; } +-if test "${lt_cv_ld_reload_flag+set}" = set; then ++if test "${lt_cv_ld_reload_flag+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + lt_cv_ld_reload_flag='-r' + fi +-{ $as_echo "$as_me:$LINENO: result: $lt_cv_ld_reload_flag" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5 + $as_echo "$lt_cv_ld_reload_flag" >&6; } + reload_flag=$lt_cv_ld_reload_flag + case $reload_flag in +@@ -5143,9 +5233,9 @@ + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. + set dummy ${ac_tool_prefix}objdump; ac_word=$2 +-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 + $as_echo_n "checking for $ac_word... " >&6; } +-if test "${ac_cv_prog_OBJDUMP+set}" = set; then ++if test "${ac_cv_prog_OBJDUMP+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + if test -n "$OBJDUMP"; then +@@ -5156,24 +5246,24 @@ + do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. +- for ac_exec_ext in '' $ac_executable_extensions; do ++ for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" +- $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi + done +-done ++ done + IFS=$as_save_IFS + + fi + fi + OBJDUMP=$ac_cv_prog_OBJDUMP + if test -n "$OBJDUMP"; then +- { $as_echo "$as_me:$LINENO: result: $OBJDUMP" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5 + $as_echo "$OBJDUMP" >&6; } + else +- { $as_echo "$as_me:$LINENO: result: no" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + $as_echo "no" >&6; } + fi + +@@ -5183,9 +5273,9 @@ + ac_ct_OBJDUMP=$OBJDUMP + # Extract the first word of "objdump", so it can be a program name with args. + set dummy objdump; ac_word=$2 +-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 + $as_echo_n "checking for $ac_word... " >&6; } +-if test "${ac_cv_prog_ac_ct_OBJDUMP+set}" = set; then ++if test "${ac_cv_prog_ac_ct_OBJDUMP+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + if test -n "$ac_ct_OBJDUMP"; then +@@ -5196,24 +5286,24 @@ + do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. +- for ac_exec_ext in '' $ac_executable_extensions; do ++ for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_OBJDUMP="objdump" +- $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi + done +-done ++ done + IFS=$as_save_IFS + + fi + fi + ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP + if test -n "$ac_ct_OBJDUMP"; then +- { $as_echo "$as_me:$LINENO: result: $ac_ct_OBJDUMP" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5 + $as_echo "$ac_ct_OBJDUMP" >&6; } + else +- { $as_echo "$as_me:$LINENO: result: no" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + $as_echo "no" >&6; } + fi + +@@ -5222,7 +5312,7 @@ + else + case $cross_compiling:$ac_tool_warned in + yes:) +-{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 + $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} + ac_tool_warned=yes ;; + esac +@@ -5239,9 +5329,9 @@ + + + +-{ $as_echo "$as_me:$LINENO: checking how to recognize dependent libraries" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5 + $as_echo_n "checking how to recognize dependent libraries... " >&6; } +-if test "${lt_cv_deplibs_check_method+set}" = set; then ++if test "${lt_cv_deplibs_check_method+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + lt_cv_file_magic_cmd='$MAGIC_CMD' +@@ -5283,16 +5373,18 @@ + # Base MSYS/MinGW do not provide the 'file' command needed by + # func_win32_libid shell function, so use a weaker test based on 'objdump', + # unless we find 'file', for example because we are cross-compiling. +- if ( file / ) >/dev/null 2>&1; then ++ # func_win32_libid assumes BSD nm, so disallow it if using MS dumpbin. ++ if ( test "$lt_cv_nm_interface" = "BSD nm" && file / ) >/dev/null 2>&1; then + lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' + lt_cv_file_magic_cmd='func_win32_libid' + else +- lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?' ++ # Keep this pattern in sync with the one in func_win32_libid. ++ lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' + lt_cv_file_magic_cmd='$OBJDUMP -f' + fi + ;; + +-cegcc) ++cegcc*) + # use the weaker test based on 'objdump'. See mingw*. + lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' + lt_cv_file_magic_cmd='$OBJDUMP -f' +@@ -5322,6 +5414,10 @@ + lt_cv_deplibs_check_method=pass_all + ;; + ++haiku*) ++ lt_cv_deplibs_check_method=pass_all ++ ;; ++ + hpux10.20* | hpux11*) + lt_cv_file_magic_cmd=/usr/bin/file + case $host_cpu in +@@ -5330,11 +5426,11 @@ + lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so + ;; + hppa*64*) +- lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]' ++ lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]' + lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl + ;; + *) +- lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9].[0-9]) shared library' ++ lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9]\.[0-9]) shared library' + lt_cv_file_magic_test_file=/usr/lib/libc.sl + ;; + esac +@@ -5356,7 +5452,7 @@ + ;; + + # This must be Linux ELF. +-linux* | k*bsd*-gnu) ++linux* | k*bsd*-gnu | kopensolaris*-gnu) + lt_cv_deplibs_check_method=pass_all + ;; + +@@ -5435,7 +5531,7 @@ + esac + + fi +-{ $as_echo "$as_me:$LINENO: result: $lt_cv_deplibs_check_method" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5 + $as_echo "$lt_cv_deplibs_check_method" >&6; } + file_magic_cmd=$lt_cv_file_magic_cmd + deplibs_check_method=$lt_cv_deplibs_check_method +@@ -5455,9 +5551,9 @@ + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args. + set dummy ${ac_tool_prefix}ar; ac_word=$2 +-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 + $as_echo_n "checking for $ac_word... " >&6; } +-if test "${ac_cv_prog_AR+set}" = set; then ++if test "${ac_cv_prog_AR+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + if test -n "$AR"; then +@@ -5468,24 +5564,24 @@ + do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. +- for ac_exec_ext in '' $ac_executable_extensions; do ++ for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_AR="${ac_tool_prefix}ar" +- $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi + done +-done ++ done + IFS=$as_save_IFS + + fi + fi + AR=$ac_cv_prog_AR + if test -n "$AR"; then +- { $as_echo "$as_me:$LINENO: result: $AR" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 + $as_echo "$AR" >&6; } + else +- { $as_echo "$as_me:$LINENO: result: no" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + $as_echo "no" >&6; } + fi + +@@ -5495,9 +5591,9 @@ + ac_ct_AR=$AR + # Extract the first word of "ar", so it can be a program name with args. + set dummy ar; ac_word=$2 +-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 + $as_echo_n "checking for $ac_word... " >&6; } +-if test "${ac_cv_prog_ac_ct_AR+set}" = set; then ++if test "${ac_cv_prog_ac_ct_AR+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + if test -n "$ac_ct_AR"; then +@@ -5508,24 +5604,24 @@ + do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. +- for ac_exec_ext in '' $ac_executable_extensions; do ++ for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_AR="ar" +- $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi + done +-done ++ done + IFS=$as_save_IFS + + fi + fi + ac_ct_AR=$ac_cv_prog_ac_ct_AR + if test -n "$ac_ct_AR"; then +- { $as_echo "$as_me:$LINENO: result: $ac_ct_AR" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 + $as_echo "$ac_ct_AR" >&6; } + else +- { $as_echo "$as_me:$LINENO: result: no" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + $as_echo "no" >&6; } + fi + +@@ -5534,7 +5630,7 @@ + else + case $cross_compiling:$ac_tool_warned in + yes:) +-{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 + $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} + ac_tool_warned=yes ;; + esac +@@ -5560,9 +5656,9 @@ + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. + set dummy ${ac_tool_prefix}strip; ac_word=$2 +-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 + $as_echo_n "checking for $ac_word... " >&6; } +-if test "${ac_cv_prog_STRIP+set}" = set; then ++if test "${ac_cv_prog_STRIP+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + if test -n "$STRIP"; then +@@ -5573,24 +5669,24 @@ + do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. +- for ac_exec_ext in '' $ac_executable_extensions; do ++ for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_STRIP="${ac_tool_prefix}strip" +- $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi + done +-done ++ done + IFS=$as_save_IFS + + fi + fi + STRIP=$ac_cv_prog_STRIP + if test -n "$STRIP"; then +- { $as_echo "$as_me:$LINENO: result: $STRIP" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 + $as_echo "$STRIP" >&6; } + else +- { $as_echo "$as_me:$LINENO: result: no" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + $as_echo "no" >&6; } + fi + +@@ -5600,9 +5696,9 @@ + ac_ct_STRIP=$STRIP + # Extract the first word of "strip", so it can be a program name with args. + set dummy strip; ac_word=$2 +-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 + $as_echo_n "checking for $ac_word... " >&6; } +-if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then ++if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + if test -n "$ac_ct_STRIP"; then +@@ -5613,24 +5709,24 @@ + do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. +- for ac_exec_ext in '' $ac_executable_extensions; do ++ for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_STRIP="strip" +- $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi + done +-done ++ done + IFS=$as_save_IFS + + fi + fi + ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP + if test -n "$ac_ct_STRIP"; then +- { $as_echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 + $as_echo "$ac_ct_STRIP" >&6; } + else +- { $as_echo "$as_me:$LINENO: result: no" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + $as_echo "no" >&6; } + fi + +@@ -5639,7 +5735,7 @@ + else + case $cross_compiling:$ac_tool_warned in + yes:) +-{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 + $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} + ac_tool_warned=yes ;; + esac +@@ -5659,9 +5755,9 @@ + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. + set dummy ${ac_tool_prefix}ranlib; ac_word=$2 +-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 + $as_echo_n "checking for $ac_word... " >&6; } +-if test "${ac_cv_prog_RANLIB+set}" = set; then ++if test "${ac_cv_prog_RANLIB+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + if test -n "$RANLIB"; then +@@ -5672,24 +5768,24 @@ + do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. +- for ac_exec_ext in '' $ac_executable_extensions; do ++ for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" +- $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi + done +-done ++ done + IFS=$as_save_IFS + + fi + fi + RANLIB=$ac_cv_prog_RANLIB + if test -n "$RANLIB"; then +- { $as_echo "$as_me:$LINENO: result: $RANLIB" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 + $as_echo "$RANLIB" >&6; } + else +- { $as_echo "$as_me:$LINENO: result: no" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + $as_echo "no" >&6; } + fi + +@@ -5699,9 +5795,9 @@ + ac_ct_RANLIB=$RANLIB + # Extract the first word of "ranlib", so it can be a program name with args. + set dummy ranlib; ac_word=$2 +-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 + $as_echo_n "checking for $ac_word... " >&6; } +-if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then ++if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + if test -n "$ac_ct_RANLIB"; then +@@ -5712,24 +5808,24 @@ + do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. +- for ac_exec_ext in '' $ac_executable_extensions; do ++ for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_RANLIB="ranlib" +- $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi + done +-done ++ done + IFS=$as_save_IFS + + fi + fi + ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB + if test -n "$ac_ct_RANLIB"; then +- { $as_echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 + $as_echo "$ac_ct_RANLIB" >&6; } + else +- { $as_echo "$as_me:$LINENO: result: no" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + $as_echo "no" >&6; } + fi + +@@ -5738,7 +5834,7 @@ + else + case $cross_compiling:$ac_tool_warned in + yes:) +-{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 + $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} + ac_tool_warned=yes ;; + esac +@@ -5772,6 +5868,18 @@ + old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" + fi + ++case $host_os in ++ darwin*) ++ lock_old_archive_extraction=yes ;; ++ *) ++ lock_old_archive_extraction=no ;; ++esac ++ ++ ++ ++ ++ ++ + + + +@@ -5816,9 +5924,9 @@ + + + # Check for command to grab the raw symbol name followed by C symbol from nm. +-{ $as_echo "$as_me:$LINENO: checking command to parse $NM output from $compiler object" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5 + $as_echo_n "checking command to parse $NM output from $compiler object... " >&6; } +-if test "${lt_cv_sys_global_symbol_pipe+set}" = set; then ++if test "${lt_cv_sys_global_symbol_pipe+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + +@@ -5934,18 +6042,18 @@ + int main(){nm_test_var='a';nm_test_func();return(0);} + _LT_EOF + +- if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ++ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; then ++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 ++ test $ac_status = 0; }; then + # Now try to grab the symbols. + nlist=conftest.nm +- if { (eval echo "$as_me:$LINENO: \"$NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist\"") >&5 +- (eval $NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) 2>&5 ++ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist\""; } >&5 ++ (eval $NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) 2>&5 + ac_status=$? +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && test -s "$nlist"; then ++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 ++ test $ac_status = 0; } && test -s "$nlist"; then + # Try sorting and uniquifying the output. + if sort "$nlist" | uniq > "$nlist"T; then + mv -f "$nlist"T "$nlist" +@@ -5998,11 +6106,11 @@ + lt_save_CFLAGS="$CFLAGS" + LIBS="conftstm.$ac_objext" + CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag" +- if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 ++ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 + (eval $ac_link) 2>&5 + ac_status=$? +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && test -s conftest${ac_exeext}; then ++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 ++ test $ac_status = 0; } && test -s conftest${ac_exeext}; then + pipe_works=yes + fi + LIBS="$lt_save_LIBS" +@@ -6036,10 +6144,10 @@ + lt_cv_sys_global_symbol_to_cdecl= + fi + if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then +- { $as_echo "$as_me:$LINENO: result: failed" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5 + $as_echo "failed" >&6; } + else +- { $as_echo "$as_me:$LINENO: result: ok" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 + $as_echo "ok" >&6; } + fi + +@@ -6066,7 +6174,7 @@ + + + # Check whether --enable-libtool-lock was given. +-if test "${enable_libtool_lock+set}" = set; then ++if test "${enable_libtool_lock+set}" = set; then : + enableval=$enable_libtool_lock; + fi + +@@ -6078,11 +6186,11 @@ + ia64-*-hpux*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext +- if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ++ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; then ++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 ++ test $ac_status = 0; }; then + case `/usr/bin/file conftest.$ac_objext` in + *ELF-32*) + HPUX_IA64_MODE="32" +@@ -6096,12 +6204,12 @@ + ;; + *-*-irix6*) + # Find out which ABI we are using. +- echo '#line 6099 "configure"' > conftest.$ac_ext +- if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ++ echo '#line '$LINENO' "configure"' > conftest.$ac_ext ++ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; then ++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 ++ test $ac_status = 0; }; then + if test "$lt_cv_prog_gnu_ld" = yes; then + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) +@@ -6135,11 +6243,11 @@ + s390*-*linux*|s390*-*tpf*|sparc*-*linux*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext +- if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ++ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; then ++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 ++ test $ac_status = 0; }; then + case `/usr/bin/file conftest.o` in + *32-bit*) + case $host in +@@ -6188,9 +6296,9 @@ + # On SCO OpenServer 5, we need -belf to get full-featured binaries. + SAVE_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -belf" +- { $as_echo "$as_me:$LINENO: checking whether the C compiler needs -belf" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5 + $as_echo_n "checking whether the C compiler needs -belf... " >&6; } +-if test "${lt_cv_cc_needs_belf+set}" = set; then ++if test "${lt_cv_cc_needs_belf+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + ac_ext=c +@@ -6199,11 +6307,7 @@ + ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' + ac_compiler_gnu=$ac_cv_c_compiler_gnu + +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + + int +@@ -6214,38 +6318,13 @@ + return 0; + } + _ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (ac_try="$ac_link" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_link") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest$ac_exeext && { +- test "$cross_compiling" = yes || +- $as_test_x conftest$ac_exeext +- }; then ++if ac_fn_c_try_link "$LINENO"; then : + lt_cv_cc_needs_belf=yes + else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- lt_cv_cc_needs_belf=no ++ lt_cv_cc_needs_belf=no + fi +- +-rm -rf conftest.dSYM +-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +- conftest$ac_exeext conftest.$ac_ext ++rm -f core conftest.err conftest.$ac_objext \ ++ conftest$ac_exeext conftest.$ac_ext + ac_ext=c + ac_cpp='$CPP $CPPFLAGS' + ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +@@ -6253,7 +6332,7 @@ + ac_compiler_gnu=$ac_cv_c_compiler_gnu + + fi +-{ $as_echo "$as_me:$LINENO: result: $lt_cv_cc_needs_belf" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5 + $as_echo "$lt_cv_cc_needs_belf" >&6; } + if test x"$lt_cv_cc_needs_belf" != x"yes"; then + # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf +@@ -6263,11 +6342,11 @@ + sparc*-*solaris*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext +- if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ++ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; then ++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 ++ test $ac_status = 0; }; then + case `/usr/bin/file conftest.o` in + *64-bit*) + case $lt_cv_prog_gnu_ld in +@@ -6293,9 +6372,9 @@ + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args. + set dummy ${ac_tool_prefix}dsymutil; ac_word=$2 +-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 + $as_echo_n "checking for $ac_word... " >&6; } +-if test "${ac_cv_prog_DSYMUTIL+set}" = set; then ++if test "${ac_cv_prog_DSYMUTIL+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + if test -n "$DSYMUTIL"; then +@@ -6306,24 +6385,24 @@ + do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. +- for ac_exec_ext in '' $ac_executable_extensions; do ++ for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil" +- $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi + done +-done ++ done + IFS=$as_save_IFS + + fi + fi + DSYMUTIL=$ac_cv_prog_DSYMUTIL + if test -n "$DSYMUTIL"; then +- { $as_echo "$as_me:$LINENO: result: $DSYMUTIL" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5 + $as_echo "$DSYMUTIL" >&6; } + else +- { $as_echo "$as_me:$LINENO: result: no" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + $as_echo "no" >&6; } + fi + +@@ -6333,9 +6412,9 @@ + ac_ct_DSYMUTIL=$DSYMUTIL + # Extract the first word of "dsymutil", so it can be a program name with args. + set dummy dsymutil; ac_word=$2 +-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 + $as_echo_n "checking for $ac_word... " >&6; } +-if test "${ac_cv_prog_ac_ct_DSYMUTIL+set}" = set; then ++if test "${ac_cv_prog_ac_ct_DSYMUTIL+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + if test -n "$ac_ct_DSYMUTIL"; then +@@ -6346,24 +6425,24 @@ + do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. +- for ac_exec_ext in '' $ac_executable_extensions; do ++ for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_DSYMUTIL="dsymutil" +- $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi + done +-done ++ done + IFS=$as_save_IFS + + fi + fi + ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL + if test -n "$ac_ct_DSYMUTIL"; then +- { $as_echo "$as_me:$LINENO: result: $ac_ct_DSYMUTIL" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5 + $as_echo "$ac_ct_DSYMUTIL" >&6; } + else +- { $as_echo "$as_me:$LINENO: result: no" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + $as_echo "no" >&6; } + fi + +@@ -6372,7 +6451,7 @@ + else + case $cross_compiling:$ac_tool_warned in + yes:) +-{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 + $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} + ac_tool_warned=yes ;; + esac +@@ -6385,9 +6464,9 @@ + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args. + set dummy ${ac_tool_prefix}nmedit; ac_word=$2 +-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 + $as_echo_n "checking for $ac_word... " >&6; } +-if test "${ac_cv_prog_NMEDIT+set}" = set; then ++if test "${ac_cv_prog_NMEDIT+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + if test -n "$NMEDIT"; then +@@ -6398,24 +6477,24 @@ + do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. +- for ac_exec_ext in '' $ac_executable_extensions; do ++ for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit" +- $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi + done +-done ++ done + IFS=$as_save_IFS + + fi + fi + NMEDIT=$ac_cv_prog_NMEDIT + if test -n "$NMEDIT"; then +- { $as_echo "$as_me:$LINENO: result: $NMEDIT" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5 + $as_echo "$NMEDIT" >&6; } + else +- { $as_echo "$as_me:$LINENO: result: no" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + $as_echo "no" >&6; } + fi + +@@ -6425,9 +6504,9 @@ + ac_ct_NMEDIT=$NMEDIT + # Extract the first word of "nmedit", so it can be a program name with args. + set dummy nmedit; ac_word=$2 +-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 + $as_echo_n "checking for $ac_word... " >&6; } +-if test "${ac_cv_prog_ac_ct_NMEDIT+set}" = set; then ++if test "${ac_cv_prog_ac_ct_NMEDIT+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + if test -n "$ac_ct_NMEDIT"; then +@@ -6438,24 +6517,24 @@ + do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. +- for ac_exec_ext in '' $ac_executable_extensions; do ++ for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_NMEDIT="nmedit" +- $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi + done +-done ++ done + IFS=$as_save_IFS + + fi + fi + ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT + if test -n "$ac_ct_NMEDIT"; then +- { $as_echo "$as_me:$LINENO: result: $ac_ct_NMEDIT" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5 + $as_echo "$ac_ct_NMEDIT" >&6; } + else +- { $as_echo "$as_me:$LINENO: result: no" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + $as_echo "no" >&6; } + fi + +@@ -6464,7 +6543,7 @@ + else + case $cross_compiling:$ac_tool_warned in + yes:) +-{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 + $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} + ac_tool_warned=yes ;; + esac +@@ -6477,9 +6556,9 @@ + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args. + set dummy ${ac_tool_prefix}lipo; ac_word=$2 +-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 + $as_echo_n "checking for $ac_word... " >&6; } +-if test "${ac_cv_prog_LIPO+set}" = set; then ++if test "${ac_cv_prog_LIPO+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + if test -n "$LIPO"; then +@@ -6490,24 +6569,24 @@ + do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. +- for ac_exec_ext in '' $ac_executable_extensions; do ++ for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_LIPO="${ac_tool_prefix}lipo" +- $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi + done +-done ++ done + IFS=$as_save_IFS + + fi + fi + LIPO=$ac_cv_prog_LIPO + if test -n "$LIPO"; then +- { $as_echo "$as_me:$LINENO: result: $LIPO" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5 + $as_echo "$LIPO" >&6; } + else +- { $as_echo "$as_me:$LINENO: result: no" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + $as_echo "no" >&6; } + fi + +@@ -6517,9 +6596,9 @@ + ac_ct_LIPO=$LIPO + # Extract the first word of "lipo", so it can be a program name with args. + set dummy lipo; ac_word=$2 +-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 + $as_echo_n "checking for $ac_word... " >&6; } +-if test "${ac_cv_prog_ac_ct_LIPO+set}" = set; then ++if test "${ac_cv_prog_ac_ct_LIPO+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + if test -n "$ac_ct_LIPO"; then +@@ -6530,24 +6609,24 @@ + do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. +- for ac_exec_ext in '' $ac_executable_extensions; do ++ for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_LIPO="lipo" +- $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi + done +-done ++ done + IFS=$as_save_IFS + + fi + fi + ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO + if test -n "$ac_ct_LIPO"; then +- { $as_echo "$as_me:$LINENO: result: $ac_ct_LIPO" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5 + $as_echo "$ac_ct_LIPO" >&6; } + else +- { $as_echo "$as_me:$LINENO: result: no" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + $as_echo "no" >&6; } + fi + +@@ -6556,7 +6635,7 @@ + else + case $cross_compiling:$ac_tool_warned in + yes:) +-{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 + $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} + ac_tool_warned=yes ;; + esac +@@ -6569,9 +6648,9 @@ + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args. + set dummy ${ac_tool_prefix}otool; ac_word=$2 +-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 + $as_echo_n "checking for $ac_word... " >&6; } +-if test "${ac_cv_prog_OTOOL+set}" = set; then ++if test "${ac_cv_prog_OTOOL+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + if test -n "$OTOOL"; then +@@ -6582,24 +6661,24 @@ + do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. +- for ac_exec_ext in '' $ac_executable_extensions; do ++ for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_OTOOL="${ac_tool_prefix}otool" +- $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi + done +-done ++ done + IFS=$as_save_IFS + + fi + fi + OTOOL=$ac_cv_prog_OTOOL + if test -n "$OTOOL"; then +- { $as_echo "$as_me:$LINENO: result: $OTOOL" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5 + $as_echo "$OTOOL" >&6; } + else +- { $as_echo "$as_me:$LINENO: result: no" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + $as_echo "no" >&6; } + fi + +@@ -6609,9 +6688,9 @@ + ac_ct_OTOOL=$OTOOL + # Extract the first word of "otool", so it can be a program name with args. + set dummy otool; ac_word=$2 +-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 + $as_echo_n "checking for $ac_word... " >&6; } +-if test "${ac_cv_prog_ac_ct_OTOOL+set}" = set; then ++if test "${ac_cv_prog_ac_ct_OTOOL+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + if test -n "$ac_ct_OTOOL"; then +@@ -6622,24 +6701,24 @@ + do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. +- for ac_exec_ext in '' $ac_executable_extensions; do ++ for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_OTOOL="otool" +- $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi + done +-done ++ done + IFS=$as_save_IFS + + fi + fi + ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL + if test -n "$ac_ct_OTOOL"; then +- { $as_echo "$as_me:$LINENO: result: $ac_ct_OTOOL" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5 + $as_echo "$ac_ct_OTOOL" >&6; } + else +- { $as_echo "$as_me:$LINENO: result: no" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + $as_echo "no" >&6; } + fi + +@@ -6648,7 +6727,7 @@ + else + case $cross_compiling:$ac_tool_warned in + yes:) +-{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 + $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} + ac_tool_warned=yes ;; + esac +@@ -6661,9 +6740,9 @@ + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args. + set dummy ${ac_tool_prefix}otool64; ac_word=$2 +-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 + $as_echo_n "checking for $ac_word... " >&6; } +-if test "${ac_cv_prog_OTOOL64+set}" = set; then ++if test "${ac_cv_prog_OTOOL64+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + if test -n "$OTOOL64"; then +@@ -6674,24 +6753,24 @@ + do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. +- for ac_exec_ext in '' $ac_executable_extensions; do ++ for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64" +- $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi + done +-done ++ done + IFS=$as_save_IFS + + fi + fi + OTOOL64=$ac_cv_prog_OTOOL64 + if test -n "$OTOOL64"; then +- { $as_echo "$as_me:$LINENO: result: $OTOOL64" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5 + $as_echo "$OTOOL64" >&6; } + else +- { $as_echo "$as_me:$LINENO: result: no" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + $as_echo "no" >&6; } + fi + +@@ -6701,9 +6780,9 @@ + ac_ct_OTOOL64=$OTOOL64 + # Extract the first word of "otool64", so it can be a program name with args. + set dummy otool64; ac_word=$2 +-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 + $as_echo_n "checking for $ac_word... " >&6; } +-if test "${ac_cv_prog_ac_ct_OTOOL64+set}" = set; then ++if test "${ac_cv_prog_ac_ct_OTOOL64+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + if test -n "$ac_ct_OTOOL64"; then +@@ -6714,24 +6793,24 @@ + do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. +- for ac_exec_ext in '' $ac_executable_extensions; do ++ for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_OTOOL64="otool64" +- $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi + done +-done ++ done + IFS=$as_save_IFS + + fi + fi + ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64 + if test -n "$ac_ct_OTOOL64"; then +- { $as_echo "$as_me:$LINENO: result: $ac_ct_OTOOL64" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5 + $as_echo "$ac_ct_OTOOL64" >&6; } + else +- { $as_echo "$as_me:$LINENO: result: no" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + $as_echo "no" >&6; } + fi + +@@ -6740,7 +6819,7 @@ + else + case $cross_compiling:$ac_tool_warned in + yes:) +-{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 + $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} + ac_tool_warned=yes ;; + esac +@@ -6776,9 +6855,9 @@ + + + +- { $as_echo "$as_me:$LINENO: checking for -single_module linker flag" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5 + $as_echo_n "checking for -single_module linker flag... " >&6; } +-if test "${lt_cv_apple_cc_single_mod+set}" = set; then ++if test "${lt_cv_apple_cc_single_mod+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + lt_cv_apple_cc_single_mod=no +@@ -6803,22 +6882,18 @@ + rm -f conftest.* + fi + fi +-{ $as_echo "$as_me:$LINENO: result: $lt_cv_apple_cc_single_mod" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5 + $as_echo "$lt_cv_apple_cc_single_mod" >&6; } +- { $as_echo "$as_me:$LINENO: checking for -exported_symbols_list linker flag" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5 + $as_echo_n "checking for -exported_symbols_list linker flag... " >&6; } +-if test "${lt_cv_ld_exported_symbols_list+set}" = set; then ++if test "${lt_cv_ld_exported_symbols_list+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + lt_cv_ld_exported_symbols_list=no + save_LDFLAGS=$LDFLAGS + echo "_main" > conftest.sym + LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + + int +@@ -6829,43 +6904,50 @@ + return 0; + } + _ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (ac_try="$ac_link" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_link") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest$ac_exeext && { +- test "$cross_compiling" = yes || +- $as_test_x conftest$ac_exeext +- }; then ++if ac_fn_c_try_link "$LINENO"; then : + lt_cv_ld_exported_symbols_list=yes + else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- lt_cv_ld_exported_symbols_list=no ++ lt_cv_ld_exported_symbols_list=no + fi +- +-rm -rf conftest.dSYM +-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +- conftest$ac_exeext conftest.$ac_ext ++rm -f core conftest.err conftest.$ac_objext \ ++ conftest$ac_exeext conftest.$ac_ext + LDFLAGS="$save_LDFLAGS" + + fi +-{ $as_echo "$as_me:$LINENO: result: $lt_cv_ld_exported_symbols_list" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5 + $as_echo "$lt_cv_ld_exported_symbols_list" >&6; } ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5 ++$as_echo_n "checking for -force_load linker flag... " >&6; } ++if test "${lt_cv_ld_force_load+set}" = set; then : ++ $as_echo_n "(cached) " >&6 ++else ++ lt_cv_ld_force_load=no ++ cat > conftest.c << _LT_EOF ++int forced_loaded() { return 2;} ++_LT_EOF ++ echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&5 ++ $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5 ++ echo "$AR cru libconftest.a conftest.o" >&5 ++ $AR cru libconftest.a conftest.o 2>&5 ++ echo "$RANLIB libconftest.a" >&5 ++ $RANLIB libconftest.a 2>&5 ++ cat > conftest.c << _LT_EOF ++int main() { return 0;} ++_LT_EOF ++ echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&5 ++ $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err ++ _lt_result=$? ++ if test -f conftest && test ! -s conftest.err && test $_lt_result = 0 && $GREP forced_load conftest 2>&1 >/dev/null; then ++ lt_cv_ld_force_load=yes ++ else ++ cat conftest.err >&5 ++ fi ++ rm -f conftest.err libconftest.a conftest conftest.c ++ rm -rf conftest.dSYM ++ ++fi ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5 ++$as_echo "$lt_cv_ld_force_load" >&6; } + case $host_os in + rhapsody* | darwin1.[012]) + _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; +@@ -6893,7 +6975,7 @@ + else + _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}' + fi +- if test "$DSYMUTIL" != ":"; then ++ if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then + _lt_dsymutil='~$DSYMUTIL $lib || :' + else + _lt_dsymutil= +@@ -6906,14 +6988,14 @@ + ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' + ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' + ac_compiler_gnu=$ac_cv_c_compiler_gnu +-{ $as_echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 + $as_echo_n "checking how to run the C preprocessor... " >&6; } + # On Suns, sometimes $CPP names a directory. + if test -n "$CPP" && test -d "$CPP"; then + CPP= + fi + if test -z "$CPP"; then +- if test "${ac_cv_prog_CPP+set}" = set; then ++ if test "${ac_cv_prog_CPP+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + # Double quotes because CPP needs to be expanded +@@ -6928,11 +7010,7 @@ + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + #ifdef __STDC__ + # include +@@ -6941,78 +7019,34 @@ + #endif + Syntax error + _ACEOF +-if { (ac_try="$ac_cpp conftest.$ac_ext" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } >/dev/null && { +- test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || +- test ! -s conftest.err +- }; then +- : +-else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 ++if ac_fn_c_try_cpp "$LINENO"; then : + ++else + # Broken: fails on valid input. + continue + fi +- + rm -f conftest.err conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + #include + _ACEOF +-if { (ac_try="$ac_cpp conftest.$ac_ext" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } >/dev/null && { +- test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || +- test ! -s conftest.err +- }; then ++if ac_fn_c_try_cpp "$LINENO"; then : + # Broken: success on invalid input. + continue + else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- + # Passes both tests. + ac_preproc_ok=: + break + fi +- + rm -f conftest.err conftest.$ac_ext + + done + # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. + rm -f conftest.err conftest.$ac_ext +-if $ac_preproc_ok; then ++if $ac_preproc_ok; then : + break + fi + +@@ -7024,7 +7058,7 @@ + else + ac_cv_prog_CPP=$CPP + fi +-{ $as_echo "$as_me:$LINENO: result: $CPP" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 + $as_echo "$CPP" >&6; } + ac_preproc_ok=false + for ac_c_preproc_warn_flag in '' yes +@@ -7035,11 +7069,7 @@ + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + #ifdef __STDC__ + # include +@@ -7048,87 +7078,40 @@ + #endif + Syntax error + _ACEOF +-if { (ac_try="$ac_cpp conftest.$ac_ext" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } >/dev/null && { +- test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || +- test ! -s conftest.err +- }; then +- : +-else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 ++if ac_fn_c_try_cpp "$LINENO"; then : + ++else + # Broken: fails on valid input. + continue + fi +- + rm -f conftest.err conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + #include + _ACEOF +-if { (ac_try="$ac_cpp conftest.$ac_ext" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } >/dev/null && { +- test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || +- test ! -s conftest.err +- }; then ++if ac_fn_c_try_cpp "$LINENO"; then : + # Broken: success on invalid input. + continue + else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- + # Passes both tests. + ac_preproc_ok=: + break + fi +- + rm -f conftest.err conftest.$ac_ext + + done + # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. + rm -f conftest.err conftest.$ac_ext +-if $ac_preproc_ok; then +- : ++if $ac_preproc_ok; then : ++ + else +- { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 ++ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 + $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +-{ { $as_echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check +-See \`config.log' for more details." >&5 +-$as_echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check +-See \`config.log' for more details." >&2;} +- { (exit 1); exit 1; }; }; } ++as_fn_error $? "C preprocessor \"$CPP\" fails sanity check ++See \`config.log' for more details" "$LINENO" 5; } + fi + + ac_ext=c +@@ -7138,16 +7121,12 @@ + ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +-{ $as_echo "$as_me:$LINENO: checking for ANSI C header files" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 + $as_echo_n "checking for ANSI C header files... " >&6; } +-if test "${ac_cv_header_stdc+set}" = set; then ++if test "${ac_cv_header_stdc+set}" = set; then : + $as_echo_n "(cached) " >&6 + else +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + #include + #include +@@ -7162,48 +7141,23 @@ + return 0; + } + _ACEOF +-rm -f conftest.$ac_objext +-if { (ac_try="$ac_compile" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_compile") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest.$ac_objext; then ++if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_header_stdc=yes + else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- ac_cv_header_stdc=no ++ ac_cv_header_stdc=no + fi +- + rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + + if test $ac_cv_header_stdc = yes; then + # SunOS 4.x string.h does not declare mem*, contrary to ANSI. +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + #include + + _ACEOF + if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | +- $EGREP "memchr" >/dev/null 2>&1; then +- : ++ $EGREP "memchr" >/dev/null 2>&1; then : ++ + else + ac_cv_header_stdc=no + fi +@@ -7213,18 +7167,14 @@ + + if test $ac_cv_header_stdc = yes; then + # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + #include + + _ACEOF + if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | +- $EGREP "free" >/dev/null 2>&1; then +- : ++ $EGREP "free" >/dev/null 2>&1; then : ++ + else + ac_cv_header_stdc=no + fi +@@ -7234,14 +7184,10 @@ + + if test $ac_cv_header_stdc = yes; then + # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. +- if test "$cross_compiling" = yes; then ++ if test "$cross_compiling" = yes; then : + : + else +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + #include + #include +@@ -7268,118 +7214,33 @@ + return 0; + } + _ACEOF +-rm -f conftest$ac_exeext +-if { (ac_try="$ac_link" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_link") 2>&5 +- ac_status=$? +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { ac_try='./conftest$ac_exeext' +- { (case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_try") 2>&5 +- ac_status=$? +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- : +-else +- $as_echo "$as_me: program exited with status $ac_status" >&5 +-$as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 ++if ac_fn_c_try_run "$LINENO"; then : + +-( exit $ac_status ) +-ac_cv_header_stdc=no ++else ++ ac_cv_header_stdc=no + fi +-rm -rf conftest.dSYM +-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext ++rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ ++ conftest.$ac_objext conftest.beam conftest.$ac_ext + fi + +- + fi + fi +-{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 + $as_echo "$ac_cv_header_stdc" >&6; } + if test $ac_cv_header_stdc = yes; then + +-cat >>confdefs.h <<\_ACEOF +-#define STDC_HEADERS 1 +-_ACEOF ++$as_echo "#define STDC_HEADERS 1" >>confdefs.h + + fi + + # On IRIX 5.3, sys/types and inttypes.h are conflicting. +- +- +- +- +- +- +- +- +- + for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ + inttypes.h stdint.h unistd.h +-do +-as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +-{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 +-$as_echo_n "checking for $ac_header... " >&6; } +-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then +- $as_echo_n "(cached) " >&6 +-else +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-$ac_includes_default +- +-#include <$ac_header> +-_ACEOF +-rm -f conftest.$ac_objext +-if { (ac_try="$ac_compile" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_compile") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest.$ac_objext; then +- eval "$as_ac_Header=yes" +-else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- eval "$as_ac_Header=no" +-fi +- +-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +-fi +-ac_res=`eval 'as_val=${'$as_ac_Header'} +- $as_echo "$as_val"'` +- { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 +-$as_echo "$ac_res" >&6; } +-as_val=`eval 'as_val=${'$as_ac_Header'} +- $as_echo "$as_val"'` +- if test "x$as_val" = x""yes; then ++do : ++ as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ++ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default ++" ++if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF + #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 + _ACEOF +@@ -7389,62 +7250,13 @@ + done + + +- + for ac_header in dlfcn.h +-do +-as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +-{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 +-$as_echo_n "checking for $ac_header... " >&6; } +-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then +- $as_echo_n "(cached) " >&6 +-else +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-$ac_includes_default +- +-#include <$ac_header> +-_ACEOF +-rm -f conftest.$ac_objext +-if { (ac_try="$ac_compile" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_compile") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest.$ac_objext; then +- eval "$as_ac_Header=yes" +-else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- eval "$as_ac_Header=no" +-fi +- +-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +-fi +-ac_res=`eval 'as_val=${'$as_ac_Header'} +- $as_echo "$as_val"'` +- { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 +-$as_echo "$ac_res" >&6; } +-as_val=`eval 'as_val=${'$as_ac_Header'} +- $as_echo "$as_val"'` +- if test "x$as_val" = x""yes; then ++do : ++ ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default ++" ++if test "x$ac_cv_header_dlfcn_h" = x""yes; then : + cat >>confdefs.h <<_ACEOF +-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 ++#define HAVE_DLFCN_H 1 + _ACEOF + + fi +@@ -7453,6 +7265,8 @@ + + + ++ ++ + # Set options + + +@@ -7462,7 +7276,7 @@ + + + # Check whether --enable-shared was given. +-if test "${enable_shared+set}" = set; then ++if test "${enable_shared+set}" = set; then : + enableval=$enable_shared; p=${PACKAGE-default} + case $enableval in + yes) enable_shared=yes ;; +@@ -7493,7 +7307,7 @@ + + + # Check whether --enable-static was given. +-if test "${enable_static+set}" = set; then ++if test "${enable_static+set}" = set; then : + enableval=$enable_static; p=${PACKAGE-default} + case $enableval in + yes) enable_static=yes ;; +@@ -7525,7 +7339,7 @@ + + + # Check whether --with-pic was given. +-if test "${with_pic+set}" = set; then ++if test "${with_pic+set}" = set; then : + withval=$with_pic; pic_mode="$withval" + else + pic_mode=default +@@ -7541,7 +7355,7 @@ + + + # Check whether --enable-fast-install was given. +-if test "${enable_fast_install+set}" = set; then ++if test "${enable_fast_install+set}" = set; then : + enableval=$enable_fast_install; p=${PACKAGE-default} + case $enableval in + yes) enable_fast_install=yes ;; +@@ -7603,6 +7417,7 @@ + + + ++ + test -z "$LN_S" && LN_S="ln -s" + + +@@ -7622,9 +7437,9 @@ + setopt NO_GLOB_SUBST + fi + +-{ $as_echo "$as_me:$LINENO: checking for objdir" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5 + $as_echo_n "checking for objdir... " >&6; } +-if test "${lt_cv_objdir+set}" = set; then ++if test "${lt_cv_objdir+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + rm -f .libs 2>/dev/null +@@ -7637,7 +7452,7 @@ + fi + rmdir .libs 2>/dev/null + fi +-{ $as_echo "$as_me:$LINENO: result: $lt_cv_objdir" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5 + $as_echo "$lt_cv_objdir" >&6; } + objdir=$lt_cv_objdir + +@@ -7652,19 +7467,6 @@ + + + +- +- +- +- +- +- +- +- +- +- +- +- +- + case $host_os in + aix3*) + # AIX sometimes has problems with the GCC collect2 program. For some +@@ -7677,23 +7479,6 @@ + ;; + esac + +-# Sed substitution that helps us do robust quoting. It backslashifies +-# metacharacters that are still active within double-quoted strings. +-sed_quote_subst='s/\(["`$\\]\)/\\\1/g' +- +-# Same as above, but do not quote variable references. +-double_quote_subst='s/\(["`\\]\)/\\\1/g' +- +-# Sed substitution to delay expansion of an escaped shell variable in a +-# double_quote_subst'ed string. +-delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' +- +-# Sed substitution to delay expansion of an escaped single quote. +-delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' +- +-# Sed substitution to avoid accidental globbing in evaled expressions +-no_glob_subst='s/\*/\\\*/g' +- + # Global variables: + ofile=libtool + can_build_shared=yes +@@ -7722,7 +7507,7 @@ + *) break;; + esac + done +-cc_basename=`$ECHO "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` ++cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` + + + # Only perform the check for file, if the check method requires it +@@ -7730,9 +7515,9 @@ + case $deplibs_check_method in + file_magic*) + if test "$file_magic_cmd" = '$MAGIC_CMD'; then +- { $as_echo "$as_me:$LINENO: checking for ${ac_tool_prefix}file" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5 + $as_echo_n "checking for ${ac_tool_prefix}file... " >&6; } +-if test "${lt_cv_path_MAGIC_CMD+set}" = set; then ++if test "${lt_cv_path_MAGIC_CMD+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + case $MAGIC_CMD in +@@ -7783,10 +7568,10 @@ + + MAGIC_CMD="$lt_cv_path_MAGIC_CMD" + if test -n "$MAGIC_CMD"; then +- { $as_echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 + $as_echo "$MAGIC_CMD" >&6; } + else +- { $as_echo "$as_me:$LINENO: result: no" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + $as_echo "no" >&6; } + fi + +@@ -7796,9 +7581,9 @@ + + if test -z "$lt_cv_path_MAGIC_CMD"; then + if test -n "$ac_tool_prefix"; then +- { $as_echo "$as_me:$LINENO: checking for file" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for file" >&5 + $as_echo_n "checking for file... " >&6; } +-if test "${lt_cv_path_MAGIC_CMD+set}" = set; then ++if test "${lt_cv_path_MAGIC_CMD+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + case $MAGIC_CMD in +@@ -7849,10 +7634,10 @@ + + MAGIC_CMD="$lt_cv_path_MAGIC_CMD" + if test -n "$MAGIC_CMD"; then +- { $as_echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 + $as_echo "$MAGIC_CMD" >&6; } + else +- { $as_echo "$as_me:$LINENO: result: no" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + $as_echo "no" >&6; } + fi + +@@ -7927,11 +7712,16 @@ + lt_prog_compiler_no_builtin_flag= + + if test "$GCC" = yes; then +- lt_prog_compiler_no_builtin_flag=' -fno-builtin' ++ case $cc_basename in ++ nvcc*) ++ lt_prog_compiler_no_builtin_flag=' -Xcompiler -fno-builtin' ;; ++ *) ++ lt_prog_compiler_no_builtin_flag=' -fno-builtin' ;; ++ esac + +- { $as_echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 + $as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; } +-if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then ++if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + lt_cv_prog_compiler_rtti_exceptions=no +@@ -7947,15 +7737,15 @@ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` +- (eval echo "\"\$as_me:7950: $lt_compile\"" >&5) ++ (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 +- echo "$as_me:7954: \$? = $ac_status" >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. +- $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp ++ $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_rtti_exceptions=yes +@@ -7964,7 +7754,7 @@ + $RM conftest* + + fi +-{ $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 + $as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; } + + if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then +@@ -7984,7 +7774,7 @@ + lt_prog_compiler_pic= + lt_prog_compiler_static= + +-{ $as_echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 + $as_echo_n "checking for $compiler option to produce PIC... " >&6; } + + if test "$GCC" = yes; then +@@ -8033,6 +7823,12 @@ + lt_prog_compiler_pic='-fno-common' + ;; + ++ haiku*) ++ # PIC is the default for Haiku. ++ # The "-static" flag exists, but is broken. ++ lt_prog_compiler_static= ++ ;; ++ + hpux*) + # PIC is the default for 64-bit PA HP-UX, but not for 32-bit + # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag +@@ -8075,6 +7871,13 @@ + lt_prog_compiler_pic='-fPIC' + ;; + esac ++ ++ case $cc_basename in ++ nvcc*) # Cuda Compiler Driver 2.2 ++ lt_prog_compiler_wl='-Xlinker ' ++ lt_prog_compiler_pic='-Xcompiler -fPIC' ++ ;; ++ esac + else + # PORTME Check for flag to pass linker flags through the system compiler. + case $host_os in +@@ -8116,7 +7919,7 @@ + lt_prog_compiler_static='-non_shared' + ;; + +- linux* | k*bsd*-gnu) ++ linux* | k*bsd*-gnu | kopensolaris*-gnu) + case $cc_basename in + # old Intel for x86_64 which still supported -KPIC. + ecc*) +@@ -8137,7 +7940,7 @@ + lt_prog_compiler_pic='--shared' + lt_prog_compiler_static='--static' + ;; +- pgcc* | pgf77* | pgf90* | pgf95*) ++ pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) + # Portland Group compilers (*not* the Pentium gcc compiler, + # which looks to be a dead project) + lt_prog_compiler_wl='-Wl,' +@@ -8149,25 +7952,25 @@ + # All Alpha code is PIC. + lt_prog_compiler_static='-non_shared' + ;; +- xl*) +- # IBM XL C 8.0/Fortran 10.1 on PPC ++ xl* | bgxl* | bgf* | mpixl*) ++ # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-qpic' + lt_prog_compiler_static='-qstaticlink' + ;; + *) + case `$CC -V 2>&1 | sed 5q` in +- *Sun\ C*) +- # Sun C 5.9 ++ *Sun\ F* | *Sun*Fortran*) ++ # Sun Fortran 8.3 passes all unrecognized flags to the linker + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' +- lt_prog_compiler_wl='-Wl,' ++ lt_prog_compiler_wl='' + ;; +- *Sun\ F*) +- # Sun Fortran 8.3 passes all unrecognized flags to the linker ++ *Sun\ C*) ++ # Sun C 5.9 + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' +- lt_prog_compiler_wl='' ++ lt_prog_compiler_wl='-Wl,' + ;; + esac + ;; +@@ -8199,7 +8002,7 @@ + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + case $cc_basename in +- f77* | f90* | f95*) ++ f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) + lt_prog_compiler_wl='-Qoption ld ';; + *) + lt_prog_compiler_wl='-Wl,';; +@@ -8256,7 +8059,7 @@ + lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC" + ;; + esac +-{ $as_echo "$as_me:$LINENO: result: $lt_prog_compiler_pic" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_prog_compiler_pic" >&5 + $as_echo "$lt_prog_compiler_pic" >&6; } + + +@@ -8268,9 +8071,9 @@ + # Check to make sure the PIC flag actually works. + # + if test -n "$lt_prog_compiler_pic"; then +- { $as_echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 + $as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; } +-if test "${lt_cv_prog_compiler_pic_works+set}" = set; then ++if test "${lt_cv_prog_compiler_pic_works+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + lt_cv_prog_compiler_pic_works=no +@@ -8286,15 +8089,15 @@ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` +- (eval echo "\"\$as_me:8289: $lt_compile\"" >&5) ++ (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 +- echo "$as_me:8293: \$? = $ac_status" >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. +- $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp ++ $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_pic_works=yes +@@ -8303,7 +8106,7 @@ + $RM conftest* + + fi +-{ $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_pic_works" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5 + $as_echo "$lt_cv_prog_compiler_pic_works" >&6; } + + if test x"$lt_cv_prog_compiler_pic_works" = xyes; then +@@ -8327,9 +8130,9 @@ + # Check to make sure the static flag actually works. + # + wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\" +-{ $as_echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 + $as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } +-if test "${lt_cv_prog_compiler_static_works+set}" = set; then ++if test "${lt_cv_prog_compiler_static_works+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + lt_cv_prog_compiler_static_works=no +@@ -8342,7 +8145,7 @@ + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&5 +- $ECHO "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp ++ $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_static_works=yes +@@ -8355,7 +8158,7 @@ + LDFLAGS="$save_LDFLAGS" + + fi +-{ $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_static_works" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5 + $as_echo "$lt_cv_prog_compiler_static_works" >&6; } + + if test x"$lt_cv_prog_compiler_static_works" = xyes; then +@@ -8370,9 +8173,9 @@ + + + +- { $as_echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 + $as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } +-if test "${lt_cv_prog_compiler_c_o+set}" = set; then ++if test "${lt_cv_prog_compiler_c_o+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + lt_cv_prog_compiler_c_o=no +@@ -8391,16 +8194,16 @@ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` +- (eval echo "\"\$as_me:8394: $lt_compile\"" >&5) ++ (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 +- echo "$as_me:8398: \$? = $ac_status" >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings +- $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp ++ $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o=yes +@@ -8417,7 +8220,7 @@ + $RM conftest* + + fi +-{ $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 + $as_echo "$lt_cv_prog_compiler_c_o" >&6; } + + +@@ -8425,9 +8228,9 @@ + + + +- { $as_echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 + $as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } +-if test "${lt_cv_prog_compiler_c_o+set}" = set; then ++if test "${lt_cv_prog_compiler_c_o+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + lt_cv_prog_compiler_c_o=no +@@ -8446,16 +8249,16 @@ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` +- (eval echo "\"\$as_me:8449: $lt_compile\"" >&5) ++ (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 +- echo "$as_me:8453: \$? = $ac_status" >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings +- $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp ++ $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o=yes +@@ -8472,7 +8275,7 @@ + $RM conftest* + + fi +-{ $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 + $as_echo "$lt_cv_prog_compiler_c_o" >&6; } + + +@@ -8481,7 +8284,7 @@ + hard_links="nottested" + if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then + # do not overwrite the value of need_locks provided by the user +- { $as_echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 + $as_echo_n "checking if we can lock with hard links... " >&6; } + hard_links=yes + $RM conftest* +@@ -8489,10 +8292,10 @@ + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no +- { $as_echo "$as_me:$LINENO: result: $hard_links" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 + $as_echo "$hard_links" >&6; } + if test "$hard_links" = no; then +- { $as_echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 + $as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} + need_locks=warn + fi +@@ -8505,7 +8308,7 @@ + + + +- { $as_echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 + $as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } + + runpath_var= +@@ -8568,7 +8371,33 @@ + esac + + ld_shlibs=yes ++ ++ # On some targets, GNU ld is compatible enough with the native linker ++ # that we're better off using the native interface for both. ++ lt_use_gnu_ld_interface=no + if test "$with_gnu_ld" = yes; then ++ case $host_os in ++ aix*) ++ # The AIX port of GNU ld has always aspired to compatibility ++ # with the native linker. However, as the warning in the GNU ld ++ # block says, versions before 2.19.5* couldn't really create working ++ # shared libraries, regardless of the interface used. ++ case `$LD -v 2>&1` in ++ *\ \(GNU\ Binutils\)\ 2.19.5*) ;; ++ *\ \(GNU\ Binutils\)\ 2.[2-9]*) ;; ++ *\ \(GNU\ Binutils\)\ [3-9]*) ;; ++ *) ++ lt_use_gnu_ld_interface=yes ++ ;; ++ esac ++ ;; ++ *) ++ lt_use_gnu_ld_interface=yes ++ ;; ++ esac ++ fi ++ ++ if test "$lt_use_gnu_ld_interface" = yes; then + # If archive_cmds runs LD, not CC, wlarc should be empty + wlarc='${wl}' + +@@ -8586,6 +8415,7 @@ + fi + supports_anon_versioning=no + case `$LD -v 2>&1` in ++ *GNU\ gold*) supports_anon_versioning=yes ;; + *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 + *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... + *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... +@@ -8601,11 +8431,12 @@ + ld_shlibs=no + cat <<_LT_EOF 1>&2 + +-*** Warning: the GNU linker, at least up to release 2.9.1, is reported ++*** Warning: the GNU linker, at least up to release 2.19, is reported + *** to be unable to reliably create shared libraries on AIX. + *** Therefore, libtool is disabling shared libraries support. If you +-*** really care for shared libraries, you may want to modify your PATH +-*** so that a non-GNU linker is found, and then restart. ++*** really care for shared libraries, you may want to install binutils ++*** 2.20 or above, or modify your PATH so that a non-GNU linker is found. ++*** You will then need to restart the configuration process. + + _LT_EOF + fi +@@ -8641,6 +8472,7 @@ + # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless, + # as there is no search path for DLLs. + hardcode_libdir_flag_spec='-L$libdir' ++ export_dynamic_flag_spec='${wl}--export-all-symbols' + allow_undefined_flag=unsupported + always_export_symbols=no + enable_shared_with_static_runtimes=yes +@@ -8662,6 +8494,11 @@ + fi + ;; + ++ haiku*) ++ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' ++ link_all_deplibs=yes ++ ;; ++ + interix[3-9]*) + hardcode_direct=no + hardcode_shlibpath_var=no +@@ -8677,7 +8514,7 @@ + archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + +- gnu* | linux* | tpf* | k*bsd*-gnu) ++ gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) + tmp_diet=no + if test "$host_os" = linux-dietlibc; then + case $cc_basename in +@@ -8691,11 +8528,12 @@ + tmp_sharedflag='-shared' + case $cc_basename,$host_cpu in + pgcc*) # Portland Group C compiler +- whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' ++ whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag' + ;; +- pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers +- whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' ++ pgf77* | pgf90* | pgf95* | pgfortran*) ++ # Portland Group f77 and f90 compilers ++ whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag -Mnomain' ;; + ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 + tmp_addflag=' -i_dynamic' ;; +@@ -8706,13 +8544,17 @@ + lf95*) # Lahey Fortran 8.1 + whole_archive_flag_spec= + tmp_sharedflag='--shared' ;; +- xl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below) ++ xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below) + tmp_sharedflag='-qmkshrobj' + tmp_addflag= ;; ++ nvcc*) # Cuda Compiler Driver 2.2 ++ whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' ++ compiler_needs_object=yes ++ ;; + esac + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) # Sun C 5.9 +- whole_archive_flag_spec='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' ++ whole_archive_flag_spec='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + compiler_needs_object=yes + tmp_sharedflag='-G' ;; + *Sun\ F*) # Sun Fortran 8.3 +@@ -8728,17 +8570,17 @@ + fi + + case $cc_basename in +- xlf*) ++ xlf* | bgf* | bgxlf* | mpixlf*) + # IBM XL Fortran 10.1 on PPC cannot create shared libs itself + whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive' + hardcode_libdir_flag_spec= + hardcode_libdir_flag_spec_ld='-rpath $libdir' +- archive_cmds='$LD -shared $libobjs $deplibs $compiler_flags -soname $soname -o $lib' ++ archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' + if test "x$supports_anon_versioning" = xyes; then + archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ +- $LD -shared $libobjs $deplibs $compiler_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' ++ $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' + fi + ;; + esac +@@ -8859,8 +8701,10 @@ + else + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to AIX nm, but means don't demangle with GNU nm ++ # Also, AIX nm treats weak defined symbols like other global ++ # defined symbols, whereas GNU nm marks them as "W". + if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then +- export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' ++ export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + else + export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + fi +@@ -8947,11 +8791,7 @@ + allow_undefined_flag='-berok' + # Determine the default libpath from the value encoded in an + # empty executable. +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + + int +@@ -8962,27 +8802,7 @@ + return 0; + } + _ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (ac_try="$ac_link" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_link") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest$ac_exeext && { +- test "$cross_compiling" = yes || +- $as_test_x conftest$ac_exeext +- }; then ++if ac_fn_c_try_link "$LINENO"; then : + + lt_aix_libpath_sed=' + /Import File Strings/,/^$/ { +@@ -8996,20 +8816,13 @@ + if test -z "$aix_libpath"; then + aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + fi +-else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- + fi +- +-rm -rf conftest.dSYM +-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +- conftest$ac_exeext conftest.$ac_ext ++rm -f core conftest.err conftest.$ac_objext \ ++ conftest$ac_exeext conftest.$ac_ext + if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + + hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" +- archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then $ECHO "X${wl}${allow_undefined_flag}" | $Xsed; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" ++ archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' +@@ -9018,11 +8831,7 @@ + else + # Determine the default libpath from the value encoded in an + # empty executable. +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + + int +@@ -9033,27 +8842,7 @@ + return 0; + } + _ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (ac_try="$ac_link" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_link") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest$ac_exeext && { +- test "$cross_compiling" = yes || +- $as_test_x conftest$ac_exeext +- }; then ++if ac_fn_c_try_link "$LINENO"; then : + + lt_aix_libpath_sed=' + /Import File Strings/,/^$/ { +@@ -9067,16 +8856,9 @@ + if test -z "$aix_libpath"; then + aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + fi +-else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- + fi +- +-rm -rf conftest.dSYM +-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +- conftest$ac_exeext conftest.$ac_ext ++rm -f core conftest.err conftest.$ac_objext \ ++ conftest$ac_exeext conftest.$ac_ext + if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + + hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" +@@ -9084,8 +8866,13 @@ + # -berok will link without error, but may produce a broken library. + no_undefined_flag=' ${wl}-bernotok' + allow_undefined_flag=' ${wl}-berok' +- # Exported symbols can be pulled into shared objects from archives +- whole_archive_flag_spec='$convenience' ++ if test "$with_gnu_ld" = yes; then ++ # We only use this code for GNU lds that support --whole-archive. ++ whole_archive_flag_spec='${wl}--whole-archive$convenience ${wl}--no-whole-archive' ++ else ++ # Exported symbols can be pulled into shared objects from archives ++ whole_archive_flag_spec='$convenience' ++ fi + archive_cmds_need_lc=yes + # This is similar to how AIX traditionally builds its shared libraries. + archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' +@@ -9124,7 +8911,7 @@ + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=".dll" + # FIXME: Setting linknames here is a bad hack. +- archive_cmds='$CC -o $lib $libobjs $compiler_flags `$ECHO "X$deplibs" | $Xsed -e '\''s/ -lc$//'\''` -link -dll~linknames=' ++ archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' + # The linker will automatically build a .lib file if we build a DLL. + old_archive_from_new_cmds='true' + # FIXME: Should let the user specify the lib program. +@@ -9140,7 +8927,11 @@ + hardcode_direct=no + hardcode_automatic=yes + hardcode_shlibpath_var=unsupported +- whole_archive_flag_spec='' ++ if test "$lt_cv_ld_force_load" = "yes"; then ++ whole_archive_flag_spec='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' ++ else ++ whole_archive_flag_spec='' ++ fi + link_all_deplibs=yes + allow_undefined_flag="$_lt_dar_allow_undefined" + case $cc_basename in +@@ -9148,7 +8939,7 @@ + *) _lt_dar_can_shared=$GCC ;; + esac + if test "$_lt_dar_can_shared" = "yes"; then +- output_verbose_link_cmd=echo ++ output_verbose_link_cmd=func_echo_all + archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" + module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" + archive_expsym_cmds="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" +@@ -9214,7 +9005,7 @@ + ;; + + hpux10*) +- if test "$GCC" = yes -a "$with_gnu_ld" = no; then ++ if test "$GCC" = yes && test "$with_gnu_ld" = no; then + archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' +@@ -9233,7 +9024,7 @@ + ;; + + hpux11*) +- if test "$GCC" = yes -a "$with_gnu_ld" = no; then ++ if test "$GCC" = yes && test "$with_gnu_ld" = no; then + case $host_cpu in + hppa*64*) + archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' +@@ -9254,7 +9045,46 @@ + archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) +- archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ++ ++ # Older versions of the 11.00 compiler do not understand -b yet ++ # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5 ++$as_echo_n "checking if $CC understands -b... " >&6; } ++if test "${lt_cv_prog_compiler__b+set}" = set; then : ++ $as_echo_n "(cached) " >&6 ++else ++ lt_cv_prog_compiler__b=no ++ save_LDFLAGS="$LDFLAGS" ++ LDFLAGS="$LDFLAGS -b" ++ echo "$lt_simple_link_test_code" > conftest.$ac_ext ++ if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then ++ # The linker can only warn and ignore the option if not recognized ++ # So say no if there are warnings ++ if test -s conftest.err; then ++ # Append any errors to the config.log. ++ cat conftest.err 1>&5 ++ $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp ++ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 ++ if diff conftest.exp conftest.er2 >/dev/null; then ++ lt_cv_prog_compiler__b=yes ++ fi ++ else ++ lt_cv_prog_compiler__b=yes ++ fi ++ fi ++ $RM -r conftest* ++ LDFLAGS="$save_LDFLAGS" ++ ++fi ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5 ++$as_echo "$lt_cv_prog_compiler__b" >&6; } ++ ++if test x"$lt_cv_prog_compiler__b" = xyes; then ++ archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ++else ++ archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' ++fi ++ + ;; + esac + fi +@@ -9282,52 +9112,26 @@ + + irix5* | irix6* | nonstopux*) + if test "$GCC" = yes; then +- archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' ++ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + # Try to use the -exported_symbol ld option, if it does not + # work, assume that -exports_file does not work either and + # implicitly export all symbols. + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null" +- cat >conftest.$ac_ext <<_ACEOF ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ + int foo(void) {} + _ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (ac_try="$ac_link" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_link") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest$ac_exeext && { +- test "$cross_compiling" = yes || +- $as_test_x conftest$ac_exeext +- }; then +- archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib' +- +-else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- ++if ac_fn_c_try_link "$LINENO"; then : ++ archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib' + + fi +- +-rm -rf conftest.dSYM +-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +- conftest$ac_exeext conftest.$ac_ext ++rm -f core conftest.err conftest.$ac_objext \ ++ conftest$ac_exeext conftest.$ac_ext + LDFLAGS="$save_LDFLAGS" + else +- archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' +- archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib' ++ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' ++ archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib' + fi + archive_cmds_need_lc='no' + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' +@@ -9389,17 +9193,17 @@ + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + allow_undefined_flag=unsupported +- archive_cmds='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$ECHO DATA >> $output_objdir/$libname.def~$ECHO " SINGLE NONSHARED" >> $output_objdir/$libname.def~$ECHO EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' ++ archive_cmds='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~echo DATA >> $output_objdir/$libname.def~echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' + old_archive_from_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' + ;; + + osf3*) + if test "$GCC" = yes; then + allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' +- archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' ++ archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + allow_undefined_flag=' -expect_unresolved \*' +- archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' ++ archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' + fi + archive_cmds_need_lc='no' + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' +@@ -9409,13 +9213,13 @@ + osf4* | osf5*) # as osf3* with the addition of -msym flag + if test "$GCC" = yes; then + allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' +- archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' ++ archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + else + allow_undefined_flag=' -expect_unresolved \*' +- archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' ++ archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' + archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ +- $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp' ++ $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp' + + # Both c and cxx compiler support -rpath directly + hardcode_libdir_flag_spec='-rpath $libdir' +@@ -9579,7 +9383,7 @@ + fi + fi + +-{ $as_echo "$as_me:$LINENO: result: $ld_shlibs" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5 + $as_echo "$ld_shlibs" >&6; } + test "$ld_shlibs" = no && can_build_shared=no + +@@ -9616,46 +9420,52 @@ + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. +- { $as_echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 + $as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } +- $RM conftest* +- echo "$lt_simple_compile_test_code" > conftest.$ac_ext ++if test "${lt_cv_archive_cmds_need_lc+set}" = set; then : ++ $as_echo_n "(cached) " >&6 ++else ++ $RM conftest* ++ echo "$lt_simple_compile_test_code" > conftest.$ac_ext + +- if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ++ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } 2>conftest.err; then +- soname=conftest +- lib=conftest +- libobjs=conftest.$ac_objext +- deplibs= +- wl=$lt_prog_compiler_wl +- pic_flag=$lt_prog_compiler_pic +- compiler_flags=-v +- linker_flags=-v +- verstring= +- output_objdir=. +- libname=conftest +- lt_save_allow_undefined_flag=$allow_undefined_flag +- allow_undefined_flag= +- if { (eval echo "$as_me:$LINENO: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\"") >&5 ++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 ++ test $ac_status = 0; } 2>conftest.err; then ++ soname=conftest ++ lib=conftest ++ libobjs=conftest.$ac_objext ++ deplibs= ++ wl=$lt_prog_compiler_wl ++ pic_flag=$lt_prog_compiler_pic ++ compiler_flags=-v ++ linker_flags=-v ++ verstring= ++ output_objdir=. ++ libname=conftest ++ lt_save_allow_undefined_flag=$allow_undefined_flag ++ allow_undefined_flag= ++ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 + (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 + ac_status=$? +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } +- then +- archive_cmds_need_lc=no +- else +- archive_cmds_need_lc=yes +- fi +- allow_undefined_flag=$lt_save_allow_undefined_flag +- else +- cat conftest.err 1>&5 +- fi +- $RM conftest* +- { $as_echo "$as_me:$LINENO: result: $archive_cmds_need_lc" >&5 +-$as_echo "$archive_cmds_need_lc" >&6; } ++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 ++ test $ac_status = 0; } ++ then ++ lt_cv_archive_cmds_need_lc=no ++ else ++ lt_cv_archive_cmds_need_lc=yes ++ fi ++ allow_undefined_flag=$lt_save_allow_undefined_flag ++ else ++ cat conftest.err 1>&5 ++ fi ++ $RM conftest* ++ ++fi ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5 ++$as_echo "$lt_cv_archive_cmds_need_lc" >&6; } ++ archive_cmds_need_lc=$lt_cv_archive_cmds_need_lc + ;; + esac + fi +@@ -9818,7 +9628,7 @@ + + + +- { $as_echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 + $as_echo_n "checking dynamic linker characteristics... " >&6; } + + if test "$GCC" = yes; then +@@ -9826,16 +9636,23 @@ + darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; + *) lt_awk_arg="/^libraries:/" ;; + esac +- lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e "s,=/,/,g"` +- if $ECHO "$lt_search_path_spec" | $GREP ';' >/dev/null ; then ++ case $host_os in ++ mingw* | cegcc*) lt_sed_strip_eq="s,=\([A-Za-z]:\),\1,g" ;; ++ *) lt_sed_strip_eq="s,=/,/,g" ;; ++ esac ++ lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` ++ case $lt_search_path_spec in ++ *\;*) + # if the path contains ";" then we assume it to be the separator + # otherwise default to the standard path separator (i.e. ":") - it is + # assumed that no part of a normal pathname contains ";" but that should + # okay in the real world where ";" in dirpaths is itself problematic. +- lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED -e 's/;/ /g'` +- else +- lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` +- fi ++ lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` ++ ;; ++ *) ++ lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` ++ ;; ++ esac + # Ok, now we have the path, separated by spaces, we can step through it + # and add multilib dir if necessary. + lt_tmp_lt_search_path_spec= +@@ -9848,7 +9665,7 @@ + lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" + fi + done +- lt_search_path_spec=`$ECHO $lt_tmp_lt_search_path_spec | awk ' ++ lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' + BEGIN {RS=" "; FS="/|\n";} { + lt_foo=""; + lt_count=0; +@@ -9868,7 +9685,13 @@ + if (lt_foo != "") { lt_freq[lt_foo]++; } + if (lt_freq[lt_foo] == 1) { print lt_foo; } + }'` +- sys_lib_search_path_spec=`$ECHO $lt_search_path_spec` ++ # AWK program above erroneously prepends '/' to C:/dos/paths ++ # for these hosts. ++ case $host_os in ++ mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ ++ $SED 's,/\([A-Za-z]:\),\1,g'` ;; ++ esac ++ sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` + else + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" + fi +@@ -9956,7 +9779,7 @@ + m68k) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. +- finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$ECHO "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ++ finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + ;; + esac + ;; +@@ -10009,23 +9832,12 @@ + cygwin*) + # Cygwin DLLs use 'cyg' prefix rather than 'lib' + soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' +- sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" ++ ++ sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api" + ;; + mingw* | cegcc*) + # MinGW DLLs use traditional 'lib' prefix + soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' +- sys_lib_search_path_spec=`$CC -print-search-dirs | $GREP "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` +- if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then +- # It is most probably a Windows format PATH printed by +- # mingw gcc, but we are running on Cygwin. Gcc prints its search +- # path with ; separators, and with drive letters. We can handle the +- # drive letters (cygwin fileutils understands them), so leave them, +- # especially as we might pass files found there to a mingw objdump, +- # which wouldn't understand a cygwinified path. Ahh. +- sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` +- else +- sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` +- fi + ;; + pw32*) + # pw32 DLLs use 'pw' prefix rather than 'lib' +@@ -10125,6 +9937,19 @@ + hardcode_into_libs=yes + ;; + ++haiku*) ++ version_type=linux ++ need_lib_prefix=no ++ need_version=no ++ dynamic_linker="$host_os runtime_loader" ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ shlibpath_var=LIBRARY_PATH ++ shlibpath_overrides_runpath=yes ++ sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' ++ hardcode_into_libs=yes ++ ;; ++ + hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. +@@ -10167,8 +9992,10 @@ + soname_spec='${libname}${release}${shared_ext}$major' + ;; + esac +- # HP-UX runs *really* slowly unless shared libraries are mode 555. ++ # HP-UX runs *really* slowly unless shared libraries are mode 555, ... + postinstall_cmds='chmod 555 $lib' ++ # or fails outright, so override atomically: ++ install_override_mode=555 + ;; + + interix[3-9]*) +@@ -10226,7 +10053,7 @@ + ;; + + # This must be Linux ELF. +-linux* | k*bsd*-gnu) ++linux* | k*bsd*-gnu | kopensolaris*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no +@@ -10235,16 +10062,17 @@ + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no ++ + # Some binutils ld are patched to set DT_RUNPATH +- save_LDFLAGS=$LDFLAGS +- save_libdir=$libdir +- eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \ +- LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\"" +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF ++ if test "${lt_cv_shlibpath_overrides_runpath+set}" = set; then : ++ $as_echo_n "(cached) " >&6 ++else ++ lt_cv_shlibpath_overrides_runpath=no ++ save_LDFLAGS=$LDFLAGS ++ save_libdir=$libdir ++ eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \ ++ LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\"" ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + + int +@@ -10255,43 +10083,19 @@ + return 0; + } + _ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (ac_try="$ac_link" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_link") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest$ac_exeext && { +- test "$cross_compiling" = yes || +- $as_test_x conftest$ac_exeext +- }; then +- if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then +- shlibpath_overrides_runpath=yes ++if ac_fn_c_try_link "$LINENO"; then : ++ if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then : ++ lt_cv_shlibpath_overrides_runpath=yes + fi +- +-else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- ++fi ++rm -f core conftest.err conftest.$ac_objext \ ++ conftest$ac_exeext conftest.$ac_ext ++ LDFLAGS=$save_LDFLAGS ++ libdir=$save_libdir + + fi + +-rm -rf conftest.dSYM +-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +- conftest$ac_exeext conftest.$ac_ext +- LDFLAGS=$save_LDFLAGS +- libdir=$save_libdir ++ shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath + + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install +@@ -10303,8 +10107,9 @@ + + # Append ld.so.conf contents to the search path + if test -f /etc/ld.so.conf; then +- lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` ++ lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec $lt_ld_extra" ++ + fi + + # We used to test for /lib/ld.so.1 and disable shared libraries on +@@ -10504,7 +10309,7 @@ + dynamic_linker=no + ;; + esac +-{ $as_echo "$as_me:$LINENO: result: $dynamic_linker" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 + $as_echo "$dynamic_linker" >&6; } + test "$dynamic_linker" = no && can_build_shared=no + +@@ -10606,7 +10411,12 @@ + + + +- { $as_echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 ++ ++ ++ ++ ++ ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 + $as_echo_n "checking how to hardcode library paths into programs... " >&6; } + hardcode_action= + if test -n "$hardcode_libdir_flag_spec" || +@@ -10631,7 +10441,7 @@ + # directories. + hardcode_action=unsupported + fi +-{ $as_echo "$as_me:$LINENO: result: $hardcode_action" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5 + $as_echo "$hardcode_action" >&6; } + + if test "$hardcode_action" = relink || +@@ -10676,18 +10486,14 @@ + + darwin*) + # if libdl is installed we need to link against it +- { $as_echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 + $as_echo_n "checking for dlopen in -ldl... " >&6; } +-if test "${ac_cv_lib_dl_dlopen+set}" = set; then ++if test "${ac_cv_lib_dl_dlopen+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + ac_check_lib_save_LIBS=$LIBS + LIBS="-ldl $LIBS" +-cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF ++cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + + /* Override any GCC internal prototype to avoid an error. +@@ -10705,43 +10511,18 @@ + return 0; + } + _ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (ac_try="$ac_link" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_link") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest$ac_exeext && { +- test "$cross_compiling" = yes || +- $as_test_x conftest$ac_exeext +- }; then ++if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_dl_dlopen=yes + else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- ac_cv_lib_dl_dlopen=no ++ ac_cv_lib_dl_dlopen=no + fi +- +-rm -rf conftest.dSYM +-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +- conftest$ac_exeext conftest.$ac_ext ++rm -f core conftest.err conftest.$ac_objext \ ++ conftest$ac_exeext conftest.$ac_ext + LIBS=$ac_check_lib_save_LIBS + fi +-{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 + $as_echo "$ac_cv_lib_dl_dlopen" >&6; } +-if test "x$ac_cv_lib_dl_dlopen" = x""yes; then ++if test "x$ac_cv_lib_dl_dlopen" = x""yes; then : + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" + else + +@@ -10754,33 +10535,19 @@ + ;; + + *) +- { $as_echo "$as_me:$LINENO: checking for shl_load" >&5 +-$as_echo_n "checking for shl_load... " >&6; } +-if test "${ac_cv_func_shl_load+set}" = set; then ++ ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load" ++if test "x$ac_cv_func_shl_load" = x""yes; then : ++ lt_cv_dlopen="shl_load" ++else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5 ++$as_echo_n "checking for shl_load in -ldld... " >&6; } ++if test "${ac_cv_lib_dld_shl_load+set}" = set; then : + $as_echo_n "(cached) " >&6 + else +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF ++ ac_check_lib_save_LIBS=$LIBS ++LIBS="-ldld $LIBS" ++cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ +-/* Define shl_load to an innocuous variant, in case declares shl_load. +- For example, HP-UX 11i declares gettimeofday. */ +-#define shl_load innocuous_shl_load +- +-/* System header to define __stub macros and hopefully few prototypes, +- which can conflict with char shl_load (); below. +- Prefer to if __STDC__ is defined, since +- exists even on freestanding compilers. */ +- +-#ifdef __STDC__ +-# include +-#else +-# include +-#endif +- +-#undef shl_load + + /* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC +@@ -10789,13 +10556,6 @@ + extern "C" + #endif + char shl_load (); +-/* The GNU C library defines this for functions which it implements +- to always fail with ENOSYS. Some functions are actually named +- something starting with __ and the normal name is an alias. */ +-#if defined __stub_shl_load || defined __stub___shl_load +-choke me +-#endif +- + int + main () + { +@@ -10804,56 +10564,32 @@ + return 0; + } + _ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (ac_try="$ac_link" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_link") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest$ac_exeext && { +- test "$cross_compiling" = yes || +- $as_test_x conftest$ac_exeext +- }; then +- ac_cv_func_shl_load=yes ++if ac_fn_c_try_link "$LINENO"; then : ++ ac_cv_lib_dld_shl_load=yes + else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- ac_cv_func_shl_load=no ++ ac_cv_lib_dld_shl_load=no + fi +- +-rm -rf conftest.dSYM +-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +- conftest$ac_exeext conftest.$ac_ext ++rm -f core conftest.err conftest.$ac_objext \ ++ conftest$ac_exeext conftest.$ac_ext ++LIBS=$ac_check_lib_save_LIBS + fi +-{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5 +-$as_echo "$ac_cv_func_shl_load" >&6; } +-if test "x$ac_cv_func_shl_load" = x""yes; then +- lt_cv_dlopen="shl_load" ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5 ++$as_echo "$ac_cv_lib_dld_shl_load" >&6; } ++if test "x$ac_cv_lib_dld_shl_load" = x""yes; then : ++ lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld" + else +- { $as_echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5 +-$as_echo_n "checking for shl_load in -ldld... " >&6; } +-if test "${ac_cv_lib_dld_shl_load+set}" = set; then ++ ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen" ++if test "x$ac_cv_func_dlopen" = x""yes; then : ++ lt_cv_dlopen="dlopen" ++else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 ++$as_echo_n "checking for dlopen in -ldl... " >&6; } ++if test "${ac_cv_lib_dl_dlopen+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + ac_check_lib_save_LIBS=$LIBS +-LIBS="-ldld $LIBS" +-cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF ++LIBS="-ldl $LIBS" ++cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + + /* Override any GCC internal prototype to avoid an error. +@@ -10862,81 +10598,38 @@ + #ifdef __cplusplus + extern "C" + #endif +-char shl_load (); ++char dlopen (); + int + main () + { +-return shl_load (); ++return dlopen (); + ; + return 0; + } + _ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (ac_try="$ac_link" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_link") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest$ac_exeext && { +- test "$cross_compiling" = yes || +- $as_test_x conftest$ac_exeext +- }; then +- ac_cv_lib_dld_shl_load=yes ++if ac_fn_c_try_link "$LINENO"; then : ++ ac_cv_lib_dl_dlopen=yes + else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- ac_cv_lib_dld_shl_load=no ++ ac_cv_lib_dl_dlopen=no + fi +- +-rm -rf conftest.dSYM +-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +- conftest$ac_exeext conftest.$ac_ext ++rm -f core conftest.err conftest.$ac_objext \ ++ conftest$ac_exeext conftest.$ac_ext + LIBS=$ac_check_lib_save_LIBS + fi +-{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5 +-$as_echo "$ac_cv_lib_dld_shl_load" >&6; } +-if test "x$ac_cv_lib_dld_shl_load" = x""yes; then +- lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld" ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 ++$as_echo "$ac_cv_lib_dl_dlopen" >&6; } ++if test "x$ac_cv_lib_dl_dlopen" = x""yes; then : ++ lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" + else +- { $as_echo "$as_me:$LINENO: checking for dlopen" >&5 +-$as_echo_n "checking for dlopen... " >&6; } +-if test "${ac_cv_func_dlopen+set}" = set; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5 ++$as_echo_n "checking for dlopen in -lsvld... " >&6; } ++if test "${ac_cv_lib_svld_dlopen+set}" = set; then : + $as_echo_n "(cached) " >&6 + else +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF ++ ac_check_lib_save_LIBS=$LIBS ++LIBS="-lsvld $LIBS" ++cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ +-/* Define dlopen to an innocuous variant, in case declares dlopen. +- For example, HP-UX 11i declares gettimeofday. */ +-#define dlopen innocuous_dlopen +- +-/* System header to define __stub macros and hopefully few prototypes, +- which can conflict with char dlopen (); below. +- Prefer to if __STDC__ is defined, since +- exists even on freestanding compilers. */ +- +-#ifdef __STDC__ +-# include +-#else +-# include +-#endif +- +-#undef dlopen + + /* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC +@@ -10945,13 +10638,6 @@ + extern "C" + #endif + char dlopen (); +-/* The GNU C library defines this for functions which it implements +- to always fail with ENOSYS. Some functions are actually named +- something starting with __ and the normal name is an alias. */ +-#if defined __stub_dlopen || defined __stub___dlopen +-choke me +-#endif +- + int + main () + { +@@ -10960,192 +10646,28 @@ + return 0; + } + _ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (ac_try="$ac_link" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_link") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest$ac_exeext && { +- test "$cross_compiling" = yes || +- $as_test_x conftest$ac_exeext +- }; then +- ac_cv_func_dlopen=yes ++if ac_fn_c_try_link "$LINENO"; then : ++ ac_cv_lib_svld_dlopen=yes + else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- ac_cv_func_dlopen=no ++ ac_cv_lib_svld_dlopen=no + fi +- +-rm -rf conftest.dSYM +-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +- conftest$ac_exeext conftest.$ac_ext ++rm -f core conftest.err conftest.$ac_objext \ ++ conftest$ac_exeext conftest.$ac_ext ++LIBS=$ac_check_lib_save_LIBS + fi +-{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5 +-$as_echo "$ac_cv_func_dlopen" >&6; } +-if test "x$ac_cv_func_dlopen" = x""yes; then +- lt_cv_dlopen="dlopen" ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5 ++$as_echo "$ac_cv_lib_svld_dlopen" >&6; } ++if test "x$ac_cv_lib_svld_dlopen" = x""yes; then : ++ lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" + else +- { $as_echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 +-$as_echo_n "checking for dlopen in -ldl... " >&6; } +-if test "${ac_cv_lib_dl_dlopen+set}" = set; then +- $as_echo_n "(cached) " >&6 +-else +- ac_check_lib_save_LIBS=$LIBS +-LIBS="-ldl $LIBS" +-cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +- +-/* Override any GCC internal prototype to avoid an error. +- Use char because int might match the return type of a GCC +- builtin and then its argument prototype would still apply. */ +-#ifdef __cplusplus +-extern "C" +-#endif +-char dlopen (); +-int +-main () +-{ +-return dlopen (); +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (ac_try="$ac_link" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_link") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest$ac_exeext && { +- test "$cross_compiling" = yes || +- $as_test_x conftest$ac_exeext +- }; then +- ac_cv_lib_dl_dlopen=yes +-else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- ac_cv_lib_dl_dlopen=no +-fi +- +-rm -rf conftest.dSYM +-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +- conftest$ac_exeext conftest.$ac_ext +-LIBS=$ac_check_lib_save_LIBS +-fi +-{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 +-$as_echo "$ac_cv_lib_dl_dlopen" >&6; } +-if test "x$ac_cv_lib_dl_dlopen" = x""yes; then +- lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" +-else +- { $as_echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5 +-$as_echo_n "checking for dlopen in -lsvld... " >&6; } +-if test "${ac_cv_lib_svld_dlopen+set}" = set; then +- $as_echo_n "(cached) " >&6 +-else +- ac_check_lib_save_LIBS=$LIBS +-LIBS="-lsvld $LIBS" +-cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +- +-/* Override any GCC internal prototype to avoid an error. +- Use char because int might match the return type of a GCC +- builtin and then its argument prototype would still apply. */ +-#ifdef __cplusplus +-extern "C" +-#endif +-char dlopen (); +-int +-main () +-{ +-return dlopen (); +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (ac_try="$ac_link" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_link") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest$ac_exeext && { +- test "$cross_compiling" = yes || +- $as_test_x conftest$ac_exeext +- }; then +- ac_cv_lib_svld_dlopen=yes +-else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- ac_cv_lib_svld_dlopen=no +-fi +- +-rm -rf conftest.dSYM +-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +- conftest$ac_exeext conftest.$ac_ext +-LIBS=$ac_check_lib_save_LIBS +-fi +-{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5 +-$as_echo "$ac_cv_lib_svld_dlopen" >&6; } +-if test "x$ac_cv_lib_svld_dlopen" = x""yes; then +- lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" +-else +- { $as_echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5 + $as_echo_n "checking for dld_link in -ldld... " >&6; } +-if test "${ac_cv_lib_dld_dld_link+set}" = set; then ++if test "${ac_cv_lib_dld_dld_link+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + ac_check_lib_save_LIBS=$LIBS + LIBS="-ldld $LIBS" +-cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF ++cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + + /* Override any GCC internal prototype to avoid an error. +@@ -11163,43 +10685,18 @@ + return 0; + } + _ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (ac_try="$ac_link" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_link") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest$ac_exeext && { +- test "$cross_compiling" = yes || +- $as_test_x conftest$ac_exeext +- }; then ++if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_dld_dld_link=yes + else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- ac_cv_lib_dld_dld_link=no ++ ac_cv_lib_dld_dld_link=no + fi +- +-rm -rf conftest.dSYM +-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +- conftest$ac_exeext conftest.$ac_ext ++rm -f core conftest.err conftest.$ac_objext \ ++ conftest$ac_exeext conftest.$ac_ext + LIBS=$ac_check_lib_save_LIBS + fi +-{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5 + $as_echo "$ac_cv_lib_dld_dld_link" >&6; } +-if test "x$ac_cv_lib_dld_dld_link" = x""yes; then ++if test "x$ac_cv_lib_dld_dld_link" = x""yes; then : + lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld" + fi + +@@ -11238,9 +10735,9 @@ + save_LIBS="$LIBS" + LIBS="$lt_cv_dlopen_libs $LIBS" + +- { $as_echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5 + $as_echo_n "checking whether a program can dlopen itself... " >&6; } +-if test "${lt_cv_dlopen_self+set}" = set; then ++if test "${lt_cv_dlopen_self+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + if test "$cross_compiling" = yes; then : +@@ -11249,7 +10746,7 @@ + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +-#line 11252 "configure" ++#line $LINENO "configure" + #include "confdefs.h" + + #if HAVE_DLFCN_H +@@ -11290,7 +10787,13 @@ + # endif + #endif + +-void fnord() { int i=42;} ++/* When -fvisbility=hidden is used, assume the code has been annotated ++ correspondingly for the symbols needed. */ ++#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) ++void fnord () __attribute__((visibility("default"))); ++#endif ++ ++void fnord () { int i=42; } + int main () + { + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); +@@ -11299,7 +10802,11 @@ + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; +- else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; ++ else ++ { ++ if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; ++ else puts (dlerror ()); ++ } + /* dlclose (self); */ + } + else +@@ -11308,11 +10815,11 @@ + return status; + } + _LT_EOF +- if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 ++ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 + (eval $ac_link) 2>&5 + ac_status=$? +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then ++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 ++ test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then + (./conftest; exit; ) >&5 2>/dev/null + lt_status=$? + case x$lt_status in +@@ -11329,14 +10836,14 @@ + + + fi +-{ $as_echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5 + $as_echo "$lt_cv_dlopen_self" >&6; } + + if test "x$lt_cv_dlopen_self" = xyes; then + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" +- { $as_echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5 + $as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; } +-if test "${lt_cv_dlopen_self_static+set}" = set; then ++if test "${lt_cv_dlopen_self_static+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + if test "$cross_compiling" = yes; then : +@@ -11345,7 +10852,7 @@ + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +-#line 11348 "configure" ++#line $LINENO "configure" + #include "confdefs.h" + + #if HAVE_DLFCN_H +@@ -11386,7 +10893,13 @@ + # endif + #endif + +-void fnord() { int i=42;} ++/* When -fvisbility=hidden is used, assume the code has been annotated ++ correspondingly for the symbols needed. */ ++#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) ++void fnord () __attribute__((visibility("default"))); ++#endif ++ ++void fnord () { int i=42; } + int main () + { + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); +@@ -11395,7 +10908,11 @@ + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; +- else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; ++ else ++ { ++ if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; ++ else puts (dlerror ()); ++ } + /* dlclose (self); */ + } + else +@@ -11404,11 +10921,11 @@ + return status; + } + _LT_EOF +- if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 ++ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 + (eval $ac_link) 2>&5 + ac_status=$? +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then ++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 ++ test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then + (./conftest; exit; ) >&5 2>/dev/null + lt_status=$? + case x$lt_status in +@@ -11425,7 +10942,7 @@ + + + fi +-{ $as_echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5 + $as_echo "$lt_cv_dlopen_self_static" >&6; } + fi + +@@ -11464,12 +10981,12 @@ + + striplib= + old_striplib= +-{ $as_echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5 + $as_echo_n "checking whether stripping libraries is possible... " >&6; } + if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then + test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" + test -z "$striplib" && striplib="$STRIP --strip-unneeded" +- { $as_echo "$as_me:$LINENO: result: yes" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 + $as_echo "yes" >&6; } + else + # FIXME - insert some real tests, host_os isn't really good enough +@@ -11478,15 +10995,15 @@ + if test -n "$STRIP" ; then + striplib="$STRIP -x" + old_striplib="$STRIP -S" +- { $as_echo "$as_me:$LINENO: result: yes" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 + $as_echo "yes" >&6; } + else +- { $as_echo "$as_me:$LINENO: result: no" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + $as_echo "no" >&6; } + fi + ;; + *) +- { $as_echo "$as_me:$LINENO: result: no" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + $as_echo "no" >&6; } + ;; + esac +@@ -11504,12 +11021,12 @@ + + + # Report which library types will actually be built +- { $as_echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5 + $as_echo_n "checking if libtool supports shared libraries... " >&6; } +- { $as_echo "$as_me:$LINENO: result: $can_build_shared" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5 + $as_echo "$can_build_shared" >&6; } + +- { $as_echo "$as_me:$LINENO: checking whether to build shared libraries" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5 + $as_echo_n "checking whether to build shared libraries... " >&6; } + test "$can_build_shared" = "no" && enable_shared=no + +@@ -11530,14 +11047,14 @@ + fi + ;; + esac +- { $as_echo "$as_me:$LINENO: result: $enable_shared" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5 + $as_echo "$enable_shared" >&6; } + +- { $as_echo "$as_me:$LINENO: checking whether to build static libraries" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5 + $as_echo_n "checking whether to build static libraries... " >&6; } + # Make sure either enable_shared or enable_static is yes. + test "$enable_shared" = yes || enable_static=yes +- { $as_echo "$as_me:$LINENO: result: $enable_static" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5 + $as_echo "$enable_static" >&6; } + + +@@ -11578,9 +11095,9 @@ + # Josh Triplett + # Extract the first word of "bash", so it can be a program name with args. + set dummy bash; ac_word=$2 +-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 + $as_echo_n "checking for $ac_word... " >&6; } +-if test "${ac_cv_path_DOLT_BASH+set}" = set; then ++if test "${ac_cv_path_DOLT_BASH+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + case $DOLT_BASH in +@@ -11593,14 +11110,14 @@ + do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. +- for ac_exec_ext in '' $ac_executable_extensions; do ++ for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_DOLT_BASH="$as_dir/$ac_word$ac_exec_ext" +- $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi + done +-done ++ done + IFS=$as_save_IFS + + ;; +@@ -11608,15 +11125,15 @@ + fi + DOLT_BASH=$ac_cv_path_DOLT_BASH + if test -n "$DOLT_BASH"; then +- { $as_echo "$as_me:$LINENO: result: $DOLT_BASH" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DOLT_BASH" >&5 + $as_echo "$DOLT_BASH" >&6; } + else +- { $as_echo "$as_me:$LINENO: result: no" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + $as_echo "no" >&6; } + fi + + +-{ $as_echo "$as_me:$LINENO: checking if dolt supports this host" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if dolt supports this host" >&5 + $as_echo_n "checking if dolt supports this host... " >&6; } + dolt_supported=yes + if test x$DOLT_BASH = x; then +@@ -11631,12 +11148,12 @@ + *) dolt_supported=no ;; + esac + if test x$dolt_supported = xno ; then +- { $as_echo "$as_me:$LINENO: result: no, falling back to libtool" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, falling back to libtool" >&5 + $as_echo "no, falling back to libtool" >&6; } + LTCOMPILE='$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(COMPILE)' + LTCXXCOMPILE='$(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXXCOMPILE)' + else +- { $as_echo "$as_me:$LINENO: result: yes, replacing libtool" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes, replacing libtool" >&5 + $as_echo "yes, replacing libtool" >&6; } + + cat <<__DOLTCOMPILE__EOF__ >doltcompile +@@ -11734,11 +11251,11 @@ + + # end dolt + +-{ $as_echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 + $as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } + set x ${MAKE-make} + ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` +-if { as_var=ac_cv_prog_make_${ac_make}_set; eval "test \"\${$as_var+set}\" = set"; }; then ++if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\"" = set; then : + $as_echo_n "(cached) " >&6 + else + cat >conftest.make <<\_ACEOF +@@ -11746,7 +11263,7 @@ + all: + @echo '@@@%%%=$(MAKE)=@@@%%%' + _ACEOF +-# GNU make sometimes prints "make[1]: Entering...", which would confuse us. ++# GNU make sometimes prints "make[1]: Entering ...", which would confuse us. + case `${MAKE-make} -f conftest.make 2>/dev/null` in + *@@@%%%=?*=@@@%%%*) + eval ac_cv_prog_make_${ac_make}_set=yes;; +@@ -11756,11 +11273,11 @@ + rm -f conftest.make + fi + if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then +- { $as_echo "$as_me:$LINENO: result: yes" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 + $as_echo "yes" >&6; } + SET_MAKE= + else +- { $as_echo "$as_me:$LINENO: result: no" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + $as_echo "no" >&6; } + SET_MAKE="MAKE=${MAKE-make}" + fi +@@ -11782,13 +11299,21 @@ + OS_WIN32_FALSE= + fi + ++ if test "$os_win32-$enable_shared" = "yes-yes"; then ++ OS_WIN32_ENABLE_SHARED_TRUE= ++ OS_WIN32_ENABLE_SHARED_FALSE='#' ++else ++ OS_WIN32_ENABLE_SHARED_TRUE='#' ++ OS_WIN32_ENABLE_SHARED_FALSE= ++fi ++ + + if test "$os_win32" = "yes"; then + # Extract the first word of "lib.exe", so it can be a program name with args. + set dummy lib.exe; ac_word=$2 +-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 + $as_echo_n "checking for $ac_word... " >&6; } +-if test "${ac_cv_prog_ms_librarian+set}" = set; then ++if test "${ac_cv_prog_ms_librarian+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + if test -n "$ms_librarian"; then +@@ -11799,14 +11324,14 @@ + do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. +- for ac_exec_ext in '' $ac_executable_extensions; do ++ for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ms_librarian="yes" +- $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi + done +-done ++ done + IFS=$as_save_IFS + + test -z "$ac_cv_prog_ms_librarian" && ac_cv_prog_ms_librarian="no" +@@ -11814,10 +11339,10 @@ + fi + ms_librarian=$ac_cv_prog_ms_librarian + if test -n "$ms_librarian"; then +- { $as_echo "$as_me:$LINENO: result: $ms_librarian" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ms_librarian" >&5 + $as_echo "$ms_librarian" >&6; } + else +- { $as_echo "$as_me:$LINENO: result: no" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + $as_echo "no" >&6; } + fi + +@@ -11858,16 +11383,16 @@ + + + # Setup for compiling build tools (fc-glyphname, etc) +-{ $as_echo "$as_me:$LINENO: checking for a C compiler for build tools" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a C compiler for build tools" >&5 + $as_echo_n "checking for a C compiler for build tools... " >&6; } + if test $cross_compiling = yes; then + for ac_prog in gcc cc + do + # Extract the first word of "$ac_prog", so it can be a program name with args. + set dummy $ac_prog; ac_word=$2 +-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 + $as_echo_n "checking for $ac_word... " >&6; } +-if test "${ac_cv_prog_CC_FOR_BUILD+set}" = set; then ++if test "${ac_cv_prog_CC_FOR_BUILD+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + if test -n "$CC_FOR_BUILD"; then +@@ -11878,24 +11403,24 @@ + do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. +- for ac_exec_ext in '' $ac_executable_extensions; do ++ for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_CC_FOR_BUILD="$ac_prog" +- $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi + done +-done ++ done + IFS=$as_save_IFS + + fi + fi + CC_FOR_BUILD=$ac_cv_prog_CC_FOR_BUILD + if test -n "$CC_FOR_BUILD"; then +- { $as_echo "$as_me:$LINENO: result: $CC_FOR_BUILD" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC_FOR_BUILD" >&5 + $as_echo "$CC_FOR_BUILD" >&6; } + else +- { $as_echo "$as_me:$LINENO: result: no" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + $as_echo "no" >&6; } + fi + +@@ -11906,11 +11431,11 @@ + else + CC_FOR_BUILD=$CC + fi +-{ $as_echo "$as_me:$LINENO: result: $CC_FOR_BUILD" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC_FOR_BUILD" >&5 + $as_echo "$CC_FOR_BUILD" >&6; } + + +-{ $as_echo "$as_me:$LINENO: checking for suffix of executable build tools" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executable build tools" >&5 + $as_echo_n "checking for suffix of executable build tools... " >&6; } + if test $cross_compiling = yes; then + cat >conftest.c <<\_______EOF +@@ -11922,11 +11447,11 @@ + _______EOF + for i in .exe ""; do + compile="$CC_FOR_BUILD conftest.c -o conftest$i" +- if { (eval echo "$as_me:$LINENO: \"$compile\"") >&5 ++ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$compile\""; } >&5 + (eval $compile) 2>&5 + ac_status=$? +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; then ++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 ++ test $ac_status = 0; }; then + if (./conftest) 2>&5; then + EXEEXT_FOR_BUILD=$i + break +@@ -11935,21 +11460,19 @@ + done + rm -f conftest* + if test "${EXEEXT_FOR_BUILD+set}" != set; then +- { { $as_echo "$as_me:$LINENO: error: Cannot determine suffix of executable build tools" >&5 +-$as_echo "$as_me: error: Cannot determine suffix of executable build tools" >&2;} +- { (exit 1); exit 1; }; } ++ as_fn_error $? "Cannot determine suffix of executable build tools" "$LINENO" 5 + fi + else + EXEEXT_FOR_BUILD=$EXEEXT + fi +-{ $as_echo "$as_me:$LINENO: result: $EXEEXT_FOR_BUILD" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $EXEEXT_FOR_BUILD" >&5 + $as_echo "$EXEEXT_FOR_BUILD" >&6; } + + + + + # Check whether --with-arch was given. +-if test "${with_arch+set}" = set; then ++if test "${with_arch+set}" = set; then : + withval=$with_arch; arch="$withval" + else + arch=auto +@@ -11959,11 +11482,8 @@ + if test $cross_compiling = yes; then + case "$arch" in + auto) +- { { $as_echo "$as_me:$LINENO: error: Cannot autodetect architecture in cross compile environment +- Use --with-arch=ARCH to specify architecture" >&5 +-$as_echo "$as_me: error: Cannot autodetect architecture in cross compile environment +- Use --with-arch=ARCH to specify architecture" >&2;} +- { (exit 1); exit 1; }; } ++ as_fn_error $? "Cannot autodetect architecture in cross compile environment ++ Use --with-arch=ARCH to specify architecture" "$LINENO" 5 + ;; + esac + fi +@@ -11973,24 +11493,15 @@ + + + # Checks for header files. +- +- +- +- +- + ac_header_dirent=no + for ac_hdr in dirent.h sys/ndir.h sys/dir.h ndir.h; do + as_ac_Header=`$as_echo "ac_cv_header_dirent_$ac_hdr" | $as_tr_sh` +-{ $as_echo "$as_me:$LINENO: checking for $ac_hdr that defines DIR" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_hdr that defines DIR" >&5 + $as_echo_n "checking for $ac_hdr that defines DIR... " >&6; } +-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then ++if eval "test \"\${$as_ac_Header+set}\"" = set; then : + $as_echo_n "(cached) " >&6 + else +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + #include + #include <$ac_hdr> +@@ -12004,41 +11515,17 @@ + return 0; + } + _ACEOF +-rm -f conftest.$ac_objext +-if { (ac_try="$ac_compile" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_compile") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest.$ac_objext; then ++if ac_fn_c_try_compile "$LINENO"; then : + eval "$as_ac_Header=yes" + else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- eval "$as_ac_Header=no" ++ eval "$as_ac_Header=no" + fi +- + rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi +-ac_res=`eval 'as_val=${'$as_ac_Header'} +- $as_echo "$as_val"'` +- { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 ++eval ac_res=\$$as_ac_Header ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 + $as_echo "$ac_res" >&6; } +-as_val=`eval 'as_val=${'$as_ac_Header'} +- $as_echo "$as_val"'` +- if test "x$as_val" = x""yes; then ++if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF + #define `$as_echo "HAVE_$ac_hdr" | $as_tr_cpp` 1 + _ACEOF +@@ -12049,17 +11536,13 @@ + done + # Two versions of opendir et al. are in -ldir and -lx on SCO Xenix. + if test $ac_header_dirent = dirent.h; then +- { $as_echo "$as_me:$LINENO: checking for library containing opendir" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing opendir" >&5 + $as_echo_n "checking for library containing opendir... " >&6; } +-if test "${ac_cv_search_opendir+set}" = set; then ++if test "${ac_cv_search_opendir+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + ac_func_search_save_LIBS=$LIBS +-cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF ++cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + + /* Override any GCC internal prototype to avoid an error. +@@ -12084,70 +11567,39 @@ + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + fi +- rm -f conftest.$ac_objext conftest$ac_exeext +-if { (ac_try="$ac_link" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_link") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest$ac_exeext && { +- test "$cross_compiling" = yes || +- $as_test_x conftest$ac_exeext +- }; then ++ if ac_fn_c_try_link "$LINENO"; then : + ac_cv_search_opendir=$ac_res +-else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- + fi +- +-rm -rf conftest.dSYM +-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +- conftest$ac_exeext +- if test "${ac_cv_search_opendir+set}" = set; then ++rm -f core conftest.err conftest.$ac_objext \ ++ conftest$ac_exeext ++ if test "${ac_cv_search_opendir+set}" = set; then : + break + fi + done +-if test "${ac_cv_search_opendir+set}" = set; then +- : ++if test "${ac_cv_search_opendir+set}" = set; then : ++ + else + ac_cv_search_opendir=no + fi + rm conftest.$ac_ext + LIBS=$ac_func_search_save_LIBS + fi +-{ $as_echo "$as_me:$LINENO: result: $ac_cv_search_opendir" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_opendir" >&5 + $as_echo "$ac_cv_search_opendir" >&6; } + ac_res=$ac_cv_search_opendir +-if test "$ac_res" != no; then ++if test "$ac_res" != no; then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + + fi + + else +- { $as_echo "$as_me:$LINENO: checking for library containing opendir" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing opendir" >&5 + $as_echo_n "checking for library containing opendir... " >&6; } +-if test "${ac_cv_search_opendir+set}" = set; then ++if test "${ac_cv_search_opendir+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + ac_func_search_save_LIBS=$LIBS +-cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF ++cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + + /* Override any GCC internal prototype to avoid an error. +@@ -12172,70 +11624,39 @@ + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + fi +- rm -f conftest.$ac_objext conftest$ac_exeext +-if { (ac_try="$ac_link" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_link") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest$ac_exeext && { +- test "$cross_compiling" = yes || +- $as_test_x conftest$ac_exeext +- }; then ++ if ac_fn_c_try_link "$LINENO"; then : + ac_cv_search_opendir=$ac_res +-else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- + fi +- +-rm -rf conftest.dSYM +-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +- conftest$ac_exeext +- if test "${ac_cv_search_opendir+set}" = set; then ++rm -f core conftest.err conftest.$ac_objext \ ++ conftest$ac_exeext ++ if test "${ac_cv_search_opendir+set}" = set; then : + break + fi + done +-if test "${ac_cv_search_opendir+set}" = set; then +- : ++if test "${ac_cv_search_opendir+set}" = set; then : ++ + else + ac_cv_search_opendir=no + fi + rm conftest.$ac_ext + LIBS=$ac_func_search_save_LIBS + fi +-{ $as_echo "$as_me:$LINENO: result: $ac_cv_search_opendir" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_opendir" >&5 + $as_echo "$ac_cv_search_opendir" >&6; } + ac_res=$ac_cv_search_opendir +-if test "$ac_res" != no; then ++if test "$ac_res" != no; then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + + fi + + fi + +-{ $as_echo "$as_me:$LINENO: checking for ANSI C header files" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 + $as_echo_n "checking for ANSI C header files... " >&6; } +-if test "${ac_cv_header_stdc+set}" = set; then ++if test "${ac_cv_header_stdc+set}" = set; then : + $as_echo_n "(cached) " >&6 + else +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + #include + #include +@@ -12250,48 +11671,23 @@ + return 0; + } + _ACEOF +-rm -f conftest.$ac_objext +-if { (ac_try="$ac_compile" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_compile") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest.$ac_objext; then ++if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_header_stdc=yes + else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- ac_cv_header_stdc=no ++ ac_cv_header_stdc=no + fi +- + rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + + if test $ac_cv_header_stdc = yes; then + # SunOS 4.x string.h does not declare mem*, contrary to ANSI. +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + #include + + _ACEOF + if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | +- $EGREP "memchr" >/dev/null 2>&1; then +- : ++ $EGREP "memchr" >/dev/null 2>&1; then : ++ + else + ac_cv_header_stdc=no + fi +@@ -12301,18 +11697,14 @@ + + if test $ac_cv_header_stdc = yes; then + # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + #include + + _ACEOF + if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | +- $EGREP "free" >/dev/null 2>&1; then +- : ++ $EGREP "free" >/dev/null 2>&1; then : ++ + else + ac_cv_header_stdc=no + fi +@@ -12322,14 +11714,10 @@ + + if test $ac_cv_header_stdc = yes; then + # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. +- if test "$cross_compiling" = yes; then ++ if test "$cross_compiling" = yes; then : + : + else +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + #include + #include +@@ -12356,215 +11744,46 @@ + return 0; + } + _ACEOF +-rm -f conftest$ac_exeext +-if { (ac_try="$ac_link" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_link") 2>&5 +- ac_status=$? +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { ac_try='./conftest$ac_exeext' +- { (case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_try") 2>&5 +- ac_status=$? +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- : +-else +- $as_echo "$as_me: program exited with status $ac_status" >&5 +-$as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 ++if ac_fn_c_try_run "$LINENO"; then : + +-( exit $ac_status ) +-ac_cv_header_stdc=no ++else ++ ac_cv_header_stdc=no + fi +-rm -rf conftest.dSYM +-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext ++rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ ++ conftest.$ac_objext conftest.beam conftest.$ac_ext + fi + +- + fi + fi +-{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 + $as_echo "$ac_cv_header_stdc" >&6; } + if test $ac_cv_header_stdc = yes; then + +-cat >>confdefs.h <<\_ACEOF +-#define STDC_HEADERS 1 +-_ACEOF ++$as_echo "#define STDC_HEADERS 1" >>confdefs.h + + fi + ++for ac_header in fcntl.h stdlib.h string.h unistd.h ++do : ++ as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ++ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" ++if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : ++ cat >>confdefs.h <<_ACEOF ++#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 ++_ACEOF + ++fi + ++done + + +-for ac_header in fcntl.h stdlib.h string.h unistd.h +-do +-as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then +- { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 +-$as_echo_n "checking for $ac_header... " >&6; } +-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then ++# Checks for typedefs, structures, and compiler characteristics. ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming const" >&5 ++$as_echo_n "checking for an ANSI C-conforming const... " >&6; } ++if test "${ac_cv_c_const+set}" = set; then : + $as_echo_n "(cached) " >&6 +-fi +-ac_res=`eval 'as_val=${'$as_ac_Header'} +- $as_echo "$as_val"'` +- { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 +-$as_echo "$ac_res" >&6; } + else +- # Is the header compilable? +-{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5 +-$as_echo_n "checking $ac_header usability... " >&6; } +-cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-$ac_includes_default +-#include <$ac_header> +-_ACEOF +-rm -f conftest.$ac_objext +-if { (ac_try="$ac_compile" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_compile") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest.$ac_objext; then +- ac_header_compiler=yes +-else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- ac_header_compiler=no +-fi +- +-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +-{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +-$as_echo "$ac_header_compiler" >&6; } +- +-# Is the header present? +-{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5 +-$as_echo_n "checking $ac_header presence... " >&6; } +-cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-#include <$ac_header> +-_ACEOF +-if { (ac_try="$ac_cpp conftest.$ac_ext" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } >/dev/null && { +- test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || +- test ! -s conftest.err +- }; then +- ac_header_preproc=yes +-else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- ac_header_preproc=no +-fi +- +-rm -f conftest.err conftest.$ac_ext +-{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +-$as_echo "$ac_header_preproc" >&6; } +- +-# So? What about this header? +-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in +- yes:no: ) +- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +-$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} +- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +-$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} +- ac_header_preproc=yes +- ;; +- no:yes:* ) +- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +-$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} +- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +-$as_echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} +- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +-$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} +- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +-$as_echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} +- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +-$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} +- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +-$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} +- +- ;; +-esac +-{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 +-$as_echo_n "checking for $ac_header... " >&6; } +-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then +- $as_echo_n "(cached) " >&6 +-else +- eval "$as_ac_Header=\$ac_header_preproc" +-fi +-ac_res=`eval 'as_val=${'$as_ac_Header'} +- $as_echo "$as_val"'` +- { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 +-$as_echo "$ac_res" >&6; } +- +-fi +-as_val=`eval 'as_val=${'$as_ac_Header'} +- $as_echo "$as_val"'` +- if test "x$as_val" = x""yes; then +- cat >>confdefs.h <<_ACEOF +-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +-_ACEOF +- +-fi +- +-done +- +- +-# Checks for typedefs, structures, and compiler characteristics. +-{ $as_echo "$as_me:$LINENO: checking for an ANSI C-conforming const" >&5 +-$as_echo_n "checking for an ANSI C-conforming const... " >&6; } +-if test "${ac_cv_c_const+set}" = set; then +- $as_echo_n "(cached) " >&6 +-else +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + + int +@@ -12624,56 +11843,29 @@ + return 0; + } + _ACEOF +-rm -f conftest.$ac_objext +-if { (ac_try="$ac_compile" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_compile") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest.$ac_objext; then ++if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_c_const=yes + else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- ac_cv_c_const=no ++ ac_cv_c_const=no + fi +- + rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi +-{ $as_echo "$as_me:$LINENO: result: $ac_cv_c_const" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_const" >&5 + $as_echo "$ac_cv_c_const" >&6; } + if test $ac_cv_c_const = no; then + +-cat >>confdefs.h <<\_ACEOF +-#define const /**/ +-_ACEOF ++$as_echo "#define const /**/" >>confdefs.h + + fi + +-{ $as_echo "$as_me:$LINENO: checking for inline" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for inline" >&5 + $as_echo_n "checking for inline... " >&6; } +-if test "${ac_cv_c_inline+set}" = set; then ++if test "${ac_cv_c_inline+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + ac_cv_c_inline=no + for ac_kw in inline __inline__ __inline; do +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + #ifndef __cplusplus + typedef int foo_t; +@@ -12682,41 +11874,17 @@ + #endif + + _ACEOF +-rm -f conftest.$ac_objext +-if { (ac_try="$ac_compile" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_compile") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest.$ac_objext; then ++if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_c_inline=$ac_kw +-else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- + fi +- + rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + test "$ac_cv_c_inline" != no && break + done + + fi +-{ $as_echo "$as_me:$LINENO: result: $ac_cv_c_inline" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_inline" >&5 + $as_echo "$ac_cv_c_inline" >&6; } + +- + case $ac_cv_c_inline in + inline | yes) ;; + *) +@@ -12732,102 +11900,9 @@ + ;; + esac + +-{ $as_echo "$as_me:$LINENO: checking for pid_t" >&5 +-$as_echo_n "checking for pid_t... " >&6; } +-if test "${ac_cv_type_pid_t+set}" = set; then +- $as_echo_n "(cached) " >&6 +-else +- ac_cv_type_pid_t=no +-cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-$ac_includes_default +-int +-main () +-{ +-if (sizeof (pid_t)) +- return 0; +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext +-if { (ac_try="$ac_compile" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_compile") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest.$ac_objext; then +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-$ac_includes_default +-int +-main () +-{ +-if (sizeof ((pid_t))) +- return 0; +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext +-if { (ac_try="$ac_compile" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_compile") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest.$ac_objext; then +- : +-else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- ac_cv_type_pid_t=yes +-fi +- +-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +-else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- ++ac_fn_c_check_type "$LINENO" "pid_t" "ac_cv_type_pid_t" "$ac_includes_default" ++if test "x$ac_cv_type_pid_t" = x""yes; then : + +-fi +- +-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +-fi +-{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_pid_t" >&5 +-$as_echo "$ac_cv_type_pid_t" >&6; } +-if test "x$ac_cv_type_pid_t" = x""yes; then +- : + else + + cat >>confdefs.h <<_ACEOF +@@ -12838,462 +11913,69 @@ + + + # Checks for library functions. +- + for ac_func in vprintf +-do +-as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +-{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 +-$as_echo_n "checking for $ac_func... " >&6; } +-if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then +- $as_echo_n "(cached) " >&6 +-else +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ ++do : ++ ac_fn_c_check_func "$LINENO" "vprintf" "ac_cv_func_vprintf" ++if test "x$ac_cv_func_vprintf" = x""yes; then : ++ cat >>confdefs.h <<_ACEOF ++#define HAVE_VPRINTF 1 + _ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-/* Define $ac_func to an innocuous variant, in case declares $ac_func. +- For example, HP-UX 11i declares gettimeofday. */ +-#define $ac_func innocuous_$ac_func + +-/* System header to define __stub macros and hopefully few prototypes, +- which can conflict with char $ac_func (); below. +- Prefer to if __STDC__ is defined, since +- exists even on freestanding compilers. */ ++ac_fn_c_check_func "$LINENO" "_doprnt" "ac_cv_func__doprnt" ++if test "x$ac_cv_func__doprnt" = x""yes; then : + +-#ifdef __STDC__ +-# include +-#else +-# include +-#endif ++$as_echo "#define HAVE_DOPRNT 1" >>confdefs.h + +-#undef $ac_func ++fi + +-/* Override any GCC internal prototype to avoid an error. +- Use char because int might match the return type of a GCC +- builtin and then its argument prototype would still apply. */ +-#ifdef __cplusplus +-extern "C" +-#endif +-char $ac_func (); +-/* The GNU C library defines this for functions which it implements +- to always fail with ENOSYS. Some functions are actually named +- something starting with __ and the normal name is an alias. */ +-#if defined __stub_$ac_func || defined __stub___$ac_func +-choke me +-#endif ++fi ++done + +-int +-main () +-{ +-return $ac_func (); +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (ac_try="$ac_link" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_link") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest$ac_exeext && { +- test "$cross_compiling" = yes || +- $as_test_x conftest$ac_exeext +- }; then +- eval "$as_ac_var=yes" +-else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 + +- eval "$as_ac_var=no" +-fi + +-rm -rf conftest.dSYM +-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +- conftest$ac_exeext conftest.$ac_ext +-fi +-ac_res=`eval 'as_val=${'$as_ac_var'} +- $as_echo "$as_val"'` +- { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 +-$as_echo "$ac_res" >&6; } +-as_val=`eval 'as_val=${'$as_ac_var'} +- $as_echo "$as_val"'` +- if test "x$as_val" = x""yes; then ++ ++ ++ for ac_header in $ac_header_list ++do : ++ as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ++ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default ++" ++if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 ++#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 + _ACEOF + +-{ $as_echo "$as_me:$LINENO: checking for _doprnt" >&5 +-$as_echo_n "checking for _doprnt... " >&6; } +-if test "${ac_cv_func__doprnt+set}" = set; then +- $as_echo_n "(cached) " >&6 +-else +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-/* Define _doprnt to an innocuous variant, in case declares _doprnt. +- For example, HP-UX 11i declares gettimeofday. */ +-#define _doprnt innocuous__doprnt ++fi + +-/* System header to define __stub macros and hopefully few prototypes, +- which can conflict with char _doprnt (); below. +- Prefer to if __STDC__ is defined, since +- exists even on freestanding compilers. */ ++done + +-#ifdef __STDC__ +-# include +-#else +-# include +-#endif + +-#undef _doprnt + +-/* Override any GCC internal prototype to avoid an error. +- Use char because int might match the return type of a GCC +- builtin and then its argument prototype would still apply. */ +-#ifdef __cplusplus +-extern "C" +-#endif +-char _doprnt (); +-/* The GNU C library defines this for functions which it implements +- to always fail with ENOSYS. Some functions are actually named +- something starting with __ and the normal name is an alias. */ +-#if defined __stub__doprnt || defined __stub____doprnt +-choke me +-#endif + +-int +-main () +-{ +-return _doprnt (); +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (ac_try="$ac_link" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_link") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest$ac_exeext && { +- test "$cross_compiling" = yes || +- $as_test_x conftest$ac_exeext +- }; then +- ac_cv_func__doprnt=yes +-else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 + +- ac_cv_func__doprnt=no +-fi + +-rm -rf conftest.dSYM +-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +- conftest$ac_exeext conftest.$ac_ext +-fi +-{ $as_echo "$as_me:$LINENO: result: $ac_cv_func__doprnt" >&5 +-$as_echo "$ac_cv_func__doprnt" >&6; } +-if test "x$ac_cv_func__doprnt" = x""yes; then + +-cat >>confdefs.h <<\_ACEOF +-#define HAVE_DOPRNT 1 +-_ACEOF + +-fi ++for ac_func in getpagesize ++do : ++ ac_fn_c_check_func "$LINENO" "getpagesize" "ac_cv_func_getpagesize" ++if test "x$ac_cv_func_getpagesize" = x""yes; then : ++ cat >>confdefs.h <<_ACEOF ++#define HAVE_GETPAGESIZE 1 ++_ACEOF + + fi + done + +- +- +- +-for ac_header in stdlib.h unistd.h +-do +-as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then +- { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 +-$as_echo_n "checking for $ac_header... " >&6; } +-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then +- $as_echo_n "(cached) " >&6 +-fi +-ac_res=`eval 'as_val=${'$as_ac_Header'} +- $as_echo "$as_val"'` +- { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 +-$as_echo "$ac_res" >&6; } +-else +- # Is the header compilable? +-{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5 +-$as_echo_n "checking $ac_header usability... " >&6; } +-cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-$ac_includes_default +-#include <$ac_header> +-_ACEOF +-rm -f conftest.$ac_objext +-if { (ac_try="$ac_compile" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_compile") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest.$ac_objext; then +- ac_header_compiler=yes +-else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- ac_header_compiler=no +-fi +- +-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +-{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +-$as_echo "$ac_header_compiler" >&6; } +- +-# Is the header present? +-{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5 +-$as_echo_n "checking $ac_header presence... " >&6; } +-cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-#include <$ac_header> +-_ACEOF +-if { (ac_try="$ac_cpp conftest.$ac_ext" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } >/dev/null && { +- test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || +- test ! -s conftest.err +- }; then +- ac_header_preproc=yes +-else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- ac_header_preproc=no +-fi +- +-rm -f conftest.err conftest.$ac_ext +-{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +-$as_echo "$ac_header_preproc" >&6; } +- +-# So? What about this header? +-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in +- yes:no: ) +- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +-$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} +- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +-$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} +- ac_header_preproc=yes +- ;; +- no:yes:* ) +- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +-$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} +- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +-$as_echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} +- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +-$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} +- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +-$as_echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} +- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +-$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} +- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +-$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} +- +- ;; +-esac +-{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 +-$as_echo_n "checking for $ac_header... " >&6; } +-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then +- $as_echo_n "(cached) " >&6 +-else +- eval "$as_ac_Header=\$ac_header_preproc" +-fi +-ac_res=`eval 'as_val=${'$as_ac_Header'} +- $as_echo "$as_val"'` +- { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 +-$as_echo "$ac_res" >&6; } +- +-fi +-as_val=`eval 'as_val=${'$as_ac_Header'} +- $as_echo "$as_val"'` +- if test "x$as_val" = x""yes; then +- cat >>confdefs.h <<_ACEOF +-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +-_ACEOF +- +-fi +- +-done +- +- +-for ac_func in getpagesize +-do +-as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +-{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 +-$as_echo_n "checking for $ac_func... " >&6; } +-if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then +- $as_echo_n "(cached) " >&6 +-else +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-/* Define $ac_func to an innocuous variant, in case declares $ac_func. +- For example, HP-UX 11i declares gettimeofday. */ +-#define $ac_func innocuous_$ac_func +- +-/* System header to define __stub macros and hopefully few prototypes, +- which can conflict with char $ac_func (); below. +- Prefer to if __STDC__ is defined, since +- exists even on freestanding compilers. */ +- +-#ifdef __STDC__ +-# include +-#else +-# include +-#endif +- +-#undef $ac_func +- +-/* Override any GCC internal prototype to avoid an error. +- Use char because int might match the return type of a GCC +- builtin and then its argument prototype would still apply. */ +-#ifdef __cplusplus +-extern "C" +-#endif +-char $ac_func (); +-/* The GNU C library defines this for functions which it implements +- to always fail with ENOSYS. Some functions are actually named +- something starting with __ and the normal name is an alias. */ +-#if defined __stub_$ac_func || defined __stub___$ac_func +-choke me +-#endif +- +-int +-main () +-{ +-return $ac_func (); +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (ac_try="$ac_link" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_link") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest$ac_exeext && { +- test "$cross_compiling" = yes || +- $as_test_x conftest$ac_exeext +- }; then +- eval "$as_ac_var=yes" +-else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- eval "$as_ac_var=no" +-fi +- +-rm -rf conftest.dSYM +-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +- conftest$ac_exeext conftest.$ac_ext +-fi +-ac_res=`eval 'as_val=${'$as_ac_var'} +- $as_echo "$as_val"'` +- { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 +-$as_echo "$ac_res" >&6; } +-as_val=`eval 'as_val=${'$as_ac_var'} +- $as_echo "$as_val"'` +- if test "x$as_val" = x""yes; then +- cat >>confdefs.h <<_ACEOF +-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 +-_ACEOF +- +-fi +-done +- +-{ $as_echo "$as_me:$LINENO: checking for working mmap" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for working mmap" >&5 + $as_echo_n "checking for working mmap... " >&6; } +-if test "${ac_cv_func_mmap_fixed_mapped+set}" = set; then ++if test "${ac_cv_func_mmap_fixed_mapped+set}" = set; then : + $as_echo_n "(cached) " >&6 + else +- if test "$cross_compiling" = yes; then ++ if test "$cross_compiling" = yes; then : + ac_cv_func_mmap_fixed_mapped=no + else +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + $ac_includes_default + /* malloc might have been renamed as rpl_malloc. */ +@@ -13330,11 +12012,6 @@ + + /* This mess was copied from the GNU getpagesize.h. */ + #ifndef HAVE_GETPAGESIZE +-/* Assume that all systems that can run configure have sys/param.h. */ +-# ifndef HAVE_SYS_PARAM_H +-# define HAVE_SYS_PARAM_H 1 +-# endif +- + # ifdef _SC_PAGESIZE + # define getpagesize() sysconf(_SC_PAGESIZE) + # else /* no _SC_PAGESIZE */ +@@ -13369,8 +12046,9 @@ + main () + { + char *data, *data2, *data3; ++ const char *cdata2; + int i, pagesize; +- int fd; ++ int fd, fd2; + + pagesize = getpagesize (); + +@@ -13383,27 +12061,41 @@ + umask (0); + fd = creat ("conftest.mmap", 0600); + if (fd < 0) +- return 1; ++ return 2; + if (write (fd, data, pagesize) != pagesize) +- return 1; ++ return 3; + close (fd); + ++ /* Next, check that the tail of a page is zero-filled. File must have ++ non-zero length, otherwise we risk SIGBUS for entire page. */ ++ fd2 = open ("conftest.txt", O_RDWR | O_CREAT | O_TRUNC, 0600); ++ if (fd2 < 0) ++ return 4; ++ cdata2 = ""; ++ if (write (fd2, cdata2, 1) != 1) ++ return 5; ++ data2 = (char *) mmap (0, pagesize, PROT_READ | PROT_WRITE, MAP_SHARED, fd2, 0L); ++ if (data2 == MAP_FAILED) ++ return 6; ++ for (i = 0; i < pagesize; ++i) ++ if (*(data2 + i)) ++ return 7; ++ close (fd2); ++ if (munmap (data2, pagesize)) ++ return 8; ++ + /* Next, try to mmap the file at a fixed address which already has + something else allocated at it. If we can, also make sure that + we see the same garbage. */ + fd = open ("conftest.mmap", O_RDWR); + if (fd < 0) +- return 1; +- data2 = (char *) malloc (2 * pagesize); +- if (!data2) +- return 1; +- data2 += (pagesize - ((long int) data2 & (pagesize - 1))) & (pagesize - 1); ++ return 9; + if (data2 != mmap (data2, pagesize, PROT_READ | PROT_WRITE, + MAP_PRIVATE | MAP_FIXED, fd, 0L)) +- return 1; ++ return 10; + for (i = 0; i < pagesize; ++i) + if (*(data + i) != *(data2 + i)) +- return 1; ++ return 11; + + /* Finally, make sure that changes to the mapped area do not + percolate back to the file as seen by read(). (This is a bug on +@@ -13412,174 +12104,40 @@ + *(data2 + i) = *(data2 + i) + 1; + data3 = (char *) malloc (pagesize); + if (!data3) +- return 1; ++ return 12; + if (read (fd, data3, pagesize) != pagesize) +- return 1; ++ return 13; + for (i = 0; i < pagesize; ++i) + if (*(data + i) != *(data3 + i)) +- return 1; ++ return 14; + close (fd); + return 0; + } + _ACEOF +-rm -f conftest$ac_exeext +-if { (ac_try="$ac_link" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_link") 2>&5 +- ac_status=$? +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { ac_try='./conftest$ac_exeext' +- { (case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_try") 2>&5 +- ac_status=$? +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++if ac_fn_c_try_run "$LINENO"; then : + ac_cv_func_mmap_fixed_mapped=yes + else +- $as_echo "$as_me: program exited with status $ac_status" >&5 +-$as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +-( exit $ac_status ) +-ac_cv_func_mmap_fixed_mapped=no ++ ac_cv_func_mmap_fixed_mapped=no + fi +-rm -rf conftest.dSYM +-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext ++rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ ++ conftest.$ac_objext conftest.beam conftest.$ac_ext + fi + +- + fi +-{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_mmap_fixed_mapped" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_mmap_fixed_mapped" >&5 + $as_echo "$ac_cv_func_mmap_fixed_mapped" >&6; } + if test $ac_cv_func_mmap_fixed_mapped = yes; then + +-cat >>confdefs.h <<\_ACEOF +-#define HAVE_MMAP 1 +-_ACEOF ++$as_echo "#define HAVE_MMAP 1" >>confdefs.h + + fi +-rm -f conftest.mmap +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- ++rm -f conftest.mmap conftest.txt + + for ac_func in geteuid getuid link memmove memset mkstemp strchr strrchr strtol getopt getopt_long sysconf ftruncate chsize rand random lrand48 +-do +-as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +-{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 +-$as_echo_n "checking for $ac_func... " >&6; } +-if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then +- $as_echo_n "(cached) " >&6 +-else +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-/* Define $ac_func to an innocuous variant, in case declares $ac_func. +- For example, HP-UX 11i declares gettimeofday. */ +-#define $ac_func innocuous_$ac_func +- +-/* System header to define __stub macros and hopefully few prototypes, +- which can conflict with char $ac_func (); below. +- Prefer to if __STDC__ is defined, since +- exists even on freestanding compilers. */ +- +-#ifdef __STDC__ +-# include +-#else +-# include +-#endif +- +-#undef $ac_func +- +-/* Override any GCC internal prototype to avoid an error. +- Use char because int might match the return type of a GCC +- builtin and then its argument prototype would still apply. */ +-#ifdef __cplusplus +-extern "C" +-#endif +-char $ac_func (); +-/* The GNU C library defines this for functions which it implements +- to always fail with ENOSYS. Some functions are actually named +- something starting with __ and the normal name is an alias. */ +-#if defined __stub_$ac_func || defined __stub___$ac_func +-choke me +-#endif +- +-int +-main () +-{ +-return $ac_func (); +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (ac_try="$ac_link" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_link") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest$ac_exeext && { +- test "$cross_compiling" = yes || +- $as_test_x conftest$ac_exeext +- }; then +- eval "$as_ac_var=yes" +-else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- eval "$as_ac_var=no" +-fi +- +-rm -rf conftest.dSYM +-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +- conftest$ac_exeext conftest.$ac_ext +-fi +-ac_res=`eval 'as_val=${'$as_ac_var'} +- $as_echo "$as_val"'` +- { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 +-$as_echo "$ac_res" >&6; } +-as_val=`eval 'as_val=${'$as_ac_var'} +- $as_echo "$as_val"'` +- if test "x$as_val" = x""yes; then ++do : ++ as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ++ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" ++if eval test \"x\$"$as_ac_var"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF + #define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 + _ACEOF +@@ -13591,14 +12149,10 @@ + # + # Checks for iconv + # +-{ $as_echo "$as_me:$LINENO: checking for a usable iconv" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a usable iconv" >&5 + $as_echo_n "checking for a usable iconv... " >&6; } + ICONV_LIBS="" +-cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF ++cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + #include + int +@@ -13609,51 +12163,22 @@ + return 0; + } + _ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (ac_try="$ac_link" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_link") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest$ac_exeext && { +- test "$cross_compiling" = yes || +- $as_test_x conftest$ac_exeext +- }; then ++if ac_fn_c_try_link "$LINENO"; then : + use_iconv=1 + else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- use_iconv=0 ++ use_iconv=0 + fi +- +-rm -rf conftest.dSYM +-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +- conftest$ac_exeext conftest.$ac_ext ++rm -f core conftest.err conftest.$ac_objext \ ++ conftest$ac_exeext conftest.$ac_ext + if test x$use_iconv = x1; then +- { $as_echo "$as_me:$LINENO: result: libc" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: libc" >&5 + $as_echo "libc" >&6; } + else + # try using libiconv + fontconfig_save_libs="$LIBS" + LIBS="$LIBS -liconv" + +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + #include + int +@@ -13664,45 +12189,20 @@ + return 0; + } + _ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (ac_try="$ac_link" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_link") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest$ac_exeext && { +- test "$cross_compiling" = yes || +- $as_test_x conftest$ac_exeext +- }; then ++if ac_fn_c_try_link "$LINENO"; then : + use_iconv=1 + else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- use_iconv=0 ++ use_iconv=0 + fi +- +-rm -rf conftest.dSYM +-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +- conftest$ac_exeext conftest.$ac_ext ++rm -f core conftest.err conftest.$ac_objext \ ++ conftest$ac_exeext conftest.$ac_ext + + if test x$use_iconv = x1; then + ICONV_LIBS="-liconv" +- { $as_echo "$as_me:$LINENO: result: libiconv" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: libiconv" >&5 + $as_echo "libiconv" >&6; } + else +- { $as_echo "$as_me:$LINENO: result: no" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + $as_echo "no" >&6; } + fi + +@@ -13721,7 +12221,7 @@ + + + # Check whether --with-freetype-config was given. +-if test "${with_freetype_config+set}" = set; then ++if test "${with_freetype_config+set}" = set; then : + withval=$with_freetype_config; freetype_config=$withval + else + freetype_config=yes +@@ -13731,9 +12231,9 @@ + if test "$freetype_config" = "yes"; then + # Extract the first word of "freetype-config", so it can be a program name with args. + set dummy freetype-config; ac_word=$2 +-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 + $as_echo_n "checking for $ac_word... " >&6; } +-if test "${ac_cv_path_ft_config+set}" = set; then ++if test "${ac_cv_path_ft_config+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + case $ft_config in +@@ -13746,14 +12246,14 @@ + do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. +- for ac_exec_ext in '' $ac_executable_extensions; do ++ for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_ft_config="$as_dir/$ac_word$ac_exec_ext" +- $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi + done +-done ++ done + IFS=$as_save_IFS + + test -z "$ac_cv_path_ft_config" && ac_cv_path_ft_config="no" +@@ -13762,239 +12262,47 @@ + fi + ft_config=$ac_cv_path_ft_config + if test -n "$ft_config"; then +- { $as_echo "$as_me:$LINENO: result: $ft_config" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ft_config" >&5 + $as_echo "$ft_config" >&6; } + else +- { $as_echo "$as_me:$LINENO: result: no" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + $as_echo "no" >&6; } + fi + + + if test "$ft_config" = "no"; then +- { { $as_echo "$as_me:$LINENO: error: You must have freetype installed; see http://www.freetype.org/" >&5 +-$as_echo "$as_me: error: You must have freetype installed; see http://www.freetype.org/" >&2;} +- { (exit 1); exit 1; }; } +- fi +-else +- ft_config="$freetype_config" +-fi +- +-FREETYPE_CFLAGS="`$ft_config --cflags`" +-FREETYPE_LIBS="`$ft_config --libs`" +- +- +- +- +-fontconfig_save_libs="$LIBS" +-fontconfig_save_cflags="$CFLAGS" +-LIBS="$LIBS $FREETYPE_LIBS" +-CFLAGS="$CFLAGS $FREETYPE_CFLAGS" +- +- +- +- +- +- +-for ac_func in FT_Get_Next_Char FT_Get_BDF_Property FT_Get_PS_Font_Info FT_Has_PS_Glyph_Names FT_Get_X11_Font_Format FT_Select_Size +-do +-as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +-{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 +-$as_echo_n "checking for $ac_func... " >&6; } +-if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then +- $as_echo_n "(cached) " >&6 +-else +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-/* Define $ac_func to an innocuous variant, in case declares $ac_func. +- For example, HP-UX 11i declares gettimeofday. */ +-#define $ac_func innocuous_$ac_func +- +-/* System header to define __stub macros and hopefully few prototypes, +- which can conflict with char $ac_func (); below. +- Prefer to if __STDC__ is defined, since +- exists even on freestanding compilers. */ +- +-#ifdef __STDC__ +-# include +-#else +-# include +-#endif +- +-#undef $ac_func +- +-/* Override any GCC internal prototype to avoid an error. +- Use char because int might match the return type of a GCC +- builtin and then its argument prototype would still apply. */ +-#ifdef __cplusplus +-extern "C" +-#endif +-char $ac_func (); +-/* The GNU C library defines this for functions which it implements +- to always fail with ENOSYS. Some functions are actually named +- something starting with __ and the normal name is an alias. */ +-#if defined __stub_$ac_func || defined __stub___$ac_func +-choke me +-#endif +- +-int +-main () +-{ +-return $ac_func (); +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (ac_try="$ac_link" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_link") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest$ac_exeext && { +- test "$cross_compiling" = yes || +- $as_test_x conftest$ac_exeext +- }; then +- eval "$as_ac_var=yes" +-else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- eval "$as_ac_var=no" +-fi +- +-rm -rf conftest.dSYM +-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +- conftest$ac_exeext conftest.$ac_ext +-fi +-ac_res=`eval 'as_val=${'$as_ac_var'} +- $as_echo "$as_val"'` +- { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 +-$as_echo "$ac_res" >&6; } +-as_val=`eval 'as_val=${'$as_ac_var'} +- $as_echo "$as_val"'` +- if test "x$as_val" = x""yes; then +- cat >>confdefs.h <<_ACEOF +-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 +-_ACEOF +- +-fi +-done +- +-{ $as_echo "$as_me:$LINENO: checking for FT_Bitmap_Size.y_ppem" >&5 +-$as_echo_n "checking for FT_Bitmap_Size.y_ppem... " >&6; } +-if test "${ac_cv_member_FT_Bitmap_Size_y_ppem+set}" = set; then +- $as_echo_n "(cached) " >&6 +-else +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-#include +-#include FT_FREETYPE_H +- +-int +-main () +-{ +-static FT_Bitmap_Size ac_aggr; +-if (ac_aggr.y_ppem) +-return 0; +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext +-if { (ac_try="$ac_compile" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_compile") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest.$ac_objext; then +- ac_cv_member_FT_Bitmap_Size_y_ppem=yes +-else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-#include +-#include FT_FREETYPE_H +- +-int +-main () +-{ +-static FT_Bitmap_Size ac_aggr; +-if (sizeof ac_aggr.y_ppem) +-return 0; +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext +-if { (ac_try="$ac_compile" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_compile") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest.$ac_objext; then +- ac_cv_member_FT_Bitmap_Size_y_ppem=yes +-else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- ac_cv_member_FT_Bitmap_Size_y_ppem=no ++ as_fn_error $? "You must have freetype installed; see http://www.freetype.org/" "$LINENO" 5 ++ fi ++else ++ ft_config="$freetype_config" + fi + +-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +-fi ++FREETYPE_CFLAGS="`$ft_config --cflags`" ++FREETYPE_LIBS="`$ft_config --libs`" ++ ++ ++ ++ ++fontconfig_save_libs="$LIBS" ++fontconfig_save_cflags="$CFLAGS" ++LIBS="$LIBS $FREETYPE_LIBS" ++CFLAGS="$CFLAGS $FREETYPE_CFLAGS" ++for ac_func in FT_Get_Next_Char FT_Get_BDF_Property FT_Get_PS_Font_Info FT_Has_PS_Glyph_Names FT_Get_X11_Font_Format FT_Select_Size ++do : ++ as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ++ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" ++if eval test \"x\$"$as_ac_var"\" = x"yes"; then : ++ cat >>confdefs.h <<_ACEOF ++#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 ++_ACEOF + +-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi +-{ $as_echo "$as_me:$LINENO: result: $ac_cv_member_FT_Bitmap_Size_y_ppem" >&5 +-$as_echo "$ac_cv_member_FT_Bitmap_Size_y_ppem" >&6; } +-if test "x$ac_cv_member_FT_Bitmap_Size_y_ppem" = x""yes; then ++done ++ ++ac_fn_c_check_member "$LINENO" "FT_Bitmap_Size" "y_ppem" "ac_cv_member_FT_Bitmap_Size_y_ppem" "#include ++#include FT_FREETYPE_H ++" ++if test "x$ac_cv_member_FT_Bitmap_Size_y_ppem" = x""yes; then : + HAVE_FT_BITMAP_SIZE_Y_PPEM=1 + else + HAVE_FT_BITMAP_SIZE_Y_PPEM=0 +@@ -14014,7 +12322,7 @@ + + + # Check whether --with-expat was given. +-if test "${with_expat+set}" = set; then ++if test "${with_expat+set}" = set; then : + withval=$with_expat; expat=$withval + else + expat=yes +@@ -14022,7 +12330,7 @@ + + + # Check whether --with-expat-includes was given. +-if test "${with_expat_includes+set}" = set; then ++if test "${with_expat_includes+set}" = set; then : + withval=$with_expat_includes; expat_includes=$withval + else + expat_includes=yes +@@ -14030,7 +12338,7 @@ + + + # Check whether --with-expat-lib was given. +-if test "${with_expat_lib+set}" = set; then ++if test "${with_expat_lib+set}" = set; then : + withval=$with_expat_lib; expat_lib=$withval + else + expat_lib=yes +@@ -14082,262 +12390,16 @@ + expatsaved_LIBS="$LIBS" + LIBS="$LIBS $EXPAT_LIBS" + +- if test "${ac_cv_header_expat_h+set}" = set; then +- { $as_echo "$as_me:$LINENO: checking for expat.h" >&5 +-$as_echo_n "checking for expat.h... " >&6; } +-if test "${ac_cv_header_expat_h+set}" = set; then +- $as_echo_n "(cached) " >&6 +-fi +-{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_expat_h" >&5 +-$as_echo "$ac_cv_header_expat_h" >&6; } +-else +- # Is the header compilable? +-{ $as_echo "$as_me:$LINENO: checking expat.h usability" >&5 +-$as_echo_n "checking expat.h usability... " >&6; } +-cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-$ac_includes_default +-#include +-_ACEOF +-rm -f conftest.$ac_objext +-if { (ac_try="$ac_compile" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_compile") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest.$ac_objext; then +- ac_header_compiler=yes +-else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- ac_header_compiler=no +-fi +- +-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +-{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +-$as_echo "$ac_header_compiler" >&6; } +- +-# Is the header present? +-{ $as_echo "$as_me:$LINENO: checking expat.h presence" >&5 +-$as_echo_n "checking expat.h presence... " >&6; } +-cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-#include +-_ACEOF +-if { (ac_try="$ac_cpp conftest.$ac_ext" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } >/dev/null && { +- test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || +- test ! -s conftest.err +- }; then +- ac_header_preproc=yes +-else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- ac_header_preproc=no +-fi +- +-rm -f conftest.err conftest.$ac_ext +-{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +-$as_echo "$ac_header_preproc" >&6; } +- +-# So? What about this header? +-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in +- yes:no: ) +- { $as_echo "$as_me:$LINENO: WARNING: expat.h: accepted by the compiler, rejected by the preprocessor!" >&5 +-$as_echo "$as_me: WARNING: expat.h: accepted by the compiler, rejected by the preprocessor!" >&2;} +- { $as_echo "$as_me:$LINENO: WARNING: expat.h: proceeding with the compiler's result" >&5 +-$as_echo "$as_me: WARNING: expat.h: proceeding with the compiler's result" >&2;} +- ac_header_preproc=yes +- ;; +- no:yes:* ) +- { $as_echo "$as_me:$LINENO: WARNING: expat.h: present but cannot be compiled" >&5 +-$as_echo "$as_me: WARNING: expat.h: present but cannot be compiled" >&2;} +- { $as_echo "$as_me:$LINENO: WARNING: expat.h: check for missing prerequisite headers?" >&5 +-$as_echo "$as_me: WARNING: expat.h: check for missing prerequisite headers?" >&2;} +- { $as_echo "$as_me:$LINENO: WARNING: expat.h: see the Autoconf documentation" >&5 +-$as_echo "$as_me: WARNING: expat.h: see the Autoconf documentation" >&2;} +- { $as_echo "$as_me:$LINENO: WARNING: expat.h: section \"Present But Cannot Be Compiled\"" >&5 +-$as_echo "$as_me: WARNING: expat.h: section \"Present But Cannot Be Compiled\"" >&2;} +- { $as_echo "$as_me:$LINENO: WARNING: expat.h: proceeding with the preprocessor's result" >&5 +-$as_echo "$as_me: WARNING: expat.h: proceeding with the preprocessor's result" >&2;} +- { $as_echo "$as_me:$LINENO: WARNING: expat.h: in the future, the compiler will take precedence" >&5 +-$as_echo "$as_me: WARNING: expat.h: in the future, the compiler will take precedence" >&2;} +- +- ;; +-esac +-{ $as_echo "$as_me:$LINENO: checking for expat.h" >&5 +-$as_echo_n "checking for expat.h... " >&6; } +-if test "${ac_cv_header_expat_h+set}" = set; then +- $as_echo_n "(cached) " >&6 +-else +- ac_cv_header_expat_h=$ac_header_preproc +-fi +-{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_expat_h" >&5 +-$as_echo "$ac_cv_header_expat_h" >&6; } ++ ac_fn_c_check_header_mongrel "$LINENO" "expat.h" "ac_cv_header_expat_h" "$ac_includes_default" ++if test "x$ac_cv_header_expat_h" = x""yes; then : + + fi + + + case "$ac_cv_header_expat_h" in + no) +- if test "${ac_cv_header_xmlparse_h+set}" = set; then +- { $as_echo "$as_me:$LINENO: checking for xmlparse.h" >&5 +-$as_echo_n "checking for xmlparse.h... " >&6; } +-if test "${ac_cv_header_xmlparse_h+set}" = set; then +- $as_echo_n "(cached) " >&6 +-fi +-{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_xmlparse_h" >&5 +-$as_echo "$ac_cv_header_xmlparse_h" >&6; } +-else +- # Is the header compilable? +-{ $as_echo "$as_me:$LINENO: checking xmlparse.h usability" >&5 +-$as_echo_n "checking xmlparse.h usability... " >&6; } +-cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-$ac_includes_default +-#include +-_ACEOF +-rm -f conftest.$ac_objext +-if { (ac_try="$ac_compile" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_compile") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest.$ac_objext; then +- ac_header_compiler=yes +-else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- ac_header_compiler=no +-fi +- +-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +-{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +-$as_echo "$ac_header_compiler" >&6; } +- +-# Is the header present? +-{ $as_echo "$as_me:$LINENO: checking xmlparse.h presence" >&5 +-$as_echo_n "checking xmlparse.h presence... " >&6; } +-cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-#include +-_ACEOF +-if { (ac_try="$ac_cpp conftest.$ac_ext" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } >/dev/null && { +- test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || +- test ! -s conftest.err +- }; then +- ac_header_preproc=yes +-else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- ac_header_preproc=no +-fi +- +-rm -f conftest.err conftest.$ac_ext +-{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +-$as_echo "$ac_header_preproc" >&6; } +- +-# So? What about this header? +-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in +- yes:no: ) +- { $as_echo "$as_me:$LINENO: WARNING: xmlparse.h: accepted by the compiler, rejected by the preprocessor!" >&5 +-$as_echo "$as_me: WARNING: xmlparse.h: accepted by the compiler, rejected by the preprocessor!" >&2;} +- { $as_echo "$as_me:$LINENO: WARNING: xmlparse.h: proceeding with the compiler's result" >&5 +-$as_echo "$as_me: WARNING: xmlparse.h: proceeding with the compiler's result" >&2;} +- ac_header_preproc=yes +- ;; +- no:yes:* ) +- { $as_echo "$as_me:$LINENO: WARNING: xmlparse.h: present but cannot be compiled" >&5 +-$as_echo "$as_me: WARNING: xmlparse.h: present but cannot be compiled" >&2;} +- { $as_echo "$as_me:$LINENO: WARNING: xmlparse.h: check for missing prerequisite headers?" >&5 +-$as_echo "$as_me: WARNING: xmlparse.h: check for missing prerequisite headers?" >&2;} +- { $as_echo "$as_me:$LINENO: WARNING: xmlparse.h: see the Autoconf documentation" >&5 +-$as_echo "$as_me: WARNING: xmlparse.h: see the Autoconf documentation" >&2;} +- { $as_echo "$as_me:$LINENO: WARNING: xmlparse.h: section \"Present But Cannot Be Compiled\"" >&5 +-$as_echo "$as_me: WARNING: xmlparse.h: section \"Present But Cannot Be Compiled\"" >&2;} +- { $as_echo "$as_me:$LINENO: WARNING: xmlparse.h: proceeding with the preprocessor's result" >&5 +-$as_echo "$as_me: WARNING: xmlparse.h: proceeding with the preprocessor's result" >&2;} +- { $as_echo "$as_me:$LINENO: WARNING: xmlparse.h: in the future, the compiler will take precedence" >&5 +-$as_echo "$as_me: WARNING: xmlparse.h: in the future, the compiler will take precedence" >&2;} +- +- ;; +-esac +-{ $as_echo "$as_me:$LINENO: checking for xmlparse.h" >&5 +-$as_echo_n "checking for xmlparse.h... " >&6; } +-if test "${ac_cv_header_xmlparse_h+set}" = set; then +- $as_echo_n "(cached) " >&6 +-else +- ac_cv_header_xmlparse_h=$ac_header_preproc +-fi +-{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_xmlparse_h" >&5 +-$as_echo "$ac_cv_header_xmlparse_h" >&6; } ++ ac_fn_c_check_header_mongrel "$LINENO" "xmlparse.h" "ac_cv_header_xmlparse_h" "$ac_includes_default" ++if test "x$ac_cv_header_xmlparse_h" = x""yes; then : + + fi + +@@ -14367,102 +12429,12 @@ + expat=no + ;; + yes) +- +-for ac_func in XML_SetDoctypeDeclHandler +-do +-as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +-{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 +-$as_echo_n "checking for $ac_func... " >&6; } +-if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then +- $as_echo_n "(cached) " >&6 +-else +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-/* Define $ac_func to an innocuous variant, in case declares $ac_func. +- For example, HP-UX 11i declares gettimeofday. */ +-#define $ac_func innocuous_$ac_func +- +-/* System header to define __stub macros and hopefully few prototypes, +- which can conflict with char $ac_func (); below. +- Prefer to if __STDC__ is defined, since +- exists even on freestanding compilers. */ +- +-#ifdef __STDC__ +-# include +-#else +-# include +-#endif +- +-#undef $ac_func +- +-/* Override any GCC internal prototype to avoid an error. +- Use char because int might match the return type of a GCC +- builtin and then its argument prototype would still apply. */ +-#ifdef __cplusplus +-extern "C" +-#endif +-char $ac_func (); +-/* The GNU C library defines this for functions which it implements +- to always fail with ENOSYS. Some functions are actually named +- something starting with __ and the normal name is an alias. */ +-#if defined __stub_$ac_func || defined __stub___$ac_func +-choke me +-#endif +- +-int +-main () +-{ +-return $ac_func (); +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (ac_try="$ac_link" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_link") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest$ac_exeext && { +- test "$cross_compiling" = yes || +- $as_test_x conftest$ac_exeext +- }; then +- eval "$as_ac_var=yes" +-else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- eval "$as_ac_var=no" +-fi +- +-rm -rf conftest.dSYM +-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +- conftest$ac_exeext conftest.$ac_ext +-fi +-ac_res=`eval 'as_val=${'$as_ac_var'} +- $as_echo "$as_val"'` +- { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 +-$as_echo "$ac_res" >&6; } +-as_val=`eval 'as_val=${'$as_ac_var'} +- $as_echo "$as_val"'` +- if test "x$as_val" = x""yes; then ++ for ac_func in XML_SetDoctypeDeclHandler ++do : ++ ac_fn_c_check_func "$LINENO" "XML_SetDoctypeDeclHandler" "ac_cv_func_XML_SetDoctypeDeclHandler" ++if test "x$ac_cv_func_XML_SetDoctypeDeclHandler" = x""yes; then : + cat >>confdefs.h <<_ACEOF +-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 ++#define HAVE_XML_SETDOCTYPEDECLHANDLER 1 + _ACEOF + + fi +@@ -14497,7 +12469,7 @@ + EXPAT_CFLAGS="" + EXPAT_LIBS="" + +- { $as_echo "$as_me:$LINENO: WARNING: Cannot find usable expat library. Trying to use libxml2 as fallback." >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Cannot find usable expat library. Trying to use libxml2 as fallback." >&5 + $as_echo "$as_me: WARNING: Cannot find usable expat library. Trying to use libxml2 as fallback." >&2;} + ;; + esac +@@ -14508,20 +12480,24 @@ + # + + # Check whether --enable-libxml2 was given. +-if test "${enable_libxml2+set}" = set; then ++if test "${enable_libxml2+set}" = set; then : + enableval=$enable_libxml2; + fi + + + + ++ ++ ++ ++ + if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. + set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 +-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 + $as_echo_n "checking for $ac_word... " >&6; } +-if test "${ac_cv_path_PKG_CONFIG+set}" = set; then ++if test "${ac_cv_path_PKG_CONFIG+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + case $PKG_CONFIG in +@@ -14534,14 +12510,14 @@ + do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. +- for ac_exec_ext in '' $ac_executable_extensions; do ++ for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" +- $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi + done +-done ++ done + IFS=$as_save_IFS + + ;; +@@ -14549,10 +12525,10 @@ + fi + PKG_CONFIG=$ac_cv_path_PKG_CONFIG + if test -n "$PKG_CONFIG"; then +- { $as_echo "$as_me:$LINENO: result: $PKG_CONFIG" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5 + $as_echo "$PKG_CONFIG" >&6; } + else +- { $as_echo "$as_me:$LINENO: result: no" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + $as_echo "no" >&6; } + fi + +@@ -14562,9 +12538,9 @@ + ac_pt_PKG_CONFIG=$PKG_CONFIG + # Extract the first word of "pkg-config", so it can be a program name with args. + set dummy pkg-config; ac_word=$2 +-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 + $as_echo_n "checking for $ac_word... " >&6; } +-if test "${ac_cv_path_ac_pt_PKG_CONFIG+set}" = set; then ++if test "${ac_cv_path_ac_pt_PKG_CONFIG+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + case $ac_pt_PKG_CONFIG in +@@ -14577,14 +12553,14 @@ + do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. +- for ac_exec_ext in '' $ac_executable_extensions; do ++ for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" +- $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi + done +-done ++ done + IFS=$as_save_IFS + + ;; +@@ -14592,10 +12568,10 @@ + fi + ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG + if test -n "$ac_pt_PKG_CONFIG"; then +- { $as_echo "$as_me:$LINENO: result: $ac_pt_PKG_CONFIG" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5 + $as_echo "$ac_pt_PKG_CONFIG" >&6; } + else +- { $as_echo "$as_me:$LINENO: result: no" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + $as_echo "no" >&6; } + fi + +@@ -14604,7 +12580,7 @@ + else + case $cross_compiling:$ac_tool_warned in + yes:) +-{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 + $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} + ac_tool_warned=yes ;; + esac +@@ -14617,34 +12593,33 @@ + fi + if test -n "$PKG_CONFIG"; then + _pkg_min_version=0.9.0 +- { $as_echo "$as_me:$LINENO: checking pkg-config is at least version $_pkg_min_version" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5 + $as_echo_n "checking pkg-config is at least version $_pkg_min_version... " >&6; } + if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then +- { $as_echo "$as_me:$LINENO: result: yes" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 + $as_echo "yes" >&6; } + else +- { $as_echo "$as_me:$LINENO: result: no" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + $as_echo "no" >&6; } + PKG_CONFIG="" + fi +- + fi + + if test "$enable_libxml2" = "yes" -o "$expat" = "no"; then + + pkg_failed=no +-{ $as_echo "$as_me:$LINENO: checking for LIBXML2" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for LIBXML2" >&5 + $as_echo_n "checking for LIBXML2... " >&6; } + + if test -n "$LIBXML2_CFLAGS"; then + pkg_cv_LIBXML2_CFLAGS="$LIBXML2_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ +- { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"libxml-2.0 >= 2.6\"") >&5 ++ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libxml-2.0 >= 2.6\""; } >&5 + ($PKG_CONFIG --exists --print-errors "libxml-2.0 >= 2.6") 2>&5 + ac_status=$? +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; then ++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 ++ test $ac_status = 0; }; then + pkg_cv_LIBXML2_CFLAGS=`$PKG_CONFIG --cflags "libxml-2.0 >= 2.6" 2>/dev/null` + else + pkg_failed=yes +@@ -14656,11 +12631,11 @@ + pkg_cv_LIBXML2_LIBS="$LIBXML2_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ +- { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"libxml-2.0 >= 2.6\"") >&5 ++ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libxml-2.0 >= 2.6\""; } >&5 + ($PKG_CONFIG --exists --print-errors "libxml-2.0 >= 2.6") 2>&5 + ac_status=$? +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; then ++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 ++ test $ac_status = 0; }; then + pkg_cv_LIBXML2_LIBS=`$PKG_CONFIG --libs "libxml-2.0 >= 2.6" 2>/dev/null` + else + pkg_failed=yes +@@ -14672,6 +12647,8 @@ + + + if test $pkg_failed = yes; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++$as_echo "no" >&6; } + + if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +@@ -14686,7 +12663,7 @@ + # Put the nasty error message in config.log where it belongs + echo "$LIBXML2_PKG_ERRORS" >&5 + +- { { $as_echo "$as_me:$LINENO: error: Package requirements (libxml-2.0 >= 2.6) were not met: ++ as_fn_error $? "Package requirements (libxml-2.0 >= 2.6) were not met: + + $LIBXML2_PKG_ERRORS + +@@ -14695,24 +12672,14 @@ + + Alternatively, you may set the environment variables LIBXML2_CFLAGS + and LIBXML2_LIBS to avoid the need to call pkg-config. +-See the pkg-config man page for more details. +-" >&5 +-$as_echo "$as_me: error: Package requirements (libxml-2.0 >= 2.6) were not met: +- +-$LIBXML2_PKG_ERRORS +- +-Consider adjusting the PKG_CONFIG_PATH environment variable if you +-installed software in a non-standard prefix. ++See the pkg-config man page for more details." "$LINENO" 5 + +-Alternatively, you may set the environment variables LIBXML2_CFLAGS +-and LIBXML2_LIBS to avoid the need to call pkg-config. +-See the pkg-config man page for more details. +-" >&2;} +- { (exit 1); exit 1; }; } + elif test $pkg_failed = untried; then +- { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++$as_echo "no" >&6; } ++ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 + $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +-{ { $as_echo "$as_me:$LINENO: error: The pkg-config script could not be found or is too old. Make sure it ++as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it + is in your PATH or set the PKG_CONFIG environment variable to the full + path to pkg-config. + +@@ -14721,24 +12688,14 @@ + See the pkg-config man page for more details. + + To get pkg-config, see . +-See \`config.log' for more details." >&5 +-$as_echo "$as_me: error: The pkg-config script could not be found or is too old. Make sure it +-is in your PATH or set the PKG_CONFIG environment variable to the full +-path to pkg-config. ++See \`config.log' for more details" "$LINENO" 5; } + +-Alternatively, you may set the environment variables LIBXML2_CFLAGS +-and LIBXML2_LIBS to avoid the need to call pkg-config. +-See the pkg-config man page for more details. +- +-To get pkg-config, see . +-See \`config.log' for more details." >&2;} +- { (exit 1); exit 1; }; }; } + else + LIBXML2_CFLAGS=$pkg_cv_LIBXML2_CFLAGS + LIBXML2_LIBS=$pkg_cv_LIBXML2_LIBS +- { $as_echo "$as_me:$LINENO: result: yes" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 + $as_echo "yes" >&6; } +- : ++ + fi + + cat >>confdefs.h <<_ACEOF +@@ -14756,7 +12713,7 @@ + + + # Check whether --with-default-fonts was given. +-if test "${with_default_fonts+set}" = set; then ++if test "${with_default_fonts+set}" = set; then : + withval=$with_default_fonts; default_fonts="$withval" + else + default_fonts=yes +@@ -14800,7 +12757,7 @@ + # + + # Check whether --with-add-fonts was given. +-if test "${with_add_fonts+set}" = set; then ++if test "${with_add_fonts+set}" = set; then : + withval=$with_add_fonts; add_fonts="$withval" + else + add_fonts=yes +@@ -14866,7 +12823,7 @@ + # + + # Check whether --with-cache-dir was given. +-if test "${with_cache_dir+set}" = set; then ++if test "${with_cache_dir+set}" = set; then : + withval=$with_cache_dir; fc_cachedir="$withval" + else + fc_cachedir=yes +@@ -14894,29 +12851,54 @@ + + + # Check whether --with-confdir was given. +-if test "${with_confdir+set}" = set; then ++if test "${with_confdir+set}" = set; then : + withval=$with_confdir; confdir="$withval" + else +- confdir=yes ++ confdir=yes ++fi ++ ++ ++# ++# Set CONFDIR and FONTCONFIG_PATH ++# ++ ++case "$confdir" in ++no|yes) ++ confdir='${sysconfdir}'/fonts ++ ;; ++*) ++ ;; ++esac ++ ++CONFDIR=${confdir} ++ ++cat >>confdefs.h <<_ACEOF ++#define CONFDIR "$CONFDIR" ++_ACEOF ++ ++ ++ ++ ++# Check whether --with-fcpath was given. ++if test "${with_fcpath+set}" = set; then : ++ withval=$with_fcpath; fcpath="$withval" ++else ++ fcpath=yes + fi + + +-# +-# Set CONFDIR and FONTCONFIG_PATH +-# +- +-case "$confdir" in ++case "$fcpath" in + no|yes) +- confdir='${sysconfdir}'/fonts ++ fcpath='${confdir}' + ;; + *) + ;; + esac + +-CONFDIR=${confdir} ++FCPATH=${fcpath} + + cat >>confdefs.h <<_ACEOF +-#define CONFDIR "$CONFDIR" ++#define FCPATH "$FCPATH" + _ACEOF + + +@@ -14927,9 +12909,9 @@ + + # Extract the first word of "docbook2html", so it can be a program name with args. + set dummy docbook2html; ac_word=$2 +-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 + $as_echo_n "checking for $ac_word... " >&6; } +-if test "${ac_cv_prog_HASDOCBOOK+set}" = set; then ++if test "${ac_cv_prog_HASDOCBOOK+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + if test -n "$HASDOCBOOK"; then +@@ -14940,14 +12922,14 @@ + do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. +- for ac_exec_ext in '' $ac_executable_extensions; do ++ for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_HASDOCBOOK="yes" +- $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi + done +-done ++ done + IFS=$as_save_IFS + + test -z "$ac_cv_prog_HASDOCBOOK" && ac_cv_prog_HASDOCBOOK="no" +@@ -14955,10 +12937,10 @@ + fi + HASDOCBOOK=$ac_cv_prog_HASDOCBOOK + if test -n "$HASDOCBOOK"; then +- { $as_echo "$as_me:$LINENO: result: $HASDOCBOOK" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $HASDOCBOOK" >&5 + $as_echo "$HASDOCBOOK" >&6; } + else +- { $as_echo "$as_me:$LINENO: result: no" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + $as_echo "no" >&6; } + fi + +@@ -14986,7 +12968,7 @@ + fi + + # Check whether --enable-docs was given. +-if test "${enable_docs+set}" = set; then ++if test "${enable_docs+set}" = set; then : + enableval=$enable_docs; + else + enable_docs=$default_docs +@@ -15049,13 +13031,13 @@ + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( +- *_cv_*) { $as_echo "$as_me:$LINENO: WARNING: cache variable $ac_var contains a newline" >&5 ++ *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 + $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( +- *) $as_unset $ac_var ;; ++ *) { eval $ac_var=; unset $ac_var;} ;; + esac ;; + esac + done +@@ -15063,8 +13045,8 @@ + (set) 2>&1 | + case $as_nl`(ac_space=' '; set) 2>&1` in #( + *${as_nl}ac_space=\ *) +- # `set' does not quote correctly, so add quotes (double-quote +- # substitution turns \\\\ into \\, and sed turns \\ into \). ++ # `set' does not quote correctly, so add quotes: double-quote ++ # substitution turns \\\\ into \\, and sed turns \\ into \. + sed -n \ + "s/'/'\\\\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" +@@ -15087,11 +13069,11 @@ + if diff "$cache_file" confcache >/dev/null 2>&1; then :; else + if test -w "$cache_file"; then + test "x$cache_file" != "x/dev/null" && +- { $as_echo "$as_me:$LINENO: updating cache $cache_file" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 + $as_echo "$as_me: updating cache $cache_file" >&6;} + cat confcache >$cache_file + else +- { $as_echo "$as_me:$LINENO: not updating unwritable cache $cache_file" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 + $as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} + fi + fi +@@ -15105,14 +13087,15 @@ + + ac_libobjs= + ac_ltlibobjs= ++U= + for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue + # 1. Remove the extension, and $U if already installed. + ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' + ac_i=`$as_echo "$ac_i" | sed "$ac_script"` + # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR + # will be set to the directory where LIBOBJS objects are built. +- ac_libobjs="$ac_libobjs \${LIBOBJDIR}$ac_i\$U.$ac_objext" +- ac_ltlibobjs="$ac_ltlibobjs \${LIBOBJDIR}$ac_i"'$U.lo' ++ as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" ++ as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' + done + LIBOBJS=$ac_libobjs + +@@ -15128,69 +13111,50 @@ + fi + + if test -z "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then +- { { $as_echo "$as_me:$LINENO: error: conditional \"MAINTAINER_MODE\" was never defined. +-Usually this means the macro was only invoked conditionally." >&5 +-$as_echo "$as_me: error: conditional \"MAINTAINER_MODE\" was never defined. +-Usually this means the macro was only invoked conditionally." >&2;} +- { (exit 1); exit 1; }; } ++ as_fn_error $? "conditional \"MAINTAINER_MODE\" was never defined. ++Usually this means the macro was only invoked conditionally." "$LINENO" 5 + fi + if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then +- { { $as_echo "$as_me:$LINENO: error: conditional \"AMDEP\" was never defined. +-Usually this means the macro was only invoked conditionally." >&5 +-$as_echo "$as_me: error: conditional \"AMDEP\" was never defined. +-Usually this means the macro was only invoked conditionally." >&2;} +- { (exit 1); exit 1; }; } ++ as_fn_error $? "conditional \"AMDEP\" was never defined. ++Usually this means the macro was only invoked conditionally." "$LINENO" 5 + fi + if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then +- { { $as_echo "$as_me:$LINENO: error: conditional \"am__fastdepCC\" was never defined. +-Usually this means the macro was only invoked conditionally." >&5 +-$as_echo "$as_me: error: conditional \"am__fastdepCC\" was never defined. +-Usually this means the macro was only invoked conditionally." >&2;} +- { (exit 1); exit 1; }; } ++ as_fn_error $? "conditional \"am__fastdepCC\" was never defined. ++Usually this means the macro was only invoked conditionally." "$LINENO" 5 + fi + if test -z "${OS_WIN32_TRUE}" && test -z "${OS_WIN32_FALSE}"; then +- { { $as_echo "$as_me:$LINENO: error: conditional \"OS_WIN32\" was never defined. +-Usually this means the macro was only invoked conditionally." >&5 +-$as_echo "$as_me: error: conditional \"OS_WIN32\" was never defined. +-Usually this means the macro was only invoked conditionally." >&2;} +- { (exit 1); exit 1; }; } ++ as_fn_error $? "conditional \"OS_WIN32\" was never defined. ++Usually this means the macro was only invoked conditionally." "$LINENO" 5 ++fi ++if test -z "${OS_WIN32_ENABLE_SHARED_TRUE}" && test -z "${OS_WIN32_ENABLE_SHARED_FALSE}"; then ++ as_fn_error $? "conditional \"OS_WIN32_ENABLE_SHARED\" was never defined. ++Usually this means the macro was only invoked conditionally." "$LINENO" 5 + fi + if test -z "${MS_LIB_AVAILABLE_TRUE}" && test -z "${MS_LIB_AVAILABLE_FALSE}"; then +- { { $as_echo "$as_me:$LINENO: error: conditional \"MS_LIB_AVAILABLE\" was never defined. +-Usually this means the macro was only invoked conditionally." >&5 +-$as_echo "$as_me: error: conditional \"MS_LIB_AVAILABLE\" was never defined. +-Usually this means the macro was only invoked conditionally." >&2;} +- { (exit 1); exit 1; }; } ++ as_fn_error $? "conditional \"MS_LIB_AVAILABLE\" was never defined. ++Usually this means the macro was only invoked conditionally." "$LINENO" 5 + fi + if test -z "${CROSS_COMPILING_TRUE}" && test -z "${CROSS_COMPILING_FALSE}"; then +- { { $as_echo "$as_me:$LINENO: error: conditional \"CROSS_COMPILING\" was never defined. +-Usually this means the macro was only invoked conditionally." >&5 +-$as_echo "$as_me: error: conditional \"CROSS_COMPILING\" was never defined. +-Usually this means the macro was only invoked conditionally." >&2;} +- { (exit 1); exit 1; }; } ++ as_fn_error $? "conditional \"CROSS_COMPILING\" was never defined. ++Usually this means the macro was only invoked conditionally." "$LINENO" 5 + fi + if test -z "${USEDOCBOOK_TRUE}" && test -z "${USEDOCBOOK_FALSE}"; then +- { { $as_echo "$as_me:$LINENO: error: conditional \"USEDOCBOOK\" was never defined. +-Usually this means the macro was only invoked conditionally." >&5 +-$as_echo "$as_me: error: conditional \"USEDOCBOOK\" was never defined. +-Usually this means the macro was only invoked conditionally." >&2;} +- { (exit 1); exit 1; }; } ++ as_fn_error $? "conditional \"USEDOCBOOK\" was never defined. ++Usually this means the macro was only invoked conditionally." "$LINENO" 5 + fi + if test -z "${ENABLE_DOCS_TRUE}" && test -z "${ENABLE_DOCS_FALSE}"; then +- { { $as_echo "$as_me:$LINENO: error: conditional \"ENABLE_DOCS\" was never defined. +-Usually this means the macro was only invoked conditionally." >&5 +-$as_echo "$as_me: error: conditional \"ENABLE_DOCS\" was never defined. +-Usually this means the macro was only invoked conditionally." >&2;} +- { (exit 1); exit 1; }; } ++ as_fn_error $? "conditional \"ENABLE_DOCS\" was never defined. ++Usually this means the macro was only invoked conditionally." "$LINENO" 5 + fi + + : ${CONFIG_STATUS=./config.status} + ac_write_fail=0 + ac_clean_files_save=$ac_clean_files + ac_clean_files="$ac_clean_files $CONFIG_STATUS" +-{ $as_echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 + $as_echo "$as_me: creating $CONFIG_STATUS" >&6;} +-cat >$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ++as_write_fail=0 ++cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 + #! $SHELL + # Generated by $as_me. + # Run this file to recreate the current configuration. +@@ -15200,17 +13164,18 @@ + debug=false + ac_cs_recheck=false + ac_cs_silent=false +-SHELL=\${CONFIG_SHELL-$SHELL} +-_ACEOF + +-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +-## --------------------- ## +-## M4sh Initialization. ## +-## --------------------- ## ++SHELL=\${CONFIG_SHELL-$SHELL} ++export SHELL ++_ASEOF ++cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 ++## -------------------- ## ++## M4sh Initialization. ## ++## -------------------- ## + + # Be more Bourne compatible + DUALCASE=1; export DUALCASE # for MKS sh +-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then ++if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which +@@ -15218,23 +13183,15 @@ + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST + else +- case `(set -o) 2>/dev/null` in +- *posix*) set -o posix ;; ++ case `(set -o) 2>/dev/null` in #( ++ *posix*) : ++ set -o posix ;; #( ++ *) : ++ ;; + esac +- + fi + + +- +- +-# PATH needs CR +-# Avoid depending upon Character Ranges. +-as_cr_letters='abcdefghijklmnopqrstuvwxyz' +-as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +-as_cr_Letters=$as_cr_letters$as_cr_LETTERS +-as_cr_digits='0123456789' +-as_cr_alnum=$as_cr_Letters$as_cr_digits +- + as_nl=' + ' + export as_nl +@@ -15242,7 +13199,13 @@ + as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' + as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo + as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo +-if (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then ++# Prefer a ksh shell builtin over an external printf program on Solaris, ++# but without wasting forks for bash or zsh. ++if test -z "$BASH_VERSION$ZSH_VERSION" \ ++ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then ++ as_echo='print -r --' ++ as_echo_n='print -rn --' ++elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='printf %s\n' + as_echo_n='printf %s' + else +@@ -15253,7 +13216,7 @@ + as_echo_body='eval expr "X$1" : "X\\(.*\\)"' + as_echo_n_body='eval + arg=$1; +- case $arg in ++ case $arg in #( + *"$as_nl"*) + expr "X$arg" : "X\\(.*\\)$as_nl"; + arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; +@@ -15276,13 +13239,6 @@ + } + fi + +-# Support unset when possible. +-if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then +- as_unset=unset +-else +- as_unset=false +-fi +- + + # IFS + # We need space, tab and new line, in precisely that order. Quoting is +@@ -15292,15 +13248,15 @@ + IFS=" "" $as_nl" + + # Find who we are. Look in the path if we contain no directory separator. +-case $0 in ++case $0 in #(( + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR + for as_dir in $PATH + do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. +- test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break +-done ++ test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break ++ done + IFS=$as_save_IFS + + ;; +@@ -15312,12 +13268,16 @@ + fi + if test ! -f "$as_myself"; then + $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 +- { (exit 1); exit 1; } ++ exit 1 + fi + +-# Work around bugs in pre-3.0 UWIN ksh. +-for as_var in ENV MAIL MAILPATH +-do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var ++# Unset variables that we do not need and which cause bugs (e.g. in ++# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" ++# suppresses any "Segmentation fault" message there. '((' could ++# trigger a bug in pdksh 5.2.14. ++for as_var in BASH_ENV ENV MAIL MAILPATH ++do eval test x\${$as_var+set} = xset \ ++ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : + done + PS1='$ ' + PS2='> ' +@@ -15329,7 +13289,89 @@ + LANGUAGE=C + export LANGUAGE + +-# Required to use basename. ++# CDPATH. ++(unset CDPATH) >/dev/null 2>&1 && unset CDPATH ++ ++ ++# as_fn_error STATUS ERROR [LINENO LOG_FD] ++# ---------------------------------------- ++# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are ++# provided, also output the error to LOG_FD, referencing LINENO. Then exit the ++# script with STATUS, using 1 if that was 0. ++as_fn_error () ++{ ++ as_status=$1; test $as_status -eq 0 && as_status=1 ++ if test "$4"; then ++ as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack ++ $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 ++ fi ++ $as_echo "$as_me: error: $2" >&2 ++ as_fn_exit $as_status ++} # as_fn_error ++ ++ ++# as_fn_set_status STATUS ++# ----------------------- ++# Set $? to STATUS, without forking. ++as_fn_set_status () ++{ ++ return $1 ++} # as_fn_set_status ++ ++# as_fn_exit STATUS ++# ----------------- ++# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. ++as_fn_exit () ++{ ++ set +e ++ as_fn_set_status $1 ++ exit $1 ++} # as_fn_exit ++ ++# as_fn_unset VAR ++# --------------- ++# Portably unset VAR. ++as_fn_unset () ++{ ++ { eval $1=; unset $1;} ++} ++as_unset=as_fn_unset ++# as_fn_append VAR VALUE ++# ---------------------- ++# Append the text in VALUE to the end of the definition contained in VAR. Take ++# advantage of any shell optimizations that allow amortized linear growth over ++# repeated appends, instead of the typical quadratic growth present in naive ++# implementations. ++if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : ++ eval 'as_fn_append () ++ { ++ eval $1+=\$2 ++ }' ++else ++ as_fn_append () ++ { ++ eval $1=\$$1\$2 ++ } ++fi # as_fn_append ++ ++# as_fn_arith ARG... ++# ------------------ ++# Perform arithmetic evaluation on the ARGs, and store the result in the ++# global $as_val. Take advantage of shells that can avoid forks. The arguments ++# must be portable across $(()) and expr. ++if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : ++ eval 'as_fn_arith () ++ { ++ as_val=$(( $* )) ++ }' ++else ++ as_fn_arith () ++ { ++ as_val=`expr "$@" || test $? -eq 1` ++ } ++fi # as_fn_arith ++ ++ + if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +@@ -15343,8 +13385,12 @@ + as_basename=false + fi + ++if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then ++ as_dirname=dirname ++else ++ as_dirname=false ++fi + +-# Name of the executable. + as_me=`$as_basename -- "$0" || + $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ +@@ -15364,76 +13410,25 @@ + } + s/.*/./; q'` + +-# CDPATH. +-$as_unset CDPATH +- +- +- +- as_lineno_1=$LINENO +- as_lineno_2=$LINENO +- test "x$as_lineno_1" != "x$as_lineno_2" && +- test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || { +- +- # Create $as_me.lineno as a copy of $as_myself, but with $LINENO +- # uniformly replaced by the line number. The first 'sed' inserts a +- # line-number line after each line using $LINENO; the second 'sed' +- # does the real work. The second script uses 'N' to pair each +- # line-number line with the line containing $LINENO, and appends +- # trailing '-' during substitution so that $LINENO is not a special +- # case at line end. +- # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the +- # scripts with optimization help from Paolo Bonzini. Blame Lee +- # E. McMahon (1931-1989) for sed's syntax. :-) +- sed -n ' +- p +- /[$]LINENO/= +- ' <$as_myself | +- sed ' +- s/[$]LINENO.*/&-/ +- t lineno +- b +- :lineno +- N +- :loop +- s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ +- t loop +- s/-\n.*// +- ' >$as_me.lineno && +- chmod +x "$as_me.lineno" || +- { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 +- { (exit 1); exit 1; }; } +- +- # Don't try to exec as it changes $[0], causing all sort of problems +- # (the dirname of $[0] is not the place where we might find the +- # original and so on. Autoconf is especially sensitive to this). +- . "./$as_me.lineno" +- # Exit status is that of the last command. +- exit +-} +- +- +-if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then +- as_dirname=dirname +-else +- as_dirname=false +-fi ++# Avoid depending upon Character Ranges. ++as_cr_letters='abcdefghijklmnopqrstuvwxyz' ++as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' ++as_cr_Letters=$as_cr_letters$as_cr_LETTERS ++as_cr_digits='0123456789' ++as_cr_alnum=$as_cr_Letters$as_cr_digits + + ECHO_C= ECHO_N= ECHO_T= +-case `echo -n x` in ++case `echo -n x` in #((((( + -n*) +- case `echo 'x\c'` in ++ case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. +- *) ECHO_C='\c';; ++ xy) ECHO_C='\c';; ++ *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ++ ECHO_T=' ';; + esac;; + *) + ECHO_N='-n';; + esac +-if expr a : '\(a\)' >/dev/null 2>&1 && +- test "X`expr 00001 : '.*\(...\)'`" = X001; then +- as_expr=expr +-else +- as_expr=false +-fi + + rm -f conf$$ conf$$.exe conf$$.file + if test -d conf$$.dir; then +@@ -15462,8 +13457,56 @@ + rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file + rmdir conf$$.dir 2>/dev/null + ++ ++# as_fn_mkdir_p ++# ------------- ++# Create "$as_dir" as a directory, including parents if necessary. ++as_fn_mkdir_p () ++{ ++ ++ case $as_dir in #( ++ -*) as_dir=./$as_dir;; ++ esac ++ test -d "$as_dir" || eval $as_mkdir_p || { ++ as_dirs= ++ while :; do ++ case $as_dir in #( ++ *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( ++ *) as_qdir=$as_dir;; ++ esac ++ as_dirs="'$as_qdir' $as_dirs" ++ as_dir=`$as_dirname -- "$as_dir" || ++$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ ++ X"$as_dir" : 'X\(//\)[^/]' \| \ ++ X"$as_dir" : 'X\(//\)$' \| \ ++ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || ++$as_echo X"$as_dir" | ++ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)[^/].*/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\).*/{ ++ s//\1/ ++ q ++ } ++ s/.*/./; q'` ++ test -d "$as_dir" && break ++ done ++ test -z "$as_dirs" || eval "mkdir $as_dirs" ++ } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" ++ ++ ++} # as_fn_mkdir_p + if mkdir -p . 2>/dev/null; then +- as_mkdir_p=: ++ as_mkdir_p='mkdir -p "$as_dir"' + else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +@@ -15482,10 +13525,10 @@ + if test -d "$1"; then + test -d "$1/."; + else +- case $1 in ++ case $1 in #( + -*)set "./$1";; + esac; +- case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in ++ case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #(( + ???[sx]*):;;*)false;;esac;fi + '\'' sh + ' +@@ -15500,13 +13543,19 @@ + + + exec 6>&1 ++## ----------------------------------- ## ++## Main body of $CONFIG_STATUS script. ## ++## ----------------------------------- ## ++_ASEOF ++test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 + +-# Save the log message, to keep $[0] and so on meaningful, and to ++cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ++# Save the log message, to keep $0 and so on meaningful, and to + # report actual input values of CONFIG_FILES etc. instead of their + # values after options handling. + ac_log=" + This file was extended by $as_me, which was +-generated by GNU Autoconf 2.63. Invocation command line was ++generated by GNU Autoconf 2.66. Invocation command line was + + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS +@@ -15538,13 +13587,15 @@ + + cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 + ac_cs_usage="\ +-\`$as_me' instantiates files from templates according to the +-current configuration. ++\`$as_me' instantiates files and other configuration actions ++from templates according to the current configuration. Unless the files ++and actions are specified as TAGs, all are instantiated by default. + +-Usage: $0 [OPTION]... [FILE]... ++Usage: $0 [OPTION]... [TAG]... + + -h, --help print this help, then exit + -V, --version print version number and configuration settings, then exit ++ --config print configuration, then exit + -q, --quiet, --silent + do not print progress messages + -d, --debug don't remove temporary files +@@ -15563,16 +13614,17 @@ + Configuration commands: + $config_commands + +-Report bugs to ." ++Report bugs to the package provider." + + _ACEOF + cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ++ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" + ac_cs_version="\\ + config.status +-configured by $0, generated by GNU Autoconf 2.63, +- with options \\"`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\" ++configured by $0, generated by GNU Autoconf 2.66, ++ with options \\"\$ac_cs_config\\" + +-Copyright (C) 2008 Free Software Foundation, Inc. ++Copyright (C) 2010 Free Software Foundation, Inc. + This config.status script is free software; the Free Software Foundation + gives unlimited permission to copy, distribute and modify it." + +@@ -15608,6 +13660,8 @@ + ac_cs_recheck=: ;; + --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) + $as_echo "$ac_cs_version"; exit ;; ++ --config | --confi | --conf | --con | --co | --c ) ++ $as_echo "$ac_cs_config"; exit ;; + --debug | --debu | --deb | --de | --d | -d ) + debug=: ;; + --file | --fil | --fi | --f ) +@@ -15615,20 +13669,19 @@ + case $ac_optarg in + *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac +- CONFIG_FILES="$CONFIG_FILES '$ac_optarg'" ++ as_fn_append CONFIG_FILES " '$ac_optarg'" + ac_need_defaults=false;; + --header | --heade | --head | --hea ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac +- CONFIG_HEADERS="$CONFIG_HEADERS '$ac_optarg'" ++ as_fn_append CONFIG_HEADERS " '$ac_optarg'" + ac_need_defaults=false;; + --he | --h) + # Conflict between --help and --header +- { $as_echo "$as_me: error: ambiguous option: $1 +-Try \`$0 --help' for more information." >&2 +- { (exit 1); exit 1; }; };; ++ as_fn_error $? "ambiguous option: \`$1' ++Try \`$0 --help' for more information.";; + --help | --hel | -h ) + $as_echo "$ac_cs_usage"; exit ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ +@@ -15636,11 +13689,10 @@ + ac_cs_silent=: ;; + + # This is an error. +- -*) { $as_echo "$as_me: error: unrecognized option: $1 +-Try \`$0 --help' for more information." >&2 +- { (exit 1); exit 1; }; } ;; ++ -*) as_fn_error $? "unrecognized option: \`$1' ++Try \`$0 --help' for more information." ;; + +- *) ac_config_targets="$ac_config_targets $1" ++ *) as_fn_append ac_config_targets " $1" + ac_need_defaults=false ;; + + esac +@@ -15691,133 +13743,148 @@ + sed_quote_subst='$sed_quote_subst' + double_quote_subst='$double_quote_subst' + delay_variable_subst='$delay_variable_subst' +-AS='`$ECHO "X$AS" | $Xsed -e "$delay_single_quote_subst"`' +-DLLTOOL='`$ECHO "X$DLLTOOL" | $Xsed -e "$delay_single_quote_subst"`' +-OBJDUMP='`$ECHO "X$OBJDUMP" | $Xsed -e "$delay_single_quote_subst"`' +-macro_version='`$ECHO "X$macro_version" | $Xsed -e "$delay_single_quote_subst"`' +-macro_revision='`$ECHO "X$macro_revision" | $Xsed -e "$delay_single_quote_subst"`' +-enable_shared='`$ECHO "X$enable_shared" | $Xsed -e "$delay_single_quote_subst"`' +-enable_static='`$ECHO "X$enable_static" | $Xsed -e "$delay_single_quote_subst"`' +-pic_mode='`$ECHO "X$pic_mode" | $Xsed -e "$delay_single_quote_subst"`' +-enable_fast_install='`$ECHO "X$enable_fast_install" | $Xsed -e "$delay_single_quote_subst"`' +-host_alias='`$ECHO "X$host_alias" | $Xsed -e "$delay_single_quote_subst"`' +-host='`$ECHO "X$host" | $Xsed -e "$delay_single_quote_subst"`' +-host_os='`$ECHO "X$host_os" | $Xsed -e "$delay_single_quote_subst"`' +-build_alias='`$ECHO "X$build_alias" | $Xsed -e "$delay_single_quote_subst"`' +-build='`$ECHO "X$build" | $Xsed -e "$delay_single_quote_subst"`' +-build_os='`$ECHO "X$build_os" | $Xsed -e "$delay_single_quote_subst"`' +-SED='`$ECHO "X$SED" | $Xsed -e "$delay_single_quote_subst"`' +-Xsed='`$ECHO "X$Xsed" | $Xsed -e "$delay_single_quote_subst"`' +-GREP='`$ECHO "X$GREP" | $Xsed -e "$delay_single_quote_subst"`' +-EGREP='`$ECHO "X$EGREP" | $Xsed -e "$delay_single_quote_subst"`' +-FGREP='`$ECHO "X$FGREP" | $Xsed -e "$delay_single_quote_subst"`' +-LD='`$ECHO "X$LD" | $Xsed -e "$delay_single_quote_subst"`' +-NM='`$ECHO "X$NM" | $Xsed -e "$delay_single_quote_subst"`' +-LN_S='`$ECHO "X$LN_S" | $Xsed -e "$delay_single_quote_subst"`' +-max_cmd_len='`$ECHO "X$max_cmd_len" | $Xsed -e "$delay_single_quote_subst"`' +-ac_objext='`$ECHO "X$ac_objext" | $Xsed -e "$delay_single_quote_subst"`' +-exeext='`$ECHO "X$exeext" | $Xsed -e "$delay_single_quote_subst"`' +-lt_unset='`$ECHO "X$lt_unset" | $Xsed -e "$delay_single_quote_subst"`' +-lt_SP2NL='`$ECHO "X$lt_SP2NL" | $Xsed -e "$delay_single_quote_subst"`' +-lt_NL2SP='`$ECHO "X$lt_NL2SP" | $Xsed -e "$delay_single_quote_subst"`' +-reload_flag='`$ECHO "X$reload_flag" | $Xsed -e "$delay_single_quote_subst"`' +-reload_cmds='`$ECHO "X$reload_cmds" | $Xsed -e "$delay_single_quote_subst"`' +-deplibs_check_method='`$ECHO "X$deplibs_check_method" | $Xsed -e "$delay_single_quote_subst"`' +-file_magic_cmd='`$ECHO "X$file_magic_cmd" | $Xsed -e "$delay_single_quote_subst"`' +-AR='`$ECHO "X$AR" | $Xsed -e "$delay_single_quote_subst"`' +-AR_FLAGS='`$ECHO "X$AR_FLAGS" | $Xsed -e "$delay_single_quote_subst"`' +-STRIP='`$ECHO "X$STRIP" | $Xsed -e "$delay_single_quote_subst"`' +-RANLIB='`$ECHO "X$RANLIB" | $Xsed -e "$delay_single_quote_subst"`' +-old_postinstall_cmds='`$ECHO "X$old_postinstall_cmds" | $Xsed -e "$delay_single_quote_subst"`' +-old_postuninstall_cmds='`$ECHO "X$old_postuninstall_cmds" | $Xsed -e "$delay_single_quote_subst"`' +-old_archive_cmds='`$ECHO "X$old_archive_cmds" | $Xsed -e "$delay_single_quote_subst"`' +-CC='`$ECHO "X$CC" | $Xsed -e "$delay_single_quote_subst"`' +-CFLAGS='`$ECHO "X$CFLAGS" | $Xsed -e "$delay_single_quote_subst"`' +-compiler='`$ECHO "X$compiler" | $Xsed -e "$delay_single_quote_subst"`' +-GCC='`$ECHO "X$GCC" | $Xsed -e "$delay_single_quote_subst"`' +-lt_cv_sys_global_symbol_pipe='`$ECHO "X$lt_cv_sys_global_symbol_pipe" | $Xsed -e "$delay_single_quote_subst"`' +-lt_cv_sys_global_symbol_to_cdecl='`$ECHO "X$lt_cv_sys_global_symbol_to_cdecl" | $Xsed -e "$delay_single_quote_subst"`' +-lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "X$lt_cv_sys_global_symbol_to_c_name_address" | $Xsed -e "$delay_single_quote_subst"`' +-lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "X$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $Xsed -e "$delay_single_quote_subst"`' +-objdir='`$ECHO "X$objdir" | $Xsed -e "$delay_single_quote_subst"`' +-SHELL='`$ECHO "X$SHELL" | $Xsed -e "$delay_single_quote_subst"`' +-ECHO='`$ECHO "X$ECHO" | $Xsed -e "$delay_single_quote_subst"`' +-MAGIC_CMD='`$ECHO "X$MAGIC_CMD" | $Xsed -e "$delay_single_quote_subst"`' +-lt_prog_compiler_no_builtin_flag='`$ECHO "X$lt_prog_compiler_no_builtin_flag" | $Xsed -e "$delay_single_quote_subst"`' +-lt_prog_compiler_wl='`$ECHO "X$lt_prog_compiler_wl" | $Xsed -e "$delay_single_quote_subst"`' +-lt_prog_compiler_pic='`$ECHO "X$lt_prog_compiler_pic" | $Xsed -e "$delay_single_quote_subst"`' +-lt_prog_compiler_static='`$ECHO "X$lt_prog_compiler_static" | $Xsed -e "$delay_single_quote_subst"`' +-lt_cv_prog_compiler_c_o='`$ECHO "X$lt_cv_prog_compiler_c_o" | $Xsed -e "$delay_single_quote_subst"`' +-need_locks='`$ECHO "X$need_locks" | $Xsed -e "$delay_single_quote_subst"`' +-DSYMUTIL='`$ECHO "X$DSYMUTIL" | $Xsed -e "$delay_single_quote_subst"`' +-NMEDIT='`$ECHO "X$NMEDIT" | $Xsed -e "$delay_single_quote_subst"`' +-LIPO='`$ECHO "X$LIPO" | $Xsed -e "$delay_single_quote_subst"`' +-OTOOL='`$ECHO "X$OTOOL" | $Xsed -e "$delay_single_quote_subst"`' +-OTOOL64='`$ECHO "X$OTOOL64" | $Xsed -e "$delay_single_quote_subst"`' +-libext='`$ECHO "X$libext" | $Xsed -e "$delay_single_quote_subst"`' +-shrext_cmds='`$ECHO "X$shrext_cmds" | $Xsed -e "$delay_single_quote_subst"`' +-extract_expsyms_cmds='`$ECHO "X$extract_expsyms_cmds" | $Xsed -e "$delay_single_quote_subst"`' +-archive_cmds_need_lc='`$ECHO "X$archive_cmds_need_lc" | $Xsed -e "$delay_single_quote_subst"`' +-enable_shared_with_static_runtimes='`$ECHO "X$enable_shared_with_static_runtimes" | $Xsed -e "$delay_single_quote_subst"`' +-export_dynamic_flag_spec='`$ECHO "X$export_dynamic_flag_spec" | $Xsed -e "$delay_single_quote_subst"`' +-whole_archive_flag_spec='`$ECHO "X$whole_archive_flag_spec" | $Xsed -e "$delay_single_quote_subst"`' +-compiler_needs_object='`$ECHO "X$compiler_needs_object" | $Xsed -e "$delay_single_quote_subst"`' +-old_archive_from_new_cmds='`$ECHO "X$old_archive_from_new_cmds" | $Xsed -e "$delay_single_quote_subst"`' +-old_archive_from_expsyms_cmds='`$ECHO "X$old_archive_from_expsyms_cmds" | $Xsed -e "$delay_single_quote_subst"`' +-archive_cmds='`$ECHO "X$archive_cmds" | $Xsed -e "$delay_single_quote_subst"`' +-archive_expsym_cmds='`$ECHO "X$archive_expsym_cmds" | $Xsed -e "$delay_single_quote_subst"`' +-module_cmds='`$ECHO "X$module_cmds" | $Xsed -e "$delay_single_quote_subst"`' +-module_expsym_cmds='`$ECHO "X$module_expsym_cmds" | $Xsed -e "$delay_single_quote_subst"`' +-with_gnu_ld='`$ECHO "X$with_gnu_ld" | $Xsed -e "$delay_single_quote_subst"`' +-allow_undefined_flag='`$ECHO "X$allow_undefined_flag" | $Xsed -e "$delay_single_quote_subst"`' +-no_undefined_flag='`$ECHO "X$no_undefined_flag" | $Xsed -e "$delay_single_quote_subst"`' +-hardcode_libdir_flag_spec='`$ECHO "X$hardcode_libdir_flag_spec" | $Xsed -e "$delay_single_quote_subst"`' +-hardcode_libdir_flag_spec_ld='`$ECHO "X$hardcode_libdir_flag_spec_ld" | $Xsed -e "$delay_single_quote_subst"`' +-hardcode_libdir_separator='`$ECHO "X$hardcode_libdir_separator" | $Xsed -e "$delay_single_quote_subst"`' +-hardcode_direct='`$ECHO "X$hardcode_direct" | $Xsed -e "$delay_single_quote_subst"`' +-hardcode_direct_absolute='`$ECHO "X$hardcode_direct_absolute" | $Xsed -e "$delay_single_quote_subst"`' +-hardcode_minus_L='`$ECHO "X$hardcode_minus_L" | $Xsed -e "$delay_single_quote_subst"`' +-hardcode_shlibpath_var='`$ECHO "X$hardcode_shlibpath_var" | $Xsed -e "$delay_single_quote_subst"`' +-hardcode_automatic='`$ECHO "X$hardcode_automatic" | $Xsed -e "$delay_single_quote_subst"`' +-inherit_rpath='`$ECHO "X$inherit_rpath" | $Xsed -e "$delay_single_quote_subst"`' +-link_all_deplibs='`$ECHO "X$link_all_deplibs" | $Xsed -e "$delay_single_quote_subst"`' +-fix_srcfile_path='`$ECHO "X$fix_srcfile_path" | $Xsed -e "$delay_single_quote_subst"`' +-always_export_symbols='`$ECHO "X$always_export_symbols" | $Xsed -e "$delay_single_quote_subst"`' +-export_symbols_cmds='`$ECHO "X$export_symbols_cmds" | $Xsed -e "$delay_single_quote_subst"`' +-exclude_expsyms='`$ECHO "X$exclude_expsyms" | $Xsed -e "$delay_single_quote_subst"`' +-include_expsyms='`$ECHO "X$include_expsyms" | $Xsed -e "$delay_single_quote_subst"`' +-prelink_cmds='`$ECHO "X$prelink_cmds" | $Xsed -e "$delay_single_quote_subst"`' +-file_list_spec='`$ECHO "X$file_list_spec" | $Xsed -e "$delay_single_quote_subst"`' +-variables_saved_for_relink='`$ECHO "X$variables_saved_for_relink" | $Xsed -e "$delay_single_quote_subst"`' +-need_lib_prefix='`$ECHO "X$need_lib_prefix" | $Xsed -e "$delay_single_quote_subst"`' +-need_version='`$ECHO "X$need_version" | $Xsed -e "$delay_single_quote_subst"`' +-version_type='`$ECHO "X$version_type" | $Xsed -e "$delay_single_quote_subst"`' +-runpath_var='`$ECHO "X$runpath_var" | $Xsed -e "$delay_single_quote_subst"`' +-shlibpath_var='`$ECHO "X$shlibpath_var" | $Xsed -e "$delay_single_quote_subst"`' +-shlibpath_overrides_runpath='`$ECHO "X$shlibpath_overrides_runpath" | $Xsed -e "$delay_single_quote_subst"`' +-libname_spec='`$ECHO "X$libname_spec" | $Xsed -e "$delay_single_quote_subst"`' +-library_names_spec='`$ECHO "X$library_names_spec" | $Xsed -e "$delay_single_quote_subst"`' +-soname_spec='`$ECHO "X$soname_spec" | $Xsed -e "$delay_single_quote_subst"`' +-postinstall_cmds='`$ECHO "X$postinstall_cmds" | $Xsed -e "$delay_single_quote_subst"`' +-postuninstall_cmds='`$ECHO "X$postuninstall_cmds" | $Xsed -e "$delay_single_quote_subst"`' +-finish_cmds='`$ECHO "X$finish_cmds" | $Xsed -e "$delay_single_quote_subst"`' +-finish_eval='`$ECHO "X$finish_eval" | $Xsed -e "$delay_single_quote_subst"`' +-hardcode_into_libs='`$ECHO "X$hardcode_into_libs" | $Xsed -e "$delay_single_quote_subst"`' +-sys_lib_search_path_spec='`$ECHO "X$sys_lib_search_path_spec" | $Xsed -e "$delay_single_quote_subst"`' +-sys_lib_dlsearch_path_spec='`$ECHO "X$sys_lib_dlsearch_path_spec" | $Xsed -e "$delay_single_quote_subst"`' +-hardcode_action='`$ECHO "X$hardcode_action" | $Xsed -e "$delay_single_quote_subst"`' +-enable_dlopen='`$ECHO "X$enable_dlopen" | $Xsed -e "$delay_single_quote_subst"`' +-enable_dlopen_self='`$ECHO "X$enable_dlopen_self" | $Xsed -e "$delay_single_quote_subst"`' +-enable_dlopen_self_static='`$ECHO "X$enable_dlopen_self_static" | $Xsed -e "$delay_single_quote_subst"`' +-old_striplib='`$ECHO "X$old_striplib" | $Xsed -e "$delay_single_quote_subst"`' +-striplib='`$ECHO "X$striplib" | $Xsed -e "$delay_single_quote_subst"`' ++AS='`$ECHO "$AS" | $SED "$delay_single_quote_subst"`' ++DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`' ++OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`' ++macro_version='`$ECHO "$macro_version" | $SED "$delay_single_quote_subst"`' ++macro_revision='`$ECHO "$macro_revision" | $SED "$delay_single_quote_subst"`' ++enable_shared='`$ECHO "$enable_shared" | $SED "$delay_single_quote_subst"`' ++enable_static='`$ECHO "$enable_static" | $SED "$delay_single_quote_subst"`' ++pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`' ++enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`' ++SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`' ++ECHO='`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`' ++host_alias='`$ECHO "$host_alias" | $SED "$delay_single_quote_subst"`' ++host='`$ECHO "$host" | $SED "$delay_single_quote_subst"`' ++host_os='`$ECHO "$host_os" | $SED "$delay_single_quote_subst"`' ++build_alias='`$ECHO "$build_alias" | $SED "$delay_single_quote_subst"`' ++build='`$ECHO "$build" | $SED "$delay_single_quote_subst"`' ++build_os='`$ECHO "$build_os" | $SED "$delay_single_quote_subst"`' ++SED='`$ECHO "$SED" | $SED "$delay_single_quote_subst"`' ++Xsed='`$ECHO "$Xsed" | $SED "$delay_single_quote_subst"`' ++GREP='`$ECHO "$GREP" | $SED "$delay_single_quote_subst"`' ++EGREP='`$ECHO "$EGREP" | $SED "$delay_single_quote_subst"`' ++FGREP='`$ECHO "$FGREP" | $SED "$delay_single_quote_subst"`' ++LD='`$ECHO "$LD" | $SED "$delay_single_quote_subst"`' ++NM='`$ECHO "$NM" | $SED "$delay_single_quote_subst"`' ++LN_S='`$ECHO "$LN_S" | $SED "$delay_single_quote_subst"`' ++max_cmd_len='`$ECHO "$max_cmd_len" | $SED "$delay_single_quote_subst"`' ++ac_objext='`$ECHO "$ac_objext" | $SED "$delay_single_quote_subst"`' ++exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`' ++lt_unset='`$ECHO "$lt_unset" | $SED "$delay_single_quote_subst"`' ++lt_SP2NL='`$ECHO "$lt_SP2NL" | $SED "$delay_single_quote_subst"`' ++lt_NL2SP='`$ECHO "$lt_NL2SP" | $SED "$delay_single_quote_subst"`' ++reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`' ++reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`' ++deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`' ++file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`' ++AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`' ++AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`' ++STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`' ++RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`' ++old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`' ++old_postuninstall_cmds='`$ECHO "$old_postuninstall_cmds" | $SED "$delay_single_quote_subst"`' ++old_archive_cmds='`$ECHO "$old_archive_cmds" | $SED "$delay_single_quote_subst"`' ++lock_old_archive_extraction='`$ECHO "$lock_old_archive_extraction" | $SED "$delay_single_quote_subst"`' ++CC='`$ECHO "$CC" | $SED "$delay_single_quote_subst"`' ++CFLAGS='`$ECHO "$CFLAGS" | $SED "$delay_single_quote_subst"`' ++compiler='`$ECHO "$compiler" | $SED "$delay_single_quote_subst"`' ++GCC='`$ECHO "$GCC" | $SED "$delay_single_quote_subst"`' ++lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$delay_single_quote_subst"`' ++lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`' ++lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`' ++lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`' ++objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`' ++MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`' ++lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`' ++lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`' ++lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`' ++lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`' ++lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`' ++need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`' ++DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`' ++NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`' ++LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`' ++OTOOL='`$ECHO "$OTOOL" | $SED "$delay_single_quote_subst"`' ++OTOOL64='`$ECHO "$OTOOL64" | $SED "$delay_single_quote_subst"`' ++libext='`$ECHO "$libext" | $SED "$delay_single_quote_subst"`' ++shrext_cmds='`$ECHO "$shrext_cmds" | $SED "$delay_single_quote_subst"`' ++extract_expsyms_cmds='`$ECHO "$extract_expsyms_cmds" | $SED "$delay_single_quote_subst"`' ++archive_cmds_need_lc='`$ECHO "$archive_cmds_need_lc" | $SED "$delay_single_quote_subst"`' ++enable_shared_with_static_runtimes='`$ECHO "$enable_shared_with_static_runtimes" | $SED "$delay_single_quote_subst"`' ++export_dynamic_flag_spec='`$ECHO "$export_dynamic_flag_spec" | $SED "$delay_single_quote_subst"`' ++whole_archive_flag_spec='`$ECHO "$whole_archive_flag_spec" | $SED "$delay_single_quote_subst"`' ++compiler_needs_object='`$ECHO "$compiler_needs_object" | $SED "$delay_single_quote_subst"`' ++old_archive_from_new_cmds='`$ECHO "$old_archive_from_new_cmds" | $SED "$delay_single_quote_subst"`' ++old_archive_from_expsyms_cmds='`$ECHO "$old_archive_from_expsyms_cmds" | $SED "$delay_single_quote_subst"`' ++archive_cmds='`$ECHO "$archive_cmds" | $SED "$delay_single_quote_subst"`' ++archive_expsym_cmds='`$ECHO "$archive_expsym_cmds" | $SED "$delay_single_quote_subst"`' ++module_cmds='`$ECHO "$module_cmds" | $SED "$delay_single_quote_subst"`' ++module_expsym_cmds='`$ECHO "$module_expsym_cmds" | $SED "$delay_single_quote_subst"`' ++with_gnu_ld='`$ECHO "$with_gnu_ld" | $SED "$delay_single_quote_subst"`' ++allow_undefined_flag='`$ECHO "$allow_undefined_flag" | $SED "$delay_single_quote_subst"`' ++no_undefined_flag='`$ECHO "$no_undefined_flag" | $SED "$delay_single_quote_subst"`' ++hardcode_libdir_flag_spec='`$ECHO "$hardcode_libdir_flag_spec" | $SED "$delay_single_quote_subst"`' ++hardcode_libdir_flag_spec_ld='`$ECHO "$hardcode_libdir_flag_spec_ld" | $SED "$delay_single_quote_subst"`' ++hardcode_libdir_separator='`$ECHO "$hardcode_libdir_separator" | $SED "$delay_single_quote_subst"`' ++hardcode_direct='`$ECHO "$hardcode_direct" | $SED "$delay_single_quote_subst"`' ++hardcode_direct_absolute='`$ECHO "$hardcode_direct_absolute" | $SED "$delay_single_quote_subst"`' ++hardcode_minus_L='`$ECHO "$hardcode_minus_L" | $SED "$delay_single_quote_subst"`' ++hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_quote_subst"`' ++hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`' ++inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`' ++link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`' ++fix_srcfile_path='`$ECHO "$fix_srcfile_path" | $SED "$delay_single_quote_subst"`' ++always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`' ++export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`' ++exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`' ++include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`' ++prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`' ++file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`' ++variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`' ++need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`' ++need_version='`$ECHO "$need_version" | $SED "$delay_single_quote_subst"`' ++version_type='`$ECHO "$version_type" | $SED "$delay_single_quote_subst"`' ++runpath_var='`$ECHO "$runpath_var" | $SED "$delay_single_quote_subst"`' ++shlibpath_var='`$ECHO "$shlibpath_var" | $SED "$delay_single_quote_subst"`' ++shlibpath_overrides_runpath='`$ECHO "$shlibpath_overrides_runpath" | $SED "$delay_single_quote_subst"`' ++libname_spec='`$ECHO "$libname_spec" | $SED "$delay_single_quote_subst"`' ++library_names_spec='`$ECHO "$library_names_spec" | $SED "$delay_single_quote_subst"`' ++soname_spec='`$ECHO "$soname_spec" | $SED "$delay_single_quote_subst"`' ++install_override_mode='`$ECHO "$install_override_mode" | $SED "$delay_single_quote_subst"`' ++postinstall_cmds='`$ECHO "$postinstall_cmds" | $SED "$delay_single_quote_subst"`' ++postuninstall_cmds='`$ECHO "$postuninstall_cmds" | $SED "$delay_single_quote_subst"`' ++finish_cmds='`$ECHO "$finish_cmds" | $SED "$delay_single_quote_subst"`' ++finish_eval='`$ECHO "$finish_eval" | $SED "$delay_single_quote_subst"`' ++hardcode_into_libs='`$ECHO "$hardcode_into_libs" | $SED "$delay_single_quote_subst"`' ++sys_lib_search_path_spec='`$ECHO "$sys_lib_search_path_spec" | $SED "$delay_single_quote_subst"`' ++sys_lib_dlsearch_path_spec='`$ECHO "$sys_lib_dlsearch_path_spec" | $SED "$delay_single_quote_subst"`' ++hardcode_action='`$ECHO "$hardcode_action" | $SED "$delay_single_quote_subst"`' ++enable_dlopen='`$ECHO "$enable_dlopen" | $SED "$delay_single_quote_subst"`' ++enable_dlopen_self='`$ECHO "$enable_dlopen_self" | $SED "$delay_single_quote_subst"`' ++enable_dlopen_self_static='`$ECHO "$enable_dlopen_self_static" | $SED "$delay_single_quote_subst"`' ++old_striplib='`$ECHO "$old_striplib" | $SED "$delay_single_quote_subst"`' ++striplib='`$ECHO "$striplib" | $SED "$delay_single_quote_subst"`' + + LTCC='$LTCC' + LTCFLAGS='$LTCFLAGS' + compiler='$compiler_DEFAULT' + ++# A function that is used when there is no print builtin or printf. ++func_fallback_echo () ++{ ++ eval 'cat <<_LTECHO_EOF ++\$1 ++_LTECHO_EOF' ++} ++ + # Quote evaled strings. +-for var in SED \ ++for var in AS \ ++DLLTOOL \ ++OBJDUMP \ ++SHELL \ ++ECHO \ ++SED \ + GREP \ + EGREP \ + FGREP \ +@@ -15840,8 +13907,6 @@ + lt_cv_sys_global_symbol_to_cdecl \ + lt_cv_sys_global_symbol_to_c_name_address \ + lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \ +-SHELL \ +-ECHO \ + lt_prog_compiler_no_builtin_flag \ + lt_prog_compiler_wl \ + lt_prog_compiler_pic \ +@@ -15871,12 +13936,13 @@ + libname_spec \ + library_names_spec \ + soname_spec \ ++install_override_mode \ + finish_eval \ + old_striplib \ + striplib; do +- case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in ++ case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in + *[\\\\\\\`\\"\\\$]*) +- eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ++ eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" + ;; + *) + eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" +@@ -15903,9 +13969,9 @@ + finish_cmds \ + sys_lib_search_path_spec \ + sys_lib_dlsearch_path_spec; do +- case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in ++ case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in + *[\\\\\\\`\\"\\\$]*) +- eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ++ eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" + ;; + *) + eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" +@@ -15913,12 +13979,6 @@ + esac + done + +-# Fix-up fallback echo if it was mangled by the above quoting rules. +-case \$lt_ECHO in +-*'\\\$0 --fallback-echo"') lt_ECHO=\`\$ECHO "X\$lt_ECHO" | \$Xsed -e 's/\\\\\\\\\\\\\\\$0 --fallback-echo"\$/\$0 --fallback-echo"/'\` +- ;; +-esac +- + ac_aux_dir='$ac_aux_dir' + xsi_shell='$xsi_shell' + lt_shell_append='$lt_shell_append' +@@ -15971,9 +14031,7 @@ + "fontconfig.pc") CONFIG_FILES="$CONFIG_FILES fontconfig.pc" ;; + "fontconfig-zip") CONFIG_FILES="$CONFIG_FILES fontconfig-zip" ;; + +- *) { { $as_echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 +-$as_echo "$as_me: error: invalid argument: $ac_config_target" >&2;} +- { (exit 1); exit 1; }; };; ++ *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; + esac + done + +@@ -16000,7 +14058,7 @@ + trap 'exit_status=$? + { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status + ' 0 +- trap '{ (exit 1); exit 1; }' 1 2 13 15 ++ trap 'as_fn_exit 1' 1 2 13 15 + } + # Create a (secure) tmp directory for tmp files. + +@@ -16011,11 +14069,7 @@ + { + tmp=./conf$$-$RANDOM + (umask 077 && mkdir "$tmp") +-} || +-{ +- $as_echo "$as_me: cannot create a temporary directory in ." >&2 +- { (exit 1); exit 1; } +-} ++} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 + + # Set up the scripts for CONFIG_FILES section. + # No need to generate them if there are no CONFIG_FILES. +@@ -16023,7 +14077,13 @@ + if test -n "$CONFIG_FILES"; then + + +-ac_cr=' ' ++ac_cr=`echo X | tr X '\015'` ++# On cygwin, bash can eat \r inside `` if the user requested igncr. ++# But we know of no other shell where ac_cr would be empty at this ++# point, so we can use a bashism as a fallback. ++if test "x$ac_cr" = x; then ++ eval ac_cr=\$\'\\r\' ++fi + ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` + if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then + ac_cs_awk_cr='\\r' +@@ -16040,24 +14100,18 @@ + echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && + echo "_ACEOF" + } >conf$$subs.sh || +- { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 +-$as_echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} +- { (exit 1); exit 1; }; } +-ac_delim_num=`echo "$ac_subst_vars" | grep -c '$'` ++ as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ++ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` + ac_delim='%!_!# ' + for ac_last_try in false false false false false :; do + . ./conf$$subs.sh || +- { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 +-$as_echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} +- { (exit 1); exit 1; }; } ++ as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 + + ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` + if test $ac_delim_n = $ac_delim_num; then + break + elif $ac_last_try; then +- { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 +-$as_echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} +- { (exit 1); exit 1; }; } ++ as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +@@ -16079,7 +14133,7 @@ + t delim + :nl + h +-s/\(.\{148\}\).*/\1/ ++s/\(.\{148\}\)..*/\1/ + t more1 + s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ + p +@@ -16093,7 +14147,7 @@ + t nl + :delim + h +-s/\(.\{148\}\).*/\1/ ++s/\(.\{148\}\)..*/\1/ + t more2 + s/["\\]/\\&/g; s/^/"/; s/$/"/ + p +@@ -16146,22 +14200,28 @@ + else + cat + fi < "$tmp/subs1.awk" > "$tmp/subs.awk" \ +- || { { $as_echo "$as_me:$LINENO: error: could not setup config files machinery" >&5 +-$as_echo "$as_me: error: could not setup config files machinery" >&2;} +- { (exit 1); exit 1; }; } ++ || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 + _ACEOF + +-# VPATH may cause trouble with some makes, so we remove $(srcdir), +-# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and ++# VPATH may cause trouble with some makes, so we remove sole $(srcdir), ++# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and + # trailing colons and then remove the whole line if VPATH becomes empty + # (actually we leave an empty line to preserve line numbers). + if test "x$srcdir" = x.; then +- ac_vpsub='/^[ ]*VPATH[ ]*=/{ +-s/:*\$(srcdir):*/:/ +-s/:*\${srcdir}:*/:/ +-s/:*@srcdir@:*/:/ +-s/^\([^=]*=[ ]*\):*/\1/ ++ ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ ++h ++s/// ++s/^/:/ ++s/[ ]*$/:/ ++s/:\$(srcdir):/:/g ++s/:\${srcdir}:/:/g ++s/:@srcdir@:/:/g ++s/^:*// + s/:*$// ++x ++s/\(=[ ]*\).*/\1/ ++G ++s/\n// + s/^[^=]*=[ ]*$// + }' + fi +@@ -16189,9 +14249,7 @@ + if test -z "$ac_t"; then + break + elif $ac_last_try; then +- { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_HEADERS" >&5 +-$as_echo "$as_me: error: could not make $CONFIG_HEADERS" >&2;} +- { (exit 1); exit 1; }; } ++ as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +@@ -16276,9 +14334,7 @@ + _ACAWK + _ACEOF + cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +- { { $as_echo "$as_me:$LINENO: error: could not setup config headers machinery" >&5 +-$as_echo "$as_me: error: could not setup config headers machinery" >&2;} +- { (exit 1); exit 1; }; } ++ as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 + fi # test -n "$CONFIG_HEADERS" + + +@@ -16291,9 +14347,7 @@ + esac + case $ac_mode$ac_tag in + :[FHL]*:*);; +- :L* | :C*:*) { { $as_echo "$as_me:$LINENO: error: invalid tag $ac_tag" >&5 +-$as_echo "$as_me: error: invalid tag $ac_tag" >&2;} +- { (exit 1); exit 1; }; };; ++ :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; + :[FH]-) ac_tag=-:-;; + :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; + esac +@@ -16321,12 +14375,10 @@ + [\\/$]*) false;; + *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; + esac || +- { { $as_echo "$as_me:$LINENO: error: cannot find input file: $ac_f" >&5 +-$as_echo "$as_me: error: cannot find input file: $ac_f" >&2;} +- { (exit 1); exit 1; }; };; ++ as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; + esac + case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac +- ac_file_inputs="$ac_file_inputs '$ac_f'" ++ as_fn_append ac_file_inputs " '$ac_f'" + done + + # Let's still pretend it is `configure' which instantiates (i.e., don't +@@ -16337,7 +14389,7 @@ + `' by configure.' + if test x"$ac_file" != x-; then + configure_input="$ac_file. $configure_input" +- { $as_echo "$as_me:$LINENO: creating $ac_file" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 + $as_echo "$as_me: creating $ac_file" >&6;} + fi + # Neutralize special characters interpreted by sed in replacement strings. +@@ -16350,9 +14402,7 @@ + + case $ac_tag in + *:-:* | *:-) cat >"$tmp/stdin" \ +- || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5 +-$as_echo "$as_me: error: could not create $ac_file" >&2;} +- { (exit 1); exit 1; }; } ;; ++ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; + esac + ;; + esac +@@ -16380,47 +14430,7 @@ + q + } + s/.*/./; q'` +- { as_dir="$ac_dir" +- case $as_dir in #( +- -*) as_dir=./$as_dir;; +- esac +- test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || { +- as_dirs= +- while :; do +- case $as_dir in #( +- *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( +- *) as_qdir=$as_dir;; +- esac +- as_dirs="'$as_qdir' $as_dirs" +- as_dir=`$as_dirname -- "$as_dir" || +-$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ +- X"$as_dir" : 'X\(//\)[^/]' \| \ +- X"$as_dir" : 'X\(//\)$' \| \ +- X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +-$as_echo X"$as_dir" | +- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ +- s//\1/ +- q +- } +- /^X\(\/\/\)[^/].*/{ +- s//\1/ +- q +- } +- /^X\(\/\/\)$/{ +- s//\1/ +- q +- } +- /^X\(\/\).*/{ +- s//\1/ +- q +- } +- s/.*/./; q'` +- test -d "$as_dir" && break +- done +- test -z "$as_dirs" || eval "mkdir $as_dirs" +- } || test -d "$as_dir" || { { $as_echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5 +-$as_echo "$as_me: error: cannot create directory $as_dir" >&2;} +- { (exit 1); exit 1; }; }; } ++ as_dir="$ac_dir"; as_fn_mkdir_p + ac_builddir=. + + case "$ac_dir" in +@@ -16477,7 +14487,6 @@ + # If the template does not know about datarootdir, expand it. + # FIXME: This hack should be removed a few years after 2.60. + ac_datarootdir_hack=; ac_datarootdir_seen= +- + ac_sed_dataroot=' + /datarootdir/ { + p +@@ -16487,12 +14496,11 @@ + /@docdir@/p + /@infodir@/p + /@localedir@/p +-/@mandir@/p +-' ++/@mandir@/p' + case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in + *datarootdir*) ac_datarootdir_seen=yes;; + *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) +- { $as_echo "$as_me:$LINENO: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 + $as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} + _ACEOF + cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +@@ -16502,7 +14510,7 @@ + s&@infodir@&$infodir&g + s&@localedir@&$localedir&g + s&@mandir@&$mandir&g +- s&\\\${datarootdir}&$datarootdir&g' ;; ++ s&\\\${datarootdir}&$datarootdir&g' ;; + esac + _ACEOF + +@@ -16531,26 +14539,22 @@ + $ac_datarootdir_hack + " + eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$tmp/subs.awk" >$tmp/out \ +- || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5 +-$as_echo "$as_me: error: could not create $ac_file" >&2;} +- { (exit 1); exit 1; }; } ++ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + + test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && + { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } && + { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } && +- { $as_echo "$as_me:$LINENO: WARNING: $ac_file contains a reference to the variable \`datarootdir' +-which seems to be undefined. Please make sure it is defined." >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' ++which seems to be undefined. Please make sure it is defined" >&5 + $as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' +-which seems to be undefined. Please make sure it is defined." >&2;} ++which seems to be undefined. Please make sure it is defined" >&2;} + + rm -f "$tmp/stdin" + case $ac_file in + -) cat "$tmp/out" && rm -f "$tmp/out";; + *) rm -f "$ac_file" && mv "$tmp/out" "$ac_file";; + esac \ +- || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5 +-$as_echo "$as_me: error: could not create $ac_file" >&2;} +- { (exit 1); exit 1; }; } ++ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + ;; + :H) + # +@@ -16561,25 +14565,19 @@ + $as_echo "/* $configure_input */" \ + && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs" + } >"$tmp/config.h" \ +- || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5 +-$as_echo "$as_me: error: could not create $ac_file" >&2;} +- { (exit 1); exit 1; }; } ++ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + if diff "$ac_file" "$tmp/config.h" >/dev/null 2>&1; then +- { $as_echo "$as_me:$LINENO: $ac_file is unchanged" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 + $as_echo "$as_me: $ac_file is unchanged" >&6;} + else + rm -f "$ac_file" + mv "$tmp/config.h" "$ac_file" \ +- || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5 +-$as_echo "$as_me: error: could not create $ac_file" >&2;} +- { (exit 1); exit 1; }; } ++ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + fi + else + $as_echo "/* $configure_input */" \ + && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs" \ +- || { { $as_echo "$as_me:$LINENO: error: could not create -" >&5 +-$as_echo "$as_me: error: could not create -" >&2;} +- { (exit 1); exit 1; }; } ++ || as_fn_error $? "could not create -" "$LINENO" 5 + fi + # Compute "$ac_file"'s index in $config_headers. + _am_arg="$ac_file" +@@ -16617,7 +14615,7 @@ + s/.*/./; q'`/stamp-h$_am_stamp_count + ;; + +- :C) { $as_echo "$as_me:$LINENO: executing $ac_file commands" >&5 ++ :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 + $as_echo "$as_me: executing $ac_file commands" >&6;} + ;; + esac +@@ -16712,47 +14710,7 @@ + q + } + s/.*/./; q'` +- { as_dir=$dirpart/$fdir +- case $as_dir in #( +- -*) as_dir=./$as_dir;; +- esac +- test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || { +- as_dirs= +- while :; do +- case $as_dir in #( +- *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( +- *) as_qdir=$as_dir;; +- esac +- as_dirs="'$as_qdir' $as_dirs" +- as_dir=`$as_dirname -- "$as_dir" || +-$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ +- X"$as_dir" : 'X\(//\)[^/]' \| \ +- X"$as_dir" : 'X\(//\)$' \| \ +- X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +-$as_echo X"$as_dir" | +- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ +- s//\1/ +- q +- } +- /^X\(\/\/\)[^/].*/{ +- s//\1/ +- q +- } +- /^X\(\/\/\)$/{ +- s//\1/ +- q +- } +- /^X\(\/\).*/{ +- s//\1/ +- q +- } +- s/.*/./; q'` +- test -d "$as_dir" && break +- done +- test -z "$as_dirs" || eval "mkdir $as_dirs" +- } || test -d "$as_dir" || { { $as_echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5 +-$as_echo "$as_me: error: cannot create directory $as_dir" >&2;} +- { (exit 1); exit 1; }; }; } ++ as_dir=$dirpart/$fdir; as_fn_mkdir_p + # echo "creating $dirpart/$file" + echo '# dummy' > "$dirpart/$file" + done +@@ -16780,7 +14738,8 @@ + # NOTE: Changes made to this file will be lost: look at ltmain.sh. + # + # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, +-# 2006, 2007, 2008 Free Software Foundation, Inc. ++# 2006, 2007, 2008, 2009, 2010 Free Software Foundation, ++# Inc. + # Written by Gordon Matzigkeit, 1996 + # + # This file is part of GNU Libtool. +@@ -16813,13 +14772,13 @@ + # ### BEGIN LIBTOOL CONFIG + + # Assembler program. +-AS=$AS ++AS=$lt_AS + + # DLL creation program. +-DLLTOOL=$DLLTOOL ++DLLTOOL=$lt_DLLTOOL + + # Object dumper program. +-OBJDUMP=$OBJDUMP ++OBJDUMP=$lt_OBJDUMP + + # Which release of libtool.m4 was used? + macro_version=$macro_version +@@ -16837,6 +14796,12 @@ + # Whether or not to optimize for fast installation. + fast_install=$enable_fast_install + ++# Shell to use when invoking shell scripts. ++SHELL=$lt_SHELL ++ ++# An echo program that protects backslashes. ++ECHO=$lt_ECHO ++ + # The host system. + host_alias=$host_alias + host=$host +@@ -16886,10 +14851,6 @@ + # turn newlines into spaces. + NL2SP=$lt_lt_NL2SP + +-# How to create reloadable object files. +-reload_flag=$lt_reload_flag +-reload_cmds=$lt_reload_cmds +- + # Method to check whether dependent libraries are shared objects. + deplibs_check_method=$lt_deplibs_check_method + +@@ -16908,6 +14869,9 @@ + old_postinstall_cmds=$lt_old_postinstall_cmds + old_postuninstall_cmds=$lt_old_postuninstall_cmds + ++# Whether to use a lock for old archive extraction. ++lock_old_archive_extraction=$lock_old_archive_extraction ++ + # A C compiler. + LTCC=$lt_CC + +@@ -16929,12 +14893,6 @@ + # The name of the directory that contains temporary libtool files. + objdir=$objdir + +-# Shell to use when invoking shell scripts. +-SHELL=$lt_SHELL +- +-# An echo program that does not interpret backslashes. +-ECHO=$lt_ECHO +- + # Used to examine libraries when file_magic_cmd begins with "file". + MAGIC_CMD=$MAGIC_CMD + +@@ -16997,6 +14955,9 @@ + # The coded name of the library, if different from the real name. + soname_spec=$lt_soname_spec + ++# Permission mode override for installation of shared libraries. ++install_override_mode=$lt_install_override_mode ++ + # Command to use after installation of a shared archive. + postinstall_cmds=$lt_postinstall_cmds + +@@ -17036,6 +14997,10 @@ + # The linker used to build libraries. + LD=$lt_LD + ++# How to create reloadable object files. ++reload_flag=$lt_reload_flag ++reload_cmds=$lt_reload_cmds ++ + # Commands used to build an old-style archive. + old_archive_cmds=$lt_old_archive_cmds + +@@ -17295,7 +15260,7 @@ + func_dirname () + { + # Extract subdirectory from the argument. +- func_dirname_result=`$ECHO "X${1}" | $Xsed -e "$dirname"` ++ func_dirname_result=`$ECHO "${1}" | $SED "$dirname"` + if test "X$func_dirname_result" = "X${1}"; then + func_dirname_result="${3}" + else +@@ -17306,7 +15271,7 @@ + # func_basename file + func_basename () + { +- func_basename_result=`$ECHO "X${1}" | $Xsed -e "$basename"` ++ func_basename_result=`$ECHO "${1}" | $SED "$basename"` + } + + +@@ -17319,10 +15284,8 @@ + func_stripname () + { + case ${2} in +- .*) func_stripname_result=`$ECHO "X${3}" \ +- | $Xsed -e "s%^${1}%%" -e "s%\\\\${2}\$%%"`;; +- *) func_stripname_result=`$ECHO "X${3}" \ +- | $Xsed -e "s%^${1}%%" -e "s%${2}\$%%"`;; ++ .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;; ++ *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;; + esac + } + +@@ -17333,20 +15296,20 @@ + # func_opt_split + func_opt_split () + { +- func_opt_split_opt=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_opt"` +- func_opt_split_arg=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_arg"` ++ func_opt_split_opt=`$ECHO "${1}" | $SED "$my_sed_long_opt"` ++ func_opt_split_arg=`$ECHO "${1}" | $SED "$my_sed_long_arg"` + } + + # func_lo2o object + func_lo2o () + { +- func_lo2o_result=`$ECHO "X${1}" | $Xsed -e "$lo2o"` ++ func_lo2o_result=`$ECHO "${1}" | $SED "$lo2o"` + } + + # func_xform libobj-or-source + func_xform () + { +- func_xform_result=`$ECHO "X${1}" | $Xsed -e 's/\.[^.]*$/.lo/'` ++ func_xform_result=`$ECHO "${1}" | $SED 's/\.[^.]*$/.lo/'` + } + + # func_arith arithmetic-term... +@@ -17405,15 +15368,12 @@ + done # for ac_tag + + +-{ (exit 0); exit 0; } ++as_fn_exit 0 + _ACEOF +-chmod +x $CONFIG_STATUS + ac_clean_files=$ac_clean_files_save + + test $ac_write_fail = 0 || +- { { $as_echo "$as_me:$LINENO: error: write failure creating $CONFIG_STATUS" >&5 +-$as_echo "$as_me: error: write failure creating $CONFIG_STATUS" >&2;} +- { (exit 1); exit 1; }; } ++ as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 + + + # configure is writing to config.log, and then calls config.status. +@@ -17434,10 +15394,10 @@ + exec 5>>config.log + # Use ||, not &&, to avoid exiting from the if with $? = 1, which + # would make configure fail if this is the last instruction. +- $ac_cs_success || { (exit 1); exit 1; } ++ $ac_cs_success || as_fn_exit 1 + fi + if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then +- { $as_echo "$as_me:$LINENO: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 + $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} + fi + +diff -Nur fontconfig-2.8.0-orig/configure.in fontconfig-2.8.0-config/configure.in +--- fontconfig-2.8.0-orig/configure.in 2009-11-18 15:49:23.000000000 -0800 ++++ fontconfig-2.8.0-config/configure.in 2012-01-06 11:54:58.395926855 -0800 +@@ -76,6 +76,7 @@ + os_win32=no + esac + AM_CONDITIONAL(OS_WIN32, test "$os_win32" = "yes") ++AM_CONDITIONAL(OS_WIN32_ENABLE_SHARED, test "$os_win32-$enable_shared" = "yes-yes") + + if test "$os_win32" = "yes"; then + AC_CHECK_PROG(ms_librarian, lib.exe, yes, no) +@@ -488,6 +489,20 @@ + AC_DEFINE_UNQUOTED(CONFDIR, "$CONFDIR",[Font configuration directory]) + AC_SUBST(CONFDIR) + ++AC_ARG_WITH(fcpath, [ --with-fcpath=DIR Use DIR to search for configuration files (default SYSCONFDIR/fonts)], fcpath="$withval", fcpath=yes) ++ ++case "$fcpath" in ++no|yes) ++ fcpath='${confdir}' ++ ;; ++*) ++ ;; ++esac ++AC_SUBST(fcpath) ++FCPATH=${fcpath} ++AC_DEFINE_UNQUOTED(FCPATH, "$FCPATH",[Font configuration directory]) ++AC_SUBST(FCPATH) ++ + # + # Let people not build/install docs if they don't have docbook + # +diff -Nur fontconfig-2.8.0-orig/doc/Makefile.in fontconfig-2.8.0-config/doc/Makefile.in +--- fontconfig-2.8.0-orig/doc/Makefile.in 2009-11-18 15:49:37.000000000 -0800 ++++ fontconfig-2.8.0-config/doc/Makefile.in 2012-01-06 13:29:53.230942783 -0800 +@@ -1,4 +1,4 @@ +-# Makefile.in generated by automake 1.11 from Makefile.am. ++# Makefile.in generated by automake 1.11.1 from Makefile.am. + # @configure_input@ + + # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +@@ -166,6 +166,7 @@ + EXEEXT_FOR_BUILD = @EXEEXT_FOR_BUILD@ + EXPAT_CFLAGS = @EXPAT_CFLAGS@ + EXPAT_LIBS = @EXPAT_LIBS@ ++FCPATH = @FCPATH@ + FC_ADD_FONTS = @FC_ADD_FONTS@ + FC_CACHEDIR = @FC_CACHEDIR@ + FC_DEFAULT_FONTS = @FC_DEFAULT_FONTS@ +@@ -214,9 +215,12 @@ + PACKAGE_NAME = @PACKAGE_NAME@ + PACKAGE_STRING = @PACKAGE_STRING@ + PACKAGE_TARNAME = @PACKAGE_TARNAME@ ++PACKAGE_URL = @PACKAGE_URL@ + PACKAGE_VERSION = @PACKAGE_VERSION@ + PATH_SEPARATOR = @PATH_SEPARATOR@ + PKG_CONFIG = @PKG_CONFIG@ ++PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ ++PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ + RANLIB = @RANLIB@ + SED = @SED@ + SET_MAKE = @SET_MAKE@ +@@ -249,6 +253,7 @@ + dvidir = @dvidir@ + exec_prefix = @exec_prefix@ + fc_cachedir = @fc_cachedir@ ++fcpath = @fcpath@ + ft_config = @ft_config@ + host = @host@ + host_alias = @host_alias@ +@@ -263,7 +268,6 @@ + libexecdir = @libexecdir@ + localedir = @localedir@ + localstatedir = @localstatedir@ +-lt_ECHO = @lt_ECHO@ + mandir = @mandir@ + mkdir_p = @mkdir_p@ + ms_librarian = @ms_librarian@ +diff -Nur fontconfig-2.8.0-orig/fc-arch/Makefile.in fontconfig-2.8.0-config/fc-arch/Makefile.in +--- fontconfig-2.8.0-orig/fc-arch/Makefile.in 2009-11-18 15:49:37.000000000 -0800 ++++ fontconfig-2.8.0-config/fc-arch/Makefile.in 2012-01-06 13:29:53.284952278 -0800 +@@ -1,4 +1,4 @@ +-# Makefile.in generated by automake 1.11 from Makefile.am. ++# Makefile.in generated by automake 1.11.1 from Makefile.am. + # @configure_input@ + + # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +@@ -135,6 +135,7 @@ + EXEEXT_FOR_BUILD = @EXEEXT_FOR_BUILD@ + EXPAT_CFLAGS = @EXPAT_CFLAGS@ + EXPAT_LIBS = @EXPAT_LIBS@ ++FCPATH = @FCPATH@ + FC_ADD_FONTS = @FC_ADD_FONTS@ + FC_CACHEDIR = @FC_CACHEDIR@ + FC_DEFAULT_FONTS = @FC_DEFAULT_FONTS@ +@@ -183,9 +184,12 @@ + PACKAGE_NAME = @PACKAGE_NAME@ + PACKAGE_STRING = @PACKAGE_STRING@ + PACKAGE_TARNAME = @PACKAGE_TARNAME@ ++PACKAGE_URL = @PACKAGE_URL@ + PACKAGE_VERSION = @PACKAGE_VERSION@ + PATH_SEPARATOR = @PATH_SEPARATOR@ + PKG_CONFIG = @PKG_CONFIG@ ++PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ ++PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ + RANLIB = @RANLIB@ + SED = @SED@ + SET_MAKE = @SET_MAKE@ +@@ -218,6 +222,7 @@ + dvidir = @dvidir@ + exec_prefix = @exec_prefix@ + fc_cachedir = @fc_cachedir@ ++fcpath = @fcpath@ + ft_config = @ft_config@ + host = @host@ + host_alias = @host_alias@ +@@ -232,7 +237,6 @@ + libexecdir = @libexecdir@ + localedir = @localedir@ + localstatedir = @localstatedir@ +-lt_ECHO = @lt_ECHO@ + mandir = @mandir@ + mkdir_p = @mkdir_p@ + ms_librarian = @ms_librarian@ +diff -Nur fontconfig-2.8.0-orig/fc-cache/Makefile.in fontconfig-2.8.0-config/fc-cache/Makefile.in +--- fontconfig-2.8.0-orig/fc-cache/Makefile.in 2009-11-18 15:49:38.000000000 -0800 ++++ fontconfig-2.8.0-config/fc-cache/Makefile.in 2012-01-06 13:29:53.348963531 -0800 +@@ -1,4 +1,4 @@ +-# Makefile.in generated by automake 1.11 from Makefile.am. ++# Makefile.in generated by automake 1.11.1 from Makefile.am. + # @configure_input@ + + # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +@@ -162,6 +162,7 @@ + EXEEXT_FOR_BUILD = @EXEEXT_FOR_BUILD@ + EXPAT_CFLAGS = @EXPAT_CFLAGS@ + EXPAT_LIBS = @EXPAT_LIBS@ ++FCPATH = @FCPATH@ + FC_ADD_FONTS = @FC_ADD_FONTS@ + FC_CACHEDIR = @FC_CACHEDIR@ + FC_DEFAULT_FONTS = @FC_DEFAULT_FONTS@ +@@ -210,9 +211,12 @@ + PACKAGE_NAME = @PACKAGE_NAME@ + PACKAGE_STRING = @PACKAGE_STRING@ + PACKAGE_TARNAME = @PACKAGE_TARNAME@ ++PACKAGE_URL = @PACKAGE_URL@ + PACKAGE_VERSION = @PACKAGE_VERSION@ + PATH_SEPARATOR = @PATH_SEPARATOR@ + PKG_CONFIG = @PKG_CONFIG@ ++PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ ++PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ + RANLIB = @RANLIB@ + SED = @SED@ + SET_MAKE = @SET_MAKE@ +@@ -245,6 +249,7 @@ + dvidir = @dvidir@ + exec_prefix = @exec_prefix@ + fc_cachedir = @fc_cachedir@ ++fcpath = @fcpath@ + ft_config = @ft_config@ + host = @host@ + host_alias = @host_alias@ +@@ -259,7 +264,6 @@ + libexecdir = @libexecdir@ + localedir = @localedir@ + localstatedir = @localstatedir@ +-lt_ECHO = @lt_ECHO@ + mandir = @mandir@ + mkdir_p = @mkdir_p@ + ms_librarian = @ms_librarian@ +diff -Nur fontconfig-2.8.0-orig/fc-case/Makefile.in fontconfig-2.8.0-config/fc-case/Makefile.in +--- fontconfig-2.8.0-orig/fc-case/Makefile.in 2009-11-18 15:49:38.000000000 -0800 ++++ fontconfig-2.8.0-config/fc-case/Makefile.in 2012-01-06 13:29:53.405973554 -0800 +@@ -1,4 +1,4 @@ +-# Makefile.in generated by automake 1.11 from Makefile.am. ++# Makefile.in generated by automake 1.11.1 from Makefile.am. + # @configure_input@ + + # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +@@ -138,6 +138,7 @@ + EXEEXT_FOR_BUILD = @EXEEXT_FOR_BUILD@ + EXPAT_CFLAGS = @EXPAT_CFLAGS@ + EXPAT_LIBS = @EXPAT_LIBS@ ++FCPATH = @FCPATH@ + FC_ADD_FONTS = @FC_ADD_FONTS@ + FC_CACHEDIR = @FC_CACHEDIR@ + FC_DEFAULT_FONTS = @FC_DEFAULT_FONTS@ +@@ -186,9 +187,12 @@ + PACKAGE_NAME = @PACKAGE_NAME@ + PACKAGE_STRING = @PACKAGE_STRING@ + PACKAGE_TARNAME = @PACKAGE_TARNAME@ ++PACKAGE_URL = @PACKAGE_URL@ + PACKAGE_VERSION = @PACKAGE_VERSION@ + PATH_SEPARATOR = @PATH_SEPARATOR@ + PKG_CONFIG = @PKG_CONFIG@ ++PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ ++PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ + RANLIB = @RANLIB@ + SED = @SED@ + SET_MAKE = @SET_MAKE@ +@@ -221,6 +225,7 @@ + dvidir = @dvidir@ + exec_prefix = @exec_prefix@ + fc_cachedir = @fc_cachedir@ ++fcpath = @fcpath@ + ft_config = @ft_config@ + host = @host@ + host_alias = @host_alias@ +@@ -235,7 +240,6 @@ + libexecdir = @libexecdir@ + localedir = @localedir@ + localstatedir = @localstatedir@ +-lt_ECHO = @lt_ECHO@ + mandir = @mandir@ + mkdir_p = @mkdir_p@ + ms_librarian = @ms_librarian@ +diff -Nur fontconfig-2.8.0-orig/fc-cat/Makefile.in fontconfig-2.8.0-config/fc-cat/Makefile.in +--- fontconfig-2.8.0-orig/fc-cat/Makefile.in 2009-11-18 15:49:38.000000000 -0800 ++++ fontconfig-2.8.0-config/fc-cat/Makefile.in 2012-01-06 13:29:53.468984631 -0800 +@@ -1,4 +1,4 @@ +-# Makefile.in generated by automake 1.11 from Makefile.am. ++# Makefile.in generated by automake 1.11.1 from Makefile.am. + # @configure_input@ + + # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +@@ -162,6 +162,7 @@ + EXEEXT_FOR_BUILD = @EXEEXT_FOR_BUILD@ + EXPAT_CFLAGS = @EXPAT_CFLAGS@ + EXPAT_LIBS = @EXPAT_LIBS@ ++FCPATH = @FCPATH@ + FC_ADD_FONTS = @FC_ADD_FONTS@ + FC_CACHEDIR = @FC_CACHEDIR@ + FC_DEFAULT_FONTS = @FC_DEFAULT_FONTS@ +@@ -210,9 +211,12 @@ + PACKAGE_NAME = @PACKAGE_NAME@ + PACKAGE_STRING = @PACKAGE_STRING@ + PACKAGE_TARNAME = @PACKAGE_TARNAME@ ++PACKAGE_URL = @PACKAGE_URL@ + PACKAGE_VERSION = @PACKAGE_VERSION@ + PATH_SEPARATOR = @PATH_SEPARATOR@ + PKG_CONFIG = @PKG_CONFIG@ ++PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ ++PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ + RANLIB = @RANLIB@ + SED = @SED@ + SET_MAKE = @SET_MAKE@ +@@ -245,6 +249,7 @@ + dvidir = @dvidir@ + exec_prefix = @exec_prefix@ + fc_cachedir = @fc_cachedir@ ++fcpath = @fcpath@ + ft_config = @ft_config@ + host = @host@ + host_alias = @host_alias@ +@@ -259,7 +264,6 @@ + libexecdir = @libexecdir@ + localedir = @localedir@ + localstatedir = @localstatedir@ +-lt_ECHO = @lt_ECHO@ + mandir = @mandir@ + mkdir_p = @mkdir_p@ + ms_librarian = @ms_librarian@ +diff -Nur fontconfig-2.8.0-orig/fc-glyphname/Makefile.in fontconfig-2.8.0-config/fc-glyphname/Makefile.in +--- fontconfig-2.8.0-orig/fc-glyphname/Makefile.in 2009-11-18 15:49:38.000000000 -0800 ++++ fontconfig-2.8.0-config/fc-glyphname/Makefile.in 2012-01-06 13:29:53.528995181 -0800 +@@ -1,4 +1,4 @@ +-# Makefile.in generated by automake 1.11 from Makefile.am. ++# Makefile.in generated by automake 1.11.1 from Makefile.am. + # @configure_input@ + + # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +@@ -135,6 +135,7 @@ + EXEEXT_FOR_BUILD = @EXEEXT_FOR_BUILD@ + EXPAT_CFLAGS = @EXPAT_CFLAGS@ + EXPAT_LIBS = @EXPAT_LIBS@ ++FCPATH = @FCPATH@ + FC_ADD_FONTS = @FC_ADD_FONTS@ + FC_CACHEDIR = @FC_CACHEDIR@ + FC_DEFAULT_FONTS = @FC_DEFAULT_FONTS@ +@@ -183,9 +184,12 @@ + PACKAGE_NAME = @PACKAGE_NAME@ + PACKAGE_STRING = @PACKAGE_STRING@ + PACKAGE_TARNAME = @PACKAGE_TARNAME@ ++PACKAGE_URL = @PACKAGE_URL@ + PACKAGE_VERSION = @PACKAGE_VERSION@ + PATH_SEPARATOR = @PATH_SEPARATOR@ + PKG_CONFIG = @PKG_CONFIG@ ++PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ ++PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ + RANLIB = @RANLIB@ + SED = @SED@ + SET_MAKE = @SET_MAKE@ +@@ -218,6 +222,7 @@ + dvidir = @dvidir@ + exec_prefix = @exec_prefix@ + fc_cachedir = @fc_cachedir@ ++fcpath = @fcpath@ + ft_config = @ft_config@ + host = @host@ + host_alias = @host_alias@ +@@ -232,7 +237,6 @@ + libexecdir = @libexecdir@ + localedir = @localedir@ + localstatedir = @localstatedir@ +-lt_ECHO = @lt_ECHO@ + mandir = @mandir@ + mkdir_p = @mkdir_p@ + ms_librarian = @ms_librarian@ +diff -Nur fontconfig-2.8.0-orig/fc-lang/Makefile.in fontconfig-2.8.0-config/fc-lang/Makefile.in +--- fontconfig-2.8.0-orig/fc-lang/Makefile.in 2009-11-18 15:49:38.000000000 -0800 ++++ fontconfig-2.8.0-config/fc-lang/Makefile.in 2012-01-06 13:29:53.586005204 -0800 +@@ -1,4 +1,4 @@ +-# Makefile.in generated by automake 1.11 from Makefile.am. ++# Makefile.in generated by automake 1.11.1 from Makefile.am. + # @configure_input@ + + # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +@@ -135,6 +135,7 @@ + EXEEXT_FOR_BUILD = @EXEEXT_FOR_BUILD@ + EXPAT_CFLAGS = @EXPAT_CFLAGS@ + EXPAT_LIBS = @EXPAT_LIBS@ ++FCPATH = @FCPATH@ + FC_ADD_FONTS = @FC_ADD_FONTS@ + FC_CACHEDIR = @FC_CACHEDIR@ + FC_DEFAULT_FONTS = @FC_DEFAULT_FONTS@ +@@ -183,9 +184,12 @@ + PACKAGE_NAME = @PACKAGE_NAME@ + PACKAGE_STRING = @PACKAGE_STRING@ + PACKAGE_TARNAME = @PACKAGE_TARNAME@ ++PACKAGE_URL = @PACKAGE_URL@ + PACKAGE_VERSION = @PACKAGE_VERSION@ + PATH_SEPARATOR = @PATH_SEPARATOR@ + PKG_CONFIG = @PKG_CONFIG@ ++PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ ++PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ + RANLIB = @RANLIB@ + SED = @SED@ + SET_MAKE = @SET_MAKE@ +@@ -218,6 +222,7 @@ + dvidir = @dvidir@ + exec_prefix = @exec_prefix@ + fc_cachedir = @fc_cachedir@ ++fcpath = @fcpath@ + ft_config = @ft_config@ + host = @host@ + host_alias = @host_alias@ +@@ -232,7 +237,6 @@ + libexecdir = @libexecdir@ + localedir = @localedir@ + localstatedir = @localstatedir@ +-lt_ECHO = @lt_ECHO@ + mandir = @mandir@ + mkdir_p = @mkdir_p@ + ms_librarian = @ms_librarian@ +diff -Nur fontconfig-2.8.0-orig/fc-list/Makefile.in fontconfig-2.8.0-config/fc-list/Makefile.in +--- fontconfig-2.8.0-orig/fc-list/Makefile.in 2009-11-18 15:49:38.000000000 -0800 ++++ fontconfig-2.8.0-config/fc-list/Makefile.in 2012-01-06 13:29:53.647015929 -0800 +@@ -1,4 +1,4 @@ +-# Makefile.in generated by automake 1.11 from Makefile.am. ++# Makefile.in generated by automake 1.11.1 from Makefile.am. + # @configure_input@ + + # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +@@ -162,6 +162,7 @@ + EXEEXT_FOR_BUILD = @EXEEXT_FOR_BUILD@ + EXPAT_CFLAGS = @EXPAT_CFLAGS@ + EXPAT_LIBS = @EXPAT_LIBS@ ++FCPATH = @FCPATH@ + FC_ADD_FONTS = @FC_ADD_FONTS@ + FC_CACHEDIR = @FC_CACHEDIR@ + FC_DEFAULT_FONTS = @FC_DEFAULT_FONTS@ +@@ -210,9 +211,12 @@ + PACKAGE_NAME = @PACKAGE_NAME@ + PACKAGE_STRING = @PACKAGE_STRING@ + PACKAGE_TARNAME = @PACKAGE_TARNAME@ ++PACKAGE_URL = @PACKAGE_URL@ + PACKAGE_VERSION = @PACKAGE_VERSION@ + PATH_SEPARATOR = @PATH_SEPARATOR@ + PKG_CONFIG = @PKG_CONFIG@ ++PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ ++PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ + RANLIB = @RANLIB@ + SED = @SED@ + SET_MAKE = @SET_MAKE@ +@@ -245,6 +249,7 @@ + dvidir = @dvidir@ + exec_prefix = @exec_prefix@ + fc_cachedir = @fc_cachedir@ ++fcpath = @fcpath@ + ft_config = @ft_config@ + host = @host@ + host_alias = @host_alias@ +@@ -259,7 +264,6 @@ + libexecdir = @libexecdir@ + localedir = @localedir@ + localstatedir = @localstatedir@ +-lt_ECHO = @lt_ECHO@ + mandir = @mandir@ + mkdir_p = @mkdir_p@ + ms_librarian = @ms_librarian@ +diff -Nur fontconfig-2.8.0-orig/fc-match/Makefile.in fontconfig-2.8.0-config/fc-match/Makefile.in +--- fontconfig-2.8.0-orig/fc-match/Makefile.in 2009-11-18 15:49:39.000000000 -0800 ++++ fontconfig-2.8.0-config/fc-match/Makefile.in 2012-01-06 13:29:53.707026480 -0800 +@@ -1,4 +1,4 @@ +-# Makefile.in generated by automake 1.11 from Makefile.am. ++# Makefile.in generated by automake 1.11.1 from Makefile.am. + # @configure_input@ + + # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +@@ -162,6 +162,7 @@ + EXEEXT_FOR_BUILD = @EXEEXT_FOR_BUILD@ + EXPAT_CFLAGS = @EXPAT_CFLAGS@ + EXPAT_LIBS = @EXPAT_LIBS@ ++FCPATH = @FCPATH@ + FC_ADD_FONTS = @FC_ADD_FONTS@ + FC_CACHEDIR = @FC_CACHEDIR@ + FC_DEFAULT_FONTS = @FC_DEFAULT_FONTS@ +@@ -210,9 +211,12 @@ + PACKAGE_NAME = @PACKAGE_NAME@ + PACKAGE_STRING = @PACKAGE_STRING@ + PACKAGE_TARNAME = @PACKAGE_TARNAME@ ++PACKAGE_URL = @PACKAGE_URL@ + PACKAGE_VERSION = @PACKAGE_VERSION@ + PATH_SEPARATOR = @PATH_SEPARATOR@ + PKG_CONFIG = @PKG_CONFIG@ ++PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ ++PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ + RANLIB = @RANLIB@ + SED = @SED@ + SET_MAKE = @SET_MAKE@ +@@ -245,6 +249,7 @@ + dvidir = @dvidir@ + exec_prefix = @exec_prefix@ + fc_cachedir = @fc_cachedir@ ++fcpath = @fcpath@ + ft_config = @ft_config@ + host = @host@ + host_alias = @host_alias@ +@@ -259,7 +264,6 @@ + libexecdir = @libexecdir@ + localedir = @localedir@ + localstatedir = @localstatedir@ +-lt_ECHO = @lt_ECHO@ + mandir = @mandir@ + mkdir_p = @mkdir_p@ + ms_librarian = @ms_librarian@ +diff -Nur fontconfig-2.8.0-orig/fc-query/Makefile.in fontconfig-2.8.0-config/fc-query/Makefile.in +--- fontconfig-2.8.0-orig/fc-query/Makefile.in 2009-11-18 15:49:39.000000000 -0800 ++++ fontconfig-2.8.0-config/fc-query/Makefile.in 2012-01-06 13:29:53.769037381 -0800 +@@ -1,4 +1,4 @@ +-# Makefile.in generated by automake 1.11 from Makefile.am. ++# Makefile.in generated by automake 1.11.1 from Makefile.am. + # @configure_input@ + + # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +@@ -162,6 +162,7 @@ + EXEEXT_FOR_BUILD = @EXEEXT_FOR_BUILD@ + EXPAT_CFLAGS = @EXPAT_CFLAGS@ + EXPAT_LIBS = @EXPAT_LIBS@ ++FCPATH = @FCPATH@ + FC_ADD_FONTS = @FC_ADD_FONTS@ + FC_CACHEDIR = @FC_CACHEDIR@ + FC_DEFAULT_FONTS = @FC_DEFAULT_FONTS@ +@@ -210,9 +211,12 @@ + PACKAGE_NAME = @PACKAGE_NAME@ + PACKAGE_STRING = @PACKAGE_STRING@ + PACKAGE_TARNAME = @PACKAGE_TARNAME@ ++PACKAGE_URL = @PACKAGE_URL@ + PACKAGE_VERSION = @PACKAGE_VERSION@ + PATH_SEPARATOR = @PATH_SEPARATOR@ + PKG_CONFIG = @PKG_CONFIG@ ++PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ ++PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ + RANLIB = @RANLIB@ + SED = @SED@ + SET_MAKE = @SET_MAKE@ +@@ -245,6 +249,7 @@ + dvidir = @dvidir@ + exec_prefix = @exec_prefix@ + fc_cachedir = @fc_cachedir@ ++fcpath = @fcpath@ + ft_config = @ft_config@ + host = @host@ + host_alias = @host_alias@ +@@ -259,7 +264,6 @@ + libexecdir = @libexecdir@ + localedir = @localedir@ + localstatedir = @localstatedir@ +-lt_ECHO = @lt_ECHO@ + mandir = @mandir@ + mkdir_p = @mkdir_p@ + ms_librarian = @ms_librarian@ +diff -Nur fontconfig-2.8.0-orig/fc-scan/Makefile.in fontconfig-2.8.0-config/fc-scan/Makefile.in +--- fontconfig-2.8.0-orig/fc-scan/Makefile.in 2009-11-18 15:49:39.000000000 -0800 ++++ fontconfig-2.8.0-config/fc-scan/Makefile.in 2012-01-06 13:29:53.829047930 -0800 +@@ -1,4 +1,4 @@ +-# Makefile.in generated by automake 1.11 from Makefile.am. ++# Makefile.in generated by automake 1.11.1 from Makefile.am. + # @configure_input@ + + # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +@@ -162,6 +162,7 @@ + EXEEXT_FOR_BUILD = @EXEEXT_FOR_BUILD@ + EXPAT_CFLAGS = @EXPAT_CFLAGS@ + EXPAT_LIBS = @EXPAT_LIBS@ ++FCPATH = @FCPATH@ + FC_ADD_FONTS = @FC_ADD_FONTS@ + FC_CACHEDIR = @FC_CACHEDIR@ + FC_DEFAULT_FONTS = @FC_DEFAULT_FONTS@ +@@ -210,9 +211,12 @@ + PACKAGE_NAME = @PACKAGE_NAME@ + PACKAGE_STRING = @PACKAGE_STRING@ + PACKAGE_TARNAME = @PACKAGE_TARNAME@ ++PACKAGE_URL = @PACKAGE_URL@ + PACKAGE_VERSION = @PACKAGE_VERSION@ + PATH_SEPARATOR = @PATH_SEPARATOR@ + PKG_CONFIG = @PKG_CONFIG@ ++PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ ++PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ + RANLIB = @RANLIB@ + SED = @SED@ + SET_MAKE = @SET_MAKE@ +@@ -245,6 +249,7 @@ + dvidir = @dvidir@ + exec_prefix = @exec_prefix@ + fc_cachedir = @fc_cachedir@ ++fcpath = @fcpath@ + ft_config = @ft_config@ + host = @host@ + host_alias = @host_alias@ +@@ -259,7 +264,6 @@ + libexecdir = @libexecdir@ + localedir = @localedir@ + localstatedir = @localstatedir@ +-lt_ECHO = @lt_ECHO@ + mandir = @mandir@ + mkdir_p = @mkdir_p@ + ms_librarian = @ms_librarian@ +diff -Nur fontconfig-2.8.0-orig/fontconfig/Makefile.in fontconfig-2.8.0-config/fontconfig/Makefile.in +--- fontconfig-2.8.0-orig/fontconfig/Makefile.in 2009-11-18 15:49:39.000000000 -0800 ++++ fontconfig-2.8.0-config/fontconfig/Makefile.in 2012-01-06 13:29:53.871055316 -0800 +@@ -1,4 +1,4 @@ +-# Makefile.in generated by automake 1.11 from Makefile.am. ++# Makefile.in generated by automake 1.11.1 from Makefile.am. + # @configure_input@ + + # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +@@ -114,6 +114,7 @@ + EXEEXT_FOR_BUILD = @EXEEXT_FOR_BUILD@ + EXPAT_CFLAGS = @EXPAT_CFLAGS@ + EXPAT_LIBS = @EXPAT_LIBS@ ++FCPATH = @FCPATH@ + FC_ADD_FONTS = @FC_ADD_FONTS@ + FC_CACHEDIR = @FC_CACHEDIR@ + FC_DEFAULT_FONTS = @FC_DEFAULT_FONTS@ +@@ -162,9 +163,12 @@ + PACKAGE_NAME = @PACKAGE_NAME@ + PACKAGE_STRING = @PACKAGE_STRING@ + PACKAGE_TARNAME = @PACKAGE_TARNAME@ ++PACKAGE_URL = @PACKAGE_URL@ + PACKAGE_VERSION = @PACKAGE_VERSION@ + PATH_SEPARATOR = @PATH_SEPARATOR@ + PKG_CONFIG = @PKG_CONFIG@ ++PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ ++PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ + RANLIB = @RANLIB@ + SED = @SED@ + SET_MAKE = @SET_MAKE@ +@@ -197,6 +201,7 @@ + dvidir = @dvidir@ + exec_prefix = @exec_prefix@ + fc_cachedir = @fc_cachedir@ ++fcpath = @fcpath@ + ft_config = @ft_config@ + host = @host@ + host_alias = @host_alias@ +@@ -211,7 +216,6 @@ + libexecdir = @libexecdir@ + localedir = @localedir@ + localstatedir = @localstatedir@ +-lt_ECHO = @lt_ECHO@ + mandir = @mandir@ + mkdir_p = @mkdir_p@ + ms_librarian = @ms_librarian@ +diff -Nur fontconfig-2.8.0-orig/INSTALL fontconfig-2.8.0-config/INSTALL +--- fontconfig-2.8.0-orig/INSTALL 2008-05-04 12:42:44.000000000 -0700 ++++ fontconfig-2.8.0-config/INSTALL 2012-01-06 13:29:54.001078171 -0800 +@@ -1,37 +1,365 @@ +-Fontconfig is built with the traditional configure script: ++Installation Instructions ++************************* + +- $ ./configure --sysconfdir=/etc --prefix=/usr --mandir=/usr/share/man ++Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005, ++2006, 2007, 2008, 2009 Free Software Foundation, Inc. + +-This should generate valid Makefiles, then: ++ Copying and distribution of this file, with or without modification, ++are permitted in any medium without royalty provided the copyright ++notice and this notice are preserved. This file is offered as-is, ++without warranty of any kind. + +- $ make +- $ make install ++Basic Installation ++================== + +-If you're going to package fontconfig for release, there are several +-important steps: +- +- 1. Create new version +- sh new-version.sh 2.xx.xx +- +- 2. rebuild the configuration files with autogen.sh +- sh autogen.sh --sysconfdir=/etc --prefix=/usr --mandir=/usr/share/man --localstatedir=/var +- +- 3. make distcheck (NB: won't work without docbook-utils -PL) +- +- 4. Copy ChangeLog-2.x.y and fontconfig-2.x.y.tar.gz to +- +- freedesktop.org:/srv/fontconfig.freedesktop.org/www/release +- +- 5. Update the Fontconfig Devel wiki page +- http://fontconfig.org/wiki/Devel +- +- 6. Update the fontconfig documentation +- +- scp -rp doc/fontconfig-user.html doc/fontconfig-devel fontconfig.org:/srv/fontconfig.freedesktop.org/www +- +- 7. Compute md5sums for release files: +- md5sum fontconfig-2.4.x.tar.gz ChangeLog-2.4.x +- +- 8. Post a note to fontconfig@fontconfig.org. Include the md5sums. +- gpg sign the message. ++ Briefly, the shell commands `./configure; make; make install' should ++configure, build, and install this package. The following ++more-detailed instructions are generic; see the `README' file for ++instructions specific to this package. Some packages provide this ++`INSTALL' file but do not implement all of the features documented ++below. The lack of an optional feature in a given package is not ++necessarily a bug. More recommendations for GNU packages can be found ++in *note Makefile Conventions: (standards)Makefile Conventions. ++ ++ The `configure' shell script attempts to guess correct values for ++various system-dependent variables used during compilation. It uses ++those values to create a `Makefile' in each directory of the package. ++It may also create one or more `.h' files containing system-dependent ++definitions. Finally, it creates a shell script `config.status' that ++you can run in the future to recreate the current configuration, and a ++file `config.log' containing compiler output (useful mainly for ++debugging `configure'). ++ ++ It can also use an optional file (typically called `config.cache' ++and enabled with `--cache-file=config.cache' or simply `-C') that saves ++the results of its tests to speed up reconfiguring. Caching is ++disabled by default to prevent problems with accidental use of stale ++cache files. ++ ++ If you need to do unusual things to compile the package, please try ++to figure out how `configure' could check whether to do them, and mail ++diffs or instructions to the address given in the `README' so they can ++be considered for the next release. If you are using the cache, and at ++some point `config.cache' contains results you don't want to keep, you ++may remove or edit it. ++ ++ The file `configure.ac' (or `configure.in') is used to create ++`configure' by a program called `autoconf'. You need `configure.ac' if ++you want to change it or regenerate `configure' using a newer version ++of `autoconf'. ++ ++ The simplest way to compile this package is: ++ ++ 1. `cd' to the directory containing the package's source code and type ++ `./configure' to configure the package for your system. ++ ++ Running `configure' might take a while. While running, it prints ++ some messages telling which features it is checking for. ++ ++ 2. Type `make' to compile the package. ++ ++ 3. Optionally, type `make check' to run any self-tests that come with ++ the package, generally using the just-built uninstalled binaries. ++ ++ 4. Type `make install' to install the programs and any data files and ++ documentation. When installing into a prefix owned by root, it is ++ recommended that the package be configured and built as a regular ++ user, and only the `make install' phase executed with root ++ privileges. ++ ++ 5. Optionally, type `make installcheck' to repeat any self-tests, but ++ this time using the binaries in their final installed location. ++ This target does not install anything. Running this target as a ++ regular user, particularly if the prior `make install' required ++ root privileges, verifies that the installation completed ++ correctly. ++ ++ 6. You can remove the program binaries and object files from the ++ source code directory by typing `make clean'. To also remove the ++ files that `configure' created (so you can compile the package for ++ a different kind of computer), type `make distclean'. There is ++ also a `make maintainer-clean' target, but that is intended mainly ++ for the package's developers. If you use it, you may have to get ++ all sorts of other programs in order to regenerate files that came ++ with the distribution. ++ ++ 7. Often, you can also type `make uninstall' to remove the installed ++ files again. In practice, not all packages have tested that ++ uninstallation works correctly, even though it is required by the ++ GNU Coding Standards. ++ ++ 8. Some packages, particularly those that use Automake, provide `make ++ distcheck', which can by used by developers to test that all other ++ targets like `make install' and `make uninstall' work correctly. ++ This target is generally not run by end users. ++ ++Compilers and Options ++===================== ++ ++ Some systems require unusual options for compilation or linking that ++the `configure' script does not know about. Run `./configure --help' ++for details on some of the pertinent environment variables. ++ ++ You can give `configure' initial values for configuration parameters ++by setting variables in the command line or in the environment. Here ++is an example: ++ ++ ./configure CC=c99 CFLAGS=-g LIBS=-lposix ++ ++ *Note Defining Variables::, for more details. ++ ++Compiling For Multiple Architectures ++==================================== ++ ++ You can compile the package for more than one kind of computer at the ++same time, by placing the object files for each architecture in their ++own directory. To do this, you can use GNU `make'. `cd' to the ++directory where you want the object files and executables to go and run ++the `configure' script. `configure' automatically checks for the ++source code in the directory that `configure' is in and in `..'. This ++is known as a "VPATH" build. ++ ++ With a non-GNU `make', it is safer to compile the package for one ++architecture at a time in the source code directory. After you have ++installed the package for one architecture, use `make distclean' before ++reconfiguring for another architecture. ++ ++ On MacOS X 10.5 and later systems, you can create libraries and ++executables that work on multiple system types--known as "fat" or ++"universal" binaries--by specifying multiple `-arch' options to the ++compiler but only a single `-arch' option to the preprocessor. Like ++this: ++ ++ ./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \ ++ CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \ ++ CPP="gcc -E" CXXCPP="g++ -E" ++ ++ This is not guaranteed to produce working output in all cases, you ++may have to build one architecture at a time and combine the results ++using the `lipo' tool if you have problems. ++ ++Installation Names ++================== ++ ++ By default, `make install' installs the package's commands under ++`/usr/local/bin', include files under `/usr/local/include', etc. You ++can specify an installation prefix other than `/usr/local' by giving ++`configure' the option `--prefix=PREFIX', where PREFIX must be an ++absolute file name. ++ ++ You can specify separate installation prefixes for ++architecture-specific files and architecture-independent files. If you ++pass the option `--exec-prefix=PREFIX' to `configure', the package uses ++PREFIX as the prefix for installing programs and libraries. ++Documentation and other data files still use the regular prefix. ++ ++ In addition, if you use an unusual directory layout you can give ++options like `--bindir=DIR' to specify different values for particular ++kinds of files. Run `configure --help' for a list of the directories ++you can set and what kinds of files go in them. In general, the ++default for these options is expressed in terms of `${prefix}', so that ++specifying just `--prefix' will affect all of the other directory ++specifications that were not explicitly provided. ++ ++ The most portable way to affect installation locations is to pass the ++correct locations to `configure'; however, many packages provide one or ++both of the following shortcuts of passing variable assignments to the ++`make install' command line to change installation locations without ++having to reconfigure or recompile. ++ ++ The first method involves providing an override variable for each ++affected directory. For example, `make install ++prefix=/alternate/directory' will choose an alternate location for all ++directory configuration variables that were expressed in terms of ++`${prefix}'. Any directories that were specified during `configure', ++but not in terms of `${prefix}', must each be overridden at install ++time for the entire installation to be relocated. The approach of ++makefile variable overrides for each directory variable is required by ++the GNU Coding Standards, and ideally causes no recompilation. ++However, some platforms have known limitations with the semantics of ++shared libraries that end up requiring recompilation when using this ++method, particularly noticeable in packages that use GNU Libtool. ++ ++ The second method involves providing the `DESTDIR' variable. For ++example, `make install DESTDIR=/alternate/directory' will prepend ++`/alternate/directory' before all installation names. The approach of ++`DESTDIR' overrides is not required by the GNU Coding Standards, and ++does not work on platforms that have drive letters. On the other hand, ++it does better at avoiding recompilation issues, and works well even ++when some directory options were not specified in terms of `${prefix}' ++at `configure' time. ++ ++Optional Features ++================= ++ ++ If the package supports it, you can cause programs to be installed ++with an extra prefix or suffix on their names by giving `configure' the ++option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. ++ ++ Some packages pay attention to `--enable-FEATURE' options to ++`configure', where FEATURE indicates an optional part of the package. ++They may also pay attention to `--with-PACKAGE' options, where PACKAGE ++is something like `gnu-as' or `x' (for the X Window System). The ++`README' should mention any `--enable-' and `--with-' options that the ++package recognizes. ++ ++ For packages that use the X Window System, `configure' can usually ++find the X include and library files automatically, but if it doesn't, ++you can use the `configure' options `--x-includes=DIR' and ++`--x-libraries=DIR' to specify their locations. ++ ++ Some packages offer the ability to configure how verbose the ++execution of `make' will be. For these packages, running `./configure ++--enable-silent-rules' sets the default to minimal output, which can be ++overridden with `make V=1'; while running `./configure ++--disable-silent-rules' sets the default to verbose, which can be ++overridden with `make V=0'. ++ ++Particular systems ++================== ++ ++ On HP-UX, the default C compiler is not ANSI C compatible. If GNU ++CC is not installed, it is recommended to use the following options in ++order to use an ANSI C compiler: ++ ++ ./configure CC="cc -Ae -D_XOPEN_SOURCE=500" ++ ++and if that doesn't work, install pre-built binaries of GCC for HP-UX. ++ ++ On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot ++parse its `' header file. The option `-nodtk' can be used as ++a workaround. If GNU CC is not installed, it is therefore recommended ++to try ++ ++ ./configure CC="cc" ++ ++and if that doesn't work, try ++ ++ ./configure CC="cc -nodtk" ++ ++ On Solaris, don't put `/usr/ucb' early in your `PATH'. This ++directory contains several dysfunctional programs; working variants of ++these programs are available in `/usr/bin'. So, if you need `/usr/ucb' ++in your `PATH', put it _after_ `/usr/bin'. ++ ++ On Haiku, software installed for all users goes in `/boot/common', ++not `/usr/local'. It is recommended to use the following options: ++ ++ ./configure --prefix=/boot/common ++ ++Specifying the System Type ++========================== ++ ++ There may be some features `configure' cannot figure out ++automatically, but needs to determine by the type of machine the package ++will run on. Usually, assuming the package is built to be run on the ++_same_ architectures, `configure' can figure that out, but if it prints ++a message saying it cannot guess the machine type, give it the ++`--build=TYPE' option. TYPE can either be a short name for the system ++type, such as `sun4', or a canonical name which has the form: ++ ++ CPU-COMPANY-SYSTEM ++ ++where SYSTEM can have one of these forms: ++ ++ OS ++ KERNEL-OS ++ ++ See the file `config.sub' for the possible values of each field. If ++`config.sub' isn't included in this package, then this package doesn't ++need to know the machine type. ++ ++ If you are _building_ compiler tools for cross-compiling, you should ++use the option `--target=TYPE' to select the type of system they will ++produce code for. ++ ++ If you want to _use_ a cross compiler, that generates code for a ++platform different from the build platform, you should specify the ++"host" platform (i.e., that on which the generated programs will ++eventually be run) with `--host=TYPE'. ++ ++Sharing Defaults ++================ ++ ++ If you want to set default values for `configure' scripts to share, ++you can create a site shell script called `config.site' that gives ++default values for variables like `CC', `cache_file', and `prefix'. ++`configure' looks for `PREFIX/share/config.site' if it exists, then ++`PREFIX/etc/config.site' if it exists. Or, you can set the ++`CONFIG_SITE' environment variable to the location of the site script. ++A warning: not all `configure' scripts look for a site script. ++ ++Defining Variables ++================== ++ ++ Variables not defined in a site shell script can be set in the ++environment passed to `configure'. However, some packages may run ++configure again during the build, and the customized values of these ++variables may be lost. In order to avoid this problem, you should set ++them in the `configure' command line, using `VAR=value'. For example: ++ ++ ./configure CC=/usr/local2/bin/gcc ++ ++causes the specified `gcc' to be used as the C compiler (unless it is ++overridden in the site shell script). ++ ++Unfortunately, this technique does not work for `CONFIG_SHELL' due to ++an Autoconf bug. Until the bug is fixed you can use this workaround: ++ ++ CONFIG_SHELL=/bin/bash /bin/bash ./configure CONFIG_SHELL=/bin/bash ++ ++`configure' Invocation ++====================== ++ ++ `configure' recognizes the following options to control how it ++operates. ++ ++`--help' ++`-h' ++ Print a summary of all of the options to `configure', and exit. ++ ++`--help=short' ++`--help=recursive' ++ Print a summary of the options unique to this package's ++ `configure', and exit. The `short' variant lists options used ++ only in the top level, while the `recursive' variant lists options ++ also present in any nested packages. ++ ++`--version' ++`-V' ++ Print the version of Autoconf used to generate the `configure' ++ script, and exit. ++ ++`--cache-file=FILE' ++ Enable the cache: use and save the results of the tests in FILE, ++ traditionally `config.cache'. FILE defaults to `/dev/null' to ++ disable caching. ++ ++`--config-cache' ++`-C' ++ Alias for `--cache-file=config.cache'. ++ ++`--quiet' ++`--silent' ++`-q' ++ Do not print messages saying which checks are being made. To ++ suppress all normal output, redirect it to `/dev/null' (any error ++ messages will still be shown). ++ ++`--srcdir=DIR' ++ Look for the package's source code in directory DIR. Usually ++ `configure' can determine that directory automatically. ++ ++`--prefix=DIR' ++ Use DIR as the installation prefix. *note Installation Names:: ++ for more details, including other options available for fine-tuning ++ the installation locations. ++ ++`--no-create' ++`-n' ++ Run the configure checks, but stop before creating any output ++ files. ++ ++`configure' also accepts some other, not widely useful, options. Run ++`configure --help' for more details. + +diff -Nur fontconfig-2.8.0-orig/ltmain.sh fontconfig-2.8.0-config/ltmain.sh +--- fontconfig-2.8.0-orig/ltmain.sh 2009-11-16 12:49:43.000000000 -0800 ++++ fontconfig-2.8.0-config/ltmain.sh 2012-01-06 13:29:49.515289572 -0800 +@@ -1,9 +1,10 @@ + # Generated from ltmain.m4sh. + +-# ltmain.sh (GNU libtool) 2.2.6 ++# libtool (GNU libtool) 2.2.10 + # Written by Gordon Matzigkeit , 1996 + +-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, 2007 2008 Free Software Foundation, Inc. ++# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, ++# 2007, 2008, 2009, 2010 Free Software Foundation, Inc. + # This is free software; see the source for copying conditions. There is NO + # warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +@@ -32,50 +33,54 @@ + # + # Provide generalized library-building support services. + # +-# --config show all configuration variables +-# --debug enable verbose shell tracing +-# -n, --dry-run display commands without modifying any files +-# --features display basic configuration information and exit +-# --mode=MODE use operation mode MODE +-# --preserve-dup-deps don't remove duplicate dependency libraries +-# --quiet, --silent don't print informational messages +-# --tag=TAG use configuration variables from tag TAG +-# -v, --verbose print informational messages (default) +-# --version print version information +-# -h, --help print short or long help message ++# --config show all configuration variables ++# --debug enable verbose shell tracing ++# -n, --dry-run display commands without modifying any files ++# --features display basic configuration information and exit ++# --mode=MODE use operation mode MODE ++# --preserve-dup-deps don't remove duplicate dependency libraries ++# --quiet, --silent don't print informational messages ++# --no-quiet, --no-silent ++# print informational messages (default) ++# --tag=TAG use configuration variables from tag TAG ++# -v, --verbose print more informational messages than default ++# --no-verbose don't print the extra informational messages ++# --version print version information ++# -h, --help, --help-all print short, long, or detailed help message + # + # MODE must be one of the following: + # +-# clean remove files from the build directory +-# compile compile a source file into a libtool object +-# execute automatically set library path, then run a program +-# finish complete the installation of libtool libraries +-# install install libraries or executables +-# link create a library or an executable +-# uninstall remove libraries from an installed directory ++# clean remove files from the build directory ++# compile compile a source file into a libtool object ++# execute automatically set library path, then run a program ++# finish complete the installation of libtool libraries ++# install install libraries or executables ++# link create a library or an executable ++# uninstall remove libraries from an installed directory + # +-# MODE-ARGS vary depending on the MODE. ++# MODE-ARGS vary depending on the MODE. When passed as first option, ++# `--mode=MODE' may be abbreviated as `MODE' or a unique abbreviation of that. + # Try `$progname --help --mode=MODE' for a more detailed description of MODE. + # + # When reporting a bug, please describe a test case to reproduce it and + # include the following information: + # +-# host-triplet: $host +-# shell: $SHELL +-# compiler: $LTCC +-# compiler flags: $LTCFLAGS +-# linker: $LD (gnu? $with_gnu_ld) +-# $progname: (GNU libtool) 2.2.6 +-# automake: $automake_version +-# autoconf: $autoconf_version ++# host-triplet: $host ++# shell: $SHELL ++# compiler: $LTCC ++# compiler flags: $LTCFLAGS ++# linker: $LD (gnu? $with_gnu_ld) ++# $progname: (GNU libtool) 2.2.10 ++# automake: $automake_version ++# autoconf: $autoconf_version + # + # Report bugs to . + +-PROGRAM=ltmain.sh ++PROGRAM=libtool + PACKAGE=libtool +-VERSION=2.2.6 ++VERSION=2.2.10 + TIMESTAMP="" +-package_revision=1.3012 ++package_revision=1.3175 + + # Be Bourne compatible + if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then +@@ -91,10 +96,15 @@ + BIN_SH=xpg4; export BIN_SH # for Tru64 + DUALCASE=1; export DUALCASE # for MKS sh + ++# A function that is used when there is no print builtin or printf. ++func_fallback_echo () ++{ ++ eval 'cat <<_LTECHO_EOF ++$1 ++_LTECHO_EOF' ++} ++ + # NLS nuisances: We save the old values to restore during execute mode. +-# Only set LANG and LC_ALL to C if already set. +-# These must not be set unconditionally because not all systems understand +-# e.g. LANG=C (notably SCO). + lt_user_locale= + lt_safe_locale= + for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES +@@ -107,15 +117,24 @@ + lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\" + fi" + done ++LC_ALL=C ++LANGUAGE=C ++export LANGUAGE LC_ALL + + $lt_unset CDPATH + + ++# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh ++# is ksh but when the shell is invoked as "sh" and the current value of ++# the _XPG environment variable is not equal to 1 (one), the special ++# positional parameter $0, within a function call, is the name of the ++# function. ++progpath="$0" + + + + : ${CP="cp -f"} +-: ${ECHO="echo"} ++test "${ECHO+set}" = set || ECHO=${as_echo-'printf %s\n'} + : ${EGREP="/bin/grep -E"} + : ${FGREP="/bin/grep -F"} + : ${GREP="/bin/grep"} +@@ -159,32 +178,168 @@ + func_dirname_and_basename () + { + # Extract subdirectory from the argument. +- func_dirname_result=`$ECHO "X${1}" | $Xsed -e "$dirname"` ++ func_dirname_result=`$ECHO "${1}" | $SED -e "$dirname"` + if test "X$func_dirname_result" = "X${1}"; then + func_dirname_result="${3}" + else + func_dirname_result="$func_dirname_result${2}" + fi +- func_basename_result=`$ECHO "X${1}" | $Xsed -e "$basename"` ++ func_basename_result=`$ECHO "${1}" | $SED -e "$basename"` + } + + # Generated shell functions inserted here. + +-# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh +-# is ksh but when the shell is invoked as "sh" and the current value of +-# the _XPG environment variable is not equal to 1 (one), the special +-# positional parameter $0, within a function call, is the name of the +-# function. +-progpath="$0" ++# These SED scripts presuppose an absolute path with a trailing slash. ++pathcar='s,^/\([^/]*\).*$,\1,' ++pathcdr='s,^/[^/]*,,' ++removedotparts=':dotsl ++ s@/\./@/@g ++ t dotsl ++ s,/\.$,/,' ++collapseslashes='s@/\{1,\}@/@g' ++finalslash='s,/*$,/,' ++ ++# func_normal_abspath PATH ++# Remove doubled-up and trailing slashes, "." path components, ++# and cancel out any ".." path components in PATH after making ++# it an absolute path. ++# value returned in "$func_normal_abspath_result" ++func_normal_abspath () ++{ ++ # Start from root dir and reassemble the path. ++ func_normal_abspath_result= ++ func_normal_abspath_tpath=$1 ++ func_normal_abspath_altnamespace= ++ case $func_normal_abspath_tpath in ++ "") ++ # Empty path, that just means $cwd. ++ func_stripname '' '/' "`pwd`" ++ func_normal_abspath_result=$func_stripname_result ++ return ++ ;; ++ # The next three entries are used to spot a run of precisely ++ # two leading slashes without using negated character classes; ++ # we take advantage of case's first-match behaviour. ++ ///*) ++ # Unusual form of absolute path, do nothing. ++ ;; ++ //*) ++ # Not necessarily an ordinary path; POSIX reserves leading '//' ++ # and for example Cygwin uses it to access remote file shares ++ # over CIFS/SMB, so we conserve a leading double slash if found. ++ func_normal_abspath_altnamespace=/ ++ ;; ++ /*) ++ # Absolute path, do nothing. ++ ;; ++ *) ++ # Relative path, prepend $cwd. ++ func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath ++ ;; ++ esac ++ # Cancel out all the simple stuff to save iterations. We also want ++ # the path to end with a slash for ease of parsing, so make sure ++ # there is one (and only one) here. ++ func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ ++ -e "$removedotparts" -e "$collapseslashes" -e "$finalslash"` ++ while :; do ++ # Processed it all yet? ++ if test "$func_normal_abspath_tpath" = / ; then ++ # If we ascended to the root using ".." the result may be empty now. ++ if test -z "$func_normal_abspath_result" ; then ++ func_normal_abspath_result=/ ++ fi ++ break ++ fi ++ func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \ ++ -e "$pathcar"` ++ func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ ++ -e "$pathcdr"` ++ # Figure out what to do with it ++ case $func_normal_abspath_tcomponent in ++ "") ++ # Trailing empty path component, ignore it. ++ ;; ++ ..) ++ # Parent dir; strip last assembled component from result. ++ func_dirname "$func_normal_abspath_result" ++ func_normal_abspath_result=$func_dirname_result ++ ;; ++ *) ++ # Actual path component, append it. ++ func_normal_abspath_result=$func_normal_abspath_result/$func_normal_abspath_tcomponent ++ ;; ++ esac ++ done ++ # Restore leading double-slash if one was found on entry. ++ func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result ++} ++ ++# func_relative_path SRCDIR DSTDIR ++# generates a relative path from SRCDIR to DSTDIR, with a trailing ++# slash if non-empty, suitable for immediately appending a filename ++# without needing to append a separator. ++# value returned in "$func_relative_path_result" ++func_relative_path () ++{ ++ func_relative_path_result= ++ func_normal_abspath "$1" ++ func_relative_path_tlibdir=$func_normal_abspath_result ++ func_normal_abspath "$2" ++ func_relative_path_tbindir=$func_normal_abspath_result ++ ++ # Ascend the tree starting from libdir ++ while :; do ++ # check if we have found a prefix of bindir ++ case $func_relative_path_tbindir in ++ $func_relative_path_tlibdir) ++ # found an exact match ++ func_relative_path_tcancelled= ++ break ++ ;; ++ $func_relative_path_tlibdir*) ++ # found a matching prefix ++ func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir" ++ func_relative_path_tcancelled=$func_stripname_result ++ if test -z "$func_relative_path_result"; then ++ func_relative_path_result=. ++ fi ++ break ++ ;; ++ *) ++ func_dirname $func_relative_path_tlibdir ++ func_relative_path_tlibdir=${func_dirname_result} ++ if test "x$func_relative_path_tlibdir" = x ; then ++ # Have to descend all the way to the root! ++ func_relative_path_result=../$func_relative_path_result ++ func_relative_path_tcancelled=$func_relative_path_tbindir ++ break ++ fi ++ func_relative_path_result=../$func_relative_path_result ++ ;; ++ esac ++ done ++ ++ # Now calculate path; take care to avoid doubling-up slashes. ++ func_stripname '' '/' "$func_relative_path_result" ++ func_relative_path_result=$func_stripname_result ++ func_stripname '/' '/' "$func_relative_path_tcancelled" ++ if test "x$func_stripname_result" != x ; then ++ func_relative_path_result=${func_relative_path_result}/${func_stripname_result} ++ fi ++ ++ # Normalisation. If bindir is libdir, return empty string, ++ # else relative path ending with a slash; either way, target ++ # file name can be directly appended. ++ if test ! -z "$func_relative_path_result"; then ++ func_stripname './' '' "$func_relative_path_result/" ++ func_relative_path_result=$func_stripname_result ++ fi ++} + + # The name of this program: +-# In the unlikely event $progname began with a '-', it would play havoc with +-# func_echo (imagine progname=-n), so we prepend ./ in that case: + func_dirname_and_basename "$progpath" + progname=$func_basename_result +-case $progname in +- -*) progname=./$progname ;; +-esac + + # Make sure we have an absolute path for reexecution: + case $progpath in +@@ -258,6 +413,13 @@ + : + } + ++# func_echo_all arg... ++# Invoke $ECHO with all args, space-separated. ++func_echo_all () ++{ ++ $ECHO "$*" ++} ++ + # func_error arg... + # Echo program name prefixed message to standard error. + func_error () +@@ -326,9 +488,9 @@ + case $my_directory_path in */*) ;; *) break ;; esac + + # ...otherwise throw away the child directory and loop +- my_directory_path=`$ECHO "X$my_directory_path" | $Xsed -e "$dirname"` ++ my_directory_path=`$ECHO "$my_directory_path" | $SED -e "$dirname"` + done +- my_dir_list=`$ECHO "X$my_dir_list" | $Xsed -e 's,:*$,,'` ++ my_dir_list=`$ECHO "$my_dir_list" | $SED 's,:*$,,'` + + save_mkdir_p_IFS="$IFS"; IFS=':' + for my_dir in $my_dir_list; do +@@ -378,7 +540,7 @@ + func_fatal_error "cannot create temporary directory \`$my_tmpdir'" + fi + +- $ECHO "X$my_tmpdir" | $Xsed ++ $ECHO "$my_tmpdir" + } + + +@@ -392,7 +554,7 @@ + { + case $1 in + *[\\\`\"\$]*) +- func_quote_for_eval_unquoted_result=`$ECHO "X$1" | $Xsed -e "$sed_quote_subst"` ;; ++ func_quote_for_eval_unquoted_result=`$ECHO "$1" | $SED "$sed_quote_subst"` ;; + *) + func_quote_for_eval_unquoted_result="$1" ;; + esac +@@ -419,7 +581,7 @@ + { + case $1 in + *[\\\`\"]*) +- my_arg=`$ECHO "X$1" | $Xsed \ ++ my_arg=`$ECHO "$1" | $SED \ + -e "$double_quote_subst" -e "$sed_double_backslash"` ;; + *) + my_arg="$1" ;; +@@ -489,14 +651,19 @@ + } + + +- +- +- + # func_version + # Echo version message to standard output and exit. + func_version () + { +- $SED -n '/^# '$PROGRAM' (GNU /,/# warranty; / { ++ $SED -n '/(C)/!b go ++ :more ++ /\./!{ ++ N ++ s/\n# / / ++ b more ++ } ++ :go ++ /^# '$PROGRAM' (GNU /,/# warranty; / { + s/^# // + s/^# *$// + s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/ +@@ -509,19 +676,20 @@ + # Echo short help message to standard output and exit. + func_usage () + { +- $SED -n '/^# Usage:/,/# -h/ { ++ $SED -n '/^# Usage:/,/^# *.*--help/ { + s/^# // + s/^# *$// + s/\$progname/'$progname'/ + p + }' < "$progpath" +- $ECHO ++ echo + $ECHO "run \`$progname --help | more' for full usage" + exit $? + } + +-# func_help +-# Echo long help message to standard output and exit. ++# func_help [NOEXIT] ++# Echo long help message to standard output and exit, ++# unless 'noexit' is passed as argument. + func_help () + { + $SED -n '/^# Usage:/,/# Report bugs to/ { +@@ -538,7 +706,10 @@ + s/\$autoconf_version/'"`(autoconf --version) 2>/dev/null |$SED 1q`"'/ + p + }' < "$progpath" +- exit $? ++ ret=$? ++ if test -z "$1"; then ++ exit $ret ++ fi + } + + # func_missing_arg argname +@@ -546,7 +717,7 @@ + # exit_cmd. + func_missing_arg () + { +- func_error "missing argument for $1" ++ func_error "missing argument for $1." + exit_cmd=exit + } + +@@ -556,29 +727,6 @@ + + + +-# Check that we have a working $ECHO. +-if test "X$1" = X--no-reexec; then +- # Discard the --no-reexec flag, and continue. +- shift +-elif test "X$1" = X--fallback-echo; then +- # Avoid inline document here, it may be left over +- : +-elif test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t'; then +- # Yippee, $ECHO works! +- : +-else +- # Restart under the correct shell, and then maybe $ECHO will work. +- exec $SHELL "$progpath" --no-reexec ${1+"$@"} +-fi +- +-if test "X$1" = X--fallback-echo; then +- # used as fallback echo +- shift +- cat </dev/null; then ++ case $nonopt in *shtool*) :;; *) false;; esac; then + # Aesthetically quote it. + func_quote_for_eval "$nonopt" + install_prog="$func_quote_for_eval_result " +@@ -1867,6 +2067,11 @@ + # Aesthetically quote it. + func_quote_for_eval "$arg" + install_prog="$install_prog$func_quote_for_eval_result" ++ install_shared_prog=$install_prog ++ case " $install_prog " in ++ *[\\\ /]cp\ *) install_cp=: ;; ++ *) install_cp=false ;; ++ esac + + # We need to accept at least all the BSD install flags. + dest= +@@ -1876,8 +2081,10 @@ + install_type= + isdir=no + stripme= ++ no_mode=: + for arg + do ++ arg2= + if test -n "$dest"; then + files="$files $dest" + dest=$arg +@@ -1887,10 +2094,9 @@ + case $arg in + -d) isdir=yes ;; + -f) +- case " $install_prog " in +- *[\\\ /]cp\ *) ;; +- *) prev=$arg ;; +- esac ++ if $install_cp; then :; else ++ prev=$arg ++ fi + ;; + -g | -m | -o) + prev=$arg +@@ -1904,6 +2110,10 @@ + *) + # If the previous option needed an argument, then skip it. + if test -n "$prev"; then ++ if test "x$prev" = x-m && test -n "$install_override_mode"; then ++ arg2=$install_override_mode ++ no_mode=false ++ fi + prev= + else + dest=$arg +@@ -1915,6 +2125,10 @@ + # Aesthetically quote the argument. + func_quote_for_eval "$arg" + install_prog="$install_prog $func_quote_for_eval_result" ++ if test -n "$arg2"; then ++ func_quote_for_eval "$arg2" ++ fi ++ install_shared_prog="$install_shared_prog $func_quote_for_eval_result" + done + + test -z "$install_prog" && \ +@@ -1923,6 +2137,13 @@ + test -n "$prev" && \ + func_fatal_help "the \`$prev' option requires an argument" + ++ if test -n "$install_override_mode" && $no_mode; then ++ if $install_cp; then :; else ++ func_quote_for_eval "$install_override_mode" ++ install_shared_prog="$install_shared_prog -m $func_quote_for_eval_result" ++ fi ++ fi ++ + if test -z "$files"; then + if test -z "$dest"; then + func_fatal_help "no file or destination specified" +@@ -2010,7 +2231,7 @@ + + if test -n "$relink_command"; then + # Determine the prefix the user has applied to our future dir. +- inst_prefix_dir=`$ECHO "X$destdir" | $Xsed -e "s%$libdir\$%%"` ++ inst_prefix_dir=`$ECHO "$destdir" | $SED -e "s%$libdir\$%%"` + + # Don't allow the user to place us outside of our expected + # location b/c this prevents finding dependent libraries that +@@ -2023,9 +2244,9 @@ + + if test -n "$inst_prefix_dir"; then + # Stick the inst_prefix_dir data into the link command. +- relink_command=`$ECHO "X$relink_command" | $Xsed -e "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` ++ relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` + else +- relink_command=`$ECHO "X$relink_command" | $Xsed -e "s%@inst_prefix_dir@%%"` ++ relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"` + fi + + func_warning "relinking \`$file'" +@@ -2043,7 +2264,7 @@ + test -n "$relink_command" && srcname="$realname"T + + # Install the shared library and build the symlinks. +- func_show_eval "$install_prog $dir/$srcname $destdir/$realname" \ ++ func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \ + 'exit $?' + tstripme="$stripme" + case $host_os in +@@ -2183,7 +2404,7 @@ + if test -f "$lib"; then + func_source "$lib" + fi +- libfile="$libdir/"`$ECHO "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test ++ libfile="$libdir/"`$ECHO "$lib" | $SED 's%^.*/%%g'` ### testsuite: skip nested quoting test + if test -n "$libdir" && test ! -f "$libfile"; then + func_warning "\`$lib' has not been installed in \`$libdir'" + finalize=no +@@ -2202,7 +2423,7 @@ + file="$func_basename_result" + outputname="$tmpdir/$file" + # Replace the output file specification. +- relink_command=`$ECHO "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'` ++ relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'` + + $opt_silent || { + func_quote_for_expand "$relink_command" +@@ -2221,7 +2442,7 @@ + } + else + # Install the binary that we compiled earlier. +- file=`$ECHO "X$file$stripped_ext" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"` ++ file=`$ECHO "$file$stripped_ext" | $SED "s%\([^/]*\)$%$objdir/\1%"` + fi + fi + +@@ -2323,6 +2544,10 @@ + extern \"C\" { + #endif + ++#if defined(__GNUC__) && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4)) ++#pragma GCC diagnostic ignored \"-Wstrict-prototypes\" ++#endif ++ + /* External symbol declarations for the compiler. */\ + " + +@@ -2332,7 +2557,7 @@ + $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist" + + # Add our own program objects to the symbol list. +- progfiles=`$ECHO "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` ++ progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP` + for progfile in $progfiles; do + func_verbose "extracting global C symbols from \`$progfile'" + $opt_dry_run || eval "$NM $progfile | $global_symbol_pipe >> '$nlist'" +@@ -2371,7 +2596,7 @@ + eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' + eval '$MV "$nlist"T "$nlist"' + case $host in +- *cygwin | *mingw* | *cegcc* ) ++ *cygwin* | *mingw* | *cegcc* ) + eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' + eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' + ;; +@@ -2415,10 +2640,10 @@ + if test -f "$nlist"S; then + eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"' + else +- $ECHO '/* NONE */' >> "$output_objdir/$my_dlsyms" ++ echo '/* NONE */' >> "$output_objdir/$my_dlsyms" + fi + +- $ECHO >> "$output_objdir/$my_dlsyms" "\ ++ echo >> "$output_objdir/$my_dlsyms" "\ + + /* The mapping between symbol names and symbols. */ + typedef struct { +@@ -2428,7 +2653,7 @@ + " + case $host in + *cygwin* | *mingw* | *cegcc* ) +- $ECHO >> "$output_objdir/$my_dlsyms" "\ ++ echo >> "$output_objdir/$my_dlsyms" "\ + /* DATA imports from DLLs on WIN32 con't be const, because + runtime relocations are performed -- see ld's documentation + on pseudo-relocs. */" +@@ -2441,7 +2666,7 @@ + lt_dlsym_const=const ;; + esac + +- $ECHO >> "$output_objdir/$my_dlsyms" "\ ++ echo >> "$output_objdir/$my_dlsyms" "\ + extern $lt_dlsym_const lt_dlsymlist + lt_${my_prefix}_LTX_preloaded_symbols[]; + $lt_dlsym_const lt_dlsymlist +@@ -2457,7 +2682,7 @@ + eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms" + ;; + esac +- $ECHO >> "$output_objdir/$my_dlsyms" "\ ++ echo >> "$output_objdir/$my_dlsyms" "\ + {0, (void *) 0} + }; + +@@ -2515,16 +2740,16 @@ + case $host in + *cygwin* | *mingw* | *cegcc* ) + if test -f "$output_objdir/$my_outputname.def"; then +- compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` +- finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` ++ compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` ++ finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` + else +- compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"` +- finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"` ++ compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` ++ finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` + fi + ;; + *) +- compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"` +- finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"` ++ compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` ++ finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` + ;; + esac + ;; +@@ -2538,8 +2763,8 @@ + # really was required. + + # Nullify the symbol file. +- compile_command=`$ECHO "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"` +- finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"` ++ compile_command=`$ECHO "$compile_command" | $SED "s% @SYMFILE@%%"` ++ finalize_command=`$ECHO "$finalize_command" | $SED "s% @SYMFILE@%%"` + fi + } + +@@ -2549,6 +2774,7 @@ + # Need a lot of goo to handle *both* DLLs and import libs + # Has to be a shell function in order to 'eat' the argument + # that is supplied when $file_magic_command is called. ++# Despite the name, also deal with 64 bit binaries. + func_win32_libid () + { + $opt_debug +@@ -2559,8 +2785,9 @@ + win32_libid_type="x86 archive import" + ;; + *ar\ archive*) # could be an import, or static ++ # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD. + if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | +- $EGREP 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then ++ $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then + win32_nmres=`eval $NM -f posix -A $1 | + $SED -n -e ' + 1,100{ +@@ -2598,7 +2825,18 @@ + $opt_debug + f_ex_an_ar_dir="$1"; shift + f_ex_an_ar_oldlib="$1" +- func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" 'exit $?' ++ if test "$lock_old_archive_extraction" = yes; then ++ lockfile=$f_ex_an_ar_oldlib.lock ++ until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do ++ func_echo "Waiting for $lockfile to be removed" ++ sleep 2 ++ done ++ fi ++ func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \ ++ 'stat=$?; rm -f "$lockfile"; exit $stat' ++ if test "$lock_old_archive_extraction" = yes; then ++ $opt_dry_run || rm -f "$lockfile" ++ fi + if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then + : + else +@@ -2669,7 +2907,7 @@ + darwin_file= + darwin_files= + for darwin_file in $darwin_filelist; do +- darwin_files=`find unfat-$$ -name $darwin_file -print | $NL2SP` ++ darwin_files=`find unfat-$$ -name $darwin_file -print | sort | $NL2SP` + $LIPO -create -output "$darwin_file" $darwin_files + done # $darwin_filelist + $RM -rf unfat-$$ +@@ -2684,25 +2922,30 @@ + func_extract_an_archive "$my_xdir" "$my_xabs" + ;; + esac +- my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP` ++ my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP` + done + + func_extract_archives_result="$my_oldobjs" + } + + +- +-# func_emit_wrapper_part1 [arg=no] ++# func_emit_wrapper [arg=no] + # +-# Emit the first part of a libtool wrapper script on stdout. +-# For more information, see the description associated with +-# func_emit_wrapper(), below. +-func_emit_wrapper_part1 () +-{ +- func_emit_wrapper_part1_arg1=no +- if test -n "$1" ; then +- func_emit_wrapper_part1_arg1=$1 +- fi ++# Emit a libtool wrapper script on stdout. ++# Don't directly open a file because we may want to ++# incorporate the script contents within a cygwin/mingw ++# wrapper executable. Must ONLY be called from within ++# func_mode_link because it depends on a number of variables ++# set therein. ++# ++# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR ++# variable will take. If 'yes', then the emitted script ++# will assume that the directory in which it is stored is ++# the $objdir directory. This is a cygwin/mingw-specific ++# behavior. ++func_emit_wrapper () ++{ ++ func_emit_wrapper_arg1=${1-no} + + $ECHO "\ + #! $SHELL +@@ -2718,7 +2961,6 @@ + + # Sed substitution that helps us do robust quoting. It backslashifies + # metacharacters that are still active within double-quoted strings. +-Xsed='${SED} -e 1s/^X//' + sed_quote_subst='$sed_quote_subst' + + # Be Bourne compatible +@@ -2749,31 +2991,132 @@ + else + # When we are sourced in execute mode, \$file and \$ECHO are already set. + if test \"\$libtool_execute_magic\" != \"$magic\"; then +- ECHO=\"$qecho\" +- file=\"\$0\" +- # Make sure echo works. +- if test \"X\$1\" = X--no-reexec; then +- # Discard the --no-reexec flag, and continue. +- shift +- elif test \"X\`{ \$ECHO '\t'; } 2>/dev/null\`\" = 'X\t'; then +- # Yippee, \$ECHO works! +- : +- else +- # Restart under the correct shell, and then maybe \$ECHO will work. +- exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"} +- fi +- fi\ ++ file=\"\$0\"" ++ ++ qECHO=`$ECHO "$ECHO" | $SED "$sed_quote_subst"` ++ $ECHO "\ ++ ++# A function that is used when there is no print builtin or printf. ++func_fallback_echo () ++{ ++ eval 'cat <<_LTECHO_EOF ++\$1 ++_LTECHO_EOF' ++} ++ ECHO=\"$qECHO\" ++ fi ++ ++# Very basic option parsing. These options are (a) specific to ++# the libtool wrapper, (b) are identical between the wrapper ++# /script/ and the wrapper /executable/ which is used only on ++# windows platforms, and (c) all begin with the string "--lt-" ++# (application programs are unlikely to have options which match ++# this pattern). ++# ++# There are only two supported options: --lt-debug and ++# --lt-dump-script. There is, deliberately, no --lt-help. ++# ++# The first argument to this parsing function should be the ++# script's $0 value, followed by "$@". ++lt_option_debug= ++func_parse_lt_options () ++{ ++ lt_script_arg0=\$0 ++ shift ++ for lt_opt ++ do ++ case \"\$lt_opt\" in ++ --lt-debug) lt_option_debug=1 ;; ++ --lt-dump-script) ++ lt_dump_D=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%/[^/]*$%%'\` ++ test \"X\$lt_dump_D\" = \"X\$lt_script_arg0\" && lt_dump_D=. ++ lt_dump_F=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%^.*/%%'\` ++ cat \"\$lt_dump_D/\$lt_dump_F\" ++ exit 0 ++ ;; ++ --lt-*) ++ \$ECHO \"Unrecognized --lt- option: '\$lt_opt'\" 1>&2 ++ exit 1 ++ ;; ++ esac ++ done ++ ++ # Print the debug banner immediately: ++ if test -n \"\$lt_option_debug\"; then ++ echo \"${outputname}:${output}:\${LINENO}: libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\" 1>&2 ++ fi ++} ++ ++# Used when --lt-debug. Prints its arguments to stdout ++# (redirection is the responsibility of the caller) ++func_lt_dump_args () ++{ ++ lt_dump_args_N=1; ++ for lt_arg ++ do ++ \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[\$lt_dump_args_N]: \$lt_arg\" ++ lt_dump_args_N=\`expr \$lt_dump_args_N + 1\` ++ done ++} ++ ++# Core function for launching the target application ++func_exec_program_core () ++{ + " +- $ECHO "\ ++ case $host in ++ # Backslashes separate directories on plain windows ++ *-*-mingw | *-*-os2* | *-cegcc*) ++ $ECHO "\ ++ if test -n \"\$lt_option_debug\"; then ++ \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir\\\\\$program\" 1>&2 ++ func_lt_dump_args \${1+\"\$@\"} 1>&2 ++ fi ++ exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} ++" ++ ;; ++ ++ *) ++ $ECHO "\ ++ if test -n \"\$lt_option_debug\"; then ++ \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir/\$program\" 1>&2 ++ func_lt_dump_args \${1+\"\$@\"} 1>&2 ++ fi ++ exec \"\$progdir/\$program\" \${1+\"\$@\"} ++" ++ ;; ++ esac ++ $ECHO "\ ++ \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2 ++ exit 1 ++} ++ ++# A function to encapsulate launching the target application ++# Strips options in the --lt-* namespace from \$@ and ++# launches target application with the remaining arguments. ++func_exec_program () ++{ ++ for lt_wr_arg ++ do ++ case \$lt_wr_arg in ++ --lt-*) ;; ++ *) set x \"\$@\" \"\$lt_wr_arg\"; shift;; ++ esac ++ shift ++ done ++ func_exec_program_core \${1+\"\$@\"} ++} ++ ++ # Parse options ++ func_parse_lt_options \"\$0\" \${1+\"\$@\"} + + # Find the directory that this script lives in. +- thisdir=\`\$ECHO \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\` ++ thisdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*$%%'\` + test \"x\$thisdir\" = \"x\$file\" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. +- file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\` ++ file=\`ls -ld \"\$file\" | $SED -n 's/.*-> //p'\` + while test -n \"\$file\"; do +- destdir=\`\$ECHO \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\` ++ destdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*\$%%'\` + + # If there was a directory component, then change thisdir. + if test \"x\$destdir\" != \"x\$file\"; then +@@ -2783,30 +3126,13 @@ + esac + fi + +- file=\`\$ECHO \"X\$file\" | \$Xsed -e 's%^.*/%%'\` +- file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\` ++ file=\`\$ECHO \"\$file\" | $SED 's%^.*/%%'\` ++ file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\` + done +-" +-} +-# end: func_emit_wrapper_part1 +- +-# func_emit_wrapper_part2 [arg=no] +-# +-# Emit the second part of a libtool wrapper script on stdout. +-# For more information, see the description associated with +-# func_emit_wrapper(), below. +-func_emit_wrapper_part2 () +-{ +- func_emit_wrapper_part2_arg1=no +- if test -n "$1" ; then +- func_emit_wrapper_part2_arg1=$1 +- fi +- +- $ECHO "\ + + # Usually 'no', except on cygwin/mingw when embedded into + # the cwrapper. +- WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_part2_arg1 ++ WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_arg1 + if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then + # special case for '.' + if test \"\$thisdir\" = \".\"; then +@@ -2814,7 +3140,7 @@ + fi + # remove .libs from thisdir + case \"\$thisdir\" in +- *[\\\\/]$objdir ) thisdir=\`\$ECHO \"X\$thisdir\" | \$Xsed -e 's%[\\\\/][^\\\\/]*$%%'\` ;; ++ *[\\\\/]$objdir ) thisdir=\`\$ECHO \"\$thisdir\" | $SED 's%[\\\\/][^\\\\/]*$%%'\` ;; + $objdir ) thisdir=. ;; + esac + fi +@@ -2877,7 +3203,7 @@ + + # Some systems cannot cope with colon-terminated $shlibpath_var + # The second colon is a workaround for a bug in BeOS R4 sed +- $shlibpath_var=\`\$ECHO \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\` ++ $shlibpath_var=\`\$ECHO \"\$$shlibpath_var\" | $SED 's/::*\$//'\` + + export $shlibpath_var + " +@@ -2894,64 +3220,18 @@ + $ECHO "\ + if test \"\$libtool_execute_magic\" != \"$magic\"; then + # Run the actual program with our arguments. +-" +- case $host in +- # Backslashes separate directories on plain windows +- *-*-mingw | *-*-os2* | *-cegcc*) +- $ECHO "\ +- exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} +-" +- ;; +- +- *) +- $ECHO "\ +- exec \"\$progdir/\$program\" \${1+\"\$@\"} +-" +- ;; +- esac +- $ECHO "\ +- \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2 +- exit 1 ++ func_exec_program \${1+\"\$@\"} + fi + else + # The program doesn't exist. + \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2 + \$ECHO \"This script is just a wrapper for \$program.\" 1>&2 +- $ECHO \"See the $PACKAGE documentation for more information.\" 1>&2 ++ \$ECHO \"See the $PACKAGE documentation for more information.\" 1>&2 + exit 1 + fi + fi\ + " + } +-# end: func_emit_wrapper_part2 +- +- +-# func_emit_wrapper [arg=no] +-# +-# Emit a libtool wrapper script on stdout. +-# Don't directly open a file because we may want to +-# incorporate the script contents within a cygwin/mingw +-# wrapper executable. Must ONLY be called from within +-# func_mode_link because it depends on a number of variables +-# set therein. +-# +-# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR +-# variable will take. If 'yes', then the emitted script +-# will assume that the directory in which it is stored is +-# the $objdir directory. This is a cygwin/mingw-specific +-# behavior. +-func_emit_wrapper () +-{ +- func_emit_wrapper_arg1=no +- if test -n "$1" ; then +- func_emit_wrapper_arg1=$1 +- fi +- +- # split this up so that func_emit_cwrapperexe_src +- # can call each part independently. +- func_emit_wrapper_part1 "${func_emit_wrapper_arg1}" +- func_emit_wrapper_part2 "${func_emit_wrapper_arg1}" +-} + + + # func_to_host_path arg +@@ -2978,23 +3258,19 @@ + func_to_host_path () + { + func_to_host_path_result="$1" +- if test -n "$1" ; then ++ if test -n "$1"; then + case $host in + *mingw* ) + lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' + case $build in + *mingw* ) # actually, msys + # awkward: cmd appends spaces to result +- lt_sed_strip_trailing_spaces="s/[ ]*\$//" +- func_to_host_path_tmp1=`( cmd //c echo "$1" |\ +- $SED -e "$lt_sed_strip_trailing_spaces" ) 2>/dev/null || echo ""` +- func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\ +- $SED -e "$lt_sed_naive_backslashify"` ++ func_to_host_path_result=`( cmd //c echo "$1" ) 2>/dev/null | ++ $SED -e 's/[ ]*$//' -e "$lt_sed_naive_backslashify"` + ;; + *cygwin* ) +- func_to_host_path_tmp1=`cygpath -w "$1"` +- func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\ +- $SED -e "$lt_sed_naive_backslashify"` ++ func_to_host_path_result=`cygpath -w "$1" | ++ $SED -e "$lt_sed_naive_backslashify"` + ;; + * ) + # Unfortunately, winepath does not exit with a non-zero +@@ -3006,17 +3282,17 @@ + # the odd construction: + func_to_host_path_tmp1=`winepath -w "$1" 2>/dev/null` + if test "$?" -eq 0 && test -n "${func_to_host_path_tmp1}"; then +- func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\ ++ func_to_host_path_result=`$ECHO "$func_to_host_path_tmp1" | + $SED -e "$lt_sed_naive_backslashify"` + else + # Allow warning below. +- func_to_host_path_result="" ++ func_to_host_path_result= + fi + ;; + esac + if test -z "$func_to_host_path_result" ; then + func_error "Could not determine host path corresponding to" +- func_error " '$1'" ++ func_error " \`$1'" + func_error "Continuing, but uninstalled executables may not work." + # Fallback: + func_to_host_path_result="$1" +@@ -3049,30 +3325,24 @@ + func_to_host_pathlist () + { + func_to_host_pathlist_result="$1" +- if test -n "$1" ; then ++ if test -n "$1"; then + case $host in + *mingw* ) + lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' + # Remove leading and trailing path separator characters from + # ARG. msys behavior is inconsistent here, cygpath turns them + # into '.;' and ';.', and winepath ignores them completely. +- func_to_host_pathlist_tmp2="$1" +- # Once set for this call, this variable should not be +- # reassigned. It is used in tha fallback case. +- func_to_host_pathlist_tmp1=`echo "$func_to_host_pathlist_tmp2" |\ +- $SED -e 's|^:*||' -e 's|:*$||'` ++ func_stripname : : "$1" ++ func_to_host_pathlist_tmp1=$func_stripname_result + case $build in + *mingw* ) # Actually, msys. + # Awkward: cmd appends spaces to result. +- lt_sed_strip_trailing_spaces="s/[ ]*\$//" +- func_to_host_pathlist_tmp2=`( cmd //c echo "$func_to_host_pathlist_tmp1" |\ +- $SED -e "$lt_sed_strip_trailing_spaces" ) 2>/dev/null || echo ""` +- func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp2" |\ +- $SED -e "$lt_sed_naive_backslashify"` ++ func_to_host_pathlist_result=` ++ ( cmd //c echo "$func_to_host_pathlist_tmp1" ) 2>/dev/null | ++ $SED -e 's/[ ]*$//' -e "$lt_sed_naive_backslashify"` + ;; + *cygwin* ) +- func_to_host_pathlist_tmp2=`cygpath -w -p "$func_to_host_pathlist_tmp1"` +- func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp2" |\ ++ func_to_host_pathlist_result=`cygpath -w -p "$func_to_host_pathlist_tmp1" | + $SED -e "$lt_sed_naive_backslashify"` + ;; + * ) +@@ -3088,18 +3358,17 @@ + if test -z "$func_to_host_pathlist_result" ; then + func_to_host_pathlist_result="$func_to_host_path_result" + else +- func_to_host_pathlist_result="$func_to_host_pathlist_result;$func_to_host_path_result" ++ func_append func_to_host_pathlist_result ";$func_to_host_path_result" + fi + fi + fi +- IFS=: + done + IFS=$func_to_host_pathlist_oldIFS + ;; + esac +- if test -z "$func_to_host_pathlist_result" ; then ++ if test -z "$func_to_host_pathlist_result"; then + func_error "Could not determine the host path(s) corresponding to" +- func_error " '$1'" ++ func_error " \`$1'" + func_error "Continuing, but uninstalled executables may not work." + # Fallback. This may break if $1 contains DOS-style drive + # specifications. The fix is not to complicate the expression +@@ -3116,7 +3385,7 @@ + ;; + esac + case "$1" in +- *: ) func_to_host_pathlist_result="$func_to_host_pathlist_result;" ++ *: ) func_append func_to_host_pathlist_result ";" + ;; + esac + ;; +@@ -3141,31 +3410,23 @@ + + This wrapper executable should never be moved out of the build directory. + If it is, it will not operate correctly. +- +- Currently, it simply execs the wrapper *script* "$SHELL $output", +- but could eventually absorb all of the scripts functionality and +- exec $objdir/$outputname directly. + */ + EOF + cat <<"EOF" ++#ifdef _MSC_VER ++# define _CRT_SECURE_NO_DEPRECATE 1 ++#endif + #include + #include + #ifdef _MSC_VER + # include + # include + # include +-# define setmode _setmode + #else + # include + # include + # ifdef __CYGWIN__ + # include +-# define HAVE_SETENV +-# ifdef __STRICT_ANSI__ +-char *realpath (const char *, char *); +-int putenv (char *); +-int setenv (const char *, const char *, int); +-# endif + # endif + #endif + #include +@@ -3177,6 +3438,44 @@ + #include + #include + ++/* declarations of non-ANSI functions */ ++#if defined(__MINGW32__) ++# ifdef __STRICT_ANSI__ ++int _putenv (const char *); ++# endif ++#elif defined(__CYGWIN__) ++# ifdef __STRICT_ANSI__ ++char *realpath (const char *, char *); ++int putenv (char *); ++int setenv (const char *, const char *, int); ++# endif ++/* #elif defined (other platforms) ... */ ++#endif ++ ++/* portability defines, excluding path handling macros */ ++#if defined(_MSC_VER) ++# define setmode _setmode ++# define stat _stat ++# define chmod _chmod ++# define getcwd _getcwd ++# define putenv _putenv ++# define S_IXUSR _S_IEXEC ++# ifndef _INTPTR_T_DEFINED ++# define _INTPTR_T_DEFINED ++# define intptr_t int ++# endif ++#elif defined(__MINGW32__) ++# define setmode _setmode ++# define stat _stat ++# define chmod _chmod ++# define getcwd _getcwd ++# define putenv _putenv ++#elif defined(__CYGWIN__) ++# define HAVE_SETENV ++# define FOPEN_WB "wb" ++/* #elif defined (other platforms) ... */ ++#endif ++ + #if defined(PATH_MAX) + # define LT_PATHMAX PATH_MAX + #elif defined(MAXPATHLEN) +@@ -3192,14 +3491,7 @@ + # define S_IXGRP 0 + #endif + +-#ifdef _MSC_VER +-# define S_IXUSR _S_IEXEC +-# define stat _stat +-# ifndef _INTPTR_T_DEFINED +-# define intptr_t int +-# endif +-#endif +- ++/* path handling portability macros */ + #ifndef DIR_SEPARATOR + # define DIR_SEPARATOR '/' + # define PATH_SEPARATOR ':' +@@ -3230,10 +3522,6 @@ + # define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) + #endif /* PATH_SEPARATOR_2 */ + +-#ifdef __CYGWIN__ +-# define FOPEN_WB "wb" +-#endif +- + #ifndef FOPEN_WB + # define FOPEN_WB "w" + #endif +@@ -3246,22 +3534,13 @@ + if (stale) { free ((void *) stale); stale = 0; } \ + } while (0) + +-#undef LTWRAPPER_DEBUGPRINTF +-#if defined DEBUGWRAPPER +-# define LTWRAPPER_DEBUGPRINTF(args) ltwrapper_debugprintf args +-static void +-ltwrapper_debugprintf (const char *fmt, ...) +-{ +- va_list args; +- va_start (args, fmt); +- (void) vfprintf (stderr, fmt, args); +- va_end (args); +-} ++#if defined(LT_DEBUGWRAPPER) ++static int lt_debug = 1; + #else +-# define LTWRAPPER_DEBUGPRINTF(args) ++static int lt_debug = 0; + #endif + +-const char *program_name = NULL; ++const char *program_name = "libtool-wrapper"; /* in case xstrdup fails */ + + void *xmalloc (size_t num); + char *xstrdup (const char *string); +@@ -3271,31 +3550,17 @@ + int make_executable (const char *path); + int check_executable (const char *path); + char *strendzap (char *str, const char *pat); +-void lt_fatal (const char *message, ...); ++void lt_debugprintf (const char *file, int line, const char *fmt, ...); ++void lt_fatal (const char *file, int line, const char *message, ...); ++static const char *nonnull (const char *s); ++static const char *nonempty (const char *s); + void lt_setenv (const char *name, const char *value); + char *lt_extend_str (const char *orig_value, const char *add, int to_end); +-void lt_opt_process_env_set (const char *arg); +-void lt_opt_process_env_prepend (const char *arg); +-void lt_opt_process_env_append (const char *arg); +-int lt_split_name_value (const char *arg, char** name, char** value); + void lt_update_exe_path (const char *name, const char *value); + void lt_update_lib_path (const char *name, const char *value); +- +-static const char *script_text_part1 = +-EOF +- +- func_emit_wrapper_part1 yes | +- $SED -e 's/\([\\"]\)/\\\1/g' \ +- -e 's/^/ "/' -e 's/$/\\n"/' +- echo ";" +- cat <"))); ++ lt_debugprintf (__FILE__, __LINE__, "(main) lt_argv_zero: %s\n", ++ nonnull (lt_argv_zero)); + for (i = 0; i < newargc; i++) + { +- LTWRAPPER_DEBUGPRINTF (("(main) newargz[%d] : %s\n", i, (newargz[i] ? newargz[i] : ""))); ++ lt_debugprintf (__FILE__, __LINE__, "(main) newargz[%d]: %s\n", ++ i, nonnull (newargz[i])); + } + + EOF +@@ -3560,11 +3782,14 @@ + mingw*) + cat <<"EOF" + /* execv doesn't actually work on mingw as expected on unix */ ++ newargz = prepare_spawn (newargz); + rval = _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz); + if (rval == -1) + { + /* failed to start process */ +- LTWRAPPER_DEBUGPRINTF (("(main) failed to launch target \"%s\": errno = %d\n", lt_argv_zero, errno)); ++ lt_debugprintf (__FILE__, __LINE__, ++ "(main) failed to launch target \"%s\": %s\n", ++ lt_argv_zero, nonnull (strerror (errno))); + return 127; + } + return rval; +@@ -3586,7 +3811,7 @@ + { + void *p = (void *) malloc (num); + if (!p) +- lt_fatal ("Memory exhausted"); ++ lt_fatal (__FILE__, __LINE__, "memory exhausted"); + + return p; + } +@@ -3620,8 +3845,8 @@ + { + struct stat st; + +- LTWRAPPER_DEBUGPRINTF (("(check_executable) : %s\n", +- path ? (*path ? path : "EMPTY!") : "NULL!")); ++ lt_debugprintf (__FILE__, __LINE__, "(check_executable): %s\n", ++ nonempty (path)); + if ((!path) || (!*path)) + return 0; + +@@ -3638,8 +3863,8 @@ + int rval = 0; + struct stat st; + +- LTWRAPPER_DEBUGPRINTF (("(make_executable) : %s\n", +- path ? (*path ? path : "EMPTY!") : "NULL!")); ++ lt_debugprintf (__FILE__, __LINE__, "(make_executable): %s\n", ++ nonempty (path)); + if ((!path) || (!*path)) + return 0; + +@@ -3665,8 +3890,8 @@ + int tmp_len; + char *concat_name; + +- LTWRAPPER_DEBUGPRINTF (("(find_executable) : %s\n", +- wrapper ? (*wrapper ? wrapper : "EMPTY!") : "NULL!")); ++ lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n", ++ nonempty (wrapper)); + + if ((wrapper == NULL) || (*wrapper == '\0')) + return NULL; +@@ -3719,7 +3944,8 @@ + { + /* empty path: current directory */ + if (getcwd (tmp, LT_PATHMAX) == NULL) +- lt_fatal ("getcwd failed"); ++ lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", ++ nonnull (strerror (errno))); + tmp_len = strlen (tmp); + concat_name = + XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); +@@ -3744,7 +3970,8 @@ + } + /* Relative path | not found in path: prepend cwd */ + if (getcwd (tmp, LT_PATHMAX) == NULL) +- lt_fatal ("getcwd failed"); ++ lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", ++ nonnull (strerror (errno))); + tmp_len = strlen (tmp); + concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); + memcpy (concat_name, tmp, tmp_len); +@@ -3770,8 +3997,9 @@ + int has_symlinks = 0; + while (strlen (tmp_pathspec) && !has_symlinks) + { +- LTWRAPPER_DEBUGPRINTF (("checking path component for symlinks: %s\n", +- tmp_pathspec)); ++ lt_debugprintf (__FILE__, __LINE__, ++ "checking path component for symlinks: %s\n", ++ tmp_pathspec); + if (lstat (tmp_pathspec, &s) == 0) + { + if (S_ISLNK (s.st_mode) != 0) +@@ -3793,8 +4021,9 @@ + } + else + { +- char *errstr = strerror (errno); +- lt_fatal ("Error accessing file %s (%s)", tmp_pathspec, errstr); ++ lt_fatal (__FILE__, __LINE__, ++ "error accessing file \"%s\": %s", ++ tmp_pathspec, nonnull (strerror (errno))); + } + } + XFREE (tmp_pathspec); +@@ -3807,7 +4036,8 @@ + tmp_pathspec = realpath (pathspec, buf); + if (tmp_pathspec == 0) + { +- lt_fatal ("Could not follow symlinks for %s", pathspec); ++ lt_fatal (__FILE__, __LINE__, ++ "could not follow symlinks for %s", pathspec); + } + return xstrdup (tmp_pathspec); + #endif +@@ -3833,11 +4063,25 @@ + return str; + } + ++void ++lt_debugprintf (const char *file, int line, const char *fmt, ...) ++{ ++ va_list args; ++ if (lt_debug) ++ { ++ (void) fprintf (stderr, "%s:%s:%d: ", program_name, file, line); ++ va_start (args, fmt); ++ (void) vfprintf (stderr, fmt, args); ++ va_end (args); ++ } ++} ++ + static void +-lt_error_core (int exit_status, const char *mode, ++lt_error_core (int exit_status, const char *file, ++ int line, const char *mode, + const char *message, va_list ap) + { +- fprintf (stderr, "%s: %s: ", program_name, mode); ++ fprintf (stderr, "%s:%s:%d: %s: ", program_name, file, line, mode); + vfprintf (stderr, message, ap); + fprintf (stderr, ".\n"); + +@@ -3846,20 +4090,32 @@ + } + + void +-lt_fatal (const char *message, ...) ++lt_fatal (const char *file, int line, const char *message, ...) + { + va_list ap; + va_start (ap, message); +- lt_error_core (EXIT_FAILURE, "FATAL", message, ap); ++ lt_error_core (EXIT_FAILURE, file, line, "FATAL", message, ap); + va_end (ap); + } + ++static const char * ++nonnull (const char *s) ++{ ++ return s ? s : "(null)"; ++} ++ ++static const char * ++nonempty (const char *s) ++{ ++ return (s && !*s) ? "(empty)" : nonnull (s); ++} ++ + void + lt_setenv (const char *name, const char *value) + { +- LTWRAPPER_DEBUGPRINTF (("(lt_setenv) setting '%s' to '%s'\n", +- (name ? name : ""), +- (value ? value : ""))); ++ lt_debugprintf (__FILE__, __LINE__, ++ "(lt_setenv) setting '%s' to '%s'\n", ++ nonnull (name), nonnull (value)); + { + #ifdef HAVE_SETENV + /* always make a copy, for consistency with !HAVE_SETENV */ +@@ -3904,95 +4160,12 @@ + return new_value; + } + +-int +-lt_split_name_value (const char *arg, char** name, char** value) +-{ +- const char *p; +- int len; +- if (!arg || !*arg) +- return 1; +- +- p = strchr (arg, (int)'='); +- +- if (!p) +- return 1; +- +- *value = xstrdup (++p); +- +- len = strlen (arg) - strlen (*value); +- *name = XMALLOC (char, len); +- strncpy (*name, arg, len-1); +- (*name)[len - 1] = '\0'; +- +- return 0; +-} +- +-void +-lt_opt_process_env_set (const char *arg) +-{ +- char *name = NULL; +- char *value = NULL; +- +- if (lt_split_name_value (arg, &name, &value) != 0) +- { +- XFREE (name); +- XFREE (value); +- lt_fatal ("bad argument for %s: '%s'", env_set_opt, arg); +- } +- +- lt_setenv (name, value); +- XFREE (name); +- XFREE (value); +-} +- +-void +-lt_opt_process_env_prepend (const char *arg) +-{ +- char *name = NULL; +- char *value = NULL; +- char *new_value = NULL; +- +- if (lt_split_name_value (arg, &name, &value) != 0) +- { +- XFREE (name); +- XFREE (value); +- lt_fatal ("bad argument for %s: '%s'", env_prepend_opt, arg); +- } +- +- new_value = lt_extend_str (getenv (name), value, 0); +- lt_setenv (name, new_value); +- XFREE (new_value); +- XFREE (name); +- XFREE (value); +-} +- +-void +-lt_opt_process_env_append (const char *arg) +-{ +- char *name = NULL; +- char *value = NULL; +- char *new_value = NULL; +- +- if (lt_split_name_value (arg, &name, &value) != 0) +- { +- XFREE (name); +- XFREE (value); +- lt_fatal ("bad argument for %s: '%s'", env_append_opt, arg); +- } +- +- new_value = lt_extend_str (getenv (name), value, 1); +- lt_setenv (name, new_value); +- XFREE (new_value); +- XFREE (name); +- XFREE (value); +-} +- + void + lt_update_exe_path (const char *name, const char *value) + { +- LTWRAPPER_DEBUGPRINTF (("(lt_update_exe_path) modifying '%s' by prepending '%s'\n", +- (name ? name : ""), +- (value ? value : ""))); ++ lt_debugprintf (__FILE__, __LINE__, ++ "(lt_update_exe_path) modifying '%s' by prepending '%s'\n", ++ nonnull (name), nonnull (value)); + + if (name && *name && value && *value) + { +@@ -4011,9 +4184,9 @@ + void + lt_update_lib_path (const char *name, const char *value) + { +- LTWRAPPER_DEBUGPRINTF (("(lt_update_lib_path) modifying '%s' by prepending '%s'\n", +- (name ? name : ""), +- (value ? value : ""))); ++ lt_debugprintf (__FILE__, __LINE__, ++ "(lt_update_lib_path) modifying '%s' by prepending '%s'\n", ++ nonnull (name), nonnull (value)); + + if (name && *name && value && *value) + { +@@ -4023,11 +4196,152 @@ + } + } + ++EOF ++ case $host_os in ++ mingw*) ++ cat <<"EOF" ++ ++/* Prepares an argument vector before calling spawn(). ++ Note that spawn() does not by itself call the command interpreter ++ (getenv ("COMSPEC") != NULL ? getenv ("COMSPEC") : ++ ({ OSVERSIONINFO v; v.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); ++ GetVersionEx(&v); ++ v.dwPlatformId == VER_PLATFORM_WIN32_NT; ++ }) ? "cmd.exe" : "command.com"). ++ Instead it simply concatenates the arguments, separated by ' ', and calls ++ CreateProcess(). We must quote the arguments since Win32 CreateProcess() ++ interprets characters like ' ', '\t', '\\', '"' (but not '<' and '>') in a ++ special way: ++ - Space and tab are interpreted as delimiters. They are not treated as ++ delimiters if they are surrounded by double quotes: "...". ++ - Unescaped double quotes are removed from the input. Their only effect is ++ that within double quotes, space and tab are treated like normal ++ characters. ++ - Backslashes not followed by double quotes are not special. ++ - But 2*n+1 backslashes followed by a double quote become ++ n backslashes followed by a double quote (n >= 0): ++ \" -> " ++ \\\" -> \" ++ \\\\\" -> \\" ++ */ ++#define SHELL_SPECIAL_CHARS "\"\\ \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" ++#define SHELL_SPACE_CHARS " \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" ++char ** ++prepare_spawn (char **argv) ++{ ++ size_t argc; ++ char **new_argv; ++ size_t i; ++ ++ /* Count number of arguments. */ ++ for (argc = 0; argv[argc] != NULL; argc++) ++ ; + ++ /* Allocate new argument vector. */ ++ new_argv = XMALLOC (char *, argc + 1); ++ ++ /* Put quoted arguments into the new argument vector. */ ++ for (i = 0; i < argc; i++) ++ { ++ const char *string = argv[i]; ++ ++ if (string[0] == '\0') ++ new_argv[i] = xstrdup ("\"\""); ++ else if (strpbrk (string, SHELL_SPECIAL_CHARS) != NULL) ++ { ++ int quote_around = (strpbrk (string, SHELL_SPACE_CHARS) != NULL); ++ size_t length; ++ unsigned int backslashes; ++ const char *s; ++ char *quoted_string; ++ char *p; ++ ++ length = 0; ++ backslashes = 0; ++ if (quote_around) ++ length++; ++ for (s = string; *s != '\0'; s++) ++ { ++ char c = *s; ++ if (c == '"') ++ length += backslashes + 1; ++ length++; ++ if (c == '\\') ++ backslashes++; ++ else ++ backslashes = 0; ++ } ++ if (quote_around) ++ length += backslashes + 1; ++ ++ quoted_string = XMALLOC (char, length + 1); ++ ++ p = quoted_string; ++ backslashes = 0; ++ if (quote_around) ++ *p++ = '"'; ++ for (s = string; *s != '\0'; s++) ++ { ++ char c = *s; ++ if (c == '"') ++ { ++ unsigned int j; ++ for (j = backslashes + 1; j > 0; j--) ++ *p++ = '\\'; ++ } ++ *p++ = c; ++ if (c == '\\') ++ backslashes++; ++ else ++ backslashes = 0; ++ } ++ if (quote_around) ++ { ++ unsigned int j; ++ for (j = backslashes; j > 0; j--) ++ *p++ = '\\'; ++ *p++ = '"'; ++ } ++ *p = '\0'; ++ ++ new_argv[i] = quoted_string; ++ } ++ else ++ new_argv[i] = (char *) string; ++ } ++ new_argv[argc] = NULL; ++ ++ return new_argv; ++} ++EOF ++ ;; ++ esac ++ ++ cat <<"EOF" ++void lt_dump_script (FILE* f) ++{ ++EOF ++ func_emit_wrapper yes | ++ $SED -e 's/\([\\"]\)/\\\1/g' \ ++ -e 's/^/ fputs ("/' -e 's/$/\\n", f);/' ++ ++ cat <<"EOF" ++} + EOF + } + # end: func_emit_cwrapperexe_src + ++# func_win32_import_lib_p ARG ++# True if ARG is an import lib, as indicated by $file_magic_cmd ++func_win32_import_lib_p () ++{ ++ $opt_debug ++ case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in ++ *import*) : ;; ++ *) false ;; ++ esac ++} ++ + # func_mode_link arg... + func_mode_link () + { +@@ -4072,6 +4386,7 @@ + new_inherited_linker_flags= + + avoid_version=no ++ bindir= + dlfiles= + dlprefiles= + dlself=no +@@ -4164,6 +4479,11 @@ + esac + + case $prev in ++ bindir) ++ bindir="$arg" ++ prev= ++ continue ++ ;; + dlfiles|dlprefiles) + if test "$preload" = no; then + # Add the symbol object into the linking commands. +@@ -4425,6 +4745,11 @@ + continue + ;; + ++ -bindir) ++ prev=bindir ++ continue ++ ;; ++ + -dlopen) + prev=dlfiles + continue +@@ -4503,7 +4828,7 @@ + esac + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) +- testbindir=`$ECHO "X$dir" | $Xsed -e 's*/lib$*/bin*'` ++ testbindir=`$ECHO "$dir" | $SED 's*/lib$*/bin*'` + case :$dllsearchpath: in + *":$dir:"*) ;; + ::) dllsearchpath=$dir;; +@@ -4522,7 +4847,7 @@ + -l*) + if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then + case $host in +- *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc*) ++ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*) + # These systems don't actually have a C or math library (as such) + continue + ;; +@@ -4708,7 +5033,7 @@ + for flag in $args; do + IFS="$save_ifs" + func_quote_for_eval "$flag" +- arg="$arg $wl$func_quote_for_eval_result" ++ arg="$arg $func_quote_for_eval_result" + compiler_flags="$compiler_flags $func_quote_for_eval_result" + done + IFS="$save_ifs" +@@ -4754,18 +5079,19 @@ + arg="$func_quote_for_eval_result" + ;; + +- # -64, -mips[0-9] enable 64-bit mode on the SGI compiler +- # -r[0-9][0-9]* specifies the processor on the SGI compiler +- # -xarch=*, -xtarget=* enable 64-bit mode on the Sun compiler +- # +DA*, +DD* enable 64-bit mode on the HP compiler +- # -q* pass through compiler args for the IBM compiler +- # -m*, -t[45]*, -txscale* pass through architecture-specific +- # compiler args for GCC +- # -F/path gives path to uninstalled frameworks, gcc on darwin +- # -p, -pg, --coverage, -fprofile-* pass through profiling flag for GCC +- # @file GCC response files ++ # Flags to be passed through unchanged, with rationale: ++ # -64, -mips[0-9] enable 64-bit mode for the SGI compiler ++ # -r[0-9][0-9]* specify processor for the SGI compiler ++ # -xarch=*, -xtarget=* enable 64-bit mode for the Sun compiler ++ # +DA*, +DD* enable 64-bit mode for the HP compiler ++ # -q* compiler args for the IBM compiler ++ # -m*, -t[45]*, -txscale* architecture-specific flags for GCC ++ # -F/path path to uninstalled frameworks, gcc on darwin ++ # -p, -pg, --coverage, -fprofile-* profiling flags for GCC ++ # @file GCC response files ++ # -tp=* Portland pgcc target processor selection + -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ +- -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*) ++ -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*) + func_quote_for_eval "$arg" + arg="$func_quote_for_eval_result" + func_append compile_command " $arg" +@@ -4925,7 +5251,7 @@ + + if test -n "$shlibpath_var"; then + # get the directories listed in $shlibpath_var +- eval shlib_search_path=\`\$ECHO \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\` ++ eval shlib_search_path=\`\$ECHO \"\${$shlibpath_var}\" \| \$SED \'s/:/ /g\'\` + else + shlib_search_path= + fi +@@ -5048,7 +5374,8 @@ + # Collect preopened libtool deplibs, except any this library + # has declared as weak libs + for deplib in $dependency_libs; do +- deplib_base=`$ECHO "X$deplib" | $Xsed -e "$basename"` ++ func_basename "$deplib" ++ deplib_base=$func_basename_result + case " $weak_libs " in + *" $deplib_base "*) ;; + *) deplibs="$deplibs $deplib" ;; +@@ -5227,7 +5554,7 @@ + match_pattern*) + set dummy $deplibs_check_method; shift + match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` +- if eval "\$ECHO \"X$deplib\"" 2>/dev/null | $Xsed -e 10q \ ++ if eval "\$ECHO \"$deplib\"" 2>/dev/null | $SED 10q \ + | $EGREP "$match_pattern_regex" > /dev/null; then + valid_a_lib=yes + fi +@@ -5237,15 +5564,15 @@ + ;; + esac + if test "$valid_a_lib" != yes; then +- $ECHO ++ echo + $ECHO "*** Warning: Trying to link with static lib archive $deplib." +- $ECHO "*** I have the capability to make that library automatically link in when" +- $ECHO "*** you link to this library. But I can only do this if you have a" +- $ECHO "*** shared version of the library, which you do not appear to have" +- $ECHO "*** because the file extensions .$libext of this argument makes me believe" +- $ECHO "*** that it is just a static archive that I should not use here." ++ echo "*** I have the capability to make that library automatically link in when" ++ echo "*** you link to this library. But I can only do this if you have a" ++ echo "*** shared version of the library, which you do not appear to have" ++ echo "*** because the file extensions .$libext of this argument makes me believe" ++ echo "*** that it is just a static archive that I should not use here." + else +- $ECHO ++ echo + $ECHO "*** Warning: Linking the shared library $output against the" + $ECHO "*** static library $deplib is not portable!" + deplibs="$deplib $deplibs" +@@ -5318,7 +5645,7 @@ + + # Convert "-framework foo" to "foo.ltframework" + if test -n "$inherited_linker_flags"; then +- tmp_inherited_linker_flags=`$ECHO "X$inherited_linker_flags" | $Xsed -e 's/-framework \([^ $]*\)/\1.ltframework/g'` ++ tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'` + for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do + case " $new_inherited_linker_flags " in + *" $tmp_inherited_linker_flag "*) ;; +@@ -5326,7 +5653,7 @@ + esac + done + fi +- dependency_libs=`$ECHO "X $dependency_libs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` ++ dependency_libs=`$ECHO " $dependency_libs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + if test "$linkmode,$pass" = "lib,link" || + test "$linkmode,$pass" = "prog,scan" || + { test "$linkmode" != prog && test "$linkmode" != lib; }; then +@@ -5580,7 +5907,7 @@ + fi + done + if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then +- $ECHO ++ echo + if test "$linkmode" = prog; then + $ECHO "*** Warning: Linking the executable $output against the loadable module" + else +@@ -5683,9 +6010,9 @@ + if test "X$dlopenmodule" != "X$lib"; then + $ECHO "*** Warning: lib $linklib is a module, not a shared library" + if test -z "$old_library" ; then +- $ECHO +- $ECHO "*** And there doesn't seem to be a static archive available" +- $ECHO "*** The link will probably fail, sorry" ++ echo ++ echo "*** And there doesn't seem to be a static archive available" ++ echo "*** The link will probably fail, sorry" + else + add="$dir/$old_library" + fi +@@ -5825,21 +6152,21 @@ + + # Just print a warning and add the library to dependency_libs so + # that the program can be linked against the static library. +- $ECHO ++ echo + $ECHO "*** Warning: This system can not link to static lib archive $lib." +- $ECHO "*** I have the capability to make that library automatically link in when" +- $ECHO "*** you link to this library. But I can only do this if you have a" +- $ECHO "*** shared version of the library, which you do not appear to have." ++ echo "*** I have the capability to make that library automatically link in when" ++ echo "*** you link to this library. But I can only do this if you have a" ++ echo "*** shared version of the library, which you do not appear to have." + if test "$module" = yes; then +- $ECHO "*** But as you try to build a module library, libtool will still create " +- $ECHO "*** a static module, that should work as long as the dlopening application" +- $ECHO "*** is linked with the -dlopen flag to resolve symbols at runtime." ++ echo "*** But as you try to build a module library, libtool will still create " ++ echo "*** a static module, that should work as long as the dlopening application" ++ echo "*** is linked with the -dlopen flag to resolve symbols at runtime." + if test -z "$global_symbol_pipe"; then +- $ECHO +- $ECHO "*** However, this would only work if libtool was able to extract symbol" +- $ECHO "*** lists from a program, using \`nm' or equivalent, but libtool could" +- $ECHO "*** not find such a program. So, this module is probably useless." +- $ECHO "*** \`nm' from GNU binutils and a full rebuild may help." ++ echo ++ echo "*** However, this would only work if libtool was able to extract symbol" ++ echo "*** lists from a program, using \`nm' or equivalent, but libtool could" ++ echo "*** not find such a program. So, this module is probably useless." ++ echo "*** \`nm' from GNU binutils and a full rebuild may help." + fi + if test "$build_old_libs" = no; then + build_libtool_libs=module +@@ -5893,6 +6220,7 @@ + if test "$link_all_deplibs" != no; then + # Add the search paths of all dependency libraries + for deplib in $dependency_libs; do ++ path= + case $deplib in + -L*) path="$deplib" ;; + *.la) +@@ -5958,7 +6286,7 @@ + compile_deplibs="$new_inherited_linker_flags $compile_deplibs" + finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs" + else +- compiler_flags="$compiler_flags "`$ECHO "X $new_inherited_linker_flags" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` ++ compiler_flags="$compiler_flags "`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + fi + fi + dependency_libs="$newdependency_libs" +@@ -6126,7 +6454,7 @@ + if test "$deplibs_check_method" != pass_all; then + func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs" + else +- $ECHO ++ echo + $ECHO "*** Warning: Linking the shared library $output against the non-libtool" + $ECHO "*** objects $objs is not portable!" + libobjs="$libobjs $objs" +@@ -6194,7 +6522,7 @@ + age="$number_minor" + revision="$number_revision" + ;; +- freebsd-aout|freebsd-elf|sunos) ++ freebsd-aout|freebsd-elf|qnx|sunos) + current="$number_major" + revision="$number_minor" + age="0" +@@ -6428,14 +6756,14 @@ + oldlibs="$oldlibs $output_objdir/$libname.$libext" + + # Transform .lo files to .o files. +- oldobjs="$objs "`$ECHO "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP` ++ oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; $lo2o" | $NL2SP` + fi + + # Eliminate all temporary directories. + #for path in $notinst_path; do +- # lib_search_path=`$ECHO "X$lib_search_path " | $Xsed -e "s% $path % %g"` +- # deplibs=`$ECHO "X$deplibs " | $Xsed -e "s% -L$path % %g"` +- # dependency_libs=`$ECHO "X$dependency_libs " | $Xsed -e "s% -L$path % %g"` ++ # lib_search_path=`$ECHO "$lib_search_path " | $SED "s% $path % %g"` ++ # deplibs=`$ECHO "$deplibs " | $SED "s% -L$path % %g"` ++ # dependency_libs=`$ECHO "$dependency_libs " | $SED "s% -L$path % %g"` + #done + + if test -n "$xrpath"; then +@@ -6476,7 +6804,7 @@ + if test "$build_libtool_libs" = yes; then + if test -n "$rpath"; then + case $host in +- *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc*) ++ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*) + # these systems don't actually have a c library (as such)! + ;; + *-*-rhapsody* | *-*-darwin1.[012]) +@@ -6561,13 +6889,13 @@ + newdeplibs="$newdeplibs $i" + else + droppeddeps=yes +- $ECHO ++ echo + $ECHO "*** Warning: dynamic linker does not accept needed library $i." +- $ECHO "*** I have the capability to make that library automatically link in when" +- $ECHO "*** you link to this library. But I can only do this if you have a" +- $ECHO "*** shared version of the library, which I believe you do not have" +- $ECHO "*** because a test_compile did reveal that the linker did not use it for" +- $ECHO "*** its dynamic dependency list that programs get resolved with at runtime." ++ echo "*** I have the capability to make that library automatically link in when" ++ echo "*** you link to this library. But I can only do this if you have a" ++ echo "*** shared version of the library, which I believe you do not have" ++ echo "*** because a test_compile did reveal that the linker did not use it for" ++ echo "*** its dynamic dependency list that programs get resolved with at runtime." + fi + fi + ;; +@@ -6604,22 +6932,22 @@ + newdeplibs="$newdeplibs $i" + else + droppeddeps=yes +- $ECHO ++ echo + $ECHO "*** Warning: dynamic linker does not accept needed library $i." +- $ECHO "*** I have the capability to make that library automatically link in when" +- $ECHO "*** you link to this library. But I can only do this if you have a" +- $ECHO "*** shared version of the library, which you do not appear to have" +- $ECHO "*** because a test_compile did reveal that the linker did not use this one" +- $ECHO "*** as a dynamic dependency that programs can get resolved with at runtime." ++ echo "*** I have the capability to make that library automatically link in when" ++ echo "*** you link to this library. But I can only do this if you have a" ++ echo "*** shared version of the library, which you do not appear to have" ++ echo "*** because a test_compile did reveal that the linker did not use this one" ++ echo "*** as a dynamic dependency that programs can get resolved with at runtime." + fi + fi + else + droppeddeps=yes +- $ECHO ++ echo + $ECHO "*** Warning! Library $i is needed by this library but I was not able to" +- $ECHO "*** make it link in! You will probably need to install it or some" +- $ECHO "*** library that it depends on before this library will be fully" +- $ECHO "*** functional. Installing it before continuing would be even better." ++ echo "*** make it link in! You will probably need to install it or some" ++ echo "*** library that it depends on before this library will be fully" ++ echo "*** functional. Installing it before continuing would be even better." + fi + ;; + *) +@@ -6665,7 +6993,7 @@ + potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'` + case $potliblink in + [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";; +- *) potlib=`$ECHO "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";; ++ *) potlib=`$ECHO "$potlib" | $SED 's,[^/]*$,,'`"$potliblink";; + esac + done + if eval $file_magic_cmd \"\$potlib\" 2>/dev/null | +@@ -6680,12 +7008,12 @@ + fi + if test -n "$a_deplib" ; then + droppeddeps=yes +- $ECHO ++ echo + $ECHO "*** Warning: linker path does not have real file for library $a_deplib." +- $ECHO "*** I have the capability to make that library automatically link in when" +- $ECHO "*** you link to this library. But I can only do this if you have a" +- $ECHO "*** shared version of the library, which you do not appear to have" +- $ECHO "*** because I did check the linker path looking for a file starting" ++ echo "*** I have the capability to make that library automatically link in when" ++ echo "*** you link to this library. But I can only do this if you have a" ++ echo "*** shared version of the library, which you do not appear to have" ++ echo "*** because I did check the linker path looking for a file starting" + if test -z "$potlib" ; then + $ECHO "*** with $libname but no candidates were found. (...for file magic test)" + else +@@ -6723,7 +7051,7 @@ + potential_libs=`ls $i/$libname[.-]* 2>/dev/null` + for potent_lib in $potential_libs; do + potlib="$potent_lib" # see symlink-check above in file_magic test +- if eval "\$ECHO \"X$potent_lib\"" 2>/dev/null | $Xsed -e 10q | \ ++ if eval "\$ECHO \"$potent_lib\"" 2>/dev/null | $SED 10q | \ + $EGREP "$match_pattern_regex" > /dev/null; then + newdeplibs="$newdeplibs $a_deplib" + a_deplib="" +@@ -6734,12 +7062,12 @@ + fi + if test -n "$a_deplib" ; then + droppeddeps=yes +- $ECHO ++ echo + $ECHO "*** Warning: linker path does not have real file for library $a_deplib." +- $ECHO "*** I have the capability to make that library automatically link in when" +- $ECHO "*** you link to this library. But I can only do this if you have a" +- $ECHO "*** shared version of the library, which you do not appear to have" +- $ECHO "*** because I did check the linker path looking for a file starting" ++ echo "*** I have the capability to make that library automatically link in when" ++ echo "*** you link to this library. But I can only do this if you have a" ++ echo "*** shared version of the library, which you do not appear to have" ++ echo "*** because I did check the linker path looking for a file starting" + if test -z "$potlib" ; then + $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)" + else +@@ -6757,25 +7085,25 @@ + ;; + none | unknown | *) + newdeplibs="" +- tmp_deplibs=`$ECHO "X $deplibs" | $Xsed \ +- -e 's/ -lc$//' -e 's/ -[LR][^ ]*//g'` ++ tmp_deplibs=`$ECHO " $deplibs" | $SED 's/ -lc$//; s/ -[LR][^ ]*//g'` + if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then + for i in $predeps $postdeps ; do + # can't use Xsed below, because $i might contain '/' +- tmp_deplibs=`$ECHO "X $tmp_deplibs" | $Xsed -e "s,$i,,"` ++ tmp_deplibs=`$ECHO " $tmp_deplibs" | $SED "s,$i,,"` + done + fi +- if $ECHO "X $tmp_deplibs" | $Xsed -e 's/[ ]//g' | +- $GREP . >/dev/null; then +- $ECHO ++ case $tmp_deplibs in ++ *[!\ \ ]*) ++ echo + if test "X$deplibs_check_method" = "Xnone"; then +- $ECHO "*** Warning: inter-library dependencies are not supported in this platform." ++ echo "*** Warning: inter-library dependencies are not supported in this platform." + else +- $ECHO "*** Warning: inter-library dependencies are not known to be supported." ++ echo "*** Warning: inter-library dependencies are not known to be supported." + fi +- $ECHO "*** All declared inter-library dependencies are being dropped." ++ echo "*** All declared inter-library dependencies are being dropped." + droppeddeps=yes +- fi ++ ;; ++ esac + ;; + esac + versuffix=$versuffix_save +@@ -6787,23 +7115,23 @@ + case $host in + *-*-rhapsody* | *-*-darwin1.[012]) + # On Rhapsody replace the C library with the System framework +- newdeplibs=`$ECHO "X $newdeplibs" | $Xsed -e 's/ -lc / System.ltframework /'` ++ newdeplibs=`$ECHO " $newdeplibs" | $SED 's/ -lc / System.ltframework /'` + ;; + esac + + if test "$droppeddeps" = yes; then + if test "$module" = yes; then +- $ECHO +- $ECHO "*** Warning: libtool could not satisfy all declared inter-library" ++ echo ++ echo "*** Warning: libtool could not satisfy all declared inter-library" + $ECHO "*** dependencies of module $libname. Therefore, libtool will create" +- $ECHO "*** a static module, that should work as long as the dlopening" +- $ECHO "*** application is linked with the -dlopen flag." ++ echo "*** a static module, that should work as long as the dlopening" ++ echo "*** application is linked with the -dlopen flag." + if test -z "$global_symbol_pipe"; then +- $ECHO +- $ECHO "*** However, this would only work if libtool was able to extract symbol" +- $ECHO "*** lists from a program, using \`nm' or equivalent, but libtool could" +- $ECHO "*** not find such a program. So, this module is probably useless." +- $ECHO "*** \`nm' from GNU binutils and a full rebuild may help." ++ echo ++ echo "*** However, this would only work if libtool was able to extract symbol" ++ echo "*** lists from a program, using \`nm' or equivalent, but libtool could" ++ echo "*** not find such a program. So, this module is probably useless." ++ echo "*** \`nm' from GNU binutils and a full rebuild may help." + fi + if test "$build_old_libs" = no; then + oldlibs="$output_objdir/$libname.$libext" +@@ -6813,16 +7141,16 @@ + build_libtool_libs=no + fi + else +- $ECHO "*** The inter-library dependencies that have been dropped here will be" +- $ECHO "*** automatically added whenever a program is linked with this library" +- $ECHO "*** or is declared to -dlopen it." ++ echo "*** The inter-library dependencies that have been dropped here will be" ++ echo "*** automatically added whenever a program is linked with this library" ++ echo "*** or is declared to -dlopen it." + + if test "$allow_undefined" = no; then +- $ECHO +- $ECHO "*** Since this library must not contain undefined symbols," +- $ECHO "*** because either the platform does not support them or" +- $ECHO "*** it was explicitly requested with -no-undefined," +- $ECHO "*** libtool will only create a static version of it." ++ echo ++ echo "*** Since this library must not contain undefined symbols," ++ echo "*** because either the platform does not support them or" ++ echo "*** it was explicitly requested with -no-undefined," ++ echo "*** libtool will only create a static version of it." + if test "$build_old_libs" = no; then + oldlibs="$output_objdir/$libname.$libext" + build_libtool_libs=module +@@ -6839,9 +7167,9 @@ + # Time to change all our "foo.ltframework" stuff back to "-framework foo" + case $host in + *-*-darwin*) +- newdeplibs=`$ECHO "X $newdeplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` +- new_inherited_linker_flags=`$ECHO "X $new_inherited_linker_flags" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` +- deplibs=`$ECHO "X $deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` ++ newdeplibs=`$ECHO " $newdeplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` ++ new_inherited_linker_flags=`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` ++ deplibs=`$ECHO " $deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + ;; + esac + +@@ -6963,7 +7291,7 @@ + done + + # Use standard objects if they are pic +- test -z "$pic_flag" && libobjs=`$ECHO "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` ++ test -z "$pic_flag" && libobjs=`$ECHO "$libobjs" | $SP2NL | $SED "$lo2o" | $NL2SP` + test "X$libobjs" = "X " && libobjs= + + delfiles= +@@ -7029,7 +7357,7 @@ + if test -n "$export_symbols" && test -n "$include_expsyms"; then + tmp_export_symbols="$export_symbols" + test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" +- $opt_dry_run || eval '$ECHO "X$include_expsyms" | $Xsed | $SP2NL >> "$tmp_export_symbols"' ++ $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' + fi + + if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then +@@ -7130,7 +7458,8 @@ + save_libobjs=$libobjs + fi + save_output=$output +- output_la=`$ECHO "X$output" | $Xsed -e "$basename"` ++ func_basename "$output" ++ output_la=$func_basename_result + + # Clear the reloadable object creation command queue and + # initialize k to one. +@@ -7143,12 +7472,12 @@ + if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then + output=${output_objdir}/${output_la}.lnkscript + func_verbose "creating GNU ld script: $output" +- $ECHO 'INPUT (' > $output ++ echo 'INPUT (' > $output + for obj in $save_libobjs + do + $ECHO "$obj" >> $output + done +- $ECHO ')' >> $output ++ echo ')' >> $output + delfiles="$delfiles $output" + elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then + output=${output_objdir}/${output_la}.lnk +@@ -7190,17 +7519,19 @@ + # command to the queue. + if test "$k" -eq 1 ; then + # The first file doesn't have a previous command to add. +- eval concat_cmds=\"$reload_cmds $objlist $last_robj\" ++ reload_objs=$objlist ++ eval concat_cmds=\"$reload_cmds\" + else + # All subsequent reloadable object files will link in + # the last one created. +- eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj~\$RM $last_robj\" ++ reload_objs="$objlist $last_robj" ++ eval concat_cmds=\"\$concat_cmds~$reload_cmds~\$RM $last_robj\" + fi + last_robj=$output_objdir/$output_la-${k}.$objext + func_arith $k + 1 + k=$func_arith_result + output=$output_objdir/$output_la-${k}.$objext +- objlist=$obj ++ objlist=" $obj" + func_len " $last_robj" + func_arith $len0 + $func_len_result + len=$func_arith_result +@@ -7210,7 +7541,8 @@ + # reloadable object file. All subsequent reloadable object + # files will link in the last one created. + test -z "$concat_cmds" || concat_cmds=$concat_cmds~ +- eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\" ++ reload_objs="$objlist $last_robj" ++ eval concat_cmds=\"\${concat_cmds}$reload_cmds\" + if test -n "$last_robj"; then + eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\" + fi +@@ -7269,7 +7601,7 @@ + if test -n "$export_symbols" && test -n "$include_expsyms"; then + tmp_export_symbols="$export_symbols" + test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" +- $opt_dry_run || eval '$ECHO "X$include_expsyms" | $Xsed | $SP2NL >> "$tmp_export_symbols"' ++ $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' + fi + + if test -n "$orig_export_symbols"; then +@@ -7434,7 +7766,7 @@ + if test -n "$convenience"; then + if test -n "$whole_archive_flag_spec"; then + eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\" +- reload_conv_objs=$reload_objs\ `$ECHO "X$tmp_whole_archive_flags" | $Xsed -e 's|,| |g'` ++ reload_conv_objs=$reload_objs\ `$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'` + else + gentop="$output_objdir/${obj}x" + generated="$generated $gentop" +@@ -7445,7 +7777,7 @@ + fi + + # Create the old-style object. +- reload_objs="$objs$old_deplibs "`$ECHO "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test ++ reload_objs="$objs$old_deplibs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; /\.lib$/d; $lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test + + output="$obj" + func_execute_cmds "$reload_cmds" 'exit $?' +@@ -7505,8 +7837,8 @@ + case $host in + *-*-rhapsody* | *-*-darwin1.[012]) + # On Rhapsody replace the C library is the System framework +- compile_deplibs=`$ECHO "X $compile_deplibs" | $Xsed -e 's/ -lc / System.ltframework /'` +- finalize_deplibs=`$ECHO "X $finalize_deplibs" | $Xsed -e 's/ -lc / System.ltframework /'` ++ compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's/ -lc / System.ltframework /'` ++ finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's/ -lc / System.ltframework /'` + ;; + esac + +@@ -7523,8 +7855,8 @@ + esac + fi + # Time to change all our "foo.ltframework" stuff back to "-framework foo" +- compile_deplibs=`$ECHO "X $compile_deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` +- finalize_deplibs=`$ECHO "X $finalize_deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` ++ compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` ++ finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + ;; + esac + +@@ -7661,8 +7993,8 @@ + + if test -n "$libobjs" && test "$build_old_libs" = yes; then + # Transform all the library objects into standard objects. +- compile_command=`$ECHO "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` +- finalize_command=`$ECHO "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` ++ compile_command=`$ECHO "$compile_command" | $SP2NL | $SED "$lo2o" | $NL2SP` ++ finalize_command=`$ECHO "$finalize_command" | $SP2NL | $SED "$lo2o" | $NL2SP` + fi + + func_generate_dlsyms "$outputname" "@PROGRAM@" "no" +@@ -7674,15 +8006,15 @@ + + wrappers_required=yes + case $host in ++ *cegcc* | *mingw32ce*) ++ # Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway. ++ wrappers_required=no ++ ;; + *cygwin* | *mingw* ) + if test "$build_libtool_libs" != yes; then + wrappers_required=no + fi + ;; +- *cegcc) +- # Disable wrappers for cegcc, we are cross compiling anyway. +- wrappers_required=no +- ;; + *) + if test "$need_relink" = no || test "$build_libtool_libs" != yes; then + wrappers_required=no +@@ -7691,7 +8023,7 @@ + esac + if test "$wrappers_required" = no; then + # Replace the output file specification. +- compile_command=`$ECHO "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` ++ compile_command=`$ECHO "$compile_command" | $SED 's%@OUTPUT@%'"$output"'%g'` + link_command="$compile_command$compile_rpath" + + # We have no uninstalled library dependencies, so finalize right now. +@@ -7738,7 +8070,7 @@ + # We don't need to create a wrapper script. + link_command="$compile_var$compile_command$compile_rpath" + # Replace the output file specification. +- link_command=`$ECHO "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` ++ link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output"'%g'` + # Delete the old output file. + $opt_dry_run || $RM $output + # Link the executable and exit +@@ -7757,7 +8089,7 @@ + if test "$fast_install" != no; then + link_command="$finalize_var$compile_command$finalize_rpath" + if test "$fast_install" = yes; then +- relink_command=`$ECHO "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'` ++ relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'` + else + # fast_install is set to needless + relink_command= +@@ -7769,7 +8101,7 @@ + fi + + # Replace the output file specification. +- link_command=`$ECHO "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` ++ link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` + + # Delete the old output files. + $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname +@@ -7793,18 +8125,7 @@ + fi + done + relink_command="(cd `pwd`; $relink_command)" +- relink_command=`$ECHO "X$relink_command" | $Xsed -e "$sed_quote_subst"` +- fi +- +- # Quote $ECHO for shipping. +- if test "X$ECHO" = "X$SHELL $progpath --fallback-echo"; then +- case $progpath in +- [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $progpath --fallback-echo";; +- *) qecho="$SHELL `pwd`/$progpath --fallback-echo";; +- esac +- qecho=`$ECHO "X$qecho" | $Xsed -e "$sed_quote_subst"` +- else +- qecho=`$ECHO "X$ECHO" | $Xsed -e "$sed_quote_subst"` ++ relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` + fi + + # Only actually do things if not in dry run mode. +@@ -7925,7 +8246,7 @@ + done | sort | sort -uc >/dev/null 2>&1); then + : + else +- $ECHO "copying selected object files to avoid basename conflicts..." ++ echo "copying selected object files to avoid basename conflicts..." + gentop="$output_objdir/${outputname}x" + generated="$generated $gentop" + func_mkdir_p "$gentop" +@@ -8036,7 +8357,7 @@ + done + # Quote the link command for shipping. + relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" +- relink_command=`$ECHO "X$relink_command" | $Xsed -e "$sed_quote_subst"` ++ relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` + if test "$hardcode_automatic" = yes ; then + relink_command= + fi +@@ -8121,9 +8442,27 @@ + fi + $RM $output + # place dlname in correct position for cygwin ++ # In fact, it would be nice if we could use this code for all target ++ # systems that can't hard-code library paths into their executables ++ # and that have no shared library path variable independent of PATH, ++ # but it turns out we can't easily determine that from inspecting ++ # libtool variables, so we have to hard-code the OSs to which it ++ # applies here; at the moment, that means platforms that use the PE ++ # object format with DLL files. See the long comment at the top of ++ # tests/bindir.at for full details. + tdlname=$dlname + case $host,$output,$installed,$module,$dlname in +- *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;; ++ *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) ++ # If a -bindir argument was supplied, place the dll there. ++ if test "x$bindir" != x ; ++ then ++ func_relative_path "$install_libdir" "$bindir" ++ tdlname=$func_relative_path_result$dlname ++ else ++ # Otherwise fall back on heuristic. ++ tdlname=../bin/$dlname ++ fi ++ ;; + esac + $ECHO > $output "\ + # $outputname - a libtool library file +diff -Nur fontconfig-2.8.0-orig/Makefile.in fontconfig-2.8.0-config/Makefile.in +--- fontconfig-2.8.0-orig/Makefile.in 2009-11-18 15:49:39.000000000 -0800 ++++ fontconfig-2.8.0-config/Makefile.in 2012-01-06 13:29:54.044085733 -0800 +@@ -1,4 +1,4 @@ +-# Makefile.in generated by automake 1.11 from Makefile.am. ++# Makefile.in generated by automake 1.11.1 from Makefile.am. + # @configure_input@ + + # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +@@ -191,6 +191,7 @@ + EXEEXT_FOR_BUILD = @EXEEXT_FOR_BUILD@ + EXPAT_CFLAGS = @EXPAT_CFLAGS@ + EXPAT_LIBS = @EXPAT_LIBS@ ++FCPATH = @FCPATH@ + FC_ADD_FONTS = @FC_ADD_FONTS@ + FC_CACHEDIR = @FC_CACHEDIR@ + FC_DEFAULT_FONTS = @FC_DEFAULT_FONTS@ +@@ -239,9 +240,12 @@ + PACKAGE_NAME = @PACKAGE_NAME@ + PACKAGE_STRING = @PACKAGE_STRING@ + PACKAGE_TARNAME = @PACKAGE_TARNAME@ ++PACKAGE_URL = @PACKAGE_URL@ + PACKAGE_VERSION = @PACKAGE_VERSION@ + PATH_SEPARATOR = @PATH_SEPARATOR@ + PKG_CONFIG = @PKG_CONFIG@ ++PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ ++PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ + RANLIB = @RANLIB@ + SED = @SED@ + SET_MAKE = @SET_MAKE@ +@@ -274,6 +278,7 @@ + dvidir = @dvidir@ + exec_prefix = @exec_prefix@ + fc_cachedir = @fc_cachedir@ ++fcpath = @fcpath@ + ft_config = @ft_config@ + host = @host@ + host_alias = @host_alias@ +@@ -288,7 +293,6 @@ + libexecdir = @libexecdir@ + localedir = @localedir@ + localstatedir = @localstatedir@ +-lt_ECHO = @lt_ECHO@ + mandir = @mandir@ + mkdir_p = @mkdir_p@ + ms_librarian = @ms_librarian@ +@@ -444,7 +448,7 @@ + # (which will cause the Makefiles to be regenerated when you run `make'); + # (2) otherwise, pass the desired values on the `make' command line. + $(RECURSIVE_TARGETS): +- @failcom='exit 1'; \ ++ @fail= failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ +@@ -469,7 +473,7 @@ + fi; test -z "$$fail" + + $(RECURSIVE_CLEAN_TARGETS): +- @failcom='exit 1'; \ ++ @fail= failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ +@@ -633,7 +637,8 @@ + fi; \ + done + -test -n "$(am__skip_mode_fix)" \ +- || find "$(distdir)" -type d ! -perm -777 -exec chmod a+rwx {} \; -o \ ++ || find "$(distdir)" -type d ! -perm -755 \ ++ -exec chmod u+rwx,go+rx {} \; -o \ + ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ + ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ + ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ +@@ -677,17 +682,17 @@ + distcheck: dist + case '$(DIST_ARCHIVES)' in \ + *.tar.gz*) \ +- GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(am__untar) ;;\ ++ GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\ + *.tar.bz2*) \ +- bunzip2 -c $(distdir).tar.bz2 | $(am__untar) ;;\ ++ bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\ + *.tar.lzma*) \ +- unlzma -c $(distdir).tar.lzma | $(am__untar) ;;\ ++ lzma -dc $(distdir).tar.lzma | $(am__untar) ;;\ + *.tar.xz*) \ + xz -dc $(distdir).tar.xz | $(am__untar) ;;\ + *.tar.Z*) \ + uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ + *.shar.gz*) \ +- GZIP=$(GZIP_ENV) gunzip -c $(distdir).shar.gz | unshar ;;\ ++ GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\ + *.zip*) \ + unzip $(distdir).zip ;;\ + esac +diff -Nur fontconfig-2.8.0-orig/src/Makefile.am fontconfig-2.8.0-config/src/Makefile.am +--- fontconfig-2.8.0-orig/src/Makefile.am 2009-11-18 15:49:09.000000000 -0800 ++++ fontconfig-2.8.0-config/src/Makefile.am 2012-01-06 11:54:58.396927031 -0800 +@@ -30,7 +30,9 @@ + # gcc import library install/uninstall + + install-libtool-import-lib: ++if OS_WIN32_ENABLE_SHARED + $(INSTALL) .libs/libfontconfig.dll.a $(DESTDIR)$(libdir) ++endif + $(INSTALL) fontconfig.def $(DESTDIR)$(libdir)/fontconfig.def + + uninstall-libtool-import-lib: +@@ -75,7 +77,7 @@ + $(EXPAT_CFLAGS) \ + $(WARN_CFLAGS) \ + -DFC_CACHEDIR='"$(FC_CACHEDIR)"' \ +- -DFONTCONFIG_PATH='"$(CONFDIR)"' ++ -DFONTCONFIG_PATH='"$(FCPATH)"' + + EXTRA_DIST = makealias + +diff -Nur fontconfig-2.8.0-orig/src/Makefile.in fontconfig-2.8.0-config/src/Makefile.in +--- fontconfig-2.8.0-orig/src/Makefile.in 2009-11-18 15:49:39.000000000 -0800 ++++ fontconfig-2.8.0-config/src/Makefile.in 2012-01-06 13:29:53.940067448 -0800 +@@ -1,4 +1,4 @@ +-# Makefile.in generated by automake 1.11 from Makefile.am. ++# Makefile.in generated by automake 1.11.1 from Makefile.am. + # @configure_input@ + + # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +@@ -171,6 +171,7 @@ + EXEEXT_FOR_BUILD = @EXEEXT_FOR_BUILD@ + EXPAT_CFLAGS = @EXPAT_CFLAGS@ + EXPAT_LIBS = @EXPAT_LIBS@ ++FCPATH = @FCPATH@ + FC_ADD_FONTS = @FC_ADD_FONTS@ + FC_CACHEDIR = @FC_CACHEDIR@ + FC_DEFAULT_FONTS = @FC_DEFAULT_FONTS@ +@@ -219,9 +220,12 @@ + PACKAGE_NAME = @PACKAGE_NAME@ + PACKAGE_STRING = @PACKAGE_STRING@ + PACKAGE_TARNAME = @PACKAGE_TARNAME@ ++PACKAGE_URL = @PACKAGE_URL@ + PACKAGE_VERSION = @PACKAGE_VERSION@ + PATH_SEPARATOR = @PATH_SEPARATOR@ + PKG_CONFIG = @PKG_CONFIG@ ++PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ ++PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ + RANLIB = @RANLIB@ + SED = @SED@ + SET_MAKE = @SET_MAKE@ +@@ -254,6 +258,7 @@ + dvidir = @dvidir@ + exec_prefix = @exec_prefix@ + fc_cachedir = @fc_cachedir@ ++fcpath = @fcpath@ + ft_config = @ft_config@ + host = @host@ + host_alias = @host_alias@ +@@ -268,7 +273,6 @@ + libexecdir = @libexecdir@ + localedir = @localedir@ + localstatedir = @localstatedir@ +-lt_ECHO = @lt_ECHO@ + mandir = @mandir@ + mkdir_p = @mkdir_p@ + ms_librarian = @ms_librarian@ +@@ -299,7 +303,7 @@ + $(EXPAT_CFLAGS) \ + $(WARN_CFLAGS) \ + -DFC_CACHEDIR='"$(FC_CACHEDIR)"' \ +- -DFONTCONFIG_PATH='"$(CONFDIR)"' ++ -DFONTCONFIG_PATH='"$(FCPATH)"' + + EXTRA_DIST = makealias + noinst_HEADERS = fcint.h fcftint.h fcdeprecate.h +@@ -688,7 +692,7 @@ + # gcc import library install/uninstall + + @OS_WIN32_TRUE@install-libtool-import-lib: +-@OS_WIN32_TRUE@ $(INSTALL) .libs/libfontconfig.dll.a $(DESTDIR)$(libdir) ++@OS_WIN32_ENABLE_SHARED_TRUE@@OS_WIN32_TRUE@ $(INSTALL) .libs/libfontconfig.dll.a $(DESTDIR)$(libdir) + @OS_WIN32_TRUE@ $(INSTALL) fontconfig.def $(DESTDIR)$(libdir)/fontconfig.def + + @OS_WIN32_TRUE@uninstall-libtool-import-lib: +diff -Nur fontconfig-2.8.0-orig/test/Makefile.in fontconfig-2.8.0-config/test/Makefile.in +--- fontconfig-2.8.0-orig/test/Makefile.in 2009-11-18 15:49:39.000000000 -0800 ++++ fontconfig-2.8.0-config/test/Makefile.in 2012-01-06 13:29:53.984075182 -0800 +@@ -1,4 +1,4 @@ +-# Makefile.in generated by automake 1.11 from Makefile.am. ++# Makefile.in generated by automake 1.11.1 from Makefile.am. + # @configure_input@ + + # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +@@ -89,6 +89,7 @@ + EXEEXT_FOR_BUILD = @EXEEXT_FOR_BUILD@ + EXPAT_CFLAGS = @EXPAT_CFLAGS@ + EXPAT_LIBS = @EXPAT_LIBS@ ++FCPATH = @FCPATH@ + FC_ADD_FONTS = @FC_ADD_FONTS@ + FC_CACHEDIR = @FC_CACHEDIR@ + FC_DEFAULT_FONTS = @FC_DEFAULT_FONTS@ +@@ -137,9 +138,12 @@ + PACKAGE_NAME = @PACKAGE_NAME@ + PACKAGE_STRING = @PACKAGE_STRING@ + PACKAGE_TARNAME = @PACKAGE_TARNAME@ ++PACKAGE_URL = @PACKAGE_URL@ + PACKAGE_VERSION = @PACKAGE_VERSION@ + PATH_SEPARATOR = @PATH_SEPARATOR@ + PKG_CONFIG = @PKG_CONFIG@ ++PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ ++PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ + RANLIB = @RANLIB@ + SED = @SED@ + SET_MAKE = @SET_MAKE@ +@@ -172,6 +176,7 @@ + dvidir = @dvidir@ + exec_prefix = @exec_prefix@ + fc_cachedir = @fc_cachedir@ ++fcpath = @fcpath@ + ft_config = @ft_config@ + host = @host@ + host_alias = @host_alias@ +@@ -186,7 +191,6 @@ + libexecdir = @libexecdir@ + localedir = @localedir@ + localstatedir = @localstatedir@ +-lt_ECHO = @lt_ECHO@ + mandir = @mandir@ + mkdir_p = @mkdir_p@ + ms_librarian = @ms_librarian@ diff -Nru handbrake-0.9.9+dfsg/contrib/fontconfig/module.defs handbrake-0.9.9+ppa1/contrib/fontconfig/module.defs --- handbrake-0.9.9+dfsg/contrib/fontconfig/module.defs 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/contrib/fontconfig/module.defs 2012-11-15 18:54:16.000000000 +0000 @@ -0,0 +1,97 @@ +__deps__ := FREETYPE LIBXML2 LIBICONV +$(eval $(call import.MODULE.defs,FONTCONFIG,fontconfig,$(__deps__))) +$(eval $(call import.CONTRIB.defs,FONTCONFIG)) + +FONTCONFIG.FETCH.url = http://download.handbrake.fr/handbrake/contrib/fontconfig-2.8.0.tar.gz +FONTCONFIG.EXTRACT.tarbase = fontconfig-2.8.0 + +# +# Under MinGW: +# +# - A 'i386-ming32-gcc' $(FONTCONFIG.GCC.gcc) command will be available, +# and the '-arch ' argument should be omitted, as it will confuse this compiler. +# +# - The $(FONTCONFIG.GCC.archs) variable is not set. +# Therefore statically guess the target arch to be i386. +# +ifeq ($(BUILD.system),mingw) + FONTCONFIG.cc_archoption = + FONTCONFIG.config_archoption = --with-arch=i386 +else ifeq ($(BUILD.system),linux) + FONTCONFIG.cc_archoption = +else ifeq ($(BUILD.system),solaris) + FONTCONFIG.cc_archoption = +else + FONTCONFIG.cc_archoption = -arch $(FONTCONFIG.GCC.archs) + FONTCONFIG.config_archoption = --with-arch=$(FONTCONFIG.GCC.archs) +endif + +# +# Support cross-compiling: +# +# - Add '-arch ' to CC argument to avoid the need to put a -gcc +# trampoline script in the PATH, since fontconfig's configure looks for this when +# in cross-compile mode. If such a trampoline were used, it would just call "gcc -arch $@". +# +# - In the case of MinGW (on i386), a 'i386-ming32-gcc' command will be available, +# and the '-arch ' argument should be omitted, as it will confuse the compiler. +# +# The following line overrides the original line in /make/include/contrib.defs, +# but has the -arch argument added (and '$(1)' presubstituted for 'FONTCONFIG'). +# +FONTCONFIG.CONFIGURE.env.CC = CC="$(FONTCONFIG.GCC.gcc) $(FONTCONFIG.cc_archoption)" + +# +# Support cross-compiling: +# - Remove '-arch ' from *FLAGS variables, since fontconfig's configure script +# needs to be given the freedom to insert that flag as necessary, since there are +# some trampoline executables that need to be built in the native build architecture +# (without the -arch flag). +# +# The following lines override the original lines in /make/include/contrib.defs, +# but have '*archs' removed (and '$(1)' presubstituted for 'FONTCONFIG'). +# +ifeq (max,$(FONTCONFIG.GCC.g)) + ifeq (none,$(FONTCONFIG.GCC.O)) + FONTCONFIG.CONFIGURE.env.CFLAGS = CFLAGS="-I$(call fn.ABSOLUTE,$(CONTRIB.build/))include $(call fn.ARGS,FONTCONFIG.GCC,*sysroot *minver ?extra .g .O)" + FONTCONFIG.CONFIGURE.env.CXXFLAGS = CXXFLAGS="-I$(call fn.ABSOLUTE,$(CONTRIB.build/))include $(call fn.ARGS,FONTCONFIG.GCC,*sysroot *minver ?extra .g .O)" + else + FONTCONFIG.CONFIGURE.env.CFLAGS = CFLAGS="-I$(call fn.ABSOLUTE,$(CONTRIB.build/))include $(call fn.ARGS,FONTCONFIG.GCC,*sysroot *minver ?extra .g)" + FONTCONFIG.CONFIGURE.env.CXXFLAGS = CXXFLAGS="-I$(call fn.ABSOLUTE,$(CONTRIB.build/))include $(call fn.ARGS,FONTCONFIG.GCC,*sysroot *minver ?extra .g)" + endif +else + FONTCONFIG.CONFIGURE.env.CFLAGS = CFLAGS="-I$(call fn.ABSOLUTE,$(CONTRIB.build/))include $(call fn.ARGS,FONTCONFIG.GCC,*sysroot *minver ?extra)" + FONTCONFIG.CONFIGURE.env.CXXFLAGS = CXXFLAGS="-I$(call fn.ABSOLUTE,$(CONTRIB.build/))include $(call fn.ARGS,FONTCONFIG.GCC,*sysroot *minver ?extra)" +endif + +FONTCONFIG.CONFIGURE.env.CPPFLAGS = CPPFLAGS="-I$(call fn.ABSOLUTE,$(CONTRIB.build/))include $(call fn.ARGS,FONTCONFIG.GCC,*sysroot *minver ?extra)" +FONTCONFIG.CONFIGURE.env.LDFLAGS = LDFLAGS="-L$(call fn.ABSOLUTE,$(CONTRIB.build/))lib $(call fn.ARGS,FONTCONFIG.GCC,*sysroot *minver)" + +# +# Force use of libxml2 instead of expat with --enable-libxml2. +# +# Tell configure where to find our (cross-compiled) versions of freetype and libxml2. +# +# Support cross-compiling: +# - Add --with-arch argument since fontconfig's configure isn't smart enough +# to infer it from the --host argument +# +FONTCONFIG.CONFIGURE.extra = \ + --enable-libxml2 \ + --with-freetype-config=$(call fn.ABSOLUTE,$(CONTRIB.build/)bin/freetype-config) \ + $(FONTCONFIG.config_archoption) --disable-silent-rules + +ifeq (darwin,$(BUILD.system)) +FONTCONFIG.CONFIGURE.extra += \ + LIBXML2_LIBS="-L$(call fn.ABSOLUTE,$(CONTRIB.build/))lib -lxml2" \ + LIBXML2_CFLAGS="-I$(call fn.ABSOLUTE,$(CONTRIB.build/))include/libxml2" \ + --with-fcpath=/usr/X11/lib/X11/fontconfig \ + --with-cache-dir=/usr/X11/var/cache/fontconfig +else ifeq (linux,$(BUILD.system)) +FONTCONFIG.CONFIGURE.extra += \ + --with-fcpath=/etc/fonts \ + --with-cache-dir=/var/cache/fontconfig +endif + +# disable fc-cache test during install phase +FONTCONFIG.INSTALL.extra = RUN_FC_CACHE_TEST=false diff -Nru handbrake-0.9.9+dfsg/contrib/fontconfig/module.rules handbrake-0.9.9+ppa1/contrib/fontconfig/module.rules --- handbrake-0.9.9+dfsg/contrib/fontconfig/module.rules 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/contrib/fontconfig/module.rules 2010-09-28 22:10:49.000000000 +0000 @@ -0,0 +1,2 @@ +$(eval $(call import.MODULE.rules,FONTCONFIG)) +$(eval $(call import.CONTRIB.rules,FONTCONFIG)) diff -Nru handbrake-0.9.9+dfsg/contrib/freetype/module.defs handbrake-0.9.9+ppa1/contrib/freetype/module.defs --- handbrake-0.9.9+dfsg/contrib/freetype/module.defs 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/contrib/freetype/module.defs 2012-10-04 16:54:02.000000000 +0000 @@ -0,0 +1,6 @@ +__deps__ := BZIP +$(eval $(call import.MODULE.defs,FREETYPE,freetype,$(__deps__))) +$(eval $(call import.CONTRIB.defs,FREETYPE)) + +FREETYPE.FETCH.url = http://download.handbrake.fr/handbrake/contrib/freetype-2.4.7.tar.bz2 + diff -Nru handbrake-0.9.9+dfsg/contrib/freetype/module.rules handbrake-0.9.9+ppa1/contrib/freetype/module.rules --- handbrake-0.9.9+dfsg/contrib/freetype/module.rules 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/contrib/freetype/module.rules 2010-09-28 22:10:49.000000000 +0000 @@ -0,0 +1,2 @@ +$(eval $(call import.MODULE.rules,FREETYPE)) +$(eval $(call import.CONTRIB.rules,FREETYPE)) diff -Nru handbrake-0.9.9+dfsg/contrib/freetype/P01-solaris-use-gmake.patch handbrake-0.9.9+ppa1/contrib/freetype/P01-solaris-use-gmake.patch --- handbrake-0.9.9+dfsg/contrib/freetype/P01-solaris-use-gmake.patch 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/contrib/freetype/P01-solaris-use-gmake.patch 2012-11-15 18:39:56.000000000 +0000 @@ -0,0 +1,25 @@ +From 6017133ae056c3abcd70aac6873adf0709f5f486 Mon Sep 17 00:00:00 2001 +From: Sean McGovern +Date: Sun, 28 Oct 2012 23:26:15 -0400 +Subject: [PATCH] build: use 'gmake' instead of 'make' + +--- + configure | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/configure b/configure +index b397556..cb125e1 100755 +--- a/configure ++++ b/configure +@@ -16,7 +16,7 @@ + rm -f config.mk builds/unix/unix-def.mk builds/unix/unix-cc.mk + + if test "x$GNUMAKE" = x; then +- GNUMAKE=make ++ GNUMAKE=gmake + fi + + if test -z "`$GNUMAKE -v 2>/dev/null | grep GNU`"; then +-- +1.7.12 + diff -Nru handbrake-0.9.9+dfsg/contrib/fribidi/A00-disable-tests.patch handbrake-0.9.9+ppa1/contrib/fribidi/A00-disable-tests.patch --- handbrake-0.9.9+dfsg/contrib/fribidi/A00-disable-tests.patch 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/contrib/fribidi/A00-disable-tests.patch 2011-10-21 18:24:43.000000000 +0000 @@ -0,0 +1,11 @@ +diff -Naur fribidi-0.19.2.orig/bin/Makefile.am fribidi-0.19.2/bin/Makefile.am +--- fribidi-0.19.2.orig/bin/Makefile.am 2005-06-07 01:39:14.000000000 -0700 ++++ fribidi-0.19.2/bin/Makefile.am 2011-10-20 10:19:14.380722654 -0700 +@@ -1,6 +1,6 @@ + bin_PROGRAMS = fribidi + +-noinst_PROGRAMS = fribidi-benchmark fribidi-bidi-types fribidi-caprtl2utf8 ++noinst_PROGRAMS = fribidi-bidi-types fribidi-caprtl2utf8 + + getopt_SOURCES = getopt.c getopt1.c getopt_int.h getopt.h gettext.h + diff -Nru handbrake-0.9.9+dfsg/contrib/fribidi/module.defs handbrake-0.9.9+ppa1/contrib/fribidi/module.defs --- handbrake-0.9.9+dfsg/contrib/fribidi/module.defs 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/contrib/fribidi/module.defs 2011-10-21 18:24:43.000000000 +0000 @@ -0,0 +1,6 @@ +$(eval $(call import.MODULE.defs,FRIBIDI,fribidi)) +$(eval $(call import.CONTRIB.defs,FRIBIDI)) + +FRIBIDI.FETCH.url = http://download.handbrake.fr/handbrake/contrib/fribidi-0.19.2.tar.gz + +FRIBIDI.CONFIGURE.bootstrap = ./bootstrap; diff -Nru handbrake-0.9.9+dfsg/contrib/fribidi/module.rules handbrake-0.9.9+ppa1/contrib/fribidi/module.rules --- handbrake-0.9.9+dfsg/contrib/fribidi/module.rules 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/contrib/fribidi/module.rules 2011-10-21 18:24:43.000000000 +0000 @@ -0,0 +1,2 @@ +$(eval $(call import.MODULE.rules,FRIBIDI)) +$(eval $(call import.CONTRIB.rules,FRIBIDI)) diff -Nru handbrake-0.9.9+dfsg/contrib/fribidi/P00-mingw-static-lib.patch handbrake-0.9.9+ppa1/contrib/fribidi/P00-mingw-static-lib.patch --- handbrake-0.9.9+dfsg/contrib/fribidi/P00-mingw-static-lib.patch 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/contrib/fribidi/P00-mingw-static-lib.patch 2011-10-21 18:24:43.000000000 +0000 @@ -0,0 +1,11 @@ +--- fribidi-0.19.2.orig/lib/fribidi-common.h 2007-04-05 09:13:24.000000000 -0700 ++++ fribidi-0.19.2/lib/fribidi-common.h 2011-10-20 11:00:21.874917516 -0700 +@@ -54,7 +54,7 @@ + /* FRIBIDI_ENTRY is a macro used to declare library entry points. */ + #ifndef FRIBIDI_ENTRY + # if (defined(WIN32)) || (defined(_WIN32_WCE)) +-# define FRIBIDI_ENTRY __declspec(dllimport) ++# define FRIBIDI_ENTRY + # else /* !WIN32 */ + # define FRIBIDI_ENTRY /* empty */ + # endif /* !WIN32 */ diff -Nru handbrake-0.9.9+dfsg/contrib/fribidi/P01-darwin-no-glib.patch handbrake-0.9.9+ppa1/contrib/fribidi/P01-darwin-no-glib.patch --- handbrake-0.9.9+dfsg/contrib/fribidi/P01-darwin-no-glib.patch 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/contrib/fribidi/P01-darwin-no-glib.patch 2011-10-21 18:24:43.000000000 +0000 @@ -0,0 +1,24 @@ +diff -Naur fribidi-0.19.2.orig/configure.ac fribidi-0.19.2/configure.ac +--- fribidi-0.19.2.orig/configure.ac 2009-03-26 15:37:29.000000000 -0700 ++++ fribidi-0.19.2/configure.ac 2011-10-20 14:15:40.000000000 -0700 +@@ -172,18 +172,8 @@ + GLIB_MINVERSION=2.4 + GLIB_LIBS= + GLIB_CFLAGS= +-if test x$with_glib = xyes; then +- PKG_CHECK_MODULES(GLIB,$GLIB_PACKAGE >= $GLIB_MINVERSION) +- FRIBIDI_USE_GLIB=1 +-else +-if test x$with_glib = xno; then +- FRIBIDI_USE_GLIB=0 +-else +- PKG_CHECK_MODULES(GLIB,$GLIB_PACKAGE >= $GLIB_MINVERSION, +- FRIBIDI_USE_GLIB=1, +- FRIBIDI_USE_GLIB=0) +-fi +-fi ++FRIBIDI_USE_GLIB=0 ++ + if test x$FRIBIDI_USE_GLIB = x0; then + GLIB_PACKAGE= + fi diff -Nru handbrake-0.9.9+dfsg/contrib/lame/module.defs handbrake-0.9.9+ppa1/contrib/lame/module.defs --- handbrake-0.9.9+dfsg/contrib/lame/module.defs 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/contrib/lame/module.defs 2011-02-04 19:54:10.000000000 +0000 @@ -0,0 +1,5 @@ +$(eval $(call import.MODULE.defs,LAME,lame)) +$(eval $(call import.CONTRIB.defs,LAME)) + +LAME.FETCH.url = http://download.handbrake.fr/handbrake/contrib/lame-3.98.tar.gz +LAME.EXTRACT.tarbase = lame diff -Nru handbrake-0.9.9+dfsg/contrib/lame/module.rules handbrake-0.9.9+ppa1/contrib/lame/module.rules --- handbrake-0.9.9+dfsg/contrib/lame/module.rules 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/contrib/lame/module.rules 2009-03-01 17:28:24.000000000 +0000 @@ -0,0 +1,2 @@ +$(eval $(call import.MODULE.rules,LAME)) +$(eval $(call import.CONTRIB.rules,LAME)) diff -Nru handbrake-0.9.9+dfsg/contrib/lame/P00-darwin-xmmintrin.patch handbrake-0.9.9+ppa1/contrib/lame/P00-darwin-xmmintrin.patch --- handbrake-0.9.9+dfsg/contrib/lame/P00-darwin-xmmintrin.patch 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/contrib/lame/P00-darwin-xmmintrin.patch 2009-03-01 17:03:11.000000000 +0000 @@ -0,0 +1,28 @@ +diff -Naur lame.orig/configure lame/configure +--- lame.orig/configure 2008-06-29 17:40:05.000000000 -0400 ++++ lame/configure 2008-10-14 05:01:29.000000000 -0400 +@@ -21031,7 +21031,14 @@ + + + +- ++case $host_cpu in ++powerpc*) ++ check_xmmintrin= ++ ;; ++*) ++ check_xmmintrin="xmmintrin.h" ++ ;; ++esac + + for ac_header in \ + errno.h \ +@@ -21042,7 +21049,7 @@ + sys/soundcard.h \ + sys/time.h \ + unistd.h \ +- xmmintrin.h \ ++ $check_xmmintrin \ + linux/soundcard.h + do + as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` diff -Nru handbrake-0.9.9+dfsg/contrib/libass/module.defs handbrake-0.9.9+ppa1/contrib/libass/module.defs --- handbrake-0.9.9+dfsg/contrib/libass/module.defs 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/contrib/libass/module.defs 2012-07-16 18:07:15.000000000 +0000 @@ -0,0 +1,20 @@ +__deps__ := FONTCONFIG FREETYPE FRIBIDI +$(eval $(call import.MODULE.defs,LIBASS,libass,$(__deps__))) +$(eval $(call import.CONTRIB.defs,LIBASS)) + +LIBASS.FETCH.url = http://download.handbrake.fr/handbrake/contrib/libass-0.10.0-1.tar.gz + +# Disable as many external dependencies as I can get away with +# and tell configure where to find our version of freetype +LIBASS.CONFIGURE.extra = \ + --disable-png --disable-enca --disable-harfbuzz \ + FREETYPE_LIBS="-L$(call fn.ABSOLUTE,$(CONTRIB.build/))lib -lfreetype" \ + FREETYPE_CFLAGS="-I$(call fn.ABSOLUTE,$(CONTRIB.build/))include/freetype2" \ + FONTCONFIG_LIBS="-L$(call fn.ABSOLUTE,$(CONTRIB.build/))lib -lfontconfig" \ + FONTCONFIG_CFLAGS="-I$(call fn.ABSOLUTE,$(CONTRIB.build/))include" + +ifneq ($(BUILD.system),linux) +LIBASS.CONFIGURE.extra += \ + FRIBIDI_LIBS="-L$(call fn.ABSOLUTE,$(CONTRIB.build/))lib -lfribidi" \ + FRIBIDI_CFLAGS="-I$(call fn.ABSOLUTE,$(CONTRIB.build/))include" +endif diff -Nru handbrake-0.9.9+dfsg/contrib/libass/module.rules handbrake-0.9.9+ppa1/contrib/libass/module.rules --- handbrake-0.9.9+dfsg/contrib/libass/module.rules 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/contrib/libass/module.rules 2010-09-28 22:10:49.000000000 +0000 @@ -0,0 +1,2 @@ +$(eval $(call import.MODULE.rules,LIBASS)) +$(eval $(call import.CONTRIB.rules,LIBASS)) diff -Nru handbrake-0.9.9+dfsg/contrib/libbluray/A00-automake.patch handbrake-0.9.9+ppa1/contrib/libbluray/A00-automake.patch --- handbrake-0.9.9+dfsg/contrib/libbluray/A00-automake.patch 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/contrib/libbluray/A00-automake.patch 2013-01-29 05:06:25.000000000 +0000 @@ -0,0 +1,12 @@ +diff -Naur libbluray-0.2.3.orig/configure.ac libbluray-0.2.3/configure.ac +--- libbluray-0.2.3.orig/configure.ac 2012-08-17 07:27:32.000000000 -0400 ++++ libbluray-0.2.3/configure.ac 2013-01-28 23:52:04.000000000 -0500 +@@ -22,7 +22,7 @@ + AC_CONFIG_MACRO_DIR([m4]) + AC_CANONICAL_SYSTEM + AM_INIT_AUTOMAKE([foreign tar-ustar]) +-AM_CONFIG_HEADER(config.h) ++AC_CONFIG_HEADER(config.h) + + case "${host_os}" in + "") diff -Nru handbrake-0.9.9+dfsg/contrib/libbluray/A01-filter-dup.patch handbrake-0.9.9+ppa1/contrib/libbluray/A01-filter-dup.patch --- handbrake-0.9.9+dfsg/contrib/libbluray/A01-filter-dup.patch 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/contrib/libbluray/A01-filter-dup.patch 2013-04-30 22:56:34.000000000 +0000 @@ -0,0 +1,80 @@ +diff --git a/src/libbluray/bdnav/navigation.c b/src/libbluray/bdnav/navigation.c +index c8dc307..26d0000 100644 +--- a/src/libbluray/bdnav/navigation.c ++++ b/src/libbluray/bdnav/navigation.c +@@ -32,9 +32,25 @@ + #include + #include + ++static int _stream_cmp(MPLS_STREAM *a, MPLS_STREAM *b) ++{ ++ if (a->stream_type == b->stream_type && ++ a->coding_type == b->coding_type && ++ a->pid == b->pid && ++ a->subpath_id == b->subpath_id && ++ a->subclip_id == b->subclip_id && ++ a->format == b->format && ++ a->rate == b->rate && ++ a->char_code == b->char_code && ++ memcmp(a->lang, b->lang, 4) == 0) { ++ return 1; ++ } ++ return 0; ++} ++ + static int _filter_dup(MPLS_PL *pl_list[], unsigned count, MPLS_PL *pl) + { +- unsigned ii, jj; ++ unsigned ii, jj, kk; + + for (ii = 0; ii < count; ii++) { + if (pl->list_count != pl_list[ii]->list_count) { +@@ -54,7 +70,48 @@ static int _filter_dup(MPLS_PL *pl_list[], unsigned count, MPLS_PL *pl) + pi1->out_time != pi2->out_time) { + break; + } ++ if (pi1->stn.num_video != pi2->stn.num_video || ++ pi1->stn.num_audio != pi2->stn.num_audio || ++ pi1->stn.num_pg != pi2->stn.num_pg || ++ pi1->stn.num_ig != pi2->stn.num_ig || ++ pi1->stn.num_secondary_audio != pi2->stn.num_secondary_audio || ++ pi1->stn.num_secondary_video != pi2->stn.num_secondary_video) { ++ break; ++ } ++ for (kk = 0; kk < pi1->stn.num_video; kk++) { ++ if (!_stream_cmp(&pi1->stn.video[kk], &pi2->stn.video[kk])) { ++ goto next; ++ } ++ } ++ for (kk = 0; kk < pi1->stn.num_audio; kk++) { ++ if (!_stream_cmp(&pi1->stn.audio[kk], &pi2->stn.audio[kk])) { ++ goto next; ++ } ++ } ++ for (kk = 0; kk < pi1->stn.num_pg; kk++) { ++ if (!_stream_cmp(&pi1->stn.pg[kk], &pi2->stn.pg[kk])) { ++ goto next; ++ } ++ } ++ for (kk = 0; kk < pi1->stn.num_ig; kk++) { ++ if (!_stream_cmp(&pi1->stn.ig[kk], &pi2->stn.ig[kk])) { ++ goto next; ++ } ++ } ++ for (kk = 0; kk < pi1->stn.num_secondary_audio; kk++) { ++ if (!_stream_cmp(&pi1->stn.secondary_audio[kk], ++ &pi2->stn.secondary_audio[kk])) { ++ goto next; ++ } ++ } ++ for (kk = 0; kk < pi1->stn.num_secondary_video; kk++) { ++ if (!_stream_cmp(&pi1->stn.secondary_video[kk], ++ &pi2->stn.secondary_video[kk])) { ++ goto next; ++ } ++ } + } ++next: + if (jj != pl->list_count) { + continue; + } diff -Nru handbrake-0.9.9+dfsg/contrib/libbluray/module.defs handbrake-0.9.9+ppa1/contrib/libbluray/module.defs --- handbrake-0.9.9+dfsg/contrib/libbluray/module.defs 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/contrib/libbluray/module.defs 2012-10-20 23:16:47.000000000 +0000 @@ -0,0 +1,18 @@ +$(eval $(call import.MODULE.defs,LIBBLURAY,libbluray,LIBXML2)) +$(eval $(call import.CONTRIB.defs,LIBBLURAY)) + +LIBBLURAY.FETCH.url = http://download.handbrake.fr/handbrake/contrib/libbluray-0.2.3.tar.bz2 + +LIBBLURAY.CONFIGURE.bootstrap = rm -fr aclocal.m4 autom4te.cache; ./bootstrap; + +ifneq (max,$(LIBBLURAY.GCC.g)) + LIBBLURAY.CONFIGURE.extra += --disable-debug +else + LIBBLURAY.CONFIGURE.extra += --enable-debug +endif + +ifeq (none,$(LIBBLURAY.GCC.O)) + LIBBLURAY.CONFIGURE.extra += --disable-optimizations +endif + +LIBBLURAY.CONFIGURE.extra += --disable-examples diff -Nru handbrake-0.9.9+dfsg/contrib/libbluray/module.rules handbrake-0.9.9+ppa1/contrib/libbluray/module.rules --- handbrake-0.9.9+dfsg/contrib/libbluray/module.rules 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/contrib/libbluray/module.rules 2010-09-08 16:51:59.000000000 +0000 @@ -0,0 +1,2 @@ +$(eval $(call import.MODULE.rules,LIBBLURAY)) +$(eval $(call import.CONTRIB.rules,LIBBLURAY)) diff -Nru handbrake-0.9.9+dfsg/contrib/libdvdnav/A00-log-stderr.patch handbrake-0.9.9+ppa1/contrib/libdvdnav/A00-log-stderr.patch --- handbrake-0.9.9+dfsg/contrib/libdvdnav/A00-log-stderr.patch 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/contrib/libdvdnav/A00-log-stderr.patch 2009-04-27 15:18:05.000000000 +0000 @@ -0,0 +1,12 @@ +diff -Naur libdvdnav.orig/src/dvdnav_internal.h libdvdnav/src/dvdnav_internal.h +--- libdvdnav.orig/src/dvdnav_internal.h 2008-10-03 13:11:43.000000000 -0700 ++++ libdvdnav/src/dvdnav_internal.h 2009-04-24 14:23:04.000000000 -0700 +@@ -60,7 +60,7 @@ + #endif /* WIN32 */ + + /* where should libdvdnav write its messages (stdout/stderr) */ +-#define MSG_OUT stdout ++#define MSG_OUT stderr + + /* Maximum length of an error string */ + #define MAX_ERR_LEN 255 diff -Nru handbrake-0.9.9+dfsg/contrib/libdvdnav/A01-program-info.patch handbrake-0.9.9+ppa1/contrib/libdvdnav/A01-program-info.patch --- handbrake-0.9.9+dfsg/contrib/libdvdnav/A01-program-info.patch 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/contrib/libdvdnav/A01-program-info.patch 2009-05-01 17:27:51.000000000 +0000 @@ -0,0 +1,214 @@ +diff -Naur libdvdnav.orig/src/dvdnav/dvdnav.h libdvdnav/src/dvdnav/dvdnav.h +--- libdvdnav.orig/src/dvdnav/dvdnav.h 2009-03-13 18:28:22.000000000 -0700 ++++ libdvdnav/src/dvdnav/dvdnav.h 2009-04-30 10:56:29.000000000 -0700 +@@ -279,6 +279,11 @@ + dvdnav_status_t dvdnav_part_play(dvdnav_t *self, int32_t title, int32_t part); + + /* ++ * Plays the specified title, starting from the specified program ++ */ ++dvdnav_status_t dvdnav_program_play(dvdnav_t *this, int32_t title, int32_t pgcn, int32_t pgn); ++ ++/* + * Stores in *times an array (that the application *must* free) of + * dvdtimes corresponding to the chapter times for the chosen title. + * *duration will have the duration of the title +@@ -320,6 +325,13 @@ + int32_t *part); + + /* ++ * Return the title number, pgcn and pgn currently being played. ++ * A title of 0 indicates, we are in a menu. ++ */ ++dvdnav_status_t dvdnav_current_title_program(dvdnav_t *self, int32_t *title, ++ int32_t *pgcn, int32_t *pgn); ++ ++/* + * Return the current position (in blocks) within the current + * title and the length (in blocks) of said title. + * +diff -Naur libdvdnav.orig/src/navigation.c libdvdnav/src/navigation.c +--- libdvdnav.orig/src/navigation.c 2009-01-08 14:57:11.000000000 -0800 ++++ libdvdnav/src/navigation.c 2009-04-30 10:55:47.000000000 -0700 +@@ -122,10 +122,90 @@ + return DVDNAV_STATUS_ERR; + } + ++dvdnav_status_t dvdnav_current_title_program(dvdnav_t *this, int32_t *title, int32_t *pgcn, int32_t *pgn) { ++ int32_t retval; ++ int32_t part; ++ ++ pthread_mutex_lock(&this->vm_lock); ++ if (!this->vm->vtsi || !this->vm->vmgi) { ++ printerr("Bad VM state."); ++ pthread_mutex_unlock(&this->vm_lock); ++ return DVDNAV_STATUS_ERR; ++ } ++ if (!this->started) { ++ printerr("Virtual DVD machine not started."); ++ pthread_mutex_unlock(&this->vm_lock); ++ return DVDNAV_STATUS_ERR; ++ } ++ if (!this->vm->state.pgc) { ++ printerr("No current PGC."); ++ pthread_mutex_unlock(&this->vm_lock); ++ return DVDNAV_STATUS_ERR; ++ } ++ if ( (this->vm->state.domain == VTSM_DOMAIN) ++ || (this->vm->state.domain == VMGM_DOMAIN) ) { ++ /* Get current Menu ID: into *part. */ ++ if(! vm_get_current_menu(this->vm, &part)) { ++ pthread_mutex_unlock(&this->vm_lock); ++ return DVDNAV_STATUS_ERR; ++ } ++ if (part > -1) { ++ *title = 0; ++ *pgcn = this->vm->state.pgcN; ++ *pgn = this->vm->state.pgN; ++ pthread_mutex_unlock(&this->vm_lock); ++ return DVDNAV_STATUS_OK; ++ } ++ } ++ if (this->vm->state.domain == VTS_DOMAIN) { ++ retval = vm_get_current_title_part(this->vm, title, &part); ++ *pgcn = this->vm->state.pgcN; ++ *pgn = this->vm->state.pgN; ++ pthread_mutex_unlock(&this->vm_lock); ++ return retval ? DVDNAV_STATUS_OK : DVDNAV_STATUS_ERR; ++ } ++ printerr("Not in a title or menu."); ++ pthread_mutex_unlock(&this->vm_lock); ++ return DVDNAV_STATUS_ERR; ++} ++ + dvdnav_status_t dvdnav_title_play(dvdnav_t *this, int32_t title) { + return dvdnav_part_play(this, title, 1); + } + ++dvdnav_status_t dvdnav_program_play(dvdnav_t *this, int32_t title, int32_t pgcn, int32_t pgn) { ++ int32_t retval; ++ ++ pthread_mutex_lock(&this->vm_lock); ++ if (!this->vm->vmgi) { ++ printerr("Bad VM state."); ++ pthread_mutex_unlock(&this->vm_lock); ++ return DVDNAV_STATUS_ERR; ++ } ++ if (!this->started) { ++ /* don't report an error but be nice */ ++ vm_start(this->vm); ++ this->started = 1; ++ } ++ if (!this->vm->state.pgc) { ++ printerr("No current PGC."); ++ pthread_mutex_unlock(&this->vm_lock); ++ return DVDNAV_STATUS_ERR; ++ } ++ if((title < 1) || (title > this->vm->vmgi->tt_srpt->nr_of_srpts)) { ++ printerr("Title out of range."); ++ pthread_mutex_unlock(&this->vm_lock); ++ return DVDNAV_STATUS_ERR; ++ } ++ ++ retval = vm_jump_title_program(this->vm, title, pgcn, pgn); ++ if (retval) ++ this->vm->hop_channel++; ++ pthread_mutex_unlock(&this->vm_lock); ++ ++ return retval ? DVDNAV_STATUS_OK : DVDNAV_STATUS_ERR; ++} ++ + dvdnav_status_t dvdnav_part_play(dvdnav_t *this, int32_t title, int32_t part) { + int32_t retval; + +diff -Naur libdvdnav.orig/src/vm/vm.c libdvdnav/src/vm/vm.c +--- libdvdnav.orig/src/vm/vm.c 2009-03-13 18:28:22.000000000 -0700 ++++ libdvdnav/src/vm/vm.c 2009-04-30 11:07:35.000000000 -0700 +@@ -83,6 +83,8 @@ + static int set_PTT(vm_t *vm, int tt, int ptt); + static int set_VTS_TT(vm_t *vm, int vtsN, int vts_ttn); + static int set_VTS_PTT(vm_t *vm, int vtsN, int vts_ttn, int part); ++static int set_PROG(vm_t *vm, int tt, int pgcn, int pgn); ++static int set_VTS_PROG(vm_t *vm, int vtsN, int vts_ttn, int pgcn, int pgn); + static int set_FP_PGC(vm_t *vm); + static int set_MENU(vm_t *vm, int menu); + static int set_PGCN(vm_t *vm, int pgcN); +@@ -516,6 +518,24 @@ + return 1; + } + ++int vm_jump_title_program(vm_t *vm, int title, int pgcn, int pgn) { ++ link_t link; ++ ++ if(!set_PROG(vm, title, pgcn, pgn)) ++ return 0; ++ /* Some DVDs do not want us to jump directly into a title and have ++ * PGC pre commands taking us back to some menu. Since we do not like that, ++ * we do not execute PGC pre commands that would do a jump. */ ++ /* process_command(vm, play_PGC_PG(vm, (vm->state).pgN)); */ ++ link = play_PGC_PG(vm, (vm->state).pgN); ++ if (link.command != PlayThis) ++ /* jump occured -> ignore it and play the PG anyway */ ++ process_command(vm, play_PG(vm)); ++ else ++ process_command(vm, link); ++ return 1; ++} ++ + int vm_jump_title_part(vm_t *vm, int title, int part) { + link_t link; + +@@ -1644,6 +1664,42 @@ + return res; + } + ++static int set_PROG(vm_t *vm, int tt, int pgcn, int pgn) { ++ assert(tt <= vm->vmgi->tt_srpt->nr_of_srpts); ++ return set_VTS_PROG(vm, vm->vmgi->tt_srpt->title[tt - 1].title_set_nr, ++ vm->vmgi->tt_srpt->title[tt - 1].vts_ttn, pgcn, pgn); ++} ++ ++static int set_VTS_PROG(vm_t *vm, int vtsN, int vts_ttn, int pgcn, int pgn) { ++ int pgcN, pgN, res, title, part; ++ ++ (vm->state).domain = VTS_DOMAIN; ++ ++ if (vtsN != (vm->state).vtsN) ++ if (!ifoOpenNewVTSI(vm, vm->dvd, vtsN)) /* Also sets (vm->state).vtsN */ ++ return 0; ++ ++ if ((vts_ttn < 1) || (vts_ttn > vm->vtsi->vts_ptt_srpt->nr_of_srpts)) { ++ return 0; ++ } ++ ++ pgcN = pgcn; ++ pgN = pgn; ++ ++ (vm->state).TT_PGCN_REG = pgcN; ++ (vm->state).TTN_REG = get_TT(vm, vtsN, vts_ttn); ++ assert( (vm->state.TTN_REG) != 0 ); ++ (vm->state).VTS_TTN_REG = vts_ttn; ++ (vm->state).vtsN = vtsN; /* Not sure about this one. We can get to it easily from TTN_REG */ ++ /* Any other registers? */ ++ ++ res = set_PGCN(vm, pgcN); /* This clobber's state.pgN (sets it to 1), but we don't want clobbering here. */ ++ (vm->state).pgN = pgN; ++ vm_get_current_title_part(vm, &title, &part); ++ (vm->state).PTTN_REG = part; ++ return res; ++} ++ + static int set_FP_PGC(vm_t *vm) { + (vm->state).domain = FP_DOMAIN; + if (!vm->vmgi->first_play_pgc) { +diff -Naur libdvdnav.orig/src/vm/vm.h libdvdnav/src/vm/vm.h +--- libdvdnav.orig/src/vm/vm.h 2009-03-13 18:28:22.000000000 -0700 ++++ libdvdnav/src/vm/vm.h 2009-04-30 10:57:02.000000000 -0700 +@@ -139,6 +139,7 @@ + int vm_jump_pg(vm_t *vm, int pg); + int vm_jump_cell_block(vm_t *vm, int cell, int block); + int vm_jump_title_part(vm_t *vm, int title, int part); ++int vm_jump_title_program(vm_t *vm, int title, int pgcn, int pgn); + int vm_jump_top_pg(vm_t *vm); + int vm_jump_next_pg(vm_t *vm); + int vm_jump_prev_pg(vm_t *vm); diff -Nru handbrake-0.9.9+dfsg/contrib/libdvdnav/A02-mult-pgc.patch handbrake-0.9.9+ppa1/contrib/libdvdnav/A02-mult-pgc.patch --- handbrake-0.9.9+dfsg/contrib/libdvdnav/A02-mult-pgc.patch 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/contrib/libdvdnav/A02-mult-pgc.patch 2009-05-16 07:00:02.000000000 +0000 @@ -0,0 +1,22 @@ +# the bit tested here does not indicate 'random or shuffle' - it only says +# that the title uses multiple PGCs. Since libdvdnav mostly deals correctly +# with mult PGC titles (modulo some weirdness when seeking) we need the +# state to get set correctly. +--- libdvdnav/src/vm/vm.c.orig 2009-05-13 20:44:12.000000000 -0700 ++++ libdvdnav/src/vm/vm.c 2009-05-13 20:46:02.000000000 -0700 +@@ -1758,14 +1758,10 @@ + if((vm->state).TTN_REG > vm->vmgi->tt_srpt->nr_of_srpts) + return 0; /* ?? */ + pb_ty = &vm->vmgi->tt_srpt->title[(vm->state).TTN_REG - 1].pb_ty; +- if(pb_ty->multi_or_random_pgc_title == /* One_Sequential_PGC_Title */ 0) { ++ + int dummy, part; + vm_get_current_title_part(vm, &dummy, &part); + (vm->state).PTTN_REG = part; +- } else { +- /* FIXME: Handle RANDOM or SHUFFLE titles. */ +- fprintf(MSG_OUT, "libdvdnav: RANDOM or SHUFFLE titles are NOT handled yet.\n"); +- } + } + return 1; + } diff -Nru handbrake-0.9.9+dfsg/contrib/libdvdnav/A03-quiet.patch handbrake-0.9.9+ppa1/contrib/libdvdnav/A03-quiet.patch --- handbrake-0.9.9+dfsg/contrib/libdvdnav/A03-quiet.patch 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/contrib/libdvdnav/A03-quiet.patch 2009-06-02 21:05:12.000000000 +0000 @@ -0,0 +1,21 @@ +diff -Naur libdvdnav.orig/src/vm/vm.c libdvdnav/src/vm/vm.c +--- libdvdnav.orig/src/vm/vm.c 2009-03-13 18:28:22.000000000 -0700 ++++ libdvdnav/src/vm/vm.c 2009-06-02 13:50:06.000000000 -0700 +@@ -354,8 +354,6 @@ + fprintf(MSG_OUT, "libdvdnav: vm: failed to open/read the DVD\n"); + return 0; + } +- dvd_read_name(vm->dvd_name, vm->dvd_serial, dvdroot); +- vm->map = remap_loadmap(vm->dvd_name); + vm->vmgi = ifoOpenVMGI(vm->dvd); + if(!vm->vmgi) { + fprintf(MSG_OUT, "libdvdnav: vm: failed to read VIDEO_TS.IFO\n"); +@@ -386,6 +384,8 @@ + /* return 0; Not really used for now.. */ + } + /* ifoRead_TXTDT_MGI(vmgi); Not implemented yet */ ++ dvd_read_name(vm->dvd_name, vm->dvd_serial, dvdroot); ++ vm->map = remap_loadmap(vm->dvd_name); + } + if (vm->vmgi) { + int i, mask; diff -Nru handbrake-0.9.9+dfsg/contrib/libdvdnav/A04-m4-uid0.patch handbrake-0.9.9+ppa1/contrib/libdvdnav/A04-m4-uid0.patch --- handbrake-0.9.9+dfsg/contrib/libdvdnav/A04-m4-uid0.patch 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/contrib/libdvdnav/A04-m4-uid0.patch 2009-08-24 17:32:22.000000000 +0000 @@ -0,0 +1,28 @@ +diff -Naur libdvdnav.orig/configure.ac libdvdnav/configure.ac +--- libdvdnav.orig/configure.ac 2009-01-08 14:57:11.000000000 -0800 ++++ libdvdnav/configure.ac 2009-08-24 10:20:16.560743586 -0700 +@@ -206,24 +206,6 @@ + + AC_SUBST(DEBUG_CFLAGS) + +-dnl --------------------------------------------- +-dnl Get where .m4 should be installed. +-dnl --------------------------------------------- +-case "`id`" in +- uid=0\(* ) +- AC_MSG_CHECKING(for aclocal directory) +- if (aclocal --version) < /dev/null > /dev/null 2>&1; then +- ACLOCAL_DIR="`eval $ACLOCAL --print-ac-dir`" +- AC_MSG_RESULT($ACLOCAL_DIR) +- else +- ACLOCAL_DIR="/usr/local/share/aclocal" +- AC_MSG_RESULT(none - will be installed in $ACLOCAL_DIR) +- fi +- escapedprefix="`echo $prefix | sed -e 's/\\//\\\\\//g'`" +- ACLOCAL_DIR="`echo $ACLOCAL_DIR|sed -e 's/^'$escapedprefix/'\${prefix}'/`" +- AC_SUBST(ACLOCAL_DIR) +- ;; +-esac + AM_CONDITIONAL(INSTALL_M4, test x"$ACLOCAL_DIR" != "x") + + dnl --------------------------------------------- diff -Nru handbrake-0.9.9+dfsg/contrib/libdvdnav/A05-forward-seek.patch handbrake-0.9.9+ppa1/contrib/libdvdnav/A05-forward-seek.patch --- handbrake-0.9.9+dfsg/contrib/libdvdnav/A05-forward-seek.patch 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/contrib/libdvdnav/A05-forward-seek.patch 2009-09-14 15:14:54.000000000 +0000 @@ -0,0 +1,100 @@ +diff -Naur libdvdnav.orig/src/searching.c libdvdnav/src/searching.c +--- libdvdnav.orig/src/searching.c 2009-01-08 14:57:11.000000000 -0800 ++++ libdvdnav/src/searching.c 2009-09-12 15:36:14.403299590 -0700 +@@ -47,7 +47,7 @@ + /* Return placed in vobu. */ + /* Returns error status */ + /* FIXME: Maybe need to handle seeking outside current cell. */ +-static dvdnav_status_t dvdnav_scan_admap(dvdnav_t *this, int32_t domain, uint32_t seekto_block, uint32_t *vobu) { ++static dvdnav_status_t dvdnav_scan_admap(dvdnav_t *this, int32_t domain, uint32_t seekto_block, int next, uint32_t *vobu) { + vobu_admap_t *admap = NULL; + + #ifdef LOG_DEBUG +@@ -89,7 +89,7 @@ + vobu_start = next_vobu; + address++; + } +- *vobu = vobu_start; ++ *vobu = next ? next_vobu : vobu_start; + return DVDNAV_STATUS_OK; + } + fprintf(MSG_OUT, "libdvdnav: admap not located\n"); +@@ -160,7 +160,7 @@ + fprintf(MSG_OUT, "libdvdnav: Seeking to cell %i from choice of %i to %i\n", + cell_nr, first_cell_nr, last_cell_nr); + #endif +- if (dvdnav_scan_admap(this, state->domain, target, &vobu) == DVDNAV_STATUS_OK) { ++ if (dvdnav_scan_admap(this, state->domain, target, 0, &vobu) == DVDNAV_STATUS_OK) { + uint32_t start = state->pgc->cell_playback[cell_nr-1].first_sector; + + if (vm_jump_cell_block(this->vm, cell_nr, vobu - start)) { +@@ -184,9 +184,13 @@ + dvdnav_status_t dvdnav_sector_search(dvdnav_t *this, + uint64_t offset, int32_t origin) { + uint32_t target = 0; ++ uint32_t current_pos; ++ uint32_t cur_sector; ++ uint32_t cur_cell_nr; + uint32_t length = 0; + uint32_t first_cell_nr, last_cell_nr, cell_nr; + int32_t found; ++ int forward = 0; + cell_playback_t *cell; + dvd_state_t *state; + dvdnav_status_t result; +@@ -213,6 +217,10 @@ + fprintf(MSG_OUT, "libdvdnav: Before cellN=%u blockN=%u\n", state->cellN, state->blockN); + #endif + ++ current_pos = target; ++ cur_sector = this->vobu.vobu_start + this->vobu.blockN; ++ cur_cell_nr = state->cellN; ++ + switch(origin) { + case SEEK_SET: + if(offset >= length) { +@@ -244,6 +252,7 @@ + pthread_mutex_unlock(&this->vm_lock); + return DVDNAV_STATUS_ERR; + } ++ forward = target > current_pos; + + this->cur_cell_time = 0; + if (this->pgc_based) { +@@ -270,6 +279,27 @@ + } else { + /* convert the target sector from Cell-relative to absolute physical sector */ + target += cell->first_sector; ++ if (forward && (cell_nr == cur_cell_nr)) { ++ uint32_t vobu; ++ /* if we are seeking forward from the current position, make sure ++ * we move to a new position that is after our current position. ++ * simply truncating to the vobu will go backwards */ ++ if (dvdnav_scan_admap(this, state->domain, target, 0, &vobu) != DVDNAV_STATUS_OK) ++ break; ++ if (vobu <= cur_sector) { ++ if (dvdnav_scan_admap(this, state->domain, target, 1, &vobu) != DVDNAV_STATUS_OK) ++ break; ++ if (vobu > cell->last_sector) { ++ if (cell_nr == last_cell_nr) ++ break; ++ cell_nr++; ++ cell = &(state->pgc->cell_playback[cell_nr-1]); ++ target = cell->first_sector; ++ } else { ++ target = vobu; ++ } ++ } ++ } + found = 1; + break; + } +@@ -281,7 +311,7 @@ + fprintf(MSG_OUT, "libdvdnav: Seeking to cell %i from choice of %i to %i\n", + cell_nr, first_cell_nr, last_cell_nr); + #endif +- if (dvdnav_scan_admap(this, state->domain, target, &vobu) == DVDNAV_STATUS_OK) { ++ if (dvdnav_scan_admap(this, state->domain, target, 0, &vobu) == DVDNAV_STATUS_OK) { + int32_t start = state->pgc->cell_playback[cell_nr-1].first_sector; + + if (vm_jump_cell_block(this->vm, cell_nr, vobu - start)) { diff -Nru handbrake-0.9.9+dfsg/contrib/libdvdnav/A06-reset-mutex.patch handbrake-0.9.9+ppa1/contrib/libdvdnav/A06-reset-mutex.patch --- handbrake-0.9.9+dfsg/contrib/libdvdnav/A06-reset-mutex.patch 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/contrib/libdvdnav/A06-reset-mutex.patch 2010-04-17 19:41:43.000000000 +0000 @@ -0,0 +1,25 @@ +Index: src/dvdnav.c +=================================================================== +--- libdvdnav.orig/src/dvdnav.c (revision 1168) ++++ libdvdnav/src/dvdnav.c (working copy) +@@ -178,9 +178,9 @@ + #ifdef LOG_DEBUG + fprintf(MSG_OUT, "libdvdnav: clearing dvdnav\n"); + #endif ++ pthread_mutex_unlock(&this->vm_lock); + result = dvdnav_clear(this); + +- pthread_mutex_unlock(&this->vm_lock); + return result; + } + +@@ -519,7 +519,8 @@ + } + + /* Check to see if we need to change the currently opened VOB */ +- if((this->position_current.vts != this->position_next.vts) || ++ if((this->file == NULL) || ++ (this->position_current.vts != this->position_next.vts) || + (this->position_current.domain != this->position_next.domain)) { + dvd_read_domain_t domain; + int32_t vtsN; diff -Nru handbrake-0.9.9+dfsg/contrib/libdvdnav/A07-missing-menu.patch handbrake-0.9.9+ppa1/contrib/libdvdnav/A07-missing-menu.patch --- handbrake-0.9.9+dfsg/contrib/libdvdnav/A07-missing-menu.patch 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/contrib/libdvdnav/A07-missing-menu.patch 2009-11-27 20:27:07.000000000 +0000 @@ -0,0 +1,157 @@ +diff -Naur libdvdnav.orig/src/vm/vm.c libdvdnav/src/vm/vm.c +--- libdvdnav.orig/src/vm/vm.c 2009-10-29 09:10:44.836643320 -0700 ++++ libdvdnav/src/vm/vm.c 2009-11-27 11:32:47.475322754 -0800 +@@ -585,6 +585,9 @@ + switch(menuid) { + case DVD_MENU_Title: + case DVD_MENU_Escape: ++ if(vm->vmgi == NULL || vm->vmgi->pgci_ut == NULL) { ++ goto fail; ++ } + (vm->state).domain = VMGM_DOMAIN; + break; + case DVD_MENU_Root: +@@ -592,6 +595,9 @@ + case DVD_MENU_Audio: + case DVD_MENU_Angle: + case DVD_MENU_Part: ++ if(vm->vtsi == NULL || vm->vtsi->pgci_ut == NULL) { ++ goto fail; ++ } + (vm->state).domain = VTSM_DOMAIN; + break; + } +@@ -606,6 +612,7 @@ + break; + } + ++fail: + return 0; + } + +@@ -1412,8 +1419,9 @@ + if(link_values.data2 != 0) + (vm->state).HL_BTNN_REG = link_values.data2 << 10; + if(!set_VTS_PTT(vm, (vm->state).vtsN, (vm->state).VTS_TTN_REG, link_values.data1)) +- assert(0); +- link_values = play_PG(vm); ++ link_values.command = Exit; ++ else ++ link_values = play_PG(vm); + break; + case LinkPGN: + /* Link to Program Number:data1 */ +@@ -1458,8 +1466,9 @@ + /* Set SPRM1 and SPRM2 */ + assert((vm->state).domain == VTSM_DOMAIN || (vm->state).domain == VTS_DOMAIN); /* ?? */ + if(!set_VTS_TT(vm, (vm->state).vtsN, link_values.data1)) +- assert(0); +- link_values = play_PGC(vm); ++ link_values.command = Exit; ++ else ++ link_values = play_PGC(vm); + break; + case JumpVTS_PTT: + /* Jump to Part:data2 of Title:data1 in same VTS Title Domain */ +@@ -1469,8 +1478,9 @@ + /* Set SPRM1 and SPRM2 */ + assert((vm->state).domain == VTSM_DOMAIN || (vm->state).domain == VTS_DOMAIN); /* ?? */ + if(!set_VTS_PTT(vm, (vm->state).vtsN, link_values.data1, link_values.data2)) +- assert(0); +- link_values = play_PGC_PG(vm, (vm->state).pgN); ++ link_values.command = Exit; ++ else ++ link_values = play_PGC_PG(vm, (vm->state).pgN); + break; + + case JumpSS_FP: +@@ -1488,6 +1498,10 @@ + /* Allowed from anywhere except the VTS Title domain */ + /* Stop SPRM9 Timer and any GPRM counters */ + assert((vm->state).domain != VTS_DOMAIN); /* ?? */ ++ if(vm->vmgi == NULL || vm->vmgi->pgci_ut == NULL) { ++ link_values.command = Exit; ++ break; ++ } + (vm->state).domain = VMGM_DOMAIN; + if(!set_MENU(vm, link_values.data1)) + assert(0); +@@ -1504,14 +1518,22 @@ + if (link_values.data1 != (vm->state).vtsN) { + /* the normal case */ + assert((vm->state).domain == VMGM_DOMAIN || (vm->state).domain == FP_DOMAIN); /* ?? */ +- (vm->state).domain = VTSM_DOMAIN; + if (!ifoOpenNewVTSI(vm, vm->dvd, link_values.data1)) /* Also sets (vm->state).vtsN */ + assert(0); ++ if(vm->vtsi == NULL || vm->vtsi->pgci_ut == NULL) { ++ link_values.command = Exit; ++ break; ++ } ++ (vm->state).domain = VTSM_DOMAIN; + } else { + /* This happens on some discs like "Captain Scarlet & the Mysterons" or + * the German RC2 of "Anatomie" in VTSM. */ + assert((vm->state).domain == VTSM_DOMAIN || + (vm->state).domain == VMGM_DOMAIN || (vm->state).domain == FP_DOMAIN); /* ?? */ ++ if(vm->vtsi == NULL || vm->vtsi->pgci_ut == NULL) { ++ link_values.command = Exit; ++ break; ++ } + (vm->state).domain = VTSM_DOMAIN; + } + } else { +@@ -1533,6 +1555,10 @@ + /* set_PGCN:data1 */ + /* Stop SPRM9 Timer and any GPRM counters */ + assert((vm->state).domain != VTS_DOMAIN); /* ?? */ ++ if(vm->vmgi == NULL || vm->vmgi->pgci_ut == NULL) { ++ link_values.command = Exit; ++ break; ++ } + (vm->state).domain = VMGM_DOMAIN; + if(!set_PGCN(vm, link_values.data1)) + assert(0); +@@ -1552,6 +1578,10 @@ + /* set_RSMinfo:data2 */ + assert((vm->state).domain == VTS_DOMAIN); /* ?? */ + /* Must be called before domain is changed */ ++ if(vm->vmgi == NULL || vm->vmgi->pgci_ut == NULL) { ++ link_values.command = Exit; ++ break; ++ } + set_RSMinfo(vm, link_values.data2, /* We dont have block info */ 0); + (vm->state).domain = VMGM_DOMAIN; + if(!set_MENU(vm, link_values.data1)) +@@ -1563,6 +1593,10 @@ + /* set_RSMinfo:data2 */ + assert((vm->state).domain == VTS_DOMAIN); /* ?? */ + /* Must be called before domain is changed */ ++ if(vm->vtsi == NULL || vm->vtsi->pgci_ut == NULL) { ++ link_values.command = Exit; ++ break; ++ } + set_RSMinfo(vm, link_values.data2, /* We dont have block info */ 0); + (vm->state).domain = VTSM_DOMAIN; + if(!set_MENU(vm, link_values.data1)) +@@ -1574,6 +1608,10 @@ + /* set_RSMinfo:data2 */ + assert((vm->state).domain == VTS_DOMAIN); /* ?? */ + /* Must be called before domain is changed */ ++ if(vm->vmgi == NULL || vm->vmgi->pgci_ut == NULL) { ++ link_values.command = Exit; ++ break; ++ } + set_RSMinfo(vm, link_values.data2, /* We dont have block info */ 0); + (vm->state).domain = VMGM_DOMAIN; + if(!set_PGCN(vm, link_values.data1)) +@@ -1634,7 +1672,9 @@ + (vm->state).TT_PGCN_REG = pgcN; + (vm->state).PTTN_REG = part; + (vm->state).TTN_REG = get_TT(vm, vtsN, vts_ttn); +- assert( (vm->state.TTN_REG) != 0 ); ++ if( (vm->state.TTN_REG) == 0 ) ++ return 0; ++ + (vm->state).VTS_TTN_REG = vts_ttn; + (vm->state).vtsN = vtsN; /* Not sure about this one. We can get to it easily from TTN_REG */ + /* Any other registers? */ diff -Nru handbrake-0.9.9+dfsg/contrib/libdvdnav/A08-dvdnav-dup.patch handbrake-0.9.9+ppa1/contrib/libdvdnav/A08-dvdnav-dup.patch --- handbrake-0.9.9+dfsg/contrib/libdvdnav/A08-dvdnav-dup.patch 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/contrib/libdvdnav/A08-dvdnav-dup.patch 2010-04-20 02:19:16.000000000 +0000 @@ -0,0 +1,137 @@ +Index: src/dvdnav.c +=================================================================== +--- libdvdnav.orig/src/dvdnav.c (revision 1168) ++++ libdvdnav/src/dvdnav.c (working copy) +@@ -71,6 +71,67 @@ + return DVDNAV_STATUS_OK; + } + ++dvdnav_status_t dvdnav_dup(dvdnav_t **dest, dvdnav_t *src) { ++ dvdnav_t *this; ++ ++ (*dest) = NULL; ++ this = (dvdnav_t*)malloc(sizeof(dvdnav_t)); ++ if(!this) ++ return DVDNAV_STATUS_ERR; ++ ++ memcpy(this, src, sizeof(dvdnav_t)); ++ this->file = NULL; ++ ++ pthread_mutex_init(&this->vm_lock, NULL); ++ ++ this->vm = vm_new_copy(src->vm); ++ if(!this->vm) { ++ printerr("Error initialising the DVD VM."); ++ pthread_mutex_destroy(&this->vm_lock); ++ free(this); ++ return DVDNAV_STATUS_ERR; ++ } ++ ++ /* Start the read-ahead cache. */ ++ this->cache = dvdnav_read_cache_new(this); ++ ++ (*dest) = this; ++ return DVDNAV_STATUS_OK; ++} ++ ++dvdnav_status_t dvdnav_free_dup(dvdnav_t *this) { ++ ++#ifdef LOG_DEBUG ++ fprintf(MSG_OUT, "libdvdnav: free_dup:called\n"); ++#endif ++ ++ if (this->file) { ++ pthread_mutex_lock(&this->vm_lock); ++ DVDCloseFile(this->file); ++#ifdef LOG_DEBUG ++ fprintf(MSG_OUT, "libdvdnav: close:file closing\n"); ++#endif ++ this->file = NULL; ++ pthread_mutex_unlock(&this->vm_lock); ++ } ++ ++ /* Free the VM */ ++ if(this->vm) ++ vm_free_copy(this->vm); ++ ++ pthread_mutex_destroy(&this->vm_lock); ++ ++ /* We leave the final freeing of the entire structure to the cache, ++ * because we don't know, if there are still buffers out in the wild, ++ * that must return first. */ ++ if(this->cache) ++ dvdnav_read_cache_free(this->cache); ++ else ++ free(this); ++ ++ return DVDNAV_STATUS_OK; ++} ++ + dvdnav_status_t dvdnav_open(dvdnav_t** dest, const char *path) { + dvdnav_t *this; + struct timeval time; +Index: src/dvdnav/dvdnav.h +=================================================================== +--- libdvdnav.orig/src/dvdnav/dvdnav.h (revision 1168) ++++ libdvdnav/src/dvdnav/dvdnav.h (working copy) +@@ -89,6 +89,9 @@ + */ + dvdnav_status_t dvdnav_open(dvdnav_t **dest, const char *path); + ++dvdnav_status_t dvdnav_dup(dvdnav_t **dest, dvdnav_t *src); ++dvdnav_status_t dvdnav_free_dup(dvdnav_t *this); ++ + /* + * Closes a dvdnav_t previously opened with dvdnav_open(), freeing any + * memory associated with it. +Index: src/vm/vm.c +=================================================================== +--- libdvdnav.orig/src/vm/vm.c (revision 1168) ++++ libdvdnav/src/vm/vm.c (working copy) +@@ -96,6 +98,7 @@ + + static pgcit_t* get_MENU_PGCIT(vm_t *vm, ifo_handle_t *h, uint16_t lang); + static pgcit_t* get_PGCIT(vm_t *vm); ++static void vm_close(vm_t *vm); + + + /* Helper functions */ +@@ -262,7 +265,7 @@ + } + + void vm_free_vm(vm_t *vm) { +- vm_stop(vm); ++ vm_close(vm); + free(vm); + } + +@@ -289,12 +292,20 @@ + + int vm_start(vm_t *vm) { + /* Set pgc to FP (First Play) pgc */ ++ if (vm->stopped) { ++ vm_reset(vm, NULL); ++ vm->stopped = 0; ++ } + set_FP_PGC(vm); + process_command(vm, play_PGC(vm)); + return !vm->stopped; + } + + void vm_stop(vm_t *vm) { ++ vm->stopped = 1; ++} ++ ++static void vm_close(vm_t *vm) { + if(vm->vmgi) { + ifoClose(vm->vmgi); + vm->vmgi=NULL; +@@ -346,7 +357,7 @@ + + if (vm->dvd && dvdroot) { + /* a new dvd device has been requested */ +- vm_stop(vm); ++ vm_close(vm); + } + if (!vm->dvd) { + vm->dvd = DVDOpen(dvdroot); diff -Nru handbrake-0.9.9+dfsg/contrib/libdvdnav/module.defs handbrake-0.9.9+ppa1/contrib/libdvdnav/module.defs --- handbrake-0.9.9+dfsg/contrib/libdvdnav/module.defs 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/contrib/libdvdnav/module.defs 2013-02-19 22:49:15.000000000 +0000 @@ -0,0 +1,13 @@ +$(eval $(call import.MODULE.defs,LIBDVDNAV,libdvdnav,LIBDVDREAD)) +$(eval $(call import.CONTRIB.defs,LIBDVDNAV)) + +LIBDVDNAV.FETCH.url = http://download.handbrake.fr/handbrake/contrib/libdvdnav-svn1168.tar.gz +LIBDVDNAV.EXTRACT.tarbase = libdvdnav + +ifneq (max,$(LIBDVDNAV.GCC.g)) + LIBDVDNAV.GCC.D += NDEBUG +endif + +LIBDVDNAV.CONFIGURE.bootstrap = rm -fr aclocal.m4 autom4te.cache; autoreconf -fiv; + +LIBDVDNAV.CONFIGURE.extra += --with-dvdread-config=$(call fn.ABSOLUTE,$(CONTRIB.build/)bin/dvdread-config) diff -Nru handbrake-0.9.9+dfsg/contrib/libdvdnav/module.rules handbrake-0.9.9+ppa1/contrib/libdvdnav/module.rules --- handbrake-0.9.9+dfsg/contrib/libdvdnav/module.rules 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/contrib/libdvdnav/module.rules 2009-04-27 15:18:05.000000000 +0000 @@ -0,0 +1,2 @@ +$(eval $(call import.MODULE.rules,LIBDVDNAV)) +$(eval $(call import.CONTRIB.rules,LIBDVDNAV)) diff -Nru handbrake-0.9.9+dfsg/contrib/libdvdnav/P00-mingw-no-examples.patch handbrake-0.9.9+ppa1/contrib/libdvdnav/P00-mingw-no-examples.patch --- handbrake-0.9.9+dfsg/contrib/libdvdnav/P00-mingw-no-examples.patch 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/contrib/libdvdnav/P00-mingw-no-examples.patch 2009-04-27 15:18:05.000000000 +0000 @@ -0,0 +1,21 @@ +diff -Naur libdvdnav.orig/Makefile.am libdvdnav/Makefile.am +--- libdvdnav.orig/Makefile.am 2008-10-03 16:11:46.000000000 -0400 ++++ libdvdnav/Makefile.am 2009-04-24 02:53:15.000000000 -0400 +@@ -1,7 +1,7 @@ + include $(top_srcdir)/misc/Makefile.common + + +-SUBDIRS = src examples doc misc m4 ++SUBDIRS = src doc misc m4 + + EXTRA_DIST = autogen.sh \ + AUTHORS \ +diff -Naur libdvdnav.orig/configure.ac libdvdnav/configure.ac +--- libdvdnav.orig/configure.ac 2009-01-08 17:57:11.000000000 -0500 ++++ libdvdnav/configure.ac 2009-04-24 02:52:34.000000000 -0400 +@@ -252,5 +252,4 @@ + misc/relchk.sh + m4/Makefile + doc/Makefile +-examples/Makefile + ]) diff -Nru handbrake-0.9.9+dfsg/contrib/libdvdread/A00-volume-name.patch handbrake-0.9.9+ppa1/contrib/libdvdread/A00-volume-name.patch --- handbrake-0.9.9+dfsg/contrib/libdvdread/A00-volume-name.patch 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/contrib/libdvdread/A00-volume-name.patch 2009-04-27 15:18:05.000000000 +0000 @@ -0,0 +1,12 @@ +diff -Naur libdvdread.orig/src/dvd_udf.c libdvdread/src/dvd_udf.c +--- libdvdread.orig/src/dvd_udf.c 2009-01-08 14:57:10.000000000 -0800 ++++ libdvdread/src/dvd_udf.c 2009-04-23 13:36:08.000000000 -0700 +@@ -928,7 +928,7 @@ + if(GetUDFCache(device, PVDCache, 0, pvd)) + return 1; + +- if(!UDFGetDescriptor( device, 1, pvd_buf, sizeof(pvd_buf))) ++ if(!UDFGetDescriptor( device, 1, pvd_buf, DVD_VIDEO_LB_LEN)) + return 0; + + memcpy(pvd->VolumeIdentifier, &pvd_buf[24], 32); diff -Nru handbrake-0.9.9+dfsg/contrib/libdvdread/A01-bogus-udf-filename.patch handbrake-0.9.9+ppa1/contrib/libdvdread/A01-bogus-udf-filename.patch --- handbrake-0.9.9+dfsg/contrib/libdvdread/A01-bogus-udf-filename.patch 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/contrib/libdvdread/A01-bogus-udf-filename.patch 2011-09-26 20:37:46.000000000 +0000 @@ -0,0 +1,37 @@ +Index: dvd_udf.c +=================================================================== +--- libdvdread/src/dvd_udf.c (revision 1233) ++++ libdvdread/src/dvd_udf.c (working copy) +@@ -329,16 +329,17 @@ + static int Unicodedecode( uint8_t *data, int len, char *target ) + { + int p = 1, i = 0; ++ int err = 0; + + if( ( data[ 0 ] == 8 ) || ( data[ 0 ] == 16 ) ) do { +- if( data[ 0 ] == 16 ) p++; /* Ignore MSB of unicode16 */ ++ if( data[ 0 ] == 16 ) err |= data[p++]; /* character cannot be converted to 8bit, return error */ + if( p < len ) { + target[ i++ ] = data[ p++ ]; + } + } while( p < len ); + + target[ i ] = '\0'; +- return 0; ++ return !err; + } + + static int UDFDescriptor( uint8_t *data, uint16_t *TagID ) +@@ -490,8 +491,9 @@ + L_FI = GETN1(19); + UDFLongAD(&data[20], FileICB); + L_IU = GETN2(36); +- if (L_FI) Unicodedecode(&data[38 + L_IU], L_FI, FileName); +- else FileName[0] = '\0'; ++ if (L_FI) { ++ if (!Unicodedecode(&data[38 + L_IU], L_FI, FileName)) FileName[0] = 0; ++ } else FileName[0] = '\0'; + return 4 * ((38 + L_FI + L_IU + 3) / 4); + } + + diff -Nru handbrake-0.9.9+dfsg/contrib/libdvdread/A02-msc_ver-defs.patch handbrake-0.9.9+ppa1/contrib/libdvdread/A02-msc_ver-defs.patch --- handbrake-0.9.9+dfsg/contrib/libdvdread/A02-msc_ver-defs.patch 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/contrib/libdvdread/A02-msc_ver-defs.patch 2009-09-15 17:35:00.000000000 +0000 @@ -0,0 +1,85 @@ +diff -Naur libdvdread.orig/src/dvd_reader.c libdvdread/src/dvd_reader.c +--- libdvdread.orig/src/dvd_reader.c 2009-03-13 18:28:21.000000000 -0700 ++++ libdvdread/src/dvd_reader.c 2009-09-15 10:15:25.201548319 -0700 +@@ -36,6 +36,7 @@ + + /* misc win32 helpers */ + #ifdef WIN32 ++#include + #ifndef HAVE_GETTIMEOFDAY + /* replacement gettimeofday implementation */ + #include +@@ -335,7 +336,7 @@ + char *dev_name = NULL; + char *path; + +-#ifdef _MSC_VER ++#ifdef _WIN32 + int len; + #endif + +@@ -349,7 +350,7 @@ + /* Try to open libdvdcss or fall back to standard functions */ + have_css = dvdinput_setup(); + +-#ifdef _MSC_VER ++#ifdef _WIN32 + /* Strip off the trailing \ if it is not a drive */ + len = strlen(path); + if ((len > 1) && +@@ -447,6 +448,14 @@ + } + } + ++#ifdef _WIN32 ++ if( strlen( path_copy ) > TITLES_MAX ) { ++ if( !strcasecmp( &(path_copy[ strlen( path_copy ) - TITLES_MAX ]), ++ "\\video_ts" ) ) { ++ path_copy[ strlen( path_copy ) - (TITLES_MAX-1) ] = '\0'; ++ } ++ } ++#else + if( strlen( path_copy ) > TITLES_MAX ) { + if( !strcasecmp( &(path_copy[ strlen( path_copy ) - TITLES_MAX ]), + "/video_ts" ) ) { +@@ -458,6 +467,7 @@ + path_copy[0] = '/'; + path_copy[1] = '\0'; + } ++#endif + + #if defined(SYS_BSD) + if( ( fe = getfsfile( path_copy ) ) ) { +@@ -508,11 +518,14 @@ + } + fclose( mntfile ); + } +-#elif defined(_MSC_VER) || defined(__OS2__) +- auth_drive = DVDOpenImageFile( path, have_css ); ++#elif defined(_WIN32) || defined(__OS2__) ++ if( GetDriveType( path_copy ) == DRIVE_CDROM ) { ++ path_copy[2] = '\0'; ++ auth_drive = DVDOpenImageFile( path_copy, have_css ); ++ } + #endif + +-#if !defined(_MSC_VER) && !defined(__OS2__) ++#if !defined(_WIN32) && !defined(__OS2__) + if( !dev_name ) { + fprintf( stderr, "libdvdread: Couldn't find device name.\n" ); + } else if( !auth_drive ) { +diff -Naur libdvdread.orig/src/dvdread_internal.h libdvdread/src/dvdread_internal.h +--- libdvdread.orig/src/dvdread_internal.h 2008-10-03 13:11:30.000000000 -0700 ++++ libdvdread/src/dvdread_internal.h 2009-09-15 09:44:01.788301485 -0700 +@@ -19,9 +19,9 @@ + #ifndef LIBDVDREAD_DVDREAD_INTERNAL_H + #define LIBDVDREAD_DVDREAD_INTERNAL_H + +-#ifdef _MSC_VER ++#ifdef _WIN32 + #include +-#endif /* _MSC_VER */ ++#endif /* _WIN32 */ + + #define CHECK_VALUE(arg) \ + if(!(arg)) { \ diff -Nru handbrake-0.9.9+dfsg/contrib/libdvdread/A03-m4-uid0.patch handbrake-0.9.9+ppa1/contrib/libdvdread/A03-m4-uid0.patch --- handbrake-0.9.9+dfsg/contrib/libdvdread/A03-m4-uid0.patch 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/contrib/libdvdread/A03-m4-uid0.patch 2009-08-24 17:32:22.000000000 +0000 @@ -0,0 +1,28 @@ +diff -Naur libdvdread.orig/configure.ac libdvdread/configure.ac +--- libdvdread.orig/configure.ac 2009-01-08 14:57:10.000000000 -0800 ++++ libdvdread/configure.ac 2009-08-24 10:17:47.036747814 -0700 +@@ -167,24 +167,6 @@ + + AC_SUBST(DEBUG_CFLAGS) + +-dnl --------------------------------------------- +-dnl Get where .m4 should be installed. +-dnl --------------------------------------------- +-case "`id`" in +- uid=0\(* ) +- AC_MSG_CHECKING(for aclocal directory) +- if (aclocal --version) < /dev/null > /dev/null 2>&1; then +- ACLOCAL_DIR="`eval $ACLOCAL --print-ac-dir`" +- AC_MSG_RESULT($ACLOCAL_DIR) +- else +- ACLOCAL_DIR="/usr/local/share/aclocal" +- AC_MSG_RESULT(none - will be installed in $ACLOCAL_DIR) +- fi +- escapedprefix="`echo $prefix | sed -e 's/\\//\\\\\//g'`" +- ACLOCAL_DIR="`echo $ACLOCAL_DIR|sed -e 's/^'$escapedprefix/'\${prefix}'/`" +- AC_SUBST(ACLOCAL_DIR) +- ;; +-esac + AM_CONDITIONAL(INSTALL_M4, test x"$ACLOCAL_DIR" != "x") + + dnl --------------------------------------------- diff -Nru handbrake-0.9.9+dfsg/contrib/libdvdread/A04-dup-lut-pgc.patch handbrake-0.9.9+ppa1/contrib/libdvdread/A04-dup-lut-pgc.patch --- handbrake-0.9.9+dfsg/contrib/libdvdread/A04-dup-lut-pgc.patch 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/contrib/libdvdread/A04-dup-lut-pgc.patch 2009-11-13 19:02:25.000000000 +0000 @@ -0,0 +1,324 @@ +--- libdvdread.orig/src/ifo_read.c 2009-10-29 09:11:32.066743831 -0700 ++++ libdvdread/src/ifo_read.c 2009-11-13 10:27:49.293174360 -0800 +@@ -87,9 +87,9 @@ + static int ifoRead_PGCIT_internal(ifo_handle_t *ifofile, pgcit_t *pgcit, + unsigned int offset); + +-static void ifoFree_PGC(pgc_t *pgc); ++static void ifoFree_PGC(pgc_t **pgc); + static void ifoFree_PGC_COMMAND_TBL(pgc_command_tbl_t *cmd_tbl); +-static void ifoFree_PGCIT_internal(pgcit_t *pgcit); ++static void ifoFree_PGCIT_internal(pgcit_t **pgcit); + + static inline int DVDFileSeekForce_( dvd_file_t *dvd_file, uint32_t offset, int force_size ) { + return (DVDFileSeekForce(dvd_file, (int)offset, force_size) == (int)offset); +@@ -870,7 +870,6 @@ + + if(!ifoRead_PGC_COMMAND_TBL(ifofile, pgc->command_tbl, + offset + pgc->command_tbl_offset)) { +- free(pgc->command_tbl); + return 0; + } + } else { +@@ -880,13 +879,10 @@ + if(pgc->program_map_offset != 0 && pgc->nr_of_programs>0) { + pgc->program_map = malloc(pgc->nr_of_programs * sizeof(pgc_program_map_t)); + if(!pgc->program_map) { +- ifoFree_PGC_COMMAND_TBL(pgc->command_tbl); + return 0; + } + if(!ifoRead_PGC_PROGRAM_MAP(ifofile, pgc->program_map,pgc->nr_of_programs, + offset + pgc->program_map_offset)) { +- ifoFree_PGC_COMMAND_TBL(pgc->command_tbl); +- free(pgc->program_map); + return 0; + } + } else { +@@ -896,18 +892,11 @@ + if(pgc->cell_playback_offset != 0 && pgc->nr_of_cells>0) { + pgc->cell_playback = malloc(pgc->nr_of_cells * sizeof(cell_playback_t)); + if(!pgc->cell_playback) { +- ifoFree_PGC_COMMAND_TBL(pgc->command_tbl); +- if(pgc->program_map) +- free(pgc->program_map); + return 0; + } + if(!ifoRead_CELL_PLAYBACK_TBL(ifofile, pgc->cell_playback, + pgc->nr_of_cells, + offset + pgc->cell_playback_offset)) { +- ifoFree_PGC_COMMAND_TBL(pgc->command_tbl); +- if(pgc->program_map) +- free(pgc->program_map); +- free(pgc->cell_playback); + return 0; + } + } else { +@@ -917,13 +906,11 @@ + if(pgc->cell_position_offset != 0 && pgc->nr_of_cells>0) { + pgc->cell_position = malloc(pgc->nr_of_cells * sizeof(cell_position_t)); + if(!pgc->cell_position) { +- ifoFree_PGC(pgc); + return 0; + } + if(!ifoRead_CELL_POSITION_TBL(ifofile, pgc->cell_position, + pgc->nr_of_cells, + offset + pgc->cell_position_offset)) { +- ifoFree_PGC(pgc); + return 0; + } + } else { +@@ -946,29 +933,33 @@ + if(ifofile->vmgi_mat->first_play_pgc == 0) + return 1; + +- ifofile->first_play_pgc = (pgc_t *)malloc(sizeof(pgc_t)); ++ ifofile->first_play_pgc = (pgc_t *)calloc(1, sizeof(pgc_t)); + if(!ifofile->first_play_pgc) + return 0; + ++ ifofile->first_play_pgc->ref_count = 1; + if(!ifoRead_PGC(ifofile, ifofile->first_play_pgc, + ifofile->vmgi_mat->first_play_pgc)) { +- free(ifofile->first_play_pgc); +- ifofile->first_play_pgc = 0; ++ ifoFree_PGC(&ifofile->first_play_pgc); + return 0; + } + + return 1; + } + +-static void ifoFree_PGC(pgc_t *pgc) { +- if(pgc) { +- ifoFree_PGC_COMMAND_TBL(pgc->command_tbl); +- if(pgc->program_map) +- free(pgc->program_map); +- if(pgc->cell_playback) +- free(pgc->cell_playback); +- if(pgc->cell_position) +- free(pgc->cell_position); ++static void ifoFree_PGC(pgc_t **pgc) { ++ if(pgc && *pgc && (--(*pgc)->ref_count) <= 0) { ++ ifoFree_PGC_COMMAND_TBL((*pgc)->command_tbl); ++ if((*pgc)->program_map) ++ free((*pgc)->program_map); ++ if((*pgc)->cell_playback) ++ free((*pgc)->cell_playback); ++ if((*pgc)->cell_position) ++ free((*pgc)->cell_position); ++ free(*pgc); ++ } ++ if (pgc) { ++ *pgc = NULL; + } + } + +@@ -977,9 +968,7 @@ + return; + + if(ifofile->first_play_pgc) { +- ifoFree_PGC(ifofile->first_play_pgc); +- free(ifofile->first_play_pgc); +- ifofile->first_play_pgc = 0; ++ ifoFree_PGC(&ifofile->first_play_pgc); + } + } + +@@ -1202,6 +1191,13 @@ + CHECK_VALUE(vts_ptt_srpt->title[i].ptt[j].pgcn < 1000); /* ?? */ + CHECK_VALUE(vts_ptt_srpt->title[i].ptt[j].pgn != 0); + CHECK_VALUE(vts_ptt_srpt->title[i].ptt[j].pgn < 100); /* ?? */ ++ if (vts_ptt_srpt->title[i].ptt[j].pgcn == 0 || ++ vts_ptt_srpt->title[i].ptt[j].pgcn >= 1000 || ++ vts_ptt_srpt->title[i].ptt[j].pgn == 0 || ++ vts_ptt_srpt->title[i].ptt[j].pgn >= 100) { ++ return 0; ++ } ++ + } + } + +@@ -1372,7 +1368,6 @@ + + if(ifofile->vtsi_mat->vts_tmapt == 0) { /* optional(?) */ + ifofile->vts_tmapt = NULL; +- fprintf(stderr,"Please send bug report - no VTS_TMAPT ?? \n"); + return 1; + } + +@@ -1756,10 +1751,11 @@ + if(ifofile->vtsi_mat->vts_pgcit == 0) /* mandatory */ + return 0; + +- ifofile->vts_pgcit = (pgcit_t *)malloc(sizeof(pgcit_t)); ++ ifofile->vts_pgcit = (pgcit_t *)calloc(1, sizeof(pgcit_t)); + if(!ifofile->vts_pgcit) + return 0; + ++ ifofile->vts_pgcit->ref_count = 1; + if(!ifoRead_PGCIT_internal(ifofile, ifofile->vts_pgcit, + ifofile->vtsi_mat->vts_pgcit * DVD_BLOCK_LEN)) { + free(ifofile->vts_pgcit); +@@ -1770,6 +1766,17 @@ + return 1; + } + ++static int find_dup_pgc(pgci_srp_t *pgci_srp, uint32_t start_byte, int count) { ++ int i; ++ ++ for(i = 0; i < count; i++) { ++ if(pgci_srp[i].pgc_start_byte == start_byte) { ++ return i; ++ } ++ } ++ return -1; ++} ++ + static int ifoRead_PGCIT_internal(ifo_handle_t *ifofile, pgcit_t *pgcit, + unsigned int offset) { + int i, info_length; +@@ -1818,21 +1825,26 @@ + CHECK_VALUE(pgcit->pgci_srp[i].pgc_start_byte + PGC_SIZE <= pgcit->last_byte+1); + + for(i = 0; i < pgcit->nr_of_pgci_srp; i++) { +- pgcit->pgci_srp[i].pgc = malloc(sizeof(pgc_t)); ++ int dup; ++ if((dup = find_dup_pgc(pgcit->pgci_srp, pgcit->pgci_srp[i].pgc_start_byte, i)) >= 0) { ++ pgcit->pgci_srp[i].pgc = pgcit->pgci_srp[dup].pgc; ++ pgcit->pgci_srp[i].pgc->ref_count++; ++ continue; ++ } ++ pgcit->pgci_srp[i].pgc = calloc(1, sizeof(pgc_t)); + if(!pgcit->pgci_srp[i].pgc) { + int j; + for(j = 0; j < i; j++) { +- ifoFree_PGC(pgcit->pgci_srp[j].pgc); +- free(pgcit->pgci_srp[j].pgc); ++ ifoFree_PGC(&pgcit->pgci_srp[j].pgc); + } + goto fail; + } ++ pgcit->pgci_srp[i].pgc->ref_count = 1; + if(!ifoRead_PGC(ifofile, pgcit->pgci_srp[i].pgc, + offset + pgcit->pgci_srp[i].pgc_start_byte)) { + int j; +- for(j = 0; j < i; j++) { +- ifoFree_PGC(pgcit->pgci_srp[j].pgc); +- free(pgcit->pgci_srp[j].pgc); ++ for(j = 0; j <= i; j++) { ++ ifoFree_PGC(&pgcit->pgci_srp[j].pgc); + } + goto fail; + } +@@ -1845,12 +1857,16 @@ + return 0; + } + +-static void ifoFree_PGCIT_internal(pgcit_t *pgcit) { +- if(pgcit) { ++static void ifoFree_PGCIT_internal(pgcit_t **pgcit) { ++ if(pgcit && *pgcit && (--(*pgcit)->ref_count <= 0)) { + int i; +- for(i = 0; i < pgcit->nr_of_pgci_srp; i++) +- ifoFree_PGC(pgcit->pgci_srp[i].pgc); +- free(pgcit->pgci_srp); ++ for(i = 0; i < (*pgcit)->nr_of_pgci_srp; i++) ++ ifoFree_PGC(&(*pgcit)->pgci_srp[i].pgc); ++ free((*pgcit)->pgci_srp); ++ free(*pgcit); ++ } ++ if (pgcit) { ++ *pgcit = NULL; + } + } + +@@ -1859,12 +1875,20 @@ + return; + + if(ifofile->vts_pgcit) { +- ifoFree_PGCIT_internal(ifofile->vts_pgcit); +- free(ifofile->vts_pgcit); +- ifofile->vts_pgcit = 0; ++ ifoFree_PGCIT_internal(&ifofile->vts_pgcit); + } + } + ++static int find_dup_lut(pgci_lu_t *lu, uint32_t start_byte, int count) { ++ int i; ++ ++ for(i = 0; i < count; i++) { ++ if(lu[i].lang_start_byte == start_byte) { ++ return i; ++ } ++ } ++ return -1; ++} + + int ifoRead_PGCI_UT(ifo_handle_t *ifofile) { + pgci_ut_t *pgci_ut; +@@ -1958,27 +1982,31 @@ + } + + for(i = 0; i < pgci_ut->nr_of_lus; i++) { ++ int dup; ++ if((dup = find_dup_lut(pgci_ut->lu, pgci_ut->lu[i].lang_start_byte, i)) >= 0) { ++ pgci_ut->lu[i].pgcit = pgci_ut->lu[dup].pgcit; ++ pgci_ut->lu[i].pgcit->ref_count++; ++ continue; ++ } + pgci_ut->lu[i].pgcit = malloc(sizeof(pgcit_t)); + if(!pgci_ut->lu[i].pgcit) { + unsigned int j; + for(j = 0; j < i; j++) { +- ifoFree_PGCIT_internal(pgci_ut->lu[j].pgcit); +- free(pgci_ut->lu[j].pgcit); ++ ifoFree_PGCIT_internal(&pgci_ut->lu[j].pgcit); + } + free(pgci_ut->lu); + free(pgci_ut); + ifofile->pgci_ut = 0; + return 0; + } ++ pgci_ut->lu[i].pgcit->ref_count = 1; + if(!ifoRead_PGCIT_internal(ifofile, pgci_ut->lu[i].pgcit, + sector * DVD_BLOCK_LEN + + pgci_ut->lu[i].lang_start_byte)) { + unsigned int j; +- for(j = 0; j < i; j++) { +- ifoFree_PGCIT_internal(pgci_ut->lu[j].pgcit); +- free(pgci_ut->lu[j].pgcit); ++ for(j = 0; j <= i; j++) { ++ ifoFree_PGCIT_internal(&pgci_ut->lu[j].pgcit); + } +- free(pgci_ut->lu[i].pgcit); + free(pgci_ut->lu); + free(pgci_ut); + ifofile->pgci_ut = 0; +@@ -2000,8 +2028,7 @@ + + if(ifofile->pgci_ut) { + for(i = 0; i < ifofile->pgci_ut->nr_of_lus; i++) { +- ifoFree_PGCIT_internal(ifofile->pgci_ut->lu[i].pgcit); +- free(ifofile->pgci_ut->lu[i].pgcit); ++ ifoFree_PGCIT_internal(&ifofile->pgci_ut->lu[i].pgcit); + } + free(ifofile->pgci_ut->lu); + free(ifofile->pgci_ut); +--- libdvdread.orig/src/dvdread/ifo_types.h 2009-10-29 09:11:32.161557143 -0700 ++++ libdvdread/src/dvdread/ifo_types.h 2009-11-13 09:13:10.255237710 -0800 +@@ -301,6 +301,7 @@ + pgc_program_map_t *program_map; + cell_playback_t *cell_playback; + cell_position_t *cell_position; ++ int ref_count; + } ATTRIBUTE_PACKED pgc_t; + #define PGC_SIZE 236U + +@@ -326,6 +327,7 @@ + uint16_t zero_1; + uint32_t last_byte; + pgci_srp_t *pgci_srp; ++ int ref_count; + } ATTRIBUTE_PACKED pgcit_t; + #define PGCIT_SIZE 8U + diff -Nru handbrake-0.9.9+dfsg/contrib/libdvdread/A05-short-ptt-table.patch handbrake-0.9.9+ppa1/contrib/libdvdread/A05-short-ptt-table.patch --- handbrake-0.9.9+dfsg/contrib/libdvdread/A05-short-ptt-table.patch 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/contrib/libdvdread/A05-short-ptt-table.patch 2011-07-08 23:10:16.000000000 +0000 @@ -0,0 +1,19 @@ +Index: ifo_read.c +=================================================================== +--- libdvdread.orig/src/ifo_read.c 2009-10-29 09:11:32.066743831 -0700 ++++ libdvdread/src/ifo_read.c 2009-11-13 10:27:49.293174360 -0800 +@@ -1138,6 +1127,14 @@ + return 0; + } + ++ if(vts_ptt_srpt->nr_of_srpts * sizeof(uint32_t) > info_length) { ++ fprintf(stderr, "libdvdread: PTT search table too small.\n"); ++ free(vts_ptt_srpt); ++ free(data); ++ ifofile->vts_ptt_srpt = 0; ++ return 0; ++ } ++ + for(i = 0; i < vts_ptt_srpt->nr_of_srpts; i++) { + B2N_32(data[i]); + /* assert(data[i] + sizeof(ptt_info_t) <= vts_ptt_srpt->last_byte + 1); diff -Nru handbrake-0.9.9+dfsg/contrib/libdvdread/A06-short-ptt-table2.patch handbrake-0.9.9+ppa1/contrib/libdvdread/A06-short-ptt-table2.patch --- handbrake-0.9.9+dfsg/contrib/libdvdread/A06-short-ptt-table2.patch 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/contrib/libdvdread/A06-short-ptt-table2.patch 2011-11-10 20:01:32.000000000 +0000 @@ -0,0 +1,21 @@ +Index: libdvdread/src/ifo_read.c +=================================================================== +--- libdvdread/src/ifo_read.c (revision 1243) ++++ libdvdread/src/ifo_read.c (working copy) +@@ -1190,7 +1190,15 @@ + goto fail; + } + for(i = 0; i < vts_ptt_srpt->nr_of_srpts; i++) { +- B2N_32(data[i]); ++ /* Transformers 3 has PTT start bytes that point outside the SRPT PTT */ ++ uint32_t start = data[i]; ++ B2N_32(start); ++ if(start + sizeof(ptt_info_t) > vts_ptt_srpt->last_byte + 1) { ++ /* don't mess with any bytes beyond the end of the allocation */ ++ vts_ptt_srpt->nr_of_srpts = i; ++ break; ++ } ++ data[i] = start; + /* assert(data[i] + sizeof(ptt_info_t) <= vts_ptt_srpt->last_byte + 1); + Magic Knight Rayearth Daybreak is mastered very strange and has + Titles with 0 PTTs. They all have a data[i] offsets beyond the end of diff -Nru handbrake-0.9.9+dfsg/contrib/libdvdread/module.defs handbrake-0.9.9+ppa1/contrib/libdvdread/module.defs --- handbrake-0.9.9+dfsg/contrib/libdvdread/module.defs 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/contrib/libdvdread/module.defs 2011-07-11 18:19:51.000000000 +0000 @@ -0,0 +1,8 @@ +$(eval $(call import.MODULE.defs,LIBDVDREAD,libdvdread)) +$(eval $(call import.CONTRIB.defs,LIBDVDREAD)) + +LIBDVDREAD.FETCH.url = http://download.handbrake.fr/handbrake/contrib/libdvdread-svn1168.tar.gz +LIBDVDREAD.EXTRACT.tarbase = libdvdread + +LIBDVDREAD.CONFIGURE.extra = --enable-local-dlfcn +LIBDVDREAD.CONFIGURE.bootstrap = rm -fr aclocal.m4 autom4te.cache; autoreconf -fiv; diff -Nru handbrake-0.9.9+dfsg/contrib/libdvdread/module.rules handbrake-0.9.9+ppa1/contrib/libdvdread/module.rules --- handbrake-0.9.9+dfsg/contrib/libdvdread/module.rules 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/contrib/libdvdread/module.rules 2009-03-01 17:28:24.000000000 +0000 @@ -0,0 +1,2 @@ +$(eval $(call import.MODULE.rules,LIBDVDREAD)) +$(eval $(call import.CONTRIB.rules,LIBDVDREAD)) diff -Nru handbrake-0.9.9+dfsg/contrib/libdvdread/P00-mingw-dlfcn.patch handbrake-0.9.9+ppa1/contrib/libdvdread/P00-mingw-dlfcn.patch --- handbrake-0.9.9+dfsg/contrib/libdvdread/P00-mingw-dlfcn.patch 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/contrib/libdvdread/P00-mingw-dlfcn.patch 2010-10-23 18:25:47.000000000 +0000 @@ -0,0 +1,34 @@ +Index: configure.ac +=================================================================== +--- libdvdread/configure.ac (revision 1168) ++++ libdvdread/configure.ac (working copy) +@@ -158,6 +158,16 @@ + ;; + esac + ++AC_ARG_ENABLE([local-dlfcn], ++ [AS_HELP_STRING([--enable-local-dlfcn], ++ [use local dlfcn for mingw (default is auto)])], ++ [use_local_dlfcn=$enableval], ++ [use_local_dlfcn=no]) ++ ++if [[ $use_local_dlfcn = "yes" ]]; then ++ AC_DEFINE([USING_LOCAL_DLFCN], [1], ["Define to 1 to use local dlfcn"]) ++fi ++ + dnl --------------------------------------------- + dnl cflags + dnl --------------------------------------------- +Index: src/dvd_input.c +=================================================================== +--- libdvdread/src/dvd_input.c (revision 1168) ++++ libdvdread/src/dvd_input.c (working copy) +@@ -50,7 +50,7 @@ + #else + + /* dlopening libdvdcss */ +-#ifdef HAVE_DLFCN_H ++#if defined(HAVE_DLFCN_H) && !defined(USING_LOCAL_DLFCN) + #include + #else + /* Only needed on MINGW at the moment */ diff -Nru handbrake-0.9.9+dfsg/contrib/libdvdread/P01-mingw-bitfields.patch handbrake-0.9.9+ppa1/contrib/libdvdread/P01-mingw-bitfields.patch --- handbrake-0.9.9+dfsg/contrib/libdvdread/P01-mingw-bitfields.patch 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/contrib/libdvdread/P01-mingw-bitfields.patch 2013-01-26 18:47:13.000000000 +0000 @@ -0,0 +1,19 @@ +diff -Naur libdvdread.orig/configure.ac libdvdread/configure.ac +--- libdvdread.orig/configure.ac 2009-01-08 14:57:10.000000000 -0800 ++++ libdvdread/configure.ac 2013-01-26 10:35:21.366836184 -0800 +@@ -141,6 +141,15 @@ + *mingw32*) + CFLAGS="-idirafter \$(top_srcdir)/msvc/include $CFLAGS" + LDFLAGS="-no-undefined $LDFLAGS" ++ if test "$GCC" = "yes" ; then ++ gcc_version="`$CC -dumpversion`" ++ gcc_version_major=$(echo $gcc_version | cut -d"." -f1) ++ gcc_version_minor=$(echo $gcc_version | cut -d"." -f2) ++ gcc_version_patch=$(echo $gcc_version | cut -d"." -f3) ++ if test $gcc_version_major -ge 4 -a $gcc_version_minor -ge 7 ; then ++ CFLAGS="-mno-ms-bitfields $CFLAGS" ++ fi ++ fi + ;; + *cygwin*) + LDFLAGS="-no-undefined $LDFLAGS" diff -Nru handbrake-0.9.9+dfsg/contrib/libdvdread/P05-mingw-large-file.patch handbrake-0.9.9+ppa1/contrib/libdvdread/P05-mingw-large-file.patch --- handbrake-0.9.9+dfsg/contrib/libdvdread/P05-mingw-large-file.patch 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/contrib/libdvdread/P05-mingw-large-file.patch 2009-04-27 15:18:05.000000000 +0000 @@ -0,0 +1,28 @@ +diff -Naur libdvdread.orig/src/dvd_input.h libdvdread/src/dvd_input.h +--- libdvdread.orig/src/dvd_input.h 2008-10-03 13:11:30.000000000 -0700 ++++ libdvdread/src/dvd_input.h 2009-04-23 13:47:04.000000000 -0700 +@@ -29,6 +29,24 @@ + + #define DVDINPUT_READ_DECRYPT (1 << 0) + ++#if defined( __MINGW32__ ) ++# undef lseek ++# define lseek _lseeki64 ++# undef fseeko ++# define fseeko fseeko64 ++# undef ftello ++# define ftello ftello64 ++# define flockfile(...) ++# define funlockfile(...) ++# define getc_unlocked getc ++# undef off_t ++# define off_t off64_t ++# undef stat ++# define stat _stati64 ++# define fstat _fstati64 ++# define wstat _wstati64 ++#endif ++ + typedef struct dvd_input_s *dvd_input_t; + + /** diff -Nru handbrake-0.9.9+dfsg/contrib/libdvdread/P06-darwin.patch handbrake-0.9.9+ppa1/contrib/libdvdread/P06-darwin.patch --- handbrake-0.9.9+dfsg/contrib/libdvdread/P06-darwin.patch 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/contrib/libdvdread/P06-darwin.patch 2009-04-27 15:18:05.000000000 +0000 @@ -0,0 +1,25 @@ +diff -Naur libdvdread.orig/configure.ac libdvdread/configure.ac +--- libdvdread.orig/configure.ac 2009-01-08 17:57:10.000000000 -0500 ++++ libdvdread/configure.ac 2009-04-24 01:50:56.000000000 -0400 +@@ -145,6 +145,9 @@ + *cygwin*) + LDFLAGS="-no-undefined $LDFLAGS" + ;; ++ *darwin*) ++ CFLAGS="${CFLAGS} -D__DARWIN__" ++ ;; + *os2*) + LDFLAGS="-no-undefined -Zbin-files $LDFLAGS" + ;; +diff -Naur libdvdread.orig/src/dvd_reader.c libdvdread/src/dvd_reader.c +--- libdvdread.orig/src/dvd_reader.c 2009-03-13 21:28:21.000000000 -0400 ++++ libdvdread/src/dvd_reader.c 2009-04-24 01:35:43.000000000 -0400 +@@ -314,7 +314,7 @@ + char *new_path; + + /* If it doesn't start with "/dev/" or does start with "/dev/r" exit */ +- if( !strncmp( path, "/dev/", 5 ) || strncmp( path, "/dev/r", 6 ) ) ++ if( strncmp( path, "/dev/", 5 ) || !strncmp( path, "/dev/r", 6 ) ) + return (char *) strdup( path ); + + /* Replace "/dev/" with "/dev/r" */ diff -Nru handbrake-0.9.9+dfsg/contrib/libiconv/A00-do-not-build-preloadable-iconv-shared-library.patch handbrake-0.9.9+ppa1/contrib/libiconv/A00-do-not-build-preloadable-iconv-shared-library.patch --- handbrake-0.9.9+dfsg/contrib/libiconv/A00-do-not-build-preloadable-iconv-shared-library.patch 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/contrib/libiconv/A00-do-not-build-preloadable-iconv-shared-library.patch 2013-01-06 20:50:37.000000000 +0000 @@ -0,0 +1,106 @@ +From 766e19dd36c57330cf5985677a5af09e3165253b Mon Sep 17 00:00:00 2001 +From: Sean McGovern +Date: Wed, 31 Oct 2012 23:33:41 -0400 +Subject: [PATCH] do not build preloadable iconv shared library + +--- + Makefile.in | 20 ++++++++++---------- + 1 file changed, 10 insertions(+), 10 deletions(-) + +diff --git a/Makefile.in b/Makefile.in +index 8168cad..b27cbea 100644 +--- a/Makefile.in ++++ b/Makefile.in +@@ -31,7 +31,7 @@ SHELL = /bin/sh + + all : lib/localcharset.h force + cd lib && $(MAKE) all +- cd preload && $(MAKE) all ++# cd preload && $(MAKE) all + cd srclib && $(MAKE) all + cd src && $(MAKE) all + cd po && $(MAKE) all +@@ -51,7 +51,7 @@ install-lib : all force + install : lib/localcharset.h force + cd libcharset && $(MAKE) install prefix='$(prefix)' exec_prefix='$(exec_prefix)' libdir='$(libdir)' + cd lib && $(MAKE) install prefix='$(prefix)' exec_prefix='$(exec_prefix)' libdir='$(libdir)' +- cd preload && $(MAKE) install prefix='$(prefix)' exec_prefix='$(exec_prefix)' libdir='$(libdir)' ++# cd preload && $(MAKE) install prefix='$(prefix)' exec_prefix='$(exec_prefix)' libdir='$(libdir)' + cd srclib && $(MAKE) install prefix='$(prefix)' exec_prefix='$(exec_prefix)' libdir='$(libdir)' + cd src && $(MAKE) install prefix='$(prefix)' exec_prefix='$(exec_prefix)' libdir='$(libdir)' + if [ ! -d $(DESTDIR)$(includedir) ] ; then $(mkinstalldirs) $(DESTDIR)$(includedir) ; fi +@@ -62,7 +62,7 @@ install : lib/localcharset.h force + install-strip : lib/localcharset.h force + cd libcharset && $(MAKE) install-strip prefix='$(prefix)' exec_prefix='$(exec_prefix)' libdir='$(libdir)' + cd lib && $(MAKE) install-strip prefix='$(prefix)' exec_prefix='$(exec_prefix)' libdir='$(libdir)' +- cd preload && $(MAKE) install-strip prefix='$(prefix)' exec_prefix='$(exec_prefix)' libdir='$(libdir)' ++# cd preload && $(MAKE) install-strip prefix='$(prefix)' exec_prefix='$(exec_prefix)' libdir='$(libdir)' + cd srclib && $(MAKE) install-strip prefix='$(prefix)' exec_prefix='$(exec_prefix)' libdir='$(libdir)' + cd src && $(MAKE) install-strip prefix='$(prefix)' exec_prefix='$(exec_prefix)' libdir='$(libdir)' + if [ ! -d $(DESTDIR)$(includedir) ] ; then $(mkinstalldirs) $(DESTDIR)$(includedir) ; fi +@@ -73,7 +73,7 @@ install-strip : lib/localcharset.h force + installdirs : force + cd libcharset && $(MAKE) installdirs prefix='$(prefix)' exec_prefix='$(exec_prefix)' libdir='$(libdir)' + cd lib && $(MAKE) installdirs prefix='$(prefix)' exec_prefix='$(exec_prefix)' libdir='$(libdir)' +- cd preload && $(MAKE) installdirs prefix='$(prefix)' exec_prefix='$(exec_prefix)' libdir='$(libdir)' ++# cd preload && $(MAKE) installdirs prefix='$(prefix)' exec_prefix='$(exec_prefix)' libdir='$(libdir)' + cd srclib && $(MAKE) installdirs prefix='$(prefix)' exec_prefix='$(exec_prefix)' libdir='$(libdir)' + cd src && $(MAKE) installdirs prefix='$(prefix)' exec_prefix='$(exec_prefix)' libdir='$(libdir)' + if [ ! -d $(DESTDIR)$(includedir) ] ; then $(mkinstalldirs) $(DESTDIR)$(includedir) ; fi +@@ -83,7 +83,7 @@ installdirs : force + uninstall : force + cd libcharset && $(MAKE) uninstall prefix='$(prefix)' exec_prefix='$(exec_prefix)' libdir='$(libdir)' + cd lib && $(MAKE) uninstall prefix='$(prefix)' exec_prefix='$(exec_prefix)' libdir='$(libdir)' +- cd preload && $(MAKE) uninstall prefix='$(prefix)' exec_prefix='$(exec_prefix)' libdir='$(libdir)' ++# cd preload && $(MAKE) uninstall prefix='$(prefix)' exec_prefix='$(exec_prefix)' libdir='$(libdir)' + cd srclib && $(MAKE) uninstall prefix='$(prefix)' exec_prefix='$(exec_prefix)' libdir='$(libdir)' + cd src && $(MAKE) uninstall prefix='$(prefix)' exec_prefix='$(exec_prefix)' libdir='$(libdir)' + $(RM) $(DESTDIR)$(includedir)/iconv.h +@@ -93,7 +93,7 @@ uninstall : force + check : all force + cd libcharset && $(MAKE) check + cd lib && $(MAKE) check +- cd preload && $(MAKE) check ++# cd preload && $(MAKE) check + cd srclib && $(MAKE) check + cd src && $(MAKE) check + cd po && $(MAKE) check +@@ -104,7 +104,7 @@ mostlyclean : force + cd libcharset && $(MAKE) mostlyclean + $(RM) lib/charset.alias lib/libcharset.* lib/localcharset.h + cd lib && $(MAKE) mostlyclean +- cd preload && $(MAKE) mostlyclean ++# cd preload && $(MAKE) mostlyclean + cd srclib && $(MAKE) mostlyclean + cd src && $(MAKE) mostlyclean + cd po && $(MAKE) mostlyclean +@@ -116,7 +116,7 @@ clean : force + cd libcharset && $(MAKE) clean + $(RM) lib/charset.alias lib/libcharset.* lib/localcharset.h + cd lib && $(MAKE) clean +- cd preload && $(MAKE) clean ++# cd preload && $(MAKE) clean + cd srclib && $(MAKE) clean + cd src && $(MAKE) clean + cd po && $(MAKE) clean +@@ -128,7 +128,7 @@ distclean : force + cd libcharset && if test -f Makefile; then $(MAKE) distclean; fi + $(RM) lib/charset.alias lib/libcharset.* lib/localcharset.h + cd lib && if test -f Makefile; then $(MAKE) distclean; fi +- cd preload && if test -f Makefile; then $(MAKE) distclean; fi ++# cd preload && if test -f Makefile; then $(MAKE) distclean; fi + cd srclib && if test -f Makefile; then $(MAKE) distclean; fi + cd src && if test -f Makefile; then $(MAKE) distclean; fi + cd po && if test -f Makefile; then $(MAKE) distclean; fi +@@ -143,7 +143,7 @@ maintainer-clean : force + cd libcharset && if test -f Makefile; then $(MAKE) maintainer-clean; fi + $(RM) lib/charset.alias lib/libcharset.* lib/localcharset.h + cd lib && if test -f Makefile; then $(MAKE) maintainer-clean; fi +- cd preload && if test -f Makefile; then $(MAKE) maintainer-clean; fi ++# cd preload && if test -f Makefile; then $(MAKE) maintainer-clean; fi + cd srclib && if test -f Makefile; then $(MAKE) maintainer-clean; fi + cd src && if test -f Makefile; then $(MAKE) maintainer-clean; fi + cd po && if test -f Makefile; then $(MAKE) maintainer-clean; fi +-- +1.7.12 + diff -Nru handbrake-0.9.9+dfsg/contrib/libiconv/module.defs handbrake-0.9.9+ppa1/contrib/libiconv/module.defs --- handbrake-0.9.9+dfsg/contrib/libiconv/module.defs 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/contrib/libiconv/module.defs 2011-02-04 19:54:10.000000000 +0000 @@ -0,0 +1,4 @@ +$(eval $(call import.MODULE.defs,LIBICONV,libiconv)) +$(eval $(call import.CONTRIB.defs,LIBICONV)) + +LIBICONV.FETCH.url = http://download.handbrake.fr/handbrake/contrib/libiconv-1.13.tar.bz2 diff -Nru handbrake-0.9.9+dfsg/contrib/libiconv/module.rules handbrake-0.9.9+ppa1/contrib/libiconv/module.rules --- handbrake-0.9.9+dfsg/contrib/libiconv/module.rules 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/contrib/libiconv/module.rules 2009-06-23 22:59:36.000000000 +0000 @@ -0,0 +1,2 @@ +$(eval $(call import.MODULE.rules,LIBICONV)) +$(eval $(call import.CONTRIB.rules,LIBICONV)) diff -Nru handbrake-0.9.9+dfsg/contrib/libmkv/A00-private-data-offset.patch handbrake-0.9.9+ppa1/contrib/libmkv/A00-private-data-offset.patch --- handbrake-0.9.9+dfsg/contrib/libmkv/A00-private-data-offset.patch 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/contrib/libmkv/A00-private-data-offset.patch 2011-10-14 23:01:20.000000000 +0000 @@ -0,0 +1,12 @@ +diff --git a/src/matroska.c b/src/matroska.c +index 45d5b1e..faa29d2 100644 +--- a/src/matroska.c ++++ b/src/matroska.c +@@ -174,6 +174,7 @@ int mk_writeHeader(mk_Writer *w, const char *writingApp) + w->seek_data.tracks = w->root->d_cur - w->segment_ptr; + + if (w->tracks) { ++ offset = 0; + CHECK(mk_closeContext(w->tracks, &offset)); + for (i = 0; i < w->num_tracks; i++) { + tk = w->tracks_arr[i]; diff -Nru handbrake-0.9.9+dfsg/contrib/libmkv/A01-hbmv-pgs.patch handbrake-0.9.9+ppa1/contrib/libmkv/A01-hbmv-pgs.patch --- handbrake-0.9.9+dfsg/contrib/libmkv/A01-hbmv-pgs.patch 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/contrib/libmkv/A01-hbmv-pgs.patch 2012-06-18 20:44:24.000000000 +0000 @@ -0,0 +1,12 @@ +diff --git a/include/libmkv.h b/include/libmkv.h +index 146a91f..f03d608 100644 +--- a/include/libmkv.h ++++ b/include/libmkv.h +@@ -94,6 +94,7 @@ extern "C" { + #define MK_SUBTITLE_USF "S_TEXT/USF" + #define MK_SUBTITLE_VOBSUB "S_VOBSUB" + #define MK_SUBTITLE_BMP "S_IMAGE/BMP" ++#define MK_SUBTITLE_PGS "S_HDMV/PGS" + + /* Official Tags */ + #define MK_TAG_TITLE "TITLE" diff -Nru handbrake-0.9.9+dfsg/contrib/libmkv/A02-audio-out-sampling-freq.patch handbrake-0.9.9+ppa1/contrib/libmkv/A02-audio-out-sampling-freq.patch --- handbrake-0.9.9+dfsg/contrib/libmkv/A02-audio-out-sampling-freq.patch 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/contrib/libmkv/A02-audio-out-sampling-freq.patch 2012-06-18 20:44:24.000000000 +0000 @@ -0,0 +1,28 @@ +diff --git a/include/libmkv.h b/include/libmkv.h +index 146a91f..f03d608 100644 +--- a/include/libmkv.h ++++ b/include/libmkv.h +@@ -203,6 +204,7 @@ struct mk_TrackConfig_s { + } video; + struct { + float samplingFreq; /* Sampling Frequency in Hz */ ++ float outputSamplingFreq; /* Playback Sampling Frequency in Hz (e.g. for AAC w/SBR) */ + unsigned channels; /* Number of channels for this track */ + unsigned bitDepth; /* Bits per sample (PCM) */ + } audio; +diff --git a/src/tracks.c b/src/tracks.c +index f9c7e48..a2a60ca 100644 +--- a/src/tracks.c ++++ b/src/tracks.c +@@ -174,6 +174,11 @@ mk_Track *mk_createTrack(mk_Writer *w, mk_TrackConfig *tc) + /* SamplingFrequency */ + if (mk_writeFloat(v, MATROSKA_ID_AUDIOSAMPLINGFREQ, tc->extra.audio.samplingFreq) < 0) + return NULL; ++ if (tc->extra.audio.outputSamplingFreq) { ++ /* Output SamplingFrequency */ ++ if (mk_writeFloat(v, MATROSKA_ID_AUDIOOUTSAMPLINGFREQ, tc->extra.audio.outputSamplingFreq) < 0) ++ return NULL; ++ } + /* Channels */ + if (mk_writeUInt(v, MATROSKA_ID_AUDIOCHANNELS, tc->extra.audio.channels) < 0) + return NULL; diff -Nru handbrake-0.9.9+dfsg/contrib/libmkv/module.defs handbrake-0.9.9+ppa1/contrib/libmkv/module.defs --- handbrake-0.9.9+dfsg/contrib/libmkv/module.defs 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/contrib/libmkv/module.defs 2012-09-08 20:59:47.000000000 +0000 @@ -0,0 +1,10 @@ +$(eval $(call import.MODULE.defs,LIBMKV,libmkv)) +$(eval $(call import.CONTRIB.defs,LIBMKV)) + +LIBMKV.FETCH.url = http://download.handbrake.fr/handbrake/contrib/libmkv-0.6.5-0-g82075ae.tar.gz + +LIBMKV.CONFIGURE.bootstrap = rm -fr aclocal.m4 autom4te.cache; mkdir m4; autoreconf -fiv; + +ifeq (mingw,$(BUILD.system)) + LIBMKV.GCC.D += random=rand srandom=srand +endif diff -Nru handbrake-0.9.9+dfsg/contrib/libmkv/module.rules handbrake-0.9.9+ppa1/contrib/libmkv/module.rules --- handbrake-0.9.9+dfsg/contrib/libmkv/module.rules 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/contrib/libmkv/module.rules 2009-03-01 17:28:24.000000000 +0000 @@ -0,0 +1,2 @@ +$(eval $(call import.MODULE.rules,LIBMKV)) +$(eval $(call import.CONTRIB.rules,LIBMKV)) diff -Nru handbrake-0.9.9+dfsg/contrib/libmkv/P00-mingw-large-file.patch handbrake-0.9.9+ppa1/contrib/libmkv/P00-mingw-large-file.patch --- handbrake-0.9.9+dfsg/contrib/libmkv/P00-mingw-large-file.patch 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/contrib/libmkv/P00-mingw-large-file.patch 2009-04-14 20:10:57.000000000 +0000 @@ -0,0 +1,24 @@ +--- libmkv.orig/src/matroska.c 2009-01-12 23:14:26.000000000 -0800 ++++ libmkv/src/matroska.c 2009-03-25 15:22:30.000000000 -0700 +@@ -27,6 +27,11 @@ + + #include + ++#if defined( __MINGW32__ ) ++#undef fseeko ++#define fseeko fseeko64 ++#endif ++ + #define RESERVED_SEEKHEAD 0x100 + /* 256 bytes should be enough room for our Seek entries. */ + #define RESERVED_CHAPTERS 0x800 +@@ -34,7 +39,7 @@ + + int mk_seekFile(mk_Writer *w, uint64_t pos) + { +- if (fseek(w->fp, pos, SEEK_SET)) ++ if (fseeko(w->fp, pos, SEEK_SET)) + return -1; + + w->f_pos = pos; + diff -Nru handbrake-0.9.9+dfsg/contrib/libogg/A00-automake.patch handbrake-0.9.9+ppa1/contrib/libogg/A00-automake.patch --- handbrake-0.9.9+dfsg/contrib/libogg/A00-automake.patch 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/contrib/libogg/A00-automake.patch 2013-01-29 05:06:25.000000000 +0000 @@ -0,0 +1,12 @@ +diff -Naur libogg-1.3.0.orig/configure.in libogg-1.3.0/configure.in +--- libogg-1.3.0.orig/configure.in 2011-08-04 13:11:08.000000000 -0400 ++++ libogg-1.3.0/configure.in 2013-01-28 23:40:03.000000000 -0500 +@@ -19,7 +19,7 @@ + AM_PROG_CC_C_O + + dnl config.h +-AM_CONFIG_HEADER(config.h) ++AC_CONFIG_HEADER(config.h) + + dnl Set some options based on environment + diff -Nru handbrake-0.9.9+dfsg/contrib/libogg/module.defs handbrake-0.9.9+ppa1/contrib/libogg/module.defs --- handbrake-0.9.9+dfsg/contrib/libogg/module.defs 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/contrib/libogg/module.defs 2011-10-21 17:44:46.000000000 +0000 @@ -0,0 +1,9 @@ +$(eval $(call import.MODULE.defs,LIBOGG,libogg)) +$(eval $(call import.CONTRIB.defs,LIBOGG)) + +LIBOGG.FETCH.url = http://download.handbrake.fr/handbrake/contrib/libogg-1.3.0.tar.gz +LIBOGG.EXTRACT.tarbase = libogg-1.3.0 + +LIBOGG.CONFIGURE.extra = --disable-sdl + +LIBOGG.CONFIGURE.bootstrap = rm -fr aclocal.m4 autom4te.cache configure; autoreconf -fiv; diff -Nru handbrake-0.9.9+dfsg/contrib/libogg/module.rules handbrake-0.9.9+ppa1/contrib/libogg/module.rules --- handbrake-0.9.9+dfsg/contrib/libogg/module.rules 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/contrib/libogg/module.rules 2009-03-01 17:28:24.000000000 +0000 @@ -0,0 +1,2 @@ +$(eval $(call import.MODULE.rules,LIBOGG)) +$(eval $(call import.CONTRIB.rules,LIBOGG)) diff -Nru handbrake-0.9.9+dfsg/contrib/libogg/P00-darwin-O4.patch handbrake-0.9.9+ppa1/contrib/libogg/P00-darwin-O4.patch --- handbrake-0.9.9+dfsg/contrib/libogg/P00-darwin-O4.patch 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/contrib/libogg/P00-darwin-O4.patch 2011-10-21 17:44:46.000000000 +0000 @@ -0,0 +1,13 @@ +--- libogg-1.3.0.orig/configure.in 2011-08-04 10:11:08.000000000 -0700 ++++ libogg-1.3.0/configure.in 2011-10-19 14:31:35.370790124 -0700 +@@ -56,8 +56,8 @@ + ;; + *-*-darwin*) + DEBUG="-fno-common -g -Wall -fsigned-char" +- CFLAGS="-fno-common -O4 -Wall -fsigned-char -ffast-math" +- PROFILE="-fno-common -O4 -Wall -pg -g -fsigned-char -ffast-math" ++ CFLAGS="-fno-common -O3 -Wall -fsigned-char -ffast-math" ++ PROFILE="-fno-common -O3 -Wall -pg -g -fsigned-char -ffast-math" + ;; + *) + DEBUG="-g -Wall -fsigned-char" diff -Nru handbrake-0.9.9+dfsg/contrib/libogg/P01-darwin-automake-1.10.patch handbrake-0.9.9+ppa1/contrib/libogg/P01-darwin-automake-1.10.patch --- handbrake-0.9.9+dfsg/contrib/libogg/P01-darwin-automake-1.10.patch 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/contrib/libogg/P01-darwin-automake-1.10.patch 2011-10-21 17:44:46.000000000 +0000 @@ -0,0 +1,11 @@ +--- libogg-1.3.0.orig/Makefile.am 2011-08-04 10:37:15.000000000 -0700 ++++ libogg-1.3.0/Makefile.am 2011-10-19 14:31:58.203289946 -0700 +@@ -2,7 +2,7 @@ + + + #AUTOMAKE_OPTIONS = foreign 1.6 dist-zip +-AUTOMAKE_OPTIONS = foreign 1.11 dist-zip dist-xz ++AUTOMAKE_OPTIONS = foreign 1.10 dist-zip + + SUBDIRS = src include doc + diff -Nru handbrake-0.9.9+dfsg/contrib/libsamplerate/module.defs handbrake-0.9.9+ppa1/contrib/libsamplerate/module.defs --- handbrake-0.9.9+dfsg/contrib/libsamplerate/module.defs 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/contrib/libsamplerate/module.defs 2013-02-15 12:48:19.000000000 +0000 @@ -0,0 +1,8 @@ +$(eval $(call import.MODULE.defs,LIBSAMPLERATE,libsamplerate)) +$(eval $(call import.CONTRIB.defs,LIBSAMPLERATE)) + +LIBSAMPLERATE.FETCH.url = http://download.handbrake.fr/handbrake/contrib/libsamplerate-0.1.4.tar.gz +LIBSAMPLERATE.EXTRACT.tarbase = libsamplerate + +# Disable to avoid Carbon.h dependency on OSX +LIBSAMPLERATE.CONFIGURE.extra = --disable-sndfile diff -Nru handbrake-0.9.9+dfsg/contrib/libsamplerate/module.rules handbrake-0.9.9+ppa1/contrib/libsamplerate/module.rules --- handbrake-0.9.9+dfsg/contrib/libsamplerate/module.rules 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/contrib/libsamplerate/module.rules 2009-03-01 17:28:24.000000000 +0000 @@ -0,0 +1,2 @@ +$(eval $(call import.MODULE.rules,LIBSAMPLERATE)) +$(eval $(call import.CONTRIB.rules,LIBSAMPLERATE)) diff -Nru handbrake-0.9.9+dfsg/contrib/libtheora/module.defs handbrake-0.9.9+ppa1/contrib/libtheora/module.defs --- handbrake-0.9.9+dfsg/contrib/libtheora/module.defs 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/contrib/libtheora/module.defs 2012-09-10 12:18:39.000000000 +0000 @@ -0,0 +1,14 @@ +$(eval $(call import.MODULE.defs,LIBTHEORA,libtheora,LIBOGG LIBVORBIS)) +$(eval $(call import.CONTRIB.defs,LIBTHEORA)) + +LIBTHEORA.FETCH.url = http://download.handbrake.fr/handbrake/contrib/libtheora-1.1.0.tar.bz2 + +LIBTHEORA.CONFIGURE.extra = \ + --disable-examples \ + --disable-oggtest \ + --disable-sdltest \ + --disable-vorbistest \ + --disable-spec \ + --with-ogg=$(call fn.ABSOLUTE,$(CONTRIB.build/)) \ + --with-vorbis=$(call fn.ABSOLUTE,$(CONTRIB.build/)) \ + HAVE_PKG_CONFIG=no diff -Nru handbrake-0.9.9+dfsg/contrib/libtheora/module.rules handbrake-0.9.9+ppa1/contrib/libtheora/module.rules --- handbrake-0.9.9+dfsg/contrib/libtheora/module.rules 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/contrib/libtheora/module.rules 2009-03-01 17:28:24.000000000 +0000 @@ -0,0 +1,2 @@ +$(eval $(call import.MODULE.rules,LIBTHEORA)) +$(eval $(call import.CONTRIB.rules,LIBTHEORA)) diff -Nru handbrake-0.9.9+dfsg/contrib/libtool/module.defs handbrake-0.9.9+ppa1/contrib/libtool/module.defs --- handbrake-0.9.9+dfsg/contrib/libtool/module.defs 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/contrib/libtool/module.defs 2012-09-07 20:10:37.000000000 +0000 @@ -0,0 +1,4 @@ +$(eval $(call import.MODULE.defs,LIBTOOL,libtool,AUTOCONF AUTOMAKE)) +$(eval $(call import.CONTRIB.defs,LIBTOOL)) + +LIBTOOL.FETCH.url = http://download.handbrake.fr/handbrake/contrib/libtool-2.4.2.tar.bz2 diff -Nru handbrake-0.9.9+dfsg/contrib/libtool/module.rules handbrake-0.9.9+ppa1/contrib/libtool/module.rules --- handbrake-0.9.9+dfsg/contrib/libtool/module.rules 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/contrib/libtool/module.rules 2012-09-07 20:10:37.000000000 +0000 @@ -0,0 +1,2 @@ +$(eval $(call import.MODULE.rules,LIBTOOL)) +$(eval $(call import.CONTRIB.rules,LIBTOOL)) diff -Nru handbrake-0.9.9+dfsg/contrib/libvorbis/A00-automake.patch handbrake-0.9.9+ppa1/contrib/libvorbis/A00-automake.patch --- handbrake-0.9.9+dfsg/contrib/libvorbis/A00-automake.patch 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/contrib/libvorbis/A00-automake.patch 2013-01-29 05:06:25.000000000 +0000 @@ -0,0 +1,12 @@ +diff -Naur aotuv-b6.03_20110424.orig/configure.ac aotuv-b6.03_20110424/configure.ac +--- aotuv-b6.03_20110424.orig/configure.ac 2010-11-01 15:27:12.000000000 -0400 ++++ aotuv-b6.03_20110424/configure.ac 2013-01-28 23:43:26.000000000 -0500 +@@ -13,7 +13,7 @@ + + AM_INIT_AUTOMAKE($PACKAGE_NAME,$PACKAGE_VERSION) + AM_MAINTAINER_MODE +-AM_CONFIG_HEADER([config.h]) ++AC_CONFIG_HEADER([config.h]) + + dnl Add parameters for aclocal + AC_SUBST(ACLOCAL_AMFLAGS, "-I m4") diff -Nru handbrake-0.9.9+dfsg/contrib/libvorbis/module.defs handbrake-0.9.9+ppa1/contrib/libvorbis/module.defs --- handbrake-0.9.9+dfsg/contrib/libvorbis/module.defs 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/contrib/libvorbis/module.defs 2011-10-21 17:44:51.000000000 +0000 @@ -0,0 +1,9 @@ +$(eval $(call import.MODULE.defs,LIBVORBIS,libvorbis,LIBOGG)) +$(eval $(call import.CONTRIB.defs,LIBVORBIS)) + +LIBVORBIS.FETCH.url = http://download.handbrake.fr/handbrake/contrib/libvorbis-aotuv_b6.03.tar.bz2 +LIBVORBIS.EXTRACT.tarbase = aotuv-b6.03_20110424 + +LIBVORBIS.CONFIGURE.extra = --with-ogg=$(call fn.ABSOLUTE,$(CONTRIB.build/)) HAVE_PKG_CONFIG="no" + +LIBVORBIS.CONFIGURE.bootstrap = rm -fr aclocal.m4 autom4te.cache configure; autoreconf -I m4 -fiv; diff -Nru handbrake-0.9.9+dfsg/contrib/libvorbis/module.rules handbrake-0.9.9+ppa1/contrib/libvorbis/module.rules --- handbrake-0.9.9+dfsg/contrib/libvorbis/module.rules 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/contrib/libvorbis/module.rules 2009-03-01 17:28:24.000000000 +0000 @@ -0,0 +1,2 @@ +$(eval $(call import.MODULE.rules,LIBVORBIS)) +$(eval $(call import.CONTRIB.rules,LIBVORBIS)) diff -Nru handbrake-0.9.9+dfsg/contrib/libvorbis/P00-darwin-O4.patch handbrake-0.9.9+ppa1/contrib/libvorbis/P00-darwin-O4.patch --- handbrake-0.9.9+dfsg/contrib/libvorbis/P00-darwin-O4.patch 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/contrib/libvorbis/P00-darwin-O4.patch 2011-10-21 17:44:51.000000000 +0000 @@ -0,0 +1,21 @@ +--- aotuv-b6.03_20110424.orig/configure.ac 2010-11-01 12:27:12.000000000 -0700 ++++ aotuv-b6.03_20110424/configure.ac 2011-10-19 16:58:27.295806257 -0700 +@@ -7,6 +7,7 @@ + + AC_INIT([libvorbis],[1.3.2],[vorbis-dev@xiph.org]) + ++AC_CONFIG_MACRO_DIR([m4]) + AC_CONFIG_SRCDIR([lib/mdct.c]) + + AC_CANONICAL_TARGET([]) +@@ -199,8 +200,8 @@ + PROFILE="-pg -g -O20 -D__NO_MATH_INLINES -fsigned-char $sparc_cpu" ;; + *-*-darwin*) + DEBUG="-DDARWIN -fno-common -force_cpusubtype_ALL -Wall -g -O0 -fsigned-char" +- CFLAGS="-DDARWIN -fno-common -force_cpusubtype_ALL -Wall -g -O4 -ffast-math -fsigned-char" +- PROFILE="-DDARWIN -fno-common -force_cpusubtype_ALL -Wall -g -pg -O4 -ffast-math -fsigned-char";; ++ CFLAGS="-DDARWIN -fno-common -force_cpusubtype_ALL -Wall -g -O3 -ffast-math -fsigned-char" ++ PROFILE="-DDARWIN -fno-common -force_cpusubtype_ALL -Wall -g -pg -O3 -ffast-math -fsigned-char";; + *-*-os2*) + # Use -W instead of -Wextra because gcc on OS/2 is an old version. + DEBUG="-g -Wall -W -D_REENTRANT -D__NO_MATH_INLINES -fsigned-char" diff -Nru handbrake-0.9.9+dfsg/contrib/libvorbis/P01-darwin-automake.patch handbrake-0.9.9+ppa1/contrib/libvorbis/P01-darwin-automake.patch --- handbrake-0.9.9+dfsg/contrib/libvorbis/P01-darwin-automake.patch 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/contrib/libvorbis/P01-darwin-automake.patch 2011-10-21 17:44:51.000000000 +0000 @@ -0,0 +1,9 @@ +--- aotuv-b6.03_20110424.orig/Makefile.am 2010-03-25 18:56:26.000000000 -0700 ++++ aotuv-b6.03_20110424/Makefile.am 2011-10-19 16:59:21.274432667 -0700 +@@ -1,5 +1,6 @@ + ## Process this file with automake to produce Makefile.in + ++ACLOCAL_AMFLAGS= -I m4 + AUTOMAKE_OPTIONS = 1.7 foreign dist-zip dist-bzip2 + + SUBDIRS = m4 include vq lib test doc diff -Nru handbrake-0.9.9+dfsg/contrib/libxml2/module.defs handbrake-0.9.9+ppa1/contrib/libxml2/module.defs --- handbrake-0.9.9+dfsg/contrib/libxml2/module.defs 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/contrib/libxml2/module.defs 2012-10-04 16:54:02.000000000 +0000 @@ -0,0 +1,11 @@ +__deps__ := LIBICONV +$(eval $(call import.MODULE.defs,LIBXML2,libxml2,$(__deps__))) +$(eval $(call import.CONTRIB.defs,LIBXML2)) + +LIBXML2.FETCH.url = http://download.handbrake.fr/handbrake/contrib/libxml2-2.7.7.tar.gz +LIBXML2.EXTRACT.tarbase = libxml2-2.7.7 + +# The Python components do not build on MinGW due to the lack of a select() call +# in the MinGW environment. +LIBXML2.CONFIGURE.extra = \ + --without-python --without-threads diff -Nru handbrake-0.9.9+dfsg/contrib/libxml2/module.rules handbrake-0.9.9+ppa1/contrib/libxml2/module.rules --- handbrake-0.9.9+dfsg/contrib/libxml2/module.rules 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/contrib/libxml2/module.rules 2010-09-28 22:10:49.000000000 +0000 @@ -0,0 +1,2 @@ +$(eval $(call import.MODULE.rules,LIBXML2)) +$(eval $(call import.CONTRIB.rules,LIBXML2)) diff -Nru handbrake-0.9.9+dfsg/contrib/m4/module.defs handbrake-0.9.9+ppa1/contrib/m4/module.defs --- handbrake-0.9.9+dfsg/contrib/m4/module.defs 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/contrib/m4/module.defs 2012-09-07 20:10:37.000000000 +0000 @@ -0,0 +1,4 @@ +$(eval $(call import.MODULE.defs,M4,m4)) +$(eval $(call import.CONTRIB.defs,M4)) + +M4.FETCH.url = http://download.handbrake.fr/handbrake/contrib/m4-1.4.16.tar.bz2 diff -Nru handbrake-0.9.9+dfsg/contrib/m4/module.rules handbrake-0.9.9+ppa1/contrib/m4/module.rules --- handbrake-0.9.9+dfsg/contrib/m4/module.rules 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/contrib/m4/module.rules 2012-09-07 20:10:37.000000000 +0000 @@ -0,0 +1,2 @@ +$(eval $(call import.MODULE.rules,M4)) +$(eval $(call import.CONTRIB.rules,M4)) diff -Nru handbrake-0.9.9+dfsg/contrib/mp4v2/A00-nero-vobsub.patch handbrake-0.9.9+ppa1/contrib/mp4v2/A00-nero-vobsub.patch --- handbrake-0.9.9+dfsg/contrib/mp4v2/A00-nero-vobsub.patch 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/contrib/mp4v2/A00-nero-vobsub.patch 2010-05-24 21:53:48.000000000 +0000 @@ -0,0 +1,142 @@ +diff -Naur mp4v2-trunk-r355/include/mp4v2/general.h mp4v2-trunk-r355/include/mp4v2/general.h +--- mp4v2-trunk-r355/include/mp4v2/general.h 2009-05-23 06:09:58.000000000 -0700 ++++ mp4v2-trunk-r355/include/mp4v2/general.h 2010-05-23 14:22:21.949288657 -0700 +@@ -75,6 +75,7 @@ + #define MP4_CNTL_TRACK_TYPE "cntl" /**< Constant: control track. */ + #define MP4_TEXT_TRACK_TYPE "text" /**< Constant: text track. */ + #define MP4_SUBTITLE_TRACK_TYPE "sbtl" /**< Constant: subtitle track. */ ++#define MP4_SUBPIC_TRACK_TYPE "subp" /**< Constant: subtitle track. */ + /* + * This second set of track types should be created + * via MP4AddSystemsTrack(type) +diff -Naur mp4v2-trunk-r355/include/mp4v2/track.h mp4v2-trunk-r355/include/mp4v2/track.h +--- mp4v2-trunk-r355/include/mp4v2/track.h 2009-05-23 06:21:49.000000000 -0700 ++++ mp4v2-trunk-r355/include/mp4v2/track.h 2010-05-23 15:43:47.249286008 -0700 +@@ -310,6 +310,13 @@ + uint16_t height ); + + MP4V2_EXPORT ++MP4TrackId MP4AddSubpicTrack( ++ MP4FileHandle hFile, ++ uint32_t timescale, ++ uint16_t width, ++ uint16_t height ); ++ ++MP4V2_EXPORT + MP4TrackId MP4AddPixelAspectRatio( + MP4FileHandle hFile, + MP4TrackId refTrackId, +diff -Naur mp4v2-trunk-r355/src/descriptors.h mp4v2-trunk-r355/src/descriptors.h +--- mp4v2-trunk-r355/src/descriptors.h 2009-05-20 19:52:32.000000000 -0700 ++++ mp4v2-trunk-r355/src/descriptors.h 2010-05-23 16:29:34.800935677 -0700 +@@ -119,6 +119,7 @@ + // ES objectTypeId + const uint8_t MP4SystemsV1ObjectType = 0x01; + const uint8_t MP4SystemsV2ObjectType = 0x02; ++const uint8_t MP4SubpicObjectType = 0xe0; + + // ES streamType + const uint8_t MP4ObjectDescriptionStreamType = 0x01; +@@ -131,6 +132,7 @@ + const uint8_t MP4OCIStreamType = 0x08; + const uint8_t MP4MPEGJStreamType = 0x09; + const uint8_t MP4UserPrivateStreamType = 0x20; ++const uint8_t MP4NeroSubpicStreamType = 0x38; + + /////////////////////////////////////////////////////////////////////////////// + +diff -Naur mp4v2-trunk-r355/src/mp4.cpp mp4v2-trunk-r355/src/mp4.cpp +--- mp4v2-trunk-r355/src/mp4.cpp 2009-05-23 06:29:37.000000000 -0700 ++++ mp4v2-trunk-r355/src/mp4.cpp 2010-05-23 15:45:28.852222074 -0700 +@@ -1174,6 +1174,23 @@ + return MP4_INVALID_TRACK_ID; + } + ++ MP4TrackId MP4AddSubpicTrack(MP4FileHandle hFile, ++ uint32_t timescale, ++ uint16_t width, ++ uint16_t height) ++ { ++ if (MP4_IS_VALID_FILE_HANDLE(hFile)) { ++ try { ++ return ((MP4File*)hFile)->AddSubpicTrack(timescale, width, height); ++ } ++ catch (MP4Error* e) { ++ PRINT_ERROR(e); ++ delete e; ++ } ++ } ++ return MP4_INVALID_TRACK_ID; ++ } ++ + MP4TrackId MP4AddChapterTextTrack( + MP4FileHandle hFile, MP4TrackId refTrackId, uint32_t timescale) + { +diff -Naur mp4v2-trunk-r355/src/mp4file.cpp mp4v2-trunk-r355/src/mp4file.cpp +--- mp4v2-trunk-r355/src/mp4file.cpp 2009-05-26 19:34:56.000000000 -0700 ++++ mp4v2-trunk-r355/src/mp4file.cpp 2010-05-23 16:32:52.654220633 -0700 +@@ -2095,6 +2095,50 @@ + return trackId; + } + ++MP4TrackId MP4File::AddSubpicTrack(uint32_t timescale, ++ uint16_t width, ++ uint16_t height) ++{ ++ MP4TrackId trackId = ++ AddTrack(MP4_SUBPIC_TRACK_TYPE, timescale); ++ ++ InsertChildAtom(MakeTrackName(trackId, "mdia.minf"), "nmhd", 0); ++ ++ (void)AddChildAtom(MakeTrackName(trackId, "mdia.minf.stbl.stsd"), "mp4s"); ++ ++ SetTrackFloatProperty(trackId, "tkhd.width", width); ++ SetTrackFloatProperty(trackId, "tkhd.height", height); ++ SetTrackIntegerProperty(trackId, "tkhd.layer", 0); ++ ++ // stsd is a unique beast in that it has a count of the number ++ // of child atoms that needs to be incremented after we add the mp4s atom ++ MP4Integer32Property* pStsdCountProperty; ++ FindIntegerProperty( ++ MakeTrackName(trackId, "mdia.minf.stbl.stsd.entryCount"), ++ (MP4Property**)&pStsdCountProperty); ++ pStsdCountProperty->IncrementValue(); ++ ++ SetTrackIntegerProperty(trackId, ++ "mdia.minf.stbl.stsd.mp4s.esds.ESID", ++#if 0 ++ // note - for a file, these values need to ++ // be 0 - wmay - 04/16/2003 ++ trackId ++#else ++ 0 ++#endif ++ ); ++ ++ SetTrackIntegerProperty(trackId, ++ "mdia.minf.stbl.stsd.mp4s.esds.decConfigDescr.objectTypeId", ++ MP4SubpicObjectType); ++ ++ SetTrackIntegerProperty(trackId, ++ "mdia.minf.stbl.stsd.mp4s.esds.decConfigDescr.streamType", ++ MP4NeroSubpicStreamType); ++ return trackId; ++} ++ + MP4TrackId MP4File::AddChapterTextTrack(MP4TrackId refTrackId, uint32_t timescale) + { + // validate reference track id +diff -Naur mp4v2-trunk-r355/src/mp4file.h mp4v2-trunk-r355/src/mp4file.h +--- mp4v2-trunk-r355/src/mp4file.h 2009-05-23 06:29:37.000000000 -0700 ++++ mp4v2-trunk-r355/src/mp4file.h 2010-05-23 15:44:57.568026299 -0700 +@@ -388,6 +388,10 @@ + uint16_t width, + uint16_t height); + ++ MP4TrackId AddSubpicTrack(uint32_t timescale, ++ uint16_t width, ++ uint16_t height); ++ + MP4TrackId AddPixelAspectRatio(MP4TrackId trackId, uint32_t hSpacing, uint32_t vSpacing); + MP4TrackId AddColr(MP4TrackId trackId, uint16_t pri, uint16_t tran, uint16_t mat); + diff -Nru handbrake-0.9.9+dfsg/contrib/mp4v2/A01-divide-zero.patch handbrake-0.9.9+ppa1/contrib/mp4v2/A01-divide-zero.patch --- handbrake-0.9.9+dfsg/contrib/mp4v2/A01-divide-zero.patch 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/contrib/mp4v2/A01-divide-zero.patch 2012-01-05 19:06:31.000000000 +0000 @@ -0,0 +1,22 @@ +--- mp4v2-r355/src/mp4track.cpp 2012-01-05 15:44:29.000000000 +0100 ++++ mp4v2-r355/src/mp4track.cpp 2012-01-05 15:47:34.000000000 +0100 +@@ -819,13 +819,14 @@ + (thisSecStart + timeScale) - lastSampleTime; + // calculate the duration of the last sample + MP4Duration lastSampleDur = sampleTime - lastSampleTime; +- uint32_t overflow_bytes; + // now, calculate the number of bytes we overflowed. Round up. +- overflow_bytes = +- ((lastSampleSize * overflow_dur) + (lastSampleDur - 1)) / lastSampleDur; ++ if( lastSampleDur > 0 ) { ++ uint32_t overflow_bytes = 0; ++ overflow_bytes = ((lastSampleSize * overflow_dur) + (lastSampleDur - 1)) / lastSampleDur; + +- if (bytesThisSec - overflow_bytes > maxBytesPerSec) { +- maxBytesPerSec = bytesThisSec - overflow_bytes; ++ if (bytesThisSec - overflow_bytes > maxBytesPerSec) { ++ maxBytesPerSec = bytesThisSec - overflow_bytes; ++ } + } + + // now adjust the values for this sample. Remove the bytes diff -Nru handbrake-0.9.9+dfsg/contrib/mp4v2/A02-meaningful-4gb-warning.patch handbrake-0.9.9+ppa1/contrib/mp4v2/A02-meaningful-4gb-warning.patch --- handbrake-0.9.9+dfsg/contrib/mp4v2/A02-meaningful-4gb-warning.patch 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/contrib/mp4v2/A02-meaningful-4gb-warning.patch 2012-02-25 00:43:11.000000000 +0000 @@ -0,0 +1,14 @@ +diff -Naur mp4v2-trunk-r355/src/mp4atom.cpp mp4v2-trunk-r355/src/mp4atom.cpp +--- mp4v2-trunk-r355/src/mp4atom.cpp 2012-02-21 19:40:03.000000000 +0100 ++++ mp4v2-trunk-r355/src/mp4atom.cpp 2012-02-21 19:36:38.000000000 +0100 +@@ -543,6 +543,10 @@ + m_pFile->SetPosition(m_start + 8); + m_pFile->WriteUInt64(m_size); + } else { ++ if (!(m_size <= (uint64_t)0xFFFFFFFF)) { ++ // Let the user know what the following assert is all about ++ fprintf(stderr, "MP4ERROR: File size exceeded 4 GB; output unplayable. Enable \"Large file size\" to fix it.\n"); ++ } + ASSERT(m_size <= (uint64_t)0xFFFFFFFF); + m_pFile->SetPosition(m_start); + m_pFile->WriteUInt32(m_size); diff -Nru handbrake-0.9.9+dfsg/contrib/mp4v2/module.defs handbrake-0.9.9+ppa1/contrib/mp4v2/module.defs --- handbrake-0.9.9+dfsg/contrib/mp4v2/module.defs 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/contrib/mp4v2/module.defs 2013-02-19 22:49:15.000000000 +0000 @@ -0,0 +1,14 @@ +$(eval $(call import.MODULE.defs,MP4V2,mp4v2)) +$(eval $(call import.CONTRIB.defs,MP4V2)) + +MP4V2.FETCH.url = http://download.handbrake.fr/handbrake/contrib/mp4v2-trunk-r355.tar.bz2 + +## propagate more flags +MP4V2.CONFIGURE.env.CFLAGS = CFLAGS="$(call fn.ARGS,MP4V2.GCC,*archs *sysroot *minver ?extra *D .g .O)" +MP4V2.CONFIGURE.env.CXXFLAGS = CXXFLAGS="$(call fn.ARGS,MP4V2.GCC,*archs *sysroot *minver ?extra *D .g .O)" + +## save some build-time by disabling utils +MP4V2.CONFIGURE.extra += --disable-util + +# gch causes build errors with -g3 on many gcc toolchains +MP4V2.CONFIGURE.extra += --disable-gch diff -Nru handbrake-0.9.9+dfsg/contrib/mp4v2/module.rules handbrake-0.9.9+ppa1/contrib/mp4v2/module.rules --- handbrake-0.9.9+dfsg/contrib/mp4v2/module.rules 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/contrib/mp4v2/module.rules 2009-05-23 16:03:16.000000000 +0000 @@ -0,0 +1,2 @@ +$(eval $(call import.MODULE.rules,MP4V2)) +$(eval $(call import.CONTRIB.rules,MP4V2)) diff -Nru handbrake-0.9.9+dfsg/contrib/mp4v2/P00-mingw-dllimport.patch handbrake-0.9.9+ppa1/contrib/mp4v2/P00-mingw-dllimport.patch --- handbrake-0.9.9+dfsg/contrib/mp4v2/P00-mingw-dllimport.patch 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/contrib/mp4v2/P00-mingw-dllimport.patch 2010-10-23 18:29:11.000000000 +0000 @@ -0,0 +1,11 @@ +--- mp4v2-trunk-r355/include/mp4v2/platform.h 2009-05-20 19:52:26.000000000 -0700 ++++ xxx/include/mp4v2/platform.h 2010-09-11 09:36:20.881523832 -0700 +@@ -24,7 +24,7 @@ + #if defined( _WIN32 ) || defined( __MINGW32__ ) + # if defined( _WINDLL ) || defined( DLL_EXPORT ) + # define MP4V2_EXPORT __declspec(dllexport) +-# elif defined( _DLL ) || defined( DLL_IMPORT ) ++# elif defined( DLL_IMPORT ) + # define MP4V2_EXPORT __declspec(dllimport) + # else + # define MP4V2_EXPORT diff -Nru handbrake-0.9.9+dfsg/contrib/mpeg2dec/A00-tags.patch handbrake-0.9.9+ppa1/contrib/mpeg2dec/A00-tags.patch --- handbrake-0.9.9+dfsg/contrib/mpeg2dec/A00-tags.patch 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/contrib/mpeg2dec/A00-tags.patch 2009-07-13 05:47:33.000000000 +0000 @@ -0,0 +1,27 @@ +diff -ru mpeg2dec.orig/libmpeg2/decode.c mpeg2dec/libmpeg2/decode.c +--- mpeg2dec.orig/libmpeg2/decode.c 2008-07-09 12:16:05.000000000 -0700 ++++ mpeg2dec/libmpeg2/decode.c 2009-07-03 16:29:48.000000000 -0700 +@@ -212,7 +212,7 @@ + + mpeg2_state_t mpeg2_parse_header (mpeg2dec_t * mpeg2dec) + { +- static int (* process_header[]) (mpeg2dec_t * mpeg2dec) = { ++ static int (* process_header[]) (mpeg2dec_t *) = { + mpeg2_header_picture, mpeg2_header_extension, mpeg2_header_user_data, + mpeg2_header_sequence, NULL, NULL, NULL, NULL, mpeg2_header_gop + }; +@@ -368,6 +368,14 @@ + + void mpeg2_tag_picture (mpeg2dec_t * mpeg2dec, uint32_t tag, uint32_t tag2) + { ++ if (mpeg2dec->num_tags == 0 && mpeg2dec->state == STATE_PICTURE && mpeg2dec->picture) { ++ // since tags got processed when we entered this state we ++ // have to set them directly or they'll end up on the next frame. ++ mpeg2dec->picture->tag = tag; ++ mpeg2dec->picture->tag2 = tag2; ++ mpeg2dec->picture->flags |= PIC_FLAG_TAGS; ++ return; ++ } + mpeg2dec->tag_previous = mpeg2dec->tag_current; + mpeg2dec->tag2_previous = mpeg2dec->tag2_current; + mpeg2dec->tag_current = tag; diff -Nru handbrake-0.9.9+dfsg/contrib/mpeg2dec/A01-gcc4.6.patch handbrake-0.9.9+ppa1/contrib/mpeg2dec/A01-gcc4.6.patch --- handbrake-0.9.9+dfsg/contrib/mpeg2dec/A01-gcc4.6.patch 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/contrib/mpeg2dec/A01-gcc4.6.patch 2011-05-31 14:32:23.000000000 +0000 @@ -0,0 +1,122 @@ +Index: libmpeg2/idct_mmx.c +=================================================================== +--- mpeg2dec.orig/libmpeg2/idct_mmx.c (revision 1205) ++++ mpeg2dec/libmpeg2/idct_mmx.c (working copy) +@@ -464,10 +464,10 @@ + /* Almost identical to mmxext version: */ + /* just do both 4x8 columns in paraller */ + +- static const short t1_vector[] ATTR_ALIGN(16) = {T1,T1,T1,T1,T1,T1,T1,T1}; +- static const short t2_vector[] ATTR_ALIGN(16) = {T2,T2,T2,T2,T2,T2,T2,T2}; +- static const short t3_vector[] ATTR_ALIGN(16) = {T3,T3,T3,T3,T3,T3,T3,T3}; +- static const short c4_vector[] ATTR_ALIGN(16) = {C4,C4,C4,C4,C4,C4,C4,C4}; ++ static short t1_vector[] ATTR_ALIGN(16) = {T1,T1,T1,T1,T1,T1,T1,T1}; ++ static short t2_vector[] ATTR_ALIGN(16) = {T2,T2,T2,T2,T2,T2,T2,T2}; ++ static short t3_vector[] ATTR_ALIGN(16) = {T3,T3,T3,T3,T3,T3,T3,T3}; ++ static short c4_vector[] ATTR_ALIGN(16) = {C4,C4,C4,C4,C4,C4,C4,C4}; + + #if defined(__x86_64__) + +@@ -710,10 +710,10 @@ + /* MMX column IDCT */ + static inline void idct_col (int16_t * const col, const int offset) + { +- static const short t1_vector[] ATTR_ALIGN(8) = {T1,T1,T1,T1}; +- static const short t2_vector[] ATTR_ALIGN(8) = {T2,T2,T2,T2}; +- static const short t3_vector[] ATTR_ALIGN(8) = {T3,T3,T3,T3}; +- static const short c4_vector[] ATTR_ALIGN(8) = {C4,C4,C4,C4}; ++ static short t1_vector[] ATTR_ALIGN(8) = {T1,T1,T1,T1}; ++ static short t2_vector[] ATTR_ALIGN(8) = {T2,T2,T2,T2}; ++ static short t3_vector[] ATTR_ALIGN(8) = {T3,T3,T3,T3}; ++ static short c4_vector[] ATTR_ALIGN(8) = {C4,C4,C4,C4}; + + /* column code adapted from peter gubanov */ + /* http://www.elecard.com/peter/idct.shtml */ +@@ -847,33 +847,33 @@ + } + + +-static const int32_t rounder0[] ATTR_ALIGN(8) = ++static int32_t rounder0[] ATTR_ALIGN(8) = + rounder ((1 << (COL_SHIFT - 1)) - 0.5); +-static const int32_t rounder4[] ATTR_ALIGN(8) = rounder (0); +-static const int32_t rounder1[] ATTR_ALIGN(8) = ++static int32_t rounder4[] ATTR_ALIGN(8) = rounder (0); ++static int32_t rounder1[] ATTR_ALIGN(8) = + rounder (1.25683487303); /* C1*(C1/C4+C1+C7)/2 */ +-static const int32_t rounder7[] ATTR_ALIGN(8) = ++static int32_t rounder7[] ATTR_ALIGN(8) = + rounder (-0.25); /* C1*(C7/C4+C7-C1)/2 */ +-static const int32_t rounder2[] ATTR_ALIGN(8) = ++static int32_t rounder2[] ATTR_ALIGN(8) = + rounder (0.60355339059); /* C2 * (C6+C2)/2 */ +-static const int32_t rounder6[] ATTR_ALIGN(8) = ++static int32_t rounder6[] ATTR_ALIGN(8) = + rounder (-0.25); /* C2 * (C6-C2)/2 */ +-static const int32_t rounder3[] ATTR_ALIGN(8) = ++static int32_t rounder3[] ATTR_ALIGN(8) = + rounder (0.087788325588); /* C3*(-C3/C4+C3+C5)/2 */ +-static const int32_t rounder5[] ATTR_ALIGN(8) = ++static int32_t rounder5[] ATTR_ALIGN(8) = + rounder (-0.441341716183); /* C3*(-C5/C4+C5-C3)/2 */ + + + #define declare_idct(idct,table,idct_row_head,idct_row,idct_row_tail,idct_row_mid) \ + static inline void idct (int16_t * const block) \ + { \ +- static const int16_t table04[] ATTR_ALIGN(16) = \ ++ static int16_t table04[] ATTR_ALIGN(16) = \ + table (22725, 21407, 19266, 16384, 12873, 8867, 4520); \ +- static const int16_t table17[] ATTR_ALIGN(16) = \ ++ static int16_t table17[] ATTR_ALIGN(16) = \ + table (31521, 29692, 26722, 22725, 17855, 12299, 6270); \ +- static const int16_t table26[] ATTR_ALIGN(16) = \ ++ static int16_t table26[] ATTR_ALIGN(16) = \ + table (29692, 27969, 25172, 21407, 16819, 11585, 5906); \ +- static const int16_t table35[] ATTR_ALIGN(16) = \ ++ static int16_t table35[] ATTR_ALIGN(16) = \ + table (26722, 25172, 22654, 19266, 15137, 10426, 5315); \ + \ + idct_row_head (block, 0*8, table04); \ +@@ -900,29 +900,29 @@ + + static inline void sse2_idct (int16_t * const block) + { +- static const int16_t table04[] ATTR_ALIGN(16) = ++ static int16_t table04[] ATTR_ALIGN(16) = + sse2_table (22725, 21407, 19266, 16384, 12873, 8867, 4520); +- static const int16_t table17[] ATTR_ALIGN(16) = ++ static int16_t table17[] ATTR_ALIGN(16) = + sse2_table (31521, 29692, 26722, 22725, 17855, 12299, 6270); +- static const int16_t table26[] ATTR_ALIGN(16) = ++ static int16_t table26[] ATTR_ALIGN(16) = + sse2_table (29692, 27969, 25172, 21407, 16819, 11585, 5906); +- static const int16_t table35[] ATTR_ALIGN(16) = ++ static int16_t table35[] ATTR_ALIGN(16) = + sse2_table (26722, 25172, 22654, 19266, 15137, 10426, 5315); + +- static const int32_t rounder0_128[] ATTR_ALIGN(16) = ++ static int32_t rounder0_128[] ATTR_ALIGN(16) = + rounder_sse2 ((1 << (COL_SHIFT - 1)) - 0.5); +- static const int32_t rounder4_128[] ATTR_ALIGN(16) = rounder_sse2 (0); +- static const int32_t rounder1_128[] ATTR_ALIGN(16) = ++ static int32_t rounder4_128[] ATTR_ALIGN(16) = rounder_sse2 (0); ++ static int32_t rounder1_128[] ATTR_ALIGN(16) = + rounder_sse2 (1.25683487303); /* C1*(C1/C4+C1+C7)/2 */ +- static const int32_t rounder7_128[] ATTR_ALIGN(16) = ++ static int32_t rounder7_128[] ATTR_ALIGN(16) = + rounder_sse2 (-0.25); /* C1*(C7/C4+C7-C1)/2 */ +- static const int32_t rounder2_128[] ATTR_ALIGN(16) = ++ static int32_t rounder2_128[] ATTR_ALIGN(16) = + rounder_sse2 (0.60355339059); /* C2 * (C6+C2)/2 */ +- static const int32_t rounder6_128[] ATTR_ALIGN(16) = ++ static int32_t rounder6_128[] ATTR_ALIGN(16) = + rounder_sse2 (-0.25); /* C2 * (C6-C2)/2 */ +- static const int32_t rounder3_128[] ATTR_ALIGN(16) = ++ static int32_t rounder3_128[] ATTR_ALIGN(16) = + rounder_sse2 (0.087788325588); /* C3*(-C3/C4+C3+C5)/2 */ +- static const int32_t rounder5_128[] ATTR_ALIGN(16) = ++ static int32_t rounder5_128[] ATTR_ALIGN(16) = + rounder_sse2 (-0.441341716183); /* C3*(-C5/C4+C5-C3)/2 */ + + #if defined(__x86_64__) diff -Nru handbrake-0.9.9+dfsg/contrib/mpeg2dec/A02-gwluserdata.patch handbrake-0.9.9+ppa1/contrib/mpeg2dec/A02-gwluserdata.patch --- handbrake-0.9.9+dfsg/contrib/mpeg2dec/A02-gwluserdata.patch 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/contrib/mpeg2dec/A02-gwluserdata.patch 2012-09-08 18:04:11.000000000 +0000 @@ -0,0 +1,39 @@ +diff -ru mpeg2dec.orig/libvo/video_out_dx.c mpeg2dec/libvo/video_out_dx.c +--- mpeg2dec.orig/libvo/video_out_dx.c 2008-07-09 11:28:24.000000000 -0700 ++++ mpeg2dec/libvo/video_out_dx.c 2012-09-08 05:31:39.304849824 -0700 +@@ -92,9 +92,9 @@ + switch (message) { + + case WM_WINDOWPOSCHANGED: +- instance = (dx_instance_t *) GetWindowLong (hwnd, GWL_USERDATA); ++ /*instance = (dx_instance_t *) GetWindowLong (hwnd, GWL_USERDATA); + +- /* update the window position and size */ ++ // update the window position and size + point_window.x = 0; + point_window.y = 0; + ClientToScreen (hwnd, &point_window); +@@ -104,9 +104,9 @@ + instance->window_coords.right = rect_window.right + point_window.x; + instance->window_coords.bottom = rect_window.bottom + point_window.y; + +- /* update the overlay */ ++ // update the overlay + if (instance->overlay && instance->display) +- update_overlay (instance); ++ update_overlay (instance);*/ + + return 0; + +@@ -173,7 +173,10 @@ + /* store a directx_instance pointer into the window local storage + * (for later use in event_handler). + * We need to use SetWindowLongPtr when it is available in mingw */ +- SetWindowLong (instance->window, GWL_USERDATA, (LONG) instance); ++ ++ // Current version of MINGW-W64 does not have this! ++ // Since we are not outputting to a display, this is not a problem. ++ //SetWindowLong (instance->window, GWL_USERDATA, (LONG) instance); + + ShowWindow (instance->window, SW_SHOW); + \ No newline at end of file diff -Nru handbrake-0.9.9+dfsg/contrib/mpeg2dec/module.defs handbrake-0.9.9+ppa1/contrib/mpeg2dec/module.defs --- handbrake-0.9.9+dfsg/contrib/mpeg2dec/module.defs 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/contrib/mpeg2dec/module.defs 2011-02-04 19:54:10.000000000 +0000 @@ -0,0 +1,7 @@ +$(eval $(call import.MODULE.defs,MPEG2DEC,mpeg2dec)) +$(eval $(call import.CONTRIB.defs,MPEG2DEC)) + +MPEG2DEC.FETCH.url = http://download.handbrake.fr/handbrake/contrib/mpeg2dec-0.5.1.tar.gz +MPEG2DEC.EXTRACT.tarbase = mpeg2dec + +MPEG2DEC.CONFIGURE.extra = --disable-sdl --without-x diff -Nru handbrake-0.9.9+dfsg/contrib/mpeg2dec/module.rules handbrake-0.9.9+ppa1/contrib/mpeg2dec/module.rules --- handbrake-0.9.9+dfsg/contrib/mpeg2dec/module.rules 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/contrib/mpeg2dec/module.rules 2009-03-01 17:28:24.000000000 +0000 @@ -0,0 +1,2 @@ +$(eval $(call import.MODULE.rules,MPEG2DEC)) +$(eval $(call import.CONTRIB.rules,MPEG2DEC)) diff -Nru handbrake-0.9.9+dfsg/contrib/mpeg2dec/P00-mingw-disable-sse.patch handbrake-0.9.9+ppa1/contrib/mpeg2dec/P00-mingw-disable-sse.patch --- handbrake-0.9.9+dfsg/contrib/mpeg2dec/P00-mingw-disable-sse.patch 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/contrib/mpeg2dec/P00-mingw-disable-sse.patch 2011-05-31 14:54:14.000000000 +0000 @@ -0,0 +1,30 @@ +Index: libmpeg2/cpu_accel.c +=================================================================== +--- mpeg2dec/libmpeg2/cpu_accel.c (revision 1205) ++++ mpeg2dec/libmpeg2/cpu_accel.c (working copy) +@@ -111,7 +111,13 @@ + + cpuid (0x80000000, eax, ebx, ecx, edx); + if (eax < 0x80000001) /* no extended capabilities */ +- return accel; ++ { ++#if defined(__x86_64__) ++ // SSE code is broken on mingw64, so disable it. ++ accel &= ~(MPEG2_ACCEL_X86_SSE2|MPEG2_ACCEL_X86_SSE3); ++#endif ++ return accel; ++ } + + cpuid (0x80000001, eax, ebx, ecx, edx); + +@@ -120,6 +126,10 @@ + + if (AMD && (edx & 0x00400000)) /* AMD MMX extensions */ + accel |= MPEG2_ACCEL_X86_MMXEXT; ++#if defined(__x86_64__) ++ // SSE code is broken on mingw64, so disable it. ++ accel &= ~(MPEG2_ACCEL_X86_SSE2|MPEG2_ACCEL_X86_SSE3); ++#endif + } + #endif /* ACCEL_DETECT */ + diff -Nru handbrake-0.9.9+dfsg/contrib/pthreadw32/module.defs handbrake-0.9.9+ppa1/contrib/pthreadw32/module.defs --- handbrake-0.9.9+dfsg/contrib/pthreadw32/module.defs 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/contrib/pthreadw32/module.defs 2011-02-04 19:54:10.000000000 +0000 @@ -0,0 +1,27 @@ +$(eval $(call import.MODULE.defs,PTHREADW32,pthreadw32)) +$(eval $(call import.CONTRIB.defs,PTHREADW32)) + +PTHREADW32.FETCH.url = http://download.handbrake.fr/handbrake/contrib/pthreads-w32-cvs20100909.tar.bz2 + +PTHREADW32.CONFIGURE = $(TOUCH.exe) $@ + +PTHREADW32.BUILD.extra = target=$(BUILD.cross.prefix) clean GC-static +PTHREADW32.BUILD.ntargets = clean GC-static + +define PTHREADW32.INSTALL + $(CP.exe) $(PTHREADW32.EXTRACT.dir/)libpthreadGC2.a $(CONTRIB.build/)lib/ + $(CP.exe) $(PTHREADW32.EXTRACT.dir/)pthread.h $(CONTRIB.build/)include/ + $(CP.exe) $(PTHREADW32.EXTRACT.dir/)pthreads_win32_config.h $(CONTRIB.build/)include/ + $(CP.exe) $(PTHREADW32.EXTRACT.dir/)sched.h $(CONTRIB.build/)include/ + $(CP.exe) $(PTHREADW32.EXTRACT.dir/)semaphore.h $(CONTRIB.build/)include/ + $(LN.exe) -sf ./libpthreadGC2.a $(CONTRIB.build/)lib/libpthread.a + $(TOUCH.exe) $@ +endef + +define PTHREADW32.UNINSTALL + $(RM.exe) -f $(CONTRIB.build/)lib/libpthreadGC2.a + $(RM.exe) -f $(CONTRIB.build/)include/pthread.h + $(RM.exe) -f $(CONTRIB.build/)include/sched.h + $(RM.exe) -f $(CONTRIB.build/)include/semaphore.h + $(RM.exe) -f $(PTHREADW32.INSTALL.target) +endef diff -Nru handbrake-0.9.9+dfsg/contrib/pthreadw32/module.rules handbrake-0.9.9+ppa1/contrib/pthreadw32/module.rules --- handbrake-0.9.9+dfsg/contrib/pthreadw32/module.rules 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/contrib/pthreadw32/module.rules 2009-04-14 20:10:57.000000000 +0000 @@ -0,0 +1,2 @@ +$(eval $(call import.MODULE.rules,PTHREADW32)) +$(eval $(call import.CONTRIB.rules,PTHREADW32)) diff -Nru handbrake-0.9.9+dfsg/contrib/pthreadw32/P00-mingw-w64.patch handbrake-0.9.9+ppa1/contrib/pthreadw32/P00-mingw-w64.patch --- handbrake-0.9.9+dfsg/contrib/pthreadw32/P00-mingw-w64.patch 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/contrib/pthreadw32/P00-mingw-w64.patch 2010-10-23 18:31:34.000000000 +0000 @@ -0,0 +1,1457 @@ +# Bazaar merge directive format 2 (Bazaar 0.90) +# revision_id: dmitrij.ledkov@ubuntu.com-20100710232946-\ +# 1vpsymidgi7alpwt +# target_branch: ../pthreads.bzr/ +# testament_sha1: 521ee14bce6f871b77f9d6797b4460612a673359 +# timestamp: 2010-07-11 02:10:15 +0100 +# source_branch: . +# base_revision_id: git-v1:fe3f4b4cd92c4d6fc37139dd6cf8214c558676ca +# +# Begin patch +=== modified file 'GNUmakefile' +--- pthreadw32/GNUmakefile 2010-06-20 03:31:18 +0000 ++++ pthreadw32/GNUmakefile 2010-07-10 23:29:46 +0000 +@@ -49,14 +49,27 @@ + + # For cross compiling use e.g. + # make CROSS=i386-mingw32msvc- clean GC-inlined +-CROSS = +- +-AR = $(CROSS)ar +-DLLTOOL = $(CROSS)dlltool +-CC = $(CROSS)gcc +-CXX = $(CROSS)g++ +-RANLIB = $(CROSS)ranlib +-RC = $(CROSS)windres ++target = ++prefix = /usr/local ++ ++ifeq (,$(findstring x86_64, $(target))) ++#32bit ++BITNESS=-m32 ++DLLFLAG=-m i386 ++WINDRESFLAG=pe-i386 ++else ++#64bit ++BITNESS=-m64 ++DLLFLAG=-m i386:x86-64 ++WINDRESFLAG=pe-x86-64 ++endif ++ ++AR = $(target)ar ++DLLTOOL = $(target)dlltool $(DLLFLAG) ++CC = $(target)gcc $(BITNESS) ++CXX = $(target)g++ $(BITNESS) ++RANLIB = $(target)ranlib ++RC = $(target)windres -F $(WINDRESFLAG) + + OPT = $(CLEANUP) -O3 -finline-functions + DOPT = $(CLEANUP) -g -O0 +@@ -268,7 +281,7 @@ + version.o + + INCL = \ +- config.h \ ++ pthreads_win32_config.h \ + implement.h \ + semaphore.h \ + pthread.h \ +@@ -585,3 +598,11 @@ + sync.o: sync.c $(SYNC_SRCS) $(INCL) + tsd.o: tsd.c $(TSD_SRCS) $(INCL) + version.o: version.rc $(INCL) ++ ++install: ++ install -d $(prefix)/$(target)/bin ++ install -d $(prefix)/$(target)/lib ++ install -d $(prefix)/$(target)/include ++ install pthreadGC$(DLL_VER).dll $(prefix)/$(target)/bin/pthreadGC$(DLL_VER).dll ++ install pthreadGC$(DLL_VER).dll $(prefix)/$(target)/lib/libpthread.a ++ install pthreads_win32_config.h pthread.h sched.h semaphore.h $(prefix)/$(target)/include + +=== modified file 'context.h' +--- pthreadw32/context.h 2007-01-06 13:44:39 +0000 ++++ pthreadw32/context.h 2010-07-10 23:05:44 +0000 +@@ -39,7 +39,7 @@ + + #undef PTW32_PROGCTR + +-#if defined(_M_IX86) || defined(_X86_) ++#if defined(_M_IX86) || (defined(_X86_) && !defined(__amd64__)) + #define PTW32_PROGCTR(Context) ((Context).Eip) + #endif + + +=== modified file 'pthread.h' +--- pthreadw32/pthread.h 2010-06-20 03:31:18 +0000 ++++ pthreadw32/pthread.h 2010-07-10 23:29:46 +0000 +@@ -112,7 +112,7 @@ + #ifdef _UWIN + # define HAVE_STRUCT_TIMESPEC 1 + # define HAVE_SIGNAL_H 1 +-# undef HAVE_CONFIG_H ++# undef 1 + # pragma comment(lib, "pthread") + #endif + +@@ -210,9 +210,17 @@ + * ----------------- + */ + +-#if HAVE_CONFIG_H +-#include "config.h" +-#endif /* HAVE_CONFIG_H */ ++#if 1 ++#include "pthreads_win32_config.h" ++#endif /* 1 */ ++ ++#ifdef __MINGW32__ ++# include <_mingw.h> ++# ifdef __MINGW64_VERSION_MAJOR ++ /* MinGW-w64 already has it: */ ++# define HAVE_STRUCT_TIMESPEC 1 ++# endif ++#endif + + #ifndef NEED_FTIME + #include +@@ -236,7 +244,7 @@ + }; + + /* +- * This is a duplicate of what is in the autoconf config.h, ++ * This is a duplicate of what is in the autoconf pthreads_win32_config.h, + * which is only used when building the pthread-win32 libraries. + */ + + +--- pthreadsw32/pthread_win32_attach_detach_np.c 2010-09-11 13:08:31.120188567 -0700 ++++ xxx/pthread_win32_attach_detach_np.c 2010-09-11 13:08:40.209188369 -0700 +@@ -97,6 +97,10 @@ + * InterlockedCompareExchange routine in WIN64 is an intrinsic function. + * See PTW32_INTERLOCKED_COMPARE_EXCHANGE implement.h + */ ++ ptw32_interlocked_compare_exchange = ++ (PTW32_INTERLOCKED_LONG (WINAPI *) ++ (PTW32_INTERLOCKED_LPLONG, PTW32_INTERLOCKED_LONG, ++ PTW32_INTERLOCKED_LONG)) InterlockedCompareExchange; + + #else + +=== modified file 'pthread_cancel.c' +--- pthreadw32/pthread_cancel.c 2010-06-20 03:31:18 +0000 ++++ pthreadw32/pthread_cancel.c 2010-07-10 23:29:46 +0000 +@@ -47,7 +47,7 @@ + } + + static void CALLBACK +-ptw32_cancel_callback (DWORD unused) ++ptw32_cancel_callback (ULONG_PTR unused) + { + ptw32_throw (PTW32_EPS_CANCEL); + +@@ -157,7 +157,7 @@ + * this will result in a call to ptw32_RegisterCancelation and only + * the threadH arg will be used. + */ +- ptw32_register_cancelation (ptw32_cancel_callback, threadH, 0); ++ ptw32_register_cancelation ((PAPCFUNC)ptw32_cancel_callback, threadH, 0); + (void) pthread_mutex_unlock (&tp->cancelLock); + ResumeThread (threadH); + } + +=== modified file 'pthread_exit.c' +--- pthreadw32/pthread_exit.c 2007-05-15 13:46:42 +0000 ++++ pthreadw32/pthread_exit.c 2010-07-10 23:05:44 +0000 +@@ -89,7 +89,7 @@ + */ + + #if ! defined (__MINGW32__) || defined (__MSVCRT__) || defined (__DMC__) +- _endthreadex ((unsigned) value_ptr); ++ _endthreadex ((unsigned) (size_t) value_ptr); + #else + _endthread (); + #endif + +=== modified file 'pthread_spin_destroy.c' +--- pthreadw32/pthread_spin_destroy.c 2005-01-01 14:36:17 +0000 ++++ pthreadw32/pthread_spin_destroy.c 2010-07-10 23:05:44 +0000 +@@ -59,9 +59,9 @@ + PTW32_INTERLOCKED_COMPARE_EXCHANGE ((PTW32_INTERLOCKED_LPLONG) + & (s->interlock), + (PTW32_INTERLOCKED_LONG) +- PTW32_OBJECT_INVALID, ++ (size_t)PTW32_OBJECT_INVALID, + (PTW32_INTERLOCKED_LONG) +- PTW32_SPIN_UNLOCKED)) ++ (size_t)PTW32_SPIN_UNLOCKED)) + { + result = EINVAL; + } + +=== modified file 'pthread_timechange_handler_np.c' +--- pthreadw32/pthread_timechange_handler_np.c 2005-01-01 14:36:17 +0000 ++++ pthreadw32/pthread_timechange_handler_np.c 2010-07-10 23:05:44 +0000 +@@ -103,5 +103,5 @@ + + LeaveCriticalSection (&ptw32_cond_list_lock); + +- return (void *) (result != 0 ? EAGAIN : 0); ++ return (void *) (size_t) (result != 0 ? EAGAIN : 0); + } + +=== renamed file 'config.h' => 'pthreads_win32_config.h' +=== modified file 'ptw32_MCS_lock.c' +--- pthreadw32/ptw32_MCS_lock.c 2010-06-20 03:31:18 +0000 ++++ pthreadw32/ptw32_MCS_lock.c 2010-07-10 23:29:46 +0000 +@@ -101,10 +101,10 @@ + INLINE void + ptw32_mcs_flag_set (LONG * flag) + { +- HANDLE e = (HANDLE)PTW32_INTERLOCKED_COMPARE_EXCHANGE( ++ HANDLE e = (HANDLE)(size_t) PTW32_INTERLOCKED_COMPARE_EXCHANGE( + (PTW32_INTERLOCKED_LPLONG)flag, +- (PTW32_INTERLOCKED_LONG)-1, +- (PTW32_INTERLOCKED_LONG)0); ++ (PTW32_INTERLOCKED_LONG)(size_t)-1, ++ (PTW32_INTERLOCKED_LONG)(size_t)0); + if ((HANDLE)0 != e) + { + /* another thread has already stored an event handle in the flag */ +@@ -129,8 +129,8 @@ + + if (0 == PTW32_INTERLOCKED_COMPARE_EXCHANGE( + (PTW32_INTERLOCKED_LPLONG)flag, +- (PTW32_INTERLOCKED_LONG)e, +- (PTW32_INTERLOCKED_LONG)0)) ++ (PTW32_INTERLOCKED_LONG)(size_t)e, ++ (PTW32_INTERLOCKED_LONG)(size_t)0)) + { + /* stored handle in the flag. wait on it now. */ + WaitForSingleObject(e, INFINITE); +@@ -159,8 +159,8 @@ + node->next = 0; /* initially, no successor */ + + /* queue for the lock */ +- pred = (ptw32_mcs_local_node_t *)PTW32_INTERLOCKED_EXCHANGE((PTW32_INTERLOCKED_LPLONG)lock, +- (PTW32_INTERLOCKED_LONG)node); ++ pred = (ptw32_mcs_local_node_t *)InterlockedExchangePointer((PVOID volatile *)lock, ++ (void*)node); + + if (0 != pred) + { +@@ -184,17 +184,19 @@ + { + ptw32_mcs_lock_t *lock = node->lock; + ptw32_mcs_local_node_t *next = (ptw32_mcs_local_node_t *) +- InterlockedExchangeAdd((LPLONG)&node->next, +- (LONG)0); /* MBR fence */ +- ++#ifndef _WIN64 ++ InterlockedExchangeAdd((LPLONG)&node->next, 0); /* MBR fence */ ++#else ++ InterlockedExchangeAdd64((LONG64 *)&node->next, 0); /* MBR fence */ ++#endif + if (0 == next) + { + /* no known successor */ + + if (node == (ptw32_mcs_local_node_t *) +- PTW32_INTERLOCKED_COMPARE_EXCHANGE((PTW32_INTERLOCKED_LPLONG)lock, +- (PTW32_INTERLOCKED_LONG)0, +- (PTW32_INTERLOCKED_LONG)node)) ++ InterlockedCompareExchangePointer((LPVOID volatile *)lock, ++ (PVOID)0, ++ (PVOID)node)) + { + /* no successor, lock is free now */ + return; +@@ -203,7 +205,11 @@ + /* wait for successor */ + ptw32_mcs_flag_wait(&node->nextFlag); + next = (ptw32_mcs_local_node_t *) ++#ifndef _WIN64 + InterlockedExchangeAdd((LPLONG)&node->next, 0); /* MBR fence */ ++#else ++ InterlockedExchangeAdd64((LONG64 *)&node->next, 0); /* MBR fence */ ++#endif + } + + /* pass the lock */ + +=== modified file 'ptw32_threadStart.c' +--- pthreadw32/ptw32_threadStart.c 2005-05-15 15:28:24 +0000 ++++ pthreadw32/ptw32_threadStart.c 2010-07-10 23:05:44 +0000 +@@ -344,7 +344,7 @@ + #endif + + #if ! defined (__MINGW32__) || defined (__MSVCRT__) || defined (__DMC__) +- _endthreadex ((unsigned) status); ++ _endthreadex ((unsigned) (size_t) status); + #else + _endthread (); + #endif +@@ -354,7 +354,7 @@ + */ + + #if ! defined (__MINGW32__) || defined (__MSVCRT__) || defined (__DMC__) +- return (unsigned) status; ++ return (unsigned) (size_t) status; + #endif + + } /* ptw32_threadStart */ + +=== modified file 'ptw32_throw.c' +--- pthreadw32/ptw32_throw.c 2008-06-06 00:23:20 +0000 ++++ pthreadw32/ptw32_throw.c 2010-07-10 23:05:44 +0000 +@@ -79,12 +79,12 @@ + switch (exception) + { + case PTW32_EPS_CANCEL: +- exitCode = (unsigned) PTHREAD_CANCELED; ++ exitCode = (unsigned) (size_t) PTHREAD_CANCELED; + break; + case PTW32_EPS_EXIT: + if (NULL != sp) + { +- exitCode = (unsigned) sp->exitStatus; ++ exitCode = (unsigned) (size_t) sp->exitStatus; + } + break; + } +@@ -166,7 +166,7 @@ + + #else + +- return (DWORD) NULL; ++ return (DWORD) (size_t) NULL; + + #endif + } + +=== modified file 'tests/GNUmakefile' +--- pthreadw32/tests/GNUmakefile 2010-06-20 04:26:26 +0000 ++++ pthreadw32/tests/GNUmakefile 2010-07-10 23:29:46 +0000 +@@ -33,6 +33,11 @@ + + DLL_VER = 2 + ++# For cross compiling use, e.g. CROSS=x86_64-w64-mingw32msvc- ++# Although testing is supposed to be done on windows, this may still be ++# needed, because one may as well use an x86-hosted toolchain on an x64. ++CROSS = ++ + CP = cp -f + MV = mv -f + RM = rm -f +@@ -167,34 +172,34 @@ + @ $(MAKE) clean GCE + + GC: +- $(MAKE) TEST=GC CC=gcc XXCFLAGS="-fopenmp -D__CLEANUP_C" all-pass ++ $(MAKE) TEST=GC CC=$(CROSS)gcc XXCFLAGS="-fopenmp -D__CLEANUP_C" all-pass + + GCE: +- $(MAKE) TEST=GCE CC=g++ XXCFLAGS="-fopenmp -mthreads -D__CLEANUP_CXX" all-pass ++ $(MAKE) TEST=GCE CC=$(CROSS)g++ XXCFLAGS="-fopenmp -mthreads -D__CLEANUP_CXX" all-pass + + GCX: +- $(MAKE) TEST=GC CC=g++ XXCFLAGS="-fopenmp -mthreads -D__CLEANUP_C" all-pass ++ $(MAKE) TEST=GC CC=$(CROSS)g++ XXCFLAGS="-fopenmp -mthreads -D__CLEANUP_C" all-pass + + GC-bench: +- $(MAKE) TEST=GC CC=gcc XXCFLAGS="-D__CLEANUP_C" XXLIBS="benchlib.o" all-bench ++ $(MAKE) TEST=GC CC=$(CROSS)gcc XXCFLAGS="-D__CLEANUP_C" XXLIBS="benchlib.o" all-bench + + GCE-bench: +- $(MAKE) TEST=GCE CC=g++ XXCFLAGS="-mthreads -D__CLEANUP_CXX" XXLIBS="benchlib." all-bench ++ $(MAKE) TEST=GCE CC=$(CROSS)g++ XXCFLAGS="-mthreads -D__CLEANUP_CXX" XXLIBS="benchlib." all-bench + + GC-debug: +- $(MAKE) TEST=GC CC=gcc XXCFLAGS="-fopenmp -D__CLEANUP_C" DLL_VER="$(DLL_VER)d" all-pass ++ $(MAKE) TEST=GC CC=$(CROSS)gcc XXCFLAGS="-fopenmp -D__CLEANUP_C" DLL_VER="$(DLL_VER)d" all-pass + + GC-static: +- $(MAKE) TEST=GC CC=gcc XXCFLAGS="-D__CLEANUP_C -DPTW32_STATIC_LIB" XXLIBS="-lws2_32" DLL="" all-static ++ $(MAKE) TEST=GC CC=$(CROSS)gcc XXCFLAGS="-D__CLEANUP_C -DPTW32_STATIC_LIB" XXLIBS="-lws2_32" DLL="" all-static + + GC-stress: + $(ECHO) Stress tests can take a long time since they are trying to + $(ECHO) expose weaknesses that may be intermittant or statistically rare. + $(ECHO) A pass does not prove correctness, but may give greater confidence. +- $(MAKE) TEST=GC CC=gcc XXCFLAGS="-D__CLEANUP_C" XXLIBS="" all-stress ++ $(MAKE) TEST=GC CC=$(CROSS)gcc XXCFLAGS="-D__CLEANUP_C" XXLIBS="" all-stress + + GCE-stress: +- $(MAKE) TEST=GCE CC=g++ XXCFLAGS="-mthreads -D__CLEANUP_CXX" XXLIBS="" all-stress ++ $(MAKE) TEST=GCE CC=$(CROSS)g++ XXCFLAGS="-mthreads -D__CLEANUP_CXX" XXLIBS="" all-stress + + all-pass: $(PASSES) + @ $(ECHO) ALL TESTS PASSED! Congratulations! + +=== modified file 'tests/barrier3.c' +--- pthreadw32/tests/barrier3.c 2005-01-01 14:36:17 +0000 ++++ pthreadw32/tests/barrier3.c 2010-07-10 23:05:44 +0000 +@@ -41,7 +41,7 @@ + #include "test.h" + + pthread_barrier_t barrier = NULL; +-static int result = 1; ++static DWORD_PTR result = 1; + + void * func(void * arg) + { + +=== modified file 'tests/barrier5.c' +--- pthreadw32/tests/barrier5.c 2010-06-20 03:31:18 +0000 ++++ pthreadw32/tests/barrier5.c 2010-07-10 23:29:46 +0000 +@@ -79,7 +79,7 @@ + main() + { + int i, j; +- int result; ++ DWORD_PTR result; + int serialThreadsTotal; + LONG Crossings; + pthread_t t[NUMTHREADS + 1]; +@@ -104,7 +104,7 @@ + for (i = 1; i <= j; i++) + { + assert(pthread_join(t[i], (void **) &result) == 0); +- serialThreadsTotal += result; ++ serialThreadsTotal += (int)result; + } + + assert(serialThreadsTotal == BARRIERMULTIPLE); + +=== modified file 'tests/cancel2.c' +--- pthreadw32/tests/cancel2.c 2005-01-01 14:36:17 +0000 ++++ pthreadw32/tests/cancel2.c 2010-07-10 23:05:44 +0000 +@@ -217,7 +217,7 @@ + for (i = 1; i <= NUMTHREADS; i++) + { + int fail = 0; +- int result = 0; ++ DWORD_PTR result = 0; + + assert(pthread_join(t[i], (void **) &result) == 0); + fail = (result != (int) PTHREAD_CANCELED); + +=== modified file 'tests/cancel3.c' +--- pthreadw32/tests/cancel3.c 2010-06-22 01:19:08 +0000 ++++ pthreadw32/tests/cancel3.c 2010-07-10 23:29:46 +0000 +@@ -173,7 +173,7 @@ + for (i = 1; i <= NUMTHREADS; i++) + { + int fail = 0; +- int result = 0; ++ DWORD_PTR result = 0; + + /* + * The thread does not contain any cancelation points, so + +=== modified file 'tests/cancel4.c' +--- pthreadw32/tests/cancel4.c 2005-05-06 07:31:28 +0000 ++++ pthreadw32/tests/cancel4.c 2010-07-10 23:05:44 +0000 +@@ -98,7 +98,7 @@ + void * + mythread(void * arg) + { +- int result = ((int)PTHREAD_CANCELED + 1); ++ int result = ((int)(size_t)PTHREAD_CANCELED + 1); + bag_t * bag = (bag_t *) arg; + + assert(bag == &threadbag[bag->threadnum]); +@@ -118,7 +118,7 @@ + for (bag->count = 0; bag->count < 20; bag->count++) + Sleep(100); + +- return (void *) result; ++ return (void *) (size_t)result; + } + + int +@@ -173,7 +173,7 @@ + for (i = 1; i <= NUMTHREADS; i++) + { + int fail = 0; +- int result = 0; ++ DWORD_PTR result = 0; + + /* + * The thread does not contain any cancelation points, so +@@ -182,7 +182,7 @@ + */ + assert(pthread_join(t[i], (void **) &result) == 0); + +- fail = (result == (int) PTHREAD_CANCELED); ++ fail = (result == (int) (size_t) PTHREAD_CANCELED); + + if (fail) + { + +=== modified file 'tests/cancel5.c' +--- pthreadw32/tests/cancel5.c 2005-01-01 14:36:17 +0000 ++++ pthreadw32/tests/cancel5.c 2010-07-10 23:05:44 +0000 +@@ -171,7 +171,7 @@ + for (i = 1; i <= NUMTHREADS; i++) + { + int fail = 0; +- int result = 0; ++ DWORD_PTR result = 0; + + /* + * The thread does not contain any cancelation points, so + +=== modified file 'tests/cancel6a.c' +--- pthreadw32/tests/cancel6a.c 2004-11-03 01:08:41 +0000 ++++ pthreadw32/tests/cancel6a.c 2010-07-10 23:05:44 +0000 +@@ -85,7 +85,7 @@ + void * + mythread(void * arg) + { +- int result = ((int)PTHREAD_CANCELED + 1); ++ int result = ((int)(size_t)PTHREAD_CANCELED + 1); + bag_t * bag = (bag_t *) arg; + + assert(bag == &threadbag[bag->threadnum]); +@@ -105,7 +105,7 @@ + for (bag->count = 0; bag->count < 100; bag->count++) + Sleep(100); + +- return (void *) result; ++ return (void *) (size_t)result; + } + + int +@@ -161,7 +161,7 @@ + for (i = 1; i <= NUMTHREADS; i++) + { + int fail = 0; +- int result = 0; ++ DWORD_PTR result = 0; + + /* + * The thread does not contain any cancelation points, so +@@ -170,7 +170,7 @@ + */ + assert(pthread_join(t[i], (void **) &result) == 0); + +- fail = (result != (int) PTHREAD_CANCELED); ++ fail = (result != (int) (size_t) PTHREAD_CANCELED); + + if (fail) + { + +=== modified file 'tests/cancel6d.c' +--- pthreadw32/tests/cancel6d.c 2004-11-03 01:08:41 +0000 ++++ pthreadw32/tests/cancel6d.c 2010-07-10 23:05:44 +0000 +@@ -86,7 +86,7 @@ + void * + mythread(void * arg) + { +- int result = ((int)PTHREAD_CANCELED + 1); ++ int result = ((int) (size_t) PTHREAD_CANCELED + 1); + bag_t * bag = (bag_t *) arg; + + assert(bag == &threadbag[bag->threadnum]); +@@ -109,7 +109,7 @@ + pthread_testcancel(); + } + +- return (void *) result; ++ return (void *) (size_t) result; + } + + int +@@ -165,11 +165,11 @@ + for (i = 1; i <= NUMTHREADS; i++) + { + int fail = 0; +- int result = 0; ++ DWORD_PTR result = 0; + + assert(pthread_join(t[i], (void **) &result) == 0); + +- fail = (result != (int) PTHREAD_CANCELED); ++ fail = (result != (int) (size_t) PTHREAD_CANCELED); + + if (fail) + { + +=== modified file 'tests/cancel8.c' +--- pthreadw32/tests/cancel8.c 2005-01-01 14:36:17 +0000 ++++ pthreadw32/tests/cancel8.c 2010-07-10 23:05:44 +0000 +@@ -195,7 +195,7 @@ + assert(threadbag[i].self.p != NULL); + assert(pthread_kill(threadbag[i].self, 0) == ESRCH); + +- fail = (result != (int) PTHREAD_CANCELED); ++ fail = (result != (int) (size_t) PTHREAD_CANCELED); + + if (fail) + { + +=== modified file 'tests/cleanup0.c' +--- pthreadw32/tests/cleanup0.c 2005-04-06 02:16:29 +0000 ++++ pthreadw32/tests/cleanup0.c 2010-07-10 23:05:44 +0000 +@@ -189,7 +189,7 @@ + for (i = 1; i <= NUMTHREADS; i++) + { + int fail = 0; +- int result = 0; ++ DWORD_PTR result = 0; + + assert(pthread_join(t[i], (void **) &result) == 0); + + +=== modified file 'tests/cleanup1.c' +--- pthreadw32/tests/cleanup1.c 2005-04-06 02:16:29 +0000 ++++ pthreadw32/tests/cleanup1.c 2010-07-10 23:05:44 +0000 +@@ -203,7 +203,7 @@ + for (i = 1; i <= NUMTHREADS; i++) + { + int fail = 0; +- int result = 0; ++ DWORD_PTR result = 0; + + assert(pthread_join(t[i], (void **) &result) == 0); + + +=== modified file 'tests/cleanup2.c' +--- pthreadw32/tests/cleanup2.c 2005-04-06 02:16:29 +0000 ++++ pthreadw32/tests/cleanup2.c 2010-07-10 23:05:44 +0000 +@@ -178,7 +178,7 @@ + for (i = 1; i <= NUMTHREADS; i++) + { + int fail = 0; +- int result = 0; ++ DWORD_PTR result = 0; + + assert(pthread_join(t[i], (void **) &result) == 0); + + +=== modified file 'tests/cleanup3.c' +--- pthreadw32/tests/cleanup3.c 2005-04-06 02:16:29 +0000 ++++ pthreadw32/tests/cleanup3.c 2010-07-10 23:05:44 +0000 +@@ -183,7 +183,7 @@ + for (i = 1; i <= NUMTHREADS; i++) + { + int fail = 0; +- int result = 0; ++ DWORD_PTR result = 0; + + assert(pthread_join(t[i], (void **) &result) == 0); + + +=== modified file 'tests/condvar1_2.c' +--- pthreadw32/tests/condvar1_2.c 2005-01-01 14:36:17 +0000 ++++ pthreadw32/tests/condvar1_2.c 2010-07-10 23:05:44 +0000 +@@ -89,7 +89,7 @@ + main() + { + int i, j, k; +- int result = -1; ++ DWORD_PTR result = -1; + pthread_t t; + + for (k = 0; k < NUM_LOOPS; k++) + +=== modified file 'tests/condvar2.c' +--- pthreadw32/tests/condvar2.c 2005-05-06 07:31:28 +0000 ++++ pthreadw32/tests/condvar2.c 2010-07-10 23:05:44 +0000 +@@ -99,7 +99,7 @@ + /* get current system time */ + _ftime(&currSysTime); + +- abstime.tv_sec = currSysTime.time; ++ abstime.tv_sec = (long)currSysTime.time; + abstime.tv_nsec = NANOSEC_PER_MILLISEC * currSysTime.millitm; + + abstime.tv_sec += 1; +@@ -109,7 +109,7 @@ + assert(pthread_mutex_unlock(&mutex) == 0); + + { +- int result = pthread_cond_destroy(&cv); ++ DWORD_PTR result = pthread_cond_destroy(&cv); + if (result != 0) + { + fprintf(stderr, "Result = %s\n", error_string[result]); + +=== modified file 'tests/condvar2_1.c' +--- pthreadw32/tests/condvar2_1.c 2005-01-01 14:36:17 +0000 ++++ pthreadw32/tests/condvar2_1.c 2010-07-10 23:05:44 +0000 +@@ -105,7 +105,7 @@ + { + int i; + pthread_t t[NUMTHREADS + 1]; +- int result = 0; ++ DWORD_PTR result = 0; + struct _timeb currSysTime; + const DWORD NANOSEC_PER_MILLISEC = 1000000; + +@@ -116,7 +116,7 @@ + /* get current system time */ + _ftime(&currSysTime); + +- abstime.tv_sec = currSysTime.time; ++ abstime.tv_sec = (long)currSysTime.time; + abstime.tv_nsec = NANOSEC_PER_MILLISEC * currSysTime.millitm; + + abstime.tv_sec += 5; + +=== modified file 'tests/condvar3.c' +--- pthreadw32/tests/condvar3.c 2005-04-25 14:42:37 +0000 ++++ pthreadw32/tests/condvar3.c 2010-07-10 23:05:44 +0000 +@@ -126,7 +126,7 @@ + /* get current system time */ + _ftime(&currSysTime); + +- abstime.tv_sec = currSysTime.time; ++ abstime.tv_sec = (long)currSysTime.time; + abstime.tv_nsec = NANOSEC_PER_MILLISEC * currSysTime.millitm; + + assert(pthread_create(&t[1], NULL, mythread, (void *) 1) == 0); + +=== modified file 'tests/condvar3_1.c' +--- pthreadw32/tests/condvar3_1.c 2005-04-25 14:42:37 +0000 ++++ pthreadw32/tests/condvar3_1.c 2010-07-10 23:05:44 +0000 +@@ -126,7 +126,7 @@ + { + int i; + pthread_t t[NUMTHREADS + 1]; +- int result = 0; ++ DWORD_PTR result = 0; + struct _timeb currSysTime; + const DWORD NANOSEC_PER_MILLISEC = 1000000; + +@@ -139,7 +139,7 @@ + /* get current system time */ + _ftime(&currSysTime); + +- abstime.tv_sec = currSysTime.time; ++ abstime.tv_sec = (long)currSysTime.time; + abstime.tv_nsec = NANOSEC_PER_MILLISEC * currSysTime.millitm; + + abstime.tv_sec += 5; + +=== modified file 'tests/condvar3_2.c' +--- pthreadw32/tests/condvar3_2.c 2005-04-25 14:42:37 +0000 ++++ pthreadw32/tests/condvar3_2.c 2010-07-10 23:05:44 +0000 +@@ -127,7 +127,7 @@ + { + int i; + pthread_t t[NUMTHREADS + 1]; +- int result = 0; ++ DWORD_PTR result = 0; + struct _timeb currSysTime; + const DWORD NANOSEC_PER_MILLISEC = 1000000; + +@@ -138,7 +138,7 @@ + /* get current system time */ + _ftime(&currSysTime); + +- abstime.tv_sec = abstime.tv_sec = currSysTime.time + 5; ++ abstime.tv_sec = abstime.tv_sec = (long)currSysTime.time + 5; + abstime.tv_nsec = abstime2.tv_nsec = NANOSEC_PER_MILLISEC * currSysTime.millitm; + + assert(pthread_mutex_lock(&mutex) == 0); + +=== modified file 'tests/condvar3_3.c' +--- pthreadw32/tests/condvar3_3.c 2005-04-25 14:42:37 +0000 ++++ pthreadw32/tests/condvar3_3.c 2010-07-10 23:05:44 +0000 +@@ -96,7 +96,7 @@ + /* get current system time */ + _ftime(&currSysTime); + +- abstime.tv_sec = currSysTime.time; ++ abstime.tv_sec = (long)currSysTime.time; + abstime.tv_nsec = NANOSEC_PER_MILLISEC * currSysTime.millitm; + abstime.tv_sec += 1; + +@@ -120,7 +120,7 @@ + + assert(pthread_mutex_lock(&mtx) == 0); + +- abstime.tv_sec = currSysTime.time; ++ abstime.tv_sec = (long)currSysTime.time; + abstime.tv_nsec = NANOSEC_PER_MILLISEC * currSysTime.millitm; + abstime.tv_sec += 1; + + +=== modified file 'tests/condvar4.c' +--- pthreadw32/tests/condvar4.c 2005-04-25 14:42:37 +0000 ++++ pthreadw32/tests/condvar4.c 2010-07-10 23:05:44 +0000 +@@ -130,7 +130,7 @@ + /* get current system time */ + _ftime(&currSysTime); + +- abstime.tv_sec = currSysTime.time; ++ abstime.tv_sec = (long)currSysTime.time; + abstime.tv_nsec = NANOSEC_PER_MILLISEC * currSysTime.millitm; + + abstime.tv_sec += 5; +@@ -143,7 +143,7 @@ + + _ftime(&currSysTime); + +- abstime.tv_sec = currSysTime.time; ++ abstime.tv_sec = (long)currSysTime.time; + abstime.tv_nsec = NANOSEC_PER_MILLISEC * currSysTime.millitm; + + abstime.tv_sec += 5; + +=== modified file 'tests/condvar5.c' +--- pthreadw32/tests/condvar5.c 2005-04-25 14:42:37 +0000 ++++ pthreadw32/tests/condvar5.c 2010-07-10 23:05:44 +0000 +@@ -129,7 +129,7 @@ + /* get current system time */ + _ftime(&currSysTime); + +- abstime.tv_sec = currSysTime.time; ++ abstime.tv_sec = (long)currSysTime.time; + abstime.tv_nsec = NANOSEC_PER_MILLISEC * currSysTime.millitm; + + abstime.tv_sec += 5; +@@ -142,7 +142,7 @@ + + _ftime(&currSysTime); + +- abstime.tv_sec = currSysTime.time; ++ abstime.tv_sec = (long)currSysTime.time; + abstime.tv_nsec = NANOSEC_PER_MILLISEC * currSysTime.millitm; + + abstime.tv_sec += 5; + +=== modified file 'tests/condvar6.c' +--- pthreadw32/tests/condvar6.c 2005-04-25 14:42:37 +0000 ++++ pthreadw32/tests/condvar6.c 2010-07-10 23:05:44 +0000 +@@ -159,7 +159,7 @@ + + _ftime(&currSysTime); + +- abstime.tv_sec = currSysTime.time; ++ abstime.tv_sec = (long)currSysTime.time; + abstime.tv_nsec = NANOSEC_PER_MILLISEC * currSysTime.millitm; + + abstime.tv_sec += 5; + +=== modified file 'tests/condvar7.c' +--- pthreadw32/tests/condvar7.c 2005-04-25 14:42:37 +0000 ++++ pthreadw32/tests/condvar7.c 2010-07-10 23:05:44 +0000 +@@ -169,7 +169,7 @@ + + _ftime(&currSysTime); + +- abstime.tv_sec = currSysTime.time; ++ abstime.tv_sec = (long)currSysTime.time; + abstime.tv_nsec = NANOSEC_PER_MILLISEC * currSysTime.millitm; + + abstime.tv_sec += 10; + +=== modified file 'tests/condvar8.c' +--- pthreadw32/tests/condvar8.c 2005-04-25 14:42:37 +0000 ++++ pthreadw32/tests/condvar8.c 2010-07-10 23:05:44 +0000 +@@ -166,7 +166,7 @@ + + _ftime(&currSysTime); + +- abstime.tv_sec = currSysTime.time; ++ abstime.tv_sec = (long)currSysTime.time; + abstime.tv_nsec = NANOSEC_PER_MILLISEC * currSysTime.millitm; + + abstime.tv_sec += 10; + +=== modified file 'tests/condvar9.c' +--- pthreadw32/tests/condvar9.c 2005-04-25 14:42:37 +0000 ++++ pthreadw32/tests/condvar9.c 2010-07-10 23:05:44 +0000 +@@ -174,7 +174,7 @@ + + _ftime(&currSysTime); + +- abstime.tv_sec = currSysTime.time; ++ abstime.tv_sec = (long)currSysTime.time; + abstime.tv_nsec = NANOSEC_PER_MILLISEC * currSysTime.millitm; + + abstime.tv_sec += 5; + +=== modified file 'tests/delay2.c' +--- pthreadw32/tests/delay2.c 2005-01-01 14:36:17 +0000 ++++ pthreadw32/tests/delay2.c 2010-07-10 23:05:44 +0000 +@@ -65,7 +65,7 @@ + main(int argc, char * argv[]) + { + pthread_t t; +- int result = 0; ++ DWORD_PTR result = 0; + + assert(pthread_mutex_lock(&mx) == 0); + + +=== modified file 'tests/exception1.c' +--- pthreadw32/tests/exception1.c 2005-01-01 14:36:17 +0000 ++++ pthreadw32/tests/exception1.c 2010-07-10 23:05:44 +0000 +@@ -226,7 +226,7 @@ + for (i = 0; i < NUMTHREADS; i++) + { + int fail = 0; +- int result = 0; ++ DWORD_PTR result = 0; + + /* Canceled thread */ + assert(pthread_join(ct[i], (void **) &result) == 0); + +=== modified file 'tests/inherit1.c' +--- pthreadw32/tests/inherit1.c 2005-01-01 14:36:17 +0000 ++++ pthreadw32/tests/inherit1.c 2010-07-10 23:05:44 +0000 +@@ -89,7 +89,7 @@ + struct sched_param param; + + assert(pthread_getschedparam(pthread_self(), &policy, ¶m) == 0); +- return (void *) param.sched_priority; ++ return (void *) (size_t) param.sched_priority; + } + + +@@ -169,7 +169,7 @@ + assert(pthread_attr_setschedparam(&attr, ¶m) == 0); + assert(pthread_create(&t, &attr, func, NULL) == 0); + pthread_join(t, &result); +- assert((int) result == mainParam.sched_priority); ++ assert((int) (size_t)result == mainParam.sched_priority); + } + } + + +=== modified file 'tests/join0.c' +--- pthreadw32/tests/join0.c 2005-05-15 15:28:24 +0000 ++++ pthreadw32/tests/join0.c 2010-07-10 23:05:44 +0000 +@@ -53,7 +53,7 @@ + main(int argc, char * argv[]) + { + pthread_t id; +- int result; ++ DWORD_PTR result; + + /* Create a single thread and wait for it to exit. */ + assert(pthread_create(&id, NULL, func, (void *) 123) == 0); + +=== modified file 'tests/join1.c' +--- pthreadw32/tests/join1.c 2005-05-15 15:28:24 +0000 ++++ pthreadw32/tests/join1.c 2010-07-10 23:05:44 +0000 +@@ -56,7 +56,7 @@ + { + pthread_t id[4]; + int i; +- int result; ++ DWORD_PTR result; + + /* Create a few threads and then exit. */ + for (i = 0; i < 4; i++) + +=== modified file 'tests/join2.c' +--- pthreadw32/tests/join2.c 2005-05-15 15:28:24 +0000 ++++ pthreadw32/tests/join2.c 2010-07-10 23:05:44 +0000 +@@ -50,7 +50,7 @@ + { + pthread_t id[4]; + int i; +- int result; ++ DWORD_PTR result; + + /* Create a few threads and then exit. */ + for (i = 0; i < 4; i++) + +=== modified file 'tests/join3.c' +--- pthreadw32/tests/join3.c 2005-05-15 15:28:24 +0000 ++++ pthreadw32/tests/join3.c 2010-07-10 23:05:44 +0000 +@@ -50,7 +50,7 @@ + { + pthread_t id[4]; + int i; +- int result; ++ DWORD_PTR result; + + /* Create a few threads and then exit. */ + for (i = 0; i < 4; i++) + +=== modified file 'tests/mutex6e.c' +--- pthreadw32/tests/mutex6e.c 2005-01-01 14:36:17 +0000 ++++ pthreadw32/tests/mutex6e.c 2010-07-10 23:05:44 +0000 +@@ -74,7 +74,7 @@ + main() + { + pthread_t t; +- int result = 0; ++ DWORD_PTR result = 0; + int mxType = -1; + + assert(pthread_mutexattr_init(&mxAttr) == 0); + +=== modified file 'tests/mutex6es.c' +--- pthreadw32/tests/mutex6es.c 2005-01-01 14:36:17 +0000 ++++ pthreadw32/tests/mutex6es.c 2010-07-10 23:05:44 +0000 +@@ -73,7 +73,7 @@ + main() + { + pthread_t t; +- int result = 0; ++ DWORD_PTR result = 0; + + assert(mutex == PTHREAD_ERRORCHECK_MUTEX_INITIALIZER); + + +=== modified file 'tests/mutex6r.c' +--- pthreadw32/tests/mutex6r.c 2005-01-01 14:36:17 +0000 ++++ pthreadw32/tests/mutex6r.c 2010-07-10 23:05:44 +0000 +@@ -73,7 +73,7 @@ + main() + { + pthread_t t; +- int result = 0; ++ DWORD_PTR result = 0; + int mxType = -1; + + assert(pthread_mutexattr_init(&mxAttr) == 0); + +=== modified file 'tests/mutex6rs.c' +--- pthreadw32/tests/mutex6rs.c 2005-01-01 14:36:17 +0000 ++++ pthreadw32/tests/mutex6rs.c 2010-07-10 23:05:44 +0000 +@@ -72,7 +72,7 @@ + main() + { + pthread_t t; +- int result = 0; ++ DWORD_PTR result = 0; + + assert(mutex == PTHREAD_RECURSIVE_MUTEX_INITIALIZER); + + +=== modified file 'tests/mutex7e.c' +--- pthreadw32/tests/mutex7e.c 2005-01-01 14:36:17 +0000 ++++ pthreadw32/tests/mutex7e.c 2010-07-10 23:05:44 +0000 +@@ -74,7 +74,7 @@ + main() + { + pthread_t t; +- int result = 0; ++ DWORD_PTR result = 0; + int mxType = -1; + + assert(pthread_mutexattr_init(&mxAttr) == 0); + +=== modified file 'tests/mutex7r.c' +--- pthreadw32/tests/mutex7r.c 2005-01-01 14:36:17 +0000 ++++ pthreadw32/tests/mutex7r.c 2010-07-10 23:05:44 +0000 +@@ -73,7 +73,7 @@ + main() + { + pthread_t t; +- int result = 0; ++ DWORD_PTR result = 0; + int mxType = -1; + + assert(pthread_mutexattr_init(&mxAttr) == 0); + +=== modified file 'tests/mutex8.c' +--- pthreadw32/tests/mutex8.c 2002-02-20 04:39:56 +0000 ++++ pthreadw32/tests/mutex8.c 2010-07-10 23:05:44 +0000 +@@ -49,7 +49,7 @@ + + _ftime(&currSysTime); + +- abstime.tv_sec = currSysTime.time; ++ abstime.tv_sec = (long)currSysTime.time; + abstime.tv_nsec = NANOSEC_PER_MILLISEC * currSysTime.millitm; + + abstime.tv_sec += 1; + +=== modified file 'tests/mutex8e.c' +--- pthreadw32/tests/mutex8e.c 2002-02-20 04:39:56 +0000 ++++ pthreadw32/tests/mutex8e.c 2010-07-10 23:05:44 +0000 +@@ -57,7 +57,7 @@ + + _ftime(&currSysTime); + +- abstime.tv_sec = currSysTime.time; ++ abstime.tv_sec = (long)currSysTime.time; + abstime.tv_nsec = NANOSEC_PER_MILLISEC * currSysTime.millitm; + + abstime.tv_sec += 1; + +=== modified file 'tests/mutex8n.c' +--- pthreadw32/tests/mutex8n.c 2002-02-20 04:39:56 +0000 ++++ pthreadw32/tests/mutex8n.c 2010-07-10 23:05:44 +0000 +@@ -57,7 +57,7 @@ + + _ftime(&currSysTime); + +- abstime.tv_sec = currSysTime.time; ++ abstime.tv_sec = (long)currSysTime.time; + abstime.tv_nsec = NANOSEC_PER_MILLISEC * currSysTime.millitm; + + abstime.tv_sec += 1; + +=== modified file 'tests/mutex8r.c' +--- pthreadw32/tests/mutex8r.c 2002-02-20 04:39:56 +0000 ++++ pthreadw32/tests/mutex8r.c 2010-07-10 23:05:44 +0000 +@@ -57,7 +57,7 @@ + + _ftime(&currSysTime); + +- abstime.tv_sec = currSysTime.time; ++ abstime.tv_sec = (long)currSysTime.time; + abstime.tv_nsec = NANOSEC_PER_MILLISEC * currSysTime.millitm; + + abstime.tv_sec += 1; + +=== modified file 'tests/priority1.c' +--- pthreadw32/tests/priority1.c 2005-01-01 14:36:17 +0000 ++++ pthreadw32/tests/priority1.c 2010-07-10 23:05:44 +0000 +@@ -91,7 +91,7 @@ + + assert(pthread_getschedparam(threadID, &policy, ¶m) == 0); + assert(policy == SCHED_OTHER); +- return (void *) (param.sched_priority); ++ return (void *) (size_t) (param.sched_priority); + } + + void * +@@ -164,8 +164,8 @@ + + assert(pthread_join(t, &result) == 0); + +- assert(param.sched_priority == (int) result); +- printf("%10d %10d %10d\n", param.sched_priority, (int) result, prio); ++ assert(param.sched_priority == (int) (size_t) result); ++ printf("%10d %10d %10d\n", param.sched_priority, (int) (size_t) result, prio); + } + + return 0; + +=== modified file 'tests/priority2.c' +--- pthreadw32/tests/priority2.c 2005-01-01 14:36:17 +0000 ++++ pthreadw32/tests/priority2.c 2010-07-10 23:05:44 +0000 +@@ -95,7 +95,7 @@ + assert(policy == SCHED_OTHER); + result = pthread_barrier_wait(&endBarrier); + assert(result == 0 || result == PTHREAD_BARRIER_SERIAL_THREAD); +- return (void *) param.sched_priority; ++ return (void *) (size_t) param.sched_priority; + } + + +@@ -162,7 +162,7 @@ + assert(GetThreadPriority(pthread_getw32threadhandle_np(t)) == + validPriorities[param.sched_priority+(PTW32TEST_MAXPRIORITIES/2)]); + pthread_join(t, &result); +- assert(param.sched_priority == (int)result); ++ assert(param.sched_priority == (int)(size_t)result); + } + + return 0; + +=== modified file 'tests/rwlock2_t.c' +--- pthreadw32/tests/rwlock2_t.c 2005-01-01 14:36:17 +0000 ++++ pthreadw32/tests/rwlock2_t.c 2010-07-10 23:05:44 +0000 +@@ -55,7 +55,7 @@ + + _ftime(&currSysTime); + +- abstime.tv_sec = currSysTime.time; ++ abstime.tv_sec = (long)currSysTime.time; + abstime.tv_nsec = NANOSEC_PER_MILLISEC * currSysTime.millitm; + + abstime.tv_sec += 1; + +=== modified file 'tests/rwlock3_t.c' +--- pthreadw32/tests/rwlock3_t.c 2005-01-01 14:36:17 +0000 ++++ pthreadw32/tests/rwlock3_t.c 2010-07-10 23:05:44 +0000 +@@ -68,7 +68,7 @@ + + _ftime(&currSysTime); + +- abstime.tv_sec = currSysTime.time; ++ abstime.tv_sec = (long)currSysTime.time; + abstime.tv_nsec = NANOSEC_PER_MILLISEC * currSysTime.millitm; + + abstime.tv_sec += 1; + +=== modified file 'tests/rwlock4_t.c' +--- pthreadw32/tests/rwlock4_t.c 2005-01-01 14:36:17 +0000 ++++ pthreadw32/tests/rwlock4_t.c 2010-07-10 23:05:44 +0000 +@@ -68,7 +68,7 @@ + + _ftime(&currSysTime); + +- abstime.tv_sec = currSysTime.time; ++ abstime.tv_sec = (long)currSysTime.time; + abstime.tv_nsec = NANOSEC_PER_MILLISEC * currSysTime.millitm; + + abstime.tv_sec += 1; + +=== modified file 'tests/rwlock5_t.c' +--- pthreadw32/tests/rwlock5_t.c 2005-01-01 14:36:17 +0000 ++++ pthreadw32/tests/rwlock5_t.c 2010-07-10 23:05:44 +0000 +@@ -70,7 +70,7 @@ + + _ftime(&currSysTime); + +- abstime.tv_sec = currSysTime.time; ++ abstime.tv_sec = (long)currSysTime.time; + abstime.tv_nsec = NANOSEC_PER_MILLISEC * currSysTime.millitm; + + abstime.tv_sec += 1; + +=== modified file 'tests/rwlock6.c' +--- pthreadw32/tests/rwlock6.c 2005-01-01 14:36:17 +0000 ++++ pthreadw32/tests/rwlock6.c 2010-07-10 23:05:44 +0000 +@@ -77,9 +77,9 @@ + pthread_t wrt1; + pthread_t wrt2; + pthread_t rdt; +- int wr1Result = 0; +- int wr2Result = 0; +- int rdResult = 0; ++ DWORD_PTR wr1Result = 0; ++ DWORD_PTR wr2Result = 0; ++ DWORD_PTR rdResult = 0; + + bankAccount = 0; + + +=== modified file 'tests/rwlock6_t.c' +--- pthreadw32/tests/rwlock6_t.c 2005-01-01 14:36:17 +0000 ++++ pthreadw32/tests/rwlock6_t.c 2010-07-10 23:05:44 +0000 +@@ -55,7 +55,7 @@ + bankAccount += 10; + assert(pthread_rwlock_unlock(&rwlock1) == 0); + +- return ((void *) bankAccount); ++ return ((void *) (size_t) bankAccount); + } + + void * rdfunc(void * arg) +@@ -67,17 +67,17 @@ + + _ftime(&currSysTime); + +- abstime.tv_sec = currSysTime.time; ++ abstime.tv_sec = (long)currSysTime.time; + abstime.tv_nsec = NANOSEC_PER_MILLISEC * currSysTime.millitm; + + +- if ((int) arg == 1) ++ if ((int) ((size_t) arg) == 1) + { + abstime.tv_sec += 1; + assert(pthread_rwlock_timedrdlock(&rwlock1, &abstime) == ETIMEDOUT); + ba = 0; + } +- else if ((int) arg == 2) ++ else if ((int) ((size_t) arg) == 2) + { + abstime.tv_sec += 3; + assert(pthread_rwlock_timedrdlock(&rwlock1, &abstime) == 0); +@@ -85,7 +85,7 @@ + assert(pthread_rwlock_unlock(&rwlock1) == 0); + } + +- return ((void *) ba); ++ return ((void *) (size_t) ba); + } + + int +@@ -95,10 +95,10 @@ + pthread_t wrt2; + pthread_t rdt1; + pthread_t rdt2; +- int wr1Result = 0; +- int wr2Result = 0; +- int rd1Result = 0; +- int rd2Result = 0; ++ DWORD_PTR wr1Result = 0; ++ DWORD_PTR wr2Result = 0; ++ DWORD_PTR rd1Result = 0; ++ DWORD_PTR rd2Result = 0; + + bankAccount = 0; + + +=== modified file 'tests/rwlock6_t2.c' +--- pthreadw32/tests/rwlock6_t2.c 2005-01-01 14:36:17 +0000 ++++ pthreadw32/tests/rwlock6_t2.c 2010-07-10 23:05:44 +0000 +@@ -54,21 +54,21 @@ + int result; + + result = pthread_rwlock_timedwrlock(&rwlock1, &abstime); +- if ((int) arg == 1) ++ if ((int) ((size_t)arg) == 1) + { + assert(result == 0); + Sleep(2000); + bankAccount += 10; + assert(pthread_rwlock_unlock(&rwlock1) == 0); +- return ((void *) bankAccount); ++ return ((void *) (size_t) bankAccount); + } +- else if ((int) arg == 2) ++ else if ((int) ((size_t)arg) == 2) + { + assert(result == ETIMEDOUT); +- return ((void *) 100); ++ return ((void *) (size_t) 100); + } + +- return ((void *) -1); ++ return ((void *) (size_t) -1); + } + + void * rdfunc(void * arg) +@@ -77,7 +77,7 @@ + + assert(pthread_rwlock_timedrdlock(&rwlock1, &abstime) == ETIMEDOUT); + +- return ((void *) ba); ++ return ((void *) (size_t) ba); + } + + int +@@ -86,15 +86,15 @@ + pthread_t wrt1; + pthread_t wrt2; + pthread_t rdt; +- int wr1Result = 0; +- int wr2Result = 0; +- int rdResult = 0; ++ DWORD_PTR wr1Result = 0; ++ DWORD_PTR wr2Result = 0; ++ DWORD_PTR rdResult = 0; + struct _timeb currSysTime; + const DWORD NANOSEC_PER_MILLISEC = 1000000; + + _ftime(&currSysTime); + +- abstime.tv_sec = currSysTime.time; ++ abstime.tv_sec = (long)currSysTime.time; + abstime.tv_nsec = NANOSEC_PER_MILLISEC * currSysTime.millitm; + + abstime.tv_sec += 1; + +=== modified file 'tests/semaphore1.c' +--- pthreadw32/tests/semaphore1.c 2005-05-08 16:52:50 +0000 ++++ pthreadw32/tests/semaphore1.c 2010-07-10 23:05:44 +0000 +@@ -119,7 +119,7 @@ + { + pthread_t t; + sem_t s; +- int result; ++ DWORD_PTR result; + + assert(pthread_create(&t, NULL, thr, NULL) == 0); + assert(pthread_join(t, (void **)&result) == 0); + +=== modified file 'tests/semaphore4.c' +--- pthreadw32/tests/semaphore4.c 2005-01-01 14:36:17 +0000 ++++ pthreadw32/tests/semaphore4.c 2010-07-10 23:05:44 +0000 +@@ -113,7 +113,7 @@ + //printf("value = %d\n", -value); fflush(stdout); + assert(pthread_cancel(t[50]) == 0); + { +- int result; ++ DWORD_PTR result; + assert(pthread_join(t[50], (void **) &result) == 0); + // printf("result = %d\n", result); fflush(stdout); + } + +=== modified file 'tests/spin3.c' +--- pthreadw32/tests/spin3.c 2005-01-01 14:36:17 +0000 ++++ pthreadw32/tests/spin3.c 2010-07-10 23:05:44 +0000 +@@ -46,7 +46,7 @@ + + void * unlocker(void * arg) + { +- int expectedResult = (int) arg; ++ int expectedResult = (int) (size_t) arg; + + wasHere++; + assert(pthread_spin_unlock(&spin) == expectedResult); + +=== modified file 'tests/spin4.c' +--- pthreadw32/tests/spin4.c 2005-01-01 14:36:17 +0000 ++++ pthreadw32/tests/spin4.c 2010-07-10 23:05:44 +0000 +@@ -63,7 +63,7 @@ + int + main() + { +- long result = 0; ++ DWORD_PTR result = 0; + pthread_t t; + int CPUs; + struct _timeb sysTime; + +=== modified file 'tests/stress1.c' +--- pthreadw32/tests/stress1.c 2010-06-20 03:31:18 +0000 ++++ pthreadw32/tests/stress1.c 2010-07-10 23:29:46 +0000 +@@ -141,9 +141,9 @@ + void * + masterThread (void * arg) + { +- int dither = (int) arg; ++ int dither = (int) (size_t)arg; + +- timeout = (int) arg; ++ timeout = (int) (size_t)arg; + + pthread_barrier_wait(&startBarrier); + +@@ -239,7 +239,7 @@ + assert(pthread_barrier_init(&readyBarrier, NULL, 3) == 0); + assert(pthread_barrier_init(&holdBarrier, NULL, 3) == 0); + +- assert(pthread_create(&master, NULL, masterThread, (void *) timeout) == 0); ++ assert(pthread_create(&master, NULL, masterThread, (void *) (size_t)timeout) == 0); + assert(pthread_create(&slave, NULL, slaveThread, NULL) == 0); + + allExit = FALSE; + +=== modified file 'tests/tsd1.c' +--- pthreadw32/tests/tsd1.c 2005-05-08 16:52:50 +0000 ++++ pthreadw32/tests/tsd1.c 2010-07-10 23:05:44 +0000 +@@ -179,7 +179,7 @@ + */ + for (i = 1; i < NUM_THREADS; i++) + { +- int result = 0; ++ DWORD_PTR result = 0; + + assert(pthread_join(thread[i], (void **) &result) == 0); + } + +=== modified file 'tests/tsd2.c' +--- pthreadw32/tests/tsd2.c 2005-05-08 16:52:50 +0000 ++++ pthreadw32/tests/tsd2.c 2010-07-10 23:05:44 +0000 +@@ -183,7 +183,7 @@ + */ + for (i = 1; i < NUM_THREADS; i++) + { +- int result = 0; ++ DWORD_PTR result = 0; + + assert(pthread_join(thread[i], (void **) &result) == 0); + } + +=== modified file 'version.rc' +--- pthreadw32/version.rc 2005-05-19 04:19:35 +0000 ++++ pthreadw32/version.rc 2010-07-10 23:05:44 +0000 +@@ -102,7 +102,7 @@ + BEGIN + BLOCK "040904b0" + BEGIN +- VALUE "FileDescription", "POSIX Threads for Windows32 Library\0" ++ VALUE "FileDescription", "POSIX Threads for Windows Library\0" + VALUE "ProductVersion", PTW32_VERSION_STRING + VALUE "FileVersion", PTW32_VERSION_STRING + VALUE "InternalName", PTW32_VERSIONINFO_NAME + diff -Nru handbrake-0.9.9+dfsg/contrib/x264/A00-version-string.patch handbrake-0.9.9+ppa1/contrib/x264/A00-version-string.patch --- handbrake-0.9.9+dfsg/contrib/x264/A00-version-string.patch 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/contrib/x264/A00-version-string.patch 2013-05-17 17:01:44.000000000 +0000 @@ -0,0 +1,23 @@ +diff --git a/x264.h b/x264.h +index e5a1600..f635d9e 100644 +--- a/x264.h ++++ b/x264.h +@@ -41,7 +41,17 @@ + + #include "x264_config.h" + +-#define X264_BUILD 130 ++/* ++ * Define the full version explicitly so that it survives a git --archive. ++ * ++ * Patch will break every time X264_BUILD changes, so that we don't forget to ++ * update it ;-) ++ */ ++#ifdef X264_VERSION ++#undef X264_VERSION ++#endif ++#define X264_BUILD 130 ++#define X264_VERSION " r2273 b3065e6" + + /* Application developers planning to link against a shared library version of + * libx264 from a Microsoft Visual Studio or similar development environment diff -Nru handbrake-0.9.9+dfsg/contrib/x264/module.defs handbrake-0.9.9+ppa1/contrib/x264/module.defs --- handbrake-0.9.9+dfsg/contrib/x264/module.defs 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/contrib/x264/module.defs 2013-02-27 21:42:33.000000000 +0000 @@ -0,0 +1,23 @@ +$(eval $(call import.MODULE.defs,X264,x264,YASM PTHREADW32)) +$(eval $(call import.CONTRIB.defs,X264)) + +X264.FETCH.url = http://download.handbrake.fr/handbrake/contrib/x264-r2273-b3065e6.tar.gz +X264.EXTRACT.tarbase = x264 + +X264.CONFIGURE.deps = +X264.CONFIGURE.shared = +X264.CONFIGURE.static = + +X264.CONFIGURE.extra = --disable-cli --enable-static --enable-strip +X264.CONFIGURE.extra += --disable-gpac --disable-avs --disable-lavf --disable-ffms --disable-swscale + +ifeq (1-mingw,$(BUILD.cross)-$(BUILD.system)) + X264.CONFIGURE.extra += --cross-prefix=$(BUILD.spec)- + X264.CONFIGURE.env.CFLAGS = CFLAGS="-I$(call fn.ABSOLUTE,$(CONTRIB.build/)include) $(call fn.ARGS,X264.GCC,*archs *sysroot *minver ?extra)" + X264.CONFIGURE.env.LDFLAGS = LDFLAGS="-L$(call fn.ABSOLUTE,$(CONTRIB.build/)lib) $(call fn.ARGS,X264.GCC,*archs *sysroot *minver)" +endif + +ifeq (1,$(FEATURE.local_yasm)) + X264.CONFIGURE.env.LOCAL_PATH = PATH="$(call fn.ABSOLUTE,$(CONTRIB.build/)bin):$(PATH)" + X264.BUILD.env = PATH="$(call fn.ABSOLUTE,$(CONTRIB.build/)bin):$(PATH)" +endif diff -Nru handbrake-0.9.9+dfsg/contrib/x264/module.rules handbrake-0.9.9+ppa1/contrib/x264/module.rules --- handbrake-0.9.9+dfsg/contrib/x264/module.rules 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/contrib/x264/module.rules 2009-03-01 17:28:24.000000000 +0000 @@ -0,0 +1,2 @@ +$(eval $(call import.MODULE.rules,X264)) +$(eval $(call import.CONTRIB.rules,X264)) diff -Nru handbrake-0.9.9+dfsg/contrib/yasm/module.defs handbrake-0.9.9+ppa1/contrib/yasm/module.defs --- handbrake-0.9.9+dfsg/contrib/yasm/module.defs 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/contrib/yasm/module.defs 2013-01-22 16:19:47.000000000 +0000 @@ -0,0 +1,5 @@ +$(eval $(call import.MODULE.defs,YASM,yasm)) +$(eval $(call import.CONTRIB.defs,YASM)) + +YASM.FETCH.url = http://download.handbrake.fr/handbrake/contrib/yasm-1.2.0.tar.gz + diff -Nru handbrake-0.9.9+dfsg/contrib/yasm/module.rules handbrake-0.9.9+ppa1/contrib/yasm/module.rules --- handbrake-0.9.9+dfsg/contrib/yasm/module.rules 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/contrib/yasm/module.rules 2011-10-25 02:18:15.000000000 +0000 @@ -0,0 +1,2 @@ +$(eval $(call import.MODULE.rules,YASM)) +$(eval $(call import.CONTRIB.rules,YASM)) diff -Nru handbrake-0.9.9+dfsg/contrib/zlib/module.defs handbrake-0.9.9+ppa1/contrib/zlib/module.defs --- handbrake-0.9.9+dfsg/contrib/zlib/module.defs 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/contrib/zlib/module.defs 2011-02-04 19:54:10.000000000 +0000 @@ -0,0 +1,12 @@ +$(eval $(call import.MODULE.defs,ZLIB,zlib)) +$(eval $(call import.CONTRIB.defs,ZLIB)) + +ZLIB.FETCH.url = http://download.handbrake.fr/handbrake/contrib/zlib-1.2.3.tar.gz +ZLIB.EXTRACT.tarbase = zlib +ZLIB.CONFIGURE.args = !sete @dir !env !exe @prefix !extra + +ifeq (1-mingw,$(BUILD.cross)-$(BUILD.system)) + ZLIB.CONFIGURE.env.AR = AR="$(AR.exe) rc" + ZLIB.CONFIGURE.env.RANLIB = RANLIB="$(RANLIB.exe)" + ZLIB.CONFIGURE.env.args += !AR !RANLIB +endif diff -Nru handbrake-0.9.9+dfsg/contrib/zlib/module.rules handbrake-0.9.9+ppa1/contrib/zlib/module.rules --- handbrake-0.9.9+dfsg/contrib/zlib/module.rules 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/contrib/zlib/module.rules 2009-03-01 17:28:24.000000000 +0000 @@ -0,0 +1,2 @@ +$(eval $(call import.MODULE.rules,ZLIB)) +$(eval $(call import.CONTRIB.rules,ZLIB)) diff -Nru handbrake-0.9.9+dfsg/debian/changelog handbrake-0.9.9+ppa1/debian/changelog --- handbrake-0.9.9+dfsg/debian/changelog 2014-03-24 05:55:38.000000000 +0000 +++ handbrake-0.9.9+ppa1/debian/changelog 2014-04-21 04:26:19.000000000 +0000 @@ -1,457 +1,8 @@ -handbrake (0.9.9+dfsg-2~2.gbpa4c3e9build1) trusty; urgency=medium +handbrake (0.9.9+ppa1-0.14.04.md.1) trusty; urgency=medium - * No-change rebuild for x264 soname bump. + * debian/patches/gstreamer-1-ftbfs.patch: fix ftbfs with gstreamer1.0. + * debian/patches/update_x264.patch: updated x264 version to fix segfault + with newer gcc. + * debian/control: rename binary package from handbrake-gtk to handbrake. - -- Matthias Klose Mon, 24 Mar 2014 05:55:38 +0000 - -handbrake (0.9.9+dfsg-2~2.gbpa4c3e9) unstable; urgency=low - - * Make handbrake-dbg architecture field match the other packages - * Bump standards-version to 3.9.5 - * Use canonical vcs fields - - -- Jackson Doak Wed, 18 Dec 2013 16:07:47 +1100 - -handbrake (0.9.9+dfsg-1~2.gbpa4c3e9) unstable; urgency=low - - [ Rogério Brito ] - ** SNAPSHOT build @a4c3e9848f6d67c89e3775f1f40d2704a425c54e ** - - * Remove gitignore to avoid conflicts with merges from upstream. - * Imported Upstream version 0.9.9 - * Imported Upstream version 0.9.9+dfsg - * debian/patches: Refresh all patches. - * debian/control: - + Fix order of build-depends. - + Remove build-dep on wget. - * debian/patches: Add patch to prepare compilation with gstreamer 1.x. - * debian/control: - + Change (build-)deps to gstreamer 1.x. - + Add recommends on gstreamer1.0-{pulseaudio,alsa}. - + Add authorship to patch 'use older libmkv'. - + Remove many patches unreferenced in the series file. - - [ Reinhard Tartler ] - * Upload to unstable - * Do not require neither curl nor wget in the build environment. - - -- Reinhard Tartler Tue, 26 Nov 2013 21:30:07 -0500 - -handbrake (0.9.8+dfsg2+git0b44ec-2) experimental; urgency=low - - The changelog entry for -1 was incomplete and has been merged into -2. - - [ Paul Gevers ] - * New upstream releases with fixes for: - - crash while scanning dvd features (upstream svn r4605, closes: #691067) - - Fixes compilation against libav9 (closes: #701039) - * Patches applied upstream or obsolete: - - 0001-libhb-Fix-erroneous-memcpy-used-with-overlapping-mem.patch - - 0002-Fix-include-with-the-system-s-libav.patch - - 0007-Fix-for-compilation-with-Debian-s-libbluray.patch - - 0013-format-security.patch - - Refreshed other patches - * debian/control: Make some build-dependencies more explicit - * Add libavresample-dev to build dep and version the one on libavutil-dev - - [ Fabian Greffrath ] - * Fix FTBFS on hurd-i386, thanks Pino Toscano (Closes: #693012). - * Add a debian/TODO file to attract potential contributors. ;) - * Rename handbrake-gtk to handbrake. - * Remove misleading reference to non-existant Info page for handbrake-cli, - thanks Helge Kreutzmann (Closes: #696471). - - [ Reinhard Tartler ] - * add/update patches to allow compilation with unpatched system libraries: - - 0014-Use-unpatched-a52.patch to unbreak - - 0017-fixup-libmkv.patch - * use bzip2 compression - * upload to experimental - - -- Reinhard Tartler Sat, 16 Mar 2013 17:07:54 +0100 - -handbrake (0.9.8+dfsg1-2) experimental; urgency=low - - [ Dmitry Smirnov ] - * adding handbrake-dbg package - * adding man pages - * libdvdread4 (>= 4.2.0+20120521-3) to Recommends: - * removing ccache (obsolete) from Build-depends - - [ Fabian Greffrath ] - * Versioned recommends are moot, use versioned Breaks instead. - - [ Reinhard Tartler ] - * Fix version numbering. - The git snapshot id really needs to be part of the - upstream version. I'm leaving that out for now to avoid having to - reroll a new tarball, we'll handle it properly on the next - upstream version. - - -- Reinhard Tartler Sun, 21 Oct 2012 18:28:51 +0200 - -handbrake (0.9.8+dfsg1-1~19.gbpc8b9ba) experimental; urgency=low - - * Team upload. - - [ Rogério Brito ] - * Note: This is an almost complete rework of the packaging included in - previous iterations of handbrake. This changelog reflects only a - fraction of the work that went into make it suitable for Debian and - involved the work of many people. For the complete list of changes, - we kindly refer you to the git repository for all the details. - * Many janitorial fixes to the packaging, including: - + Force bug reporting to go Debian's BTS. - + Convert the package to format 3.0 (quilt). - + Add me as Maintainer. - + Add Reinhard Tartler to Uploaders. - + Install upstream's changelog. - + Add DEP-3 metadata to patches. - + First approximation of a DEP-5-like format. - + Use max xz compression with 'extreme' strategy for debs. - + Add versioned pre-depends on dpkg for xz compression. - * Mark patches that were forwarded upstream. - * Fix build-dependencies/compilation fixes: - + Include libdbus-glib-1-dev, libgtk-2.0-dev. - + Remove unused libxvidcore-dev, libfaac-dev. - + Don't use external sources for libraries that we already have - in debian, by including (but not limited to): - libx264-dev, libbluray-dev, libdvdnav-dev, libdvdread-dev, - libmpeg2-4-dev, various components of libav. - Thanks to Daniel Baumann for uploading suitable, new versions - libdvd{nav,read} in time. - * debian/patches: - + 0001-Remove-encoding-...: - Remove encoding indication from desktop file, spotted by lintian. - + 0002-Fix-include-with-the-system-s-libav: - Use Debian's libav instead of ffmpeg 0.7 downloaded and patched - at build time. Thanks to Fabian Greffrath for the cleaner solution. - + 0003-Remove-embedded-...: - + 0004-Enable-compilation-on-Debian-arches...: - Adapt kFreeBSD compilation patch to work with the HURD. Thanks to - Pino Toscano for the review and modifications. - + 0005-libhb-Fix-compilation-with-mp4v2-v1.9.1-...: - + 0006-LinGUI-Allow-user-to-pass-libavcodec-settings-...: - + 0007-Fix-for-compilation-with-Debian-s-libbluray: - + 0008-Fix-for-compilation-with-Debian-s-libdca: - + 0010-Remove-FAAC-dependency: - Patch to remove use of FAAC---it is non-free and there are good - enough solutions for use as substitutes. - + 0011-First-try-at-removing-some-of-mp4v2: - First try at removing some of mp4v2---linking mp4v2 against - handbrake results in undistributable binaries, which poses a problem - for Debian. - * debian/patches: - + Add 0014-Use-unpatched-a52.patch for use with future releases. - * debian/patches: - + Add 0015-use-metadata-reading-from-libav.patch to avoid using mp4v2 - and, therefore, a license problem with linking MPL1.1 code. - * Wrap long lines in the changelog. - * debian/patches: Add patch to fix memcpy with overlapping memory regions. - * Imported Upstream version 0.9.8 - * debian/patches: - + 0001-Remove-encoding-...: remove, applied upstream. - + 0004-Enable-compilation-on-Debian-arches...: partially applied - upstream, adjust. - + 0006-LinGUI-Allow-user-to-pass-libavcodec-settings-...: remove, - applied upstream. - + 0011-First-try-at-removing-some-of-mp4v2: partially applied - upstream, adjust. - + 0012-FLAGS.patch: remove, applied upstream. - + Refresh remaining patches. - + 0016-...: Use unpatched libmkv for the moment. - * debian/rules: Simplify, after changes accepted upstream. - - [ Andres Mejia ] - * Change Priority to optional. - * Add myself to Uploaders field. - * Add default gbp options to enable pristine-tar. - - [ Reinhard Tartler ] - * fix my email address - * Upload to experimental - * Remove ccache diversion - * Prune the following subdirectories from the upstream tarball: - - contrib/ - - download/ - - macosx/ - - win/ - - [ Fabian Greffrath ] - * Bring master branch back to pristine upstream branch + patches - * Add versions to build-dependencies on libdvdnav-dev and libdvdread-dev. - * Consider CFLAGS, CPPFLAGS and LDFLAGS in libhb build and fix format - string security errors. - * Filter optimization and debug flags out of dpkg-buildflags. - * Fix lintian warnings WRT debian/changelog. - * Some cosmetic changes to debian/control. - * Simplify debian/patches/0003-Remove-embedded-downloaded-....patch - * Set LDFLAGS in debian/rules instead of hard-coding them. - * Simplify debian/handbrake-gtk.install. - * Improvements to 0010-Remove-FAAC-dependency.patch: - * Get rid of libmp4v2 and thus MP4 muxing and fall back to MKV instead. - * Mention in the package description that we have ripped out libfaac and - libmp4v2. - * Add some copyright holders and LGPL-licensed files to debian/copyright. - * Add debian/README.source with instructions and reasons to repackage - the source tarball when handbrake gets eventually uploaded to Debian. - * Add myself to Uploaders. - - -- Reinhard Tartler Sun, 30 Sep 2012 18:19:41 +0200 - -handbrake (0.9.6-0.1) unstable; urgency=low - - * Rebuild against libx264-122. - * Move to debhelper 9 and add a new patch 04_format-security to fix the - build with hardened flags. - - -- Christian Marillat Sat, 17 Mar 2012 17:17:22 +0100 - -handbrake (0.9.6-0.0) unstable; urgency=low - - * New upstream release. - - -- Christian Marillat Wed, 29 Feb 2012 08:44:28 +0100 - -handbrake (0.9.5-0.10) unstable; urgency=low - - * Rebuild against libx264-120. - - -- Christian Marillat Wed, 25 Jan 2012 11:07:21 +0100 - -handbrake (0.9.5-0.9) unstable; urgency=low - - * New patch 04_use-TEMP from git to use TEMP or TEMPDIR environment - variables for location of tmp directory. Falls back to /tmp if neither - are set (Thanks to martin f krafft for the bug report). - - -- Christian Marillat Sat, 05 Nov 2011 11:18:16 +0100 - -handbrake (0.9.5-0.8) unstable; urgency=low - - * Rebuild against external libmp4v2-1. - - -- Christian Marillat Tue, 18 Oct 2011 09:23:29 +0200 - -handbrake (0.9.5-0.7) unstable; urgency=low - - * Rebuild against libx264-118. - - -- Christian Marillat Mon, 26 Sep 2011 08:16:41 +0200 - -handbrake (0.9.5-0.6) unstable; urgency=low - - * Rebuild against linotify4. - - -- Christian Marillat Sat, 06 Aug 2011 18:26:31 +0200 - -handbrake (0.9.5-0.5) unstable; urgency=low - - * Rebuild against libx264-116. - - -- Christian Marillat Wed, 13 Jul 2011 16:57:03 +0200 - -handbrake (0.9.5-0.4) unstable; urgency=low - - * Rebuild against libx264-115. - * Remove libhal-storage-dev from Build-depends. - * Add a mpeg2 patch from upstream to fix a gcc 4.6 bug. - - -- Christian Marillat Thu, 02 Jun 2011 10:02:39 +0200 - -handbrake (0.9.5-0.3) unstable; urgency=low - - * Rebuild against libx264-114. - * debian/control Added kfreebsd-amd64 in Architecture: field. - - -- Christian Marillat Sun, 06 Mar 2011 18:58:08 +0100 - -handbrake (0.9.5-0.2) unstable; urgency=low - - * Use make/variant/linux.defs instead of make/variant/freebsd.defs to - build the kfreebsd package. - - -- Christian Marillat Sat, 29 Jan 2011 12:07:25 +0100 - -handbrake (0.9.5-0.1) unstable; urgency=low - - * Added libass-dev in Build-Depends. - - -- Christian Marillat Sat, 15 Jan 2011 11:17:36 +0100 - -handbrake (0.9.5-0.0) unstable; urgency=low - - * New upstream release. - - -- Christian Marillat Sat, 15 Jan 2011 01:18:41 +0100 - -handbrake (0.9.4+svn20100902-0.1) unstable; urgency=low - - * New upstream release. - * Arch should be only amd64, i386, kfreebsd-i386 and powerpc. - - -- Christian Marillat Fri, 14 Jan 2011 19:44:22 +0100 - -handbrake (0.9.4+svn20100902-0.0) unstable; urgency=low - - * New svn release (3506). - * Remove 02_no-mm_flags patch (Fix crash with high profile and DVD). - * Build against latest x264 who add options for trellis and psy-trellis - for cavlc. - - -- Christian Marillat Fri, 03 Sep 2010 10:09:57 +0200 - -handbrake (0.9.4+svn20100726-0.0) unstable; urgency=low - - * New svn release (3460). - - -- Christian Marillat Mon, 26 Jul 2010 12:07:07 +0200 - -handbrake (0.9.4+svn20100705-0.0) unstable; urgency=low - - * New svn release (3428). - * Added gstreamer0.10-ffmpeg and gstreamer0.10-x in Recommends. These - packages are necessary to display video preview. - * As the build is fixed upstream, remove Build-Conflicts for libva-dev. - - -- Christian Marillat Mon, 05 Jul 2010 19:06:54 +0200 - -handbrake (0.9.4+svn20100624-0.0) unstable; urgency=low - - * New svn release (3402). - * This version add a preset for iPad. - - -- Christian Marillat Thu, 24 Jun 2010 09:30:56 +0200 - -handbrake (0.9.4+svn20100613-0.0) unstable; urgency=low - - * New svn release (3380). - * Update 04_kfreebsd patch as kfreebsd doesn't have udev. - - -- Christian Marillat Sun, 13 Jun 2010 12:00:03 +0200 - -handbrake (0.9.4+svn20100607-0.0) unstable; urgency=low - - * New svn release (3365). - - -- Christian Marillat Mon, 07 Jun 2010 11:25:39 +0200 - -handbrake (0.9.4+svn20100419-0.0) unstable; urgency=low - - * New svn release (3242). - * Added support for kfreebsd-i386. - - -- Christian Marillat Mon, 19 Apr 2010 15:18:58 +0200 - -handbrake (0.9.4+svn20100314-0.0) unstable; urgency=low - - * New svn release (3167). - - -- Christian Marillat Sun, 14 Mar 2010 12:54:53 +0100 - -handbrake (0.9.4+svn20100208-0.2) unstable; urgency=low - - * Fix handbrake version number. - - -- Christian Marillat Sat, 13 Mar 2010 16:10:48 +0100 - -handbrake (0.9.4+svn20100208-0.1) unstable; urgency=low - - * Fix the build for powerpc. - - -- Christian Marillat Sun, 21 Feb 2010 14:59:30 +0100 - -handbrake (0.9.4+svn20100208-0.0) unstable; urgency=low - - * New svn release (3104). - - -- Christian Marillat Mon, 08 Feb 2010 19:07:33 +0100 - -handbrake (0.9.4-0.1) unstable; urgency=low - - * Build included ffmpeg with ccache. - - -- Christian Marillat Thu, 26 Nov 2009 00:14:46 +0100 - -handbrake (0.9.4-0.0) unstable; urgency=low - - * New usptream release. - - -- Christian Marillat Wed, 25 Nov 2009 23:37:58 +0100 - -handbrake (0.9.3+svn20091021-0.0) unstable; urgency=low - - * New svn release (2893). - * rebuild against libx264-78. - - -- Christian Marillat Wed, 21 Oct 2009 20:12:46 +0200 - -handbrake (0.9.3+svn20091012-0.0) unstable; urgency=low - - * New svn release (2877). - - -- Christian Marillat Mon, 12 Oct 2009 11:40:28 +0200 - -handbrake (0.9.3+svn2773-0.2) unstable; urgency=low - - * Rebuild against libx264-76. - - -- Christian Marillat Tue, 06 Oct 2009 11:21:37 +0200 - -handbrake (0.9.3+svn2773-0.1) unstable; urgency=low - - * Rebuild against latest libfaad-dev package. - - -- Christian Marillat Sat, 19 Sep 2009 15:11:05 +0200 - -handbrake (0.9.3+svn2773-0.0) unstable; urgency=low - - * Svn release, the unstable package doesn't work with the latest - libgtk2.0-0 package (2.16.6-1). - - -- Christian Marillat Sun, 13 Sep 2009 17:14:08 +0200 - -handbrake (0.9.3-0.5) unstable; urgency=low - - * debian/rules remove call to dh_desktop. - - -- Christian Marillat Mon, 11 May 2009 20:50:08 +0200 - -handbrake (0.9.3-0.4) unstable; urgency=low - - * Remove a call to svn and remove subversion from Build-Depends. - * Fix build for mipsel and sparc. - - -- Christian Marillat Mon, 11 May 2009 19:56:52 +0200 - -handbrake (0.9.3-0.3) unstable; urgency=low - - * Added support for ccache. - * make the build more verbose. - * In some arch (armel) the mm_flags function doesn't exist, so do a patch - to not use this function when we build for armel. - - -- Christian Marillat Sun, 10 May 2009 22:05:57 +0200 - -handbrake (0.9.3-0.2) unstable; urgency=low - - * Build against the latest libdvdread-dev. - * New patch 03_libdvdread4 to fix build with libdvdread4. - - -- Christian Marillat Sat, 07 Mar 2009 12:38:03 +0100 - -handbrake (0.9.3-0.1) unstable; urgency=low - - * Don't Build-Depends on libgtk2.0-dev, libgtkhtml3.14-dev already depends - on that package. - * Add call for dh_icons and dh_desktop for handbrake-gtk package. - * Add a symlink handbrake-gtk -> ghb - - -- Christian Marillat Thu, 15 Jan 2009 16:01:39 +0100 - -handbrake (0.9.3-0.0) unstable; urgency=low - - * Initial release. - * Added copyright from Ubuntu. - - -- Christian Marillat Sat, 13 Dec 2008 18:00:44 +0100 + -- Marc Deslauriers Sun, 20 Apr 2014 23:43:23 -0400 diff -Nru handbrake-0.9.9+dfsg/debian/clean handbrake-0.9.9+ppa1/debian/clean --- handbrake-0.9.9+dfsg/debian/clean 2013-12-18 04:51:29.000000000 +0000 +++ handbrake-0.9.9+ppa1/debian/clean 1970-01-01 00:00:00.000000000 +0000 @@ -1,14 +0,0 @@ -gtk/Makefile.in -gtk/aclocal.m4 -gtk/compile -gtk/config.guess -gtk/config.h.in -gtk/config.sub -gtk/configure -gtk/depcomp -gtk/install-sh -gtk/ltmain.sh -gtk/missing -gtk/mkinstalldirs -gtk/po/Makefile.in.in -gtk/src/Makefile.in diff -Nru handbrake-0.9.9+dfsg/debian/compat handbrake-0.9.9+ppa1/debian/compat --- handbrake-0.9.9+dfsg/debian/compat 2013-12-18 04:51:29.000000000 +0000 +++ handbrake-0.9.9+ppa1/debian/compat 2013-05-18 16:08:58.000000000 +0000 @@ -1 +1 @@ -9 +6 diff -Nru handbrake-0.9.9+dfsg/debian/control handbrake-0.9.9+ppa1/debian/control --- handbrake-0.9.9+dfsg/debian/control 2013-12-18 04:51:29.000000000 +0000 +++ handbrake-0.9.9+ppa1/debian/control 2014-04-21 04:21:42.000000000 +0000 @@ -1,120 +1,33 @@ Source: handbrake Section: graphics Priority: optional -Maintainer: Debian Multimedia Maintainers -Uploaders: - Rogério Brito , - Reinhard Tartler , - Andres Mejia , - Fabian Greffrath +Maintainer: John Stebbins +Build-Depends: debhelper (>= 6), autotools-dev, libtool, libgudev-1.0-dev, intltool, autoconf, yasm (>= 1.1.0), libbz2-dev, zlib1g-dev, libgtk-3-dev, libwebkitgtk-3.0-dev, libnotify-dev, libgstreamer1.0-dev, libgstreamer-plugins-base1.0-dev, wget, subversion, python (>= 2.6), libappindicator3-dev, libfribidi-dev (>= 0.19.0), libxml2-dev, libogg-dev, libtheora-dev, libvorbis-dev, libsamplerate0-dev, libfreetype6-dev, libfontconfig1-dev, libass-dev +Standards-Version: 3.8.4 Homepage: http://www.handbrake.fr/ -Vcs-Git: git://anonscm.debian.org/pkg-multimedia/handbrake.git -Vcs-Browser: http://anonscm.debian.org/gitweb/?p=pkg-multimedia/handbrake.git;a=summary -Standards-Version: 3.9.5 -Build-Depends: - automake, - debhelper (>= 9), - intltool, - liba52-0.7.4-dev, - libass-dev, - libavcodec-dev, - libavformat-dev, - libavresample-dev, - libavutil-dev (>= 6:9), - libbluray-dev, - libbz2-dev, - libdbus-glib-1-dev, - libdca-dev, - libdvdnav-dev (>= 4.2.0+20120524), - libdvdread-dev (>= 4.2.0+20120521), - libfontconfig1-dev, - libfreetype6-dev, - libgstreamer-plugins-base1.0-dev, - libgstreamer1.0-dev, - libgtk2.0-dev, - libgudev-1.0-dev [linux-any], - libmkv-dev (>= 0.6.5.1), - libmp3lame-dev, - libmpeg2-4-dev, - libnotify-dev (>= 0.7.3), - libogg-dev, - libsamplerate0-dev, - libswscale-dev, - libtheora-dev, - libtool, - libvorbis-dev, - libwebkit-dev, - libx264-dev, - libxml2-dev, - python, - yasm + +Package: handbrake-cli +Architecture: i386 amd64 +Depends: ${shlibs:Depends}, ${misc:Depends} +Conflicts: handbrake +Description: versatile DVD ripper and video transcoder - command line + HandBrake is a versatile, easy-to-use tool for converting DVDs and other videos + into H.264, MPEG-4, or OGG formatted media. It's particularly useful for making + videos that are compatible with portable video devices such as the Apple + iPod/iPhone. This package contains the command-line variant, + HandBrakeCLI Package: handbrake -Architecture: any-amd64 any-i386 powerpc -Pre-Depends: - dpkg (>= 1.15.6~) -Depends: - ${misc:Depends}, - ${shlibs:Depends} -Recommends: - gstreamer1.0-libav, - gstreamer1.0-pulseaudio | gstreamer1.0-alsa, - gstreamer1.0-x +Architecture: i386 amd64 +Depends: ${shlibs:Depends}, ${misc:Depends}, gstreamer1.0-libav, gstreamer1.0-plugins-base, gstreamer1.0-plugins-good, gstreamer1.0-plugins-bad, gstreamer1.0-plugins-ugly, gstreamer1.0-pulseaudio Conflicts: handbrake-gtk Replaces: handbrake-gtk -Breaks: - libdvdread4 (<< 4.2.0+20120521-3) -Description: versatile DVD ripper and video transcoder (GTK GUI) - HandBrake is a versatile, easy-to-use tool for converting DVDs and other - videos into H.264, XViD, or OGG formatted media. It's particularly useful - for making videos that are compatible with portable video devices such as - the Apple iPod/iPhone or Sony PSP. - . - This version of handbrake has been modified for inclusion in Debian. - It does neither support audio encoding to AAC via faac nor MP4 format - muxing via libmp4v2, it falls back to the MKV format instead. - . - This package contains the graphical variant, ghb. +Description: versatile DVD ripper and video transcoder - GTK GUI + HandBrake is a versatile, easy-to-use tool for converting DVDs and other videos + into H.264, MPEG-4, or OGG formatted media. It's particularly useful for making + videos that are compatible with portable video devices such as the Apple + iPod/iPhone. This package contains the graphical variant, ghb. -Package: handbrake-cli -Architecture: any-amd64 any-i386 powerpc -Pre-Depends: - dpkg (>= 1.15.6~) -Depends: - ${misc:Depends}, - ${shlibs:Depends} -Breaks: - libdvdread4 (<< 4.2.0+20120521-3) -Description: versatile DVD ripper and video transcoder (command line) - HandBrake is a versatile, easy-to-use tool for converting DVDs and other - videos into H.264, XViD, or OGG formatted media. It's particularly useful - for making videos that are compatible with portable video devices such as - the Apple iPod/iPhone or Sony PSP. - . - This version of handbrake has been modified for inclusion in Debian. - It does neither support audio encoding to AAC via faac nor MP4 format - muxing via libmp4v2, it falls back to the MKV format instead. - . - This package contains the command-line variant, HandBrakeCLI. -Package: handbrake-dbg -Section: debug -Priority: extra -Architecture: any-amd64 any-i386 powerpc -Depends: - handbrake (= ${binary:Version}), - handbrake-cli (= ${binary:Version}), - ${misc:Depends} -Description: handbrake -- debugging symbols - HandBrake is a versatile, easy-to-use tool for converting DVDs and other - videos into H.264, XViD, or OGG formatted media. It's particularly useful - for making videos that are compatible with portable video devices such as - the Apple iPod/iPhone or Sony PSP. - . - This version of handbrake has been modified for inclusion in Debian. - It does neither support audio encoding to AAC via faac nor MP4 format - muxing via libmp4v2, it falls back to the MKV format instead. - . - This package provides debugging symbols diff -Nru handbrake-0.9.9+dfsg/debian/copyright handbrake-0.9.9+ppa1/debian/copyright --- handbrake-0.9.9+dfsg/debian/copyright 2013-12-18 04:51:29.000000000 +0000 +++ handbrake-0.9.9+ppa1/debian/copyright 2013-05-18 16:08:58.000000000 +0000 @@ -1,59 +1,897 @@ -Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ -Upstream-Name: HandBrake -Upstream-Contact: https://forum.handbrake.fr/ -Source: http://handbrake.fr/ - -Files: * -Copyright: 2007-2008 by the HandBrake team - 2008-2011, John Stebbins - 2005-2006, Michael Niedermayer - 2003, Daniel Moreno - 2004, Kay Sievers -License: GPL-2+ +This package was debianized by John Dong on +Fri, 28 Nov 2008 14:17:16 -0500. -Files: gtk/src/ghbcompositor.* -Copyright: 1995-1997, Peter Mattis, Spencer Kimball and Josh MacDonald -License: LGPL-2+ - -Files: gtk/src/ghbcellrenderertext.* -Copyright: 2000, Red Hat, Inc., Jonathan Blandford -License: LGPL-2+ - -Files: debian/* -Copyright: © 2008-2012, Christian Marillat - © 2012, Rogério Theodoro de Brito -License: GPL-2+ +It was downloaded from http://handbrake.fr/ + +Upstream Author(s): See AUTHORS file for details + + Eric Petit + Laurent Aimar + John Allen (?) (johnallen) + Joe Crain (dynaflash) + Damiano Galassi (ritsuka) + Edward Groenendaal (eddyg) + Rodney Hester (rhester) + Andrew Kimpton (awk) + Chris Lee + Chris Long (chrislong) + Brian Mario (brianmario) + Maurj (maurj) + Mirkwood (mirkwood) + Nyx (Nyx) + Philippe Rigaux (prigaux) + Jonathon Rubin (jbrjake) + Scott (sr55) + Chris Thoman (huevos_rancheros) + Mark Krenek (travistex) + Van Jacobson (van) + +Copyright: + + Copyright (C) 2008 by the HandBrake team (See AUTHORS) + +License: + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +The full text of this license is at `/usr/share/common-licenses/GPL'. + +--- + +The Debian packaging is (C) 2008, John Dong and +is licensed under the GPL, see `/usr/share/common-licenses/GPL'. + + +==== Contrib Libraries ==== + +HandBrake also includes and statically links against several open source +supporting libraries. The source code for these libraries may be found in the +`contribs/' directory. The projects and authors are listed in the +CREDITS file of the source. A copy is installed to +`/usr/share/doc/handbrake-common/CREDITS' when HandBrake is installed. The +source for each library is found in a .txt in the contribs directory. For +example, `contribs/a52dec.tar.gz' is downloaded from the URL in +`contribs/version_a52dec.txt'. + +--- a52dec --- + +License: + + Copyright (C) 2000-2002 Michel Lespinasse + Copyright (C) 1999-2000 Aaron Holtzman + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +On Debian systems, the complete text of the GNU General Public License +can be found in /usr/share/common-licenses/GPL file. + +--- faad2 --- +Upstream Authors: menno + Alexander Kurpiers + M. Bakker + Ahead Software AG + Nero AG +Copyright: 2002-2005 M. Bakker + 2003-2005 Ahead Software AG + 2003-2005 Nero AG + +Other Authors: John Edwards + Bill May + Quinnware + VideoLAN +Copyright: 2002 John Edwards + 2003 Bill May + 1997-2002 Quinnware + 2004 VideoLAN + +License Declaration: + +The GPL may be found in the file /usr/share/common-licenses/GPL. + +The upstream source has the follwing license declaration: +--- +This program is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free Software +Foundation; either version 2 of the License, or (at your option) any later +version. + +This program is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A +PARTICULAR PURPOSE. See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along with +this program; if not, write to the Free Software Foundation, Inc., 59 Temple +Place - Suite 330, Boston, MA 02111-1307, USA. + +Any non-GPL usage of this software or parts of this software is strictly +forbidden. + +The "appropriate copyright message" mentioned in section 2c of the GPLv2 must +read: "Code from FAAD2 is copyright (c) Nero AG, www.nero.com" +--- + +The aacDECdrop module has the following license declaration: +--- +This program is distributed under the GNU General Public License, version 2. A +copy of this license is included with this source. +--- + +Some files (extra components and plugins) and the Debian packaging have the +following license declaration: +--- +This program is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free Software +Foundation; either version 2 of the License, or (at your option) any later +version. + +This program is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A +PARTICULAR PURPOSE. See the GNU General Public License for more details. +--- + +--- ffmpeg --- + +Upstream Authors: Fabrice Bellard + Alex Beregszaszi + BERO + Mario Brito + Ronald Bultje + Tim Ferguson + Brian Foley + Arpad Gereoffy + Philip Gladstone + Vladimir Gneushev + Wolfgang Hesseler + Falk Hueffner + Zdenek Kabelac + Robin Kay + Todd Kirby + Nick Kurshev + Mike Melanson + Michael Niedermayer + François Revol + Roman Shaposhnik + Dieter Shirley + Juan J. Sierralta + Ewald Snel + Leon van Stuivenberg + Roberto Togni + Lionel Ulmer + +Copyright (c) 2000-2004 Fabrice Bellard et al. +The following files are licensed under the GNU GPL, as clarified below: + + * ffmpeg.c + * libavcodec: + + dtsdec.c + + i386/idct_mmx.c + + liba52/*.[ch] + * libavformat: + + x11grab.c + + gxfenc.c + * libpostproc: + + postprocess_internal.h + + postprocess_altivec_template.c + + postprocess.h + + postprocess_template.c + + postprocess.c + + mangle.h + * libswscale: + + swscale.c + + swscale-example.c + + yuv2rgb_template.c + + swscale_altivec_template.c + + yuv2rgb_altivec.c + + swscale_template.c + + rgb2rgb_template.c + + rgb2rgb.c + + cs_test.c + + yuv2rgb_mlib.c + + yuv2rgb.c + + | This library is free software; you can redistribute it and/or + | modify it under the terms of the GNU General Public License as + | published by the Free Software Foundation; either version 2 of + | the License, or (at your option) any later version. + | + | This library is distributed in the hope that it will be useful, + | but WITHOUT ANY WARRANTY; without even the implied warranty of + | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + | Lesser General Public License for more details. + | + | You should have received a copy of the GNU General Public License + | along with this program; if not, write to the Free Software + | Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +The debian/libfaad directory contains header from the libfaad-dev package. + + | Upstream Authors: menno + | Alexander Kurpiers + | M. Bakker + | Ahead Software AG + | Nero AG + | Copyright: 2002-2005 M. Bakker + | 2003-2005 Ahead Software AG + | 2003-2005 Nero AG + | + | Other Authors: John Edwards + | Bill May + | Quinnware + | VideoLAN + | Copyright: 2002 John Edwards + | 2003 Bill May + | 1997-2002 Quinnware + | 2004 VideoLAN + | + | License Declaration: + | + | The GPL may be found in the file /usr/share/common-licenses/GPL. + | + | The upstream source has the follwing license declaration: + | --- + | This program is free software; you can redistribute it and/or modify it under + | the terms of the GNU General Public License as published by the Free Software + | Foundation; either version 2 of the License, or (at your option) any later + | version. + | + | This program is distributed in the hope that it will be useful, but WITHOUT ANY + | WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A + | PARTICULAR PURPOSE. See the GNU General Public License for more details. + | + | You should have received a copy of the GNU General Public License along with + | this program; if not, write to the Free Software Foundation, Inc., 59 Temple + | Place - Suite 330, Boston, MA 02111-1307, USA. + +The debian/liba52 directory contains a copy of the header file from the +liba52-0.7.4-dev package. + + | License: + | + | Copyright (C) 2000-2002 Michel Lespinasse + | Copyright (C) 1999-2000 Aaron Holtzman + | + | This program is free software; you can redistribute it and/or modify + | it under the terms of the GNU General Public License as published by + | the Free Software Foundation; either version 2 of the License, or + | (at your option) any later version. + | + | This program is distributed in the hope that it will be useful, + | but WITHOUT ANY WARRANTY; without even the implied warranty of + | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + | GNU General Public License for more details. + | + | You should have received a copy of the GNU General Public License + | along with this program; if not, write to the Free Software + | Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +The rest of the code is licensed under the GNU LGPL: + + | This library is free software; you can redistribute it and/or + | modify it under the terms of the GNU Lesser General Public License as + | published by the Free Software Foundation; either version 2.1 of + | the License, or (at your option) any later version. + | + | This library is distributed in the hope that it will be useful, + | but WITHOUT ANY WARRANTY; without even the implied warranty of + | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + | Lesser General Public License for more details. + | + | You should have received a copy of the GNU General Public License + | along with this program; if not, write to the Free Software + | Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +On Debian GNU/Linux systems, the complete text of the GNU General Public +License can be found in `/usr/share/common-licenses/GPL' and the text of the +GNU Lesser General Public License is in `/usr/share/common-licenses/LGPL'. + +--- libdca --- + +Authors: +Gildas Bazin implementation of the +DTS Coherent Acoustics decoder and current maintainer of libdts. + +Other libdts contributors include: + Sam Hocevar - build system improvements and debian package + +While the libdts part of the source code was mostly written from scratch, this +project was started from the a52dec code base so the original credits for +a52dec are preserved: + +Aaron Holtzman started the project and +made the initial working implementation. + +Michel Lespinasse did major changes for speed and +conformance and is the current maintainer. + +Other contributors include: + Gildas Bazin - mingw32 port + Billy Biggs - most of liba52.txt + Jeroen Dobbelaere - fixed point version + Eduard Hasenleithner - gcc 3.0 fixes + H�kan Hjort - Solaris output, mlib code + Charles M. Hannum - fixes + Chris Hodges - made the library reentrant + Michael Holzt - OSS output.c and misc errata + Angelos Keromytis - OpenBSD fixes + David I. Lehn - API cleanup suggestion + Don Mahurin - stdin support for extract_a52 + Jim Miller - IRIX output.c + Takefumi Sayo - FreeBSD tweak + Shoji Tokunaga - aif file output + +Copyright: + + + +License: + + You should have received a copy of the GNU General Public License with the + Debian GNU/Linux distribution in file /usr/share/common-licenses/GPL; if + not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth + Floor, Boston, MA 02110-1301, USA. + +--- libdvdread --- + +Author: Bjorn Englund + +Copyright: + (C) 2000-2001 Bjorn Englund + (C) 2000-2001 Hakan Hjort + (C) 2000-2001 Billy Biggs + (C) 2000-2001 Christian Wolff License: GPL-2+ - This package is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License + as published by the Free Software Foundation; either version 2 + of the License, or (at your option) any later version. . - This package is distributed in the hope that it will be useful, + This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. . You should have received a copy of the GNU General Public License - along with this program. If not, see + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. . - On Debian systems, the complete text of the GNU General - Public License version 2 can be found in "/usr/share/common-licenses/GPL-2". + On Debian systems, the complete text of the GNU General Public License + can be found in /usr/share/common-licenses/GPL-2 file. + + +--- faac --- + +Authors: (see AUTHORS in contrib/faac.tar.gz for more information) + lenox (Tony Lenox) + menno + oxygene2000/oxygene (?) + thebard (wmilas@rarcoa.com) + prkoat (?) + xfhobbes (?) + flyingfox (?) + eraser (?) + knik (Krzysztof Nikiel) + stux (Stuart Espey) + ca5e (Janne Hyvärinen) + danchr (Dan Christiansen) + corrados (Volker Fischer) + + +Copyright: 2001 M. Bakker + You should have received a copy of the GNU General Public License with the + Debian GNU/Linux distribution in file /usr/share/common-licenses/GPL; if + not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth + Floor, Boston, MA 02110-1301, USA. + +--- LAME --- + +Authors: + The following people contributed to the LAME development: + + Lauri Ahonen + Sakari Ailus + Tero Auvinen + Michal Bacik + Alex Ballegooy + Wilfried Behne + Bob Bell + Simon Blandford + Segher Boessenkool + Florian Bome + Lionel Bonnet + Gabriel Bouvigne + Rogério Theodoro de Brito + Erik de Castro Lopo + David Chandler + Michael Cheng + John Dahlstrom + Goran Dokic + James Droppo + Sergey Dubov + Dominique Duvivier + John Edwards + Alvaro Martinez Echevarria + Joakim Enerstam + Albert Faber + Nils Faerber + Sami Farin + Mikhail M. Fedotov + Joseph Fourier + Jani Frilander + Richard Gorton + Casper Gripenberg + Steffan Haeuser + Jeremy Hall + Paul Hartman + John Hayward-Warburton + Peder Hedlund + Robert Hegemann + Mathew Hendry + Magnus Holmgren + Vitaly Ivanov + Ben "Jacobs" + Tamito Kajiyama + Ti Kan + Mo Katz + Iwasa Kazmi + Ralf Kempkens + Frank Klemm + Aleksander Korzynski + Joachim Kuebart + Leonid Kulakov + Dmitry Kutsanov + Jarmo Laakkonen + An van Lam + Dennis Lambe Jr + Juha Laukala + Greg Lehey + Felix von Leitner + Rafael Luebbert + Macik + Lars Magne Ingebrigtsen + Scott Manley + Vladimir Marek + Goran Markovic + Sergey A. Maslyakov + Chris Matrakidis + Greg Maxwell + Chris Miller + Scott Miller + Darin Morrison + Tomasz Motylewski + Kimmo Mustonen + Dan Nelson + Nyaochi + Anton Oleynikov + Mike Oliphant + André Osterhues + Johannes Overmann + Gian-Carlo Pascutto + Jan Peman + Jan Rafaj + Gertjan van Ratingen + Miguel Revilla Rodriguez + Shawn Riley + Tim Ruddick + Ingo Saitz + Conrad Sanderson + Sergey Sapelin + William Schelter + Justin Schoeman + Anton Sergunov + Naoki Shibata + Sigbjørn Skjæret + Nathan Slingerland + Patrick De Smet + Acy Stapp + Mark Stephens + Jonathan Stott + Alexander Stumpf + Stephane Tavenard + Mark Taylor + Mikhail Teterin + Brad Threatt + Takehiro Tominaga + Warren Toomey + Atro Tossavainen + Roel Van Den Berghe + Kyle VanderBeek + Linus Walleij + Martin Weghofer + William Welch + Gerhard Wesp + Alfred Weyers + Christopher Wise + Ethan Yeo + Chuck Zenkus + + + + Original ISO contributors: + + Bill Aspromonte + Shaun Astarabadi + R. Bittner + Karlheinz Brandenburg + W. Joseph Carter + Jack Chang + Mike Coleman + Johnathan Devine + Ernst Eberlein + Dan Ellis + Peter Farrett + Jean-Georges Fritsch + Vlad Fruchter + Hendrik Fuchs + Bernhard Grill + Amit Gulati + Munsi Haque + Chuck Hsiao + Toshiyuki Ishino + Masahiro Iwadare + Earl Jennings + James Johnston + Leon v.d. Kerkhof + Don Lee + Mike Li + Yu-Tang Lin + Soren Neilsen + Simao F. Campos Neto + Mark Paley + Davis Pan + Tan Ah Peng + Kevin Peterson + Juan Pineda + Ernst F. Schroeder + Peter Siebert + Jens Spille + John Stewart + Sam Stewart + Al Tabayoyon + Kathy Wang + Franz-Otto Witte + Douglas Wong + + +Copyright: 1999-2008 by LAME authors + + LAME is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + LAME is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. + +On Debian systems, the complete text of the GNU Library +General Public License can be found in `/usr/share/common-licenses/LGPL'. + + +--- libmp4v2 (mpeg4ip) --- + +libmp4v2 is a subset of the mpeg4ip project. +Upstream Authors: menno (menno@audiocoding.com) Alexander Kurpiers + (a.kurpiers@nt.tu-darmstadt.de) + +The mpeg4ip subset in libmp4v2.tar.gz is original code by menno +and Alexander Kurpiers. It is licensed under the terms of the Mozilla Public +License (MPL) version 1.1. The complete text of the license is reproduced at the +end of this section. + + + + MOZILLA PUBLIC LICENSE + Version 1.1 + + --------------- + +1. Definitions. + + 1.0.1. "Commercial Use" means distribution or otherwise making the + Covered Code available to a third party. + + 1.1. "Contributor" means each entity that creates or contributes to + the creation of Modifications. + + 1.2. "Contributor Version" means the combination of the Original + Code, prior Modifications used by a Contributor, and the Modifications + made by that particular Contributor. + + 1.3. "Covered Code" means the Original Code or Modifications or the + combination of the Original Code and Modifications, in each case + including portions thereof. + + 1.4. "Electronic Distribution Mechanism" means a mechanism generally + accepted in the software development community for the electronic + transfer of data. + + 1.5. "Executable" means Covered Code in any form other than Source + Code. + + 1.6. "Initial Developer" means the individual or entity identified + as the Initial Developer in the Source Code notice required by Exhibit + A. + + 1.7. "Larger Work" means a work which combines Covered Code or + portions thereof with code not governed by the terms of this License. + + 1.8. "License" means this document. + + 1.8.1. "Licensable" means having the right to grant, to the maximum + extent possible, whether at the time of the initial grant or + subsequently acquired, any and all of the rights conveyed herein. + + 1.9. "Modifications" means any addition to or deletion from the + substance or structure of either the Original Code or any previous + Modifications. When Covered Code is released as a series of files, a + Modification is: + A. Any addition to or deletion from the contents of a file + containing Original Code or previous Modifications. + + B. Any new file that contains any part of the Original Code or + previous Modifications. + + 1.10. "Original Code" means Source Code of computer software code + which is described in the Source Code notice required by Exhibit A as + Original Code, and which, at the time of its release under this + License is not already Covered Code governed by this License. + + 1.10.1. "Patent Claims" means any patent claim(s), now owned or + hereafter acquired, including without limitation, method, process, + and apparatus claims, in any patent Licensable by grantor. + + 1.11. "Source Code" means the preferred form of the Covered Code for + making modifications to it, including all modules it contains, plus + any associated interface definition files, scripts used to control + compilation and installation of an Executable, or source code + differential comparisons against either the Original Code or another + well known, available Covered Code of the Contributor's choice. The + Source Code can be in a compressed or archival form, provided the + appropriate decompression or de-archiving software is widely available + for no charge. + + 1.12. "You" (or "Your") means an individual or a legal entity + exercising rights under, and complying with all of the terms of, this + License or a future version of this License issued under Section 6.1. + For legal entities, "You" includes any entity which controls, is + controlled by, or is under common control with You. For purposes of + this definition, "control" means (a) the power, direct or indirect, + to cause the direction or management of such entity, whether by + contract or otherwise, or (b) ownership of more than fifty percent + (50%) of the outstanding shares or beneficial ownership of such + entity. + +2. Source Code License. + + 2.1. The Initial Developer Grant. + The Initial Developer hereby grants You a world-wide, royalty-free, + non-exclusive license, subject to third party intellectual property + claims: + (a) under intellectual property rights (other than patent or + trademark) Licensable by Initial Developer to use, reproduce, + modify, display, perform, sublicense and distribute the Original + Code (or portions thereof) with or without Modifications, and/or + as part of a Larger Work; and + + (b) under Patents Claims infringed by the making, using or + selling of Original Code, to make, have made, use, practice, + sell, and offer for sale, and/or otherwise dispose of the + Original Code (or portions thereof). + + (c) the licenses granted in this Section 2.1(a) and (b) are + effective on the date Initial Developer first distributes + Original Code under the terms of this License. + + (d) Notwithstanding Section 2.1(b) above, no patent license is + granted: 1) for code that You delete from the Original Code; 2) + separate from the Original Code; or 3) for infringements caused + by: i) the modification of the Original Code or ii) the + combination of the Original Code with other software or devices. + + 2.2. Contributor Grant. + Subject to third party intellectual property claims, each Contributor + hereby grants You a world-wide, royalty-free, non-exclusive license + + (a) under intellectual property rights (other than patent or + trademark) Licensable by Contributor, to use, reproduce, modify, + display, perform, sublicense and distribute the Modifications + created by such Contributor (or portions thereof) either on an + unmodified basis, with other Modifications, as Covered Code + and/or as part of a Larger Work; and + + (b) under Patent Claims infringed by the making, using, or + selling of Modifications made by that Contributor either alone + and/or in combination with its Contributor Version (or portions + of such combination), to make, use, sell, offer for sale, have + made, and/or otherwise dispose of: 1) Modifications made by that + Contributor (or portions thereof); and 2) the combination of + Modifications made by that Contributor with its Contributor + Version (or portions of such combination). + + (c) the licenses granted in Sections 2.2(a) and 2.2(b) are + effective on the date Contributor first makes Commercial Use of + the Covered Code. + + (d) Notwithstanding Section 2.2(b) above, no patent license is + granted: 1) for any code that Contributor has deleted from the + Contributor Version; 2) separate from the Contributor Version; + 3) for infringements caused by: i) third party modifications of + Contributor Version or ii) the combination of Modifications made + by that Contributor with other software (except as part of the + Contributor Version) or other devices; or 4) under Patent Claims + infringed by Covered Code in the absence of Modifications made by + that Contributor. + +3. Distribution Obligations. + + 3.1. Application of License. + The Modifications which You create or to which You contribute are + governed by the terms of this License, including without limitation + Section 2.2. The Source Code version of Covered Code may be + distributed only under the terms of this License or a future version + of this License released under Section 6.1, and You must include a + copy of this License with every copy of the Source Code You + distribute. You may not offer or impose any terms on any Source Code + version that alters or restricts the applicable version of this + License or the recipients' rights hereunder. However, You may include + an additional document offering the additional rights described in + Section 3.5. + + 3.2. Availability of Source Code. + Any Modification which You create or to which You contribute must be + made available in Source Code form under the terms of this License + either on the same media as an Executable version or via an accepted + Electronic Distribution Mechanism to anyone to whom you made an + Executable version available; and if made available via Electronic + Distribution Mechanism, must remain available for at least twelve (12) + months after the date it initially became available, or at least six + (6) months after a subsequent version of that particular Modification + has been made available to. + +--- libmkv --- + +Authors: + + Most of this code was taken from Mike Mastnev's matroska muxer included in + x264. + + Glue provided by saintdev@gmail.com + +Copyright: + Copyright (C) saintdev@gmail.com + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +--- mpeg2dec --- + +Upstream Authors: + + Aaron Holtzman + Michel Lespinasse + + Bruno Barreyra - build fixes + Gildas Bazin - mingw32 port + Alexander W. Chin - progressive_seq fix + Stephen Crowley - build fixes + Didier Gautheron - bug fixes + Ryan C. Gordon - SDL support + Peter Gubanov - MMX IDCT scheduling + HÃ¥kan Hjort - Solaris fixes, mlib code + Nicolas Joly - assorted bug fixes + Gerd Knorr - Xv support + David I. Lehn - motion_comp mmx code + Olie Lho - MMX yuv2rgb routine + David S. Miller - sparc VIS optimizations + Rick Niles - build fixes + Real Ouellet - g200 fixes + Bajusz Peter - motion comp fixes + Franck Sicard - x11 fixes + Brion Vibber - x11 fixes + Martin Vogt - reentrancy fixes + Fredrik Vraalsen - general hackage and stuff + +mpeg2dec is Copyright (C) 1999-2000 Aaron Holtzman + Copyright (C) 2000-2003 Michel Lespinasse + Copyright (C) 2000-2003 Silicon Integrated System Corp. + Copyright (C) 2000-2003 Ryan C. Gordon + Copyright (C) 2000-2003 Dominik Schnitzer + Copyright (C) 2003 Regis Duchesne + Copyright (C) 2003 David S. Miller + Copyright (C) 2003 Peter Gubanov + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +On Debian systems, the complete text of the GNU General Public License can +be found in `/usr/share/common-licenses/GPL'. + +--- libogg --- + + +Upstream Author: Christopher Montgomery + +Copyright: +Copyright (c) 2002-2004, Xiph.org Foundation + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + +- Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + +- Redistributions in binary form must reproduce the above copyright +notice, this list of conditions and the following disclaimer in the +documentation and/or other materials provided with the distribution. + +- Neither the name of the Xiph.Org Foundation nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR +CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + -License: LGPL-2+ - This package is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - . - This package is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - . - You should have received a copy of the GNU General Public License - along with this program. If not, see . - . - On Debian systems, the complete text of the GNU Lesser General - Public License can be found in "/usr/share/common-licenses/LGPL-2". diff -Nru handbrake-0.9.9+dfsg/debian/docs handbrake-0.9.9+ppa1/debian/docs --- handbrake-0.9.9+dfsg/debian/docs 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/debian/docs 2013-05-18 16:08:58.000000000 +0000 @@ -0,0 +1,4 @@ +NEWS +AUTHORS +CREDITS +THANKS diff -Nru handbrake-0.9.9+dfsg/debian/gbp.conf handbrake-0.9.9+ppa1/debian/gbp.conf --- handbrake-0.9.9+dfsg/debian/gbp.conf 2013-12-18 04:51:29.000000000 +0000 +++ handbrake-0.9.9+ppa1/debian/gbp.conf 1970-01-01 00:00:00.000000000 +0000 @@ -1,4 +0,0 @@ -[DEFAULT] -pristine-tar = True -compression = bzip2 - diff -Nru handbrake-0.9.9+dfsg/debian/handbrake.1 handbrake-0.9.9+ppa1/debian/handbrake.1 --- handbrake-0.9.9+dfsg/debian/handbrake.1 2013-12-18 04:51:29.000000000 +0000 +++ handbrake-0.9.9+ppa1/debian/handbrake.1 1970-01-01 00:00:00.000000000 +0000 @@ -1,95 +0,0 @@ -.\" This file was generated by help2man 1.40.10 and edited by Dmitry Smirnov -.TH HANDBRAKE-GTK "1" "October 2012" "handbrake 0.9.8" "User Commands" -.SH NAME -handbrake \- versatile DVD ripper and video transcoder -.SH DESCRIPTION -.SS "Usage:" -.IP -handbrake [OPTION...] \- Transcode media formats -.SS "Help Options:" -.TP -\fB\-h\fR, \fB\-\-help\fR -Show help options -.TP -\fB\-\-help\-all\fR -Show all help options -.TP -\fB\-\-help\-gtk\fR -Show GTK+ Options -.TP -\fB\-\-help\-gst\fR -Show GStreamer Options -.SS -GTK+ Options -.TP -\fB\-\-class\fR=\fICLASS\fR -Program class as used by the window manager -.TP -\fB\-\-name\fR=\fINAME\fR -Program name as used by the window manager -.TP -\fB\-\-screen\fR=\fISCREEN\fR -X screen to use -.TP -\fB\-\-sync\fR -Make X calls synchronous -.TP -\fB\-\-gtk\-module\fR=\fIMODULES\fR -Load additional GTK+ modules -.TP -\fB\-\-g\-fatal\-warnings\fR -Make all warnings fatal -.SS -GStreamer Options -.TP -\fB\-\-gst\-version\fR -Print the GStreamer version -.TP -\fB\-\-gst\-fatal\-warnings\fR -Make all warnings fatal -.TP -\fB\-\-gst\-debug\-help\fR -Print available debug categories and exit -.TP -\fB\-\-gst\-debug\-level\fR=\fILEVEL\fR -Default debug level from 1 (only error) to 5 (anything) or 0 for no output -.TP -\fB\-\-gst\-debug\fR=\fILIST\fR -Comma\-separated list of category_name:level pairs to set specific levels for the individual categories. Example: GST_AUTOPLUG:5,GST_ELEMENT_*:3 -.TP -\fB\-\-gst\-debug\-no\-color\fR -Disable colored debugging output -.TP -\fB\-\-gst\-debug\-disable\fR -Disable debugging -.TP -\fB\-\-gst\-plugin\-spew\fR -Enable verbose plugin loading diagnostics -.TP -\fB\-\-gst\-plugin\-path\fR=\fIPATHS\fR -Colon\-separated paths containing plugins -.TP -\fB\-\-gst\-plugin\-load\fR=\fIPLUGINS\fR -Comma\-separated list of plugins to preload in addition to the list stored in environment variable GST_PLUGIN_PATH -.TP -\fB\-\-gst\-disable\-segtrap\fR -Disable trapping of segmentation faults during plugin loading -.TP -\fB\-\-gst\-disable\-registry\-update\fR -Disable updating the registry -.TP -\fB\-\-gst\-disable\-registry\-fork\fR -Disable spawning a helper process while scanning the registry -.SS "Application Options:" -.TP -\fB\-d\fR, \fB\-\-device\fR -The device or file to encode -.TP -\fB\-p\fR, \fB\-\-preset\fR -The preset values to use for encoding -.TP -\fB\-x\fR, \fB\-\-debug\fR -Spam a lot -.TP -\fB\-\-display\fR=\fIDISPLAY\fR -X display to use diff -Nru handbrake-0.9.9+dfsg/debian/HandBrakeCLI.1 handbrake-0.9.9+ppa1/debian/HandBrakeCLI.1 --- handbrake-0.9.9+dfsg/debian/HandBrakeCLI.1 2013-12-18 04:51:29.000000000 +0000 +++ handbrake-0.9.9+ppa1/debian/HandBrakeCLI.1 1970-01-01 00:00:00.000000000 +0000 @@ -1,410 +0,0 @@ -.\" This file was generated by help2man 1.40.10 and edited by Dmitry Smirnov -.TH HANDBRAKECLI: "1" "October 2012" "HandBrakeCLI 0.9.8" "User Commands" -.SH NAME -HandBrakeCLI \- versatile DVD ripper and video transcoder (command line) -.SH DESCRIPTION -Syntax: HandBrakeCLI [options] \fB\-i\fR \fB\-o\fR -.SS -### General Handbrake Options -.TP -\fB\-h\fR, \fB\-\-help\fR -Print help -.TP -\fB\-u\fR, \fB\-\-update\fR -Check for updates and exit -.TP -\fB\-v\fR, \fB\-\-verbose\fR <#> -Be verbose (optional argument: logging level) -.TP -\fB\-Z\fR. \fB\-\-preset\fR -Use a built\-in preset. Capitalization matters, and -if the preset name has spaces, surround it with -double quotation marks -.TP -\fB\-z\fR, \fB\-\-preset\-list\fR -See a list of available built\-in presets -.TP -\fB\-\-no\-dvdnav\fR -Do not use dvdnav for reading DVDs -(experimental, enabled by default for testing) -.SS -### Source Options -.TP -\fB\-i\fR, \fB\-\-input\fR -Set input device -.TP -\fB\-t\fR, \fB\-\-title\fR -Select a title to encode (0 to scan all titles only, -default: 1) -.TP -\fB\-\-min\-duration\fR -Set the minimum title duration (in seconds). Shorter -titles will not be scanned (default: 10). -.TP -\fB\-\-scan\fR -Scan selected title only. -.TP -\fB\-\-main\-feature\fR -Detect and select the main feature title. -.TP -\fB\-c\fR, \fB\-\-chapters\fR -Select chapters (e.g. "1\-3" for chapters -1 to 3, or "3" for chapter 3 only, -default: all chapters) -.TP -\fB\-\-angle\fR -Select the DVD angle -.TP -\fB\-\-previews\fR <#:B> -Select how many preview images are generated (max 30), -and whether or not they're stored to disk (0 or 1). -(default: 10:0) -.TP -\fB\-\-start\-at\-preview\fR <#> -Start encoding at a given preview. -.TP -\fB\-\-start\-at\fR -Start encoding at a given frame, duration (in seconds), -or pts (on a 90kHz clock) -.TP -\fB\-\-stop\-at\fR -Stop encoding at a given frame, duration (in seconds), -or pts (on a 90kHz clock) -.SS -### Destination Options -.TP -\fB\-o\fR, \fB\-\-output\fR -Set output file name -.TP -\fB\-f\fR, \fB\-\-format\fR -Set output format (mp4/mkv, default: -autodetected from file name) -.TP -\fB\-m\fR, \fB\-\-markers\fR -Add chapter markers (mp4 and mkv output formats only) -.TP -\fB\-4\fR, \fB\-\-large\-file\fR -Use 64\-bit mp4 files that can hold more than -4 GB. Note: Breaks iPod, PS3 compatibility. -.TP -\fB\-O\fR, \fB\-\-optimize\fR -Optimize mp4 files for HTTP streaming -.TP -\fB\-I\fR, \fB\-\-ipod\-atom\fR -Mark mp4 files so 5.5G iPods will accept them -.SS -### Video Options -.TP -\fB\-e\fR, \fB\-\-encoder\fR -Set video library encoder -Options: x264 / ffmpeg4 / ffmpeg2 / theora -(default: ffmpeg4) -.TP -\fB\-\-x264\-preset\fR -When using x264, selects the x264 preset: -.IP -ultrafast / superfast / veryfast / faster / fast / medium / slow / slower / veryslow / placebo -.TP -\fB\-\-x264\-tune\fR -When using x264, selects the x264 tuning: -.IP -film / animation / grain / stillimage / psnr / ssim / fastdecode / zerolatency -.TP -\fB\-x\fR, \fB\-\-encopts\fR -Specify advanced encoder options in the -same style as mencoder (x264 and ffmpeg only): -option1=value1:option2=value2 -.TP -\fB\-\-x264\-profile\fR -When using x264, ensures compliance with the -specified h.264 profile: -.IP -baseline / main / high / high10 / high422 / high444 -.TP -\fB\-q\fR, \fB\-\-quality\fR -Set video quality -.TP -\fB\-b\fR, \fB\-\-vb\fR -Set video bitrate (default: 1000) -.TP -\fB\-2\fR, \fB\-\-two\-pass\fR -Use two\-pass mode -.TP -\fB\-T\fR, \fB\-\-turbo\fR -When using 2\-pass use the turbo options -on the first pass to improve speed -(only works with x264, affects PSNR by about 0.05dB, -and increases first pass speed two to four times) -.TP -\fB\-r\fR, \fB\-\-rate\fR -Set video framerate -(5 / 10 / 12 / 15 / 23.976 / 24 / 25 / 29.97 / 30 / 50 / 59.94 / 60) -Be aware that not specifying a framerate lets -HandBrake preserve a source's time stamps, -potentially creating variable framerate video -.TP -\fB\-\-vfr\fR, \fB\-\-cfr\fR, \fB\-\-pfr\fR -Select variable, constant or peak\-limited -frame rate control. VFR preserves the source -timing. CFR makes the output constant rate at -the rate given by the \fB\-r\fR flag (or the source's -average rate if no \fB\-r\fR is given). PFR doesn't -allow the rate to go over the rate specified -with the \fB\-r\fR flag but won't change the source -timing if it's below that rate. -If none of these flags are given, the default -is \fB\-\-cfr\fR when \fB\-r\fR is given and \fB\-\-vfr\fR otherwise -.SS -### Audio Options -.TP -\fB\-a\fR, \fB\-\-audio\fR -Select audio track(s), separated by commas -("none" for no audio, "1,2,3" for multiple -tracks, default: first one). -Multiple output tracks can be used for one input. -.TP -\fB\-E\fR, \fB\-\-aencoder\fR -Audio encoder(s): - faac - ffaac - copy:aac - ffac3 - copy:ac3 - copy:dts - copy:dtshd - lame - copy:mp3 - vorbis - ffflac - copy -.IP -copy:* will passthrough the corresponding -audio unmodified to the muxer if it is a -supported passthrough audio type. -Separated by commas for more than one audio track. -(default: faac for mp4, lame for mkv) -.TP -\fB\-\-audio\-copy\-mask\fR -Set audio codecs that are permitted when the -"copy" audio encoder option is specified -(aac/ac3/dts/dtshd/mp3, default: all). -Separated by commas for multiple allowed options. -.TP -\fB\-\-audio\-fallback\fR -Set audio codec to use when it is not possible -to copy an audio track without re\-encoding. -.TP -\fB\-B\fR, \fB\-\-ab\fR -Set audio bitrate(s) (default: depends on the -selected codec, mixdown and samplerate) -Separated by commas for more than one audio track. -.TP -\fB\-Q\fR, \fB\-\-aq\fR -Set audio quality metric (default: depends on the -selected codec) -Separated by commas for more than one audio track. -.TP -\fB\-C\fR, \fB\-\-ac\fR -Set audio compression metric (default: depends on the -selected codec) -Separated by commas for more than one audio track. -.TP -\fB\-6\fR, \fB\-\-mixdown\fR -Format(s) for surround sound downmixing -Separated by commas for more than one audio track. -(mono/stereo/dpl1/dpl2/6ch, default: up to 6ch for ac3, -up to dpl2 for other encoders) -.TP -\fB\-R\fR, \fB\-\-arate\fR -Set audio samplerate(s) (22.05/24/32/44.1/48 kHz) -Separated by commas for more than one audio track. -.TP -\fB\-D\fR, \fB\-\-drc\fR -Apply extra dynamic range compression to the audio, -making soft sounds louder. Range is 1.0 to 4.0 -(too loud), with 1.5 \- 2.5 being a useful range. -Separated by commas for more than one audio track. -.TP -\fB\-\-gain\fR -Amplify or attenuate audio before encoding. Does -NOT work with audio passthru (copy). Values are in -dB. Negative values attenuate, positive values -amplify. A 1 dB difference is barely audible. -.TP -\fB\-A\fR, \fB\-\-aname\fR -Audio track name(s), -Separated by commas for more than one audio track. -.SS -### Picture Settings -.TP -\fB\-w\fR, \fB\-\-width\fR -Set picture width -.TP -\fB\-l\fR, \fB\-\-height\fR -Set picture height -.TP -\fB\-\-crop\fR -Set cropping values (default: autocrop) -.TP -\fB\-\-loose\-crop\fR <#> -Always crop to a multiple of the modulus -Specifies the maximum number of extra pixels -which may be cropped (default: 15) -.TP -\fB\-Y\fR, \fB\-\-maxHeight\fR <#> -Set maximum height -.TP -\fB\-X\fR, \fB\-\-maxWidth\fR <#> -Set maximum width -.TP -\fB\-\-strict\-anamorphic\fR -Store pixel aspect ratio in video stream -.TP -\fB\-\-loose\-anamorphic\fR -Store pixel aspect ratio with specified width -.TP -\fB\-\-custom\-anamorphic\fR -Store pixel aspect ratio in video stream and -directly control all parameters. -.TP -\fB\-\-display\-width\fR -Set the width to scale the actual pixels to -at playback, for custom anamorphic. -.TP -\fB\-\-keep\-display\-aspect\fR -Preserve the source's display aspect ratio -when using custom anamorphic -.TP -\fB\-\-pixel\-aspect\fR -Set a custom pixel aspect for custom anamorphic -(\fB\-\-display\-width\fR and \fB\-\-pixel\-aspect\fR are mutually -exclusive and the former will override the latter) -.TP -\fB\-\-itu\-par\fR -Use wider, ITU pixel aspect values for loose and -custom anamorphic, useful with underscanned sources -.TP -\fB\-\-modulus\fR -Set the number you want the scaled pixel dimensions -.TP - -to divide cleanly by. Does not affect strict -anamorphic mode, which is always mod 2 (default: 16) -.TP -\fB\-M\fR \fB\-\-color\-matrix\fR <601 or 709> -Set the color space signaled by the output -(Bt.601 is mostly for SD content, Bt.709 for HD, -default: set by resolution) -.SS -### Filters -.TP -\fB\-d\fR, \fB\-\-deinterlace\fR or -Deinterlace video with yadif/mcdeint filter -(default 0:\-1:\-1:1) -.TP -\fB\-5\fR, \fB\-\-decomb\fR -Selectively deinterlaces when it detects combing -(default: 7:2:6:9:80:16:16:10:20:20:4:2:50:24:1:\-1) -.TP -\fB\-9\fR, \fB\-\-detelecine\fR -Detelecine (ivtc) video with pullup filter -Note: this filter drops duplicate frames to -restore the pre\-telecine framerate, unless you -specify a constant framerate (\fB\-\-rate\fR 29.97) -(default 1:1:4:4:0:0:\-1) -.TP -\fB\-8\fR, \fB\-\-denoise\fR or -Denoise video with hqdn3d filter -(default 4:3:6:4.5) -.TP -\fB\-7\fR, \fB\-\-deblock\fR -Deblock video with pp7 filter -(default 5:2) -.TP -\fB\-\-rotate\fR -Flips images axes -(default 3) -.TP -\fB\-g\fR, \fB\-\-grayscale\fR -Grayscale encoding -.SS -### Subtitle Options -.TP -\fB\-s\fR, \fB\-\-subtitle\fR -Select subtitle track(s), separated by commas -More than one output track can be used for one -input. -Example: "1,2,3" for multiple tracks. -A special track name "scan" adds an extra 1st pass. -This extra pass scans subtitles matching the -language of the first audio or the language -selected by \fB\-\-native\-language\fR. -The one that's only used 10 percent of the time -or less is selected. This should locate subtitles -for short foreign language segments. Best used in -conjunction with \fB\-\-subtitle\-forced\fR. -.TP -\fB\-F\fR, \fB\-\-subtitle\-forced\fR -Only display subtitles from the selected stream if -the subtitle has the forced flag set. The values in -"string" are indexes into the subtitle list -specified with '\-\-subtitle'. -Separated by commas for more than one subtitle track. -Example: "1,2,3" for multiple tracks. -If "string" is omitted, the first track is forced. -.TP -\fB\-\-subtitle\-burned\fR -"Burn" the selected subtitle into the video track -If "number" is omitted, the first track is burned. -"number" is an index into the subtitle list -specified with '\-\-subtitle'. -.TP -\fB\-\-subtitle\-default\fR -Flag the selected subtitle as the default subtitle -to be displayed upon playback. Setting no default -means no subtitle will be automatically displayed -If "number" is omitted, the first track is default. -"number" is an index into the subtitle list -specified with '\-\-subtitle'. -.TP -\fB\-N\fR, \fB\-\-native\-language\fR -Specifiy your language preference. When the first -audio track does not match your native language then -select the first subtitle that does. When used in -conjunction with \fB\-\-native\-dub\fR the audio track is -changed in preference to subtitles. Provide the -language's iso639\-2 code (fre, eng, spa, dut, et cetera) -.TP -\fB\-\-native\-dub\fR -Used in conjunction with \fB\-\-native\-language\fR -requests that if no audio tracks are selected the -default selected audio track will be the first one -that matches the \fB\-\-native\-language\fR. If there are no -matching audio tracks then the first matching -subtitle track is used instead. -.HP -\fB\-\-srt\-file\fR -SubRip SRT filename(s), separated by commas. -.TP -\fB\-\-srt\-codeset\fR -Character codeset(s) that the SRT file(s) are -encoded in, separted by commas. -Use 'iconv \fB\-l\fR' for a list of valid -codesets. If not specified latin1 is assumed -.TP -\fB\-\-srt\-offset\fR -Offset in milli\-seconds to apply to the SRT file(s) -separted by commas. If not specified zero is assumed. -Offsets may be negative. -.TP -\fB\-\-srt\-lang\fR -Language as an iso639\-2 code fra, eng, spa et cetera) -for the SRT file(s) separated by commas. If not specified -then 'und' is used. -.TP -\fB\-\-srt\-default\fR -Flag the selected srt as the default subtitle -to be displayed upon playback. Setting no default -means no subtitle will be automatically displayed -If "number" is omitted, the first srt is default. -"number" is an 1 based index into the srt\-file list diff -Nru handbrake-0.9.9+dfsg/debian/handbrake-cli.dirs handbrake-0.9.9+ppa1/debian/handbrake-cli.dirs --- handbrake-0.9.9+dfsg/debian/handbrake-cli.dirs 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/debian/handbrake-cli.dirs 2013-05-18 16:08:58.000000000 +0000 @@ -0,0 +1 @@ +/usr/bin diff -Nru handbrake-0.9.9+dfsg/debian/handbrake-cli.examples handbrake-0.9.9+ppa1/debian/handbrake-cli.examples --- handbrake-0.9.9+dfsg/debian/handbrake-cli.examples 2013-12-18 04:51:29.000000000 +0000 +++ handbrake-0.9.9+ppa1/debian/handbrake-cli.examples 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -scripts/* diff -Nru handbrake-0.9.9+dfsg/debian/handbrake-cli.manpages handbrake-0.9.9+ppa1/debian/handbrake-cli.manpages --- handbrake-0.9.9+dfsg/debian/handbrake-cli.manpages 2013-12-18 04:51:29.000000000 +0000 +++ handbrake-0.9.9+ppa1/debian/handbrake-cli.manpages 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -debian/HandBrakeCLI.1 diff -Nru handbrake-0.9.9+dfsg/debian/handbrake.dirs handbrake-0.9.9+ppa1/debian/handbrake.dirs --- handbrake-0.9.9+dfsg/debian/handbrake.dirs 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/debian/handbrake.dirs 2013-05-18 16:08:58.000000000 +0000 @@ -0,0 +1,4 @@ +/usr/share/icons +/usr/bin/ +/usr/share/applications + diff -Nru handbrake-0.9.9+dfsg/debian/handbrake.docs handbrake-0.9.9+ppa1/debian/handbrake.docs --- handbrake-0.9.9+dfsg/debian/handbrake.docs 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/debian/handbrake.docs 2013-05-18 16:08:58.000000000 +0000 @@ -0,0 +1 @@ +#DOCS# diff -Nru handbrake-0.9.9+dfsg/debian/handbrake.install handbrake-0.9.9+ppa1/debian/handbrake.install --- handbrake-0.9.9+dfsg/debian/handbrake.install 2013-12-18 04:51:29.000000000 +0000 +++ handbrake-0.9.9+ppa1/debian/handbrake.install 2013-05-18 16:08:58.000000000 +0000 @@ -1,2 +1,4 @@ usr/bin/ghb -usr/share +usr/share/applications/* +usr/share/icons/* +#DOCS# diff -Nru handbrake-0.9.9+dfsg/debian/handbrake.links handbrake-0.9.9+ppa1/debian/handbrake.links --- handbrake-0.9.9+dfsg/debian/handbrake.links 2013-12-18 04:51:29.000000000 +0000 +++ handbrake-0.9.9+ppa1/debian/handbrake.links 1970-01-01 00:00:00.000000000 +0000 @@ -1,4 +0,0 @@ -usr/bin/ghb usr/bin/handbrake -usr/bin/ghb usr/bin/handbrake-gtk -usr/share/man/man1/handbrake.1 usr/share/man/man1/ghb.1 -usr/share/man/man1/handbrake.1 usr/share/man/man1/handbrake-gtk.1 diff -Nru handbrake-0.9.9+dfsg/debian/handbrake.manpages handbrake-0.9.9+ppa1/debian/handbrake.manpages --- handbrake-0.9.9+dfsg/debian/handbrake.manpages 2013-12-18 04:51:29.000000000 +0000 +++ handbrake-0.9.9+ppa1/debian/handbrake.manpages 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -debian/handbrake.1 diff -Nru handbrake-0.9.9+dfsg/debian/patches/0003-Remove-embedded-downloaded-copies-of-various-librari.patch handbrake-0.9.9+ppa1/debian/patches/0003-Remove-embedded-downloaded-copies-of-various-librari.patch --- handbrake-0.9.9+dfsg/debian/patches/0003-Remove-embedded-downloaded-copies-of-various-librari.patch 2013-12-18 04:51:29.000000000 +0000 +++ handbrake-0.9.9+ppa1/debian/patches/0003-Remove-embedded-downloaded-copies-of-various-librari.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,86 +0,0 @@ -From: Christian Marillat -Date: Tue, 15 May 2012 04:48:54 -0300 -Subject: Remove embedded/downloaded copies of various libraries -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Once this is acceptable, this should be forwarded upstream so that the -use of system libraries is an option, instead of downloading libraries -and programs at build time. - -Forwarded: no -Last-Update: 2012-05-15 -Reviewed-by: Rogério Theodoro de Brito -Signed-off-by: Rogério Theodoro de Brito ---- - gtk/src/Makefile.am | 4 ++-- - make/include/main.defs | 26 +++++--------------------- - test/module.defs | 10 +++------- - 3 files changed, 10 insertions(+), 30 deletions(-) - ---- a/make/include/main.defs -+++ b/make/include/main.defs -@@ -19,8 +19,6 @@ - AUTOTOOL_MODULES = - endif - --MODULES += contrib/a52dec -- - ifneq (,$(filter $(BUILD.system),cygwin mingw)) - ifneq ($(HAS.bz2),1) - MODULES += contrib/bzip2 -@@ -43,24 +41,12 @@ - MODULES += contrib/fdk-aac - endif - --MODULES += contrib/lame --MODULES += contrib/faac --MODULES += contrib/ffmpeg --MODULES += contrib/libdvdread --MODULES += contrib/libdvdnav --MODULES += contrib/libbluray --MODULES += contrib/libmkv --MODULES += contrib/mp4v2 --MODULES += contrib/mpeg2dec -- - ifneq (,$(filter $(BUILD.system),mingw)) - ifneq ($(HAS.pthread),1) - MODULES += contrib/pthreadw32 - endif - endif - --MODULES += contrib/x264 -- - ifneq (,$(filter $(BUILD.system),cygwin mingw)) - ifneq ($(HAS.iconv),1) - MODULES += contrib/libiconv -@@ -101,6 +87,11 @@ - MODULES += gtk - endif - -+ifeq (1-kfreebsd,$(FEATURE.gtk)-$(BUILD.system)) -+ ## build gtk when gtk+linux -+ MODULES += gtk -+endif -+ - ifeq (1,$(FEATURE.local_yasm)) - MODULES += contrib/yasm - endif ---- a/test/module.defs -+++ b/test/module.defs -@@ -9,13 +9,11 @@ - - TEST.exe = $(BUILD/)$(call TARGET.exe,$(HB.name)CLI) - --TEST.GCC.L = $(CONTRIB.build/)lib -- - TEST.libs = $(LIBHB.a) - - TEST.GCC.l = \ - a52 ass avcodec avformat avutil avresample dvdnav dvdread faac \ -- fontconfig freetype fribidi mkv mpeg2 mp3lame mp4v2 ogg \ -+ fontconfig freetype mkv mpeg2 mp3lame mp4v2 ogg \ - samplerate swscale theoraenc theoradec vorbis vorbisenc x264 \ - bluray xml2 bz2 z - diff -Nru handbrake-0.9.9+dfsg/debian/patches/0004-Enable-compilation-on-Debian-arches-other-than-Linux.patch handbrake-0.9.9+ppa1/debian/patches/0004-Enable-compilation-on-Debian-arches-other-than-Linux.patch --- handbrake-0.9.9+dfsg/debian/patches/0004-Enable-compilation-on-Debian-arches-other-than-Linux.patch 2013-12-18 04:51:29.000000000 +0000 +++ handbrake-0.9.9+ppa1/debian/patches/0004-Enable-compilation-on-Debian-arches-other-than-Linux.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,63 +0,0 @@ -From: Christian Marillat -Date: Tue, 15 May 2012 04:49:36 -0300 -Subject: Enable compilation on Debian arches other than Linux (kFreeBSD, - HURD). -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -One of the main points here is that udev is present only on Linux (that is, -it is the exception, not the norm). So, we check if LINUX is defined or not -in the appropriate places, instead of listing every operating system that is -not Windows or MacOS X. - -Applied-Upstream: https://github.com/HandBrake/HandBrake/commit/cd368d7e -Forwarded: yes -Last-Update: 2012-06-07 - -Reviewed-by: Rogério Theodoro de Brito -Reviewed-by: Pino Toscano -Signed-off-by: Rogério Theodoro de Brito ---- - gtk/configure.ac | 9 +++++++-- - gtk/src/callbacks.c | 11 ++++++++--- - libhb/ports.h | 2 +- - make/include/main.defs | 5 +++++ - 4 files changed, 21 insertions(+), 6 deletions(-) - ---- a/make/include/main.defs -+++ b/make/include/main.defs -@@ -92,6 +92,11 @@ - MODULES += gtk - endif - -+ifeq (1-gnu,$(FEATURE.gtk)-$(BUILD.system)) -+ ## build gtk when gtk+gnu -+ MODULES += gtk -+endif -+ - ifeq (1,$(FEATURE.local_yasm)) - MODULES += contrib/yasm - endif ---- a/libhb/module.defs -+++ b/libhb/module.defs -@@ -55,6 +55,8 @@ - LIBHB.GCC.args.extra.dylib++ += -Wl,--enable-auto-import -static - else ifeq ($(BUILD.system),solaris) - LIBHB.GCC.D += SYS_SunOS _LARGEFILE_SOURCE _FILE_OFFSET_BITS=64 -+else ifeq ($(BUILD.system),gnu) -+ LIBHB.GCC.D += SYS_HURD _LARGEFILE_SOURCE _FILE_OFFSET_BITS=64 - else - LIBHB.platform.D = SYS_UNKNOWN - endif ---- a/libhb/ports.h -+++ b/libhb/ports.h -@@ -54,7 +54,7 @@ - #elif defined( SYS_DARWIN ) - # define HB_LOW_PRIORITY 0 - # define HB_NORMAL_PRIORITY 31 --#elif defined( SYS_LINUX ) || defined( SYS_FREEBSD ) || defined ( SYS_SunOS ) || defined ( __FreeBSD_kernel__ ) -+#elif defined( SYS_LINUX ) || defined( SYS_FREEBSD ) || defined ( SYS_SunOS ) || defined ( SYS_HURD ) || defined ( __FreeBSD_kernel__ ) - # define HB_LOW_PRIORITY 0 - # define HB_NORMAL_PRIORITY 0 - #elif defined( SYS_CYGWIN ) diff -Nru handbrake-0.9.9+dfsg/debian/patches/0005-libhb-Fix-compilation-with-mp4v2-v1.9.1.patch handbrake-0.9.9+ppa1/debian/patches/0005-libhb-Fix-compilation-with-mp4v2-v1.9.1.patch --- handbrake-0.9.9+dfsg/debian/patches/0005-libhb-Fix-compilation-with-mp4v2-v1.9.1.patch 2013-12-18 04:51:29.000000000 +0000 +++ handbrake-0.9.9+ppa1/debian/patches/0005-libhb-Fix-compilation-with-mp4v2-v1.9.1.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,71 +0,0 @@ -From: =?UTF-8?q?Rog=C3=A9rio=20Brito?= -Date: Sun, 22 Apr 2012 05:34:40 -0300 -Subject: libhb: Fix compilation with mp4v2 v1.9.1. -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Forwarded: no -Last-Update: 2012-05-15 -Reviewed-by: Rogério Theodoro de Brito -Signed-off-by: Rogério Theodoro de Brito ---- - libhb/decmetadata.c | 4 ++-- - libhb/muxmp4.c | 8 ++++---- - 2 files changed, 6 insertions(+), 6 deletions(-) - ---- a/libhb/decmetadata.c -+++ b/libhb/decmetadata.c -@@ -17,7 +17,7 @@ - int result = 0; - hb_deep_log( 2, "Got an MP4 input, read the metadata"); - -- input_file = MP4Read( title->path, 0 ); -+ input_file = MP4Read(title->path); - - if( input_file != MP4_INVALID_FILE_HANDLE ) - { -@@ -168,7 +168,7 @@ - } - } - -- MP4Close( input_file ); -+ MP4Close(input_file, 0); - } - return result; - } ---- a/libhb/muxmp4.c -+++ b/libhb/muxmp4.c -@@ -100,13 +100,13 @@ - if (job->largeFileSize) - /* Use 64-bit MP4 file */ - { -- m->file = MP4Create( job->file, MP4_DETAILS_ERROR, MP4_CREATE_64BIT_DATA ); -+ m->file = MP4Create( job->file, MP4_CREATE_64BIT_DATA ); - hb_deep_log( 2, "muxmp4: using 64-bit MP4 formatting."); - } - else - /* Limit MP4s to less than 4 GB */ - { -- m->file = MP4Create( job->file, MP4_DETAILS_ERROR, 0 ); -+ m->file = MP4Create( job->file, 0 ); - } - - if (m->file == MP4_INVALID_FILE_HANDLE) -@@ -1387,14 +1387,14 @@ - MP4TagsFree( tags ); - } - -- MP4Close( m->file ); -+ MP4Close( m->file, 0 ); - - if ( job->mp4_optimize ) - { - hb_log( "muxmp4: optimizing file" ); - char filename[1024]; memset( filename, 0, 1024 ); - snprintf( filename, 1024, "%s.tmp", job->file ); -- MP4Optimize( job->file, filename, MP4_DETAILS_ERROR ); -+ MP4Optimize( job->file, filename ); - remove( job->file ); - rename( filename, job->file ); - } diff -Nru handbrake-0.9.9+dfsg/debian/patches/0010-Remove-FAAC-dependency.patch handbrake-0.9.9+ppa1/debian/patches/0010-Remove-FAAC-dependency.patch --- handbrake-0.9.9+dfsg/debian/patches/0010-Remove-FAAC-dependency.patch 2013-12-18 04:51:29.000000000 +0000 +++ handbrake-0.9.9+ppa1/debian/patches/0010-Remove-FAAC-dependency.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,236 +0,0 @@ -From: =?UTF-8?q?Rog=C3=A9rio=20Brito?= -Date: Wed, 6 Jun 2012 06:10:20 -0300 -Subject: Remove FAAC dependency. - -We actually kill FAAC completely from here, while we should be ifdef'ing -things (perhaps) and integrating that in upstream's configure system. - -With this, we depend on one fewer package of dubious license for handbrake -to enter Debian. ---- - gtk/src/audiohandler.c | 5 +- - gtk/src/ghb.ui | 8 -- - gtk/src/hb-backend.c | 6 +- - gtk/src/preset_xlat.c | 2 +- - gtk/src/presets.c | 6 +- - libhb/common.c | 20 +-- - libhb/common.h | 1 - - libhb/encfaac.c | 318 ------------------------------------------------ - libhb/hb.c | 2 - - libhb/internal.h | 1 - - libhb/module.defs | 4 +- - libhb/muxmkv.c | 1 - - libhb/work.c | 1 - - 13 files changed, 13 insertions(+), 362 deletions(-) - delete mode 100644 libhb/encfaac.c - ---- a/gtk/src/audiohandler.c -+++ b/gtk/src/audiohandler.c -@@ -70,10 +70,7 @@ - if (hb_audio_encoders[ii].encoder == fallback && - !(hb_audio_encoders[ii].muxers & mux)) - { -- if ( mux == HB_MUX_MKV ) - fallback = HB_ACODEC_LAME; -- else -- fallback = HB_ACODEC_FAAC; - break; - } - } -@@ -130,7 +127,7 @@ - return HB_ACODEC_LAME; - - case HB_ACODEC_AAC_PASS: -- return HB_ACODEC_FAAC; -+ return HB_ACODEC_FFAAC; - - case HB_ACODEC_AC3_PASS: - return HB_ACODEC_AC3; ---- a/gtk/src/hb-backend.c -+++ b/gtk/src/hb-backend.c -@@ -3767,7 +3767,7 @@ - gint - ghb_get_default_acodec() - { -- return HB_ACODEC_FAAC; -+ return HB_ACODEC_LAME; - } - - static void -@@ -4505,13 +4505,9 @@ - { - codec = HB_ACODEC_AC3; - } -- else if (mux == HB_MUX_MKV) -- { -- codec = HB_ACODEC_LAME; -- } - else - { -- codec = HB_ACODEC_FAAC; -+ codec = HB_ACODEC_LAME; - } - value = ghb_lookup_acodec_value(codec); - ghb_settings_take_value(asettings, "AudioEncoder", value); -@@ -4525,7 +4521,7 @@ - if (codec == HB_ACODEC_VORBIS) - { - a_unsup = "Vorbis"; -- codec = HB_ACODEC_FAAC; -+ codec = HB_ACODEC_LAME; - } - } - if (a_unsup) ---- a/gtk/src/preset_xlat.c -+++ b/gtk/src/preset_xlat.c -@@ -260,7 +260,6 @@ - - static value_map_t acodec_xlat[] = - { -- {"AAC (faac)", "faac"}, - {"AC3 Passthru", "ac3"}, - {"MP3 (lame)", "lame"}, - {"Vorbis (vorbis)", "vorbis"}, ---- a/gtk/src/presets.c -+++ b/gtk/src/presets.c -@@ -2029,8 +2029,6 @@ - - static value_map_t acodec_xlat_compat[] = - { -- {"AAC (CoreAudio)", "faac"}, -- {"HE-AAC (CoreAudio)", "faac"}, - {"AC3 (ffmpeg)", "ac3"}, - {"AC3", "ac3"}, - {"MP3 Passthru", "mp3pass"}, ---- a/libhb/common.c -+++ b/libhb/common.c -@@ -126,7 +126,7 @@ - { "AAC (CoreAudio)", "ca_aac", HB_ACODEC_CA_AAC, HB_MUX_MP4|HB_MUX_MKV }, - { "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_FAAC, 0 }, - #ifdef USE_FDK_AAC - { "AAC (FDK)", "fdk_aac", HB_ACODEC_FDK_AAC, HB_MUX_MP4|HB_MUX_MKV }, - { "HE-AAC (FDK)", "fdk_haac", HB_ACODEC_FDK_HAAC, HB_MUX_MP4|HB_MUX_MKV }, -@@ -754,11 +754,6 @@ - (samplerate >= 22050))); - break; - -- case HB_ACODEC_FAAC: -- *low = (nchannels + lfe_count) * 32; -- *high = (nchannels + lfe_count) * (192 >> sr_shift); -- break; -- - case HB_ACODEC_FFAAC: - *low = ((nchannels + lfe_count) * 32); - *high = ((nchannels + lfe_count) * ---- a/libhb/common.h -+++ b/libhb/common.h -@@ -945,7 +945,6 @@ - extern hb_work_object_t hb_decavcodeca; - extern hb_work_object_t hb_decavcodecv; - extern hb_work_object_t hb_declpcm; --extern hb_work_object_t hb_encfaac; - extern hb_work_object_t hb_enclame; - extern hb_work_object_t hb_encvorbis; - extern hb_work_object_t hb_muxer; ---- a/libhb/encfaac.c -+++ b/libhb/encfaac.c -@@ -1,3 +1,4 @@ -+#if 0 - /* encfaac.c - - Copyright (c) 2003-2013 HandBrake Team -@@ -287,3 +288,4 @@ - return HB_WORK_OK; - } - -+#endif /* 0 */ ---- a/libhb/hb.c -+++ b/libhb/hb.c -@@ -487,7 +487,6 @@ - hb_register( &hb_decavcodeca ); - hb_register( &hb_decavcodecv ); - hb_register( &hb_declpcm ); -- hb_register( &hb_encfaac ); - hb_register( &hb_enclame ); - hb_register( &hb_encvorbis ); - hb_register( &hb_muxer ); -@@ -588,7 +587,6 @@ - hb_register( &hb_decavcodeca ); - hb_register( &hb_decavcodecv ); - hb_register( &hb_declpcm ); -- hb_register( &hb_encfaac ); - hb_register( &hb_enclame ); - hb_register( &hb_encvorbis ); - hb_register( &hb_muxer ); ---- a/libhb/internal.h -+++ b/libhb/internal.h -@@ -409,7 +409,6 @@ - WORK_DECAVCODEC, - WORK_DECAVCODECV, - WORK_DECLPCM, -- WORK_ENCFAAC, - WORK_ENCLAME, - WORK_ENCVORBIS, - WORK_ENC_CA_AAC, ---- a/libhb/module.defs -+++ b/libhb/module.defs -@@ -1,4 +1,4 @@ --__deps__ := A52DEC BZIP2 FAAC FFMPEG FONTCONFIG FREETYPE LAME LIBASS LIBDCA \ -+__deps__ := A52DEC BZIP2 FFMPEG FONTCONFIG FREETYPE LAME LIBASS LIBDCA \ - LIBDVDREAD LIBDVDNAV LIBICONV LIBMKV LIBOGG LIBSAMPLERATE LIBTHEORA LIBVORBIS LIBXML2 \ - MP4V2 MPEG2DEC PTHREADW32 X264 ZLIB LIBBLURAY FDKAAC - -@@ -97,7 +97,7 @@ - LIBHB.lib = $(LIBHB.build/)hb.lib - - LIBHB.dll.libs = $(foreach n, \ -- a52 ass avcodec avformat avutil avresample dvdnav dvdread faac \ -+ a52 ass avcodec avformat avutil avresample dvdnav dvdread \ - fontconfig freetype mkv mpeg2 mp3lame mp4v2 \ - ogg samplerate swscale theora vorbis vorbisenc x264 xml2 bluray, \ - $(CONTRIB.build/)lib/lib$(n).a ) ---- a/libhb/muxmkv.c -+++ b/libhb/muxmkv.c -@@ -256,7 +256,6 @@ - } - track->codecID = MK_ACODEC_FLAC; - break; -- case HB_ACODEC_FAAC: - case HB_ACODEC_FFAAC: - case HB_ACODEC_CA_AAC: - case HB_ACODEC_CA_HAAC: ---- a/libhb/work.c -+++ b/libhb/work.c -@@ -135,7 +135,6 @@ - switch (codec) - { - case HB_ACODEC_AC3: return hb_get_work(WORK_ENCAVCODEC_AUDIO); -- case HB_ACODEC_FAAC: return hb_get_work(WORK_ENCFAAC); - case HB_ACODEC_LAME: return hb_get_work(WORK_ENCLAME); - case HB_ACODEC_VORBIS: return hb_get_work(WORK_ENCVORBIS); - case HB_ACODEC_CA_AAC: return hb_get_work(WORK_ENC_CA_AAC); ---- a/test/module.defs -+++ b/test/module.defs -@@ -12,7 +12,7 @@ - TEST.libs = $(LIBHB.a) - - TEST.GCC.l = \ -- a52 ass avcodec avformat avutil avresample dvdnav dvdread faac \ -+ a52 ass avcodec avformat avutil avresample dvdnav dvdread \ - fontconfig freetype mkv mpeg2 mp3lame mp4v2 ogg \ - samplerate swscale theoraenc theoradec vorbis vorbisenc x264 \ - bluray xml2 bz2 z ---- a/gtk/configure.ac -+++ b/gtk/configure.ac -@@ -203,7 +203,7 @@ - ;; - esac - --HB_LIBS="-lhb -la52 -lmkv -lavresample -lavformat -lavcodec -lavutil -ldvdnav -ldvdread -lfaac -lmp3lame -lmpeg2 -lvorbis -lvorbisenc -logg -lsamplerate -lx264 -lmp4v2 -lswscale -ltheoraenc -ltheoradec -lz -lbz2 -lpthread -lbluray -lass -lfontconfig -lfreetype -lxml2" -+HB_LIBS="-lhb -la52 -lmkv -lavresample -lavformat -lavcodec -lavutil -ldvdnav -ldvdread -lmp3lame -lmpeg2 -lvorbis -lvorbisenc -logg -lsamplerate -lx264 -lmp4v2 -lswscale -ltheoraenc -ltheoradec -lz -lbz2 -lpthread -lbluray -lass -lfontconfig -lfreetype -lxml2" - - if test "x$use_fdk_aac" = "xyes" ; then - HB_LIBS+=" -lfdk-aac" diff -Nru handbrake-0.9.9+dfsg/debian/patches/0011-First-try-at-removing-some-of-mp4v2.patch handbrake-0.9.9+ppa1/debian/patches/0011-First-try-at-removing-some-of-mp4v2.patch --- handbrake-0.9.9+dfsg/debian/patches/0011-First-try-at-removing-some-of-mp4v2.patch 2013-12-18 04:51:29.000000000 +0000 +++ handbrake-0.9.9+ppa1/debian/patches/0011-First-try-at-removing-some-of-mp4v2.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,133 +0,0 @@ -From: =?UTF-8?q?Rog=C3=A9rio=20Brito?= -Date: Thu, 7 Jun 2012 07:09:37 -0300 -Subject: First try at removing some of mp4v2. - -Forwarded: partially (only first hunk) -Signed-off-by: Rogério Brito - ---- a/libhb/muxmp4.c -+++ b/libhb/muxmp4.c -@@ -1,3 +1,4 @@ -+#if 0 - /* muxmp4.c - - Copyright (c) 2003-2013 HandBrake Team -@@ -1413,3 +1414,4 @@ - return m; - } - -+#endif /* 0*/ ---- a/libhb/muxcommon.c -+++ b/libhb/muxcommon.c -@@ -460,8 +460,9 @@ - switch( job->mux ) - { - case HB_MUX_MP4: -- mux->m = hb_mux_mp4_init( job ); -- break; -+ hb_error( "MP4 muxer disabled, exiting" ); -+ *job->die = 1; -+ return NULL; - case HB_MUX_MKV: - mux->m = hb_mux_mkv_init( job ); - break; ---- a/test/module.defs -+++ b/test/module.defs -@@ -13,7 +13,7 @@ - - TEST.GCC.l = \ - a52 ass avcodec avformat avutil avresample dvdnav dvdread \ -- fontconfig freetype mkv mpeg2 mp3lame mp4v2 ogg \ -+ fontconfig freetype mkv mpeg2 mp3lame ogg \ - samplerate swscale theoraenc theoradec vorbis vorbisenc x264 \ - bluray xml2 bz2 z - ---- a/libhb/decmetadata.c -+++ b/libhb/decmetadata.c -@@ -7,10 +7,11 @@ - For full terms see the file COPYING file or visit http://www.gnu.org/licenses/gpl-2.0.html - */ - --#include -- - #include "common.h" - -+#if 0 -+#include -+ - static int decmp4metadata( hb_title_t *title ) - { - MP4FileHandle input_file; -@@ -172,6 +173,7 @@ - } - return result; - } -+#endif /* 0 */ - - /* - * decmetadata() -@@ -190,12 +192,5 @@ - return 0; - } - -- /* -- * Hacky way of figuring out if this is an MP4, in which case read the data using libmp4v2 -- */ -- if( title->container_name && strcmp(title->container_name, "mov,mp4,m4a,3gp,3g2,mj2") == 0 ) -- { -- return decmp4metadata( title ); -- } - return 0; - } ---- a/gtk/src/hb-backend.c -+++ b/gtk/src/hb-backend.c -@@ -176,7 +176,6 @@ - static options_map_t d_container_opts[] = - { - {"MKV", "mkv", HB_MUX_MKV, "mkv"}, -- {"MP4", "mp4", HB_MUX_MP4, "mp4"}, - }; - combo_opts_t container_opts = - { ---- a/gtk/src/presets.c -+++ b/gtk/src/presets.c -@@ -1394,7 +1394,7 @@ - str = ghb_settings_get_string(ud->settings, "destination_dir"); - ghb_ui_update(ud, "dest_dir", ghb_string_value(str)); - -- gchar *file = g_strdup_printf ("new_video.mp4"); -+ gchar *file = g_strdup_printf ("new_video.mkv"); - ghb_ui_update(ud, "dest_file", ghb_string_value(file)); - g_free(str); - g_free(file); ---- a/gtk/src/internal_defaults.xml -+++ b/gtk/src/internal_defaults.xml -@@ -19,7 +19,7 @@ - dest_dir - - dest_file -- new_video.mp4 -+ new_video.mkv - end_point - 100 - folder -@@ -262,7 +262,7 @@ - ChapterMarkers - - FileFormat -- mp4 -+ mkv - Folder - - PictureLooseCrop ---- a/gtk/configure.ac -+++ b/gtk/configure.ac -@@ -203,7 +203,7 @@ - ;; - esac - --HB_LIBS="-lhb -la52 -lmkv -lavresample -lavformat -lavcodec -lavutil -ldvdnav -ldvdread -lmp3lame -lmpeg2 -lvorbis -lvorbisenc -logg -lsamplerate -lx264 -lmp4v2 -lswscale -ltheoraenc -ltheoradec -lz -lbz2 -lpthread -lbluray -lass -lfontconfig -lfreetype -lxml2" -+HB_LIBS="-lhb -la52 -lmkv -lavresample -lavformat -lavcodec -lavutil -ldvdnav -ldvdread -lmp3lame -lmpeg2 -lvorbis -lvorbisenc -logg -lsamplerate -lx264 -lswscale -ltheoraenc -ltheoradec -lz -lbz2 -lpthread -lbluray -lass -lfontconfig -lfreetype -lxml2" - - if test "x$use_fdk_aac" = "xyes" ; then - HB_LIBS+=" -lfdk-aac" diff -Nru handbrake-0.9.9+dfsg/debian/patches/0014-Use-unpatched-a52.patch handbrake-0.9.9+ppa1/debian/patches/0014-Use-unpatched-a52.patch --- handbrake-0.9.9+dfsg/debian/patches/0014-Use-unpatched-a52.patch 2013-12-18 04:51:29.000000000 +0000 +++ handbrake-0.9.9+ppa1/debian/patches/0014-Use-unpatched-a52.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,24 +0,0 @@ -Author: Reinhard Tartler -Description: Use unpatched a52 - -In upstream liba52, the state field is private. - -Forwarded: no ---- a/libhb/deca52.c -+++ b/libhb/deca52.c -@@ -387,12 +387,15 @@ - pv->channel_layout, - pv->nchannels); - } -+#if 0 -+ // FIXME: debian uses an unpatched liba52 - if (pv->use_mix_levels) - { - hb_audio_resample_set_mix_levels(pv->resample, - (double)pv->state->slev, - (double)pv->state->clev); - } -+#endif - if (hb_audio_resample_update(pv->resample)) - { - hb_log("deca52: hb_audio_resample_update() failed"); diff -Nru handbrake-0.9.9+dfsg/debian/patches/0016-use-older-libmkv.patch handbrake-0.9.9+ppa1/debian/patches/0016-use-older-libmkv.patch --- handbrake-0.9.9+dfsg/debian/patches/0016-use-older-libmkv.patch 2013-12-18 04:51:29.000000000 +0000 +++ handbrake-0.9.9+ppa1/debian/patches/0016-use-older-libmkv.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,18 +0,0 @@ -From: Rogério Brito -Date: Tue Jul 31 19:07:14 2012 -0300 -Subject: debian/patches: Use unpatched libmkv for the moment. - -This should be dropped after we have a libmkv that has the patches from -`contrib/libmkv` applied. ---- a/libhb/muxmkv.c -+++ b/libhb/muxmkv.c -@@ -293,8 +293,7 @@ - { - // For HE-AAC, write outputSamplingFreq too - // samplingFreq is half of outputSamplingFreq -- track->extra.audio.outputSamplingFreq = (float)audio->config.out.samplerate; -- track->extra.audio.samplingFreq = track->extra.audio.outputSamplingFreq / 2.; -+ track->extra.audio.samplingFreq = audio->config.out.samplerate / 2.; - } - else - { diff -Nru handbrake-0.9.9+dfsg/debian/patches/0017-fixup-libmkv.patch handbrake-0.9.9+ppa1/debian/patches/0017-fixup-libmkv.patch --- handbrake-0.9.9+dfsg/debian/patches/0017-fixup-libmkv.patch 2013-12-18 04:51:29.000000000 +0000 +++ handbrake-0.9.9+ppa1/debian/patches/0017-fixup-libmkv.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,19 +0,0 @@ -Author: Reinhard Tartler -Description: Allow compilation with unpatched libmkv - -This define was stolen from upstream's A01-hbmv-pgs.patch - ---- a/libhb/muxmkv.c -+++ b/libhb/muxmkv.c -@@ -10,6 +10,11 @@ - /* libmkv header */ - #include "libmkv.h" - -+#ifndef MK_SUBTITLE_PGS -+// stolen from upstream's A01-hbmv-pgs.patch -+#define MK_SUBTITLE_PGS "S_HDMV/PGS" -+#endif -+ - #include - - #include "hb.h" diff -Nru handbrake-0.9.9+dfsg/debian/patches/0018-Fix-compilation-with-gstreamer-1.patch handbrake-0.9.9+ppa1/debian/patches/0018-Fix-compilation-with-gstreamer-1.patch --- handbrake-0.9.9+dfsg/debian/patches/0018-Fix-compilation-with-gstreamer-1.patch 2013-12-18 04:51:29.000000000 +0000 +++ handbrake-0.9.9+ppa1/debian/patches/0018-Fix-compilation-with-gstreamer-1.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,11 +0,0 @@ ---- b/gtk/configure.ac -+++ a/gtk/configure.ac -@@ -96,7 +96,7 @@ - pkg_gudev="gudev-1.0" - ;; - esac -- GHB_PACKAGES="gthread-2.0 gio-2.0 libnotify dbus-glib-1 $pkg_gudev" -+ GHB_PACKAGES="gthread-2.0 gio-2.0 gmodule-2.0 gobject-2.0 libnotify dbus-glib-1 $pkg_gudev" - mingw_flag=no - ;; - esac diff -Nru handbrake-0.9.9+dfsg/debian/patches/0019-Do-not-require-wget-or-curl.patch handbrake-0.9.9+ppa1/debian/patches/0019-Do-not-require-wget-or-curl.patch --- handbrake-0.9.9+dfsg/debian/patches/0019-Do-not-require-wget-or-curl.patch 2013-12-18 04:51:29.000000000 +0000 +++ handbrake-0.9.9+ppa1/debian/patches/0019-Do-not-require-wget-or-curl.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,22 +0,0 @@ -Author: Reinhard Tartler -Description: Do not require neither wget nor curl to build - ---- a/make/configure.py -+++ b/make/configure.py -@@ -949,6 +949,7 @@ class SelectTool( Action ): - self.name = name - self.pool = pool - self.kwargs = kwargs -+ self.selected = None - - def _action( self ): - self.session = [] -@@ -1382,7 +1383,7 @@ try: - xcodebuild = ToolProbe( 'XCODEBUILD.exe', 'xcodebuild', abort=False ) - lipo = ToolProbe( 'LIPO.exe', 'lipo', abort=False ) - -- fetch = SelectTool( 'FETCH.select', 'fetch', ['wget',wget], ['curl',curl] ) -+ fetch = SelectTool( 'FETCH.select', 'fetch', ['wget',wget], ['curl',curl], abort=False ) - - ## run tool probes - for tool in ToolProbe.tools: diff -Nru handbrake-0.9.9+dfsg/debian/patches/gstreamer-1-ftbfs.patch handbrake-0.9.9+ppa1/debian/patches/gstreamer-1-ftbfs.patch --- handbrake-0.9.9+dfsg/debian/patches/gstreamer-1-ftbfs.patch 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/debian/patches/gstreamer-1-ftbfs.patch 2014-04-21 03:45:48.000000000 +0000 @@ -0,0 +1,16 @@ +Description: fix ftbfs with gstreamer1.0. +Author: Marc Deslauriers + +Index: HandBrake-0.9.9/gtk/configure.ac +=================================================================== +--- HandBrake-0.9.9.orig/gtk/configure.ac 2013-03-03 11:18:16.000000000 -0500 ++++ HandBrake-0.9.9/gtk/configure.ac 2014-04-20 23:42:18.472425727 -0400 +@@ -96,7 +96,7 @@ + pkg_gudev="gudev-1.0" + ;; + esac +- GHB_PACKAGES="gthread-2.0 gio-2.0 libnotify dbus-glib-1 $pkg_gudev" ++ GHB_PACKAGES="gthread-2.0 gio-2.0 gmodule-2.0 gobject-2.0 libnotify dbus-glib-1 $pkg_gudev" + mingw_flag=no + ;; + esac diff -Nru handbrake-0.9.9+dfsg/debian/patches/series handbrake-0.9.9+ppa1/debian/patches/series --- handbrake-0.9.9+dfsg/debian/patches/series 2013-12-18 04:51:29.000000000 +0000 +++ handbrake-0.9.9+ppa1/debian/patches/series 2014-04-21 03:42:46.000000000 +0000 @@ -1,10 +1,2 @@ -0003-Remove-embedded-downloaded-copies-of-various-librari.patch -0004-Enable-compilation-on-Debian-arches-other-than-Linux.patch -0005-libhb-Fix-compilation-with-mp4v2-v1.9.1.patch -0010-Remove-FAAC-dependency.patch -0011-First-try-at-removing-some-of-mp4v2.patch -0014-Use-unpatched-a52.patch -0016-use-older-libmkv.patch -0017-fixup-libmkv.patch -0018-Fix-compilation-with-gstreamer-1.patch -0019-Do-not-require-wget-or-curl.patch +gstreamer-1-ftbfs.patch +update_x264.patch diff -Nru handbrake-0.9.9+dfsg/debian/patches/update_x264.patch handbrake-0.9.9+ppa1/debian/patches/update_x264.patch --- handbrake-0.9.9+dfsg/debian/patches/update_x264.patch 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/debian/patches/update_x264.patch 2014-04-21 03:46:20.000000000 +0000 @@ -0,0 +1,75 @@ +Description: updated x264 version to fix segfault with newer gcc. +Author: Marc Deslauriers +Origin: backported from upstream svn tree + +Index: HandBrake-0.9.9/contrib/x264/A00-version-string.patch +=================================================================== +--- HandBrake-0.9.9.orig/contrib/x264/A00-version-string.patch 2013-05-17 13:01:44.000000000 -0400 ++++ HandBrake-0.9.9/contrib/x264/A00-version-string.patch 2014-04-20 23:43:04.000426465 -0400 +@@ -1,12 +1,12 @@ + diff --git a/x264.h b/x264.h +-index e5a1600..f635d9e 100644 ++index 2e4a98d..6261638 100644 + --- a/x264.h + +++ b/x264.h + @@ -41,7 +41,17 @@ + + #include "x264_config.h" + +--#define X264_BUILD 130 ++-#define X264_BUILD 142 + +/* + + * Define the full version explicitly so that it survives a git --archive. + + * +@@ -16,8 +16,8 @@ + +#ifdef X264_VERSION + +#undef X264_VERSION + +#endif +-+#define X264_BUILD 130 +-+#define X264_VERSION " r2273 b3065e6" +++#define X264_BUILD 142 +++#define X264_VERSION " r2409 d6b4e63" + + /* Application developers planning to link against a shared library version of + * libx264 from a Microsoft Visual Studio or similar development environment +Index: HandBrake-0.9.9/contrib/x264/P00-darwin-configure-clang.patch +=================================================================== +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ HandBrake-0.9.9/contrib/x264/P00-darwin-configure-clang.patch 2014-04-20 23:43:04.000426465 -0400 +@@ -0,0 +1,11 @@ ++diff -ur x264.orig/configure x264/configure ++--- x264.orig/configure 2014-01-21 16:40:15.000000000 -0500 +++++ x264/configure 2014-03-11 20:33:33.000000000 -0400 ++@@ -467,7 +467,6 @@ ++ ;; ++ darwin*) ++ SYS="MACOSX" ++- CFLAGS="$CFLAGS -falign-loops=16" ++ libm="-lm" ++ if [ "$pic" = "no" ]; then ++ cc_check "" -mdynamic-no-pic && CFLAGS="$CFLAGS -mdynamic-no-pic" +Index: HandBrake-0.9.9/contrib/x264/module.defs +=================================================================== +--- HandBrake-0.9.9.orig/contrib/x264/module.defs 2013-02-27 16:42:33.000000000 -0500 ++++ HandBrake-0.9.9/contrib/x264/module.defs 2014-04-20 23:43:04.000426465 -0400 +@@ -1,15 +1,16 @@ + $(eval $(call import.MODULE.defs,X264,x264,YASM PTHREADW32)) + $(eval $(call import.CONTRIB.defs,X264)) + +-X264.FETCH.url = http://download.handbrake.fr/handbrake/contrib/x264-r2273-b3065e6.tar.gz ++X264.FETCH.url = http://download.handbrake.fr/handbrake/contrib/x264-r2409-d6b4e63.tar.gz + X264.EXTRACT.tarbase = x264 + ++X264.GCC.args.c_std = ++ + X264.CONFIGURE.deps = + X264.CONFIGURE.shared = +-X264.CONFIGURE.static = + +-X264.CONFIGURE.extra = --disable-cli --enable-static --enable-strip +-X264.CONFIGURE.extra += --disable-gpac --disable-avs --disable-lavf --disable-ffms --disable-swscale ++X264.CONFIGURE.extra = --bit-depth=8 --chroma-format=420 ++X264.CONFIGURE.extra += --disable-lavf --disable-ffms --disable-avs --disable-swscale --disable-gpac --disable-lsmash --disable-cli + + ifeq (1-mingw,$(BUILD.cross)-$(BUILD.system)) + X264.CONFIGURE.extra += --cross-prefix=$(BUILD.spec)- diff -Nru handbrake-0.9.9+dfsg/debian/README.Debian handbrake-0.9.9+ppa1/debian/README.Debian --- handbrake-0.9.9+dfsg/debian/README.Debian 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/debian/README.Debian 2013-05-18 16:08:58.000000000 +0000 @@ -0,0 +1,74 @@ +handbrake for Debian +-------------------- + +HandBrake bundles its own copies of ffmpeg and related media libraries. This is +an upstream decision that the Ubuntu maintainers will respect. + +This is done by running contrib/getcontrib.sh which wgets each library from +HandBrake's website. + + +Upstream has asked us to do this because they have modified their libraries to +address the finickiness of the platforms that they support, along with +prerelease patches that add support for advanced HandBrake functionality such as +surround-sound downmixing. + +HandBrake then statically links against these libraries, and they are not +installed to the system so it doesn't interfere with other parts of the system. +Different or older versions of these packages are included in the Ubuntu +distribution already, and have passed our guidelines for Multiverse inclusion. + + +=== Detailed Breakdown of Bundled Libraries and Reasons === + +a52dec - 0.7.4 +patch to allow downmix to dolby prologic ii + +faad2 2.6.1 +patch to configure.ac so it will build with libtool 2.2.x + +ffmpeg svn 15462 +patch for building on beos +patch that adds aac-latm codec +patch fixes memory leak provoked by h264 streams with lots of errors +patch for cygwin +patch for solaris + +libdca svn 81 +newer than released version + +libdvdread 0.9.7 +patch for os x, changes path to dvdcss +patch for cygwin, configure fixes + +faac +patch for cygwin configure + +lame version 3.98 + +libmp4v2 svn 45 +project was stagnant. using a fork that has picked up development + +libmkv 0.6.3 + +mpeg2dec 0.5.1 + +libogg 1.1.3 + +libsamplerate 0.1.4 + +libvorbis aotuv fork b5 + +libtheora 1.0 + +libx264 git 1028 +patch for cygwin configure +patch for solaris build scripts +patch to allow forcing an IDR frame + +xvidcore 1.1.3 +patch for os x configure +patch for cygwin configure +patch configure to recognize nasm 2.0 + + -- John Dong Fri, 28 Nov 2008 14:17:16 -0500 diff -Nru handbrake-0.9.9+dfsg/debian/README.source handbrake-0.9.9+ppa1/debian/README.source --- handbrake-0.9.9+dfsg/debian/README.source 2013-12-18 04:51:29.000000000 +0000 +++ handbrake-0.9.9+ppa1/debian/README.source 1970-01-01 00:00:00.000000000 +0000 @@ -1,11 +0,0 @@ -Because of licensing and copyright concerns, the following -subdirectories and the containing files have been removed from the -upstream tarball. They need to get pruned on each new upstream release -and are not necessary for compilation or operation under Linux. - - contrib/ - download/ - macosx/ - win/ - - -- Reinhard Tartler , Sun, 30 Sep 2012 18:48:17 +0200 diff -Nru handbrake-0.9.9+dfsg/debian/rules handbrake-0.9.9+ppa1/debian/rules --- handbrake-0.9.9+dfsg/debian/rules 2013-12-18 04:51:29.000000000 +0000 +++ handbrake-0.9.9+ppa1/debian/rules 2013-05-18 16:11:26.000000000 +0000 @@ -1,26 +1,85 @@ #!/usr/bin/make -f +# -*- makefile -*- +# This file was originally written by Joey Hess and Craig Small. +# As a special exception, when this file is copied by dh-make into a +# dh-make output file, you may use that output file without restriction. +# This special exception was added by Craig Small in version 0.37 of dh-make. + +# Uncomment this to turn on verbose mode. +#export DH_VERBOSE=1 + + +# These are used for cross-compiling and for saving the configure script +# from having to guess our platform (since we know it already) +DEB_HOST_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE) +DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE) +ifneq ($(DEB_HOST_GNU_TYPE),$(DEB_BUILD_GNU_TYPE)) +CROSS= --build $(DEB_BUILD_GNU_TYPE) --host $(DEB_HOST_GNU_TYPE) +else +CROSS= --build $(DEB_BUILD_GNU_TYPE) +endif + +PKGDESTDIR = ../ +CONFIGURE = ./configure +BUILDDIR = build +FORCEVERSION = + +$(BUILDDIR)/GNUmakefile: $(CONFIGURE) + dh_testdir + unset CFLAGS; unset CPPLAGS; unset CXXLAGS; $(CONFIGURE) --enable-local-yasm --disable-gtk-update-checks --prefix=/usr + +build: $(BUILDDIR)/GNUmakefile + dh_testdir + #We must build both the main project and the GTK project + unset CFLAGS ; unset CPPLAGS ; unset CXXLAGS; $(MAKE) -C $(BUILDDIR) + +clean: + dh_testdir + dh_testroot + + dh_clean + +install: build + dh_testdir + dh_testroot + dh_installdirs + $(MAKE) -C $(BUILDDIR) DESTDIR=$(CURDIR)/debian/tmp install + +# Build architecture-independent files here. +binary-indep: build install + dh_testdir + dh_testroot + dh_installchangelogs -i + dh_installdocs -i + dh_install --sourcedir=debian/tmp -i + dh_icons -i + dh_link -i + dh_compress -i + dh_fixperms -i + dh_installdeb -i + dh_gencontrol -i $(FORCEVERSION) + dh_md5sums -i + dh_builddeb --destdir=$(PKGDESTDIR) -i + +# Build architecture-dependent files here. +binary-arch: build install + dh_testdir + dh_testroot + dh_install --sourcedir=debian/tmp -a + dh_installchangelogs -a + dh_installdocs -a + dh_installexamples -a + dh_installman -a + dh_link -a + dh_icons -a + dh_strip -a + dh_compress -a + dh_fixperms -a + dh_installdeb -a + dh_shlibdeps -a + dh_gencontrol -a $(FORCEVERSION) + dh_md5sums -a + dh_builddeb -a --destdir=$(PKGDESTDIR) -- -Zbzip2 -LDFLAGS += -Wl,-z,defs -Wl,--as-needed - -%: - dh $@ --builddirectory=build - -override_dh_auto_configure: - ./configure --prefix=/usr --build build --debug=std \ - CC="$(CC)" CXX="$(CXX)" \ - CFLAGS="$(CFLAGS)" CXXFLAGS="$(CXXFLAGS)" LDFLAGS="$(LDFLAGS)" - -override_dh_auto_install: - dh_auto_install --destdir=debian/tmp - -override_dh_install: - dh_install --list-missing - -override_dh_builddeb: - dh_builddeb -- -Zxz -z9 -Sextreme - -override_dh_installchangelogs: - dh_installchangelogs NEWS - -override_dh_strip: - dh_strip --dbg-package=handbrake-dbg +binary: binary-indep binary-arch +.PHONY: build clean binary-indep binary-arch binary install diff -Nru handbrake-0.9.9+dfsg/debian/TODO handbrake-0.9.9+ppa1/debian/TODO --- handbrake-0.9.9+dfsg/debian/TODO 2013-12-18 04:51:29.000000000 +0000 +++ handbrake-0.9.9+ppa1/debian/TODO 1970-01-01 00:00:00.000000000 +0000 @@ -1,8 +0,0 @@ - = TODO = - - * High priority: - + Port MP4 format muxing from libmp4v2 to libavformat. - * Medium priority: - + Support another alternative AAC encoder, e.g. vo-aacenc. - - -- Fabian Greffrath Mon, 12 Nov 2012 10:13:39 +0100 diff -Nru handbrake-0.9.9+dfsg/debian/watch handbrake-0.9.9+ppa1/debian/watch --- handbrake-0.9.9+dfsg/debian/watch 2013-12-18 04:51:29.000000000 +0000 +++ handbrake-0.9.9+ppa1/debian/watch 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ -version=3 - -http://sf.net/handbrake/HandBrake-([0-9.]+)\.tar\.(?:bz2|xz) Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/download/a52dec-0.7.4.tar.gz and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/download/a52dec-0.7.4.tar.gz differ Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/download/faac-1.28.tar.gz and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/download/faac-1.28.tar.gz differ Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/download/lame-3.98.tar.gz and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/download/lame-3.98.tar.gz differ Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/download/libav-v9.6.tar.bz2 and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/download/libav-v9.6.tar.bz2 differ Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/download/libbluray-0.2.3.tar.bz2 and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/download/libbluray-0.2.3.tar.bz2 differ Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/download/libdvdnav-svn1168.tar.gz and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/download/libdvdnav-svn1168.tar.gz differ Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/download/libdvdread-svn1168.tar.gz and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/download/libdvdread-svn1168.tar.gz differ Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/download/libmkv-0.6.5-0-g82075ae.tar.gz and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/download/libmkv-0.6.5-0-g82075ae.tar.gz differ Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/download/mp4v2-trunk-r355.tar.bz2 and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/download/mp4v2-trunk-r355.tar.bz2 differ Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/download/mpeg2dec-0.5.1.tar.gz and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/download/mpeg2dec-0.5.1.tar.gz differ Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/download/x264-r2409-d6b4e63.tar.gz and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/download/x264-r2409-d6b4e63.tar.gz differ Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/download/yasm-1.2.0.tar.gz and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/download/yasm-1.2.0.tar.gz differ diff -Nru handbrake-0.9.9+dfsg/macosx/ChapterTitles.h handbrake-0.9.9+ppa1/macosx/ChapterTitles.h --- handbrake-0.9.9+dfsg/macosx/ChapterTitles.h 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/ChapterTitles.h 2013-05-11 19:38:49.000000000 +0000 @@ -0,0 +1,32 @@ +/* ChapterTitles.h $ + + This file is part of the HandBrake source code. + Homepage: . + It may be used under the terms of the GNU General Public License. */ + +#include +#include "hb.h" + +@interface ChapterTitles : NSObject { + hb_title_t *fTitle; + NSMutableArray *fChapterTitlesArray; +} + +// Trigger a refresh of data +- (void)resetWithTitle:(hb_title_t *)title; + +// Get the list of chapter titles +- (NSArray*)chapterTitlesArray; + +// Table View Delegates +- (int)numberOfRowsInTableView:(NSTableView *)aTableView; + +- (id)tableView:(NSTableView *)aTableView + objectValueForTableColumn:(NSTableColumn *)aTableColumn + row:(NSInteger)rowIndex; + +- (void)tableView:(NSTableView *)aTableView + setObjectValue:(id)anObject + forTableColumn:(NSTableColumn *)aTableColumn + row:(NSInteger)rowIndex; +@end diff -Nru handbrake-0.9.9+dfsg/macosx/ChapterTitles.m handbrake-0.9.9+ppa1/macosx/ChapterTitles.m --- handbrake-0.9.9+dfsg/macosx/ChapterTitles.m 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/ChapterTitles.m 2013-05-11 19:38:49.000000000 +0000 @@ -0,0 +1,137 @@ +/* ChapterTitles.m $ + + This file is part of the HandBrake source code. + Homepage: . + It may be used under the terms of the GNU General Public License. */ + +#include "ChapterTitles.h" +#include "hb.h" + +@implementation ChapterTitles +- (id)init +{ + self = [super init]; + if (self != nil) + { + fTitle = NULL; + fChapterTitlesArray = [[[NSMutableArray alloc] init] retain]; + } + return self; +} + +- (void)dealloc +{ + [fChapterTitlesArray release]; + [super dealloc]; +} + +- (void)resetWithTitle:(hb_title_t *)title +{ + fTitle = title; + [fChapterTitlesArray removeAllObjects]; + + if (fTitle == NULL) + return; + + for (int i = 0; i < hb_list_count(fTitle->job->list_chapter); i++) + { + hb_chapter_t *chapter = hb_list_item(fTitle->job->list_chapter, i); + if (chapter != NULL) + { + if (chapter->title != NULL) + { + [fChapterTitlesArray addObject:[NSString + stringWithUTF8String:chapter->title]]; + } + else + { + [fChapterTitlesArray addObject:[NSString + stringWithFormat:@"Chapter %d", + i + 1]]; + } + } + } +} + +- (NSArray*)chapterTitlesArray +{ + return [NSArray arrayWithArray:fChapterTitlesArray]; +} + +- (int)numberOfRowsInTableView:(NSTableView *)aTableView +{ + if (fTitle == NULL) + { + return 0; + } + else + { + return [fChapterTitlesArray count]; + } +} + +- (void)tableView:(NSTableView *)aTableView + setObjectValue:(id)anObject + forTableColumn:(NSTableColumn *)aTableColumn + row:(NSInteger)rowIndex +{ + if (aTableColumn != nil && [[aTableColumn identifier] intValue] == 2 && + fTitle != NULL) + { + [fChapterTitlesArray replaceObjectAtIndex:rowIndex + withObject:[NSString + stringWithString:anObject]]; + } +} + +- (id)tableView:(NSTableView *)aTableView + objectValueForTableColumn:(NSTableColumn *)aTableColumn + row:(NSInteger)rowIndex +{ + if ([[aTableColumn identifier] intValue] == 1) + { + return [NSString stringWithFormat:@"%d", rowIndex + 1]; + } + else if (fTitle != NULL) + { + return [NSString stringWithString:[fChapterTitlesArray + objectAtIndex:rowIndex]]; + } + return @"__DATA ERROR__"; +} + +/* Method to edit the next chapter when the user presses Return. We have to use +a timer to avoid interfering with the chain of events that handles the edit. */ +- (void)controlTextDidEndEditing: (NSNotification *) notification +{ + NSTableView *chapterTable = [notification object]; + NSInteger column = [chapterTable editedColumn]; + NSInteger row = [chapterTable editedRow]; + NSInteger textMovement; + + // Edit the cell in the next row, same column + row++; + textMovement = [[[notification userInfo] objectForKey:@"NSTextMovement"] integerValue]; + if( textMovement == NSReturnTextMovement && row < [chapterTable numberOfRows] ) + { + NSArray *info = [NSArray arrayWithObjects:chapterTable, + [NSNumber numberWithInteger:column], [NSNumber numberWithInteger:row], nil]; + /* The delay is unimportant; editNextRow: won't be called until the responder + chain finishes because the event loop containing the timer is on this thread */ + [self performSelector:@selector(editNextRow:) withObject:info afterDelay:0.0]; + } +} + +- (void)editNextRow: (id) objects +{ + NSTableView *chapterTable = [objects objectAtIndex:0]; + NSInteger column = [[objects objectAtIndex:1] integerValue]; + NSInteger row = [[objects objectAtIndex:2] integerValue]; + + if( row >= 0 && row < [chapterTable numberOfRows] ) + { + [chapterTable selectRow:row byExtendingSelection:NO]; + [chapterTable editColumn:column row:row withEvent:nil select:YES]; + } +} +@end diff -Nru handbrake-0.9.9+dfsg/macosx/Controller.h handbrake-0.9.9+ppa1/macosx/Controller.h --- handbrake-0.9.9+dfsg/macosx/Controller.h 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/Controller.h 2013-04-12 20:14:05.000000000 +0000 @@ -0,0 +1,506 @@ +/* $Id: Controller.h,v 1.35 2005/08/01 14:29:50 titer Exp $ + + This file is part of the HandBrake source code. + Homepage: . + It may be used under the terms of the GNU General Public License. */ + +#import +#import + +#include "hb.h" + +#import "ChapterTitles.h" +#import "HBSubtitles.h" +#import "PictureController.h" +#import "HBPreviewController.h" +#import "HBQueueController.h" +#import "HBAdvancedController.h" +#import "HBPreferencesController.h" +#import "HBPresets.h" +#import "HBAudioController.h" + +extern NSString *HBContainerChangedNotification; +extern NSString *keyContainerTag; +extern NSString *HBTitleChangedNotification; +extern NSString *keyTitleTag; + +@class HBOutputPanelController; +@class DockTextField; + +/* We subclass NSView so that our drags show both the icon as well as PresetName columns */ +@interface HBPresetsOutlineView : NSOutlineView +{ + +BOOL fIsDragging; + +} +@end + +@interface HBController : NSObject +{ + NSImage * fApplicationIcon; + IBOutlet NSWindow * fWindow; + + /* Main Menu Outlets */ + NSMenuItem * fOpenSourceTitleMMenu; + + /* Source Title Scan Outlets */ + IBOutlet NSPanel * fScanSrcTitlePanel; + IBOutlet NSTextField * fScanSrcTitlePathField; + IBOutlet NSTextField * fSrcDsplyNameTitleScan; + IBOutlet NSTextField * fScanSrcTitleNumField; + IBOutlet NSButton * fScanSrcTitleCancelButton; + IBOutlet NSButton * fScanSrcTitleOpenButton; + + + /* Picture Settings */ + PictureController * fPictureController; + + /* Picture Preview */ + PreviewController * fPreviewController; + + /* x264 Presets Box */ + NSArray * fX264PresetNames; + NSUInteger fX264MediumPresetIndex; + IBOutlet NSButton * fX264UseAdvancedOptionsCheck; + IBOutlet NSBox * fX264PresetsBox; + IBOutlet NSSlider * fX264PresetsSlider; + IBOutlet NSTextField * fX264PresetSliderLabel; + IBOutlet NSTextField * fX264PresetSelectedTextField; + IBOutlet NSPopUpButton * fX264TunePopUp; + IBOutlet NSTextField * fX264TunePopUpLabel; + IBOutlet NSPopUpButton * fX264ProfilePopUp; + IBOutlet NSTextField * fX264ProfilePopUpLabel; + IBOutlet NSPopUpButton * fX264LevelPopUp; + IBOutlet NSTextField * fX264LevelPopUpLabel; + IBOutlet NSButton * fX264FastDecodeCheck; + IBOutlet NSTextField * fDisplayX264PresetsAdditonalOptionsTextField; + IBOutlet NSTextField * fDisplayX264PresetsAdditonalOptionsLabel; + // Text Field to show the expanded opts from unparse() + IBOutlet NSTextField * fDisplayX264PresetsUnparseTextField; + char * fX264PresetsUnparsedUTF8String; + NSUInteger fX264PresetsHeightForUnparse; + NSUInteger fX264PresetsWidthForUnparse; + + /* Advanced options tab */ + HBAdvancedController * fAdvancedOptions; + IBOutlet NSBox * fAdvancedView; + + HBPreferencesController * fPreferencesController; + + /* Queue panel */ + HBQueueController * fQueueController; + IBOutlet NSTextField * fQueueStatus; + + /* Output panel */ + HBOutputPanelController * outputPanel; + + /* Source box */ + IBOutlet NSProgressIndicator * fScanIndicator; + IBOutlet NSBox * fScanHorizontalLine; + + NSString * sourceDisplayName; + IBOutlet NSTextField * fSrcDVD2Field; + IBOutlet NSTextField * fSrcTitleField; + IBOutlet NSPopUpButton * fSrcTitlePopUp; + + + /* lib dvd nav specific */ + IBOutlet NSTextField * fSrcAngleLabel; + IBOutlet NSPopUpButton * fSrcAnglePopUp; + + /* Source start and end points */ + IBOutlet NSPopUpButton * fEncodeStartStopPopUp; + /* pts based start / stop */ + IBOutlet NSTextField * fSrcTimeStartEncodingField; + IBOutlet NSTextField * fSrcTimeEndEncodingField; + /* frame based based start / stop */ + IBOutlet NSTextField * fSrcFrameStartEncodingField; + IBOutlet NSTextField * fSrcFrameEndEncodingField; + + IBOutlet NSTextField * fSrcChapterField; + IBOutlet NSPopUpButton * fSrcChapterStartPopUp; + IBOutlet NSTextField * fSrcChapterToField; + IBOutlet NSPopUpButton * fSrcChapterEndPopUp; + + /* Source duration information */ + IBOutlet NSTextField * fSrcDuration1Field; + IBOutlet NSTextField * fSrcDuration2Field; + + /* Destination box */ + IBOutlet NSTextField * fDstFormatField; + IBOutlet NSPopUpButton * fDstFormatPopUp; + + IBOutlet NSTextField * fDstFile1Field; + IBOutlet NSTextField * fDstFile2Field; + IBOutlet NSButton * fDstBrowseButton; + /* MP4 Options */ + // Creates 64 bit mp4's that allow file sizes over 4gb + IBOutlet NSButton * fDstMp4LargeFileCheck; + // Optimizes mp4's for http + IBOutlet NSButton * fDstMp4HttpOptFileCheck; + // Creates iPod compatible mp4's (add ipod uuid atom) + IBOutlet NSButton * fDstMp4iPodFileCheck; + + /* Video box */ + + /* Framerate */ + /* Radio Button Framerate Controls */ + IBOutlet NSMatrix * fFramerateMatrix; + IBOutlet NSButtonCell * fFramerateVfrPfrCell; + IBOutlet NSButtonCell * fFramerateCfrCell; + + /* Video Encoder */ + IBOutlet NSTextField * fVidRateField; + IBOutlet NSPopUpButton * fVidRatePopUp; + IBOutlet NSTextField * fVidEncoderField; + IBOutlet NSPopUpButton * fVidEncoderPopUp; + IBOutlet NSTextField * fVidQualityField; + IBOutlet NSTextField * fVidQualityRFLabel; + IBOutlet NSTextField * fVidQualityRFField; + IBOutlet NSMatrix * fVidQualityMatrix; + IBOutlet NSButtonCell * fVidBitrateCell; + IBOutlet NSTextField * fVidBitrateField; + IBOutlet NSButtonCell * fVidConstantCell; + IBOutlet NSSlider * fVidQualitySlider; + IBOutlet NSButton * fVidTwoPassCheck; + IBOutlet NSButton * fVidTurboPassCheck; + + /* Status read out fields for picture settings and video filters */ + IBOutlet NSTextField * fPictureSettingsField; + IBOutlet NSTextField * fPictureFiltersField; + + /* Picture variables */ + int PicOrigOutputWidth; + int PicOrigOutputHeight; + int AutoCropTop; + int AutoCropBottom; + int AutoCropLeft; + int AutoCropRight; + /* Subtitles box */ + IBOutlet NSTextField * fSubField; + IBOutlet NSPopUpButton * fSubPopUp; + IBOutlet NSButton * fSubForcedCheck; + + + IBOutlet NSTableView * fSubtitlesTable; + HBSubtitles * fSubtitlesDelegate; + IBOutlet NSButton * fBrowseSrtFileButton; + + /* New Audio box */ + IBOutlet HBAudioController * fAudioDelegate; + + /* New Audio Auto Passthru box */ + IBOutlet NSBox * fAudioAutoPassthruBox; + IBOutlet NSButton * fAudioAllowAACPassCheck; + IBOutlet NSButton * fAudioAllowAC3PassCheck; + IBOutlet NSButton * fAudioAllowDTSHDPassCheck; + IBOutlet NSButton * fAudioAllowDTSPassCheck; + IBOutlet NSButton * fAudioAllowMP3PassCheck; + IBOutlet NSPopUpButton * fAudioFallbackPopUp; + + + /* Chapters box */ + IBOutlet NSButton * fCreateChapterMarkers; + IBOutlet NSTableView * fChapterTable; + IBOutlet NSButton * fLoadChaptersButton; + IBOutlet NSButton * fSaveChaptersButton; + IBOutlet NSTableColumn * fChapterTableNameColumn; + ChapterTitles * fChapterTitlesDelegate; + + /* Bottom */ + IBOutlet NSTextField * fStatusField; + IBOutlet NSProgressIndicator * fRipIndicator; + BOOL fRipIndicatorShown; + + /* Queue File variables */ + NSString * QueueFile; + NSMutableArray * QueueFileArray; + int currentQueueEncodeIndex; // Used to track the currently encoding queueu item + + /* User Preset variables here */ + HBPresets * fPresetsBuiltin; + IBOutlet NSDrawer * fPresetDrawer; + IBOutlet NSTextField * fPresetNewName; + IBOutlet NSTextField * fPresetNewDesc; + IBOutlet NSPopUpButton * fPresetNewPicSettingsPopUp; + IBOutlet NSTextField * fPresetNewPicWidth; + IBOutlet NSTextField * fPresetNewPicHeight; + IBOutlet NSBox * fPresetNewPicWidthHeightBox; + + IBOutlet NSButton * fPresetNewPicFiltersCheck; + IBOutlet NSButton * fPresetNewFolderCheck; + IBOutlet NSTextField * fPresetSelectedDisplay; + + NSString * AppSupportDirectory; + NSString * UserPresetsFile; + NSMutableArray * UserPresets; + NSMutableArray * UserPresetssortedArray; + NSMutableDictionary * chosenPreset; + + NSMutableDictionary *presetHbDefault; // this is 1 in "Default" preset key + NSMutableDictionary *presetUserDefault;// this is 2 in "Default" preset key + NSMutableDictionary *presetUserDefaultParent; + NSMutableDictionary *presetUserDefaultParentParent; + int presetCurrentBuiltInCount; // keeps track of the current number of built in presets + IBOutlet NSPanel * fAddPresetPanel; + + /* NSOutline View for the presets */ + NSArray *fDraggedNodes; + IBOutlet HBPresetsOutlineView * fPresetsOutlineView; + IBOutlet NSButton * fPresetsAdd; + IBOutlet NSButton * fPresetsDelete; + IBOutlet NSPopUpButton * fPresetsActionButton; + + hb_handle_t * fHandle; + + /* Queue variables */ + int hbInstanceNum; //stores the number of HandBrake instances currently running + hb_handle_t * fQueueEncodeLibhb; // libhb for HB Encoding + hb_title_t * fTitle; + hb_title_t * fQueueEncodeTitle; + int fEncodingQueueItem; // corresponds to the index of fJobGroups encoding item + int fPendingCount; // Number of various kinds of job groups in fJobGroups. + int fCompletedCount; + int fCanceledCount; + int fWorkingCount; + + int fqueueEditRescanItemNum; // queue array item to be reloaded into the main window + int pidNum; // The pid number for this instance + NSString * currentQueueEncodeNameString; + + /* integer to set to determine the previous state + of encode 0==idle, 1==encoding, 2==cancelled*/ + int fEncodeState; + int currentScanCount; + int currentSuccessfulScanCount; + BOOL SuccessfulScan; + BOOL applyQueueToScan; + NSString * currentSource; + NSString * browsedSourceDisplayName; + + /* Dock progress variables */ + double dockIconProgress; + + BOOL fWillScan; + NSDockTile * dockTile; + DockTextField * percentField; + DockTextField * timeField; +} +- (int) getPidnum; +- (IBAction) showAboutPanel:(id)sender; + +- (void) writeToActivityLog:(const char *) format, ...; +- (IBAction) browseSources: (id) sender; +- (void) browseSourcesDone: (NSOpenPanel *) sheet + returnCode: (int) returnCode contextInfo: (void *) contextInfo; +- (IBAction) showSourceTitleScanPanel: (id) sender; +- (IBAction) closeSourceTitleScanPanel: (id) sender; +- (void) performScan:(NSString *) scanPath scanTitleNum: (int) scanTitleNum; +- (IBAction) showNewScan: (id) sender; + + +- (IBAction) cancelScanning:(id)sender; + +- (void) updateUI: (NSTimer*) timer; +- (void) enableUI: (bool) enable; +- (void) setupX264PresetsWidgets: (id) sender; +- (void) enableX264Widgets: (bool) enable; +- (IBAction) updateX264Widgets: (id) sender; +- (IBAction) x264PresetsChangedDisplayExpandedOptions: (id) sender; + +- (IBAction) encodeStartStopPopUpChanged: (id) sender; + + +- (IBAction) titlePopUpChanged: (id) sender; +- (IBAction) chapterPopUpChanged: (id) sender; +- (IBAction) startEndSecValueChanged: (id) sender; +- (IBAction) startEndFrameValueChanged: (id) sender; + + +- (IBAction) formatPopUpChanged: (id) sender; +- (IBAction) videoEncoderPopUpChanged: (id) sender; +- (IBAction) autoSetM4vExtension: (id) sender; +- (IBAction) twoPassCheckboxChanged: (id) sender; +- (IBAction) videoFrameRateChanged: (id) sender; +- (void) prepareJob; +- (IBAction) browseFile: (id) sender; +- (void) browseFileDone: (NSSavePanel *) sheet + returnCode: (int) returnCode contextInfo: (void *) contextInfo; + +- (IBAction) videoMatrixChanged: (id) sender; + +- (IBAction) qualitySliderChanged: (id) sender; +- (void) setupQualitySlider; + +- (IBAction) browseImportSrtFile: (id) sender; +- (void) browseImportSrtFileDone: (NSSavePanel *) sheet + returnCode: (int) returnCode contextInfo: (void *) contextInfo; + +- (IBAction) showPicturePanel: (id) sender; +- (void) picturePanelWindowed; +- (IBAction) showPreviewWindow: (id) sender; +- (void)pictureSettingsDidChange; +- (IBAction) calculatePictureSizing: (id) sender; +- (IBAction) openMainWindow: (id) sender; + +/* Text summaries of various settings */ +- (NSString*) pictureSettingsSummary; +- (NSString*) pictureFiltersSummary; +- (NSString*) muxerOptionsSummary; + +/* Add All titles to the queue */ +- (IBAction) addAllTitlesToQueue: (id) sender; +- (void) addAllTitlesToQueueAlertDone: (NSWindow *) sheet + returnCode: (int) returnCode contextInfo: (void *) contextInfo; +- (void) doAddAllTitlesToQueue; + +/* Queue File Stuff */ +- (void) loadQueueFile; +- (NSDictionary *)createQueueFileItem; +- (void)saveQueueFileItem; +- (void) incrementQueueItemDone:(int) queueItemDoneIndexNum; +- (void) performNewQueueScan:(NSString *) scanPath scanTitleNum: (int) scanTitleNum; +- (void) processNewQueueEncode; +- (void) clearQueueEncodedItems; +/* Queue Editing */ +- (IBAction)applyQueueSettingsToMainWindow:(id)sender; +- (IBAction)rescanQueueItemToMainWindow:(NSString *) scanPath scanTitleNum: (int) scanTitleNum selectedQueueItem: (int) selectedQueueItem; + + +- (void) removeQueueFileItem:(int) queueItemToRemove; +- (void) clearQueueAllItems; +- (void)moveObjectsInQueueArray:(NSMutableArray *)array fromIndexes:(NSIndexSet *)indexSet toIndex:(NSUInteger)insertIndex; +- (void)getQueueStats; +- (void)setQueueEncodingItemsAsPending; +- (IBAction) addToQueue: (id) sender; +- (void) overwriteAddToQueueAlertDone: (NSWindow *) sheet + returnCode: (int) returnCode contextInfo: (void *) contextInfo; +- (void) doAddToQueue; + +- (IBAction) showQueueWindow:(id)sender; + +- (IBAction)showPreferencesWindow:(id)sender; + +- (IBAction) Rip: (id) sender; +- (void) overWriteAlertDone: (NSWindow *) sheet + returnCode: (int) returnCode contextInfo: (void *) contextInfo; +- (void) doRip; + +- (IBAction) Cancel: (id) sender; +- (void) doCancelCurrentJob; +- (void) doCancelCurrentJobAndStop; +- (IBAction) Pause: (id) sender; + +- (IBAction) calculateBitrate: (id) sender; +- (void) controlTextDidChange: (NSNotification *) notification; + +- (IBAction) openHomepage: (id) sender; +- (IBAction) openForums: (id) sender; +- (IBAction) openUserGuide: (id) sender; + +// Preset Methods Here + +/* These are required by the NSOutlineView Datasource Delegate */ +/* We use this to deterimine children of an item */ +- (id)outlineView:(NSOutlineView *)fPresetsOutlineView child:(NSInteger)index ofItem:(id)item; +/* We use this to determine if an item should be expandable */ +- (BOOL)outlineView:(NSOutlineView *)fPresetsOutlineView isItemExpandable:(id)item; +/* used to specify the number of levels to show for each item */ +- (int)outlineView:(NSOutlineView *)fPresetsOutlineView numberOfChildrenOfItem:(id)item; +/* Used to tell the outline view which information is to be displayed per item */ +- (id)outlineView:(NSOutlineView *)fPresetsOutlineView objectValueForTableColumn:(NSTableColumn *)tableColumn byItem:(id)item; +/* Use to customize the font and display characteristics of the title cell */ +- (void)outlineView:(NSOutlineView *)fPresetsOutlineView willDisplayCell:(id)cell forTableColumn:(NSTableColumn *)tableColumn item:(id)item; +/* We use this to edit the name field in the outline view */ +- (void)outlineView:(NSOutlineView *)fPresetsOutlineView setObjectValue:(id)object forTableColumn:(NSTableColumn *)tableColumn byItem:(id)item; +/* We use this to provide tooltips for the items in the presets outline view */ +- (NSString *)outlineView:(NSOutlineView *)fPresetsOutlineView toolTipForCell:(NSCell *)cell rect:(NSRectPointer)rect tableColumn:(NSTableColumn *)tc item:(id)item mouseLocation:(NSPoint)mouseLocation; +- (void) checkBuiltInsForUpdates; +/* We use this to actually select the preset and act accordingly */ +- (IBAction)selectPreset:(id)sender; + +@property (nonatomic, readonly) BOOL hasValidPresetSelected; +- (id)selectedPreset; + +/* Export / Import Presets */ +- (IBAction) browseExportPresetFile: (id) sender; +- (void) browseExportPresetFileDone: (NSSavePanel *) sheet + returnCode: (int) returnCode contextInfo: (void *) contextInfo; + +- (IBAction) browseImportPresetFile: (id) sender; +- (void) browseImportPresetDone: (NSSavePanel *) sheet + returnCode: (int) returnCode contextInfo: (void *) contextInfo; + +/* Manage User presets */ +- (void) loadPresets; +- (IBAction) customSettingUsed: (id) sender; +- (IBAction) showAddPresetPanel: (id) sender; +- (IBAction) addPresetPicDropdownChanged: (id) sender; +- (IBAction) closeAddPresetPanel: (id) sender; +- (NSDictionary *)createPreset; + +- (IBAction) revertPictureSizeToMax:(id)sender; + +- (IBAction)setDefaultPreset:(id)sender; +- (IBAction)selectDefaultPreset:(id)sender; +- (void) savePreset; +- (void)sortPresets; +- (IBAction)addFactoryPresets:(id)sender; +- (IBAction)deleteFactoryPresets:(id)sender; +- (IBAction)addUserPreset:(id)sender; +- (void)addPreset; +- (IBAction)insertPreset:(id)sender; +- (IBAction)deletePreset:(id)sender; +- (IBAction)getDefaultPresets:(id)sender; + +-(void)sendToMetaX:(NSString *) filePath; +// Growl methods +- (NSDictionary *) registrationDictionaryForGrowl; +-(void)showGrowlDoneNotification:(NSString *) filePath; +- (IBAction)showDebugOutputPanel:(id)sender; +- (void)setupToolbar; + +- (void) prepareJobForPreview; +- (void) remindUserOfSleepOrShutdown; + +- (void)moveObjectsInPresetsArray:(NSMutableArray *)array fromIndexes:(NSIndexSet *)indexSet toIndex:(NSUInteger)insertIndex; + +- (int) hbInstances; + +// Chapter files methods +- (IBAction) browseForChapterFile: (id) sender; +- (void) browseForChapterFileDone: (NSOpenPanel *) sheet + returnCode: (int) returnCode contextInfo: (void *) contextInfo; + +- (IBAction) browseForChapterFileSave: (id) sender; +- (void) browseForChapterFileSaveDone: (NSSavePanel *) sheet + returnCode: (int) returnCode contextInfo: (void *) contextInfo; + ++ (unsigned int) maximumNumberOfAllowedAudioTracks; +- (IBAction) addAllAudioTracks: (id) sender; + +// Drag & Drop methods +- (void)openFiles:(NSArray*)filenames; +- (void)application:(NSApplication *)sender openFiles:(NSArray *)filenames; +- (NSDragOperation)draggingEntered:(id )sender; +- (BOOL)performDragOperation:(id )sender; + +- (void) updateDockIcon:(double)progress withETA:(NSString*)etaStr; + +// x264 system methods +- (NSString*) x264Preset; +- (NSString*) x264Tune; +- (NSString*) x264OptionExtra; +- (NSString*) h264Profile; +- (NSString*) h264Level; +- (void) setX264Preset: (NSString*) x264Preset; +- (void) setX264Tune: (NSString*) x264Tune; +- (void) setX264OptionExtra: (NSString*) x264OptionExtra; +- (void) setH264Profile: (NSString*) h264Profile; +- (void) setH264Level: (NSString*) h264Level; +- (IBAction) x264PresetsSliderChanged: (id) sender; + + +@end + diff -Nru handbrake-0.9.9+dfsg/macosx/Controller.m handbrake-0.9.9+ppa1/macosx/Controller.m --- handbrake-0.9.9+dfsg/macosx/Controller.m 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/Controller.m 2013-05-12 20:38:45.000000000 +0000 @@ -0,0 +1,7865 @@ +/* $Id: Controller.mm,v 1.79 2005/11/04 19:41:32 titer Exp $ + + This file is part of the HandBrake source code. + Homepage: . + It may be used under the terms of the GNU General Public License. */ + +#include +#import "Controller.h" +#import "HBOutputPanelController.h" +#import "HBPreferencesController.h" +#import "HBDVDDetector.h" +#import "HBPresets.h" +#import "HBPreviewController.h" +#import "DockTextField.h" + +unsigned int maximumNumberOfAllowedAudioTracks = 24; +NSString *HBContainerChangedNotification = @"HBContainerChangedNotification"; +NSString *keyContainerTag = @"keyContainerTag"; +NSString *HBTitleChangedNotification = @"HBTitleChangedNotification"; +NSString *keyTitleTag = @"keyTitleTag"; + +NSString *dragDropFiles = @"dragDropFiles"; + +#define DragDropSimplePboardType @"MyCustomOutlineViewPboardType" + +NSString *dockTilePercentFormat = @"%2.1f%%"; +// DockTile update freqency in total percent increment +#define dockTileUpdateFrequency 0.1f + +/* We setup the toolbar values here ShowPreviewIdentifier */ +static NSString * ToggleDrawerIdentifier = @"Toggle Drawer Item Identifier"; +static NSString * StartEncodingIdentifier = @"Start Encoding Item Identifier"; +static NSString * PauseEncodingIdentifier = @"Pause Encoding Item Identifier"; +static NSString * ShowQueueIdentifier = @"Show Queue Item Identifier"; +static NSString * AddToQueueIdentifier = @"Add to Queue Item Identifier"; +static NSString * ShowPictureIdentifier = @"Show Picture Window Item Identifier"; +static NSString * ShowPreviewIdentifier = @"Show Preview Window Item Identifier"; +static NSString * ShowActivityIdentifier = @"Debug Output Item Identifier"; +static NSString * ChooseSourceIdentifier = @"Choose Source Item Identifier"; + + +/******************************* + * HBController implementation * + *******************************/ +@implementation HBController + ++ (unsigned int) maximumNumberOfAllowedAudioTracks { return maximumNumberOfAllowedAudioTracks; } + +- (id)init +{ + self = [super init]; + if( !self ) + { + return nil; + } + + fApplicationIcon = [[NSImage alloc] initWithContentsOfFile:[[NSBundle mainBundle] pathForImageResource:@"HandBrake.icns"]]; + + if( fApplicationIcon != nil ) + [NSApp setApplicationIconImage:fApplicationIcon]; + + [HBPreferencesController registerUserDefaults]; + fHandle = NULL; + fQueueEncodeLibhb = NULL; + /* Check for check for the app support directory here as + * outputPanel needs it right away, as may other future methods + */ + NSString *libraryDir = [NSSearchPathForDirectoriesInDomains( NSLibraryDirectory, + NSUserDomainMask, + YES ) objectAtIndex:0]; + AppSupportDirectory = [[libraryDir stringByAppendingPathComponent:@"Application Support"] + stringByAppendingPathComponent:@"HandBrake"]; + if( ![[NSFileManager defaultManager] fileExistsAtPath:AppSupportDirectory] ) + { + [[NSFileManager defaultManager] createDirectoryAtPath:AppSupportDirectory + attributes:nil]; + } + /* Check for and create the App Support Preview directory if necessary */ + NSString *PreviewDirectory = [AppSupportDirectory stringByAppendingPathComponent:@"Previews"]; + if( ![[NSFileManager defaultManager] fileExistsAtPath:PreviewDirectory] ) + { + [[NSFileManager defaultManager] createDirectoryAtPath:PreviewDirectory + attributes:nil]; + } + outputPanel = [[HBOutputPanelController alloc] init]; + fPictureController = [[PictureController alloc] init]; + fQueueController = [[HBQueueController alloc] init]; + fAdvancedOptions = [[HBAdvancedController alloc] init]; + /* we init the HBPresets class which currently is only used + * for updating built in presets, may move more functionality + * there in the future + */ + fPresetsBuiltin = [[HBPresets alloc] init]; + fPreferencesController = [[HBPreferencesController alloc] init]; + /* Lets report the HandBrake version number here to the activity log and text log file */ + NSString *versionStringFull = [[NSString stringWithFormat: @"Handbrake Version: %@", [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"]] stringByAppendingString: [NSString stringWithFormat: @" (%@)", [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"]]]; + [self writeToActivityLog: "%s", [versionStringFull UTF8String]]; + + /* Load the dockTile and instiante initial text fields */ + dockTile = [[NSApplication sharedApplication] dockTile]; + NSImageView *iv = [[NSImageView alloc] init]; + [iv setImage:[[NSApplication sharedApplication] applicationIconImage]]; + [dockTile setContentView:iv]; + + /* We can move the specific values out from here by subclassing NSDockTile and package everything in here */ + /* If colors are to be chosen once and for all, we can also remove the instantiation with numerical values */ + percentField = [[DockTextField alloc] initWithFrame:NSMakeRect(0.0f, 32.0f, [dockTile size].width, 30.0f)]; + [percentField changeGradientColors:[NSColor colorWithDeviceRed:0.4f green:0.6f blue:0.4f alpha:1.0f] endColor:[NSColor colorWithDeviceRed:0.2f green:0.4f blue:0.2f alpha:1.0f]]; + [iv addSubview:percentField]; + + timeField = [[DockTextField alloc] initWithFrame:NSMakeRect(0.0f, 0.0f, [dockTile size].width, 30.0f)]; + [timeField changeGradientColors:[NSColor colorWithDeviceRed:0.6f green:0.4f blue:0.4f alpha:1.0f] endColor:[NSColor colorWithDeviceRed:0.4f green:0.2f blue:0.2f alpha:1.0f]]; + [iv addSubview:timeField]; + + [self updateDockIcon:-1.0 withETA:@""]; + + /* + * initialize fX264PresetsUnparsedUTF8String as early as possible + * avoids an invalid free + */ + fX264PresetsUnparsedUTF8String = NULL; + + return self; +} + +// This method is triggered at launch (and every launch) whether or not +// files have been dragged on to the dockTile. As a consequence, [self openFiles] +// contains the logic to detect the case when no files has been drop on the dock +- (void)application:(NSApplication *)sender openFiles:(NSArray *)filenames +{ + [self openFiles:filenames]; + + [NSApp replyToOpenOrPrint:NSApplicationDelegateReplySuccess]; +} + +- (void)openFiles:(NSArray*)filenames +{ + if (filenames.count == 1 && [[filenames objectAtIndex:0] isEqual:@"YES"]) + return; + + NSMutableArray* filesList = [[NSMutableArray alloc] initWithArray:filenames]; + [filesList removeObject:@"YES"]; + + // For now, we just want to accept one file at a time + // If for any reason, more than one file is submitted, we will take the first one + if (filesList.count > 1) + { + filesList = [NSMutableArray arrayWithObject:[filesList objectAtIndex:0]]; + } + + // The goal of this check is to know if the application was running before the drag & drop + // if fSubtitlesDelegate is set, then applicationDidFinishLaunching was called + if (fSubtitlesDelegate) + { + // Handbrake was already running when the user dropped the file(s) + // So we get unstack the first one and launch the scan + // The other ones remain in the UserDefaults, and will be handled in the updateUI method + // when Handbrake is idle + id firstItem = [filesList objectAtIndex:0]; + [filesList removeObjectAtIndex:0]; + + // This variable has only one goal, let the updateUI knows that even if idling + // maybe a scan is in preparation + fWillScan = YES; + + if (filesList.count > 0) + { + [[NSUserDefaults standardUserDefaults] setObject:filesList forKey:dragDropFiles]; + } + else + { + [[NSUserDefaults standardUserDefaults] removeObjectForKey:dragDropFiles]; + } + + [browsedSourceDisplayName release]; + browsedSourceDisplayName = [[firstItem lastPathComponent] retain]; + [self performScan:firstItem scanTitleNum:0]; + } + else + { + // Handbrake was not running before the user dropped the file(s) + // So we save the file(s) list in the UserDefaults and we will read them + // in the applicationDidFinishLaunching method + [[NSUserDefaults standardUserDefaults] setObject:filesList forKey:dragDropFiles]; + } +} + +- (void) applicationDidFinishLaunching: (NSNotification *) notification +{ + /* Init libhb with check for updates libhb style set to "0" so its ignored and lets sparkle take care of it */ + int loggingLevel = [[[NSUserDefaults standardUserDefaults] objectForKey:@"LoggingLevel"] intValue]; + fHandle = hb_init(loggingLevel, 0); + /* Optional dvd nav UseDvdNav*/ + hb_dvd_set_dvdnav([[[NSUserDefaults standardUserDefaults] objectForKey:@"UseDvdNav"] boolValue]); + /* Init a separate instance of libhb for user scanning and setting up jobs */ + fQueueEncodeLibhb = hb_init(loggingLevel, 0); + + // Set the Growl Delegate + [GrowlApplicationBridge setGrowlDelegate: self]; + /* Init others controllers */ + [fPictureController SetHandle: fHandle]; + [fPictureController setHBController: self]; + + [fQueueController setHandle: fQueueEncodeLibhb]; + [fQueueController setHBController: self]; + + fChapterTitlesDelegate = [[ChapterTitles alloc] init]; + [fChapterTable setDataSource:fChapterTitlesDelegate]; + [fChapterTable setDelegate:fChapterTitlesDelegate]; + + /* setup the subtitles delegate and connections to table */ + fSubtitlesDelegate = [[HBSubtitles alloc] init]; + [fSubtitlesTable setDataSource:fSubtitlesDelegate]; + [fSubtitlesTable setDelegate:fSubtitlesDelegate]; + [fSubtitlesTable setRowHeight:25.0]; + + /* setup the audio controller */ + [fAudioDelegate setHBController: self]; + [[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(autoSetM4vExtension:) name: HBMixdownChangedNotification object: nil]; + + [fPresetsOutlineView setAutosaveName:@"Presets View"]; + [fPresetsOutlineView setAutosaveExpandedItems:YES]; + + dockIconProgress = 0; + + /* Init QueueFile .plist */ + [self loadQueueFile]; + /* Run hbInstances to get any info on other instances as well as set the + * pid number for this instance in the case of multi-instance encoding. */ + hbInstanceNum = [self hbInstances]; + + /* If we are a single instance it is safe to clean up the previews if there are any + * left over. This is a bit of a kludge but will prevent a build up of old instance + * live preview cruft. No danger of removing an active preview directory since they + * are created later in HBPreviewController if they don't exist at the moment a live + * preview encode is initiated. */ + if (hbInstanceNum == 1) + { + NSString *PreviewDirectory = [NSString stringWithFormat:@"~/Library/Application Support/HandBrake/Previews"]; + PreviewDirectory = [PreviewDirectory stringByExpandingTildeInPath]; + NSError *error; + NSArray *files = [ [NSFileManager defaultManager] contentsOfDirectoryAtPath: PreviewDirectory error: &error ]; + for( NSString *file in files ) + { + if( file != @"." && file != @".." ) + { + [ [NSFileManager defaultManager] removeItemAtPath: [ PreviewDirectory stringByAppendingPathComponent: file ] error: &error ]; + if( error ) + { + //an error occurred + [self writeToActivityLog: "Could not remove existing preview at : %s",[file UTF8String] ]; + } + } + } + + } + + + + /* Call UpdateUI every 1/2 sec */ + + [[NSRunLoop currentRunLoop] addTimer:[NSTimer + scheduledTimerWithTimeInterval:0.5 + target:self + selector:@selector(updateUI:) + userInfo:nil repeats:YES] + forMode:NSDefaultRunLoopMode]; + + + // Open debug output window now if it was visible when HB was closed + if ([[NSUserDefaults standardUserDefaults] boolForKey:@"OutputPanelIsOpen"]) + [self showDebugOutputPanel:nil]; + + // Open queue window now if it was visible when HB was closed + if ([[NSUserDefaults standardUserDefaults] boolForKey:@"QueueWindowIsOpen"]) + [self showQueueWindow:nil]; + + [self openMainWindow:nil]; + + /* We have to set the bool to tell hb what to do after a scan + * Initially we set it to NO until we start processing the queue + */ + applyQueueToScan = NO; + + // We try to get the list of filenames that may have been drag & drop before the application was running + id dragDropFilesId = [[NSUserDefaults standardUserDefaults] objectForKey:dragDropFiles]; + + /* Now we re-check the queue array to see if there are + * any remaining encodes to be done in it and ask the + * user if they want to reload the queue */ + if ([QueueFileArray count] > 0) + { + /* run getQueueStats to see whats in the queue file */ + [self getQueueStats]; + /* this results in these values + * fEncodingQueueItem = 0; + * fPendingCount = 0; + * fCompletedCount = 0; + * fCanceledCount = 0; + * fWorkingCount = 0; + */ + + /*On Screen Notification*/ + NSString * alertTitle; + + /* We check to see if there is already another instance of hb running. + * Note: hbInstances == 1 means we are the only instance of HandBrake.app + */ + if (hbInstanceNum > 1) + { + alertTitle = [NSString stringWithFormat: + NSLocalizedString(@"There is already an instance of HandBrake running.", @"")]; + NSBeginCriticalAlertSheet( + alertTitle, + NSLocalizedString(@"Reload Queue", nil), + nil, + nil, + fWindow, self, + nil, @selector(didDimissReloadQueue:returnCode:contextInfo:), nil, + NSLocalizedString(@" HandBrake will now load up the existing queue.", nil)); + } + else + { + if (fWorkingCount > 0 || fPendingCount > 0) + { + if (fWorkingCount > 0) + { + alertTitle = [NSString stringWithFormat: + NSLocalizedString(@"HandBrake Has Detected %d Previously Encoding Item(s) and %d Pending Item(s) In Your Queue.", @""), + fWorkingCount,fPendingCount]; + } + else + { + alertTitle = [NSString stringWithFormat: + NSLocalizedString(@"HandBrake Has Detected %d Pending Item(s) In Your Queue.", @""), + fPendingCount]; + } + + NSBeginCriticalAlertSheet( + alertTitle, + NSLocalizedString(@"Reload Queue", nil), + nil, + NSLocalizedString(@"Empty Queue", nil), + fWindow, self, + nil, @selector(didDimissReloadQueue:returnCode:contextInfo:), nil, + NSLocalizedString(@" Do you want to reload them ?", nil)); + + // After handling the previous queue (reload or empty), if there is files waiting for scanning + // we will process them + if (dragDropFilesId) + { + NSArray *dragDropFiles = (NSArray *)dragDropFilesId; + [self openFiles:dragDropFiles]; + } + } + else + { + // We will open the source window only if there is no dropped files waiting to be scanned + if (dragDropFilesId) + { + NSArray *dragDropFiles = (NSArray *)dragDropFilesId; + [self openFiles:dragDropFiles]; + } + else + { + /* Since we addressed any pending or previously encoding items above, we go ahead and make sure + * the queue is empty of any finished items or cancelled items */ + [self clearQueueAllItems]; + /* We show whichever open source window specified in LaunchSourceBehavior preference key */ + if ([[[NSUserDefaults standardUserDefaults] stringForKey:@"LaunchSourceBehavior"] isEqualToString: @"Open Source"]) + { + [self browseSources:nil]; + } + + if ([[[NSUserDefaults standardUserDefaults] stringForKey:@"LaunchSourceBehavior"] isEqualToString: @"Open Source (Title Specific)"]) + { + [self browseSources:(id)fOpenSourceTitleMMenu]; + } + } + } + + } + } + // We will open the source window only if there is no dropped files waiting to be scanned + else if (dragDropFilesId) + { + NSArray *dragDropFiles = (NSArray *)dragDropFilesId; + [self openFiles:dragDropFiles]; + } + else + { + /* We show whichever open source window specified in LaunchSourceBehavior preference key */ + if ([[[NSUserDefaults standardUserDefaults] stringForKey:@"LaunchSourceBehavior"] isEqualToString: @"Open Source"]) + { + [self browseSources:nil]; + } + + if ([[[NSUserDefaults standardUserDefaults] stringForKey:@"LaunchSourceBehavior"] isEqualToString: @"Open Source (Title Specific)"]) + { + [self browseSources:(id)fOpenSourceTitleMMenu]; + } + } + currentQueueEncodeNameString = @""; +} + +#pragma mark - +#pragma mark Multiple Instances + +/* hbInstances checks to see if other instances of HB are running and also sets the pid for this instance for multi-instance queue encoding */ + + /* Note for now since we are in early phases of multi-instance I have put in quite a bit of logging. Can be removed as we see fit. */ +- (int) hbInstances +{ + /* check to see if another instance of HandBrake.app is running */ + NSArray *runningAppDictionaries = [[NSWorkspace sharedWorkspace] launchedApplications]; + NSDictionary *runningAppsDictionary; + int hbInstances = 0; + NSString * thisInstanceAppPath = [[NSBundle mainBundle] bundlePath]; + NSString * runningInstanceAppPath; + int runningInstancePidNum; + [self writeToActivityLog: "hbInstances path to this instance: %s", [thisInstanceAppPath UTF8String]]; + for (runningAppsDictionary in runningAppDictionaries) + { + if ([[runningAppsDictionary valueForKey:@"NSApplicationName"] isEqualToString:@"HandBrake"]) + { + /*Report the path to each active instances app path */ + runningInstancePidNum = [[runningAppsDictionary valueForKey:@"NSApplicationProcessIdentifier"] intValue]; + runningInstanceAppPath = [runningAppsDictionary valueForKey:@"NSApplicationPath"]; + [self writeToActivityLog: "hbInstance found instance pidnum:%d at path: %s", runningInstancePidNum, [runningInstanceAppPath UTF8String]]; + /* see if this is us by comparing the app path */ + if ([runningInstanceAppPath isEqualToString: thisInstanceAppPath]) + { + /* If so this is our pidnum */ + [self writeToActivityLog: "hbInstance MATCH FOUND, our pidnum is:%d", runningInstancePidNum]; + /* Get the PID number for this hb instance, used in multi instance encoding */ + pidNum = runningInstancePidNum; + /* Report this pid to the activity log */ + [self writeToActivityLog: "Pid for this instance:%d", pidNum]; + /* Tell fQueueController what our pidNum is */ + [fQueueController setPidNum:pidNum]; + } + hbInstances++; + } + } + return hbInstances; +} + +- (int) getPidnum +{ + return pidNum; +} + +#pragma mark - +#pragma mark Drag & drop handling + +// This method is used by OSX to know what kind of files can be drag & drop on the NSWindow +// We only want filenames (and so folders too) +- (NSDragOperation)draggingEntered:(id )sender +{ + NSPasteboard *pboard = [sender draggingPasteboard]; + + if ([[pboard types] containsObject:NSFilenamesPboardType]) + { + NSArray *paths = [pboard propertyListForType:NSFilenamesPboardType]; + return paths.count == 1 ? NSDragOperationGeneric : NSDragOperationNone; + } + + return NSDragOperationNone; +} + +// This method is doing the job after the drag & drop operation has been validated by [self draggingEntered] and OSX +- (BOOL)performDragOperation:(id )sender +{ + NSPasteboard *pboard; + + pboard = [sender draggingPasteboard]; + + if ([[pboard types] containsObject:NSFilenamesPboardType]) + { + NSArray *paths = [pboard propertyListForType:NSFilenamesPboardType]; + + if (paths.count > 0) + { + // For now, we just want to accept one file at a time + // If for any reason, more than one file is submitted, we will take the first one + NSArray *reducedPaths = [NSArray arrayWithObject:[paths objectAtIndex:0]]; + paths = reducedPaths; + } + + [self openFiles:paths]; + } + + return YES; +} + +#pragma mark - + +- (void) didDimissReloadQueue: (NSWindow *)sheet returnCode: (int)returnCode contextInfo: (void *)contextInfo +{ + + [self writeToActivityLog: "didDimissReloadQueue number of hb instances:%d", hbInstanceNum]; + if (returnCode == NSAlertOtherReturn) + { + [self writeToActivityLog: "didDimissReloadQueue NSAlertOtherReturn Chosen"]; + [self clearQueueAllItems]; + + /* We show whichever open source window specified in LaunchSourceBehavior preference key */ + if ([[[NSUserDefaults standardUserDefaults] stringForKey:@"LaunchSourceBehavior"] isEqualToString: @"Open Source"]) + { + [self browseSources:nil]; + } + + if ([[[NSUserDefaults standardUserDefaults] stringForKey:@"LaunchSourceBehavior"] isEqualToString: @"Open Source (Title Specific)"]) + { + [self browseSources:(id)fOpenSourceTitleMMenu]; + } + } + else + { + [self writeToActivityLog: "didDimissReloadQueue First Button Chosen"]; + if (hbInstanceNum == 1) + { + + [self setQueueEncodingItemsAsPending]; + } + [self showQueueWindow:NULL]; + } +} + +- (NSApplicationTerminateReply) applicationShouldTerminate: (NSApplication *) app +{ + + + hb_state_t s; + hb_get_state( fQueueEncodeLibhb, &s ); + + if ( s.state != HB_STATE_IDLE ) + { + int result = NSRunCriticalAlertPanel( + NSLocalizedString(@"Are you sure you want to quit HandBrake?", nil), + NSLocalizedString(@"If you quit HandBrake your current encode will be reloaded into your queue at next launch. Do you want to quit anyway?", nil), + NSLocalizedString(@"Quit", nil), NSLocalizedString(@"Don't Quit", nil), nil, @"A movie" ); + + if (result == NSAlertDefaultReturn) + { + return NSTerminateNow; + } + else + return NSTerminateCancel; + } + + // Warn if items still in the queue + else if ( fPendingCount > 0 ) + { + int result = NSRunCriticalAlertPanel( + NSLocalizedString(@"Are you sure you want to quit HandBrake?", nil), + NSLocalizedString(@"There are pending encodes in your queue. Do you want to quit anyway?",nil), + NSLocalizedString(@"Quit", nil), NSLocalizedString(@"Don't Quit", nil), nil); + + if ( result == NSAlertDefaultReturn ) + return NSTerminateNow; + else + return NSTerminateCancel; + } + + return NSTerminateNow; +} + +- (void)applicationWillTerminate:(NSNotification *)aNotification +{ + // When the application is closed and we still have some files in the dragDropFiles array + // it's highly probable that the user throw a lot of files and just want to reset this + [[NSUserDefaults standardUserDefaults] removeObjectForKey:dragDropFiles]; + + [currentQueueEncodeNameString release]; + [browsedSourceDisplayName release]; + [outputPanel release]; + [fQueueController release]; + [fPreviewController release]; + [fPictureController release]; + [fApplicationIcon release]; + + hb_close(&fHandle); + hb_close(&fQueueEncodeLibhb); + hb_global_close(); + +} + + +- (void) awakeFromNib +{ + [fWindow center]; + [fWindow setExcludedFromWindowsMenu:NO]; + + [fAdvancedOptions setView:fAdvancedView]; + + /* lets setup our presets drawer for drag and drop here */ + [fPresetsOutlineView registerForDraggedTypes: [NSArray arrayWithObject:DragDropSimplePboardType] ]; + [fPresetsOutlineView setDraggingSourceOperationMask:NSDragOperationEvery forLocal:YES]; + [fPresetsOutlineView setVerticalMotionCanBeginDrag: YES]; + + /* Initialize currentScanCount so HB can use it to + evaluate successive scans */ + currentScanCount = 0; + + + /* Init UserPresets .plist */ + [self loadPresets]; + + fRipIndicatorShown = NO; // initially out of view in the nib + + /* For 64 bit builds, the threaded animation in the progress + * indicators conflicts with the animation in the advanced tab + * for reasons not completely clear. jbrjake found a note in the + * 10.5 dev notes regarding this possiblility. It was also noted + * that unless specified, setUsesThreadedAnimation defaults to true. + * So, at least for now we set the indicator animation to NO for + * both the scan and regular progress indicators for both 32 and 64 bit + * as it test out fine on both and there is no reason our progress indicators + * should require their own thread. + */ + + [fScanIndicator setUsesThreadedAnimation:NO]; + [fRipIndicator setUsesThreadedAnimation:NO]; + + + + /* Show/Dont Show Presets drawer upon launch based + on user preference DefaultPresetsDrawerShow*/ + if( [[NSUserDefaults standardUserDefaults] boolForKey:@"DefaultPresetsDrawerShow"] > 0 ) + { + [fPresetDrawer setDelegate:self]; + NSSize drawerSize = NSSizeFromString( [[NSUserDefaults standardUserDefaults] + stringForKey:@"Drawer Size"] ); + if( drawerSize.width ) + [fPresetDrawer setContentSize: drawerSize]; + [fPresetDrawer open]; + } + + /* Initially set the dvd angle widgets to hidden (dvdnav only) */ + [fSrcAngleLabel setHidden:YES]; + [fSrcAnglePopUp setHidden:YES]; + + /* Setup the start / stop popup */ + [fEncodeStartStopPopUp removeAllItems]; + [fEncodeStartStopPopUp addItemWithTitle: @"Chapters"]; + [fEncodeStartStopPopUp addItemWithTitle: @"Seconds"]; + [fEncodeStartStopPopUp addItemWithTitle: @"Frames"]; + /* Align the start / stop widgets with the chapter popups */ + [fSrcTimeStartEncodingField setFrameOrigin:[fSrcChapterStartPopUp frame].origin]; + [fSrcTimeEndEncodingField setFrameOrigin:[fSrcChapterEndPopUp frame].origin]; + + [fSrcFrameStartEncodingField setFrameOrigin:[fSrcChapterStartPopUp frame].origin]; + [fSrcFrameEndEncodingField setFrameOrigin:[fSrcChapterEndPopUp frame].origin]; + + /* Destination box*/ + NSMenuItem *menuItem; + [fDstFormatPopUp removeAllItems]; + // MP4 file + menuItem = [[fDstFormatPopUp menu] addItemWithTitle:@"MP4 file" action: NULL keyEquivalent: @""]; + [menuItem setTag: HB_MUX_MP4]; + // MKV file + menuItem = [[fDstFormatPopUp menu] addItemWithTitle:@"MKV file" action: NULL keyEquivalent: @""]; + [menuItem setTag: HB_MUX_MKV]; + + [fDstFormatPopUp selectItemAtIndex: 0]; + + [self formatPopUpChanged:nil]; + + /* We enable the create chapters checkbox here since we are .mp4 */ + [fCreateChapterMarkers setEnabled: YES]; + if ([fDstFormatPopUp indexOfSelectedItem] == 0 && [[NSUserDefaults standardUserDefaults] boolForKey:@"DefaultChapterMarkers"] > 0) + { + [fCreateChapterMarkers setState: NSOnState]; + } + + + + + [fDstFile2Field setStringValue: [NSString stringWithFormat: + @"%@/Desktop/Movie.mp4", NSHomeDirectory()]]; + + /* Video encoder */ + [fVidEncoderPopUp removeAllItems]; + [fVidEncoderPopUp addItemWithTitle: @"FFmpeg"]; + + /* setup our x264 presets widgets - this only needs to be done once */ + [self setupX264PresetsWidgets: nil]; + + /* Video quality */ + [fVidBitrateField setIntValue: 1000]; + [fVidQualityMatrix selectCell: fVidBitrateCell]; + [self videoMatrixChanged:nil]; + + /* Video framerate */ + [fVidRatePopUp removeAllItems]; + [fVidRatePopUp addItemWithTitle: NSLocalizedString( @"Same as source", @"" )]; + for( int i = 0; i < hb_video_rates_count; i++ ) + { + if ([[NSString stringWithUTF8String: hb_video_rates[i].string] isEqualToString: [NSString stringWithFormat: @"%.3f",23.976]]) + { + [fVidRatePopUp addItemWithTitle:[NSString stringWithFormat: @"%@%@", + [NSString stringWithUTF8String: hb_video_rates[i].string], @" (NTSC Film)"]]; + } + else if ([[NSString stringWithUTF8String: hb_video_rates[i].string] isEqualToString: [NSString stringWithFormat: @"%d",25]]) + { + [fVidRatePopUp addItemWithTitle:[NSString stringWithFormat: @"%@%@", + [NSString stringWithUTF8String: hb_video_rates[i].string], @" (PAL Film/Video)"]]; + } + else if ([[NSString stringWithUTF8String: hb_video_rates[i].string] isEqualToString: [NSString stringWithFormat: @"%.2f",29.97]]) + { + [fVidRatePopUp addItemWithTitle:[NSString stringWithFormat: @"%@%@", + [NSString stringWithUTF8String: hb_video_rates[i].string], @" (NTSC Video)"]]; + } + else + { + [fVidRatePopUp addItemWithTitle: + [NSString stringWithUTF8String: hb_video_rates[i].string]]; + } + } + [fVidRatePopUp selectItemAtIndex: 0]; + + /* Set Auto Crop to On at launch */ + [fPictureController setAutoCrop:YES]; + + /* Bottom */ + [fStatusField setStringValue: @""]; + + [self enableUI: NO]; + [self setupToolbar]; + + /* We disable the Turbo 1st pass checkbox since we are not x264 */ + [fVidTurboPassCheck setEnabled: NO]; + [fVidTurboPassCheck setState: NSOffState]; + + /* Auto Passthru advanced options box */ + [fAudioAutoPassthruBox setHidden:NO]; + + + /* lets get our default prefs here */ + [self getDefaultPresets:nil]; + /* lets initialize the current successful scancount here to 0 */ + currentSuccessfulScanCount = 0; + + /* Register HBController's Window as a receiver for files/folders drag & drop operations */ + [fWindow registerForDraggedTypes:[NSArray arrayWithObject:NSFilenamesPboardType]]; +} + +- (void) enableUI: (bool) b +{ + NSControl * controls[] = + { + fSrcTitleField, fSrcTitlePopUp, + fSrcChapterField, fSrcChapterStartPopUp, fSrcChapterToField, + fSrcChapterEndPopUp, fSrcDuration1Field, fSrcDuration2Field, + fDstFormatField, fDstFormatPopUp, fDstFile1Field, fDstFile2Field, + fDstBrowseButton, fVidRateField, fVidRatePopUp, fVidEncoderField, + fVidEncoderPopUp, fVidQualityField, fVidQualityMatrix, + fPictureSettingsField, fPictureFiltersField, + fSubField, fSubPopUp, fPresetsAdd, fPresetsDelete, fSrcAngleLabel, + fSrcAnglePopUp, fCreateChapterMarkers, fVidTurboPassCheck, + fDstMp4LargeFileCheck, fSubForcedCheck, fPresetsOutlineView, + fDstMp4HttpOptFileCheck, fDstMp4iPodFileCheck, fVidQualityRFField, + fVidQualityRFLabel, fEncodeStartStopPopUp, fSrcTimeStartEncodingField, + fSrcTimeEndEncodingField, fSrcFrameStartEncodingField, + fSrcFrameEndEncodingField, fLoadChaptersButton, fSaveChaptersButton, + fFramerateMatrix, + + }; + for (unsigned i = 0; i < (sizeof(controls) / sizeof(NSControl*)); i++) + { + if ([[controls[i] className] isEqualToString: @"NSTextField"]) + { + NSTextField *tf = (NSTextField*)controls[i]; + if (![tf isBezeled]) + { + [tf setTextColor: (b ? + [NSColor controlTextColor] : + [NSColor disabledControlTextColor])]; + continue; + } + } + [controls[i] setEnabled: b]; + } + + + if (b) + { + + /* we also call calculatePictureSizing here to sense check if we already have vfr selected */ + [self calculatePictureSizing:nil]; + /* Also enable the preview window hud controls */ + [fPictureController enablePreviewHudControls]; + } + else + { + + [fPresetsOutlineView setEnabled: NO]; + [fPictureController disablePreviewHudControls]; + } + + [self videoMatrixChanged:nil]; + [self enableX264Widgets:b]; +} + + +/*********************************************************************** + * updateDockIcon + *********************************************************************** + * Updates two DockTextFields on the dockTile, + * one with total percentage, the other one with the ETA. + * The ETA string is formated by the callers + **********************************************************************/ +- (void) updateDockIcon: (double) progress withETA:(NSString*)etaStr +{ + if (progress < 0.0 || progress > 1.0) + { + [percentField setHidden:YES]; + [timeField setHidden:YES]; + } + else + { + [percentField setTextToDisplay:[NSString stringWithFormat:dockTilePercentFormat,progress * 100]]; + [percentField setHidden:NO]; + [timeField setTextToDisplay:etaStr]; + [timeField setHidden:NO]; + } + + [dockTile display]; +} + +- (void) updateUI: (NSTimer *) timer +{ + + /* Update UI for fHandle (user scanning instance of libhb ) */ + + hb_list_t * list; + list = hb_get_titles( fHandle ); + /* check to see if there has been a new scan done + this bypasses the constraints of HB_STATE_WORKING + not allowing setting a newly scanned source */ + int checkScanCount = hb_get_scancount( fHandle ); + if( checkScanCount > currentScanCount ) + { + currentScanCount = checkScanCount; + [fScanIndicator setIndeterminate: NO]; + [fScanIndicator setDoubleValue: 0.0]; + [fScanIndicator setHidden: YES]; + [fScanHorizontalLine setHidden: NO]; + + [self showNewScan:nil]; + } + + hb_state_t s; + hb_get_state( fHandle, &s ); + + switch( s.state ) + { + case HB_STATE_IDLE: + break; +#define p s.param.scanning + case HB_STATE_SCANNING: + { + if( p.preview_cur ) + { + [fSrcDVD2Field setStringValue: [NSString stringWithFormat: + NSLocalizedString( @"Scanning title %d of %d, preview %d…", @"" ), + p.title_cur, p.title_count, + p.preview_cur]]; + } + else + { + [fSrcDVD2Field setStringValue: [NSString stringWithFormat: + NSLocalizedString( @"Scanning title %d of %d…", @"" ), + p.title_cur, p.title_count]]; + } + [fScanIndicator setHidden: NO]; + [fScanHorizontalLine setHidden: YES]; + [fScanIndicator setDoubleValue: 100.0 * p.progress]; + break; + } +#undef p + +#define p s.param.scandone + case HB_STATE_SCANDONE: + { + [fScanIndicator setIndeterminate: NO]; + [fScanIndicator setDoubleValue: 0.0]; + [fScanIndicator setHidden: YES]; + [fScanHorizontalLine setHidden: NO]; + [self writeToActivityLog:"ScanDone state received from fHandle"]; + [self showNewScan:nil]; + [[fWindow toolbar] validateVisibleItems]; + + break; + } +#undef p + +#define p s.param.working + case HB_STATE_WORKING: + { + + break; + } +#undef p + +#define p s.param.muxing + case HB_STATE_MUXING: + { + + break; + } +#undef p + + case HB_STATE_PAUSED: + break; + + case HB_STATE_WORKDONE: + { + break; + } + } + + + /* Update UI for fQueueEncodeLibhb */ + // hb_list_t * list; + // list = hb_get_titles( fQueueEncodeLibhb ); //fQueueEncodeLibhb + /* check to see if there has been a new scan done + this bypasses the constraints of HB_STATE_WORKING + not allowing setting a newly scanned source */ + + checkScanCount = hb_get_scancount( fQueueEncodeLibhb ); + if( checkScanCount > currentScanCount ) + { + currentScanCount = checkScanCount; + } + + //hb_state_t s; + hb_get_state( fQueueEncodeLibhb, &s ); + + switch( s.state ) + { + case HB_STATE_IDLE: + break; +#define p s.param.scanning + case HB_STATE_SCANNING: + { + NSString *scan_status; + if( p.preview_cur ) + { + scan_status = [NSString stringWithFormat: + NSLocalizedString( @"Queue Scanning title %d of %d, preview %d…", @"" ), + p.title_cur, p.title_count, p.preview_cur]; + } + else + { + scan_status = [NSString stringWithFormat: + NSLocalizedString( @"Queue Scanning title %d of %d…", @"" ), + p.title_cur, p.title_count]; + } + [fStatusField setStringValue: scan_status]; + + /* Set the status string in fQueueController as well */ + [fQueueController setQueueStatusString: scan_status]; + break; + } +#undef p + +#define p s.param.scandone + case HB_STATE_SCANDONE: + { + [self writeToActivityLog:"ScanDone state received from fQueueEncodeLibhb"]; + [self processNewQueueEncode]; + [[fWindow toolbar] validateVisibleItems]; + + break; + } +#undef p + + +#define p s.param.working + + case HB_STATE_SEARCHING: + { + NSMutableString * string; + NSString * pass_desc; + + /* Update text field */ + pass_desc = @""; + //string = [NSMutableString stringWithFormat: + // NSLocalizedString( @"Searching for start point: pass %d %@ of %d, %.2f %%", @"" ), + // p.job_cur, pass_desc, p.job_count, 100.0 * p.progress]; + /* For now, do not announce "pass x of x for the search phase */ + string = [NSMutableString stringWithFormat: + NSLocalizedString( @"Searching for start point… : %.2f %%", @"" ), + 100.0 * p.progress]; + + if( p.seconds > -1 ) + { + [string appendFormat: + NSLocalizedString( @" (ETA %02dh%02dm%02ds)", @"" ), + p.hours, p.minutes, p.seconds]; + } + + [fStatusField setStringValue: string]; + /* Set the status string in fQueueController as well */ + [fQueueController setQueueStatusString: string]; + /* Update slider */ + CGFloat progress_total = ( p.progress + p.job_cur - 1 ) / p.job_count; + [fRipIndicator setIndeterminate: NO]; + [fRipIndicator setDoubleValue:100.0 * progress_total]; + + // If progress bar hasn't been revealed at the bottom of the window, do + // that now. This code used to be in doRip. I moved it to here to handle + // the case where hb_start is called by HBQueueController and not from + // HBController. + if( !fRipIndicatorShown ) + { + NSRect frame = [fWindow frame]; + if( frame.size.width <= 591 ) + frame.size.width = 591; + frame.size.height += 36; + frame.origin.y -= 36; + [fWindow setFrame:frame display:YES animate:YES]; + fRipIndicatorShown = YES; + + } + + /* Update dock icon */ + /* Note not done yet */ + break; + } + + + case HB_STATE_WORKING: + { + NSMutableString * string; + NSString * pass_desc; + /* Update text field */ + if (p.job_cur == 1 && p.job_count > 1) + { + if ([[QueueFileArray objectAtIndex:currentQueueEncodeIndex] objectForKey:@"SubtitleList"] && [[[[[QueueFileArray objectAtIndex:currentQueueEncodeIndex]objectForKey:@"SubtitleList"] objectAtIndex:0] objectForKey:@"subtitleSourceTrackNum"] intValue] == 1) + { + pass_desc = @"(subtitle scan)"; + } + else + { + pass_desc = @""; + } + } + else + { + pass_desc = @""; + } + + + if ([pass_desc length]) + { + string = [NSMutableString stringWithFormat: + NSLocalizedString( @"Encoding: %@ \nPass %d %@ of %d, %.2f %%", @"" ), + currentQueueEncodeNameString, + p.job_cur, pass_desc, p.job_count, 100.0 * p.progress]; + } + else + { + string = [NSMutableString stringWithFormat: + NSLocalizedString( @"Encoding: %@ \nPass %d of %d, %.2f %%", @"" ), + currentQueueEncodeNameString, + p.job_cur, p.job_count, 100.0 * p.progress]; + } + + if( p.seconds > -1 ) + { + if ( p.rate_cur > 0.0 ) + { + [string appendFormat: + NSLocalizedString( @" (%.2f fps, avg %.2f fps, ETA %02dh%02dm%02ds)", @"" ), + p.rate_cur, p.rate_avg, p.hours, p.minutes, p.seconds]; + } + else + { + [string appendFormat: + NSLocalizedString( @" (ETA %02dh%02dm%02ds)", @"" ), + p.hours, p.minutes, p.seconds]; + } + } + [fStatusField setStringValue: string]; + [fQueueController setQueueStatusString:string]; + + /* Update slider */ + CGFloat progress_total = ( p.progress + p.job_cur - 1 ) / p.job_count; + [fRipIndicator setIndeterminate: NO]; + [fRipIndicator setDoubleValue:100.0 * progress_total]; + + // If progress bar hasn't been revealed at the bottom of the window, do + // that now. This code used to be in doRip. I moved it to here to handle + // the case where hb_start is called by HBQueueController and not from + // HBController. + if( !fRipIndicatorShown ) + { + NSRect frame = [fWindow frame]; + if( frame.size.width <= 591 ) + frame.size.width = 591; + frame.size.height += 36; + frame.origin.y -= 36; + [fWindow setFrame:frame display:YES animate:YES]; + fRipIndicatorShown = YES; + + } + + /* Update dock icon */ + if( dockIconProgress < 100.0 * progress_total ) + { + // ETA format is [XX]X:XX:XX when ETA is greater than one hour + // [X]X:XX when ETA is greater than 0 (minutes or seconds) + // When these conditions doesn't applied (eg. when ETA is undefined) + // we show just a tilde (~) + + NSString *etaStr = @""; + if (p.hours > 0) + etaStr = [NSString stringWithFormat:@"%d:%02d:%02d", p.hours, p.minutes, p.seconds]; + else if (p.minutes > 0 || p.seconds > 0) + etaStr = [NSString stringWithFormat:@"%d:%02d", p.minutes, p.seconds]; + else + etaStr = @"~"; + + [self updateDockIcon:progress_total withETA:etaStr]; + + dockIconProgress += dockTileUpdateFrequency; + } + + break; + } +#undef p + +#define p s.param.muxing + case HB_STATE_MUXING: + { + /* Update text field */ + [fStatusField setStringValue: NSLocalizedString( @"Muxing…", @"" )]; + /* Set the status string in fQueueController as well */ + [fQueueController setQueueStatusString: NSLocalizedString( @"Muxing…", @"" )]; + /* Update slider */ + [fRipIndicator setIndeterminate: YES]; + [fRipIndicator startAnimation: nil]; + + /* Update dock icon */ + [self updateDockIcon:1.0 withETA:@""]; + + break; + } +#undef p + + case HB_STATE_PAUSED: + [fStatusField setStringValue: NSLocalizedString( @"Paused", @"" )]; + [fQueueController setQueueStatusString: NSLocalizedString( @"Paused", @"" )]; + + break; + + case HB_STATE_WORKDONE: + { + // HB_STATE_WORKDONE happpens as a result of libhb finishing all its jobs + // or someone calling hb_stop. In the latter case, hb_stop does not clear + // out the remaining passes/jobs in the queue. We'll do that here. + + // Delete all remaining jobs of this encode. + [fStatusField setStringValue: NSLocalizedString( @"Encode Finished.", @"" )]; + /* Set the status string in fQueueController as well */ + [fQueueController setQueueStatusString: NSLocalizedString( @"Encode Finished.", @"" )]; + [fRipIndicator setIndeterminate: NO]; + [fRipIndicator stopAnimation: nil]; + [fRipIndicator setDoubleValue: 0.0]; + [[fWindow toolbar] validateVisibleItems]; + + /* Restore dock icon */ + [self updateDockIcon:-1.0 withETA:@""]; + dockIconProgress = 0; + + if( fRipIndicatorShown ) + { + NSRect frame = [fWindow frame]; + if( frame.size.width <= 591 ) + frame.size.width = 591; + frame.size.height += -36; + frame.origin.y -= -36; + [fWindow setFrame:frame display:YES animate:YES]; + fRipIndicatorShown = NO; + } + /* Since we are done with this encode, tell output to stop writing to the + * individual encode log + */ + [outputPanel endEncodeLog]; + /* Check to see if the encode state has not been cancelled + to determine if we should check for encode done notifications */ + if( fEncodeState != 2 ) + { + NSString *pathOfFinishedEncode; + /* Get the output file name for the finished encode */ + pathOfFinishedEncode = [[QueueFileArray objectAtIndex:currentQueueEncodeIndex] objectForKey:@"DestinationPath"]; + + /* Both the Growl Alert and Sending to MetaX can be done as encodes roll off the queue */ + if ([[[NSUserDefaults standardUserDefaults] stringForKey:@"AlertWhenDone"] isEqualToString: @"Growl Notification"] || + [[[NSUserDefaults standardUserDefaults] stringForKey:@"AlertWhenDone"] isEqualToString: @"Alert Window And Growl"]) + { + /* If Play System Alert has been selected in Preferences */ + if( [[NSUserDefaults standardUserDefaults] boolForKey:@"AlertWhenDoneSound"] == YES ) + { + NSBeep(); + } + [self showGrowlDoneNotification:pathOfFinishedEncode]; + } + + /* Send to MetaX */ + [self sendToMetaX:pathOfFinishedEncode]; + + /* since we have successfully completed an encode, we increment the queue counter */ + [self incrementQueueItemDone:currentQueueEncodeIndex]; + + } + + break; + } + } + + /* Since we can use multiple instance off of the same queue file it is imperative that we keep the QueueFileArray updated off of the QueueFile.plist + * so we go ahead and do it in this existing timer as opposed to using a new one */ + + NSMutableArray * tempQueueArray = [[NSMutableArray alloc] initWithContentsOfFile:QueueFile]; + [QueueFileArray setArray:tempQueueArray]; + [tempQueueArray release]; + /* Send Fresh QueueFileArray to fQueueController to update queue window */ + [fQueueController setQueueArray: QueueFileArray]; + [self getQueueStats]; + + /* Update the visibility of the Auto Passthru advanced options box */ + if ([[NSUserDefaults standardUserDefaults] boolForKey:@"ShowAdvancedOptsForAutoPassthru"] == YES) + { + [fAudioAutoPassthruBox setHidden:NO]; + } + else + { + [fAudioAutoPassthruBox setHidden:YES]; + } + + + // Finally after all UI updates, we look for a next dragDropItem to scan + // fWillScan will signal that a scan will be launched, so we need to wait + // the next idle cycle after the scan + hb_get_state( fHandle, &s ); + if (s.state == HB_STATE_IDLE && !fWillScan) + { + // Continue to loop on the other drag & drop files if any + if ([[NSUserDefaults standardUserDefaults] objectForKey:dragDropFiles]) + { + NSMutableArray *filesList = [[NSMutableArray alloc] initWithArray:[[NSUserDefaults standardUserDefaults] objectForKey:dragDropFiles]]; + + if (filesList.count > 0) + { + // We need to add the previous scan file into the queue (without doing the usual checks) + // Before scanning the new one + [self doAddToQueue]; + + id nextItem = [filesList objectAtIndex:0]; + [filesList removeObjectAtIndex:0]; + + [browsedSourceDisplayName release]; + browsedSourceDisplayName = [[((NSString*)nextItem) lastPathComponent] retain]; + [self performScan:nextItem scanTitleNum:0]; + + if (filesList.count > 0) + { + // Updating the list in the user defaults + [[NSUserDefaults standardUserDefaults] setObject:filesList forKey:dragDropFiles]; + } + else + { + // Cleaning if last one was treated + [[NSUserDefaults standardUserDefaults] removeObjectForKey:dragDropFiles]; + } + } + else + { + [[NSUserDefaults standardUserDefaults] removeObjectForKey:dragDropFiles]; + } + } + } +} + +/* We use this to write messages to stderr from the macgui which show up in the activity window and log*/ +- (void) writeToActivityLog:(const char *) format, ... +{ + va_list args; + va_start(args, format); + if (format != nil) + { + char str[1024]; + vsnprintf( str, 1024, format, args ); + + time_t _now = time( NULL ); + struct tm * now = localtime( &_now ); + fprintf(stderr, "[%02d:%02d:%02d] macgui: %s\n", now->tm_hour, now->tm_min, now->tm_sec, str ); + } + va_end(args); +} + +#pragma mark - +#pragma mark Toolbar +// ============================================================ +// NSToolbar Related Methods +// ============================================================ + +- (void) setupToolbar { + NSToolbar *toolbar = [[[NSToolbar alloc] initWithIdentifier: @"HandBrake Toolbar"] autorelease]; + + [toolbar setAllowsUserCustomization: YES]; + [toolbar setAutosavesConfiguration: YES]; + [toolbar setDisplayMode: NSToolbarDisplayModeIconAndLabel]; + + [toolbar setDelegate: self]; + + [fWindow setToolbar: toolbar]; +} + +- (NSToolbarItem *) toolbar: (NSToolbar *)toolbar itemForItemIdentifier: + (NSString *) itemIdent willBeInsertedIntoToolbar:(BOOL) willBeInserted { + NSToolbarItem * item = [[[NSToolbarItem alloc] initWithItemIdentifier: itemIdent] autorelease]; + + if ([itemIdent isEqualToString: ToggleDrawerIdentifier]) + { + [item setLabel: @"Toggle Presets"]; + [item setPaletteLabel: @"Toggler Presets"]; + [item setToolTip: @"Open/Close Preset Drawer"]; + [item setImage: [NSImage imageNamed: @"presets"]]; + [item setTarget: self]; + [item setAction: @selector(toggleDrawer:)]; + [item setAutovalidates: NO]; + } + else if ([itemIdent isEqualToString: StartEncodingIdentifier]) + { + [item setLabel: @"Start"]; + [item setPaletteLabel: @"Start Encoding"]; + [item setToolTip: @"Start Encoding"]; + [item setImage: [NSImage imageNamed: @"encode"]]; + [item setTarget: self]; + [item setAction: @selector(Rip:)]; + } + else if ([itemIdent isEqualToString: ShowQueueIdentifier]) + { + [item setLabel: @"Show Queue"]; + [item setPaletteLabel: @"Show Queue"]; + [item setToolTip: @"Show Queue"]; + [item setImage: [NSImage imageNamed: @"showqueue"]]; + [item setTarget: self]; + [item setAction: @selector(showQueueWindow:)]; + [item setAutovalidates: NO]; + } + else if ([itemIdent isEqualToString: AddToQueueIdentifier]) + { + [item setLabel: @"Add to Queue"]; + [item setPaletteLabel: @"Add to Queue"]; + [item setToolTip: @"Add to Queue"]; + [item setImage: [NSImage imageNamed: @"addqueue"]]; + [item setTarget: self]; + [item setAction: @selector(addToQueue:)]; + } + else if ([itemIdent isEqualToString: PauseEncodingIdentifier]) + { + [item setLabel: @"Pause"]; + [item setPaletteLabel: @"Pause Encoding"]; + [item setToolTip: @"Pause Encoding"]; + [item setImage: [NSImage imageNamed: @"pauseencode"]]; + [item setTarget: self]; + [item setAction: @selector(Pause:)]; + } + else if ([itemIdent isEqualToString: ShowPictureIdentifier]) + { + [item setLabel: @"Picture Settings"]; + [item setPaletteLabel: @"Show Picture Settings"]; + [item setToolTip: @"Show Picture Settings"]; + [item setImage: [NSImage imageNamed: @"picturesettings"]]; + [item setTarget: self]; + [item setAction: @selector(showPicturePanel:)]; + } + else if ([itemIdent isEqualToString: ShowPreviewIdentifier]) + { + [item setLabel: @"Preview Window"]; + [item setPaletteLabel: @"Show Preview"]; + [item setToolTip: @"Show Preview"]; + //[item setImage: [NSImage imageNamed: @"pref-picture"]]; + [item setImage: [NSImage imageNamed: @"preview"]]; + [item setTarget: self]; + [item setAction: @selector(showPreviewWindow:)]; + } + else if ([itemIdent isEqualToString: ShowActivityIdentifier]) + { + [item setLabel: @"Activity Window"]; + [item setPaletteLabel: @"Show Activity Window"]; + [item setToolTip: @"Show Activity Window"]; + [item setImage: [NSImage imageNamed: @"activity"]]; + [item setTarget: self]; + [item setAction: @selector(showDebugOutputPanel:)]; + [item setAutovalidates: NO]; + } + else if ([itemIdent isEqualToString: ChooseSourceIdentifier]) + { + [item setLabel: @"Source"]; + [item setPaletteLabel: @"Source"]; + [item setToolTip: @"Choose Video Source"]; + [item setImage: [NSImage imageNamed: @"source"]]; + [item setTarget: self]; + [item setAction: @selector(browseSources:)]; + } + else + { + return nil; + } + + return item; +} + +- (NSArray *) toolbarDefaultItemIdentifiers: (NSToolbar *) toolbar +{ + return [NSArray arrayWithObjects: ChooseSourceIdentifier, NSToolbarSeparatorItemIdentifier, StartEncodingIdentifier, + PauseEncodingIdentifier, AddToQueueIdentifier, ShowQueueIdentifier, NSToolbarFlexibleSpaceItemIdentifier, + NSToolbarSpaceItemIdentifier, ShowPictureIdentifier, ShowPreviewIdentifier, ShowActivityIdentifier, ToggleDrawerIdentifier, nil]; +} + +- (NSArray *) toolbarAllowedItemIdentifiers: (NSToolbar *) toolbar +{ + return [NSArray arrayWithObjects: StartEncodingIdentifier, PauseEncodingIdentifier, AddToQueueIdentifier, + ChooseSourceIdentifier, ShowQueueIdentifier, ShowPictureIdentifier, ShowPreviewIdentifier, ShowActivityIdentifier, ToggleDrawerIdentifier, + NSToolbarCustomizeToolbarItemIdentifier, NSToolbarFlexibleSpaceItemIdentifier, + NSToolbarSpaceItemIdentifier, NSToolbarSeparatorItemIdentifier, nil]; +} + +- (BOOL) validateToolbarItem: (NSToolbarItem *) toolbarItem +{ + NSString * ident = [toolbarItem itemIdentifier]; + + if (fHandle) + { + hb_state_t s; + + hb_get_state( fHandle, &s ); + if (s.state == HB_STATE_SCANNING) + { + + if ([ident isEqualToString: ChooseSourceIdentifier]) + { + [toolbarItem setImage: [NSImage imageNamed: @"stopencode"]]; + [toolbarItem setLabel: @"Cancel Scan"]; + [toolbarItem setPaletteLabel: @"Cancel Scanning"]; + [toolbarItem setToolTip: @"Cancel Scanning Source"]; + return YES; + } + + if ([ident isEqualToString: StartEncodingIdentifier] || [ident isEqualToString: AddToQueueIdentifier]) + return NO; + } + else + { + if ([ident isEqualToString: ChooseSourceIdentifier]) + { + [toolbarItem setImage: [NSImage imageNamed: @"source"]]; + [toolbarItem setLabel: @"Source"]; + [toolbarItem setPaletteLabel: @"Source"]; + [toolbarItem setToolTip: @"Choose Video Source"]; + return YES; + } + } + + hb_get_state2( fQueueEncodeLibhb, &s ); + + if (s.state == HB_STATE_WORKING || s.state == HB_STATE_SEARCHING || s.state == HB_STATE_MUXING) + { + if ([ident isEqualToString: StartEncodingIdentifier]) + { + [toolbarItem setImage: [NSImage imageNamed: @"stopencode"]]; + [toolbarItem setLabel: @"Stop"]; + [toolbarItem setPaletteLabel: @"Stop"]; + [toolbarItem setToolTip: @"Stop Encoding"]; + return YES; + } + if ([ident isEqualToString: PauseEncodingIdentifier]) + { + [toolbarItem setImage: [NSImage imageNamed: @"pauseencode"]]; + [toolbarItem setLabel: @"Pause"]; + [toolbarItem setPaletteLabel: @"Pause Encoding"]; + [toolbarItem setToolTip: @"Pause Encoding"]; + return YES; + } + if (SuccessfulScan) + { + if ([ident isEqualToString: AddToQueueIdentifier]) + return YES; + if ([ident isEqualToString: ShowPictureIdentifier]) + return YES; + if ([ident isEqualToString: ShowPreviewIdentifier]) + return YES; + } + } + else if (s.state == HB_STATE_PAUSED) + { + if ([ident isEqualToString: PauseEncodingIdentifier]) + { + [toolbarItem setImage: [NSImage imageNamed: @"encode"]]; + [toolbarItem setLabel: @"Resume"]; + [toolbarItem setPaletteLabel: @"Resume Encoding"]; + [toolbarItem setToolTip: @"Resume Encoding"]; + return YES; + } + if ([ident isEqualToString: StartEncodingIdentifier]) + return YES; + if ([ident isEqualToString: AddToQueueIdentifier]) + return YES; + if ([ident isEqualToString: ShowPictureIdentifier]) + return YES; + if ([ident isEqualToString: ShowPreviewIdentifier]) + return YES; + } + else if (s.state == HB_STATE_SCANNING) + return NO; + else if (s.state == HB_STATE_WORKDONE || s.state == HB_STATE_SCANDONE || SuccessfulScan) + { + if ([ident isEqualToString: StartEncodingIdentifier]) + { + [toolbarItem setImage: [NSImage imageNamed: @"encode"]]; + if (hb_count(fHandle) > 0) + [toolbarItem setLabel: @"Start Queue"]; + else + [toolbarItem setLabel: @"Start"]; + [toolbarItem setPaletteLabel: @"Start Encoding"]; + [toolbarItem setToolTip: @"Start Encoding"]; + return YES; + } + if ([ident isEqualToString: AddToQueueIdentifier]) + return YES; + if ([ident isEqualToString: ShowPictureIdentifier]) + return YES; + if ([ident isEqualToString: ShowPreviewIdentifier]) + return YES; + } + + } + /* If there are any pending queue items, make sure the start/stop button is active */ + if ([ident isEqualToString: StartEncodingIdentifier] && fPendingCount > 0) + return YES; + if ([ident isEqualToString: ShowQueueIdentifier]) + return YES; + if ([ident isEqualToString: ToggleDrawerIdentifier]) + return YES; + if ([ident isEqualToString: ChooseSourceIdentifier]) + return YES; + if ([ident isEqualToString: ShowActivityIdentifier]) + return YES; + + return NO; +} + +- (BOOL) validateMenuItem: (NSMenuItem *) menuItem +{ + SEL action = [menuItem action]; + + hb_state_t s; + hb_get_state2( fHandle, &s ); + + if (fHandle) + { + if (action == @selector(addToQueue:) || action == @selector(addAllTitlesToQueue:) || action == @selector(showPicturePanel:) || action == @selector(showAddPresetPanel:)) + return SuccessfulScan && [fWindow attachedSheet] == nil; + + if (action == @selector(browseSources:)) + { + if (s.state == HB_STATE_SCANNING) + return NO; + else + return [fWindow attachedSheet] == nil; + } + if (action == @selector(selectDefaultPreset:)) + return [fPresetsOutlineView selectedRow] >= 0 && [fWindow attachedSheet] == nil; + if (action == @selector(Pause:)) + { + if (s.state == HB_STATE_WORKING) + { + if(![[menuItem title] isEqualToString:@"Pause Encoding"]) + [menuItem setTitle:@"Pause Encoding"]; + return YES; + } + else if (s.state == HB_STATE_PAUSED) + { + if(![[menuItem title] isEqualToString:@"Resume Encoding"]) + [menuItem setTitle:@"Resume Encoding"]; + return YES; + } + else + return NO; + } + if (action == @selector(Rip:)) + { + if (s.state == HB_STATE_WORKING || s.state == HB_STATE_MUXING || s.state == HB_STATE_PAUSED) + { + if(![[menuItem title] isEqualToString:@"Stop Encoding"]) + [menuItem setTitle:@"Stop Encoding"]; + return YES; + } + else if (SuccessfulScan) + { + if(![[menuItem title] isEqualToString:@"Start Encoding"]) + [menuItem setTitle:@"Start Encoding"]; + return [fWindow attachedSheet] == nil; + } + else + return NO; + } + } + if( action == @selector(setDefaultPreset:) ) + { + return [fPresetsOutlineView selectedRow] != -1; + } + + return YES; +} + +#pragma mark - +#pragma mark Encode Done Actions +// register a test notification and make +// it enabled by default +#define SERVICE_NAME @"Encode Done" +- (NSDictionary *)registrationDictionaryForGrowl +{ + NSDictionary *registrationDictionary = [NSDictionary dictionaryWithObjectsAndKeys: + [NSArray arrayWithObjects:SERVICE_NAME,nil], GROWL_NOTIFICATIONS_ALL, + [NSArray arrayWithObjects:SERVICE_NAME,nil], GROWL_NOTIFICATIONS_DEFAULT, + nil]; + + return registrationDictionary; +} + +-(void)showGrowlDoneNotification:(NSString *) filePath +{ + /* This end of encode action is called as each encode rolls off of the queue */ + /* Setup the Growl stuff */ + NSString * finishedEncode = filePath; + /* strip off the path to just show the file name */ + finishedEncode = [finishedEncode lastPathComponent]; + NSString * growlMssg = [NSString stringWithFormat: @"your HandBrake encode %@ is done!",finishedEncode]; + [GrowlApplicationBridge + notifyWithTitle:@"Put down that cocktail…" + description:growlMssg + notificationName:SERVICE_NAME + iconData:nil + priority:0 + isSticky:1 + clickContext:nil]; +} +-(void)sendToMetaX:(NSString *) filePath +{ + /* This end of encode action is called as each encode rolls off of the queue */ + if([[NSUserDefaults standardUserDefaults] boolForKey: @"sendToMetaX"] == YES) + { + NSString *sendToApp = [[NSUserDefaults standardUserDefaults] objectForKey: @"SendCompletedEncodeToApp"]; + if (![sendToApp isEqualToString:@"None"]) + { + [self writeToActivityLog: "trying to send encode to: %s", [sendToApp UTF8String]]; + NSAppleScript *myScript = [[NSAppleScript alloc] initWithSource: [NSString stringWithFormat: @"%@%@%@%@%@", @"tell application \"",sendToApp,@"\" to open (POSIX file \"", filePath, @"\")"]]; + [myScript executeAndReturnError: nil]; + [myScript release]; + } + + } +} + +- (void) queueCompletedAlerts +{ + /* If Play System Alert has been selected in Preferences */ + if( [[NSUserDefaults standardUserDefaults] boolForKey:@"AlertWhenDoneSound"] == YES ) + { + NSBeep(); + } + + /* If Alert Window or Window and Growl has been selected */ + if( [[[NSUserDefaults standardUserDefaults] stringForKey:@"AlertWhenDone"] isEqualToString: @"Alert Window"] || + [[[NSUserDefaults standardUserDefaults] stringForKey:@"AlertWhenDone"] isEqualToString: @"Alert Window And Growl"] ) + { + /*On Screen Notification*/ + int status; + status = NSRunAlertPanel(@"Put down that cocktail…",@"Your HandBrake queue is done!", @"OK", nil, nil); + [NSApp requestUserAttention:NSCriticalRequest]; + } + + /* If sleep has been selected */ + if( [[[NSUserDefaults standardUserDefaults] stringForKey:@"AlertWhenDone"] isEqualToString: @"Put Computer To Sleep"] ) + { + /* Sleep */ + NSDictionary* errorDict; + NSAppleEventDescriptor* returnDescriptor = nil; + NSAppleScript* scriptObject = [[NSAppleScript alloc] initWithSource: + @"tell application \"Finder\" to sleep"]; + returnDescriptor = [scriptObject executeAndReturnError: &errorDict]; + [scriptObject release]; + } + /* If Shutdown has been selected */ + if( [[[NSUserDefaults standardUserDefaults] stringForKey:@"AlertWhenDone"] isEqualToString: @"Shut Down Computer"] ) + { + /* Shut Down */ + NSDictionary* errorDict; + NSAppleEventDescriptor* returnDescriptor = nil; + NSAppleScript* scriptObject = [[NSAppleScript alloc] initWithSource: + @"tell application \"Finder\" to shut down"]; + returnDescriptor = [scriptObject executeAndReturnError: &errorDict]; + [scriptObject release]; + } +} + +#pragma mark - +#pragma mark Get New Source + +/*Opens the source browse window, called from Open Source widgets */ +- (IBAction) browseSources: (id) sender +{ + + hb_state_t s; + hb_get_state( fHandle, &s ); + if (s.state == HB_STATE_SCANNING) + { + [self cancelScanning:nil]; + return; + } + + + NSOpenPanel * panel; + + panel = [NSOpenPanel openPanel]; + [panel setAllowsMultipleSelection: NO]; + [panel setCanChooseFiles: YES]; + [panel setCanChooseDirectories: YES ]; + NSString * sourceDirectory; + if ([[NSUserDefaults standardUserDefaults] stringForKey:@"LastSourceDirectory"]) + { + sourceDirectory = [[NSUserDefaults standardUserDefaults] stringForKey:@"LastSourceDirectory"]; + } + else + { + sourceDirectory = @"~/Desktop"; + sourceDirectory = [sourceDirectory stringByExpandingTildeInPath]; + } + /* we open up the browse sources sheet here and call for browseSourcesDone after the sheet is closed + * to evaluate whether we want to specify a title, we pass the sender in the contextInfo variable + */ + [panel beginSheetForDirectory: sourceDirectory file: nil types: nil + modalForWindow: fWindow modalDelegate: self + didEndSelector: @selector( browseSourcesDone:returnCode:contextInfo: ) + contextInfo: sender]; +} + +- (void) browseSourcesDone: (NSOpenPanel *) sheet + returnCode: (int) returnCode contextInfo: (void *) contextInfo +{ + /* we convert the sender content of contextInfo back into a variable called sender + * mostly just for consistency for evaluation later + */ + id sender = (id)contextInfo; + /* User selected a file to open */ + if( returnCode == NSOKButton ) + { + /* Free display name allocated previously by this code */ + [browsedSourceDisplayName release]; + + NSString *scanPath = [[sheet filenames] objectAtIndex: 0]; + /* we set the last searched source directory in the prefs here */ + NSString *sourceDirectory = [scanPath stringByDeletingLastPathComponent]; + [[NSUserDefaults standardUserDefaults] setObject:sourceDirectory forKey:@"LastSourceDirectory"]; + /* we order out sheet, which is the browse window as we need to open + * the title selection sheet right away + */ + [sheet orderOut: self]; + + if (sender == fOpenSourceTitleMMenu || [[NSApp currentEvent] modifierFlags] & NSAlternateKeyMask) + { + /* We put the chosen source path in the source display text field for the + * source title selection sheet in which the user specifies the specific title to be + * scanned as well as the short source name in fSrcDsplyNameTitleScan just for display + * purposes in the title panel + */ + /* Full Path */ + [fScanSrcTitlePathField setStringValue:scanPath]; + NSString *displayTitlescanSourceName; + + if ([[scanPath lastPathComponent] isEqualToString: @"VIDEO_TS"]) + { + /* If VIDEO_TS Folder is chosen, choose its parent folder for the source display name + we have to use the title->path value so we get the proper name of the volume if a physical dvd is the source*/ + displayTitlescanSourceName = [[scanPath stringByDeletingLastPathComponent] lastPathComponent]; + } + else + { + /* if not the VIDEO_TS Folder, we can assume the chosen folder is the source name */ + displayTitlescanSourceName = [scanPath lastPathComponent]; + } + /* we set the source display name in the title selection dialogue */ + [fSrcDsplyNameTitleScan setStringValue:displayTitlescanSourceName]; + /* we set the attempted scans display name for main window to displayTitlescanSourceName*/ + browsedSourceDisplayName = [displayTitlescanSourceName retain]; + /* We show the actual sheet where the user specifies the title to be scanned + * as we are going to do a title specific scan + */ + [self showSourceTitleScanPanel:nil]; + } + else + { + /* We are just doing a standard full source scan, so we specify "0" to libhb */ + NSString *path = [[sheet filenames] objectAtIndex: 0]; + + /* We check to see if the chosen file at path is a package */ + if ([[NSWorkspace sharedWorkspace] isFilePackageAtPath:path]) + { + [self writeToActivityLog: "trying to open a package at: %s", [path UTF8String]]; + /* We check to see if this is an .eyetv package */ + if ([[path pathExtension] isEqualToString: @"eyetv"]) + { + [self writeToActivityLog:"trying to open eyetv package"]; + /* We're looking at an EyeTV package - try to open its enclosed + .mpg media file */ + browsedSourceDisplayName = [[[path stringByDeletingPathExtension] lastPathComponent] retain]; + NSString *mpgname; + int n = [[path stringByAppendingString: @"/"] + completePathIntoString: &mpgname caseSensitive: YES + matchesIntoArray: nil + filterTypes: [NSArray arrayWithObject: @"mpg"]]; + if (n > 0) + { + /* Found an mpeg inside the eyetv package, make it our scan path + and call performScan on the enclosed mpeg */ + path = mpgname; + [self writeToActivityLog:"found mpeg in eyetv package"]; + [self performScan:path scanTitleNum:0]; + } + else + { + /* We did not find an mpeg file in our package, so we do not call performScan */ + [self writeToActivityLog:"no valid mpeg in eyetv package"]; + } + } + /* We check to see if this is a .dvdmedia package */ + else if ([[path pathExtension] isEqualToString: @"dvdmedia"]) + { + /* path IS a package - but dvdmedia packages can be treaded like normal directories */ + browsedSourceDisplayName = [[[path stringByDeletingPathExtension] lastPathComponent] retain]; + [self writeToActivityLog:"trying to open dvdmedia package"]; + [self performScan:path scanTitleNum:0]; + } + else + { + /* The package is not an eyetv package, so we do not call performScan */ + [self writeToActivityLog:"unable to open package"]; + } + } + else // path is not a package, so we treat it as a dvd parent folder or VIDEO_TS folder + { + /* path is not a package, so we call perform scan directly on our file */ + if ([[path lastPathComponent] isEqualToString: @"VIDEO_TS"]) + { + [self writeToActivityLog:"trying to open video_ts folder (video_ts folder chosen)"]; + /* If VIDEO_TS Folder is chosen, choose its parent folder for the source display name*/ + browsedSourceDisplayName = [[[path stringByDeletingLastPathComponent] lastPathComponent] retain]; + } + else + { + [self writeToActivityLog:"trying to open video_ts folder (parent directory chosen)"]; + /* if not the VIDEO_TS Folder, we can assume the chosen folder is the source name */ + /* make sure we remove any path extension as this can also be an '.mpg' file */ + browsedSourceDisplayName = [[path lastPathComponent] retain]; + } + applyQueueToScan = NO; + [self performScan:path scanTitleNum:0]; + } + + } + + } +} + +- (IBAction)showAboutPanel:(id)sender +{ + NSMutableDictionary* d = [[NSMutableDictionary alloc] initWithObjectsAndKeys: + fApplicationIcon, @"ApplicationIcon", + nil ]; + [NSApp orderFrontStandardAboutPanelWithOptions:d]; + [d release]; +} + +/* Here we open the title selection sheet where we can specify an exact title to be scanned */ +- (IBAction) showSourceTitleScanPanel: (id) sender +{ + /* We default the title number to be scanned to "0" which results in a full source scan, unless the + * user changes it + */ + [fScanSrcTitleNumField setStringValue: @"0"]; + /* Show the panel */ + [NSApp beginSheet:fScanSrcTitlePanel modalForWindow:fWindow modalDelegate:nil didEndSelector:NULL contextInfo:NULL]; +} + +- (IBAction) closeSourceTitleScanPanel: (id) sender +{ + [NSApp endSheet: fScanSrcTitlePanel]; + [fScanSrcTitlePanel orderOut: self]; + + if(sender == fScanSrcTitleOpenButton) + { + /* We setup the scan status in the main window to indicate a source title scan */ + [fSrcDVD2Field setStringValue: @"Opening a new source title…"]; + [fScanIndicator setHidden: NO]; + [fScanHorizontalLine setHidden: YES]; + [fScanIndicator setIndeterminate: YES]; + [fScanIndicator startAnimation: nil]; + + /* We use the performScan method to actually perform the specified scan passing the path and the title + * to be scanned + */ + applyQueueToScan = NO; + [self performScan:[fScanSrcTitlePathField stringValue] scanTitleNum:[fScanSrcTitleNumField intValue]]; + } +} + +/* Here we actually tell hb_scan to perform the source scan, using the path to source and title number*/ +- (void) performScan:(NSString *) scanPath scanTitleNum: (int) scanTitleNum +{ + /* use a bool to determine whether or not we can decrypt using vlc */ + BOOL cancelScanDecrypt = 0; + NSString *path = scanPath; + HBDVDDetector *detector = [HBDVDDetector detectorForPath:path]; + + // Notify ChapterTitles that there's no title + [fChapterTitlesDelegate resetWithTitle:nil]; + [fChapterTable reloadData]; + + // Notify Subtitles that there's no title + [fSubtitlesDelegate resetWithTitle:nil]; + [fSubtitlesTable reloadData]; + + // Notify anyone interested (audio controller) that there's no title + [[NSNotificationCenter defaultCenter] postNotification: + [NSNotification notificationWithName: HBTitleChangedNotification + object: self + userInfo: [NSDictionary dictionaryWithObjectsAndKeys: + [NSData dataWithBytesNoCopy: &fTitle length: sizeof(fTitle) freeWhenDone: NO], keyTitleTag, + nil]]]; + + [self enableUI: NO]; + + if( [detector isVideoDVD] ) + { + // The chosen path was actually on a DVD, so use the raw block + // device path instead. + path = [detector devicePath]; + [self writeToActivityLog: "trying to open a physical dvd at: %s", [scanPath UTF8String]]; + + + NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults]; + NSInteger suppressWarning = [prefs integerForKey:@"suppresslibdvdcss"]; + + /* Notify the user that we don't support removal of copy proteciton. */ + void *dvdcss = dlopen("libdvdcss.2.dylib", RTLD_LAZY); + if (dvdcss == NULL && suppressWarning != 1) + { + /* Only show the user this warning once. They may be using a solution we don't know about. Notifying them each time is annoying. */ + [prefs setInteger:1 forKey:@"suppresslibdvdcss"]; + + /*compatible vlc not found, so we set the bool to cancel scanning to 1 */ + cancelScanDecrypt = 1; + [self writeToActivityLog: "libdvdcss.2.dylib not found for decrypting physical dvd"]; + int status; + status = NSRunAlertPanel(@"Please note that HandBrake does not support the removal of copy-protection from DVD Discs. You can if you wish install libdvdcss or any other 3rd party software for this function.", + @"Videolan.org provides libdvdcss if you are not currently using another solution.", @"Get libdvdcss.pkg", @"Cancel Scan", @"Attempt Scan Anyway"); + [NSApp requestUserAttention:NSCriticalRequest]; + + if (status == NSAlertDefaultReturn) + { + /* User chose to go download vlc (as they rightfully should) so we send them to the vlc site */ + [[NSWorkspace sharedWorkspace] openURL:[NSURL URLWithString:@"http://download.videolan.org/libdvdcss/1.2.12/macosx/"]]; + } + else if (status == NSAlertAlternateReturn) + { + /* User chose to cancel the scan */ + [self writeToActivityLog: "Cannot open physical dvd, scan cancelled"]; + } + else + { + /* User chose to override our warning and scan the physical dvd anyway, at their own peril. on an encrypted dvd this produces massive log files and fails */ + cancelScanDecrypt = 0; + [self writeToActivityLog: "User overrode copy-proteciton warning - trying to open physical dvd without decryption"]; + } + + } + else + { + /* VLC was found in /Applications so all is well, we can carry on using vlc's libdvdcss.dylib for decrypting if needed */ + [self writeToActivityLog: "libdvdcss.2.dylib found for decrypting physical dvd"]; + dlclose(dvdcss); + } + } + + if (cancelScanDecrypt == 0) + { + /* We use our advanced pref to determine how many previews to scan */ + int hb_num_previews = [[[NSUserDefaults standardUserDefaults] objectForKey:@"PreviewsNumber"] intValue]; + /* We use our advanced pref to determine the minimum title length to use in seconds*/ + int min_title_duration_seconds = [[[NSUserDefaults standardUserDefaults] objectForKey:@"MinTitleScanSeconds"] intValue]; + uint64_t min_title_duration_ticks = 90000LL * min_title_duration_seconds; + /* set title to NULL */ + fTitle = NULL; + /* We actually pass the scan off to libhb here. + * If there is no title number passed to scan, we use 0 + * which causes the default behavior of a full source scan */ + if (scanTitleNum < 0) + { + scanTitleNum = 0; + } + if (scanTitleNum > 0) + { + [self writeToActivityLog: "scanning specifically for title: %d", scanTitleNum]; + } + else + { + // minimum title duration doesn't apply to title-specific scan + // it doesn't apply to batch scan either, but we can't tell it apart from DVD & BD folders here + [self writeToActivityLog: "scanning titles with a duration of %d seconds or more", min_title_duration_seconds]; + } + + hb_system_sleep_prevent(fHandle); + hb_scan(fHandle, [path UTF8String], scanTitleNum, hb_num_previews, 1 , + min_title_duration_ticks); + + [fSrcDVD2Field setStringValue:@"Scanning new source…"]; + + // After the scan process, we signal to enableUI loop that this scan process is now finished + // If remaining drag & drop files are in the UserDefaults array, they will then be processed + fWillScan = NO; + } +} + +- (IBAction) cancelScanning:(id)sender +{ + hb_scan_stop(fHandle); + hb_system_sleep_allow(fHandle); +} + +- (IBAction) showNewScan:(id)sender +{ + hb_title_set_t * title_set; + hb_title_t * title = NULL; + int feature_title=0; // Used to store the main feature title + + title_set = hb_get_title_set( fHandle ); + + if( !hb_list_count( title_set->list_title ) ) + { + /* We display a message if a valid dvd source was not chosen */ + [fSrcDVD2Field setStringValue: @"No Valid Source Found"]; + SuccessfulScan = NO; + + // Notify ChapterTitles that there's no title + [fSubtitlesDelegate resetWithTitle:nil]; + [fSubtitlesTable reloadData]; + + // Notify Subtitles that there's no title + [fChapterTitlesDelegate resetWithTitle:nil]; + [fChapterTable reloadData]; + + // Notify anyone interested (audio controller) that there's no title + [[NSNotificationCenter defaultCenter] postNotification: + [NSNotification notificationWithName: HBTitleChangedNotification + object: self + userInfo: [NSDictionary dictionaryWithObjectsAndKeys: + [NSData dataWithBytesNoCopy: &fTitle length: sizeof(fTitle) freeWhenDone: NO], keyTitleTag, + nil]]]; + } + else + { + if (applyQueueToScan == YES) + { + /* we are a rescan of an existing queue item and need to apply the queued settings to the scan */ + [self writeToActivityLog: "showNewScan: This is a queued item rescan"]; + + } + else if (applyQueueToScan == NO) + { + [self writeToActivityLog: "showNewScan: This is a new source item scan"]; + } + else + { + [self writeToActivityLog: "showNewScan: cannot grok scan status"]; + } + + /* We increment the successful scancount here by one, + which we use at the end of this function to tell the gui + if this is the first successful scan since launch and whether + or not we should set all settings to the defaults */ + currentSuccessfulScanCount++; + + [[fWindow toolbar] validateVisibleItems]; + + [fSrcTitlePopUp removeAllItems]; + for( int i = 0; i < hb_list_count( title_set->list_title ); i++ ) + { + title = (hb_title_t *) hb_list_item( title_set->list_title, i ); + + currentSource = [NSString stringWithUTF8String: title->name]; + /*Set DVD Name at top of window with the browsedSourceDisplayName grokked right before -performScan */ + if (!browsedSourceDisplayName) + { + browsedSourceDisplayName = @"NoNameDetected"; + } + [fSrcDVD2Field setStringValue:browsedSourceDisplayName]; + + // use the correct extension based on the container + int format = [fDstFormatPopUp indexOfSelectedItem]; + char *ext = "mp4"; + if (format == 1) + { + ext = "mkv"; + } + + /* If its a queue rescan for edit, get the queue item output path */ + /* if not, its a new source scan. */ + /* Check to see if the last destination has been set,use if so, if not, use Desktop */ + if (applyQueueToScan == YES) + { + [fDstFile2Field setStringValue: [NSString stringWithFormat:@"%@", [[QueueFileArray objectAtIndex:fqueueEditRescanItemNum] objectForKey:@"DestinationPath"]]]; + } + else if ([[NSUserDefaults standardUserDefaults] stringForKey:@"LastDestinationDirectory"]) + { + [fDstFile2Field setStringValue: [NSString stringWithFormat: + @"%@/%@.%s", [[NSUserDefaults standardUserDefaults] stringForKey:@"LastDestinationDirectory"],[browsedSourceDisplayName stringByDeletingPathExtension],ext]]; + } + else + { + [fDstFile2Field setStringValue: [NSString stringWithFormat: + @"%@/Desktop/%@.%s", NSHomeDirectory(),[browsedSourceDisplayName stringByDeletingPathExtension],ext]]; + } + + // set m4v extension if necessary - do not override user-specified .mp4 extension + if (format == 0 && applyQueueToScan != YES) + { + [self autoSetM4vExtension: sender]; + } + + /* See if this is the main feature according to libhb */ + if (title->index == title_set->feature) + { + feature_title = i; + } + + if( title->type == HB_BD_TYPE ) + { + [fSrcTitlePopUp addItemWithTitle: [NSString + stringWithFormat: @"%@ %d (%05d.MPLS) - %02dh%02dm%02ds", + currentSource, title->index, title->playlist, + title->hours, title->minutes, title->seconds]]; + } + else + { + [fSrcTitlePopUp addItemWithTitle: [NSString + stringWithFormat: @"%@ %d - %02dh%02dm%02ds", + currentSource, title->index, + title->hours, title->minutes, title->seconds]]; + } + } + + /* if we are a stream, select the first title */ + if (title->type == HB_STREAM_TYPE || title->type == HB_FF_STREAM_TYPE) + { + [fSrcTitlePopUp selectItemAtIndex: 0]; + } + else + { + /* if not then select the main feature title */ + [fSrcTitlePopUp selectItemAtIndex: feature_title]; + } + [self titlePopUpChanged:nil]; + + SuccessfulScan = YES; + [self enableUI: YES]; + + /* if its the initial successful scan after awakeFromNib */ + if (currentSuccessfulScanCount == 1) + { + [self encodeStartStopPopUpChanged:nil]; + + [self selectDefaultPreset:nil]; + + // Open preview window now if it was visible when HB was closed + if ([[NSUserDefaults standardUserDefaults] boolForKey:@"PreviewWindowIsOpen"]) + [self showPreviewWindow:nil]; + + // Open picture sizing window now if it was visible when HB was closed + if ([[NSUserDefaults standardUserDefaults] boolForKey:@"PictureSizeWindowIsOpen"]) + [self showPicturePanel:nil]; + + } + if (applyQueueToScan == YES) + { + /* we are a rescan of an existing queue item and need to apply the queued settings to the scan */ + [self writeToActivityLog: "showNewScan: calling applyQueueSettingsToMainWindow"]; + [self applyQueueSettingsToMainWindow:nil]; + + } + } + + /* Done scanning, allow system sleep for the scan handle */ + hb_system_sleep_allow(fHandle); +} + + +#pragma mark - +#pragma mark New Output Destination + +- (IBAction) browseFile: (id) sender +{ + /* Open a panel to let the user choose and update the text field */ + NSSavePanel * panel = [NSSavePanel savePanel]; + /* We get the current file name and path from the destination field here */ + [panel beginSheetForDirectory: [[fDstFile2Field stringValue] stringByDeletingLastPathComponent] file: [[fDstFile2Field stringValue] lastPathComponent] + modalForWindow: fWindow modalDelegate: self + didEndSelector: @selector( browseFileDone:returnCode:contextInfo: ) + contextInfo: NULL]; +} + +- (void) browseFileDone: (NSSavePanel *) sheet + returnCode: (int) returnCode contextInfo: (void *) contextInfo +{ + if( returnCode == NSOKButton ) + { + [fDstFile2Field setStringValue: [sheet filename]]; + /* Save this path to the prefs so that on next browse destination window it opens there */ + NSString *destinationDirectory = [[fDstFile2Field stringValue] stringByDeletingLastPathComponent]; + [[NSUserDefaults standardUserDefaults] setObject:destinationDirectory forKey:@"LastDestinationDirectory"]; + } +} + + +#pragma mark - +#pragma mark Main Window Control + +- (IBAction) openMainWindow: (id) sender +{ + [fWindow makeKeyAndOrderFront:nil]; +} + +- (BOOL) windowShouldClose: (id) sender +{ + return YES; +} + +- (BOOL)applicationShouldHandleReopen:(NSApplication *)theApplication hasVisibleWindows:(BOOL)flag +{ + if( !flag ) { + [fWindow makeKeyAndOrderFront:nil]; + } + return YES; +} + +- (NSSize) drawerWillResizeContents:(NSDrawer *) drawer toSize:(NSSize) contentSize { + [[NSUserDefaults standardUserDefaults] setObject:NSStringFromSize( contentSize ) forKey:@"Drawer Size"]; + return contentSize; +} + +#pragma mark - +#pragma mark Queue File + +- (void) loadQueueFile { + /* We declare the default NSFileManager into fileManager */ + NSFileManager * fileManager = [NSFileManager defaultManager]; + /* We define the location of the user presets file */ + QueueFile = @"~/Library/Application Support/HandBrake/Queue.plist"; + QueueFile = [[QueueFile stringByExpandingTildeInPath]retain]; + /* We check for the Queue.plist */ + if ([fileManager fileExistsAtPath:QueueFile] == 0) + { + [fileManager createFileAtPath:QueueFile contents:nil attributes:nil]; + } + + QueueFileArray = [[NSMutableArray alloc] initWithContentsOfFile:QueueFile]; + /* lets check to see if there is anything in the queue file .plist */ + if (nil == QueueFileArray) + { + /* if not, then lets initialize an empty array */ + QueueFileArray = [[NSMutableArray alloc] init]; + } + else + { + /* ONLY clear out encoded items if we are single instance */ + if (hbInstanceNum == 1) + { + [self clearQueueEncodedItems]; + } + } +} + +- (void)addQueueFileItem +{ + [QueueFileArray addObject:[self createQueueFileItem]]; + [self saveQueueFileItem]; + +} + +- (void) removeQueueFileItem:(int) queueItemToRemove +{ + [QueueFileArray removeObjectAtIndex:queueItemToRemove]; + [self saveQueueFileItem]; + +} + +- (void)saveQueueFileItem +{ + [QueueFileArray writeToFile:QueueFile atomically:YES]; + [fQueueController setQueueArray: QueueFileArray]; + [self getQueueStats]; +} + +- (void)getQueueStats +{ +/* lets get the stats on the status of the queue array */ + +fEncodingQueueItem = 0; +fPendingCount = 0; +fCompletedCount = 0; +fCanceledCount = 0; +fWorkingCount = 0; + + /* We use a number system to set the encode status of the queue item + * in controller.mm + * 0 == already encoded + * 1 == is being encoded + * 2 == is yet to be encoded + * 3 == cancelled + */ + + int i = 0; + NSEnumerator *enumerator = [QueueFileArray objectEnumerator]; + id tempObject; + while (tempObject = [enumerator nextObject]) + { + NSDictionary *thisQueueDict = tempObject; + if ([[thisQueueDict objectForKey:@"Status"] intValue] == 0) // Completed + { + fCompletedCount++; + } + if ([[thisQueueDict objectForKey:@"Status"] intValue] == 1) // being encoded + { + fWorkingCount++; + fEncodingQueueItem = i; + /* check to see if we are the instance doing this encoding */ + if ([thisQueueDict objectForKey:@"EncodingPID"] && [[thisQueueDict objectForKey:@"EncodingPID"] intValue] == pidNum) + { + currentQueueEncodeIndex = i; + } + + } + if ([[thisQueueDict objectForKey:@"Status"] intValue] == 2) // pending + { + fPendingCount++; + } + if ([[thisQueueDict objectForKey:@"Status"] intValue] == 3) // cancelled + { + fCanceledCount++; + } + i++; + } + + /* Set the queue status field in the main window */ + NSMutableString * string; + if (fPendingCount == 0) + { + string = [NSMutableString stringWithFormat: NSLocalizedString( @"No encode pending", @"" )]; + } + else if (fPendingCount == 1) + { + string = [NSMutableString stringWithFormat: NSLocalizedString( @"%d encode pending", @"" ), fPendingCount]; + } + else + { + string = [NSMutableString stringWithFormat: NSLocalizedString( @"%d encodes pending", @"" ), fPendingCount]; + } + [fQueueStatus setStringValue:string]; +} + +/* Used to get the next pending queue item index and return it if found */ +- (int)getNextPendingQueueIndex +{ + /* initialize nextPendingIndex to -1, this value tells incrementQueueItemDone that there are no pending items in the queue */ + int nextPendingIndex = -1; + BOOL nextPendingFound = NO; + NSEnumerator *enumerator = [QueueFileArray objectEnumerator]; + id tempObject; + int i = 0; + while (tempObject = [enumerator nextObject]) + { + NSDictionary *thisQueueDict = tempObject; + if ([[thisQueueDict objectForKey:@"Status"] intValue] == 2 && nextPendingFound == NO) // pending + { + nextPendingFound = YES; + nextPendingIndex = [QueueFileArray indexOfObject: tempObject]; + [self writeToActivityLog: "getNextPendingQueueIndex next pending encode index is:%d", nextPendingIndex]; + } + i++; + } + return nextPendingIndex; +} + + +/* This method will set any item marked as encoding back to pending + * currently used right after a queue reload + */ +- (void) setQueueEncodingItemsAsPending +{ + NSEnumerator *enumerator = [QueueFileArray objectEnumerator]; + id tempObject; + NSMutableArray *tempArray; + tempArray = [NSMutableArray array]; + /* we look here to see if the preset is we move on to the next one */ + while ( tempObject = [enumerator nextObject] ) + { + /* We want to keep any queue item that is pending or was previously being encoded */ + if ([[tempObject objectForKey:@"Status"] intValue] == 1 || [[tempObject objectForKey:@"Status"] intValue] == 2) + { + /* If the queue item is marked as "encoding" (1) + * then change its status back to pending (2) which effectively + * puts it back into the queue to be encoded + */ + if ([[tempObject objectForKey:@"Status"] intValue] == 1) + { + [tempObject setObject:[NSNumber numberWithInt: 2] forKey:@"Status"]; + } + [tempArray addObject:tempObject]; + } + } + + [QueueFileArray setArray:tempArray]; + [self saveQueueFileItem]; +} + + +/* This method will clear the queue of any encodes that are not still pending + * this includes both successfully completed encodes as well as cancelled encodes */ +- (void) clearQueueEncodedItems +{ + NSEnumerator *enumerator = [QueueFileArray objectEnumerator]; + id tempObject; + NSMutableArray *tempArray; + tempArray = [NSMutableArray array]; + /* we look here to see if the preset is we move on to the next one */ + while ( tempObject = [enumerator nextObject] ) + { + /* If the queue item is either completed (0) or cancelled (3) from the + * last session, then we put it in tempArray to be deleted from QueueFileArray. + * NOTE: this means we retain pending (2) and also an item that is marked as + * still encoding (1). If the queue has an item that is still marked as encoding + * from a previous session, we can conlude that HB was either shutdown, or crashed + * during the encodes so we keep it and tell the user in the "Load Queue Alert" + */ + if ([[tempObject objectForKey:@"Status"] intValue] == 0 || [[tempObject objectForKey:@"Status"] intValue] == 3) + { + [tempArray addObject:tempObject]; + } + } + + [QueueFileArray removeObjectsInArray:tempArray]; + [self saveQueueFileItem]; +} + +/* This method will clear the queue of all encodes. effectively creating an empty queue */ +- (void) clearQueueAllItems +{ + NSEnumerator *enumerator = [QueueFileArray objectEnumerator]; + id tempObject; + NSMutableArray *tempArray; + tempArray = [NSMutableArray array]; + /* we look here to see if the preset is we move on to the next one */ + while ( tempObject = [enumerator nextObject] ) + { + [tempArray addObject:tempObject]; + } + + [QueueFileArray removeObjectsInArray:tempArray]; + [self saveQueueFileItem]; +} + +/* This method will duplicate prepareJob however into the + * queue .plist instead of into the job structure so it can + * be recalled later */ +- (NSDictionary *)createQueueFileItem +{ + NSMutableDictionary *queueFileJob = [[NSMutableDictionary alloc] init]; + + hb_list_t * list = hb_get_titles( fHandle ); + hb_title_t * title = (hb_title_t *) hb_list_item( list, + [fSrcTitlePopUp indexOfSelectedItem] ); + hb_job_t * job = title->job; + + + + /* We use a number system to set the encode status of the queue item + * 0 == already encoded + * 1 == is being encoded + * 2 == is yet to be encoded + * 3 == cancelled + */ + [queueFileJob setObject:[NSNumber numberWithInt:2] forKey:@"Status"]; + /* Source and Destination Information */ + + [queueFileJob setObject:[NSString stringWithUTF8String: title->path] forKey:@"SourcePath"]; + [queueFileJob setObject:[fSrcDVD2Field stringValue] forKey:@"SourceName"]; + [queueFileJob setObject:[NSNumber numberWithInt:title->index] forKey:@"TitleNumber"]; + [queueFileJob setObject:[NSNumber numberWithInt:[fSrcAnglePopUp indexOfSelectedItem] + 1] forKey:@"TitleAngle"]; + + /* Determine and set a variable to tell hb what start and stop times to use (chapters, seconds or frames) */ + if( [fEncodeStartStopPopUp indexOfSelectedItem] == 0 ) + { + [queueFileJob setObject:[NSNumber numberWithInt:0] forKey:@"fEncodeStartStop"]; + } + else if ([fEncodeStartStopPopUp indexOfSelectedItem] == 1) + { + [queueFileJob setObject:[NSNumber numberWithInt:1] forKey:@"fEncodeStartStop"]; + } + else if ([fEncodeStartStopPopUp indexOfSelectedItem] == 2) + { + [queueFileJob setObject:[NSNumber numberWithInt:2] forKey:@"fEncodeStartStop"]; + } + /* Chapter encode info */ + [queueFileJob setObject:[NSNumber numberWithInt:[fSrcChapterStartPopUp indexOfSelectedItem] + 1] forKey:@"ChapterStart"]; + [queueFileJob setObject:[NSNumber numberWithInt:[fSrcChapterEndPopUp indexOfSelectedItem] + 1] forKey:@"ChapterEnd"]; + /* Time (pts) encode info */ + [queueFileJob setObject:[NSNumber numberWithInt:[fSrcTimeStartEncodingField intValue]] forKey:@"StartSeconds"]; + [queueFileJob setObject:[NSNumber numberWithInt:[fSrcTimeEndEncodingField intValue] - [fSrcTimeStartEncodingField intValue]] forKey:@"StopSeconds"]; + /* Frame number encode info */ + [queueFileJob setObject:[NSNumber numberWithInt:[fSrcFrameStartEncodingField intValue]] forKey:@"StartFrame"]; + [queueFileJob setObject:[NSNumber numberWithInt:[fSrcFrameEndEncodingField intValue] - [fSrcFrameStartEncodingField intValue]] forKey:@"StopFrame"]; + + + /* The number of seek points equals the number of seconds announced in the title as that is our current granularity */ + int title_duration_seconds = (title->hours * 3600) + (title->minutes * 60) + (title->seconds); + [queueFileJob setObject:[NSNumber numberWithInt:title_duration_seconds] forKey:@"SourceTotalSeconds"]; + + [queueFileJob setObject:[fDstFile2Field stringValue] forKey:@"DestinationPath"]; + + /* Lets get the preset info if there is any */ + [queueFileJob setObject:[fPresetSelectedDisplay stringValue] forKey:@"PresetName"]; + [queueFileJob setObject:[NSNumber numberWithInt:[fPresetsOutlineView selectedRow]] forKey:@"PresetIndexNum"]; + + [queueFileJob setObject:[fDstFormatPopUp titleOfSelectedItem] forKey:@"FileFormat"]; + /* Chapter Markers*/ + /* If we are encoding by chapters and we have only one chapter or a title without chapters, set chapter markers to off. + Leave them on if we're doing point to point encoding, as libhb supports chapters when doing p2p. */ + if ([fEncodeStartStopPopUp indexOfSelectedItem] == 0 && + [fSrcChapterStartPopUp indexOfSelectedItem] == [fSrcChapterEndPopUp indexOfSelectedItem]) + { + [queueFileJob setObject:[NSNumber numberWithInt:0] forKey:@"ChapterMarkers"]; + } + else + { + [queueFileJob setObject:[NSNumber numberWithInt:[fCreateChapterMarkers state]] forKey:@"ChapterMarkers"]; + } + + /* We need to get the list of chapter names to put into an array and store + * in our queue, so they can be reapplied in prepareJob when this queue + * item comes up if Chapter Markers is set to on. + */ + [queueFileJob setObject:[fChapterTitlesDelegate chapterTitlesArray] forKey:@"ChapterNames"]; + + /* Allow Mpeg4 64 bit formatting +4GB file sizes */ + [queueFileJob setObject:[NSNumber numberWithInt:[fDstMp4LargeFileCheck state]] forKey:@"Mp4LargeFile"]; + /* Mux mp4 with http optimization */ + [queueFileJob setObject:[NSNumber numberWithInt:[fDstMp4HttpOptFileCheck state]] forKey:@"Mp4HttpOptimize"]; + /* Add iPod uuid atom */ + [queueFileJob setObject:[NSNumber numberWithInt:[fDstMp4iPodFileCheck state]] forKey:@"Mp4iPodCompatible"]; + + /* Codecs */ + /* Video encoder */ + [queueFileJob setObject:[fVidEncoderPopUp titleOfSelectedItem] forKey:@"VideoEncoder"]; + + /* x264 advanced options */ + if ([fX264UseAdvancedOptionsCheck state]) + { + // we are using the advanced panel + [queueFileJob setObject:[NSNumber numberWithInt:1] forKey: @"x264UseAdvancedOptions"]; + [queueFileJob setObject:[fAdvancedOptions optionsString] forKey:@"x264Option"]; + } + else + { + // we are using the x264 preset system + [queueFileJob setObject:[NSNumber numberWithInt:0] forKey: @"x264UseAdvancedOptions"]; + [queueFileJob setObject:[self x264Preset] forKey: @"x264Preset"]; + [queueFileJob setObject:[self x264Tune] forKey: @"x264Tune"]; + [queueFileJob setObject:[self x264OptionExtra] forKey: @"x264OptionExtra"]; + [queueFileJob setObject:[self h264Profile] forKey: @"h264Profile"]; + [queueFileJob setObject:[self h264Level] forKey: @"h264Level"]; + } + + /* FFmpeg (lavc) Option String */ + [queueFileJob setObject:[fAdvancedOptions optionsStringLavc] forKey:@"lavcOption"]; + + [queueFileJob setObject:[NSNumber numberWithInt:[[fVidQualityMatrix selectedCell] tag] + 1] forKey:@"VideoQualityType"]; + [queueFileJob setObject:[fVidBitrateField stringValue] forKey:@"VideoAvgBitrate"]; + [queueFileJob setObject:[NSNumber numberWithFloat:[fVidQualityRFField floatValue]] forKey:@"VideoQualitySlider"]; + /* Framerate */ + [queueFileJob setObject:[fVidRatePopUp titleOfSelectedItem] forKey:@"VideoFramerate"]; + /* Frame Rate Mode */ + if ([fFramerateMatrix selectedRow] == 1) // if selected we are cfr regardless of the frame rate popup + { + [queueFileJob setObject:@"cfr" forKey:@"VideoFramerateMode"]; + } + else + { + if ([fVidRatePopUp indexOfSelectedItem] == 0) // Same as source frame rate + { + [queueFileJob setObject:@"vfr" forKey:@"VideoFramerateMode"]; + } + else + { + [queueFileJob setObject:@"pfr" forKey:@"VideoFramerateMode"]; + } + + } + + + /* 2 Pass Encoding */ + [queueFileJob setObject:[NSNumber numberWithInt:[fVidTwoPassCheck state]] forKey:@"VideoTwoPass"]; + /* Turbo 2 pass Encoding fVidTurboPassCheck*/ + [queueFileJob setObject:[NSNumber numberWithInt:[fVidTurboPassCheck state]] forKey:@"VideoTurboTwoPass"]; + + /* Picture Sizing */ + /* Use Max Picture settings for whatever the dvd is.*/ + [queueFileJob setObject:[NSNumber numberWithInt:0] forKey:@"UsesMaxPictureSettings"]; + [queueFileJob setObject:[NSNumber numberWithInt:fTitle->job->width] forKey:@"PictureWidth"]; + [queueFileJob setObject:[NSNumber numberWithInt:fTitle->job->height] forKey:@"PictureHeight"]; + [queueFileJob setObject:[NSNumber numberWithInt:fTitle->job->keep_ratio] forKey:@"PictureKeepRatio"]; + [queueFileJob setObject:[NSNumber numberWithInt:fTitle->job->anamorphic.mode] forKey:@"PicturePAR"]; + [queueFileJob setObject:[NSNumber numberWithInt:fTitle->job->modulus] forKey:@"PictureModulus"]; + /* if we are custom anamorphic, store the exact storage, par and display dims */ + if (fTitle->job->anamorphic.mode == 3) + { + [queueFileJob setObject:[NSNumber numberWithInt:fTitle->job->modulus] forKey:@"PicturePARModulus"]; + + [queueFileJob setObject:[NSNumber numberWithInt:fTitle->job->width] forKey:@"PicturePARStorageWidth"]; + [queueFileJob setObject:[NSNumber numberWithInt:fTitle->job->height] forKey:@"PicturePARStorageHeight"]; + + [queueFileJob setObject:[NSNumber numberWithInt:fTitle->job->anamorphic.par_width] forKey:@"PicturePARPixelWidth"]; + [queueFileJob setObject:[NSNumber numberWithInt:fTitle->job->anamorphic.par_height] forKey:@"PicturePARPixelHeight"]; + + [queueFileJob setObject:[NSNumber numberWithFloat:fTitle->job->anamorphic.dar_width] forKey:@"PicturePARDisplayWidth"]; + [queueFileJob setObject:[NSNumber numberWithFloat:fTitle->job->anamorphic.dar_height] forKey:@"PicturePARDisplayHeight"]; + + } + + /* Text summaries of various settings */ + [queueFileJob setObject:[NSString stringWithString:[self pictureSettingsSummary]] + forKey:@"PictureSettingsSummary"]; + [queueFileJob setObject:[NSString stringWithString:[self pictureFiltersSummary]] + forKey:@"PictureFiltersSummary"]; + [queueFileJob setObject:[NSString stringWithString:[self muxerOptionsSummary]] + forKey:@"MuxerOptionsSummary"]; + + /* Set crop settings here */ + [queueFileJob setObject:[NSNumber numberWithInt:[fPictureController autoCrop]] forKey:@"PictureAutoCrop"]; + [queueFileJob setObject:[NSNumber numberWithInt:job->crop[0]] forKey:@"PictureTopCrop"]; + [queueFileJob setObject:[NSNumber numberWithInt:job->crop[1]] forKey:@"PictureBottomCrop"]; + [queueFileJob setObject:[NSNumber numberWithInt:job->crop[2]] forKey:@"PictureLeftCrop"]; + [queueFileJob setObject:[NSNumber numberWithInt:job->crop[3]] forKey:@"PictureRightCrop"]; + + /* Picture Filters */ + [queueFileJob setObject:[NSNumber numberWithInt:[fPictureController detelecine]] forKey:@"PictureDetelecine"]; + [queueFileJob setObject:[fPictureController detelecineCustomString] forKey:@"PictureDetelecineCustom"]; + + [queueFileJob setObject:[NSNumber numberWithInt:[fPictureController useDecomb]] forKey:@"PictureDecombDeinterlace"]; + [queueFileJob setObject:[NSNumber numberWithInt:[fPictureController decomb]] forKey:@"PictureDecomb"]; + [queueFileJob setObject:[fPictureController decombCustomString] forKey:@"PictureDecombCustom"]; + + [queueFileJob setObject:[NSNumber numberWithInt:[fPictureController deinterlace]] forKey:@"PictureDeinterlace"]; + [queueFileJob setObject:[fPictureController deinterlaceCustomString] forKey:@"PictureDeinterlaceCustom"]; + + [queueFileJob setObject:[NSNumber numberWithInt:[fPictureController denoise]] forKey:@"PictureDenoise"]; + [queueFileJob setObject:[fPictureController denoiseCustomString] forKey:@"PictureDenoiseCustom"]; + + [queueFileJob setObject:[NSString stringWithFormat:@"%d",[fPictureController deblock]] forKey:@"PictureDeblock"]; + + [queueFileJob setObject:[NSNumber numberWithInt:[fPictureController grayscale]] forKey:@"VideoGrayScale"]; + + /* Auto Passthru */ + [queueFileJob setObject:[NSNumber numberWithInt:[fAudioAllowAACPassCheck state]] forKey: @"AudioAllowAACPass"]; + [queueFileJob setObject:[NSNumber numberWithInt:[fAudioAllowAC3PassCheck state]] forKey: @"AudioAllowAC3Pass"]; + [queueFileJob setObject:[NSNumber numberWithInt:[fAudioAllowDTSHDPassCheck state]] forKey: @"AudioAllowDTSHDPass"]; + [queueFileJob setObject:[NSNumber numberWithInt:[fAudioAllowDTSPassCheck state]] forKey: @"AudioAllowDTSPass"]; + [queueFileJob setObject:[NSNumber numberWithInt:[fAudioAllowMP3PassCheck state]] forKey: @"AudioAllowMP3Pass"]; + // just in case we need it for display purposes + [queueFileJob setObject:[fAudioFallbackPopUp titleOfSelectedItem] forKey: @"AudioEncoderFallback"]; + // actual fallback encoder + [queueFileJob setObject:[NSNumber numberWithInt:[[fAudioFallbackPopUp selectedItem] tag]] forKey: @"JobAudioEncoderFallback"]; + + /* Audio */ + [fAudioDelegate prepareAudioForQueueFileJob: queueFileJob]; + + /* Subtitles */ + NSMutableArray *subtitlesArray = [[NSMutableArray alloc] initWithArray:[fSubtitlesDelegate getSubtitleArray] copyItems:YES]; + [queueFileJob setObject:[NSArray arrayWithArray: subtitlesArray] forKey:@"SubtitleList"]; + [subtitlesArray autorelease]; + + /* Now we go ahead and set the "job->values in the plist for passing right to fQueueEncodeLibhb */ + + [queueFileJob setObject:[NSNumber numberWithInt:[fSrcChapterStartPopUp indexOfSelectedItem] + 1] forKey:@"JobChapterStart"]; + + [queueFileJob setObject:[NSNumber numberWithInt:[fSrcChapterEndPopUp indexOfSelectedItem] + 1] forKey:@"JobChapterEnd"]; + + + [queueFileJob setObject:[NSNumber numberWithInt:[[fDstFormatPopUp selectedItem] tag]] forKey:@"JobFileFormatMux"]; + + /* Codecs */ + /* Video encoder */ + [queueFileJob setObject:[NSNumber numberWithInt:[[fVidEncoderPopUp selectedItem] tag]] forKey:@"JobVideoEncoderVcodec"]; + + /* Framerate */ + [queueFileJob setObject:[NSNumber numberWithInt:[fVidRatePopUp indexOfSelectedItem]] forKey:@"JobIndexVideoFramerate"]; + [queueFileJob setObject:[NSNumber numberWithInt:title->rate] forKey:@"JobVrate"]; + [queueFileJob setObject:[NSNumber numberWithInt:title->rate_base] forKey:@"JobVrateBase"]; + + /* Picture Sizing */ + /* Use Max Picture settings for whatever the dvd is.*/ + [queueFileJob setObject:[NSNumber numberWithInt:0] forKey:@"UsesMaxPictureSettings"]; + [queueFileJob setObject:[NSNumber numberWithInt:fTitle->job->width] forKey:@"PictureWidth"]; + [queueFileJob setObject:[NSNumber numberWithInt:fTitle->job->height] forKey:@"PictureHeight"]; + [queueFileJob setObject:[NSNumber numberWithInt:fTitle->job->keep_ratio] forKey:@"PictureKeepRatio"]; + [queueFileJob setObject:[NSNumber numberWithInt:fTitle->job->anamorphic.mode] forKey:@"PicturePAR"]; + + /* Set crop settings here */ + [queueFileJob setObject:[NSNumber numberWithInt:[fPictureController autoCrop]] forKey:@"PictureAutoCrop"]; + [queueFileJob setObject:[NSNumber numberWithInt:job->crop[0]] forKey:@"PictureTopCrop"]; + [queueFileJob setObject:[NSNumber numberWithInt:job->crop[1]] forKey:@"PictureBottomCrop"]; + [queueFileJob setObject:[NSNumber numberWithInt:job->crop[2]] forKey:@"PictureLeftCrop"]; + [queueFileJob setObject:[NSNumber numberWithInt:job->crop[3]] forKey:@"PictureRightCrop"]; + + + + /* we need to auto relase the queueFileJob and return it */ + [queueFileJob autorelease]; + return queueFileJob; + +} + +/* this is actually called from the queue controller to modify the queue array and return it back to the queue controller */ +- (void)moveObjectsInQueueArray:(NSMutableArray *)array fromIndexes:(NSIndexSet *)indexSet toIndex:(NSUInteger)insertIndex +{ + NSUInteger index = [indexSet lastIndex]; + NSUInteger aboveInsertIndexCount = 0; + + + NSUInteger removeIndex; + + if (index >= insertIndex) + { + removeIndex = index + aboveInsertIndexCount; + aboveInsertIndexCount++; + } + else + { + removeIndex = index; + insertIndex--; + } + + id object = [[QueueFileArray objectAtIndex:removeIndex] retain]; + [QueueFileArray removeObjectAtIndex:removeIndex]; + [QueueFileArray insertObject:object atIndex:insertIndex]; + [object release]; + + index = [indexSet indexLessThanIndex:index]; + + /* We save all of the Queue data here + * and it also gets sent back to the queue controller*/ + [self saveQueueFileItem]; + +} + + +#pragma mark - +#pragma mark Queue Job Processing + +- (void) incrementQueueItemDone:(int) queueItemDoneIndexNum +{ + /* Mark the encode just finished as done (status 0)*/ + [[QueueFileArray objectAtIndex:currentQueueEncodeIndex] setObject:[NSNumber numberWithInt:0] forKey:@"Status"]; + + /* We save all of the Queue data here */ + [self saveQueueFileItem]; + + /* Since we have now marked a queue item as done + * we can go ahead and increment currentQueueEncodeIndex + * so that if there is anything left in the queue we can + * go ahead and move to the next item if we want to */ + int queueItems = [QueueFileArray count]; + /* Check to see if there are any more pending items in the queue */ + int newQueueItemIndex = [self getNextPendingQueueIndex]; + /* If we still have more pending items in our queue, lets go to the next one */ + if (newQueueItemIndex >= 0 && newQueueItemIndex < queueItems) + { + /*Set our currentQueueEncodeIndex now to the newly found Pending encode as we own it */ + currentQueueEncodeIndex = newQueueItemIndex; + /* now we mark the queue item as Status = 1 ( being encoded ) so another instance can not come along and try to scan it while we are scanning */ + [[QueueFileArray objectAtIndex:currentQueueEncodeIndex] setObject:[NSNumber numberWithInt:1] forKey:@"Status"]; + [self writeToActivityLog: "incrementQueueItemDone new pending items found: %d", currentQueueEncodeIndex]; + [self saveQueueFileItem]; + /* now we can go ahead and scan the new pending queue item */ + [self performNewQueueScan:[[QueueFileArray objectAtIndex:currentQueueEncodeIndex] objectForKey:@"SourcePath"] scanTitleNum:[[[QueueFileArray objectAtIndex:currentQueueEncodeIndex] objectForKey:@"TitleNumber"]intValue]]; + + } + else + { + [self writeToActivityLog: "incrementQueueItemDone there are no more pending encodes"]; + /* Done encoding, allow system sleep for the encode handle */ + hb_system_sleep_allow(fQueueEncodeLibhb); + /* + * Since there are no more items to encode, go to queueCompletedAlerts + * for user specified alerts after queue completed + */ + [self queueCompletedAlerts]; + } +} + +/* Here we actually tell hb_scan to perform the source scan, using the path to source and title number*/ +- (void) performNewQueueScan:(NSString *) scanPath scanTitleNum: (int) scanTitleNum +{ + /* Tell HB to output a new activity log file for this encode */ + [outputPanel startEncodeLog:[[QueueFileArray objectAtIndex:currentQueueEncodeIndex] objectForKey:@"DestinationPath"]]; + + /* We now flag the queue item as being owned by this instance of HB using the PID */ + [[QueueFileArray objectAtIndex:currentQueueEncodeIndex] setObject:[NSNumber numberWithInt:pidNum] forKey:@"EncodingPID"]; + /* Get the currentQueueEncodeNameString from the queue item to display in the status field */ + currentQueueEncodeNameString = [[[[QueueFileArray objectAtIndex:currentQueueEncodeIndex] objectForKey:@"DestinationPath"] lastPathComponent]retain]; + /* We save all of the Queue data here */ + [self saveQueueFileItem]; + + /* use a bool to determine whether or not we can decrypt using vlc */ + BOOL cancelScanDecrypt = 0; + /* set the bool so that showNewScan knows to apply the appropriate queue + * settings as this is a queue rescan + */ + NSString *path = scanPath; + HBDVDDetector *detector = [HBDVDDetector detectorForPath:path]; + + if (cancelScanDecrypt == 0) + { + /* We actually pass the scan off to libhb here. + * If there is no title number passed to scan, we use "0" + * which causes the default behavior of a full source scan */ + if (scanTitleNum < 0) + { + scanTitleNum = 0; + } + if (scanTitleNum > 0) + { + [self writeToActivityLog: "scanning specifically for title: %d", scanTitleNum]; + } + /* + * Only scan 10 previews before an encode - additional previews are + * only useful for autocrop and static previews, which are already taken + * care of at this point + */ + hb_system_sleep_prevent(fQueueEncodeLibhb); + hb_scan(fQueueEncodeLibhb, [path UTF8String], scanTitleNum, 10, 0, 0); + } +} + +/* This assumes that we have re-scanned and loaded up a new queue item to send to libhb as fQueueEncodeLibhb */ +- (void) processNewQueueEncode +{ + hb_list_t * list = hb_get_titles( fQueueEncodeLibhb ); + hb_title_t * title = (hb_title_t *) hb_list_item( list,0 ); // is always zero since now its a single title scan + hb_job_t * job = title->job; + + if( !hb_list_count( list ) ) + { + [self writeToActivityLog: "processNewQueueEncode WARNING nothing found in the title list"]; + } + + NSMutableDictionary * queueToApply = [QueueFileArray objectAtIndex:currentQueueEncodeIndex]; + [self writeToActivityLog: "Preset: %s", [[queueToApply objectForKey:@"PresetName"] UTF8String]]; + [self writeToActivityLog: "processNewQueueEncode number of passes expected is: %d", ([[queueToApply objectForKey:@"VideoTwoPass"] intValue] + 1)]; + hb_job_set_file(job, [[queueToApply objectForKey:@"DestinationPath"] UTF8String]); + [self prepareJob]; + + /* + * If scanning we need to do some extra setup of the job. + */ + if (job->indepth_scan == 1) + { + char *x264_preset_tmp = job->x264_preset != NULL ? strdup(job->x264_preset) : NULL; + char *x264_tune_tmp = job->x264_tune != NULL ? strdup(job->x264_tune) : NULL; + char *advanced_opts_tmp = job->advanced_opts != NULL ? strdup(job->advanced_opts) : NULL; + char *h264_profile_tmp = job->h264_profile != NULL ? strdup(job->h264_profile) : NULL; + char *h264_level_tmp = job->h264_level != NULL ? strdup(job->h264_level) : NULL; + /* + * When subtitle scan is enabled do a fast pre-scan job + * which will determine which subtitles to enable, if any. + */ + hb_job_set_x264_preset (job, NULL); + hb_job_set_x264_tune (job, NULL); + hb_job_set_advanced_opts(job, NULL); + hb_job_set_h264_profile (job, NULL); + hb_job_set_h264_level (job, NULL); + job->pass = -1; + hb_add(fQueueEncodeLibhb, job); + /* + * reset the advanced settings + */ + hb_job_set_x264_preset (job, x264_preset_tmp); + hb_job_set_x264_tune (job, x264_tune_tmp); + hb_job_set_advanced_opts(job, advanced_opts_tmp); + hb_job_set_h264_profile (job, h264_profile_tmp); + hb_job_set_h264_level (job, h264_level_tmp); + free(x264_preset_tmp); + free(x264_tune_tmp); + free(advanced_opts_tmp); + free(h264_profile_tmp); + free(h264_level_tmp); + } + + + if ([[queueToApply objectForKey:@"VideoTwoPass"] intValue] == 1) + { + job->indepth_scan = 0; + job->pass = 1; + hb_add(fQueueEncodeLibhb, job); + job->pass = 2; + hb_add(fQueueEncodeLibhb, job); + + } + else + { + job->indepth_scan = 0; + job->pass = 0; + hb_add(fQueueEncodeLibhb, job); + } + + NSString *destinationDirectory = [[queueToApply objectForKey:@"DestinationPath"] stringByDeletingLastPathComponent]; + [[NSUserDefaults standardUserDefaults] setObject:destinationDirectory forKey:@"LastDestinationDirectory"]; + /* Lets mark our new encode as 1 or "Encoding" */ + [queueToApply setObject:[NSNumber numberWithInt:1] forKey:@"Status"]; + [self saveQueueFileItem]; + + /* libhb makes a copy of the job. So we need to free any resource + * that were allocated in construction of the job. This empties + * the audio, subtitle, and filter lists */ + hb_job_reset(job); + + /* We should be all setup so let 'er rip */ + [self doRip]; +} + +#pragma mark - +#pragma mark Queue Item Editing + +/* Rescans the chosen queue item back into the main window */ +- (void)rescanQueueItemToMainWindow:(NSString *) scanPath scanTitleNum: (int) scanTitleNum selectedQueueItem: (int) selectedQueueItem +{ + fqueueEditRescanItemNum = selectedQueueItem; + [self writeToActivityLog: "rescanQueueItemToMainWindow: Re-scanning queue item at index:%d",fqueueEditRescanItemNum]; + applyQueueToScan = YES; + /* Make sure we release the display name before reassigning it */ + [browsedSourceDisplayName release]; + /* Set the browsedSourceDisplayName for showNewScan */ + browsedSourceDisplayName = [[[QueueFileArray objectAtIndex:fqueueEditRescanItemNum] objectForKey:@"SourceName"] retain]; + [self performScan:scanPath scanTitleNum:scanTitleNum]; +} + + +/* We use this method after a queue item rescan for edit. + * it largely mirrors -selectPreset in terms of structure. + * Assumes that a queue item has been reloaded into the main window. + */ +- (IBAction)applyQueueSettingsToMainWindow:(id)sender +{ + NSMutableDictionary * queueToApply = [QueueFileArray objectAtIndex:fqueueEditRescanItemNum]; + hb_job_t * job = fTitle->job; + if (queueToApply) + { + [self writeToActivityLog: "applyQueueSettingsToMainWindow: queue item found"]; + } + /* Set title number and chapters */ + /* since the queue only scans a single title, its already been selected in showNewScan + so do not try to reset it here. However if we do decide to do full source scans on + a queue edit rescan, we would need it. So leaving in for now but commenting out. */ + //[fSrcTitlePopUp selectItemAtIndex: [[queueToApply objectForKey:@"TitleNumber"] intValue] - 1]; + + [fSrcChapterStartPopUp selectItemAtIndex: [[queueToApply objectForKey:@"ChapterStart"] intValue] - 1]; + [fSrcChapterEndPopUp selectItemAtIndex: [[queueToApply objectForKey:@"ChapterEnd"] intValue] - 1]; + + /* File Format */ + [fDstFormatPopUp selectItemWithTitle:[queueToApply objectForKey:@"FileFormat"]]; + [self formatPopUpChanged:nil]; + + /* Chapter Markers*/ + [fCreateChapterMarkers setState:[[queueToApply objectForKey:@"ChapterMarkers"] intValue]]; + /* Allow Mpeg4 64 bit formatting +4GB file sizes */ + [fDstMp4LargeFileCheck setState:[[queueToApply objectForKey:@"Mp4LargeFile"] intValue]]; + /* Mux mp4 with http optimization */ + [fDstMp4HttpOptFileCheck setState:[[queueToApply objectForKey:@"Mp4HttpOptimize"] intValue]]; + + /* video encoder */ + [fVidEncoderPopUp selectItemWithTitle:[queueToApply objectForKey:@"VideoEncoder"]]; + [fAdvancedOptions setLavcOptions: [queueToApply objectForKey:@"lavcOption"]]; + /* advanced x264 options */ + if ([[queueToApply objectForKey:@"x264UseAdvancedOptions"] intValue]) + { + // we are using the advanced panel + [fAdvancedOptions setOptions:[queueToApply objectForKey:@"x264Option"]]; + // preset does not use the x264 preset system, reset the widgets + [self setX264Preset: nil]; + [self setX264Tune: nil]; + [self setX264OptionExtra:[queueToApply objectForKey:@"x264Option"]]; + [self setH264Profile: nil]; + [self setH264Level: nil]; + // enable the advanced panel and update the widgets + [fX264UseAdvancedOptionsCheck setState:NSOnState]; + [self updateX264Widgets:nil]; + } + else + { + // we are using the x264 preset system + [self setX264Preset: [queueToApply objectForKey:@"x264Preset"]]; + [self setX264Tune: [queueToApply objectForKey:@"x264Tune"]]; + [self setX264OptionExtra:[queueToApply objectForKey:@"x264OptionExtra"]]; + [self setH264Profile: [queueToApply objectForKey:@"h264Profile"]]; + [self setH264Level: [queueToApply objectForKey:@"h264Level"]]; + // preset does not use the advanced panel, reset it + [fAdvancedOptions setOptions:@""]; + // disable the advanced panel and update the widgets + [fX264UseAdvancedOptionsCheck setState:NSOffState]; + [self updateX264Widgets:nil]; + } + + /* Lets run through the following functions to get variables set there */ + [self videoEncoderPopUpChanged:nil]; + /* Set the state of ipod compatible with Mp4iPodCompatible. Only for x264*/ + [fDstMp4iPodFileCheck setState:[[queueToApply objectForKey:@"Mp4iPodCompatible"] intValue]]; + [self calculateBitrate:nil]; + + /* Video quality */ + [fVidQualityMatrix selectCellAtRow:[[queueToApply objectForKey:@"VideoQualityType"] intValue] column:0]; + + [fVidBitrateField setStringValue:[queueToApply objectForKey:@"VideoAvgBitrate"]]; + + if ([[fVidEncoderPopUp selectedItem] tag] == HB_VCODEC_THEORA) + { + /* Since theora's qp value goes up from left to right, we can just set the slider float value */ + [fVidQualitySlider setFloatValue:[[queueToApply objectForKey:@"VideoQualitySlider"] floatValue]]; + } + else + { + /* Since ffmpeg and x264 use an "inverted" slider (lower qp/rf values indicate a higher quality) we invert the value on the slider */ + [fVidQualitySlider setFloatValue:([fVidQualitySlider maxValue] + [fVidQualitySlider minValue]) - [[queueToApply objectForKey:@"VideoQualitySlider"] floatValue]]; + } + + [self videoMatrixChanged:nil]; + + /* Video framerate */ + if ([[queueToApply objectForKey:@"VideoFramerate"] isEqualToString:@"Same as source"]) + { + /* Now set the Video Frame Rate Mode to either vfr or cfr according to the preset */ + if ([[queueToApply objectForKey:@"VideoFramerateMode"] isEqualToString:@"vfr"]) + { + [fFramerateMatrix selectCellAtRow:0 column:0]; // we want vfr + } + else + { + [fFramerateMatrix selectCellAtRow:1 column:0]; // we want cfr + } + } + else + { + /* Now set the Video Frame Rate Mode to either pfr or cfr according to the preset */ + if ([[queueToApply objectForKey:@"VideoFramerateMode"] isEqualToString:@"pfr"]) + { + [fFramerateMatrix selectCellAtRow:0 column:0]; // we want pfr + } + else + { + [fFramerateMatrix selectCellAtRow:1 column:0]; // we want cfr + } + } + [fVidRatePopUp selectItemWithTitle:[queueToApply objectForKey:@"VideoFramerate"]]; + [self videoFrameRateChanged:nil]; + + /* 2 Pass Encoding */ + [fVidTwoPassCheck setState:[[queueToApply objectForKey:@"VideoTwoPass"] intValue]]; + [self twoPassCheckboxChanged:nil]; + /* Turbo 1st pass for 2 Pass Encoding */ + [fVidTurboPassCheck setState:[[queueToApply objectForKey:@"VideoTurboTwoPass"] intValue]]; + + /* Auto Passthru */ + [fAudioAllowAACPassCheck setState:[[queueToApply objectForKey:@"AudioAllowAACPass"] intValue]]; + [fAudioAllowAC3PassCheck setState:[[queueToApply objectForKey:@"AudioAllowAC3Pass"] intValue]]; + [fAudioAllowDTSHDPassCheck setState:[[queueToApply objectForKey:@"AudioAllowDTSHDPass"] intValue]]; + [fAudioAllowDTSPassCheck setState:[[queueToApply objectForKey:@"AudioAllowDTSPass"] intValue]]; + [fAudioAllowMP3PassCheck setState:[[queueToApply objectForKey:@"AudioAllowMP3Pass"] intValue]]; + [fAudioFallbackPopUp selectItemWithTitle:[queueToApply objectForKey:@"AudioEncoderFallback"]]; + + /* Audio */ + /* Now lets add our new tracks to the audio list here */ + [fAudioDelegate addTracksFromQueue: queueToApply]; + + /*Subtitles*/ + /* Crashy crashy right now, working on it */ + [fSubtitlesDelegate setNewSubtitles:[queueToApply objectForKey:@"SubtitleList"]]; + [fSubtitlesTable reloadData]; + /* Picture Settings */ + + /* If Cropping is set to custom, then recall all four crop values from + when the preset was created and apply them */ + if ([[queueToApply objectForKey:@"PictureAutoCrop"] intValue] == 0) + { + [fPictureController setAutoCrop:NO]; + + /* Here we use the custom crop values saved at the time the preset was saved */ + job->crop[0] = [[queueToApply objectForKey:@"PictureTopCrop"] intValue]; + job->crop[1] = [[queueToApply objectForKey:@"PictureBottomCrop"] intValue]; + job->crop[2] = [[queueToApply objectForKey:@"PictureLeftCrop"] intValue]; + job->crop[3] = [[queueToApply objectForKey:@"PictureRightCrop"] intValue]; + + } + else /* if auto crop has been saved in preset, set to auto and use post scan auto crop */ + { + [fPictureController setAutoCrop:YES]; + /* Here we use the auto crop values determined right after scan */ + job->crop[0] = AutoCropTop; + job->crop[1] = AutoCropBottom; + job->crop[2] = AutoCropLeft; + job->crop[3] = AutoCropRight; + + } + + job->modulus = [[queueToApply objectForKey:@"PictureModulus"] intValue]; + + /* + * if the preset specifies neither max. width nor height + * (both are 0), use the max. picture size + * + * if the specified non-zero dimensions exceed those of the + * source, also use the max. picture size (no upscaling) + */ + if (([[queueToApply objectForKey:@"PictureWidth"] intValue] <= 0 && + [[queueToApply objectForKey:@"PictureHeight"] intValue] <= 0) || + ([[queueToApply objectForKey:@"PictureWidth"] intValue] > fTitle->width && + [[queueToApply objectForKey:@"PictureHeight"] intValue] > fTitle->height) || + ([[queueToApply objectForKey:@"PictureHeight"] intValue] <= 0 && + [[queueToApply objectForKey:@"PictureWidth"] intValue] > fTitle->width) || + ([[queueToApply objectForKey:@"PictureWidth"] intValue] <= 0 && + [[queueToApply objectForKey:@"PictureHeight"] intValue] > fTitle->height)) + { + /* use the source's width/height to avoid upscaling */ + [self revertPictureSizeToMax:nil]; + } + else // source width/height is >= preset width/height + { + /* use the preset values for width/height */ + job->width = [[queueToApply objectForKey:@"PictureWidth"] intValue]; + job->height = [[queueToApply objectForKey:@"PictureHeight"] intValue]; + } + job->keep_ratio = [[queueToApply objectForKey:@"PictureKeepRatio"] intValue]; + if (job->keep_ratio == 1) + { + hb_fix_aspect( job, HB_KEEP_WIDTH ); + if( job->height > fTitle->height ) + { + job->height = fTitle->height; + hb_fix_aspect( job, HB_KEEP_HEIGHT ); + } + } + job->anamorphic.mode = [[queueToApply objectForKey:@"PicturePAR"] intValue]; + job->modulus = [[queueToApply objectForKey:@"PictureModulus"] intValue]; + + /* Filters */ + + /* We only allow *either* Decomb or Deinterlace. So check for the PictureDecombDeinterlace key. */ + [fPictureController setUseDecomb:1]; + [fPictureController setDecomb:0]; + [fPictureController setDeinterlace:0]; + if ([[queueToApply objectForKey:@"PictureDecombDeinterlace"] intValue] == 1) + { + /* we are using decomb */ + /* Decomb */ + if ([[queueToApply objectForKey:@"PictureDecomb"] intValue] > 0) + { + [fPictureController setDecomb:[[queueToApply objectForKey:@"PictureDecomb"] intValue]]; + + /* if we are using "Custom" in the decomb setting, also set the custom string*/ + if ([[queueToApply objectForKey:@"PictureDecomb"] intValue] == 1) + { + [fPictureController setDecombCustomString:[queueToApply objectForKey:@"PictureDecombCustom"]]; + } + } + } + else + { + /* We are using Deinterlace */ + /* Deinterlace */ + if ([[queueToApply objectForKey:@"PictureDeinterlace"] intValue] > 0) + { + [fPictureController setUseDecomb:0]; + [fPictureController setDeinterlace:[[queueToApply objectForKey:@"PictureDeinterlace"] intValue]]; + /* if we are using "Custom" in the deinterlace setting, also set the custom string*/ + if ([[queueToApply objectForKey:@"PictureDeinterlace"] intValue] == 1) + { + [fPictureController setDeinterlaceCustomString:[queueToApply objectForKey:@"PictureDeinterlaceCustom"]]; + } + } + } + + + /* Detelecine */ + if ([[queueToApply objectForKey:@"PictureDetelecine"] intValue] > 0) + { + [fPictureController setDetelecine:[[queueToApply objectForKey:@"PictureDetelecine"] intValue]]; + /* if we are using "Custom" in the detelecine setting, also set the custom string*/ + if ([[queueToApply objectForKey:@"PictureDetelecine"] intValue] == 1) + { + [fPictureController setDetelecineCustomString:[queueToApply objectForKey:@"PictureDetelecineCustom"]]; + } + } + else + { + [fPictureController setDetelecine:0]; + } + + /* Denoise */ + if ([[queueToApply objectForKey:@"PictureDenoise"] intValue] > 0) + { + [fPictureController setDenoise:[[queueToApply objectForKey:@"PictureDenoise"] intValue]]; + /* if we are using "Custom" in the denoise setting, also set the custom string*/ + if ([[queueToApply objectForKey:@"PictureDenoise"] intValue] == 1) + { + [fPictureController setDenoiseCustomString:[queueToApply objectForKey:@"PictureDenoiseCustom"]]; + } + } + else + { + [fPictureController setDenoise:0]; + } + + /* Deblock */ + if ([[queueToApply objectForKey:@"PictureDeblock"] intValue] == 1) + { + /* if its a one, then its the old on/off deblock, set on to 5*/ + [fPictureController setDeblock:5]; + } + else + { + /* use the settings intValue */ + [fPictureController setDeblock:[[queueToApply objectForKey:@"PictureDeblock"] intValue]]; + } + + if ([[queueToApply objectForKey:@"VideoGrayScale"] intValue] == 1) + { + [fPictureController setGrayscale:1]; + } + else + { + [fPictureController setGrayscale:0]; + } + + /* we call SetTitle: in fPictureController so we get an instant update in the Picture Settings window */ + [fPictureController SetTitle:fTitle]; + [self calculatePictureSizing:nil]; + + /* somehow we need to figure out a way to tie the queue item to a preset if it used one */ + //[queueFileJob setObject:[fPresetSelectedDisplay stringValue] forKey:@"PresetName"]; + //[queueFileJob setObject:[NSNumber numberWithInt:[fPresetsOutlineView selectedRow]] forKey:@"PresetIndexNum"]; + if ([queueToApply objectForKey:@"PresetIndexNum"]) // This item used a preset so insert that info + { + /* Deselect the currently selected Preset if there is one*/ + //[fPresetsOutlineView selectRowIndexes:[NSIndexSet indexSetWithIndex:[[queueToApply objectForKey:@"PresetIndexNum"] intValue]] byExtendingSelection:NO]; + //[self selectPreset:nil]; + + //[fPresetsOutlineView selectRow:[[queueToApply objectForKey:@"PresetIndexNum"] intValue]]; + /* Change UI to show "Custom" settings are being used */ + //[fPresetSelectedDisplay setStringValue: [[queueToApply objectForKey:@"PresetName"] stringValue]]; + } + else + { + /* Deselect the currently selected Preset if there is one*/ + [fPresetsOutlineView deselectRow:[fPresetsOutlineView selectedRow]]; + /* Change UI to show "Custom" settings are being used */ + [fPresetSelectedDisplay setStringValue: @"Custom"]; + } + + /* We need to set this bool back to NO, in case the user wants to do a scan */ + //applyQueueToScan = NO; + + /* Not that source is loaded and settings applied, delete the queue item from the queue */ + [self writeToActivityLog: "applyQueueSettingsToMainWindow: deleting queue item:%d",fqueueEditRescanItemNum]; + [self removeQueueFileItem:fqueueEditRescanItemNum]; +} + + + +#pragma mark - +#pragma mark Live Preview +/* Note,this is much like prepareJob, but directly sets the job vars so Picture Preview + * can encode to its temp preview directory and playback. This is *not* used for any actual user + * encodes + */ +- (void) prepareJobForPreview +{ + hb_list_t * list = hb_get_titles( fHandle ); + hb_title_t * title = (hb_title_t *) hb_list_item( list, + [fSrcTitlePopUp indexOfSelectedItem] ); + hb_job_t * job = title->job; + hb_filter_object_t * filter; + /* set job->angle for libdvdnav */ + job->angle = [fSrcAnglePopUp indexOfSelectedItem] + 1; + /* Chapter selection */ + job->chapter_start = [fSrcChapterStartPopUp indexOfSelectedItem] + 1; + job->chapter_end = [fSrcChapterEndPopUp indexOfSelectedItem] + 1; + + /* Format (Muxer) and Video Encoder */ + job->mux = [[fDstFormatPopUp selectedItem] tag]; + job->vcodec = [[fVidEncoderPopUp selectedItem] tag]; + job->fastfirstpass = 0; + + job->chapter_markers = 0; + + if (job->vcodec == HB_VCODEC_X264) + { + /* advanced x264 options */ + NSString *tmpString; + // translate zero-length strings to NULL for libhb + const char *x264_preset = NULL; + const char *x264_tune = NULL; + const char *advanced_opts = NULL; + const char *h264_profile = NULL; + const char *h264_level = NULL; + if ([fX264UseAdvancedOptionsCheck state]) + { + // we are using the advanced panel + if ([(tmpString = [fAdvancedOptions optionsString]) length]) + { + advanced_opts = [tmpString UTF8String]; + } + } + else + { + // we are using the x264 preset system + if ([(tmpString = [self x264Tune]) length]) + { + x264_tune = [tmpString UTF8String]; + } + if ([(tmpString = [self x264OptionExtra]) length]) + { + advanced_opts = [tmpString UTF8String]; + } + if ([(tmpString = [self h264Profile]) length]) + { + h264_profile = [tmpString UTF8String]; + } + if ([(tmpString = [self h264Level]) length]) + { + h264_level = [tmpString UTF8String]; + } + x264_preset = [[self x264Preset] UTF8String]; + } + hb_job_set_x264_preset (job, x264_preset); + hb_job_set_x264_tune (job, x264_tune); + hb_job_set_advanced_opts(job, advanced_opts); + hb_job_set_h264_profile (job, h264_profile); + hb_job_set_h264_level (job, h264_level); + } + else if (job->vcodec & HB_VCODEC_FFMPEG_MASK) + { + hb_job_set_advanced_opts(job, + [[fAdvancedOptions optionsStringLavc] + UTF8String]); + } + + /* Video settings */ + + if( [fVidRatePopUp indexOfSelectedItem] > 0 ) + { + /* a specific framerate has been chosen */ + job->vrate = 27000000; + job->vrate_base = hb_video_rates[[fVidRatePopUp indexOfSelectedItem]-1].rate; + if ([fFramerateMatrix selectedRow] == 1) + { + // CFR + job->cfr = 1; + } + else + { + // PFR + job->cfr = 2; + } + } + else + { + /* same as source */ + job->vrate = title->rate; + job->vrate_base = title->rate_base; + if ([fFramerateMatrix selectedRow] == 1) + { + // CFR + job->cfr = 1; + } + else + { + // VFR + job->cfr = 0; + } + } + + switch( [[fVidQualityMatrix selectedCell] tag] ) + { + case 0: + /* ABR */ + job->vquality = -1.0; + job->vbitrate = [fVidBitrateField intValue]; + break; + case 1: + /* Constant Quality */ + job->vquality = [fVidQualityRFField floatValue]; + job->vbitrate = 0; + break; + } + + /* Subtitle settings */ + NSMutableArray *subtitlesArray = [[NSMutableArray alloc] initWithArray:[fSubtitlesDelegate getSubtitleArray] copyItems:YES]; + + +int subtitle; +int force; +int burned; +int def; +bool one_burned = FALSE; + + int i = 0; + NSEnumerator *enumerator = [subtitlesArray objectEnumerator]; + id tempObject; + while (tempObject = [enumerator nextObject]) + { + + subtitle = [[tempObject objectForKey:@"subtitleSourceTrackNum"] intValue]; + force = [[tempObject objectForKey:@"subtitleTrackForced"] intValue]; + burned = [[tempObject objectForKey:@"subtitleTrackBurned"] intValue]; + def = [[tempObject objectForKey:@"subtitleTrackDefault"] intValue]; + + /* since the subtitleSourceTrackNum 0 is "None" in our array of the subtitle popups, + * we want to ignore it for display as well as encoding. + */ + if (subtitle > 0) + { + /* if i is 0, then we are in the first item of the subtitles which we need to + * check for the "Foreign Audio Search" which would be subtitleSourceTrackNum of 1 + * bearing in mind that for all tracks subtitleSourceTrackNum of 0 is None. + */ + + /* if we are on the first track and using "Foreign Audio Search" */ + if (i == 0 && subtitle == 1) + { + /* NOTE: Currently foreign language search is borked for preview. + * Commented out but left in for initial commit. */ + + + [self writeToActivityLog: "Foreign Language Search: %d", 1]; + + job->indepth_scan = 1; + + if (burned != 1) + { + job->select_subtitle_config.dest = PASSTHRUSUB; + } + else + { + job->select_subtitle_config.dest = RENDERSUB; + } + + job->select_subtitle_config.force = force; + job->select_subtitle_config.default_track = def; + } + else + { + /* if we are getting the subtitles from an external srt file */ + if ([[tempObject objectForKey:@"subtitleSourceTrackType"] intValue] == SRTSUB) + { + hb_subtitle_config_t sub_config; + + sub_config.offset = [[tempObject objectForKey:@"subtitleTrackSrtOffset"] intValue]; + + /* we need to srncpy file path and char code */ + strncpy(sub_config.src_filename, [[tempObject objectForKey:@"subtitleSourceSrtFilePath"] UTF8String], 255); + sub_config.src_filename[255] = 0; + strncpy(sub_config.src_codeset, [[tempObject objectForKey:@"subtitleTrackSrtCharCode"] UTF8String], 39); + sub_config.src_codeset[39] = 0; + + sub_config.force = 0; + sub_config.dest = PASSTHRUSUB; + sub_config.default_track = def; + + hb_srt_add( job, &sub_config, [[tempObject objectForKey:@"subtitleTrackSrtLanguageIso3"] UTF8String]); + continue; + } + + /* for the actual source tracks, we must subtract the non source entries so + * that the menu index matches the source subtitle_list index for convenience */ + if( i == 0 ) + { + /* for the first track, the source tracks start at menu index 2 ( None is 0, + * Foreign Language Search is 1) so subtract 2 */ + subtitle = subtitle - 2; + } + else + { + /* for all other tracks, the source tracks start at menu index 1 (None is 0) + * so subtract 1. */ + subtitle = subtitle - 1; + } + + /* We are setting a source subtitle so access the source subtitle info */ + hb_subtitle_t * subt = (hb_subtitle_t *) hb_list_item( title->list_subtitle, subtitle ); + + if( subt != NULL ) + { + hb_subtitle_config_t sub_config = subt->config; + + if( !burned && hb_subtitle_can_pass( subt->source, job->mux ) ) + { + sub_config.dest = PASSTHRUSUB; + } + else if( hb_subtitle_can_burn( subt->source ) ) + { + // Only allow one subtitle to be burned into the video + if( one_burned ) + continue; + one_burned = TRUE; + sub_config.dest = RENDERSUB; + } + + sub_config.force = force; + sub_config.default_track = def; + hb_subtitle_add( job, &sub_config, subtitle ); + } + } + } + i++; + } + if( one_burned ) + { + filter = hb_filter_init( HB_FILTER_RENDER_SUB ); + hb_add_filter( job, filter, [[NSString stringWithFormat:@"%d:%d:%d:%d", + job->crop[0], job->crop[1], + job->crop[2], job->crop[3]] UTF8String] ); + } + + + +[subtitlesArray autorelease]; + + + /* Auto Passthru */ + job->acodec_copy_mask = 0; + if ([fAudioAllowAACPassCheck state] == NSOnState) + { + job->acodec_copy_mask |= HB_ACODEC_FFAAC; + } + if ([fAudioAllowAC3PassCheck state] == NSOnState) + { + job->acodec_copy_mask |= HB_ACODEC_AC3; + } + if ([fAudioAllowDTSHDPassCheck state] == NSOnState) + { + job->acodec_copy_mask |= HB_ACODEC_DCA_HD; + } + if ([fAudioAllowDTSPassCheck state] == NSOnState) + { + job->acodec_copy_mask |= HB_ACODEC_DCA; + } + if ([fAudioAllowMP3PassCheck state] == NSOnState) + { + job->acodec_copy_mask |= HB_ACODEC_MP3; + } + job->acodec_fallback = [[fAudioFallbackPopUp selectedItem] tag]; + + /* Audio tracks and mixdowns */ + [fAudioDelegate prepareAudioForJob: job]; + + + + /* Filters */ + + /* Though Grayscale is not really a filter, per se + * we put it here since its in the filters panel + */ + + if ([fPictureController grayscale]) + { + job->grayscale = 1; + } + else + { + job->grayscale = 0; + } + + /* Now lets call the filters if applicable. + * The order of the filters is critical + */ + + + /* Detelecine */ + filter = hb_filter_init( HB_FILTER_DETELECINE ); + if ([fPictureController detelecine] == 1) + { + /* use a custom detelecine string */ + hb_add_filter( job, filter, [[fPictureController detelecineCustomString] UTF8String] ); + } + else if ([fPictureController detelecine] == 2) + { + /* Default */ + hb_add_filter( job, filter, NULL ); + } + + + + if ([fPictureController useDecomb] == 1) + { + /* Decomb */ + filter = hb_filter_init( HB_FILTER_DECOMB ); + if ([fPictureController decomb] == 1) + { + /* use a custom decomb string */ + hb_add_filter( job, filter, [[fPictureController decombCustomString] UTF8String] ); + } + else if ([fPictureController decomb] == 2) + { + /* use libhb defaults */ + hb_add_filter( job, filter, NULL ); + } + else if ([fPictureController decomb] == 3) + { + /* use old defaults (decomb fast) */ + hb_add_filter( job, filter, "7:2:6:9:1:80" ); + } + else if ([fPictureController decomb] == 4) + { + /* decomb 3 with bobbing enabled */ + hb_add_filter( job, filter, "455" ); + } + } + else + { + /* Deinterlace */ + filter = hb_filter_init( HB_FILTER_DEINTERLACE ); + if ([fPictureController deinterlace] == 1) + { + /* we add the custom string if present */ + hb_add_filter( job, filter, [[fPictureController deinterlaceCustomString] UTF8String] ); + } + else if ([fPictureController deinterlace] == 2) + { + /* Run old deinterlacer fd by default */ + hb_add_filter( job, filter, "0" ); + } + else if ([fPictureController deinterlace] == 3) + { + /* Yadif mode 0 (without spatial deinterlacing) */ + hb_add_filter( job, filter, "1" ); + } + else if ([fPictureController deinterlace] == 4) + { + /* Yadif (with spatial deinterlacing) */ + hb_add_filter( job, filter, "3" ); + } + else if ([fPictureController deinterlace] == 5) + { + /* Yadif (with spatial deinterlacing and bobbing) */ + hb_add_filter( job, filter, "15" ); + } + } + + /* Denoise */ + filter = hb_filter_init( HB_FILTER_DENOISE ); + if ([fPictureController denoise] == 1) // custom in popup + { + /* we add the custom string if present */ + hb_add_filter( job, filter, [[fPictureController denoiseCustomString] UTF8String] ); + } + else if ([fPictureController denoise] == 2) // Weak in popup + { + hb_add_filter( job, filter, "2:1:2:3" ); + } + else if ([fPictureController denoise] == 3) // Medium in popup + { + hb_add_filter( job, filter, "3:2:2:3" ); + } + else if ([fPictureController denoise] == 4) // Strong in popup + { + hb_add_filter( job, filter, "7:7:5:5" ); + } + + + /* Deblock (uses pp7 default) */ + /* NOTE: even though there is a valid deblock setting of 0 for the filter, for + * the macgui's purposes a value of 0 actually means to not even use the filter + * current hb_filter_deblock.settings valid ranges are from 5 - 15 + */ + filter = hb_filter_init( HB_FILTER_DEBLOCK ); + if ([fPictureController deblock] != 0) + { + NSString *deblockStringValue = [NSString stringWithFormat: @"%d",[fPictureController deblock]]; + hb_add_filter( job, filter, [deblockStringValue UTF8String] ); + } + + /* Add Crop/Scale filter */ + filter = hb_filter_init( HB_FILTER_CROP_SCALE ); + hb_add_filter( job, filter, [[NSString stringWithFormat:@"%d:%d:%d:%d:%d:%d", + job->width,job->height, + job->crop[0], job->crop[1], + job->crop[2], job->crop[3]] UTF8String] ); + + /* Add framerate shaping filter */ + filter = hb_filter_init( HB_FILTER_VFR ); + hb_add_filter( job, filter, [[NSString stringWithFormat:@"%d:%d:%d", + job->cfr, job->vrate, job->vrate_base] UTF8String] ); +} + + +#pragma mark - +#pragma mark Job Handling + + +- (void) prepareJob +{ + + NSMutableDictionary * queueToApply = [QueueFileArray objectAtIndex:currentQueueEncodeIndex]; + hb_list_t * list = hb_get_titles( fQueueEncodeLibhb ); + hb_title_t * title = (hb_title_t *) hb_list_item( list,0 ); // is always zero since now its a single title scan + hb_job_t * job = title->job; + hb_audio_config_t * audio; + hb_filter_object_t * filter; + /* Title Angle for dvdnav */ + job->angle = [[queueToApply objectForKey:@"TitleAngle"] intValue]; + + if([[queueToApply objectForKey:@"fEncodeStartStop"] intValue] == 0) + { + /* Chapter selection */ + [self writeToActivityLog: "Start / Stop set to chapters"]; + job->chapter_start = [[queueToApply objectForKey:@"JobChapterStart"] intValue]; + job->chapter_end = [[queueToApply objectForKey:@"JobChapterEnd"] intValue]; + } + else if ([[queueToApply objectForKey:@"fEncodeStartStop"] intValue] == 1) + { + /* we are pts based start / stop */ + [self writeToActivityLog: "Start / Stop set to seconds…"]; + + /* Point A to Point B. Time to time in seconds.*/ + /* get the start seconds from the start seconds field */ + int start_seconds = [[queueToApply objectForKey:@"StartSeconds"] intValue]; + job->pts_to_start = start_seconds * 90000LL; + /* Stop seconds is actually the duration of encode, so subtract the end seconds from the start seconds */ + int stop_seconds = [[queueToApply objectForKey:@"StopSeconds"] intValue]; + job->pts_to_stop = stop_seconds * 90000LL; + + } + else if ([[queueToApply objectForKey:@"fEncodeStartStop"] intValue] == 2) + { + /* we are frame based start / stop */ + [self writeToActivityLog: "Start / Stop set to frames…"]; + + /* Point A to Point B. Frame to frame */ + /* get the start frame from the start frame field */ + int start_frame = [[queueToApply objectForKey:@"StartFrame"] intValue]; + job->frame_to_start = start_frame; + /* get the frame to stop on from the end frame field */ + int stop_frame = [[queueToApply objectForKey:@"StopFrame"] intValue]; + job->frame_to_stop = stop_frame; + + } + + + + + /* Format (Muxer) and Video Encoder */ + job->mux = [[queueToApply objectForKey:@"JobFileFormatMux"] intValue]; + job->vcodec = [[queueToApply objectForKey:@"JobVideoEncoderVcodec"] intValue]; + + + /* If mpeg-4, then set mpeg-4 specific options like chapters and > 4gb file sizes */ + if( [[queueToApply objectForKey:@"Mp4LargeFile"] intValue] == 1) + { + job->largeFileSize = 1; + } + else + { + job->largeFileSize = 0; + } + /* We set http optimized mp4 here */ + if( [[queueToApply objectForKey:@"Mp4HttpOptimize"] intValue] == 1 ) + { + job->mp4_optimize = 1; + } + else + { + job->mp4_optimize = 0; + } + + + /* We set the chapter marker extraction here based on the format being + mpeg4 or mkv and the checkbox being checked */ + if ([[queueToApply objectForKey:@"ChapterMarkers"] intValue] == 1) + { + job->chapter_markers = 1; + + /* now lets get our saved chapter names out the array in the queue file + * and insert them back into the title chapter list. We have it here, + * because unless we are inserting chapter markers there is no need to + * spend the overhead of iterating through the chapter names array imo + * Also, note that if for some reason we don't apply chapter names, the + * chapters just come out 001, 002, etc. etc. + */ + + NSMutableArray *ChapterNamesArray = [queueToApply objectForKey:@"ChapterNames"]; + int i = 0; + NSEnumerator *enumerator = [ChapterNamesArray objectEnumerator]; + id tempObject; + while (tempObject = [enumerator nextObject]) + { + hb_chapter_t *chapter = (hb_chapter_t *) hb_list_item( job->list_chapter, i ); + if( chapter != NULL ) + { + hb_chapter_set_title( chapter, [tempObject UTF8String] ); + } + i++; + } + } + else + { + job->chapter_markers = 0; + } + + if (job->vcodec == HB_VCODEC_X264) + { + /* iPod 5G atom */ + job->ipod_atom = ([[queueToApply objectForKey:@"Mp4iPodCompatible"] + intValue] == 1); + + /* set fastfirstpass if 2-pass and Turbo are enabled */ + if ([[queueToApply objectForKey:@"VideoTwoPass"] intValue] == 1) + { + job->fastfirstpass = ([[queueToApply objectForKey:@"VideoTurboTwoPass"] + intValue] == 1); + } + + /* advanced x264 options */ + NSString *tmpString; + // translate zero-length strings to NULL for libhb + const char *x264_preset = NULL; + const char *x264_tune = NULL; + const char *advanced_opts = NULL; + const char *h264_profile = NULL; + const char *h264_level = NULL; + if ([[queueToApply objectForKey:@"x264UseAdvancedOptions"] intValue]) + { + // we are using the advanced panel + if ([(tmpString = [queueToApply objectForKey:@"x264Option"]) length]) + { + advanced_opts = [tmpString UTF8String]; + } + } + else + { + // we are using the x264 preset system + if ([(tmpString = [queueToApply objectForKey:@"x264Tune"]) length]) + { + x264_tune = [tmpString UTF8String]; + } + if ([(tmpString = [queueToApply objectForKey:@"x264OptionExtra"]) length]) + { + advanced_opts = [tmpString UTF8String]; + } + if ([(tmpString = [queueToApply objectForKey:@"h264Profile"]) length]) + { + h264_profile = [tmpString UTF8String]; + } + if ([(tmpString = [queueToApply objectForKey:@"h264Level"]) length]) + { + h264_level = [tmpString UTF8String]; + } + x264_preset = [[queueToApply objectForKey:@"x264Preset"] UTF8String]; + } + hb_job_set_x264_preset (job, x264_preset); + hb_job_set_x264_tune (job, x264_tune); + hb_job_set_advanced_opts(job, advanced_opts); + hb_job_set_h264_profile (job, h264_profile); + hb_job_set_h264_level (job, h264_level); + } + else if (job->vcodec & HB_VCODEC_FFMPEG_MASK) + { + hb_job_set_advanced_opts(job, + [[queueToApply objectForKey:@"lavcOption"] + UTF8String]); + } + + + /* Picture Size Settings */ + job->width = [[queueToApply objectForKey:@"PictureWidth"] intValue]; + job->height = [[queueToApply objectForKey:@"PictureHeight"] intValue]; + + job->keep_ratio = [[queueToApply objectForKey:@"PictureKeepRatio"] intValue]; + job->anamorphic.mode = [[queueToApply objectForKey:@"PicturePAR"] intValue]; + job->modulus = [[queueToApply objectForKey:@"PictureModulus"] intValue]; + if ([[queueToApply objectForKey:@"PicturePAR"] intValue] == 3) + { + /* insert our custom values here for capuj */ + job->width = [[queueToApply objectForKey:@"PicturePARStorageWidth"] intValue]; + job->height = [[queueToApply objectForKey:@"PicturePARStorageHeight"] intValue]; + + job->modulus = [[queueToApply objectForKey:@"PicturePARModulus"] intValue]; + + job->anamorphic.par_width = [[queueToApply objectForKey:@"PicturePARPixelWidth"] intValue]; + job->anamorphic.par_height = [[queueToApply objectForKey:@"PicturePARPixelHeight"] intValue]; + + job->anamorphic.dar_width = [[queueToApply objectForKey:@"PicturePARDisplayWidth"] floatValue]; + job->anamorphic.dar_height = [[queueToApply objectForKey:@"PicturePARDisplayHeight"] floatValue]; + } + + /* Here we use the crop values saved at the time the preset was saved */ + job->crop[0] = [[queueToApply objectForKey:@"PictureTopCrop"] intValue]; + job->crop[1] = [[queueToApply objectForKey:@"PictureBottomCrop"] intValue]; + job->crop[2] = [[queueToApply objectForKey:@"PictureLeftCrop"] intValue]; + job->crop[3] = [[queueToApply objectForKey:@"PictureRightCrop"] intValue]; + + /* Video settings */ + /* Framerate */ + + if( [[queueToApply objectForKey:@"JobIndexVideoFramerate"] intValue] > 0 ) + { + /* a specific framerate has been chosen */ + job->vrate = 27000000; + job->vrate_base = hb_video_rates[[[queueToApply objectForKey:@"JobIndexVideoFramerate"] intValue]-1].rate; + if ([[queueToApply objectForKey:@"VideoFramerateMode"] isEqualToString:@"cfr"]) + { + // CFR + job->cfr = 1; + } + else + { + // PFR + job->cfr = 2; + } + } + else + { + /* same as source */ + job->vrate = [[queueToApply objectForKey:@"JobVrate"] intValue]; + job->vrate_base = [[queueToApply objectForKey:@"JobVrateBase"] intValue]; + if ([[queueToApply objectForKey:@"VideoFramerateMode"] isEqualToString:@"cfr"]) + { + // CFR + job->cfr = 1; + } + else + { + // VFR + job->cfr = 0; + } + } + + if ( [[queueToApply objectForKey:@"VideoQualityType"] intValue] != 2 ) + { + job->vquality = -1.0; + job->vbitrate = [[queueToApply objectForKey:@"VideoAvgBitrate"] intValue]; + } + if ( [[queueToApply objectForKey:@"VideoQualityType"] intValue] == 2 ) + { + job->vquality = [[queueToApply objectForKey:@"VideoQualitySlider"] floatValue]; + job->vbitrate = 0; + + } + + job->grayscale = [[queueToApply objectForKey:@"VideoGrayScale"] intValue]; + + + +#pragma mark - +#pragma mark Process Subtitles to libhb + +/* Map the settings in the dictionaries for the SubtitleList array to match title->list_subtitle + * which means that we need to account for the offset of non source language settings in from + * the NSPopUpCell menu. For all of the objects in the SubtitleList array this means 0 is "None" + * from the popup menu, additionally the first track has "Foreign Audio Search" at 1. So we use + * an int to offset the index number for the objectForKey:@"subtitleSourceTrackNum" to map that + * to the source tracks position in title->list_subtitle. + */ + +int subtitle; +int force; +int burned; +int def; +bool one_burned = FALSE; + + int i = 0; + NSEnumerator *enumerator = [[queueToApply objectForKey:@"SubtitleList"] objectEnumerator]; + id tempObject; + while (tempObject = [enumerator nextObject]) + { + + subtitle = [[tempObject objectForKey:@"subtitleSourceTrackNum"] intValue]; + force = [[tempObject objectForKey:@"subtitleTrackForced"] intValue]; + burned = [[tempObject objectForKey:@"subtitleTrackBurned"] intValue]; + def = [[tempObject objectForKey:@"subtitleTrackDefault"] intValue]; + + /* since the subtitleSourceTrackNum 0 is "None" in our array of the subtitle popups, + * we want to ignore it for display as well as encoding. + */ + if (subtitle > 0) + { + /* if i is 0, then we are in the first item of the subtitles which we need to + * check for the "Foreign Audio Search" which would be subtitleSourceTrackNum of 1 + * bearing in mind that for all tracks subtitleSourceTrackNum of 0 is None. + */ + + /* if we are on the first track and using "Foreign Audio Search" */ + if (i == 0 && subtitle == 1) + { + [self writeToActivityLog: "Foreign Language Search: %d", 1]; + + job->indepth_scan = 1; + + if (burned != 1) + { + job->select_subtitle_config.dest = PASSTHRUSUB; + } + else + { + job->select_subtitle_config.dest = RENDERSUB; + } + + job->select_subtitle_config.force = force; + job->select_subtitle_config.default_track = def; + } + else + { + /* if we are getting the subtitles from an external srt file */ + if ([[tempObject objectForKey:@"subtitleSourceTrackType"] intValue] == SRTSUB) + { + hb_subtitle_config_t sub_config; + + sub_config.offset = [[tempObject objectForKey:@"subtitleTrackSrtOffset"] intValue]; + + /* we need to srncpy file name and codeset */ + strncpy(sub_config.src_filename, [[tempObject objectForKey:@"subtitleSourceSrtFilePath"] UTF8String], 255); + sub_config.src_filename[255] = 0; + strncpy(sub_config.src_codeset, [[tempObject objectForKey:@"subtitleTrackSrtCharCode"] UTF8String], 39); + sub_config.src_codeset[39] = 0; + + sub_config.force = 0; + sub_config.dest = PASSTHRUSUB; + sub_config.default_track = def; + + hb_srt_add( job, &sub_config, [[tempObject objectForKey:@"subtitleTrackSrtLanguageIso3"] UTF8String]); + continue; + } + + /* for the actual source tracks, we must subtract the non source entries so + * that the menu index matches the source subtitle_list index for convenience */ + if( i == 0 ) + { + /* for the first track, the source tracks start at menu index 2 ( None is 0, + * Foreign Language Search is 1) so subtract 2 */ + subtitle = subtitle - 2; + } + else + { + /* for all other tracks, the source tracks start at menu index 1 (None is 0) + * so subtract 1. */ + subtitle = subtitle - 1; + } + + /* We are setting a source subtitle so access the source subtitle info */ + hb_subtitle_t * subt = (hb_subtitle_t *) hb_list_item( title->list_subtitle, subtitle ); + + if( subt != NULL ) + { + hb_subtitle_config_t sub_config = subt->config; + + if( !burned && hb_subtitle_can_pass( subt->source, job->mux ) ) + { + sub_config.dest = PASSTHRUSUB; + } + else if( hb_subtitle_can_burn( subt->source ) ) + { + // Only allow one subtitle to be burned into the video + if( one_burned ) + continue; + one_burned = TRUE; + sub_config.dest = RENDERSUB; + } + + sub_config.force = force; + sub_config.default_track = def; + hb_subtitle_add( job, &sub_config, subtitle ); + } + } + } + i++; + } + if( one_burned ) + { + filter = hb_filter_init( HB_FILTER_RENDER_SUB ); + hb_add_filter( job, filter, [[NSString stringWithFormat:@"%d:%d:%d:%d", + job->crop[0], job->crop[1], + job->crop[2], job->crop[3]] UTF8String] ); + } + +#pragma mark - + + /* Auto Passthru */ + job->acodec_copy_mask = 0; + if( [[queueToApply objectForKey: @"AudioAllowAACPass"] intValue] == 1 ) + { + job->acodec_copy_mask |= HB_ACODEC_FFAAC; + } + if( [[queueToApply objectForKey: @"AudioAllowAC3Pass"] intValue] == 1 ) + { + job->acodec_copy_mask |= HB_ACODEC_AC3; + } + if( [[queueToApply objectForKey: @"AudioAllowDTSHDPass"] intValue] == 1 ) + { + job->acodec_copy_mask |= HB_ACODEC_DCA_HD; + } + if( [[queueToApply objectForKey: @"AudioAllowDTSPass"] intValue] == 1 ) + { + job->acodec_copy_mask |= HB_ACODEC_DCA; + } + if( [[queueToApply objectForKey: @"AudioAllowMP3Pass"] intValue] == 1 ) + { + job->acodec_copy_mask |= HB_ACODEC_MP3; + } + job->acodec_fallback = [[queueToApply objectForKey: @"JobAudioEncoderFallback"] intValue]; + + /* Audio tracks and mixdowns */ + /* Now lets add our new tracks to the audio list here */ + for (unsigned int counter = 0; counter < maximumNumberOfAllowedAudioTracks; counter++) + { + NSString *prefix = [NSString stringWithFormat:@"Audio%d", counter + 1]; + NSString *jobPrefix = [NSString stringWithFormat:@"JobAudio%d", counter + 1]; + if ([[queueToApply objectForKey:[prefix stringByAppendingString:@"Track"]] intValue] > 0) + { + audio = (hb_audio_config_t*)calloc(1, sizeof(*audio)); + hb_audio_config_init(audio); + audio->in.track = [[queueToApply objectForKey:[prefix stringByAppendingString:@"Track"]] intValue] - 1; + /* We go ahead and assign values to our audio->out. */ + audio->out.track = audio->in.track; + audio->out.codec = [[queueToApply objectForKey:[jobPrefix stringByAppendingString:@"Encoder"]] intValue]; + audio->out.compression_level = hb_get_default_audio_compression(audio->out.codec); + audio->out.mixdown = [[queueToApply objectForKey:[jobPrefix stringByAppendingString:@"Mixdown"]] intValue]; + audio->out.normalize_mix_level = 0; + audio->out.bitrate = [[queueToApply objectForKey:[jobPrefix stringByAppendingString:@"Bitrate"]] intValue]; + audio->out.samplerate = [[queueToApply objectForKey:[jobPrefix stringByAppendingString:@"Samplerate"]] intValue]; + audio->out.dynamic_range_compression = [[queueToApply objectForKey:[prefix stringByAppendingString:@"TrackDRCSlider"]] floatValue]; + audio->out.gain = [[queueToApply objectForKey:[prefix stringByAppendingString:@"TrackGainSlider"]] floatValue]; + audio->out.dither_method = hb_audio_dither_get_default(); + + hb_audio_add(job, audio); + free(audio); + } + } + + /* Now lets call the filters if applicable. + * The order of the filters is critical + */ + /* Detelecine */ + filter = hb_filter_init( HB_FILTER_DETELECINE ); + if ([[queueToApply objectForKey:@"PictureDetelecine"] intValue] == 1) + { + /* use a custom detelecine string */ + hb_add_filter( job, filter, [[queueToApply objectForKey:@"PictureDetelecineCustom"] UTF8String] ); + } + else if ([[queueToApply objectForKey:@"PictureDetelecine"] intValue] == 2) + { + /* Use libhb's default values */ + hb_add_filter( job, filter, NULL ); + } + + if ([[queueToApply objectForKey:@"PictureDecombDeinterlace"] intValue] == 1) + { + /* Decomb */ + filter = hb_filter_init( HB_FILTER_DECOMB ); + if ([[queueToApply objectForKey:@"PictureDecomb"] intValue] == 1) + { + /* use a custom decomb string */ + hb_add_filter( job, filter, [[queueToApply objectForKey:@"PictureDecombCustom"] UTF8String] ); + } + else if ([[queueToApply objectForKey:@"PictureDecomb"] intValue] == 2) + { + /* use libhb defaults */ + hb_add_filter( job, filter, NULL ); + } + else if ([[queueToApply objectForKey:@"PictureDecomb"] intValue] == 3) + { + /* use old defaults (decomb fast) */ + hb_add_filter( job, filter, "7:2:6:9:1:80" ); + } + else if ([[queueToApply objectForKey:@"PictureDecomb"] intValue] == 4) + { + /* decomb 3 with bobbing enabled */ + hb_add_filter( job, filter, "455" ); + } + } + else + { + /* Deinterlace */ + filter = hb_filter_init( HB_FILTER_DEINTERLACE ); + if ([[queueToApply objectForKey:@"PictureDeinterlace"] intValue] == 1) + { + /* we add the custom string if present */ + hb_add_filter( job, filter, [[queueToApply objectForKey:@"PictureDeinterlaceCustom"] UTF8String] ); + } + else if ([[queueToApply objectForKey:@"PictureDeinterlace"] intValue] == 2) + { + /* Run old deinterlacer fd by default */ + hb_add_filter( job, filter, "0" ); + } + else if ([[queueToApply objectForKey:@"PictureDeinterlace"] intValue] == 3) + { + /* Yadif mode 0 (without spatial deinterlacing) */ + hb_add_filter( job, filter, "1" ); + } + else if ([[queueToApply objectForKey:@"PictureDeinterlace"] intValue] == 4) + { + /* Yadif (with spatial deinterlacing) */ + hb_add_filter( job, filter, "3" ); + } + else if ([[queueToApply objectForKey:@"PictureDeinterlace"] intValue] == 5) + { + /* Yadif (with spatial deinterlacing and bobbing) */ + hb_add_filter( job, filter, "15" ); + } + } + /* Denoise */ + filter = hb_filter_init( HB_FILTER_DENOISE ); + if ([[queueToApply objectForKey:@"PictureDenoise"] intValue] == 1) // Custom in popup + { + /* we add the custom string if present */ + hb_add_filter( job, filter, [[queueToApply objectForKey:@"PictureDenoiseCustom"] UTF8String] ); + } + else if ([[queueToApply objectForKey:@"PictureDenoise"] intValue] == 2) // Weak in popup + { + hb_add_filter( job, filter, "2:1:2:3" ); + } + else if ([[queueToApply objectForKey:@"PictureDenoise"] intValue] == 3) // Medium in popup + { + hb_add_filter( job, filter, "3:2:2:3" ); + } + else if ([[queueToApply objectForKey:@"PictureDenoise"] intValue] == 4) // Strong in popup + { + hb_add_filter( job, filter, "7:7:5:5" ); + } + + + /* Deblock (uses pp7 default) */ + /* NOTE: even though there is a valid deblock setting of 0 for the filter, for + * the macgui's purposes a value of 0 actually means to not even use the filter + * current hb_filter_deblock.settings valid ranges are from 5 - 15 + */ + filter = hb_filter_init( HB_FILTER_DEBLOCK ); + if ([[queueToApply objectForKey:@"PictureDeblock"] intValue] != 0) + { + hb_add_filter( job, filter, [[queueToApply objectForKey:@"PictureDeblock"] UTF8String] ); + } + + /* Add Crop/Scale filter */ + filter = hb_filter_init( HB_FILTER_CROP_SCALE ); + hb_add_filter( job, filter, [[NSString stringWithFormat:@"%d:%d:%d:%d:%d:%d", + job->width,job->height, + job->crop[0], job->crop[1], + job->crop[2], job->crop[3]] UTF8String] ); + + /* Add framerate shaping filter */ + filter = hb_filter_init( HB_FILTER_VFR ); + hb_add_filter( job, filter, [[NSString stringWithFormat:@"%d:%d:%d", + job->cfr, job->vrate, job->vrate_base] UTF8String] ); + +[self writeToActivityLog: "prepareJob exiting"]; +} + + + +/* addToQueue: puts up an alert before ultimately calling doAddToQueue + */ +- (IBAction) addToQueue: (id) sender +{ + /* We get the destination directory from the destination field here */ + NSString *destinationDirectory = [[fDstFile2Field stringValue] stringByDeletingLastPathComponent]; + /* We check for a valid destination here */ + if ([[NSFileManager defaultManager] fileExistsAtPath:destinationDirectory] == 0) + { + NSRunAlertPanel(@"Warning!", @"This is not a valid destination directory!", @"OK", nil, nil); + return; + } + + BOOL fileExists; + fileExists = NO; + + BOOL fileExistsInQueue; + fileExistsInQueue = NO; + + /* We check for and existing file here */ + if([[NSFileManager defaultManager] fileExistsAtPath: [fDstFile2Field stringValue]]) + { + fileExists = YES; + } + + /* We now run through the queue and make sure we are not overwriting an exisiting queue item */ + int i = 0; + NSEnumerator *enumerator = [QueueFileArray objectEnumerator]; + id tempObject; + while (tempObject = [enumerator nextObject]) + { + NSDictionary *thisQueueDict = tempObject; + if ([[thisQueueDict objectForKey:@"DestinationPath"] isEqualToString: [fDstFile2Field stringValue]]) + { + fileExistsInQueue = YES; + } + i++; + } + + + if(fileExists == YES) + { + NSBeginCriticalAlertSheet( NSLocalizedString( @"File already exists.", @"" ), + NSLocalizedString( @"Cancel", @"" ), NSLocalizedString( @"Overwrite", @"" ), nil, fWindow, self, + @selector( overwriteAddToQueueAlertDone:returnCode:contextInfo: ), + NULL, NULL, [NSString stringWithFormat: + NSLocalizedString( @"Do you want to overwrite %@?", @"" ), + [fDstFile2Field stringValue]] ); + } + else if (fileExistsInQueue == YES) + { + NSBeginCriticalAlertSheet( NSLocalizedString( @"There is already a queue item for this destination.", @"" ), + NSLocalizedString( @"Cancel", @"" ), NSLocalizedString( @"Overwrite", @"" ), nil, fWindow, self, + @selector( overwriteAddToQueueAlertDone:returnCode:contextInfo: ), + NULL, NULL, [NSString stringWithFormat: + NSLocalizedString( @"Do you want to overwrite %@?", @"" ), + [fDstFile2Field stringValue]] ); + } + else + { + [self doAddToQueue]; + } +} + +/* overwriteAddToQueueAlertDone: called from the alert posted by addToQueue that asks + the user if they want to overwrite an exiting movie file. +*/ +- (void) overwriteAddToQueueAlertDone: (NSWindow *) sheet + returnCode: (int) returnCode contextInfo: (void *) contextInfo +{ + if( returnCode == NSAlertAlternateReturn ) + [self doAddToQueue]; +} + +- (void) doAddToQueue +{ + [self addQueueFileItem ]; +} + + + +/* Rip: puts up an alert before ultimately calling doRip +*/ +- (IBAction) Rip: (id) sender +{ + [self writeToActivityLog: "Rip: Pending queue count is %d", fPendingCount]; + /* Rip or Cancel ? */ + hb_state_t s; + hb_get_state2( fQueueEncodeLibhb, &s ); + + if(s.state == HB_STATE_WORKING || s.state == HB_STATE_PAUSED) + { + [self Cancel: sender]; + return; + } + + /* We check to see if we need to warn the user that the computer will go to sleep + or shut down when encoding is finished */ + [self remindUserOfSleepOrShutdown]; + + // If there are pending jobs in the queue, then this is a rip the queue + if (fPendingCount > 0) + { + currentQueueEncodeIndex = [self getNextPendingQueueIndex]; + /* here lets start the queue with the first pending item */ + [self performNewQueueScan:[[QueueFileArray objectAtIndex:currentQueueEncodeIndex] objectForKey:@"SourcePath"] scanTitleNum:[[[QueueFileArray objectAtIndex:currentQueueEncodeIndex] objectForKey:@"TitleNumber"]intValue]]; + + return; + } + + // Before adding jobs to the queue, check for a valid destination. + + NSString *destinationDirectory = [[fDstFile2Field stringValue] stringByDeletingLastPathComponent]; + if ([[NSFileManager defaultManager] fileExistsAtPath:destinationDirectory] == 0) + { + NSRunAlertPanel(@"Warning!", @"This is not a valid destination directory!", @"OK", nil, nil); + return; + } + + /* We check for duplicate name here */ + if( [[NSFileManager defaultManager] fileExistsAtPath:[fDstFile2Field stringValue]] ) + { + NSBeginCriticalAlertSheet( NSLocalizedString( @"File already exists", @"" ), + NSLocalizedString( @"Cancel", "" ), NSLocalizedString( @"Overwrite", @"" ), nil, fWindow, self, + @selector( overWriteAlertDone:returnCode:contextInfo: ), + NULL, NULL, [NSString stringWithFormat: + NSLocalizedString( @"Do you want to overwrite %@?", @"" ), + [fDstFile2Field stringValue]] ); + + // overWriteAlertDone: will be called when the alert is dismissed. It will call doRip. + } + else + { + /* if there are no pending jobs in the queue, then add this one to the queue and rip + otherwise, just rip the queue */ + if(fPendingCount == 0) + { + [self doAddToQueue]; + } + + /* go right to processing the new queue encode */ + currentQueueEncodeIndex = [self getNextPendingQueueIndex]; + [self performNewQueueScan:[[QueueFileArray objectAtIndex:currentQueueEncodeIndex] objectForKey:@"SourcePath"] scanTitleNum:[[[QueueFileArray objectAtIndex:currentQueueEncodeIndex] objectForKey:@"TitleNumber"]intValue]]; + + } +} + +/* overWriteAlertDone: called from the alert posted by Rip: that asks the user if they + want to overwrite an exiting movie file. +*/ +- (void) overWriteAlertDone: (NSWindow *) sheet + returnCode: (int) returnCode contextInfo: (void *) contextInfo +{ + if( returnCode == NSAlertAlternateReturn ) + { + /* if there are no jobs in the queue, then add this one to the queue and rip + otherwise, just rip the queue */ + if( fPendingCount == 0 ) + { + [self doAddToQueue]; + } + + NSString *destinationDirectory = [[fDstFile2Field stringValue] stringByDeletingLastPathComponent]; + [[NSUserDefaults standardUserDefaults] setObject:destinationDirectory forKey:@"LastDestinationDirectory"]; + currentQueueEncodeIndex = [self getNextPendingQueueIndex]; + [self performNewQueueScan:[[QueueFileArray objectAtIndex:currentQueueEncodeIndex] objectForKey:@"SourcePath"] scanTitleNum:[[[QueueFileArray objectAtIndex:currentQueueEncodeIndex] objectForKey:@"TitleNumber"]intValue]]; + + } +} + +- (void) remindUserOfSleepOrShutdown +{ + if ([[[NSUserDefaults standardUserDefaults] stringForKey:@"AlertWhenDone"] isEqualToString: @"Put Computer To Sleep"]) + { + /*Warn that computer will sleep after encoding*/ + int reminduser; + NSBeep(); + reminduser = NSRunAlertPanel(@"The computer will sleep after encoding is done.",@"You have selected to sleep the computer after encoding. To turn off sleeping, go to the HandBrake preferences.", @"OK", @"Preferences…", nil); + [NSApp requestUserAttention:NSCriticalRequest]; + if ( reminduser == NSAlertAlternateReturn ) + { + [self showPreferencesWindow:nil]; + } + } + else if ([[[NSUserDefaults standardUserDefaults] stringForKey:@"AlertWhenDone"] isEqualToString: @"Shut Down Computer"]) + { + /*Warn that computer will shut down after encoding*/ + int reminduser; + NSBeep(); + reminduser = NSRunAlertPanel(@"The computer will shut down after encoding is done.",@"You have selected to shut down the computer after encoding. To turn off shut down, go to the HandBrake preferences.", @"OK", @"Preferences…", nil); + [NSApp requestUserAttention:NSCriticalRequest]; + if ( reminduser == NSAlertAlternateReturn ) + { + [self showPreferencesWindow:nil]; + } + } + +} + + +- (void) doRip +{ + /* Let libhb do the job */ + hb_start( fQueueEncodeLibhb ); + /* set the fEncodeState State */ + fEncodeState = 1; +} + + +//------------------------------------------------------------------------------------ +// Displays an alert asking user if the want to cancel encoding of current job. +// Cancel: returns immediately after posting the alert. Later, when the user +// acknowledges the alert, doCancelCurrentJob is called. +//------------------------------------------------------------------------------------ +- (IBAction)Cancel: (id)sender +{ + if (!fQueueController) return; + + /* + * No need to allow system sleep here as we'll either call Cancel: + * (which will take care of it) or resume right away + */ + hb_pause(fQueueEncodeLibhb); + + NSString * alertTitle = [NSString stringWithFormat:NSLocalizedString(@"You are currently encoding. What would you like to do ?", nil)]; + + // Which window to attach the sheet to? + NSWindow * docWindow; + if ([sender respondsToSelector: @selector(window)]) + docWindow = [sender window]; + else + docWindow = fWindow; + + NSBeginCriticalAlertSheet( + alertTitle, + NSLocalizedString(@"Continue Encoding", nil), + NSLocalizedString(@"Cancel Current and Stop", nil), + NSLocalizedString(@"Cancel Current and Continue", nil), + docWindow, self, + nil, @selector(didDimissCancel:returnCode:contextInfo:), nil, + NSLocalizedString(@"Your encode will be cancelled if you don't continue encoding.", nil)); + + // didDimissCancelCurrentJob:returnCode:contextInfo: will be called when the dialog is dismissed +} + +- (void) didDimissCancel: (NSWindow *)sheet returnCode: (int)returnCode contextInfo: (void *)contextInfo +{ + /* No need to prevent system sleep here as we didn't allow it in Cancel: */ + hb_resume(fQueueEncodeLibhb); + + if (returnCode == NSAlertOtherReturn) + { + [self doCancelCurrentJob]; // <- this also stops libhb + } + else if (returnCode == NSAlertAlternateReturn) + { + [self doCancelCurrentJobAndStop]; + } +} + +//------------------------------------------------------------------------------------ +// Cancels and deletes the current job and stops libhb from processing the remaining +// encodes. +//------------------------------------------------------------------------------------ +- (void) doCancelCurrentJob +{ + // Stop the current job. hb_stop will only cancel the current pass and then set + // its state to HB_STATE_WORKDONE. It also does this asynchronously. So when we + // see the state has changed to HB_STATE_WORKDONE (in updateUI), we'll delete the + // remaining passes of the job and then start the queue back up if there are any + // remaining jobs. + + + hb_stop(fQueueEncodeLibhb); + hb_system_sleep_allow(fQueueEncodeLibhb); + + // Delete all remaining jobs since libhb doesn't do this on its own. + hb_job_t * job; + while( ( job = hb_job(fQueueEncodeLibhb, 0) ) ) + hb_rem( fQueueEncodeLibhb, job ); + + fEncodeState = 2; // don't alert at end of processing since this was a cancel + + // now that we've stopped the currently encoding job, lets mark it as cancelled + [[QueueFileArray objectAtIndex:currentQueueEncodeIndex] setObject:[NSNumber numberWithInt:3] forKey:@"Status"]; + // and as always, save it in Queue.plist + /* We save all of the Queue data here */ + [self saveQueueFileItem]; + + // and see if there are more items left in our queue + int queueItems = [QueueFileArray count]; + /* If we still have more items in our queue, lets go to the next one */ + /* Check to see if there are any more pending items in the queue */ + int newQueueItemIndex = [self getNextPendingQueueIndex]; + /* If we still have more pending items in our queue, lets go to the next one */ + if (newQueueItemIndex >= 0 && newQueueItemIndex < queueItems) + { + /*Set our currentQueueEncodeIndex now to the newly found Pending encode as we own it */ + currentQueueEncodeIndex = newQueueItemIndex; + /* now we mark the queue item as Status = 1 ( being encoded ) so another instance can not come along and try to scan it while we are scanning */ + [[QueueFileArray objectAtIndex:currentQueueEncodeIndex] setObject:[NSNumber numberWithInt:1] forKey:@"Status"]; + [self writeToActivityLog: "incrementQueueItemDone new pending items found: %d", currentQueueEncodeIndex]; + [self saveQueueFileItem]; + /* now we can go ahead and scan the new pending queue item */ + [self performNewQueueScan:[[QueueFileArray objectAtIndex:currentQueueEncodeIndex] objectForKey:@"SourcePath"] scanTitleNum:[[[QueueFileArray objectAtIndex:currentQueueEncodeIndex] objectForKey:@"TitleNumber"]intValue]]; + + } + else + { + [self writeToActivityLog: "incrementQueueItemDone there are no more pending encodes"]; + } +} + +- (void) doCancelCurrentJobAndStop +{ + hb_stop(fQueueEncodeLibhb); + hb_system_sleep_allow(fQueueEncodeLibhb); + + // Delete all remaining jobs since libhb doesn't do this on its own. + hb_job_t * job; + while( ( job = hb_job(fQueueEncodeLibhb, 0) ) ) + hb_rem( fQueueEncodeLibhb, job ); + + + fEncodeState = 2; // don't alert at end of processing since this was a cancel + + // now that we've stopped the currently encoding job, lets mark it as cancelled + [[QueueFileArray objectAtIndex:currentQueueEncodeIndex] setObject:[NSNumber numberWithInt:3] forKey:@"Status"]; + // and as always, save it in Queue.plist + /* We save all of the Queue data here */ + [self saveQueueFileItem]; + // so now lets move to + currentQueueEncodeIndex++ ; + [self writeToActivityLog: "cancelling current job and stopping the queue"]; +} +- (IBAction) Pause: (id) sender +{ + hb_state_t s; + hb_get_state2(fQueueEncodeLibhb, &s); + + if (s.state == HB_STATE_PAUSED) + { + hb_system_sleep_prevent(fQueueEncodeLibhb); + hb_resume(fQueueEncodeLibhb); + } + else + { + hb_pause(fQueueEncodeLibhb); + hb_system_sleep_allow(fQueueEncodeLibhb); + } +} + +#pragma mark - +#pragma mark Batch Queue Titles Methods +- (IBAction) addAllTitlesToQueue: (id) sender +{ + NSBeginCriticalAlertSheet( NSLocalizedString( @"You are about to add ALL titles to the queue!", @"" ), + NSLocalizedString( @"Cancel", @"" ), NSLocalizedString( @"Yes, I want to add all titles to the queue.", @"" ), nil, fWindow, self, + @selector( addAllTitlesToQueueAlertDone:returnCode:contextInfo: ), + NULL, NULL, [NSString stringWithFormat: + NSLocalizedString( @"Current settings will be applied to all %d titles. Are you sure you want to do this?", @"" ),[fSrcTitlePopUp numberOfItems]] ); +} + +- (void) addAllTitlesToQueueAlertDone: (NSWindow *) sheet + returnCode: (int) returnCode contextInfo: (void *) contextInfo +{ + if( returnCode == NSAlertAlternateReturn ) + [self doAddAllTitlesToQueue]; +} + +- (void) doAddAllTitlesToQueue +{ + + /* first get the currently selected index so we can choose it again after cycling through the available titles. */ + int currentlySelectedTitle = [fSrcTitlePopUp indexOfSelectedItem]; + + /* For each title in the fSrcTitlePopUp, select it */ + for( int i = 0; i < [fSrcTitlePopUp numberOfItems]; i++ ) + { + [fSrcTitlePopUp selectItemAtIndex:i]; + /* Now call titlePopUpChanged to load it up */ + [self titlePopUpChanged:nil]; + /* now add the title to the queue */ + [self addToQueue:nil]; + } + /* Now that we are done, reselect the previously selected title.*/ + [fSrcTitlePopUp selectItemAtIndex: currentlySelectedTitle]; + /* Now call titlePopUpChanged to load it up */ + [self titlePopUpChanged:nil]; +} + +#pragma mark - +#pragma mark GUI Controls Changed Methods + +- (IBAction) titlePopUpChanged: (id) sender +{ + hb_list_t * list = hb_get_titles( fHandle ); + hb_title_t * title = (hb_title_t*) + hb_list_item( list, [fSrcTitlePopUp indexOfSelectedItem] ); + + /* If we are a stream type and a batch scan, grok the output file name from title->name upon title change */ + if ((title->type == HB_STREAM_TYPE || title->type == HB_FF_STREAM_TYPE) && + hb_list_count( list ) > 1 ) + { + /* we set the default name according to the new title->name */ + [fDstFile2Field setStringValue: [NSString stringWithFormat: + @"%@/%@.%@", [[fDstFile2Field stringValue] stringByDeletingLastPathComponent], + [NSString stringWithUTF8String: title->name], + [[fDstFile2Field stringValue] pathExtension]]]; + + /* Change the source to read out the parent folder also */ + [fSrcDVD2Field setStringValue:[NSString stringWithFormat:@"%@/%@", browsedSourceDisplayName,[NSString stringWithUTF8String: title->name]]]; + } + + /* For point a to point b pts encoding, set the start and end fields to 0 and the title duration in seconds respectively */ + int duration = (title->hours * 3600) + (title->minutes * 60) + (title->seconds); + [fSrcTimeStartEncodingField setStringValue: [NSString stringWithFormat: @"%d", 0]]; + [fSrcTimeEndEncodingField setStringValue: [NSString stringWithFormat: @"%d", duration]]; + /* For point a to point b frame encoding, set the start and end fields to 0 and the title duration * announced fps in seconds respectively */ + [fSrcFrameStartEncodingField setStringValue: [NSString stringWithFormat: @"%d", 1]]; + //[fSrcFrameEndEncodingField setStringValue: [NSString stringWithFormat: @"%d", ((title->hours * 3600) + (title->minutes * 60) + (title->seconds)) * 24]]; + [fSrcFrameEndEncodingField setStringValue: [NSString stringWithFormat: @"%d", duration * (title->rate / title->rate_base)]]; + + /* If Auto Naming is on. We create an output filename of dvd name - title number */ + if( [[NSUserDefaults standardUserDefaults] boolForKey:@"DefaultAutoNaming"] > 0 && ( hb_list_count( list ) > 1 ) ) + { + [fDstFile2Field setStringValue: [NSString stringWithFormat: + @"%@/%@-%d.%@", [[fDstFile2Field stringValue] stringByDeletingLastPathComponent], + [browsedSourceDisplayName stringByDeletingPathExtension], + title->index, + [[fDstFile2Field stringValue] pathExtension]]]; + } + /* Update encode start / stop variables */ + + + + /* Update chapter popups */ + [fSrcChapterStartPopUp removeAllItems]; + [fSrcChapterEndPopUp removeAllItems]; + for( int i = 0; i < hb_list_count( title->list_chapter ); i++ ) + { + [fSrcChapterStartPopUp addItemWithTitle: [NSString + stringWithFormat: @"%d", i + 1]]; + [fSrcChapterEndPopUp addItemWithTitle: [NSString + stringWithFormat: @"%d", i + 1]]; + } + + [fSrcChapterStartPopUp selectItemAtIndex: 0]; + [fSrcChapterEndPopUp selectItemAtIndex: + hb_list_count( title->list_chapter ) - 1]; + [self chapterPopUpChanged:nil]; + + /* if using dvd nav, show the angle widget */ + if ([[[NSUserDefaults standardUserDefaults] objectForKey:@"UseDvdNav"] boolValue]) + { + [fSrcAngleLabel setHidden:NO]; + [fSrcAnglePopUp setHidden:NO]; + + [fSrcAnglePopUp removeAllItems]; + for( int i = 0; i < title->angle_count; i++ ) + { + [fSrcAnglePopUp addItemWithTitle: [NSString stringWithFormat: @"%d", i + 1]]; + } + [fSrcAnglePopUp selectItemAtIndex: 0]; + } + else + { + [fSrcAngleLabel setHidden:YES]; + [fSrcAnglePopUp setHidden:YES]; + } + + /* Start Get and set the initial pic size for display */ + fTitle = title; + + /* Set Auto Crop to on upon selecting a new title */ + [fPictureController setAutoCrop:YES]; + + /* We get the originial output picture width and height and put them + in variables for use with some presets later on */ + PicOrigOutputWidth = title->width; + PicOrigOutputHeight = title->height; + AutoCropTop = title->crop[0]; + AutoCropBottom = title->crop[1]; + AutoCropLeft = title->crop[2]; + AutoCropRight = title->crop[3]; + + /* Reset the new title in fPictureController && fPreviewController*/ + [fPictureController SetTitle:title]; + + + /* Update Subtitle Table */ + [fSubtitlesDelegate resetWithTitle:title]; + [fSubtitlesTable reloadData]; + + + /* Update chapter table */ + [fChapterTitlesDelegate resetWithTitle:title]; + [fChapterTable reloadData]; + + /* Update audio table */ + [[NSNotificationCenter defaultCenter] postNotification: + [NSNotification notificationWithName: HBTitleChangedNotification + object: self + userInfo: [NSDictionary dictionaryWithObjectsAndKeys: + [NSData dataWithBytesNoCopy: &fTitle length: sizeof(fTitle) freeWhenDone: NO], keyTitleTag, + nil]]]; + [fVidRatePopUp selectItemAtIndex: 0]; + + /* we run the picture size values through calculatePictureSizing to get all picture setting information*/ + [self calculatePictureSizing:nil]; + + /* lets call tableViewSelected to make sure that any preset we have selected is enforced after a title change */ + [self selectPreset:nil]; +} + +- (IBAction) encodeStartStopPopUpChanged: (id) sender; +{ + if( [fEncodeStartStopPopUp isEnabled] ) + { + /* We are chapters */ + if( [fEncodeStartStopPopUp indexOfSelectedItem] == 0 ) + { + [fSrcChapterStartPopUp setHidden: NO]; + [fSrcChapterEndPopUp setHidden: NO]; + + [fSrcTimeStartEncodingField setHidden: YES]; + [fSrcTimeEndEncodingField setHidden: YES]; + + [fSrcFrameStartEncodingField setHidden: YES]; + [fSrcFrameEndEncodingField setHidden: YES]; + + [self chapterPopUpChanged:nil]; + } + /* We are time based (seconds) */ + else if ([fEncodeStartStopPopUp indexOfSelectedItem] == 1) + { + [fSrcChapterStartPopUp setHidden: YES]; + [fSrcChapterEndPopUp setHidden: YES]; + + [fSrcTimeStartEncodingField setHidden: NO]; + [fSrcTimeEndEncodingField setHidden: NO]; + + [fSrcFrameStartEncodingField setHidden: YES]; + [fSrcFrameEndEncodingField setHidden: YES]; + + [self startEndSecValueChanged:nil]; + } + /* We are frame based */ + else if ([fEncodeStartStopPopUp indexOfSelectedItem] == 2) + { + [fSrcChapterStartPopUp setHidden: YES]; + [fSrcChapterEndPopUp setHidden: YES]; + + [fSrcTimeStartEncodingField setHidden: YES]; + [fSrcTimeEndEncodingField setHidden: YES]; + + [fSrcFrameStartEncodingField setHidden: NO]; + [fSrcFrameEndEncodingField setHidden: NO]; + + [self startEndFrameValueChanged:nil]; + } + } +} + +- (IBAction) chapterPopUpChanged: (id) sender +{ + + /* If start chapter popup is greater than end chapter popup, + we set the end chapter popup to the same as start chapter popup */ + if ([fSrcChapterStartPopUp indexOfSelectedItem] > [fSrcChapterEndPopUp indexOfSelectedItem]) + { + [fSrcChapterEndPopUp selectItemAtIndex: [fSrcChapterStartPopUp indexOfSelectedItem]]; + } + + + hb_list_t * list = hb_get_titles( fHandle ); + hb_title_t * title = (hb_title_t *) + hb_list_item( list, [fSrcTitlePopUp indexOfSelectedItem] ); + + hb_chapter_t * chapter; + int64_t duration = 0; + for( int i = [fSrcChapterStartPopUp indexOfSelectedItem]; + i <= [fSrcChapterEndPopUp indexOfSelectedItem]; i++ ) + { + chapter = (hb_chapter_t *) hb_list_item( title->list_chapter, i ); + duration += chapter->duration; + } + + duration /= 90000; /* pts -> seconds */ + [fSrcDuration2Field setStringValue: [NSString stringWithFormat: + @"%02lld:%02lld:%02lld", duration / 3600, ( duration / 60 ) % 60, + duration % 60]]; + + //[self calculateBitrate: sender]; + + /* We're changing the chapter range - we may need to flip the m4v/mp4 extension */ + if ([fDstFormatPopUp indexOfSelectedItem] == 0) + [self autoSetM4vExtension: sender]; +} + +- (IBAction) startEndSecValueChanged: (id) sender +{ + + int duration = [fSrcTimeEndEncodingField intValue] - [fSrcTimeStartEncodingField intValue]; + [fSrcDuration2Field setStringValue: [NSString stringWithFormat: + @"%02d:%02d:%02d", duration / 3600, ( duration / 60 ) % 60, + duration % 60]]; + + //[self calculateBitrate: sender]; + +} + +- (IBAction) startEndFrameValueChanged: (id) sender +{ + hb_list_t * list = hb_get_titles( fHandle ); + hb_title_t * title = (hb_title_t*) + hb_list_item( list, [fSrcTitlePopUp indexOfSelectedItem] ); + + int duration = ([fSrcFrameEndEncodingField intValue] - [fSrcFrameStartEncodingField intValue]) / (title->rate / title->rate_base); + [fSrcDuration2Field setStringValue: [NSString stringWithFormat: + @"%02d:%02d:%02d", duration / 3600, ( duration / 60 ) % 60, + duration % 60]]; + + //[self calculateBitrate: sender]; +} + + +- (IBAction) formatPopUpChanged: (id) sender +{ + NSString * string = [fDstFile2Field stringValue]; + int format = [fDstFormatPopUp indexOfSelectedItem]; + char * ext = NULL; + NSMenuItem *menuItem; + int i; + /* Initially set the large file (64 bit formatting) output checkbox to hidden */ + [fDstMp4LargeFileCheck setHidden: YES]; + [fDstMp4HttpOptFileCheck setHidden: YES]; + [fDstMp4iPodFileCheck setHidden: YES]; + + /* Update the Video Codec Popup */ + /* lets get the tag of the currently selected item first so we might reset it later */ + int selectedVidEncoderTag; + selectedVidEncoderTag = [[fVidEncoderPopUp selectedItem] tag]; + + /* Note: we now store the video encoder int values from common.c in the tags of each popup for easy retrieval later */ + [fVidEncoderPopUp removeAllItems]; + for( i = 0; i < hb_video_encoders_count; i++ ) + { + if( ( ( format == 0 ) && ( hb_video_encoders[i].muxers & HB_MUX_MP4 ) ) || + ( ( format == 1 ) && ( hb_video_encoders[i].muxers & HB_MUX_MKV ) ) ) + { + menuItem = [[fVidEncoderPopUp menu] addItemWithTitle: [NSString stringWithUTF8String: hb_video_encoders[i].human_readable_name] + action: NULL keyEquivalent: @""]; + [menuItem setTag: hb_video_encoders[i].encoder]; + } + } + + /* + * item 0 will be selected by default + * deselect it so that we can detect whether the video encoder has changed + */ + [fVidEncoderPopUp selectItem:nil]; + if (selectedVidEncoderTag) + { + // if we have a tag for previously selected encoder, try to select it + // if this fails, [fVidEncoderPopUp selectedItem] will be nil + // we'll handle that scenario further down + [fVidEncoderPopUp selectItemWithTag:selectedVidEncoderTag]; + } + + /* Update the Auto Passtgru Fallback Codec Popup */ + /* lets get the tag of the currently selected item first so we might reset it later */ + int selectedAutoPassthruFallbackEncoderTag; + selectedAutoPassthruFallbackEncoderTag = [[fAudioFallbackPopUp selectedItem] tag]; + + [fAudioFallbackPopUp removeAllItems]; + for( i = 0; i < hb_audio_encoders_count; i++ ) + { + if( !( hb_audio_encoders[i].encoder & HB_ACODEC_PASS_FLAG ) && + ( ( ( format == 0 ) && ( hb_audio_encoders[i].muxers & HB_MUX_MP4 ) ) || + ( ( format == 1 ) && ( hb_audio_encoders[i].muxers & HB_MUX_MKV ) ) ) ) + { + menuItem = [[fAudioFallbackPopUp menu] addItemWithTitle: [NSString stringWithUTF8String: hb_audio_encoders[i].human_readable_name] + action: NULL keyEquivalent: @""]; + [menuItem setTag: hb_audio_encoders[i].encoder]; + } + } + + /* if we have a previously selected auto passthru fallback encoder tag, then try to select it */ + if (selectedAutoPassthruFallbackEncoderTag) + { + selectedAutoPassthruFallbackEncoderTag = [fAudioFallbackPopUp selectItemWithTag: selectedAutoPassthruFallbackEncoderTag]; + } + /* if we had no previous fallback selected OR if selection failed + * select the default fallback encoder (AC3) */ + if (!selectedAutoPassthruFallbackEncoderTag) + { + [fAudioFallbackPopUp selectItemWithTag: HB_ACODEC_AC3]; + } + + switch( format ) + { + case 0: + [self autoSetM4vExtension: nil]; + /* We show the mp4 option checkboxes here since we are mp4 */ + [fCreateChapterMarkers setEnabled: YES]; + [fDstMp4LargeFileCheck setHidden: NO]; + [fDstMp4HttpOptFileCheck setHidden: NO]; + [fDstMp4iPodFileCheck setHidden: NO]; + break; + + case 1: + ext = "mkv"; + /* We enable the create chapters checkbox here */ + [fCreateChapterMarkers setEnabled: YES]; + break; + + + } + /* tell fSubtitlesDelegate we have a new video container */ + + [fSubtitlesDelegate containerChanged:[[fDstFormatPopUp selectedItem] tag]]; + [fSubtitlesTable reloadData]; + + /* post a notification for any interested observers to indicate that our video container has changed */ + [[NSNotificationCenter defaultCenter] postNotification: + [NSNotification notificationWithName: HBContainerChangedNotification + object: self + userInfo: [NSDictionary dictionaryWithObjectsAndKeys: + [NSNumber numberWithInt: [[fDstFormatPopUp selectedItem] tag]], keyContainerTag, + nil]]]; + + if( format == 0 ) + [self autoSetM4vExtension: sender]; + else + [fDstFile2Field setStringValue: [NSString stringWithFormat:@"%@.%s", [string stringByDeletingPathExtension], ext]]; + + if (SuccessfulScan) + { + if ([fVidEncoderPopUp selectedItem] == nil) + { + /* this means the above call to selectItemWithTag failed */ + [fVidEncoderPopUp selectItemAtIndex:0]; + [self videoEncoderPopUpChanged:nil]; + } + } + [self customSettingUsed:sender]; +} + +- (IBAction) autoSetM4vExtension: (id) sender +{ + if ( [fDstFormatPopUp indexOfSelectedItem] ) + return; + + NSString * extension = @"mp4"; + + BOOL anyCodecAC3 = [fAudioDelegate anyCodecMatches: HB_ACODEC_AC3] || [fAudioDelegate anyCodecMatches: HB_ACODEC_AC3_PASS]; + /* Chapter markers are enabled if the checkbox is ticked and we are doing p2p or we have > 1 chapter */ + BOOL chapterMarkers = ([fCreateChapterMarkers state] == NSOnState) && + ([fEncodeStartStopPopUp indexOfSelectedItem] != 0 || + [fSrcChapterStartPopUp indexOfSelectedItem] < [fSrcChapterEndPopUp indexOfSelectedItem]); + + if ([[[NSUserDefaults standardUserDefaults] objectForKey:@"DefaultMpegExtension"] isEqualToString: @".m4v"] || + ((YES == anyCodecAC3 || YES == chapterMarkers) && + [[[NSUserDefaults standardUserDefaults] objectForKey:@"DefaultMpegExtension"] isEqualToString: @"Auto"] )) + { + extension = @"m4v"; + } + + if( [extension isEqualTo: [[fDstFile2Field stringValue] pathExtension]] ) + return; + else + [fDstFile2Field setStringValue: [NSString stringWithFormat:@"%@.%@", + [[fDstFile2Field stringValue] stringByDeletingPathExtension], extension]]; +} + +/* Method to determine if we should change the UI +To reflect whether or not a Preset is being used or if +the user is using "Custom" settings by determining the sender*/ +- (IBAction) customSettingUsed: (id) sender +{ + if ([sender stringValue]) + { + /* Deselect the currently selected Preset if there is one*/ + [fPresetsOutlineView deselectRow:[fPresetsOutlineView selectedRow]]; + /* Change UI to show "Custom" settings are being used */ + [fPresetSelectedDisplay setStringValue: @"Custom"]; + } +[self calculateBitrate:nil]; +} + + +#pragma mark - +#pragma mark - Video + +- (IBAction) videoEncoderPopUpChanged: (id) sender +{ + int videoEncoder = [[fVidEncoderPopUp selectedItem] tag]; + + [fAdvancedOptions setHidden:YES]; + /* If we are using x264 then show the x264 advanced panel and the x264 presets box */ + if (videoEncoder == HB_VCODEC_X264) + { + [fAdvancedOptions setHidden:NO]; + + // show the x264 presets box + [fX264PresetsBox setHidden:NO]; + + [self autoSetM4vExtension: sender]; + } + else // we are FFmpeg (lavc) or Theora + { + [fAdvancedOptions setHidden:YES]; + [fX264PresetsBox setHidden:YES]; + + // We Are Lavc + if ([[fVidEncoderPopUp selectedItem] tag] & HB_VCODEC_FFMPEG_MASK) + { + [fAdvancedOptions setLavcOptsEnabled:YES]; + } + else /// We are Theora + { + [fAdvancedOptions setLavcOptsEnabled:NO]; + } + } + + + if (videoEncoder != HB_VCODEC_X264) + { + /* We set the iPod atom checkbox to disabled and uncheck it as its only for x264 in the mp4 + * container. Format is taken care of in formatPopUpChanged method by hiding and unchecking + * anything other than MP4. */ + [fDstMp4iPodFileCheck setEnabled: NO]; + [fDstMp4iPodFileCheck setState: NSOffState]; + } + else + { + [fDstMp4iPodFileCheck setEnabled: YES]; + } + [self setupQualitySlider]; + [self calculatePictureSizing: sender]; + [self twoPassCheckboxChanged: sender]; +} + + +- (IBAction) twoPassCheckboxChanged: (id) sender +{ + /* check to see if x264 is chosen */ + if([[fVidEncoderPopUp selectedItem] tag] == HB_VCODEC_X264) + { + if( [fVidTwoPassCheck state] == NSOnState) + { + [fVidTurboPassCheck setHidden: NO]; + } + else + { + [fVidTurboPassCheck setHidden: YES]; + [fVidTurboPassCheck setState: NSOffState]; + } + /* Make sure Two Pass is checked if Turbo is checked */ + if( [fVidTurboPassCheck state] == NSOnState) + { + [fVidTwoPassCheck setState: NSOnState]; + } + } + else + { + [fVidTurboPassCheck setHidden: YES]; + [fVidTurboPassCheck setState: NSOffState]; + } + + /* We call method method to change UI to reflect whether a preset is used or not*/ + [self customSettingUsed: sender]; +} + +- (IBAction ) videoFrameRateChanged: (id) sender +{ + /* Hide and set the PFR Checkbox to OFF if we are set to Same as Source */ + /* Depending on whether or not Same as source is selected modify the title for + * fFramerateVfrPfrCell*/ + if ([fVidRatePopUp indexOfSelectedItem] == 0) // We are Same as Source + { + [fFramerateVfrPfrCell setTitle:@"Variable Framerate"]; + } + else + { + [fFramerateVfrPfrCell setTitle:@"Peak Framerate (VFR)"]; + + + } + + /* We call method method to calculatePictureSizing to error check detelecine*/ + [self calculatePictureSizing: sender]; + + /* We call method method to change UI to reflect whether a preset is used or not*/ + [self customSettingUsed: sender]; +} + +- (IBAction) videoMatrixChanged: (id) sender; +{ + /* We use the selectedCell: tag of the fVidQualityMatrix instead of selectedRow + * so that the order of the video controls can be switched around. + * Constant quality is 1 and Average bitrate is 0 for reference. */ + bool bitrate, quality; + bitrate = quality = false; + if( [fVidQualityMatrix isEnabled] ) + { + switch( [[fVidQualityMatrix selectedCell] tag] ) + { + case 0: + bitrate = true; + break; + case 1: + quality = true; + break; + } + } + + [fVidBitrateField setEnabled: bitrate]; + [fVidQualitySlider setEnabled: quality]; + [fVidQualityRFField setEnabled: quality]; + [fVidQualityRFLabel setEnabled: quality]; + [fVidTwoPassCheck setEnabled: !quality && + [fVidQualityMatrix isEnabled]]; + if( quality ) + { + [fVidTwoPassCheck setState: NSOffState]; + [fVidTurboPassCheck setHidden: YES]; + [fVidTurboPassCheck setState: NSOffState]; + } + + [self qualitySliderChanged: sender]; + //[self calculateBitrate: sender]; + [self customSettingUsed: sender]; +} + +/* Use this method to setup the quality slider for cq/rf values depending on + * the video encoder selected. + */ +- (void) setupQualitySlider +{ + /* Get the current slider maxValue to check for a change in slider scale later + * so that we can choose a new similar value on the new slider scale */ + float previousMaxValue = [fVidQualitySlider maxValue]; + float previousPercentOfSliderScale = [fVidQualitySlider floatValue] / ([fVidQualitySlider maxValue] - [fVidQualitySlider minValue] + 1); + NSString * qpRFLabelString = @"QP:"; + /* x264 0-51 */ + if ([[fVidEncoderPopUp selectedItem] tag] == HB_VCODEC_X264) + { + [fVidQualitySlider setMinValue:0.0]; + [fVidQualitySlider setMaxValue:51.0]; + /* As x264 allows for qp/rf values that are fractional, we get the value from the preferences */ + int fractionalGranularity = 1 / [[NSUserDefaults standardUserDefaults] floatForKey:@"x264CqSliderFractional"]; + [fVidQualitySlider setNumberOfTickMarks:(([fVidQualitySlider maxValue] - [fVidQualitySlider minValue]) * fractionalGranularity) + 1]; + qpRFLabelString = @"RF:"; + } + /* FFmpeg MPEG-2/4 1-31 */ + if ([[fVidEncoderPopUp selectedItem] tag] & HB_VCODEC_FFMPEG_MASK ) + { + [fVidQualitySlider setMinValue:1.0]; + [fVidQualitySlider setMaxValue:31.0]; + [fVidQualitySlider setNumberOfTickMarks:31]; + } + /* Theora 0-63 */ + if ([[fVidEncoderPopUp selectedItem] tag] == HB_VCODEC_THEORA) + { + [fVidQualitySlider setMinValue:0.0]; + [fVidQualitySlider setMaxValue:63.0]; + [fVidQualitySlider setNumberOfTickMarks:64]; + } + [fVidQualityRFLabel setStringValue:qpRFLabelString]; + + /* check to see if we have changed slider scales */ + if (previousMaxValue != [fVidQualitySlider maxValue]) + { + /* if so, convert the old setting to the new scale as close as possible based on percentages */ + float rf = ([fVidQualitySlider maxValue] - [fVidQualitySlider minValue] + 1) * previousPercentOfSliderScale; + [fVidQualitySlider setFloatValue:rf]; + } + + [self qualitySliderChanged:nil]; +} + +- (IBAction) qualitySliderChanged: (id) sender +{ + + /* Our constant quality slider is in a range based + * on each encoders qp/rf values. The range depends + * on the encoder. Also, the range is inverse of quality + * for all of the encoders *except* for theora + * (ie. as the "quality" goes up, the cq or rf value + * actually goes down). Since the IB sliders always set + * their max value at the right end of the slider, we + * will calculate the inverse, so as the slider floatValue + * goes up, we will show the inverse in the rf field + * so, the floatValue at the right for x264 would be 51 + * and our rf field needs to show 0 and vice versa. + */ + + float sliderRfInverse = ([fVidQualitySlider maxValue] - [fVidQualitySlider floatValue]) + [fVidQualitySlider minValue]; + /* If the encoder is theora, use the float, otherwise use the inverse float*/ + //float sliderRfToPercent; + if ([[fVidEncoderPopUp selectedItem] tag] == HB_VCODEC_THEORA) + { + [fVidQualityRFField setStringValue: [NSString stringWithFormat: @"%.2f", [fVidQualitySlider floatValue]]]; + } + else + { + [fVidQualityRFField setStringValue: [NSString stringWithFormat: @"%.2f", sliderRfInverse]]; + } + /* Show a warning if x264 and rf 0 which is lossless */ + if ([[fVidEncoderPopUp selectedItem] tag] == HB_VCODEC_X264 && sliderRfInverse == 0.0) + { + [fVidQualityRFField setStringValue: [NSString stringWithFormat: @"%.2f (Warning: Lossless)", sliderRfInverse]]; + } + + [self customSettingUsed: sender]; +} + + +- (void) controlTextDidChange: (NSNotification *) notification +{ + [self calculateBitrate:nil]; +} + +- (IBAction) calculateBitrate: (id) sender +{ + if( !fHandle || ![fVidQualityMatrix selectedRow] || !SuccessfulScan ) + { + return; + } + + hb_list_t * list = hb_get_titles( fHandle ); + hb_title_t * title = (hb_title_t *) hb_list_item( list, + [fSrcTitlePopUp indexOfSelectedItem] ); + hb_job_t * job = title->job; + /* For hb_calc_bitrate in addition to the Target Size in MB out of the + * Target Size Field, we also need the job info for the Muxer, the Chapters + * as well as all of the audio track info. + * This used to be accomplished by simply calling prepareJob here, however + * since the resilient queue sets the queue array values instead of the job + * values directly, we duplicate the old prepareJob code here for the variables + * needed + */ + job->chapter_start = [fSrcChapterStartPopUp indexOfSelectedItem] + 1; + job->chapter_end = [fSrcChapterEndPopUp indexOfSelectedItem] + 1; + job->mux = [[fDstFormatPopUp selectedItem] tag]; + + /* Audio goes here */ + [fAudioDelegate prepareAudioForJob: job]; + +} + +#pragma mark - +#pragma mark - Video x264 Presets + +- (IBAction) setupX264PresetsWidgets: (id) sender +{ + NSUInteger i; + /* + * now we populate the x264 preset system widgets via hb_x264_presets(), + * hb_x264_tunes(), hb_h264_profiles(), hb_h264_levels() + */ + // store x264 preset names + const char * const * x264_presets = hb_x264_presets(); + NSMutableArray *tmp_array = [[NSMutableArray alloc] init]; + for (i = 0; x264_presets[i] != NULL; i++) + { + [tmp_array addObject:[NSString stringWithUTF8String:x264_presets[i]]]; + if (!strcasecmp(x264_presets[i], "medium")) + { + fX264MediumPresetIndex = i; + } + } + fX264PresetNames = [[NSArray alloc] initWithArray:tmp_array]; + [tmp_array release]; + // setup the x264 preset slider + [fX264PresetsSlider setMinValue:0]; + [fX264PresetsSlider setMaxValue:[fX264PresetNames count]-1]; + [fX264PresetsSlider setNumberOfTickMarks:[fX264PresetNames count]]; + [fX264PresetsSlider setIntegerValue:fX264MediumPresetIndex]; + [fX264PresetsSlider setTickMarkPosition:NSTickMarkAbove]; + [fX264PresetsSlider setAllowsTickMarkValuesOnly:YES]; + [self x264PresetsSliderChanged: sender]; + // setup the x264 tune popup + [fX264TunePopUp removeAllItems]; + [fX264TunePopUp addItemWithTitle: @"none"]; + const char * const * x264_tunes = hb_x264_tunes(); + for (int i = 0; x264_tunes[i] != NULL; i++) + { + // we filter out "fastdecode" as we have a dedicated checkbox for it + if (strcasecmp(x264_tunes[i], "fastdecode") != 0) + { + [fX264TunePopUp addItemWithTitle: [NSString stringWithUTF8String:x264_tunes[i]]]; + } + } + // the fastdecode checkbox is off by default + [fX264FastDecodeCheck setState: NSOffState]; + // setup the h264 profile popup + [fX264ProfilePopUp removeAllItems]; + const char * const * h264_profiles = hb_h264_profiles(); + for (int i = 0; h264_profiles[i] != NULL; i++) + { + [fX264ProfilePopUp addItemWithTitle: [NSString stringWithUTF8String:h264_profiles[i]]]; + } + // setup the h264 level popup + [fX264LevelPopUp removeAllItems]; + const char * const * h264_levels = hb_h264_levels(); + for (int i = 0; h264_levels[i] != NULL; i++) + { + [fX264LevelPopUp addItemWithTitle: [NSString stringWithUTF8String:h264_levels[i]]]; + } + // clear the additional x264 options + [fDisplayX264PresetsAdditonalOptionsTextField setStringValue:@""]; +} + +- (void) enableX264Widgets: (bool) enable +{ + NSControl *controls[] = + { + fX264PresetsSlider, fX264PresetSliderLabel, fX264PresetSelectedTextField, + fX264TunePopUp, fX264TunePopUpLabel, fX264FastDecodeCheck, + fDisplayX264PresetsAdditonalOptionsTextField, fDisplayX264PresetsAdditonalOptionsLabel, + fX264ProfilePopUp, fX264ProfilePopUpLabel, + fX264LevelPopUp, fX264LevelPopUpLabel, + fDisplayX264PresetsUnparseTextField, + }; + + // check whether the x264 preset system and the advanced panel should be enabled + BOOL enable_x264_controls = (enable && [fX264UseAdvancedOptionsCheck state] == NSOffState); + BOOL enable_advanced_panel = (enable && [fX264UseAdvancedOptionsCheck state] == NSOnState); + + // enable/disable the checkbox and advanced panel + [fX264UseAdvancedOptionsCheck setEnabled:enable]; + [fAdvancedOptions enableUI:enable_advanced_panel]; + + // enable/disable the x264 preset system controls + for (unsigned i = 0; i < (sizeof(controls) / sizeof(NSControl*)); i++) + { + if ([[controls[i] className] isEqualToString: @"NSTextField"]) + { + NSTextField *tf = (NSTextField*)controls[i]; + if (![tf isBezeled]) + { + [tf setTextColor:(enable_x264_controls ? + [NSColor controlTextColor] : + [NSColor disabledControlTextColor])]; + continue; + } + } + [controls[i] setEnabled:enable_x264_controls]; + } +} + +- (IBAction) updateX264Widgets: (id) sender +{ + if ([fX264UseAdvancedOptionsCheck state] == NSOnState) + { + /* + * we are using or switching to the advanced panel + * + * if triggered by selectPreset or applyQueueSettingToMainWindow, + * the options string will have been specified explicitly - leave it. + * + * if triggered by the advanced panel on/off checkbox, set the options + * string to the value of the unparsed x264 preset system string. + */ + if (sender == fX264UseAdvancedOptionsCheck) + { + if (fX264PresetsUnparsedUTF8String != NULL) + { + [fAdvancedOptions setOptions: + [NSString stringWithUTF8String:fX264PresetsUnparsedUTF8String]]; + } + else + { + [fAdvancedOptions setOptions:@""]; + } + } + } + // enable/disable, populate and update the various widgets + [self enableX264Widgets: YES]; + [self x264PresetsSliderChanged:nil]; + [fAdvancedOptions X264AdvancedOptionsSet: nil]; +} + +#pragma mark - +#pragma mark x264 preset system + +- (NSString*) x264Preset +{ + return (NSString*)[fX264PresetNames objectAtIndex:[fX264PresetsSlider intValue]]; +} + +- (NSString*) x264Tune +{ + NSString *x264Tune = @""; + if ([fX264TunePopUp indexOfSelectedItem]) + { + x264Tune = [x264Tune stringByAppendingString: + [fX264TunePopUp titleOfSelectedItem]]; + } + if ([fX264FastDecodeCheck state]) + { + if ([x264Tune length]) + { + x264Tune = [x264Tune stringByAppendingString: @","]; + } + x264Tune = [x264Tune stringByAppendingString: @"fastdecode"]; + } + return x264Tune; +} + +- (NSString*) x264OptionExtra +{ + return [fDisplayX264PresetsAdditonalOptionsTextField stringValue]; +} + +- (NSString*) h264Profile +{ + if ([fX264ProfilePopUp indexOfSelectedItem]) + { + return [fX264ProfilePopUp titleOfSelectedItem]; + } + return @""; +} + +- (NSString*) h264Level +{ + if ([fX264LevelPopUp indexOfSelectedItem]) + { + return [fX264LevelPopUp titleOfSelectedItem]; + } + return @""; +} + +- (void) setX264Preset: (NSString*)x264Preset +{ + if (x264Preset) + { + NSString *name; + NSEnumerator *enumerator = [fX264PresetNames objectEnumerator]; + while ((name = (NSString *)[enumerator nextObject])) + { + if ([name isEqualToString:x264Preset]) + { + [fX264PresetsSlider setIntegerValue: + [fX264PresetNames indexOfObject:name]]; + return; + } + } + } + [fX264PresetsSlider setIntegerValue:fX264MediumPresetIndex]; +} + +- (void) setX264Tune: (NSString*)x264Tune +{ + if (!x264Tune) + { + [fX264TunePopUp selectItemAtIndex:0]; + [fX264FastDecodeCheck setState:NSOffState]; + return; + } + // handle fastdecode + if ([x264Tune rangeOfString:@"fastdecode"].location != NSNotFound) + { + [fX264FastDecodeCheck setState:NSOnState]; + } + else + { + [fX264FastDecodeCheck setState:NSOffState]; + } + // filter out fastdecode + x264Tune = [x264Tune stringByReplacingOccurrencesOfString:@"," + withString:@""]; + x264Tune = [x264Tune stringByReplacingOccurrencesOfString:@"fastdecode" + withString:@""]; + // set the tune + [fX264TunePopUp selectItemWithTitle:x264Tune]; + // fallback + if ([fX264TunePopUp indexOfSelectedItem] == -1) + { + [fX264TunePopUp selectItemAtIndex:0]; + } +} + +- (void) setX264OptionExtra: (NSString*)x264OptionExtra +{ + if (!x264OptionExtra) + { + [fDisplayX264PresetsAdditonalOptionsTextField setStringValue:@""]; + return; + } + [fDisplayX264PresetsAdditonalOptionsTextField setStringValue:x264OptionExtra]; +} + +- (void) setH264Profile: (NSString*)h264Profile +{ + if (!h264Profile) + { + [fX264ProfilePopUp selectItemAtIndex:0]; + return; + } + // set the profile + [fX264ProfilePopUp selectItemWithTitle:h264Profile]; + // fallback + if ([fX264ProfilePopUp indexOfSelectedItem] == -1) + { + [fX264ProfilePopUp selectItemAtIndex:0]; + } +} + +- (void) setH264Level: (NSString*)h264Level +{ + if (!h264Level) + { + [fX264LevelPopUp selectItemAtIndex:0]; + return; + } + // set the level + [fX264LevelPopUp selectItemWithTitle:h264Level]; + // fallback + if ([fX264LevelPopUp indexOfSelectedItem] == -1) + { + [fX264LevelPopUp selectItemAtIndex:0]; + } +} + + +- (IBAction) x264PresetsSliderChanged: (id) sender +{ + // we assume the preset names and slider were setup properly + [fX264PresetSelectedTextField setStringValue: [self x264Preset]]; + [self x264PresetsChangedDisplayExpandedOptions:nil]; + +} + +/* This is called everytime a x264 widget in the video tab is changed to + display the expanded options in a text field via outlet fDisplayX264PresetsUnparseTextField + */ +- (IBAction) x264PresetsChangedDisplayExpandedOptions: (id) sender + +{ + /* API reference: + * + * char * hb_x264_param_unparse(const char *x264_preset, + * const char *x264_tune, + * const char *x264_encopts, + * const char *h264_profile, + * const char *h264_level, + * int width, int height); + */ + NSString *tmpString; + const char *x264_preset = [[self x264Preset] UTF8String]; + const char *x264_tune = NULL; + const char *advanced_opts = NULL; + const char *h264_profile = NULL; + const char *h264_level = NULL; + int width = 1; + int height = 1; + // prepare the tune, advanced options, profile and level + if ([(tmpString = [self x264Tune]) length]) + { + x264_tune = [tmpString UTF8String]; + } + if ([(tmpString = [self x264OptionExtra]) length]) + { + advanced_opts = [tmpString UTF8String]; + } + if ([(tmpString = [self h264Profile]) length]) + { + h264_profile = [tmpString UTF8String]; + } + if ([(tmpString = [self h264Level]) length]) + { + h264_level = [tmpString UTF8String]; + } + // width and height must be non-zero + if (fX264PresetsWidthForUnparse && fX264PresetsHeightForUnparse) + { + width = fX264PresetsWidthForUnparse; + height = fX264PresetsHeightForUnparse; + } + // free the previous unparsed string + free(fX264PresetsUnparsedUTF8String); + // now, unparse + fX264PresetsUnparsedUTF8String = hb_x264_param_unparse(x264_preset, + x264_tune, + advanced_opts, + h264_profile, + h264_level, + width, height); + // update the text field + if (fX264PresetsUnparsedUTF8String != NULL) + { + [fDisplayX264PresetsUnparseTextField setStringValue: + [NSString stringWithFormat:@"x264 Unparse: %s", + fX264PresetsUnparsedUTF8String]]; + } + else + { + [fDisplayX264PresetsUnparseTextField setStringValue:@"x264 Unparse:"]; + } +} + +#pragma mark - +#pragma mark - Picture + +/* lets set the picture size back to the max from right after title scan + Lets use an IBAction here as down the road we could always use a checkbox + in the gui to easily take the user back to max. Remember, the compiler + resolves IBActions down to -(void) during compile anyway */ +- (IBAction) revertPictureSizeToMax: (id) sender +{ + hb_job_t * job = fTitle->job; + /* Here we apply the title source and height */ + job->width = fTitle->width; + job->height = fTitle->height; + + [self calculatePictureSizing: sender]; + /* We call method to change UI to reflect whether a preset is used or not*/ + [self customSettingUsed: sender]; +} + +/** + * Registers changes made in the Picture Settings Window. + */ + +- (void)pictureSettingsDidChange +{ + [self calculatePictureSizing:nil]; +} + +/* Get and Display Current Pic Settings in main window */ +- (IBAction) calculatePictureSizing: (id) sender +{ + if (fTitle->job->anamorphic.mode > 0) + { + fTitle->job->keep_ratio = 0; + } + + // align picture settings and video filters in the UI using tabs + [fPictureSettingsField setStringValue:[NSString stringWithFormat:@"Picture Settings: \t %@", + [self pictureSettingsSummary]]]; + [fPictureFiltersField setStringValue:[NSString stringWithFormat:@"Picture Filters: \t\t %@", + [self pictureFiltersSummary]]]; + + /* Store storage resolution for unparse */ + fX264PresetsWidthForUnparse = fTitle->job->width; + fX264PresetsHeightForUnparse = fTitle->job->height; + // width or height may have changed, unparse + [self x264PresetsChangedDisplayExpandedOptions:nil]; + + // reload still previews + // note: fTitle->job->deinterlace is set by fPictureController now + [fPictureController decombDeinterlacePreviewImage]; +} + +#pragma mark - +#pragma mark - Text Summaries + +- (NSString*) pictureSettingsSummary +{ + NSMutableString *summary = [NSMutableString stringWithString:@""]; + if (fPictureController && fTitle && fTitle->job) + { + [summary appendString:[fPictureController getPictureSizeInfoString]]; + if (fTitle->job->anamorphic.mode != 1) + { + // anamorphic is not Strict, show the modulus + [summary appendFormat:@", Modulus: %d", fTitle->job->modulus]; + } + [summary appendFormat:@", Crop: %s %d/%d/%d/%d", + [fPictureController autoCrop] ? "Auto" : "Custom", + fTitle->job->crop[0], fTitle->job->crop[1], + fTitle->job->crop[2], fTitle->job->crop[3]]; + } + return [NSString stringWithString:summary]; +} + +- (NSString*) pictureFiltersSummary +{ + NSMutableString *summary = [NSMutableString stringWithString:@""]; + if (fPictureController) + { + /* Detelecine */ + switch ([fPictureController detelecine]) + { + case 1: + [summary appendFormat:@" - Detelecine (%@)", + [fPictureController detelecineCustomString]]; + break; + + case 2: + [summary appendString:@" - Detelecine (Default)"]; + break; + + default: + break; + } + + if ([fPictureController useDecomb] == 1) + { + /* Decomb */ + switch ([fPictureController decomb]) + { + case 1: + [summary appendFormat:@" - Decomb (%@)", + [fPictureController decombCustomString]]; + break; + + case 2: + [summary appendString:@" - Decomb (Default)"]; + break; + + case 3: + [summary appendString:@" - Decomb (Fast)"]; + break; + + case 4: + [summary appendString:@" - Decomb (Bob)"]; + break; + + default: + break; + } + } + else + { + /* Deinterlace */ + switch ([fPictureController deinterlace]) + { + case 1: + [summary appendFormat:@" - Deinterlace (%@)", + [fPictureController deinterlaceCustomString]]; + break; + + case 2: + [summary appendString:@" - Deinterlace (Fast)"]; + break; + + case 3: + [summary appendString:@" - Deinterlace (Slow)"]; + break; + + case 4: + [summary appendString:@" - Deinterlace (Slower)"]; + break; + + case 5: + [summary appendString:@" - Deinterlace (Bob)"]; + break; + + default: + break; + } + } + + /* Deblock */ + if ([fPictureController deblock] > 0) + { + [summary appendFormat:@" - Deblock (%d)", + [fPictureController deblock]]; + } + + /* Denoise */ + switch ([fPictureController denoise]) + { + case 1: + [summary appendFormat:@" - Denoise (%@)", + [fPictureController denoiseCustomString]]; + break; + + case 2: + [summary appendString:@" - Denoise (Weak)"]; + break; + + case 3: + [summary appendString:@" - Denoise (Medium)"]; + break; + + case 4: + [summary appendString:@" - Denoise (Strong)"]; + break; + + default: + break; + } + + /* Grayscale */ + if ([fPictureController grayscale]) + { + [summary appendString:@" - Grayscale"]; + } + } + if ([summary hasPrefix:@" - "]) + { + [summary deleteCharactersInRange:NSMakeRange(0, 3)]; + } + return [NSString stringWithString:summary]; +} + +- (NSString*) muxerOptionsSummary +{ + NSMutableString *summary = [NSMutableString stringWithString:@""]; + if (([fDstFormatPopUp selectedItem]) && + [[fDstFormatPopUp selectedItem] tag] == HB_MUX_MP4) + { + if ([fDstMp4LargeFileCheck state]) + { + [summary appendString:@" - Large file size"]; + } + if ([fDstMp4HttpOptFileCheck state]) + { + [summary appendString:@" - Web optimized"]; + } + if ([fDstMp4iPodFileCheck state]) + { + [summary appendString:@" - iPod 5G support"]; + } + } + if ([summary hasPrefix:@" - "]) + { + [summary deleteCharactersInRange:NSMakeRange(0, 3)]; + } + return [NSString stringWithString:summary]; +} + +#pragma mark - +#pragma mark - Audio and Subtitles + + +// This causes all audio tracks from the title to be used based on the current preset +- (IBAction) addAllAudioTracks: (id) sender + +{ + [fAudioDelegate addAllTracksFromPreset:[self selectedPreset]]; + return; +} + +- (IBAction) browseImportSrtFile: (id) sender +{ + + NSOpenPanel * panel; + + panel = [NSOpenPanel openPanel]; + [panel setAllowsMultipleSelection: NO]; + [panel setCanChooseFiles: YES]; + [panel setCanChooseDirectories: NO ]; + NSString * sourceDirectory; + if ([[NSUserDefaults standardUserDefaults] stringForKey:@"LastSrtImportDirectory"]) + { + sourceDirectory = [[NSUserDefaults standardUserDefaults] stringForKey:@"LastSrtImportDirectory"]; + } + else + { + sourceDirectory = @"~/Desktop"; + sourceDirectory = [sourceDirectory stringByExpandingTildeInPath]; + } + /* we open up the browse srt sheet here and call for browseImportSrtFileDone after the sheet is closed */ + NSArray *fileTypes = [NSArray arrayWithObjects:@"plist", @"srt", nil]; + [panel beginSheetForDirectory: sourceDirectory file: nil types: fileTypes + modalForWindow: fWindow modalDelegate: self + didEndSelector: @selector( browseImportSrtFileDone:returnCode:contextInfo: ) + contextInfo: sender]; +} + +- (void) browseImportSrtFileDone: (NSSavePanel *) sheet + returnCode: (int) returnCode contextInfo: (void *) contextInfo +{ + if( returnCode == NSOKButton ) + { + NSString *importSrtDirectory = [[sheet filename] stringByDeletingLastPathComponent]; + NSString *importSrtFilePath = [sheet filename]; + [[NSUserDefaults standardUserDefaults] setObject:importSrtDirectory forKey:@"LastSrtImportDirectory"]; + + /* now pass the string off to fSubtitlesDelegate to add the srt file to the dropdown */ + [fSubtitlesDelegate createSubtitleSrtTrack:importSrtFilePath]; + + [fSubtitlesTable reloadData]; + + } +} + +#pragma mark - +#pragma mark Open New Windows + +- (IBAction) openHomepage: (id) sender +{ + [[NSWorkspace sharedWorkspace] openURL: [NSURL + URLWithString:@"http://handbrake.fr/"]]; +} + +- (IBAction) openForums: (id) sender +{ + [[NSWorkspace sharedWorkspace] openURL: [NSURL + URLWithString:@"http://forum.handbrake.fr/"]]; +} +- (IBAction) openUserGuide: (id) sender +{ + [[NSWorkspace sharedWorkspace] openURL: [NSURL + URLWithString:@"http://trac.handbrake.fr/wiki/HandBrakeGuide"]]; +} + +/** + * Shows debug output window. + */ +- (IBAction)showDebugOutputPanel:(id)sender +{ + [outputPanel showOutputPanel:sender]; +} + +/** + * Shows preferences window. + */ +- (IBAction) showPreferencesWindow: (id) sender +{ + NSWindow * window = [fPreferencesController window]; + if (![window isVisible]) + [window center]; + + [window makeKeyAndOrderFront: nil]; +} + +/** + * Shows queue window. + */ +- (IBAction) showQueueWindow:(id)sender +{ + [fQueueController showQueueWindow:sender]; +} + + +- (IBAction) toggleDrawer:(id)sender +{ + [fPresetDrawer toggle:self]; +} + +/** + * Shows Picture Settings Window. + */ + +- (IBAction) showPicturePanel: (id) sender +{ + [fPictureController showPictureWindow:sender]; +} + +- (void) picturePanelWindowed +{ + [fPictureController setToWindowedMode]; +} + +- (IBAction) showPreviewWindow: (id) sender +{ + [fPictureController showPreviewWindow:sender]; +} + +#pragma mark - +#pragma mark Preset Outline View Methods +#pragma mark - Required +/* These are required by the NSOutlineView Datasource Delegate */ + + +/* used to specify the number of levels to show for each item */ +- (int)outlineView:(NSOutlineView *)fPresetsOutlineView numberOfChildrenOfItem:(id)item +{ + /* currently use no levels to test outline view viability */ + if (item == nil) // for an outline view the root level of the hierarchy is always nil + { + return [UserPresets count]; + } + else + { + /* we need to return the count of the array in ChildrenArray for this folder */ + NSArray *children = nil; + children = [item objectForKey:@"ChildrenArray"]; + if ([children count] > 0) + { + return [children count]; + } + else + { + return 0; + } + } +} + +/* We use this to deterimine children of an item */ +- (id)outlineView:(NSOutlineView *)fPresetsOutlineView child:(NSInteger)index ofItem:(id)item +{ + + /* we need to return the count of the array in ChildrenArray for this folder */ + NSArray *children = nil; + if (item == nil) + { + children = UserPresets; + } + else + { + if ([item objectForKey:@"ChildrenArray"]) + { + children = [item objectForKey:@"ChildrenArray"]; + } + } + if ((children == nil) || ( [children count] <= (NSUInteger) index)) + { + return nil; + } + else + { + return [children objectAtIndex:index]; + } + + + // We are only one level deep, so we can't be asked about children + //NSAssert (NO, @"Presets View outlineView:child:ofItem: currently can't handle nested items."); + //return nil; +} + +/* We use this to determine if an item should be expandable */ +- (BOOL)outlineView:(NSOutlineView *)fPresetsOutlineView isItemExpandable:(id)item +{ + + /* we need to return the count of the array in ChildrenArray for this folder */ + NSArray *children= nil; + if (item == nil) + { + children = UserPresets; + } + else + { + if ([item objectForKey:@"ChildrenArray"]) + { + children = [item objectForKey:@"ChildrenArray"]; + } + } + + /* To deterimine if an item should show a disclosure triangle + * we could do it by the children count as so: + * if ([children count] < 1) + * However, lets leave the triangle show even if there are no + * children to help indicate a folder, just like folder in the + * finder can show a disclosure triangle even when empty + */ + + /* We need to determine if the item is a folder */ + if ([[item objectForKey:@"Folder"] intValue] == 1) + { + return YES; + } + else + { + return NO; + } + +} + +- (BOOL)outlineView:(NSOutlineView *)outlineView shouldExpandItem:(id)item +{ + // Our outline view has no levels, but we can still expand every item. Doing so + // just makes the row taller. See heightOfRowByItem below. +//return ![(HBQueueOutlineView*)outlineView isDragging]; + +return YES; +} + + +/* Used to tell the outline view which information is to be displayed per item */ +- (id)outlineView:(NSOutlineView *)fPresetsOutlineView objectValueForTableColumn:(NSTableColumn *)tableColumn byItem:(id)item +{ + /* We have two columns right now, icon and PresetName */ + + if ([[tableColumn identifier] isEqualToString:@"PresetName"]) + { + return [item objectForKey:@"PresetName"]; + } + else + { + //return @""; + return nil; + } +} + +- (id)outlineView:(NSOutlineView *)outlineView itemForPersistentObject:(id)object +{ + return [NSKeyedUnarchiver unarchiveObjectWithData:object]; +} +- (id)outlineView:(NSOutlineView *)outlineView persistentObjectForItem:(id)item +{ + return [NSKeyedArchiver archivedDataWithRootObject:item]; +} + +#pragma mark - Added Functionality (optional) +/* Use to customize the font and display characteristics of the title cell */ +- (void)outlineView:(NSOutlineView *)outlineView willDisplayCell:(id)cell forTableColumn:(NSTableColumn *)tableColumn item:(id)item +{ + if ([[tableColumn identifier] isEqualToString:@"PresetName"]) + { + NSFont *txtFont; + NSColor *fontColor; + NSColor *shadowColor; + txtFont = [NSFont systemFontOfSize: [NSFont smallSystemFontSize]]; + /*check to see if its a selected row */ + if ([fPresetsOutlineView selectedRow] == [fPresetsOutlineView rowForItem:item]) + { + + fontColor = [NSColor blackColor]; + shadowColor = [NSColor colorWithDeviceRed:(127.0/255.0) green:(140.0/255.0) blue:(160.0/255.0) alpha:1.0]; + } + else + { + if ([[item objectForKey:@"Type"] intValue] == 0) + { + fontColor = [NSColor blueColor]; + } + else // User created preset, use a black font + { + fontColor = [NSColor blackColor]; + } + /* check to see if its a folder */ + //if ([[item objectForKey:@"Folder"] intValue] == 1) + //{ + //fontColor = [NSColor greenColor]; + //} + + + } + /* We use bold text for the default preset */ + if (presetUserDefault == nil && // no User default found + [[item objectForKey:@"Default"] intValue] == 1)// 1 is HB default + { + txtFont = [NSFont boldSystemFontOfSize: [NSFont smallSystemFontSize]]; + } + if ([[item objectForKey:@"Default"] intValue] == 2)// 2 is User default + { + txtFont = [NSFont boldSystemFontOfSize: [NSFont smallSystemFontSize]]; + } + + + [cell setTextColor:fontColor]; + [cell setFont:txtFont]; + + } +} + +/* We use this to edit the name field in the outline view */ +- (void)outlineView:(NSOutlineView *)outlineView setObjectValue:(id)object forTableColumn:(NSTableColumn *)tableColumn byItem:(id)item +{ + if ([[tableColumn identifier] isEqualToString:@"PresetName"]) + { + id theRecord; + + theRecord = item; + [theRecord setObject:object forKey:@"PresetName"]; + + [self sortPresets]; + + [fPresetsOutlineView reloadData]; + /* We save all of the preset data here */ + [self savePreset]; + } +} +/* We use this to provide tooltips for the items in the presets outline view */ +- (NSString *)outlineView:(NSOutlineView *)fPresetsOutlineView toolTipForCell:(NSCell *)cell rect:(NSRectPointer)rect tableColumn:(NSTableColumn *)tc item:(id)item mouseLocation:(NSPoint)mouseLocation +{ + //if ([[tc identifier] isEqualToString:@"PresetName"]) + //{ + /* initialize the tooltip contents variable */ + NSString *loc_tip; + /* if there is a description for the preset, we show it in the tooltip */ + if ([item objectForKey:@"PresetDescription"]) + { + loc_tip = [item objectForKey:@"PresetDescription"]; + return (loc_tip); + } + else + { + loc_tip = @"No description available"; + } + return (loc_tip); + //} +} + +- (void) outlineViewSelectionDidChange: (NSNotification *) ignored + +{ + [self willChangeValueForKey: @"hasValidPresetSelected"]; + [self didChangeValueForKey: @"hasValidPresetSelected"]; + return; +} + +#pragma mark - +#pragma mark Preset Outline View Methods (dragging related) + + +- (BOOL)outlineView:(NSOutlineView *)outlineView writeItems:(NSArray *)items toPasteboard:(NSPasteboard *)pboard +{ + // Dragging is only allowed for custom presets. + //[[[self selectedPreset] objectForKey:@"Default"] intValue] != 1 + if ([[[self selectedPreset] objectForKey:@"Type"] intValue] == 0) // 0 is built in preset + { + return NO; + } + // Don't retain since this is just holding temporaral drag information, and it is + //only used during a drag! We could put this in the pboard actually. + fDraggedNodes = items; + // Provide data for our custom type, and simple NSStrings. + [pboard declareTypes:[NSArray arrayWithObjects: DragDropSimplePboardType, nil] owner:self]; + + // the actual data doesn't matter since DragDropSimplePboardType drags aren't recognized by anyone but us!. + [pboard setData:[NSData data] forType:DragDropSimplePboardType]; + + return YES; +} + +- (NSDragOperation)outlineView:(NSOutlineView *)outlineView validateDrop:(id )info proposedItem:(id)item proposedChildIndex:(NSInteger)index +{ + + // Don't allow dropping ONTO an item since they can't really contain any children. + + BOOL isOnDropTypeProposal = index == NSOutlineViewDropOnItemIndex; + if (isOnDropTypeProposal) + return NSDragOperationNone; + + // Don't allow dropping INTO an item since they can't really contain any children as of yet. + if (item != nil) + { + index = [fPresetsOutlineView rowForItem: item] + 1; + item = nil; + } + + // Don't allow dropping into the Built In Presets. + if (index < presetCurrentBuiltInCount) + { + return NSDragOperationNone; + index = MAX (index, presetCurrentBuiltInCount); + } + + [outlineView setDropItem:item dropChildIndex:index]; + return NSDragOperationGeneric; +} + + + +- (BOOL)outlineView:(NSOutlineView *)outlineView acceptDrop:(id )info item:(id)item childIndex:(NSInteger)index +{ + /* first, lets see if we are dropping into a folder */ + if ([[fPresetsOutlineView itemAtRow:index] objectForKey:@"Folder"] && [[[fPresetsOutlineView itemAtRow:index] objectForKey:@"Folder"] intValue] == 1) // if its a folder + { + NSMutableArray *childrenArray = [[NSMutableArray alloc] init]; + childrenArray = [[fPresetsOutlineView itemAtRow:index] objectForKey:@"ChildrenArray"]; + [childrenArray addObject:item]; + [[fPresetsOutlineView itemAtRow:index] setObject:[NSMutableArray arrayWithArray: childrenArray] forKey:@"ChildrenArray"]; + [childrenArray autorelease]; + } + else // We are not, so we just move the preset into the existing array + { + NSMutableIndexSet *moveItems = [NSMutableIndexSet indexSet]; + id obj; + NSEnumerator *enumerator = [fDraggedNodes objectEnumerator]; + while (obj = [enumerator nextObject]) + { + [moveItems addIndex:[UserPresets indexOfObject:obj]]; + } + // Successful drop, lets rearrange the view and save it all + [self moveObjectsInPresetsArray:UserPresets fromIndexes:moveItems toIndex: index]; + } + [fPresetsOutlineView reloadData]; + [self savePreset]; + return YES; +} + +- (void)moveObjectsInPresetsArray:(NSMutableArray *)array fromIndexes:(NSIndexSet *)indexSet toIndex:(NSUInteger)insertIndex +{ + NSUInteger index = [indexSet lastIndex]; + NSUInteger aboveInsertIndexCount = 0; + + NSUInteger removeIndex; + + if (index >= insertIndex) + { + removeIndex = index + aboveInsertIndexCount; + aboveInsertIndexCount++; + } + else + { + removeIndex = index; + insertIndex--; + } + + id object = [[array objectAtIndex:removeIndex] retain]; + [array removeObjectAtIndex:removeIndex]; + [array insertObject:object atIndex:insertIndex]; + [object release]; + + index = [indexSet indexLessThanIndex:index]; +} + + + +#pragma mark - Functional Preset NSOutlineView Methods + +- (IBAction)selectPreset:(id)sender +{ + + if (YES == [self hasValidPresetSelected]) + { + chosenPreset = [self selectedPreset]; + [fPresetSelectedDisplay setStringValue:[chosenPreset objectForKey:@"PresetName"]]; + + if ([[chosenPreset objectForKey:@"Default"] intValue] == 1) + { + [fPresetSelectedDisplay setStringValue:[NSString stringWithFormat:@"%@ (Default)", [chosenPreset objectForKey:@"PresetName"]]]; + } + else + { + [fPresetSelectedDisplay setStringValue:[chosenPreset objectForKey:@"PresetName"]]; + } + + /* File Format */ + [fDstFormatPopUp selectItemWithTitle:[chosenPreset objectForKey:@"FileFormat"]]; + [self formatPopUpChanged:nil]; + + /* Chapter Markers*/ + [fCreateChapterMarkers setState:[[chosenPreset objectForKey:@"ChapterMarkers"] intValue]]; + /* check to see if we have only one chapter */ + [self chapterPopUpChanged:nil]; + + /* Allow Mpeg4 64 bit formatting +4GB file sizes */ + [fDstMp4LargeFileCheck setState:[[chosenPreset objectForKey:@"Mp4LargeFile"] intValue]]; + /* Mux mp4 with http optimization */ + [fDstMp4HttpOptFileCheck setState:[[chosenPreset objectForKey:@"Mp4HttpOptimize"] intValue]]; + + /* Video encoder */ + [fVidEncoderPopUp selectItemWithTitle:[chosenPreset objectForKey:@"VideoEncoder"]]; + [self videoEncoderPopUpChanged:nil]; + + if ([[chosenPreset objectForKey:@"VideoEncoder"] isEqualToString:@"H.264 (x264)"]) + { + if (![chosenPreset objectForKey:@"x264UseAdvancedOptions"] || + [[chosenPreset objectForKey:@"x264UseAdvancedOptions"] intValue]) + { + /* + * x264UseAdvancedOptions is not set (legacy preset) + * or set to 1 (enabled), so we use the old advanced panel + */ + if ([chosenPreset objectForKey:@"x264Option"]) + { + /* we set the advanced options string here if applicable */ + [fAdvancedOptions setOptions: [chosenPreset objectForKey:@"x264Option"]]; + [self setX264OptionExtra:[chosenPreset objectForKey:@"x264Option"]]; + } + else + { + [fAdvancedOptions setOptions: @""]; + [self setX264OptionExtra:nil]; + } + /* preset does not use the x264 preset system, reset the widgets */ + [self setX264Preset: nil]; + [self setX264Tune: nil]; + [self setH264Profile:nil]; + [self setH264Level: nil]; + /* we enable the advanced panel and update the widgets */ + [fX264UseAdvancedOptionsCheck setState:NSOnState]; + [self updateX264Widgets:nil]; + } + else + { + /* + * x264UseAdvancedOptions is set to 0 (disabled), + * so we use the x264 preset system + */ + [self setX264Preset: [chosenPreset objectForKey:@"x264Preset"]]; + [self setX264Tune: [chosenPreset objectForKey:@"x264Tune"]]; + [self setX264OptionExtra:[chosenPreset objectForKey:@"x264OptionExtra"]]; + [self setH264Profile: [chosenPreset objectForKey:@"h264Profile"]]; + [self setH264Level: [chosenPreset objectForKey:@"h264Level"]]; + /* preset does not use the advanced panel, reset it */ + [fAdvancedOptions setOptions:@""]; + /* we disable the advanced panel and update the widgets */ + [fX264UseAdvancedOptionsCheck setState:NSOffState]; + [self updateX264Widgets:nil]; + } + } + + if ([chosenPreset objectForKey:@"lavcOption"]) + { + [fAdvancedOptions setLavcOptions:[chosenPreset objectForKey:@"lavcOption"]]; + } + else + { + [fAdvancedOptions setLavcOptions:@""]; + } + + /* Lets run through the following functions to get variables set there */ + //[self videoEncoderPopUpChanged:nil]; + /* Set the state of ipod compatible with Mp4iPodCompatible. Only for x264*/ + [fDstMp4iPodFileCheck setState:[[chosenPreset objectForKey:@"Mp4iPodCompatible"] intValue]]; + [self calculateBitrate:nil]; + + /* Video quality */ + + int qualityType = [[chosenPreset objectForKey:@"VideoQualityType"] intValue] - 1; + /* Note since the removal of Target Size encoding, the possible values for VideoQuality type are 0 - 1. + * Therefore any preset that uses the old 2 for Constant Quality would now use 1 since there is one less index + * for the fVidQualityMatrix. It should also be noted that any preset that used the deprecated Target Size + * setting of 0 would set us to 0 or ABR since ABR is now tagged 0. Fortunately this does not affect any built-in + * presets since they all use Constant Quality or Average Bitrate.*/ + if (qualityType == -1) + { + qualityType = 0; + } + [fVidQualityMatrix selectCellWithTag:qualityType]; + + [fVidBitrateField setStringValue:[chosenPreset objectForKey:@"VideoAvgBitrate"]]; + + if ([[fVidEncoderPopUp selectedItem] tag] == HB_VCODEC_THEORA) + { + /* Since theora's qp value goes up from left to right, we can just set the slider float value */ + [fVidQualitySlider setFloatValue:[[chosenPreset objectForKey:@"VideoQualitySlider"] floatValue]]; + } + else + { + /* Since ffmpeg and x264 use an "inverted" slider (lower qp/rf values indicate a higher quality) we invert the value on the slider */ + [fVidQualitySlider setFloatValue:([fVidQualitySlider maxValue] + [fVidQualitySlider minValue]) - [[chosenPreset objectForKey:@"VideoQualitySlider"] floatValue]]; + } + + [self videoMatrixChanged:nil]; + + /* Video framerate */ + if ([[chosenPreset objectForKey:@"VideoFramerate"] isEqualToString:@"Same as source"]) + { + /* Now set the Video Frame Rate Mode to either vfr or cfr according to the preset */ + if (![chosenPreset objectForKey:@"VideoFramerateMode"] || + [[chosenPreset objectForKey:@"VideoFramerateMode"] isEqualToString:@"vfr"]) + { + [fFramerateMatrix selectCellAtRow:0 column:0]; // we want vfr + } + else + { + [fFramerateMatrix selectCellAtRow:1 column:0]; // we want cfr + } + } + else + { + /* Now set the Video Frame Rate Mode to either pfr or cfr according to the preset */ + if ([[chosenPreset objectForKey:@"VideoFramerateMode"] isEqualToString:@"pfr"] || + [[chosenPreset objectForKey:@"VideoFrameratePFR"] intValue] == 1) + { + [fFramerateMatrix selectCellAtRow:0 column:0]; // we want pfr + } + else + { + [fFramerateMatrix selectCellAtRow:1 column:0]; // we want cfr + } + } + [fVidRatePopUp selectItemWithTitle:[chosenPreset objectForKey:@"VideoFramerate"]]; + [self videoFrameRateChanged:nil]; + + /* 2 Pass Encoding */ + [fVidTwoPassCheck setState:[[chosenPreset objectForKey:@"VideoTwoPass"] intValue]]; + [self twoPassCheckboxChanged:nil]; + + /* Turbo 1st pass for 2 Pass Encoding */ + [fVidTurboPassCheck setState:[[chosenPreset objectForKey:@"VideoTurboTwoPass"] intValue]]; + + /* Auto Passthru: if the preset has Auto Passthru fields, use them. + * Otherwise assume every passthru is allowed and the fallback is AC3 */ + id tempObject; + if ((tempObject = [chosenPreset objectForKey:@"AudioAllowAACPass"]) != nil) + { + [fAudioAllowAACPassCheck setState:[tempObject intValue]]; + } + else + { + [fAudioAllowAACPassCheck setState:NSOnState]; + } + if ((tempObject = [chosenPreset objectForKey:@"AudioAllowAC3Pass"]) != nil) + { + [fAudioAllowAC3PassCheck setState:[tempObject intValue]]; + } + else + { + [fAudioAllowAC3PassCheck setState:NSOnState]; + } + if ((tempObject = [chosenPreset objectForKey:@"AudioAllowDTSHDPass"]) != nil) + { + [fAudioAllowDTSHDPassCheck setState:[tempObject intValue]]; + } + else + { + [fAudioAllowDTSHDPassCheck setState:NSOnState]; + } + if ((tempObject = [chosenPreset objectForKey:@"AudioAllowDTSPass"]) != nil) + { + [fAudioAllowDTSPassCheck setState:[tempObject intValue]]; + } + else + { + [fAudioAllowDTSPassCheck setState:NSOnState]; + } + if ((tempObject = [chosenPreset objectForKey:@"AudioAllowMP3Pass"]) != nil) + { + [fAudioAllowMP3PassCheck setState:[tempObject intValue]]; + } + else + { + [fAudioAllowMP3PassCheck setState:NSOnState]; + } + if ((tempObject = [chosenPreset objectForKey:@"AudioEncoderFallback"]) != nil) + { + [fAudioFallbackPopUp selectItemWithTitle:tempObject]; + } + else + { + [fAudioFallbackPopUp selectItemWithTitle:@"AC3 (ffmpeg)"]; + } + + /* Audio */ + [fAudioDelegate addTracksFromPreset: chosenPreset]; + + /*Subtitles*/ + [fSubPopUp selectItemWithTitle:[chosenPreset objectForKey:@"Subtitles"]]; + /* Forced Subtitles */ + [fSubForcedCheck setState:[[chosenPreset objectForKey:@"SubtitlesForced"] intValue]]; + + /* Picture Settings */ + /* Note: objectForKey:@"UsesPictureSettings" refers to picture size, which encompasses: + * height, width, keep ar, anamorphic and crop settings. + * picture filters are handled separately below. + */ + /* Check to see if the objectForKey:@"UsesPictureSettings is greater than 0, as 0 means use picture sizing "None" + * ( 2 is use max for source and 1 is use exact size when the preset was created ) and the + * preset completely ignores any picture sizing values in the preset. + */ + if ([[chosenPreset objectForKey:@"UsesPictureSettings"] intValue] > 0) + { + hb_job_t * job = fTitle->job; + + /* If Cropping is set to custom, then recall all four crop values from + when the preset was created and apply them */ + if ([[chosenPreset objectForKey:@"PictureAutoCrop"] intValue] == 0) + { + [fPictureController setAutoCrop:NO]; + + /* Here we use the custom crop values saved at the time the preset was saved */ + job->crop[0] = [[chosenPreset objectForKey:@"PictureTopCrop"] intValue]; + job->crop[1] = [[chosenPreset objectForKey:@"PictureBottomCrop"] intValue]; + job->crop[2] = [[chosenPreset objectForKey:@"PictureLeftCrop"] intValue]; + job->crop[3] = [[chosenPreset objectForKey:@"PictureRightCrop"] intValue]; + + } + else /* if auto crop has been saved in preset, set to auto and use post scan auto crop */ + { + [fPictureController setAutoCrop:YES]; + /* Here we use the auto crop values determined right after scan */ + job->crop[0] = AutoCropTop; + job->crop[1] = AutoCropBottom; + job->crop[2] = AutoCropLeft; + job->crop[3] = AutoCropRight; + + } + + /* Set modulus */ + if ([chosenPreset objectForKey:@"PictureModulus"]) + { + job->modulus = [[chosenPreset objectForKey:@"PictureModulus"] intValue]; + } + else + { + job->modulus = 16; + } + + /* Check to see if the objectForKey:@"UsesPictureSettings" is 2, + * which means "Use max. picture size for the source" */ + if ([[chosenPreset objectForKey:@"UsesPictureSettings"] intValue] == 2 || + [[chosenPreset objectForKey:@"UsesMaxPictureSettings"] intValue] == 1) + { + /* Use Max Picture settings for whatever the dvd is.*/ + [self revertPictureSizeToMax:nil]; + job->keep_ratio = [[chosenPreset objectForKey:@"PictureKeepRatio"] intValue]; + if (job->keep_ratio == 1) + { + hb_fix_aspect( job, HB_KEEP_WIDTH ); + if( job->height > fTitle->height ) + { + job->height = fTitle->height; + hb_fix_aspect( job, HB_KEEP_HEIGHT ); + } + } + job->anamorphic.mode = [[chosenPreset objectForKey:@"PicturePAR"] intValue]; + } + /* If not 0 or 2 we assume objectForKey:@"UsesPictureSettings" is 1, + * which means "Use the picture size specified in the preset" */ + else + { + /* + * if the preset specifies neither max. width nor height + * (both are 0), use the max. picture size + * + * if the specified non-zero dimensions exceed those of the + * source, also use the max. picture size (no upscaling) + */ + if (([[chosenPreset objectForKey:@"PictureWidth"] intValue] <= 0 && + [[chosenPreset objectForKey:@"PictureHeight"] intValue] <= 0) || + ([[chosenPreset objectForKey:@"PictureWidth"] intValue] > fTitle->width && + [[chosenPreset objectForKey:@"PictureHeight"] intValue] > fTitle->height) || + ([[chosenPreset objectForKey:@"PictureHeight"] intValue] <= 0 && + [[chosenPreset objectForKey:@"PictureWidth"] intValue] > fTitle->width) || + ([[chosenPreset objectForKey:@"PictureWidth"] intValue] <= 0 && + [[chosenPreset objectForKey:@"PictureHeight"] intValue] > fTitle->height)) + { + /* use the source's width/height to avoid upscaling */ + [self revertPictureSizeToMax:nil]; + } + else // source width/height is >= preset width/height + { + /* use the preset values for width/height */ + job->width = [[chosenPreset objectForKey:@"PictureWidth"] intValue]; + job->height = [[chosenPreset objectForKey:@"PictureHeight"] intValue]; + } + job->keep_ratio = [[chosenPreset objectForKey:@"PictureKeepRatio"] intValue]; + if (job->keep_ratio == 1) + { + int height = fTitle->height; + + if ( job->height && job->height < fTitle->height ) + height = job->height; + + hb_fix_aspect( job, HB_KEEP_WIDTH ); + // Make sure the resulting height is less than + // the title height and less than the height + // requested in the preset. + if( job->height > height ) + { + job->height = height; + hb_fix_aspect( job, HB_KEEP_HEIGHT ); + } + } + job->anamorphic.mode = [[chosenPreset objectForKey:@"PicturePAR"] intValue]; + if ( job->anamorphic.mode > 0 ) + { + int w, h, par_w, par_h; + + job->anamorphic.par_width = fTitle->pixel_aspect_width; + job->anamorphic.par_height = fTitle->pixel_aspect_height; + job->maxWidth = job->width; + job->maxHeight = job->height; + hb_set_anamorphic_size( job, &w, &h, &par_w, &par_h ); + job->maxWidth = 0; + job->maxHeight = 0; + job->width = w; + job->height = h; + } + + } + + + } + /* If the preset has an objectForKey:@"UsesPictureFilters", and handle the filters here */ + if ([chosenPreset objectForKey:@"UsesPictureFilters"] && [[chosenPreset objectForKey:@"UsesPictureFilters"] intValue] > 0) + { + /* Filters */ + + /* We only allow *either* Decomb or Deinterlace. So check for the PictureDecombDeinterlace key. */ + [fPictureController setUseDecomb:1]; + [fPictureController setDecomb:0]; + [fPictureController setDeinterlace:0]; + if ([[chosenPreset objectForKey:@"PictureDecombDeinterlace"] intValue] == 1) + { + /* we are using decomb */ + /* Decomb */ + if ([[chosenPreset objectForKey:@"PictureDecomb"] intValue] > 0) + { + [fPictureController setDecomb:[[chosenPreset objectForKey:@"PictureDecomb"] intValue]]; + + /* if we are using "Custom" in the decomb setting, also set the custom string*/ + if ([[chosenPreset objectForKey:@"PictureDecomb"] intValue] == 1) + { + [fPictureController setDecombCustomString:[chosenPreset objectForKey:@"PictureDecombCustom"]]; + } + } + } + else + { + /* We are using Deinterlace */ + /* Deinterlace */ + if ([[chosenPreset objectForKey:@"PictureDeinterlace"] intValue] > 0) + { + [fPictureController setUseDecomb:0]; + [fPictureController setDeinterlace:[[chosenPreset objectForKey:@"PictureDeinterlace"] intValue]]; + /* if we are using "Custom" in the deinterlace setting, also set the custom string*/ + if ([[chosenPreset objectForKey:@"PictureDeinterlace"] intValue] == 1) + { + [fPictureController setDeinterlaceCustomString:[chosenPreset objectForKey:@"PictureDeinterlaceCustom"]]; + } + } + } + + + /* Detelecine */ + if ([[chosenPreset objectForKey:@"PictureDetelecine"] intValue] > 0) + { + [fPictureController setDetelecine:[[chosenPreset objectForKey:@"PictureDetelecine"] intValue]]; + /* if we are using "Custom" in the detelecine setting, also set the custom string*/ + if ([[chosenPreset objectForKey:@"PictureDetelecine"] intValue] == 1) + { + [fPictureController setDetelecineCustomString:[chosenPreset objectForKey:@"PictureDetelecineCustom"]]; + } + } + else + { + [fPictureController setDetelecine:0]; + } + + /* Denoise */ + if ([[chosenPreset objectForKey:@"PictureDenoise"] intValue] > 0) + { + [fPictureController setDenoise:[[chosenPreset objectForKey:@"PictureDenoise"] intValue]]; + /* if we are using "Custom" in the denoise setting, also set the custom string*/ + if ([[chosenPreset objectForKey:@"PictureDenoise"] intValue] == 1) + { + [fPictureController setDenoiseCustomString:[chosenPreset objectForKey:@"PictureDenoiseCustom"]]; + } + } + else + { + [fPictureController setDenoise:0]; + } + + /* Deblock */ + if ([[chosenPreset objectForKey:@"PictureDeblock"] intValue] == 1) + { + /* if its a one, then its the old on/off deblock, set on to 5*/ + [fPictureController setDeblock:5]; + } + else + { + /* use the settings intValue */ + [fPictureController setDeblock:[[chosenPreset objectForKey:@"PictureDeblock"] intValue]]; + } + + if ([[chosenPreset objectForKey:@"VideoGrayScale"] intValue] == 1) + { + [fPictureController setGrayscale:1]; + } + else + { + [fPictureController setGrayscale:0]; + } + } + /* we call SetTitle: in fPictureController so we get an instant update in the Picture Settings window */ + [fPictureController SetTitle:fTitle]; + [fPictureController SetTitle:fTitle]; + [self calculatePictureSizing:nil]; + } +} + + +- (BOOL)hasValidPresetSelected +{ + return ([fPresetsOutlineView selectedRow] >= 0 && [[[self selectedPreset] objectForKey:@"Folder"] intValue] != 1); +} + + +- (id)selectedPreset +{ + return [fPresetsOutlineView itemAtRow:[fPresetsOutlineView selectedRow]]; +} + + +#pragma mark - +#pragma mark Manage Presets + +- (void) loadPresets { + /* We declare the default NSFileManager into fileManager */ + NSFileManager * fileManager = [NSFileManager defaultManager]; + /* We define the location of the user presets file */ + UserPresetsFile = @"~/Library/Application Support/HandBrake/UserPresets.plist"; + UserPresetsFile = [[UserPresetsFile stringByExpandingTildeInPath]retain]; + /* We check for the presets.plist */ + if ([fileManager fileExistsAtPath:UserPresetsFile] == 0) + { + [fileManager createFileAtPath:UserPresetsFile contents:nil attributes:nil]; + } + + UserPresets = [[NSMutableArray alloc] initWithContentsOfFile:UserPresetsFile]; + if (nil == UserPresets) + { + UserPresets = [[NSMutableArray alloc] init]; + [self addFactoryPresets:nil]; + } + [fPresetsOutlineView reloadData]; + + [self checkBuiltInsForUpdates]; +} + +- (void) checkBuiltInsForUpdates { + + BOOL updateBuiltInPresets = NO; + int i = 0; + NSEnumerator *enumerator = [UserPresets objectEnumerator]; + id tempObject; + while (tempObject = [enumerator nextObject]) + { + /* iterate through the built in presets to see if any have an old build number */ + NSMutableDictionary *thisPresetDict = tempObject; + /*Key Type == 0 is built in, and key PresetBuildNumber is the build number it was created with */ + if ([[thisPresetDict objectForKey:@"Type"] intValue] == 0) + { + if (![thisPresetDict objectForKey:@"PresetBuildNumber"] || [[thisPresetDict objectForKey:@"PresetBuildNumber"] intValue] < [[[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"] intValue]) + { + updateBuiltInPresets = YES; + } + } + i++; + } + /* if we have built in presets to update, then do so AlertBuiltInPresetUpdate*/ + if ( updateBuiltInPresets == YES) + { + if( [[NSUserDefaults standardUserDefaults] boolForKey:@"AlertBuiltInPresetUpdate"] == YES) + { + /* Show an alert window that built in presets will be updated */ + /*On Screen Notification*/ + int status; + NSBeep(); + status = NSRunAlertPanel(@"HandBrake has determined your built in presets are out of date…",@"HandBrake will now update your built-in presets.", @"OK", nil, nil); + [NSApp requestUserAttention:NSCriticalRequest]; + } + /* when alert is dismissed, go ahead and update the built in presets */ + [self addFactoryPresets:nil]; + } + +} + + +- (IBAction) addPresetPicDropdownChanged: (id) sender +{ + if ([[fPresetNewPicSettingsPopUp selectedItem] tag] == 1) + { + [fPresetNewPicWidthHeightBox setHidden:NO]; + } + else + { + [fPresetNewPicWidthHeightBox setHidden:YES]; + } +} + +- (IBAction) showAddPresetPanel: (id) sender +{ + /* Deselect the currently selected Preset if there is one*/ + [fPresetsOutlineView deselectRow:[fPresetsOutlineView selectedRow]]; + + /* + * Populate the preset picture settings popup. + * + * Custom is not applicable when the anamorphic mode is Strict. + * + * Use [NSMenuItem tag] to store preset values for each option. + */ + [fPresetNewPicSettingsPopUp removeAllItems]; + [fPresetNewPicSettingsPopUp addItemWithTitle:@"None"]; + [[fPresetNewPicSettingsPopUp lastItem] setTag: 0]; + if (fTitle->job->anamorphic.mode != 1) + { + // not Strict, Custom is applicable + [fPresetNewPicSettingsPopUp addItemWithTitle:@"Custom"]; + [[fPresetNewPicSettingsPopUp lastItem] setTag: 1]; + } + [fPresetNewPicSettingsPopUp addItemWithTitle:@"Source Maximum (post source scan)"]; + [[fPresetNewPicSettingsPopUp lastItem] setTag: 2]; + /* + * Default to Source Maximum for anamorphic Strict + * Default to Custom for all other anamorphic modes + */ + [fPresetNewPicSettingsPopUp selectItemWithTag: (1 + (fTitle->job->anamorphic.mode == 1))]; + /* Save the current filters in the preset by default */ + [fPresetNewPicFiltersCheck setState:NSOnState]; + // fPresetNewFolderCheck + [fPresetNewFolderCheck setState:NSOffState]; + /* Erase info from the input fields*/ + [fPresetNewName setStringValue: @""]; + [fPresetNewDesc setStringValue: @""]; + + /* Initialize custom height and width settings to current values */ + + [fPresetNewPicWidth setStringValue: [NSString stringWithFormat:@"%d",fTitle->job->width]]; + [fPresetNewPicHeight setStringValue: [NSString stringWithFormat:@"%d",fTitle->job->height]]; + [self addPresetPicDropdownChanged:nil]; + /* Show the panel */ + [NSApp beginSheet:fAddPresetPanel modalForWindow:fWindow modalDelegate:nil didEndSelector:NULL contextInfo:NULL]; +} + +- (IBAction) closeAddPresetPanel: (id) sender +{ + [NSApp endSheet: fAddPresetPanel]; + [fAddPresetPanel orderOut: self]; +} + +- (IBAction)addUserPreset:(id)sender +{ + if (![[fPresetNewName stringValue] length]) + NSRunAlertPanel(@"Warning!", @"You need to insert a name for the preset.", @"OK", nil , nil); + else + { + /* Here we create a custom user preset */ + [UserPresets addObject:[self createPreset]]; + [self addPreset]; + + [self closeAddPresetPanel:nil]; + } +} +- (void)addPreset +{ + + + /* We Reload the New Table data for presets */ + [fPresetsOutlineView reloadData]; + /* We save all of the preset data here */ + [self savePreset]; +} + +- (void)sortPresets +{ + + + /* We Sort the Presets By Factory or Custom */ + NSSortDescriptor * presetTypeDescriptor=[[[NSSortDescriptor alloc] initWithKey:@"Type" + ascending:YES] autorelease]; + /* We Sort the Presets Alphabetically by name We do not use this now as we have drag and drop*/ + /* + NSSortDescriptor * presetNameDescriptor=[[[NSSortDescriptor alloc] initWithKey:@"PresetName" + ascending:YES selector:@selector(caseInsensitiveCompare:)] autorelease]; + //NSArray *sortDescriptors=[NSArray arrayWithObjects:presetTypeDescriptor,presetNameDescriptor,nil]; + + */ + /* Since we can drag and drop our custom presets, lets just sort by type and not name */ + NSArray *sortDescriptors=[NSArray arrayWithObjects:presetTypeDescriptor,nil]; + NSArray *sortedArray=[UserPresets sortedArrayUsingDescriptors:sortDescriptors]; + [UserPresets setArray:sortedArray]; + + +} + +- (IBAction)insertPreset:(id)sender +{ + int index = [fPresetsOutlineView selectedRow]; + [UserPresets insertObject:[self createPreset] atIndex:index]; + [fPresetsOutlineView reloadData]; + [self savePreset]; +} + +- (NSDictionary *)createPreset +{ + NSMutableDictionary *preset = [[NSMutableDictionary alloc] init]; + /* Preset build number */ + [preset setObject:[NSString stringWithFormat: @"%d", [[[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"] intValue]] forKey:@"PresetBuildNumber"]; + [preset setObject:[fPresetNewName stringValue] forKey:@"PresetName"]; + /* Get the New Preset Name from the field in the AddPresetPanel */ + [preset setObject:[fPresetNewName stringValue] forKey:@"PresetName"]; + /* Set whether or not this is to be a folder fPresetNewFolderCheck*/ + [preset setObject:[NSNumber numberWithBool:[fPresetNewFolderCheck state]] forKey:@"Folder"]; + /*Set whether or not this is a user preset or factory 0 is factory, 1 is user*/ + [preset setObject:[NSNumber numberWithInt:1] forKey:@"Type"]; + /*Set whether or not this is default, at creation set to 0*/ + [preset setObject:[NSNumber numberWithInt:0] forKey:@"Default"]; + if ([fPresetNewFolderCheck state] == YES) + { + /* initialize and set an empty array for children here since we are a new folder */ + NSMutableArray *childrenArray = [[NSMutableArray alloc] init]; + [preset setObject:[NSMutableArray arrayWithArray: childrenArray] forKey:@"ChildrenArray"]; + [childrenArray autorelease]; + } + else // we are not creating a preset folder, so we go ahead with the rest of the preset info + { + /*Get the whether or not to apply pic Size and Cropping (includes Anamorphic)*/ + [preset setObject:[NSNumber numberWithInteger:[[fPresetNewPicSettingsPopUp selectedItem] tag]] forKey:@"UsesPictureSettings"]; + /* Get whether or not to use the current Picture Filter settings for the preset */ + [preset setObject:[NSNumber numberWithInt:[fPresetNewPicFiltersCheck state]] forKey:@"UsesPictureFilters"]; + + /* Get New Preset Description from the field in the AddPresetPanel*/ + [preset setObject:[fPresetNewDesc stringValue] forKey:@"PresetDescription"]; + /* File Format */ + [preset setObject:[fDstFormatPopUp titleOfSelectedItem] forKey:@"FileFormat"]; + /* Chapter Markers fCreateChapterMarkers*/ + [preset setObject:[NSNumber numberWithInt:[fCreateChapterMarkers state]] forKey:@"ChapterMarkers"]; + /* Allow Mpeg4 64 bit formatting +4GB file sizes */ + [preset setObject:[NSNumber numberWithInt:[fDstMp4LargeFileCheck state]] forKey:@"Mp4LargeFile"]; + /* Mux mp4 with http optimization */ + [preset setObject:[NSNumber numberWithInt:[fDstMp4HttpOptFileCheck state]] forKey:@"Mp4HttpOptimize"]; + /* Add iPod uuid atom */ + [preset setObject:[NSNumber numberWithInt:[fDstMp4iPodFileCheck state]] forKey:@"Mp4iPodCompatible"]; + + /* Codecs */ + /* Video encoder */ + [preset setObject:[fVidEncoderPopUp titleOfSelectedItem] forKey:@"VideoEncoder"]; + /* x264 Options, this will either be advanced panel or the video tabs x264 presets panel with modded option string */ + + if ([fX264UseAdvancedOptionsCheck state] == NSOnState) + { + /* use the old advanced panel */ + [preset setObject:[NSNumber numberWithInt:1] forKey:@"x264UseAdvancedOptions"]; + [preset setObject:[fAdvancedOptions optionsString] forKey:@"x264Option"]; + } + else + { + /* use the x264 preset system */ + [preset setObject:[NSNumber numberWithInt:0] forKey:@"x264UseAdvancedOptions"]; + [preset setObject:[self x264Preset] forKey:@"x264Preset"]; + [preset setObject:[self x264Tune] forKey:@"x264Tune"]; + [preset setObject:[self x264OptionExtra] forKey:@"x264OptionExtra"]; + [preset setObject:[self h264Profile] forKey:@"h264Profile"]; + [preset setObject:[self h264Level] forKey:@"h264Level"]; + /* + * bonus: set the unparsed options to make the preset compatible + * with old HB versions + */ + if (fX264PresetsUnparsedUTF8String != NULL) + { + [preset setObject:[NSString stringWithUTF8String:fX264PresetsUnparsedUTF8String] + forKey:@"x264Option"]; + } + else + { + [preset setObject:@"" forKey:@"x264Option"]; + } + } + + /* FFmpeg (lavc) Option String */ + [preset setObject:[fAdvancedOptions optionsStringLavc] forKey:@"lavcOption"]; + + /* though there are actually only 0 - 1 types available in the ui we need to map to the old 0 - 2 + * set of indexes from when we had 0 == Target , 1 == Abr and 2 == Constant Quality for presets + * to take care of any legacy presets. */ + [preset setObject:[NSNumber numberWithInt:[[fVidQualityMatrix selectedCell] tag] +1 ] forKey:@"VideoQualityType"]; + [preset setObject:[fVidBitrateField stringValue] forKey:@"VideoAvgBitrate"]; + [preset setObject:[NSNumber numberWithFloat:[fVidQualityRFField floatValue]] forKey:@"VideoQualitySlider"]; + + /* Video framerate */ + /* Set the Video Frame Rate Mode */ + if ([fFramerateMatrix selectedRow] == 1) + { + [preset setObject:@"cfr" forKey:@"VideoFramerateMode"]; + } + /* Set the actual framerate from popup overriding the cfr setting as needed */ + if ([fVidRatePopUp indexOfSelectedItem] == 0) // Same as source is selected + { + [preset setObject:@"Same as source" forKey:@"VideoFramerate"]; + + if ([fFramerateMatrix selectedRow] == 0) + { + [preset setObject:@"vfr" forKey:@"VideoFramerateMode"]; + } + } + else // we can record the actual titleOfSelectedItem + { + [preset setObject:[fVidRatePopUp titleOfSelectedItem] forKey:@"VideoFramerate"]; + + if ([fFramerateMatrix selectedRow] == 0) + { + [preset setObject:@"pfr" forKey:@"VideoFramerateMode"]; + } + } + + + + /* 2 Pass Encoding */ + [preset setObject:[NSNumber numberWithInt:[fVidTwoPassCheck state]] forKey:@"VideoTwoPass"]; + /* Turbo 2 pass Encoding fVidTurboPassCheck*/ + [preset setObject:[NSNumber numberWithInt:[fVidTurboPassCheck state]] forKey:@"VideoTurboTwoPass"]; + /*Picture Settings*/ + hb_job_t * job = fTitle->job; + + /* Picture Sizing */ + [preset setObject:[NSNumber numberWithInt:0] forKey:@"UsesMaxPictureSettings"]; + [preset setObject:[NSNumber numberWithInt:[fPresetNewPicWidth intValue]] forKey:@"PictureWidth"]; + [preset setObject:[NSNumber numberWithInt:[fPresetNewPicHeight intValue]] forKey:@"PictureHeight"]; + [preset setObject:[NSNumber numberWithInt:fTitle->job->keep_ratio] forKey:@"PictureKeepRatio"]; + [preset setObject:[NSNumber numberWithInt:fTitle->job->anamorphic.mode] forKey:@"PicturePAR"]; + [preset setObject:[NSNumber numberWithInt:fTitle->job->modulus] forKey:@"PictureModulus"]; + + /* Set crop settings here */ + [preset setObject:[NSNumber numberWithInt:[fPictureController autoCrop]] forKey:@"PictureAutoCrop"]; + [preset setObject:[NSNumber numberWithInt:job->crop[0]] forKey:@"PictureTopCrop"]; + [preset setObject:[NSNumber numberWithInt:job->crop[1]] forKey:@"PictureBottomCrop"]; + [preset setObject:[NSNumber numberWithInt:job->crop[2]] forKey:@"PictureLeftCrop"]; + [preset setObject:[NSNumber numberWithInt:job->crop[3]] forKey:@"PictureRightCrop"]; + + /* Picture Filters */ + [preset setObject:[NSNumber numberWithInt:[fPictureController useDecomb]] forKey:@"PictureDecombDeinterlace"]; + [preset setObject:[NSNumber numberWithInt:[fPictureController deinterlace]] forKey:@"PictureDeinterlace"]; + [preset setObject:[fPictureController deinterlaceCustomString] forKey:@"PictureDeinterlaceCustom"]; + [preset setObject:[NSNumber numberWithInt:[fPictureController detelecine]] forKey:@"PictureDetelecine"]; + [preset setObject:[fPictureController detelecineCustomString] forKey:@"PictureDetelecineCustom"]; + [preset setObject:[NSNumber numberWithInt:[fPictureController denoise]] forKey:@"PictureDenoise"]; + [preset setObject:[fPictureController denoiseCustomString] forKey:@"PictureDenoiseCustom"]; + [preset setObject:[NSNumber numberWithInt:[fPictureController deblock]] forKey:@"PictureDeblock"]; + [preset setObject:[NSNumber numberWithInt:[fPictureController decomb]] forKey:@"PictureDecomb"]; + [preset setObject:[fPictureController decombCustomString] forKey:@"PictureDecombCustom"]; + [preset setObject:[NSNumber numberWithInt:[fPictureController grayscale]] forKey:@"VideoGrayScale"]; + + /* Auto Pasthru */ + [preset setObject:[NSNumber numberWithInt:[fAudioAllowAACPassCheck state]] forKey: @"AudioAllowAACPass"]; + [preset setObject:[NSNumber numberWithInt:[fAudioAllowAC3PassCheck state]] forKey: @"AudioAllowAC3Pass"]; + [preset setObject:[NSNumber numberWithInt:[fAudioAllowDTSHDPassCheck state]] forKey: @"AudioAllowDTSHDPass"]; + [preset setObject:[NSNumber numberWithInt:[fAudioAllowDTSPassCheck state]] forKey: @"AudioAllowDTSPass"]; + [preset setObject:[NSNumber numberWithInt:[fAudioAllowMP3PassCheck state]] forKey: @"AudioAllowMP3Pass"]; + [preset setObject:[fAudioFallbackPopUp titleOfSelectedItem] forKey: @"AudioEncoderFallback"]; + + /* Audio */ + NSMutableArray *audioListArray = [[NSMutableArray alloc] init]; + [fAudioDelegate prepareAudioForPreset: audioListArray]; + + + [preset setObject:[NSMutableArray arrayWithArray: audioListArray] forKey:@"AudioList"]; + + + /* Temporarily remove subtitles from creating a new preset as it has to be converted over to use the new + * subititle array code. */ + /* Subtitles*/ + //[preset setObject:[fSubPopUp titleOfSelectedItem] forKey:@"Subtitles"]; + /* Forced Subtitles */ + //[preset setObject:[NSNumber numberWithInt:[fSubForcedCheck state]] forKey:@"SubtitlesForced"]; + } + [preset autorelease]; + return preset; + +} + +- (void)savePreset +{ + [UserPresets writeToFile:UserPresetsFile atomically:YES]; + /* We get the default preset in case it changed */ + [self getDefaultPresets:nil]; + +} + +- (IBAction)deletePreset:(id)sender +{ + + + if ( [fPresetsOutlineView numberOfSelectedRows] == 0 ) + { + return; + } + /* Alert user before deleting preset */ + int status; + status = NSRunAlertPanel(@"Warning!", @"Are you sure that you want to delete the selected preset?", @"OK", @"Cancel", nil); + + if ( status == NSAlertDefaultReturn ) + { + int presetToModLevel = [fPresetsOutlineView levelForItem: [self selectedPreset]]; + NSDictionary *presetToMod = [self selectedPreset]; + NSDictionary *presetToModParent = [fPresetsOutlineView parentForItem: presetToMod]; + + NSEnumerator *enumerator; + NSMutableArray *presetsArrayToMod; + NSMutableArray *tempArray; + id tempObject; + /* If we are a root level preset, we are modding the UserPresets array */ + if (presetToModLevel == 0) + { + presetsArrayToMod = UserPresets; + } + else // We have a parent preset, so we modify the chidren array object for key + { + presetsArrayToMod = [presetToModParent objectForKey:@"ChildrenArray"]; + } + + enumerator = [presetsArrayToMod objectEnumerator]; + tempArray = [NSMutableArray array]; + + while (tempObject = [enumerator nextObject]) + { + NSDictionary *thisPresetDict = tempObject; + if (thisPresetDict == presetToMod) + { + [tempArray addObject:tempObject]; + } + } + + [presetsArrayToMod removeObjectsInArray:tempArray]; + [fPresetsOutlineView reloadData]; + [self savePreset]; + } +} + + +#pragma mark - +#pragma mark Import Export Preset(s) + +- (IBAction) browseExportPresetFile: (id) sender +{ + /* Open a panel to let the user choose where and how to save the export file */ + NSSavePanel * panel = [NSSavePanel savePanel]; + /* We get the current file name and path from the destination field here */ + NSString *defaultExportDirectory = [NSString stringWithFormat: @"%@/Desktop/", NSHomeDirectory()]; + + [panel beginSheetForDirectory: defaultExportDirectory file: @"HB_Export.plist" + modalForWindow: fWindow modalDelegate: self + didEndSelector: @selector( browseExportPresetFileDone:returnCode:contextInfo: ) + contextInfo: NULL]; +} + +- (void) browseExportPresetFileDone: (NSSavePanel *) sheet + returnCode: (int) returnCode contextInfo: (void *) contextInfo +{ + if( returnCode == NSOKButton ) + { + NSString *presetExportDirectory = [[sheet filename] stringByDeletingLastPathComponent]; + NSString *exportPresetsFile = [sheet filename]; + [[NSUserDefaults standardUserDefaults] setObject:presetExportDirectory forKey:@"LastPresetExportDirectory"]; + /* We check for the presets.plist */ + if ([[NSFileManager defaultManager] fileExistsAtPath:exportPresetsFile] == 0) + { + [[NSFileManager defaultManager] createFileAtPath:exportPresetsFile contents:nil attributes:nil]; + } + NSMutableArray * presetsToExport = [[NSMutableArray alloc] initWithContentsOfFile:exportPresetsFile]; + if (nil == presetsToExport) + { + presetsToExport = [[NSMutableArray alloc] init]; + + /* now get and add selected presets to export */ + + } + if (YES == [self hasValidPresetSelected]) + { + [presetsToExport addObject:[self selectedPreset]]; + [presetsToExport writeToFile:exportPresetsFile atomically:YES]; + + } + + } +} + + +- (IBAction) browseImportPresetFile: (id) sender +{ + + NSOpenPanel * panel; + + panel = [NSOpenPanel openPanel]; + [panel setAllowsMultipleSelection: NO]; + [panel setCanChooseFiles: YES]; + [panel setCanChooseDirectories: NO ]; + NSString * sourceDirectory; + if ([[NSUserDefaults standardUserDefaults] stringForKey:@"LastPresetImportDirectory"]) + { + sourceDirectory = [[NSUserDefaults standardUserDefaults] stringForKey:@"LastPresetImportDirectory"]; + } + else + { + sourceDirectory = @"~/Desktop"; + sourceDirectory = [sourceDirectory stringByExpandingTildeInPath]; + } + /* we open up the browse sources sheet here and call for browseSourcesDone after the sheet is closed + * to evaluate whether we want to specify a title, we pass the sender in the contextInfo variable + */ + /* set this for allowed file types, not sure if we should allow xml or not */ + NSArray *fileTypes = [NSArray arrayWithObjects:@"plist", @"xml", nil]; + [panel beginSheetForDirectory: sourceDirectory file: nil types: fileTypes + modalForWindow: fWindow modalDelegate: self + didEndSelector: @selector( browseImportPresetDone:returnCode:contextInfo: ) + contextInfo: sender]; +} + +- (void) browseImportPresetDone: (NSSavePanel *) sheet + returnCode: (int) returnCode contextInfo: (void *) contextInfo +{ + if( returnCode == NSOKButton ) + { + NSString *importPresetsDirectory = [[sheet filename] stringByDeletingLastPathComponent]; + NSString *importPresetsFile = [sheet filename]; + [[NSUserDefaults standardUserDefaults] setObject:importPresetsDirectory forKey:@"LastPresetImportDirectory"]; + /* NOTE: here we need to do some sanity checking to verify we do not hose up our presets file */ + NSMutableArray * presetsToImport = [[NSMutableArray alloc] initWithContentsOfFile:importPresetsFile]; + /* iterate though the new array of presets to import and add them to our presets array */ + int i = 0; + NSEnumerator *enumerator = [presetsToImport objectEnumerator]; + id tempObject; + while (tempObject = [enumerator nextObject]) + { + /* make any changes to the incoming preset we see fit */ + /* make sure the incoming preset is not tagged as default */ + [tempObject setObject:[NSNumber numberWithInt:0] forKey:@"Default"]; + /* prepend "(imported) to the name of the incoming preset for clarification since it can be changed */ + NSString * prependedName = [@"(import) " stringByAppendingString:[tempObject objectForKey:@"PresetName"]] ; + [tempObject setObject:prependedName forKey:@"PresetName"]; + + /* actually add the new preset to our presets array */ + [UserPresets addObject:tempObject]; + i++; + } + [presetsToImport autorelease]; + [self sortPresets]; + [self addPreset]; + + } +} + +#pragma mark - +#pragma mark Manage Default Preset + +- (IBAction)getDefaultPresets:(id)sender +{ + presetHbDefault = nil; + presetUserDefault = nil; + presetUserDefaultParent = nil; + presetUserDefaultParentParent = nil; + NSMutableDictionary *presetHbDefaultParent = nil; + NSMutableDictionary *presetHbDefaultParentParent = nil; + + int i = 0; + BOOL userDefaultFound = NO; + presetCurrentBuiltInCount = 0; + /* First we iterate through the root UserPresets array to check for defaults */ + NSEnumerator *enumerator = [UserPresets objectEnumerator]; + id tempObject; + while (tempObject = [enumerator nextObject]) + { + NSMutableDictionary *thisPresetDict = tempObject; + if ([[thisPresetDict objectForKey:@"Default"] intValue] == 1) // 1 is HB default + { + presetHbDefault = thisPresetDict; + } + if ([[thisPresetDict objectForKey:@"Default"] intValue] == 2) // 2 is User specified default + { + presetUserDefault = thisPresetDict; + userDefaultFound = YES; + } + if ([[thisPresetDict objectForKey:@"Type"] intValue] == 0) // Type 0 is a built in preset + { + presetCurrentBuiltInCount++; // <--increment the current number of built in presets + } + i++; + + /* if we run into a folder, go to level 1 and iterate through the children arrays for the default */ + if ([thisPresetDict objectForKey:@"ChildrenArray"]) + { + NSMutableDictionary *thisPresetDictParent = thisPresetDict; + NSEnumerator *enumerator = [[thisPresetDict objectForKey:@"ChildrenArray"] objectEnumerator]; + id tempObject; + while (tempObject = [enumerator nextObject]) + { + NSMutableDictionary *thisPresetDict = tempObject; + if ([[thisPresetDict objectForKey:@"Default"] intValue] == 1) // 1 is HB default + { + presetHbDefault = thisPresetDict; + presetHbDefaultParent = thisPresetDictParent; + } + if ([[thisPresetDict objectForKey:@"Default"] intValue] == 2) // 2 is User specified default + { + presetUserDefault = thisPresetDict; + presetUserDefaultParent = thisPresetDictParent; + userDefaultFound = YES; + } + + /* if we run into a folder, go to level 2 and iterate through the children arrays for the default */ + if ([thisPresetDict objectForKey:@"ChildrenArray"]) + { + NSMutableDictionary *thisPresetDictParentParent = thisPresetDict; + NSEnumerator *enumerator = [[thisPresetDict objectForKey:@"ChildrenArray"] objectEnumerator]; + id tempObject; + while (tempObject = [enumerator nextObject]) + { + NSMutableDictionary *thisPresetDict = tempObject; + if ([[thisPresetDict objectForKey:@"Default"] intValue] == 1) // 1 is HB default + { + presetHbDefault = thisPresetDict; + presetHbDefaultParent = thisPresetDictParent; + presetHbDefaultParentParent = thisPresetDictParentParent; + } + if ([[thisPresetDict objectForKey:@"Default"] intValue] == 2) // 2 is User specified default + { + presetUserDefault = thisPresetDict; + presetUserDefaultParent = thisPresetDictParent; + presetUserDefaultParentParent = thisPresetDictParentParent; + userDefaultFound = YES; + } + + } + } + } + } + + } + /* check to see if a user specified preset was found, if not then assign the parents for + * the presetHbDefault so that we can open the parents for the nested presets + */ + if (userDefaultFound == NO) + { + presetUserDefaultParent = presetHbDefaultParent; + presetUserDefaultParentParent = presetHbDefaultParentParent; + } +} + +- (IBAction)setDefaultPreset:(id)sender +{ +/* We need to determine if the item is a folder */ + if ([[[self selectedPreset] objectForKey:@"Folder"] intValue] == 1) + { + return; + } + + int i = 0; + NSEnumerator *enumerator = [UserPresets objectEnumerator]; + id tempObject; + /* First make sure the old user specified default preset is removed */ + while (tempObject = [enumerator nextObject]) + { + NSMutableDictionary *thisPresetDict = tempObject; + if ([[tempObject objectForKey:@"Default"] intValue] != 1) // if not the default HB Preset, set to 0 + { + [[UserPresets objectAtIndex:i] setObject:[NSNumber numberWithInt:0] forKey:@"Default"]; + } + + /* if we run into a folder, go to level 1 and iterate through the children arrays for the default */ + if ([thisPresetDict objectForKey:@"ChildrenArray"]) + { + NSEnumerator *enumerator = [[thisPresetDict objectForKey:@"ChildrenArray"] objectEnumerator]; + id tempObject; + int ii = 0; + while (tempObject = [enumerator nextObject]) + { + NSMutableDictionary *thisPresetDict1 = tempObject; + if ([[tempObject objectForKey:@"Default"] intValue] != 1) // if not the default HB Preset, set to 0 + { + [[[thisPresetDict objectForKey:@"ChildrenArray"] objectAtIndex:ii] setObject:[NSNumber numberWithInt:0] forKey:@"Default"]; + } + /* if we run into a folder, go to level 2 and iterate through the children arrays for the default */ + if ([thisPresetDict1 objectForKey:@"ChildrenArray"]) + { + NSEnumerator *enumerator = [[thisPresetDict1 objectForKey:@"ChildrenArray"] objectEnumerator]; + id tempObject; + int iii = 0; + while (tempObject = [enumerator nextObject]) + { + if ([[tempObject objectForKey:@"Default"] intValue] != 1) // if not the default HB Preset, set to 0 + { + [[[thisPresetDict1 objectForKey:@"ChildrenArray"] objectAtIndex:iii] setObject:[NSNumber numberWithInt:0] forKey:@"Default"]; + } + iii++; + } + } + ii++; + } + + } + i++; + } + + + int presetToModLevel = [fPresetsOutlineView levelForItem: [self selectedPreset]]; + NSDictionary *presetToMod = [self selectedPreset]; + NSDictionary *presetToModParent = [fPresetsOutlineView parentForItem: presetToMod]; + + + NSMutableArray *presetsArrayToMod; + NSMutableArray *tempArray; + + /* If we are a root level preset, we are modding the UserPresets array */ + if (presetToModLevel == 0) + { + presetsArrayToMod = UserPresets; + } + else // We have a parent preset, so we modify the chidren array object for key + { + presetsArrayToMod = [presetToModParent objectForKey:@"ChildrenArray"]; + } + + enumerator = [presetsArrayToMod objectEnumerator]; + tempArray = [NSMutableArray array]; + int iiii = 0; + while (tempObject = [enumerator nextObject]) + { + NSDictionary *thisPresetDict = tempObject; + if (thisPresetDict == presetToMod) + { + if ([[tempObject objectForKey:@"Default"] intValue] != 1) // if not the default HB Preset, set to 2 + { + [[presetsArrayToMod objectAtIndex:iiii] setObject:[NSNumber numberWithInt:2] forKey:@"Default"]; + } + } + iiii++; + } + + + /* We save all of the preset data here */ + [self savePreset]; + /* We Reload the New Table data for presets */ + [fPresetsOutlineView reloadData]; +} + +- (IBAction)selectDefaultPreset:(id)sender +{ + NSMutableDictionary *presetToMod; + /* if there is a user specified default, we use it */ + if (presetUserDefault) + { + presetToMod = presetUserDefault; + } + else if (presetHbDefault) //else we use the built in default presetHbDefault + { + presetToMod = presetHbDefault; + } + else + { + return; + } + + if (presetUserDefaultParent != nil) + { + [fPresetsOutlineView expandItem:presetUserDefaultParent]; + + } + if (presetUserDefaultParentParent != nil) + { + [fPresetsOutlineView expandItem:presetUserDefaultParentParent]; + + } + + [fPresetsOutlineView selectRowIndexes:[NSIndexSet indexSetWithIndex:[fPresetsOutlineView rowForItem: presetToMod]] byExtendingSelection:NO]; + [self selectPreset:nil]; +} + + +#pragma mark - +#pragma mark Manage Built In Presets + + +- (IBAction)deleteFactoryPresets:(id)sender +{ + //int status; + NSEnumerator *enumerator = [UserPresets objectEnumerator]; + id tempObject; + + //NSNumber *index; + NSMutableArray *tempArray; + + + tempArray = [NSMutableArray array]; + /* we look here to see if the preset is we move on to the next one */ + while ( tempObject = [enumerator nextObject] ) + { + /* if the preset is "Factory" then we put it in the array of + presets to delete */ + if ([[tempObject objectForKey:@"Type"] intValue] == 0) + { + [tempArray addObject:tempObject]; + } + } + + [UserPresets removeObjectsInArray:tempArray]; + [fPresetsOutlineView reloadData]; + [self savePreset]; + +} + + /* We use this method to recreate new, updated factory presets */ +- (IBAction)addFactoryPresets:(id)sender +{ + + /* First, we delete any existing built in presets */ + [self deleteFactoryPresets: sender]; + /* Then we generate new built in presets programmatically with fPresetsBuiltin + * which is all setup in HBPresets.h and HBPresets.m*/ + [fPresetsBuiltin generateBuiltinPresets:UserPresets]; + /* update build number for built in presets */ + /* iterate though the new array of presets to import and add them to our presets array */ + int i = 0; + NSEnumerator *enumerator = [UserPresets objectEnumerator]; + id tempObject; + while (tempObject = [enumerator nextObject]) + { + /* Record the apps current build number in the PresetBuildNumber key */ + if ([[tempObject objectForKey:@"Type"] intValue] == 0) // Type 0 is a built in preset + { + /* Preset build number */ + [[UserPresets objectAtIndex:i] setObject:[NSNumber numberWithInt:[[[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"] intValue]] forKey:@"PresetBuildNumber"]; + } + i++; + } + /* report the built in preset updating to the activity log */ + [self writeToActivityLog: "built in presets updated to build number: %d", [[[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"] intValue]]; + + [self sortPresets]; + [self addPreset]; + +} + +#pragma mark - +#pragma mark Chapter Files Import / Export + +- (IBAction) browseForChapterFile: (id) sender +{ + /* Open a panel to let the user choose the file */ + NSOpenPanel * panel = [NSOpenPanel openPanel]; + /* We get the current file name and path from the destination field here */ + [panel beginSheetForDirectory: [NSString stringWithFormat:@"%@/", + [[NSUserDefaults standardUserDefaults] stringForKey:@"LastDestinationDirectory"]] + file: NULL + types: [NSArray arrayWithObjects:@"csv",nil] + modalForWindow: fWindow modalDelegate: self + didEndSelector: @selector( browseForChapterFileDone:returnCode:contextInfo: ) + contextInfo: NULL]; +} + +- (void) browseForChapterFileDone: (NSOpenPanel *) sheet + returnCode: (int) returnCode contextInfo: (void *) contextInfo +{ + NSArray *chaptersArray; /* temp array for chapters */ + NSMutableArray *chaptersMutableArray; /* temp array for chapters */ + NSString *chapterName; /* temp string from file */ + int chapters, i; + + if( returnCode == NSOKButton ) /* if they click OK */ + { + chapterName = [[NSString alloc] initWithContentsOfFile:[sheet filename] encoding:NSUTF8StringEncoding error:NULL]; + chaptersArray = [chapterName componentsSeparatedByString:@"\n"]; + chaptersMutableArray= [chaptersArray mutableCopy]; + chapters = [fChapterTitlesDelegate numberOfRowsInTableView:fChapterTable]; + if ([chaptersMutableArray count] > 0) + { + /* if last item is empty remove it */ + if ([[chaptersMutableArray objectAtIndex:[chaptersArray count]-1] length] == 0) + { + [chaptersMutableArray removeLastObject]; + } + } + /* if chapters in table is not equal to array count */ + if ((unsigned int) chapters != [chaptersMutableArray count]) + { + [sheet close]; + [[NSAlert alertWithMessageText:NSLocalizedString(@"Unable to load chapter file", @"Unable to load chapter file") + defaultButton:NSLocalizedString(@"OK", @"OK") + alternateButton:NULL + otherButton:NULL + informativeTextWithFormat:NSLocalizedString(@"%d chapters expected, %d chapters found in %@", @"%d chapters expected, %d chapters found in %@"), + chapters, [chaptersMutableArray count], [[sheet filename] lastPathComponent]] runModal]; + return; + } + /* otherwise, go ahead and populate table with array */ + for (i=0; i 5) + { + /* avoid a segfault */ + /* Get the Range.location of the first comma in the line and then put everything after that into chapterTitle */ + NSRange firstCommaRange = [[chaptersMutableArray objectAtIndex:i] rangeOfString:@","]; + NSString *chapterTitle = [[chaptersMutableArray objectAtIndex:i] substringFromIndex:firstCommaRange.location + 1]; + /* Since we store our chapterTitle commas as "\," for the cli, we now need to remove the escaping "\" from the title */ + chapterTitle = [chapterTitle stringByReplacingOccurrencesOfString:@"\\," withString:@","]; + [fChapterTitlesDelegate tableView:fChapterTable + setObjectValue:chapterTitle + forTableColumn:fChapterTableNameColumn + row:i]; + } + else + { + [sheet close]; + [[NSAlert alertWithMessageText:NSLocalizedString(@"Unable to load chapter file", @"Unable to load chapter file") + defaultButton:NSLocalizedString(@"OK", @"OK") + alternateButton:NULL + otherButton:NULL + informativeTextWithFormat:NSLocalizedString(@"%@ was not formatted as expected.", @"%@ was not formatted as expected."), [[sheet filename] lastPathComponent]] runModal]; + [fChapterTable reloadData]; + return; + } + } + [fChapterTable reloadData]; + } +} + +- (IBAction) browseForChapterFileSave: (id) sender +{ + NSSavePanel *panel = [NSSavePanel savePanel]; + /* Open a panel to let the user save to a file */ + [panel setAllowedFileTypes:[NSArray arrayWithObjects:@"csv",nil]]; + [panel beginSheetForDirectory: [[fDstFile2Field stringValue] stringByDeletingLastPathComponent] + file: [[[[fDstFile2Field stringValue] lastPathComponent] stringByDeletingPathExtension] + stringByAppendingString:@"-chapters.csv"] + modalForWindow: fWindow + modalDelegate: self + didEndSelector: @selector( browseForChapterFileSaveDone:returnCode:contextInfo: ) + contextInfo: NULL]; +} + +- (void) browseForChapterFileSaveDone: (NSSavePanel *) sheet + returnCode: (int) returnCode contextInfo: (void *) contextInfo +{ + NSString *chapterName; /* pointer for string for later file-writing */ + NSString *chapterTitle; + NSError *saveError = [[NSError alloc] init]; + int chapters, i; /* ints for the number of chapters in the table and the loop */ + + if( returnCode == NSOKButton ) /* if they clicked OK */ + { + chapters = [fChapterTitlesDelegate numberOfRowsInTableView:fChapterTable]; + chapterName = [NSString string]; + for (i=0; i. + It may be used under the terms of the GNU General Public License. */ + +#import + +@interface DockTextField : NSTextField + +@property (nonatomic,retain) NSString *textToDisplay; +@property (nonatomic,retain) NSColor *startColor; +@property (nonatomic,retain) NSColor *endColor; + +- (void)changeGradientColors:(NSColor*)startColor endColor:(NSColor*)endColor; + +@end diff -Nru handbrake-0.9.9+dfsg/macosx/DockTextField.m handbrake-0.9.9+ppa1/macosx/DockTextField.m --- handbrake-0.9.9+dfsg/macosx/DockTextField.m 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/DockTextField.m 2012-09-21 18:45:29.000000000 +0000 @@ -0,0 +1,71 @@ +/* DockTextField.m $ + + This file is part of the HandBrake source code. + Homepage: . + It may be used under the terms of the GNU General Public License. */ + +#import "DockTextField.h" + +#define DOCK_TEXTFIELD_ALPHA 0.8 +#define DOCK_TEXTFIELD_FONTSIZE 28.0 + +@implementation DockTextField + +@synthesize textToDisplay = _textToDisplay; +@synthesize startColor = _startColor; +@synthesize endColor = _endColor; + +- (id)initWithFrame:(NSRect)frame +{ + self = [super initWithFrame:frame]; + if (self) { + [[self cell] setBezelStyle: NSTextFieldRoundedBezel]; + _textToDisplay = @""; + [self changeGradientColors:[NSColor grayColor] endColor:[NSColor blackColor]]; + } + + return self; +} + +- (void)changeGradientColors:(NSColor*)startColor endColor:(NSColor*)endColor +{ + self.startColor = [startColor colorWithAlphaComponent:DOCK_TEXTFIELD_ALPHA]; + self.endColor = [endColor colorWithAlphaComponent:DOCK_TEXTFIELD_ALPHA]; +} + +- (void)drawRect:(NSRect)dirtyRect +{ + if (self.isHidden) + return; + + NSRect blackOutlineFrame = NSMakeRect(0.0, 0.0, [self bounds].size.width, [self bounds].size.height-1.0); + double radius = self.bounds.size.height / 2; + + NSGradient *gradient = [[NSGradient alloc] initWithStartingColor:self.startColor endingColor:self.endColor]; + [gradient drawInBezierPath:[NSBezierPath bezierPathWithRoundedRect:blackOutlineFrame xRadius:radius yRadius:radius] angle:90]; + [gradient release]; + + NSMutableDictionary *drawStringAttributes = [[NSMutableDictionary alloc] init]; + [drawStringAttributes setValue:[NSColor whiteColor] forKey:NSForegroundColorAttributeName]; + [drawStringAttributes setValue:[NSFont boldSystemFontOfSize:DOCK_TEXTFIELD_FONTSIZE] forKey:NSFontAttributeName]; + NSShadow *stringShadow = [[NSShadow alloc] init]; + [stringShadow setShadowColor:[NSColor blackColor]]; + NSSize shadowSize; + shadowSize.width = 2; + shadowSize.height = -2; + [stringShadow setShadowOffset:shadowSize]; + [stringShadow setShadowBlurRadius:6]; + [drawStringAttributes setValue:stringShadow forKey:NSShadowAttributeName]; + [stringShadow release]; + + NSString *MRString = _textToDisplay; + NSString *budgetString = [NSString stringWithFormat:@"%@", MRString]; + NSSize stringSize = [budgetString sizeWithAttributes:drawStringAttributes]; + NSPoint centerPoint; + centerPoint.x = (dirtyRect.size.width / 2) - (stringSize.width / 2); + centerPoint.y = dirtyRect.size.height / 2 - (stringSize.height / 2) - 2; + [budgetString drawAtPoint:centerPoint withAttributes:drawStringAttributes]; + [drawStringAttributes release]; +} + +@end diff -Nru handbrake-0.9.9+dfsg/macosx/English.lproj/AdvancedView.xib handbrake-0.9.9+ppa1/macosx/English.lproj/AdvancedView.xib --- handbrake-0.9.9+dfsg/macosx/English.lproj/AdvancedView.xib 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/English.lproj/AdvancedView.xib 2012-02-20 15:22:44.000000000 +0000 @@ -0,0 +1,4174 @@ + + + + 1050 + 11C74 + 1938 + 1138.23 + 567.00 + + com.apple.InterfaceBuilder.CocoaPlugin + 1938 + + + YES + NSPopUpButton + NSMenuItem + NSMenu + NSTextFieldCell + NSButtonCell + NSButton + NSSlider + NSSliderCell + NSCustomView + NSCustomObject + NSPopUpButtonCell + NSTextField + + + YES + com.apple.InterfaceBuilder.CocoaPlugin + + + PluginDependencyRecalculationVersion + + + + YES + + HBAdvancedController + + + FirstResponder + + + NSApplication + + + + 256 + + YES + + + 268 + {{298, 275}, {61, 14}} + + + + YES + + 68288064 + 272630784 + Analysis + + LucidaGrande-Bold + 11 + 16 + + + + 6 + System + controlColor + + 3 + MC42NjY2NjY2NjY3AA + + + + 6 + System + controlTextColor + + 3 + MAA + + + + + + + 268 + {{1, 275}, {66, 14}} + + + + YES + + 68288064 + 272630784 + Encoding + + + + + + + + + 268 + {{1, 128}, {91, 14}} + + + + YES + + 68288064 + 272630784 + Psychovisual + + + + + + + + + 256 + {{124, 151}, {97, 15}} + + + + YES + + -2076049856 + 264704 + + LucidaGrande + 9 + 3614 + + + 109199615 + 1 + + + + + + 400 + 75 + + + Item1 + + 1048576 + 2147483647 + 1 + + NSImage + NSMenuCheckmark + + + NSImage + NSMenuMixedState + + _popUpItemAction: + + + YES + + + OtherViews + + + YES + + + + Item2 + + 1048576 + 2147483647 + + + _popUpItemAction: + + + + + Item3 + + 1048576 + 2147483647 + + + _popUpItemAction: + + + + + 3 + YES + YES + 1 + + + + + 256 + {{333, 107}, {116, 16}} + + + + YES + + 67239424 + 71434240 + Adaptive Quantization: + + LucidaGrande + 10 + 2843 + + + + + + + + + 268 + {{454, 105}, {146, 16}} + + + + YES + + -2079981824 + 262144 + + + + 1 + 0.0 + 0.0 + 0.0 + 11 + 0 + YES + NO + + + + + 256 + {{18, 170}, {102, 16}} + + + + YES + + 67239424 + 71434240 + Weighted P-Frames: + + + + + + + + + 256 + {{122, 172}, {22, 16}} + + + + YES + + 67239424 + 131072 + + + LucidaGrande + 11 + 3100 + + + 1211912703 + 2 + + NSSwitch + + + + 200 + 25 + + + + + 256 + {{124, 256}, {97, 15}} + + + + YES + + -2076049856 + 264192 + + + 109199615 + 1 + + + + + + 400 + 75 + + + Item1 + + 1048576 + 2147483647 + 1 + + + _popUpItemAction: + + + YES + + + OtherViews + + + YES + + + + Item2 + + 1048576 + 2147483647 + + + _popUpItemAction: + + + + + Item3 + + 1048576 + 2147483647 + + + _popUpItemAction: + + + + + 3 + YES + YES + 1 + + + + + 256 + {{26, 254}, {94, 16}} + + + + YES + + 67239424 + 71434240 + Reference Frames: + + + + + + + + + 256 + {{15, 233}, {105, 16}} + + + + YES + + 67239424 + 71303168 + Maximum B-Frames: + + + + + + + + + 256 + {{349, 254}, {100, 16}} + + + + YES + + 67239424 + 71303168 + Adaptive B-Frames: + + + + + + + + + 256 + {{124, 235}, {97, 15}} + + + + YES + + -2076049856 + 264704 + + + 109199615 + 1 + + + + + + 400 + 75 + + + Item1 + + 1048576 + 2147483647 + 1 + + + _popUpItemAction: + + + YES + + + OtherViews + + + YES + + + + Item2 + + 1048576 + 2147483647 + + + _popUpItemAction: + + + + + Item3 + + 1048576 + 2147483647 + + + _popUpItemAction: + + + + + 3 + YES + YES + 1 + + + + + 256 + {{453, 256}, {149, 15}} + + + + YES + + -2076049856 + 264704 + + + 109199615 + 1 + + LucidaGrande + 9 + 16 + + + + + + 400 + 75 + + + Item1 + + 1048576 + 2147483647 + 1 + + + _popUpItemAction: + + + YES + + + OtherViews + + + YES + + + + Item2 + + 1048576 + 2147483647 + + + _popUpItemAction: + + + + + Item3 + + 1048576 + 2147483647 + + + _popUpItemAction: + + + + + 3 + YES + YES + 1 + + + + + 256 + {{453, 193}, {149, 15}} + + + + YES + + -2076049856 + 264192 + + + 109199615 + 1 + + + + + + 400 + 75 + + + Item1 + + 1048576 + 2147483647 + 1 + + + _popUpItemAction: + + + YES + + + OtherViews + + + YES + + + + Item2 + + 1048576 + 2147483647 + + + _popUpItemAction: + + + + + Item3 + + 1048576 + 2147483647 + + + _popUpItemAction: + + + + + 3 + YES + YES + 1 + + + + + 256 + {{720, 233}, {37, 16}} + + + + YES + + 67239424 + 71303168 + Trellis: + + + + + + + + + 256 + {{17, 107}, {103, 16}} + + + + YES + + 67239424 + 71303168 + No DCT Decimation: + + + + + + + + + 256 + {{4, 0}, {882, 34}} + + + YES + + -1805517311 + 272760832 + + + + YES + + 6 + System + textBackgroundColor + + 3 + MQA + + + + 6 + System + textColor + + + + + + + 256 + {{453, 214}, {149, 15}} + + + + YES + + -2076049856 + 264704 + + + 109199615 + 1 + + + + + + 400 + 75 + + + Item1 + + 1048576 + 2147483647 + 1 + + + _popUpItemAction: + + + YES + + + OtherViews + + + YES + + + + Item2 + + 1048576 + 2147483647 + + + _popUpItemAction: + + + + + Item3 + + 1048576 + 2147483647 + + + _popUpItemAction: + + + + + 3 + YES + YES + 1 + + + + + 256 + {{314, 212}, {135, 16}} + + + + YES + + 67239424 + 71303168 + Motion Estimation Method: + + + + + + + + + 256 + {{320, 170}, {129, 16}} + + + + YES + + 67239424 + 71434240 + Motion Estimation Range: + + + + + + + + + 256 + {{453, 172}, {149, 15}} + + + + YES + + -2076049856 + 264704 + + + 109199615 + 1 + + + + + + 400 + 75 + + + Item1 + + 1048576 + 2147483647 + 1 + + + _popUpItemAction: + + + YES + + + OtherViews + + + YES + + + + Item2 + + 1048576 + 2147483647 + + + _popUpItemAction: + + + + + Item3 + + 1048576 + 2147483647 + + + _popUpItemAction: + + + + + 3 + YES + YES + 1 + + + + + 256 + {{298, 191}, {151, 16}} + + + + YES + + 67239424 + 71434240 + Subpixel ME & Mode Decision: + + + + + + + + + 256 + {{15, 149}, {105, 16}} + + + + YES + + 67239424 + 71434240 + Pyramidal B-Frames: + + + + + + + + + 256 + {{304, 86}, {145, 16}} + + + + YES + + 67239424 + 71434240 + Psychovisual Rate Distortion: + + + + + + + + + 256 + {{337, 233}, {112, 16}} + + + + YES + + 67239424 + 71303168 + Adaptive Direct Mode: + + + + + + + + + 256 + {{453, 235}, {149, 15}} + + + + YES + + -2076049856 + 264704 + + + 109199615 + 1 + + + + + + 400 + 75 + + + Item1 + + 1048576 + 2147483647 + 1 + + + _popUpItemAction: + + + YES + + + OtherViews + + + YES + + + + Item2 + + 1048576 + 2147483647 + + + _popUpItemAction: + + + + + Item3 + + 1048576 + 2147483647 + + + _popUpItemAction: + + + + + 3 + YES + YES + 1 + + + + + 256 + {{1, 42}, {221, 17}} + + + + YES + + 67239424 + 272629760 + Current x264 Advanced Option String: + + + + + + + + + 256 + {{758, 109}, {130, 15}} + + + + YES + + -2076049856 + 263680 + + + 109199615 + 1 + + + + + + 400 + 75 + + + Item1 + + 1048576 + 2147483647 + 1 + + + _popUpItemAction: + + + YES + + + OtherViews + + + YES + + + + Item2 + + 1048576 + 2147483647 + + + _popUpItemAction: + + + + + Item3 + + 1048576 + 2147483647 + + + _popUpItemAction: + + + + + 3 + YES + YES + 1 + + + + + 256 + {{758, 88}, {130, 15}} + + + + YES + + -2076049856 + 263680 + + + 109199615 + 1 + + + + + + 400 + 75 + + + Item1 + + 1048576 + 2147483647 + 1 + + + _popUpItemAction: + + + YES + + + OtherViews + + + YES + + + + Item2 + + 1048576 + 2147483647 + + + _popUpItemAction: + + + + + Item3 + + 1048576 + 2147483647 + + + _popUpItemAction: + + + + + 3 + YES + YES + 1 + + + + + 256 + {{695, 107}, {62, 16}} + + + + YES + + 67239424 + 71303168 + Deblocking: + + + + + + + + + 256 + {{122, 109}, {22, 16}} + + + + YES + + 67239424 + 131072 + + + + 1211912703 + 2 + + + + 200 + 25 + + + + + 256 + {{758, 235}, {130, 15}} + + + + YES + + -2076049856 + 264192 + + + 109199615 + 1 + + + + + + 400 + 75 + + + Item1 + + 1048576 + 2147483647 + 1 + + + _popUpItemAction: + + + YES + + + OtherViews + + + YES + + + + Item2 + + 1048576 + 2147483647 + + + _popUpItemAction: + + + + + Item3 + + 1048576 + 2147483647 + + + _popUpItemAction: + + + + + 3 + YES + YES + 1 + + + + + 256 + {{758, 256}, {130, 15}} + + + + YES + + -2076049856 + 264704 + + + 109199615 + 1 + + + + + + 400 + 75 + + + Item1 + + 1048576 + 2147483647 + 1 + + + _popUpItemAction: + + + YES + + + OtherViews + + + YES + + + + Item2 + + 1048576 + 2147483647 + + + _popUpItemAction: + + + + + Item3 + + 1048576 + 2147483647 + + + _popUpItemAction: + + + + + 3 + YES + YES + 1 + + + + + 256 + {{674, 254}, {83, 16}} + + + + YES + + 67239424 + 71434240 + Partition Types: + + + + + + + + + 256 + {{122, 193}, {22, 16}} + + + + YES + + 67239424 + 131072 + + + + 1211912703 + 2 + + + + 200 + 25 + + + + + 256 + {{40, 191}, {80, 16}} + + + + YES + + 67239424 + 71434240 + 8x8 Transform: + + + + + + + + + 256 + {{122, 214}, {22, 16}} + + + + YES + + 67239424 + 131072 + + + + 1211912703 + 2 + + + + 200 + 25 + + + + + 256 + {{1, 212}, {119, 16}} + + + + YES + + 67239424 + 71565312 + CABAC Entropy Coding: + + + + + + + + + 268 + {{454, 84}, {146, 16}} + + + + YES + + -2079981824 + 262144 + + + + 1 + 0.0 + 1 + 0.0 + 11 + 0 + YES + NO + + + + + 256 + {{347, 65}, {102, 16}} + + + + YES + + 67239424 + 71434240 + Psychovisual Trellis: + + + + + + + + + 268 + {{454, 63}, {146, 16}} + + + + YES + + -2079981824 + 262144 + + + + 1 + 0.0 + 0.0 + 0.0 + 11 + 0 + YES + NO + + + + {906, 290} + + + + NSView + NSResponder + + + + 256 + + YES + + + 256 + {{199, 137}, {509, 17}} + + + YES + + 67239424 + 138412032 + HandBrake Does Not Support Advanced Theora Options + + + + + + + + + 256 + {{1, 42}, {888, 17}} + + + + YES + + 67239424 + 272629760 + Current FFmpeg Advanced Option String: + + + + + + + + + 256 + {{4, 0}, {882, 34}} + + + YES + + -1805517311 + 272760832 + + + + YES + + + + + + {906, 290} + + + + + NSView + + NSResponder + + + + + YES + + + fDisplayX264Options + + + + 191 + + + + fDisplayX264OptionsLabel + + + + 192 + + + + X264AdvancedOptionsSet: + + + + 193 + + + + fX264optView + + + + 194 + + + + fX264opt8x8dctSwitch + + + + 195 + + + + fX264opt8x8dctLabel + + + + 196 + + + + fX264optAlphaDeblockPopUp + + + + 197 + + + + fX264optBetaDeblockPopUp + + + + 198 + + + + fX264optAnalyseLabel + + + + 199 + + + + fX264optAnalysePopUp + + + + 200 + + + + fX264optBframesPopUp + + + + 201 + + + + fX264optBframesLabel + + + + 202 + + + + fX264optBPyramidLabel + + + + 206 + + + + fX264optCabacSwitch + + + + 209 + + + + fX264optCabacLabel + + + + 210 + + + + fX264optDeblockLabel + + + + 211 + + + + fX264optDirectPredPopUp + + + + 212 + + + + fX264optDirectPredLabel + + + + 213 + + + + fX264optMERangePopUp + + + + 218 + + + + fX264optMERangeLabel + + + + 219 + + + + fX264optMotionEstPopUp + + + + 220 + + + + fX264optMotionEstLabel + + + + 221 + + + + fX264optNodctdcmtLabel + + + + 224 + + + + fX264optNodctdcmtSwitch + + + + 225 + + + + fX264optRefPopUp + + + + 226 + + + + fX264optRefLabel + + + + 227 + + + + fX264optSubmePopUp + + + + 228 + + + + fX264optSubmeLabel + + + + 229 + + + + fX264optTrellisPopUp + + + + 230 + + + + fX264optTrellisLabel + + + + 231 + + + + X264AdvancedOptionsChanged: + + + + 235 + + + + X264AdvancedOptionsChanged: + + + + 237 + + + + X264AdvancedOptionsChanged: + + + + 238 + + + + X264AdvancedOptionsChanged: + + + + 243 + + + + X264AdvancedOptionsChanged: + + + + 244 + + + + X264AdvancedOptionsChanged: + + + + 245 + + + + X264AdvancedOptionsChanged: + + + + 246 + + + + X264AdvancedOptionsChanged: + + + + 247 + + + + X264AdvancedOptionsChanged: + + + + 248 + + + + X264AdvancedOptionsChanged: + + + + 249 + + + + X264AdvancedOptionsChanged: + + + + 250 + + + + X264AdvancedOptionsChanged: + + + + 252 + + + + X264AdvancedOptionsChanged: + + + + 253 + + + + fEmptyView + + + + 256 + + + + fX264optPsyRDLabel + + + + 386 + + + + fX264optPsyRDSlider + + + + 387 + + + + fX264optPsyTrellisLabel + + + + 392 + + + + fX264optPsyTrellisSlider + + + + 393 + + + + X264AdvancedOptionsChanged: + + + + 394 + + + + X264AdvancedOptionsChanged: + + + + 395 + + + + fX264optBAdaptLabel + + + + 404 + + + + fX264optBAdaptPopUp + + + + 405 + + + + X264AdvancedOptionsChanged: + + + + 406 + + + + X264AdvancedOptionsChanged: + + + + 411 + + + + fX264optWeightPLabel + + + + 413 + + + + fX264optWeightPSwitch + + + + 414 + + + + X264AdvancedOptionsChanged: + + + + 424 + + + + fX264optAqSlider + + + + 425 + + + + fX264optAqLabel + + + + 426 + + + + X264AdvancedOptionsChanged: + + + + 433 + + + + fX264optBPyramidPopUp + + + + 434 + + + + X264AdvancedOptionsSet: + + + + 452 + + + + fDisplayLavcOptions + + + + 455 + + + + fDisplayLavcOptionsLabel + + + + 456 + + + + fDisplayTheoraOptionsLabel + + + + 459 + + + + + YES + + 0 + + YES + + + + + + -2 + + + File's Owner + + + -1 + + + First Responder + + + -3 + + + Application + + + 5 + + + YES + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + x264 + + + 6 + + + YES + + + + + + 11 + + + YES + + + + + + 12 + + + YES + + + + + + 13 + + + YES + + + + + + 18 + + + YES + + + + + + 23 + + + YES + + + + + + 24 + + + YES + + + + + + 30 + + + YES + + + + + + 32 + + + YES + + + + + + 37 + + + YES + + + + + + 38 + + + YES + + + + + + 39 + + + YES + + + + + + 44 + + + YES + + + + + + 46 + + + YES + + + + + + 49 + + + YES + + + + + + 50 + + + YES + + + + + + 56 + + + YES + + + + + + 61 + + + YES + + + + + + 66 + + + YES + + + + + + 73 + + + YES + + + + + + 74 + + + YES + + + + + + 81 + + + YES + + + + + + 86 + + + YES + + + + + + 87 + + + YES + + + + + + 88 + + + YES + + + + + + 89 + + + YES + + + + + + 90 + + + YES + + + + + + 254 + + + YES + + + + + + empty + + + 342 + + + YES + + + + + + 343 + + + + + 344 + + + + + 345 + + + YES + + + + + + 346 + + + YES + + + + + + 347 + + + + + 348 + + + + + 350 + + + + + 352 + + + YES + + + + + + 353 + + + + + 354 + + + + + 355 + + + YES + + + + + + 356 + + + + + 358 + + + + + 361 + + + + + 362 + + + YES + + + + + + 364 + + + YES + + + + + + 365 + + + YES + + + + + + 366 + + + + + 373 + + + + + 374 + + + YES + + + + + + 375 + + + YES + + + + + + 376 + + + + + 377 + + + + + 378 + + + + + 379 + + + + + 380 + + + + + 7 + + + YES + + + + + + + + 10 + + + + + 9 + + + + + 8 + + + + + 14 + + + YES + + + + + + + + 17 + + + + + 16 + + + + + 15 + + + + + 19 + + + YES + + + + + + + + 22 + + + + + 21 + + + + + 20 + + + + + 33 + + + YES + + + + + + + + 36 + + + + + 35 + + + + + 34 + + + + + 40 + + + YES + + + + + + + + 43 + + + + + 42 + + + + + 41 + + + + + 51 + + + YES + + + + + + + + 54 + + + + + 53 + + + + + 52 + + + + + 57 + + + YES + + + + + + + + 60 + + + + + 59 + + + + + 58 + + + + + 62 + + + YES + + + + + + + + 65 + + + + + 64 + + + + + 63 + + + + + 75 + + + YES + + + + + + + + 78 + + + + + 77 + + + + + 76 + + + + + 82 + + + YES + + + + + + + + 85 + + + + + 84 + + + + + 83 + + + + + 382 + + + YES + + + + + + 383 + + + + + 384 + + + YES + + + + + + 385 + + + + + 388 + + + YES + + + + + + 389 + + + YES + + + + + + 390 + + + + + 391 + + + + + 396 + + + YES + + + + + + 397 + + + + + 398 + + + YES + + + + + + 399 + + + YES + + + + + + 400 + + + YES + + + + + + + + 401 + + + + + 402 + + + + + 403 + + + + + 407 + + + YES + + + + + + 408 + + + YES + + + + + + 409 + + + + + 410 + + + + + 420 + + + YES + + + + + + 421 + + + YES + + + + + + 422 + + + + + 423 + + + + + 55 + + + YES + + + + + + 363 + + + + + 427 + + + YES + + + + + + 428 + + + YES + + + + + + 429 + + + YES + + + + + + + + 430 + + + + + 431 + + + + + 432 + + + + + 438 + + + YES + + + + + + 439 + + + + + 440 + + + YES + + + + + + 441 + + + + + 442 + + + YES + + + + + + 443 + + + + + 450 + + + YES + + + + + + 451 + + + + + 453 + + + YES + + + + + + 454 + + + + + 457 + + + YES + + + + + + 458 + + + + + + + YES + + YES + -1.IBPluginDependency + -2.IBPluginDependency + -3.IBPluginDependency + 10.IBPluginDependency + 11.IBAttributePlaceholdersKey + 11.IBPluginDependency + 12.IBAttributePlaceholdersKey + 12.IBPluginDependency + 13.IBAttributePlaceholdersKey + 13.IBPluginDependency + 14.IBPluginDependency + 15.IBPluginDependency + 16.IBPluginDependency + 17.IBPluginDependency + 18.IBAttributePlaceholdersKey + 18.IBPluginDependency + 19.IBPluginDependency + 20.IBPluginDependency + 21.IBPluginDependency + 22.IBPluginDependency + 23.IBAttributePlaceholdersKey + 23.IBPluginDependency + 24.IBAttributePlaceholdersKey + 24.IBPluginDependency + 254.IBPluginDependency + 30.IBPluginDependency + 32.IBAttributePlaceholdersKey + 32.IBPluginDependency + 33.IBPluginDependency + 34.IBPluginDependency + 342.IBPluginDependency + 343.IBPluginDependency + 344.IBPluginDependency + 345.IBPluginDependency + 346.IBPluginDependency + 347.IBPluginDependency + 348.IBPluginDependency + 35.IBPluginDependency + 350.IBPluginDependency + 352.IBPluginDependency + 353.IBPluginDependency + 354.IBPluginDependency + 355.IBPluginDependency + 356.IBPluginDependency + 358.IBPluginDependency + 36.IBPluginDependency + 361.IBPluginDependency + 362.IBPluginDependency + 363.IBPluginDependency + 364.IBPluginDependency + 365.IBPluginDependency + 366.IBPluginDependency + 37.IBAttributePlaceholdersKey + 37.IBPluginDependency + 373.IBPluginDependency + 374.IBPluginDependency + 375.IBPluginDependency + 376.IBPluginDependency + 377.IBPluginDependency + 378.IBPluginDependency + 379.IBPluginDependency + 38.IBAttributePlaceholdersKey + 38.IBPluginDependency + 380.IBPluginDependency + 382.IBAttributePlaceholdersKey + 382.IBPluginDependency + 383.IBPluginDependency + 384.IBPluginDependency + 385.IBPluginDependency + 388.IBAttributePlaceholdersKey + 388.IBPluginDependency + 389.IBPluginDependency + 39.IBAttributePlaceholdersKey + 39.IBPluginDependency + 390.IBPluginDependency + 391.IBPluginDependency + 396.IBAttributePlaceholdersKey + 396.IBPluginDependency + 397.IBPluginDependency + 398.IBAttributePlaceholdersKey + 398.IBPluginDependency + 399.IBPluginDependency + 40.IBPluginDependency + 400.IBPluginDependency + 401.IBPluginDependency + 402.IBPluginDependency + 403.IBPluginDependency + 407.IBAttributePlaceholdersKey + 407.IBPluginDependency + 408.IBAttributePlaceholdersKey + 408.IBPluginDependency + 409.IBPluginDependency + 41.IBPluginDependency + 410.IBPluginDependency + 42.IBPluginDependency + 420.IBPluginDependency + 421.IBAttributePlaceholdersKey + 421.IBPluginDependency + 422.IBPluginDependency + 423.IBPluginDependency + 427.IBAttributePlaceholdersKey + 427.IBPluginDependency + 428.IBPluginDependency + 429.IBPluginDependency + 43.IBPluginDependency + 430.IBPluginDependency + 431.IBPluginDependency + 432.IBPluginDependency + 438.IBPluginDependency + 439.IBPluginDependency + 44.IBAttributePlaceholdersKey + 44.IBPluginDependency + 440.IBPluginDependency + 441.IBPluginDependency + 442.IBPluginDependency + 443.IBPluginDependency + 450.IBPluginDependency + 451.IBPluginDependency + 453.IBPluginDependency + 454.IBPluginDependency + 457.IBPluginDependency + 458.IBPluginDependency + 46.IBAttributePlaceholdersKey + 46.IBPluginDependency + 49.IBAttributePlaceholdersKey + 49.IBPluginDependency + 5.IBPluginDependency + 50.IBAttributePlaceholdersKey + 50.IBPluginDependency + 51.IBPluginDependency + 52.IBPluginDependency + 53.IBPluginDependency + 54.IBPluginDependency + 55.IBPluginDependency + 56.IBAttributePlaceholdersKey + 56.IBPluginDependency + 57.IBPluginDependency + 58.IBPluginDependency + 59.IBPluginDependency + 6.IBAttributePlaceholdersKey + 6.IBPluginDependency + 60.IBPluginDependency + 61.IBAttributePlaceholdersKey + 61.IBPluginDependency + 62.IBPluginDependency + 63.IBPluginDependency + 64.IBPluginDependency + 65.IBPluginDependency + 66.IBAttributePlaceholdersKey + 66.IBPluginDependency + 7.IBPluginDependency + 73.IBAttributePlaceholdersKey + 73.IBPluginDependency + 74.IBAttributePlaceholdersKey + 74.IBPluginDependency + 75.IBPluginDependency + 76.IBPluginDependency + 77.IBPluginDependency + 78.IBPluginDependency + 8.IBPluginDependency + 81.IBAttributePlaceholdersKey + 81.IBPluginDependency + 82.IBPluginDependency + 83.IBPluginDependency + 84.IBPluginDependency + 85.IBPluginDependency + 86.IBAttributePlaceholdersKey + 86.IBPluginDependency + 87.IBAttributePlaceholdersKey + 87.IBPluginDependency + 88.IBAttributePlaceholdersKey + 88.IBPluginDependency + 89.IBAttributePlaceholdersKey + 89.IBPluginDependency + 9.IBPluginDependency + 90.IBAttributePlaceholdersKey + 90.IBPluginDependency + + + YES + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + YES + + + + com.apple.InterfaceBuilder.CocoaPlugin + + YES + + + + com.apple.InterfaceBuilder.CocoaPlugin + + YES + + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + YES + + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + YES + + + + com.apple.InterfaceBuilder.CocoaPlugin + + YES + + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + YES + + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + YES + + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + YES + + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + YES + + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + YES + + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + YES + + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + YES + + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + YES + + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + YES + + + + com.apple.InterfaceBuilder.CocoaPlugin + + YES + + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + YES + + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + YES + + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + YES + + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + YES + + + + com.apple.InterfaceBuilder.CocoaPlugin + + YES + + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + YES + + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + YES + + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + YES + + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + YES + + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + YES + + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + YES + + + + com.apple.InterfaceBuilder.CocoaPlugin + + YES + + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + YES + + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + YES + + + + com.apple.InterfaceBuilder.CocoaPlugin + + YES + + + + com.apple.InterfaceBuilder.CocoaPlugin + + YES + + + + com.apple.InterfaceBuilder.CocoaPlugin + + YES + + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + YES + + + + com.apple.InterfaceBuilder.CocoaPlugin + + + + YES + + + + + + YES + + + + + 459 + + + + YES + + HBAdvancedController + NSObject + + YES + + YES + X264AdvancedOptionsAnimate: + X264AdvancedOptionsChanged: + X264AdvancedOptionsSet: + X264AdvancedOptionsSetCurrentSettings: + X264AdvancedOptionsStandardizeOptString: + + + YES + id + id + id + id + id + + + + YES + + YES + X264AdvancedOptionsAnimate: + X264AdvancedOptionsChanged: + X264AdvancedOptionsSet: + X264AdvancedOptionsSetCurrentSettings: + X264AdvancedOptionsStandardizeOptString: + + + YES + + X264AdvancedOptionsAnimate: + id + + + X264AdvancedOptionsChanged: + id + + + X264AdvancedOptionsSet: + id + + + X264AdvancedOptionsSetCurrentSettings: + id + + + X264AdvancedOptionsStandardizeOptString: + id + + + + + YES + + YES + fDisplayLavcOptions + fDisplayLavcOptionsLabel + fDisplayTheoraOptionsLabel + fDisplayX264Options + fDisplayX264OptionsLabel + fEmptyView + fX264opt8x8dctLabel + fX264opt8x8dctSwitch + fX264optAlphaDeblockPopUp + fX264optAnalyseLabel + fX264optAnalysePopUp + fX264optAqLabel + fX264optAqSlider + fX264optBAdaptLabel + fX264optBAdaptPopUp + fX264optBPyramidLabel + fX264optBPyramidPopUp + fX264optBetaDeblockPopUp + fX264optBframesLabel + fX264optBframesPopUp + fX264optCabacLabel + fX264optCabacSwitch + fX264optDeblockLabel + fX264optDirectPredLabel + fX264optDirectPredPopUp + fX264optMERangeLabel + fX264optMERangePopUp + fX264optMotionEstLabel + fX264optMotionEstPopUp + fX264optNodctdcmtLabel + fX264optNodctdcmtSwitch + fX264optPsyRDLabel + fX264optPsyRDSlider + fX264optPsyTrellisLabel + fX264optPsyTrellisSlider + fX264optRefLabel + fX264optRefPopUp + fX264optSubmeLabel + fX264optSubmePopUp + fX264optTrellisLabel + fX264optTrellisPopUp + fX264optView + fX264optViewTitleLabel + fX264optWeightPLabel + fX264optWeightPSwitch + + + YES + NSTextField + NSTextField + NSTextField + NSTextField + NSTextField + NSView + NSTextField + NSButton + NSPopUpButton + NSTextField + NSPopUpButton + NSTextField + NSSlider + NSTextField + NSPopUpButton + NSTextField + NSPopUpButton + NSPopUpButton + NSTextField + NSPopUpButton + NSTextField + NSButton + NSTextField + NSTextField + NSPopUpButton + NSTextField + NSPopUpButton + NSTextField + NSPopUpButton + NSTextField + NSButton + NSTextField + NSSlider + NSTextField + NSSlider + NSTextField + NSPopUpButton + NSTextField + NSPopUpButton + NSTextField + NSPopUpButton + NSView + NSTextField + NSTextField + NSButton + + + + YES + + YES + fDisplayLavcOptions + fDisplayLavcOptionsLabel + fDisplayTheoraOptionsLabel + fDisplayX264Options + fDisplayX264OptionsLabel + fEmptyView + fX264opt8x8dctLabel + fX264opt8x8dctSwitch + fX264optAlphaDeblockPopUp + fX264optAnalyseLabel + fX264optAnalysePopUp + fX264optAqLabel + fX264optAqSlider + fX264optBAdaptLabel + fX264optBAdaptPopUp + fX264optBPyramidLabel + fX264optBPyramidPopUp + fX264optBetaDeblockPopUp + fX264optBframesLabel + fX264optBframesPopUp + fX264optCabacLabel + fX264optCabacSwitch + fX264optDeblockLabel + fX264optDirectPredLabel + fX264optDirectPredPopUp + fX264optMERangeLabel + fX264optMERangePopUp + fX264optMotionEstLabel + fX264optMotionEstPopUp + fX264optNodctdcmtLabel + fX264optNodctdcmtSwitch + fX264optPsyRDLabel + fX264optPsyRDSlider + fX264optPsyTrellisLabel + fX264optPsyTrellisSlider + fX264optRefLabel + fX264optRefPopUp + fX264optSubmeLabel + fX264optSubmePopUp + fX264optTrellisLabel + fX264optTrellisPopUp + fX264optView + fX264optViewTitleLabel + fX264optWeightPLabel + fX264optWeightPSwitch + + + YES + + fDisplayLavcOptions + NSTextField + + + fDisplayLavcOptionsLabel + NSTextField + + + fDisplayTheoraOptionsLabel + NSTextField + + + fDisplayX264Options + NSTextField + + + fDisplayX264OptionsLabel + NSTextField + + + fEmptyView + NSView + + + fX264opt8x8dctLabel + NSTextField + + + fX264opt8x8dctSwitch + NSButton + + + fX264optAlphaDeblockPopUp + NSPopUpButton + + + fX264optAnalyseLabel + NSTextField + + + fX264optAnalysePopUp + NSPopUpButton + + + fX264optAqLabel + NSTextField + + + fX264optAqSlider + NSSlider + + + fX264optBAdaptLabel + NSTextField + + + fX264optBAdaptPopUp + NSPopUpButton + + + fX264optBPyramidLabel + NSTextField + + + fX264optBPyramidPopUp + NSPopUpButton + + + fX264optBetaDeblockPopUp + NSPopUpButton + + + fX264optBframesLabel + NSTextField + + + fX264optBframesPopUp + NSPopUpButton + + + fX264optCabacLabel + NSTextField + + + fX264optCabacSwitch + NSButton + + + fX264optDeblockLabel + NSTextField + + + fX264optDirectPredLabel + NSTextField + + + fX264optDirectPredPopUp + NSPopUpButton + + + fX264optMERangeLabel + NSTextField + + + fX264optMERangePopUp + NSPopUpButton + + + fX264optMotionEstLabel + NSTextField + + + fX264optMotionEstPopUp + NSPopUpButton + + + fX264optNodctdcmtLabel + NSTextField + + + fX264optNodctdcmtSwitch + NSButton + + + fX264optPsyRDLabel + NSTextField + + + fX264optPsyRDSlider + NSSlider + + + fX264optPsyTrellisLabel + NSTextField + + + fX264optPsyTrellisSlider + NSSlider + + + fX264optRefLabel + NSTextField + + + fX264optRefPopUp + NSPopUpButton + + + fX264optSubmeLabel + NSTextField + + + fX264optSubmePopUp + NSPopUpButton + + + fX264optTrellisLabel + NSTextField + + + fX264optTrellisPopUp + NSPopUpButton + + + fX264optView + NSView + + + fX264optViewTitleLabel + NSTextField + + + fX264optWeightPLabel + NSTextField + + + fX264optWeightPSwitch + NSButton + + + + + IBProjectSource + ./Classes/HBAdvancedController.h + + + + + 0 + IBCocoaFramework + + com.apple.InterfaceBuilder.CocoaPlugin.macosx + + + + com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3 + + + YES + 3 + + YES + + YES + NSMenuCheckmark + NSMenuMixedState + + + YES + {9, 8} + {7, 2} + + + + Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/macosx/English.lproj/InfoPlist.strings and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/macosx/English.lproj/InfoPlist.strings differ diff -Nru handbrake-0.9.9+dfsg/macosx/English.lproj/MainMenu.xib handbrake-0.9.9+ppa1/macosx/English.lproj/MainMenu.xib --- handbrake-0.9.9+dfsg/macosx/English.lproj/MainMenu.xib 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/English.lproj/MainMenu.xib 2013-04-12 19:06:06.000000000 +0000 @@ -0,0 +1,13405 @@ + + + + 1050 + 12D78 + 3084 + 1187.37 + 626.00 + + com.apple.InterfaceBuilder.CocoaPlugin + 3084 + + + YES + NSArrayController + NSBox + NSButton + NSButtonCell + NSCustomObject + NSCustomView + NSDrawer + NSImageCell + NSImageView + NSMatrix + NSMenu + NSMenuItem + NSNumberFormatter + NSOutlineView + NSPopUpButton + NSPopUpButtonCell + NSProgressIndicator + NSScrollView + NSScroller + NSSlider + NSSliderCell + NSTabView + NSTabViewItem + NSTableColumn + NSTableHeaderView + NSTableView + NSTextField + NSTextFieldCell + NSUserDefaultsController + NSView + NSWindowTemplate + + + YES + com.apple.InterfaceBuilder.CocoaPlugin + + + PluginDependencyRecalculationVersion + + + + YES + + + NSApplication + + + + FirstResponder + + + NSApplication + + + 4103 + 2 + {{41, 572}, {959, 558}} + 1886912512 + HandBrake + NSWindow + + View + + + {213, 107} + + + 256 + + YES + + + 264 + {{18, 2}, {711, 28}} + + + + YES + + 67108864 + 4325376 + RE8gTk9UIFRSQU5TTEFURSBUSElTIE5JQiBGSUxFLAo + + LucidaGrande + 11 + 3100 + + + + 6 + System + controlColor + + 3 + MC42NjY2NjY2NjY3AA + + + + 6 + System + controlTextColor + + 3 + MAA + + + + NO + + + + 1288 + {{18, -26}, {930, 20}} + + + + 16396 + 100 + + + + 264 + {{13, 28}, {940, 343}} + + + + + YES + + 1 + + + 256 + + YES + + + 256 + {{14, 247}, {94, 19}} + + + + YES + + 67108864 + 4194304 + Video Quality: + + + + + + NO + + + + 256 + {{170, 209}, {84, 19}} + + + + YES + + -1804599231 + 4326400 + + + + YES + + 6 + System + textBackgroundColor + + 3 + MQA + + + + 6 + System + textColor + + + + NO + + + + 256 + {{281, 229}, {622, 16}} + + + + YES + + 67371264 + 262144 + + + + + LucidaGrande + 9 + 3614 + + + 51 + 0.0 + 19 + 0.0 + 205 + 1 + YES + NO + + NO + + + + 256 + {{16, 20}, {892, 14}} + + + + YES + + 67108864 + 4194304 + Picture Settings: + + + + + + NO + + + + 256 + {{192, 231}, {65, 14}} + + + + YES + + 67108864 + -2143158272 + + + + + YES + + YES + allowsFloats + formatterBehavior + lenient + locale + negativeInfinitySymbol + nilSymbol + numberStyle + positiveInfinitySymbol + + + YES + + + + + + + -∞ + + + +∞ + + + #,##0.### + #,##0.### + + + + + + + + NaN + + YES + + YES + + + + + + 0 + 0 + YES + NO + 1 + AAAAAAAAAAAAAAAAAAAAAA + + + + 3 + YES + YES + YES + + . + , + YES + NO + YES + + + + + + NO + + + + 256 + {{167, 231}, {28, 14}} + + + + YES + + 67108864 + 4325376 + RF: + + + + + + NO + + + + 256 + {{16, 4}, {892, 14}} + + + + YES + + 67108864 + 4194304 + Picture Filters: + + + + + + NO + + + + 256 + {{372, 272}, {158, 22}} + + + + YES + + -2076180416 + 132096 + + + 109199360 + 1 + + + + + + 400 + 75 + + + + + 1048576 + 2147483647 + 1 + + NSImage + NSMenuCheckmark + + + NSImage + NSMenuMixedState + + _popUpItemAction: + + + YES + + + OtherViews + + + YES + + + + 3 + YES + YES + 1 + + NO + + + + 256 + {{279, 209}, {124, 18}} + + + + YES + + 67108864 + 131072 + 2-pass encoding + + + 1211912448 + 2 + + NSSwitch + + + + 200 + 25 + + NO + + + + 256 + {{416, 210}, {107, 16}} + + + + YES + + 67108864 + 131072 + Turbo first pass + + + 1211912448 + 2 + + NSImage + NSSwitch + + + + + 200 + 25 + + NO + + + + 256 + {{98, 272}, {149, 22}} + + + + YES + + -2076180416 + 132096 + + + 109199360 + 1 + + + + + + 400 + 75 + + + + + 1048576 + 2147483647 + 1 + + + _popUpItemAction: + + + YES + + + OtherViews + + + YES + + + + 3 + YES + YES + 1 + + NO + + + + 256 + {{278, 274}, {92, 17}} + + + + YES + + 67108864 + 71303168 + Framerate (FPS): + + + + + + NO + + + + 256 + {{14, 274}, {79, 17}} + + + + YES + + 67108864 + 4194304 + Video Codec: + + + + + + NO + + + + 268 + {{17, 209}, {145, 38}} + + + + YES + NO + 2 + 1 + + YES + + -2080374784 + 131072 + Constant Quality + + + 1 + 1211912448 + 0 + + NSRadioButton + + + + 200 + 25 + + + 67108864 + 131072 + Average Bitrate (kbps): + + + 1211912448 + 0 + + 549453824 + {18, 18} + + YES + + YES + + + + TU0AKgAABRgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAwAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAADwRERGLJycnySsrK/A1NTXw +IyMjyRwcHIsJCQk8AAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFFRUVdVBQUOCoqKj/ +29vb//n5+f/6+vr/2tra/6qqqv9UVFTgHx8fdQAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUZGRl5 +dXV198PDw//8/Pz////////////////////////////U1NT/fHx89yUlJXkAAAAFAAAAAAAAAAAAAAAA +AAAAAxEREUZqamrmtbW1/+3t7f/+/v7//v7+//7+/v/9/f3//f39//39/f/39/f/xMTE/3d3d+YZGRlG +AAAAAwAAAAAAAAAAAAAACkJCQqGtra3/xsbG/+vr6//y8vL/9fX1//X19f/z8/P/9fX1//Ly8v/u7u7/ +0tLS/6+vr/9KSkqhAAAACgAAAAAAAAAAAAAAF3h4eN2/v7//z8/P/93d3f/q6ur/7+/v/+/v7//w8PD/ +7e3t/+3t7f/i4uL/zs7O/8XFxf98fHzdAAAAFwAAAAAAAAADAAAAJKSkpPjOzs7/2dnZ/+Dg4P/i4uL/ +5eXl/+bm5v/n5+f/5eXl/+Li4v/e3t7/2tra/9DQ0P+srKz4AAAAJAAAAAMAAAADAAAALrCwsPrW1tb/ +3t7e/+Tk5P/p6en/6+vr/+zs7P/p6en/6+vr/+fn5//k5OT/4ODg/9nZ2f+zs7P6AAAALgAAAAMAAAAD +AAAALp2dnezg4OD/5eXl/+rq6v/u7u7/8PDw//Dw8P/x8fH/8PDw/+7u7v/q6ur/5ubm/+Hh4f+ZmZns +AAAALgAAAAMAAAADAAAAJG5ubs/l5eX/6enp/+/v7//y8vL/9vb2//r6+v/5+fn/9/f3//b29v/x8fH/ +6+vr/+Tk5P9ra2vPAAAAJAAAAAMAAAAAAAAAFy4uLpPCwsL67Ozs//Pz8//5+fn//v7+//7+/v/+/v7/ +/v7+//v7+//19fX/8PDw/8LCwvosLCyTAAAAFwAAAAAAAAAAAAAACgAAAENfX1/S5OTk/vn5+f/+/v7/ +///////////////////////////8/Pz/5ubm/l9fX9IAAABDAAAACgAAAAAAAAAAAAAAAwAAABcAAABl +YmJi3NLS0v3////////////////////////////////V1dX9ZGRk3AAAAGUAAAAXAAAAAwAAAAAAAAAA +AAAAAAAAAAUAAAAfAAAAZTMzM8KAgIDwv7+//O3t7f/t7e3/v7+//ICAgPAzMzPCAAAAZQAAAB8AAAAF +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAFwAAAEMAAAB3AAAAnwAAALMAAACzAAAAnwAAAHcAAABD +AAAAFwAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAoAAAAXAAAAJAAAAC4AAAAu +AAAAJAAAABcAAAAKAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAwAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgEAAAMAAAABABIAAAEB +AAMAAAABABIAAAECAAMAAAAEAAAFxgEDAAMAAAABAAEAAAEGAAMAAAABAAIAAAERAAQAAAABAAAACAES +AAMAAAABAAEAAAEVAAMAAAABAAQAAAEWAAMAAAABABIAAAEXAAQAAAABAAAFEAEcAAMAAAABAAEAAAFS +AAMAAAABAAEAAAFTAAMAAAAEAAAFzodzAAcAAAwYAAAF1gAAAAAACAAIAAgACAABAAEAAQABAAAMGGFw +cGwCAAAAbW50clJHQiBYWVogB9YABAADABMALAASYWNzcEFQUEwAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAPbWAAEAAAAA0y1hcHBsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAOclhZWgAAASwAAAAUZ1hZWgAAAUAAAAAUYlhZWgAAAVQAAAAUd3RwdAAAAWgAAAAUY2hhZAAA +AXwAAAAsclRSQwAAAagAAAAOZ1RSQwAAAbgAAAAOYlRSQwAAAcgAAAAOdmNndAAAAdgAAAMSbmRpbgAA +BOwAAAY+ZGVzYwAACywAAABkZHNjbQAAC5AAAAAubW1vZAAAC8AAAAAoY3BydAAAC+gAAAAtWFlaIAAA +AAAAAF1KAAA0kQAACCVYWVogAAAAAAAAdCAAALRgAAAjPVhZWiAAAAAAAAAlbAAAFyoAAKfDWFlaIAAA +AAAAAPNSAAEAAAABFs9zZjMyAAAAAAABDEIAAAXe///zJgAAB5IAAP2R///7ov///aMAAAPcAADAbGN1 +cnYAAAAAAAAAAQHNAABjdXJ2AAAAAAAAAAEBzQAAY3VydgAAAAAAAAABAc0AAHZjZ3QAAAAAAAAAAAAD +AQAAAQACBAUGBwkKCw0ODxASExQWFxgaGxweHyAiIyQmJygpKywtLzAxMjM1Njc4OTs8PT5AQUJDREZH +SElKS0xOT1BRUlNUVVZXWFlaW1xdXl9hYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8fX5/gIGCg4SF +hoeIiYqLjI2Oj5CRkpOUlZaXmJmam5ydnZ6foKGio6SlpqanqKmqq6ytra6vsLGysrO0tba3uLi5uru8 +vL2+v8DBwcLDxMXGxsfIycrKy8zNzs7P0NHS0tPU1dbW19jZ2drb3Nzd3t/g4eLi4+Tl5ufo6enq6+zt +7u/w8fHy8/T19vf4+fr7/P3+/v8AAgMEBQYHCAkKCwwNDg8QERITFBUWFxgZGhscHR8gISIjJCUnKCkq +Ky0uLzAxMzQ1Njc4OTo7PD0/QEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaWltcXV5fYGFiY2RlZmdo +aWprbG1ub3BxcnN0dXZ3d3h5ent8fH1+f4CBgoKDhIWGh4iIiYqLjI2Oj5CRkpOUlJWWl5iZmpucnZ2e +n6ChoqOkpaamp6ipqqusra6vsLCxsrO0tba3uLm5uru8vb6/wMHCw8TFx8jJysvMzc7P0NDR0tPU1dbX +2Nna29ze3+Dh4uPk5ebn6err7O3u7/Hy8/T19vf5+vv8/f7/AAIDAwQFBgcICQoKCwwNDg8QERITFBUW +FxgZGhscHR4fICEiIyQlJicoKSorLC0uLzAxMjM0NTY3ODg5Ojs8PT4+P0BBQkNDREVGR0hJSUpLTE1O +Tk9QUVJSU1RVVVZXWFhZWltbXF1eXl9gYWFiY2RkZWZnZ2hpaWprbGxtbm5vcHFxcnNzdHV1dnd4eHl6 +ent8fH1+fn+AgYGCg4SEhYaHiImJiouMjY6Oj5CRkpOTlJWWl5iZmZqbnJ2en6ChoqOkpaanqKmqq6yt +rq+xsrO0tba3uLq7vL2+wMHDxMbHycrMzs/R0tTW19nb3d7g4uTm6Ors7vDy9Pb4+vz+/wAAbmRpbgAA +AAAAAAY2AACXGgAAVjoAAFPKAACJ3gAAJ8IAABaoAABQDQAAVDkAAiuFAAIZmQABeFEAAwEAAAIAAAAA +AAEABgANABcAIwAxAEAAUgBlAHsAkwCrAMUA4gD/AR8BPwFhAYUBqgHQAfgCIAJLAncCpQLSAwIDMwNl +A5gDzgQFBD0EdQSvBOsFKQVnBacF6AYqBm4GtQb8B0UHkgfkCDkIkAjnCT4JmAn0ClAKrQsLC2sLygwq +DIwM8Q1XDcAOKA6SDv4PbA/bEE0QxBE7EbQSMRKwEzITuRREFNAVYBXxFocXHhfAGGIZBBmsGlQa+RuU +HC4czh1yHhQeux9jIA0gvCFoIhkizyOJJEEk+SW6JnknOygFKMspkypiKzIsASzXLawuhy9gMD4xGzH8 +MtszvzSgNYY2cjdcOEw5OTorOxs8CD0EPfU+6z/nQOFB2ELUQ9VE00XcRttH5EjxSgBLCUwdTTFOUE9v +UI9Rt1LdVAVVNlZsV6VY4FohW21ct135X09goGH0Y0tkqGYFZ19oxGova5ptCG54b/BxbnLsdG119Xd/ +eQh6knwqfcV/W4D4gpSEO4Xih4CJKorYjIqOOY/jkZuTWJUOlsyYiZpSnB6d4Z+soX+jWqUvpxOo+6rj +rMuuwLC4sra0rra0uL+60LzfvwDBHcLdxLXGhchYyi7MCs3lz7rRmtOA1WPXR9kq2xPc/97s4M/iveSn +5o3obupT7ELuLPAM8fLz0PW396H5f/tZ/T3//wAAAAEAAwALABYAJQA3AE0AZQCBAJ8AwQDlAQsBNQFh +AZABwQH1AisCZAKfAtwDHANfA6MD6gQ0BH8EzQT1BR0FcAXEBhsGdAbPBy0HXAeMB+4IUgi4CSAJVAmK +CfYKZArVC0cLgQu8DDIMqw0mDaIOIQ6hDyQPqRAvELgQ/RFDEc8SXRLuE4AUFRSrFUMV3RZ5FxcXthhY +GPwZoRpIGvEbnBxJHPgdqB5bHw8fxSB9ITch8iKwJDAk8yW3Jn4nRigQKNwpqSp5K0osHCzxLccuoC95 +MFUxMzISMvMz1TS5NaA2hzdxOFw5STo4Oyg8Gj4DPvs/9EDuQepD6ETpRexG8Uf3SP9LFEwhTTBOQE9S +UGZSklOrVMVV4Vb/WB5ZP1phW4Vcq13SXvthUmJ/Y69k4GYSZ0dofGm0au1tZG6ib+FxInJlc6l073Y2 +d396FXtjfLJ+A39VgKmB/4NWhK+GCYjCiiGLgYzjjkePrJESknuT5Ja8mCuZm5sMnH+d9J9qoOGiWqPV +pVGmz6eOqE6pzqtRrNSuWq/gsWmy8rR+tgu5Kbq6vE294b93wQ7Cp8RBxd3He8kZyrrLisxbzf/Po9FK +0vHUm9ZF1/HZn9tO3Cbc/96x4GTiGePQ5YjnQegf6Pzquex27jbv9/G583z0X/VC9wj40Pqa/GX+Mf// +AAAAAQADAAsAJQA3AE0AZQCBAJ8AwQELATUBYQGQAcEB9QIrAmQCnwLcAxwDXwOjA+oENAR/BM0FHQVw +BcQGGwZ0Bs8HLQeMB+4IUgi4CSAJign2CmQK1QtHC7wMMgyrDSYNog4hDqEPJA+pEC8QuBFDEl0S7hOA +FBUUqxVDFnkXFxe2GFgY/BpIGvEbnBxJHPgdqB8PH8UgfSE3IfIjbyQwJPMltydGKBAo3Cp5K0osHC3H +LqAveTEzMhIy8zS5NaA2hzhcOUk6ODwaPQ4+Az/0QO5C6EPoROlG8Uf3SglLFEwhTkBPUlF7UpJUxVXh +Vv9ZP1phXKtd0mAlYVJjr2TgZhJofGm0au1tZG6ib+FxInJldO92Nnd/eMl6FXyyfgN/VYCpgf+Er4YJ +h2WIwoohi4GOR4+skRKSe5PklVCWvJgrmZubDJx/nfSfaqDholqj1aVRps+oTqnOq1Gs1K2Xrlqv4LFp +svK0frYLt5m5Kbnxurq8Tb3hv3fBDsHawqfEQcUPxd3He8hKyRnKusuKzFvN/87Rz6PQdtFK0vHTxtSb +1kXXG9fx2MjZn9tO3Cbc/93Y3rHfiuBk4hni9ePQ5KzliOZk50HoH+j86drqueuX7HbtVu427xbv9/DX +8bnymvN89F/1QvYl9wj37PjQ+bX6mvt//GX9S/4x//8AAGRlc2MAAAAAAAAACkNvbG9yIExDRAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAABtbHVjAAAAAAAAAAEAAAAMZW5VUwAAABIAAAAcAEMAbwBsAG8AcgAgAEwAQwBE +AABtbW9kAAAAAAAABhAAAJxOAAAAAL5zkQAAAAAAAAAAAAAAAAAAAAAAdGV4dAAAAABDb3B5cmlnaHQg +QXBwbGUgQ29tcHV0ZXIsIEluYy4sIDIwMDUAAAAAA + + + + + + 3 + MCAwAA + + + + 400 + 75 + + + {145, 18} + {4, 2} + 1151868928 + NSActionCell + + 67108864 + 0 + Radio + + LucidaGrande + 13 + 1044 + + 1211912448 + 0 + + 549453824 + {18, 18} + + YES + + YES + + + + TU0AKgAABRgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAwAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAADwRERGLJycnySsrK/A1NTXw +IyMjyRwcHIsJCQk8AAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFFRUVdVBQUOCoqKj/ +29vb//n5+f/6+vr/2tra/6qqqv9UVFTgHx8fdQAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUZGRl5 +dXV198PDw//8/Pz////////////////////////////U1NT/fHx89yUlJXkAAAAFAAAAAAAAAAAAAAAA +AAAAAxEREUZqamrmtbW1/+3t7f/+/v7//v7+//7+/v/9/f3//f39//39/f/39/f/xMTE/3d3d+YZGRlG +AAAAAwAAAAAAAAAAAAAACkJCQqGtra3/xsbG/+vr6//y8vL/9fX1//X19f/z8/P/9fX1//Ly8v/u7u7/ +0tLS/6+vr/9KSkqhAAAACgAAAAAAAAAAAAAAF3h4eN2/v7//z8/P/93d3f/q6ur/7+/v/+/v7//w8PD/ +7e3t/+3t7f/i4uL/zs7O/8XFxf98fHzdAAAAFwAAAAAAAAADAAAAJKSkpPjOzs7/2dnZ/+Dg4P/i4uL/ +5eXl/+bm5v/n5+f/5eXl/+Li4v/e3t7/2tra/9DQ0P+srKz4AAAAJAAAAAMAAAADAAAALrCwsPrW1tb/ +3t7e/+Tk5P/p6en/6+vr/+zs7P/p6en/6+vr/+fn5//k5OT/4ODg/9nZ2f+zs7P6AAAALgAAAAMAAAAD +AAAALp2dnezg4OD/5eXl/+rq6v/u7u7/8PDw//Dw8P/x8fH/8PDw/+7u7v/q6ur/5ubm/+Hh4f+ZmZns +AAAALgAAAAMAAAADAAAAJG5ubs/l5eX/6enp/+/v7//y8vL/9vb2//r6+v/5+fn/9/f3//b29v/x8fH/ +6+vr/+Tk5P9ra2vPAAAAJAAAAAMAAAAAAAAAFy4uLpPCwsL67Ozs//Pz8//5+fn//v7+//7+/v/+/v7/ +/v7+//v7+//19fX/8PDw/8LCwvosLCyTAAAAFwAAAAAAAAAAAAAACgAAAENfX1/S5OTk/vn5+f/+/v7/ +///////////////////////////8/Pz/5ubm/l9fX9IAAABDAAAACgAAAAAAAAAAAAAAAwAAABcAAABl +YmJi3NLS0v3////////////////////////////////V1dX9ZGRk3AAAAGUAAAAXAAAAAwAAAAAAAAAA +AAAAAAAAAAUAAAAfAAAAZTMzM8KAgIDwv7+//O3t7f/t7e3/v7+//ICAgPAzMzPCAAAAZQAAAB8AAAAF +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAFwAAAEMAAAB3AAAAnwAAALMAAACzAAAAnwAAAHcAAABD +AAAAFwAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAoAAAAXAAAAJAAAAC4AAAAu +AAAAJAAAABcAAAAKAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAwAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQEAAAMAAAABABIAAAEB +AAMAAAABABIAAAECAAMAAAAEAAAFugEDAAMAAAABAAEAAAEGAAMAAAABAAIAAAERAAQAAAABAAAACAES +AAMAAAABAAEAAAEVAAMAAAABAAQAAAEWAAMAAAABABIAAAEXAAQAAAABAAAFEAEcAAMAAAABAAEAAAFS +AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA + + + + + + + + 400 + 75 + + + + + + + + + 268 + {{540, 255}, {157, 38}} + + + + YES + NO + 2 + 1 + + YES + + -2080374784 + 131072 + Variable Framerate + + + 1 + 1211912448 + 0 + + + + 200 + 25 + + + 67108864 + 131072 + Constant Framerate + + + 1211912448 + 0 + + 549453824 + {18, 18} + + YES + + YES + + + + TU0AKgAABRgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAwAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAADwRERGLJycnySsrK/A1NTXw +IyMjyRwcHIsJCQk8AAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFFRUVdVBQUOCoqKj/ +29vb//n5+f/6+vr/2tra/6qqqv9UVFTgHx8fdQAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUZGRl5 +dXV198PDw//8/Pz////////////////////////////U1NT/fHx89yUlJXkAAAAFAAAAAAAAAAAAAAAA +AAAAAxEREUZqamrmtbW1/+3t7f/+/v7//v7+//7+/v/9/f3//f39//39/f/39/f/xMTE/3d3d+YZGRlG +AAAAAwAAAAAAAAAAAAAACkJCQqGtra3/xsbG/+vr6//y8vL/9fX1//X19f/z8/P/9fX1//Ly8v/u7u7/ +0tLS/6+vr/9KSkqhAAAACgAAAAAAAAAAAAAAF3h4eN2/v7//z8/P/93d3f/q6ur/7+/v/+/v7//w8PD/ +7e3t/+3t7f/i4uL/zs7O/8XFxf98fHzdAAAAFwAAAAAAAAADAAAAJKSkpPjOzs7/2dnZ/+Dg4P/i4uL/ +5eXl/+bm5v/n5+f/5eXl/+Li4v/e3t7/2tra/9DQ0P+srKz4AAAAJAAAAAMAAAADAAAALrCwsPrW1tb/ +3t7e/+Tk5P/p6en/6+vr/+zs7P/p6en/6+vr/+fn5//k5OT/4ODg/9nZ2f+zs7P6AAAALgAAAAMAAAAD +AAAALp2dnezg4OD/5eXl/+rq6v/u7u7/8PDw//Dw8P/x8fH/8PDw/+7u7v/q6ur/5ubm/+Hh4f+ZmZns +AAAALgAAAAMAAAADAAAAJG5ubs/l5eX/6enp/+/v7//y8vL/9vb2//r6+v/5+fn/9/f3//b29v/x8fH/ +6+vr/+Tk5P9ra2vPAAAAJAAAAAMAAAAAAAAAFy4uLpPCwsL67Ozs//Pz8//5+fn//v7+//7+/v/+/v7/ +/v7+//v7+//19fX/8PDw/8LCwvosLCyTAAAAFwAAAAAAAAAAAAAACgAAAENfX1/S5OTk/vn5+f/+/v7/ +///////////////////////////8/Pz/5ubm/l9fX9IAAABDAAAACgAAAAAAAAAAAAAAAwAAABcAAABl +YmJi3NLS0v3////////////////////////////////V1dX9ZGRk3AAAAGUAAAAXAAAAAwAAAAAAAAAA +AAAAAAAAAAUAAAAfAAAAZTMzM8KAgIDwv7+//O3t7f/t7e3/v7+//ICAgPAzMzPCAAAAZQAAAB8AAAAF +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAFwAAAEMAAAB3AAAAnwAAALMAAACzAAAAnwAAAHcAAABD +AAAAFwAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAoAAAAXAAAAJAAAAC4AAAAu +AAAAJAAAABcAAAAKAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAwAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgEAAAMAAAABABIAAAEB +AAMAAAABABIAAAECAAMAAAAEAAAFxgEDAAMAAAABAAEAAAEGAAMAAAABAAIAAAERAAQAAAABAAAACAES +AAMAAAABAAEAAAEVAAMAAAABAAQAAAEWAAMAAAABABIAAAEXAAQAAAABAAAFEAEcAAMAAAABAAEAAAFS +AAMAAAABAAEAAAFTAAMAAAAEAAAFzodzAAcAAAwYAAAF1gAAAAAACAAIAAgACAABAAEAAQABAAAMGGFw +cGwCAAAAbW50clJHQiBYWVogB9YABAADABMALAASYWNzcEFQUEwAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAPbWAAEAAAAA0y1hcHBsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAOclhZWgAAASwAAAAUZ1hZWgAAAUAAAAAUYlhZWgAAAVQAAAAUd3RwdAAAAWgAAAAUY2hhZAAA +AXwAAAAsclRSQwAAAagAAAAOZ1RSQwAAAbgAAAAOYlRSQwAAAcgAAAAOdmNndAAAAdgAAAMSbmRpbgAA +BOwAAAY+ZGVzYwAACywAAABkZHNjbQAAC5AAAAAubW1vZAAAC8AAAAAoY3BydAAAC+gAAAAtWFlaIAAA +AAAAAF1KAAA0kQAACCVYWVogAAAAAAAAdCAAALRgAAAjPVhZWiAAAAAAAAAlbAAAFyoAAKfDWFlaIAAA +AAAAAPNSAAEAAAABFs9zZjMyAAAAAAABDEIAAAXe///zJgAAB5IAAP2R///7ov///aMAAAPcAADAbGN1 +cnYAAAAAAAAAAQHNAABjdXJ2AAAAAAAAAAEBzQAAY3VydgAAAAAAAAABAc0AAHZjZ3QAAAAAAAAAAAAD +AQAAAQACBAUGBwkKCw0ODxASExQWFxgaGxweHyAiIyQmJygpKywtLzAxMjM1Njc4OTs8PT5AQUJDREZH +SElKS0xOT1BRUlNUVVZXWFlaW1xdXl9hYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8fX5/gIGCg4SF +hoeIiYqLjI2Oj5CRkpOUlZaXmJmam5ydnZ6foKGio6SlpqanqKmqq6ytra6vsLGysrO0tba3uLi5uru8 +vL2+v8DBwcLDxMXGxsfIycrKy8zNzs7P0NHS0tPU1dbW19jZ2drb3Nzd3t/g4eLi4+Tl5ufo6enq6+zt +7u/w8fHy8/T19vf4+fr7/P3+/v8AAgMEBQYHCAkKCwwNDg8QERITFBUWFxgZGhscHR8gISIjJCUnKCkq +Ky0uLzAxMzQ1Njc4OTo7PD0/QEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaWltcXV5fYGFiY2RlZmdo +aWprbG1ub3BxcnN0dXZ3d3h5ent8fH1+f4CBgoKDhIWGh4iIiYqLjI2Oj5CRkpOUlJWWl5iZmpucnZ2e +n6ChoqOkpaamp6ipqqusra6vsLCxsrO0tba3uLm5uru8vb6/wMHCw8TFx8jJysvMzc7P0NDR0tPU1dbX +2Nna29ze3+Dh4uPk5ebn6err7O3u7/Hy8/T19vf5+vv8/f7/AAIDAwQFBgcICQoKCwwNDg8QERITFBUW +FxgZGhscHR4fICEiIyQlJicoKSorLC0uLzAxMjM0NTY3ODg5Ojs8PT4+P0BBQkNDREVGR0hJSUpLTE1O +Tk9QUVJSU1RVVVZXWFhZWltbXF1eXl9gYWFiY2RkZWZnZ2hpaWprbGxtbm5vcHFxcnNzdHV1dnd4eHl6 +ent8fH1+fn+AgYGCg4SEhYaHiImJiouMjY6Oj5CRkpOTlJWWl5iZmZqbnJ2en6ChoqOkpaanqKmqq6yt +rq+xsrO0tba3uLq7vL2+wMHDxMbHycrMzs/R0tTW19nb3d7g4uTm6Ors7vDy9Pb4+vz+/wAAbmRpbgAA +AAAAAAY2AACXGgAAVjoAAFPKAACJ3gAAJ8IAABaoAABQDQAAVDkAAiuFAAIZmQABeFEAAwEAAAIAAAAA +AAEABgANABcAIwAxAEAAUgBlAHsAkwCrAMUA4gD/AR8BPwFhAYUBqgHQAfgCIAJLAncCpQLSAwIDMwNl +A5gDzgQFBD0EdQSvBOsFKQVnBacF6AYqBm4GtQb8B0UHkgfkCDkIkAjnCT4JmAn0ClAKrQsLC2sLygwq +DIwM8Q1XDcAOKA6SDv4PbA/bEE0QxBE7EbQSMRKwEzITuRREFNAVYBXxFocXHhfAGGIZBBmsGlQa+RuU +HC4czh1yHhQeux9jIA0gvCFoIhkizyOJJEEk+SW6JnknOygFKMspkypiKzIsASzXLawuhy9gMD4xGzH8 +MtszvzSgNYY2cjdcOEw5OTorOxs8CD0EPfU+6z/nQOFB2ELUQ9VE00XcRttH5EjxSgBLCUwdTTFOUE9v +UI9Rt1LdVAVVNlZsV6VY4FohW21ct135X09goGH0Y0tkqGYFZ19oxGova5ptCG54b/BxbnLsdG119Xd/ +eQh6knwqfcV/W4D4gpSEO4Xih4CJKorYjIqOOY/jkZuTWJUOlsyYiZpSnB6d4Z+soX+jWqUvpxOo+6rj +rMuuwLC4sra0rra0uL+60LzfvwDBHcLdxLXGhchYyi7MCs3lz7rRmtOA1WPXR9kq2xPc/97s4M/iveSn +5o3obupT7ELuLPAM8fLz0PW396H5f/tZ/T3//wAAAAEAAwALABYAJQA3AE0AZQCBAJ8AwQDlAQsBNQFh +AZABwQH1AisCZAKfAtwDHANfA6MD6gQ0BH8EzQT1BR0FcAXEBhsGdAbPBy0HXAeMB+4IUgi4CSAJVAmK +CfYKZArVC0cLgQu8DDIMqw0mDaIOIQ6hDyQPqRAvELgQ/RFDEc8SXRLuE4AUFRSrFUMV3RZ5FxcXthhY +GPwZoRpIGvEbnBxJHPgdqB5bHw8fxSB9ITch8iKwJDAk8yW3Jn4nRigQKNwpqSp5K0osHCzxLccuoC95 +MFUxMzISMvMz1TS5NaA2hzdxOFw5STo4Oyg8Gj4DPvs/9EDuQepD6ETpRexG8Uf3SP9LFEwhTTBOQE9S +UGZSklOrVMVV4Vb/WB5ZP1phW4Vcq13SXvthUmJ/Y69k4GYSZ0dofGm0au1tZG6ib+FxInJlc6l073Y2 +d396FXtjfLJ+A39VgKmB/4NWhK+GCYjCiiGLgYzjjkePrJESknuT5Ja8mCuZm5sMnH+d9J9qoOGiWqPV +pVGmz6eOqE6pzqtRrNSuWq/gsWmy8rR+tgu5Kbq6vE294b93wQ7Cp8RBxd3He8kZyrrLisxbzf/Po9FK +0vHUm9ZF1/HZn9tO3Cbc/96x4GTiGePQ5YjnQegf6Pzquex27jbv9/G583z0X/VC9wj40Pqa/GX+Mf// +AAAAAQADAAsAJQA3AE0AZQCBAJ8AwQELATUBYQGQAcEB9QIrAmQCnwLcAxwDXwOjA+oENAR/BM0FHQVw +BcQGGwZ0Bs8HLQeMB+4IUgi4CSAJign2CmQK1QtHC7wMMgyrDSYNog4hDqEPJA+pEC8QuBFDEl0S7hOA +FBUUqxVDFnkXFxe2GFgY/BpIGvEbnBxJHPgdqB8PH8UgfSE3IfIjbyQwJPMltydGKBAo3Cp5K0osHC3H +LqAveTEzMhIy8zS5NaA2hzhcOUk6ODwaPQ4+Az/0QO5C6EPoROlG8Uf3SglLFEwhTkBPUlF7UpJUxVXh +Vv9ZP1phXKtd0mAlYVJjr2TgZhJofGm0au1tZG6ib+FxInJldO92Nnd/eMl6FXyyfgN/VYCpgf+Er4YJ +h2WIwoohi4GOR4+skRKSe5PklVCWvJgrmZubDJx/nfSfaqDholqj1aVRps+oTqnOq1Gs1K2Xrlqv4LFp +svK0frYLt5m5Kbnxurq8Tb3hv3fBDsHawqfEQcUPxd3He8hKyRnKusuKzFvN/87Rz6PQdtFK0vHTxtSb +1kXXG9fx2MjZn9tO3Cbc/93Y3rHfiuBk4hni9ePQ5KzliOZk50HoH+j86drqueuX7HbtVu427xbv9/DX +8bnymvN89F/1QvYl9wj37PjQ+bX6mvt//GX9S/4x//8AAGRlc2MAAAAAAAAACkNvbG9yIExDRAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAABtbHVjAAAAAAAAAAEAAAAMZW5VUwAAABIAAAAcAEMAbwBsAG8AcgAgAEwAQwBE +AABtbW9kAAAAAAAABhAAAJxOAAAAAL5zkQAAAAAAAAAAAAAAAAAAAAAAdGV4dAAAAABDb3B5cmlnaHQg +QXBwbGUgQ29tcHV0ZXIsIEluYy4sIDIwMDUAAAAAA + + + + + + + + 400 + 75 + + + {157, 18} + {4, 2} + 1151868928 + NSActionCell + + 67108864 + 0 + Radio + + 1211912448 + 0 + + 549453824 + {18, 18} + + YES + + YES + + + + TU0AKgAABRgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAwAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAADwRERGLJycnySsrK/A1NTXw +IyMjyRwcHIsJCQk8AAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFFRUVdVBQUOCoqKj/ +29vb//n5+f/6+vr/2tra/6qqqv9UVFTgHx8fdQAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUZGRl5 +dXV198PDw//8/Pz////////////////////////////U1NT/fHx89yUlJXkAAAAFAAAAAAAAAAAAAAAA +AAAAAxEREUZqamrmtbW1/+3t7f/+/v7//v7+//7+/v/9/f3//f39//39/f/39/f/xMTE/3d3d+YZGRlG +AAAAAwAAAAAAAAAAAAAACkJCQqGtra3/xsbG/+vr6//y8vL/9fX1//X19f/z8/P/9fX1//Ly8v/u7u7/ +0tLS/6+vr/9KSkqhAAAACgAAAAAAAAAAAAAAF3h4eN2/v7//z8/P/93d3f/q6ur/7+/v/+/v7//w8PD/ +7e3t/+3t7f/i4uL/zs7O/8XFxf98fHzdAAAAFwAAAAAAAAADAAAAJKSkpPjOzs7/2dnZ/+Dg4P/i4uL/ +5eXl/+bm5v/n5+f/5eXl/+Li4v/e3t7/2tra/9DQ0P+srKz4AAAAJAAAAAMAAAADAAAALrCwsPrW1tb/ +3t7e/+Tk5P/p6en/6+vr/+zs7P/p6en/6+vr/+fn5//k5OT/4ODg/9nZ2f+zs7P6AAAALgAAAAMAAAAD +AAAALp2dnezg4OD/5eXl/+rq6v/u7u7/8PDw//Dw8P/x8fH/8PDw/+7u7v/q6ur/5ubm/+Hh4f+ZmZns +AAAALgAAAAMAAAADAAAAJG5ubs/l5eX/6enp/+/v7//y8vL/9vb2//r6+v/5+fn/9/f3//b29v/x8fH/ +6+vr/+Tk5P9ra2vPAAAAJAAAAAMAAAAAAAAAFy4uLpPCwsL67Ozs//Pz8//5+fn//v7+//7+/v/+/v7/ +/v7+//v7+//19fX/8PDw/8LCwvosLCyTAAAAFwAAAAAAAAAAAAAACgAAAENfX1/S5OTk/vn5+f/+/v7/ +///////////////////////////8/Pz/5ubm/l9fX9IAAABDAAAACgAAAAAAAAAAAAAAAwAAABcAAABl +YmJi3NLS0v3////////////////////////////////V1dX9ZGRk3AAAAGUAAAAXAAAAAwAAAAAAAAAA +AAAAAAAAAAUAAAAfAAAAZTMzM8KAgIDwv7+//O3t7f/t7e3/v7+//ICAgPAzMzPCAAAAZQAAAB8AAAAF +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAFwAAAEMAAAB3AAAAnwAAALMAAACzAAAAnwAAAHcAAABD +AAAAFwAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAoAAAAXAAAAJAAAAC4AAAAu +AAAAJAAAABcAAAAKAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAwAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQEAAAMAAAABABIAAAEB +AAMAAAABABIAAAECAAMAAAAEAAAFugEDAAMAAAABAAEAAAEGAAMAAAABAAIAAAERAAQAAAABAAAACAES +AAMAAAABAAEAAAEVAAMAAAABAAQAAAEWAAMAAAABABIAAAEXAAQAAAABAAAFEAEcAAMAAAABAAEAAAFS +AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA + + + + + + + + 400 + 75 + + + + + + + + + 12 + + YES + + + 274 + + YES + + + 268 + {{243, 105}, {629, 16}} + + + + _NS:779 + YES + + -2080112384 + 262144 + + _NS:779 + + 5 + 0.0 + 0.0 + 0.0 + 2 + 1 + YES + NO + + NO + + + + 256 + {{15, 107}, {79, 13}} + + + + YES + + 67108864 + 71303168 + x264 Preset: + + + + + + NO + + + + 256 + {{15, 86}, {79, 13}} + + + + YES + + 67108864 + 71303168 + x264 Tune: + + + + + + NO + + + + 256 + {{15, 65}, {79, 13}} + + + + YES + + 67108864 + 71303168 + H.264 Profile: + + + + + + NO + + + + 256 + {{15, 43}, {79, 13}} + + + + YES + + 67108864 + 71303168 + H.264 Level: + + + + + + NO + + + + 268 + {{98, 84}, {126, 15}} + + + + _NS:868 + YES + + -2076180416 + 264192 + + _NS:868 + + 109199360 + 129 + + + 400 + 75 + + + Item 1 + + 1048576 + 2147483647 + 1 + + + _popUpItemAction: + + + YES + + OtherViews + + YES + + + + Item 2 + + 1048576 + 2147483647 + + + _popUpItemAction: + + + + + Item 3 + + 1048576 + 2147483647 + + + _popUpItemAction: + + + + + + 3 + YES + YES + 1 + + NO + + + + 268 + {{98, 63}, {126, 15}} + + + + _NS:868 + YES + + -2076180416 + 264192 + + _NS:868 + + 109199360 + 129 + + + 400 + 75 + + + Item 1 + + 1048576 + 2147483647 + 1 + + + _popUpItemAction: + + + YES + + OtherViews + + YES + + + + Item 2 + + 1048576 + 2147483647 + + + _popUpItemAction: + + + + + Item 3 + + 1048576 + 2147483647 + + + _popUpItemAction: + + + + + + 3 + YES + YES + 1 + + NO + + + + 268 + {{98, 41}, {126, 15}} + + + + _NS:868 + YES + + -2076180416 + 264192 + + _NS:868 + + 109199360 + 129 + + + 400 + 75 + + + Item 1 + + 1048576 + 2147483647 + 1 + + + _popUpItemAction: + + + YES + + OtherViews + + YES + + + + Item 2 + + 1048576 + 2147483647 + + + _popUpItemAction: + + + + + Item 3 + + 1048576 + 2147483647 + + + _popUpItemAction: + + + + + + 3 + YES + YES + 1 + + NO + + + + 268 + {{240, 84}, {108, 18}} + + + + _NS:771 + YES + + 67108864 + 131072 + Fast Decode + + _NS:771 + + 1211912448 + 2 + + + + + 200 + 25 + + NO + + + + 256 + {{240, 65}, {110, 13}} + + + + YES + + 67108864 + 71303168 + Additional Options: + + + + + + NO + + + + 268 + {{355, 43}, {517, 36}} + + + + _NS:354 + {250, 750} + YES + + -1805647871 + 272760832 + + + _NS:354 + + YES + + + + NO + + + + 256 + {{96, 107}, {129, 13}} + + + + YES + + 67108864 + 4194304 + + + + + + + NO + + + + 268 + {{20, 127}, {209, 18}} + + + + _NS:771 + YES + + 67108864 + 131072 + Use x264 Advanced Options Panel + + _NS:771 + + 1211912448 + 2 + + + + + 200 + 25 + + NO + + + + 256 + {{12, 6}, {863, 29}} + + + + YES + + 67108864 + 4194304 + x264 Unparse: + + + + + + NO + + + {{1, 1}, {890, 155}} + + + + _NS:21 + + + {{14, 46}, {892, 157}} + + + + _NS:18 + {0, 0} + + 67108864 + 0 + x264 Presets + + + + 3 + MCAwLjgwMDAwMDAxMTkAA + + + + 1 + 0 + 0 + NO + + + {{10, 25}, {920, 305}} + + + + + Video + + + + + 2 + + + 256 + + YES + + + 256 + + YES + + + 268 + + YES + + + 2304 + + YES + + + 256 + {884, 236} + + + YES + NO + YES + + + 256 + {884, 17} + + + + + + + -2147483392 + {{-26, 0}, {16, 17}} + + + + + YES + + track + 323 + 40 + 1000 + + 75497536 + 2048 + Track + + + 3 + MC4zMzMzMzI5OQA + + + 6 + System + headerTextColor + + + + + -2076180416 + 133120 + + + -2038284288 + 129 + + LucidaGrande + 11 + 16 + + + + 400 + 75 + + + Pop Up + + 1048576 + 2147483647 + 1 + + + _popUpItemAction: + + + YES + + OtherViews + + YES + + + + 3 + YES + YES + 1 + + 3 + YES + + + + codec + 141 + 10 + 3.4028229999999999e+38 + + 75497536 + 2048 + Codec + + + 6 + System + headerColor + + + + + + -2076180416 + 133120 + + + -2038284288 + 129 + + + + 400 + 75 + + + Pop Up + + 1048576 + 2147483647 + 1 + + + _popUpItemAction: + + + YES + + OtherViews + + YES + + + + 3 + YES + YES + 1 + + 3 + YES + YES + + + + mixdown + 129 + 10 + 3.4028229999999999e+38 + + 75497536 + 2048 + Mixdown + + + + + + -2076180416 + 133120 + + + -2038284288 + 129 + + + + 400 + 75 + + + Pop Up + + 1048576 + 2147483647 + 1 + + + _popUpItemAction: + + + YES + + OtherViews + + YES + + + + 3 + YES + YES + 1 + + 3 + YES + YES + + + + samplerate + 73 + 10 + 3.4028229999999999e+38 + + 75497536 + 2048 + Samplerate + + + + + + -2076180416 + 133120 + + + -2038284288 + 129 + + + + 400 + 75 + + + Pop Up + + 1048576 + 2147483647 + 1 + + + _popUpItemAction: + + + YES + + OtherViews + + YES + + + + 3 + YES + YES + 1 + + 3 + YES + YES + + + + bitrate + 72 + 10 + 3.4028229999999999e+38 + + 75497536 + 2048 + Bitrate + + + + + + -2076180416 + 133120 + + + -2038284288 + 129 + + + + 400 + 75 + + + Pop Up + + 1048576 + 2147483647 + 1 + + + _popUpItemAction: + + + YES + + OtherViews + + YES + + + + 3 + YES + YES + 1 + + 3 + YES + YES + + + + gain + 32 + 10 + 3.4028234663852886e+38 + + 75497536 + 134219776 + Gain + + + + + + -2080112384 + 131072 + + + 16 + -5 + 0.0 + 0.0 + 21 + 1 + YES + NO + 1 + + 3 + YES + YES + + + + gainText + 25 + 10 + 3.4028234663852886e+38 + + 75497536 + 2048 + + + + + + + 337641536 + 133120 + Text Cell + + + + 6 + System + controlBackgroundColor + + + + + 3 + YES + YES + + + + drc + 35 + 10 + 3.4028229999999999e+38 + + 75497536 + 134219776 + DRC + + + + + + -2080112384 + 131072 + + + 4 + 0.0 + 0.0 + 0.0 + 16 + 0 + YES + NO + 1 + + 3 + YES + YES + + + + drctext + 27 + 10 + 3.4028229999999999e+38 + + 75497536 + 2048 + + + + + + + 337641536 + 272761856 + Text + + + + + + 3 + YES + + + + 3 + 2 + + + 6 + System + gridColor + + 3 + MC41AA + + + 25 + 1379926016 + + + 4 + 15 + 0 + NO + 0 + 1 + + + {{1, 17}, {884, 236}} + + + + + 4 + + + + -2147483392 + {{-100, -100}, {15, 206}} + + + NO + + _doScroller: + 37 + 0.19473679999999999 + + + + -2147483392 + {{-100, -100}, {685, 15}} + + + NO + 1 + + _doScroller: + 0.57142859999999995 + + + + 2304 + + YES + + + {{1, 0}, {884, 17}} + + + + + 4 + + + + {{17, 17}, {886, 254}} + + + 133650 + + + + + QSAAAEEgAABB2AAAQdgAAA + 0.25 + 4 + 1 + + + + 268 + {{16, 282}, {116, 16}} + + + YES + + 67108864 + 134479872 + Add All Tracks + + + -2038284288 + 129 + + + 200 + 25 + + NO + + + + 12 + + YES + + + 274 + + YES + + + 268 + {{85, 8}, {41, 18}} + + + _NS:771 + YES + + -2080374784 + 262144 + MP3 + + _NS:771 + + 1211912448 + 2 + + + + + 200 + 25 + + NO + + + + 268 + {{130, 8}, {47, 18}} + + + _NS:771 + YES + + -2080374784 + 262144 + AAC + + _NS:771 + + 1211912448 + 2 + + + + + 200 + 25 + + NO + + + + 268 + {{179, 8}, {47, 18}} + + + _NS:771 + YES + + -2080374784 + 262144 + AC3 + + _NS:771 + + 1211912448 + 2 + + + + + 200 + 25 + + NO + + + + 268 + {{226, 8}, {48, 18}} + + + _NS:771 + YES + + -2080374784 + 262144 + DTS + + _NS:771 + + 1211912448 + 2 + + + + + 200 + 25 + + NO + + + + 268 + {{271, 8}, {58, 18}} + + + _NS:771 + YES + + -2080374784 + 262144 + DTS-HD + + _NS:771 + + 1211912448 + 2 + + + + + 200 + 25 + + NO + + + + 268 + {{442, 8}, {100, 15}} + + + _NS:868 + YES + + -2076180416 + 264192 + + _NS:868 + + 109199360 + 129 + + + 400 + 75 + + + AC3 (ffmpeg) + + 1048576 + 2147483647 + 1 + + + _popUpItemAction: + + + YES + + OtherViews + + YES + + + + Item 2 + + 1048576 + 2147483647 + + + _popUpItemAction: + + + + + Item 3 + + 1048576 + 2147483647 + + + _popUpItemAction: + + + + + + 1 + YES + YES + 2 + + NO + + + + 264 + {{2, -7}, {78, 28}} + + + YES + + 67108864 + 71565312 + Auto Passthru: + + + + + + NO + + + + 264 + {{354, 7}, {86, 14}} + + + YES + + 67108864 + 71565312 + Passthru Fallback: + + + + + + NO + + + {{1, 1}, {552, 29}} + + + _NS:21 + + + {{349, 275}, {554, 31}} + + + _NS:18 + {0, 0} + + 67108864 + 0 + Auto Passthru + + + + 3 + MCAwLjgwMDAwMDAxMTkAA + + + + 1 + 0 + 0 + NO + + + {{0, -3}, {920, 305}} + + + + + {{10, 25}, {920, 305}} + + + Audio + + + + + 3 + + + 256 + + YES + + + 268 + + YES + + + 2304 + + YES + + + 256 + {884, 241} + + YES + NO + YES + + + 256 + {884, 17} + + + + + + -2147483392 + {{-26, 0}, {16, 17}} + + + + YES + + track + 323 + 40 + 1000 + + 75497536 + 2048 + Track + + + 3 + MC4zMzMzMzI5OQA + + + + + -2076180416 + 264192 + + + 100679680 + 129 + + + 400 + 75 + + + Pop Up + + 1048576 + 2147483647 + 1 + + + _popUpItemAction: + + + YES + + OtherViews + + YES + + + + YES + YES + 2 + + 3 + YES + + + + forced + 75 + 10 + 3.4028229999999999e+38 + + 75497536 + 134219776 + Forced Only + + + + + + 67108864 + 131072 + Check + + + 1215582464 + 130 + + + + + 200 + 25 + + 3 + YES + YES + + + + burned + 65 + 10 + 3.4028229999999999e+38 + + 75497536 + 134219776 + Burned In + + + + + + 67108864 + 131072 + Check + + + 1215582464 + 130 + + + + + 200 + 25 + + 3 + YES + YES + + + + default + 77 + 10 + 3.4028229999999999e+38 + + 75497536 + 134219776 + Default + + + + + + 67108864 + 131072 + Check + + + 1215582464 + 130 + + + + + 200 + 25 + + 3 + YES + YES + + + + srt_lang + 148 + 10 + 3.4028229999999999e+38 + + 75497536 + 2048 + Srt Language + + + + + + -2076180416 + 133120 + + + 100679680 + 129 + + + 400 + 75 + + + Pop Up + + 1048576 + 2147483647 + 1 + + + _popUpItemAction: + + + YES + + OtherViews + + YES + + + + 3 + YES + YES + 1 + + 3 + YES + YES + + + + srt_charcode + 104 + 10 + 3.4028229999999999e+38 + + 75497536 + 2048 + Srt Char Code + + + + + + -2076180416 + 133120 + + + 100679680 + 129 + + + 400 + 75 + + + Pop Up + + 1048576 + 2147483647 + 1 + + + _popUpItemAction: + + + YES + + OtherViews + + YES + + + + 3 + YES + YES + 1 + + 3 + YES + YES + + + + srt_offset + 71 + 10 + 3.4028229999999999e+38 + + 75497536 + 2048 + Srt Offset + + + + + + 337641536 + 272630784 + Text + + + + + + 3 + YES + YES + + + + 3 + 2 + + + 17 + 1379926016 + + + 4 + 15 + 0 + NO + 0 + 1 + + + {{1, 17}, {884, 241}} + + + + + 4 + + + + -2147483392 + {{-100, -100}, {15, 206}} + + NO + + _doScroller: + 37 + 0.19473679999999999 + + + + -2147483392 + {{-100, -100}, {685, 15}} + + NO + 1 + + _doScroller: + 0.57142859999999995 + + + + 2304 + + YES + + + {{1, 0}, {884, 17}} + + + + + 4 + + + + {{17, 17}, {886, 259}} + + + 133650 + + + + + QSAAAEEgAABBmAAAQZgAAA + 0.25 + 4 + 1 + + + + 268 + {{16, 283}, {116, 16}} + + YES + + 67108864 + 134479872 + Add External SRT ... + + + -2038284288 + 129 + + + 200 + 25 + + NO + + + {{10, 25}, {920, 305}} + + Subtitles + + + + + 5 + + + 256 + + YES + + + 256 + + YES + + + 274 + {907, 290} + + + + {{7, 8}, {907, 290}} + + + {0, 0} + + 67108864 + 0 + Box + + + + 3 + MCAwLjgwMDAwMDAxAA + + + + 0 + 3 + 0 + NO + + + {{10, 25}, {920, 305}} + + + Advanced + + + + + 4 + + + 256 + + YES + + + 256 + + YES + + + 2304 + + YES + + + 256 + {869, 242} + + + YES + NO + YES + + + 256 + {869, 17} + + + + + + + 256 + {{870, 0}, {16, 17}} + + + + + YES + + 1 + 91 + 40 + 1000 + + 75497536 + 2048 + Chapter + + + 3 + MC4zMzMzMzI5OQA + + + + + 337641536 + 2048 + Text Cell + + + + + + 3 + YES + + + + 2 + 772 + 77.217290000000006 + 1000 + + 75497536 + 2048 + Chapter Title + + + + + + 337641536 + 2048 + Text Cell + + + + + + 3 + YES + YES + + + + 3 + 2 + + + 17 + -700448768 + + + 4 + 15 + 0 + YES + 0 + 1 + + + {{1, 17}, {869, 242}} + + + + + 4 + + + + 256 + {{870, 17}, {15, 242}} + + NO + + _doScroller: + 0.9736842 + + + + -2147483392 + {{-100, -100}, {488, 15}} + + + NO + 1 + + _doScroller: + 0.99047620000000003 + + + + 2304 + + YES + + + {{1, 0}, {869, 17}} + + + + + 4 + + + + {{17, 17}, {886, 260}} + + + 133138 + + + + + AAAAAAAAAABBmAAAQZgAAA + 0.25 + 4 + 1 + + + + 256 + {{14, 283}, {151, 16}} + + + YES + + 67108864 + 131072 + Create chapter markers + + + 1211912448 + 2 + + + + 200 + 25 + + NO + + + + 268 + {{187, 283}, {107, 16}} + + YES + + 67108864 + 134479872 + Import Chapters ... + + + -2038284288 + 129 + + + 200 + 25 + + NO + + + + 268 + {{307, 283}, {106, 16}} + + YES + + 67108864 + 134479872 + Export Chapters ... + + + -2038284288 + 129 + + + 200 + 25 + + NO + + + {{10, 25}, {920, 305}} + + + Chapters + + + + + + + 134217728 + YES + YES + + YES + + + + + + 268 + {{20, 530}, {45, 14}} + + + + YES + + 67108864 + 4325376 + Source: + + LucidaGrande-Bold + 11 + 3357 + + + + + + NO + + + + 264 + {{17, 501}, {35, 14}} + + + + YES + + 67108864 + 71303168 + Title: + + + + + + NO + + + + 264 + {{55, 501}, {323, 15}} + + + + YES + + -2076180416 + 263168 + + + 109199360 + 1 + + LucidaGrande + 9 + 16 + + + + + + 400 + 75 + + + + + 1048576 + 2147483647 + 1 + + + _popUpItemAction: + + + YES + + + OtherViews + + + YES + + + + 3 + YES + YES + 1 + + NO + + + + 264 + {{483, 500}, {77, 15}} + + + + YES + + -2076180416 + 263168 + + + 109199360 + 1 + + + + + + 400 + 75 + + YES + + + OtherViews + + + YES + + + -1 + 3 + YES + YES + 1 + + NO + + + + 264 + {{385, 498}, {46, 17}} + + + + YES + + 67108864 + 71303168 + Angle: + + + + + + NO + + + + 264 + {{433, 500}, {41, 15}} + + + + YES + + -2076180416 + 263168 + + + 109199360 + 1 + + + + + + 400 + 75 + + + + + 1048576 + 2147483647 + 1 + + + _popUpItemAction: + + + YES + + + OtherViews + + + YES + + + + 3 + YES + YES + 1 + + NO + + + + 264 + {{5, 444}, {47, 17}} + + + + YES + + 67108864 + 71303168 + File: + + + + + + NO + + + + 264 + {{751, 501}, {57, 14}} + + + + YES + + 67108864 + 71303168 + Duration: + + + + + + NO + + + + 264 + {{808, 501}, {79, 14}} + + + + YES + + 67108864 + 4194304 + + + + + 1 + MC43NjYzMDQzNyAtMCAwIDAAA + + + + NO + + + + 264 + {{20, 476}, {70, 14}} + + + + YES + + 67108864 + 4325376 + Destination + + + + + + NO + + + + 264 + {{76, 388}, {177, 22}} + + + + YES + + -2076180416 + 132096 + + + 109199360 + 1 + + + + + + 400 + 75 + + + + + 1048576 + 2147483647 + 1 + + + _popUpItemAction: + + + YES + + OtherViews + + YES + + + + 3 + YES + YES + 1 + + NO + + + + 264 + {{755, 440}, {90, 28}} + + + + YES + + 67108864 + 134348800 + Browse… + + + -2038284288 + 1 + + + + + + 200 + 25 + + NO + + + + 264 + {{98, 480}, {842, 5}} + + + + {0, 0} + + 67108864 + 0 + Box + + + + 3 + MCAwLjgwMDAwMDAxAA + + + 3 + 2 + 0 + NO + + + + 264 + {{70, 530}, {309, 14}} + + + + YES + + 69206081 + 4327936 + + + + + 1 + MSAxIDEAA + + + + NO + + + + 264 + {{56, 445}, {684, 19}} + + + + YES + + -1804599231 + 4326400 + + + + YES + + + + NO + + + + 264 + {{571, 485}, {54, 16}} + + + + YES + + -1804599231 + 71566336 + + + + YES + + + + NO + + + + 264 + {{628, 485}, {54, 16}} + + + + YES + + -1804599231 + 71566336 + + + + YES + + + + NO + + + + 264 + {{686, 485}, {54, 16}} + + + + YES + + -1804599231 + 4457472 + + + + YES + + + + NO + + + + 264 + {{748, 485}, {54, 16}} + + + + YES + + -1804599231 + 4457472 + + + + YES + + + + NO + + + + 264 + {{20, 420}, {96, 14}} + + + + YES + + 67108864 + 4325376 + Output Settings: + + + + + + NO + + + + 264 + {{294, 424}, {646, 5}} + + + + {0, 0} + + 67108864 + 0 + Box + + + + 3 + MCAwLjgwMDAwMDAxAA + + + 3 + 2 + 0 + NO + + + + 264 + {{124, 420}, {162, 14}} + + + + YES + + 67108864 + 272629760 + + + + + + + NO + + + + 264 + {{731, 15}, {218, 14}} + + + + YES + + 67108864 + 71434240 + + + + + + + NO + + + + 264 + {{21, 393}, {53, 14}} + + + + YES + + 67108864 + 71303168 + Format: + + + + + + NO + + + + 268 + {{386, 533}, {554, 5}} + + + + {0, 0} + + 67108864 + 0 + Box + + + + 3 + MCAwLjgwMDAwMDAxAA + + + 3 + 2 + 0 + NO + + + + -2147483380 + {{385, 532}, {562, 12}} + + + + 16648 + 100 + + + + 264 + {{399, 391}, {141, 18}} + + + + YES + + 67108864 + 131072 + Web optimized + + + 1211912448 + 2 + + + + + 200 + 25 + + NO + + + + 264 + {{283, 391}, {102, 18}} + + + + YES + + 67108864 + 131072 + Large file size + + + 1211912448 + 2 + + + + + 200 + 25 + + NO + + + + 264 + {{541, 391}, {141, 18}} + + + + YES + + 67108864 + 131072 + iPod 5G support + + + 1211912448 + 2 + + + + + 200 + 25 + + NO + + + + 264 + {{627, 500}, {56, 15}} + + + + YES + + 67108864 + 138412032 + through + + + + + + NO + + + + 264 + {{570, 500}, {57, 15}} + + + + YES + + -2076180416 + 263168 + + + 109199360 + 1 + + + + + + 400 + 75 + + + + + 1048576 + 2147483647 + 1 + + + _popUpItemAction: + + + YES + + + OtherViews + + + YES + + + + 3 + YES + YES + 1 + + NO + + + + 264 + {{685, 500}, {57, 15}} + + + + YES + + -2076180416 + 263168 + + + 109199360 + 1 + + + + + + 400 + 75 + + + + + 1048576 + 2147483647 + 1 + + + _popUpItemAction: + + + YES + + + OtherViews + + + YES + + + + 3 + YES + YES + 1 + + NO + + + {959, 558} + + + + + {{0, 0}, {1920, 1178}} + {213, 129} + {10000000000000, 10000000000000} + YES + + + MainMenu + + YES + + + HandBrake + + 1048576 + 2147483647 + + + submenuAction: + + HandBrake + + YES + + + About HandBrake + + 2147483647 + + + + + + Check for Updates… + + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Preferences... + , + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Hide HandBrake + h + 1048576 + 2147483647 + + + + + + Hide Others + h + 1572864 + 2147483647 + + + + + + Show All + + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Quit HandBrake + q + 1048576 + 2147483647 + + + + + _NSAppleMenu + + + + + File + + 1048576 + 2147483647 + + + submenuAction: + + + File + + + YES + + + Open Source… + o + 1048576 + 2147483647 + + + + + + Open Source (Title Specific) ... + + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Close + w + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Add To Queue + b + 1048576 + 2147483647 + + + + + + Add All Titles To Queue ... + b + 1048576 + 2147483647 + + + + + + Start Encoding + s + 1048576 + 2147483647 + + + + + + Pause Encoding + p + 1048576 + 2147483647 + + + + + + + + + Edit + + 1048576 + 2147483647 + + + submenuAction: + + + Edit + + + YES + + + Undo + z + 1048576 + 2147483647 + + + + + + Redo + Z + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Cut + x + 1048576 + 2147483647 + + + + + + Copy + c + 1048576 + 2147483647 + + + + + + Paste + v + 1048576 + 2147483647 + + + + + + Paste and Match Style + V + 1572864 + 2147483647 + + + + + + Delete + + 1048576 + 2147483647 + + + + + + Select All + a + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Find + + 1048576 + 2147483647 + + + submenuAction: + + + Find + + + YES + + + Find… + f + 1048576 + 2147483647 + + + 1 + + + + Find Next + g + 1048576 + 2147483647 + + + 2 + + + + Find Previous + G + 1048576 + 2147483647 + + + 3 + + + + Use Selection for Find + e + 1048576 + 2147483647 + + + 7 + + + + Jump to Selection + j + 1048576 + 2147483647 + + + + + + + + + Spelling + + 1048576 + 2147483647 + + + submenuAction: + + Spelling + + YES + + + Spelling… + : + 1048576 + 2147483647 + + + + + + Check Spelling + ; + 1048576 + 2147483647 + + + + + + Check Spelling as You Type + + 1048576 + 2147483647 + + + + + + + + + Speech + + 1048576 + 2147483647 + + + submenuAction: + + Speech + + YES + + + Start Speaking + + 1048576 + 2147483647 + + + + + + Stop Speaking + + 1048576 + 2147483647 + + + + + + + + + + + + Presets + + 1048576 + 2147483647 + + + submenuAction: + + Presets + + YES + + + Update Built-in Presets + + 1048576 + 2147483647 + + + + + + Delete Built-in Presets + + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + New Preset ... + n + 1048576 + 2147483647 + + + + + + Export ... + + 2147483647 + + + + + + Import ... + + 2147483647 + + + + + + Select Default Preset + + 1048576 + 2147483647 + + + + + + + + + Window + + 1048576 + 2147483647 + + + submenuAction: + + + Window + + + YES + + + Minimize + m + 1048576 + 2147483647 + + + + + + Bring All to Front + + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + HandBrake + 1 + 1048576 + 2147483647 + + + + + + Queue + 2 + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Presets Drawer + t + 1048576 + 2147483647 + + + + + + Picture Settings + P + 1048576 + 2147483647 + + + + + + Preview Window + + 2147483647 + + + + + + Activity Window + D + 1048576 + 2147483647 + + + + + _NSWindowsMenu + + + + + Help + + 1048576 + 2147483647 + + + submenuAction: + + Help + + YES + + + HandBrake User Guide + ? + 1048576 + 2147483647 + + + + + + HandBrake Homepage + + 1048576 + 2147483647 + + + + + + HandBrake Forums + + 1048576 + 2147483647 + + + + + + + + _NSMainMenu + + + 3 + 2 + {{57, 765}, {300, 233}} + 1886912512 + + Panel + + NSPanel + + View + + + {213, 107} + + + 256 + + YES + + + 256 + + YES + + YES + Apple PDF pasteboard type + Apple PICT pasteboard type + Apple PNG pasteboard type + NSFilenamesPboardType + NeXT Encapsulated PostScript v1.2 pasteboard type + NeXT TIFF v4.0 pasteboard type + + + {{83, 82}, {134, 134}} + + YES + + 134217728 + 33554432 + + NSImage + HandBrake.icns + + 0 + 0 + 0 + NO + + NO + YES + + + + 256 + {{202, 12}, {84, 32}} + + YES + + 67108864 + 137887744 + Ahuh ! + + + -2038284288 + 1 + + Helvetica + 13 + 16 + + + DQ + 200 + 25 + + NO + + + + 256 + {{82, 60}, {134, 17}} + + YES + + 67108864 + 138412032 + Rip done ! + + + + + + NO + + + {300, 233} + + {{0, 0}, {1920, 1178}} + {213, 129} + {10000000000000, 10000000000000} + YES + + + + {240, 550} + {100, 50} + {280, 550} + 2 + 0.0 + 15 + + + + + + 256 + + YES + + + 274 + + YES + + + 2304 + + YES + + + 256 + {247, 506} + + YES + NO + YES + + + 256 + {{184, 0}, {16, 17}} + + + YES + + PresetName + 244 + 40 + 1000 + + 75497536 + 2048 + Presets + + + 3 + MC4zMzMzMzI5OQA + + + + + 337641536 + 2048 + Text Cell + + + + + + 1 + YES + YES + + + PresetName + YES + compare: + + + + 3 + 2 + + + 14 + 314572800 + + + 4 + 15 + 0 + YES + 0 + 1 + 12 + + + {{1, 1}, {247, 506}} + + + + + 4 + + + + 256 + {{248, 1}, {11, 506}} + + NO + 256 + + _doScroller: + 0.99770119999999995 + + + + -2147483392 + {{-100, -100}, {183, 15}} + + NO + 1 + + _doScroller: + 0.99456520000000004 + + + {{4, 31}, {260, 508}} + + + 133138 + + + + QSAAAEEgAABBgAAAQYAAAA + 0.25 + 4 + 1 + + + + 292 + {{27, 1}, {24, 23}} + + YES + + 67108864 + 0 + + + LucidaGrande-Bold + 13 + 2072 + + + -2030804992 + 34 + + NSImage + NSRemoveTemplate + + + + 400 + 75 + + NO + + + + 292 + {{4, 1}, {24, 23}} + + YES + + -2080374784 + 134217728 + + + + -2032902144 + 34 + + NSImage + NSAddTemplate + + + + 400 + 75 + + NO + + + + 292 + {{59, 1}, {33, 23}} + + YES + + 71303232 + 2048 + + + -2031075328 + 162 + + + 400 + 75 + + + YES + + + 1048576 + 2147483647 + 1 + + NSImage + NSActionTemplate + + + + _popUpItemAction: + + + YES + + Presets Action Menu + + YES + + + + Make Default + + 1048576 + 2147483647 + + + _popUpItemAction: + + + + + Update Built-in Presets + + 1048576 + 2147483647 + + + _popUpItemAction: + + + + + YES + 1 + YES + YES + 2 + + NO + + + {270, 550} + NSView + NSResponder + + + 1 + 2 + {{421, 536}, {338, 318}} + 1886912512 + Create A New Preset + NSPanel + + View + + + {338, 232} + + + 256 + + YES + + + 289 + {{239, 12}, {85, 32}} + + YES + + 67108864 + 134217728 + Add + + + -2038284288 + 1 + + LucidaGrande + 13 + 16 + + + DQ + 200 + 25 + + NO + + + + 289 + {{155, 12}, {84, 32}} + + YES + + 67108864 + 134217728 + Cancel + + + -2038284288 + 1 + + + Gw + 200 + 25 + + NO + + + + 266 + {{20, 264}, {298, 19}} + + YES + + -1804599231 + 272761856 + + + + YES + + + + NO + + + + 266 + {{128, 193}, {193, 22}} + + YES + + -2076180416 + 133120 + + + 109199360 + 1 + + + + + + 400 + 75 + + + Item1 + + 1048576 + 2147483647 + 1 + + + _popUpItemAction: + + + YES + + + OtherViews + + + YES + + + + Item2 + + 1048576 + 2147483647 + + + _popUpItemAction: + + + + + Item3 + + 1048576 + 2147483647 + + + _popUpItemAction: + + + + + 3 + YES + YES + 1 + + NO + + + + 268 + {{17, 286}, {114, 17}} + + YES + + 67108864 + 272760832 + UHJlc2V0IE5hbWU6Cg + + + + + + NO + + + + 268 + {{17, 217}, {91, 14}} + + YES + + 67108864 + 272760832 + Picture Settings: + + + + + + NO + + + + 268 + {{17, 100}, {114, 14}} + + YES + + 67108864 + 272760832 + Description: + + + + + + NO + + + + 274 + {{20, 51}, {298, 41}} + + YES + + -1805647871 + 272760832 + + + + YES + + + + NO + + + + 268 + {{27, 195}, {99, 14}} + + YES + + 67108864 + 71434240 + Use Picture Size: + + + + + + NO + + + + 268 + {{128, 142}, {24, 18}} + + YES + + -2080374784 + 131072 + + + + 1211912448 + 2 + + + + + 200 + 25 + + NO + + + + -2147483380 + {{17, 240}, {303, 18}} + + YES + + 67108864 + 131072 + Preset Folder ( if checked disregard below ) + + + 1211912448 + 2 + + + + + 200 + 25 + + NO + + + + 268 + {{113, 220}, {205, 5}} + + {0, 0} + + 67108864 + 0 + Box + + + + 3 + MCAwLjgwMDAwMDAxAA + + + 3 + 2 + 0 + NO + + + + 268 + {{12, 120}, {298, 5}} + + {0, 0} + + 67108864 + 0 + Box + + + + 3 + MCAwLjgwMDAwMDAxAA + + + 3 + 2 + 0 + NO + + + + 268 + {{17, 144}, {109, 15}} + + YES + + 67108864 + 71434240 + Use Picture Filters: + + + + + + NO + + + + 12 + + YES + + + 274 + + YES + + + 266 + {{11, 10}, {52, 16}} + + YES + + -1804599231 + 71566336 + + + + YES + + + + NO + + + + 268 + {{61, 10}, {29, 15}} + + YES + + 67108864 + 138543104 + X + + + + + + NO + + + + 266 + {{90, 10}, {52, 16}} + + YES + + -1804599231 + 4457472 + + + + YES + + + + NO + + + {155, 32} + + + + {{128, 163}, {155, 32}} + + {0, 0} + + 67108864 + 0 + Box + + + + 3 + MCAwLjgwMDAwMDAxMTkAA + + + + 0 + 0 + 0 + NO + + + {338, 318} + + {{0, 0}, {1920, 1178}} + {338, 254} + {10000000000000, 10000000000000} + YES + + + 1 + 2 + {{302, 989}, {392, 144}} + 1886912512 + SourceTitlePanel + + NSPanel + + + View + + + {213, 107} + + + 256 + + YES + + + 256 + {{96, 45}, {279, 38}} + + YES + + 67108864 + 272629760 + Source Path Here + + + + + + NO + + + + 256 + {{155, 106}, {26, 14}} + + YES + + 67108864 + 272629760 + for + + + + + + NO + + + + 256 + {{17, 106}, {104, 15}} + + YES + + 67108864 + 71303168 + Scan title number + + + + + + NO + + + + 256 + {{126, 105}, {24, 19}} + + YES + + -1804599231 + 138544128 + 0 + + + YES + + + + NO + + + + 256 + {{15, 13}, {80, 28}} + + YES + + 67108864 + 134348800 + Cancel + + + -2038284288 + 1 + + + + + + 200 + 25 + + NO + + + + 256 + {{290, 13}, {87, 28}} + + YES + + 67108864 + 134348800 + Open Title + + + -2038284288 + 1 + + + DQ + 200 + 25 + + NO + + + + 256 + {{17, 83}, {455, 19}} + + YES + + 67108864 + 4194304 + Note: (entering 0 or leaving blank will result in a full source scan) + + + + + + NO + + + + 256 + {{17, 69}, {77, 14}} + + YES + + 67108864 + 272629760 + Source Path: + + + + + + NO + + + + 256 + {{177, 106}, {198, 14}} + + YES + + 67108864 + 272629760 + Small System Font Text + + + + + + NO + + + {392, 144} + + {{0, 0}, {1920, 1178}} + {213, 129} + {10000000000000, 10000000000000} + YES + + + HBController + + + SUUpdater + + + HBAudioController + + + + YES + keyAudioTrackName + + YES + + YES + YES + YES + YES + YES + + + + YES + tracks + tracks.keyAudioTrackName + track + enabled + mixdownEnabled + drc + codecs + codecs.keyAudioCodecName + codec + mixdowns + mixdowns.keyAudioMixdownName + mixdown + sampleRates + sampleRates.keyAudioSampleRateName + sampleRate + bitRates + bitRates.keyAudioBitrateName + bitRate + AC3Enabled + gain + PassThruEnabled + PassThruDisabled + bitrateEnabled + + YES + + YES + YES + YES + + + YES + + + + 256 + {125, 1} + + + + 256 + {125, 1} + + + + + YES + + + terminate: + + + + 139 + + + + delegate + + + + 247 + + + + hide: + + + + 972 + + + + hideOtherApplications: + + + + 975 + + + + arrangeInFront: + + + + 1194 + + + + performMiniaturize: + + + + 1195 + + + + performFindPanelAction: + + + + 1823 + + + + startSpeaking: + + + + 1824 + + + + toggleContinuousSpellChecking: + + + + 1825 + + + + undo: + + + + 1826 + + + + stopSpeaking: + + + + 1827 + + + + performFindPanelAction: + + + + 1828 + + + + redo: + + + + 1829 + + + + performFindPanelAction: + + + + 1830 + + + + cut: + + + + 1831 + + + + paste: + + + + 1832 + + + + pasteAsPlainText: + + + + 1833 + + + + selectAll: + + + + 1834 + + + + performFindPanelAction: + + + + 1835 + + + + copy: + + + + 1836 + + + + checkSpelling: + + + + 1837 + + + + centerSelectionInVisibleArea: + + + + 1838 + + + + showGuessPanel: + + + + 1839 + + + + delete: + + + + 1840 + + + + performClose: + + + + 2509 + + + + unhideAllApplications: + + + + 5281 + + + + delegate + + + + 433 + + + + fWindow + + + + 350 + + + + fStatusField + + + + 1238 + + + + fRipIndicator + + + + 1374 + + + + openHomepage: + + + + 1434 + + + + openForums: + + + + 1435 + + + + titlePopUpChanged: + + + + 1567 + + + + fSrcChapterStartPopUp + + + + 1568 + + + + fSrcChapterEndPopUp + + + + 1569 + + + + fDstBrowseButton + + + + 1578 + + + + browseFile: + + + + 1579 + + + + fDstFormatField + + + + 1583 + + + + fDstFormatPopUp + + + + 1584 + + + + fDstFile2Field + + + + 1585 + + + + fSrcDuration1Field + + + + 1589 + + + + fSrcDuration2Field + + + + 1590 + + + + fSrcDVD2Field + + + + 1591 + + + + fSrcTitleField + + + + 1592 + + + + fSrcTitlePopUp + + + + 1593 + + + + fDstFile1Field + + + + 1596 + + + + fVidBitrateField + + + + 1599 + + + + fVidEncoderPopUp + + + + 1602 + + + + fVidQualityField + + + + 1604 + + + + fVidQualitySlider + + + + 1606 + + + + fVidRateField + + + + 1607 + + + + fVidRatePopUp + + + + 1608 + + + + fVidTwoPassCheck + + + + 1611 + + + + formatPopUpChanged: + + + + 1614 + + + + chapterPopUpChanged: + + + + 1615 + + + + chapterPopUpChanged: + + + + 1616 + + + + qualitySliderChanged: + + + + 1617 + + + + fAddPresetPanel + + + + 1869 + + + + fPresetNewName + + + + 1875 + + + + closeAddPresetPanel: + + + + 1878 + + + + fPresetSelectedDisplay + + + + 1883 + + + + fPresetDrawer + + + + 1889 + + + + addUserPreset: + + + + 1907 + + + + addFactoryPresets: + + + + 1952 + + + + deleteFactoryPresets: + + + + 1953 + + + + showAddPresetPanel: + + + + 1956 + + + + openUserGuide: + + + + 1986 + + + + fCreateChapterMarkers + + + + 2004 + + + + fChapterTable + + + + 2005 + + + + fQueueStatus + + + + 2007 + + + + fPresetNewPicSettingsPopUp + + + + 2013 + + + + showDebugOutputPanel: + + + + 2296 + + + + fVidTurboPassCheck + + + + 2362 + + + + twoPassCheckboxChanged: + + + + 2363 + + + + customSettingUsed: + + + + 2366 + + + + customSettingUsed: + + + + 2367 + + + + openMainWindow: + + + + 2369 + + + + selectDefaultPreset: + + + + 2422 + + + + showQueueWindow: + + + + 2446 + + + + addToQueue: + + + + 2447 + + + + Rip: + + + + 2448 + + + + videoFrameRateChanged: + + + + 2462 + + + + showPicturePanel: + + + + 2493 + + + + Pause: + + + + 2496 + + + + fAdvancedView + + + + 2516 + + + + showPreferencesWindow: + + + + 2517 + + + + fPresetNewDesc + + + + 2674 + + + + customSettingUsed: + + + + 2691 + + + + fOpenSourceTitleMMenu + + + + 2700 + + + + fScanSrcTitlePathField + + + + 2709 + + + + fScanSrcTitleNumField + + + + 2710 + + + + fScanSrcTitleCancelButton + + + + 2711 + + + + fScanSrcTitleOpenButton + + + + 2712 + + + + fScanSrcTitlePanel + + + + 2713 + + + + closeSourceTitleScanPanel: + + + + 2714 + + + + closeSourceTitleScanPanel: + + + + 2715 + + + + browseSources: + + + + 2717 + + + + browseSources: + + + + 2718 + + + + fSrcDsplyNameTitleScan + + + + 2721 + + + + fPresetNewPicFiltersCheck + + + + 2841 + + + + fScanIndicator + + + + 3204 + + + + fPresetsOutlineView + + + + 4187 + + + + selectPreset: + + + + 4312 + + + + fPresetsDelete + + + + 4319 + + + + deletePreset: + + + + 4321 + + + + fPresetsAdd + + + + 4324 + + + + showAddPresetPanel: + + + + 4325 + + + + fDstMp4LargeFileCheck + + + + 4578 + + + + fDstMp4HttpOptFileCheck + + + + 4581 + + + + fDstMp4iPodFileCheck + + + + 4969 + + + + customSettingUsed: + + + + 4970 + + + + customSettingUsed: + + + + 4971 + + + + videoEncoderPopUpChanged: + + + + 5075 + + + + setDefaultPreset: + + + + 5138 + + + + addFactoryPresets: + + + + 5139 + + + + autoSetM4vExtension: + + + + 5152 + + + + fPresetNewFolderCheck + + + + 5155 + + + + fVidEncoderField + + + + 5156 + + + + showPreviewWindow: + + + + 5158 + + + + fPictureSettingsField + + + + 5169 + + + + fPictureFiltersField + + + + 5173 + + + + fVidQualityRFField + + + + 5176 + + + + fVidQualityRFLabel + + + + 5179 + + + + fSrcAngleLabel + + + + 5186 + + + + browseExportPresetFile: + + + + 5191 + + + + browseImportPresetFile: + + + + 5193 + + + + fSubtitlesTable + + + + 5214 + + + + showAboutPanel: + + + + 5245 + + + + fBrowseSrtFileButton + + + + 5248 + + + + browseImportSrtFile: + + + + 5249 + + + + fSrcTimeStartEncodingField + + + + 5507 + + + + fSrcTimeEndEncodingField + + + + 5508 + + + + encodeStartStopPopUpChanged: + + + + 5520 + + + + fSrcFrameStartEncodingField + + + + 5525 + + + + fSrcFrameEndEncodingField + + + + 5526 + + + + fEncodeStartStopPopUp + + + + 5527 + + + + startEndSecValueChanged: + + + + 5528 + + + + startEndSecValueChanged: + + + + 5529 + + + + startEndFrameValueChanged: + + + + 5530 + + + + startEndFrameValueChanged: + + + + 5531 + + + + fSrcChapterToField + + + + 5532 + + + + fSrcAnglePopUp + + + + 5533 + + + + browseForChapterFile: + + + + 5538 + + + + browseForChapterFileSave: + + + + 5539 + + + + fLoadChaptersButton + + + + 5540 + + + + fSaveChaptersButton + + + + 5541 + + + + fChapterTableNameColumn + + + + 5544 + + + + fPresetNewPicWidth + + + + 5668 + + + + fPresetNewPicHeight + + + + 5669 + + + + fPresetNewPicWidthHeightBox + + + + 5671 + + + + addPresetPicDropdownChanged: + + + + 5672 + + + + fAudioDelegate + + + + 5675 + + + + addAllAudioTracks: + + + + 5709 + + + + fVidQualityMatrix + + + + 5812 + + + + fVidBitrateCell + + + + 5813 + + + + fVidConstantCell + + + + 5814 + + + + videoMatrixChanged: + + + + 5815 + + + + videoMatrixChanged: + + + + 5816 + + + + videoMatrixChanged: + + + + 5824 + + + + videoMatrixChanged: + + + + 5825 + + + + fFramerateMatrix + + + + 5826 + + + + fFramerateVfrPfrCell + + + + 5827 + + + + fFramerateCfrCell + + + + 5828 + + + + addAllTitlesToQueue: + + + + 5899 + + + + fAudioAllowMP3PassCheck + + + + 5925 + + + + fAudioAllowAACPassCheck + + + + 5926 + + + + fAudioAllowAC3PassCheck + + + + 5927 + + + + fAudioAllowDTSPassCheck + + + + 5928 + + + + fAudioAllowDTSHDPassCheck + + + + 5929 + + + + fAudioFallbackPopUp + + + + 5930 + + + + fAudioAutoPassthruBox + + + + 5931 + + + + fX264PresetsBox + + + + 5973 + + + + fX264TunePopUp + + + + 5974 + + + + fX264ProfilePopUp + + + + 5975 + + + + fX264LevelPopUp + + + + 5976 + + + + fX264FastDecodeCheck + + + + 5977 + + + + fDisplayX264PresetsAdditonalOptionsTextField + + + + 5979 + + + + fX264PresetsSlider + + + + 5980 + + + + fX264PresetSelectedTextField + + + + 5983 + + + + x264PresetsSliderChanged: + + + + 5984 + + + + fX264PresetSliderLabel + + + + 5985 + + + + fX264TunePopUpLabel + + + + 5986 + + + + fX264ProfilePopUpLabel + + + + 5987 + + + + fX264LevelPopUpLabel + + + + 5988 + + + + fDisplayX264PresetsAdditonalOptionsLabel + + + + 5989 + + + + fX264UseAdvancedOptionsCheck + + + + 5994 + + + + updateX264Widgets: + + + + 5995 + + + + fDisplayX264PresetsUnparseTextField + + + + 5998 + + + + x264PresetsChangedDisplayExpandedOptions: + + + + 5999 + + + + x264PresetsChangedDisplayExpandedOptions: + + + + 6000 + + + + x264PresetsChangedDisplayExpandedOptions: + + + + 6001 + + + + x264PresetsChangedDisplayExpandedOptions: + + + + 6002 + + + + x264PresetsChangedDisplayExpandedOptions: + + + + 6003 + + + + fScanHorizontalLine + + + + 6004 + + + + parentWindow + + + + 1842 + + + + contentView + + + + 1844 + + + + toggle: + + + + 1885 + + + + dataSource + + + + 4188 + + + + delegate + + + + 4189 + + + + checkForUpdates: + + + + 4966 + + + + contentArray: audioArray + + + + + + contentArray: audioArray + contentArray + audioArray + 2 + + + 5679 + + + + enabled: hasValidPresetSelected + + + + + + enabled: hasValidPresetSelected + enabled + hasValidPresetSelected + 2 + + + 5711 + + + + value: arrangedObjects.drc + + + + + + value: arrangedObjects.drc + value + arrangedObjects.drc + + NSCreatesSortDescriptor + + + 2 + + + 5791 + + + + enabled: arrangedObjects.AC3Enabled + + + + + + enabled: arrangedObjects.AC3Enabled + enabled + arrangedObjects.AC3Enabled + 2 + + + 5793 + + + + value: arrangedObjects.drc + + + + + + value: arrangedObjects.drc + value + arrangedObjects.drc + + YES + + YES + NSCreatesSortDescriptor + NSValidatesImmediately + + + YES + + + + + 2 + + + 5790 + + + + enabled: arrangedObjects.AC3Enabled + + + + + + enabled: arrangedObjects.AC3Enabled + enabled + arrangedObjects.AC3Enabled + 2 + + + 5792 + + + + content: arrangedObjects.bitRates + + + + + + content: arrangedObjects.bitRates + content + arrangedObjects.bitRates + 2 + + + 5766 + + + + contentValues: arrangedObjects.bitRates.keyAudioBitrateName + + + + + + contentValues: arrangedObjects.bitRates.keyAudioBitrateName + contentValues + arrangedObjects.bitRates.keyAudioBitrateName + + 2 + + + 5768 + + + + selectedObject: arrangedObjects.bitRate + + + + + + selectedObject: arrangedObjects.bitRate + selectedObject + arrangedObjects.bitRate + + NSCreatesSortDescriptor + + + + 2 + + + 5789 + + + + enabled: arrangedObjects.bitrateEnabled + + + + + + enabled: arrangedObjects.bitrateEnabled + enabled + arrangedObjects.bitrateEnabled + 2 + + + 5903 + + + + content: arrangedObjects.sampleRates + + + + + + content: arrangedObjects.sampleRates + content + arrangedObjects.sampleRates + 2 + + + 5760 + + + + contentValues: arrangedObjects.sampleRates.keyAudioSampleRateName + + + + + + contentValues: arrangedObjects.sampleRates.keyAudioSampleRateName + contentValues + arrangedObjects.sampleRates.keyAudioSampleRateName + + 2 + + + 5762 + + + + enabled: arrangedObjects.mixdownEnabled + + + + + + enabled: arrangedObjects.mixdownEnabled + enabled + arrangedObjects.mixdownEnabled + 2 + + + 5778 + + + + selectedObject: arrangedObjects.sampleRate + + + + + + selectedObject: arrangedObjects.sampleRate + selectedObject + arrangedObjects.sampleRate + + NSCreatesSortDescriptor + + + + 2 + + + 5788 + + + + content: arrangedObjects.mixdowns + + + + + + content: arrangedObjects.mixdowns + content + arrangedObjects.mixdowns + 2 + + + 5754 + + + + contentValues: arrangedObjects.mixdowns.keyAudioMixdownName + + + + + + contentValues: arrangedObjects.mixdowns.keyAudioMixdownName + contentValues + arrangedObjects.mixdowns.keyAudioMixdownName + + 2 + + + 5756 + + + + selectedObject: arrangedObjects.mixdown + + + + + + selectedObject: arrangedObjects.mixdown + selectedObject + arrangedObjects.mixdown + + NSCreatesSortDescriptor + + + + 2 + + + 5787 + + + + enabled: arrangedObjects.mixdownEnabled + + + + + + enabled: arrangedObjects.mixdownEnabled + enabled + arrangedObjects.mixdownEnabled + 2 + + + 5901 + + + + content: arrangedObjects.codecs + + + + + + content: arrangedObjects.codecs + content + arrangedObjects.codecs + 2 + + + 5747 + + + + contentValues: arrangedObjects.codecs.keyAudioCodecName + + + + + + contentValues: arrangedObjects.codecs.keyAudioCodecName + contentValues + arrangedObjects.codecs.keyAudioCodecName + + 2 + + + 5749 + + + + enabled: arrangedObjects.enabled + + + + + + enabled: arrangedObjects.enabled + enabled + arrangedObjects.enabled + 2 + + + 5774 + + + + selectedObject: arrangedObjects.codec + + + + + + selectedObject: arrangedObjects.codec + selectedObject + arrangedObjects.codec + + NSCreatesSortDescriptor + + + + 2 + + + 5786 + + + + content: arrangedObjects + + + + + + content: arrangedObjects + content + arrangedObjects + 2 + + + 5886 + + + + contentValues: arrangedObjects.keyAudioTrackName + + + + + + contentValues: arrangedObjects.keyAudioTrackName + contentValues + arrangedObjects.keyAudioTrackName + + 2 + + + 5891 + + + + selectedObject: arrangedObjects.track + + + + + + selectedObject: arrangedObjects.track + selectedObject + arrangedObjects.track + + NSCreatesSortDescriptor + + + + 2 + + + 5892 + + + + value: arrangedObjects.gain + + + + + + value: arrangedObjects.gain + value + arrangedObjects.gain + + YES + + YES + NSCreatesSortDescriptor + NSValidatesImmediately + + + YES + + + + + 2 + + + 5877 + + + + enabled: arrangedObjects.PassThruDisabled + + + + + + enabled: arrangedObjects.PassThruDisabled + enabled + arrangedObjects.PassThruDisabled + 2 + + + 5878 + + + + value: arrangedObjects.gain + + + + + + value: arrangedObjects.gain + value + arrangedObjects.gain + 2 + + + 5875 + + + + enabled: arrangedObjects.PassThruDisabled + + + + + + enabled: arrangedObjects.PassThruDisabled + enabled + arrangedObjects.PassThruDisabled + + NSRaisesForNotApplicableKeys + + + 2 + + + 5876 + + + + contentArray: masterTrackArray + + + + + + contentArray: masterTrackArray + contentArray + masterTrackArray + 2 + + + 5882 + + + + + YES + + 0 + + + + + + -2 + + + File's Owner + + + -1 + + + First Responder + + + -3 + + + Application + + + 21 + + + YES + + + + MainWindow + + + 2 + + + YES + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1123 + + + YES + + + + + + 1373 + + + + + 1474 + + + YES + + + + + + + + + + 1475 + + + YES + + + + + + 1476 + + + YES + + + + + + 1477 + + + YES + + + + + + 1478 + + + YES + + + + + + + + + + + + + + + + + + + + + 1499 + + + YES + + + + + + 1505 + + + YES + + + + + + 1506 + + + YES + + + + + + 1507 + + + YES + + + + + + 1508 + + + YES + + + + + + 1509 + + + YES + + + + + + 1512 + + + YES + + + + + + 1515 + + + YES + + + + + + 2361 + + + YES + + + + + + 1989 + + + YES + + + + + + 1990 + + + YES + + + + + + + + + 1999 + + + YES + + + + + + + + + 2000 + + + YES + + + + + + + 2001 + + + YES + + + + + + 2002 + + + YES + + + + + + 2003 + + + YES + + + + + + 2015 + + + YES + + + + + + 2016 + + + YES + + + + + + 2513 + + + YES + + + + + 1538 + + + YES + + + + + + 1539 + + + YES + + + + + + 1540 + + + YES + + + + + + 1541 + + + YES + + + + + + 1545 + + + YES + + + + + + 1548 + + + YES + + + + + + 1552 + + + YES + + + + + + 1553 + + + YES + + + + + + 1554 + + + YES + + + + + + 1555 + + + YES + + + + + + 1556 + + + YES + + + + + + 1557 + + + YES + + + + + + 1561 + + + YES + + + + + + 1562 + + + YES + + + + + + 1623 + + + YES + + + + + 1627 + + + YES + + + + + + 1628 + + + YES + + + + + 1882 + + + YES + + + + + + 2006 + + + YES + + + + + + 2364 + + + YES + + + + + + 3203 + + + + + 3205 + + + + + 4579 + + + YES + + + + + + 29 + + + YES + + + + + + + + + MainMenu + + + 56 + + + YES + + + + + + 57 + + + YES + + + + + + + + + + + + + + + 58 + + + + + 136 + + + + + 196 + + + + + 970 + + + + + 971 + + + + + 973 + + + + + 1445 + + + + + 1900 + + + + + 1189 + + + YES + + + + + + 1192 + + + YES + + + + + + + + + + + + + + + 1190 + + + + + 1191 + + + + + 1193 + + + + + 1884 + + + + + 2295 + + + + + 2368 + + + + + 2445 + + + + + 2488 + + + + + 2519 + + + + + 1200 + + + YES + + + + + + 1209 + + + YES + + + + + + + + + + + + + + 1198 + + + + + 2443 + + + + + 2444 + + + + + 2494 + + + + + 2507 + + + + + 2508 + + + + + 2518 + + + + + 2698 + + + + + 1431 + + + YES + + + + + + 1429 + + + YES + + + + + + + + 1432 + + + + + 1433 + + + + + 1985 + + + + + 1795 + + + YES + + + + + + 1796 + + + YES + + + + + + + + + + + + + + + + + + 1797 + + + + + 1798 + + + + + 1799 + + + + + 1800 + + + + + 1801 + + + + + 1802 + + + YES + + + + + + 1803 + + + YES + + + + + + + + + + 1804 + + + + + 1805 + + + + + 1806 + + + + + 1807 + + + + + 1808 + + + + + 1809 + + + + + 1810 + + + YES + + + + + + 1811 + + + YES + + + + + + + + 1812 + + + + + 1813 + + + + + 1814 + + + + + 1815 + + + + + 1816 + + + + + 1817 + + + YES + + + + + + 1818 + + + YES + + + + + + + 1819 + + + + + 1820 + + + + + 1821 + + + + + 1822 + + + + + 1948 + + + YES + + + + + + 1949 + + + YES + + + + + + + + + + + + 1950 + + + + + 1951 + + + + + 1954 + + + + + 1955 + + + + + 2421 + + + + + 240 + + + HBController + + + 434 + + + YES + + + + DonePanel + + + 435 + + + YES + + + + + + + + 436 + + + YES + + + + + + 437 + + + YES + + + + + + 438 + + + YES + + + + + + 1841 + + + PresetsDrawer + + + 1843 + + + YES + + + + + + + PresetsView + + + 4179 + + + YES + + + + + + + + 4182 + + + YES + + + + + + 4183 + + + YES + + + + + + 4186 + + + + + 4317 + + + YES + + + + + + 4322 + + + YES + + + + + + 1867 + + + YES + + + + AddPresetPanel + + + 1868 + + + YES + + + + + + + + + + + + + + + + + + + + 1870 + + + YES + + + + + + 1871 + + + YES + + + + + + 1872 + + + YES + + + + + + 2008 + + + YES + + + + + + 2670 + + + YES + + + + + + 2671 + + + YES + + + + + + 2672 + + + YES + + + + + + 2673 + + + YES + + + + + + 2833 + + + YES + + + + + + 2837 + + + YES + + + + + + 2839 + + + + + 2840 + + + + + 2957 + + + YES + + + + + + 2701 + + + YES + + + + SourceTitlePanel + + + 2702 + + + YES + + + + + + + + + + + + + + 2703 + + + YES + + + + + + 2704 + + + YES + + + + + + 2705 + + + YES + + + + + + 2706 + + + YES + + + + + + 2707 + + + YES + + + + + + 2708 + + + YES + + + + + + 2716 + + + YES + + + + + + 2719 + + + YES + + + + + + 2720 + + + YES + + + + + + 4846 + + + + + 4872 + + + + + 4874 + + + + + 4875 + + + + + 4876 + + + + + 4877 + + + + + 4878 + + + YES + + + + + + 4879 + + + YES + + + + + + 4880 + + + + + 4892 + + + + + 4904 + + + + + 4905 + + + + + 4906 + + + + + 4907 + + + + + 4908 + + + YES + + + + + + 4910 + + + YES + + + + + + 4911 + + + YES + + + + + + 4913 + + + + + 4914 + + + + + 4915 + + + + + 4916 + + + + + 4917 + + + + + 4918 + + + YES + + + + + + 4919 + + + + + 4920 + + + + + 4923 + + + + + 4924 + + + + + 4925 + + + + + 4926 + + + + + 4927 + + + + + 4928 + + + + + 4929 + + + + + 4930 + + + + + 4932 + + + + + 4933 + + + + + 4934 + + + + + 4935 + + + + + 4936 + + + + + 4937 + + + YES + + + + + + 4938 + + + + + 4939 + + + + + 4940 + + + + + 4941 + + + + + 4942 + + + + + 4943 + + + + + 4944 + + + + + 4945 + + + + + 4946 + + + + + 4947 + + + + + 4948 + + + + + 4949 + + + + + 4950 + + + + + 4951 + + + + + 4952 + + + + + 4953 + + + + + 4955 + + + + + 4956 + + + + + 1510 + + + YES + + + + + + 1511 + + + + + 1513 + + + YES + + + + + + 1514 + + + + + 1542 + + + YES + + + + + + 1543 + + + + + 1546 + + + YES + + + + + + 1547 + + + + + 1549 + + + YES + + + + + + 1550 + + + + + 1558 + + + YES + + + + + + 1559 + + + + + 2009 + + + YES + + + + + + + + 2012 + + + + + 2011 + + + + + 2010 + + + + + 4957 + + + + + 4958 + + + + + 4959 + + + + + 4960 + + + + + 4961 + + + + + 4963 + + + + + 4964 + + + + + 4967 + + + YES + + + + + + 4968 + + + + + 5130 + + + YES + + + + + + 5131 + + + YES + + + + + + 5132 + + + YES + + + + + + + + 5133 + + + + + 5134 + + + + + 5135 + + + + + 5153 + + + YES + + + + + + 5154 + + + + + 5157 + + + + + 5167 + + + YES + + + + + + 5168 + + + + + 5171 + + + YES + + + + + + 5172 + + + + + 5174 + + + YES + + + + + + 5175 + + + YES + + + + + + 5177 + + + YES + + + + + + 5178 + + + + + 5180 + + + YES + + + + + + 5181 + + + YES + + + + + + 5182 + + + YES + + + + + + 5183 + + + YES + + + + + + 5184 + + + + + 5185 + + + + + 5188 + + + + + 5192 + + + + + 5194 + + + YES + + + + + + 5195 + + + YES + + + + + + + 5196 + + + YES + + + + + + + + + 5197 + + + + + 5198 + + + + + 5199 + + + YES + + + + + + + + + + + + 5201 + + + YES + + + + + + 5215 + + + YES + + + + + + 5217 + + + YES + + + + + + 5219 + + + YES + + + + + + 5225 + + + YES + + + + + + 5226 + + + YES + + + + + + 5227 + + + + + 5232 + + + + + 5233 + + + + + 5234 + + + + + 5244 + + + + + 5246 + + + YES + + + + + + 5247 + + + + + 5250 + + + YES + + + + + + 5252 + + + YES + + + + + + 5254 + + + YES + + + + + + 5268 + + + YES + + + + + + 5269 + + + YES + + + + + + 5270 + + + + + 5271 + + + YES + + + + + + 5272 + + + YES + + + + + + 5273 + + + + + 5278 + + + + + 5279 + + + + + 5280 + + + + + 5491 + + + YES + + + + + + 5492 + + + + + 5493 + + + YES + + + + + + 5494 + + + + + 5505 + + + YES + + + + + + 5506 + + + + + 5513 + + + YES + + + + + + 5514 + + + YES + + + + + + 5515 + + + YES + + + + + 5521 + + + YES + + + + + + 5522 + + + + + 5523 + + + YES + + + + + + 5524 + + + + + 5534 + + + YES + + + + + + 5535 + + + + + 5536 + + + YES + + + + + + 5537 + + + + + 5670 + + + YES + + + + + + + + 5549 + + + YES + + + + + + 5550 + + + + + 5553 + + + YES + + + + + + 5554 + + + + + 5551 + + + YES + + + + + + 5552 + + + + + 5673 + + + Audio Controller + + + 5674 + + + Audios + + + 5676 + + + + + 5680 + + + YES + + + + + + + + 5681 + + + YES + + + + + + 5682 + + + YES + + + + + + + + + 5683 + + + + + 5684 + + + YES + + + + + + + + + + + + + + 5685 + + + + + 5686 + + + + + 5687 + + + YES + + + + + + 5688 + + + YES + + + + + + 5689 + + + YES + + + + + + 5690 + + + YES + + + + + + 5691 + + + YES + + + + + + 5692 + + + YES + + + + + + 5693 + + + YES + + + + + + 5694 + + + YES + + + + + + 5695 + + + YES + + + + + + 5696 + + + + + 5706 + + + + + 5707 + + + + + 5712 + + + YES + + + + + + 5713 + + + YES + + + + + + 5714 + + + + + 5715 + + + YES + + + + + + 5716 + + + YES + + + + + + 5717 + + + + + 5718 + + + YES + + + + + + 5719 + + + YES + + + + + + 5720 + + + + + 5721 + + + YES + + + + + + 5722 + + + YES + + + + + + 5723 + + + + + 5724 + + + + + 5808 + + + YES + + + + + + + + 5809 + + + + + 5810 + + + + + 5811 + + + + + 5820 + + + YES + + + + + + + + 5821 + + + + + 5822 + + + + + 5823 + + + + + 5871 + + + YES + + + + + + 5872 + + + YES + + + + + + 5873 + + + + + 5874 + + + + + 5879 + + + Audio Inputs + + + 5897 + + + + + 1624 + + + + + 1629 + + + + + 5920 + + + YES + + + + + + + + + + + + + 5904 + + + YES + + + + + + 5905 + + + + + 5906 + + + YES + + + + + + 5907 + + + + + 5908 + + + YES + + + + + + 5909 + + + + + 5910 + + + YES + + + + + + 5911 + + + + + 5912 + + + YES + + + + + + 5913 + + + + + 5914 + + + YES + + + + + + 5915 + + + YES + + + + + + 5916 + + + YES + + + + + + + + 5919 + + + + + 5918 + + + + + 5917 + + + + + 5921 + + + YES + + + + + + 5922 + + + + + 5923 + + + YES + + + + + + 5924 + + + + + 5934 + + + YES + + + + + + + + + + + + + + + + + + + 5932 + + + YES + + + + + + 5933 + + + + + 5937 + + + YES + + + + + + 5938 + + + + + 5939 + + + YES + + + + + + 5940 + + + + + 5941 + + + YES + + + + + + 5942 + + + + + 5943 + + + YES + + + + + + 5944 + + + + + 5945 + + + YES + + + + + + 5946 + + + YES + + + + + + 5947 + + + YES + + + + + + + + 5948 + + + + + 5949 + + + + + 5950 + + + + + 5951 + + + YES + + + + + + 5952 + + + YES + + + + + + 5953 + + + YES + + + + + + + + 5954 + + + + + 5955 + + + + + 5956 + + + + + 5957 + + + YES + + + + + + 5958 + + + YES + + + + + + 5959 + + + YES + + + + + + + + 5960 + + + + + 5961 + + + + + 5962 + + + + + 5963 + + + YES + + + + + + 5964 + + + + + 5967 + + + YES + + + + + + 5968 + + + + + 5971 + + + YES + + + + + + 5972 + + + + + 5981 + + + YES + + + + + + 5982 + + + + + 5992 + + + YES + + + + + + 5993 + + + + + 5996 + + + YES + + + + + + 5997 + + + + + + + YES + + YES + -1.IBPluginDependency + -2.IBPluginDependency + -3.IBPluginDependency + 1123.IBPluginDependency + 1189.IBPluginDependency + 1190.IBPluginDependency + 1191.IBPluginDependency + 1192.IBPluginDependency + 1193.IBPluginDependency + 1198.IBPluginDependency + 1200.IBPluginDependency + 1209.IBPluginDependency + 136.IBPluginDependency + 1373.IBPluginDependency + 1429.IBPluginDependency + 1431.IBPluginDependency + 1432.IBPluginDependency + 1433.IBPluginDependency + 1445.IBPluginDependency + 1474.IBAttributePlaceholdersKey + 1474.IBPluginDependency + 1475.IBPluginDependency + 1476.IBPluginDependency + 1477.IBPluginDependency + 1478.IBPluginDependency + 1499.IBPluginDependency + 1505.IBPluginDependency + 1506.IBPluginDependency + 1507.IBPluginDependency + 1508.IBPluginDependency + 1509.IBPluginDependency + 1510.IBPluginDependency + 1511.IBPluginDependency + 1512.IBPluginDependency + 1513.IBPluginDependency + 1514.IBPluginDependency + 1515.IBPluginDependency + 1538.IBPluginDependency + 1539.IBPluginDependency + 1540.IBPluginDependency + 1541.IBPluginDependency + 1542.IBPluginDependency + 1543.IBPluginDependency + 1545.IBPluginDependency + 1546.IBPluginDependency + 1547.IBPluginDependency + 1548.IBPluginDependency + 1549.IBPluginDependency + 1550.IBPluginDependency + 1552.IBPluginDependency + 1553.IBPluginDependency + 1554.IBPluginDependency + 1555.IBPluginDependency + 1556.IBPluginDependency + 1557.IBPluginDependency + 1558.IBPluginDependency + 1559.IBPluginDependency + 1561.IBPluginDependency + 1562.IBPluginDependency + 1623.IBPluginDependency + 1624.IBPluginDependency + 1627.IBPluginDependency + 1628.IBPluginDependency + 1629.IBPluginDependency + 1795.IBPluginDependency + 1796.IBPluginDependency + 1797.IBPluginDependency + 1798.IBPluginDependency + 1799.IBPluginDependency + 1800.IBPluginDependency + 1801.IBPluginDependency + 1802.IBPluginDependency + 1803.IBPluginDependency + 1804.IBPluginDependency + 1805.IBPluginDependency + 1806.IBPluginDependency + 1807.IBPluginDependency + 1808.IBPluginDependency + 1809.IBPluginDependency + 1810.IBPluginDependency + 1811.IBPluginDependency + 1812.IBPluginDependency + 1813.IBPluginDependency + 1814.IBPluginDependency + 1815.IBPluginDependency + 1816.IBPluginDependency + 1817.IBPluginDependency + 1818.IBPluginDependency + 1819.IBPluginDependency + 1820.IBPluginDependency + 1821.IBPluginDependency + 1822.IBPluginDependency + 1841.IBPluginDependency + 1843.IBPluginDependency + 1867.IBPluginDependency + 1867.IBWindowTemplateEditedContentRect + 1868.IBPluginDependency + 1870.IBPluginDependency + 1871.IBPluginDependency + 1872.IBPluginDependency + 1882.IBPluginDependency + 1884.IBPluginDependency + 1900.IBPluginDependency + 1948.IBPluginDependency + 1949.IBPluginDependency + 1950.IBPluginDependency + 1951.IBPluginDependency + 1954.IBPluginDependency + 1955.IBPluginDependency + 196.IBPluginDependency + 1985.IBPluginDependency + 1989.IBPluginDependency + 1990.IBPluginDependency + 1999.IBPluginDependency + 2.IBPluginDependency + 2000.IBPluginDependency + 2001.IBPluginDependency + 2002.IBPluginDependency + 2003.IBPluginDependency + 2006.IBPluginDependency + 2008.IBPluginDependency + 2009.IBPluginDependency + 2010.IBPluginDependency + 2011.IBPluginDependency + 2012.IBPluginDependency + 2015.IBPluginDependency + 2016.IBPluginDependency + 21.IBPluginDependency + 21.IBWindowTemplateEditedContentRect + 2295.IBPluginDependency + 2361.IBPluginDependency + 2364.IBAttributePlaceholdersKey + 2364.IBPluginDependency + 2368.IBPluginDependency + 240.IBPluginDependency + 2421.IBPluginDependency + 2443.IBPluginDependency + 2444.IBPluginDependency + 2445.IBPluginDependency + 2488.IBPluginDependency + 2494.IBPluginDependency + 2507.IBPluginDependency + 2508.IBPluginDependency + 2513.IBPluginDependency + 2518.IBPluginDependency + 2519.IBPluginDependency + 2670.IBPluginDependency + 2671.IBPluginDependency + 2672.IBPluginDependency + 2673.IBPluginDependency + 2698.IBPluginDependency + 2701.IBPluginDependency + 2701.IBWindowTemplateEditedContentRect + 2702.IBPluginDependency + 2703.IBPluginDependency + 2704.IBPluginDependency + 2705.IBPluginDependency + 2706.IBPluginDependency + 2707.IBPluginDependency + 2708.IBPluginDependency + 2716.IBPluginDependency + 2719.IBPluginDependency + 2720.IBPluginDependency + 2833.IBPluginDependency + 2837.IBPluginDependency + 2839.IBPluginDependency + 2840.IBPluginDependency + 29.IBPluginDependency + 2957.IBPluginDependency + 3203.IBPluginDependency + 3205.IBPluginDependency + 4179.IBPluginDependency + 4182.CustomClassName + 4182.IBPluginDependency + 4183.IBPluginDependency + 4186.IBPluginDependency + 4317.IBPluginDependency + 4322.IBPluginDependency + 434.IBPluginDependency + 434.IBWindowTemplateEditedContentRect + 435.IBPluginDependency + 436.IBPluginDependency + 437.IBPluginDependency + 438.IBPluginDependency + 4579.IBAttributePlaceholdersKey + 4579.IBPluginDependency + 4846.IBPluginDependency + 4872.IBPluginDependency + 4874.IBPluginDependency + 4875.IBPluginDependency + 4876.IBPluginDependency + 4877.IBPluginDependency + 4878.IBPluginDependency + 4879.IBPluginDependency + 4880.IBPluginDependency + 4892.IBPluginDependency + 4904.IBPluginDependency + 4905.IBPluginDependency + 4906.IBPluginDependency + 4907.IBPluginDependency + 4908.IBPluginDependency + 4910.IBPluginDependency + 4911.IBPluginDependency + 4913.IBPluginDependency + 4914.IBPluginDependency + 4915.IBPluginDependency + 4916.IBPluginDependency + 4917.IBPluginDependency + 4918.IBPluginDependency + 4919.IBPluginDependency + 4920.IBPluginDependency + 4923.IBPluginDependency + 4924.IBPluginDependency + 4925.IBPluginDependency + 4926.IBPluginDependency + 4927.IBPluginDependency + 4928.IBPluginDependency + 4929.IBPluginDependency + 4930.IBPluginDependency + 4932.IBPluginDependency + 4933.IBPluginDependency + 4934.IBPluginDependency + 4935.IBPluginDependency + 4936.IBPluginDependency + 4937.IBPluginDependency + 4938.IBPluginDependency + 4939.IBPluginDependency + 4940.IBPluginDependency + 4941.IBPluginDependency + 4942.IBPluginDependency + 4943.IBPluginDependency + 4944.IBPluginDependency + 4945.IBPluginDependency + 4946.IBPluginDependency + 4947.IBPluginDependency + 4948.IBPluginDependency + 4949.IBPluginDependency + 4950.IBPluginDependency + 4951.IBPluginDependency + 4952.IBPluginDependency + 4953.IBPluginDependency + 4955.IBPluginDependency + 4955.IBShouldRemoveOnLegacySave + 4956.IBPluginDependency + 4956.IBShouldRemoveOnLegacySave + 4957.IBPluginDependency + 4957.IBShouldRemoveOnLegacySave + 4958.IBPluginDependency + 4958.IBShouldRemoveOnLegacySave + 4959.IBPluginDependency + 4959.IBShouldRemoveOnLegacySave + 4960.IBPluginDependency + 4960.IBShouldRemoveOnLegacySave + 4961.IBPluginDependency + 4961.IBShouldRemoveOnLegacySave + 4963.IBPluginDependency + 4964.IBPluginDependency + 4967.IBAttributePlaceholdersKey + 4967.IBPluginDependency + 4968.IBPluginDependency + 5130.IBPluginDependency + 5131.IBPluginDependency + 5132.IBPluginDependency + 5133.IBPluginDependency + 5134.IBPluginDependency + 5135.IBPluginDependency + 5153.IBPluginDependency + 5154.IBPluginDependency + 5157.IBPluginDependency + 5167.IBPluginDependency + 5168.IBPluginDependency + 5171.IBPluginDependency + 5172.IBPluginDependency + 5174.IBPluginDependency + 5175.IBPluginDependency + 5177.IBPluginDependency + 5178.IBPluginDependency + 5180.IBPluginDependency + 5181.IBPluginDependency + 5182.IBPluginDependency + 5183.IBPluginDependency + 5184.IBPluginDependency + 5185.IBPluginDependency + 5188.IBPluginDependency + 5192.IBPluginDependency + 5194.IBPluginDependency + 5195.IBPluginDependency + 5196.IBPluginDependency + 5197.IBPluginDependency + 5198.IBPluginDependency + 5199.IBPluginDependency + 5201.IBPluginDependency + 5215.IBPluginDependency + 5217.IBPluginDependency + 5219.IBPluginDependency + 5225.IBPluginDependency + 5226.IBPluginDependency + 5227.IBPluginDependency + 5232.IBPluginDependency + 5233.IBPluginDependency + 5234.IBPluginDependency + 5244.IBPluginDependency + 5246.IBPluginDependency + 5247.IBPluginDependency + 5250.IBPluginDependency + 5252.IBPluginDependency + 5254.IBPluginDependency + 5268.IBPluginDependency + 5269.IBPluginDependency + 5270.IBPluginDependency + 5271.IBPluginDependency + 5272.IBPluginDependency + 5273.IBPluginDependency + 5278.IBPluginDependency + 5279.IBNumberFormatterBehaviorMetadataKey + 5279.IBNumberFormatterLocalizesFormatMetadataKey + 5279.IBPluginDependency + 5280.IBPluginDependency + 5491.IBPluginDependency + 5492.IBPluginDependency + 5493.IBPluginDependency + 5494.IBPluginDependency + 5505.IBPluginDependency + 5506.IBPluginDependency + 5513.IBPluginDependency + 5514.IBPluginDependency + 5515.IBPluginDependency + 5521.IBPluginDependency + 5522.IBPluginDependency + 5523.IBPluginDependency + 5524.IBPluginDependency + 5534.IBPluginDependency + 5535.IBPluginDependency + 5536.IBPluginDependency + 5537.IBPluginDependency + 5549.IBPluginDependency + 5550.IBPluginDependency + 5551.IBPluginDependency + 5552.IBPluginDependency + 5553.IBPluginDependency + 5554.IBPluginDependency + 56.IBPluginDependency + 5670.IBPluginDependency + 5673.IBPluginDependency + 5674.IBPluginDependency + 5676.IBPluginDependency + 5680.IBPluginDependency + 5681.IBPluginDependency + 5682.IBPluginDependency + 5683.IBPluginDependency + 5684.IBPluginDependency + 5685.IBPluginDependency + 5686.IBPluginDependency + 5687.IBPluginDependency + 5688.IBPluginDependency + 5689.IBPluginDependency + 5690.IBPluginDependency + 5691.IBPluginDependency + 5692.IBPluginDependency + 5693.IBPluginDependency + 5694.IBPluginDependency + 5695.IBPluginDependency + 5696.IBPluginDependency + 57.IBPluginDependency + 5706.IBPluginDependency + 5707.IBPluginDependency + 5712.IBPluginDependency + 5713.IBPluginDependency + 5714.IBPluginDependency + 5715.IBPluginDependency + 5716.IBPluginDependency + 5717.IBPluginDependency + 5718.IBPluginDependency + 5719.IBPluginDependency + 5720.IBPluginDependency + 5721.IBPluginDependency + 5722.IBPluginDependency + 5723.IBPluginDependency + 5724.IBPluginDependency + 58.IBPluginDependency + 5808.IBPluginDependency + 5809.IBPluginDependency + 5810.IBPluginDependency + 5811.IBPluginDependency + 5820.IBPluginDependency + 5821.IBPluginDependency + 5822.IBPluginDependency + 5823.IBPluginDependency + 5871.IBPluginDependency + 5872.IBPluginDependency + 5873.IBPluginDependency + 5874.IBPluginDependency + 5879.IBPluginDependency + 5897.IBPluginDependency + 5904.IBPluginDependency + 5905.IBPluginDependency + 5906.IBPluginDependency + 5907.IBPluginDependency + 5908.IBPluginDependency + 5909.IBPluginDependency + 5910.IBPluginDependency + 5911.IBPluginDependency + 5912.IBPluginDependency + 5913.IBPluginDependency + 5914.IBPluginDependency + 5915.IBPluginDependency + 5916.IBPluginDependency + 5917.IBPluginDependency + 5918.IBPluginDependency + 5919.IBPluginDependency + 5920.IBPluginDependency + 5921.IBPluginDependency + 5922.IBPluginDependency + 5923.IBPluginDependency + 5924.IBPluginDependency + 5932.IBPluginDependency + 5933.IBPluginDependency + 5934.IBPluginDependency + 5937.IBPluginDependency + 5938.IBPluginDependency + 5939.IBPluginDependency + 5940.IBPluginDependency + 5941.IBPluginDependency + 5942.IBPluginDependency + 5943.IBPluginDependency + 5944.IBPluginDependency + 5945.IBPluginDependency + 5946.IBPluginDependency + 5947.IBPluginDependency + 5948.IBPluginDependency + 5949.IBPluginDependency + 5950.IBPluginDependency + 5951.IBPluginDependency + 5952.IBPluginDependency + 5953.IBPluginDependency + 5954.IBPluginDependency + 5955.IBPluginDependency + 5956.IBPluginDependency + 5957.IBPluginDependency + 5958.IBPluginDependency + 5959.IBPluginDependency + 5960.IBPluginDependency + 5961.IBPluginDependency + 5962.IBPluginDependency + 5963.IBPluginDependency + 5964.IBPluginDependency + 5967.IBPluginDependency + 5968.IBPluginDependency + 5971.IBPluginDependency + 5972.IBPluginDependency + 5981.IBPluginDependency + 5982.IBPluginDependency + 5992.IBPluginDependency + 5993.IBPluginDependency + 5996.IBPluginDependency + 5997.IBPluginDependency + 970.IBPluginDependency + 971.IBPluginDependency + 973.IBPluginDependency + + + YES + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + InitialTabViewItem + + InitialTabViewItem + + + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + {{329, 373}, {338, 318}} + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + {{132, 289}, {959, 558}} + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + ToolTip + + ToolTip + + Caution: This option will likely break device compatiblity with all but the AppleTV Take 2. Checking this box enables a 64 bit mp4 file which can be over 4 GB. + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + {{72, 712}, {392, 144}} + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + HBPresetsOutlineView + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + {{57, 766}, {300, 233}} + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + ToolTip + + ToolTip + + This rearranges the header of the MP4 file to optimize it for streaming across the web. + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + ToolTip + + ToolTip + + This option adds an atom to the MP4 file which allows older iPods (5th Generation classic style) to play the file. + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + + + YES + + + + + + YES + + + + + 6004 + + + + YES + + HBAudioController + NSObject + + IBProjectSource + ./Classes/HBAudioController.h + + + + HBController + NSObject + + YES + + YES + Cancel: + Pause: + Rip: + addAllAudioTracks: + addAllTitlesToQueue: + addFactoryPresets: + addPresetPicDropdownChanged: + addToQueue: + addUserPreset: + applyQueueSettingsToMainWindow: + autoSetM4vExtension: + browseExportPresetFile: + browseFile: + browseForChapterFile: + browseForChapterFileSave: + browseImportPresetFile: + browseImportSrtFile: + browseSources: + calculateBitrate: + calculatePictureSizing: + cancelScanning: + chapterPopUpChanged: + closeAddPresetPanel: + closeSourceTitleScanPanel: + customSettingUsed: + deleteFactoryPresets: + deletePreset: + encodeStartStopPopUpChanged: + formatPopUpChanged: + getDefaultPresets: + insertPreset: + openForums: + openHomepage: + openMainWindow: + openUserGuide: + qualitySliderChanged: + revertPictureSizeToMax: + selectDefaultPreset: + selectPreset: + setDefaultPreset: + showAboutPanel: + showAddPresetPanel: + showDebugOutputPanel: + showNewScan: + showPicturePanel: + showPreferencesWindow: + showPreviewWindow: + showQueueWindow: + showSourceTitleScanPanel: + startEndFrameValueChanged: + startEndSecValueChanged: + titlePopUpChanged: + twoPassCheckboxChanged: + updateX264Widgets: + videoEncoderPopUpChanged: + videoFrameRateChanged: + videoMatrixChanged: + x264PresetsChangedDisplayExpandedOptions: + x264PresetsSliderChanged: + + + YES + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + + + + YES + + YES + Cancel: + Pause: + Rip: + addAllAudioTracks: + addAllTitlesToQueue: + addFactoryPresets: + addPresetPicDropdownChanged: + addToQueue: + addUserPreset: + applyQueueSettingsToMainWindow: + autoSetM4vExtension: + browseExportPresetFile: + browseFile: + browseForChapterFile: + browseForChapterFileSave: + browseImportPresetFile: + browseImportSrtFile: + browseSources: + calculateBitrate: + calculatePictureSizing: + cancelScanning: + chapterPopUpChanged: + closeAddPresetPanel: + closeSourceTitleScanPanel: + customSettingUsed: + deleteFactoryPresets: + deletePreset: + encodeStartStopPopUpChanged: + formatPopUpChanged: + getDefaultPresets: + insertPreset: + openForums: + openHomepage: + openMainWindow: + openUserGuide: + qualitySliderChanged: + revertPictureSizeToMax: + selectDefaultPreset: + selectPreset: + setDefaultPreset: + showAboutPanel: + showAddPresetPanel: + showDebugOutputPanel: + showNewScan: + showPicturePanel: + showPreferencesWindow: + showPreviewWindow: + showQueueWindow: + showSourceTitleScanPanel: + startEndFrameValueChanged: + startEndSecValueChanged: + titlePopUpChanged: + twoPassCheckboxChanged: + updateX264Widgets: + videoEncoderPopUpChanged: + videoFrameRateChanged: + videoMatrixChanged: + x264PresetsChangedDisplayExpandedOptions: + x264PresetsSliderChanged: + + + YES + + Cancel: + id + + + Pause: + id + + + Rip: + id + + + addAllAudioTracks: + id + + + addAllTitlesToQueue: + id + + + addFactoryPresets: + id + + + addPresetPicDropdownChanged: + id + + + addToQueue: + id + + + addUserPreset: + id + + + applyQueueSettingsToMainWindow: + id + + + autoSetM4vExtension: + id + + + browseExportPresetFile: + id + + + browseFile: + id + + + browseForChapterFile: + id + + + browseForChapterFileSave: + id + + + browseImportPresetFile: + id + + + browseImportSrtFile: + id + + + browseSources: + id + + + calculateBitrate: + id + + + calculatePictureSizing: + id + + + cancelScanning: + id + + + chapterPopUpChanged: + id + + + closeAddPresetPanel: + id + + + closeSourceTitleScanPanel: + id + + + customSettingUsed: + id + + + deleteFactoryPresets: + id + + + deletePreset: + id + + + encodeStartStopPopUpChanged: + id + + + formatPopUpChanged: + id + + + getDefaultPresets: + id + + + insertPreset: + id + + + openForums: + id + + + openHomepage: + id + + + openMainWindow: + id + + + openUserGuide: + id + + + qualitySliderChanged: + id + + + revertPictureSizeToMax: + id + + + selectDefaultPreset: + id + + + selectPreset: + id + + + setDefaultPreset: + id + + + showAboutPanel: + id + + + showAddPresetPanel: + id + + + showDebugOutputPanel: + id + + + showNewScan: + id + + + showPicturePanel: + id + + + showPreferencesWindow: + id + + + showPreviewWindow: + id + + + showQueueWindow: + id + + + showSourceTitleScanPanel: + id + + + startEndFrameValueChanged: + id + + + startEndSecValueChanged: + id + + + titlePopUpChanged: + id + + + twoPassCheckboxChanged: + id + + + updateX264Widgets: + id + + + videoEncoderPopUpChanged: + id + + + videoFrameRateChanged: + id + + + videoMatrixChanged: + id + + + x264PresetsChangedDisplayExpandedOptions: + id + + + x264PresetsSliderChanged: + id + + + + + YES + + YES + fAddPresetPanel + fAdvancedView + fAudioAllowAACPassCheck + fAudioAllowAC3PassCheck + fAudioAllowDTSHDPassCheck + fAudioAllowDTSPassCheck + fAudioAllowMP3PassCheck + fAudioAutoPassthruBox + fAudioDelegate + fAudioFallbackPopUp + fBrowseSrtFileButton + fChapterTable + fChapterTableNameColumn + fCreateChapterMarkers + fDisplayX264PresetsAdditonalOptionsLabel + fDisplayX264PresetsAdditonalOptionsTextField + fDisplayX264PresetsUnparseTextField + fDstBrowseButton + fDstFile1Field + fDstFile2Field + fDstFormatField + fDstFormatPopUp + fDstMp4HttpOptFileCheck + fDstMp4LargeFileCheck + fDstMp4iPodFileCheck + fEncodeStartStopPopUp + fFramerateCfrCell + fFramerateMatrix + fFramerateVfrPfrCell + fLoadChaptersButton + fPictureSettingsField + fPresetDrawer + fPresetNewDesc + fPresetNewFolderCheck + fPresetNewName + fPresetNewPicFiltersCheck + fPresetNewPicHeight + fPresetNewPicSettingsPopUp + fPresetNewPicWidth + fPresetNewPicWidthHeightBox + fPresetSelectedDisplay + fPresetsActionButton + fPresetsAdd + fPresetsDelete + fPresetsOutlineView + fQueueStatus + fRipIndicator + fSaveChaptersButton + fScanHorizontalLine + fScanIndicator + fScanSrcTitleCancelButton + fScanSrcTitleNumField + fScanSrcTitleOpenButton + fScanSrcTitlePanel + fScanSrcTitlePathField + fSrcAngleLabel + fSrcAnglePopUp + fSrcChapterEndPopUp + fSrcChapterField + fSrcChapterStartPopUp + fSrcChapterToField + fSrcDVD2Field + fSrcDsplyNameTitleScan + fSrcDuration1Field + fSrcDuration2Field + fSrcFrameEndEncodingField + fSrcFrameStartEncodingField + fSrcTimeEndEncodingField + fSrcTimeStartEncodingField + fSrcTitleField + fSrcTitlePopUp + fStatusField + fSubField + fSubForcedCheck + fSubPopUp + fSubtitlesTable + fVidBitrateCell + fVidBitrateField + fVidConstantCell + fVidEncoderField + fVidEncoderPopUp + fVidQualityField + fVidQualityMatrix + fVidQualityRFField + fVidQualityRFLabel + fVidQualitySlider + fVidRateField + fVidRatePopUp + fVidTurboPassCheck + fVidTwoPassCheck + fPictureFiltersField + fWindow + fX264FastDecodeCheck + fX264LevelPopUp + fX264LevelPopUpLabel + fX264PresetSelectedTextField + fX264PresetSliderLabel + fX264PresetsBox + fX264PresetsSlider + fX264ProfilePopUp + fX264ProfilePopUpLabel + fX264TunePopUp + fX264TunePopUpLabel + fX264UseAdvancedOptionsCheck + + + YES + NSPanel + NSBox + NSButton + NSButton + NSButton + NSButton + NSButton + NSBox + HBAudioController + NSPopUpButton + NSButton + NSTableView + NSTableColumn + NSButton + NSTextField + NSTextField + NSTextField + NSButton + NSTextField + NSTextField + NSTextField + NSPopUpButton + NSButton + NSButton + NSButton + NSPopUpButton + NSButtonCell + NSMatrix + NSButtonCell + NSButton + NSTextField + NSDrawer + NSTextField + NSButton + NSTextField + NSButton + NSTextField + NSPopUpButton + NSTextField + NSBox + NSTextField + NSPopUpButton + NSButton + NSButton + HBPresetsOutlineView + NSTextField + NSProgressIndicator + NSButton + NSBox + NSProgressIndicator + NSButton + NSTextField + NSButton + NSPanel + NSTextField + NSTextField + NSPopUpButton + NSPopUpButton + NSTextField + NSPopUpButton + NSTextField + NSTextField + NSTextField + NSTextField + NSTextField + NSTextField + NSTextField + NSTextField + NSTextField + NSTextField + NSPopUpButton + NSTextField + NSTextField + NSButton + NSPopUpButton + NSTableView + NSButtonCell + NSTextField + NSButtonCell + NSTextField + NSPopUpButton + NSTextField + NSMatrix + NSTextField + NSTextField + NSSlider + NSTextField + NSPopUpButton + NSButton + NSButton + NSTextField + NSWindow + NSButton + NSPopUpButton + NSTextField + NSTextField + NSTextField + NSBox + NSSlider + NSPopUpButton + NSTextField + NSPopUpButton + NSTextField + NSButton + + + + YES + + YES + fAddPresetPanel + fAdvancedView + fAudioAllowAACPassCheck + fAudioAllowAC3PassCheck + fAudioAllowDTSHDPassCheck + fAudioAllowDTSPassCheck + fAudioAllowMP3PassCheck + fAudioAutoPassthruBox + fAudioDelegate + fAudioFallbackPopUp + fBrowseSrtFileButton + fChapterTable + fChapterTableNameColumn + fCreateChapterMarkers + fDisplayX264PresetsAdditonalOptionsLabel + fDisplayX264PresetsAdditonalOptionsTextField + fDisplayX264PresetsUnparseTextField + fDstBrowseButton + fDstFile1Field + fDstFile2Field + fDstFormatField + fDstFormatPopUp + fDstMp4HttpOptFileCheck + fDstMp4LargeFileCheck + fDstMp4iPodFileCheck + fEncodeStartStopPopUp + fFramerateCfrCell + fFramerateMatrix + fFramerateVfrPfrCell + fLoadChaptersButton + fPictureSettingsField + fPresetDrawer + fPresetNewDesc + fPresetNewFolderCheck + fPresetNewName + fPresetNewPicFiltersCheck + fPresetNewPicHeight + fPresetNewPicSettingsPopUp + fPresetNewPicWidth + fPresetNewPicWidthHeightBox + fPresetSelectedDisplay + fPresetsActionButton + fPresetsAdd + fPresetsDelete + fPresetsOutlineView + fQueueStatus + fRipIndicator + fSaveChaptersButton + fScanHorizontalLine + fScanIndicator + fScanSrcTitleCancelButton + fScanSrcTitleNumField + fScanSrcTitleOpenButton + fScanSrcTitlePanel + fScanSrcTitlePathField + fSrcAngleLabel + fSrcAnglePopUp + fSrcChapterEndPopUp + fSrcChapterField + fSrcChapterStartPopUp + fSrcChapterToField + fSrcDVD2Field + fSrcDsplyNameTitleScan + fSrcDuration1Field + fSrcDuration2Field + fSrcFrameEndEncodingField + fSrcFrameStartEncodingField + fSrcTimeEndEncodingField + fSrcTimeStartEncodingField + fSrcTitleField + fSrcTitlePopUp + fStatusField + fSubField + fSubForcedCheck + fSubPopUp + fSubtitlesTable + fVidBitrateCell + fVidBitrateField + fVidConstantCell + fVidEncoderField + fVidEncoderPopUp + fVidQualityField + fVidQualityMatrix + fVidQualityRFField + fVidQualityRFLabel + fVidQualitySlider + fVidRateField + fVidRatePopUp + fVidTurboPassCheck + fVidTwoPassCheck + fPictureFiltersField + fWindow + fX264FastDecodeCheck + fX264LevelPopUp + fX264LevelPopUpLabel + fX264PresetSelectedTextField + fX264PresetSliderLabel + fX264PresetsBox + fX264PresetsSlider + fX264ProfilePopUp + fX264ProfilePopUpLabel + fX264TunePopUp + fX264TunePopUpLabel + fX264UseAdvancedOptionsCheck + + + YES + + fAddPresetPanel + NSPanel + + + fAdvancedView + NSBox + + + fAudioAllowAACPassCheck + NSButton + + + fAudioAllowAC3PassCheck + NSButton + + + fAudioAllowDTSHDPassCheck + NSButton + + + fAudioAllowDTSPassCheck + NSButton + + + fAudioAllowMP3PassCheck + NSButton + + + fAudioAutoPassthruBox + NSBox + + + fAudioDelegate + HBAudioController + + + fAudioFallbackPopUp + NSPopUpButton + + + fBrowseSrtFileButton + NSButton + + + fChapterTable + NSTableView + + + fChapterTableNameColumn + NSTableColumn + + + fCreateChapterMarkers + NSButton + + + fDisplayX264PresetsAdditonalOptionsLabel + NSTextField + + + fDisplayX264PresetsAdditonalOptionsTextField + NSTextField + + + fDisplayX264PresetsUnparseTextField + NSTextField + + + fDstBrowseButton + NSButton + + + fDstFile1Field + NSTextField + + + fDstFile2Field + NSTextField + + + fDstFormatField + NSTextField + + + fDstFormatPopUp + NSPopUpButton + + + fDstMp4HttpOptFileCheck + NSButton + + + fDstMp4LargeFileCheck + NSButton + + + fDstMp4iPodFileCheck + NSButton + + + fEncodeStartStopPopUp + NSPopUpButton + + + fFramerateCfrCell + NSButtonCell + + + fFramerateMatrix + NSMatrix + + + fFramerateVfrPfrCell + NSButtonCell + + + fLoadChaptersButton + NSButton + + + fPictureSettingsField + NSTextField + + + fPresetDrawer + NSDrawer + + + fPresetNewDesc + NSTextField + + + fPresetNewFolderCheck + NSButton + + + fPresetNewName + NSTextField + + + fPresetNewPicFiltersCheck + NSButton + + + fPresetNewPicHeight + NSTextField + + + fPresetNewPicSettingsPopUp + NSPopUpButton + + + fPresetNewPicWidth + NSTextField + + + fPresetNewPicWidthHeightBox + NSBox + + + fPresetSelectedDisplay + NSTextField + + + fPresetsActionButton + NSPopUpButton + + + fPresetsAdd + NSButton + + + fPresetsDelete + NSButton + + + fPresetsOutlineView + HBPresetsOutlineView + + + fQueueStatus + NSTextField + + + fRipIndicator + NSProgressIndicator + + + fSaveChaptersButton + NSButton + + + fScanHorizontalLine + NSBox + + + fScanIndicator + NSProgressIndicator + + + fScanSrcTitleCancelButton + NSButton + + + fScanSrcTitleNumField + NSTextField + + + fScanSrcTitleOpenButton + NSButton + + + fScanSrcTitlePanel + NSPanel + + + fScanSrcTitlePathField + NSTextField + + + fSrcAngleLabel + NSTextField + + + fSrcAnglePopUp + NSPopUpButton + + + fSrcChapterEndPopUp + NSPopUpButton + + + fSrcChapterField + NSTextField + + + fSrcChapterStartPopUp + NSPopUpButton + + + fSrcChapterToField + NSTextField + + + fSrcDVD2Field + NSTextField + + + fSrcDsplyNameTitleScan + NSTextField + + + fSrcDuration1Field + NSTextField + + + fSrcDuration2Field + NSTextField + + + fSrcFrameEndEncodingField + NSTextField + + + fSrcFrameStartEncodingField + NSTextField + + + fSrcTimeEndEncodingField + NSTextField + + + fSrcTimeStartEncodingField + NSTextField + + + fSrcTitleField + NSTextField + + + fSrcTitlePopUp + NSPopUpButton + + + fStatusField + NSTextField + + + fSubField + NSTextField + + + fSubForcedCheck + NSButton + + + fSubPopUp + NSPopUpButton + + + fSubtitlesTable + NSTableView + + + fVidBitrateCell + NSButtonCell + + + fVidBitrateField + NSTextField + + + fVidConstantCell + NSButtonCell + + + fVidEncoderField + NSTextField + + + fVidEncoderPopUp + NSPopUpButton + + + fVidQualityField + NSTextField + + + fVidQualityMatrix + NSMatrix + + + fVidQualityRFField + NSTextField + + + fVidQualityRFLabel + NSTextField + + + fVidQualitySlider + NSSlider + + + fVidRateField + NSTextField + + + fVidRatePopUp + NSPopUpButton + + + fVidTurboPassCheck + NSButton + + + fVidTwoPassCheck + NSButton + + + fPictureFiltersField + NSTextField + + + fWindow + NSWindow + + + fX264FastDecodeCheck + NSButton + + + fX264LevelPopUp + NSPopUpButton + + + fX264LevelPopUpLabel + NSTextField + + + fX264PresetSelectedTextField + NSTextField + + + fX264PresetSliderLabel + NSTextField + + + fX264PresetsBox + NSBox + + + fX264PresetsSlider + NSSlider + + + fX264ProfilePopUp + NSPopUpButton + + + fX264ProfilePopUpLabel + NSTextField + + + fX264TunePopUp + NSPopUpButton + + + fX264TunePopUpLabel + NSTextField + + + fX264UseAdvancedOptionsCheck + NSButton + + + + + IBProjectSource + ./Classes/HBController.h + + + + HBPresetsOutlineView + NSOutlineView + + IBProjectSource + ./Classes/HBPresetsOutlineView.h + + + + SUUpdater + NSObject + + checkForUpdates: + id + + + checkForUpdates: + + checkForUpdates: + id + + + + delegate + id + + + delegate + + delegate + id + + + + IBProjectSource + ./Classes/SUUpdater.h + + + + + 0 + IBCocoaFramework + + com.apple.InterfaceBuilder.CocoaPlugin.macosx + + + + com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3 + + + YES + 3 + + YES + + YES + HandBrake.icns + NSActionTemplate + NSAddTemplate + NSMenuCheckmark + NSMenuMixedState + NSRemoveTemplate + NSSwitch + + + YES + {128, 128} + {15, 15} + {8, 8} + {11, 11} + {10, 3} + {8, 8} + {15, 15} + + + + diff -Nru handbrake-0.9.9+dfsg/macosx/English.lproj/OutputPanel.xib handbrake-0.9.9+ppa1/macosx/English.lproj/OutputPanel.xib --- handbrake-0.9.9+dfsg/macosx/English.lproj/OutputPanel.xib 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/English.lproj/OutputPanel.xib 2013-01-01 18:38:36.000000000 +0000 @@ -0,0 +1,612 @@ + + + + 1050 + 11G63 + 1938 + 1138.51 + 569.00 + + com.apple.InterfaceBuilder.CocoaPlugin + 1938 + + + YES + NSView + NSMenu + NSScrollView + NSWindowTemplate + NSMenuItem + NSTextView + NSScroller + NSCustomObject + + + YES + com.apple.InterfaceBuilder.CocoaPlugin + + + PluginDependencyRecalculationVersion + + + + YES + + HBOutputPanelController + + + FirstResponder + + + NSApplication + + + 15 + 2 + {{155, 772}, {378, 371}} + -260571136 + Activity Window - HandBrake + NSPanel + + View + + + {214.50200000000001, 107} + + + 256 + + YES + + + 274 + + YES + + + 2304 + + YES + + + 2322 + {363, 14} + + + + + + + + + + + YES + + + 6 + + + + 363 + 1 + + + 11109 + 0 + + + 3 + MQA + + + YES + + YES + NSBackgroundColor + NSColor + + + YES + + 6 + System + selectedTextBackgroundColor + + 3 + MC42NjY2NjY2NjY3AA + + + + 6 + System + selectedTextColor + + 3 + MAA + + + + + + + YES + + YES + NSColor + NSUnderline + + + YES + + 1 + MCAwIDEAA + + + + + + + 1 + + 6 + {743, 10000000} + {83, 0} + + + + {{1, 1}, {363, 371}} + + + + + + {4, 5} + + 12582912 + + YES + + YES + + + + TU0AKgAAAHCAFUqgBVKsAAAAwdVQUqwaEQeIRGJRGFlYqwWLQ+JxuOQpVRmEx2RROKwOQyOUQSPyaUym +SxqWyKXyeYxyZzWbSuJTScRCbz2Nz+gRKhUOfTqeUai0OSxiWTiBQSHSGFquGwekxyAgAAAOAQAAAwAA +AAEAEAAAAQEAAwAAAAEAEAAAAQIAAwAAAAIACAAIAQMAAwAAAAEABQAAAQYAAwAAAAEAAQAAAREABAAA +AAEAAAAIARIAAwAAAAEAAQAAARUAAwAAAAEAAgAAARYAAwAAAAEAEAAAARcABAAAAAEAAABnARwAAwAA +AAEAAQAAAT0AAwAAAAEAAgAAAVIAAwAAAAEAAQAAAVMAAwAAAAIAAQABAAAAAA + + + + + + 3 + MCAwAA + + + + 4 + + + + 256 + {{364, 1}, {15, 371}} + + + _doScroller: + 0.60032359999999996 + + + + -2147483392 + {{-100, -100}, {87, 18}} + + 1 + + _doScroller: + 1 + 0.94565220000000005 + + + {{-1, -1}, {380, 373}} + + + 133138 + + + + AAAAAAAAAAAAAAAAAAAAAA + + + {378, 371} + + + {{0, 0}, {1440, 878}} + {214.50200000000001, 129} + {10000000000000, 10000000000000} + YES + + + Menu + + YES + + + Copy Window Contents + + 1048576 + 2147483647 + + NSImage + NSMenuCheckmark + + + NSImage + NSMenuMixedState + + + + + Clear Window Contents + + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Open Log File For This Session + + 1048576 + 2147483647 + + + + + + Clear Log File For This Session + + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Open Individual Log File Directory + + 1048576 + 2147483647 + + + + + + + + + + YES + + + textView + + + + 23 + + + + clearOutput: + + + + 27 + + + + copyAllOutputToPasteboard: + + + + 32 + + + + openActivityLogFile: + + + + 34 + + + + clearActivityLogFile: + + + + 36 + + + + window + + + + 41 + + + + openEncodeLogDirectory: + + + + 44 + + + + delegate + + + + 17 + + + + delegate + + + + 21 + + + + menu + + + + 22 + + + + + YES + + 0 + + YES + + + + + + -2 + + + File's Owner + + + -1 + + + First Responder + + + -3 + + + Application + + + 5 + + + YES + + + + OutputPanel + + + 6 + + + YES + + + + + + 19 + + + YES + + + + + + + + 20 + + + + + 11 + + + YES + + + + + + + + + + ContextMenu + + + 12 + + + + + 24 + + + + + 33 + + + + + 35 + + + + + 37 + + + + + 39 + + + + + 40 + + + + + 42 + + + + + 43 + + + + + + + YES + + YES + -1.IBPluginDependency + -2.IBPluginDependency + -3.IBPluginDependency + 11.IBPluginDependency + 12.IBPluginDependency + 19.IBPluginDependency + 20.IBPluginDependency + 24.IBPluginDependency + 33.IBPluginDependency + 35.IBPluginDependency + 37.IBPluginDependency + 39.IBPluginDependency + 39.IBShouldRemoveOnLegacySave + 40.IBPluginDependency + 40.IBShouldRemoveOnLegacySave + 42.IBPluginDependency + 43.IBPluginDependency + 5.IBPluginDependency + 5.IBWindowTemplateEditedContentRect + 6.IBPluginDependency + + + YES + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + {{597, 246}, {378, 371}} + com.apple.InterfaceBuilder.CocoaPlugin + + + + YES + + + + + + YES + + + + + 44 + + + 0 + IBCocoaFramework + + com.apple.InterfaceBuilder.CocoaPlugin.macosx + + + + com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3 + + + YES + 3 + + YES + + YES + NSMenuCheckmark + NSMenuMixedState + + + YES + {11, 11} + {10, 3} + + + + diff -Nru handbrake-0.9.9+dfsg/macosx/English.lproj/PicturePreview.xib handbrake-0.9.9+ppa1/macosx/English.lproj/PicturePreview.xib --- handbrake-0.9.9+dfsg/macosx/English.lproj/PicturePreview.xib 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/English.lproj/PicturePreview.xib 2013-04-10 19:34:02.000000000 +0000 @@ -0,0 +1,2116 @@ + + + + 1050 + 12D61 + 3084 + 1187.37 + 626.00 + + YES + + YES + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.QTKitIBPlugin + + + YES + 3084 + 2053 + + + + YES + NSBox + NSButton + NSButtonCell + NSCustomObject + NSMenu + NSMenuItem + NSPopUpButton + NSPopUpButtonCell + NSProgressIndicator + NSSlider + NSSliderCell + NSTextField + NSTextFieldCell + NSView + NSWindowTemplate + QTMovieView + + + YES + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.QTKitIBPlugin + + + PluginDependencyRecalculationVersion + + + + YES + + PreviewController + + + FirstResponder + + + NSApplication + + + 7 + 2 + {{142, 519}, {490, 360}} + 1886913536 + HandBrake Preview + NSPanel + + View + + + + + 274 + + YES + + + 274 + + YES + + YES + Apple URL pasteboard type + CorePasteboardFlavorType 0x6D6F6F76 + NSFilenamesPboardType + QTMoviePasteboardType + + + {490, 360} + + + + + 1 + MC44MDAwMDAwMSAwLjgwMDAwMDAxIDAuODAwMDAwMDEAA + + + + + + + + + -2147483611 + + YES + + + 274 + + YES + + + 292 + + YES + + {{17, 11}, {77, 16}} + + + + + YES + + + 0.70196080207824707 + 0.70196080207824707 + 0.70196080207824707 + 1 + + + YES + + + YES + + 67108864 + 134479872 + Live Preview + + LucidaGrande + 9 + 3614 + + + -2038284288 + 129 + + + + 200 + 25 + + NO + + + + 289 + + YES + + {{370, 11}, {59, 16}} + + + + + YES + + + 0.70196080207824707 + 0.70196080207824707 + 0.70196080207824707 + 1 + + + YES + + + YES + + 67108864 + 134479872 + Settings + + + -2038284288 + 129 + + + + 200 + 25 + + NO + + + + 289 + + YES + + {{272, 11}, {92, 16}} + + + + + YES + + + 0.70196080207824707 + 0.70196080207824707 + 0.70196080207824707 + 1 + + + YES + + + YES + + 67108864 + 134479872 + Scale To Screen + + + -2038284288 + 129 + + LucidaGrande + 9 + 16 + + + + 200 + 25 + + NO + + + + 289 + {{108, 14}, {75, 11}} + + + + YES + + 68157504 + 71566336 + Duration (sec): + + LucidaGrande-Bold + 9 + 16 + + + + 6 + System + controlColor + + 3 + MC42NjY2NjY2NjY3AA + + + + 1 + MSAxIDEAA + + + NO + + + + 289 + {{187, 12}, {58, 15}} + + + + + YES + + + 0.70196080207824707 + 0.70196080207824707 + 0.70196080207824707 + 1 + + + YES + + + YES + + -2076180416 + 264192 + + + 109199360 + 1 + + + 400 + 75 + + + Item 1 + + 1048576 + 2147483647 + 1 + + NSImage + NSMenuCheckmark + + + NSImage + NSMenuMixedState + + _popUpItemAction: + + + YES + + OtherViews + + YES + + + + Item 2 + + 1048576 + 2147483647 + + + _popUpItemAction: + + + + + Item 3 + + 1048576 + 2147483647 + + + _popUpItemAction: + + + + + 1 + YES + YES + 2 + + NO + + + + 290 + {{18, 39}, {410, 16}} + + + + + YES + + + 0.70196080207824707 + 0.70196080207824707 + 0.70196080207824707 + 1 + + + YES + + + YES + + 67371264 + 262144 + + + + 9 + 0.0 + 0.0 + 0.0 + 10 + 1 + YES + NO + + NO + + + + 290 + {{15, 55}, {420, 20}} + + + + YES + + 67108864 + 4325376 + + + LucidaGrande-Bold + 11 + 16 + + + YES + + + + NO + + + + 290 + {{15, 77}, {416, 12}} + + + + YES + + 67108864 + 4456448 + + + + YES + + + + NO + + + {{2, 2}, {446, 96}} + + + + + + {{15, 132}, {460, 100}} + + + + {0, 0} + + 67108864 + 0 + Picture Controls + + LucidaGrande + 11 + 3100 + + + 6 + System + textBackgroundColor + + 3 + MQA + + + + 3 + MCAwLjgwMDAwMDAxAA + + + + 1 + 4 + 0 + NO + + 12 + + 1 + MSAxIDEgMC44AA + + + 1 + MCAwIDAgMC42AA + + + + + -2147483611 + + YES + + + 274 + + YES + + + 290 + {{16, 16}, {355, 21}} + + + + + YES + + + 0.70196080207824707 + 0.70196080207824707 + 0.70196080207824707 + 1 + + + YES + + + YES + + 67371264 + 0 + + + 100 + 0.0 + 0.0 + 0.0 + 0 + 1 + NO + NO + + NO + + + + 268 + + YES + + {{205, 43}, {36, 36}} + + + + YES + + 67108864 + 134217728 + + + LucidaGrande + 13 + 1044 + + + -931921920 + 134 + + NSImage + play-p + + + NSImage + pause-p + + + + 200 + 25 + + NO + + + + 268 + + YES + + {{163, 48}, {32, 26}} + + + + YES + + 67108864 + 134217728 + + + + -2041839616 + 134 + + NSImage + prev-p + + + + 200 + 25 + + NO + + + + 268 + + YES + + {{251, 48}, {32, 26}} + + + + YES + + 67108864 + 134479872 + + + + -2042363904 + 134 + + NSImage + next-p + + + + 200 + 25 + + NO + + + + 292 + + YES + + {{348, 53}, {81, 16}} + + + + + YES + + + 0.70196080207824707 + 0.70196080207824707 + 0.70196080207824707 + 1 + + + YES + + + YES + + 67108864 + 134479872 + Still Previews + + + -2038284288 + 129 + + + + 200 + 25 + + NO + + + + 290 + {{364, 19}, {67, 14}} + + + + YES + + 67108864 + 71565312 + 00:00:00 + + + YES + + + + NO + + + {{2, 2}, {446, 96}} + + + + + + {{15, 30}, {460, 100}} + + + + {0, 0} + + 67108864 + 0 + Playback Controls + + + + 3 + MCAwLjgwMDAwMDAxAA + + + + 1 + 4 + 0 + NO + + 12 + + 1 + MSAxIDEgMC44AA + + + 1 + MCAwIDAgMC42AA + + + + + -2147483611 + + YES + + + 274 + + YES + + + 1280 + {{18, 26}, {346, 12}} + + + + + YES + + + 0.70196080207824707 + 0.70196080207824707 + 0.70196080207824707 + 1 + + + YES + + + 16650 + 100 + + + + 265 + + YES + + {{371, 24}, {58, 16}} + + + + + YES + + + 0.70196080207824707 + 0.70196080207824707 + 0.70196080207824707 + 1 + + + YES + + + YES + + 67108864 + 134479872 + Cancel + + + -2038284288 + 129 + + + + 200 + 25 + + NO + + + + 256 + {{15, 59}, {406, 14}} + + + + YES + + 68157504 + 4326400 + Preparing Preview + + + + 2 + MC45MDE5NjA4NSAwLjkwMTk2MDg1IDAuOTAxOTYwODUgMAA + + + + NO + + + {{2, 2}, {446, 96}} + + + + + + {{15, 235}, {460, 100}} + + + + {0, 0} + + 67108864 + 0 + Encoding Controls + + + + 3 + MCAwLjgwMDAwMDAxAA + + + + 1 + 4 + 0 + NO + + 12 + + 1 + MSAxIDEgMC44AA + + + 1 + MCAwIDAgMC42AA + + + + {490, 360} + + + + + {{0, 0}, {2560, 1418}} + {10000000000000, 10000000000000} + YES + + + + + YES + + + window + + + + 184 + + + + fCreatePreviewMovieButton + + + + 217 + + + + fscaleInfoField + + + + 282 + + + + fPreviewMovieLengthPopUp + + + + 232 + + + + previewDurationPopUpChanged: + + + + 233 + + + + fPictureControlBox + + + + 254 + + + + pictureSliderChanged: + + + + 212 + + + + createMoviePreview: + + + + 218 + + + + fPictureSettingsToggleButton + + + + 273 + + + + toggleScaleToScreen: + + + + 279 + + + + fScaleToScreenToggleButton + + + + 277 + + + + fPictureSlider + + + + 211 + + + + showPictureSettings: + + + + 274 + + + + fInfoField + + + + 73 + + + + fGoToBeginningButton + + + + 380 + + + + fMovieScrubberSlider + + + + 371 + + + + fMovieInfoField + + + + 374 + + + + fGoToEndButton + + + + 381 + + + + moviePlaybackGoToEnd: + + + + 383 + + + + toggleMoviePreviewPlayPause: + + + + 370 + + + + fPlayPauseButton + + + + 364 + + + + moviePlaybackGoToBeginning: + + + + 382 + + + + fGoToStillPreviewButton + + + + 368 + + + + previewScrubberChanged: + + + + 384 + + + + fMoviePlaybackControlBox + + + + 363 + + + + showPicturesPreview: + + + + 396 + + + + fMovieCreationProgressIndicator + + + + 214 + + + + cancelCreateMoviePreview: + + + + 395 + + + + fPreviewMovieStatusField + + + + 225 + + + + fCancelPreviewMovieButton + + + + 263 + + + + fEncodingControlBox + + + + 253 + + + + fMovieView + + + + 208 + + + + + YES + + 0 + + YES + + + + + + -2 + + + File's Owner + + + -1 + + + First Responder + + + -3 + + + Application + + + 5 + + + YES + + + + PreviewPanel + + + 6 + + + YES + + + + + + + + + 335 + + + YES + + + + + + + + + + + 365 + + + YES + + + + + + 375 + + + YES + + + + + + 378 + + + YES + + + + + + 361 + + + YES + + + + + + 372 + + + YES + + + + + + 341 + + + YES + + + + + + 346 + + + + + 373 + + + + + 362 + + + + + 379 + + + + + 376 + + + + + 366 + + + + + 252 + + + YES + + + + + + + + 261 + + + YES + + + + + + 223 + + + YES + + + + + + 213 + + + + + 224 + + + + + 262 + + + + + 251 + + + YES + + + + + + + + + + + + + 38 + + + YES + + + + + + 165 + + + + + 209 + + + YES + + + + + + 210 + + + + + 280 + + + YES + + + + + + 281 + + + + + 275 + + + YES + + + + + + 276 + + + + + 215 + + + YES + + + + + + 216 + + + + + 271 + + + YES + + + + + + 272 + + + + + 226 + + + YES + + + + + + 227 + + + YES + + + + + + 228 + + + YES + + + + + + + + 231 + + + + + 230 + + + + + 229 + + + + + 234 + + + YES + + + + + + 235 + + + + + 207 + + + + + + + YES + + YES + -1.IBPluginDependency + -2.IBPluginDependency + -3.IBPluginDependency + 165.IBPluginDependency + 207.IBPluginDependency + 209.IBPluginDependency + 210.IBPluginDependency + 213.IBPluginDependency + 215.IBAttributePlaceholdersKey + 215.IBPluginDependency + 215.IBViewIntegration.shadowBlurRadius + 215.IBViewIntegration.shadowColor + 215.IBViewIntegration.shadowOffsetHeight + 215.IBViewIntegration.shadowOffsetWidth + 216.IBPluginDependency + 223.IBPluginDependency + 224.IBPluginDependency + 226.IBAttributePlaceholdersKey + 226.IBPluginDependency + 227.IBPluginDependency + 228.IBPluginDependency + 229.IBPluginDependency + 230.IBPluginDependency + 231.IBPluginDependency + 234.IBPluginDependency + 235.IBPluginDependency + 251.IBPluginDependency + 251.IBViewIntegration.shadowBlurRadius + 251.IBViewIntegration.shadowColor + 251.IBViewIntegration.shadowOffsetHeight + 251.IBViewIntegration.shadowOffsetWidth + 252.IBPluginDependency + 252.IBViewIntegration.shadowBlurRadius + 252.IBViewIntegration.shadowColor + 252.IBViewIntegration.shadowOffsetHeight + 252.IBViewIntegration.shadowOffsetWidth + 261.IBAttributePlaceholdersKey + 261.IBPluginDependency + 262.IBPluginDependency + 271.IBAttributePlaceholdersKey + 271.IBPluginDependency + 271.IBViewIntegration.shadowBlurRadius + 271.IBViewIntegration.shadowColor + 271.IBViewIntegration.shadowOffsetHeight + 271.IBViewIntegration.shadowOffsetWidth + 272.IBPluginDependency + 275.IBAttributePlaceholdersKey + 275.IBPluginDependency + 275.IBViewIntegration.shadowBlurRadius + 275.IBViewIntegration.shadowColor + 275.IBViewIntegration.shadowOffsetHeight + 275.IBViewIntegration.shadowOffsetWidth + 276.IBPluginDependency + 280.IBPluginDependency + 281.IBPluginDependency + 335.IBPluginDependency + 335.IBViewIntegration.shadowBlurRadius + 335.IBViewIntegration.shadowColor + 335.IBViewIntegration.shadowOffsetHeight + 335.IBViewIntegration.shadowOffsetWidth + 341.IBPluginDependency + 346.IBPluginDependency + 361.IBAttributePlaceholdersKey + 361.IBPluginDependency + 362.IBPluginDependency + 365.IBAttributePlaceholdersKey + 365.IBPluginDependency + 365.IBViewIntegration.shadowBlurRadius + 365.IBViewIntegration.shadowColor + 365.IBViewIntegration.shadowOffsetHeight + 365.IBViewIntegration.shadowOffsetWidth + 366.IBPluginDependency + 372.IBPluginDependency + 373.IBPluginDependency + 375.IBAttributePlaceholdersKey + 375.IBPluginDependency + 376.IBPluginDependency + 378.IBAttributePlaceholdersKey + 378.IBPluginDependency + 379.IBPluginDependency + 38.IBPluginDependency + 5.IBPluginDependency + 5.IBWindowTemplateEditedContentRect + 6.IBPluginDependency + 6.IBViewIntegration.shadowBlurRadius + 6.IBViewIntegration.shadowColor + 6.IBViewIntegration.shadowOffsetHeight + 6.IBViewIntegration.shadowOffsetWidth + + + YES + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.QTKitIBPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + ToolTip + + ToolTip + + Encode And Play Back A Live Preview At Your Current Settings + + + com.apple.InterfaceBuilder.CocoaPlugin + + + 3 + MAA + + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + ToolTip + + ToolTip + + Select The Length Of Live Preview to Encode + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + + + + com.apple.InterfaceBuilder.CocoaPlugin + + + + + + ToolTip + + ToolTip + + Cancel Live Preview Encode + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + ToolTip + + ToolTip + + Show Picture Settings Inspector + + + com.apple.InterfaceBuilder.CocoaPlugin + + + + + com.apple.InterfaceBuilder.CocoaPlugin + + ToolTip + + ToolTip + + Scale Preview To Screen + + + com.apple.InterfaceBuilder.CocoaPlugin + + + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + ToolTip + + ToolTip + + Toggle Play/Pause + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + ToolTip + + ToolTip + + Show Still Previews + + + com.apple.InterfaceBuilder.CocoaPlugin + + + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + ToolTip + + ToolTip + + Go To Beginning + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + ToolTip + + ToolTip + + Go To End + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + {{262, 474}, {490, 360}} + com.apple.InterfaceBuilder.CocoaPlugin + + + + + + + + YES + + + + + + YES + + + + + 396 + + + + YES + + PreviewController + NSWindowController + + YES + + YES + cancelCreateMoviePreview: + createMoviePreview: + moviePlaybackGoBackwardOneFrame: + moviePlaybackGoForwardOneFrame: + moviePlaybackGoToBeginning: + moviePlaybackGoToEnd: + pictureSliderChanged: + previewDurationPopUpChanged: + previewScrubberChanged: + settingsChanged: + showMoviePreview: + showPictureSettings: + showPicturesPreview: + toggleMoviePreviewPlayPause: + toggleScaleToScreen: + + + YES + id + id + id + id + id + id + id + id + id + id + NSString + id + id + id + id + + + + YES + + YES + cancelCreateMoviePreview: + createMoviePreview: + moviePlaybackGoBackwardOneFrame: + moviePlaybackGoForwardOneFrame: + moviePlaybackGoToBeginning: + moviePlaybackGoToEnd: + pictureSliderChanged: + previewDurationPopUpChanged: + previewScrubberChanged: + settingsChanged: + showMoviePreview: + showPictureSettings: + showPicturesPreview: + toggleMoviePreviewPlayPause: + toggleScaleToScreen: + + + YES + + cancelCreateMoviePreview: + id + + + createMoviePreview: + id + + + moviePlaybackGoBackwardOneFrame: + id + + + moviePlaybackGoForwardOneFrame: + id + + + moviePlaybackGoToBeginning: + id + + + moviePlaybackGoToEnd: + id + + + pictureSliderChanged: + id + + + previewDurationPopUpChanged: + id + + + previewScrubberChanged: + id + + + settingsChanged: + id + + + showMoviePreview: + NSString + + + showPictureSettings: + id + + + showPicturesPreview: + id + + + toggleMoviePreviewPlayPause: + id + + + toggleScaleToScreen: + id + + + + + YES + + YES + fCancelPreviewMovieButton + fCreatePreviewMovieButton + fEncodingControlBox + fGoBackwardOneFrameButton + fGoForwardOneFrameButton + fGoToBeginningButton + fGoToEndButton + fGoToStillPreviewButton + fInfoField + fMovieCreationProgressIndicator + fMovieInfoField + fMoviePlaybackControlBox + fMovieScrubberSlider + fMovieView + fPictureControlBox + fPictureSettingsToggleButton + fPictureSlider + fPlayPauseButton + fPreviewMovieLengthPopUp + fPreviewMovieStatusField + fScaleToScreenToggleButton + fShowPreviewMovieButton + fscaleInfoField + + + YES + NSButton + NSButton + NSBox + NSButton + NSButton + NSButton + NSButton + NSButton + NSTextField + NSProgressIndicator + NSTextField + NSBox + NSSlider + QTMovieView + NSBox + NSButton + NSSlider + NSButton + NSPopUpButton + NSTextField + NSButton + NSButton + NSTextField + + + + YES + + YES + fCancelPreviewMovieButton + fCreatePreviewMovieButton + fEncodingControlBox + fGoBackwardOneFrameButton + fGoForwardOneFrameButton + fGoToBeginningButton + fGoToEndButton + fGoToStillPreviewButton + fInfoField + fMovieCreationProgressIndicator + fMovieInfoField + fMoviePlaybackControlBox + fMovieScrubberSlider + fMovieView + fPictureControlBox + fPictureSettingsToggleButton + fPictureSlider + fPlayPauseButton + fPreviewMovieLengthPopUp + fPreviewMovieStatusField + fScaleToScreenToggleButton + fShowPreviewMovieButton + fscaleInfoField + + + YES + + fCancelPreviewMovieButton + NSButton + + + fCreatePreviewMovieButton + NSButton + + + fEncodingControlBox + NSBox + + + fGoBackwardOneFrameButton + NSButton + + + fGoForwardOneFrameButton + NSButton + + + fGoToBeginningButton + NSButton + + + fGoToEndButton + NSButton + + + fGoToStillPreviewButton + NSButton + + + fInfoField + NSTextField + + + fMovieCreationProgressIndicator + NSProgressIndicator + + + fMovieInfoField + NSTextField + + + fMoviePlaybackControlBox + NSBox + + + fMovieScrubberSlider + NSSlider + + + fMovieView + QTMovieView + + + fPictureControlBox + NSBox + + + fPictureSettingsToggleButton + NSButton + + + fPictureSlider + NSSlider + + + fPlayPauseButton + NSButton + + + fPreviewMovieLengthPopUp + NSPopUpButton + + + fPreviewMovieStatusField + NSTextField + + + fScaleToScreenToggleButton + NSButton + + + fShowPreviewMovieButton + NSButton + + + fscaleInfoField + NSTextField + + + + + IBProjectSource + ./Classes/PreviewController.h + + + + + 0 + IBCocoaFramework + + com.apple.InterfaceBuilder.CocoaPlugin.macosx + + + + com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3 + + + YES + 3 + + YES + + YES + NSMenuCheckmark + NSMenuMixedState + next-p + pause-p + play-p + prev-p + + + YES + {11, 11} + {10, 3} + {48, 48} + {48, 48} + {48, 48} + {48, 48} + + + + diff -Nru handbrake-0.9.9+dfsg/macosx/English.lproj/PictureSettings.xib handbrake-0.9.9+ppa1/macosx/English.lproj/PictureSettings.xib --- handbrake-0.9.9+dfsg/macosx/English.lproj/PictureSettings.xib 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/English.lproj/PictureSettings.xib 2009-05-01 19:54:18.000000000 +0000 @@ -0,0 +1,4772 @@ + + + + 1050 + 9G55 + 677 + 949.43 + 353.00 + + YES + + + + YES + com.apple.InterfaceBuilder.CocoaPlugin + + + YES + + YES + + + YES + + + + YES + + PictureController + + + FirstResponder + + + NSApplication + + + 8215 + 2 + {{63, 414}, {849, 399}} + -260570112 + Picture Settings + NSPanel + + View + + {3.40282e+38, 3.40282e+38} + + + 256 + + YES + + + 256 + {{19, 474}, {55, 17}} + + YES + + 67239424 + 4194304 + Size + + LucidaGrande + 1.100000e+01 + 3100 + + + + 6 + System + controlColor + + 3 + MC42NjY2NjY2OQA + + + + 1 + MC44MDAwMDAwMSAwLjgwMDAwMDAxIDAuODAwMDAwMDEAA + + + + + + 268 + {{19, 373}, {57, 25}} + + YES + + YES + + + 7.019608e-01 + 7.019608e-01 + 7.019608e-01 + 1.000000e+00 + + + YES + + + YES + + 67239424 + 134479872 + Preview + + LucidaGrande + 9.000000e+00 + 3614 + + + -2038284033 + 163 + + + 200 + 25 + + + + + 292 + {{18, 6}, {425, 19}} + + YES + + -2079195584 + 4457472 + + + + + 1 + MC4yIDAuMiAwLjIAA + + + 1 + MSAxIDEAA + + + + + + 18 + {{15, 19}, {821, 362}} + + + YES + + + 7.019608e-01 + 7.019608e-01 + 7.019608e-01 + 1.000000e+00 + + + YES + + + + YES + + 1 + + + 256 + + YES + + + 268 + + YES + + + 256 + + YES + + + 256 + {{203, 93}, {82, 16}} + + YES + + 67239424 + 71434240 + Display Width: + + + + + + + + + 292 + {{289, 93}, {61, 16}} + + YES + + -1804468671 + 4457472 + + + + YES + + 1 + MC4yIDAuMiAwLjIAA + + + + + + + 292 + {{446, 94}, {37, 16}} + + YES + + -1804468671 + 4457472 + + + + YES + + 1 + MC4yIDAuMiAwLjIAA + + + + + + + 292 + {{446, 52}, {37, 16}} + + YES + + -1804468671 + 4457472 + + + + YES + + 1 + MC4yIDAuMiAwLjIAA + + + + + + + 256 + {{375, 94}, {67, 16}} + + YES + + 67239424 + 71434240 + PAR Width: + + + + + + + + + 256 + {{370, 52}, {71, 16}} + + YES + + 67239424 + 71434240 + PAR Height: + + + + + + + + + 292 + {{155, 90}, {15, 22}} + + YES + + YES + + + 7.019608e-01 + 7.019608e-01 + 7.019608e-01 + 1.000000e+00 + + + YES + + + YES + + 68025888 + 131072 + + + 6.400000e+01 + 6.400000e+01 + 5.900000e+01 + 1.600000e+01 + YES + + + + + 292 + {{91, 9}, {46, 15}} + + YES + + YES + + + 7.019608e-01 + 7.019608e-01 + 7.019608e-01 + 1.000000e+00 + + + YES + + + YES + + -2076049856 + 264192 + + + 109199615 + 1 + + + 400 + 75 + + + 16 + + 1048576 + 2147483647 + 1 + + NSImage + NSMenuCheckmark + + + NSImage + NSMenuMixedState + + _popUpItemAction: + + + YES + + OtherViews + + YES + + + + 8 + + 1048576 + 2147483647 + + + _popUpItemAction: + + + + + 4 + + 1048576 + 2147483647 + + + _popUpItemAction: + + + + + 1 + YES + YES + 2 + + + + + 292 + {{91, 95}, {62, 16}} + + YES + + -2075001280 + 4457472 + + + + YES + + 1 + MC4yIDAuMiAwLjIAA + + + + + + + 292 + {{155, 49}, {15, 22}} + + YES + + 68025888 + 131072 + + + 5.900000e+01 + 6.400000e+01 + 5.900000e+01 + 1.600000e+01 + YES + + + + + 292 + {{10, 31}, {73, 14}} + + YES + + 67239488 + 71435264 + Anamorphic: + + + + + + + + + 292 + {{28, 55}, {55, 14}} + + YES + + 67239424 + 71434240 + Height: + + + + + + + + + 292 + {{90, 30}, {80, 15}} + + + YES + + + 7.019608e-01 + 7.019608e-01 + 7.019608e-01 + 1.000000e+00 + + + YES + + + YES + + -2076049856 + 264192 + + + 109199615 + 1 + + + 400 + 75 + + + Item 1 + + 1048576 + 2147483647 + 1 + + + _popUpItemAction: + + + YES + + OtherViews + + YES + + + + Item 2 + + 1048576 + 2147483647 + + + _popUpItemAction: + + + + + Item 3 + + 1048576 + 2147483647 + + + _popUpItemAction: + + + + + 1 + YES + YES + 2 + + + + + 292 + {{10, 10}, {73, 14}} + + YES + + 67239488 + 71435264 + Modulus: + + + + + + + + + 292 + {{0, 95}, {82, 14}} + + YES + + 67239424 + 71434240 + Width: + + + + + + + + + 292 + {{91, 52}, {62, 16}} + + YES + + -2075001280 + 4457472 + + + + YES + + + + + + + 292 + {{153, 71}, {18, 18}} + + YES + + YES + + + 7.019608e-01 + 7.019608e-01 + 7.019608e-01 + 1.000000e+00 + + + YES + + + YES + + 67239424 + 67239936 + Keep aspect ratio: + + + 1210864127 + 2 + + NSSwitch + + + + 200 + 25 + + + + + 292 + {{32, 73}, {123, 14}} + + YES + + 67239424 + 71434240 + Keep Aspect Ratio: + + + + + + + + + 292 + {{173, 53}, {112, 14}} + + YES + + 67239424 + 71434240 + Keep Aspect Ratio: + + + + + + + + {{1, 1}, {511, 124}} + + + + {{0, 202}, {513, 126}} + + {0, 0} + + 67239424 + 0 + Box + + + 6 + System + textBackgroundColor + + 3 + MQA + + + + 3 + MCAwLjgwMDAwMDAxAA + + + + 1 + 0 + 0 + NO + + + + 268 + + YES + + + 256 + + YES + + + 268 + {{165, 53}, {15, 22}} + + YES + + YES + + + 7.019608e-01 + 7.019608e-01 + 7.019608e-01 + 1.000000e+00 + + + YES + + + + YES + + + 6.000000e-01 + 4.500000e-01 + 3.000000e-01 + 1.000000e+00 + + + YES + + + YES + + 68025888 + 131072 + + + 5.900000e+01 + 2.000000e+00 + YES + + + + + 268 + {{251, 41}, {15, 22}} + + YES + + YES + + + 7.019608e-01 + 7.019608e-01 + 7.019608e-01 + 1.000000e+00 + + + YES + + + YES + + 68025888 + 131072 + + + 5.900000e+01 + 2.000000e+00 + YES + + + + + 268 + {{76, 88}, {20, 24}} + + + YES + + + 7.019608e-01 + 7.019608e-01 + 7.019608e-01 + 1.000000e+00 + + + YES + + + YES + 2 + 1 + + YES + + -2080244224 + 262144 + Automatic + + + 1211912703 + 0 + + NSRadioButton + + + + + + 200 + 25 + + + 67239424 + 262144 + Custom: + + + 1211912703 + 0 + + + + 400 + 75 + + + {20, 11} + {4, 2} + 1143480320 + NSActionCell + + 67239424 + 262144 + Radio + + 1211912703 + 0 + + 549453824 + {18, 18} + + YES + + YES + + + + TU0AKgAABRgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAwAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAADwRERGLJycnySsrK/A1NTXw +IyMjyRwcHIsJCQk8AAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFFRUVdVBQUOCoqKj/ +29vb//n5+f/6+vr/2tra/6qqqv9UVFTgHx8fdQAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUZGRl5 +dXV198PDw//8/Pz////////////////////////////U1NT/fHx89yUlJXkAAAAFAAAAAAAAAAAAAAAA +AAAAAxEREUZqamrmtbW1/+3t7f/+/v7//v7+//7+/v/9/f3//f39//39/f/39/f/xMTE/3d3d+YZGRlG +AAAAAwAAAAAAAAAAAAAACkJCQqGtra3/xsbG/+vr6//y8vL/9fX1//X19f/z8/P/9fX1//Ly8v/u7u7/ +0tLS/6+vr/9KSkqhAAAACgAAAAAAAAAAAAAAF3h4eN2/v7//z8/P/93d3f/q6ur/7+/v/+/v7//w8PD/ +7e3t/+3t7f/i4uL/zs7O/8XFxf98fHzdAAAAFwAAAAAAAAADAAAAJKSkpPjOzs7/2dnZ/+Dg4P/i4uL/ +5eXl/+bm5v/n5+f/5eXl/+Li4v/e3t7/2tra/9DQ0P+srKz4AAAAJAAAAAMAAAADAAAALrCwsPrW1tb/ +3t7e/+Tk5P/p6en/6+vr/+zs7P/p6en/6+vr/+fn5//k5OT/4ODg/9nZ2f+zs7P6AAAALgAAAAMAAAAD +AAAALp2dnezg4OD/5eXl/+rq6v/u7u7/8PDw//Dw8P/x8fH/8PDw/+7u7v/q6ur/5ubm/+Hh4f+ZmZns +AAAALgAAAAMAAAADAAAAJG5ubs/l5eX/6enp/+/v7//y8vL/9vb2//r6+v/5+fn/9/f3//b29v/x8fH/ +6+vr/+Tk5P9ra2vPAAAAJAAAAAMAAAAAAAAAFy4uLpPCwsL67Ozs//Pz8//5+fn//v7+//7+/v/+/v7/ +/v7+//v7+//19fX/8PDw/8LCwvosLCyTAAAAFwAAAAAAAAAAAAAACgAAAENfX1/S5OTk/vn5+f/+/v7/ +///////////////////////////8/Pz/5ubm/l9fX9IAAABDAAAACgAAAAAAAAAAAAAAAwAAABcAAABl +YmJi3NLS0v3////////////////////////////////V1dX9ZGRk3AAAAGUAAAAXAAAAAwAAAAAAAAAA +AAAAAAAAAAUAAAAfAAAAZTMzM8KAgIDwv7+//O3t7f/t7e3/v7+//ICAgPAzMzPCAAAAZQAAAB8AAAAF +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAFwAAAEMAAAB3AAAAnwAAALMAAACzAAAAnwAAAHcAAABD +AAAAFwAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAoAAAAXAAAAJAAAAC4AAAAu +AAAAJAAAABcAAAAKAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAwAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgEAAAMAAAABABIAAAEB +AAMAAAABABIAAAECAAMAAAAEAAAFxgEDAAMAAAABAAEAAAEGAAMAAAABAAIAAAERAAQAAAABAAAACAES +AAMAAAABAAEAAAEVAAMAAAABAAQAAAEWAAMAAAABBxwAAAEXAAQAAAABAAAFEAEcAAMAAAABAAEAAAFS +AAMAAAABAAEAAAFTAAMAAAAEAAAFzodzAAcAAA84AAAF1gAAAAAACAAIAAgACAABAAEAAQABAAAPOGFw +cGwCAAAAbW50clJHQiBYWVogB9cABwADAA8ANwAZYWNzcEFQUEwAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAPbWAAEAAAAA0y1hcHBsmsww2rSgmexFz3DEbSSvVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAOclhZWgAAASwAAAAUZ1hZWgAAAUAAAAAUYlhZWgAAAVQAAAAUd3RwdAAAAWgAAAAUY2hhZAAA +AXwAAAAsclRSQwAAAagAAAAOZ1RSQwAAAbgAAAAOYlRSQwAAAcgAAAAOdmNndAAAAdgAAAYSbmRpbgAA +B+wAAAY+ZGVzYwAADiwAAABkZHNjbQAADpAAAABObW1vZAAADuAAAAAoY3BydAAADwgAAAAtWFlaIAAA +AAAAAGB8AAA5DAAABbxYWVogAAAAAAAAb3IAALBfAAAciVhZWiAAAAAAAAAm6AAAFq8AALDfWFlaIAAA +AAAAAPNSAAEAAAABFs9zZjMyAAAAAAABDEIAAAXe///zJgAAB5IAAP2R///7ov///aMAAAPcAADAbGN1 +cnYAAAAAAAAAAQHNAABjdXJ2AAAAAAAAAAEBzQAAY3VydgAAAAAAAAABAc0AAHZjZ3QAAAAAAAAAAAAD +AQAAAgAAAB4AaQDaAV8B/ALQA9sFIAbTCNMLPA4EEJ8THxVuF6EZnxt9HT8e4CBzIf8jfCT7JnUn5ilV +KsIsKS2QLvkwYjHTM0g0wTY3N544/TpWO6Y88D41P3ZAt0H6Qz1Eg0XERvhIIklLSmpLhUycTbBOxE/Z +UPBSC1MpVFJVfFasV9tZClo1W1lcc12AXoVfgGBzYZJivGPrZR1mVGeIaMJp+msvbGJtj26qb5NwZ3FE +citzGnQRdRF2F3cfeCh5L3o0ezx8Q31HfkZ/QoA4gSqCG4MMg/yE7oXihtaHyYi5iaaKkIt5jGGNS444 +jyiQG5EQkgWS9JPflMiVrJaPl22YS5krmgya8JvXnL6dnp52n0ugHqDuobuihqNSpB+k7qXAppKndKhb +qUWqMasdrAes7q3RrquvfLBFsROx77Lcs860wbW6tq+3pbiauYu6e7tkvD+9Bb25vnO/NL/8wMvBo8KA +w2DEQcUixgPG48fGyKPJfMpRyyPL8sy8zYbOTs8Wz97QpdFn0ifS59Oj1F7VGtXV1pTXVNgX2N3Zo9pj +2yHb3tyV3U3eBN6733TgMODv4bLic+My4+/kpuVa5gzmuudo6BboxOl16ifq3euc7FTtA+2a7iXuoe8Y +74bv+fCc8WLyRfMM84/0EfSM9Qr1lfYq9tb3qfiu+f78YP//AAAAFwBQAKcBGQGsAmkDWQR+BdsHiQl9 +C7gOGxCeExsVbReKGX8bQxzZHjsfkSDjIjwjmST8JlknvCkmKo0r8y1aLsEwJTGEMuA0PjWRNuM4NDl4 +Ors79D0sPls/i0C3Qd5DBEQgRUBGVkdqSHpJhkqPS5hMn02kTqhPqVCrUbJSxVPdVPJWBlcYWChZM1o+ +W0dcT11WXl5fY2BuYXZigWOQZJ9lr2bDZ85ox2m0ap9riWx0bWJuUG8+cC1xHnIQcwNz93TudeZ233fa +eNh513rUe818u32dfnp/WoA9gSOCC4L0g9+EzIW5hqWHj4h6iWeKT4s3jByM/43gjsCPnpCKkW6SVpM7 +lB+VAJXflr2XmJhxmUiaHprzm8WclZ1mnjWfAp/PoJ+hcaJVoz2kJaUOpfam3afDqKipjKpwq1SsOK0b +rfyu3q+/sKKxgrJks0W0I7T6tcu2mbdsuD+5E7npusG7nbx6vVm+Or8ewAPA6cHNwrjDnsSIxXPGWsc5 +yA/I48m3ypPLb8xNzSzODc7uz9DQr9GN0mfTPtQS1OTVr9Z31zvX/NjC2a3amtuH3HHdV9473xrf9ODP +4aPic+M/5Ank0uWW5lnnHOfd6J3pXOoh6vTryeyS7VfuGu7X75TwT/EH8cTygfNB9AT00vWq9o/3hviV ++cn7Tv1t//8AAAAOADAAYwCnAPkBYwHcAoUDXgR4BdEHjQlsCzoM7g6KEA0RbBK7E/0VKRZMF2sYexmC +GoYbjRyWHaIerR+5IMMhyyLPI9EkyiW8JqonlSh8KWEqRSsqLBEs+y3nLtQvvjCfMXkyUTMiM+40tzV/ +NkY3CzfUOJ85bjpFOyE8AjzlPcg+qj+HQGBBMEH3QrhDe0RSRTdGHkcIR/NI30nMSrhLoEyGTWdORE7p +T41QM1DhUZZSUFMUU9tUpFVuVjdXAFfMWJpZZlowWvZbulx7XT1d/l7BX4VgTGETYdlinWNeZBxk2WWW +ZlJnEmfUaJdpXWogat9rnGxXbQ9txm5+bzdv8nCwcXFyNnL4c7Z0cHUkddd2hncyd914iHk0eeJ6kntF +fAZ8z32bfmp/O4ALgNmBo4JmgyGD14SJhVmGMIcNh+yIzomxipSLeIxXjTWOD47Yj42QJJC9kV6SB5K0 +k2qUJJThlaCWX5cfl+SYrJlzmjea+Zu5nHedNZ30nrSfdaA5oP6hxaKLo1GkFqTbpaGmaac2qAao2qmy +qo6raqxErR6t967Tr7CwkLF4smSzV7RPtUi2PrcxuCC5CrnwutS7trycvYC+Z79SwEHBOMI0wzTENsU5 +xjrHOMgyySbKFMr6y+DNLc6p0EjSDtQN1mPZFtxo4Ijlxuzn933//wAAbmRpbgAAAAAAAAY2AACX6QAA +W1AAAFSbAACOVgAAJ6QAABVgAABQDQAAVDkAAlwoAAIhRwABRR4AAwEAAAIAAAAaADgAUgBpAH8AkQCj +ALQAxADTAOIA8AD+AQwBGwEsATwBTgFgAXQBiAGeAbQBzAHmAgICHwI+Al8CggKoAs8C+AMiA08DfAOr +A9sEDQRBBHYErATkBR4FWQWUBdEGDwZNBosGygcJB0oHjAfRCBkIYwivCP4JTwmjCfkKUQqrCwULYQu+ +DBsMegzdDUYNsg4gDpMPCQ+CD/8QfRD9EX4SABKBEwMTgRQBFIAVABWCFgUWjBcYF6kYQhjiGYoaPRrV +G2kb/ByOHSEdsx5IHtsfcCAHIKEhPSHdIoAjTiQ4JRol9CbHJ5UoXikmKe4qtyuFLFUtJC32Ls0vqTCL +MXQyYjNTNEY1OzYuNyQ4GzkYOho7IjwtPTs+ST9UQF5BZ0JuQ31ElUWxRtZIAEkxSmVLmEzKTfpPKVBl +Ua9TAFRaVbxXJliQWfpbYFzGXhVfXmClYexjNmSHZd9nS2jIalxr1G0sbn5v0HEccm5zwHUWdnR31nlF +ett8uX6LgEWB7oOGhRaGoogwicCLVIzljoOQK5Hfk5+VbJc+mRWa8JzPnsGgt6K7pMOmz6jSqtOsyq7E +sNSy7bUXt0O5drugvcG/2cH4xCfGaMi8yyPNjM/60l/Uutb22V/cOt/A47bmauhQ6mLtyfFy9LX3XPlz ++xH8Yf0t/fj+iv8G/4P//wAAACIAQgBdAHYAjQCjALcAygDdAO4BAAERASIBNAFFAVcBaQF8AY8BpAG5 +AdAB6QIDAh8CPQJeAoICqQLXAwYDOANrA54D0gQHBDwEdASsBOUFHgVZBZQF0gYQBk8GkAbSBxYHXAej +B+sINgiDCNEJIQl1CcoKIgp+CtsLPAueDAIMagzUDUANsg4jDpoPEw+QEBAQlBEaEaISLhK7E00T4BR1 +FQQVkBYfFrEXRRfbGHUZExmyGlUa+huhHEkc9R2fHk0e+h+nIFUhBSGzImMjIiPyJMYlniZ3J08oKSkG +KeMqwCufLH4tXi49Lx4v/zDfMb8yojOINHk1fjaMN5c4ojmpOrM7vDzDPc0+2j/rQP1CDkMqREVFaEaQ +R7xI70oQSz1MZ02YTs1QClFJUpFT3VUwVoZX5FlIWq5cGl2NXv1gaWG1YwVkVGWnZvxoVmm0axVsd23d +b0RwsXIfc5F1A3Z6d/B5a3rzfI9+Mn/OgWyDCYSjhjmHzIleiu2Meo4Hj5mRIZK0lEKVzpdomR2a3Zyf +nlGgBaG3o2qlGqbNqIaqRawQreSvwrGys621v7fGuXK7Jrzbvp3AY8I3xBnF/sf0yfnMC84k0E7Se9Sw +1u3ZLNs63UXfduGy5AXmXOjF6yTtfu/S8gT0F/YK99H5b/rf/Bb9Bv3d/p3/Tv//AAAAOQBtAJQAtADQ +AOoBAAEWASwBQwFcAXcBkwGxAdIB9QIcAkYCcwKjAtgDEANKA4kDzQQVBF4EqQT1BUMFkwXlBjoGkgbt +B0sHsAgZCIcI+QlvCekKZQriC2AL3wxgDOcNeA4ODqwPUQ/9EK0RYRIVEsoTeRQmFNEVfhYtFuIXnhhl +GTkaHBrnG6ccZx0nHegeqx9vIDkhByHcIrgj5yUVJjQnSChRKVgqXitqLHgtgi6RL6cwxjHtMxg0RTVz +Np43zTkAOj47gzzOPh0/aECyQfpDSESmRgpHd0joSlpLx00wTpRQAVGCUw9UqlZTWAJZslteXQNegl/6 +YW5i4WRbZdxnc2kfauVsa23gb1FwvnIsc5p1CnaDeAF5jHtmfaV/wIG+g6SFfYdRiSeK+oy/jouQYZJB +lCqWFpgAmeqbz52wn5WhfaNspVmnQqkgqvesxK6MsFSyJLP3tci3l7lhux280L55wBzBwsNwxSbG6Mi0 +yorMZM460BTR59O21XnXL9jg2o/cO93p35/hW+Mk5Pnm4ujf6kPrfOyh7bnuwu+/8Kjxi/JV8xjzzvR2 +9R/1r/Y59sT3QPev+B/4jvjz+Ur5ovn5+lD6pPrk+yT7Zful++b8Jvxm/JH8vfzo/RP9P/1q/ZX9wf3s +/hj+SP5//rb+7P8j/1r/kf/I//8AAGRlc2MAAAAAAAAACkNvbG9yIExDRAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AABtbHVjAAAAAAAAAAIAAAAMZW5VUwAAABIAAAAoaXRJVAAAABQAAAA6AEMAbwBsAG8AcgAgAEwAQwBE +AEwAQwBEACAAYwBvAGwAbwByAGkAAG1tb2QAAAAAAAAGEAAAnGgAAAAAwhEOAAAAAAAAAAAAAAAAAAAA +AAB0ZXh0AAAAAENvcHlyaWdodCBBcHBsZSBDb21wdXRlciwgSW5jLiwgMjAwNQAAAAA + + + + + + 3 + MCAwAA + + + + 400 + 75 + + + + + + LucidaGrande + 1.300000e+01 + 1044 + + + + + 268 + {{107, 54}, {56, 16}} + + YES + + -2075001280 + 4457472 + + + + YES + + + + + + + 268 + {{107, 27}, {56, 16}} + + YES + + -2075001280 + 4457472 + + + + YES + + + + + + + 268 + {{79, 38}, {15, 22}} + + YES + + YES + + + 7.019608e-01 + 7.019608e-01 + 7.019608e-01 + 1.000000e+00 + + + YES + + + YES + + 68025888 + 131072 + + + 5.900000e+01 + 2.000000e+00 + YES + + + + + 268 + {{189, 44}, {56, 16}} + + YES + + -2075001280 + 4457472 + + + + YES + + + + + + + 268 + {{18, 41}, {56, 16}} + + YES + + -2075001280 + 4457472 + + + + YES + + + + + + + 268 + {{166, 25}, {15, 22}} + + YES + + YES + + + 7.019608e-01 + 7.019608e-01 + 7.019608e-01 + 1.000000e+00 + + + YES + + + YES + + 68025888 + 131072 + + + 5.900000e+01 + 2.000000e+00 + YES + + + + + 268 + {{97, 102}, {68, 11}} + + YES + + 67239424 + 4456448 + Automatic + + + + + + + + + 268 + {{97, 88}, {68, 11}} + + YES + + 67239424 + 4456448 + Custom + + + + + + + + + 268 + {{12, 98}, {59, 17}} + + YES + + 67239424 + 71303168 + Cropping: + + + + + + + + {{1, 1}, {282, 124}} + + + + {{515, 202}, {284, 126}} + + {0, 0} + + 67239424 + 0 + + + + + 3 + MCAwLjgwMDAwMDAxAA + + + + 1 + 0 + 0 + NO + + + {{10, 19}, {801, 330}} + + + Size + + + + + 2 + + + 256 + + YES + + + 12 + + YES + + + 256 + + YES + + + 268 + {{15, 45}, {68, 17}} + + YES + + 67239424 + 71303168 + Detelecine: + + + + + + + + + 268 + {{15, 22}, {68, 17}} + + YES + + 67239424 + 71303168 + Custom: + + + + + + + + + 268 + {{103, 46}, {110, 15}} + + YES + + YES + + + 7.019608e-01 + 7.019608e-01 + 7.019608e-01 + 1.000000e+00 + + + YES + + + YES + + -2076049856 + 264192 + + + 109199615 + 1 + + LucidaGrande + 9.000000e+00 + 16 + + + + + + 400 + 75 + + + Item1 + + 1048576 + 2147483647 + 1 + + + _popUpItemAction: + + + YES + + + OtherViews + + + YES + + + + Item2 + + 1048576 + 2147483647 + + + _popUpItemAction: + + + + + Item3 + + 1048576 + 2147483647 + + + _popUpItemAction: + + + + + 3 + YES + YES + 1 + + + + + 268 + {{104, 24}, {108, 16}} + + YES + + -1804468671 + 272892928 + + + + YES + + + 6 + System + textColor + + 3 + MAA + + + + + + {{1, 1}, {230, 71}} + + + + {{15, 255}, {232, 73}} + + {0, 0} + + 67239424 + 0 + Box + + + + 3 + MCAwLjgwMDAwMDAxAA + + + + 1 + 0 + 0 + NO + + + + 268 + + YES + + + 256 + + YES + + + 268 + {{59, 65}, {37, 15}} + + YES + + YES + + + 1.000000e+00 + 1.000000e+00 + 1.000000e+00 + 1.000000e+00 + + + YES + + + YES + + -2080244224 + 131072 + + + + 1.000000e+00 + 0.000000e+00 + 0.000000e+00 + 0.000000e+00 + 0 + 1 + YES + NO + + + + + 268 + {{1, 64}, {56, 17}} + + YES + + 67239424 + 71303168 + Decomb + + + + + + + + + 268 + {{97, 63}, {89, 17}} + + YES + + 67239424 + 4194304 + Deinterlace + + + + + + + + + 12 + + YES + + + 256 + + YES + + + 268 + {{5, 33}, {68, 17}} + + YES + + 67239424 + 71303168 + Decomb: + + + + + + + + + 268 + {{5, 10}, {68, 17}} + + YES + + 67239424 + 71303168 + Custom: + + + + + + + + + 268 + {{93, 34}, {110, 15}} + + YES + + YES + + + 7.019608e-01 + 7.019608e-01 + 7.019608e-01 + 1.000000e+00 + + + YES + + + YES + + -2076049856 + 264192 + + + 109199615 + 1 + + + + + + 400 + 75 + + + Item1 + + 1048576 + 2147483647 + 1 + + + _popUpItemAction: + + + YES + + + OtherViews + + + YES + + + + Item2 + + 1048576 + 2147483647 + + + _popUpItemAction: + + + + + Item3 + + 1048576 + 2147483647 + + + _popUpItemAction: + + + + + 3 + YES + YES + 1 + + + + + 268 + {{94, 12}, {108, 16}} + + YES + + -1804468671 + 272892928 + + + + YES + + + + + + {215, 60} + + + + {{5, -3}, {215, 60}} + + {0, 0} + + 67239424 + 0 + Box + + + + 3 + MCAwLjgwMDAwMDAxAA + + + + 0 + 4 + 0 + NO + + + + 12 + + YES + + + 256 + + YES + + + 268 + {{8, 33}, {68, 17}} + + YES + + 67239424 + 71303168 + Deinterlace: + + + + + + + + + 268 + {{8, 10}, {68, 17}} + + YES + + 67239424 + 71303168 + Custom: + + + + + + + + + 268 + {{96, 34}, {110, 15}} + + YES + + YES + + + 7.019608e-01 + 7.019608e-01 + 7.019608e-01 + 1.000000e+00 + + + YES + + + YES + + -2076049856 + 264192 + + + 109199615 + 1 + + + + + + 400 + 75 + + + Item1 + + 1048576 + 2147483647 + 1 + + + _popUpItemAction: + + + YES + + + OtherViews + + + YES + + + + Item2 + + 1048576 + 2147483647 + + + _popUpItemAction: + + + + + Item3 + + 1048576 + 2147483647 + + + _popUpItemAction: + + + + + 3 + YES + YES + 1 + + + + + 268 + {{97, 11}, {108, 16}} + + YES + + -1804468671 + 272892928 + + + + YES + + + + + + {221, 60} + + + + {{2, -3}, {221, 60}} + + {0, 0} + + 67239424 + 0 + Box + + + + 3 + MCAwLjgwMDAwMDAxAA + + + + 0 + 0 + 0 + NO + + + {{2, 18}, {228, 92}} + + + + {{15, 140}, {232, 112}} + + {0, 0} + + 67239424 + 0 + + + + + 3 + MCAwLjgwMDAwMDAxAA + + + + 3 + 0 + 4 + NO + + + + 12 + + YES + + + 256 + + YES + + + 268 + {{15, 37}, {68, 17}} + + YES + + 67239424 + 71303168 + Denoise: + + + + + + + + + 268 + {{15, 14}, {68, 17}} + + YES + + 67239424 + 71303168 + Custom: + + + + + + + + + 268 + {{103, 38}, {110, 15}} + + YES + + YES + + + 7.019608e-01 + 7.019608e-01 + 7.019608e-01 + 1.000000e+00 + + + YES + + + YES + + -2076049856 + 264192 + + + 109199615 + 1 + + + + + + 400 + 75 + + + Item1 + + 1048576 + 2147483647 + 1 + + + _popUpItemAction: + + + YES + + + OtherViews + + + YES + + + + Item2 + + 1048576 + 2147483647 + + + _popUpItemAction: + + + + + Item3 + + 1048576 + 2147483647 + + + _popUpItemAction: + + + + + 3 + YES + YES + 1 + + + + + 268 + {{104, 16}, {108, 16}} + + YES + + -1804468671 + 272892928 + + + + YES + + + + + + {{1, 1}, {230, 63}} + + + + {{14, 73}, {232, 65}} + + {0, 0} + + 67239424 + 0 + Box + + + + 3 + MCAwLjgwMDAwMDAxAA + + + + 1 + 0 + 0 + NO + + + + 12 + + YES + + + 256 + + YES + + + 268 + {{29, 39}, {51, 17}} + + YES + + 67239424 + 71303168 + Deblock: + + + + + + + + + 268 + {{17, 8}, {63, 14}} + + YES + + 67239424 + 71303168 + Grayscale: + + + + + + + + + 268 + {{79, 41}, {31, 14}} + + YES + + 67239424 + 138543104 + Off + + + + + + + + + 268 + {{108, 40}, {104, 16}} + + YES + + YES + + + 7.019608e-01 + 7.019608e-01 + 7.019608e-01 + 1.000000e+00 + + + YES + + + YES + + -2079981824 + 262144 + + + + 1.500000e+01 + 4.000000e+00 + 4.000000e+00 + 0.000000e+00 + 12 + 0 + YES + NO + + + + + 268 + {{84, 6}, {19, 18}} + + YES + + YES + + + 7.019608e-01 + 7.019608e-01 + 7.019608e-01 + 1.000000e+00 + + + YES + + + YES + + 67239424 + 131072 + Check + + + 1211912703 + 130 + + NSImage + NSSwitch + + + + + 200 + 25 + + + + {{1, 1}, {230, 63}} + + + + {{15, 5}, {232, 65}} + + {0, 0} + + 67239424 + 0 + Box + + + + 3 + MCAwLjgwMDAwMDAxAA + + + + 1 + 0 + 0 + NO + + + {{10, 19}, {801, 330}} + + Filters + + + + + + + 268435456 + YES + YES + + YES + + + + + {849, 399} + + + {{0, 0}, {1440, 878}} + {3.40282e+38, 3.40282e+38} + + + + + YES + + + fCropBottomField + + + + 53 + + + + fCropBottomStepper + + + + 54 + + + + fCropLeftField + + + + 55 + + + + fCropLeftStepper + + + + 56 + + + + fCropMatrix + + + + 57 + + + + fCropRightField + + + + 58 + + + + fCropRightStepper + + + + 59 + + + + fCropTopField + + + + 60 + + + + fCropTopStepper + + + + 61 + + + + fHeightField + + + + 66 + + + + fHeightStepper + + + + 67 + + + + fWidthField + + + + 68 + + + + fWidthStepper + + + + 69 + + + + fRatioCheck + + + + 74 + + + + SettingsChanged: + + + + 76 + + + + SettingsChanged: + + + + 83 + + + + SettingsChanged: + + + + 84 + + + + SettingsChanged: + + + + 85 + + + + SettingsChanged: + + + + 86 + + + + SettingsChanged: + + + + 87 + + + + SettingsChanged: + + + + 89 + + + + SettingsChanged: + + + + 90 + + + + fAnamorphicPopUp + + + + 140 + + + + SettingsChanged: + + + + 142 + + + + window + + + + 184 + + + + fPictureWindow + + + + 240 + + + + fPictureCropBox + + + + 242 + + + + fPreviewOpenButton + + + + 272 + + + + showPreviewWindow: + + + + 273 + + + + fSizeInfoField + + + + 280 + + + + fDetelecineBox + + + + 356 + + + + fDetelecinePopUp + + + + 358 + + + + fDetelecineField + + + + 359 + + + + fDecombDeinterlaceBox + + + + 360 + + + + fDecombDeinterlaceSlider + + + + 361 + + + + fDecombPopUp + + + + 362 + + + + fDecombField + + + + 363 + + + + fDecombBox + + + + 364 + + + + fDeinterlaceBox + + + + 365 + + + + fDeinterlacePopUp + + + + 366 + + + + fDeinterlaceField + + + + 367 + + + + fDenoiseBox + + + + 368 + + + + fDenoisePopUp + + + + 369 + + + + fDenoiseField + + + + 370 + + + + fDeblockSlider + + + + 371 + + + + fDeblockField + + + + 372 + + + + fGrayscaleCheck + + + + 373 + + + + FilterSettingsChanged: + + + + 374 + + + + FilterSettingsChanged: + + + + 375 + + + + FilterSettingsChanged: + + + + 377 + + + + FilterSettingsChanged: + + + + 378 + + + + deblockSliderChanged: + + + + 379 + + + + FilterSettingsChanged: + + + + 380 + + + + modeDecombDeinterlaceSliderChanged: + + + + 381 + + + + fModulusPopUp + + + + 392 + + + + SettingsChanged: + + + + 393 + + + + fDisplayWidthField + + + + 407 + + + + fSizeFilterView + + + + 419 + + + + delegate + + + + 420 + + + + fDeblockBox + + + + 434 + + + + fPictureSizeBox + + + + 437 + + + + fParWidthField + + + + 448 + + + + fParHeightField + + + + 449 + + + + SettingsChanged: + + + + 453 + + + + SettingsChanged: + + + + 454 + + + + SettingsChanged: + + + + 456 + + + + fRatioLabel + + + + 522 + + + + fParWidthLabel + + + + 524 + + + + fParHeightLabel + + + + 525 + + + + fDisplayWidthLabel + + + + 526 + + + + fRatioLabel2 + + + + 531 + + + + fModulusLabel + + + + 532 + + + + fWidthLabel + + + + 533 + + + + + YES + + 0 + + YES + + + + + + -2 + + + RmlsZSdzIE93bmVyA + + + -1 + + + First Responder + + + -3 + + + Application + + + 5 + + + YES + + + + PicturePanel + + + 6 + + + YES + + + + + + + + + 262 + + + YES + + + + + + 263 + + + + + 270 + + + YES + + + + + + 271 + + + + + 278 + + + YES + + + + + + 279 + + + + + 281 + + + YES + + + + + + + 282 + + + YES + + + + + + 283 + + + YES + + + + + + 284 + + + YES + + + + + + + + + 285 + + + YES + + + + + + + 7 + + + YES + + + + + + + + + + + + + + + + + 252 + + + YES + + + + + + 250 + + + YES + + + + + + 14 + + + YES + + + + + + 11 + + + YES + + + + + + 9 + + + YES + + + + + + 19 + + + YES + + + + + + 10 + + + YES + + + + + + 13 + + + YES + + + + + + 16 + + + YES + + + + + + + + 15 + + + YES + + + + + + 12 + + + YES + + + + + + 152 + + + + + 155 + + + + + 17 + + + + + 18 + + + + + 178 + + + + + 153 + + + + + 150 + + + + + 156 + + + + + 149 + + + + + 151 + + + + + 154 + + + + + 251 + + + + + 253 + + + + + 286 + + + YES + + + + + + + + + 287 + + + YES + + + + + + + + + + 288 + + + YES + + + + + + + + + 299 + + + YES + + + + + + 300 + + + YES + + + + + + 301 + + + YES + + + + + + 302 + + + YES + + + + + + 303 + + + + + 304 + + + + + 305 + + + YES + + + + + + 306 + + + YES + + + + + + + + 307 + + + + + 308 + + + + + 309 + + + + + 310 + + + + + 311 + + + YES + + + + + + 312 + + + YES + + + + + + 313 + + + YES + + + + + + 315 + + + YES + + + + + + + + + 316 + + + YES + + + + + + 317 + + + YES + + + + + + 318 + + + YES + + + + + + 319 + + + YES + + + + + + 320 + + + + + 321 + + + YES + + + + + + 322 + + + YES + + + + + + + + 323 + + + + + 324 + + + + + 325 + + + + + 326 + + + + + 327 + + + + + 340 + + + + + 341 + + + + + 342 + + + + + 343 + + + YES + + + + + + 344 + + + YES + + + + + + 345 + + + YES + + + + + + 346 + + + YES + + + + + + 347 + + + + + 348 + + + YES + + + + + + 349 + + + YES + + + + + + + + 350 + + + + + 351 + + + + + 352 + + + + + 353 + + + + + 354 + + + + + 382 + + + YES + + + + + + 383 + + + + + 314 + + + YES + + + + + + + + + 329 + + + YES + + + + + + 331 + + + YES + + + + + + 330 + + + YES + + + + + + 328 + + + YES + + + + + + 335 + + + YES + + + + + + 336 + + + YES + + + + + + + + 339 + + + + + 338 + + + + + 337 + + + + + 333 + + + + + 332 + + + + + 334 + + + + + 421 + + + YES + + + + + + + + + + 289 + + + YES + + + + + + 298 + + + + + 290 + + + YES + + + + + + 297 + + + + + 291 + + + YES + + + + + + 296 + + + + + 292 + + + YES + + + + + + 295 + + + + + 293 + + + YES + + + + + + 294 + + + + + 436 + + + YES + + + + + + + + + + + + + + + + + + + + + + + + 44 + + + YES + + + + + + 169 + + + + + 384 + + + YES + + + + + + 385 + + + YES + + + + + + 386 + + + YES + + + + + + + + 389 + + + + + 388 + + + + + 387 + + + + + 42 + + + YES + + + + + + 167 + + + + + 46 + + + YES + + + + + + 171 + + + + + 138 + + + YES + + + + + + 174 + + + + + 41 + + + YES + + + + + + 166 + + + + + 132 + + + YES + + + + + + 173 + + + YES + + + + + + 134 + + + YES + + + + + + + + 135 + + + + + 136 + + + + + 137 + + + + + 390 + + + YES + + + + + + 391 + + + + + 47 + + + YES + + + + + + 172 + + + + + 43 + + + YES + + + + + + 168 + + + + + 45 + + + YES + + + + + + 170 + + + + + 244 + + + YES + + + + + + 245 + + + + + 402 + + + YES + + + + + + 403 + + + + + 440 + + + YES + + + + + + 441 + + + + + 442 + + + YES + + + + + + 443 + + + + + 444 + + + YES + + + + + + 445 + + + + + 446 + + + YES + + + + + + 447 + + + + + 529 + + + YES + + + + + + 530 + + + + + 396 + + + YES + + + + + + 397 + + + + + + + YES + + YES + -1.IBPluginDependency + -2.IBPluginDependency + -3.IBPluginDependency + -3.ImportedFromIB2 + 10.IBPluginDependency + 10.ImportedFromIB2 + 11.IBPluginDependency + 11.ImportedFromIB2 + 12.IBPluginDependency + 12.ImportedFromIB2 + 13.IBPluginDependency + 13.ImportedFromIB2 + 132.IBPluginDependency + 132.ImportedFromIB2 + 134.IBPluginDependency + 134.ImportedFromIB2 + 135.IBPluginDependency + 135.ImportedFromIB2 + 136.IBPluginDependency + 136.ImportedFromIB2 + 137.IBPluginDependency + 137.ImportedFromIB2 + 138.IBPluginDependency + 138.ImportedFromIB2 + 14.IBPluginDependency + 14.ImportedFromIB2 + 149.IBPluginDependency + 15.IBPluginDependency + 15.ImportedFromIB2 + 150.IBPluginDependency + 151.IBPluginDependency + 152.IBPluginDependency + 153.IBPluginDependency + 154.IBPluginDependency + 155.IBPluginDependency + 156.IBPluginDependency + 16.IBPluginDependency + 16.ImportedFromIB2 + 166.IBPluginDependency + 167.IBPluginDependency + 168.IBPluginDependency + 169.IBPluginDependency + 17.IBPluginDependency + 17.ImportedFromIB2 + 170.IBPluginDependency + 171.IBPluginDependency + 172.IBPluginDependency + 173.IBPluginDependency + 174.IBPluginDependency + 178.IBPluginDependency + 18.IBPluginDependency + 18.ImportedFromIB2 + 19.IBPluginDependency + 19.ImportedFromIB2 + 244.IBPluginDependency + 244.ImportedFromIB2 + 245.IBPluginDependency + 250.IBPluginDependency + 250.ImportedFromIB2 + 251.IBPluginDependency + 252.IBPluginDependency + 252.ImportedFromIB2 + 253.IBPluginDependency + 262.IBPluginDependency + 262.ImportedFromIB2 + 263.IBPluginDependency + 270.IBPluginDependency + 271.IBPluginDependency + 278.IBPluginDependency + 278.ImportedFromIB2 + 279.IBPluginDependency + 281.IBAttributePlaceholdersKey + 281.IBPluginDependency + 282.IBPluginDependency + 283.IBPluginDependency + 284.IBPluginDependency + 285.IBPluginDependency + 286.IBPluginDependency + 287.IBPluginDependency + 287.ImportedFromIB2 + 288.IBPluginDependency + 289.IBPluginDependency + 289.ImportedFromIB2 + 290.IBPluginDependency + 290.ImportedFromIB2 + 291.IBPluginDependency + 291.ImportedFromIB2 + 292.IBPluginDependency + 292.IBViewIntegration.shadowBlurRadius + 292.IBViewIntegration.shadowColor + 292.IBViewIntegration.shadowOffsetHeight + 292.IBViewIntegration.shadowOffsetWidth + 293.IBPluginDependency + 294.IBPluginDependency + 295.IBPluginDependency + 296.IBPluginDependency + 297.IBPluginDependency + 298.IBPluginDependency + 299.IBPluginDependency + 299.ImportedFromIB2 + 300.IBPluginDependency + 300.ImportedFromIB2 + 301.IBPluginDependency + 301.ImportedFromIB2 + 302.IBPluginDependency + 303.IBPluginDependency + 304.IBPluginDependency + 305.IBPluginDependency + 306.IBPluginDependency + 306.ImportedFromIB2 + 307.IBPluginDependency + 307.ImportedFromIB2 + 308.IBPluginDependency + 308.ImportedFromIB2 + 309.IBPluginDependency + 309.ImportedFromIB2 + 310.IBPluginDependency + 311.IBPluginDependency + 311.ImportedFromIB2 + 312.IBPluginDependency + 312.ImportedFromIB2 + 313.IBPluginDependency + 313.IBViewIntegration.shadowBlurRadius + 313.IBViewIntegration.shadowColor + 313.IBViewIntegration.shadowOffsetHeight + 313.IBViewIntegration.shadowOffsetWidth + 314.IBPluginDependency + 315.IBPluginDependency + 316.IBPluginDependency + 317.IBPluginDependency + 317.ImportedFromIB2 + 318.IBPluginDependency + 318.ImportedFromIB2 + 319.IBPluginDependency + 319.ImportedFromIB2 + 320.IBPluginDependency + 321.IBPluginDependency + 322.IBEditorWindowLastContentRect + 322.IBPluginDependency + 322.ImportedFromIB2 + 323.IBPluginDependency + 323.ImportedFromIB2 + 324.IBPluginDependency + 324.ImportedFromIB2 + 325.IBPluginDependency + 325.ImportedFromIB2 + 326.IBPluginDependency + 327.IBPluginDependency + 328.IBPluginDependency + 328.ImportedFromIB2 + 329.IBPluginDependency + 330.IBPluginDependency + 330.ImportedFromIB2 + 331.IBPluginDependency + 331.ImportedFromIB2 + 332.IBPluginDependency + 333.IBPluginDependency + 334.IBPluginDependency + 335.IBPluginDependency + 336.IBEditorWindowLastContentRect + 336.IBPluginDependency + 336.ImportedFromIB2 + 337.IBPluginDependency + 337.ImportedFromIB2 + 338.IBPluginDependency + 338.ImportedFromIB2 + 339.IBPluginDependency + 339.ImportedFromIB2 + 340.IBPluginDependency + 341.IBPluginDependency + 342.IBPluginDependency + 343.IBPluginDependency + 344.IBPluginDependency + 344.ImportedFromIB2 + 345.IBPluginDependency + 345.ImportedFromIB2 + 346.IBPluginDependency + 346.ImportedFromIB2 + 347.IBPluginDependency + 348.IBPluginDependency + 349.IBPluginDependency + 349.ImportedFromIB2 + 350.IBPluginDependency + 350.ImportedFromIB2 + 351.IBPluginDependency + 351.ImportedFromIB2 + 352.IBPluginDependency + 352.ImportedFromIB2 + 353.IBPluginDependency + 354.IBPluginDependency + 382.IBPluginDependency + 382.ImportedFromIB2 + 383.IBPluginDependency + 384.IBPluginDependency + 384.ImportedFromIB2 + 385.IBPluginDependency + 386.IBEditorWindowLastContentRect + 386.IBPluginDependency + 386.ImportedFromIB2 + 387.IBPluginDependency + 387.ImportedFromIB2 + 388.IBPluginDependency + 388.ImportedFromIB2 + 389.IBPluginDependency + 389.ImportedFromIB2 + 390.IBPluginDependency + 390.ImportedFromIB2 + 391.IBPluginDependency + 396.IBPluginDependency + 396.ImportedFromIB2 + 397.IBPluginDependency + 402.IBPluginDependency + 402.ImportedFromIB2 + 403.IBPluginDependency + 41.IBPluginDependency + 41.ImportedFromIB2 + 42.IBPluginDependency + 42.ImportedFromIB2 + 421.IBPluginDependency + 43.IBPluginDependency + 43.ImportedFromIB2 + 436.IBPluginDependency + 44.IBPluginDependency + 44.ImportedFromIB2 + 440.IBPluginDependency + 440.ImportedFromIB2 + 441.IBPluginDependency + 442.IBPluginDependency + 442.ImportedFromIB2 + 443.IBPluginDependency + 444.IBPluginDependency + 444.ImportedFromIB2 + 445.IBPluginDependency + 446.IBPluginDependency + 446.ImportedFromIB2 + 447.IBPluginDependency + 45.IBPluginDependency + 45.ImportedFromIB2 + 46.IBPluginDependency + 46.ImportedFromIB2 + 47.IBPluginDependency + 47.ImportedFromIB2 + 5.IBEditorWindowLastContentRect + 5.IBViewEditorWindowController.showingBoundsRectangles + 5.IBViewEditorWindowController.showingLayoutRectangles + 5.IBWindowTemplateEditedContentRect + 5.ImportedFromIB2 + 5.editorWindowContentRectSynchronizationRect + 5.windowTemplate.hasMaxSize + 5.windowTemplate.hasMinSize + 5.windowTemplate.maxSize + 5.windowTemplate.minSize + 529.IBPluginDependency + 529.ImportedFromIB2 + 530.IBPluginDependency + 6.IBPluginDependency + 6.IBUserGuides + 6.ImportedFromIB2 + 7.IBPluginDependency + 7.ImportedFromIB2 + 9.IBPluginDependency + 9.ImportedFromIB2 + + + YES + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + InitialTabViewItem + + InitialTabViewItem + + + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + {{873, 640}, {110, 48}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + {{873, 640}, {110, 48}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + {{772, 644}, {100, 48}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{-1077, 352}, {849, 399}} + + + {{-1077, 352}, {849, 399}} + + {{221, 276}, {533, 580}} + + + {3.40282e+38, 3.40282e+38} + {230, 500} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + YES + + + 0.000000e+00 + 1 + + + + 2.420000e+02 + 0 + + + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + + + + YES + + YES + + + YES + + + + + YES + + YES + + + YES + + + + 533 + + + + YES + + FirstResponder + NSObject + + IBUserSource + + + + + NSObject + + IBUserSource + + + + + PictureController + NSWindowController + + YES + + YES + FilterSettingsChanged: + SettingsChanged: + adjustFilterDisplay: + adjustSizingDisplay: + deblockSliderChanged: + displayLinkChanged: + modeDecombDeinterlaceSliderChanged: + parLinkChanged: + previewGoWindowed: + resizeInspectorForTab: + showPictureWindow: + showPreviewWindow: + storageLinkChanged: + + + YES + id + id + id + id + id + id + id + id + id + id + id + id + id + + + + YES + + YES + fAnamorphicPopUp + fCropBottomField + fCropBottomStepper + fCropLeftField + fCropLeftStepper + fCropMatrix + fCropRightField + fCropRightStepper + fCropTopField + fCropTopStepper + fDeblockBox + fDeblockCheck + fDeblockField + fDeblockSlider + fDecombBox + fDecombDeinterlaceBox + fDecombDeinterlaceSlider + fDecombField + fDecombPopUp + fDeinterlaceBox + fDeinterlaceField + fDeinterlacePopUp + fDenoiseBox + fDenoiseField + fDenoisePopUp + fDetelecineBox + fDetelecineField + fDetelecinePopUp + fDisplayLinkParLabel + fDisplayLinkSlider + fDisplayLinkStorageLabel + fDisplayWidthField + fDisplayWidthLabel + fFilterTabView + fGrayscaleCheck + fHeightField + fHeightStepper + fInfoField + fModulusLabel + fModulusPopUp + fParHeightField + fParHeightLabel + fParLinkDisplayLabel + fParLinkSlider + fParLinkStorageLabel + fParWidthField + fParWidthLabel + fPictureCropBox + fPictureFilterBox + fPictureFiltersOpenButton + fPictureSizeBox + fPictureWindow + fPreviewOpenButton + fRatioCheck + fRatioLabel + fRatioLabel2 + fResetParDarButton + fSizeFilterView + fSizeInfoField + fSizeTabView + fStorageLinkBox + fStorageLinkDisplayLabel + fStorageLinkParLabel + fStorageLinkSlider + fWidthField + fWidthLabel + fWidthStepper + + + YES + NSPopUpButton + NSTextField + NSStepper + NSTextField + NSStepper + NSMatrix + NSTextField + NSStepper + NSTextField + NSStepper + NSBox + NSButton + NSTextField + NSSlider + NSBox + NSBox + NSSlider + NSTextField + NSPopUpButton + NSBox + NSTextField + NSPopUpButton + NSBox + NSTextField + NSPopUpButton + NSBox + NSTextField + NSPopUpButton + NSTextField + NSSlider + NSTextField + NSTextField + NSTextField + NSTabViewItem + NSButton + NSTextField + NSStepper + NSTextField + NSTextField + NSPopUpButton + NSTextField + NSTextField + NSTextField + NSSlider + NSTextField + NSTextField + NSTextField + NSBox + NSBox + NSButton + NSBox + NSWindow + NSButton + NSButton + NSTextField + NSTextField + NSButton + NSTabView + NSTextField + NSTabViewItem + NSBox + NSTextField + NSTextField + NSSlider + NSTextField + NSTextField + NSStepper + + + + IBProjectSource + PictureController.h + + + + PictureController + NSWindowController + + IBUserSource + + + + + + 0 + ../HandBrake.xcodeproj + 3 + + diff -Nru handbrake-0.9.9+dfsg/macosx/English.lproj/Preferences.xib handbrake-0.9.9+ppa1/macosx/English.lproj/Preferences.xib --- handbrake-0.9.9+dfsg/macosx/English.lproj/Preferences.xib 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/English.lproj/Preferences.xib 2013-02-20 15:40:04.000000000 +0000 @@ -0,0 +1,3681 @@ + + + + 1050 + 11G63 + 1938 + 1138.51 + 569.00 + + com.apple.InterfaceBuilder.CocoaPlugin + 1938 + + + YES + NSPopUpButtonCell + NSComboBoxCell + NSPopUpButton + NSButton + NSMenu + NSTextFieldCell + NSButtonCell + NSMenuItem + NSComboBox + NSCustomView + NSCustomObject + NSView + NSWindowTemplate + NSTextField + NSUserDefaultsController + + + YES + com.apple.InterfaceBuilder.CocoaPlugin + + + PluginDependencyRecalculationVersion + + + + YES + + HBPreferencesController + + + FirstResponder + + + NSApplication + + + 3 + 2 + {{136, 318}, {500, 200}} + 813171712 + Preferences + NSPanel + + View + + + {213, 107} + + + 256 + {500, 200} + + + + + {{0, 0}, {1440, 878}} + {213, 129} + {10000000000000, 10000000000000} + YES + + + YES + + + + 256 + + YES + + + 268 + {{123, 113}, {195, 22}} + + + YES + + -2076049856 + 133120 + + LucidaGrande + 11 + 3100 + + + 109199615 + 129 + + + 400 + 75 + + + Alert Window + + 1048576 + 2147483647 + 1 + + NSImage + NSMenuCheckmark + + + NSImage + NSMenuMixedState + + _popUpItemAction: + + + YES + + OtherViews + + YES + + + Do Nothing + + 1048576 + 2147483647 + + + _popUpItemAction: + + + + + + Growl Notification + + 1048576 + 2147483647 + + + _popUpItemAction: + + + + + Alert Window And Growl + + 1048576 + 2147483647 + + + _popUpItemAction: + + + + + Put Computer To Sleep + + 1048576 + 2147483647 + + + _popUpItemAction: + + + + + Shut Down Computer + + 1048576 + 2147483647 + + + _popUpItemAction: + + + + + LucidaGrande + 13 + 1044 + + + 1 + 1 + YES + YES + 2 + + + + + 256 + {{123, 90}, {313, 18}} + + + YES + + -2080244224 + 131072 + Play System Alert Sound + + + 1211912703 + 2 + + NSImage + NSSwitch + + + NSSwitch + + + + 200 + 25 + + + + + 268 + {{345, 71}, {96, 16}} + + + YES + + 67239424 + 134479872 + Browse ... + + LucidaGrande + 9 + 3614 + + + -2038284033 + 129 + + + 200 + 25 + + + + + 268 + {{209, 73}, {125, 14}} + + + YES + + 68288064 + 272761856 + None + + + + 6 + System + controlColor + + 3 + MC42NjY2NjY2NjY3AA + + + + 6 + System + controlTextColor + + 3 + MAA + + + + + + + 256 + {{123, 220}, {133, 18}} + + + YES + + 67239424 + 131072 + Show Presets Drawer + + + 1211912703 + 2 + + + + 200 + 25 + + + + + 256 + {{125, 38}, {303, 18}} + + + YES + + 67239424 + 131072 + Use Auto Naming (uses DVD name and title number) + + + 1211912703 + 2 + + + + 200 + 25 + + + + + 256 + {{52, 117}, {69, 14}} + + + YES + + 67239424 + 272760832 + When Done: + + + + + + + + + 256 + {{123, 175}, {194, 18}} + + + YES + + 67239424 + 131072 + Automatically check for updates + + + 1211912703 + 2 + + + + 200 + 25 + + + + + 256 + {{123, 71}, {86, 18}} + + + YES + + 67239424 + 131072 + Send file to: + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{62, 222}, {59, 14}} + + + YES + + 67239424 + 272760832 + At launch: + + + + + + + + + 256 + {{125, 20}, {134, 14}} + + + YES + + 67239424 + 71434240 + Default MP4 Extension: + + + + + + + + + 256 + {{141, 199}, {95, 14}} + + + YES + + 67239424 + 71434240 + Source selection: + + + + + + + + + 256 + {{52, 40}, {71, 14}} + + + YES + + 67239424 + 272760832 + Output files: + + + + + + + + + 256 + {{263, 19}, {66, 15}} + + YES + + 71433792 + 264192 + + + 109199615 + 1 + + LucidaGrande + 9 + 16 + + + + + + 400 + 75 + + + Auto + + 1048576 + 2147483647 + 1 + + + _popUpItemAction: + + + YES + + + OtherViews + + + YES + + + + .m4v + + 1048576 + 2147483647 + + + _popUpItemAction: + + + + + .mp4 + + 1048576 + 2147483647 + + + _popUpItemAction: + + + + + 3 + YES + YES + 1 + + + + + 256 + {{141, 148}, {102, 22}} + + + YES + + 71433792 + 133120 + + + 109199615 + 1 + + LucidaGrande + 11 + 16 + + + + + + 400 + 75 + + + Weekly + + 1048576 + 2147483647 + 1 + + + _popUpItemAction: + 604800 + + + YES + + + OtherViews + + + YES + + + Daily + + 1048576 + 2147483647 + + + _popUpItemAction: + 86400 + + + + + + Monthly + + 1048576 + 2147483647 + + + _popUpItemAction: + 2629800 + + + + + 1 + 3 + YES + YES + 1 + + + + + 256 + {{238, 194}, {205, 22}} + + + YES + + 71433792 + 133120 + + + 109199615 + 1 + + + + + + 400 + 75 + + + Open Source + + 1048576 + 2147483647 + 1 + + + _popUpItemAction: + + + YES + + + OtherViews + + + YES + + + Do Nothing + + 1048576 + 2147483647 + + + _popUpItemAction: + + + + + + Open Source (Title Specific) + + 1048576 + 2147483647 + + + _popUpItemAction: + + + + + 1 + 3 + YES + YES + 1 + + + + {460, 256} + + NSView + NSControl + + + + 256 + + YES + + + 268 + {{34, 42}, {432, 17}} + + + + YES + + 67239488 + 138413056 + Nothing here right now, but I am sure we will think of something + + + + + + + + {496, 82} + + + + NSView + NSResponder + + + + 256 + + YES + + + 256 + {{30, 77}, {134, 28}} + + + + YES + + 67239424 + 272760832 + Alternate Language: + + + + + + + + + 256 + {{169, 87}, {247, 22}} + + + + YES + + 343014976 + 272761856 + + + + YES + + 6 + System + textBackgroundColor + + 3 + MQA + + + + 10 + YES + YES + + YES + Afar + Abkhazian + Afrikaans + Albanian + Amharic + Arabic + Armenian + Assamese + Avestan + Aymara + Azerbaijani + Bashkir + Basque + Belarusian + Bengali + Bihari + Bislama + Bosnian + Breton + Bulgarian + Burmese + Catalan + Chamorro + Chechen + Chichewa; Nyanja + Chinese + Church Slavic + Chuvash + Cornish + Corsican + Croatian + Czech + Dansk + Deutsch + Dzongkha + English + Espanol + Esperanto + Estonian + Faroese + Fijian + Francais + Frisian + Georgian + Gaelic (Scots) + Gallegan + Greek, Modern () + Guarani + Gujarati + Hebrew + Herero + Hindi + Hiri Motu + Inuktitut + Interlingue + Interlingua + Indonesian + Inupiaq + Irish + Islenska + Italian + Javanese + Japanese + Kalaallisut (Greenlandic) + Kannada + Kashmiri + Kazakh + Khmer + Kikuyu + Kinyarwanda + Kirghiz + Komi + Korean + Kuanyama + Kurdish + Lao + Latin + Latvian + Lingala + Lithuanian + Letzeburgesch + Macedonian + Magyar + Malay + Malayalam + Malagasy + Maltese + Manx + Maori + Marathi + Marshall + Moldavian + Mongolian + Nauru + Navajo + Ndebele, South + Ndebele, North + Ndonga + Nederlands + Nepali + Northern Sami + Norwegian + Norwegian Bokmal + Norwegian Nynorsk + Occitan (post 1500); Provencal + Oriya + Oromo + Ossetian; Ossetic + Panjabi + Persian + Pali + Polish + Portuges + Pushto + Quechua + Raeto-Romance + Romanian + Rundi + Russian + Sango + Sanskrit + Sardinian + Serbian + Sinhalese + Slovak + Slovenian + Samoan + Shona + Sindhi + Somali + Sotho, Southern + Sundanese + Suomi + Svenska + Swahili + Swati + Tahitian + Tamil + Tatar + Telugu + Tajik + Tagalog + Thai + Tibetian + Tigrinya + Tonga (Tonga Islands) + Tswana + Tsonga + Turkish + Turkmen + Twi + Uighur + Ukrainian + Urdu + Uzbek + Vietnamese + Volapk + Welsh + Wolof + Xhosa + Yiddish + Yoruba + Zhuang + Zulu + + + + + 274 + {13, 2952} + + + YES + + YES + + 10 + 10 + 1000 + + 75628032 + 0 + + + + + LucidaGrande + 12 + 16 + + + 3 + MC4zMzMzMzI5OQA + + + + + 338820672 + 1024 + + + YES + + 6 + System + controlBackgroundColor + + + + + 3 + YES + + + + 3 + 2 + + + 6 + System + gridColor + + 3 + MC41AA + + + 16 + tableViewAction: + -765427712 + + + + 1 + 15 + 0 + YES + 0 + 1 + + + + + + 256 + {{30, 122}, {134, 14}} + + + + YES + + 67239424 + 272760832 + Native Language: + + + + + + + + + 256 + {{90, 55}, {31, 14}} + + + + YES + + 67239424 + 272760832 + AAC: + + + + + + + + + 256 + {{169, 118}, {247, 22}} + + + + YES + + 343014976 + 272761856 + English + + + YES + + + 10 + YES + YES + + YES + Afar + Abkhazian + Afrikaans + Albanian + Amharic + Arabic + Armenian + Assamese + Avestan + Aymara + Azerbaijani + Bashkir + Basque + Belarusian + Bengali + Bihari + Bislama + Bosnian + Breton + Bulgarian + Burmese + Catalan + Chamorro + Chechen + Chichewa; Nyanja + Chinese + Church Slavic + Chuvash + Cornish + Corsican + Croatian + Czech + Dansk + Deutsch + Dzongkha + English + Espanol + Esperanto + Estonian + Faroese + Fijian + Francais + Frisian + Georgian + Gaelic (Scots) + Gallegan + Greek, Modern () + Guarani + Gujarati + Hebrew + Herero + Hindi + Hiri Motu + Inuktitut + Interlingue + Interlingua + Indonesian + Inupiaq + Irish + Islenska + Italian + Javanese + Japanese + Kalaallisut (Greenlandic) + Kannada + Kashmiri + Kazakh + Khmer + Kikuyu + Kinyarwanda + Kirghiz + Komi + Korean + Kuanyama + Kurdish + Lao + Latin + Latvian + Lingala + Lithuanian + Letzeburgesch + Macedonian + Magyar + Malay + Malayalam + Malagasy + Maltese + Manx + Maori + Marathi + Marshall + Moldavian + Mongolian + Nauru + Navajo + Ndebele, South + Ndebele, North + Ndonga + Nederlands + Nepali + Northern Sami + Norwegian + Norwegian Bokmal + Norwegian Nynorsk + Occitan (post 1500); Provencal + Oriya + Oromo + Ossetian; Ossetic + Panjabi + Persian + Pali + Polish + Portuges + Pushto + Quechua + Raeto-Romance + Romanian + Rundi + Russian + Sango + Sanskrit + Sardinian + Serbian + Sinhalese + Slovak + Slovenian + Samoan + Shona + Sindhi + Somali + Sotho, Southern + Sundanese + Suomi + Svenska + Swahili + Swati + Tahitian + Tamil + Tatar + Telugu + Tajik + Tagalog + Thai + Tibetian + Tigrinya + Tonga (Tonga Islands) + Tswana + Tsonga + Turkish + Turkmen + Twi + Uighur + Ukrainian + Urdu + Uzbek + Vietnamese + Volapk + Welsh + Wolof + Xhosa + Yiddish + Yoruba + Zhuang + Zulu + + + + + 274 + {13, 2952} + + + YES + + YES + + 10 + 10 + 1000 + + 75628032 + 0 + + + + + + 3 + MC4zMzMzMzI5OQA + + + + + 338820672 + 1024 + + + YES + + + + 3 + YES + + + + 3 + 2 + + + 16 + tableViewAction: + -765427712 + + + + 1 + 15 + 0 + YES + 0 + 1 + + + + + + 256 + {{91, 18}, {292, 26}} + + + + YES + + 67239424 + 0 + Show advanced options for Auto Passthru + + + 1211912703 + 2 + + + + 200 + 25 + + + + + 268 + {{123, 53}, {333, 18}} + + + + YES + + -2080244224 + 131072 + Use CoreAudio instead of FAAC for Built-In Presets + + + 1211912703 + 130 + + + + + 200 + 25 + + + + {492, 157} + + + + + NSView + + NSResponder + + + + 256 + + YES + + + 268 + {{302, 172}, {48, 19}} + + + + YES + + -1804468671 + 272761856 + + + + YES + + + 6 + System + textColor + + + + + + + 256 + {{17, 207}, {280, 14}} + + + + YES + + 67239424 + 71434240 + x264 Constant Quality fractional granularity: + + + + + + + + + 256 + {{48, 175}, {249, 14}} + + + + YES + + 67239424 + 71434240 + Minimum length of title to scan (seconds): + + + + + + + + + 256 + {{99, 145}, {198, 14}} + + + + YES + + 67239424 + 71434240 + Number of picture previews to scan: + + + + + + + + + 256 + {{137, 53}, {160, 15}} + + + + YES + + 67239424 + 4325376 + Activity Log Verbosity Level: + + + + + + + + + 256 + {{108, 76}, {27, 14}} + + + + YES + + 67239424 + 272760832 + Log: + + + + + + + + + 256 + {{70, 110}, {65, 14}} + + + + YES + + 67239424 + 272760832 + Dvd-Video: + + + + + + + + + 256 + {{137, 74}, {304, 18}} + + + + YES + + 67239424 + 131072 + Put individual encode logs in same location as movie + + + 1211912703 + 2 + + + + 200 + 25 + + + + + 256 + {{137, 108}, {220, 18}} + + + + YES + + 67239424 + 131072 + Use libdvdnav (instead of libdvdread) + + + 1211912703 + 2 + + + + 200 + 25 + + + + + 256 + {{137, 18}, {217, 18}} + + + + YES + + 67239424 + 131072 + Alert when updating built-in presets + + + 1211912703 + 2 + + + + 200 + 25 + + + + + 268 + {{299, 140}, {73, 22}} + + + + YES + + -2076049856 + 133120 + + + 109199615 + 129 + + + 400 + 75 + + YES + + OtherViews + + YES + + + 10 + + 1048576 + 2147483647 + + + _popUpItemAction: + + + + + 15 + + 1048576 + 2147483647 + + + _popUpItemAction: + + + + + 20 + + 1048576 + 2147483647 + + + _popUpItemAction: + + + + + 25 + + 2147483647 + + + _popUpItemAction: + + + + + 30 + + 2147483647 + + + _popUpItemAction: + + + + + 35 + + 2147483647 + + + _popUpItemAction: + + + + + 40 + + 2147483647 + + + _popUpItemAction: + + + + + 45 + + 2147483647 + + + _popUpItemAction: + + + + + 50 + + 2147483647 + + + _popUpItemAction: + + + + + 55 + + 2147483647 + + + _popUpItemAction: + + + + + 60 + + 2147483647 + + + _popUpItemAction: + + + + + -1 + 1 + YES + YES + 2 + + + + + 268 + {{299, 202}, {76, 22}} + + + + YES + + -2076049856 + 133120 + + + 109199615 + 129 + + + 400 + 75 + + + 0.25 + + 2147483647 + 1 + + + _popUpItemAction: + + + YES + + OtherViews + + YES + + + 1.0 + + 1048576 + 2147483647 + + + _popUpItemAction: + + + + + 0.50 + + 1048576 + 2147483647 + + + _popUpItemAction: + + + + + + 0.20 + + 2147483647 + + + _popUpItemAction: + + + + + 2 + 1 + YES + YES + 2 + + + + + 268 + {{303, 49}, {66, 22}} + + + + YES + + -2076049856 + 133120 + + + 109199615 + 129 + + + 400 + 75 + + + 1 + + 1048576 + 2147483647 + 1 + + + _popUpItemAction: + + + YES + + OtherViews + + YES + + + 0 + + 1048576 + 2147483647 + + + _popUpItemAction: + + + + + + 2 + + 1048576 + 2147483647 + + + _popUpItemAction: + + + + + 1 + 1 + YES + YES + 2 + + + + + 256 + {{89, 20}, {46, 14}} + + + + YES + + 67239424 + 272760832 + Presets: + + + + + + + + {495, 241} + + + + + NSView + + NSResponder + + + SUUpdater + + + + + YES + + + window + + + + 187 + + + + fGeneralView + + + + 245 + + + + fAdvancedView + + + + 246 + + + + fAudioView + + + + 247 + + + + fPictureView + + + + 248 + + + + browseSendToApp: + + + + 455 + + + + fSendEncodeToAppField + + + + 456 + + + + delegate + + + + 185 + + + + value: values.DefaultPresetsDrawerShow + + + + + + value: values.DefaultPresetsDrawerShow + value + values.DefaultPresetsDrawerShow + 2 + + + 260 + + + + value: values.DefaultAutoNaming + + + + + + value: values.DefaultAutoNaming + value + values.DefaultAutoNaming + 2 + + + 262 + + + + value: automaticallyChecksForUpdates + + + + + + value: automaticallyChecksForUpdates + value + automaticallyChecksForUpdates + 2 + + + 429 + + + + value: values.sendToMetaX + + + + + + value: values.sendToMetaX + value + values.sendToMetaX + 2 + + + 266 + + + + value: values.DefaultLanguage + + + + + + value: values.DefaultLanguage + value + values.DefaultLanguage + 2 + + + 270 + + + + value: values.ShowAdvancedOptsForAutoPassthru + + + + + + value: values.ShowAdvancedOptsForAutoPassthru + value + values.ShowAdvancedOptsForAutoPassthru + 2 + + + 502 + + + + selectedValue: values.DefaultMpegExtension + + + + + + selectedValue: values.DefaultMpegExtension + selectedValue + values.DefaultMpegExtension + 2 + + + 490 + + + + value: values.EncodeLogLocation + + + + + + value: values.EncodeLogLocation + value + values.EncodeLogLocation + 2 + + + 349 + + + + selectedValue: values.PreviewsNumber + + + + + + selectedValue: values.PreviewsNumber + selectedValue + values.PreviewsNumber + 2 + + + 358 + + + + selectedValue: values.LoggingLevel + + + + + + selectedValue: values.LoggingLevel + selectedValue + values.LoggingLevel + 2 + + + 373 + + + + selectedValue: values.LaunchSourceBehavior + + + + + + selectedValue: values.LaunchSourceBehavior + selectedValue + values.LaunchSourceBehavior + 2 + + + 386 + + + + selectedValue: values.x264CqSliderFractional + + + + + + selectedValue: values.x264CqSliderFractional + selectedValue + values.x264CqSliderFractional + 2 + + + 397 + + + + value: values.UseDvdNav + + + + + + value: values.UseDvdNav + value + values.UseDvdNav + 2 + + + 400 + + + + value: values.AlertBuiltInPresetUpdate + + + + + + value: values.AlertBuiltInPresetUpdate + value + values.AlertBuiltInPresetUpdate + 2 + + + 403 + + + + value: values.UseCoreAudio + + + + + + value: values.UseCoreAudio + value + values.UseCoreAudio + 2 + + + 409 + + + + enabled: automaticallyChecksForUpdates + + + + + + enabled: automaticallyChecksForUpdates + enabled + automaticallyChecksForUpdates + 2 + + + 433 + + + + selectedTag: updateCheckInterval + + + + + + selectedTag: updateCheckInterval + selectedTag + updateCheckInterval + 2 + + + 434 + + + + value: values.SendCompletedEncodeToApp + + + + + + value: values.SendCompletedEncodeToApp + value + values.SendCompletedEncodeToApp + 2 + + + 454 + + + + value: values.SendCompletedEncodeToApp + + + + + + value: values.SendCompletedEncodeToApp + value + values.SendCompletedEncodeToApp + 2 + + + 453 + + + + value: values.AlertWhenDoneSound + + + + + + value: values.AlertWhenDoneSound + value + values.AlertWhenDoneSound + 2 + + + 460 + + + + value: values.MinTitleScanSeconds + + + + + + value: values.MinTitleScanSeconds + value + values.MinTitleScanSeconds + 2 + + + 483 + + + + selectedValue: values.AlertWhenDone + + + + + + selectedValue: values.AlertWhenDone + selectedValue + values.AlertWhenDone + 2 + + + 501 + + + + value: values.AlternateLanguage + + + + + + value: values.AlternateLanguage + value + values.AlternateLanguage + 2 + + + 513 + + + + + YES + + 0 + + YES + + + + + + -2 + + + File's Owner + + + -1 + + + First Responder + + + 5 + + + YES + + + + Preferences + + + 6 + + + + + 61 + + + Shared Defaults + + + 233 + + + YES + + + + + + + + + + + + + + + + + + + General + + + 238 + + + YES + + + + + + 239 + + + YES + + + + + + 242 + + + YES + + + + + + 243 + + + YES + + + + + + 244 + + + YES + + + + + + 275 + + + YES + + + + + + 276 + + + YES + + + + + + 289 + + + YES + + + + + + 234 + + + YES + + + + Picture + + + 235 + + + YES + + + + + + + + + + Audio + + + 252 + + + YES + + + + + + 253 + + + YES + + + + + + 254 + + + YES + + + + + + 236 + + + YES + + + + + + + + + + + + + + + + + Advanced + + + 301 + + + + + 302 + + + + + 304 + + + + + 305 + + + + + 306 + + + + + 307 + + + + + 308 + + + + + 309 + + + YES + + + + + + 315 + + + + + 316 + + + + + 317 + + + + + 290 + + + YES + + + + + + + + 292 + + + + + -3 + + + Application + + + 326 + + + YES + + + + + + 327 + + + + + 347 + + + YES + + + + + + 348 + + + + + 350 + + + YES + + + + + + 351 + + + + + 352 + + + YES + + + + + + 353 + + + YES + + + + + + 354 + + + YES + + + + + + + + + + + + + + + + 355 + + + + + 356 + + + + + 357 + + + + + 359 + + + YES + + + + + + 360 + + + + + 361 + + + + + 362 + + + + + 363 + + + YES + + + + + + 364 + + + YES + + + + + + 365 + + + YES + + + + + + + + 368 + + + + + 369 + + + + + 370 + + + + + 371 + + + YES + + + + + + 372 + + + + + 374 + + + YES + + + + + + 375 + + + YES + + + + + + 376 + + + YES + + + + + + + + 377 + + + + + 378 + + + + + 379 + + + + + 383 + + + YES + + + + + + 384 + + + + + 387 + + + YES + + + + + + 388 + + + YES + + + + + + 389 + + + YES + + + + + + + + + 390 + + + + + 391 + + + + + 393 + + + + + 394 + + + + + 395 + + + YES + + + + + + 396 + + + + + 398 + + + YES + + + + + + 399 + + + + + 401 + + + YES + + + + + + 402 + + + + + 406 + + + YES + + + + + + 407 + + + + + 410 + + + Updater + + + 414 + + + YES + + + + + + 415 + + + YES + + + + + + 416 + + + YES + + + + + + + + 417 + + + + + 419 + + + + + 420 + + + + + 442 + + + YES + + + + + + 443 + + + + + 444 + + + YES + + + + + + 445 + + + + + 446 + + + YES + + + + + + 447 + + + + + 448 + + + YES + + + + + + 449 + + + + + 450 + + + YES + + + + + + 451 + + + + + 457 + + + YES + + + + + + 458 + + + + + 463 + + + YES + + + + + + 464 + + + + + 480 + + + YES + + + + + + 481 + + + + + 484 + + + + + 485 + + + + + 486 + + + YES + + + + + + 487 + + + + + 491 + + + YES + + + + + + 492 + + + YES + + + + + + 493 + + + YES + + + + + + + + + + + 494 + + + + + 495 + + + + + 496 + + + + + 497 + + + + + 498 + + + + + 499 + + + + + 508 + + + YES + + + + + + 509 + + + YES + + + + + + 510 + + + + + 511 + + + + + 514 + + + + + 515 + + + + + 516 + + + + + 517 + + + + + 518 + + + + + 519 + + + + + + + YES + + YES + -1.IBPluginDependency + -2.IBPluginDependency + -3.IBPluginDependency + 233.IBPluginDependency + 234.IBPluginDependency + 235.IBPluginDependency + 236.IBPluginDependency + 238.IBPluginDependency + 239.IBPluginDependency + 242.IBPluginDependency + 243.IBPluginDependency + 244.IBPluginDependency + 252.IBPluginDependency + 253.IBPluginDependency + 254.IBPluginDependency + 275.IBPluginDependency + 276.IBPluginDependency + 289.IBPluginDependency + 290.IBPluginDependency + 292.IBPluginDependency + 301.IBPluginDependency + 302.IBPluginDependency + 304.IBPluginDependency + 305.IBPluginDependency + 306.IBPluginDependency + 307.IBPluginDependency + 308.IBPluginDependency + 309.IBPluginDependency + 315.IBPluginDependency + 316.IBPluginDependency + 317.IBPluginDependency + 326.IBPluginDependency + 327.IBPluginDependency + 347.IBPluginDependency + 348.IBPluginDependency + 350.IBPluginDependency + 351.IBPluginDependency + 352.IBPluginDependency + 353.IBPluginDependency + 354.IBPluginDependency + 355.IBPluginDependency + 356.IBPluginDependency + 357.IBPluginDependency + 359.IBPluginDependency + 360.IBPluginDependency + 361.IBPluginDependency + 362.IBPluginDependency + 363.IBPluginDependency + 364.IBPluginDependency + 365.IBPluginDependency + 368.IBPluginDependency + 369.IBPluginDependency + 370.IBPluginDependency + 371.IBPluginDependency + 372.IBPluginDependency + 374.IBPluginDependency + 375.IBPluginDependency + 376.IBPluginDependency + 377.IBPluginDependency + 378.IBPluginDependency + 379.IBPluginDependency + 383.IBPluginDependency + 384.IBPluginDependency + 387.IBPluginDependency + 388.IBPluginDependency + 389.IBPluginDependency + 390.IBPluginDependency + 391.IBPluginDependency + 393.IBPluginDependency + 394.IBPluginDependency + 395.IBPluginDependency + 396.IBPluginDependency + 398.IBPluginDependency + 399.IBPluginDependency + 401.IBPluginDependency + 402.IBPluginDependency + 406.IBPluginDependency + 407.IBPluginDependency + 410.IBPluginDependency + 414.IBPluginDependency + 415.IBPluginDependency + 416.IBPluginDependency + 417.IBPluginDependency + 419.IBPluginDependency + 420.IBPluginDependency + 442.IBPluginDependency + 443.IBPluginDependency + 444.IBPluginDependency + 445.IBPluginDependency + 446.IBPluginDependency + 447.IBPluginDependency + 448.IBPluginDependency + 449.IBPluginDependency + 450.IBPluginDependency + 451.IBPluginDependency + 457.IBPluginDependency + 458.IBPluginDependency + 463.IBPluginDependency + 464.IBPluginDependency + 480.IBPluginDependency + 481.IBPluginDependency + 484.IBPluginDependency + 485.IBPluginDependency + 486.IBPluginDependency + 487.IBPluginDependency + 491.IBPluginDependency + 492.IBPluginDependency + 493.IBPluginDependency + 494.IBPluginDependency + 495.IBPluginDependency + 496.IBPluginDependency + 497.IBPluginDependency + 498.IBPluginDependency + 499.IBPluginDependency + 5.IBPluginDependency + 5.IBWindowTemplateEditedContentRect + 508.IBPluginDependency + 509.IBPluginDependency + 510.IBPluginDependency + 511.IBPluginDependency + 514.IBPluginDependency + 515.IBPluginDependency + 516.IBPluginDependency + 517.IBPluginDependency + 518.IBPluginDependency + 519.IBPluginDependency + 6.IBPluginDependency + 61.IBPluginDependency + + + YES + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + {{69, 656}, {500, 200}} + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + + + YES + + + + + + YES + + + + + 519 + + + + YES + + HBPreferencesController + NSWindowController + + browseSendToApp: + id + + + browseSendToApp: + + browseSendToApp: + id + + + + YES + + YES + fAdvancedView + fAudioView + fGeneralView + fPictureView + fSendEncodeToAppField + + + YES + NSView + NSView + NSView + NSView + NSTextField + + + + YES + + YES + fAdvancedView + fAudioView + fGeneralView + fPictureView + fSendEncodeToAppField + + + YES + + fAdvancedView + NSView + + + fAudioView + NSView + + + fGeneralView + NSView + + + fPictureView + NSView + + + fSendEncodeToAppField + NSTextField + + + + + IBProjectSource + ./Classes/HBPreferencesController.h + + + + SUUpdater + NSObject + + checkForUpdates: + id + + + checkForUpdates: + + checkForUpdates: + id + + + + delegate + id + + + delegate + + delegate + id + + + + IBProjectSource + ./Classes/SUUpdater.h + + + + + 0 + IBCocoaFramework + + com.apple.InterfaceBuilder.CocoaPlugin.macosx + + + + com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3 + + + YES + 3 + + YES + + YES + NSMenuCheckmark + NSMenuMixedState + NSSwitch + + + YES + {11, 11} + {10, 3} + {15, 15} + + + + diff -Nru handbrake-0.9.9+dfsg/macosx/English.lproj/Queue.xib handbrake-0.9.9+ppa1/macosx/English.lproj/Queue.xib --- handbrake-0.9.9+dfsg/macosx/English.lproj/Queue.xib 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/English.lproj/Queue.xib 2010-08-19 18:45:59.000000000 +0000 @@ -0,0 +1,1926 @@ + + + + 1050 + 10F569 + 788 + 1038.29 + 461.00 + + com.apple.InterfaceBuilder.CocoaPlugin + 788 + + + YES + + + + + YES + com.apple.InterfaceBuilder.CocoaPlugin + + + YES + + YES + + + YES + + + + YES + + HBQueueController + + + FirstResponder + + + NSApplication + + + 4111 + 2 + {{893, 128}, {587, 432}} + 1886912512 + Queue - HandBrake + NSWindow + + View + + {1.79769e+308, 1.79769e+308} + {525, 340} + + + 256 + + YES + + + 274 + + YES + + + 274 + + YES + + + 2304 + + YES + + + 4352 + {517, 329} + + YES + + + 256 + {{518, 0}, {16, 17}} + + + YES + + icon + 38 + 38 + 38 + + 75628096 + 2048 + + + LucidaGrande + 11 + 3100 + + + 6 + System + headerColor + + 3 + MQA + + + + 6 + System + headerTextColor + + 3 + MAA + + + + + 130560 + 33554432 + 3 + 0 + 0 + YES + + 3 + YES + YES + + + + desc + 450 + 40 + 5000 + + 75628096 + 2048 + + + + 3 + MC4zMzMzMzI5OQA + + + + + 337772032 + 0 + + LucidaGrande + 12 + 16 + + + + 6 + System + textBackgroundColor + + + + 6 + System + controlTextColor + + + + 1 + YES + + + + action + 20 + 8 + 20 + + 75628096 + 134219776 + + + + + + + 67239424 + 134217728 + + + + 135020799 + 6 + + NSImage + Delete + + + + 400 + 75 + + + + + 3 + 2 + + + 6 + System + gridColor + + 3 + MC41AA + + + 17 + 314605568 + + + 1 + 15 + 0 + YES + 0 + + + {{1, 1}, {517, 329}} + + + + + 6 + System + controlBackgroundColor + + 3 + MC42NjY2NjY2NjY3AA + + + 4 + + + + 256 + {{518, 1}, {15, 329}} + + + _doScroller: + 0.71428570000000002 + + + + -2147483392 + {{-100, -100}, {282, 15}} + + 1 + + _doScroller: + 0.9656652 + + + {{20, 20}, {534, 331}} + + + 18 + + + + AAAAAAAAAABBmAAAQZgAAA + + + + -2147483356 + {{60, 1}, {180, 16}} + + YES + + 67501824 + 262144 + + + + + Helvetica + 12 + 16 + + + 30 + 0.0 + 2 + 0.0 + 31 + 1 + YES + NO + + + + + -2147483356 + {{296, 2}, {80, 16}} + + YES + + 67501824 + 262144 + + + + + + 10 + 0.0 + 3 + 0.0 + 11 + 1 + YES + NO + + + + + -2147483356 + {{17, 0}, {38, 14}} + + YES + + 67239424 + 272629760 + Indent + + + + 6 + System + controlColor + + + + + + + + -2147483356 + {{245, 1}, {46, 14}} + + YES + + 67239424 + 272629760 + Spacing + + + + + + + + + 292 + {{6, -25}, {159, 16}} + + YES + + 67239424 + 134479872 + quick way to intercept delete key + + LucidaGrande + 9 + 3614 + + + -2038021889 + 34 + + LucidaGrande + 9 + 16 + + +  + 200 + 25 + + + + {{0, 9}, {574, 358}} + + NSView + NSResponder + + + + 264 + {{17, 407}, {148, 14}} + + YES + + 67239424 + 272760832 + Pending Jobs + + + + + + + + + 266 + {{17, 373}, {560, 30}} + + YES + + 67239424 + 4325376 + There are no jobs currently encoding + + + + + + + + {587, 432} + + + {{0, 0}, {1920, 1178}} + {525, 362} + {1.79769e+308, 1.79769e+308} + QueueWindow + + + + + YES + + + Edit + + 2147483647 + + NSImage + NSMenuCheckmark + + + NSImage + NSMenuMixedState + + + + + Delete + + 2147483647 + + + + + + Show + + 2147483647 + + + + + + + + + YES + + + fQueuePane + + + + 2561 + + + + fQueueCountField + + + + 2564 + + + + delegate + + + + 2579 + + + + fOutlineView + + + + 2601 + + + + dataSource + + + + 2602 + + + + delegate + + + + 2603 + + + + removeSelectedQueueItem: + + + + 2623 + + + + window + + + + 2645 + + + + fProgressTextField + + + + 2648 + + + + menu + + + + 2653 + + + + editSelectedQueueItem: + + + + 2654 + + + + removeSelectedQueueItem: + + + + 2656 + + + + revealSelectedQueueItem: + + + + 2657 + + + + + YES + + 0 + + + + + + -2 + + + File's Owner + + + -1 + + + First Responder + + + 2576 + + + YES + + + + Window + + + 2577 + + + YES + + + + + + + + 2547 + + + YES + + + + + + + + + + + 2596 + + + YES + + + + + + + + 2597 + + + YES + + + + + + + + 2599 + + + YES + + + + + + 2609 + + + + + 2604 + + + YES + + + + + + 2605 + + + + + 2624 + + + YES + + + + + + 2625 + + + + + 2610 + + + YES + + + + + + 2611 + + + YES + + + + + + 2614 + + + YES + + + + + + 2615 + + + YES + + + + + + 2622 + + + YES + + + + + + 2638 + + + + + 2639 + + + + + 2640 + + + + + 2641 + + + + + 2642 + + + + + 2643 + + + + + 2644 + + + + + -3 + + + Application + + + 2511 + + + YES + + + + + + 2637 + + + + + 2646 + + + YES + + + + + + 2647 + + + + + 2649 + + + YES + + + + + + ContextMenu + + + 2650 + + + + + 2652 + + + + + 2655 + + + + + + + YES + + YES + -3.IBPluginDependency + 2511.IBPluginDependency + 2511.ImportedFromIB2 + 2547.IBPluginDependency + 2547.ImportedFromIB2 + 2576.IBEditorWindowLastContentRect + 2576.IBPluginDependency + 2576.IBWindowTemplateEditedContentRect + 2576.ImportedFromIB2 + 2576.windowTemplate.hasMaxSize + 2576.windowTemplate.hasMinSize + 2576.windowTemplate.maxSize + 2576.windowTemplate.minSize + 2577.IBPluginDependency + 2577.ImportedFromIB2 + 2596.IBPluginDependency + 2596.ImportedFromIB2 + 2597.CustomClassName + 2597.IBPluginDependency + 2597.ImportedFromIB2 + 2599.IBPluginDependency + 2599.ImportedFromIB2 + 2604.IBPluginDependency + 2604.ImportedFromIB2 + 2605.IBPluginDependency + 2605.ImportedFromIB2 + 2609.CustomClassName + 2609.IBPluginDependency + 2609.ImportedFromIB2 + 2610.IBPluginDependency + 2610.ImportedFromIB2 + 2611.IBPluginDependency + 2611.ImportedFromIB2 + 2614.IBPluginDependency + 2614.ImportedFromIB2 + 2615.IBPluginDependency + 2615.ImportedFromIB2 + 2622.IBPluginDependency + 2622.ImportedFromIB2 + 2624.IBPluginDependency + 2624.ImportedFromIB2 + 2625.IBPluginDependency + 2625.ImportedFromIB2 + 2637.IBPluginDependency + 2638.IBPluginDependency + 2639.IBPluginDependency + 2640.IBPluginDependency + 2641.IBPluginDependency + 2642.IBPluginDependency + 2643.IBPluginDependency + 2643.IBShouldRemoveOnLegacySave + 2644.IBPluginDependency + 2644.IBShouldRemoveOnLegacySave + 2646.IBPluginDependency + 2646.ImportedFromIB2 + 2647.IBPluginDependency + 2649.IBEditorWindowLastContentRect + 2649.IBPluginDependency + 2650.IBPluginDependency + 2652.IBPluginDependency + 2655.IBPluginDependency + + + YES + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{77, 333}, {587, 432}} + com.apple.InterfaceBuilder.CocoaPlugin + {{77, 333}, {587, 432}} + + + + {3.40282e+38, 3.40282e+38} + {525, 340} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + HBQueueOutlineView + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + HBImageAndTextCell + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + {{555, 544}, {96, 63}} + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + + + YES + + + YES + + + + + YES + + + YES + + + + 2657 + + + + YES + + HBImageAndTextCell + NSTextFieldCell + + IBProjectSource + HBImageAndTextCell.h + + + + HBImageAndTextCell + NSTextFieldCell + + IBUserSource + + + + + HBQueueController + NSWindowController + + YES + + YES + editSelectedQueueItem: + imageSpacingChanged: + indentChanged: + removeSelectedQueueItem: + revealSelectedQueueItem: + showQueueWindow: + + + YES + id + id + id + id + id + id + + + + YES + + YES + editSelectedQueueItem: + imageSpacingChanged: + indentChanged: + removeSelectedQueueItem: + revealSelectedQueueItem: + showQueueWindow: + + + YES + + editSelectedQueueItem: + id + + + imageSpacingChanged: + id + + + indentChanged: + id + + + removeSelectedQueueItem: + id + + + revealSelectedQueueItem: + id + + + showQueueWindow: + id + + + + + YES + + YES + fCurrentJobPane + fIndentation + fJobDescTextField + fJobIconView + fOutlineView + fProgressBar + fProgressTextField + fQueueCountField + fQueuePane + fSpacing + + + YES + NSView + NSSlider + NSTextField + NSImageView + HBQueueOutlineView + NSProgressIndicator + NSTextField + NSTextField + NSView + NSSlider + + + + YES + + YES + fCurrentJobPane + fIndentation + fJobDescTextField + fJobIconView + fOutlineView + fProgressBar + fProgressTextField + fQueueCountField + fQueuePane + fSpacing + + + YES + + fCurrentJobPane + NSView + + + fIndentation + NSSlider + + + fJobDescTextField + NSTextField + + + fJobIconView + NSImageView + + + fOutlineView + HBQueueOutlineView + + + fProgressBar + NSProgressIndicator + + + fProgressTextField + NSTextField + + + fQueueCountField + NSTextField + + + fQueuePane + NSView + + + fSpacing + NSSlider + + + + + IBProjectSource + HBQueueController.h + + + + HBQueueController + NSWindowController + + YES + + YES + cancelCurrentJob: + revealSelectedJobGroups: + togglePauseResume: + toggleStartCancel: + + + YES + id + id + id + id + + + + YES + + YES + cancelCurrentJob: + revealSelectedJobGroups: + togglePauseResume: + toggleStartCancel: + + + YES + + cancelCurrentJob: + id + + + revealSelectedJobGroups: + id + + + togglePauseResume: + id + + + toggleStartCancel: + id + + + + + IBUserSource + + + + + HBQueueOutlineView + NSOutlineView + + + + HBQueueOutlineView + NSOutlineView + + IBUserSource + + + + + + YES + + NSActionCell + NSCell + + IBFrameworkSource + AppKit.framework/Headers/NSActionCell.h + + + + NSApplication + NSResponder + + IBFrameworkSource + AppKit.framework/Headers/NSApplication.h + + + + NSApplication + + IBFrameworkSource + AppKit.framework/Headers/NSApplicationScripting.h + + + + NSApplication + + IBFrameworkSource + AppKit.framework/Headers/NSColorPanel.h + + + + NSApplication + + IBFrameworkSource + AppKit.framework/Headers/NSHelpManager.h + + + + NSApplication + + IBFrameworkSource + AppKit.framework/Headers/NSPageLayout.h + + + + NSApplication + + IBFrameworkSource + AppKit.framework/Headers/NSUserInterfaceItemSearching.h + + + + NSButton + NSControl + + IBFrameworkSource + AppKit.framework/Headers/NSButton.h + + + + NSButtonCell + NSActionCell + + IBFrameworkSource + AppKit.framework/Headers/NSButtonCell.h + + + + NSCell + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSCell.h + + + + NSControl + NSView + + IBFrameworkSource + AppKit.framework/Headers/NSControl.h + + + + NSFormatter + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSFormatter.h + + + + NSImageCell + NSCell + + IBFrameworkSource + AppKit.framework/Headers/NSImageCell.h + + + + NSImageView + NSControl + + IBFrameworkSource + AppKit.framework/Headers/NSImageView.h + + + + NSMenu + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSMenu.h + + + + NSMenuItem + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSMenuItem.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSAccessibility.h + + + + NSObject + + + + NSObject + + + + NSObject + + + + NSObject + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSDictionaryController.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSDragging.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSFontManager.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSFontPanel.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSKeyValueBinding.h + + + + NSObject + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSNibLoading.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSOutlineView.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSPasteboard.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSSavePanel.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSTableView.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSToolbarItem.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSView.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSArchiver.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSClassDescription.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSError.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSFileManager.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSKeyValueCoding.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSKeyValueObserving.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSKeyedArchiver.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSObject.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSObjectScripting.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSPortCoder.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSRunLoop.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSScriptClassDescription.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSScriptKeyValueCoding.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSScriptObjectSpecifiers.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSScriptWhoseTests.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSThread.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSURL.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSURLConnection.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSURLDownload.h + + + + NSObject + + IBFrameworkSource + Growl.framework/Headers/GrowlApplicationBridge.h + + + + NSObject + + IBFrameworkSource + ImageKit.framework/Headers/IKImageBrowserView.h + + + + NSObject + + IBFrameworkSource + ImageKit.framework/Headers/IKSaveOptions.h + + + + NSObject + + IBFrameworkSource + ImageKit.framework/Headers/ImageKitDeprecated.h + + + + NSObject + + IBFrameworkSource + PDFKit.framework/Headers/PDFDocument.h + + + + NSObject + + IBFrameworkSource + PDFKit.framework/Headers/PDFView.h + + + + NSObject + + IBFrameworkSource + QTKit.framework/Headers/QTCaptureDecompressedAudioOutput.h + + + + NSObject + + IBFrameworkSource + QTKit.framework/Headers/QTCaptureDecompressedVideoOutput.h + + + + NSObject + + IBFrameworkSource + QTKit.framework/Headers/QTCaptureFileOutput.h + + + + NSObject + + IBFrameworkSource + QTKit.framework/Headers/QTCaptureVideoPreviewOutput.h + + + + NSObject + + IBFrameworkSource + QTKit.framework/Headers/QTCaptureView.h + + + + NSObject + + IBFrameworkSource + QTKit.framework/Headers/QTMovie.h + + + + NSObject + + IBFrameworkSource + QTKit.framework/Headers/QTMovieView.h + + + + NSObject + + IBFrameworkSource + QuartzComposer.framework/Headers/QCCompositionParameterView.h + + + + NSObject + + IBFrameworkSource + QuartzComposer.framework/Headers/QCCompositionPickerView.h + + + + NSObject + + IBFrameworkSource + QuartzFilters.framework/Headers/QuartzFilterManager.h + + + + NSObject + + IBFrameworkSource + QuickLookUI.framework/Headers/QLPreviewPanel.h + + + + NSObject + + IBFrameworkSource + Sparkle.framework/Headers/SUAppcast.h + + + + NSObject + + IBFrameworkSource + Sparkle.framework/Headers/SUUpdater.h + + + + NSOutlineView + NSTableView + + + + NSProgressIndicator + NSView + + IBFrameworkSource + AppKit.framework/Headers/NSProgressIndicator.h + + + + NSResponder + + IBFrameworkSource + AppKit.framework/Headers/NSInterfaceStyle.h + + + + NSResponder + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSResponder.h + + + + NSScrollView + NSView + + IBFrameworkSource + AppKit.framework/Headers/NSScrollView.h + + + + NSScroller + NSControl + + IBFrameworkSource + AppKit.framework/Headers/NSScroller.h + + + + NSSlider + NSControl + + IBFrameworkSource + AppKit.framework/Headers/NSSlider.h + + + + NSSliderCell + NSActionCell + + IBFrameworkSource + AppKit.framework/Headers/NSSliderCell.h + + + + NSTableColumn + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSTableColumn.h + + + + NSTableView + NSControl + + + + NSTextField + NSControl + + IBFrameworkSource + AppKit.framework/Headers/NSTextField.h + + + + NSTextFieldCell + NSActionCell + + IBFrameworkSource + AppKit.framework/Headers/NSTextFieldCell.h + + + + NSView + + IBFrameworkSource + AppKit.framework/Headers/NSClipView.h + + + + NSView + + + + NSView + + IBFrameworkSource + AppKit.framework/Headers/NSRulerView.h + + + + NSView + NSResponder + + + + NSWindow + + IBFrameworkSource + AppKit.framework/Headers/NSDrawer.h + + + + NSWindow + NSResponder + + IBFrameworkSource + AppKit.framework/Headers/NSWindow.h + + + + NSWindow + + IBFrameworkSource + AppKit.framework/Headers/NSWindowScripting.h + + + + NSWindowController + NSResponder + + showWindow: + id + + + showWindow: + + showWindow: + id + + + + IBFrameworkSource + AppKit.framework/Headers/NSWindowController.h + + + + + 0 + IBCocoaFramework + + com.apple.InterfaceBuilder.CocoaPlugin.macosx + + + + com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3 + + + YES + ../HandBrake.xcodeproj + 3 + + YES + + YES + Delete + NSMenuCheckmark + NSMenuMixedState + + + YES + {16, 16} + {9, 8} + {7, 2} + + + + diff -Nru handbrake-0.9.9+dfsg/macosx/genstrings.sh handbrake-0.9.9+ppa1/macosx/genstrings.sh --- handbrake-0.9.9+dfsg/macosx/genstrings.sh 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/genstrings.sh 2008-04-26 07:54:10.000000000 +0000 @@ -0,0 +1,2 @@ +#! /bin/sh +genstrings *.m* Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/macosx/Growl.framework/Growl and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/macosx/Growl.framework/Growl differ diff -Nru handbrake-0.9.9+dfsg/macosx/Growl.framework/Headers/GrowlApplicationBridge.h handbrake-0.9.9+ppa1/macosx/Growl.framework/Headers/GrowlApplicationBridge.h --- handbrake-0.9.9+dfsg/macosx/Growl.framework/Headers/GrowlApplicationBridge.h 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/Growl.framework/Headers/GrowlApplicationBridge.h 2013-04-20 13:24:15.000000000 +0000 @@ -0,0 +1,567 @@ +// +// GrowlApplicationBridge.h +// Growl +// +// Created by Evan Schoenberg on Wed Jun 16 2004. +// Copyright 2004-2006 The Growl Project. All rights reserved. +// + +/*! + * @header GrowlApplicationBridge.h + * @abstract Defines the GrowlApplicationBridge class. + * @discussion This header defines the GrowlApplicationBridge class as well as + * the GROWL_PREFPANE_BUNDLE_IDENTIFIER constant. + */ + +#ifndef __GrowlApplicationBridge_h__ +#define __GrowlApplicationBridge_h__ + +#import +#import +#import + +//Forward declarations +@protocol GrowlApplicationBridgeDelegate; + +//------------------------------------------------------------------------------ +#pragma mark - + +/*! + * @class GrowlApplicationBridge + * @abstract A class used to interface with Growl. + * @discussion This class provides a means to interface with Growl. + * + * Currently it provides a way to detect if Growl is installed and launch the + * GrowlHelperApp if it's not already running. + */ +@interface GrowlApplicationBridge : NSObject { + +} + +/*! + * @method isGrowlInstalled + * @abstract Detects whether Growl is installed. + * @discussion Determines if the Growl prefpane and its helper app are installed. + * @result this method will forever return YES. + */ ++ (BOOL) isGrowlInstalled __attribute__((deprecated)); + +/*! + * @method isGrowlRunning + * @abstract Detects whether GrowlHelperApp is currently running. + * @discussion Cycles through the process list to find whether GrowlHelperApp is running and returns its findings. + * @result Returns YES if GrowlHelperApp is running, NO otherwise. + */ ++ (BOOL) isGrowlRunning; + + +/*! + * @method isMistEnabled + * @abstract Gives the caller a fairly good indication of whether or not built-in notifications(Mist) will be used. + * @discussion since this call makes use of isGrowlRunning it is entirely possible for this value to change between call and + * executing a notification dispatch + * @result Returns YES if Growl isn't reachable and the developer has not opted-out of + * Mist and the user hasn't set the global mist enable key to false. + */ ++ (BOOL)isMistEnabled; + +/*! + * @method setShouldUseBuiltInNotifications + * @abstract opt-out mechanism for the mist notification style in the event growl can't be reached. + * @discussion if growl is unavailable due to not being installed or as a result of being turned off then + * this option can enable/disable a built-in fire and forget display style + * @param should Specifies whether or not the developer wants to opt-in (default) or opt out + * of the built-in Mist style in the event Growl is unreachable. + */ ++ (void)setShouldUseBuiltInNotifications:(BOOL)should; + +/*! + * @method shouldUseBuiltInNotifications + * @abstract returns the current opt-in state of the framework's use of the Mist display style. + * @result Returns NO if the developer opt-ed out of Mist, the default value is YES. + */ ++ (BOOL)shouldUseBuiltInNotifications; + +#pragma mark - + +/*! + * @method setGrowlDelegate: + * @abstract Set the object which will be responsible for providing and receiving Growl information. + * @discussion This must be called before using GrowlApplicationBridge. + * + * The methods in the GrowlApplicationBridgeDelegate protocol are required + * and return the basic information needed to register with Growl. + * + * The methods in the GrowlApplicationBridgeDelegate_InformalProtocol + * informal protocol are individually optional. They provide a greater + * degree of interaction between the application and growl such as informing + * the application when one of its Growl notifications is clicked by the user. + * + * The methods in the GrowlApplicationBridgeDelegate_Installation_InformalProtocol + * informal protocol are individually optional and are only applicable when + * using the Growl-WithInstaller.framework which allows for automated Growl + * installation. + * + * When this method is called, data will be collected from inDelegate, Growl + * will be launched if it is not already running, and the application will be + * registered with Growl. + * + * If using the Growl-WithInstaller framework, if Growl is already installed + * but this copy of the framework has an updated version of Growl, the user + * will be prompted to update automatically. + * + * @param inDelegate The delegate for the GrowlApplicationBridge. It must conform to the GrowlApplicationBridgeDelegate protocol. + */ ++ (void) setGrowlDelegate:(id)inDelegate; + +/*! + * @method growlDelegate + * @abstract Return the object responsible for providing and receiving Growl information. + * @discussion See setGrowlDelegate: for details. + * @result The Growl delegate. + */ ++ (id) growlDelegate; + +#pragma mark - + +/*! + * @method notifyWithTitle:description:notificationName:iconData:priority:isSticky:clickContext: + * @abstract Send a Growl notification. + * @discussion This is the preferred means for sending a Growl notification. + * The notification name and at least one of the title and description are + * required (all three are preferred). All other parameters may be + * nil (or 0 or NO as appropriate) to accept default values. + * + * If using the Growl-WithInstaller framework, if Growl is not installed the + * user will be prompted to install Growl. If the user cancels, this method + * will have no effect until the next application session, at which time when + * it is called the user will be prompted again. The user is also given the + * option to not be prompted again. If the user does choose to install Growl, + * the requested notification will be displayed once Growl is installed and + * running. + * + * @param title The title of the notification displayed to the user. + * @param description The full description of the notification displayed to the user. + * @param notifName The internal name of the notification. Should be human-readable, as it will be displayed in the Growl preference pane. + * @param iconData NSData object to show with the notification as its icon. If nil, the application's icon will be used instead. + * @param priority The priority of the notification. The default value is 0; positive values are higher priority and negative values are lower priority. Not all Growl displays support priority. + * @param isSticky If YES, the notification will remain on screen until clicked. Not all Growl displays support sticky notifications. + * @param clickContext A context passed back to the Growl delegate if it implements -(void)growlNotificationWasClicked: and the notification is clicked. Not all display plugins support clicking. The clickContext must be plist-encodable (completely of NSString, NSArray, NSNumber, NSDictionary, and NSData types). + */ ++ (void) notifyWithTitle:(NSString *)title + description:(NSString *)description + notificationName:(NSString *)notifName + iconData:(NSData *)iconData + priority:(signed int)priority + isSticky:(BOOL)isSticky + clickContext:(id)clickContext; + +/*! + * @method notifyWithTitle:description:notificationName:iconData:priority:isSticky:clickContext:identifier: + * @abstract Send a Growl notification. + * @discussion This is the preferred means for sending a Growl notification. + * The notification name and at least one of the title and description are + * required (all three are preferred). All other parameters may be + * nil (or 0 or NO as appropriate) to accept default values. + * + * If using the Growl-WithInstaller framework, if Growl is not installed the + * user will be prompted to install Growl. If the user cancels, this method + * will have no effect until the next application session, at which time when + * it is called the user will be prompted again. The user is also given the + * option to not be prompted again. If the user does choose to install Growl, + * the requested notification will be displayed once Growl is installed and + * running. + * + * @param title The title of the notification displayed to the user. + * @param description The full description of the notification displayed to the user. + * @param notifName The internal name of the notification. Should be human-readable, as it will be displayed in the Growl preference pane. + * @param iconData NSData object to show with the notification as its icon. If nil, the application's icon will be used instead. + * @param priority The priority of the notification. The default value is 0; positive values are higher priority and negative values are lower priority. Not all Growl displays support priority. + * @param isSticky If YES, the notification will remain on screen until clicked. Not all Growl displays support sticky notifications. + * @param clickContext A context passed back to the Growl delegate if it implements -(void)growlNotificationWasClicked: and the notification is clicked. Not all display plugins support clicking. The clickContext must be plist-encodable (completely of NSString, NSArray, NSNumber, NSDictionary, and NSData types). + * @param identifier An identifier for this notification. Notifications with equal identifiers are coalesced. + */ ++ (void) notifyWithTitle:(NSString *)title + description:(NSString *)description + notificationName:(NSString *)notifName + iconData:(NSData *)iconData + priority:(signed int)priority + isSticky:(BOOL)isSticky + clickContext:(id)clickContext + identifier:(NSString *)identifier; + +/*! @method notifyWithDictionary: + * @abstract Notifies using a userInfo dictionary suitable for passing to + * NSDistributedNotificationCenter. + * @param userInfo The dictionary to notify with. + * @discussion Before Growl 0.6, your application would have posted + * notifications using NSDistributedNotificationCenter by + * creating a userInfo dictionary with the notification data. This had the + * advantage of allowing you to add other data to the dictionary for programs + * besides Growl that might be listening. + * + * This method allows you to use such dictionaries without being restricted + * to using NSDistributedNotificationCenter. The keys for this dictionary + * can be found in GrowlDefines.h. + */ ++ (void) notifyWithDictionary:(NSDictionary *)userInfo; + +#pragma mark - + +/*! @method registerWithDictionary: + * @abstract Register your application with Growl without setting a delegate. + * @discussion When you call this method with a dictionary, + * GrowlApplicationBridge registers your application using that dictionary. + * If you pass nil, GrowlApplicationBridge will ask the delegate + * (if there is one) for a dictionary, and if that doesn't work, it will look + * in your application's bundle for an auto-discoverable plist. + * (XXX refer to more information on that) + * + * If you pass a dictionary to this method, it must include the + * GROWL_APP_NAME key, unless a delegate is set. + * + * This method is mainly an alternative to the delegate system introduced + * with Growl 0.6. Without a delegate, you cannot receive callbacks such as + * -growlIsReady (since they are sent to the delegate). You can, + * however, set a delegate after registering without one. + * + * This method was introduced in Growl.framework 0.7. + */ ++ (BOOL) registerWithDictionary:(NSDictionary *)regDict; + +/*! @method reregisterGrowlNotifications + * @abstract Reregister the notifications for this application. + * @discussion This method does not normally need to be called. If your + * application changes what notifications it is registering with Growl, call + * this method to have the Growl delegate's + * -registrationDictionaryForGrowl method called again and the + * Growl registration information updated. + * + * This method is now implemented using -registerWithDictionary:. + */ ++ (void) reregisterGrowlNotifications; + +#pragma mark - + +/*! @method setWillRegisterWhenGrowlIsReady: + * @abstract Tells GrowlApplicationBridge to register with Growl when Growl + * launches (or not). + * @discussion When Growl has started listening for notifications, it posts a + * GROWL_IS_READY notification on the Distributed Notification + * Center. GrowlApplicationBridge listens for this notification, using it to + * perform various tasks (such as calling your delegate's + * -growlIsReady method, if it has one). If this method is + * called with YES, one of those tasks will be to reregister + * with Growl (in the manner of -reregisterGrowlNotifications). + * + * This attribute is automatically set back to NO (the default) + * after every GROWL_IS_READY notification. + * @param flag YES if you want GrowlApplicationBridge to register with + * Growl when next it is ready; NO if not. + */ ++ (void) setWillRegisterWhenGrowlIsReady:(BOOL)flag; + +/*! @method willRegisterWhenGrowlIsReady + * @abstract Reports whether GrowlApplicationBridge will register with Growl + * when Growl next launches. + * @result YES if GrowlApplicationBridge will register with Growl + * when next it posts GROWL_IS_READY; NO if not. + */ ++ (BOOL) willRegisterWhenGrowlIsReady; + +#pragma mark - + +/*! @method registrationDictionaryFromDelegate + * @abstract Asks the delegate for a registration dictionary. + * @discussion If no delegate is set, or if the delegate's + * -registrationDictionaryForGrowl method returns + * nil, this method returns nil. + * + * This method does not attempt to clean up the dictionary in any way - for + * example, if it is missing the GROWL_APP_NAME key, the result + * will be missing it too. Use +[GrowlApplicationBridge + * registrationDictionaryByFillingInDictionary:] or + * +[GrowlApplicationBridge + * registrationDictionaryByFillingInDictionary:restrictToKeys:] to try + * to fill in missing keys. + * + * This method was introduced in Growl.framework 0.7. + * @result A registration dictionary. + */ ++ (NSDictionary *) registrationDictionaryFromDelegate; + +/*! @method registrationDictionaryFromBundle: + * @abstract Looks in a bundle for a registration dictionary. + * @discussion This method looks in a bundle for an auto-discoverable + * registration dictionary file using -[NSBundle + * pathForResource:ofType:]. If it finds one, it loads the file using + * +[NSDictionary dictionaryWithContentsOfFile:] and returns the + * result. + * + * If you pass nil as the bundle, the main bundle is examined. + * + * This method does not attempt to clean up the dictionary in any way - for + * example, if it is missing the GROWL_APP_NAME key, the result + * will be missing it too. Use +[GrowlApplicationBridge + * registrationDictionaryByFillingInDictionary:] or + * +[GrowlApplicationBridge + * registrationDictionaryByFillingInDictionary:restrictToKeys:] to try + * to fill in missing keys. + * + * This method was introduced in Growl.framework 0.7. + * @result A registration dictionary. + */ ++ (NSDictionary *) registrationDictionaryFromBundle:(NSBundle *)bundle; + +/*! @method bestRegistrationDictionary + * @abstract Obtains a registration dictionary, filled out to the best of + * GrowlApplicationBridge's knowledge. + * @discussion This method creates a registration dictionary as best + * GrowlApplicationBridge knows how. + * + * First, GrowlApplicationBridge contacts the Growl delegate (if there is + * one) and gets the registration dictionary from that. If no such dictionary + * was obtained, GrowlApplicationBridge looks in your application's main + * bundle for an auto-discoverable registration dictionary file. If that + * doesn't exist either, this method returns nil. + * + * Second, GrowlApplicationBridge calls + * +registrationDictionaryByFillingInDictionary: with whatever + * dictionary was obtained. The result of that method is the result of this + * method. + * + * GrowlApplicationBridge uses this method when you call + * +setGrowlDelegate:, or when you call + * +registerWithDictionary: with nil. + * + * This method was introduced in Growl.framework 0.7. + * @result A registration dictionary. + */ ++ (NSDictionary *) bestRegistrationDictionary; + +#pragma mark - + +/*! @method registrationDictionaryByFillingInDictionary: + * @abstract Tries to fill in missing keys in a registration dictionary. + * @discussion This method examines the passed-in dictionary for missing keys, + * and tries to work out correct values for them. As of 0.7, it uses: + * + * Key Value + * --- ----- + * GROWL_APP_NAME CFBundleExecutableName + * GROWL_APP_ICON_DATA The data of the icon of the application. + * GROWL_APP_LOCATION The location of the application. + * GROWL_NOTIFICATIONS_DEFAULT GROWL_NOTIFICATIONS_ALL + * + * Keys are only filled in if missing; if a key is present in the dictionary, + * its value will not be changed. + * + * This method was introduced in Growl.framework 0.7. + * @param regDict The dictionary to fill in. + * @result The dictionary with the keys filled in. This is an autoreleased + * copy of regDict. + */ ++ (NSDictionary *) registrationDictionaryByFillingInDictionary:(NSDictionary *)regDict; + +/*! @method registrationDictionaryByFillingInDictionary:restrictToKeys: + * @abstract Tries to fill in missing keys in a registration dictionary. + * @discussion This method examines the passed-in dictionary for missing keys, + * and tries to work out correct values for them. As of 0.7, it uses: + * + * Key Value + * --- ----- + * GROWL_APP_NAME CFBundleExecutableName + * GROWL_APP_ICON_DATA The data of the icon of the application. + * GROWL_APP_LOCATION The location of the application. + * GROWL_NOTIFICATIONS_DEFAULT GROWL_NOTIFICATIONS_ALL + * + * Only those keys that are listed in keys will be filled in. + * Other missing keys are ignored. Also, keys are only filled in if missing; + * if a key is present in the dictionary, its value will not be changed. + * + * This method was introduced in Growl.framework 0.7. + * @param regDict The dictionary to fill in. + * @param keys The keys to fill in. If nil, any missing keys are filled in. + * @result The dictionary with the keys filled in. This is an autoreleased + * copy of regDict. + */ ++ (NSDictionary *) registrationDictionaryByFillingInDictionary:(NSDictionary *)regDict restrictToKeys:(NSSet *)keys; + +/*! @brief Tries to fill in missing keys in a notification dictionary. + * @param notifDict The dictionary to fill in. + * @return The dictionary with the keys filled in. This will be a separate instance from \a notifDict. + * @discussion This function examines the \a notifDict for missing keys, and + * tries to get them from the last known registration dictionary. As of 1.1, + * the keys that it will look for are: + * + * \li GROWL_APP_NAME + * \li GROWL_APP_ICON_DATA + * + * @since Growl.framework 1.1 + */ ++ (NSDictionary *) notificationDictionaryByFillingInDictionary:(NSDictionary *)regDict; + ++ (NSDictionary *) frameworkInfoDictionary; + +#pragma mark - + +/*! + *@method growlURLSchemeAvailable + *@abstract Lets the app know whether growl:// is registered on the system, used for certain methods below this + *@return Returns whether growl:// is registered on the system + *@discussion Methods such as openGrowlPreferences rely on the growl:// URL scheme to function + * Further, this method can provide a check on whether Growl is installed, + * however, the framework will not be relying on this method for choosing when/how to notify, + * and it is not recommended that the app rely on it for other than whether to use growl:// methods + *@since Growl.framework 1.4 + */ ++ (BOOL) isGrowlURLSchemeAvailable; + +/*! + * @method openGrowlPreferences: + * @abstract Open Growl preferences, optionally to this app's settings, growl:// method + * @param showApp Whether to show the application's settings, otherwise just opens to the last position + * @return Return's whether opening the URL was succesfull or not. + * @discussion Will launch if Growl is installed, but not running, and open the preferences window + * Uses growl:// URL scheme + * @since Growl.framework 1.4 + */ ++ (BOOL) openGrowlPreferences:(BOOL)showApp; + +@end + +//------------------------------------------------------------------------------ +#pragma mark - + +/*! + * @protocol GrowlApplicationBridgeDelegate + * @abstract Required protocol for the Growl delegate. + * @discussion The methods in this protocol are optional and are called + * automatically as needed by GrowlApplicationBridge. See + * +[GrowlApplicationBridge setGrowlDelegate:]. + * See also GrowlApplicationBridgeDelegate_InformalProtocol. + */ + +@protocol GrowlApplicationBridgeDelegate + +@optional + +/*! + * @method registrationDictionaryForGrowl + * @abstract Return the dictionary used to register this application with Growl. + * @discussion The returned dictionary gives Growl the complete list of + * notifications this application will ever send, and it also specifies which + * notifications should be enabled by default. Each is specified by an array + * of NSString objects. + * + * For most applications, these two arrays can be the same (if all sent + * notifications should be displayed by default). + * + * The NSString objects of these arrays will correspond to the + * notificationName: parameter passed in + * +[GrowlApplicationBridge + * notifyWithTitle:description:notificationName:iconData:priority:isSticky:clickContext:] calls. + * + * The dictionary should have the required key object pairs: + * key: GROWL_NOTIFICATIONS_ALL object: NSArray of NSString objects + * key: GROWL_NOTIFICATIONS_DEFAULT object: NSArray of NSString objects + * + * The dictionary may have the following key object pairs: + * key: GROWL_NOTIFICATIONS_HUMAN_READABLE_NAMES object: NSDictionary of key: notification name object: human-readable notification name + * + * You do not need to implement this method if you have an auto-discoverable + * plist file in your app bundle. (XXX refer to more information on that) + * + * @result The NSDictionary to use for registration. + */ +- (NSDictionary *) registrationDictionaryForGrowl; + +/*! + * @method applicationNameForGrowl + * @abstract Return the name of this application which will be used for Growl bookkeeping. + * @discussion This name is used both internally and in the Growl preferences. + * + * This should remain stable between different versions and incarnations of + * your application. + * For example, "SurfWriter" is a good app name, whereas "SurfWriter 2.0" and + * "SurfWriter Lite" are not. + * + * You do not need to implement this method if you are providing the + * application name elsewhere, meaning in an auto-discoverable plist file in + * your app bundle (XXX refer to more information on that) or in the result + * of -registrationDictionaryForGrowl. + * + * @result The name of the application using Growl. + */ +- (NSString *) applicationNameForGrowl; + +/*! + * @method applicationIconForGrowl + * @abstract Return the NSImage to treat as the application icon. + * @discussion The delegate may optionally return an NSImage + * object to use as the application icon. If this method is not implemented, + * {{{-applicationIconDataForGrowl}}} is tried. If that method is not + * implemented, the application's own icon is used. Neither method is + * generally needed. + * @result The NSImage to treat as the application icon. + */ +- (NSImage *) applicationIconForGrowl; + +/*! + * @method applicationIconDataForGrowl + * @abstract Return the NSData to treat as the application icon. + * @discussion The delegate may optionally return an NSData + * object to use as the application icon; if this is not implemented, the + * application's own icon is used. This is not generally needed. + * @result The NSData to treat as the application icon. + * @deprecated In version 1.1, in favor of {{{-applicationIconForGrowl}}}. + */ +- (NSData *) applicationIconDataForGrowl; + +/*! + * @method growlIsReady + * @abstract Informs the delegate that Growl has launched. + * @discussion Informs the delegate that Growl (specifically, the + * GrowlHelperApp) was launched successfully. The application can take actions + * with the knowledge that Growl is installed and functional. + */ +- (void) growlIsReady; + +/*! + * @method growlNotificationWasClicked: + * @abstract Informs the delegate that a Growl notification was clicked. + * @discussion Informs the delegate that a Growl notification was clicked. It + * is only sent for notifications sent with a non-nil + * clickContext, so if you want to receive a message when a notification is + * clicked, clickContext must not be nil when calling + * +[GrowlApplicationBridge notifyWithTitle: description:notificationName:iconData:priority:isSticky:clickContext:]. + * @param clickContext The clickContext passed when displaying the notification originally via +[GrowlApplicationBridge notifyWithTitle:description:notificationName:iconData:priority:isSticky:clickContext:]. + */ +- (void) growlNotificationWasClicked:(id)clickContext; + +/*! + * @method growlNotificationTimedOut: + * @abstract Informs the delegate that a Growl notification timed out. + * @discussion Informs the delegate that a Growl notification timed out. It + * is only sent for notifications sent with a non-nil + * clickContext, so if you want to receive a message when a notification is + * clicked, clickContext must not be nil when calling + * +[GrowlApplicationBridge notifyWithTitle: description:notificationName:iconData:priority:isSticky:clickContext:]. + * @param clickContext The clickContext passed when displaying the notification originally via +[GrowlApplicationBridge notifyWithTitle:description:notificationName:iconData:priority:isSticky:clickContext:]. + */ +- (void) growlNotificationTimedOut:(id)clickContext; + + +/*! + * @method hasNetworkClientEntitlement + * @abstract Used only in sandboxed situations since we don't know whether the app has com.apple.security.network.client entitlement + * @discussion GrowlDelegate calls to find out if we have the com.apple.security.network.client entitlement, + * since we can't find this out without hitting the sandbox. We only call it if we detect that the application is sandboxed. + */ +- (BOOL) hasNetworkClientEntitlement; + +@end + +#pragma mark - + +#endif /* __GrowlApplicationBridge_h__ */ diff -Nru handbrake-0.9.9+dfsg/macosx/Growl.framework/Headers/GrowlDefines.h handbrake-0.9.9+ppa1/macosx/Growl.framework/Headers/GrowlDefines.h --- handbrake-0.9.9+dfsg/macosx/Growl.framework/Headers/GrowlDefines.h 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/Growl.framework/Headers/GrowlDefines.h 2013-04-20 13:24:15.000000000 +0000 @@ -0,0 +1,386 @@ +// +// GrowlDefines.h +// + +#ifndef _GROWLDEFINES_H +#define _GROWLDEFINES_H + +#ifdef __OBJC__ +#define XSTR(x) (@x) +#else +#define XSTR CFSTR +#endif + +/*! @header GrowlDefines.h + * @abstract Defines all the notification keys. + * @discussion Defines all the keys used for registration with Growl and for + * Growl notifications. + * + * Most applications should use the functions or methods of Growl.framework + * instead of posting notifications such as those described here. + * @updated 2004-01-25 + */ + +// UserInfo Keys for Registration +#pragma mark UserInfo Keys for Registration + +/*! @group Registration userInfo keys */ +/* @abstract Keys for the userInfo dictionary of a GROWL_APP_REGISTRATION distributed notification. + * @discussion The values of these keys describe the application and the + * notifications it may post. + * + * Your application must register with Growl before it can post Growl + * notifications (and have them not be ignored). However, as of Growl 0.6, + * posting GROWL_APP_REGISTRATION notifications directly is no longer the + * preferred way to register your application. Your application should instead + * use Growl.framework's delegate system. + * See +[GrowlApplicationBridge setGrowlDelegate:] or Growl_SetDelegate for + * more information. + */ + +/*! @defined GROWL_APP_NAME + * @abstract The name of your application. + * @discussion The name of your application. This should remain stable between + * different versions and incarnations of your application. + * For example, "SurfWriter" is a good app name, whereas "SurfWriter 2.0" and + * "SurfWriter Lite" are not. + */ +#define GROWL_APP_NAME XSTR("ApplicationName") +/*! @defined GROWL_APP_ID + * @abstract The bundle identifier of your application. + * @discussion The bundle identifier of your application. This key should + * be unique for your application while there may be several applications + * with the same GROWL_APP_NAME. + * This key is optional. + */ +#define GROWL_APP_ID XSTR("ApplicationId") +/*! @defined GROWL_APP_ICON_DATA + * @abstract The image data for your application's icon. + * @discussion Image data representing your application's icon. This may be + * superimposed on a notification icon as a badge, used as the notification + * icon when a notification-specific icon is not supplied, or ignored + * altogether, depending on the display. Must be in a format supported by + * NSImage, such as TIFF, PNG, GIF, JPEG, BMP, PICT, or PDF. + * + * Optional. Not supported by all display plugins. + */ +#define GROWL_APP_ICON_DATA XSTR("ApplicationIcon") +/*! @defined GROWL_NOTIFICATIONS_DEFAULT + * @abstract The array of notifications to turn on by default. + * @discussion These are the names of the notifications that should be enabled + * by default when your application registers for the first time. If your + * application reregisters, Growl will look here for any new notification + * names found in GROWL_NOTIFICATIONS_ALL, but ignore any others. + */ +#define GROWL_NOTIFICATIONS_DEFAULT XSTR("DefaultNotifications") +/*! @defined GROWL_NOTIFICATIONS_ALL + * @abstract The array of all notifications your application can send. + * @discussion These are the names of all of the notifications that your + * application may post. See GROWL_NOTIFICATION_NAME for a discussion of good + * notification names. + */ +#define GROWL_NOTIFICATIONS_ALL XSTR("AllNotifications") +/*! @defined GROWL_NOTIFICATIONS_HUMAN_READABLE_DESCRIPTIONS + * @abstract A dictionary of human-readable names for your notifications. + * @discussion By default, the Growl UI will display notifications by the names given in GROWL_NOTIFICATIONS_ALL + * which correspond to the GROWL_NOTIFICATION_NAME. This dictionary specifies the human-readable name to display. + * The keys of the dictionary are GROWL_NOTIFICATION_NAME strings; the objects are the human-readable versions. + * For any GROWL_NOTIFICATION_NAME not specific in this dictionary, the GROWL_NOTIFICATION_NAME will be displayed. + * + * This key is optional. + */ +#define GROWL_NOTIFICATIONS_HUMAN_READABLE_NAMES XSTR("HumanReadableNames") +/*! @defined GROWL_NOTIFICATIONS_DESCRIPTIONS +* @abstract A dictionary of descriptions of _when_ each notification occurs +* @discussion This is an NSDictionary whose keys are GROWL_NOTIFICATION_NAME strings and whose objects are +* descriptions of _when_ each notification occurs, such as "You received a new mail message" or +* "A file finished downloading". +* +* This key is optional. +*/ +#define GROWL_NOTIFICATIONS_DESCRIPTIONS XSTR("NotificationDescriptions") +/*! @defined GROWL_NOTIFICATIONS_ICONS + * @abstract A dictionary of icons for each notification + * @discussion This is an NSDictionary whose keys are GROWL_NOTIFICATION_NAME strings and whose objects are + * icons for each notification, for GNTP spec + * + * This key is optional. + */ +#define GROWL_NOTIFICATIONS_ICONS XSTR("NotificationIcons") + +/*! @defined GROWL_TICKET_VERSION + * @abstract The version of your registration ticket. + * @discussion Include this key in a ticket plist file that you put in your + * application bundle for auto-discovery. The current ticket version is 1. + */ +#define GROWL_TICKET_VERSION XSTR("TicketVersion") +// UserInfo Keys for Notifications +#pragma mark UserInfo Keys for Notifications + +/*! @group Notification userInfo keys */ +/* @abstract Keys for the userInfo dictionary of a GROWL_NOTIFICATION distributed notification. + * @discussion The values of these keys describe the content of a Growl + * notification. + * + * Not all of these keys are supported by all displays. Only the name, title, + * and description of a notification are universal. Most of the built-in + * displays do support all of these keys, and most other visual displays + * probably will also. But, as of 0.6, the Log, MailMe, and Speech displays + * support only textual data. + */ + +/*! @defined GROWL_NOTIFICATION_NAME + * @abstract The name of the notification. + * @discussion The name of the notification. Note that if you do not define + * GROWL_NOTIFICATIONS_HUMAN_READABLE_NAMES when registering your ticket originally this name + * will the one displayed within the Growl preference pane and should be human-readable. + */ +#define GROWL_NOTIFICATION_NAME XSTR("NotificationName") +/*! @defined GROWL_NOTIFICATION_TITLE + * @abstract The title to display in the notification. + * @discussion The title of the notification. Should be very brief. + * The title usually says what happened, e.g. "Download complete". + */ +#define GROWL_NOTIFICATION_TITLE XSTR("NotificationTitle") +/*! @defined GROWL_NOTIFICATION_DESCRIPTION + * @abstract The description to display in the notification. + * @discussion The description should be longer and more verbose than the title. + * The description usually tells the subject of the action, + * e.g. "Growl-0.6.dmg downloaded in 5.02 minutes". + */ +#define GROWL_NOTIFICATION_DESCRIPTION XSTR("NotificationDescription") +/*! @defined GROWL_NOTIFICATION_ICON + * @discussion Image data for the notification icon. Image data must be in a format + * supported by NSImage, such as TIFF, PNG, GIF, JPEG, BMP, PICT, or PDF. + * + * Optional. Not supported by all display plugins. + */ +#define GROWL_NOTIFICATION_ICON_DATA XSTR("NotificationIcon") +/*! @defined GROWL_NOTIFICATION_APP_ICON + * @discussion Image data for the application icon, in case GROWL_APP_ICON does + * not apply for some reason. Image data be in a format supported by NSImage, such + * as TIFF, PNG, GIF, JPEG, BMP, PICT, or PDF. + * + * Optional. Not supported by all display plugins. + */ +#define GROWL_NOTIFICATION_APP_ICON_DATA XSTR("NotificationAppIcon") +/*! @defined GROWL_NOTIFICATION_PRIORITY + * @discussion The priority of the notification as an integer number from + * -2 to +2 (+2 being highest). + * + * Optional. Not supported by all display plugins. + */ +#define GROWL_NOTIFICATION_PRIORITY XSTR("NotificationPriority") +/*! @defined GROWL_NOTIFICATION_STICKY + * @discussion A Boolean number controlling whether the notification is sticky. + * + * Optional. Not supported by all display plugins. + */ +#define GROWL_NOTIFICATION_STICKY XSTR("NotificationSticky") +/*! @defined GROWL_NOTIFICATION_CLICK_CONTEXT + * @abstract Identifies which notification was clicked. + * @discussion An identifier for the notification for clicking purposes. + * + * This will be passed back to the application when the notification is + * clicked. It must be plist-encodable (a data, dictionary, array, number, or + * string object), and it should be unique for each notification you post. + * A good click context would be a UUID string returned by NSProcessInfo or + * CFUUID. + * + * Optional. Not supported by all display plugins. + */ +#define GROWL_NOTIFICATION_CLICK_CONTEXT XSTR("NotificationClickContext") + +/*! @defined GROWL_NOTIFICATION_IDENTIFIER + * @abstract An identifier for the notification for coalescing purposes. + * Notifications with the same identifier fall into the same class; only + * the last notification of a class is displayed on the screen. If a + * notification of the same class is currently being displayed, it is + * replaced by this notification. + * + * Optional. Not supported by all display plugins. + */ +#define GROWL_NOTIFICATION_IDENTIFIER XSTR("GrowlNotificationIdentifier") + +/*! @defined GROWL_APP_PID + * @abstract The process identifier of the process which sends this + * notification. If this field is set, the application will only receive + * clicked and timed out notifications which originate from this process. + * + * Optional. + */ +#define GROWL_APP_PID XSTR("ApplicationPID") + +/*! @defined GROWL_NOTIFICATION_PROGRESS +* @abstract If this key is set, it should contain a double value wrapped +* in a NSNumber which describes some sort of progress (from 0.0 to 100.0). +* If this is key is not set, no progress bar is shown. +* +* Optional. Not supported by all display plugins. +*/ +#define GROWL_NOTIFICATION_PROGRESS XSTR("NotificationProgress") + +/*! @defined GROWL_NOTIFICATION_ALREADY_SHOWN + * @abstract If this key is set, it should contain a bool value wrapped + * in a NSNumber which describes whether the notification has + * already been displayed, for instance by built in Notification + * Center support. This value can be used to allow display + * plugins to skip a notification, while still allowing Growl + * actions to run on them. + * + * Optional. Not supported by all display plugins. + */ +#define GROWL_NOTIFICATION_ALREADY_SHOWN XSTR("AlreadyShown") + + +// Notifications +#pragma mark Notifications + +/*! @group Notification names */ +/* @abstract Names of distributed notifications used by Growl. + * @discussion These are notifications used by applications (directly or + * indirectly) to interact with Growl, and by Growl for interaction between + * its components. + * + * Most of these should no longer be used in Growl 0.6 and later, in favor of + * Growl.framework's GrowlApplicationBridge APIs. + */ + +/*! @defined GROWL_APP_REGISTRATION + * @abstract The distributed notification for registering your application. + * @discussion This is the name of the distributed notification that can be + * used to register applications with Growl. + * + * The userInfo dictionary for this notification can contain these keys: + *
    + *
  • GROWL_APP_NAME
  • + *
  • GROWL_APP_ICON_DATA
  • + *
  • GROWL_NOTIFICATIONS_ALL
  • + *
  • GROWL_NOTIFICATIONS_DEFAULT
  • + *
+ * + * No longer recommended as of Growl 0.6. An alternate method of registering + * is to use Growl.framework's delegate system. + * See +[GrowlApplicationBridge setGrowlDelegate:] or Growl_SetDelegate for + * more information. + */ +#define GROWL_APP_REGISTRATION XSTR("GrowlApplicationRegistrationNotification") +/*! @defined GROWL_APP_REGISTRATION_CONF + * @abstract The distributed notification for confirming registration. + * @discussion The name of the distributed notification sent to confirm the + * registration. Used by the Growl preference pane. Your application probably + * does not need to use this notification. + */ +#define GROWL_APP_REGISTRATION_CONF XSTR("GrowlApplicationRegistrationConfirmationNotification") +/*! @defined GROWL_NOTIFICATION + * @abstract The distributed notification for Growl notifications. + * @discussion This is what it all comes down to. This is the name of the + * distributed notification that your application posts to actually send a + * Growl notification. + * + * The userInfo dictionary for this notification can contain these keys: + *
    + *
  • GROWL_NOTIFICATION_NAME (required)
  • + *
  • GROWL_NOTIFICATION_TITLE (required)
  • + *
  • GROWL_NOTIFICATION_DESCRIPTION (required)
  • + *
  • GROWL_NOTIFICATION_ICON
  • + *
  • GROWL_NOTIFICATION_APP_ICON
  • + *
  • GROWL_NOTIFICATION_PRIORITY
  • + *
  • GROWL_NOTIFICATION_STICKY
  • + *
  • GROWL_NOTIFICATION_CLICK_CONTEXT
  • + *
  • GROWL_APP_NAME (required)
  • + *
+ * + * No longer recommended as of Growl 0.6. Three alternate methods of posting + * notifications are +[GrowlApplicationBridge notifyWithTitle:description:notificationName:iconData:priority:isSticky:clickContext:], + * Growl_NotifyWithTitleDescriptionNameIconPriorityStickyClickContext, and + * Growl_PostNotification. + */ +#define GROWL_NOTIFICATION XSTR("GrowlNotification") +/*! @defined GROWL_PING + * @abstract A distributed notification to check whether Growl is running. + * @discussion This is used by the Growl preference pane. If it receives a + * GROWL_PONG, the preference pane takes this to mean that Growl is running. + */ +#define GROWL_PING XSTR("Honey, Mind Taking Out The Trash") +/*! @defined GROWL_PONG + * @abstract The distributed notification sent in reply to GROWL_PING. + * @discussion GrowlHelperApp posts this in reply to GROWL_PING. + */ +#define GROWL_PONG XSTR("What Do You Want From Me, Woman") +/*! @defined GROWL_IS_READY + * @abstract The distributed notification sent when Growl starts up. + * @discussion GrowlHelperApp posts this when it has begin listening on all of + * its sources for new notifications. GrowlApplicationBridge (in + * Growl.framework), upon receiving this notification, reregisters using the + * registration dictionary supplied by its delegate. + */ +#define GROWL_IS_READY XSTR("Lend Me Some Sugar; I Am Your Neighbor!") + + +/*! @defined GROWL_DISTRIBUTED_NOTIFICATION_CLICKED_SUFFIX + * @abstract Part of the name of the distributed notification sent when a supported notification is clicked. + * @discussion When a Growl notification with a click context is clicked on by + * the user, Growl posts a distributed notification whose name is in the format: + * [NSString stringWithFormat:@"%@-%d-%@", appName, pid, GROWL_DISTRIBUTED_NOTIFICATION_CLICKED_SUFFIX] + * The GrowlApplicationBridge responds to this notification by calling a callback in its delegate. + */ +#define GROWL_DISTRIBUTED_NOTIFICATION_CLICKED_SUFFIX XSTR("GrowlClicked!") + +/*! @defined GROWL_DISTRIBUTED_NOTIFICATION_TIMED_OUT_SUFFIX + * @abstract Part of the name of the distributed notification sent when a supported notification times out without being clicked. + * @discussion When a Growl notification with a click context times out, Growl posts a distributed notification + * whose name is in the format: + * [NSString stringWithFormat:@"%@-%d-%@", appName, pid, GROWL_DISTRIBUTED_NOTIFICATION_TIMED_OUT_SUFFIX] + * The GrowlApplicationBridge responds to this notification by calling a callback in its delegate. + * NOTE: The user may have actually clicked the 'close' button; this triggers an *immediate* time-out of the notification. + */ +#define GROWL_DISTRIBUTED_NOTIFICATION_TIMED_OUT_SUFFIX XSTR("GrowlTimedOut!") + +/*! @defined GROWL_DISTRIBUTED_NOTIFICATION_NOTIFICATIONCENTER_ON + * @abstract The distributed notification sent when the Notification Center support is toggled on in Growl 2.0 + * @discussion When the user enables Notification Center support in Growl 2.0, this notification is sent + * to inform all running apps that they should now speak to Notification Center directly. + */ +#define GROWL_DISTRIBUTED_NOTIFICATION_NOTIFICATIONCENTER_ON XSTR("GrowlNotificationCenterOn!") + +/*! @defined GROWL_DISTRIBUTED_NOTIFICATION_NOTIFICATIONCENTER_OFF + * @abstract The distributed notification sent when the Notification Center support is toggled off in Growl 2.0 + * @discussion When the user enables Notification Center support in Growl 2.0, this notification is sent + * to inform all running apps that they should no longer speak to Notification Center directly. + */ +#define GROWL_DISTRIBUTED_NOTIFICATION_NOTIFICATIONCENTER_OFF XSTR("GrowlNotificationCenterOff!") + +/*! @defined GROWL_DISTRIBUTED_NOTIFICATION_NOTIFICATIONCENTER_QUERY + * @abstract The distributed notification sent by an application to query Growl 2.0's notification center support. + * @discussion When an app starts up, it will send this query to get Growl 2.0 to spit out whether notification + * center support is on or off. + */ +#define GROWL_DISTRIBUTED_NOTIFICATION_NOTIFICATIONCENTER_QUERY XSTR("GrowlNotificationCenterYN?") + + +/*! @group Other symbols */ +/* Symbols which don't fit into any of the other categories. */ + +/*! @defined GROWL_KEY_CLICKED_CONTEXT + * @abstract Used internally as the key for the clickedContext passed over DNC. + * @discussion This key is used in GROWL_NOTIFICATION_CLICKED, and contains the + * click context that was supplied in the original notification. + */ +#define GROWL_KEY_CLICKED_CONTEXT XSTR("ClickedContext") +/*! @defined GROWL_REG_DICT_EXTENSION + * @abstract The filename extension for registration dictionaries. + * @discussion The GrowlApplicationBridge in Growl.framework registers with + * Growl by creating a file with the extension of .(GROWL_REG_DICT_EXTENSION) + * and opening it in the GrowlHelperApp. This happens whether or not Growl is + * running; if it was stopped, it quits immediately without listening for + * notifications. + */ +#define GROWL_REG_DICT_EXTENSION XSTR("growlRegDict") + + +#define GROWL_POSITION_PREFERENCE_KEY @"GrowlSelectedPosition" + +#define GROWL_PLUGIN_CONFIG_ID XSTR("GrowlPluginConfigurationID") + +#endif //ndef _GROWLDEFINES_H diff -Nru handbrake-0.9.9+dfsg/macosx/Growl.framework/Headers/Growl.h handbrake-0.9.9+ppa1/macosx/Growl.framework/Headers/Growl.h --- handbrake-0.9.9+dfsg/macosx/Growl.framework/Headers/Growl.h 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/Growl.framework/Headers/Growl.h 2013-04-20 13:24:15.000000000 +0000 @@ -0,0 +1,5 @@ +#include + +#ifdef __OBJC__ +# include +#endif diff -Nru handbrake-0.9.9+dfsg/macosx/Growl.framework/Resources/Info.plist handbrake-0.9.9+ppa1/macosx/Growl.framework/Resources/Info.plist --- handbrake-0.9.9+dfsg/macosx/Growl.framework/Resources/Info.plist 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/Growl.framework/Resources/Info.plist 2013-04-20 13:24:15.000000000 +0000 @@ -0,0 +1,40 @@ + + + + + BuildMachineOSBuild + 12C60 + CFBundleDevelopmentRegion + English + CFBundleExecutable + Growl + CFBundleIdentifier + com.growl.growlframework + CFBundleInfoDictionaryVersion + 6.0 + CFBundlePackageType + FMWK + CFBundleShortVersionString + 2.0.1 + CFBundleSignature + GRRR + CFBundleVersion + 2.0.1 + DTCompiler + com.apple.compilers.llvm.clang.1_0 + DTPlatformBuild + 4G2008a + DTPlatformVersion + GM + DTSDKBuild + 12C37 + DTSDKName + macosx10.8 + DTXcode + 0452 + DTXcodeBuild + 4G2008a + NSPrincipalClass + GrowlApplicationBridge + + diff -Nru handbrake-0.9.9+dfsg/macosx/Growl.framework/Versions/A/_CodeSignature/CodeResources handbrake-0.9.9+ppa1/macosx/Growl.framework/Versions/A/_CodeSignature/CodeResources --- handbrake-0.9.9+dfsg/macosx/Growl.framework/Versions/A/_CodeSignature/CodeResources 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/Growl.framework/Versions/A/_CodeSignature/CodeResources 2013-04-20 13:24:15.000000000 +0000 @@ -0,0 +1,34 @@ + + + + + files + + Resources/Info.plist + + VZb3f8My4te/5JwcjfvotgCXTAs= + + + rules + + ^Resources/ + + ^Resources/.*\.lproj/ + + optional + + weight + 1000 + + ^Resources/.*\.lproj/locversion.plist$ + + omit + + weight + 1100 + + ^version.plist$ + + + + Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/macosx/Growl.framework/Versions/A/Growl and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/macosx/Growl.framework/Versions/A/Growl differ diff -Nru handbrake-0.9.9+dfsg/macosx/Growl.framework/Versions/A/Headers/GrowlApplicationBridge.h handbrake-0.9.9+ppa1/macosx/Growl.framework/Versions/A/Headers/GrowlApplicationBridge.h --- handbrake-0.9.9+dfsg/macosx/Growl.framework/Versions/A/Headers/GrowlApplicationBridge.h 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/Growl.framework/Versions/A/Headers/GrowlApplicationBridge.h 2013-04-20 13:24:15.000000000 +0000 @@ -0,0 +1,567 @@ +// +// GrowlApplicationBridge.h +// Growl +// +// Created by Evan Schoenberg on Wed Jun 16 2004. +// Copyright 2004-2006 The Growl Project. All rights reserved. +// + +/*! + * @header GrowlApplicationBridge.h + * @abstract Defines the GrowlApplicationBridge class. + * @discussion This header defines the GrowlApplicationBridge class as well as + * the GROWL_PREFPANE_BUNDLE_IDENTIFIER constant. + */ + +#ifndef __GrowlApplicationBridge_h__ +#define __GrowlApplicationBridge_h__ + +#import +#import +#import + +//Forward declarations +@protocol GrowlApplicationBridgeDelegate; + +//------------------------------------------------------------------------------ +#pragma mark - + +/*! + * @class GrowlApplicationBridge + * @abstract A class used to interface with Growl. + * @discussion This class provides a means to interface with Growl. + * + * Currently it provides a way to detect if Growl is installed and launch the + * GrowlHelperApp if it's not already running. + */ +@interface GrowlApplicationBridge : NSObject { + +} + +/*! + * @method isGrowlInstalled + * @abstract Detects whether Growl is installed. + * @discussion Determines if the Growl prefpane and its helper app are installed. + * @result this method will forever return YES. + */ ++ (BOOL) isGrowlInstalled __attribute__((deprecated)); + +/*! + * @method isGrowlRunning + * @abstract Detects whether GrowlHelperApp is currently running. + * @discussion Cycles through the process list to find whether GrowlHelperApp is running and returns its findings. + * @result Returns YES if GrowlHelperApp is running, NO otherwise. + */ ++ (BOOL) isGrowlRunning; + + +/*! + * @method isMistEnabled + * @abstract Gives the caller a fairly good indication of whether or not built-in notifications(Mist) will be used. + * @discussion since this call makes use of isGrowlRunning it is entirely possible for this value to change between call and + * executing a notification dispatch + * @result Returns YES if Growl isn't reachable and the developer has not opted-out of + * Mist and the user hasn't set the global mist enable key to false. + */ ++ (BOOL)isMistEnabled; + +/*! + * @method setShouldUseBuiltInNotifications + * @abstract opt-out mechanism for the mist notification style in the event growl can't be reached. + * @discussion if growl is unavailable due to not being installed or as a result of being turned off then + * this option can enable/disable a built-in fire and forget display style + * @param should Specifies whether or not the developer wants to opt-in (default) or opt out + * of the built-in Mist style in the event Growl is unreachable. + */ ++ (void)setShouldUseBuiltInNotifications:(BOOL)should; + +/*! + * @method shouldUseBuiltInNotifications + * @abstract returns the current opt-in state of the framework's use of the Mist display style. + * @result Returns NO if the developer opt-ed out of Mist, the default value is YES. + */ ++ (BOOL)shouldUseBuiltInNotifications; + +#pragma mark - + +/*! + * @method setGrowlDelegate: + * @abstract Set the object which will be responsible for providing and receiving Growl information. + * @discussion This must be called before using GrowlApplicationBridge. + * + * The methods in the GrowlApplicationBridgeDelegate protocol are required + * and return the basic information needed to register with Growl. + * + * The methods in the GrowlApplicationBridgeDelegate_InformalProtocol + * informal protocol are individually optional. They provide a greater + * degree of interaction between the application and growl such as informing + * the application when one of its Growl notifications is clicked by the user. + * + * The methods in the GrowlApplicationBridgeDelegate_Installation_InformalProtocol + * informal protocol are individually optional and are only applicable when + * using the Growl-WithInstaller.framework which allows for automated Growl + * installation. + * + * When this method is called, data will be collected from inDelegate, Growl + * will be launched if it is not already running, and the application will be + * registered with Growl. + * + * If using the Growl-WithInstaller framework, if Growl is already installed + * but this copy of the framework has an updated version of Growl, the user + * will be prompted to update automatically. + * + * @param inDelegate The delegate for the GrowlApplicationBridge. It must conform to the GrowlApplicationBridgeDelegate protocol. + */ ++ (void) setGrowlDelegate:(id)inDelegate; + +/*! + * @method growlDelegate + * @abstract Return the object responsible for providing and receiving Growl information. + * @discussion See setGrowlDelegate: for details. + * @result The Growl delegate. + */ ++ (id) growlDelegate; + +#pragma mark - + +/*! + * @method notifyWithTitle:description:notificationName:iconData:priority:isSticky:clickContext: + * @abstract Send a Growl notification. + * @discussion This is the preferred means for sending a Growl notification. + * The notification name and at least one of the title and description are + * required (all three are preferred). All other parameters may be + * nil (or 0 or NO as appropriate) to accept default values. + * + * If using the Growl-WithInstaller framework, if Growl is not installed the + * user will be prompted to install Growl. If the user cancels, this method + * will have no effect until the next application session, at which time when + * it is called the user will be prompted again. The user is also given the + * option to not be prompted again. If the user does choose to install Growl, + * the requested notification will be displayed once Growl is installed and + * running. + * + * @param title The title of the notification displayed to the user. + * @param description The full description of the notification displayed to the user. + * @param notifName The internal name of the notification. Should be human-readable, as it will be displayed in the Growl preference pane. + * @param iconData NSData object to show with the notification as its icon. If nil, the application's icon will be used instead. + * @param priority The priority of the notification. The default value is 0; positive values are higher priority and negative values are lower priority. Not all Growl displays support priority. + * @param isSticky If YES, the notification will remain on screen until clicked. Not all Growl displays support sticky notifications. + * @param clickContext A context passed back to the Growl delegate if it implements -(void)growlNotificationWasClicked: and the notification is clicked. Not all display plugins support clicking. The clickContext must be plist-encodable (completely of NSString, NSArray, NSNumber, NSDictionary, and NSData types). + */ ++ (void) notifyWithTitle:(NSString *)title + description:(NSString *)description + notificationName:(NSString *)notifName + iconData:(NSData *)iconData + priority:(signed int)priority + isSticky:(BOOL)isSticky + clickContext:(id)clickContext; + +/*! + * @method notifyWithTitle:description:notificationName:iconData:priority:isSticky:clickContext:identifier: + * @abstract Send a Growl notification. + * @discussion This is the preferred means for sending a Growl notification. + * The notification name and at least one of the title and description are + * required (all three are preferred). All other parameters may be + * nil (or 0 or NO as appropriate) to accept default values. + * + * If using the Growl-WithInstaller framework, if Growl is not installed the + * user will be prompted to install Growl. If the user cancels, this method + * will have no effect until the next application session, at which time when + * it is called the user will be prompted again. The user is also given the + * option to not be prompted again. If the user does choose to install Growl, + * the requested notification will be displayed once Growl is installed and + * running. + * + * @param title The title of the notification displayed to the user. + * @param description The full description of the notification displayed to the user. + * @param notifName The internal name of the notification. Should be human-readable, as it will be displayed in the Growl preference pane. + * @param iconData NSData object to show with the notification as its icon. If nil, the application's icon will be used instead. + * @param priority The priority of the notification. The default value is 0; positive values are higher priority and negative values are lower priority. Not all Growl displays support priority. + * @param isSticky If YES, the notification will remain on screen until clicked. Not all Growl displays support sticky notifications. + * @param clickContext A context passed back to the Growl delegate if it implements -(void)growlNotificationWasClicked: and the notification is clicked. Not all display plugins support clicking. The clickContext must be plist-encodable (completely of NSString, NSArray, NSNumber, NSDictionary, and NSData types). + * @param identifier An identifier for this notification. Notifications with equal identifiers are coalesced. + */ ++ (void) notifyWithTitle:(NSString *)title + description:(NSString *)description + notificationName:(NSString *)notifName + iconData:(NSData *)iconData + priority:(signed int)priority + isSticky:(BOOL)isSticky + clickContext:(id)clickContext + identifier:(NSString *)identifier; + +/*! @method notifyWithDictionary: + * @abstract Notifies using a userInfo dictionary suitable for passing to + * NSDistributedNotificationCenter. + * @param userInfo The dictionary to notify with. + * @discussion Before Growl 0.6, your application would have posted + * notifications using NSDistributedNotificationCenter by + * creating a userInfo dictionary with the notification data. This had the + * advantage of allowing you to add other data to the dictionary for programs + * besides Growl that might be listening. + * + * This method allows you to use such dictionaries without being restricted + * to using NSDistributedNotificationCenter. The keys for this dictionary + * can be found in GrowlDefines.h. + */ ++ (void) notifyWithDictionary:(NSDictionary *)userInfo; + +#pragma mark - + +/*! @method registerWithDictionary: + * @abstract Register your application with Growl without setting a delegate. + * @discussion When you call this method with a dictionary, + * GrowlApplicationBridge registers your application using that dictionary. + * If you pass nil, GrowlApplicationBridge will ask the delegate + * (if there is one) for a dictionary, and if that doesn't work, it will look + * in your application's bundle for an auto-discoverable plist. + * (XXX refer to more information on that) + * + * If you pass a dictionary to this method, it must include the + * GROWL_APP_NAME key, unless a delegate is set. + * + * This method is mainly an alternative to the delegate system introduced + * with Growl 0.6. Without a delegate, you cannot receive callbacks such as + * -growlIsReady (since they are sent to the delegate). You can, + * however, set a delegate after registering without one. + * + * This method was introduced in Growl.framework 0.7. + */ ++ (BOOL) registerWithDictionary:(NSDictionary *)regDict; + +/*! @method reregisterGrowlNotifications + * @abstract Reregister the notifications for this application. + * @discussion This method does not normally need to be called. If your + * application changes what notifications it is registering with Growl, call + * this method to have the Growl delegate's + * -registrationDictionaryForGrowl method called again and the + * Growl registration information updated. + * + * This method is now implemented using -registerWithDictionary:. + */ ++ (void) reregisterGrowlNotifications; + +#pragma mark - + +/*! @method setWillRegisterWhenGrowlIsReady: + * @abstract Tells GrowlApplicationBridge to register with Growl when Growl + * launches (or not). + * @discussion When Growl has started listening for notifications, it posts a + * GROWL_IS_READY notification on the Distributed Notification + * Center. GrowlApplicationBridge listens for this notification, using it to + * perform various tasks (such as calling your delegate's + * -growlIsReady method, if it has one). If this method is + * called with YES, one of those tasks will be to reregister + * with Growl (in the manner of -reregisterGrowlNotifications). + * + * This attribute is automatically set back to NO (the default) + * after every GROWL_IS_READY notification. + * @param flag YES if you want GrowlApplicationBridge to register with + * Growl when next it is ready; NO if not. + */ ++ (void) setWillRegisterWhenGrowlIsReady:(BOOL)flag; + +/*! @method willRegisterWhenGrowlIsReady + * @abstract Reports whether GrowlApplicationBridge will register with Growl + * when Growl next launches. + * @result YES if GrowlApplicationBridge will register with Growl + * when next it posts GROWL_IS_READY; NO if not. + */ ++ (BOOL) willRegisterWhenGrowlIsReady; + +#pragma mark - + +/*! @method registrationDictionaryFromDelegate + * @abstract Asks the delegate for a registration dictionary. + * @discussion If no delegate is set, or if the delegate's + * -registrationDictionaryForGrowl method returns + * nil, this method returns nil. + * + * This method does not attempt to clean up the dictionary in any way - for + * example, if it is missing the GROWL_APP_NAME key, the result + * will be missing it too. Use +[GrowlApplicationBridge + * registrationDictionaryByFillingInDictionary:] or + * +[GrowlApplicationBridge + * registrationDictionaryByFillingInDictionary:restrictToKeys:] to try + * to fill in missing keys. + * + * This method was introduced in Growl.framework 0.7. + * @result A registration dictionary. + */ ++ (NSDictionary *) registrationDictionaryFromDelegate; + +/*! @method registrationDictionaryFromBundle: + * @abstract Looks in a bundle for a registration dictionary. + * @discussion This method looks in a bundle for an auto-discoverable + * registration dictionary file using -[NSBundle + * pathForResource:ofType:]. If it finds one, it loads the file using + * +[NSDictionary dictionaryWithContentsOfFile:] and returns the + * result. + * + * If you pass nil as the bundle, the main bundle is examined. + * + * This method does not attempt to clean up the dictionary in any way - for + * example, if it is missing the GROWL_APP_NAME key, the result + * will be missing it too. Use +[GrowlApplicationBridge + * registrationDictionaryByFillingInDictionary:] or + * +[GrowlApplicationBridge + * registrationDictionaryByFillingInDictionary:restrictToKeys:] to try + * to fill in missing keys. + * + * This method was introduced in Growl.framework 0.7. + * @result A registration dictionary. + */ ++ (NSDictionary *) registrationDictionaryFromBundle:(NSBundle *)bundle; + +/*! @method bestRegistrationDictionary + * @abstract Obtains a registration dictionary, filled out to the best of + * GrowlApplicationBridge's knowledge. + * @discussion This method creates a registration dictionary as best + * GrowlApplicationBridge knows how. + * + * First, GrowlApplicationBridge contacts the Growl delegate (if there is + * one) and gets the registration dictionary from that. If no such dictionary + * was obtained, GrowlApplicationBridge looks in your application's main + * bundle for an auto-discoverable registration dictionary file. If that + * doesn't exist either, this method returns nil. + * + * Second, GrowlApplicationBridge calls + * +registrationDictionaryByFillingInDictionary: with whatever + * dictionary was obtained. The result of that method is the result of this + * method. + * + * GrowlApplicationBridge uses this method when you call + * +setGrowlDelegate:, or when you call + * +registerWithDictionary: with nil. + * + * This method was introduced in Growl.framework 0.7. + * @result A registration dictionary. + */ ++ (NSDictionary *) bestRegistrationDictionary; + +#pragma mark - + +/*! @method registrationDictionaryByFillingInDictionary: + * @abstract Tries to fill in missing keys in a registration dictionary. + * @discussion This method examines the passed-in dictionary for missing keys, + * and tries to work out correct values for them. As of 0.7, it uses: + * + * Key Value + * --- ----- + * GROWL_APP_NAME CFBundleExecutableName + * GROWL_APP_ICON_DATA The data of the icon of the application. + * GROWL_APP_LOCATION The location of the application. + * GROWL_NOTIFICATIONS_DEFAULT GROWL_NOTIFICATIONS_ALL + * + * Keys are only filled in if missing; if a key is present in the dictionary, + * its value will not be changed. + * + * This method was introduced in Growl.framework 0.7. + * @param regDict The dictionary to fill in. + * @result The dictionary with the keys filled in. This is an autoreleased + * copy of regDict. + */ ++ (NSDictionary *) registrationDictionaryByFillingInDictionary:(NSDictionary *)regDict; + +/*! @method registrationDictionaryByFillingInDictionary:restrictToKeys: + * @abstract Tries to fill in missing keys in a registration dictionary. + * @discussion This method examines the passed-in dictionary for missing keys, + * and tries to work out correct values for them. As of 0.7, it uses: + * + * Key Value + * --- ----- + * GROWL_APP_NAME CFBundleExecutableName + * GROWL_APP_ICON_DATA The data of the icon of the application. + * GROWL_APP_LOCATION The location of the application. + * GROWL_NOTIFICATIONS_DEFAULT GROWL_NOTIFICATIONS_ALL + * + * Only those keys that are listed in keys will be filled in. + * Other missing keys are ignored. Also, keys are only filled in if missing; + * if a key is present in the dictionary, its value will not be changed. + * + * This method was introduced in Growl.framework 0.7. + * @param regDict The dictionary to fill in. + * @param keys The keys to fill in. If nil, any missing keys are filled in. + * @result The dictionary with the keys filled in. This is an autoreleased + * copy of regDict. + */ ++ (NSDictionary *) registrationDictionaryByFillingInDictionary:(NSDictionary *)regDict restrictToKeys:(NSSet *)keys; + +/*! @brief Tries to fill in missing keys in a notification dictionary. + * @param notifDict The dictionary to fill in. + * @return The dictionary with the keys filled in. This will be a separate instance from \a notifDict. + * @discussion This function examines the \a notifDict for missing keys, and + * tries to get them from the last known registration dictionary. As of 1.1, + * the keys that it will look for are: + * + * \li GROWL_APP_NAME + * \li GROWL_APP_ICON_DATA + * + * @since Growl.framework 1.1 + */ ++ (NSDictionary *) notificationDictionaryByFillingInDictionary:(NSDictionary *)regDict; + ++ (NSDictionary *) frameworkInfoDictionary; + +#pragma mark - + +/*! + *@method growlURLSchemeAvailable + *@abstract Lets the app know whether growl:// is registered on the system, used for certain methods below this + *@return Returns whether growl:// is registered on the system + *@discussion Methods such as openGrowlPreferences rely on the growl:// URL scheme to function + * Further, this method can provide a check on whether Growl is installed, + * however, the framework will not be relying on this method for choosing when/how to notify, + * and it is not recommended that the app rely on it for other than whether to use growl:// methods + *@since Growl.framework 1.4 + */ ++ (BOOL) isGrowlURLSchemeAvailable; + +/*! + * @method openGrowlPreferences: + * @abstract Open Growl preferences, optionally to this app's settings, growl:// method + * @param showApp Whether to show the application's settings, otherwise just opens to the last position + * @return Return's whether opening the URL was succesfull or not. + * @discussion Will launch if Growl is installed, but not running, and open the preferences window + * Uses growl:// URL scheme + * @since Growl.framework 1.4 + */ ++ (BOOL) openGrowlPreferences:(BOOL)showApp; + +@end + +//------------------------------------------------------------------------------ +#pragma mark - + +/*! + * @protocol GrowlApplicationBridgeDelegate + * @abstract Required protocol for the Growl delegate. + * @discussion The methods in this protocol are optional and are called + * automatically as needed by GrowlApplicationBridge. See + * +[GrowlApplicationBridge setGrowlDelegate:]. + * See also GrowlApplicationBridgeDelegate_InformalProtocol. + */ + +@protocol GrowlApplicationBridgeDelegate + +@optional + +/*! + * @method registrationDictionaryForGrowl + * @abstract Return the dictionary used to register this application with Growl. + * @discussion The returned dictionary gives Growl the complete list of + * notifications this application will ever send, and it also specifies which + * notifications should be enabled by default. Each is specified by an array + * of NSString objects. + * + * For most applications, these two arrays can be the same (if all sent + * notifications should be displayed by default). + * + * The NSString objects of these arrays will correspond to the + * notificationName: parameter passed in + * +[GrowlApplicationBridge + * notifyWithTitle:description:notificationName:iconData:priority:isSticky:clickContext:] calls. + * + * The dictionary should have the required key object pairs: + * key: GROWL_NOTIFICATIONS_ALL object: NSArray of NSString objects + * key: GROWL_NOTIFICATIONS_DEFAULT object: NSArray of NSString objects + * + * The dictionary may have the following key object pairs: + * key: GROWL_NOTIFICATIONS_HUMAN_READABLE_NAMES object: NSDictionary of key: notification name object: human-readable notification name + * + * You do not need to implement this method if you have an auto-discoverable + * plist file in your app bundle. (XXX refer to more information on that) + * + * @result The NSDictionary to use for registration. + */ +- (NSDictionary *) registrationDictionaryForGrowl; + +/*! + * @method applicationNameForGrowl + * @abstract Return the name of this application which will be used for Growl bookkeeping. + * @discussion This name is used both internally and in the Growl preferences. + * + * This should remain stable between different versions and incarnations of + * your application. + * For example, "SurfWriter" is a good app name, whereas "SurfWriter 2.0" and + * "SurfWriter Lite" are not. + * + * You do not need to implement this method if you are providing the + * application name elsewhere, meaning in an auto-discoverable plist file in + * your app bundle (XXX refer to more information on that) or in the result + * of -registrationDictionaryForGrowl. + * + * @result The name of the application using Growl. + */ +- (NSString *) applicationNameForGrowl; + +/*! + * @method applicationIconForGrowl + * @abstract Return the NSImage to treat as the application icon. + * @discussion The delegate may optionally return an NSImage + * object to use as the application icon. If this method is not implemented, + * {{{-applicationIconDataForGrowl}}} is tried. If that method is not + * implemented, the application's own icon is used. Neither method is + * generally needed. + * @result The NSImage to treat as the application icon. + */ +- (NSImage *) applicationIconForGrowl; + +/*! + * @method applicationIconDataForGrowl + * @abstract Return the NSData to treat as the application icon. + * @discussion The delegate may optionally return an NSData + * object to use as the application icon; if this is not implemented, the + * application's own icon is used. This is not generally needed. + * @result The NSData to treat as the application icon. + * @deprecated In version 1.1, in favor of {{{-applicationIconForGrowl}}}. + */ +- (NSData *) applicationIconDataForGrowl; + +/*! + * @method growlIsReady + * @abstract Informs the delegate that Growl has launched. + * @discussion Informs the delegate that Growl (specifically, the + * GrowlHelperApp) was launched successfully. The application can take actions + * with the knowledge that Growl is installed and functional. + */ +- (void) growlIsReady; + +/*! + * @method growlNotificationWasClicked: + * @abstract Informs the delegate that a Growl notification was clicked. + * @discussion Informs the delegate that a Growl notification was clicked. It + * is only sent for notifications sent with a non-nil + * clickContext, so if you want to receive a message when a notification is + * clicked, clickContext must not be nil when calling + * +[GrowlApplicationBridge notifyWithTitle: description:notificationName:iconData:priority:isSticky:clickContext:]. + * @param clickContext The clickContext passed when displaying the notification originally via +[GrowlApplicationBridge notifyWithTitle:description:notificationName:iconData:priority:isSticky:clickContext:]. + */ +- (void) growlNotificationWasClicked:(id)clickContext; + +/*! + * @method growlNotificationTimedOut: + * @abstract Informs the delegate that a Growl notification timed out. + * @discussion Informs the delegate that a Growl notification timed out. It + * is only sent for notifications sent with a non-nil + * clickContext, so if you want to receive a message when a notification is + * clicked, clickContext must not be nil when calling + * +[GrowlApplicationBridge notifyWithTitle: description:notificationName:iconData:priority:isSticky:clickContext:]. + * @param clickContext The clickContext passed when displaying the notification originally via +[GrowlApplicationBridge notifyWithTitle:description:notificationName:iconData:priority:isSticky:clickContext:]. + */ +- (void) growlNotificationTimedOut:(id)clickContext; + + +/*! + * @method hasNetworkClientEntitlement + * @abstract Used only in sandboxed situations since we don't know whether the app has com.apple.security.network.client entitlement + * @discussion GrowlDelegate calls to find out if we have the com.apple.security.network.client entitlement, + * since we can't find this out without hitting the sandbox. We only call it if we detect that the application is sandboxed. + */ +- (BOOL) hasNetworkClientEntitlement; + +@end + +#pragma mark - + +#endif /* __GrowlApplicationBridge_h__ */ diff -Nru handbrake-0.9.9+dfsg/macosx/Growl.framework/Versions/A/Headers/GrowlDefines.h handbrake-0.9.9+ppa1/macosx/Growl.framework/Versions/A/Headers/GrowlDefines.h --- handbrake-0.9.9+dfsg/macosx/Growl.framework/Versions/A/Headers/GrowlDefines.h 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/Growl.framework/Versions/A/Headers/GrowlDefines.h 2013-04-20 13:24:15.000000000 +0000 @@ -0,0 +1,386 @@ +// +// GrowlDefines.h +// + +#ifndef _GROWLDEFINES_H +#define _GROWLDEFINES_H + +#ifdef __OBJC__ +#define XSTR(x) (@x) +#else +#define XSTR CFSTR +#endif + +/*! @header GrowlDefines.h + * @abstract Defines all the notification keys. + * @discussion Defines all the keys used for registration with Growl and for + * Growl notifications. + * + * Most applications should use the functions or methods of Growl.framework + * instead of posting notifications such as those described here. + * @updated 2004-01-25 + */ + +// UserInfo Keys for Registration +#pragma mark UserInfo Keys for Registration + +/*! @group Registration userInfo keys */ +/* @abstract Keys for the userInfo dictionary of a GROWL_APP_REGISTRATION distributed notification. + * @discussion The values of these keys describe the application and the + * notifications it may post. + * + * Your application must register with Growl before it can post Growl + * notifications (and have them not be ignored). However, as of Growl 0.6, + * posting GROWL_APP_REGISTRATION notifications directly is no longer the + * preferred way to register your application. Your application should instead + * use Growl.framework's delegate system. + * See +[GrowlApplicationBridge setGrowlDelegate:] or Growl_SetDelegate for + * more information. + */ + +/*! @defined GROWL_APP_NAME + * @abstract The name of your application. + * @discussion The name of your application. This should remain stable between + * different versions and incarnations of your application. + * For example, "SurfWriter" is a good app name, whereas "SurfWriter 2.0" and + * "SurfWriter Lite" are not. + */ +#define GROWL_APP_NAME XSTR("ApplicationName") +/*! @defined GROWL_APP_ID + * @abstract The bundle identifier of your application. + * @discussion The bundle identifier of your application. This key should + * be unique for your application while there may be several applications + * with the same GROWL_APP_NAME. + * This key is optional. + */ +#define GROWL_APP_ID XSTR("ApplicationId") +/*! @defined GROWL_APP_ICON_DATA + * @abstract The image data for your application's icon. + * @discussion Image data representing your application's icon. This may be + * superimposed on a notification icon as a badge, used as the notification + * icon when a notification-specific icon is not supplied, or ignored + * altogether, depending on the display. Must be in a format supported by + * NSImage, such as TIFF, PNG, GIF, JPEG, BMP, PICT, or PDF. + * + * Optional. Not supported by all display plugins. + */ +#define GROWL_APP_ICON_DATA XSTR("ApplicationIcon") +/*! @defined GROWL_NOTIFICATIONS_DEFAULT + * @abstract The array of notifications to turn on by default. + * @discussion These are the names of the notifications that should be enabled + * by default when your application registers for the first time. If your + * application reregisters, Growl will look here for any new notification + * names found in GROWL_NOTIFICATIONS_ALL, but ignore any others. + */ +#define GROWL_NOTIFICATIONS_DEFAULT XSTR("DefaultNotifications") +/*! @defined GROWL_NOTIFICATIONS_ALL + * @abstract The array of all notifications your application can send. + * @discussion These are the names of all of the notifications that your + * application may post. See GROWL_NOTIFICATION_NAME for a discussion of good + * notification names. + */ +#define GROWL_NOTIFICATIONS_ALL XSTR("AllNotifications") +/*! @defined GROWL_NOTIFICATIONS_HUMAN_READABLE_DESCRIPTIONS + * @abstract A dictionary of human-readable names for your notifications. + * @discussion By default, the Growl UI will display notifications by the names given in GROWL_NOTIFICATIONS_ALL + * which correspond to the GROWL_NOTIFICATION_NAME. This dictionary specifies the human-readable name to display. + * The keys of the dictionary are GROWL_NOTIFICATION_NAME strings; the objects are the human-readable versions. + * For any GROWL_NOTIFICATION_NAME not specific in this dictionary, the GROWL_NOTIFICATION_NAME will be displayed. + * + * This key is optional. + */ +#define GROWL_NOTIFICATIONS_HUMAN_READABLE_NAMES XSTR("HumanReadableNames") +/*! @defined GROWL_NOTIFICATIONS_DESCRIPTIONS +* @abstract A dictionary of descriptions of _when_ each notification occurs +* @discussion This is an NSDictionary whose keys are GROWL_NOTIFICATION_NAME strings and whose objects are +* descriptions of _when_ each notification occurs, such as "You received a new mail message" or +* "A file finished downloading". +* +* This key is optional. +*/ +#define GROWL_NOTIFICATIONS_DESCRIPTIONS XSTR("NotificationDescriptions") +/*! @defined GROWL_NOTIFICATIONS_ICONS + * @abstract A dictionary of icons for each notification + * @discussion This is an NSDictionary whose keys are GROWL_NOTIFICATION_NAME strings and whose objects are + * icons for each notification, for GNTP spec + * + * This key is optional. + */ +#define GROWL_NOTIFICATIONS_ICONS XSTR("NotificationIcons") + +/*! @defined GROWL_TICKET_VERSION + * @abstract The version of your registration ticket. + * @discussion Include this key in a ticket plist file that you put in your + * application bundle for auto-discovery. The current ticket version is 1. + */ +#define GROWL_TICKET_VERSION XSTR("TicketVersion") +// UserInfo Keys for Notifications +#pragma mark UserInfo Keys for Notifications + +/*! @group Notification userInfo keys */ +/* @abstract Keys for the userInfo dictionary of a GROWL_NOTIFICATION distributed notification. + * @discussion The values of these keys describe the content of a Growl + * notification. + * + * Not all of these keys are supported by all displays. Only the name, title, + * and description of a notification are universal. Most of the built-in + * displays do support all of these keys, and most other visual displays + * probably will also. But, as of 0.6, the Log, MailMe, and Speech displays + * support only textual data. + */ + +/*! @defined GROWL_NOTIFICATION_NAME + * @abstract The name of the notification. + * @discussion The name of the notification. Note that if you do not define + * GROWL_NOTIFICATIONS_HUMAN_READABLE_NAMES when registering your ticket originally this name + * will the one displayed within the Growl preference pane and should be human-readable. + */ +#define GROWL_NOTIFICATION_NAME XSTR("NotificationName") +/*! @defined GROWL_NOTIFICATION_TITLE + * @abstract The title to display in the notification. + * @discussion The title of the notification. Should be very brief. + * The title usually says what happened, e.g. "Download complete". + */ +#define GROWL_NOTIFICATION_TITLE XSTR("NotificationTitle") +/*! @defined GROWL_NOTIFICATION_DESCRIPTION + * @abstract The description to display in the notification. + * @discussion The description should be longer and more verbose than the title. + * The description usually tells the subject of the action, + * e.g. "Growl-0.6.dmg downloaded in 5.02 minutes". + */ +#define GROWL_NOTIFICATION_DESCRIPTION XSTR("NotificationDescription") +/*! @defined GROWL_NOTIFICATION_ICON + * @discussion Image data for the notification icon. Image data must be in a format + * supported by NSImage, such as TIFF, PNG, GIF, JPEG, BMP, PICT, or PDF. + * + * Optional. Not supported by all display plugins. + */ +#define GROWL_NOTIFICATION_ICON_DATA XSTR("NotificationIcon") +/*! @defined GROWL_NOTIFICATION_APP_ICON + * @discussion Image data for the application icon, in case GROWL_APP_ICON does + * not apply for some reason. Image data be in a format supported by NSImage, such + * as TIFF, PNG, GIF, JPEG, BMP, PICT, or PDF. + * + * Optional. Not supported by all display plugins. + */ +#define GROWL_NOTIFICATION_APP_ICON_DATA XSTR("NotificationAppIcon") +/*! @defined GROWL_NOTIFICATION_PRIORITY + * @discussion The priority of the notification as an integer number from + * -2 to +2 (+2 being highest). + * + * Optional. Not supported by all display plugins. + */ +#define GROWL_NOTIFICATION_PRIORITY XSTR("NotificationPriority") +/*! @defined GROWL_NOTIFICATION_STICKY + * @discussion A Boolean number controlling whether the notification is sticky. + * + * Optional. Not supported by all display plugins. + */ +#define GROWL_NOTIFICATION_STICKY XSTR("NotificationSticky") +/*! @defined GROWL_NOTIFICATION_CLICK_CONTEXT + * @abstract Identifies which notification was clicked. + * @discussion An identifier for the notification for clicking purposes. + * + * This will be passed back to the application when the notification is + * clicked. It must be plist-encodable (a data, dictionary, array, number, or + * string object), and it should be unique for each notification you post. + * A good click context would be a UUID string returned by NSProcessInfo or + * CFUUID. + * + * Optional. Not supported by all display plugins. + */ +#define GROWL_NOTIFICATION_CLICK_CONTEXT XSTR("NotificationClickContext") + +/*! @defined GROWL_NOTIFICATION_IDENTIFIER + * @abstract An identifier for the notification for coalescing purposes. + * Notifications with the same identifier fall into the same class; only + * the last notification of a class is displayed on the screen. If a + * notification of the same class is currently being displayed, it is + * replaced by this notification. + * + * Optional. Not supported by all display plugins. + */ +#define GROWL_NOTIFICATION_IDENTIFIER XSTR("GrowlNotificationIdentifier") + +/*! @defined GROWL_APP_PID + * @abstract The process identifier of the process which sends this + * notification. If this field is set, the application will only receive + * clicked and timed out notifications which originate from this process. + * + * Optional. + */ +#define GROWL_APP_PID XSTR("ApplicationPID") + +/*! @defined GROWL_NOTIFICATION_PROGRESS +* @abstract If this key is set, it should contain a double value wrapped +* in a NSNumber which describes some sort of progress (from 0.0 to 100.0). +* If this is key is not set, no progress bar is shown. +* +* Optional. Not supported by all display plugins. +*/ +#define GROWL_NOTIFICATION_PROGRESS XSTR("NotificationProgress") + +/*! @defined GROWL_NOTIFICATION_ALREADY_SHOWN + * @abstract If this key is set, it should contain a bool value wrapped + * in a NSNumber which describes whether the notification has + * already been displayed, for instance by built in Notification + * Center support. This value can be used to allow display + * plugins to skip a notification, while still allowing Growl + * actions to run on them. + * + * Optional. Not supported by all display plugins. + */ +#define GROWL_NOTIFICATION_ALREADY_SHOWN XSTR("AlreadyShown") + + +// Notifications +#pragma mark Notifications + +/*! @group Notification names */ +/* @abstract Names of distributed notifications used by Growl. + * @discussion These are notifications used by applications (directly or + * indirectly) to interact with Growl, and by Growl for interaction between + * its components. + * + * Most of these should no longer be used in Growl 0.6 and later, in favor of + * Growl.framework's GrowlApplicationBridge APIs. + */ + +/*! @defined GROWL_APP_REGISTRATION + * @abstract The distributed notification for registering your application. + * @discussion This is the name of the distributed notification that can be + * used to register applications with Growl. + * + * The userInfo dictionary for this notification can contain these keys: + *
    + *
  • GROWL_APP_NAME
  • + *
  • GROWL_APP_ICON_DATA
  • + *
  • GROWL_NOTIFICATIONS_ALL
  • + *
  • GROWL_NOTIFICATIONS_DEFAULT
  • + *
+ * + * No longer recommended as of Growl 0.6. An alternate method of registering + * is to use Growl.framework's delegate system. + * See +[GrowlApplicationBridge setGrowlDelegate:] or Growl_SetDelegate for + * more information. + */ +#define GROWL_APP_REGISTRATION XSTR("GrowlApplicationRegistrationNotification") +/*! @defined GROWL_APP_REGISTRATION_CONF + * @abstract The distributed notification for confirming registration. + * @discussion The name of the distributed notification sent to confirm the + * registration. Used by the Growl preference pane. Your application probably + * does not need to use this notification. + */ +#define GROWL_APP_REGISTRATION_CONF XSTR("GrowlApplicationRegistrationConfirmationNotification") +/*! @defined GROWL_NOTIFICATION + * @abstract The distributed notification for Growl notifications. + * @discussion This is what it all comes down to. This is the name of the + * distributed notification that your application posts to actually send a + * Growl notification. + * + * The userInfo dictionary for this notification can contain these keys: + *
    + *
  • GROWL_NOTIFICATION_NAME (required)
  • + *
  • GROWL_NOTIFICATION_TITLE (required)
  • + *
  • GROWL_NOTIFICATION_DESCRIPTION (required)
  • + *
  • GROWL_NOTIFICATION_ICON
  • + *
  • GROWL_NOTIFICATION_APP_ICON
  • + *
  • GROWL_NOTIFICATION_PRIORITY
  • + *
  • GROWL_NOTIFICATION_STICKY
  • + *
  • GROWL_NOTIFICATION_CLICK_CONTEXT
  • + *
  • GROWL_APP_NAME (required)
  • + *
+ * + * No longer recommended as of Growl 0.6. Three alternate methods of posting + * notifications are +[GrowlApplicationBridge notifyWithTitle:description:notificationName:iconData:priority:isSticky:clickContext:], + * Growl_NotifyWithTitleDescriptionNameIconPriorityStickyClickContext, and + * Growl_PostNotification. + */ +#define GROWL_NOTIFICATION XSTR("GrowlNotification") +/*! @defined GROWL_PING + * @abstract A distributed notification to check whether Growl is running. + * @discussion This is used by the Growl preference pane. If it receives a + * GROWL_PONG, the preference pane takes this to mean that Growl is running. + */ +#define GROWL_PING XSTR("Honey, Mind Taking Out The Trash") +/*! @defined GROWL_PONG + * @abstract The distributed notification sent in reply to GROWL_PING. + * @discussion GrowlHelperApp posts this in reply to GROWL_PING. + */ +#define GROWL_PONG XSTR("What Do You Want From Me, Woman") +/*! @defined GROWL_IS_READY + * @abstract The distributed notification sent when Growl starts up. + * @discussion GrowlHelperApp posts this when it has begin listening on all of + * its sources for new notifications. GrowlApplicationBridge (in + * Growl.framework), upon receiving this notification, reregisters using the + * registration dictionary supplied by its delegate. + */ +#define GROWL_IS_READY XSTR("Lend Me Some Sugar; I Am Your Neighbor!") + + +/*! @defined GROWL_DISTRIBUTED_NOTIFICATION_CLICKED_SUFFIX + * @abstract Part of the name of the distributed notification sent when a supported notification is clicked. + * @discussion When a Growl notification with a click context is clicked on by + * the user, Growl posts a distributed notification whose name is in the format: + * [NSString stringWithFormat:@"%@-%d-%@", appName, pid, GROWL_DISTRIBUTED_NOTIFICATION_CLICKED_SUFFIX] + * The GrowlApplicationBridge responds to this notification by calling a callback in its delegate. + */ +#define GROWL_DISTRIBUTED_NOTIFICATION_CLICKED_SUFFIX XSTR("GrowlClicked!") + +/*! @defined GROWL_DISTRIBUTED_NOTIFICATION_TIMED_OUT_SUFFIX + * @abstract Part of the name of the distributed notification sent when a supported notification times out without being clicked. + * @discussion When a Growl notification with a click context times out, Growl posts a distributed notification + * whose name is in the format: + * [NSString stringWithFormat:@"%@-%d-%@", appName, pid, GROWL_DISTRIBUTED_NOTIFICATION_TIMED_OUT_SUFFIX] + * The GrowlApplicationBridge responds to this notification by calling a callback in its delegate. + * NOTE: The user may have actually clicked the 'close' button; this triggers an *immediate* time-out of the notification. + */ +#define GROWL_DISTRIBUTED_NOTIFICATION_TIMED_OUT_SUFFIX XSTR("GrowlTimedOut!") + +/*! @defined GROWL_DISTRIBUTED_NOTIFICATION_NOTIFICATIONCENTER_ON + * @abstract The distributed notification sent when the Notification Center support is toggled on in Growl 2.0 + * @discussion When the user enables Notification Center support in Growl 2.0, this notification is sent + * to inform all running apps that they should now speak to Notification Center directly. + */ +#define GROWL_DISTRIBUTED_NOTIFICATION_NOTIFICATIONCENTER_ON XSTR("GrowlNotificationCenterOn!") + +/*! @defined GROWL_DISTRIBUTED_NOTIFICATION_NOTIFICATIONCENTER_OFF + * @abstract The distributed notification sent when the Notification Center support is toggled off in Growl 2.0 + * @discussion When the user enables Notification Center support in Growl 2.0, this notification is sent + * to inform all running apps that they should no longer speak to Notification Center directly. + */ +#define GROWL_DISTRIBUTED_NOTIFICATION_NOTIFICATIONCENTER_OFF XSTR("GrowlNotificationCenterOff!") + +/*! @defined GROWL_DISTRIBUTED_NOTIFICATION_NOTIFICATIONCENTER_QUERY + * @abstract The distributed notification sent by an application to query Growl 2.0's notification center support. + * @discussion When an app starts up, it will send this query to get Growl 2.0 to spit out whether notification + * center support is on or off. + */ +#define GROWL_DISTRIBUTED_NOTIFICATION_NOTIFICATIONCENTER_QUERY XSTR("GrowlNotificationCenterYN?") + + +/*! @group Other symbols */ +/* Symbols which don't fit into any of the other categories. */ + +/*! @defined GROWL_KEY_CLICKED_CONTEXT + * @abstract Used internally as the key for the clickedContext passed over DNC. + * @discussion This key is used in GROWL_NOTIFICATION_CLICKED, and contains the + * click context that was supplied in the original notification. + */ +#define GROWL_KEY_CLICKED_CONTEXT XSTR("ClickedContext") +/*! @defined GROWL_REG_DICT_EXTENSION + * @abstract The filename extension for registration dictionaries. + * @discussion The GrowlApplicationBridge in Growl.framework registers with + * Growl by creating a file with the extension of .(GROWL_REG_DICT_EXTENSION) + * and opening it in the GrowlHelperApp. This happens whether or not Growl is + * running; if it was stopped, it quits immediately without listening for + * notifications. + */ +#define GROWL_REG_DICT_EXTENSION XSTR("growlRegDict") + + +#define GROWL_POSITION_PREFERENCE_KEY @"GrowlSelectedPosition" + +#define GROWL_PLUGIN_CONFIG_ID XSTR("GrowlPluginConfigurationID") + +#endif //ndef _GROWLDEFINES_H diff -Nru handbrake-0.9.9+dfsg/macosx/Growl.framework/Versions/A/Headers/Growl.h handbrake-0.9.9+ppa1/macosx/Growl.framework/Versions/A/Headers/Growl.h --- handbrake-0.9.9+dfsg/macosx/Growl.framework/Versions/A/Headers/Growl.h 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/Growl.framework/Versions/A/Headers/Growl.h 2013-04-20 13:24:15.000000000 +0000 @@ -0,0 +1,5 @@ +#include + +#ifdef __OBJC__ +# include +#endif diff -Nru handbrake-0.9.9+dfsg/macosx/Growl.framework/Versions/A/Resources/Info.plist handbrake-0.9.9+ppa1/macosx/Growl.framework/Versions/A/Resources/Info.plist --- handbrake-0.9.9+dfsg/macosx/Growl.framework/Versions/A/Resources/Info.plist 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/Growl.framework/Versions/A/Resources/Info.plist 2013-04-20 13:24:15.000000000 +0000 @@ -0,0 +1,40 @@ + + + + + BuildMachineOSBuild + 12C60 + CFBundleDevelopmentRegion + English + CFBundleExecutable + Growl + CFBundleIdentifier + com.growl.growlframework + CFBundleInfoDictionaryVersion + 6.0 + CFBundlePackageType + FMWK + CFBundleShortVersionString + 2.0.1 + CFBundleSignature + GRRR + CFBundleVersion + 2.0.1 + DTCompiler + com.apple.compilers.llvm.clang.1_0 + DTPlatformBuild + 4G2008a + DTPlatformVersion + GM + DTSDKBuild + 12C37 + DTSDKName + macosx10.8 + DTXcode + 0452 + DTXcodeBuild + 4G2008a + NSPrincipalClass + GrowlApplicationBridge + + diff -Nru handbrake-0.9.9+dfsg/macosx/Growl.framework/Versions/Current/_CodeSignature/CodeResources handbrake-0.9.9+ppa1/macosx/Growl.framework/Versions/Current/_CodeSignature/CodeResources --- handbrake-0.9.9+dfsg/macosx/Growl.framework/Versions/Current/_CodeSignature/CodeResources 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/Growl.framework/Versions/Current/_CodeSignature/CodeResources 2013-04-20 13:24:15.000000000 +0000 @@ -0,0 +1,34 @@ + + + + + files + + Resources/Info.plist + + VZb3f8My4te/5JwcjfvotgCXTAs= + + + rules + + ^Resources/ + + ^Resources/.*\.lproj/ + + optional + + weight + 1000 + + ^Resources/.*\.lproj/locversion.plist$ + + omit + + weight + 1100 + + ^version.plist$ + + + + Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/macosx/Growl.framework/Versions/Current/Growl and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/macosx/Growl.framework/Versions/Current/Growl differ diff -Nru handbrake-0.9.9+dfsg/macosx/Growl.framework/Versions/Current/Headers/GrowlApplicationBridge.h handbrake-0.9.9+ppa1/macosx/Growl.framework/Versions/Current/Headers/GrowlApplicationBridge.h --- handbrake-0.9.9+dfsg/macosx/Growl.framework/Versions/Current/Headers/GrowlApplicationBridge.h 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/Growl.framework/Versions/Current/Headers/GrowlApplicationBridge.h 2013-04-20 13:24:15.000000000 +0000 @@ -0,0 +1,567 @@ +// +// GrowlApplicationBridge.h +// Growl +// +// Created by Evan Schoenberg on Wed Jun 16 2004. +// Copyright 2004-2006 The Growl Project. All rights reserved. +// + +/*! + * @header GrowlApplicationBridge.h + * @abstract Defines the GrowlApplicationBridge class. + * @discussion This header defines the GrowlApplicationBridge class as well as + * the GROWL_PREFPANE_BUNDLE_IDENTIFIER constant. + */ + +#ifndef __GrowlApplicationBridge_h__ +#define __GrowlApplicationBridge_h__ + +#import +#import +#import + +//Forward declarations +@protocol GrowlApplicationBridgeDelegate; + +//------------------------------------------------------------------------------ +#pragma mark - + +/*! + * @class GrowlApplicationBridge + * @abstract A class used to interface with Growl. + * @discussion This class provides a means to interface with Growl. + * + * Currently it provides a way to detect if Growl is installed and launch the + * GrowlHelperApp if it's not already running. + */ +@interface GrowlApplicationBridge : NSObject { + +} + +/*! + * @method isGrowlInstalled + * @abstract Detects whether Growl is installed. + * @discussion Determines if the Growl prefpane and its helper app are installed. + * @result this method will forever return YES. + */ ++ (BOOL) isGrowlInstalled __attribute__((deprecated)); + +/*! + * @method isGrowlRunning + * @abstract Detects whether GrowlHelperApp is currently running. + * @discussion Cycles through the process list to find whether GrowlHelperApp is running and returns its findings. + * @result Returns YES if GrowlHelperApp is running, NO otherwise. + */ ++ (BOOL) isGrowlRunning; + + +/*! + * @method isMistEnabled + * @abstract Gives the caller a fairly good indication of whether or not built-in notifications(Mist) will be used. + * @discussion since this call makes use of isGrowlRunning it is entirely possible for this value to change between call and + * executing a notification dispatch + * @result Returns YES if Growl isn't reachable and the developer has not opted-out of + * Mist and the user hasn't set the global mist enable key to false. + */ ++ (BOOL)isMistEnabled; + +/*! + * @method setShouldUseBuiltInNotifications + * @abstract opt-out mechanism for the mist notification style in the event growl can't be reached. + * @discussion if growl is unavailable due to not being installed or as a result of being turned off then + * this option can enable/disable a built-in fire and forget display style + * @param should Specifies whether or not the developer wants to opt-in (default) or opt out + * of the built-in Mist style in the event Growl is unreachable. + */ ++ (void)setShouldUseBuiltInNotifications:(BOOL)should; + +/*! + * @method shouldUseBuiltInNotifications + * @abstract returns the current opt-in state of the framework's use of the Mist display style. + * @result Returns NO if the developer opt-ed out of Mist, the default value is YES. + */ ++ (BOOL)shouldUseBuiltInNotifications; + +#pragma mark - + +/*! + * @method setGrowlDelegate: + * @abstract Set the object which will be responsible for providing and receiving Growl information. + * @discussion This must be called before using GrowlApplicationBridge. + * + * The methods in the GrowlApplicationBridgeDelegate protocol are required + * and return the basic information needed to register with Growl. + * + * The methods in the GrowlApplicationBridgeDelegate_InformalProtocol + * informal protocol are individually optional. They provide a greater + * degree of interaction between the application and growl such as informing + * the application when one of its Growl notifications is clicked by the user. + * + * The methods in the GrowlApplicationBridgeDelegate_Installation_InformalProtocol + * informal protocol are individually optional and are only applicable when + * using the Growl-WithInstaller.framework which allows for automated Growl + * installation. + * + * When this method is called, data will be collected from inDelegate, Growl + * will be launched if it is not already running, and the application will be + * registered with Growl. + * + * If using the Growl-WithInstaller framework, if Growl is already installed + * but this copy of the framework has an updated version of Growl, the user + * will be prompted to update automatically. + * + * @param inDelegate The delegate for the GrowlApplicationBridge. It must conform to the GrowlApplicationBridgeDelegate protocol. + */ ++ (void) setGrowlDelegate:(id)inDelegate; + +/*! + * @method growlDelegate + * @abstract Return the object responsible for providing and receiving Growl information. + * @discussion See setGrowlDelegate: for details. + * @result The Growl delegate. + */ ++ (id) growlDelegate; + +#pragma mark - + +/*! + * @method notifyWithTitle:description:notificationName:iconData:priority:isSticky:clickContext: + * @abstract Send a Growl notification. + * @discussion This is the preferred means for sending a Growl notification. + * The notification name and at least one of the title and description are + * required (all three are preferred). All other parameters may be + * nil (or 0 or NO as appropriate) to accept default values. + * + * If using the Growl-WithInstaller framework, if Growl is not installed the + * user will be prompted to install Growl. If the user cancels, this method + * will have no effect until the next application session, at which time when + * it is called the user will be prompted again. The user is also given the + * option to not be prompted again. If the user does choose to install Growl, + * the requested notification will be displayed once Growl is installed and + * running. + * + * @param title The title of the notification displayed to the user. + * @param description The full description of the notification displayed to the user. + * @param notifName The internal name of the notification. Should be human-readable, as it will be displayed in the Growl preference pane. + * @param iconData NSData object to show with the notification as its icon. If nil, the application's icon will be used instead. + * @param priority The priority of the notification. The default value is 0; positive values are higher priority and negative values are lower priority. Not all Growl displays support priority. + * @param isSticky If YES, the notification will remain on screen until clicked. Not all Growl displays support sticky notifications. + * @param clickContext A context passed back to the Growl delegate if it implements -(void)growlNotificationWasClicked: and the notification is clicked. Not all display plugins support clicking. The clickContext must be plist-encodable (completely of NSString, NSArray, NSNumber, NSDictionary, and NSData types). + */ ++ (void) notifyWithTitle:(NSString *)title + description:(NSString *)description + notificationName:(NSString *)notifName + iconData:(NSData *)iconData + priority:(signed int)priority + isSticky:(BOOL)isSticky + clickContext:(id)clickContext; + +/*! + * @method notifyWithTitle:description:notificationName:iconData:priority:isSticky:clickContext:identifier: + * @abstract Send a Growl notification. + * @discussion This is the preferred means for sending a Growl notification. + * The notification name and at least one of the title and description are + * required (all three are preferred). All other parameters may be + * nil (or 0 or NO as appropriate) to accept default values. + * + * If using the Growl-WithInstaller framework, if Growl is not installed the + * user will be prompted to install Growl. If the user cancels, this method + * will have no effect until the next application session, at which time when + * it is called the user will be prompted again. The user is also given the + * option to not be prompted again. If the user does choose to install Growl, + * the requested notification will be displayed once Growl is installed and + * running. + * + * @param title The title of the notification displayed to the user. + * @param description The full description of the notification displayed to the user. + * @param notifName The internal name of the notification. Should be human-readable, as it will be displayed in the Growl preference pane. + * @param iconData NSData object to show with the notification as its icon. If nil, the application's icon will be used instead. + * @param priority The priority of the notification. The default value is 0; positive values are higher priority and negative values are lower priority. Not all Growl displays support priority. + * @param isSticky If YES, the notification will remain on screen until clicked. Not all Growl displays support sticky notifications. + * @param clickContext A context passed back to the Growl delegate if it implements -(void)growlNotificationWasClicked: and the notification is clicked. Not all display plugins support clicking. The clickContext must be plist-encodable (completely of NSString, NSArray, NSNumber, NSDictionary, and NSData types). + * @param identifier An identifier for this notification. Notifications with equal identifiers are coalesced. + */ ++ (void) notifyWithTitle:(NSString *)title + description:(NSString *)description + notificationName:(NSString *)notifName + iconData:(NSData *)iconData + priority:(signed int)priority + isSticky:(BOOL)isSticky + clickContext:(id)clickContext + identifier:(NSString *)identifier; + +/*! @method notifyWithDictionary: + * @abstract Notifies using a userInfo dictionary suitable for passing to + * NSDistributedNotificationCenter. + * @param userInfo The dictionary to notify with. + * @discussion Before Growl 0.6, your application would have posted + * notifications using NSDistributedNotificationCenter by + * creating a userInfo dictionary with the notification data. This had the + * advantage of allowing you to add other data to the dictionary for programs + * besides Growl that might be listening. + * + * This method allows you to use such dictionaries without being restricted + * to using NSDistributedNotificationCenter. The keys for this dictionary + * can be found in GrowlDefines.h. + */ ++ (void) notifyWithDictionary:(NSDictionary *)userInfo; + +#pragma mark - + +/*! @method registerWithDictionary: + * @abstract Register your application with Growl without setting a delegate. + * @discussion When you call this method with a dictionary, + * GrowlApplicationBridge registers your application using that dictionary. + * If you pass nil, GrowlApplicationBridge will ask the delegate + * (if there is one) for a dictionary, and if that doesn't work, it will look + * in your application's bundle for an auto-discoverable plist. + * (XXX refer to more information on that) + * + * If you pass a dictionary to this method, it must include the + * GROWL_APP_NAME key, unless a delegate is set. + * + * This method is mainly an alternative to the delegate system introduced + * with Growl 0.6. Without a delegate, you cannot receive callbacks such as + * -growlIsReady (since they are sent to the delegate). You can, + * however, set a delegate after registering without one. + * + * This method was introduced in Growl.framework 0.7. + */ ++ (BOOL) registerWithDictionary:(NSDictionary *)regDict; + +/*! @method reregisterGrowlNotifications + * @abstract Reregister the notifications for this application. + * @discussion This method does not normally need to be called. If your + * application changes what notifications it is registering with Growl, call + * this method to have the Growl delegate's + * -registrationDictionaryForGrowl method called again and the + * Growl registration information updated. + * + * This method is now implemented using -registerWithDictionary:. + */ ++ (void) reregisterGrowlNotifications; + +#pragma mark - + +/*! @method setWillRegisterWhenGrowlIsReady: + * @abstract Tells GrowlApplicationBridge to register with Growl when Growl + * launches (or not). + * @discussion When Growl has started listening for notifications, it posts a + * GROWL_IS_READY notification on the Distributed Notification + * Center. GrowlApplicationBridge listens for this notification, using it to + * perform various tasks (such as calling your delegate's + * -growlIsReady method, if it has one). If this method is + * called with YES, one of those tasks will be to reregister + * with Growl (in the manner of -reregisterGrowlNotifications). + * + * This attribute is automatically set back to NO (the default) + * after every GROWL_IS_READY notification. + * @param flag YES if you want GrowlApplicationBridge to register with + * Growl when next it is ready; NO if not. + */ ++ (void) setWillRegisterWhenGrowlIsReady:(BOOL)flag; + +/*! @method willRegisterWhenGrowlIsReady + * @abstract Reports whether GrowlApplicationBridge will register with Growl + * when Growl next launches. + * @result YES if GrowlApplicationBridge will register with Growl + * when next it posts GROWL_IS_READY; NO if not. + */ ++ (BOOL) willRegisterWhenGrowlIsReady; + +#pragma mark - + +/*! @method registrationDictionaryFromDelegate + * @abstract Asks the delegate for a registration dictionary. + * @discussion If no delegate is set, or if the delegate's + * -registrationDictionaryForGrowl method returns + * nil, this method returns nil. + * + * This method does not attempt to clean up the dictionary in any way - for + * example, if it is missing the GROWL_APP_NAME key, the result + * will be missing it too. Use +[GrowlApplicationBridge + * registrationDictionaryByFillingInDictionary:] or + * +[GrowlApplicationBridge + * registrationDictionaryByFillingInDictionary:restrictToKeys:] to try + * to fill in missing keys. + * + * This method was introduced in Growl.framework 0.7. + * @result A registration dictionary. + */ ++ (NSDictionary *) registrationDictionaryFromDelegate; + +/*! @method registrationDictionaryFromBundle: + * @abstract Looks in a bundle for a registration dictionary. + * @discussion This method looks in a bundle for an auto-discoverable + * registration dictionary file using -[NSBundle + * pathForResource:ofType:]. If it finds one, it loads the file using + * +[NSDictionary dictionaryWithContentsOfFile:] and returns the + * result. + * + * If you pass nil as the bundle, the main bundle is examined. + * + * This method does not attempt to clean up the dictionary in any way - for + * example, if it is missing the GROWL_APP_NAME key, the result + * will be missing it too. Use +[GrowlApplicationBridge + * registrationDictionaryByFillingInDictionary:] or + * +[GrowlApplicationBridge + * registrationDictionaryByFillingInDictionary:restrictToKeys:] to try + * to fill in missing keys. + * + * This method was introduced in Growl.framework 0.7. + * @result A registration dictionary. + */ ++ (NSDictionary *) registrationDictionaryFromBundle:(NSBundle *)bundle; + +/*! @method bestRegistrationDictionary + * @abstract Obtains a registration dictionary, filled out to the best of + * GrowlApplicationBridge's knowledge. + * @discussion This method creates a registration dictionary as best + * GrowlApplicationBridge knows how. + * + * First, GrowlApplicationBridge contacts the Growl delegate (if there is + * one) and gets the registration dictionary from that. If no such dictionary + * was obtained, GrowlApplicationBridge looks in your application's main + * bundle for an auto-discoverable registration dictionary file. If that + * doesn't exist either, this method returns nil. + * + * Second, GrowlApplicationBridge calls + * +registrationDictionaryByFillingInDictionary: with whatever + * dictionary was obtained. The result of that method is the result of this + * method. + * + * GrowlApplicationBridge uses this method when you call + * +setGrowlDelegate:, or when you call + * +registerWithDictionary: with nil. + * + * This method was introduced in Growl.framework 0.7. + * @result A registration dictionary. + */ ++ (NSDictionary *) bestRegistrationDictionary; + +#pragma mark - + +/*! @method registrationDictionaryByFillingInDictionary: + * @abstract Tries to fill in missing keys in a registration dictionary. + * @discussion This method examines the passed-in dictionary for missing keys, + * and tries to work out correct values for them. As of 0.7, it uses: + * + * Key Value + * --- ----- + * GROWL_APP_NAME CFBundleExecutableName + * GROWL_APP_ICON_DATA The data of the icon of the application. + * GROWL_APP_LOCATION The location of the application. + * GROWL_NOTIFICATIONS_DEFAULT GROWL_NOTIFICATIONS_ALL + * + * Keys are only filled in if missing; if a key is present in the dictionary, + * its value will not be changed. + * + * This method was introduced in Growl.framework 0.7. + * @param regDict The dictionary to fill in. + * @result The dictionary with the keys filled in. This is an autoreleased + * copy of regDict. + */ ++ (NSDictionary *) registrationDictionaryByFillingInDictionary:(NSDictionary *)regDict; + +/*! @method registrationDictionaryByFillingInDictionary:restrictToKeys: + * @abstract Tries to fill in missing keys in a registration dictionary. + * @discussion This method examines the passed-in dictionary for missing keys, + * and tries to work out correct values for them. As of 0.7, it uses: + * + * Key Value + * --- ----- + * GROWL_APP_NAME CFBundleExecutableName + * GROWL_APP_ICON_DATA The data of the icon of the application. + * GROWL_APP_LOCATION The location of the application. + * GROWL_NOTIFICATIONS_DEFAULT GROWL_NOTIFICATIONS_ALL + * + * Only those keys that are listed in keys will be filled in. + * Other missing keys are ignored. Also, keys are only filled in if missing; + * if a key is present in the dictionary, its value will not be changed. + * + * This method was introduced in Growl.framework 0.7. + * @param regDict The dictionary to fill in. + * @param keys The keys to fill in. If nil, any missing keys are filled in. + * @result The dictionary with the keys filled in. This is an autoreleased + * copy of regDict. + */ ++ (NSDictionary *) registrationDictionaryByFillingInDictionary:(NSDictionary *)regDict restrictToKeys:(NSSet *)keys; + +/*! @brief Tries to fill in missing keys in a notification dictionary. + * @param notifDict The dictionary to fill in. + * @return The dictionary with the keys filled in. This will be a separate instance from \a notifDict. + * @discussion This function examines the \a notifDict for missing keys, and + * tries to get them from the last known registration dictionary. As of 1.1, + * the keys that it will look for are: + * + * \li GROWL_APP_NAME + * \li GROWL_APP_ICON_DATA + * + * @since Growl.framework 1.1 + */ ++ (NSDictionary *) notificationDictionaryByFillingInDictionary:(NSDictionary *)regDict; + ++ (NSDictionary *) frameworkInfoDictionary; + +#pragma mark - + +/*! + *@method growlURLSchemeAvailable + *@abstract Lets the app know whether growl:// is registered on the system, used for certain methods below this + *@return Returns whether growl:// is registered on the system + *@discussion Methods such as openGrowlPreferences rely on the growl:// URL scheme to function + * Further, this method can provide a check on whether Growl is installed, + * however, the framework will not be relying on this method for choosing when/how to notify, + * and it is not recommended that the app rely on it for other than whether to use growl:// methods + *@since Growl.framework 1.4 + */ ++ (BOOL) isGrowlURLSchemeAvailable; + +/*! + * @method openGrowlPreferences: + * @abstract Open Growl preferences, optionally to this app's settings, growl:// method + * @param showApp Whether to show the application's settings, otherwise just opens to the last position + * @return Return's whether opening the URL was succesfull or not. + * @discussion Will launch if Growl is installed, but not running, and open the preferences window + * Uses growl:// URL scheme + * @since Growl.framework 1.4 + */ ++ (BOOL) openGrowlPreferences:(BOOL)showApp; + +@end + +//------------------------------------------------------------------------------ +#pragma mark - + +/*! + * @protocol GrowlApplicationBridgeDelegate + * @abstract Required protocol for the Growl delegate. + * @discussion The methods in this protocol are optional and are called + * automatically as needed by GrowlApplicationBridge. See + * +[GrowlApplicationBridge setGrowlDelegate:]. + * See also GrowlApplicationBridgeDelegate_InformalProtocol. + */ + +@protocol GrowlApplicationBridgeDelegate + +@optional + +/*! + * @method registrationDictionaryForGrowl + * @abstract Return the dictionary used to register this application with Growl. + * @discussion The returned dictionary gives Growl the complete list of + * notifications this application will ever send, and it also specifies which + * notifications should be enabled by default. Each is specified by an array + * of NSString objects. + * + * For most applications, these two arrays can be the same (if all sent + * notifications should be displayed by default). + * + * The NSString objects of these arrays will correspond to the + * notificationName: parameter passed in + * +[GrowlApplicationBridge + * notifyWithTitle:description:notificationName:iconData:priority:isSticky:clickContext:] calls. + * + * The dictionary should have the required key object pairs: + * key: GROWL_NOTIFICATIONS_ALL object: NSArray of NSString objects + * key: GROWL_NOTIFICATIONS_DEFAULT object: NSArray of NSString objects + * + * The dictionary may have the following key object pairs: + * key: GROWL_NOTIFICATIONS_HUMAN_READABLE_NAMES object: NSDictionary of key: notification name object: human-readable notification name + * + * You do not need to implement this method if you have an auto-discoverable + * plist file in your app bundle. (XXX refer to more information on that) + * + * @result The NSDictionary to use for registration. + */ +- (NSDictionary *) registrationDictionaryForGrowl; + +/*! + * @method applicationNameForGrowl + * @abstract Return the name of this application which will be used for Growl bookkeeping. + * @discussion This name is used both internally and in the Growl preferences. + * + * This should remain stable between different versions and incarnations of + * your application. + * For example, "SurfWriter" is a good app name, whereas "SurfWriter 2.0" and + * "SurfWriter Lite" are not. + * + * You do not need to implement this method if you are providing the + * application name elsewhere, meaning in an auto-discoverable plist file in + * your app bundle (XXX refer to more information on that) or in the result + * of -registrationDictionaryForGrowl. + * + * @result The name of the application using Growl. + */ +- (NSString *) applicationNameForGrowl; + +/*! + * @method applicationIconForGrowl + * @abstract Return the NSImage to treat as the application icon. + * @discussion The delegate may optionally return an NSImage + * object to use as the application icon. If this method is not implemented, + * {{{-applicationIconDataForGrowl}}} is tried. If that method is not + * implemented, the application's own icon is used. Neither method is + * generally needed. + * @result The NSImage to treat as the application icon. + */ +- (NSImage *) applicationIconForGrowl; + +/*! + * @method applicationIconDataForGrowl + * @abstract Return the NSData to treat as the application icon. + * @discussion The delegate may optionally return an NSData + * object to use as the application icon; if this is not implemented, the + * application's own icon is used. This is not generally needed. + * @result The NSData to treat as the application icon. + * @deprecated In version 1.1, in favor of {{{-applicationIconForGrowl}}}. + */ +- (NSData *) applicationIconDataForGrowl; + +/*! + * @method growlIsReady + * @abstract Informs the delegate that Growl has launched. + * @discussion Informs the delegate that Growl (specifically, the + * GrowlHelperApp) was launched successfully. The application can take actions + * with the knowledge that Growl is installed and functional. + */ +- (void) growlIsReady; + +/*! + * @method growlNotificationWasClicked: + * @abstract Informs the delegate that a Growl notification was clicked. + * @discussion Informs the delegate that a Growl notification was clicked. It + * is only sent for notifications sent with a non-nil + * clickContext, so if you want to receive a message when a notification is + * clicked, clickContext must not be nil when calling + * +[GrowlApplicationBridge notifyWithTitle: description:notificationName:iconData:priority:isSticky:clickContext:]. + * @param clickContext The clickContext passed when displaying the notification originally via +[GrowlApplicationBridge notifyWithTitle:description:notificationName:iconData:priority:isSticky:clickContext:]. + */ +- (void) growlNotificationWasClicked:(id)clickContext; + +/*! + * @method growlNotificationTimedOut: + * @abstract Informs the delegate that a Growl notification timed out. + * @discussion Informs the delegate that a Growl notification timed out. It + * is only sent for notifications sent with a non-nil + * clickContext, so if you want to receive a message when a notification is + * clicked, clickContext must not be nil when calling + * +[GrowlApplicationBridge notifyWithTitle: description:notificationName:iconData:priority:isSticky:clickContext:]. + * @param clickContext The clickContext passed when displaying the notification originally via +[GrowlApplicationBridge notifyWithTitle:description:notificationName:iconData:priority:isSticky:clickContext:]. + */ +- (void) growlNotificationTimedOut:(id)clickContext; + + +/*! + * @method hasNetworkClientEntitlement + * @abstract Used only in sandboxed situations since we don't know whether the app has com.apple.security.network.client entitlement + * @discussion GrowlDelegate calls to find out if we have the com.apple.security.network.client entitlement, + * since we can't find this out without hitting the sandbox. We only call it if we detect that the application is sandboxed. + */ +- (BOOL) hasNetworkClientEntitlement; + +@end + +#pragma mark - + +#endif /* __GrowlApplicationBridge_h__ */ diff -Nru handbrake-0.9.9+dfsg/macosx/Growl.framework/Versions/Current/Headers/GrowlDefines.h handbrake-0.9.9+ppa1/macosx/Growl.framework/Versions/Current/Headers/GrowlDefines.h --- handbrake-0.9.9+dfsg/macosx/Growl.framework/Versions/Current/Headers/GrowlDefines.h 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/Growl.framework/Versions/Current/Headers/GrowlDefines.h 2013-04-20 13:24:15.000000000 +0000 @@ -0,0 +1,386 @@ +// +// GrowlDefines.h +// + +#ifndef _GROWLDEFINES_H +#define _GROWLDEFINES_H + +#ifdef __OBJC__ +#define XSTR(x) (@x) +#else +#define XSTR CFSTR +#endif + +/*! @header GrowlDefines.h + * @abstract Defines all the notification keys. + * @discussion Defines all the keys used for registration with Growl and for + * Growl notifications. + * + * Most applications should use the functions or methods of Growl.framework + * instead of posting notifications such as those described here. + * @updated 2004-01-25 + */ + +// UserInfo Keys for Registration +#pragma mark UserInfo Keys for Registration + +/*! @group Registration userInfo keys */ +/* @abstract Keys for the userInfo dictionary of a GROWL_APP_REGISTRATION distributed notification. + * @discussion The values of these keys describe the application and the + * notifications it may post. + * + * Your application must register with Growl before it can post Growl + * notifications (and have them not be ignored). However, as of Growl 0.6, + * posting GROWL_APP_REGISTRATION notifications directly is no longer the + * preferred way to register your application. Your application should instead + * use Growl.framework's delegate system. + * See +[GrowlApplicationBridge setGrowlDelegate:] or Growl_SetDelegate for + * more information. + */ + +/*! @defined GROWL_APP_NAME + * @abstract The name of your application. + * @discussion The name of your application. This should remain stable between + * different versions and incarnations of your application. + * For example, "SurfWriter" is a good app name, whereas "SurfWriter 2.0" and + * "SurfWriter Lite" are not. + */ +#define GROWL_APP_NAME XSTR("ApplicationName") +/*! @defined GROWL_APP_ID + * @abstract The bundle identifier of your application. + * @discussion The bundle identifier of your application. This key should + * be unique for your application while there may be several applications + * with the same GROWL_APP_NAME. + * This key is optional. + */ +#define GROWL_APP_ID XSTR("ApplicationId") +/*! @defined GROWL_APP_ICON_DATA + * @abstract The image data for your application's icon. + * @discussion Image data representing your application's icon. This may be + * superimposed on a notification icon as a badge, used as the notification + * icon when a notification-specific icon is not supplied, or ignored + * altogether, depending on the display. Must be in a format supported by + * NSImage, such as TIFF, PNG, GIF, JPEG, BMP, PICT, or PDF. + * + * Optional. Not supported by all display plugins. + */ +#define GROWL_APP_ICON_DATA XSTR("ApplicationIcon") +/*! @defined GROWL_NOTIFICATIONS_DEFAULT + * @abstract The array of notifications to turn on by default. + * @discussion These are the names of the notifications that should be enabled + * by default when your application registers for the first time. If your + * application reregisters, Growl will look here for any new notification + * names found in GROWL_NOTIFICATIONS_ALL, but ignore any others. + */ +#define GROWL_NOTIFICATIONS_DEFAULT XSTR("DefaultNotifications") +/*! @defined GROWL_NOTIFICATIONS_ALL + * @abstract The array of all notifications your application can send. + * @discussion These are the names of all of the notifications that your + * application may post. See GROWL_NOTIFICATION_NAME for a discussion of good + * notification names. + */ +#define GROWL_NOTIFICATIONS_ALL XSTR("AllNotifications") +/*! @defined GROWL_NOTIFICATIONS_HUMAN_READABLE_DESCRIPTIONS + * @abstract A dictionary of human-readable names for your notifications. + * @discussion By default, the Growl UI will display notifications by the names given in GROWL_NOTIFICATIONS_ALL + * which correspond to the GROWL_NOTIFICATION_NAME. This dictionary specifies the human-readable name to display. + * The keys of the dictionary are GROWL_NOTIFICATION_NAME strings; the objects are the human-readable versions. + * For any GROWL_NOTIFICATION_NAME not specific in this dictionary, the GROWL_NOTIFICATION_NAME will be displayed. + * + * This key is optional. + */ +#define GROWL_NOTIFICATIONS_HUMAN_READABLE_NAMES XSTR("HumanReadableNames") +/*! @defined GROWL_NOTIFICATIONS_DESCRIPTIONS +* @abstract A dictionary of descriptions of _when_ each notification occurs +* @discussion This is an NSDictionary whose keys are GROWL_NOTIFICATION_NAME strings and whose objects are +* descriptions of _when_ each notification occurs, such as "You received a new mail message" or +* "A file finished downloading". +* +* This key is optional. +*/ +#define GROWL_NOTIFICATIONS_DESCRIPTIONS XSTR("NotificationDescriptions") +/*! @defined GROWL_NOTIFICATIONS_ICONS + * @abstract A dictionary of icons for each notification + * @discussion This is an NSDictionary whose keys are GROWL_NOTIFICATION_NAME strings and whose objects are + * icons for each notification, for GNTP spec + * + * This key is optional. + */ +#define GROWL_NOTIFICATIONS_ICONS XSTR("NotificationIcons") + +/*! @defined GROWL_TICKET_VERSION + * @abstract The version of your registration ticket. + * @discussion Include this key in a ticket plist file that you put in your + * application bundle for auto-discovery. The current ticket version is 1. + */ +#define GROWL_TICKET_VERSION XSTR("TicketVersion") +// UserInfo Keys for Notifications +#pragma mark UserInfo Keys for Notifications + +/*! @group Notification userInfo keys */ +/* @abstract Keys for the userInfo dictionary of a GROWL_NOTIFICATION distributed notification. + * @discussion The values of these keys describe the content of a Growl + * notification. + * + * Not all of these keys are supported by all displays. Only the name, title, + * and description of a notification are universal. Most of the built-in + * displays do support all of these keys, and most other visual displays + * probably will also. But, as of 0.6, the Log, MailMe, and Speech displays + * support only textual data. + */ + +/*! @defined GROWL_NOTIFICATION_NAME + * @abstract The name of the notification. + * @discussion The name of the notification. Note that if you do not define + * GROWL_NOTIFICATIONS_HUMAN_READABLE_NAMES when registering your ticket originally this name + * will the one displayed within the Growl preference pane and should be human-readable. + */ +#define GROWL_NOTIFICATION_NAME XSTR("NotificationName") +/*! @defined GROWL_NOTIFICATION_TITLE + * @abstract The title to display in the notification. + * @discussion The title of the notification. Should be very brief. + * The title usually says what happened, e.g. "Download complete". + */ +#define GROWL_NOTIFICATION_TITLE XSTR("NotificationTitle") +/*! @defined GROWL_NOTIFICATION_DESCRIPTION + * @abstract The description to display in the notification. + * @discussion The description should be longer and more verbose than the title. + * The description usually tells the subject of the action, + * e.g. "Growl-0.6.dmg downloaded in 5.02 minutes". + */ +#define GROWL_NOTIFICATION_DESCRIPTION XSTR("NotificationDescription") +/*! @defined GROWL_NOTIFICATION_ICON + * @discussion Image data for the notification icon. Image data must be in a format + * supported by NSImage, such as TIFF, PNG, GIF, JPEG, BMP, PICT, or PDF. + * + * Optional. Not supported by all display plugins. + */ +#define GROWL_NOTIFICATION_ICON_DATA XSTR("NotificationIcon") +/*! @defined GROWL_NOTIFICATION_APP_ICON + * @discussion Image data for the application icon, in case GROWL_APP_ICON does + * not apply for some reason. Image data be in a format supported by NSImage, such + * as TIFF, PNG, GIF, JPEG, BMP, PICT, or PDF. + * + * Optional. Not supported by all display plugins. + */ +#define GROWL_NOTIFICATION_APP_ICON_DATA XSTR("NotificationAppIcon") +/*! @defined GROWL_NOTIFICATION_PRIORITY + * @discussion The priority of the notification as an integer number from + * -2 to +2 (+2 being highest). + * + * Optional. Not supported by all display plugins. + */ +#define GROWL_NOTIFICATION_PRIORITY XSTR("NotificationPriority") +/*! @defined GROWL_NOTIFICATION_STICKY + * @discussion A Boolean number controlling whether the notification is sticky. + * + * Optional. Not supported by all display plugins. + */ +#define GROWL_NOTIFICATION_STICKY XSTR("NotificationSticky") +/*! @defined GROWL_NOTIFICATION_CLICK_CONTEXT + * @abstract Identifies which notification was clicked. + * @discussion An identifier for the notification for clicking purposes. + * + * This will be passed back to the application when the notification is + * clicked. It must be plist-encodable (a data, dictionary, array, number, or + * string object), and it should be unique for each notification you post. + * A good click context would be a UUID string returned by NSProcessInfo or + * CFUUID. + * + * Optional. Not supported by all display plugins. + */ +#define GROWL_NOTIFICATION_CLICK_CONTEXT XSTR("NotificationClickContext") + +/*! @defined GROWL_NOTIFICATION_IDENTIFIER + * @abstract An identifier for the notification for coalescing purposes. + * Notifications with the same identifier fall into the same class; only + * the last notification of a class is displayed on the screen. If a + * notification of the same class is currently being displayed, it is + * replaced by this notification. + * + * Optional. Not supported by all display plugins. + */ +#define GROWL_NOTIFICATION_IDENTIFIER XSTR("GrowlNotificationIdentifier") + +/*! @defined GROWL_APP_PID + * @abstract The process identifier of the process which sends this + * notification. If this field is set, the application will only receive + * clicked and timed out notifications which originate from this process. + * + * Optional. + */ +#define GROWL_APP_PID XSTR("ApplicationPID") + +/*! @defined GROWL_NOTIFICATION_PROGRESS +* @abstract If this key is set, it should contain a double value wrapped +* in a NSNumber which describes some sort of progress (from 0.0 to 100.0). +* If this is key is not set, no progress bar is shown. +* +* Optional. Not supported by all display plugins. +*/ +#define GROWL_NOTIFICATION_PROGRESS XSTR("NotificationProgress") + +/*! @defined GROWL_NOTIFICATION_ALREADY_SHOWN + * @abstract If this key is set, it should contain a bool value wrapped + * in a NSNumber which describes whether the notification has + * already been displayed, for instance by built in Notification + * Center support. This value can be used to allow display + * plugins to skip a notification, while still allowing Growl + * actions to run on them. + * + * Optional. Not supported by all display plugins. + */ +#define GROWL_NOTIFICATION_ALREADY_SHOWN XSTR("AlreadyShown") + + +// Notifications +#pragma mark Notifications + +/*! @group Notification names */ +/* @abstract Names of distributed notifications used by Growl. + * @discussion These are notifications used by applications (directly or + * indirectly) to interact with Growl, and by Growl for interaction between + * its components. + * + * Most of these should no longer be used in Growl 0.6 and later, in favor of + * Growl.framework's GrowlApplicationBridge APIs. + */ + +/*! @defined GROWL_APP_REGISTRATION + * @abstract The distributed notification for registering your application. + * @discussion This is the name of the distributed notification that can be + * used to register applications with Growl. + * + * The userInfo dictionary for this notification can contain these keys: + *
    + *
  • GROWL_APP_NAME
  • + *
  • GROWL_APP_ICON_DATA
  • + *
  • GROWL_NOTIFICATIONS_ALL
  • + *
  • GROWL_NOTIFICATIONS_DEFAULT
  • + *
+ * + * No longer recommended as of Growl 0.6. An alternate method of registering + * is to use Growl.framework's delegate system. + * See +[GrowlApplicationBridge setGrowlDelegate:] or Growl_SetDelegate for + * more information. + */ +#define GROWL_APP_REGISTRATION XSTR("GrowlApplicationRegistrationNotification") +/*! @defined GROWL_APP_REGISTRATION_CONF + * @abstract The distributed notification for confirming registration. + * @discussion The name of the distributed notification sent to confirm the + * registration. Used by the Growl preference pane. Your application probably + * does not need to use this notification. + */ +#define GROWL_APP_REGISTRATION_CONF XSTR("GrowlApplicationRegistrationConfirmationNotification") +/*! @defined GROWL_NOTIFICATION + * @abstract The distributed notification for Growl notifications. + * @discussion This is what it all comes down to. This is the name of the + * distributed notification that your application posts to actually send a + * Growl notification. + * + * The userInfo dictionary for this notification can contain these keys: + *
    + *
  • GROWL_NOTIFICATION_NAME (required)
  • + *
  • GROWL_NOTIFICATION_TITLE (required)
  • + *
  • GROWL_NOTIFICATION_DESCRIPTION (required)
  • + *
  • GROWL_NOTIFICATION_ICON
  • + *
  • GROWL_NOTIFICATION_APP_ICON
  • + *
  • GROWL_NOTIFICATION_PRIORITY
  • + *
  • GROWL_NOTIFICATION_STICKY
  • + *
  • GROWL_NOTIFICATION_CLICK_CONTEXT
  • + *
  • GROWL_APP_NAME (required)
  • + *
+ * + * No longer recommended as of Growl 0.6. Three alternate methods of posting + * notifications are +[GrowlApplicationBridge notifyWithTitle:description:notificationName:iconData:priority:isSticky:clickContext:], + * Growl_NotifyWithTitleDescriptionNameIconPriorityStickyClickContext, and + * Growl_PostNotification. + */ +#define GROWL_NOTIFICATION XSTR("GrowlNotification") +/*! @defined GROWL_PING + * @abstract A distributed notification to check whether Growl is running. + * @discussion This is used by the Growl preference pane. If it receives a + * GROWL_PONG, the preference pane takes this to mean that Growl is running. + */ +#define GROWL_PING XSTR("Honey, Mind Taking Out The Trash") +/*! @defined GROWL_PONG + * @abstract The distributed notification sent in reply to GROWL_PING. + * @discussion GrowlHelperApp posts this in reply to GROWL_PING. + */ +#define GROWL_PONG XSTR("What Do You Want From Me, Woman") +/*! @defined GROWL_IS_READY + * @abstract The distributed notification sent when Growl starts up. + * @discussion GrowlHelperApp posts this when it has begin listening on all of + * its sources for new notifications. GrowlApplicationBridge (in + * Growl.framework), upon receiving this notification, reregisters using the + * registration dictionary supplied by its delegate. + */ +#define GROWL_IS_READY XSTR("Lend Me Some Sugar; I Am Your Neighbor!") + + +/*! @defined GROWL_DISTRIBUTED_NOTIFICATION_CLICKED_SUFFIX + * @abstract Part of the name of the distributed notification sent when a supported notification is clicked. + * @discussion When a Growl notification with a click context is clicked on by + * the user, Growl posts a distributed notification whose name is in the format: + * [NSString stringWithFormat:@"%@-%d-%@", appName, pid, GROWL_DISTRIBUTED_NOTIFICATION_CLICKED_SUFFIX] + * The GrowlApplicationBridge responds to this notification by calling a callback in its delegate. + */ +#define GROWL_DISTRIBUTED_NOTIFICATION_CLICKED_SUFFIX XSTR("GrowlClicked!") + +/*! @defined GROWL_DISTRIBUTED_NOTIFICATION_TIMED_OUT_SUFFIX + * @abstract Part of the name of the distributed notification sent when a supported notification times out without being clicked. + * @discussion When a Growl notification with a click context times out, Growl posts a distributed notification + * whose name is in the format: + * [NSString stringWithFormat:@"%@-%d-%@", appName, pid, GROWL_DISTRIBUTED_NOTIFICATION_TIMED_OUT_SUFFIX] + * The GrowlApplicationBridge responds to this notification by calling a callback in its delegate. + * NOTE: The user may have actually clicked the 'close' button; this triggers an *immediate* time-out of the notification. + */ +#define GROWL_DISTRIBUTED_NOTIFICATION_TIMED_OUT_SUFFIX XSTR("GrowlTimedOut!") + +/*! @defined GROWL_DISTRIBUTED_NOTIFICATION_NOTIFICATIONCENTER_ON + * @abstract The distributed notification sent when the Notification Center support is toggled on in Growl 2.0 + * @discussion When the user enables Notification Center support in Growl 2.0, this notification is sent + * to inform all running apps that they should now speak to Notification Center directly. + */ +#define GROWL_DISTRIBUTED_NOTIFICATION_NOTIFICATIONCENTER_ON XSTR("GrowlNotificationCenterOn!") + +/*! @defined GROWL_DISTRIBUTED_NOTIFICATION_NOTIFICATIONCENTER_OFF + * @abstract The distributed notification sent when the Notification Center support is toggled off in Growl 2.0 + * @discussion When the user enables Notification Center support in Growl 2.0, this notification is sent + * to inform all running apps that they should no longer speak to Notification Center directly. + */ +#define GROWL_DISTRIBUTED_NOTIFICATION_NOTIFICATIONCENTER_OFF XSTR("GrowlNotificationCenterOff!") + +/*! @defined GROWL_DISTRIBUTED_NOTIFICATION_NOTIFICATIONCENTER_QUERY + * @abstract The distributed notification sent by an application to query Growl 2.0's notification center support. + * @discussion When an app starts up, it will send this query to get Growl 2.0 to spit out whether notification + * center support is on or off. + */ +#define GROWL_DISTRIBUTED_NOTIFICATION_NOTIFICATIONCENTER_QUERY XSTR("GrowlNotificationCenterYN?") + + +/*! @group Other symbols */ +/* Symbols which don't fit into any of the other categories. */ + +/*! @defined GROWL_KEY_CLICKED_CONTEXT + * @abstract Used internally as the key for the clickedContext passed over DNC. + * @discussion This key is used in GROWL_NOTIFICATION_CLICKED, and contains the + * click context that was supplied in the original notification. + */ +#define GROWL_KEY_CLICKED_CONTEXT XSTR("ClickedContext") +/*! @defined GROWL_REG_DICT_EXTENSION + * @abstract The filename extension for registration dictionaries. + * @discussion The GrowlApplicationBridge in Growl.framework registers with + * Growl by creating a file with the extension of .(GROWL_REG_DICT_EXTENSION) + * and opening it in the GrowlHelperApp. This happens whether or not Growl is + * running; if it was stopped, it quits immediately without listening for + * notifications. + */ +#define GROWL_REG_DICT_EXTENSION XSTR("growlRegDict") + + +#define GROWL_POSITION_PREFERENCE_KEY @"GrowlSelectedPosition" + +#define GROWL_PLUGIN_CONFIG_ID XSTR("GrowlPluginConfigurationID") + +#endif //ndef _GROWLDEFINES_H diff -Nru handbrake-0.9.9+dfsg/macosx/Growl.framework/Versions/Current/Headers/Growl.h handbrake-0.9.9+ppa1/macosx/Growl.framework/Versions/Current/Headers/Growl.h --- handbrake-0.9.9+dfsg/macosx/Growl.framework/Versions/Current/Headers/Growl.h 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/Growl.framework/Versions/Current/Headers/Growl.h 2013-04-20 13:24:15.000000000 +0000 @@ -0,0 +1,5 @@ +#include + +#ifdef __OBJC__ +# include +#endif diff -Nru handbrake-0.9.9+dfsg/macosx/Growl.framework/Versions/Current/Resources/Info.plist handbrake-0.9.9+ppa1/macosx/Growl.framework/Versions/Current/Resources/Info.plist --- handbrake-0.9.9+dfsg/macosx/Growl.framework/Versions/Current/Resources/Info.plist 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/Growl.framework/Versions/Current/Resources/Info.plist 2013-04-20 13:24:15.000000000 +0000 @@ -0,0 +1,40 @@ + + + + + BuildMachineOSBuild + 12C60 + CFBundleDevelopmentRegion + English + CFBundleExecutable + Growl + CFBundleIdentifier + com.growl.growlframework + CFBundleInfoDictionaryVersion + 6.0 + CFBundlePackageType + FMWK + CFBundleShortVersionString + 2.0.1 + CFBundleSignature + GRRR + CFBundleVersion + 2.0.1 + DTCompiler + com.apple.compilers.llvm.clang.1_0 + DTPlatformBuild + 4G2008a + DTPlatformVersion + GM + DTSDKBuild + 12C37 + DTSDKName + macosx10.8 + DTXcode + 0452 + DTXcodeBuild + 4G2008a + NSPrincipalClass + GrowlApplicationBridge + + Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/macosx/HandBrake.icns and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/macosx/HandBrake.icns differ diff -Nru handbrake-0.9.9+dfsg/macosx/HandBrake.xcodeproj/project.pbxproj handbrake-0.9.9+ppa1/macosx/HandBrake.xcodeproj/project.pbxproj --- handbrake-0.9.9+dfsg/macosx/HandBrake.xcodeproj/project.pbxproj 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/HandBrake.xcodeproj/project.pbxproj 2013-03-18 19:21:23.000000000 +0000 @@ -0,0 +1,1163 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + 226268E01572CC7300477B4E /* libavresample.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 226268DF1572CC7300477B4E /* libavresample.a */; }; + 226268E11572CC7300477B4E /* libavresample.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 226268DF1572CC7300477B4E /* libavresample.a */; }; + 273F202314ADB8650021BE6D /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 273F202214ADB8650021BE6D /* IOKit.framework */; }; + 273F202614ADB8A40021BE6D /* libz.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 273F202514ADB8A40021BE6D /* libz.dylib */; }; + 273F202814ADB8BE0021BE6D /* libbz2.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 273F202714ADB8BE0021BE6D /* libbz2.dylib */; }; + 273F202A14ADB8D60021BE6D /* libiconv.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 273F202914ADB8D60021BE6D /* libiconv.dylib */; }; + 273F203014ADB9790021BE6D /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 273F202F14ADB9790021BE6D /* AudioToolbox.framework */; }; + 273F203314ADB9F00021BE6D /* CoreServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 273F203214ADB9F00021BE6D /* CoreServices.framework */; }; + 273F203C14ADBC210021BE6D /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 273F203B14ADBC210021BE6D /* Cocoa.framework */; }; + 273F208914ADBE3B0021BE6D /* fakexcode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 273F208514ADBE3B0021BE6D /* fakexcode.cpp */; }; + 273F208A14ADBE3B0021BE6D /* parsecsv.c in Sources */ = {isa = PBXBuildFile; fileRef = 273F208614ADBE3B0021BE6D /* parsecsv.c */; }; + 273F208B14ADBE3B0021BE6D /* test.c in Sources */ = {isa = PBXBuildFile; fileRef = 273F208814ADBE3B0021BE6D /* test.c */; }; + 273F20AB14ADBE670021BE6D /* ChapterTitles.m in Sources */ = {isa = PBXBuildFile; fileRef = 273F208D14ADBE670021BE6D /* ChapterTitles.m */; }; + 273F20AC14ADBE670021BE6D /* Controller.m in Sources */ = {isa = PBXBuildFile; fileRef = 273F208F14ADBE670021BE6D /* Controller.m */; }; + 273F20AD14ADBE670021BE6D /* HBAdvancedController.m in Sources */ = {isa = PBXBuildFile; fileRef = 273F209014ADBE670021BE6D /* HBAdvancedController.m */; }; + 273F20AE14ADBE670021BE6D /* HBAudio.m in Sources */ = {isa = PBXBuildFile; fileRef = 273F209214ADBE670021BE6D /* HBAudio.m */; }; + 273F20AF14ADBE670021BE6D /* HBAudioController.m in Sources */ = {isa = PBXBuildFile; fileRef = 273F209414ADBE670021BE6D /* HBAudioController.m */; }; + 273F20B114ADBE670021BE6D /* HBDVDDetector.m in Sources */ = {isa = PBXBuildFile; fileRef = 273F209814ADBE670021BE6D /* HBDVDDetector.m */; }; + 273F20B214ADBE670021BE6D /* HBImageAndTextCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 273F209A14ADBE670021BE6D /* HBImageAndTextCell.m */; }; + 273F20B314ADBE670021BE6D /* HBOutputPanelController.m in Sources */ = {isa = PBXBuildFile; fileRef = 273F209C14ADBE670021BE6D /* HBOutputPanelController.m */; }; + 273F20B414ADBE670021BE6D /* HBOutputRedirect.m in Sources */ = {isa = PBXBuildFile; fileRef = 273F209E14ADBE670021BE6D /* HBOutputRedirect.m */; }; + 273F20B514ADBE670021BE6D /* HBPreferencesController.m in Sources */ = {isa = PBXBuildFile; fileRef = 273F20A014ADBE670021BE6D /* HBPreferencesController.m */; }; + 273F20B614ADBE670021BE6D /* HBPresets.m in Sources */ = {isa = PBXBuildFile; fileRef = 273F20A214ADBE670021BE6D /* HBPresets.m */; }; + 273F20B714ADBE670021BE6D /* HBPreviewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 273F20A414ADBE670021BE6D /* HBPreviewController.m */; }; + 273F20B814ADBE670021BE6D /* HBQueueController.mm in Sources */ = {isa = PBXBuildFile; fileRef = 273F20A614ADBE670021BE6D /* HBQueueController.mm */; }; + 273F20B914ADBE670021BE6D /* HBSubtitles.m in Sources */ = {isa = PBXBuildFile; fileRef = 273F20A814ADBE670021BE6D /* HBSubtitles.m */; }; + 273F20BA14ADBE670021BE6D /* PictureController.m in Sources */ = {isa = PBXBuildFile; fileRef = 273F20AA14ADBE670021BE6D /* PictureController.m */; }; + 273F20BE14ADC09F0021BE6D /* main.mm in Sources */ = {isa = PBXBuildFile; fileRef = 273F20BD14ADC09F0021BE6D /* main.mm */; }; + 273F20C314ADC4AE0021BE6D /* libiconv.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 273F202914ADB8D60021BE6D /* libiconv.dylib */; }; + 273F20C414ADC4B60021BE6D /* libbz2.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 273F202714ADB8BE0021BE6D /* libbz2.dylib */; }; + 273F20C514ADC4BD0021BE6D /* libz.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 273F202514ADB8A40021BE6D /* libz.dylib */; }; + 273F20C614ADC4F50021BE6D /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 273F202214ADB8650021BE6D /* IOKit.framework */; }; + 273F20C814ADC4FF0021BE6D /* QTKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 273F20C714ADC4FF0021BE6D /* QTKit.framework */; }; + 273F20C914ADC5150021BE6D /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 273F202F14ADB9790021BE6D /* AudioToolbox.framework */; }; + 273F20CB14ADC89A0021BE6D /* Growl.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = 273F20BF14ADC1250021BE6D /* Growl.framework */; }; + 273F20CC14ADC8A10021BE6D /* Sparkle.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = 273F20C014ADC1250021BE6D /* Sparkle.framework */; }; + 273F214C14ADCBF80021BE6D /* Delete.png in Resources */ = {isa = PBXBuildFile; fileRef = 273F212514ADCBF70021BE6D /* Delete.png */; }; + 273F214D14ADCBF80021BE6D /* DeleteHighlight.png in Resources */ = {isa = PBXBuildFile; fileRef = 273F212614ADCBF70021BE6D /* DeleteHighlight.png */; }; + 273F214E14ADCBF80021BE6D /* DeleteHighlightPressed.png in Resources */ = {isa = PBXBuildFile; fileRef = 273F212714ADCBF70021BE6D /* DeleteHighlightPressed.png */; }; + 273F214F14ADCBF80021BE6D /* DeletePressed.png in Resources */ = {isa = PBXBuildFile; fileRef = 273F212814ADCBF70021BE6D /* DeletePressed.png */; }; + 273F215114ADCBF80021BE6D /* EncodeCanceled.png in Resources */ = {isa = PBXBuildFile; fileRef = 273F212A14ADCBF80021BE6D /* EncodeCanceled.png */; }; + 273F215214ADCBF80021BE6D /* EncodeComplete.png in Resources */ = {isa = PBXBuildFile; fileRef = 273F212B14ADCBF80021BE6D /* EncodeComplete.png */; }; + 273F215314ADCBF80021BE6D /* EncodeWorking0.png in Resources */ = {isa = PBXBuildFile; fileRef = 273F212C14ADCBF80021BE6D /* EncodeWorking0.png */; }; + 273F215414ADCBF80021BE6D /* EncodeWorking1.png in Resources */ = {isa = PBXBuildFile; fileRef = 273F212D14ADCBF80021BE6D /* EncodeWorking1.png */; }; + 273F215514ADCBF80021BE6D /* EncodeWorking2.png in Resources */ = {isa = PBXBuildFile; fileRef = 273F212E14ADCBF80021BE6D /* EncodeWorking2.png */; }; + 273F215614ADCBF80021BE6D /* EncodeWorking3.png in Resources */ = {isa = PBXBuildFile; fileRef = 273F212F14ADCBF80021BE6D /* EncodeWorking3.png */; }; + 273F215714ADCBF80021BE6D /* EncodeWorking4.png in Resources */ = {isa = PBXBuildFile; fileRef = 273F213014ADCBF80021BE6D /* EncodeWorking4.png */; }; + 273F215814ADCBF80021BE6D /* EncodeWorking5.png in Resources */ = {isa = PBXBuildFile; fileRef = 273F213114ADCBF80021BE6D /* EncodeWorking5.png */; }; + 273F215B14ADCBF80021BE6D /* JobPassFirstSmall.png in Resources */ = {isa = PBXBuildFile; fileRef = 273F213414ADCBF80021BE6D /* JobPassFirstSmall.png */; }; + 273F215D14ADCBF80021BE6D /* JobPassSecondSmall.png in Resources */ = {isa = PBXBuildFile; fileRef = 273F213614ADCBF80021BE6D /* JobPassSecondSmall.png */; }; + 273F215F14ADCBF80021BE6D /* JobPassSubtitleSmall.png in Resources */ = {isa = PBXBuildFile; fileRef = 273F213814ADCBF80021BE6D /* JobPassSubtitleSmall.png */; }; + 273F216014ADCBF80021BE6D /* JobPassUnknownSmall.png in Resources */ = {isa = PBXBuildFile; fileRef = 273F213914ADCBF80021BE6D /* JobPassUnknownSmall.png */; }; + 273F216114ADCBF80021BE6D /* JobSmall.png in Resources */ = {isa = PBXBuildFile; fileRef = 273F213A14ADCBF80021BE6D /* JobSmall.png */; }; + 273F216714ADCBF80021BE6D /* Reveal.png in Resources */ = {isa = PBXBuildFile; fileRef = 273F214014ADCBF80021BE6D /* Reveal.png */; }; + 273F216814ADCBF80021BE6D /* RevealHighlight.png in Resources */ = {isa = PBXBuildFile; fileRef = 273F214114ADCBF80021BE6D /* RevealHighlight.png */; }; + 273F216914ADCBF80021BE6D /* RevealHighlightPressed.png in Resources */ = {isa = PBXBuildFile; fileRef = 273F214214ADCBF80021BE6D /* RevealHighlightPressed.png */; }; + 273F216A14ADCBF80021BE6D /* RevealPressed.png in Resources */ = {isa = PBXBuildFile; fileRef = 273F214314ADCBF80021BE6D /* RevealPressed.png */; }; + 273F218A14ADDDA10021BE6D /* AdvancedView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 273F217A14ADDDA10021BE6D /* AdvancedView.xib */; }; + 273F218B14ADDDA10021BE6D /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 273F217C14ADDDA10021BE6D /* InfoPlist.strings */; }; + 273F218C14ADDDA10021BE6D /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 273F217E14ADDDA10021BE6D /* MainMenu.xib */; }; + 273F218D14ADDDA10021BE6D /* OutputPanel.xib in Resources */ = {isa = PBXBuildFile; fileRef = 273F218014ADDDA10021BE6D /* OutputPanel.xib */; }; + 273F218E14ADDDA10021BE6D /* PicturePreview.xib in Resources */ = {isa = PBXBuildFile; fileRef = 273F218214ADDDA10021BE6D /* PicturePreview.xib */; }; + 273F218F14ADDDA10021BE6D /* PictureSettings.xib in Resources */ = {isa = PBXBuildFile; fileRef = 273F218414ADDDA10021BE6D /* PictureSettings.xib */; }; + 273F219014ADDDA10021BE6D /* Preferences.xib in Resources */ = {isa = PBXBuildFile; fileRef = 273F218614ADDDA10021BE6D /* Preferences.xib */; }; + 273F219114ADDDA10021BE6D /* Queue.xib in Resources */ = {isa = PBXBuildFile; fileRef = 273F218814ADDDA10021BE6D /* Queue.xib */; }; + 273F21C114ADE7A20021BE6D /* Growl.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 273F20BF14ADC1250021BE6D /* Growl.framework */; }; + 273F21C214ADE7BC0021BE6D /* Sparkle.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 273F20C014ADC1250021BE6D /* Sparkle.framework */; }; + 27D6C72514B1019100B785E4 /* libhb.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 27D6C72414B1019100B785E4 /* libhb.a */; }; + 27D6C72614B1019100B785E4 /* libhb.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 27D6C72414B1019100B785E4 /* libhb.a */; }; + 27D6C74114B102DA00B785E4 /* liba52.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 27D6C72714B102DA00B785E4 /* liba52.a */; }; + 27D6C74214B102DA00B785E4 /* liba52.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 27D6C72714B102DA00B785E4 /* liba52.a */; }; + 27D6C74314B102DA00B785E4 /* libass.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 27D6C72814B102DA00B785E4 /* libass.a */; }; + 27D6C74414B102DA00B785E4 /* libass.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 27D6C72814B102DA00B785E4 /* libass.a */; }; + 27D6C74514B102DA00B785E4 /* libavcodec.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 27D6C72914B102DA00B785E4 /* libavcodec.a */; }; + 27D6C74614B102DA00B785E4 /* libavcodec.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 27D6C72914B102DA00B785E4 /* libavcodec.a */; }; + 27D6C74714B102DA00B785E4 /* libavformat.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 27D6C72A14B102DA00B785E4 /* libavformat.a */; }; + 27D6C74814B102DA00B785E4 /* libavformat.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 27D6C72A14B102DA00B785E4 /* libavformat.a */; }; + 27D6C74914B102DA00B785E4 /* libavutil.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 27D6C72B14B102DA00B785E4 /* libavutil.a */; }; + 27D6C74A14B102DA00B785E4 /* libavutil.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 27D6C72B14B102DA00B785E4 /* libavutil.a */; }; + 27D6C74B14B102DA00B785E4 /* libbluray.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 27D6C72C14B102DA00B785E4 /* libbluray.a */; }; + 27D6C74C14B102DA00B785E4 /* libbluray.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 27D6C72C14B102DA00B785E4 /* libbluray.a */; }; + 27D6C74F14B102DA00B785E4 /* libdvdnav.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 27D6C72E14B102DA00B785E4 /* libdvdnav.a */; }; + 27D6C75014B102DA00B785E4 /* libdvdnav.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 27D6C72E14B102DA00B785E4 /* libdvdnav.a */; }; + 27D6C75114B102DA00B785E4 /* libdvdread.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 27D6C72F14B102DA00B785E4 /* libdvdread.a */; }; + 27D6C75214B102DA00B785E4 /* libdvdread.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 27D6C72F14B102DA00B785E4 /* libdvdread.a */; }; + 27D6C75314B102DA00B785E4 /* libfaac.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 27D6C73014B102DA00B785E4 /* libfaac.a */; }; + 27D6C75414B102DA00B785E4 /* libfaac.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 27D6C73014B102DA00B785E4 /* libfaac.a */; }; + 27D6C75514B102DA00B785E4 /* libfontconfig.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 27D6C73114B102DA00B785E4 /* libfontconfig.a */; }; + 27D6C75614B102DA00B785E4 /* libfontconfig.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 27D6C73114B102DA00B785E4 /* libfontconfig.a */; }; + 27D6C75714B102DA00B785E4 /* libfreetype.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 27D6C73214B102DA00B785E4 /* libfreetype.a */; }; + 27D6C75814B102DA00B785E4 /* libfreetype.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 27D6C73214B102DA00B785E4 /* libfreetype.a */; }; + 27D6C75914B102DA00B785E4 /* libfribidi.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 27D6C73314B102DA00B785E4 /* libfribidi.a */; }; + 27D6C75A14B102DA00B785E4 /* libfribidi.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 27D6C73314B102DA00B785E4 /* libfribidi.a */; }; + 27D6C75B14B102DA00B785E4 /* libmkv.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 27D6C73414B102DA00B785E4 /* libmkv.a */; }; + 27D6C75C14B102DA00B785E4 /* libmkv.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 27D6C73414B102DA00B785E4 /* libmkv.a */; }; + 27D6C75E14B102DA00B785E4 /* libmp3lame.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 27D6C73614B102DA00B785E4 /* libmp3lame.a */; }; + 27D6C75F14B102DA00B785E4 /* libmp3lame.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 27D6C73614B102DA00B785E4 /* libmp3lame.a */; }; + 27D6C76014B102DA00B785E4 /* libmp4v2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 27D6C73714B102DA00B785E4 /* libmp4v2.a */; }; + 27D6C76114B102DA00B785E4 /* libmp4v2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 27D6C73714B102DA00B785E4 /* libmp4v2.a */; }; + 27D6C76214B102DA00B785E4 /* libmpeg2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 27D6C73814B102DA00B785E4 /* libmpeg2.a */; }; + 27D6C76314B102DA00B785E4 /* libmpeg2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 27D6C73814B102DA00B785E4 /* libmpeg2.a */; }; + 27D6C76414B102DA00B785E4 /* libogg.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 27D6C73914B102DA00B785E4 /* libogg.a */; }; + 27D6C76514B102DA00B785E4 /* libogg.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 27D6C73914B102DA00B785E4 /* libogg.a */; }; + 27D6C76614B102DA00B785E4 /* libsamplerate.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 27D6C73A14B102DA00B785E4 /* libsamplerate.a */; }; + 27D6C76714B102DA00B785E4 /* libsamplerate.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 27D6C73A14B102DA00B785E4 /* libsamplerate.a */; }; + 27D6C76814B102DA00B785E4 /* libswscale.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 27D6C73B14B102DA00B785E4 /* libswscale.a */; }; + 27D6C76914B102DA00B785E4 /* libswscale.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 27D6C73B14B102DA00B785E4 /* libswscale.a */; }; + 27D6C76A14B102DA00B785E4 /* libtheora.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 27D6C73C14B102DA00B785E4 /* libtheora.a */; }; + 27D6C76B14B102DA00B785E4 /* libtheora.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 27D6C73C14B102DA00B785E4 /* libtheora.a */; }; + 27D6C76C14B102DA00B785E4 /* libvorbis.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 27D6C73D14B102DA00B785E4 /* libvorbis.a */; }; + 27D6C76D14B102DA00B785E4 /* libvorbis.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 27D6C73D14B102DA00B785E4 /* libvorbis.a */; }; + 27D6C76E14B102DA00B785E4 /* libvorbisenc.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 27D6C73E14B102DA00B785E4 /* libvorbisenc.a */; }; + 27D6C76F14B102DA00B785E4 /* libvorbisenc.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 27D6C73E14B102DA00B785E4 /* libvorbisenc.a */; }; + 27D6C77014B102DA00B785E4 /* libx264.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 27D6C73F14B102DA00B785E4 /* libx264.a */; }; + 27D6C77114B102DA00B785E4 /* libx264.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 27D6C73F14B102DA00B785E4 /* libx264.a */; }; + 27D6C77214B102DA00B785E4 /* libxml2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 27D6C74014B102DA00B785E4 /* libxml2.a */; }; + 27D6C77314B102DA00B785E4 /* libxml2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 27D6C74014B102DA00B785E4 /* libxml2.a */; }; + 3490BCB41614CF8D002A5AD7 /* HandBrake.icns in Resources */ = {isa = PBXBuildFile; fileRef = 3490BCB31614CF8D002A5AD7 /* HandBrake.icns */; }; + 46AB433515F98A2B009C0961 /* DockTextField.m in Sources */ = {isa = PBXBuildFile; fileRef = 46AB433415F98A2B009C0961 /* DockTextField.m */; }; + A9E1467B16BC2ABD00C307BC /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A9E1467A16BC2ABD00C307BC /* QuartzCore.framework */; }; + A9E1468016BC2AD800C307BC /* next-p.pdf in Resources */ = {isa = PBXBuildFile; fileRef = A9E1467C16BC2AD800C307BC /* next-p.pdf */; }; + A9E1468116BC2AD800C307BC /* pause-p.pdf in Resources */ = {isa = PBXBuildFile; fileRef = A9E1467D16BC2AD800C307BC /* pause-p.pdf */; }; + A9E1468216BC2AD800C307BC /* play-p.pdf in Resources */ = {isa = PBXBuildFile; fileRef = A9E1467E16BC2AD800C307BC /* play-p.pdf */; }; + A9E1468316BC2AD800C307BC /* prev-p.pdf in Resources */ = {isa = PBXBuildFile; fileRef = A9E1467F16BC2AD800C307BC /* prev-p.pdf */; }; + D2BCB10916F5152C0084604C /* activity.png in Resources */ = {isa = PBXBuildFile; fileRef = D2BCB0F616F515230084604C /* activity.png */; }; + D2BCB10A16F5152C0084604C /* activity@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = D2BCB0F716F515230084604C /* activity@2x.png */; }; + D2BCB10B16F5152C0084604C /* addqueue.png in Resources */ = {isa = PBXBuildFile; fileRef = D2BCB0F816F515240084604C /* addqueue.png */; }; + D2BCB10C16F5152C0084604C /* addqueue@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = D2BCB0F916F515240084604C /* addqueue@2x.png */; }; + D2BCB10D16F5152C0084604C /* advanced.png in Resources */ = {isa = PBXBuildFile; fileRef = D2BCB0FA16F515250084604C /* advanced.png */; }; + D2BCB10E16F5152C0084604C /* advanced@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = D2BCB0FB16F515250084604C /* advanced@2x.png */; }; + D2BCB10F16F5152C0084604C /* audio.png in Resources */ = {isa = PBXBuildFile; fileRef = D2BCB0FC16F515260084604C /* audio.png */; }; + D2BCB11016F5152C0084604C /* audio@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = D2BCB0FD16F515260084604C /* audio@2x.png */; }; + D2BCB11116F5152C0084604C /* encode.png in Resources */ = {isa = PBXBuildFile; fileRef = D2BCB0FE16F515270084604C /* encode.png */; }; + D2BCB11216F5152C0084604C /* encode@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = D2BCB0FF16F515270084604C /* encode@2x.png */; }; + D2BCB11316F5152C0084604C /* pauseencode.png in Resources */ = {isa = PBXBuildFile; fileRef = D2BCB10016F515280084604C /* pauseencode.png */; }; + D2BCB11416F5152C0084604C /* pauseencode@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = D2BCB10116F515280084604C /* pauseencode@2x.png */; }; + D2BCB11516F5152C0084604C /* picturesettings.png in Resources */ = {isa = PBXBuildFile; fileRef = D2BCB10216F515290084604C /* picturesettings.png */; }; + D2BCB11616F5152C0084604C /* picturesettings@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = D2BCB10316F515290084604C /* picturesettings@2x.png */; }; + D2BCB11716F5152C0084604C /* presets.png in Resources */ = {isa = PBXBuildFile; fileRef = D2BCB10416F5152A0084604C /* presets.png */; }; + D2BCB11816F5152C0084604C /* presets@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = D2BCB10516F5152A0084604C /* presets@2x.png */; }; + D2BCB11916F5152C0084604C /* preview.png in Resources */ = {isa = PBXBuildFile; fileRef = D2BCB10616F5152B0084604C /* preview.png */; }; + D2BCB11A16F5152C0084604C /* preview@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = D2BCB10716F5152B0084604C /* preview@2x.png */; }; + D2BCB11B16F5152C0084604C /* settings@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = D2BCB10816F5152C0084604C /* settings@2x.png */; }; + D2BCB12316F5154E0084604C /* settings.png in Resources */ = {isa = PBXBuildFile; fileRef = D2BCB11C16F5154A0084604C /* settings.png */; }; + D2BCB12416F5154E0084604C /* showqueue.png in Resources */ = {isa = PBXBuildFile; fileRef = D2BCB11D16F5154B0084604C /* showqueue.png */; }; + D2BCB12516F5154E0084604C /* showqueue@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = D2BCB11E16F5154B0084604C /* showqueue@2x.png */; }; + D2BCB12616F5154E0084604C /* source.png in Resources */ = {isa = PBXBuildFile; fileRef = D2BCB11F16F5154C0084604C /* source.png */; }; + D2BCB12716F5154E0084604C /* source@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = D2BCB12016F5154C0084604C /* source@2x.png */; }; + D2BCB12816F5154E0084604C /* stopencode.png in Resources */ = {isa = PBXBuildFile; fileRef = D2BCB12116F5154D0084604C /* stopencode.png */; }; + D2BCB12916F5154E0084604C /* stopencode@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = D2BCB12216F5154D0084604C /* stopencode@2x.png */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 273F217614ADD2580021BE6D /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 273F1FE014AD9DA40021BE6D /* Project object */; + proxyType = 1; + remoteGlobalIDString = 273F216E14ADD2170021BE6D; + remoteInfo = external; + }; + 2781697014B02B1B00A28B61 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 273F1FE014AD9DA40021BE6D /* Project object */; + proxyType = 1; + remoteGlobalIDString = 273F216E14ADD2170021BE6D; + remoteInfo = external; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXCopyFilesBuildPhase section */ + 273F1FFD14ADAE950021BE6D /* CopyFiles */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = /usr/share/man/man1/; + dstSubfolderSpec = 0; + files = ( + ); + runOnlyForDeploymentPostprocessing = 1; + }; + 273F20CA14ADC86C0021BE6D /* CopyFiles */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + 273F20CB14ADC89A0021BE6D /* Growl.framework in CopyFiles */, + 273F20CC14ADC8A10021BE6D /* Sparkle.framework in CopyFiles */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + 226268DF1572CC7300477B4E /* libavresample.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libavresample.a; path = external/contrib/lib/libavresample.a; sourceTree = BUILT_PRODUCTS_DIR; }; + 271BA4C014B119F800BC1D2C /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist; name = Info.plist; path = external/macosx/Info.plist; sourceTree = BUILT_PRODUCTS_DIR; }; + 273F1FFF14ADAE950021BE6D /* HandBrakeCLI */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = HandBrakeCLI; sourceTree = BUILT_PRODUCTS_DIR; }; + 273F202214ADB8650021BE6D /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = IOKit.framework; path = System/Library/Frameworks/IOKit.framework; sourceTree = SDKROOT; }; + 273F202514ADB8A40021BE6D /* libz.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libz.dylib; path = usr/lib/libz.dylib; sourceTree = SDKROOT; }; + 273F202714ADB8BE0021BE6D /* libbz2.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libbz2.dylib; path = usr/lib/libbz2.dylib; sourceTree = SDKROOT; }; + 273F202914ADB8D60021BE6D /* libiconv.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libiconv.dylib; path = usr/lib/libiconv.dylib; sourceTree = SDKROOT; }; + 273F202F14ADB9790021BE6D /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = System/Library/Frameworks/AudioToolbox.framework; sourceTree = SDKROOT; }; + 273F203214ADB9F00021BE6D /* CoreServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreServices.framework; path = System/Library/Frameworks/CoreServices.framework; sourceTree = SDKROOT; }; + 273F203914ADBC210021BE6D /* HandBrake.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = HandBrake.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 273F203B14ADBC210021BE6D /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = System/Library/Frameworks/Cocoa.framework; sourceTree = SDKROOT; }; + 273F203E14ADBC210021BE6D /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = System/Library/Frameworks/AppKit.framework; sourceTree = SDKROOT; }; + 273F203F14ADBC210021BE6D /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = System/Library/Frameworks/CoreData.framework; sourceTree = SDKROOT; }; + 273F204014ADBC210021BE6D /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; + 273F208514ADBE3B0021BE6D /* fakexcode.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = fakexcode.cpp; sourceTree = ""; }; + 273F208614ADBE3B0021BE6D /* parsecsv.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = parsecsv.c; sourceTree = ""; }; + 273F208714ADBE3B0021BE6D /* parsecsv.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = parsecsv.h; sourceTree = ""; }; + 273F208814ADBE3B0021BE6D /* test.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = test.c; sourceTree = ""; }; + 273F208C14ADBE670021BE6D /* ChapterTitles.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ChapterTitles.h; sourceTree = ""; }; + 273F208D14ADBE670021BE6D /* ChapterTitles.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ChapterTitles.m; sourceTree = ""; }; + 273F208E14ADBE670021BE6D /* Controller.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Controller.h; sourceTree = ""; }; + 273F208F14ADBE670021BE6D /* Controller.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Controller.m; sourceTree = ""; }; + 273F209014ADBE670021BE6D /* HBAdvancedController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HBAdvancedController.m; sourceTree = ""; }; + 273F209114ADBE670021BE6D /* HBAudio.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HBAudio.h; sourceTree = ""; }; + 273F209214ADBE670021BE6D /* HBAudio.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HBAudio.m; sourceTree = ""; }; + 273F209314ADBE670021BE6D /* HBAudioController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HBAudioController.h; sourceTree = ""; }; + 273F209414ADBE670021BE6D /* HBAudioController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HBAudioController.m; sourceTree = ""; }; + 273F209714ADBE670021BE6D /* HBDVDDetector.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HBDVDDetector.h; sourceTree = ""; }; + 273F209814ADBE670021BE6D /* HBDVDDetector.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HBDVDDetector.m; sourceTree = ""; }; + 273F209914ADBE670021BE6D /* HBImageAndTextCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HBImageAndTextCell.h; sourceTree = ""; }; + 273F209A14ADBE670021BE6D /* HBImageAndTextCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HBImageAndTextCell.m; sourceTree = ""; }; + 273F209B14ADBE670021BE6D /* HBOutputPanelController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HBOutputPanelController.h; sourceTree = ""; }; + 273F209C14ADBE670021BE6D /* HBOutputPanelController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HBOutputPanelController.m; sourceTree = ""; }; + 273F209D14ADBE670021BE6D /* HBOutputRedirect.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HBOutputRedirect.h; sourceTree = ""; }; + 273F209E14ADBE670021BE6D /* HBOutputRedirect.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HBOutputRedirect.m; sourceTree = ""; }; + 273F209F14ADBE670021BE6D /* HBPreferencesController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HBPreferencesController.h; sourceTree = ""; }; + 273F20A014ADBE670021BE6D /* HBPreferencesController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HBPreferencesController.m; sourceTree = ""; }; + 273F20A114ADBE670021BE6D /* HBPresets.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HBPresets.h; sourceTree = ""; }; + 273F20A214ADBE670021BE6D /* HBPresets.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HBPresets.m; sourceTree = ""; }; + 273F20A314ADBE670021BE6D /* HBPreviewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HBPreviewController.h; sourceTree = ""; }; + 273F20A414ADBE670021BE6D /* HBPreviewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HBPreviewController.m; sourceTree = ""; }; + 273F20A514ADBE670021BE6D /* HBQueueController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HBQueueController.h; sourceTree = ""; }; + 273F20A614ADBE670021BE6D /* HBQueueController.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = HBQueueController.mm; sourceTree = ""; }; + 273F20A714ADBE670021BE6D /* HBSubtitles.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HBSubtitles.h; sourceTree = ""; }; + 273F20A814ADBE670021BE6D /* HBSubtitles.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HBSubtitles.m; sourceTree = ""; }; + 273F20A914ADBE670021BE6D /* PictureController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PictureController.h; sourceTree = ""; }; + 273F20AA14ADBE670021BE6D /* PictureController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PictureController.m; sourceTree = ""; }; + 273F20BD14ADC09F0021BE6D /* main.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = main.mm; sourceTree = ""; }; + 273F20BF14ADC1250021BE6D /* Growl.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = Growl.framework; sourceTree = ""; }; + 273F20C014ADC1250021BE6D /* Sparkle.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = Sparkle.framework; sourceTree = ""; }; + 273F20C714ADC4FF0021BE6D /* QTKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QTKit.framework; path = System/Library/Frameworks/QTKit.framework; sourceTree = SDKROOT; }; + 273F212514ADCBF70021BE6D /* Delete.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Delete.png; sourceTree = ""; }; + 273F212614ADCBF70021BE6D /* DeleteHighlight.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = DeleteHighlight.png; sourceTree = ""; }; + 273F212714ADCBF70021BE6D /* DeleteHighlightPressed.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = DeleteHighlightPressed.png; sourceTree = ""; }; + 273F212814ADCBF70021BE6D /* DeletePressed.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = DeletePressed.png; sourceTree = ""; }; + 273F212A14ADCBF80021BE6D /* EncodeCanceled.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = EncodeCanceled.png; sourceTree = ""; }; + 273F212B14ADCBF80021BE6D /* EncodeComplete.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = EncodeComplete.png; sourceTree = ""; }; + 273F212C14ADCBF80021BE6D /* EncodeWorking0.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = EncodeWorking0.png; sourceTree = ""; }; + 273F212D14ADCBF80021BE6D /* EncodeWorking1.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = EncodeWorking1.png; sourceTree = ""; }; + 273F212E14ADCBF80021BE6D /* EncodeWorking2.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = EncodeWorking2.png; sourceTree = ""; }; + 273F212F14ADCBF80021BE6D /* EncodeWorking3.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = EncodeWorking3.png; sourceTree = ""; }; + 273F213014ADCBF80021BE6D /* EncodeWorking4.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = EncodeWorking4.png; sourceTree = ""; }; + 273F213114ADCBF80021BE6D /* EncodeWorking5.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = EncodeWorking5.png; sourceTree = ""; }; + 273F213414ADCBF80021BE6D /* JobPassFirstSmall.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = JobPassFirstSmall.png; sourceTree = ""; }; + 273F213614ADCBF80021BE6D /* JobPassSecondSmall.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = JobPassSecondSmall.png; sourceTree = ""; }; + 273F213814ADCBF80021BE6D /* JobPassSubtitleSmall.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = JobPassSubtitleSmall.png; sourceTree = ""; }; + 273F213914ADCBF80021BE6D /* JobPassUnknownSmall.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = JobPassUnknownSmall.png; sourceTree = ""; }; + 273F213A14ADCBF80021BE6D /* JobSmall.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = JobSmall.png; sourceTree = ""; }; + 273F214014ADCBF80021BE6D /* Reveal.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Reveal.png; sourceTree = ""; }; + 273F214114ADCBF80021BE6D /* RevealHighlight.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = RevealHighlight.png; sourceTree = ""; }; + 273F214214ADCBF80021BE6D /* RevealHighlightPressed.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = RevealHighlightPressed.png; sourceTree = ""; }; + 273F214314ADCBF80021BE6D /* RevealPressed.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = RevealPressed.png; sourceTree = ""; }; + 273F217B14ADDDA10021BE6D /* English */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = English; path = AdvancedView.xib; sourceTree = ""; }; + 273F217D14ADDDA10021BE6D /* English */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = English; path = InfoPlist.strings; sourceTree = ""; }; + 273F217F14ADDDA10021BE6D /* English */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = English; path = MainMenu.xib; sourceTree = ""; }; + 273F218114ADDDA10021BE6D /* English */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = English; path = OutputPanel.xib; sourceTree = ""; }; + 273F218314ADDDA10021BE6D /* English */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = English; path = PicturePreview.xib; sourceTree = ""; }; + 273F218514ADDDA10021BE6D /* English */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = English; path = PictureSettings.xib; sourceTree = ""; }; + 273F218714ADDDA10021BE6D /* English */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = English; path = Preferences.xib; sourceTree = ""; }; + 273F218914ADDDA10021BE6D /* English */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = English; path = Queue.xib; sourceTree = ""; }; + 275916DA14B2AB27007211E9 /* native.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = native.xcconfig; sourceTree = ""; }; + 276941FA14B161B70027798C /* osx107.i386.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = osx107.i386.xcconfig; sourceTree = ""; }; + 277A3FD014AE84C500A835E4 /* osx106.i386.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = osx106.i386.xcconfig; sourceTree = ""; }; + 277A3FD114AE84C500A835E4 /* osx106.x86_64.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = osx106.x86_64.xcconfig; sourceTree = ""; }; + 277A3FD214AE84C500A835E4 /* osx107.x86_64.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = osx107.x86_64.xcconfig; sourceTree = ""; }; + 27D6C72414B1019100B785E4 /* libhb.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libhb.a; path = external/libhb/libhb.a; sourceTree = BUILT_PRODUCTS_DIR; }; + 27D6C72714B102DA00B785E4 /* liba52.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = liba52.a; path = external/contrib/lib/liba52.a; sourceTree = BUILT_PRODUCTS_DIR; }; + 27D6C72814B102DA00B785E4 /* libass.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libass.a; path = external/contrib/lib/libass.a; sourceTree = BUILT_PRODUCTS_DIR; }; + 27D6C72914B102DA00B785E4 /* libavcodec.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libavcodec.a; path = external/contrib/lib/libavcodec.a; sourceTree = BUILT_PRODUCTS_DIR; }; + 27D6C72A14B102DA00B785E4 /* libavformat.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libavformat.a; path = external/contrib/lib/libavformat.a; sourceTree = BUILT_PRODUCTS_DIR; }; + 27D6C72B14B102DA00B785E4 /* libavutil.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libavutil.a; path = external/contrib/lib/libavutil.a; sourceTree = BUILT_PRODUCTS_DIR; }; + 27D6C72C14B102DA00B785E4 /* libbluray.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libbluray.a; path = external/contrib/lib/libbluray.a; sourceTree = BUILT_PRODUCTS_DIR; }; + 27D6C72E14B102DA00B785E4 /* libdvdnav.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libdvdnav.a; path = external/contrib/lib/libdvdnav.a; sourceTree = BUILT_PRODUCTS_DIR; }; + 27D6C72F14B102DA00B785E4 /* libdvdread.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libdvdread.a; path = external/contrib/lib/libdvdread.a; sourceTree = BUILT_PRODUCTS_DIR; }; + 27D6C73014B102DA00B785E4 /* libfaac.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libfaac.a; path = external/contrib/lib/libfaac.a; sourceTree = BUILT_PRODUCTS_DIR; }; + 27D6C73114B102DA00B785E4 /* libfontconfig.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libfontconfig.a; path = external/contrib/lib/libfontconfig.a; sourceTree = BUILT_PRODUCTS_DIR; }; + 27D6C73214B102DA00B785E4 /* libfreetype.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libfreetype.a; path = external/contrib/lib/libfreetype.a; sourceTree = BUILT_PRODUCTS_DIR; }; + 27D6C73314B102DA00B785E4 /* libfribidi.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libfribidi.a; path = external/contrib/lib/libfribidi.a; sourceTree = BUILT_PRODUCTS_DIR; }; + 27D6C73414B102DA00B785E4 /* libmkv.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libmkv.a; path = external/contrib/lib/libmkv.a; sourceTree = BUILT_PRODUCTS_DIR; }; + 27D6C73614B102DA00B785E4 /* libmp3lame.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libmp3lame.a; path = external/contrib/lib/libmp3lame.a; sourceTree = BUILT_PRODUCTS_DIR; }; + 27D6C73714B102DA00B785E4 /* libmp4v2.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libmp4v2.a; path = external/contrib/lib/libmp4v2.a; sourceTree = BUILT_PRODUCTS_DIR; }; + 27D6C73814B102DA00B785E4 /* libmpeg2.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libmpeg2.a; path = external/contrib/lib/libmpeg2.a; sourceTree = BUILT_PRODUCTS_DIR; }; + 27D6C73914B102DA00B785E4 /* libogg.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libogg.a; path = external/contrib/lib/libogg.a; sourceTree = BUILT_PRODUCTS_DIR; }; + 27D6C73A14B102DA00B785E4 /* libsamplerate.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libsamplerate.a; path = external/contrib/lib/libsamplerate.a; sourceTree = BUILT_PRODUCTS_DIR; }; + 27D6C73B14B102DA00B785E4 /* libswscale.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libswscale.a; path = external/contrib/lib/libswscale.a; sourceTree = BUILT_PRODUCTS_DIR; }; + 27D6C73C14B102DA00B785E4 /* libtheora.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libtheora.a; path = external/contrib/lib/libtheora.a; sourceTree = BUILT_PRODUCTS_DIR; }; + 27D6C73D14B102DA00B785E4 /* libvorbis.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libvorbis.a; path = external/contrib/lib/libvorbis.a; sourceTree = BUILT_PRODUCTS_DIR; }; + 27D6C73E14B102DA00B785E4 /* libvorbisenc.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libvorbisenc.a; path = external/contrib/lib/libvorbisenc.a; sourceTree = BUILT_PRODUCTS_DIR; }; + 27D6C73F14B102DA00B785E4 /* libx264.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libx264.a; path = external/contrib/lib/libx264.a; sourceTree = BUILT_PRODUCTS_DIR; }; + 27D6C74014B102DA00B785E4 /* libxml2.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libxml2.a; path = external/contrib/lib/libxml2.a; sourceTree = BUILT_PRODUCTS_DIR; }; + 3490BCB31614CF8D002A5AD7 /* HandBrake.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; path = HandBrake.icns; sourceTree = ""; }; + 34FF2FC014EEC363004C2400 /* HBAdvancedController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HBAdvancedController.h; sourceTree = ""; }; + 46AB433315F98A2B009C0961 /* DockTextField.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DockTextField.h; sourceTree = ""; }; + 46AB433415F98A2B009C0961 /* DockTextField.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DockTextField.m; sourceTree = ""; }; + A9E1467A16BC2ABD00C307BC /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = /System/Library/Frameworks/QuartzCore.framework; sourceTree = ""; }; + A9E1467C16BC2AD800C307BC /* next-p.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; path = "next-p.pdf"; sourceTree = ""; }; + A9E1467D16BC2AD800C307BC /* pause-p.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; path = "pause-p.pdf"; sourceTree = ""; }; + A9E1467E16BC2AD800C307BC /* play-p.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; path = "play-p.pdf"; sourceTree = ""; }; + A9E1467F16BC2AD800C307BC /* prev-p.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; path = "prev-p.pdf"; sourceTree = ""; }; + D2BCB0F616F515230084604C /* activity.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = activity.png; sourceTree = ""; }; + D2BCB0F716F515230084604C /* activity@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "activity@2x.png"; sourceTree = ""; }; + D2BCB0F816F515240084604C /* addqueue.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = addqueue.png; sourceTree = ""; }; + D2BCB0F916F515240084604C /* addqueue@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "addqueue@2x.png"; sourceTree = ""; }; + D2BCB0FA16F515250084604C /* advanced.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = advanced.png; sourceTree = ""; }; + D2BCB0FB16F515250084604C /* advanced@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "advanced@2x.png"; sourceTree = ""; }; + D2BCB0FC16F515260084604C /* audio.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = audio.png; sourceTree = ""; }; + D2BCB0FD16F515260084604C /* audio@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "audio@2x.png"; sourceTree = ""; }; + D2BCB0FE16F515270084604C /* encode.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = encode.png; sourceTree = ""; }; + D2BCB0FF16F515270084604C /* encode@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "encode@2x.png"; sourceTree = ""; }; + D2BCB10016F515280084604C /* pauseencode.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = pauseencode.png; sourceTree = ""; }; + D2BCB10116F515280084604C /* pauseencode@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "pauseencode@2x.png"; sourceTree = ""; }; + D2BCB10216F515290084604C /* picturesettings.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = picturesettings.png; sourceTree = ""; }; + D2BCB10316F515290084604C /* picturesettings@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "picturesettings@2x.png"; sourceTree = ""; }; + D2BCB10416F5152A0084604C /* presets.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = presets.png; sourceTree = ""; }; + D2BCB10516F5152A0084604C /* presets@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "presets@2x.png"; sourceTree = ""; }; + D2BCB10616F5152B0084604C /* preview.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = preview.png; sourceTree = ""; }; + D2BCB10716F5152B0084604C /* preview@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "preview@2x.png"; sourceTree = ""; }; + D2BCB10816F5152C0084604C /* settings@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "settings@2x.png"; sourceTree = ""; }; + D2BCB11C16F5154A0084604C /* settings.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = settings.png; sourceTree = ""; }; + D2BCB11D16F5154B0084604C /* showqueue.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = showqueue.png; sourceTree = ""; }; + D2BCB11E16F5154B0084604C /* showqueue@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "showqueue@2x.png"; sourceTree = ""; }; + D2BCB11F16F5154C0084604C /* source.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = source.png; sourceTree = ""; }; + D2BCB12016F5154C0084604C /* source@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "source@2x.png"; sourceTree = ""; }; + D2BCB12116F5154D0084604C /* stopencode.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = stopencode.png; sourceTree = ""; }; + D2BCB12216F5154D0084604C /* stopencode@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "stopencode@2x.png"; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 273F1FFC14ADAE950021BE6D /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 273F203014ADB9790021BE6D /* AudioToolbox.framework in Frameworks */, + 273F202314ADB8650021BE6D /* IOKit.framework in Frameworks */, + 273F203314ADB9F00021BE6D /* CoreServices.framework in Frameworks */, + 273F202A14ADB8D60021BE6D /* libiconv.dylib in Frameworks */, + 273F202814ADB8BE0021BE6D /* libbz2.dylib in Frameworks */, + 273F202614ADB8A40021BE6D /* libz.dylib in Frameworks */, + 27D6C72614B1019100B785E4 /* libhb.a in Frameworks */, + 27D6C74214B102DA00B785E4 /* liba52.a in Frameworks */, + 27D6C74414B102DA00B785E4 /* libass.a in Frameworks */, + 27D6C74614B102DA00B785E4 /* libavcodec.a in Frameworks */, + 27D6C74814B102DA00B785E4 /* libavformat.a in Frameworks */, + 226268E11572CC7300477B4E /* libavresample.a in Frameworks */, + 27D6C74A14B102DA00B785E4 /* libavutil.a in Frameworks */, + 27D6C74C14B102DA00B785E4 /* libbluray.a in Frameworks */, + 27D6C75014B102DA00B785E4 /* libdvdnav.a in Frameworks */, + 27D6C75214B102DA00B785E4 /* libdvdread.a in Frameworks */, + 27D6C75414B102DA00B785E4 /* libfaac.a in Frameworks */, + 27D6C75614B102DA00B785E4 /* libfontconfig.a in Frameworks */, + 27D6C75814B102DA00B785E4 /* libfreetype.a in Frameworks */, + 27D6C75A14B102DA00B785E4 /* libfribidi.a in Frameworks */, + 27D6C75C14B102DA00B785E4 /* libmkv.a in Frameworks */, + 27D6C75F14B102DA00B785E4 /* libmp3lame.a in Frameworks */, + 27D6C76114B102DA00B785E4 /* libmp4v2.a in Frameworks */, + 27D6C76314B102DA00B785E4 /* libmpeg2.a in Frameworks */, + 27D6C76514B102DA00B785E4 /* libogg.a in Frameworks */, + 27D6C76714B102DA00B785E4 /* libsamplerate.a in Frameworks */, + 27D6C76914B102DA00B785E4 /* libswscale.a in Frameworks */, + 27D6C76B14B102DA00B785E4 /* libtheora.a in Frameworks */, + 27D6C76D14B102DA00B785E4 /* libvorbis.a in Frameworks */, + 27D6C76F14B102DA00B785E4 /* libvorbisenc.a in Frameworks */, + 27D6C77114B102DA00B785E4 /* libx264.a in Frameworks */, + 27D6C77314B102DA00B785E4 /* libxml2.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 273F203614ADBC200021BE6D /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + A9E1467B16BC2ABD00C307BC /* QuartzCore.framework in Frameworks */, + 273F21C114ADE7A20021BE6D /* Growl.framework in Frameworks */, + 273F21C214ADE7BC0021BE6D /* Sparkle.framework in Frameworks */, + 273F20C914ADC5150021BE6D /* AudioToolbox.framework in Frameworks */, + 273F20C814ADC4FF0021BE6D /* QTKit.framework in Frameworks */, + 273F20C614ADC4F50021BE6D /* IOKit.framework in Frameworks */, + 273F203C14ADBC210021BE6D /* Cocoa.framework in Frameworks */, + 273F20C314ADC4AE0021BE6D /* libiconv.dylib in Frameworks */, + 273F20C414ADC4B60021BE6D /* libbz2.dylib in Frameworks */, + 273F20C514ADC4BD0021BE6D /* libz.dylib in Frameworks */, + 27D6C72514B1019100B785E4 /* libhb.a in Frameworks */, + 27D6C74114B102DA00B785E4 /* liba52.a in Frameworks */, + 27D6C74314B102DA00B785E4 /* libass.a in Frameworks */, + 27D6C74514B102DA00B785E4 /* libavcodec.a in Frameworks */, + 27D6C74714B102DA00B785E4 /* libavformat.a in Frameworks */, + 226268E01572CC7300477B4E /* libavresample.a in Frameworks */, + 27D6C74914B102DA00B785E4 /* libavutil.a in Frameworks */, + 27D6C74B14B102DA00B785E4 /* libbluray.a in Frameworks */, + 27D6C74F14B102DA00B785E4 /* libdvdnav.a in Frameworks */, + 27D6C75114B102DA00B785E4 /* libdvdread.a in Frameworks */, + 27D6C75314B102DA00B785E4 /* libfaac.a in Frameworks */, + 27D6C75514B102DA00B785E4 /* libfontconfig.a in Frameworks */, + 27D6C75714B102DA00B785E4 /* libfreetype.a in Frameworks */, + 27D6C75914B102DA00B785E4 /* libfribidi.a in Frameworks */, + 27D6C75B14B102DA00B785E4 /* libmkv.a in Frameworks */, + 27D6C75E14B102DA00B785E4 /* libmp3lame.a in Frameworks */, + 27D6C76014B102DA00B785E4 /* libmp4v2.a in Frameworks */, + 27D6C76214B102DA00B785E4 /* libmpeg2.a in Frameworks */, + 27D6C76414B102DA00B785E4 /* libogg.a in Frameworks */, + 27D6C76614B102DA00B785E4 /* libsamplerate.a in Frameworks */, + 27D6C76814B102DA00B785E4 /* libswscale.a in Frameworks */, + 27D6C76A14B102DA00B785E4 /* libtheora.a in Frameworks */, + 27D6C76C14B102DA00B785E4 /* libvorbis.a in Frameworks */, + 27D6C76E14B102DA00B785E4 /* libvorbisenc.a in Frameworks */, + 27D6C77014B102DA00B785E4 /* libx264.a in Frameworks */, + 27D6C77214B102DA00B785E4 /* libxml2.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 271BA4C714B1236D00BC1D2C /* Static Libraries */ = { + isa = PBXGroup; + children = ( + 27D6C72414B1019100B785E4 /* libhb.a */, + 27D6C72714B102DA00B785E4 /* liba52.a */, + 27D6C72814B102DA00B785E4 /* libass.a */, + 27D6C72914B102DA00B785E4 /* libavcodec.a */, + 27D6C72A14B102DA00B785E4 /* libavformat.a */, + 226268DF1572CC7300477B4E /* libavresample.a */, + 27D6C72B14B102DA00B785E4 /* libavutil.a */, + 27D6C72C14B102DA00B785E4 /* libbluray.a */, + 27D6C72E14B102DA00B785E4 /* libdvdnav.a */, + 27D6C72F14B102DA00B785E4 /* libdvdread.a */, + 27D6C73014B102DA00B785E4 /* libfaac.a */, + 27D6C73114B102DA00B785E4 /* libfontconfig.a */, + 27D6C73214B102DA00B785E4 /* libfreetype.a */, + 27D6C73314B102DA00B785E4 /* libfribidi.a */, + 27D6C73414B102DA00B785E4 /* libmkv.a */, + 27D6C73614B102DA00B785E4 /* libmp3lame.a */, + 27D6C73714B102DA00B785E4 /* libmp4v2.a */, + 27D6C73814B102DA00B785E4 /* libmpeg2.a */, + 27D6C73914B102DA00B785E4 /* libogg.a */, + 27D6C73A14B102DA00B785E4 /* libsamplerate.a */, + 27D6C73B14B102DA00B785E4 /* libswscale.a */, + 27D6C73C14B102DA00B785E4 /* libtheora.a */, + 27D6C73D14B102DA00B785E4 /* libvorbis.a */, + 27D6C73E14B102DA00B785E4 /* libvorbisenc.a */, + 27D6C73F14B102DA00B785E4 /* libx264.a */, + 27D6C74014B102DA00B785E4 /* libxml2.a */, + ); + name = "Static Libraries"; + sourceTree = ""; + }; + 271BA4C914B1238E00BC1D2C /* Support */ = { + isa = PBXGroup; + children = ( + 271BA4C014B119F800BC1D2C /* Info.plist */, + ); + name = Support; + sourceTree = ""; + }; + 273F1FDE14AD9DA40021BE6D = { + isa = PBXGroup; + children = ( + 273F204114ADBC210021BE6D /* HandBrake */, + 273F200214ADAE950021BE6D /* HandBrakeCLI */, + 273F200014ADAE950021BE6D /* Products */, + 27D6C72314B1013400B785E4 /* Products (external) */, + 273F20CD14ADC8E60021BE6D /* Resources */, + 273F219214ADDE440021BE6D /* Resources (unused) */, + 273F203414ADBAC30021BE6D /* Frameworks */, + 273F20CE14ADC9210021BE6D /* Frameworks (bundled) */, + 277A3FCF14AE848400A835E4 /* xcconfig */, + ); + sourceTree = ""; + }; + 273F200014ADAE950021BE6D /* Products */ = { + isa = PBXGroup; + children = ( + 273F1FFF14ADAE950021BE6D /* HandBrakeCLI */, + 273F203914ADBC210021BE6D /* HandBrake.app */, + ); + name = Products; + sourceTree = ""; + }; + 273F200214ADAE950021BE6D /* HandBrakeCLI */ = { + isa = PBXGroup; + children = ( + 273F208514ADBE3B0021BE6D /* fakexcode.cpp */, + 273F208614ADBE3B0021BE6D /* parsecsv.c */, + 273F208714ADBE3B0021BE6D /* parsecsv.h */, + 273F208814ADBE3B0021BE6D /* test.c */, + ); + name = HandBrakeCLI; + path = ../test; + sourceTree = ""; + }; + 273F203414ADBAC30021BE6D /* Frameworks */ = { + isa = PBXGroup; + children = ( + A9E1467A16BC2ABD00C307BC /* QuartzCore.framework */, + 273F20C714ADC4FF0021BE6D /* QTKit.framework */, + 273F202F14ADB9790021BE6D /* AudioToolbox.framework */, + 273F203B14ADBC210021BE6D /* Cocoa.framework */, + 273F203214ADB9F00021BE6D /* CoreServices.framework */, + 273F202214ADB8650021BE6D /* IOKit.framework */, + 273F203D14ADBC210021BE6D /* Other Frameworks */, + 273F202914ADB8D60021BE6D /* libiconv.dylib */, + 273F202714ADB8BE0021BE6D /* libbz2.dylib */, + 273F202514ADB8A40021BE6D /* libz.dylib */, + ); + name = Frameworks; + sourceTree = ""; + }; + 273F203D14ADBC210021BE6D /* Other Frameworks */ = { + isa = PBXGroup; + children = ( + 273F203E14ADBC210021BE6D /* AppKit.framework */, + 273F203F14ADBC210021BE6D /* CoreData.framework */, + 273F204014ADBC210021BE6D /* Foundation.framework */, + ); + name = "Other Frameworks"; + sourceTree = ""; + }; + 273F204114ADBC210021BE6D /* HandBrake */ = { + isa = PBXGroup; + children = ( + 273F208C14ADBE670021BE6D /* ChapterTitles.h */, + 273F208D14ADBE670021BE6D /* ChapterTitles.m */, + 273F208E14ADBE670021BE6D /* Controller.h */, + 273F208F14ADBE670021BE6D /* Controller.m */, + 46AB433315F98A2B009C0961 /* DockTextField.h */, + 46AB433415F98A2B009C0961 /* DockTextField.m */, + 34FF2FC014EEC363004C2400 /* HBAdvancedController.h */, + 273F209014ADBE670021BE6D /* HBAdvancedController.m */, + 273F209114ADBE670021BE6D /* HBAudio.h */, + 273F209214ADBE670021BE6D /* HBAudio.m */, + 273F209314ADBE670021BE6D /* HBAudioController.h */, + 273F209414ADBE670021BE6D /* HBAudioController.m */, + 273F209714ADBE670021BE6D /* HBDVDDetector.h */, + 273F209814ADBE670021BE6D /* HBDVDDetector.m */, + 273F209914ADBE670021BE6D /* HBImageAndTextCell.h */, + 273F209A14ADBE670021BE6D /* HBImageAndTextCell.m */, + 273F209B14ADBE670021BE6D /* HBOutputPanelController.h */, + 273F209C14ADBE670021BE6D /* HBOutputPanelController.m */, + 273F209D14ADBE670021BE6D /* HBOutputRedirect.h */, + 273F209E14ADBE670021BE6D /* HBOutputRedirect.m */, + 273F209F14ADBE670021BE6D /* HBPreferencesController.h */, + 273F20A014ADBE670021BE6D /* HBPreferencesController.m */, + 273F20A114ADBE670021BE6D /* HBPresets.h */, + 273F20A214ADBE670021BE6D /* HBPresets.m */, + 273F20A314ADBE670021BE6D /* HBPreviewController.h */, + 273F20A414ADBE670021BE6D /* HBPreviewController.m */, + 273F20A514ADBE670021BE6D /* HBQueueController.h */, + 273F20A614ADBE670021BE6D /* HBQueueController.mm */, + 273F20A714ADBE670021BE6D /* HBSubtitles.h */, + 273F20A814ADBE670021BE6D /* HBSubtitles.m */, + 273F20A914ADBE670021BE6D /* PictureController.h */, + 273F20AA14ADBE670021BE6D /* PictureController.m */, + 273F20BD14ADC09F0021BE6D /* main.mm */, + ); + name = HandBrake; + sourceTree = ""; + }; + 273F20CD14ADC8E60021BE6D /* Resources */ = { + isa = PBXGroup; + children = ( + 3490BCB31614CF8D002A5AD7 /* HandBrake.icns */, + 273F217914ADDDA10021BE6D /* English.lproj */, + 273F212014ADCBF70021BE6D /* icons */, + ); + name = Resources; + sourceTree = ""; + }; + 273F20CE14ADC9210021BE6D /* Frameworks (bundled) */ = { + isa = PBXGroup; + children = ( + 273F20BF14ADC1250021BE6D /* Growl.framework */, + 273F20C014ADC1250021BE6D /* Sparkle.framework */, + ); + name = "Frameworks (bundled)"; + sourceTree = ""; + }; + 273F212014ADCBF70021BE6D /* icons */ = { + isa = PBXGroup; + children = ( + D2BCB11C16F5154A0084604C /* settings.png */, + D2BCB11D16F5154B0084604C /* showqueue.png */, + D2BCB11E16F5154B0084604C /* showqueue@2x.png */, + D2BCB11F16F5154C0084604C /* source.png */, + D2BCB12016F5154C0084604C /* source@2x.png */, + D2BCB12116F5154D0084604C /* stopencode.png */, + D2BCB12216F5154D0084604C /* stopencode@2x.png */, + D2BCB0F616F515230084604C /* activity.png */, + D2BCB0F716F515230084604C /* activity@2x.png */, + D2BCB0F816F515240084604C /* addqueue.png */, + D2BCB0F916F515240084604C /* addqueue@2x.png */, + D2BCB0FA16F515250084604C /* advanced.png */, + D2BCB0FB16F515250084604C /* advanced@2x.png */, + D2BCB0FC16F515260084604C /* audio.png */, + D2BCB0FD16F515260084604C /* audio@2x.png */, + D2BCB0FE16F515270084604C /* encode.png */, + D2BCB0FF16F515270084604C /* encode@2x.png */, + D2BCB10016F515280084604C /* pauseencode.png */, + D2BCB10116F515280084604C /* pauseencode@2x.png */, + D2BCB10216F515290084604C /* picturesettings.png */, + D2BCB10316F515290084604C /* picturesettings@2x.png */, + D2BCB10416F5152A0084604C /* presets.png */, + D2BCB10516F5152A0084604C /* presets@2x.png */, + D2BCB10616F5152B0084604C /* preview.png */, + D2BCB10716F5152B0084604C /* preview@2x.png */, + D2BCB10816F5152C0084604C /* settings@2x.png */, + A9E1467C16BC2AD800C307BC /* next-p.pdf */, + A9E1467D16BC2AD800C307BC /* pause-p.pdf */, + A9E1467E16BC2AD800C307BC /* play-p.pdf */, + A9E1467F16BC2AD800C307BC /* prev-p.pdf */, + 273F212514ADCBF70021BE6D /* Delete.png */, + 273F212614ADCBF70021BE6D /* DeleteHighlight.png */, + 273F212714ADCBF70021BE6D /* DeleteHighlightPressed.png */, + 273F212814ADCBF70021BE6D /* DeletePressed.png */, + 273F212A14ADCBF80021BE6D /* EncodeCanceled.png */, + 273F212B14ADCBF80021BE6D /* EncodeComplete.png */, + 273F212C14ADCBF80021BE6D /* EncodeWorking0.png */, + 273F212D14ADCBF80021BE6D /* EncodeWorking1.png */, + 273F212E14ADCBF80021BE6D /* EncodeWorking2.png */, + 273F212F14ADCBF80021BE6D /* EncodeWorking3.png */, + 273F213014ADCBF80021BE6D /* EncodeWorking4.png */, + 273F213114ADCBF80021BE6D /* EncodeWorking5.png */, + 273F213414ADCBF80021BE6D /* JobPassFirstSmall.png */, + 273F213614ADCBF80021BE6D /* JobPassSecondSmall.png */, + 273F213814ADCBF80021BE6D /* JobPassSubtitleSmall.png */, + 273F213914ADCBF80021BE6D /* JobPassUnknownSmall.png */, + 273F213A14ADCBF80021BE6D /* JobSmall.png */, + 273F214014ADCBF80021BE6D /* Reveal.png */, + 273F214114ADCBF80021BE6D /* RevealHighlight.png */, + 273F214214ADCBF80021BE6D /* RevealHighlightPressed.png */, + 273F214314ADCBF80021BE6D /* RevealPressed.png */, + ); + path = icons; + sourceTree = ""; + }; + 273F217914ADDDA10021BE6D /* English.lproj */ = { + isa = PBXGroup; + children = ( + 273F217A14ADDDA10021BE6D /* AdvancedView.xib */, + 273F217C14ADDDA10021BE6D /* InfoPlist.strings */, + 273F217E14ADDDA10021BE6D /* MainMenu.xib */, + 273F218014ADDDA10021BE6D /* OutputPanel.xib */, + 273F218214ADDDA10021BE6D /* PicturePreview.xib */, + 273F218414ADDDA10021BE6D /* PictureSettings.xib */, + 273F218614ADDDA10021BE6D /* Preferences.xib */, + 273F218814ADDDA10021BE6D /* Queue.xib */, + ); + path = English.lproj; + sourceTree = ""; + }; + 273F219214ADDE440021BE6D /* Resources (unused) */ = { + isa = PBXGroup; + children = ( + 273F219314ADDE9A0021BE6D /* icons */, + ); + name = "Resources (unused)"; + sourceTree = ""; + }; + 273F219314ADDE9A0021BE6D /* icons */ = { + isa = PBXGroup; + children = ( + ); + path = icons; + sourceTree = ""; + }; + 277A3FCF14AE848400A835E4 /* xcconfig */ = { + isa = PBXGroup; + children = ( + 275916DA14B2AB27007211E9 /* native.xcconfig */, + 277A3FD014AE84C500A835E4 /* osx106.i386.xcconfig */, + 277A3FD114AE84C500A835E4 /* osx106.x86_64.xcconfig */, + 276941FA14B161B70027798C /* osx107.i386.xcconfig */, + 277A3FD214AE84C500A835E4 /* osx107.x86_64.xcconfig */, + ); + path = xcconfig; + sourceTree = ""; + }; + 27D6C72314B1013400B785E4 /* Products (external) */ = { + isa = PBXGroup; + children = ( + 271BA4C914B1238E00BC1D2C /* Support */, + 271BA4C714B1236D00BC1D2C /* Static Libraries */, + ); + name = "Products (external)"; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXLegacyTarget section */ + 273F216E14ADD2170021BE6D /* external */ = { + isa = PBXLegacyTarget; + buildArgumentsString = "\"$EXTERNAL_SRC/make/xcodemake\""; + buildConfigurationList = 273F217114ADD2170021BE6D /* Build configuration list for PBXLegacyTarget "external" */; + buildPhases = ( + ); + buildToolPath = /bin/bash; + buildWorkingDirectory = ""; + dependencies = ( + ); + name = external; + passBuildSettingsInEnvironment = 1; + productName = libhb; + }; +/* End PBXLegacyTarget section */ + +/* Begin PBXNativeTarget section */ + 273F1FFE14ADAE950021BE6D /* HandBrakeCLI */ = { + isa = PBXNativeTarget; + buildConfigurationList = 273F200714ADAE950021BE6D /* Build configuration list for PBXNativeTarget "HandBrakeCLI" */; + buildPhases = ( + 273F1FFB14ADAE950021BE6D /* Sources */, + 273F1FFC14ADAE950021BE6D /* Frameworks */, + 273F1FFD14ADAE950021BE6D /* CopyFiles */, + ); + buildRules = ( + ); + dependencies = ( + 273F217714ADD2580021BE6D /* PBXTargetDependency */, + ); + name = HandBrakeCLI; + productName = HandBrakeCLI; + productReference = 273F1FFF14ADAE950021BE6D /* HandBrakeCLI */; + productType = "com.apple.product-type.tool"; + }; + 273F203814ADBC200021BE6D /* HandBrake */ = { + isa = PBXNativeTarget; + buildConfigurationList = 273F205314ADBC210021BE6D /* Build configuration list for PBXNativeTarget "HandBrake" */; + buildPhases = ( + 273F203514ADBC200021BE6D /* Sources */, + 273F203614ADBC200021BE6D /* Frameworks */, + 273F203714ADBC200021BE6D /* Resources */, + 273F20CA14ADC86C0021BE6D /* CopyFiles */, + ); + buildRules = ( + ); + dependencies = ( + 2781697114B02B1B00A28B61 /* PBXTargetDependency */, + ); + name = HandBrake; + productName = HandBrake; + productReference = 273F203914ADBC210021BE6D /* HandBrake.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 273F1FE014AD9DA40021BE6D /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 0420; + }; + buildConfigurationList = 273F1FE314AD9DA40021BE6D /* Build configuration list for PBXProject "HandBrake" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 0; + knownRegions = ( + en, + English, + ); + mainGroup = 273F1FDE14AD9DA40021BE6D; + productRefGroup = 273F200014ADAE950021BE6D /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 273F203814ADBC200021BE6D /* HandBrake */, + 273F1FFE14ADAE950021BE6D /* HandBrakeCLI */, + 273F216E14ADD2170021BE6D /* external */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 273F203714ADBC200021BE6D /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 273F214C14ADCBF80021BE6D /* Delete.png in Resources */, + 273F214D14ADCBF80021BE6D /* DeleteHighlight.png in Resources */, + 273F214E14ADCBF80021BE6D /* DeleteHighlightPressed.png in Resources */, + 273F214F14ADCBF80021BE6D /* DeletePressed.png in Resources */, + 273F215114ADCBF80021BE6D /* EncodeCanceled.png in Resources */, + 273F215214ADCBF80021BE6D /* EncodeComplete.png in Resources */, + 273F215314ADCBF80021BE6D /* EncodeWorking0.png in Resources */, + 273F215414ADCBF80021BE6D /* EncodeWorking1.png in Resources */, + 273F215514ADCBF80021BE6D /* EncodeWorking2.png in Resources */, + 273F215614ADCBF80021BE6D /* EncodeWorking3.png in Resources */, + 273F215714ADCBF80021BE6D /* EncodeWorking4.png in Resources */, + 273F215814ADCBF80021BE6D /* EncodeWorking5.png in Resources */, + 273F215B14ADCBF80021BE6D /* JobPassFirstSmall.png in Resources */, + 273F215D14ADCBF80021BE6D /* JobPassSecondSmall.png in Resources */, + 273F215F14ADCBF80021BE6D /* JobPassSubtitleSmall.png in Resources */, + 273F216014ADCBF80021BE6D /* JobPassUnknownSmall.png in Resources */, + 273F216114ADCBF80021BE6D /* JobSmall.png in Resources */, + 273F216714ADCBF80021BE6D /* Reveal.png in Resources */, + 273F216814ADCBF80021BE6D /* RevealHighlight.png in Resources */, + 273F216914ADCBF80021BE6D /* RevealHighlightPressed.png in Resources */, + 273F216A14ADCBF80021BE6D /* RevealPressed.png in Resources */, + 273F218A14ADDDA10021BE6D /* AdvancedView.xib in Resources */, + 273F218B14ADDDA10021BE6D /* InfoPlist.strings in Resources */, + 273F218C14ADDDA10021BE6D /* MainMenu.xib in Resources */, + 273F218D14ADDDA10021BE6D /* OutputPanel.xib in Resources */, + 273F218E14ADDDA10021BE6D /* PicturePreview.xib in Resources */, + 273F218F14ADDDA10021BE6D /* PictureSettings.xib in Resources */, + 273F219014ADDDA10021BE6D /* Preferences.xib in Resources */, + 273F219114ADDDA10021BE6D /* Queue.xib in Resources */, + 3490BCB41614CF8D002A5AD7 /* HandBrake.icns in Resources */, + A9E1468016BC2AD800C307BC /* next-p.pdf in Resources */, + A9E1468116BC2AD800C307BC /* pause-p.pdf in Resources */, + A9E1468216BC2AD800C307BC /* play-p.pdf in Resources */, + A9E1468316BC2AD800C307BC /* prev-p.pdf in Resources */, + D2BCB10916F5152C0084604C /* activity.png in Resources */, + D2BCB10A16F5152C0084604C /* activity@2x.png in Resources */, + D2BCB10B16F5152C0084604C /* addqueue.png in Resources */, + D2BCB10C16F5152C0084604C /* addqueue@2x.png in Resources */, + D2BCB10D16F5152C0084604C /* advanced.png in Resources */, + D2BCB10E16F5152C0084604C /* advanced@2x.png in Resources */, + D2BCB10F16F5152C0084604C /* audio.png in Resources */, + D2BCB11016F5152C0084604C /* audio@2x.png in Resources */, + D2BCB11116F5152C0084604C /* encode.png in Resources */, + D2BCB11216F5152C0084604C /* encode@2x.png in Resources */, + D2BCB11316F5152C0084604C /* pauseencode.png in Resources */, + D2BCB11416F5152C0084604C /* pauseencode@2x.png in Resources */, + D2BCB11516F5152C0084604C /* picturesettings.png in Resources */, + D2BCB11616F5152C0084604C /* picturesettings@2x.png in Resources */, + D2BCB11716F5152C0084604C /* presets.png in Resources */, + D2BCB11816F5152C0084604C /* presets@2x.png in Resources */, + D2BCB11916F5152C0084604C /* preview.png in Resources */, + D2BCB11A16F5152C0084604C /* preview@2x.png in Resources */, + D2BCB11B16F5152C0084604C /* settings@2x.png in Resources */, + D2BCB12316F5154E0084604C /* settings.png in Resources */, + D2BCB12416F5154E0084604C /* showqueue.png in Resources */, + D2BCB12516F5154E0084604C /* showqueue@2x.png in Resources */, + D2BCB12616F5154E0084604C /* source.png in Resources */, + D2BCB12716F5154E0084604C /* source@2x.png in Resources */, + D2BCB12816F5154E0084604C /* stopencode.png in Resources */, + D2BCB12916F5154E0084604C /* stopencode@2x.png in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 273F1FFB14ADAE950021BE6D /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 273F208914ADBE3B0021BE6D /* fakexcode.cpp in Sources */, + 273F208A14ADBE3B0021BE6D /* parsecsv.c in Sources */, + 273F208B14ADBE3B0021BE6D /* test.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 273F203514ADBC200021BE6D /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 273F20AB14ADBE670021BE6D /* ChapterTitles.m in Sources */, + 273F20AC14ADBE670021BE6D /* Controller.m in Sources */, + 273F20AD14ADBE670021BE6D /* HBAdvancedController.m in Sources */, + 273F20AE14ADBE670021BE6D /* HBAudio.m in Sources */, + 273F20AF14ADBE670021BE6D /* HBAudioController.m in Sources */, + 273F20B114ADBE670021BE6D /* HBDVDDetector.m in Sources */, + 273F20B214ADBE670021BE6D /* HBImageAndTextCell.m in Sources */, + 273F20B314ADBE670021BE6D /* HBOutputPanelController.m in Sources */, + 273F20B414ADBE670021BE6D /* HBOutputRedirect.m in Sources */, + 273F20B514ADBE670021BE6D /* HBPreferencesController.m in Sources */, + 273F20B614ADBE670021BE6D /* HBPresets.m in Sources */, + 273F20B714ADBE670021BE6D /* HBPreviewController.m in Sources */, + 273F20B814ADBE670021BE6D /* HBQueueController.mm in Sources */, + 273F20B914ADBE670021BE6D /* HBSubtitles.m in Sources */, + 273F20BA14ADBE670021BE6D /* PictureController.m in Sources */, + 273F20BE14ADC09F0021BE6D /* main.mm in Sources */, + 46AB433515F98A2B009C0961 /* DockTextField.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + 273F217714ADD2580021BE6D /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 273F216E14ADD2170021BE6D /* external */; + targetProxy = 273F217614ADD2580021BE6D /* PBXContainerItemProxy */; + }; + 2781697114B02B1B00A28B61 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 273F216E14ADD2170021BE6D /* external */; + targetProxy = 2781697014B02B1B00A28B61 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin PBXVariantGroup section */ + 273F217A14ADDDA10021BE6D /* AdvancedView.xib */ = { + isa = PBXVariantGroup; + children = ( + 273F217B14ADDDA10021BE6D /* English */, + ); + name = AdvancedView.xib; + sourceTree = ""; + }; + 273F217C14ADDDA10021BE6D /* InfoPlist.strings */ = { + isa = PBXVariantGroup; + children = ( + 273F217D14ADDDA10021BE6D /* English */, + ); + name = InfoPlist.strings; + sourceTree = ""; + }; + 273F217E14ADDDA10021BE6D /* MainMenu.xib */ = { + isa = PBXVariantGroup; + children = ( + 273F217F14ADDDA10021BE6D /* English */, + ); + name = MainMenu.xib; + sourceTree = ""; + }; + 273F218014ADDDA10021BE6D /* OutputPanel.xib */ = { + isa = PBXVariantGroup; + children = ( + 273F218114ADDDA10021BE6D /* English */, + ); + name = OutputPanel.xib; + sourceTree = ""; + }; + 273F218214ADDDA10021BE6D /* PicturePreview.xib */ = { + isa = PBXVariantGroup; + children = ( + 273F218314ADDDA10021BE6D /* English */, + ); + name = PicturePreview.xib; + sourceTree = ""; + }; + 273F218414ADDDA10021BE6D /* PictureSettings.xib */ = { + isa = PBXVariantGroup; + children = ( + 273F218514ADDDA10021BE6D /* English */, + ); + name = PictureSettings.xib; + sourceTree = ""; + }; + 273F218614ADDDA10021BE6D /* Preferences.xib */ = { + isa = PBXVariantGroup; + children = ( + 273F218714ADDDA10021BE6D /* English */, + ); + name = Preferences.xib; + sourceTree = ""; + }; + 273F218814ADDDA10021BE6D /* Queue.xib */ = { + isa = PBXVariantGroup; + children = ( + 273F218914ADDDA10021BE6D /* English */, + ); + name = Queue.xib; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 273F1FE614AD9DA40021BE6D /* debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 275916DA14B2AB27007211E9 /* native.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + COPY_PHASE_STRIP = NO; + EXTERNAL_BUILD = "$(CONFIGURATION_BUILD_DIR)/external"; + EXTERNAL_DRIVER = xcode; + EXTERNAL_JOBS = auto; + EXTERNAL_SRC = ..; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_OBJC_EXCEPTIONS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_VERSION = com.apple.compilers.llvmgcc42; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + SHARED_PRECOMPS_DIR = "$(CONFIGURATION_TEMP_DIR)/PrecompiledHeaders"; + STRIP_INSTALLED_PRODUCT = NO; + }; + name = debug; + }; + 273F1FE714AD9DA40021BE6D /* release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 275916DA14B2AB27007211E9 /* native.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + COPY_PHASE_STRIP = YES; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + EXTERNAL_BUILD = "$(CONFIGURATION_BUILD_DIR)/external"; + EXTERNAL_DRIVER = xcode; + EXTERNAL_JOBS = auto; + EXTERNAL_SRC = ..; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_OBJC_EXCEPTIONS = YES; + GCC_VERSION = com.apple.compilers.llvmgcc42; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + SHARED_PRECOMPS_DIR = "$(CONFIGURATION_TEMP_DIR)/PrecompiledHeaders"; + STRIP_INSTALLED_PRODUCT = YES; + }; + name = release; + }; + 273F200814ADAE950021BE6D /* debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + HEADER_SEARCH_PATHS = ( + "\"$(EXTERNAL_BUILD)/libhb\"", + "\"$(EXTERNAL_BUILD)/contrib/include\"", + ); + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + "\"$(EXTERNAL_BUILD)/libhb\"", + "\"$(EXTERNAL_BUILD)/contrib/lib\"", + ); + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = debug; + }; + 273F200914ADAE950021BE6D /* release */ = { + isa = XCBuildConfiguration; + buildSettings = { + HEADER_SEARCH_PATHS = ( + "\"$(EXTERNAL_BUILD)/libhb\"", + "\"$(EXTERNAL_BUILD)/contrib/include\"", + ); + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + "\"$(EXTERNAL_BUILD)/libhb\"", + "\"$(EXTERNAL_BUILD)/contrib/lib\"", + ); + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = release; + }; + 273F205414ADBC210021BE6D /* debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "\"$(SRCROOT)\"", + ); + HEADER_SEARCH_PATHS = ( + "\"$(EXTERNAL_BUILD)/libhb\"", + "\"$(EXTERNAL_BUILD)/contrib/include\"", + ); + INFOPLIST_FILE = "$(EXTERNAL_BUILD)/macosx/Info.plist"; + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + "\"$(EXTERNAL_BUILD)/libhb\"", + "\"$(EXTERNAL_BUILD)/contrib/lib\"", + ); + PRODUCT_NAME = "$(TARGET_NAME)"; + WRAPPER_EXTENSION = app; + }; + name = debug; + }; + 273F205514ADBC210021BE6D /* release */ = { + isa = XCBuildConfiguration; + buildSettings = { + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "\"$(SRCROOT)\"", + ); + HEADER_SEARCH_PATHS = ( + "\"$(EXTERNAL_BUILD)/libhb\"", + "\"$(EXTERNAL_BUILD)/contrib/include\"", + ); + INFOPLIST_FILE = "$(EXTERNAL_BUILD)/macosx/Info.plist"; + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + "\"$(EXTERNAL_BUILD)/libhb\"", + "\"$(EXTERNAL_BUILD)/contrib/lib\"", + ); + PRODUCT_NAME = "$(TARGET_NAME)"; + WRAPPER_EXTENSION = app; + }; + name = release; + }; + 273F217214ADD2170021BE6D /* debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + PRODUCT_NAME = external; + }; + name = debug; + }; + 273F217314ADD2170021BE6D /* release */ = { + isa = XCBuildConfiguration; + buildSettings = { + PRODUCT_NAME = external; + }; + name = release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 273F1FE314AD9DA40021BE6D /* Build configuration list for PBXProject "HandBrake" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 273F1FE614AD9DA40021BE6D /* debug */, + 273F1FE714AD9DA40021BE6D /* release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = release; + }; + 273F200714ADAE950021BE6D /* Build configuration list for PBXNativeTarget "HandBrakeCLI" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 273F200814ADAE950021BE6D /* debug */, + 273F200914ADAE950021BE6D /* release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = release; + }; + 273F205314ADBC210021BE6D /* Build configuration list for PBXNativeTarget "HandBrake" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 273F205414ADBC210021BE6D /* debug */, + 273F205514ADBC210021BE6D /* release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = release; + }; + 273F217114ADD2170021BE6D /* Build configuration list for PBXLegacyTarget "external" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 273F217214ADD2170021BE6D /* debug */, + 273F217314ADD2170021BE6D /* release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 273F1FE014AD9DA40021BE6D /* Project object */; +} diff -Nru handbrake-0.9.9+dfsg/macosx/HandBrake.xcodeproj/project.xcworkspace/contents.xcworkspacedata handbrake-0.9.9+ppa1/macosx/HandBrake.xcodeproj/project.xcworkspace/contents.xcworkspacedata --- handbrake-0.9.9+dfsg/macosx/HandBrake.xcodeproj/project.xcworkspace/contents.xcworkspacedata 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/HandBrake.xcodeproj/project.xcworkspace/contents.xcworkspacedata 2012-01-04 09:41:11.000000000 +0000 @@ -0,0 +1,7 @@ + + + + + diff -Nru handbrake-0.9.9+dfsg/macosx/HandBrake.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings handbrake-0.9.9+ppa1/macosx/HandBrake.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings --- handbrake-0.9.9+dfsg/macosx/HandBrake.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/HandBrake.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings 2012-01-04 09:41:11.000000000 +0000 @@ -0,0 +1,8 @@ + + + + + IDEWorkspaceSharedSettings_AutocreateContextsIfNeeded + + + diff -Nru handbrake-0.9.9+dfsg/macosx/HandBrake.xcodeproj/xcshareddata/xcschemes/HandBrake [DEBUG].xcscheme handbrake-0.9.9+ppa1/macosx/HandBrake.xcodeproj/xcshareddata/xcschemes/HandBrake [DEBUG].xcscheme --- handbrake-0.9.9+dfsg/macosx/HandBrake.xcodeproj/xcshareddata/xcschemes/HandBrake [DEBUG].xcscheme 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/HandBrake.xcodeproj/xcshareddata/xcschemes/HandBrake [DEBUG].xcscheme 2012-01-04 09:41:11.000000000 +0000 @@ -0,0 +1,98 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff -Nru handbrake-0.9.9+dfsg/macosx/HandBrake.xcodeproj/xcshareddata/xcschemes/HandBrake [RELEASE].xcscheme handbrake-0.9.9+ppa1/macosx/HandBrake.xcodeproj/xcshareddata/xcschemes/HandBrake [RELEASE].xcscheme --- handbrake-0.9.9+dfsg/macosx/HandBrake.xcodeproj/xcshareddata/xcschemes/HandBrake [RELEASE].xcscheme 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/HandBrake.xcodeproj/xcshareddata/xcschemes/HandBrake [RELEASE].xcscheme 2012-01-04 09:41:11.000000000 +0000 @@ -0,0 +1,98 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff -Nru handbrake-0.9.9+dfsg/macosx/HBAdvancedController.h handbrake-0.9.9+ppa1/macosx/HBAdvancedController.h --- handbrake-0.9.9+dfsg/macosx/HBAdvancedController.h 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/HBAdvancedController.h 2012-02-20 15:22:44.000000000 +0000 @@ -0,0 +1,83 @@ +/* HBAdvancedController + + This file is part of the HandBrake source code. + Homepage: . + It may be used under the terms of the GNU General Public License. */ + +#import + +@interface HBAdvancedController : NSObject +{ + /* Advanced Tab for opts fX264optView*/ + NSBox * fOptionsBox; + + IBOutlet NSView * fX264optView; + IBOutlet NSView * fEmptyView; + IBOutlet NSTextField * fX264optViewTitleLabel; + IBOutlet NSTextField * fDisplayX264OptionsLabel; + IBOutlet NSTextField * fDisplayX264Options; + IBOutlet NSTextField * fDisplayLavcOptionsLabel; + IBOutlet NSTextField * fDisplayLavcOptions; + + IBOutlet NSTextField * fDisplayTheoraOptionsLabel; + + IBOutlet NSTextField * fX264optBframesLabel; + IBOutlet NSPopUpButton * fX264optBframesPopUp; + IBOutlet NSTextField * fX264optRefLabel; + IBOutlet NSPopUpButton * fX264optRefPopUp; + IBOutlet NSButton * fX264optWeightPSwitch; + IBOutlet NSTextField * fX264optWeightPLabel; + IBOutlet NSTextField * fX264optNodctdcmtLabel; + IBOutlet NSButton * fX264optNodctdcmtSwitch; + IBOutlet NSTextField * fX264optSubmeLabel; + IBOutlet NSPopUpButton * fX264optSubmePopUp; + IBOutlet NSTextField * fX264optTrellisLabel; + IBOutlet NSPopUpButton * fX264optTrellisPopUp; + IBOutlet NSTextField * fX264optMotionEstLabel; + IBOutlet NSPopUpButton * fX264optMotionEstPopUp; + IBOutlet NSTextField * fX264optMERangeLabel; + IBOutlet NSPopUpButton * fX264optMERangePopUp; + IBOutlet NSTextField * fX264optBPyramidLabel; + IBOutlet NSPopUpButton * fX264optBPyramidPopUp; + IBOutlet NSTextField * fX264optDirectPredLabel; + IBOutlet NSPopUpButton * fX264optDirectPredPopUp; + IBOutlet NSTextField * fX264optDeblockLabel; + IBOutlet NSPopUpButton * fX264optAlphaDeblockPopUp; + IBOutlet NSPopUpButton * fX264optBetaDeblockPopUp; + IBOutlet NSTextField * fX264optAnalyseLabel; + IBOutlet NSPopUpButton * fX264optAnalysePopUp; + IBOutlet NSTextField * fX264opt8x8dctLabel; + IBOutlet NSButton * fX264opt8x8dctSwitch; + IBOutlet NSTextField * fX264optCabacLabel; + IBOutlet NSButton * fX264optCabacSwitch; + IBOutlet NSSlider * fX264optAqSlider; + IBOutlet NSTextField * fX264optAqLabel; + IBOutlet NSSlider * fX264optPsyRDSlider; + IBOutlet NSTextField * fX264optPsyRDLabel; + IBOutlet NSSlider * fX264optPsyTrellisSlider; + IBOutlet NSTextField * fX264optPsyTrellisLabel; + IBOutlet NSPopUpButton * fX264optBAdaptPopUp; + IBOutlet NSTextField * fX264optBAdaptLabel; +} + +// x264 Advanced Panel Methods +- (void) setView: (NSBox *) box; +- (BOOL) loadMyNibFile; +- (NSString *) optionsString; +- (NSString *) optionsStringLavc; +- (void) setOptions: (NSString *)string; +- (void) setLavcOptions: (NSString *)string; +- (void) enableUI: (bool) b; +- (void) setHidden: (BOOL) hide; +- (void) setLavcOptsEnabled: (BOOL) lavc; +- (IBAction) X264AdvancedOptionsAnimate: (id) sender; +- (IBAction) X264AdvancedOptionsSet: (id) sender; +- (IBAction) X264AdvancedOptionsStandardizeOptString: (id) sender; +- (IBAction) X264AdvancedOptionsSetCurrentSettings: (id) sender; +- (NSString *) X264AdvancedOptionsStandardizeOptNames:(NSString *) cleanOptNameString; +- (NSString *) X264AdvancedOptionsOptIDToString: (id) sender; +- (NSString *) X264AdvancedOptionsWidgetToString: (NSString *) optName withID: (id) sender; +- (BOOL) X264AdvancedOptionsIsOpt: (NSString *) optNameToChange inString: (NSString *) currentOptString; +- (IBAction) X264AdvancedOptionsChanged: (id) sender; + +@end diff -Nru handbrake-0.9.9+dfsg/macosx/HBAdvancedController.m handbrake-0.9.9+ppa1/macosx/HBAdvancedController.m --- handbrake-0.9.9+dfsg/macosx/HBAdvancedController.m 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/HBAdvancedController.m 2012-02-20 15:22:44.000000000 +0000 @@ -0,0 +1,1376 @@ +/* HBAdvancedController + + This file is part of the HandBrake source code. + Homepage: . + It may be used under the terms of the GNU General Public License. */ + +#import "HBAdvancedController.h" + +@implementation HBAdvancedController + +- (id)init +{ + [super init]; + [self loadMyNibFile]; + + return self; +} + +- (void) setView: (NSBox *) box +{ + fOptionsBox = box; + [fOptionsBox setContentView:fX264optView]; +} + +- (BOOL) loadMyNibFile +{ + if(![NSBundle loadNibNamed:@"AdvancedView" owner:self]) + { + NSLog(@"Warning! Could not load myNib file.\n"); + return NO; + } + + return YES; +} + +- (NSString *) optionsString +{ + return [fDisplayX264Options stringValue]; +} + +- (NSString *) optionsStringLavc +{ + return [fDisplayLavcOptions stringValue]; +} + +- (void) setOptions: (NSString *)string +{ + [fDisplayX264Options setStringValue:string]; + [self X264AdvancedOptionsSet:nil]; +} + +- (void) setLavcOptions: (NSString *)string +{ + [fDisplayLavcOptions setStringValue:string]; +} + +- (void) setHidden: (BOOL) hide +{ + if(hide) + { + [fOptionsBox setContentView:fEmptyView]; + } + else + { + [fOptionsBox setContentView:fX264optView]; + } + return; +} + +- (void) setLavcOptsEnabled: (BOOL) lavc +{ + if(lavc) + { + [fDisplayLavcOptions setHidden:NO]; + [fDisplayLavcOptionsLabel setHidden:NO]; + [fDisplayTheoraOptionsLabel setHidden:YES]; + } + else + { + [fDisplayLavcOptions setHidden:YES]; + [fDisplayLavcOptionsLabel setHidden:YES]; + [fDisplayTheoraOptionsLabel setHidden:NO]; + } + return; +} + + - (void) enableUI: (bool) b +{ + unsigned i; + NSControl * controls[] = + { fX264optViewTitleLabel,fDisplayX264Options,fDisplayX264OptionsLabel,fX264optBframesLabel, + fX264optBframesPopUp,fX264optRefLabel,fX264optRefPopUp, + fX264optNodctdcmtLabel,fX264optNodctdcmtSwitch,fX264optSubmeLabel,fX264optSubmePopUp, + fX264optTrellisLabel,fX264optTrellisPopUp, fX264optWeightPLabel, fX264optWeightPSwitch, + fX264optMotionEstLabel,fX264optMotionEstPopUp,fX264optMERangeLabel,fX264optMERangePopUp, + fX264optBPyramidLabel,fX264optBPyramidPopUp, fX264optAqLabel, fX264optAqSlider, + fX264optDirectPredLabel,fX264optDirectPredPopUp,fX264optDeblockLabel,fX264optAnalyseLabel, + fX264optAnalysePopUp,fX264opt8x8dctLabel,fX264opt8x8dctSwitch,fX264optCabacLabel,fX264optCabacSwitch, + fX264optAlphaDeblockPopUp,fX264optBetaDeblockPopUp, fX264optPsyRDSlider, fX264optPsyRDLabel, fX264optPsyTrellisSlider, fX264optPsyTrellisLabel, fX264optBAdaptPopUp, fX264optBAdaptLabel }; + + for( i = 0; i < sizeof( controls ) / sizeof( NSControl * ); i++ ) + { + if( [[controls[i] className] isEqualToString: @"NSTextField"] ) + { + NSTextField * tf = (NSTextField *) controls[i]; + if( ![tf isBezeled] ) + { + [tf setTextColor: b ? [NSColor controlTextColor] : + [NSColor disabledControlTextColor]]; + continue; + } + } + [controls[i] setEnabled: b]; + + } + + [fX264optView setWantsLayer:YES]; +} + +- (void)dealloc +{ + [super dealloc]; +} + +/** + * Populates the option widgets + */ +- (IBAction) X264AdvancedOptionsSet: (id) sender +{ + /*Set opt widget values here*/ + + NSString * toolTip = @""; + + /*B-Frames fX264optBframesPopUp*/ + int i; + [fX264optBframesPopUp removeAllItems]; + [fX264optBframesPopUp addItemWithTitle:@"Default (3)"]; + for (i=0; i<17;i++) + { + [fX264optBframesPopUp addItemWithTitle:[NSString stringWithFormat:@"%d",i]]; + } + toolTip = + @"Sane values are ~2-5. This specifies the maximum number of sequential B-frames that the encoder can use. Large numbers generally won't help significantly unless Adaptive B-frames is set to Optimal. Cel-animated source material and B-pyramid also significantly increase the usefulness of larger values. Baseline profile, as required for iPods and similar devices, requires B-frames to be set to 0 (off)."; + [fX264optBframesPopUp setToolTip: toolTip]; + [fX264optBframesLabel setToolTip: toolTip]; + + /*Reference Frames fX264optRefPopUp*/ + [fX264optRefPopUp removeAllItems]; + [fX264optRefPopUp addItemWithTitle:@"Default (3)"]; + for (i=1; i<17;i++) + { + [fX264optRefPopUp addItemWithTitle:[NSString stringWithFormat:@"%d",i]]; + } + toolTip = + @"Sane values are ~1-6. The more you add, the better the compression, but the slower the encode. Cel animation tends to benefit from more reference frames a lot more than film content. Note that many hardware devices have limitations on the number of supported reference frames, so if you're encoding for a handheld or standalone player, don't touch this unless you're absolutely sure you know what you're doing!"; + [fX264optRefPopUp setToolTip: toolTip]; + [fX264optRefLabel setToolTip: toolTip]; + + /*Weight-P fX264optWeightPSwitch BOOLEAN*/ + [fX264optWeightPSwitch setState:1]; + toolTip = + @"Performs extra analysis to decide upon weighting parameters for each frame. This improves overall compression slightly and improves the quality of fades greatly. Baseline profile, as required for iPods and similar devices, requires weighted P-frame prediction to be disabled. Note that some devices and players, even those that support Main Profile, may have problems with Weighted P-frame prediction: the Apple TV is completely incompatible with it, for example."; + [fX264optWeightPSwitch setToolTip: toolTip]; + [fX264optWeightPLabel setToolTip: toolTip]; + + /*No Dict Decimate fX264optNodctdcmtSwitch BOOLEAN*/ + [fX264optNodctdcmtSwitch setState:0]; + toolTip = + @"x264 normally zeroes out nearly-empty data blocks to save bits to be better used for some other purpose in the video. However, this can sometimes have slight negative effects on retention of subtle grain and dither. Don't touch this unless you're having banding issues or other such cases where you are having trouble keeping fine noise."; + [fX264optNodctdcmtSwitch setToolTip: toolTip]; + [fX264optNodctdcmtLabel setToolTip: toolTip]; + + /*Sub Me fX264optSubmePopUp*/ + [fX264optSubmePopUp removeAllItems]; + [fX264optSubmePopUp addItemWithTitle:@"Default (7)"]; + [fX264optSubmePopUp addItemWithTitle:[NSString stringWithFormat:@"0: SAD, no subpel (super fast!)"]]; + [fX264optSubmePopUp addItemWithTitle:[NSString stringWithFormat:@"1: SAD, qpel"]]; + [fX264optSubmePopUp addItemWithTitle:[NSString stringWithFormat:@"2: SATD, qpel"]]; + [fX264optSubmePopUp addItemWithTitle:[NSString stringWithFormat:@"3: SATD, multi-qpel"]]; + [fX264optSubmePopUp addItemWithTitle:[NSString stringWithFormat:@"4: SATD, qpel on all"]]; + [fX264optSubmePopUp addItemWithTitle:[NSString stringWithFormat:@"5: SATD, multi-qpel on all"]]; + [fX264optSubmePopUp addItemWithTitle:[NSString stringWithFormat:@"6: RD in I/P-frames"]]; + [fX264optSubmePopUp addItemWithTitle:[NSString stringWithFormat:@"7: RD in all frames"]]; + [fX264optSubmePopUp addItemWithTitle:[NSString stringWithFormat:@"8: RD refine in I/P-frames"]]; + [fX264optSubmePopUp addItemWithTitle:[NSString stringWithFormat:@"9: RD refine in all frames"]]; + [fX264optSubmePopUp addItemWithTitle:[NSString stringWithFormat:@"10: QPRD in all frames"]]; + [fX264optSubmePopUp addItemWithTitle:[NSString stringWithFormat:@"11: No early terminations in analysis"]]; + toolTip = + @"This setting controls both subpixel-precision motion estimation and mode decision methods.\n\nSubpixel motion estimation is used for refining motion estimates beyond mere pixel accuracy, improving compression.\n\nMode decision is the method used to choose how to encode each block of the frame: a very important decision.\n\nSAD is the fastest method, followed by SATD, RD, RD refinement, and the slowest, QPRD.\n\n6 or higher is strongly recommended: Psy-RD, a very powerful psy optimization that helps retain detail, requires RD.\n\n11 disables all early terminations in analysis.\n\n10 and 11, the most powerful and slowest options, require adaptive quantization (aq-mode > 0) and trellis 2 (always)."; + [fX264optSubmePopUp setToolTip: toolTip]; + [fX264optSubmeLabel setToolTip: toolTip]; + + /*Trellis fX264optTrellisPopUp*/ + [fX264optTrellisPopUp removeAllItems]; + [fX264optTrellisPopUp addItemWithTitle:@"Default (Encode only)"]; + [fX264optTrellisPopUp addItemWithTitle:[NSString stringWithFormat:@"Off"]]; + [fX264optTrellisPopUp addItemWithTitle:[NSString stringWithFormat:@"Encode only"]]; + [fX264optTrellisPopUp addItemWithTitle:[NSString stringWithFormat:@"Always"]]; + [fX264optTrellisPopUp setWantsLayer:YES]; + toolTip = + @"Trellis fine-tunes the rounding of transform coefficients to squeeze out 3-5% more compression at the cost of some speed. \"Always\" uses trellis not only during the main encoding process, but also during analysis, which improves compression even more, albeit at great speed cost. Trellis costs more speed at higher bitrates."; + [fX264optTrellisPopUp setToolTip: toolTip]; + [fX264optTrellisLabel setToolTip: toolTip]; + + /*Motion Estimation fX264optMotionEstPopUp*/ + [fX264optMotionEstPopUp removeAllItems]; + [fX264optMotionEstPopUp addItemWithTitle:@"Default (Hexagon)"]; + [fX264optMotionEstPopUp addItemWithTitle:@"Diamond"]; + [fX264optMotionEstPopUp addItemWithTitle:@"Hexagon"]; + [fX264optMotionEstPopUp addItemWithTitle:@"Uneven Multi-Hexagon"]; + [fX264optMotionEstPopUp addItemWithTitle:@"Exhaustive"]; + [fX264optMotionEstPopUp addItemWithTitle:@"Transformed Exhaustive"]; + toolTip = + @"Controls the motion estimation method. Motion estimation is how the encoder estimates how each block of pixels in a frame has moved. A better motion search method improves compression at the cost of speed.\n\nDiamond: performs an extremely fast and simple search using a diamond pattern.\n\nHexagon: performs a somewhat more effective but slightly slower search using a hexagon pattern.\n\nUneven Multi-Hex: performs a very wide search using a variety of patterns, more accurately capturing complex motion.\n\nExhaustive: performs a \"dumb\" search of every pixel in a wide area. Significantly slower for only a small compression gain.\n\nTransformed Exhaustive: Like exhaustive, but makes even more accurate decisions. Accordingly, somewhat slower, also for only a small improvement."; + [fX264optMotionEstPopUp setToolTip: toolTip]; + [fX264optMotionEstLabel setToolTip: toolTip]; + + /*Motion Estimation range fX264optMERangePopUp*/ + [fX264optMERangePopUp removeAllItems]; + [fX264optMERangePopUp addItemWithTitle:@"Default (16)"]; + for (i=4; i<65;i++) + { + [fX264optMERangePopUp addItemWithTitle:[NSString stringWithFormat:@"%d",i]]; + } + toolTip = + @"This is the distance x264 searches from its best guess at the motion of a block in order to try to find its actual motion. Doesn't apply to Diamond or Hexagon search options. The default is fine for most content, but extremely high motion video, especially at HD resolutions, may benefit from higher ranges, albeit at a high speed cost."; + [fX264optMERangePopUp setToolTip: toolTip]; + [fX264optMERangeLabel setToolTip: toolTip]; + + /*B-frame Pyramids fX264optBPyramidPopUp*/ + [fX264optBPyramidPopUp removeAllItems]; + [fX264optBPyramidPopUp addItemWithTitle:@"Default (Normal)"]; + [fX264optBPyramidPopUp addItemWithTitle:@"Off"]; + [fX264optBPyramidPopUp addItemWithTitle:@"Strict"]; + [fX264optBPyramidPopUp setWantsLayer:YES]; + toolTip = + @"B-pyramid improves compression by creating a pyramidal structure (hence the name) of B-frames, allowing B-frames to reference each other to improve compression. Requires Max B-frames greater than 1; optimal adaptive B-frames is strongly recommended for full compression benefit."; + [fX264optBPyramidPopUp setToolTip: toolTip]; + [fX264optBPyramidLabel setToolTip: toolTip]; + + /*Direct B-Frame Prediction Mode fX264optDirectPredPopUp*/ + [fX264optDirectPredPopUp removeAllItems]; + [fX264optDirectPredPopUp addItemWithTitle:@"Default (Spatial)"]; + [fX264optDirectPredPopUp addItemWithTitle:@"None"]; + [fX264optDirectPredPopUp addItemWithTitle:@"Spatial"]; + [fX264optDirectPredPopUp addItemWithTitle:@"Temporal"]; + [fX264optDirectPredPopUp addItemWithTitle:@"Automatic"]; + [fX264optDirectPredPopUp setWantsLayer:YES]; + toolTip = + @"H.264 allows for two different prediction modes, spatial and temporal, in B-frames.\n\nSpatial, the default, is almost always better, but temporal is sometimes useful too.\n\nx264 can, at the cost of a small amount of speed (and accordingly for a small compression gain), adaptively select which is better for each particular frame."; + [fX264optDirectPredPopUp setToolTip: toolTip]; + [fX264optDirectPredLabel setToolTip: toolTip]; + + /* Adaptive B-Frames Mode fX264optBAdaptPopUp */ + [fX264optBAdaptPopUp removeAllItems]; + [fX264optBAdaptPopUp addItemWithTitle:@"Default (Fast)"]; + [fX264optBAdaptPopUp addItemWithTitle:@"Off"]; + [fX264optBAdaptPopUp addItemWithTitle:@"Fast"]; + [fX264optBAdaptPopUp addItemWithTitle:@"Optimal"]; + [fX264optBAdaptPopUp setWantsLayer:YES]; + toolTip = + @"x264 has a variety of algorithms to decide when to use B-frames and how many to use.\n\nFast mode takes roughly the same amount of time no matter how many B-frames you specify. However, while fast, its decisions are often suboptimal.\n\nOptimal mode gets slower as the maximum number of B-Frames increases, but makes much more accurate decisions, especially when used with B-pyramid."; + [fX264optBAdaptPopUp setToolTip: toolTip]; + [fX264optBAdaptLabel setToolTip: toolTip]; + + /*Alpha Deblock*/ + [fX264optAlphaDeblockPopUp removeAllItems]; + [fX264optAlphaDeblockPopUp addItemWithTitle:@"Default (0)"]; + for (i=-6; i<7;i++) + { + [fX264optAlphaDeblockPopUp addItemWithTitle:[NSString stringWithFormat:@"%d",i]]; + } + toolTip = + @"H.264 has a built-in deblocking filter that smooths out blocking artifacts after decoding each frame. This not only improves visual quality, but also helps compression significantly. The deblocking filter takes a lot of CPU power, so if you're looking to minimize CPU requirements for video playback, disable it.\n\nThe deblocking filter has two adjustable parameters, \"strength\" and \"threshold\". The former controls how strong (or weak) the deblocker is, while the latter controls how many (or few) edges it applies to. Lower values mean less deblocking, higher values mean more deblocking. The default is 0 (normal strength) for both parameters."; + [fX264optAlphaDeblockPopUp setToolTip: toolTip]; + [fX264optDeblockLabel setToolTip: toolTip]; + + /*Beta Deblock*/ + [fX264optBetaDeblockPopUp removeAllItems]; + [fX264optBetaDeblockPopUp addItemWithTitle:@"Default (0)"]; + for (i=-6; i<7;i++) + { + [fX264optBetaDeblockPopUp addItemWithTitle:[NSString stringWithFormat:@"%d",i]]; + } + [fX264optBetaDeblockPopUp setToolTip: toolTip]; + [fX264optDeblockLabel setToolTip: toolTip]; + + /* Analysis fX264optAnalysePopUp */ + [fX264optAnalysePopUp removeAllItems]; + [fX264optAnalysePopUp addItemWithTitle:@"Default (Most)"]; /* 0=default */ + [fX264optAnalysePopUp addItemWithTitle:[NSString stringWithFormat:@"None"]]; /* 1=none */ + [fX264optAnalysePopUp addItemWithTitle:[NSString stringWithFormat:@"Some"]]; /* 2=some */ + [fX264optAnalysePopUp addItemWithTitle:[NSString stringWithFormat:@"All"]]; /* 3=all */ + toolTip = + @"Mode decision picks from a variety of options to make its decision: this option chooses what options those are. Fewer partitions to check means faster encoding, at the cost of worse decisions, since the best option might have been one that was turned off."; + [fX264optAnalysePopUp setToolTip: toolTip]; + [fX264optAnalyseLabel setToolTip: toolTip]; + + /* 8x8 DCT fX264op8x8dctSwitch */ + [fX264opt8x8dctSwitch setState:1]; + [fX264opt8x8dctSwitch setWantsLayer:YES]; + toolTip = + @"The 8x8 transform is the single most useful feature of x264 in terms of compression-per-speed. It improves compression by at least 5% at a very small speed cost and may provide an unusually high visual quality benefit compared to its compression gain. However, it requires High Profile, which many devices may not support."; + [fX264opt8x8dctSwitch setToolTip: toolTip]; + [fX264opt8x8dctLabel setToolTip: toolTip]; + + /* CABAC fX264opCabacSwitch */ + [fX264optCabacSwitch setState:1]; + toolTip = + @"After the encoder has done its work, it has a bunch of data that needs to be compressed losslessly, similar to ZIP or RAR. H.264 provides two options for this: CAVLC and CABAC. CABAC decodes a lot slower but compresses significantly better (10-30%), especially at lower bitrates. If you're looking to minimize CPU requirements for video playback, disable this option. Baseline profile, as required for iPods and similar devices, requires CABAC to be disabled."; + [fX264optCabacSwitch setToolTip: toolTip]; + [fX264optCabacLabel setToolTip: toolTip]; + + /* Adaptive Quantization Strength fX264opAqSlider */ + [fX264optAqSlider setMinValue:0.0]; + [fX264optAqSlider setMaxValue:2.0]; + [fX264optAqSlider setTickMarkPosition:NSTickMarkBelow]; + [fX264optAqSlider setNumberOfTickMarks:21]; + [fX264optAqSlider setAllowsTickMarkValuesOnly:YES]; + [fX264optAqSlider setFloatValue:1.0]; + toolTip = + @"Adaptive quantization controls how the encoder distributes bits across the frame. Higher values take more bits away from edges and complex areas to improve areas with finer detail."; + [fX264optAqSlider setToolTip: toolTip]; + [fX264optAqLabel setToolTip: toolTip]; + + /* PsyRDO fX264optPsyRDSlider */ + [fX264optPsyRDSlider setMinValue:0.0]; + [fX264optPsyRDSlider setMaxValue:2.0]; + [fX264optPsyRDSlider setTickMarkPosition:NSTickMarkBelow]; + [fX264optPsyRDSlider setNumberOfTickMarks:21]; + [fX264optPsyRDSlider setAllowsTickMarkValuesOnly:YES]; + [fX264optPsyRDSlider setFloatValue:1.0]; + toolTip = + @"Psychovisual rate-distortion optimization takes advantage of the characteristics of human vision to dramatically improve apparent detail and sharpness. The effect can be made weaker or stronger by adjusting the strength. Being an RD algorithm, it requires mode decision to be at least \"6\"."; + [fX264optPsyRDSlider setToolTip: toolTip]; + [fX264optPsyRDLabel setToolTip: toolTip]; + + /* PsyTrellis fX264optPsyRDSlider */ + [fX264optPsyTrellisSlider setMinValue:0.0]; + [fX264optPsyTrellisSlider setMaxValue:1.0]; + [fX264optPsyTrellisSlider setTickMarkPosition:NSTickMarkBelow]; + [fX264optPsyTrellisSlider setNumberOfTickMarks:21]; + [fX264optPsyTrellisSlider setAllowsTickMarkValuesOnly:YES]; + [fX264optPsyTrellisSlider setFloatValue:0.0]; + toolTip = + @"Psychovisual trellis is an experimental algorithm to further improve sharpness and detail retention beyond what Psychovisual RD does. Recommended values are around 0.2, though higher values may help for very grainy video or lower bitrate encodes. Not recommended for cel animation and other sharp-edged graphics."; + [fX264optPsyTrellisSlider setToolTip: toolTip]; + [fX264optPsyTrellisLabel setToolTip: toolTip]; + + /* Standardize the option string */ + [self X264AdvancedOptionsStandardizeOptString:nil]; + + /* Set Current GUI Settings based on newly standardized string */ + [self X264AdvancedOptionsSetCurrentSettings:sender]; + + /* Fade out options that don't apply */ + [self X264AdvancedOptionsAnimate: sender]; +} + +/** + * Cleans the option string to use a standard format of option=value + */ +- (IBAction) X264AdvancedOptionsStandardizeOptString: (id) sender +{ + /* Set widgets depending on the opt string in field */ + NSString * thisOpt; // The separated option such as "bframes=3" + NSString * optName = @""; // The option name such as "bframes" + NSString * optValue = @"";// The option value such as "3" + NSString * changedOptString = @""; + NSArray *currentOptsArray; + + /*First, we get an opt string to process */ + NSString *currentOptString = [fDisplayX264Options stringValue]; + + /* Verify there is an opt string to process by making sure an + option is getting its value set. If so, start to process it. */ + NSRange currentOptRange = [currentOptString rangeOfString:@"="]; + if (currentOptRange.location != NSNotFound) + { + /*Put individual options into an array based on the ":" separator for processing, result is "="*/ + currentOptsArray = [currentOptString componentsSeparatedByString:@":"]; + + /*iterate through the array and get and 0 ) + { + [fX264optBPyramidPopUp selectItemAtIndex: 0]; + [[fX264optBPyramidPopUp cell] performClick:self]; + } + } + + if( [fX264optDirectPredPopUp isHidden] == false ) + { + [[fX264optDirectPredPopUp animator] setHidden:YES]; + [[fX264optDirectPredLabel animator] setHidden:YES]; + if ( [fX264optDirectPredPopUp indexOfSelectedItem] > 0 ) + { + [fX264optDirectPredPopUp selectItemAtIndex: 0]; + [[fX264optDirectPredPopUp cell] performClick:self]; + } + } + + if( [fX264optBAdaptPopUp isHidden] == false ) + { + [[fX264optBAdaptPopUp animator] setHidden:YES]; + [[fX264optBAdaptLabel animator] setHidden:YES]; + if ( [fX264optBAdaptPopUp indexOfSelectedItem] > 0 ) + { + [fX264optBAdaptPopUp selectItemAtIndex: 0]; + [[fX264optBAdaptPopUp cell] performClick:self]; + } + } + } + else if ( [fX264optBframesPopUp indexOfSelectedItem ] == 2) + { + /* Only 1 b-frame? Disable b-pyramid. */ + if( [fX264optBPyramidPopUp isHidden] == false ) + { + [[fX264optBPyramidPopUp animator] setHidden:YES]; + [[fX264optBPyramidLabel animator] setHidden:YES]; + if ( [fX264optBPyramidPopUp indexOfSelectedItem] > 0 ) + { + [fX264optBPyramidPopUp selectItemAtIndex: 0]; + [[fX264optBPyramidPopUp cell] performClick:self]; + } + } + + if( [fX264optDirectPredPopUp isHidden] == true ) + { + [[fX264optDirectPredPopUp animator] setHidden:NO]; + [[fX264optDirectPredLabel animator] setHidden:NO]; + } + + if( [fX264optBAdaptPopUp isHidden] == true ) + { + [[fX264optBAdaptPopUp animator] setHidden:NO]; + [[fX264optBAdaptLabel animator] setHidden:NO]; + } + } + else + { + if( [fX264optBPyramidPopUp isHidden] == true ) + { + [[fX264optBPyramidPopUp animator] setHidden:NO]; + [[fX264optBPyramidLabel animator] setHidden:NO]; + } + + if( [fX264optDirectPredPopUp isHidden] == true ) + { + [[fX264optDirectPredPopUp animator] setHidden:NO]; + [[fX264optDirectPredLabel animator] setHidden:NO]; + } + + if( [fX264optBAdaptPopUp isHidden] == true ) + { + [[fX264optBAdaptPopUp animator] setHidden:NO]; + [[fX264optBAdaptLabel animator] setHidden:NO]; + } + } + } + + if( sender == fX264optMotionEstPopUp || sender == nil || sender == fDisplayX264Options ) + { + if ( [fX264optMotionEstPopUp indexOfSelectedItem] < 3 ) + { + /* ME-range can only be above 16 if me >= umh + and changing it to < 16 is idiotic so hide it . */ + if( [fX264optMERangePopUp isHidden] == false ) + { + [[fX264optMERangePopUp animator] setHidden:YES]; + [[fX264optMERangeLabel animator] setHidden:YES]; + if ( [fX264optMERangePopUp indexOfSelectedItem] > 0 ) + { + [fX264optMERangePopUp selectItemAtIndex:0]; + [[fX264optMERangePopUp cell] performClick:self]; + } + } + } + else + { + if( [fX264optMERangePopUp isHidden] == true ) + { + [[fX264optMERangePopUp animator] setHidden:NO]; + [[fX264optMERangeLabel animator] setHidden:NO]; + } + } + } + + if( sender == fX264optSubmePopUp || sender == nil || sender == fDisplayX264Options ) + { + if( [fX264optSubmePopUp indexOfSelectedItem] != 0 && [fX264optSubmePopUp indexOfSelectedItem] < 7 ) + { + /* No Psy-RDO or Psy=trel if subme < 6. */ + if( [fX264optPsyRDSlider isHidden] == false ) + { + [[fX264optPsyRDSlider animator] setHidden:YES]; + [[fX264optPsyRDLabel animator] setHidden:YES]; + [fX264optPsyRDSlider setFloatValue:1.0]; + [[fX264optPsyRDSlider cell] performClick:self]; + } + + if( [fX264optPsyTrellisSlider isHidden] == false) + { + [[fX264optPsyTrellisSlider animator] setHidden:YES]; + [[fX264optPsyTrellisLabel animator] setHidden:YES]; + [fX264optPsyTrellisSlider setFloatValue:0.0]; + [[fX264optPsyTrellisSlider cell] performClick:self]; + } + } + else + { + if( [fX264optPsyRDSlider isHidden] == true ) + { + [[fX264optPsyRDSlider animator] setHidden:NO]; + [[fX264optPsyRDLabel animator] setHidden:NO]; + } + + if( ( [fX264optTrellisPopUp indexOfSelectedItem] == 0 || [fX264optTrellisPopUp indexOfSelectedItem] >= 2 ) && [fX264optPsyTrellisSlider isHidden] == true ) + { + [[fX264optPsyTrellisSlider animator] setHidden:NO]; + [[fX264optPsyTrellisLabel animator] setHidden:NO]; + } + } + } + + if( sender == fX264optTrellisPopUp || sender == nil || sender == fDisplayX264Options ) + { + if( [fX264optTrellisPopUp indexOfSelectedItem] > 0 && [fX264optTrellisPopUp indexOfSelectedItem] < 2 ) + { + if( [fX264optPsyTrellisSlider isHidden] == false ) + { + /* No Psy-trellis without trellis. */ + [[fX264optPsyTrellisSlider animator] setHidden:YES]; + [[fX264optPsyTrellisLabel animator] setHidden:YES]; + [[fX264optPsyTrellisSlider animator] setFloatValue:0.0]; + [[fX264optPsyTrellisSlider cell] performClick:self]; + } + } + else + { + if( ( [fX264optSubmePopUp indexOfSelectedItem] == 0 || [fX264optSubmePopUp indexOfSelectedItem] >= 7 ) && [fX264optPsyTrellisSlider isHidden] == true ) + { + [[fX264optPsyTrellisSlider animator] setHidden:NO]; + [[fX264optPsyTrellisLabel animator] setHidden:NO]; + } + } + } +} + +/** + * Resets the GUI widgets to the contents of the option string. + */ +- (IBAction) X264AdvancedOptionsSetCurrentSettings: (id) sender +{ + /* Set widgets depending on the opt string in field */ + NSString * thisOpt; // The separated option such as "bframes=3" + NSString * optName = @""; // The option name such as "bframes" + NSString * optValue = @"";// The option value such as "3" + NSArray *currentOptsArray; + + /*First, we get an opt string to process */ + NSString *currentOptString = [fDisplayX264Options stringValue]; + + /* Verify there is an opt string to process by making sure an + option is getting its value set. If so, start to process it. */ + NSRange currentOptRange = [currentOptString rangeOfString:@"="]; + if (currentOptRange.location != NSNotFound) + { + /*Put individual options into an array based on the ":" separator for processing, result is "="*/ + currentOptsArray = [currentOptString componentsSeparatedByString:@":"]; + + /*iterate through the array and get and 16 ) + { + [fX264optRefPopUp selectItemAtIndex:16]; + [ self X264AdvancedOptionsChanged: fX264optRefPopUp]; + } + else + { + [fX264optRefPopUp selectItemAtIndex:[optValue intValue]]; + } + } + /*WeightP NSButton*/ + if ([optName isEqualToString:@"weightp"]) + { + if ([optValue intValue] < 1) + [fX264optWeightPSwitch setState:0]; + else + [fX264optWeightPSwitch setState:1]; + } + /*No Dict Decimate NSButton*/ + if ([optName isEqualToString:@"no-dct-decimate"]) + { + [fX264optNodctdcmtSwitch setState:[optValue intValue]]; + } + /*Sub Me NSPopUpButton*/ + if ([optName isEqualToString:@"subq"]) + { + [fX264optSubmePopUp selectItemAtIndex:[optValue intValue]+1]; + } + /*Trellis NSPopUpButton*/ + if ([optName isEqualToString:@"trellis"]) + { + [fX264optTrellisPopUp selectItemAtIndex:[optValue intValue]+1]; + } + /*Motion Estimation NSPopUpButton*/ + if ([optName isEqualToString:@"me"]) + { + if ([optValue isEqualToString:@"dia"]) + [fX264optMotionEstPopUp selectItemAtIndex:1]; + else if ([optValue isEqualToString:@"hex"]) + [fX264optMotionEstPopUp selectItemAtIndex:2]; + else if ([optValue isEqualToString:@"umh"]) + [fX264optMotionEstPopUp selectItemAtIndex:3]; + else if ([optValue isEqualToString:@"esa"]) + [fX264optMotionEstPopUp selectItemAtIndex:4]; + else if ([optValue isEqualToString:@"tesa"]) + [fX264optMotionEstPopUp selectItemAtIndex:5]; + } + /*ME Range NSPopUpButton*/ + if ([optName isEqualToString:@"merange"]) + { + [fX264optMERangePopUp selectItemAtIndex:[optValue intValue]-3]; + } + /* Adaptive B-Frames NSPopUpButton*/ + if ([optName isEqualToString:@"b-adapt"]) + { + [fX264optBAdaptPopUp selectItemAtIndex:[optValue intValue]+1]; + } + /*B Pyramid NSPButton*/ + if ([optName isEqualToString:@"b-pyramid"]) + { + + if( [optValue isEqualToString:@"normal"] ) + { + [self X264AdvancedOptionsChanged: fX264optBPyramidPopUp]; + [fX264optBPyramidPopUp selectItemAtIndex:0]; + } + else if( [optValue isEqualToString:@"2"] ) + { + [fX264optBPyramidPopUp selectItemAtIndex:0]; + [self X264AdvancedOptionsChanged: fX264optBPyramidPopUp]; + } + if( [optValue isEqualToString:@"strict"] ) + { + [fX264optBPyramidPopUp selectItemAtIndex:2]; + } + else if( [optValue isEqualToString:@"1"] ) + { + [fX264optBPyramidPopUp selectItemAtIndex:2]; + [self X264AdvancedOptionsChanged: fX264optBPyramidPopUp]; + } + if( [optValue isEqualToString:@"none"] ) + { + [fX264optBPyramidPopUp selectItemAtIndex:1]; + } + else if( [optValue isEqualToString:@"0"] ) + { + [fX264optBPyramidPopUp selectItemAtIndex:1]; + [self X264AdvancedOptionsChanged: fX264optBPyramidPopUp]; + } + } + /*Direct B-frame Prediction NSPopUpButton*/ + if ([optName isEqualToString:@"direct"]) + { + if ([optValue isEqualToString:@"none"]) + [fX264optDirectPredPopUp selectItemAtIndex:1]; + else if ([optValue isEqualToString:@"spatial"]) + [fX264optDirectPredPopUp selectItemAtIndex:2]; + else if ([optValue isEqualToString:@"temporal"]) + [fX264optDirectPredPopUp selectItemAtIndex:3]; + else if ([optValue isEqualToString:@"auto"]) + [fX264optDirectPredPopUp selectItemAtIndex:4]; + } + /*Deblocking NSPopUpButtons*/ + if ([optName isEqualToString:@"deblock"]) + { + NSString * alphaDeblock = @""; + NSString * betaDeblock = @""; + + NSRange splitDeblock = [optValue rangeOfString:@","]; + alphaDeblock = [optValue substringToIndex:splitDeblock.location]; + betaDeblock = [optValue substringFromIndex:splitDeblock.location + 1]; + + if ([alphaDeblock isEqualToString:@"0"] && [betaDeblock isEqualToString:@"0"]) + { + /* When both filters are at 0, default */ + [fX264optAlphaDeblockPopUp selectItemAtIndex:0]; + [fX264optBetaDeblockPopUp selectItemAtIndex:0]; + } + else + { + if (![alphaDeblock isEqualToString:@"0"]) + { + /* Alpha isn't 0, so set it. The offset of 7 is + because filters start at -6 instead of at 0. */ + [fX264optAlphaDeblockPopUp selectItemAtIndex:[alphaDeblock intValue]+7]; + } + else + { + /* Set alpha filter to 0, which is 7 up + because filters start at -6, not 0. */ + [fX264optAlphaDeblockPopUp selectItemAtIndex:7]; + } + + if (![betaDeblock isEqualToString:@"0"]) + { + /* Beta isn't 0, so set it. */ + [fX264optBetaDeblockPopUp selectItemAtIndex:[betaDeblock intValue]+7]; + } + else + { + /* Set beta filter to 0. */ + [fX264optBetaDeblockPopUp selectItemAtIndex:7]; + } + } + } + /* Analysis NSPopUpButton */ + if ([optName isEqualToString:@"analyse"]) + { + if ([optValue isEqualToString:@"p8x8,b8x8,i8x8,i4x4"]) + { + /* Default ("most") */ + [fX264optAnalysePopUp selectItemAtIndex:0]; + } + else if ([optValue isEqualToString:@"i4x4,i8x8"] || + [optValue isEqualToString:@"i8x8,i4x4"] ) + { + /* Some */ + [fX264optAnalysePopUp selectItemAtIndex:2]; + } + else if ([optValue isEqualToString:@"none"]) + { + [fX264optAnalysePopUp selectItemAtIndex:1]; + } + else if ([optValue isEqualToString:@"all"]) + { + [fX264optAnalysePopUp selectItemAtIndex:3]; + } + + } + /* 8x8 DCT NSButton */ + if ([optName isEqualToString:@"8x8dct"]) + { + [fX264opt8x8dctSwitch setState:[optValue intValue]]; + } + /* CABAC NSButton */ + if ([optName isEqualToString:@"cabac"]) + { + [fX264optCabacSwitch setState:[optValue intValue]]; + } + /* Adaptive Quantization Strength NSSlider */ + if ([optName isEqualToString:@"aq-strength"]) + { + [fX264optAqSlider setFloatValue:[optValue floatValue]]; + } + /* Psy-RD and Psy-Trellis NSSliders */ + if ([optName isEqualToString:@"psy-rd"]) + { + NSString * rdOpt = @""; + NSString * trellisOpt = @""; + + NSRange splitRD = [optValue rangeOfString:@","]; + rdOpt = [optValue substringToIndex:splitRD.location]; + trellisOpt = [optValue substringFromIndex:splitRD.location + 1]; + + [fX264optPsyRDSlider setFloatValue:[rdOpt floatValue]]; + [fX264optPsyTrellisSlider setFloatValue:[trellisOpt floatValue]]; + } + } + } + } +} + +- (NSString *) X264AdvancedOptionsOptIDToString: (id) widget +{ + /*Determine which outlet is being used and set optName to process accordingly */ + NSString * optNameToChange = @""; // The option name such as "bframes" + + if (widget == fX264optBframesPopUp) + { + optNameToChange = @"bframes"; + } + if (widget == fX264optRefPopUp) + { + optNameToChange = @"ref"; + } + if (widget == fX264optWeightPSwitch) + { + optNameToChange = @"weightp"; + } + if (widget == fX264optNodctdcmtSwitch) + { + optNameToChange = @"no-dct-decimate"; + } + if (widget == fX264optSubmePopUp) + { + optNameToChange = @"subq"; + } + if (widget == fX264optTrellisPopUp) + { + optNameToChange = @"trellis"; + } + if (widget == fX264optMotionEstPopUp) + { + optNameToChange = @"me"; + } + if (widget == fX264optMERangePopUp) + { + optNameToChange = @"merange"; + } + if (widget == fX264optBAdaptPopUp) + { + optNameToChange = @"b-adapt"; + } + if (widget == fX264optBPyramidPopUp) + { + optNameToChange = @"b-pyramid"; + } + if (widget == fX264optDirectPredPopUp) + { + optNameToChange = @"direct"; + } + if (widget == fX264optAlphaDeblockPopUp) + { + optNameToChange = @"deblock"; + } + if (widget == fX264optBetaDeblockPopUp) + { + optNameToChange = @"deblock"; + } + if (widget == fX264optAnalysePopUp) + { + optNameToChange = @"analyse"; + } + if (widget == fX264opt8x8dctSwitch) + { + optNameToChange = @"8x8dct"; + } + if (widget == fX264optCabacSwitch) + { + optNameToChange = @"cabac"; + } + if( widget == fX264optAqSlider) + { + optNameToChange = @"aq-strength"; + } + if( widget == fX264optPsyRDSlider) + { + optNameToChange = @"psy-rd"; + } + if( widget == fX264optPsyTrellisSlider) + { + optNameToChange = @"psy-rd"; + } + + return optNameToChange; +} + +- (NSString *) X264AdvancedOptionsWidgetToString: (NSString *) optName withID: (id) sender +{ + NSString * thisOpt = @""; // The option=value string the method will return + + if ([optName isEqualToString:@"deblock"]) + { + if ((([fX264optAlphaDeblockPopUp indexOfSelectedItem] == 0) || ([fX264optAlphaDeblockPopUp indexOfSelectedItem] == 7)) && (([fX264optBetaDeblockPopUp indexOfSelectedItem] == 0) || ([fX264optBetaDeblockPopUp indexOfSelectedItem] == 7))) + { + /* When both deblock widgets are 0 or default or a mix of the two, + use a blank string, since deblocking defaults to 0,0. */ + thisOpt = @""; + } + else + { + /* Otherwise the format is deblock=a,b, where a and b both have an array + offset of 7 because deblocking values start at -6 instead of at zero. */ + thisOpt = [NSString stringWithFormat:@"%@=%d,%d",optName, ([fX264optAlphaDeblockPopUp indexOfSelectedItem] != 0) ? [fX264optAlphaDeblockPopUp indexOfSelectedItem]-7 : 0,([fX264optBetaDeblockPopUp indexOfSelectedItem] != 0) ? [fX264optBetaDeblockPopUp indexOfSelectedItem]-7 : 0]; + } + } + + else if ([optName isEqualToString:@"aq-strength"]) + { + if( [fX264optAqSlider floatValue] == 1.0 ) + { + /* When Aq is 1 it's the default value and can be ignored. */ + thisOpt = @""; + } + else + { + thisOpt = [NSString stringWithFormat:@"%@=%0.1f", optName, [fX264optAqSlider floatValue] ]; + } + } + + else if ([optName isEqualToString:@"psy-rd"]) + { + if( [fX264optPsyRDSlider floatValue] == 1.0 && [fX264optPsyTrellisSlider floatValue] == 0.0 ) + { + /* When PsyRD is 1 and PsyTrel is 0 they're default values and can be ignored. */ + thisOpt = @""; + } + else + { + /* Otherwise the format is psy-rd=a,b */ + thisOpt = [NSString stringWithFormat:@"%@=%0.1f,%0.2f", optName, [fX264optPsyRDSlider floatValue], [fX264optPsyTrellisSlider floatValue] ]; + } + } + + else if /*Boolean Switches*/ ( [optName isEqualToString:@"no-dct-decimate"] ) + { + /* Here is where we take care of the boolean options that work overtly: + no-dct-decimate being on means no-dct-decimate=1, etc. Some options + require the inverse, but those will be handled a couple lines down. */ + if ([sender state] == 0) + { + /* When these options are false, don't include them. They all default + to being set off, so they don't need to be mentioned at all. */ + thisOpt = @""; + } + else + { + /* Otherwise, include them as optioname=1 */ + thisOpt = [NSString stringWithFormat:@"%@=%d",optName,1]; + } + } + + else if ( [optName isEqualToString:@"8x8dct"] || [optName isEqualToString:@"cabac"] || [optName isEqualToString:@"weightp"] ) + { + /* These options default to being on. That means they + only need to be included in the string when turned off. */ + if ([sender state] == 1) + { + /* It's true so don't include it. */ + thisOpt = @""; + } + else + { + /* Otherwise, include cabac=0, etc, in the string. */ + thisOpt = [NSString stringWithFormat:@"%@=%d",optName,0]; + } + } + + else if (([sender indexOfSelectedItem] == 0) && (sender != fX264optAlphaDeblockPopUp) && (sender != fX264optBetaDeblockPopUp) ) // means that "unspecified" is chosen, lets then remove it from the string + { + /* When a widget is at index 0, it's default. Default means don't add to the string. + The exception for deblocking is because for those, *both* need to at index 0 + for it to default, so it's handled separately, above this section. */ + thisOpt = @""; + } + + else if ([optName isEqualToString:@"me"]) + { + /* Motion estimation uses string values, so this switch + pairs the widget index with the right value string. */ + switch ([sender indexOfSelectedItem]) + { + case 1: + thisOpt = [NSString stringWithFormat:@"%@=%@",optName,@"dia"]; + break; + + case 2: + thisOpt = [NSString stringWithFormat:@"%@=%@",optName,@"hex"]; + break; + + case 3: + thisOpt = [NSString stringWithFormat:@"%@=%@",optName,@"umh"]; + break; + + case 4: + thisOpt = [NSString stringWithFormat:@"%@=%@",optName,@"esa"]; + break; + + case 5: + thisOpt = [NSString stringWithFormat:@"%@=%@",optName,@"tesa"]; + + default: + break; + } + } + + else if ([optName isEqualToString:@"direct"]) + { + /* Direct prediction uses string values, so this switch + pairs the right string value with the right widget index. */ + switch ([sender indexOfSelectedItem]) + { + case 1: + thisOpt = [NSString stringWithFormat:@"%@=%@",optName,@"none"]; + break; + + case 2: + thisOpt = [NSString stringWithFormat:@"%@=%@",optName,@"spatial"]; + break; + + case 3: + thisOpt = [NSString stringWithFormat:@"%@=%@",optName,@"temporal"]; + break; + + case 4: + thisOpt = [NSString stringWithFormat:@"%@=%@",optName,@"auto"]; + break; + + default: + break; + } + } + + else if ([optName isEqualToString:@"analyse"]) + { + /* Analysis uses string values as well. */ + switch ([sender indexOfSelectedItem]) + { + case 1: + thisOpt = [NSString stringWithFormat:@"%@=%@",optName,@"none"]; + break; + case 2: + thisOpt = [NSString stringWithFormat:@"%@=%@",optName,@"i4x4,i8x8"]; + break; + case 3: + thisOpt = [NSString stringWithFormat:@"%@=%@",optName,@"all"]; + break; + + default: + break; + } + } + + else if ([optName isEqualToString:@"b-pyramid"]) + { + /* B-pyramid uses string values too. */ + switch ([sender indexOfSelectedItem]) + { + case 1: + thisOpt = [NSString stringWithFormat:@"%@=%@",optName,@"none"]; + break; + case 2: + thisOpt = [NSString stringWithFormat:@"%@=%@",optName,@"strict"]; + break; + case 0: + thisOpt = @""; + break; + + default: + break; + } + } + + else if ([optName isEqualToString:@"merange"]) + { + /* Motion estimation range uses an odd array offset because in addition + to starting with index 0 as default, index 1 starts at 4 instead of 1, + because merange can't go below 4. So it has to be handled separately. */ + thisOpt = [NSString stringWithFormat:@"%@=%d",optName,[sender indexOfSelectedItem]+3]; + } + + else if ([optName isEqualToString:@"b-adapt"]) + { + /* B-adapt starts at index 0 with default then goes 0, 1, 2)*/ + thisOpt = [NSString stringWithFormat:@"%@=%d", optName, [sender indexOfSelectedItem]-1]; + } + + else if ([optName isEqualToString:@"ref"]) + { + /* Refs use actual index numbers */ + thisOpt = [NSString stringWithFormat:@"%@=%d",optName,[sender indexOfSelectedItem]]; + } + + else // we have a valid value to change, so change it + { + if ( [sender indexOfSelectedItem] != 0 ) + /* Here's our general case, that catches things like b-frames. + Basically, any options that are PopUp menus with index 0 as default and + index 1 as 0, with numerical values, are all handled right here. All of + the above stuff is for the exceptions to the general case. */ + thisOpt = [NSString stringWithFormat:@"%@=%d",optName,[sender indexOfSelectedItem]-1]; + } + + return thisOpt; +} + +- (BOOL) X264AdvancedOptionsIsOpt: (NSString *) optNameToChange inString: (NSString *) currentOptString +{ + /* If the option is in the string but not the beginning of it, + it will be in the form of ":optName=value" so we really want + to be looking for ":optNameToChange=" rather than "optNameToChange". */ + NSString *checkOptNameToChange = [NSString stringWithFormat:@":%@=",optNameToChange]; + + /* Now we store the part of the string up through the option name in currentOptRange. */ + NSRange currentOptRange = [currentOptString rangeOfString:checkOptNameToChange]; + + /* We need to know if the option is at the beginning of the string. + If it is at the start, it won't be preceded by a colon. + To figure this out, we'll use the rangeOfString method. First, + store what the option name would be if if it was at the beginning, + in checkOptNameToChangeBeginning. Then, find its range in the string. + If the range is 0, it's the first option listed in the string. */ + NSString *checkOptNameToChangeBeginning = [NSString stringWithFormat:@"%@=",optNameToChange]; + NSRange currentOptRangeBeginning = [currentOptString rangeOfString:checkOptNameToChangeBeginning]; + + if (currentOptRange.location != NSNotFound || currentOptRangeBeginning.location == 0) + return true; + else + return false; +} + +/** + * Resets the option string to mirror the GUI widgets. + */ +- (IBAction) X264AdvancedOptionsChanged: (id) sender +{ + /* Look up the equivalent string option name of the calling widget. */ + NSString * optNameToChange = [self X264AdvancedOptionsOptIDToString: sender]; + + NSString * thisOpt = @""; // The separated option such as "bframes=3" + NSString * optName = @""; // The option name such as "bframes" + NSString * optValue = @""; // The option value such as "3" + NSArray *currentOptsArray; + + /* Get the current opt string being displayed. */ + NSString *currentOptString = [fDisplayX264Options stringValue]; + + /* There are going to be a few possibilities. + - The option might start off the string. + - The option might be in the middle of the string. + - The option might not be in the string at all yet. + - The string itself might not yet exist. */ + + if( [self X264AdvancedOptionsIsOpt: optNameToChange inString: currentOptString] ) + { + /* If the option is in the string wth a semicolon, or starts the string, it's time to edit. + This means parsing the whole string into an array of options and values. From there, + iterate through the options, and when you reach the one that's been changed, edit it. */ + + /* Create new empty opt string*/ + NSString *changedOptString = @""; + + /* Put individual options into an array based on the ":" + separator for processing, result is "=" */ + currentOptsArray = [currentOptString componentsSeparatedByString:@":"]; + + /* Iterate through the array and get and +#import "hb.h" + +extern NSString *keyAudioTrackIndex; +extern NSString *keyAudioTrackName; +extern NSString *keyAudioInputBitrate; +extern NSString *keyAudioInputSampleRate; +extern NSString *keyAudioInputCodec; +extern NSString *keyAudioInputChannelLayout; +extern NSString *HBMixdownChangedNotification; + +@class HBAudio; + +@interface HBAudioController : NSObject + +{ + id myController; + NSMutableArray * audioArray; // the configured audio information + NSArray * masterTrackArray; // the master list of audio tracks from the title + NSDictionary * noneTrack; // this represents no audio track selection + NSNumber * videoContainerTag; // initially is the default HB_MUX_MP4 +} + +@property (nonatomic, readonly, retain) NSArray *masterTrackArray; +@property (nonatomic, readonly) NSDictionary *noneTrack; +@property (nonatomic, retain) NSNumber *videoContainerTag; + +- (void) setHBController: (id) aController; +- (void) prepareAudioForQueueFileJob: (NSMutableDictionary *) aDict; +- (void) prepareAudioForJob: (hb_job_t *) aJob; +- (void) prepareAudioForPreset: (NSMutableArray *) anArray; +- (void) addTracksFromQueue: (NSMutableDictionary *) aQueue; +- (void) addTracksFromPreset: (NSMutableDictionary *) aPreset; +- (void) addAllTracksFromPreset: (NSMutableDictionary *) aPreset; +- (BOOL) anyCodecMatches: (int) aCodecValue; +- (void) addNewAudioTrack; +- (void) settingTrackToNone: (HBAudio *) newNoneTrack; +- (void) switchingTrackFromNone: (HBAudio *) noLongerNoneTrack; + +@end + +@interface HBAudioController (KVC) + +- (unsigned int) countOfAudioArray; +- (HBAudio *) objectInAudioArrayAtIndex: (unsigned int) index; +- (void) insertObject: (HBAudio *) audioObject inAudioArrayAtIndex: (unsigned int) index; +- (void) removeObjectFromAudioArrayAtIndex: (unsigned int) index; + +@end diff -Nru handbrake-0.9.9+dfsg/macosx/HBAudioController.m handbrake-0.9.9+ppa1/macosx/HBAudioController.m --- handbrake-0.9.9+dfsg/macosx/HBAudioController.m 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/HBAudioController.m 2013-04-28 21:05:55.000000000 +0000 @@ -0,0 +1,677 @@ +// +// HBAudioController.m +// HandBrake +// +// Created on 2010-08-24. +// + +#import "HBAudioController.h" +#import "Controller.h" +#import "HBAudio.h" +#import "hb.h" + +NSString *keyAudioTrackIndex = @"keyAudioTrackIndex"; +NSString *keyAudioTrackName = @"keyAudioTrackName"; +NSString *keyAudioInputBitrate = @"keyAudioInputBitrate"; +NSString *keyAudioInputSampleRate = @"keyAudioInputSampleRate"; +NSString *keyAudioInputCodec = @"keyAudioInputCodec"; +NSString *keyAudioInputChannelLayout = @"keyAudioInputChannelLayout"; +NSString *HBMixdownChangedNotification = @"HBMixdownChangedNotification"; + + +@interface HBAudioController () + +@property (nonatomic, readwrite, retain) NSArray *masterTrackArray; + +@end // interface HBAudioController + + +@implementation HBAudioController + +#pragma mark - +#pragma mark Accessors + +@synthesize masterTrackArray; +@synthesize noneTrack; +@synthesize videoContainerTag; + +- (id) init + +{ + if (self = [super init]) + { + [self setVideoContainerTag: [NSNumber numberWithInt: HB_MUX_MP4]]; + audioArray = [[NSMutableArray alloc] init]; + } + return self; +} + +- (void) dealloc + +{ + [[NSNotificationCenter defaultCenter] removeObserver: self]; + [masterTrackArray release]; + [noneTrack release]; + [audioArray release]; + [self setVideoContainerTag: nil]; + [super dealloc]; +} + +- (void) setHBController: (id) aController + +{ + NSNotificationCenter *center = [NSNotificationCenter defaultCenter]; + myController = aController; + + /* register that we are interested in changes made to the video container */ + [center addObserver: self selector: @selector(containerChanged:) name: HBContainerChangedNotification object: aController]; + [center addObserver: self selector: @selector(titleChanged:) name: HBTitleChangedNotification object: aController]; +} + +- (void) _clearAudioArray + +{ + while (0 < [self countOfAudioArray]) + { + [self removeObjectFromAudioArrayAtIndex: 0]; + } +} + +#pragma mark - +#pragma mark HBController Support + +- (void) prepareAudioForQueueFileJob: (NSMutableDictionary *) aDict + +{ + unsigned int audioArrayCount = [self countOfAudioArray]; + for (unsigned int counter = 0; counter < audioArrayCount; counter++) + { + HBAudio *anAudio = [self objectInAudioArrayAtIndex: counter]; + if ([anAudio enabled]) + { + NSString *prefix = [NSString stringWithFormat: @"Audio%d", counter + 1]; + NSNumber *sampleRateToUse = ([[[anAudio sampleRate] objectForKey: keyAudioSamplerate] intValue] == 0 ? + [[anAudio track] objectForKey: keyAudioInputSampleRate] : + [[anAudio sampleRate] objectForKey: keyAudioSamplerate]); + + [aDict setObject: [[anAudio track] objectForKey: keyAudioTrackIndex] forKey: [prefix stringByAppendingString: @"Track"]]; + [aDict setObject: [[anAudio track] objectForKey: keyAudioTrackName] forKey: [prefix stringByAppendingString: @"TrackDescription"]]; + [aDict setObject: [[anAudio codec] objectForKey: keyAudioCodecName] forKey: [prefix stringByAppendingString: @"Encoder"]]; + [aDict setObject: [[anAudio mixdown] objectForKey: keyAudioMixdownName] forKey: [prefix stringByAppendingString: @"Mixdown"]]; + [aDict setObject: [[anAudio sampleRate] objectForKey: keyAudioSampleRateName] forKey: [prefix stringByAppendingString: @"Samplerate"]]; + [aDict setObject: [[anAudio bitRate] objectForKey: keyAudioBitrateName] forKey: [prefix stringByAppendingString: @"Bitrate"]]; + + // output is not passthru so apply gain + if (!([[[anAudio codec] objectForKey: keyAudioCodec] intValue] & HB_ACODEC_PASS_FLAG)) + { + [aDict setObject: [anAudio gain] forKey: [prefix stringByAppendingString: @"TrackGainSlider"]]; + } + else + { + // output is passthru - the Gain dial is disabled so don't apply its value + [aDict setObject: [NSNumber numberWithInt:0] forKey: [prefix stringByAppendingString: @"TrackGainSlider"]]; + } + + if ((HB_ACODEC_AC3 == [[[anAudio track] objectForKey: keyAudioInputCodec] intValue]) && + (HB_ACODEC_AC3_PASS != [[[anAudio codec] objectForKey: keyAudioCodec] intValue])) + { + [aDict setObject: [anAudio drc] forKey: [prefix stringByAppendingString: @"TrackDRCSlider"]]; + } + else + { + // source isn't AC3 or output is passthru - the DRC dial is disabled so don't apply its value + [aDict setObject: [NSNumber numberWithInt:0] forKey: [prefix stringByAppendingString: @"TrackDRCSlider"]]; + } + + prefix = [NSString stringWithFormat: @"JobAudio%d", counter + 1]; + [aDict setObject: [[anAudio codec] objectForKey: keyAudioCodec] forKey: [prefix stringByAppendingString: @"Encoder"]]; + [aDict setObject: [[anAudio mixdown] objectForKey: keyAudioMixdown] forKey: [prefix stringByAppendingString: @"Mixdown"]]; + [aDict setObject: sampleRateToUse forKey: [prefix stringByAppendingString: @"Samplerate"]]; + [aDict setObject: [[anAudio bitRate] objectForKey: keyAudioBitrate] forKey: [prefix stringByAppendingString: @"Bitrate"]]; + } + } +} + +- (void) prepareAudioForJob: (hb_job_t *) aJob + +{ + unsigned int i; + + // First clear out any audio tracks in the job currently + int audiotrack_count = hb_list_count(aJob->list_audio); + for(i = 0; i < audiotrack_count; i++) + + { + hb_audio_t *temp_audio = (hb_audio_t *) hb_list_item(aJob->list_audio, 0); + hb_list_rem(aJob->list_audio, temp_audio); + } + + // Now add audio tracks based on the current settings + unsigned int audioArrayCount = [self countOfAudioArray]; + for (i = 0; i < audioArrayCount; i++) + { + HBAudio *anAudio = [self objectInAudioArrayAtIndex:i]; + if ([anAudio enabled]) + { + NSNumber *sampleRateToUse = ([[[anAudio sampleRate] objectForKey:keyAudioSamplerate] intValue] == 0 ? + [[anAudio track] objectForKey:keyAudioInputSampleRate] : + [[anAudio sampleRate] objectForKey:keyAudioSamplerate]); + + hb_audio_config_t *audio = (hb_audio_config_t*)calloc(1, sizeof(*audio)); + hb_audio_config_init(audio); + audio->in.track = [[[anAudio track] objectForKey:keyAudioTrackIndex] intValue] - 1; + /* We go ahead and assign values to our audio->out. */ + audio->out.track = audio->in.track; + audio->out.codec = [[[anAudio codec] objectForKey:keyAudioCodec] intValue]; + audio->out.compression_level = hb_get_default_audio_compression(audio->out.codec); + audio->out.mixdown = [[[anAudio mixdown] objectForKey:keyAudioMixdown] intValue]; + audio->out.normalize_mix_level = 0; + audio->out.bitrate = [[[anAudio bitRate] objectForKey:keyAudioBitrate] intValue]; + audio->out.samplerate = [sampleRateToUse intValue]; + audio->out.dynamic_range_compression = [[anAudio drc] floatValue]; + audio->out.gain = [[anAudio gain] floatValue]; + audio->out.dither_method = hb_audio_dither_get_default(); + + hb_audio_add(aJob, audio); + free(audio); + } + } +} + +- (void) prepareAudioForPreset: (NSMutableArray *) anArray + +{ + unsigned int audioArrayCount = [self countOfAudioArray]; + unsigned int i; + + for (i = 0; i < audioArrayCount; i++) + { + HBAudio *anAudio = [self objectInAudioArrayAtIndex: i]; + if ([anAudio enabled]) + { + NSMutableDictionary *dict = [[NSMutableDictionary alloc] initWithCapacity: 7]; + [dict setObject: [[anAudio track] objectForKey: keyAudioTrackIndex] forKey: @"AudioTrack"]; + [dict setObject: [[anAudio track] objectForKey: keyAudioTrackName] forKey: @"AudioTrackDescription"]; + [dict setObject: [[anAudio codec] objectForKey: keyAudioCodecName] forKey: @"AudioEncoder"]; + [dict setObject: [[anAudio mixdown] objectForKey: keyAudioMixdownName] forKey: @"AudioMixdown"]; + [dict setObject: [[anAudio sampleRate] objectForKey: keyAudioSampleRateName] forKey: @"AudioSamplerate"]; + [dict setObject: [[anAudio bitRate] objectForKey: keyAudioBitrateName] forKey: @"AudioBitrate"]; + [dict setObject: [anAudio drc] forKey: @"AudioTrackDRCSlider"]; + [dict setObject: [anAudio gain] forKey: @"AudioTrackGainSlider"]; + [anArray addObject: dict]; + [dict release]; + } + } +} + +- (void) addTracksFromQueue: (NSMutableDictionary *) aQueue + +{ + NSString *base; + int value; + int maximumNumberOfAllowedAudioTracks = [HBController maximumNumberOfAllowedAudioTracks]; + + // Reinitialize the configured list of audio tracks + [self _clearAudioArray]; + + // The following is the pattern to follow, but with Audio%dTrack being the key to seek... + // Can we assume that there will be no skip in the data? + for (unsigned int i = 1; i <= maximumNumberOfAllowedAudioTracks; i++) + { + base = [NSString stringWithFormat: @"Audio%d", i]; + value = [[aQueue objectForKey: [base stringByAppendingString: @"Track"]] intValue]; + if (0 < value) + { + HBAudio *newAudio = [[HBAudio alloc] init]; + [newAudio setController: self]; + [self insertObject: newAudio inAudioArrayAtIndex: [self countOfAudioArray]]; + [newAudio setVideoContainerTag: [self videoContainerTag]]; + [newAudio setTrackFromIndex: value]; + [newAudio setCodecFromName: [aQueue objectForKey: [base stringByAppendingString: @"Encoder"]]]; + [newAudio setMixdownFromName: [aQueue objectForKey: [base stringByAppendingString: @"Mixdown"]]]; + [newAudio setSampleRateFromName: [aQueue objectForKey: [base stringByAppendingString: @"Samplerate"]]]; + [newAudio setBitRateFromName: [aQueue objectForKey: [base stringByAppendingString: @"Bitrate"]]]; + [newAudio setDrc: [aQueue objectForKey: [base stringByAppendingString: @"TrackDRCSlider"]]]; + [newAudio setGain: [aQueue objectForKey: [base stringByAppendingString: @"TrackGainSlider"]]]; + [newAudio release]; + } + } + + [self switchingTrackFromNone: nil]; // see if we need to add one to the list +} + +// This routine takes the preset and will return the value for the key AudioList +// if it exists, otherwise it creates an array from the data in the present. +- (NSArray *) _presetAudioArrayFromPreset: (NSMutableDictionary *) aPreset + +{ + NSArray *retval = [aPreset objectForKey: @"AudioList"]; + + if (!retval) + { + int maximumNumberOfAllowedAudioTracks = [HBController maximumNumberOfAllowedAudioTracks]; + NSString *base; + NSMutableArray *whatToUse = [NSMutableArray array]; + for (unsigned int i = 1; i <= maximumNumberOfAllowedAudioTracks; i++) + { + base = [NSString stringWithFormat: @"Audio%d", i]; + if (nil != [aPreset objectForKey: [base stringByAppendingString: @"Track"]]) + { + [whatToUse addObject: [NSDictionary dictionaryWithObjectsAndKeys: + [aPreset objectForKey: [base stringByAppendingString: @"Encoder"]], @"AudioEncoder", + [aPreset objectForKey: [base stringByAppendingString: @"Mixdown"]], @"AudioMixdown", + [aPreset objectForKey: [base stringByAppendingString: @"Samplerate"]], @"AudioSamplerate", + [aPreset objectForKey: [base stringByAppendingString: @"Bitrate"]], @"AudioBitrate", + [aPreset objectForKey: [base stringByAppendingString: @"TrackDRCSlider"]], @"AudioTrackDRCSlider", + [aPreset objectForKey: [base stringByAppendingString: @"TrackGainSlider"]], @"AudioTrackGainSlider", + nil]]; + } + } + retval = whatToUse; + } + return retval; +} + +// This uses the templateAudioArray from the preset to create the audios for the specified trackIndex +- (void) _processPresetAudioArray: (NSArray *) templateAudioArray forTrack: (unsigned int) trackIndex andType: (int) aType + +{ + NSEnumerator *enumerator = [templateAudioArray objectEnumerator]; + NSMutableDictionary *dict; + NSString *key; + int maximumNumberOfAllowedAudioTracks = [HBController maximumNumberOfAllowedAudioTracks]; + + while (nil != (dict = [enumerator nextObject])) + { + // copy the dictionary since we may need to alter it + dict = [NSMutableDictionary dictionaryWithDictionary:dict]; + + if ([self countOfAudioArray] < maximumNumberOfAllowedAudioTracks) + { + BOOL fallenBack = NO; + HBAudio *newAudio = [[HBAudio alloc] init]; + [newAudio setController: self]; + [self insertObject: newAudio inAudioArrayAtIndex: [self countOfAudioArray]]; + [newAudio setVideoContainerTag: [self videoContainerTag]]; + [newAudio setTrackFromIndex: trackIndex]; + + key = [dict objectForKey: @"AudioEncoder"]; + + // map faac to ca_aac for built-in presets (can be disabled in preferences) + if (0 == aType && + [[NSUserDefaults standardUserDefaults] boolForKey: @"UseCoreAudio"] && + [key isEqualToString: @"AAC (faac)"]) + { + [dict setObject: @"AAC (CoreAudio)" forKey: @"AudioEncoder"]; + } + + // passthru fallbacks + if ([key isEqualToString: @"AAC Passthru"]) + { + if (![newAudio setCodecFromName: key]) + { + [dict setObject: @"AAC (CoreAudio)" forKey: @"AudioEncoder"]; + fallenBack = YES; + } + } + else if ([key isEqualToString: @"AC3 Passthru"]) + { + if (![newAudio setCodecFromName: key]) + { + [dict setObject: @"AC3 (ffmpeg)" forKey: @"AudioEncoder"]; + fallenBack = YES; + } + } + else if ([key isEqualToString: @"MP3 Passthru"]) + { + if (![newAudio setCodecFromName: key]) + { + [dict setObject: @"MP3 (lame)" forKey: @"AudioEncoder"]; + fallenBack = YES; + } + } + + // map legacy encoder names + if ([key isEqualToString: @"AC3"]) + { + [dict setObject: @"AC3 (ffmpeg)" forKey: @"AudioEncoder"]; + } + + // If our preset does not contain a drc or gain value set it to a default of 0.0 + if (![dict objectForKey: @"AudioTrackDRCSlider"]) + { + [dict setObject:[NSNumber numberWithFloat:0.0] forKey:@"AudioTrackDRCSlider"]; + } + if (![dict objectForKey: @"AudioTrackGainSlider"]) + { + [dict setObject:[NSNumber numberWithFloat:0.0] forKey:@"AudioTrackGainSlider"]; + } + + // map legacy mixdowns + key = [dict objectForKey: @"AudioMixdown"]; + if ([key isEqualToString: @"AC3 Passthru"] || + [key isEqualToString: @"DTS Passthru"] || + [key isEqualToString: @"DTS-HD Passthru"]) + { + [dict setObject: @"None" forKey: @"AudioMixdown"]; + } + else if ([key isEqualToString: @"6-channel discrete"]) + { + [dict setObject: @"5.1 Channels" forKey: @"AudioMixdown"]; + } + + // If our preset wants us to support a codec that the track does not support, instead + // of changing the codec we remove the audio instead. + if ([newAudio setCodecFromName: [dict objectForKey: @"AudioEncoder"]]) + { + [newAudio setMixdownFromName: [dict objectForKey: @"AudioMixdown"]]; + [newAudio setSampleRateFromName: [dict objectForKey: @"AudioSamplerate"]]; + if (!fallenBack) + { + [newAudio setBitRateFromName: [dict objectForKey: @"AudioBitrate"]]; + } + [newAudio setDrc: [dict objectForKey: @"AudioTrackDRCSlider"]]; + [newAudio setGain: [dict objectForKey: @"AudioTrackGainSlider"]]; + } + else + { + [self removeObjectFromAudioArrayAtIndex: [self countOfAudioArray] - 1]; + } + [newAudio release]; + } + } +} + +// This matches the FIRST track with the specified prefix, otherwise it uses the defaultIfNotFound value +- (unsigned int) _trackWithTitlePrefix: (NSString *) prefix defaultIfNotFound: (unsigned int) defaultIfNotFound + +{ + unsigned int retval = defaultIfNotFound; + int count = [masterTrackArray count]; + NSString *languageTitle; + BOOL found = NO; + + // We search for the prefix noting that our titles have the format %d: %s where the %s is the prefix + for (unsigned int i = 1; i < count && !found; i++) // Note that we skip the "None" track + { + languageTitle = [[masterTrackArray objectAtIndex: i] objectForKey: keyAudioTrackName]; + if ([[languageTitle substringFromIndex: [languageTitle rangeOfString: @" "].location + 1] hasPrefix: prefix]) + { + retval = i; + found = YES; + } + } + return retval; +} + +// When we add a track and we do not have a preset to use for the track we use +// this bogus preset to do the dirty work. +- (NSMutableDictionary *) _defaultPreset + +{ + static NSMutableDictionary *retval = nil; + + if (!retval) + { + retval = [[NSMutableDictionary dictionaryWithObjectsAndKeys: + [NSArray arrayWithObject: + [NSDictionary dictionaryWithObjectsAndKeys: + [NSNumber numberWithInt: 1], @"AudioTrack", + @"AAC (faac)", @"AudioEncoder", + @"Dolby Pro Logic II", @"AudioMixdown", + @"Auto", @"AudioSamplerate", + @"160", @"AudioBitrate", + [NSNumber numberWithFloat: 0.0], @"AudioTrackDRCSlider", + [NSNumber numberWithFloat: 0.0], @"AudioTrackGainSlider", + nil]], @"AudioList", nil] retain]; + } + return retval; +} + +- (void) addTracksFromPreset: (NSMutableDictionary *) aPreset allTracks: (BOOL) allTracks + +{ + id whatToUse = [self _presetAudioArrayFromPreset: aPreset]; + NSMutableArray *tracksToAdd = [[NSMutableArray alloc] init]; + + NSArray* preferredLanguages = [NSArray arrayWithObjects: + [[NSUserDefaults standardUserDefaults] stringForKey: @"DefaultLanguage"], + [[NSUserDefaults standardUserDefaults] stringForKey: @"AlternateLanguage"], + nil]; + + // Add tracks of Default and Alternate Language by name + for(id languageName in preferredLanguages) + { + int trackNumber = [self _trackWithTitlePrefix: languageName defaultIfNotFound: 0]; + + if(trackNumber > 0 && [tracksToAdd indexOfObject:[NSNumber numberWithInt:trackNumber]] == NSNotFound) + { + [tracksToAdd addObject:[NSNumber numberWithInt:trackNumber]]; + } + } + + // If no preferred Language was found, add standard track 1 + if([tracksToAdd count] == 0) + { + [tracksToAdd addObject:[NSNumber numberWithInt:1]]; + } + + // If all tracks should be added, add all track numbers that are not yet processed + if (allTracks) + { + unsigned int count = [masterTrackArray count]; + for (unsigned int i = 1; i < count; i++) + { + NSNumber *trackNumber = [NSNumber numberWithInt:i]; + if([tracksToAdd indexOfObject:trackNumber] == NSNotFound) + { + [tracksToAdd addObject:trackNumber]; + } + } + } + + // Reinitialize the configured list of audio tracks + [self _clearAudioArray]; + + for(id trackNumber in tracksToAdd) + { + [self _processPresetAudioArray: whatToUse forTrack:[trackNumber intValue] andType: [[aPreset objectForKey: @"Type"] intValue]]; + } +} + +- (void) _ensureAtLeastOneNonEmptyTrackExists + +{ + int count = [self countOfAudioArray]; + if (0 == count || ![[self objectInAudioArrayAtIndex: 0] enabled]) + { + [self addTracksFromPreset: [self _defaultPreset] allTracks: NO]; + } + [self switchingTrackFromNone: nil]; // this ensures there is a None track at the end of the list +} + +- (void) addTracksFromPreset: (NSMutableDictionary *) aPreset + +{ + [self addTracksFromPreset: aPreset allTracks: NO]; + [self _ensureAtLeastOneNonEmptyTrackExists]; +} + +- (void) addAllTracksFromPreset: (NSMutableDictionary *) aPreset + +{ + [self addTracksFromPreset: aPreset allTracks: YES]; + [self _ensureAtLeastOneNonEmptyTrackExists]; +} + +- (BOOL) anyCodecMatches: (int) aCodecValue + +{ + BOOL retval = NO; + unsigned int audioArrayCount = [self countOfAudioArray]; + for (unsigned int i = 0; i < audioArrayCount && !retval; i++) + { + HBAudio *anAudio = [self objectInAudioArrayAtIndex: i]; + if ([anAudio enabled] && aCodecValue == [[[anAudio codec] objectForKey: keyAudioCodec] intValue]) + { + retval = YES; + } + } + return retval; +} + +- (void) addNewAudioTrack + +{ + HBAudio *newAudio = [[HBAudio alloc] init]; + [newAudio setController: self]; + [self insertObject: newAudio inAudioArrayAtIndex: [self countOfAudioArray]]; + [newAudio setVideoContainerTag: [self videoContainerTag]]; + [newAudio setTrack: noneTrack]; + [newAudio setDrc: [NSNumber numberWithFloat: 0.0]]; + [newAudio setGain: [NSNumber numberWithFloat: 0.0]]; + [newAudio release]; +} + +#pragma mark - +#pragma mark Notification Handling + +- (void) settingTrackToNone: (HBAudio *) newNoneTrack + +{ + // If this is not the last track in the array we need to remove it. We then need to see if a new + // one needs to be added (in the case when we were at maximum count and this switching makes it + // so we are no longer at maximum. + NSUInteger index = [audioArray indexOfObject: newNoneTrack]; + + if (NSNotFound != index && index < [self countOfAudioArray] - 1) + { + [self removeObjectFromAudioArrayAtIndex: index]; + } + [self switchingTrackFromNone: nil]; // see if we need to add one to the list +} + +- (void) switchingTrackFromNone: (HBAudio *) noLongerNoneTrack + +{ + int count = [self countOfAudioArray]; + BOOL needToAdd = NO; + int maximumNumberOfAllowedAudioTracks = [HBController maximumNumberOfAllowedAudioTracks]; + + // If there is no last track that is None and we are less than our maximum number of permitted tracks, we add one. + if (count < maximumNumberOfAllowedAudioTracks) + { + if (0 < count) + { + HBAudio *lastAudio = [self objectInAudioArrayAtIndex: count - 1]; + if ([lastAudio enabled]) + { + needToAdd = YES; + } + } + else + { + needToAdd = YES; + } + } + + if (needToAdd) + { + [self addNewAudioTrack]; + } +} + +// This gets called whenever the video container changes. +- (void) containerChanged: (NSNotification *) aNotification + +{ + NSDictionary *notDict = [aNotification userInfo]; + + [self setVideoContainerTag: [notDict objectForKey: keyContainerTag]]; + + // Update each of the instances because this value influences possible settings. + NSEnumerator *enumerator = [audioArray objectEnumerator]; + HBAudio *audioObject; + + while (nil != (audioObject = [enumerator nextObject])) + { + [audioObject setVideoContainerTag: [self videoContainerTag]]; + } +} + +- (void) titleChanged: (NSNotification *) aNotification + +{ + NSDictionary *notDict = [aNotification userInfo]; + NSData *theData = [notDict objectForKey: keyTitleTag]; + hb_title_t *title = NULL; + + [theData getBytes: &title length: sizeof(title)]; + if (title) + { + hb_audio_config_t *audio; + hb_list_t *list = title->list_audio; + int i, count = hb_list_count(list); + + // Reinitialize the master list of available audio tracks from this title + NSMutableArray *newTrackArray = [NSMutableArray array]; + [noneTrack release]; + noneTrack = [[NSDictionary dictionaryWithObjectsAndKeys: + [NSNumber numberWithInt: 0], keyAudioTrackIndex, + NSLocalizedString(@"None", @"None"), keyAudioTrackName, + [NSNumber numberWithInt: 0], keyAudioInputCodec, + nil] retain]; + [newTrackArray addObject: noneTrack]; + for (i = 0; i < count; i++) + { + audio = (hb_audio_config_t *) hb_list_audio_config_item(list, i); + [newTrackArray addObject: [NSDictionary dictionaryWithObjectsAndKeys: + [NSNumber numberWithInt: i + 1], keyAudioTrackIndex, + [NSString stringWithFormat: @"%d: %s", i, audio->lang.description], keyAudioTrackName, + [NSNumber numberWithInt: audio->in.bitrate / 1000], keyAudioInputBitrate, + [NSNumber numberWithInt: audio->in.samplerate], keyAudioInputSampleRate, + [NSNumber numberWithInt: audio->in.codec], keyAudioInputCodec, + [NSNumber numberWithUnsignedLongLong: audio->in.channel_layout], keyAudioInputChannelLayout, + nil]]; + } + self.masterTrackArray = newTrackArray; + } + + // Reinitialize the configured list of audio tracks + [self _clearAudioArray]; + + if (![myController hasValidPresetSelected]) + { + [self _ensureAtLeastOneNonEmptyTrackExists]; + } +} + +#pragma mark - +#pragma mark KVC + +- (unsigned int) countOfAudioArray + +{ + return [audioArray count]; +} + +- (HBAudio *) objectInAudioArrayAtIndex: (unsigned int) index + +{ + return [audioArray objectAtIndex: index]; +} + +- (void) insertObject: (HBAudio *) audioObject inAudioArrayAtIndex: (unsigned int) index; + +{ + [audioArray insertObject: audioObject atIndex: index]; +} + +- (void) removeObjectFromAudioArrayAtIndex: (unsigned int) index + +{ + [audioArray removeObjectAtIndex: index]; +} + +@end + diff -Nru handbrake-0.9.9+dfsg/macosx/HBAudio.h handbrake-0.9.9+ppa1/macosx/HBAudio.h --- handbrake-0.9.9+dfsg/macosx/HBAudio.h 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/HBAudio.h 2011-06-13 20:27:46.000000000 +0000 @@ -0,0 +1,60 @@ +// +// HBAudio.h +// HandBrake +// +// Created on 2010-08-30. +// + +#import + +@class HBAudioController; + +extern NSString *keyAudioCodecName; +extern NSString *keyAudioSampleRateName; +extern NSString *keyAudioBitrateName; +extern NSString *keyAudioMixdownName; +extern NSString *keyAudioCodec; +extern NSString *keyAudioMixdown; +extern NSString *keyAudioSamplerate; +extern NSString *keyAudioBitrate; + +@interface HBAudio : NSObject + +{ + NSDictionary * track; + NSDictionary * codec; + NSDictionary * mixdown; + NSDictionary * sampleRate; + NSDictionary * bitRate; + NSNumber * drc; + NSNumber * gain; + NSNumber * videoContainerTag; + HBAudioController * controller; + NSMutableArray * codecs; + NSMutableArray * mixdowns; + NSMutableArray * bitRates; +} + +@property (nonatomic, retain) NSDictionary *track; +@property (nonatomic, retain) NSDictionary *codec; +@property (nonatomic, retain) NSDictionary *mixdown; +@property (nonatomic, retain) NSDictionary *sampleRate; +@property (nonatomic, retain) NSDictionary *bitRate; +@property (nonatomic, retain) NSNumber *drc; +@property (nonatomic, retain) NSNumber *gain; +@property (nonatomic, retain) NSNumber *videoContainerTag; +@property (nonatomic, assign) HBAudioController *controller; + +@property (nonatomic, retain) NSMutableArray *codecs; +@property (nonatomic, retain) NSMutableArray *mixdowns; +@property (nonatomic, readonly) NSArray *sampleRates; +@property (nonatomic, retain) NSArray *bitRates; +@property (nonatomic, readonly) BOOL enabled; + +- (void) setTrackFromIndex: (int) aValue; +- (BOOL) setCodecFromName: (NSString *) aValue; +- (void) setMixdownFromName: (NSString *) aValue; +- (void) setSampleRateFromName: (NSString *) aValue; +- (void) setBitRateFromName: (NSString *) aValue; + +@end diff -Nru handbrake-0.9.9+dfsg/macosx/HBAudio.m handbrake-0.9.9+ppa1/macosx/HBAudio.m --- handbrake-0.9.9+dfsg/macosx/HBAudio.m 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/HBAudio.m 2012-09-03 12:37:16.000000000 +0000 @@ -0,0 +1,657 @@ +// +// HBAudio.m +// HandBrake +// +// Created on 2010-08-30. +// + +#import "HBAudio.h" +#import "HBAudioController.h" +#import "hb.h" + +NSString *keyAudioCodecName = @"keyAudioCodecName"; +NSString *keyAudioMP4 = @"keyAudioMP4"; +NSString *keyAudioMKV = @"keyAudioMKV"; +NSString *keyAudioSampleRateName = @"keyAudioSampleRateName"; +NSString *keyAudioBitrateName = @"keyAudioBitrateName"; +NSString *keyAudioMustMatchTrack = @"keyAudioMustMatchTrack"; +NSString *keyAudioMixdownName = @"keyAudioMixdownName"; + +NSString *keyAudioCodec = @"codec"; +NSString *keyAudioMixdown = @"mixdown"; +NSString *keyAudioSamplerate = @"samplerate"; +NSString *keyAudioBitrate = @"bitrate"; + +static NSMutableArray *masterCodecArray = nil; +static NSMutableArray *masterMixdownArray = nil; +static NSMutableArray *masterSampleRateArray = nil; +static NSMutableArray *masterBitRateArray = nil; + +@interface NSArray (HBAudioSupport) +- (NSDictionary *) dictionaryWithObject: (id) anObject matchingKey: (NSString *) aKey; +- (NSDictionary *) lastDictionaryWithObject: (id) anObject matchingKey: (NSString *) aKey; +@end +@implementation NSArray (HBAudioSupport) +- (NSDictionary *) dictionaryWithObject: (id) anObject matchingKey: (NSString *) aKey reverse: (BOOL) reverse + +{ + NSDictionary *retval = nil; + NSEnumerator *enumerator = reverse ? [self reverseObjectEnumerator] : [self objectEnumerator]; + NSDictionary *dict; + id aValue; + + while (nil != (dict = [enumerator nextObject]) && !retval) + { + if (nil != (aValue = [dict objectForKey: aKey]) && [aValue isEqual: anObject]) + { + retval = dict; + } + } + return retval; +} +- (NSDictionary *) dictionaryWithObject: (id) anObject matchingKey: (NSString *) aKey +{ + return [self dictionaryWithObject: anObject matchingKey: aKey reverse: NO]; +} +- (NSDictionary *) lastDictionaryWithObject: (id) anObject matchingKey: (NSString *) aKey +{ + return [self dictionaryWithObject: anObject matchingKey: aKey reverse: YES]; +} + +@end + +@implementation HBAudio + +#pragma mark - +#pragma mark Object Setup + ++ (void) load + +{ + if ([HBAudio class] == self) + { + int i, audioMustMatch; + BOOL muxMKV, muxMP4; + NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; + NSDictionary *dict; + + masterCodecArray = [[NSMutableArray alloc] init]; // knowingly leaked + for (i = 0; i < hb_audio_encoders_count; i++) + { + if ((hb_audio_encoders[i].encoder & HB_ACODEC_PASS_FLAG) && + (hb_audio_encoders[i].encoder != HB_ACODEC_AUTO_PASS)) + { + audioMustMatch = (hb_audio_encoders[i].encoder & ~HB_ACODEC_PASS_FLAG); + } + else + { + audioMustMatch = 0; + } + muxMKV = (hb_audio_encoders[i].muxers & HB_MUX_MKV) ? YES : NO; + muxMP4 = (hb_audio_encoders[i].muxers & HB_MUX_MP4) ? YES : NO; + if (audioMustMatch) + { + [masterCodecArray addObject: [NSDictionary dictionaryWithObjectsAndKeys: + [NSString stringWithUTF8String: hb_audio_encoders[i].human_readable_name], keyAudioCodecName, + [NSNumber numberWithInt: hb_audio_encoders[i].encoder], keyAudioCodec, + [NSNumber numberWithBool: muxMP4], keyAudioMP4, + [NSNumber numberWithBool: muxMKV], keyAudioMKV, + [NSNumber numberWithInt: audioMustMatch], keyAudioMustMatchTrack, + nil]]; + } + else + { + [masterCodecArray addObject: [NSDictionary dictionaryWithObjectsAndKeys: + [NSString stringWithUTF8String: hb_audio_encoders[i].human_readable_name], keyAudioCodecName, + [NSNumber numberWithInt: hb_audio_encoders[i].encoder], keyAudioCodec, + [NSNumber numberWithBool: muxMP4], keyAudioMP4, + [NSNumber numberWithBool: muxMKV], keyAudioMKV, + [NSNumber numberWithBool: NO], keyAudioMustMatchTrack, + nil]]; + } + } + + masterMixdownArray = [[NSMutableArray alloc] init]; // knowingly leaked + for (i = 0; i < hb_audio_mixdowns_count; i++) + { + [masterMixdownArray addObject: [NSDictionary dictionaryWithObjectsAndKeys: + [NSString stringWithUTF8String: hb_audio_mixdowns[i].human_readable_name], keyAudioMixdownName, + [NSNumber numberWithInt: hb_audio_mixdowns[i].amixdown], keyAudioMixdown, + nil]]; + } + + // Note that for the Auto value we use 0 for the sample rate because our controller will give back the track's + // input sample rate when it finds this 0 value as the selected sample rate. We do this because the input + // sample rate depends on the track, which means it depends on the title, so cannot be nicely set up here. + masterSampleRateArray = [[NSMutableArray alloc] init]; // knowingly leaked + [masterSampleRateArray addObject: [NSDictionary dictionaryWithObjectsAndKeys: + NSLocalizedString(@"Auto", @"Auto"), keyAudioSampleRateName, + [NSNumber numberWithInt: 0], keyAudioSamplerate, + nil]]; + for (i = 0; i < hb_audio_rates_count; i++) + { + [masterSampleRateArray addObject: [NSDictionary dictionaryWithObjectsAndKeys: + [NSString stringWithUTF8String: hb_audio_rates[i].string], keyAudioSampleRateName, + [NSNumber numberWithInt: hb_audio_rates[i].rate], keyAudioSamplerate, + nil]]; + } + + masterBitRateArray = [[NSMutableArray alloc] init]; // knowingly leaked + for (i = 0; i < hb_audio_bitrates_count; i++) + { + dict = [NSDictionary dictionaryWithObjectsAndKeys: + [NSString stringWithUTF8String: hb_audio_bitrates[i].string], keyAudioBitrateName, + [NSNumber numberWithInt: hb_audio_bitrates[i].rate], keyAudioBitrate, + nil]; + [masterBitRateArray addObject: dict]; + } + + [pool release]; + } +} + +// Ensure the list of codecs is accurate +// Update the current value of codec based on the revised list +- (void) updateCodecs + +{ + NSMutableArray *permittedCodecs = [NSMutableArray array]; + unsigned int count = [masterCodecArray count]; + NSDictionary *dict; + NSString *keyThatAllows = nil; + + // Determine which key we use to see which codecs are permitted + switch ([videoContainerTag intValue]) + { + case HB_MUX_MP4: + keyThatAllows = keyAudioMP4; + break; + case HB_MUX_MKV: + keyThatAllows = keyAudioMKV; + break; + default: + keyThatAllows = @"error condition"; + break; + } + + // First get a list of the permitted codecs based on the internal rules + if (nil != track && [self enabled]) + { + BOOL goodToAdd; + + for (unsigned int i = 0; i < count; i++) + { + dict = [masterCodecArray objectAtIndex: i]; + + // First make sure only codecs permitted by the container are here + goodToAdd = [[dict objectForKey: keyThatAllows] boolValue]; + + // Now we make sure if DTS or AC3 is not available in the track it is not put in the codec list, but in a general way + if ([[dict objectForKey: keyAudioMustMatchTrack] boolValue]) + { + if ([[dict objectForKey: keyAudioMustMatchTrack] intValue] != [[[self track] objectForKey: keyAudioInputCodec] intValue]) + { + goodToAdd = NO; + } + } + + if (goodToAdd) + { + [permittedCodecs addObject: dict]; + } + } + } + + // Now make sure the permitted list and the actual ones matches + [self setCodecs: permittedCodecs]; + + // Ensure our codec is on the list of permitted codecs + if (![self codec] || ![permittedCodecs containsObject: [self codec]]) + { + if (0 < [permittedCodecs count]) + { + [self setCodec: [permittedCodecs objectAtIndex: 0]]; // This should be defaulting to Core Audio + } + else + { + [self setCodec: nil]; + } + } +} + +- (void) updateMixdowns: (BOOL) shouldSetDefault + +{ + NSMutableArray *permittedMixdowns = [NSMutableArray array]; + NSDictionary *dict; + int currentMixdown; + + unsigned long long channelLayout = [[track objectForKey: keyAudioInputChannelLayout] unsignedLongLongValue]; + unsigned int count = [masterMixdownArray count]; + int codecCodec = [[codec objectForKey: keyAudioCodec] intValue]; + int theDefaultMixdown = hb_get_default_mixdown(codecCodec, channelLayout); + + for (unsigned int i = 0; i < count; i++) + { + dict = [masterMixdownArray objectAtIndex: i]; + currentMixdown = [[dict objectForKey: keyAudioMixdown] intValue]; + + if (hb_mixdown_is_supported(currentMixdown, codecCodec, channelLayout)) + { + [permittedMixdowns addObject: dict]; + } + } + + if (![self enabled]) + { + permittedMixdowns = nil; + } + + // Now make sure the permitted list and the actual ones matches + [self setMixdowns: permittedMixdowns]; + + // Select the proper one + if (shouldSetDefault) + { + [self setMixdown: [permittedMixdowns dictionaryWithObject: [NSNumber numberWithInt: theDefaultMixdown] + matchingKey: keyAudioMixdown]]; + } + + if (![self mixdown] || ![permittedMixdowns containsObject: [self mixdown]]) + { + [self setMixdown: [permittedMixdowns lastObject]]; + } +} + +- (void) updateBitRates: (BOOL) shouldSetDefault + +{ + NSMutableArray *permittedBitRates = [NSMutableArray array]; + NSDictionary *dict; + int minBitRate; + int maxBitRate; + int currentBitRate; + BOOL shouldAdd; + + unsigned int count = [masterBitRateArray count]; + int trackInputBitRate = [[[self track] objectForKey: keyAudioInputBitrate] intValue]; + int theSampleRate = [[[self sampleRate] objectForKey: keyAudioSamplerate] intValue]; + + if (0 == theSampleRate) // this means Auto + { + theSampleRate = [[[self track] objectForKey: keyAudioInputSampleRate] intValue]; + } + + int ourCodec = [[codec objectForKey: keyAudioCodec] intValue]; + int ourMixdown = [[[self mixdown] objectForKey: keyAudioMixdown] intValue]; + hb_get_audio_bitrate_limits(ourCodec, theSampleRate, ourMixdown, &minBitRate, &maxBitRate); + int theDefaultBitRate = hb_get_default_audio_bitrate(ourCodec, theSampleRate, ourMixdown); + + BOOL codecIsPassthru = ([[codec objectForKey: keyAudioCodec] intValue] & HB_ACODEC_PASS_FLAG) ? YES : NO; + BOOL codecIsLossless = (theDefaultBitRate == -1) ? YES : NO; + + if (codecIsPassthru) + { + NSDictionary *sourceBitRate = [masterBitRateArray dictionaryWithObject: [NSNumber numberWithInt: trackInputBitRate] + matchingKey: keyAudioBitrate]; + if (!sourceBitRate) + { + // the source bitrate isn't in the master array - create it + sourceBitRate = [NSDictionary dictionaryWithObjectsAndKeys: + [NSString stringWithFormat: @"%d", trackInputBitRate], keyAudioBitrateName, + [NSNumber numberWithInt: trackInputBitRate], keyAudioBitrate, + nil]; + } + [permittedBitRates addObject: sourceBitRate]; + } + else if (codecIsLossless) + { + NSDictionary *bitRateNotApplicable = [NSDictionary dictionaryWithObjectsAndKeys: + [NSString stringWithString: @"N/A"], keyAudioBitrateName, + [NSNumber numberWithInt: -1], keyAudioBitrate, + nil]; + [permittedBitRates addObject: bitRateNotApplicable]; + } + else + { + for (unsigned int i = 0; i < count; i++) + { + dict = [masterBitRateArray objectAtIndex: i]; + currentBitRate = [[dict objectForKey: keyAudioBitrate] intValue]; + + // First ensure the bitrate falls within range of the codec + shouldAdd = (currentBitRate >= minBitRate && currentBitRate <= maxBitRate); + + if (shouldAdd) + { + [permittedBitRates addObject: dict]; + } + } + } + + if (![self enabled]) + { + permittedBitRates = nil; + } + + // Make sure we are updated with the permitted list + [self setBitRates: permittedBitRates]; + + // Select the proper one + if (shouldSetDefault) + { + [self setBitRateFromName: [NSString stringWithFormat:@"%d", theDefaultBitRate]]; + } + + if (![self bitRate] || ![permittedBitRates containsObject: [self bitRate]]) + { + [self setBitRate: [permittedBitRates lastObject]]; + } +} + +- (id) init + +{ + if (self = [super init]) + { + [self addObserver: self forKeyPath: @"videoContainerTag" options: 0 context: NULL]; + [self addObserver: self forKeyPath: @"track" options: NSKeyValueObservingOptionOld context: NULL]; + [self addObserver: self forKeyPath: @"codec" options: 0 context: NULL]; + [self addObserver: self forKeyPath: @"mixdown" options: 0 context: NULL]; + [self addObserver: self forKeyPath: @"sampleRate" options: 0 context: NULL]; + } + return self; +} + +#pragma mark - +#pragma mark Accessors + +@synthesize track; +@synthesize codec; +@synthesize mixdown; +@synthesize sampleRate; +@synthesize bitRate; +@synthesize drc; +@synthesize gain; +@synthesize videoContainerTag; +@synthesize controller; + +@synthesize codecs; +@synthesize mixdowns; +@synthesize bitRates; + +- (NSArray *) sampleRates +{ + return masterSampleRateArray; +} + +- (void) dealloc + +{ + [self removeObserver: self forKeyPath: @"videoContainerTag"]; + [self removeObserver: self forKeyPath: @"track"]; + [self removeObserver: self forKeyPath: @"codec"]; + [self removeObserver: self forKeyPath: @"mixdown"]; + [self removeObserver: self forKeyPath: @"sampleRate"]; + [self setTrack: nil]; + [self setCodec: nil]; + [self setMixdown: nil]; + [self setSampleRate: nil]; + [self setBitRate: nil]; + [self setDrc: nil]; + [self setGain: nil]; + [self setVideoContainerTag: nil]; + [self setCodecs: nil]; + [self setMixdowns: nil]; + [self setBitRates: nil]; + [super dealloc]; +} + +#pragma mark - +#pragma mark KVO + +- (void) observeValueForKeyPath: (NSString *) keyPath ofObject: (id) object change: (NSDictionary *) change context: (void *) context + +{ + if ([keyPath isEqualToString: @"videoContainerTag"]) + { + [self updateCodecs]; + } + else if ([keyPath isEqualToString: @"track"]) + { + if (nil != [self track]) + { + [self updateCodecs]; + [self updateMixdowns: YES]; + if ([self enabled]) + { + [self setSampleRate: [[self sampleRates] objectAtIndex: 0]]; // default to Auto + } + if ([[controller noneTrack] isEqual: [change objectForKey: NSKeyValueChangeOldKey]]) + { + [controller switchingTrackFromNone: self]; + } + if ([[controller noneTrack] isEqual: [self track]]) + { + [controller settingTrackToNone: self]; + } + } + } + else if ([keyPath isEqualToString: @"codec"]) + { + [self updateMixdowns: YES]; + [self updateBitRates: YES]; + } + else if ([keyPath isEqualToString: @"mixdown"]) + { + [self updateBitRates: YES]; + [[NSNotificationCenter defaultCenter] postNotificationName: HBMixdownChangedNotification object: self]; + } + else if ([keyPath isEqualToString: @"sampleRate"]) + { + [self updateBitRates: NO]; + } +} + +#pragma mark - +#pragma mark Special Setters + +- (void) setTrackFromIndex: (int) aValue + +{ + [self setTrack: [self.controller.masterTrackArray dictionaryWithObject: [NSNumber numberWithInt: aValue] + matchingKey: keyAudioTrackIndex]]; +} + +// This returns whether it is able to set the actual codec desired. +- (BOOL) setCodecFromName: (NSString *) aValue + +{ + NSDictionary *dict = [[self codecs] dictionaryWithObject: aValue matchingKey: keyAudioCodecName]; + + if (nil != dict) + { + [self setCodec: dict]; + } + return (nil != dict); +} + +- (void) setMixdownFromName: (NSString *) aValue + +{ + NSDictionary *dict = [[self mixdowns] dictionaryWithObject: aValue matchingKey: keyAudioMixdownName]; + + if (nil != dict) + { + [self setMixdown: dict]; + } +} + +- (void) setSampleRateFromName: (NSString *) aValue + +{ + NSDictionary *dict = [[self sampleRates] dictionaryWithObject: aValue matchingKey: keyAudioSampleRateName]; + + if (nil != dict) + { + [self setSampleRate: dict]; + } +} + +- (void) setBitRateFromName: (NSString *) aValue + +{ + NSDictionary *dict = [[self bitRates] dictionaryWithObject: aValue matchingKey: keyAudioBitrateName]; + + if (nil != dict) + { + [self setBitRate: dict]; + } +} + + +#pragma mark - +#pragma mark Validation + +// Because we have indicated that the binding for the drc validates immediately we can implement the +// key value binding method to ensure the drc stays in our accepted range. +- (BOOL) validateDrc: (id *) ioValue error: (NSError *) outError + +{ + BOOL retval = YES; + + if (nil != *ioValue) + { + if (0.0 < [*ioValue floatValue] && 1.0 > [*ioValue floatValue]) + { + *ioValue = [NSNumber numberWithFloat: 1.0]; + } + } + + return retval; +} + +// Because we have indicated that the binding for the gain validates immediately we can implement the +// key value binding method to ensure the gain stays in our accepted range. + +- (BOOL) validateGain: (id *) ioValue error: (NSError *) outError +{ + BOOL retval = YES; + + if (nil != *ioValue) + { + if (0.0 < [*ioValue floatValue] && 1.0 > [*ioValue floatValue]) + { + *ioValue = [NSNumber numberWithFloat: 0.0]; + } + } + + return retval; +} + +#pragma mark - +#pragma mark Bindings Support + +- (BOOL) enabled + +{ + return (nil != track) ? (![track isEqual: [controller noneTrack]]) : NO; +} + +- (BOOL) mixdownEnabled + +{ + BOOL retval = [self enabled]; + + if (retval) + { + int myMixdown = [[[self mixdown] objectForKey: keyAudioMixdown] intValue]; + if (myMixdown == HB_AMIXDOWN_NONE) + { + // "None" mixdown (passthru) + retval = NO; + } + } + return retval; +} + +- (BOOL) bitrateEnabled + +{ + BOOL retval = [self enabled]; + + if (retval) + { + int myCodecCodec = [[[self codec] objectForKey: keyAudioCodec] intValue]; + int myCodecDefaultBitrate = hb_get_default_audio_bitrate(myCodecCodec, 0, 0); + if (myCodecDefaultBitrate < 0) + { + retval = NO; + } + } + return retval; +} + +- (BOOL) AC3Enabled + +{ + BOOL retval = [self enabled]; + + if (retval) + { + int myTrackCodec = [[[self track] objectForKey: keyAudioInputCodec] intValue]; + int myCodecCodec = [[[self codec] objectForKey: keyAudioCodec] intValue]; + if (HB_ACODEC_AC3 != myTrackCodec || HB_ACODEC_AC3_PASS == myCodecCodec) + { + retval = NO; + } + } + return retval; +} + +- (BOOL) PassThruDisabled + +{ + BOOL retval = [self enabled]; + + if (retval) + { + int myCodecCodec = [[[self codec] objectForKey: keyAudioCodec] intValue]; + if (myCodecCodec & HB_ACODEC_PASS_FLAG) + { + retval = NO; + } + } + return retval; +} + ++ (NSSet *) keyPathsForValuesAffectingValueForKey: (NSString *) key + +{ + NSSet *retval = nil; + + if ([key isEqualToString: @"enabled"]) + { + retval = [NSSet setWithObjects: @"track", nil]; + } + else if ([key isEqualToString: @"PassThruDisabled"]) + { + retval = [NSSet setWithObjects: @"track", @"codec", nil]; + } + else if ([key isEqualToString: @"AC3Enabled"]) + { + retval = [NSSet setWithObjects: @"track", @"codec", nil]; + } + else if ([key isEqualToString: @"bitrateEnabled"]) + { + retval = [NSSet setWithObjects: @"track", @"codec", nil]; + } + else if ([key isEqualToString: @"mixdownEnabled"]) + { + retval = [NSSet setWithObjects: @"track", @"mixdown", nil]; + } + return retval; +} + +@end + diff -Nru handbrake-0.9.9+dfsg/macosx/HBCore.h handbrake-0.9.9+ppa1/macosx/HBCore.h --- handbrake-0.9.9+dfsg/macosx/HBCore.h 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/HBCore.h 2008-01-11 19:00:30.000000000 +0000 @@ -0,0 +1,52 @@ +/** + * @file + * Interface of class HBCore. + */ + +#import + +extern const NSString *HBStateIdle; +extern const NSString *HBStateScanning; +extern const NSString *HBStateScanDone; +extern const NSString *HBStateWorking; +extern const NSString *HBStatePaused; +extern const NSString *HBStateWorkDone; +extern const NSString *HBStateMuxing; +extern const NSString *HBStateAll; + +extern NSString *HBCoreScanningNotification; +extern NSString *HBCoreScanDoneNotification; +extern NSString *HBCoreWorkingNotification; +extern NSString *HBCorePausedNotification; +extern NSString *HBCoreWorkDoneNotification; +extern NSString *HBCoreMuxingNotification; + +/** + * HBCore is an Objective-C interface to the low-level HandBrake library. + * HBCore monitors state changes of libhb and provides notifications via + * NSNotificationCenter to any object who needs them. It can also be used + * to implement properties that can be directly bound to elements of the gui. + */ +@interface HBCore : NSObject +{ + /// Pointer to libhb handle. + struct hb_handle_s *hb_handle; + + /// Pointer to latest state information returned by libhb. + struct hb_state_s *hb_state; + + /// Timer used to poll libhb for state changes. + NSTimer *updateTimer; + + /// Current state of HBCore; one of the HBState* constants. + const NSString *state; +} + +- (id)init; +- (BOOL)openInDebugMode:(BOOL)debugMode checkForUpdates:(BOOL)checkForUpdates; +- (BOOL)close; +- (NSString *)state; +- (struct hb_handle_s *)hb_handle; +- (const struct hb_state_s *)hb_state; + +@end diff -Nru handbrake-0.9.9+dfsg/macosx/HBCore.m handbrake-0.9.9+ppa1/macosx/HBCore.m --- handbrake-0.9.9+dfsg/macosx/HBCore.m 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/HBCore.m 2008-01-11 19:00:30.000000000 +0000 @@ -0,0 +1,270 @@ +/** + * @file + * Implementation of class HBCore. + */ + +#import "HBCore.h" +#include "hb.h" + +// These constants specify the current state of HBCore. + +const NSString *HBStateIdle = @"HBStateIdle"; ///< HB is doing nothing (HB_STATE_IDLE) +const NSString *HBStateScanning = @"HBStateScanning"; ///< HB is scanning (HB_STATE_SCANNING) +const NSString *HBStateScanDone = @"HBStateScanDone"; ///< Scanning has been completed (HB_STATE_SCANDONE) +const NSString *HBStateWorking = @"HBStateWorking"; ///< HB is encoding (HB_STATE_WORKING) +const NSString *HBStatePaused = @"HBStatePaused"; ///< Encoding is paused (HB_STATE_PAUSED) +const NSString *HBStateWorkDone = @"HBStateWorkDone"; ///< Encoding has been completed (HB_STATE_WORKDONE) +const NSString *HBStateMuxing = @"HBStateMuxing"; ///< HB is muxing (HB_STATE_MUXING) + + +// These constants specify various status notifications sent by HBCore + +/// Notification sent to update status while scanning. Matches HB_STATE_SCANNING constant in libhb. +NSString *HBCoreScanningNotification = @"HBCoreScanningNotification"; + +/// Notification sent after scanning is complete. Matches HB_STATE_SCANDONE constant in libhb. +NSString *HBCoreScanDoneNotification = @"HBCoreScanDoneNotification"; + +/// Notification sent to update status while encoding. Matches HB_STATE_WORKING constant in libhb. +NSString *HBCoreWorkingNotification = @"HBCoreWorkingNotification"; + +/// Notification sent when encoding is paused. Matches HB_STATE_PAUSED constant in libhb. +NSString *HBCorePausedNotification = @"HBCorePausedNotification"; + +/// Notification sent after encoding is complete. Matches HB_STATE_WORKDONE constant in libhb. +NSString *HBCoreWorkDoneNotification = @"HBCoreWorkDoneNotification"; + +/// Notification sent to update status while muxing. Matches HB_STATE_MUXING constant in libhb. +NSString *HBCoreMuxingNotification = @"HBCoreMuxingNotification"; + +/** + * Private methods of HBCore. + */ +@interface HBCore (Private) +- (NSString *)stateAsString:(int)stateValue; +@end + +@implementation HBCore + +/** + * Initializes HBCore. + */ +- (id)init +{ + if (self = [super init]) + { + state = HBStateIdle; + hb_state = malloc(sizeof(struct hb_state_s)); + } + return self; +} + +/** + * Releases resources. + */ +- (void)dealloc +{ + free(hb_state); + [super dealloc]; +} + +/** + * Opens low level HandBrake library. This should be called once before other + * functions HBCore are used. + * + * @param debugMode If set to YES, libhb will print verbose debug output. + * @param checkForUpdates If set to YES, libhb checks for updated versions. + * + * @return YES if libhb was opened, NO if there was an error. + */ +- (BOOL)openInDebugMode:(BOOL)debugMode checkForUpdates:(BOOL)checkForUpdates; +{ + NSAssert(!hb_handle, @"[HBCore openInDebugMode:checkForUpdates:] libhb is already open"); + if (hb_handle) + return NO; + + state = HBStateIdle; + + hb_handle = hb_init(debugMode ? HB_DEBUG_ALL : HB_DEBUG_NONE, checkForUpdates); + if (!hb_handle) + return NO; + + updateTimer = [[NSTimer scheduledTimerWithTimeInterval:0.2 + target:self + selector:@selector(stateUpdateTimer:) + userInfo:NULL + repeats:YES] retain]; + + [[NSRunLoop currentRunLoop] addTimer:updateTimer forMode:NSModalPanelRunLoopMode]; + return YES; +} + +/** + * Closes low level HandBrake library and releases resources. + * + * @return YES if libhb was closed successfully, NO if there was an error. + */ +- (BOOL)close +{ + NSAssert(hb_handle, @"[HBCore close] libhb is not open"); + if (!hb_handle) + return NO; + + [updateTimer invalidate]; + [updateTimer release]; + updateTimer = nil; + hb_close(&hb_handle); + hb_handle = NULL; + return YES; +} + +/** + * Returns libhb handle used by this HBCore instance. + */ +- (struct hb_handle_s *)hb_handle +{ + return hb_handle; +} + +/** + * Returns current state of HBCore. + * + * @return One of the HBState* string constants. + */ +- (const NSString *)state +{ + return state; +} + +/** + * Returns latest hb_state_s information struct returned by libhb. + * + * @return Pointer to a hb_state_s struct containing state information of libhb. + */ +- (const struct hb_state_s *)hb_state +{ + return hb_state; +} + +@end + +@implementation HBCore (Private) + +/** + * Transforms a libhb state constant to a matching HBCore state constant. + */ +- (const NSString *)stateAsString:(int)stateValue +{ + switch (stateValue) + { + case HB_STATE_IDLE: + return HBStateIdle; + case HB_STATE_SCANNING: + return HBStateScanning; + case HB_STATE_SCANDONE: + return HBStateScanDone; + case HB_STATE_WORKING: + return HBStateWorking; + case HB_STATE_PAUSED: + return HBStatePaused; + case HB_STATE_WORKDONE: + return HBStateWorkDone; + case HB_STATE_MUXING: + return HBStateMuxing; + default: + NSAssert1(NO, @"[HBCore stateAsString:] unknown state %d", stateValue); + return nil; + } +} + +/** + * This method polls libhb continuously for state changes and processes them. + * Additional processing for each state is performed in methods that start + * with 'handle' (e.g. handleHBStateScanning). + */ +- (void)stateUpdateTimer:(NSTimer *)timer +{ + if (!hb_handle) + { + // Libhb is not open so we cannot do anything. + return; + } + hb_get_state(hb_handle, hb_state); + + if (hb_state->state == HB_STATE_IDLE) + { + // Libhb reported HB_STATE_IDLE, so nothing interesting has happened. + return; + } + + // Update HBCore state to reflect the current state of libhb + NSString *newState = [self stateAsString:hb_state->state]; + if (newState != state) + { + [self willChangeValueForKey:@"state"]; + state = newState; + [self didChangeValueForKey:@"state"]; + } + + // Determine name of the method that does further processing for this state + // and call it. + SEL sel = NSSelectorFromString([NSString stringWithFormat:@"handle%@", state]); + if ([self respondsToSelector:sel]) + [self performSelector:sel]; +} + +/** + * Processes HBStateScanning state information. Current implementation just + * sends HBCoreScanningNotification. + */ +- (void)handleHBStateScanning +{ + [[NSNotificationCenter defaultCenter] postNotificationName:HBCoreScanningNotification object:self]; +} + +/** + * Processes HBStateScanDone state information. Current implementation just + * sends HBCoreScanDoneNotification. + */ +- (void)handleHBStateScanDone +{ + [[NSNotificationCenter defaultCenter] postNotificationName:HBCoreScanDoneNotification object:self]; +} + +/** + * Processes HBStateWorking state information. Current implementation just + * sends HBCoreWorkingNotification. + */ +- (void)handleHBStateWorking +{ + [[NSNotificationCenter defaultCenter] postNotificationName:HBCoreWorkingNotification object:self]; +} + +/** + * Processes HBStatePaused state information. Current implementation just + * sends HBCorePausedNotification. + */ +- (void)handleHBStatePaused +{ + [[NSNotificationCenter defaultCenter] postNotificationName:HBCorePausedNotification object:self]; +} + +/** + * Processes HBStateWorkDone state information. Current implementation just + * sends HBCoreWorkDoneNotification. + */ +- (void)handleHBStateWorkDone +{ + [[NSNotificationCenter defaultCenter] postNotificationName:HBCoreWorkDoneNotification object:self]; +} + +/** + * Processes HBStateMuxing state information. Current implementation just + * sends HBCoreMuxingNotification. + */ +- (void)handleHBStateMuxing +{ + [[NSNotificationCenter defaultCenter] postNotificationName:HBCoreMuxingNotification object:self]; +} + +@end diff -Nru handbrake-0.9.9+dfsg/macosx/HBDVDDetector.h handbrake-0.9.9+ppa1/macosx/HBDVDDetector.h --- handbrake-0.9.9+dfsg/macosx/HBDVDDetector.h 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/HBDVDDetector.h 2008-04-15 17:08:31.000000000 +0000 @@ -0,0 +1,25 @@ + /** + * HBDVDDetector.h + * 8/17/2007 + * + * This file is part of the HandBrake source code. + * Homepage: . + * It may be used under the terms of the GNU General Public License. + */ + +#import + + +@interface HBDVDDetector : NSObject +{ + NSString *path; + NSString *bsdName; +} + ++ (HBDVDDetector *)detectorForPath: (NSString *)aPath; +- (HBDVDDetector *)initWithPath: (NSString *)aPath; + +- (BOOL)isVideoDVD; +- (NSString *)devicePath; + +@end \ No newline at end of file diff -Nru handbrake-0.9.9+dfsg/macosx/HBDVDDetector.m handbrake-0.9.9+ppa1/macosx/HBDVDDetector.m --- handbrake-0.9.9+dfsg/macosx/HBDVDDetector.m 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/HBDVDDetector.m 2011-04-25 14:23:37.000000000 +0000 @@ -0,0 +1,245 @@ +/** + * HBDriveDetector.m + * 8/17/2007 + * + * This file is part of the HandBrake source code. + * Homepage: . + * It may be used under the terms of the GNU General Public License. + */ + +#include +#include +#include + +#import "HBDVDDetector.h" + + +@interface HBDVDDetector (Private) + +- (NSString *)bsdName; +- (BOOL)pathHasVideoTS; +- (BOOL)deviceIsDVD; +- (io_service_t)getIOKitServiceForBSDName; +- (BOOL)isDVDService: (io_service_t)service; +- (BOOL)isWholeMediaService: (io_service_t)service; + +@end + + +@implementation HBDVDDetector + ++ (HBDVDDetector *)detectorForPath: (NSString *)aPath +{ + return [[[self alloc] initWithPath:aPath] autorelease]; +} + + +- (HBDVDDetector *)initWithPath: (NSString *)aPath +{ + NSAssert(aPath, @"nil string passed to drive detector."); + if( self = [super init] ) + { + path = [aPath retain]; + bsdName = nil; + } + return self; +} + + +- (void)dealloc +{ + [path release]; + path = nil; + [bsdName release]; + bsdName = nil; + [super dealloc]; +} + + +- (BOOL)isVideoDVD +{ + return ( [self pathHasVideoTS] && [self deviceIsDVD] ); +} + + +- (NSString *)devicePath +{ + return [NSString stringWithFormat:@"/dev/%@", [self bsdName]]; +} + +@end + + +@implementation HBDVDDetector (Private) + +- (NSString *)bsdName +{ + if ( bsdName ) + { + return bsdName; + } + + OSStatus err; + FSRef ref; + err = FSPathMakeRef( (const UInt8 *) [path fileSystemRepresentation], + &ref, NULL ); + if( err != noErr ) + { + return nil; + } + + // Get the volume reference number. + FSCatalogInfo catalogInfo; + err = FSGetCatalogInfo( &ref, kFSCatInfoVolume, &catalogInfo, NULL, NULL, + NULL); + if( err != noErr ) + { + return nil; + } + FSVolumeRefNum volRefNum = catalogInfo.volume; + + // Now let's get the device name + GetVolParmsInfoBuffer volumeParms; + err = FSGetVolumeParms ( volRefNum, &volumeParms, sizeof( volumeParms ) ); + + if( err != noErr ) + { + return nil; + } + + // A version 4 GetVolParmsInfoBuffer contains the BSD node name in the vMDeviceID field. + // It is actually a char * value. This is mentioned in the header CoreServices/CarbonCore/Files.h. + if( volumeParms.vMVersion < 4 ) + { + return nil; + } + + // vMDeviceID might be zero as is reported with experimental ZFS (zfs-119) support in Leopard. + if( !volumeParms.vMDeviceID ) + { + return nil; + } + + bsdName = [[NSString stringWithUTF8String:(const char *)volumeParms.vMDeviceID] retain]; + return bsdName; +} + + +- (BOOL)pathHasVideoTS +{ + // Check one level under the path + if( [[NSFileManager defaultManager] fileExistsAtPath: + [path stringByAppendingPathComponent:@"VIDEO_TS"]] ) + { + return YES; + } + + // Now check above the path + return [[path pathComponents] containsObject:@"VIDEO_TS"]; +} + + +- (BOOL)deviceIsDVD +{ + io_service_t service = [self getIOKitServiceForBSDName]; + if( service == IO_OBJECT_NULL ) + { + return NO; + } + BOOL result = [self isDVDService:service]; + IOObjectRelease(service); + return result; +} + + +- (io_service_t)getIOKitServiceForBSDName +{ + CFMutableDictionaryRef matchingDict; + matchingDict = IOBSDNameMatching( kIOMasterPortDefault, 0, [[self bsdName] UTF8String] ); + if( matchingDict == NULL ) + { + return IO_OBJECT_NULL; + } + + // Fetch the object with the matching BSD node name. There should only be + // one match, so IOServiceGetMatchingService is used instead of + // IOServiceGetMatchingServices to simplify the code. + return IOServiceGetMatchingService( kIOMasterPortDefault, matchingDict ); +} + + +- (BOOL)isDVDService: (io_service_t)service +{ + // Find the IOMedia object that represents the entire (whole) media that the + // volume is on. + // + // If the volume is on partitioned media, the whole media object will be a + // parent of the volume's media object. If the media is not partitioned, the + // volume's media object will be the whole media object. + // + // The whole media object is indicated in the IORegistry by the presence of + // a property with the key "Whole" and value "Yes". + + // Create an iterator across all parents of the service object passed in. + kern_return_t kernResult; + io_iterator_t iter; + kernResult = IORegistryEntryCreateIterator( service, + kIOServicePlane, + kIORegistryIterateRecursively | kIORegistryIterateParents, + &iter ); + if( kernResult != KERN_SUCCESS ) + { + return NO; + } + if( iter == IO_OBJECT_NULL ) + { + return NO; + } + + + // A reference on the initial service object is released in the do-while loop below, + // so add a reference to balance. + IOObjectRetain( service ); + + BOOL isDVD = NO; + do + { + isDVD = ( [self isWholeMediaService:service] && + IOObjectConformsTo(service, kIODVDMediaClass) ); + IOObjectRelease(service); + } while( !isDVD && (service = IOIteratorNext(iter)) ); + IOObjectRelease( iter ); + + return isDVD; +} + + +- (BOOL)isWholeMediaService: (io_service_t)service +{ + // + // Determine if the object passed in represents an IOMedia (or subclass) object. + // If it does, test the "Whole" property. + // + + Boolean isWholeMedia = NO; + + if( IOObjectConformsTo(service, kIOMediaClass) ) + { + CFTypeRef wholeMedia; + wholeMedia = IORegistryEntryCreateCFProperty( service, + CFSTR(kIOMediaWholeKey), + kCFAllocatorDefault, + 0); + if( !wholeMedia ) + { + return NO; + } + isWholeMedia = CFBooleanGetValue( (CFBooleanRef)wholeMedia ); + CFRelease(wholeMedia); + } + + return isWholeMedia; +} + + +@end \ No newline at end of file diff -Nru handbrake-0.9.9+dfsg/macosx/HBImageAndTextCell.h handbrake-0.9.9+ppa1/macosx/HBImageAndTextCell.h --- handbrake-0.9.9+dfsg/macosx/HBImageAndTextCell.h 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/HBImageAndTextCell.h 2008-04-15 17:08:31.000000000 +0000 @@ -0,0 +1,30 @@ +/* HBImageAndTextCell + + This file is part of the HandBrake source code. + Homepage: . + It may be used under the terms of the GNU General Public License. +*/ + +#import + +@interface HBImageAndTextCell : NSTextFieldCell +{ +@private + NSImage *image; + NSImageAlignment imageAlignment; // defaults to NSImageAlignTop. Supports NSImageAlignCenter & NSImageAlignBottom + NSSize imageSpacing; // horizontal and vertical spacing around the image +} + +- (void) setImage:(NSImage *)anImage; +- (NSImage *) image; + +- (void) setImageAlignment:(NSImageAlignment)alignment; +- (NSImageAlignment) imageAlignment; + +- (void)setImageSpacing:(NSSize)aSize; +- (NSSize)imageSpacing; + +- (void) drawWithFrame:(NSRect)cellFrame inView:(NSView *)controlView; +- (NSSize) cellSize; + +@end diff -Nru handbrake-0.9.9+dfsg/macosx/HBImageAndTextCell.m handbrake-0.9.9+ppa1/macosx/HBImageAndTextCell.m --- handbrake-0.9.9+dfsg/macosx/HBImageAndTextCell.m 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/HBImageAndTextCell.m 2009-03-02 11:42:11.000000000 +0000 @@ -0,0 +1,298 @@ +/* HBImageAndTextCell + + This file is part of the HandBrake source code. + Homepage: . + It may be used under the terms of the GNU General Public License. +*/ + + +#import "HBImageAndTextCell.h" + + +static inline CGFloat +xLeftInRect(NSSize innerSize, NSRect outerRect) +{ + return NSMinX(outerRect); +} + +static inline CGFloat +xCenterInRect(NSSize innerSize, NSRect outerRect) +{ + return MAX(NSMidX(outerRect) - (innerSize.width/2.0), 0.0); +} + +static inline CGFloat +xRightInRect(NSSize innerSize, NSRect outerRect) +{ + return MAX(NSMaxX(outerRect) - innerSize.width, 0.0); +} + +static inline CGFloat +yTopInRect(NSSize innerSize, NSRect outerRect, BOOL flipped) +{ + if (flipped) + return NSMinY(outerRect); + else + return MAX(NSMaxY(outerRect) - innerSize.height, 0.0); +} + +static inline CGFloat +yCenterInRect(NSSize innerSize, NSRect outerRect, BOOL flipped) +{ + return MAX(NSMidY(outerRect) - innerSize.height/2.0, 0.0); +} + +static inline CGFloat +yBottomInRect(NSSize innerSize, NSRect outerRect, BOOL flipped) +{ + if (flipped) + return MAX(NSMaxY(outerRect) - innerSize.height, 0.0); + else + return NSMinY(outerRect); +} + +static inline NSSize +scaleProportionally(NSSize imageSize, NSRect canvasRect) +{ + CGFloat ratio; + + // get the smaller ratio and scale the image size by it + ratio = MIN(NSWidth(canvasRect) / imageSize.width, + NSHeight(canvasRect) / imageSize.height); + + imageSize.width *= ratio; + imageSize.height *= ratio; + + return imageSize; +} + + + +@implementation HBImageAndTextCell + +-(id)initTextCell:(NSString *)aString +{ + if (self = [super initTextCell:aString]) + { + imageAlignment = NSImageAlignTop; + imageSpacing = NSMakeSize (3.0, 2.0); + } + return self; +} + +-(id)initWithCoder:(NSCoder *)decoder +{ + if (self = [super initWithCoder:decoder]) + { + imageAlignment = NSImageAlignTop; + imageSpacing = NSMakeSize (3.0, 2.0); + } + return self; +} + +- (void)dealloc +{ + [image release]; + image = nil; + [super dealloc]; +} + +- copyWithZone:(NSZone *)zone +{ + HBImageAndTextCell *cell = (HBImageAndTextCell *)[super copyWithZone:zone]; + cell->image = [image retain]; + return cell; +} + +- (void)setImage:(NSImage *)anImage +{ + if (anImage != image) + { + [image release]; + image = [anImage retain]; + } +} + +- (NSImage *)image +{ + return image; +} + +- (void) setImageAlignment:(NSImageAlignment)alignment; +{ + imageAlignment = alignment; +} + +- (NSImageAlignment) imageAlignment; +{ + return imageAlignment; +} + +- (void)setImageSpacing:(NSSize)aSize; +{ + imageSpacing = aSize; +} + +- (NSSize)imageSpacing +{ + return imageSpacing; +} + +- (void)editWithFrame:(NSRect)aRect inView:(NSView *)controlView editor:(NSText *)textObj delegate:(id)anObject event:(NSEvent *)theEvent +{ + NSRect textFrame, imageFrame; + NSDivideRect (aRect, &imageFrame, &textFrame, (imageSpacing.width * 2) + [image size].width, NSMinXEdge); + [super editWithFrame: textFrame inView: controlView editor:textObj delegate:anObject event: theEvent]; +} + +- (void)selectWithFrame:(NSRect)aRect inView:(NSView *)controlView editor:(NSText *)textObj delegate:(id)anObject start:(NSInteger)selStart length:(NSInteger)selLength +{ + NSRect textFrame, imageFrame; + NSDivideRect (aRect, &imageFrame, &textFrame, (imageSpacing.width * 2) + [image size].width, NSMinXEdge); + [super selectWithFrame: textFrame inView: controlView editor:textObj delegate:anObject start:selStart length:selLength]; +} + +- (void)drawWithFrame:(NSRect)cellFrame inView:(NSView *)controlView +{ +#if 1 + if (image != nil) + { + NSSize imageSize; + NSRect imageFrame; + + imageSize = [image size]; + NSDivideRect(cellFrame, &imageFrame, &cellFrame, (imageSpacing.width * 2) + imageSize.width, NSMinXEdge); + if ([self drawsBackground]) + { + [[self backgroundColor] set]; + NSRectFill(imageFrame); + } + imageFrame.origin.x += imageSpacing.width; + imageFrame.size = imageSize; + + switch (imageAlignment) + { + default: + case NSImageAlignTop: + if ([controlView isFlipped]) + imageFrame.origin.y += imageFrame.size.height; + else + imageFrame.origin.y += (cellFrame.size.height - imageFrame.size.height); + break; + + case NSImageAlignCenter: + if ([controlView isFlipped]) + imageFrame.origin.y += ceil((cellFrame.size.height + imageFrame.size.height) / 2); + else + imageFrame.origin.y += ceil((cellFrame.size.height - imageFrame.size.height) / 2); + break; + + case NSImageAlignBottom: + if ([controlView isFlipped]) + imageFrame.origin.y += cellFrame.size.height; + // for unflipped, imageFrame is already correct + break; + + } + + [image compositeToPoint:imageFrame.origin operation:NSCompositeSourceOver]; + } + + [super drawWithFrame:cellFrame inView:controlView]; +#endif + + +#if 0 // this snippet supports all alignment values plus potentially scaling. + if (image != nil) + { + NSSize imageSize; + NSSize srcImageSize; + NSRect imageFrame; + NSPoint position; + BOOL flipped = [controlView isFlipped]; + + imageSize = [image size]; + srcImageSize = imageSize; // this will be more useful once/if we support scaling + + NSDivideRect(cellFrame, &imageFrame, &cellFrame, 12 + imageSize.width, NSMinXEdge); + if ([self drawsBackground]) + { + [[self backgroundColor] set]; + NSRectFill(imageFrame); + } + + switch (imageAlignment) + { + default: + case NSImageAlignLeft: + position.x = xLeftInRect(imageSize, imageFrame); + position.y = yCenterInRect(imageSize, imageFrame, flipped); + break; + case NSImageAlignRight: + position.x = xRightInRect(imageSize, imageFrame); + position.y = yCenterInRect(imageSize, imageFrame, flipped); + break; + case NSImageAlignCenter: + position.x = xCenterInRect(imageSize, imageFrame); + position.y = yCenterInRect(imageSize, imageFrame, flipped); + break; + case NSImageAlignTop: + position.x = xCenterInRect(imageSize, imageFrame); + position.y = yTopInRect(imageSize, imageFrame, flipped); + break; + case NSImageAlignBottom: + position.x = xCenterInRect(imageSize, imageFrame); + position.y = yBottomInRect(imageSize, imageFrame, flipped); + break; + case NSImageAlignTopLeft: + position.x = xLeftInRect(imageSize, imageFrame); + position.y = yTopInRect(imageSize, imageFrame, flipped); + break; + case NSImageAlignTopRight: + position.x = xRightInRect(imageSize, imageFrame); + position.y = yTopInRect(imageSize, imageFrame, flipped); + break; + case NSImageAlignBottomLeft: + position.x = xLeftInRect(imageSize, imageFrame); + position.y = yBottomInRect(imageSize, imageFrame, flipped); + break; + case NSImageAlignBottomRight: + position.x = xRightInRect(imageSize, imageFrame); + position.y = yBottomInRect(imageSize, imageFrame, flipped); + break; + } + + // account for flipped views + if (flipped) + { + position.y += imageSize.height; + imageSize.height = -imageSize.height; + } + + // Set image flipping to match view. Don't know if this is really the best way + // to deal with flipped views and images. + if ([image isFlipped] != flipped) + [image setFlipped: flipped]; + + // draw! + [image drawInRect: NSMakeRect(position.x, position.y, imageSize.width, imageSize.height) + fromRect: NSMakeRect(0, 0, srcImageSize.width, + srcImageSize.height) + operation: NSCompositeSourceOver + fraction: 1.0]; + + } + + [super drawWithFrame:cellFrame inView:controlView]; +#endif +} + +- (NSSize)cellSize +{ + NSSize cellSize = [super cellSize]; + cellSize.width += (image ? [image size].width + (imageSpacing.width * 2) : 0); + return cellSize; +} + +@end + diff -Nru handbrake-0.9.9+dfsg/macosx/HBOutputPanelController.h handbrake-0.9.9+ppa1/macosx/HBOutputPanelController.h --- handbrake-0.9.9+dfsg/macosx/HBOutputPanelController.h 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/HBOutputPanelController.h 2008-10-30 18:11:58.000000000 +0000 @@ -0,0 +1,38 @@ +/** + * @file + * @date 18.5.2007 + * + * Interface of class HBOutputPanelController. + */ + +#import + +/** + * This class implements a panel that displays all text that is written + * to stderr. User can easily copy the text to pasteboard from context menu. + */ +@interface HBOutputPanelController : NSWindowController +{ + /// Textview that displays debug output. + IBOutlet NSTextView *textView; + + /// Text storage for the debug output. + NSTextStorage *outputTextStorage; + + /// Path to log text file. + NSString *outputLogFile; + /// Path to individual log text file. + NSString *outputLogFileForEncode; + BOOL encodeLogOn; +} + +- (IBAction)showOutputPanel:(id)sender; +- (IBAction)clearOutput:(id)sender; +- (IBAction)copyAllOutputToPasteboard:(id)sender; +- (IBAction)openActivityLogFile:(id)sender; +- (IBAction)openEncodeLogDirectory:(id)sender; +- (IBAction)clearActivityLogFile:(id)sender; +- (void) startEncodeLog:(NSString *) logPath; +- (void) endEncodeLog; + +@end diff -Nru handbrake-0.9.9+dfsg/macosx/HBOutputPanelController.m handbrake-0.9.9+ppa1/macosx/HBOutputPanelController.m --- handbrake-0.9.9+dfsg/macosx/HBOutputPanelController.m 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/HBOutputPanelController.m 2010-01-13 00:43:05.000000000 +0000 @@ -0,0 +1,291 @@ +/** + * @file + * @date 18.5.2007 + * + * Implementation of class HBOutputPanelController. + */ + +#import "HBOutputPanelController.h" +#import "HBOutputRedirect.h" + +/// Maximum amount of characters that can be shown in the view. +// Original value used by cleaner +//#define TextStorageUpperSizeLimit 20000 +// lets use this higher value for now for better gui debugging +#define TextStorageUpperSizeLimit 125000 + +/// When old output is removed, this is the amount of characters that will be +/// left in outputTextStorage. +// Original value used by cleaner +//#define TextStorageLowerSizeLimit 15000 +// lets use this higher value for now for better gui debugging +#define TextStorageLowerSizeLimit 120000 + +@implementation HBOutputPanelController + +/** + * Initializes the object, creates outputTextStorage and starts redirection of stderr. + */ +- (id)init +{ + if( (self = [super initWithWindowNibName:@"OutputPanel"]) ) + { + /* NSWindowController likes to lazily load its window nib. Since this + * controller tries to touch the outlets before accessing the window, we + * need to force it to load immadiately by invoking its accessor. + * + * If/when we switch to using bindings, this can probably go away. + */ + [self window]; + + /* We initialize the outputTextStorage object for the activity window */ + outputTextStorage = [[NSTextStorage alloc] init]; + + /* We declare the default NSFileManager into fileManager */ + NSFileManager * fileManager = [NSFileManager defaultManager]; + /* Establish the log file location to write to */ + /* We are initially using a .txt file as opposed to a .log file since it will open by + * default with the users text editor instead of the .log default Console.app, should + * create less confusion for less experienced users when we ask them to paste the log for support + */ + outputLogFile = @"~/Library/Application Support/HandBrake/HandBrake-activitylog.txt"; + outputLogFile = [[outputLogFile stringByExpandingTildeInPath]retain]; + + /* We check for an existing output log file here */ + if( [fileManager fileExistsAtPath:outputLogFile] == 0 ) + { + /* if not, then we create a new blank one */ + [fileManager createFileAtPath:outputLogFile contents:nil attributes:nil]; + } + /* We overwrite the existing output log with the date for starters the output log to start fresh with the new session */ + /* Use the current date and time for the new output log header */ + NSString *startOutputLogString = [NSString stringWithFormat: @"HandBrake Activity Log for Session (Cleared): %@\n\n", [[NSDate date] descriptionWithCalendarFormat:nil timeZone:nil locale:nil]]; + [startOutputLogString writeToFile:outputLogFile atomically:YES encoding:NSUTF8StringEncoding error:NULL]; + + [[HBOutputRedirect stderrRedirect] addListener:self]; + [[HBOutputRedirect stdoutRedirect] addListener:self]; + + [self setWindowFrameAutosaveName:@"OutputPanelFrame"]; + [[textView layoutManager] replaceTextStorage:outputTextStorage]; + [[textView enclosingScrollView] setLineScroll:10]; + [[textView enclosingScrollView] setPageScroll:20]; + + encodeLogOn = NO; + } + return self; +} + +/** + * Stops redirection of stderr and releases resources. + */ +- (void)dealloc +{ + [[HBOutputRedirect stderrRedirect] removeListener:self]; + [[HBOutputRedirect stdoutRedirect] removeListener:self]; + [outputTextStorage release]; + [super dealloc]; +} + +/** + * Loads output panel from OutputPanel.nib and shows it. + */ +- (IBAction)showOutputPanel:(id)sender +{ + if ([[self window] isVisible]) + { + [[self window] close]; + } + else + { + [textView scrollRangeToVisible:NSMakeRange([outputTextStorage length], 0)]; + [self showWindow:sender]; + + [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"OutputPanelIsOpen"]; + } +} + +- (void) startEncodeLog:(NSString *) logPath +{ + encodeLogOn = YES; + NSString *outputFileForEncode = logPath ; + /* Since the destination path matches the extension of the output file, replace the + * output movie extension and replace it with ".txt" + */ + NSFileManager * fileManager = [NSFileManager defaultManager]; + /* Establish the log file location to write to */ + /* We are initially using a .txt file as opposed to a .log file since it will open by + * default with the users text editor instead of the .log default Console.app, should + * create less confusion for less experienced users when we ask them to paste the log for support + */ + /* We need to get the current time in YY-MM-DD HH-MM-SS format to put at the beginning of the name of the log file */ + time_t _now = time( NULL ); + struct tm * now = localtime( &_now ); + NSString *dateForLogTitle = [NSString stringWithFormat:@"%02d-%02d-%02d %02d-%02d-%02d",now->tm_year + 1900, now->tm_mon + 1, now->tm_mday,now->tm_hour, now->tm_min, now->tm_sec]; + + /* Assemble the new log file name as YY-MM-DD HH-MM-SS mymoviename.txt */ + NSString *outputDateFileName = [NSString stringWithFormat:@"%@ %@.txt",[[outputFileForEncode lastPathComponent] stringByDeletingPathExtension],dateForLogTitle]; + if ([[NSUserDefaults standardUserDefaults] boolForKey:@"EncodeLogLocation"]) // if we are putting it in the same directory with the movie + { + + outputLogFileForEncode = [[NSString stringWithFormat:@"%@/%@",[outputFileForEncode stringByDeletingLastPathComponent],outputDateFileName] retain]; + } + else // if we are putting it in the default ~/Libraries/Application Support/HandBrake/EncodeLogs logs directory + { + NSString *libraryDir = [NSSearchPathForDirectoriesInDomains( NSLibraryDirectory, + NSUserDomainMask, + YES ) objectAtIndex:0]; + NSString *encodeLogDirectory = [[[libraryDir stringByAppendingPathComponent:@"Application Support"] stringByAppendingPathComponent:@"HandBrake"] stringByAppendingPathComponent:@"EncodeLogs"]; + if( ![[NSFileManager defaultManager] fileExistsAtPath:encodeLogDirectory] ) + { + [[NSFileManager defaultManager] createDirectoryAtPath:encodeLogDirectory + withIntermediateDirectories:NO + attributes:nil + error:nil]; + } + outputLogFileForEncode = [[NSString stringWithFormat:@"%@/%@",encodeLogDirectory,outputDateFileName] retain]; + } + [fileManager createFileAtPath:outputLogFileForEncode contents:nil attributes:nil]; + + /* Similar to the regular activity log, we print a header containing the date and time of the encode as well as what directory it was encoded to */ + NSString *versionStringFull = [[NSString stringWithFormat: @"Handbrake Version: %@", [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"]] stringByAppendingString: [NSString stringWithFormat: @" (%@)\n\n", [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"]]]; + NSString *startOutputLogString = [NSString stringWithFormat: @"HandBrake Activity Log for %@: %@\n%@",outputFileForEncode, [[NSDate date] descriptionWithCalendarFormat:nil timeZone:nil locale:nil],versionStringFull]; + [startOutputLogString writeToFile:outputLogFileForEncode atomically:YES encoding:NSUTF8StringEncoding error:NULL]; + + +} + +- (void) endEncodeLog +{ + encodeLogOn = NO; +} + +/** + * Displays text received from HBOutputRedirect in the text view. + */ +- (void)stderrRedirect:(NSString *)text +{ + + NSAttributedString *attributedString = [[NSAttributedString alloc] initWithString:text]; + /* Actually write the libhb output to the text view (outputTextStorage) */ + [outputTextStorage appendAttributedString:attributedString]; + [attributedString release]; + + /* remove text from outputTextStorage as defined by TextStorageUpperSizeLimit and TextStorageLowerSizeLimit */ + if ([outputTextStorage length] > TextStorageUpperSizeLimit) + [outputTextStorage deleteCharactersInRange:NSMakeRange(0, [outputTextStorage length] - TextStorageLowerSizeLimit)]; + + [textView scrollRangeToVisible:NSMakeRange([outputTextStorage length], 0)]; + + /* We use a c function to write to the log file without reading it into memory + * as it should be faster and easier on memory than using cocoa's writeToFile + * thanks ritsuka !!*/ + FILE *f = fopen([outputLogFile UTF8String], "a"); + fprintf(f, "%s", [text UTF8String]); + fclose(f); + + if (encodeLogOn == YES && outputLogFileForEncode != nil) + { + FILE *e = fopen([outputLogFileForEncode UTF8String], "a"); + fprintf(e, "%s", [text UTF8String]); + fclose(e); + } + /* Below uses Objective-C to write to the file, though it is slow and uses + * more memory than the c function above. For now, leaving this in here + * just in case and commented out. + */ + /* Put the new incoming string from libhb into an nsstring for appending to our log file */ + //NSString *newOutputString = [[NSString alloc] initWithString:text]; + /*get the current log file and put it into an NSString */ + /* HACK ALERT: must be a way to do it without reading the whole log into memory + Performance note: could batch write to the log, but want to get each line as it comes out of + libhb in case of a crash or freeze so we see exactly what the last thing was before crash*/ + //NSString *currentOutputLogString = [[NSString alloc]initWithContentsOfFile:outputLogFile encoding:NSUTF8StringEncoding error:NULL]; + + /* Append the new libhb output string to the existing log file string */ + //currentOutputLogString = [currentOutputLogString stringByAppendingString:newOutputString]; + /* Save the new modified log file string back to disk */ + //[currentOutputLogString writeToFile:outputLogFile atomically:YES encoding:NSUTF8StringEncoding error:NULL]; + /* Release the new libhb output string */ + //[newOutputString release]; +} +- (void)stdoutRedirect:(NSString *)text { [self stderrRedirect:text]; } + +/** + * Clears the output window. + */ +- (IBAction)clearOutput:(id)sender +{ + [outputTextStorage deleteCharactersInRange:NSMakeRange(0, [outputTextStorage length])]; + /* We want to rewrite the app version info to the top of the activity window so it is always present */ + NSString *versionStringFull = [[NSString stringWithFormat: @"Handbrake Version: %@", [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"]] stringByAppendingString: [NSString stringWithFormat: @" (%@)\n\n", [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"]]]; + time_t _now = time( NULL ); + struct tm * now = localtime( &_now ); + fprintf(stderr, "[%02d:%02d:%02d] macgui: %s\n", now->tm_hour, now->tm_min, now->tm_sec, [versionStringFull UTF8String]); + +} + +/** + * Copies all text in the output window to pasteboard. + */ +- (IBAction)copyAllOutputToPasteboard:(id)sender +{ + NSPasteboard *pboard = [NSPasteboard generalPasteboard]; + [pboard declareTypes:[NSArray arrayWithObject:NSStringPboardType] owner:nil]; + [pboard setString:[outputTextStorage string] forType:NSStringPboardType]; + +} + +/** + * Opens the activity log txt file in users default editor. + */ +- (IBAction)openActivityLogFile:(id)sender +{ + /* Opens the activity window log file in the users default text editor */ + NSAppleScript *myScript = [[NSAppleScript alloc] initWithSource: [NSString stringWithFormat: @"%@%@%@", @"tell application \"Finder\" to open (POSIX file \"", outputLogFile, @"\")"]]; + [myScript executeAndReturnError: nil]; + [myScript release]; +} + +/** + * Opens the activity log txt file in users default editor. + */ +- (IBAction)openEncodeLogDirectory:(id)sender +{ + /* Opens the activity window log file in the users default text editor */ + NSString *libraryDir = [NSSearchPathForDirectoriesInDomains( NSLibraryDirectory, + NSUserDomainMask, + YES ) objectAtIndex:0]; + NSString *encodeLogDirectory = [[[libraryDir stringByAppendingPathComponent:@"Application Support"] stringByAppendingPathComponent:@"HandBrake"] stringByAppendingPathComponent:@"EncodeLogs"]; + if( ![[NSFileManager defaultManager] fileExistsAtPath:encodeLogDirectory] ) + { + [[NSFileManager defaultManager] createDirectoryAtPath:encodeLogDirectory + withIntermediateDirectories:NO + attributes:nil + error:nil]; + } + + NSAppleScript *myScript = [[NSAppleScript alloc] initWithSource: [NSString stringWithFormat: @"%@%@%@", @"tell application \"Finder\" to open (POSIX file \"", encodeLogDirectory, @"\")"]]; + [myScript executeAndReturnError: nil]; + [myScript release]; +} + +- (IBAction)clearActivityLogFile:(id)sender +{ + /* We overwrite the existing output log with the new date and time header */ + /* Use the current date and time for the new output log header */ + NSString *startOutputLogString = [NSString stringWithFormat: @"HandBrake Activity Log for Session Starting: %@\n\n", [[NSDate date] descriptionWithCalendarFormat:nil timeZone:nil locale:nil]]; + [startOutputLogString writeToFile:outputLogFile atomically:NO encoding:NSUTF8StringEncoding error:NULL]; + + /* We want to rewrite the app version info to the top of the activity window so it is always present */ + NSString *versionStringFull = [[NSString stringWithFormat: @"macgui: Handbrake Version: %@", [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"]] stringByAppendingString: [NSString stringWithFormat: @" (%@)\n\n", [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"]]]; + [versionStringFull writeToFile:outputLogFile atomically:NO encoding:NSUTF8StringEncoding error:NULL]; + +} + +- (void)windowWillClose:(NSNotification *)aNotification +{ + [[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"OutputPanelIsOpen"]; +} + + +@end diff -Nru handbrake-0.9.9+dfsg/macosx/HBOutputRedirect.h handbrake-0.9.9+ppa1/macosx/HBOutputRedirect.h --- handbrake-0.9.9+dfsg/macosx/HBOutputRedirect.h 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/HBOutputRedirect.h 2007-05-21 16:50:21.000000000 +0000 @@ -0,0 +1,60 @@ +/** + * @file + * @date 17.5.2007 + * + * Interface of class HBOutputRedirect. + */ + +#import + +/** + * This class is used to redirect @c stdout and @c stderr outputs. It is never + * created directly; @c stdoutRedirect and @c stderrRedirect class methods + * should be use instead. + * + * @note Redirection is done by replacing @c _write functions for @c stdout and + * @c stderr streams. Because of this messages written by NSLog(), for + * example are not redirected. I consider this a good thing, but if more + * universal redirecting is needed, it can be done at file descriptor + * level. + */ +@interface HBOutputRedirect : NSObject +{ + /// Set that contains all registered listeners for this output. + NSMutableSet *listeners; + + /// Selector that is called on listeners to forward the output. + SEL forwardingSelector; + + /// Output stream (@c stdout or @c stderr) redirected by this object. + FILE *stream; + + /// Pointer to old write function for the stream. + int (*oldWriteFunc)(void *, const char *, int); + + NSLock *lock; +} + ++ (id)stdoutRedirect; ++ (id)stderrRedirect; + +- (void)addListener:(id)aListener; +- (void)removeListener:(id)aListener; + +@end + +/* Here is another technique to redirect stderr, but it is done at lower level + which also redirects NSLog() and other writes that are done directly to the + file descriptor. This method is not used by HBOutputRedirect, but should + be easy to implement if needed. Code is untested, but this is shows basic + idea for future reference. + + // Create a pipe + NSPipe *pipe = [[NSPipe alloc] init]; + + // Connect stderr to the writing end of the pipe + dup2([[pipe fileHandleForWriting] fileDescriptor], STDERR_FILENO); + + // Get reading end of the pipe, we can use this to read stderr + NSFileHandle *fh = [pipe fileHandleForReading]; +*/ diff -Nru handbrake-0.9.9+dfsg/macosx/HBOutputRedirect.m handbrake-0.9.9+ppa1/macosx/HBOutputRedirect.m --- handbrake-0.9.9+dfsg/macosx/HBOutputRedirect.m 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/HBOutputRedirect.m 2010-11-30 18:21:33.000000000 +0000 @@ -0,0 +1,190 @@ +/** + * @file + * @date 17.5.2007 + * + * Implementation of class HBOutputRedirect. + */ + +#import "HBOutputRedirect.h" + +/// Global pointer to HBOutputRedirect object that manages redirects for stdout. +static HBOutputRedirect *g_stdoutRedirect = nil; + +/// Global pointer to HBOutputRedirect object that manages redirects for stderr. +static HBOutputRedirect *g_stderrRedirect = nil; + +@interface HBOutputRedirect (Private) +- (id)initWithStream:(FILE *)aStream selector:(SEL)aSelector; +- (void)startRedirect; +- (void)stopRedirect; +- (void)forwardOutput:(NSData *)data; +@end + +/** + * Function that replaces stdout->_write and forwards stdout to g_stdoutRedirect. + */ +int stdoutwrite(void *inFD, const char *buffer, int size) +{ + NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; + NSData *data = [[NSData alloc] initWithBytes:buffer length:size]; + [g_stdoutRedirect performSelectorOnMainThread:@selector(forwardOutput:) withObject:data waitUntilDone:NO]; + [data release]; + [pool release]; + return size; +} + +/** + * Function that replaces stderr->_write and forwards stderr to g_stderrRedirect. + */ +int stderrwrite(void *inFD, const char *buffer, int size) +{ + NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; + NSData *data = [[NSData alloc] initWithBytes:buffer length:size]; + [g_stderrRedirect performSelectorOnMainThread:@selector(forwardOutput:) withObject:data waitUntilDone:NO]; + [data release]; + [pool release]; + return size; +} + +@implementation HBOutputRedirect + +/** + * Returns HBOutputRedirect object used to redirect stdout. + */ ++ (id)stdoutRedirect +{ + if (!g_stdoutRedirect) + g_stdoutRedirect = [[HBOutputRedirect alloc] initWithStream:stdout selector:@selector(stdoutRedirect:)]; + + return g_stdoutRedirect; +} + +/** + * Returns HBOutputRedirect object used to redirect stderr. + */ ++ (id)stderrRedirect +{ + if (!g_stderrRedirect) + g_stderrRedirect = [[HBOutputRedirect alloc] initWithStream:stderr selector:@selector(stderrRedirect:)]; + + return g_stderrRedirect; +} + +/** + * Adds specified object as listener for this output. Method @c stdoutRedirect: + * or @c stderrRedirect: of the listener is called to redirect the output. + */ +- (void)addListener:(id)aListener +{ + NSAssert2([aListener respondsToSelector:forwardingSelector], @"Object %@ doesn't respond to selector \"%@\"", aListener, NSStringFromSelector(forwardingSelector)); + + if (![listeners containsObject:aListener]) + { + [listeners addObject:aListener]; + [aListener release]; + } + + if ([listeners count] > 0) + [self startRedirect]; +} + +/** + * Stops forwarding for this output to the specified listener object. + */ +- (void)removeListener:(id)aListener +{ + if ([listeners containsObject:aListener]) + { + [aListener retain]; + [listeners removeObject:aListener]; + } + + // If last listener is removed, stop redirecting output and autorelease + // self. Remember to set proper global pointer to NULL so the object is + // recreated again when needed. + if ([listeners count] == 0) + { + [self stopRedirect]; + [self autorelease]; + + if (self == g_stdoutRedirect) + g_stdoutRedirect = nil; + else if (self == g_stderrRedirect) + g_stderrRedirect = nil; + } +} + +@end + +@implementation HBOutputRedirect (Private) + +/** + * Private constructor which should not be called from outside. This is used to + * initialize the class at @c stdoutRedirect and @c stderrRedirect. + * + * @param aStream Stream that wil be redirected (stdout or stderr). + * @param aSelector Selector that will be called in listeners to redirect the stream. + * + * @return New HBOutputRedirect object. + */ +- (id)initWithStream:(FILE *)aStream selector:(SEL)aSelector +{ + if (self = [super init]) + { + listeners = [[NSMutableSet alloc] init]; + forwardingSelector = aSelector; + stream = aStream; + oldWriteFunc = NULL; + lock = [[NSLock alloc] init]; + } + return self; +} + +/** + * Frees all the listeners and deallocs the object. + */ +- (void)dealloc +{ + [listeners release]; + [super dealloc]; +} + +/** + * Starts redirecting the stream by redirecting its output to function + * @c stdoutwrite() or @c stderrwrite(). Old _write function is stored to + * @c oldWriteFunc so it can be restored. + */ +- (void)startRedirect +{ + if (!oldWriteFunc) + { + oldWriteFunc = stream->_write; + stream->_write = stream == stdout ? stdoutwrite : stderrwrite; + } +} + +/** + * Stops redirecting of the stream by returning the stream's _write function + * to original. + */ +- (void)stopRedirect +{ + if (oldWriteFunc) + { + stream->_write = oldWriteFunc; + oldWriteFunc = NULL; + } +} + +/** + * Called from @c stdoutwrite() and @c stderrwrite() to forward the output to + * listeners. + */ +- (void)forwardOutput:(NSData *)data +{ + NSString *string = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; + [listeners makeObjectsPerformSelector:forwardingSelector withObject:string]; + [string release]; +} + +@end diff -Nru handbrake-0.9.9+dfsg/macosx/HBPreferencesController.h handbrake-0.9.9+ppa1/macosx/HBPreferencesController.h --- handbrake-0.9.9+dfsg/macosx/HBPreferencesController.h 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/HBPreferencesController.h 2010-01-12 21:22:54.000000000 +0000 @@ -0,0 +1,20 @@ +/** + * @file + * Interface of class HBPreferencesController. + */ + +#import + +@interface HBPreferencesController : NSWindowController +{ + IBOutlet NSView * fGeneralView, * fPictureView, * fAudioView, * fAdvancedView; + IBOutlet NSTextField * fSendEncodeToAppField; +} + ++ (void)registerUserDefaults; +- (id)init; +/* Manage the send encode to xxx.app windows and field */ +- (IBAction) browseSendToApp: (id) sender; +- (void) browseSendToAppDone: (NSOpenPanel *) sheet + returnCode: (int) returnCode contextInfo: (void *) contextInfo; +@end diff -Nru handbrake-0.9.9+dfsg/macosx/HBPreferencesController.m handbrake-0.9.9+ppa1/macosx/HBPreferencesController.m --- handbrake-0.9.9+dfsg/macosx/HBPreferencesController.m 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/HBPreferencesController.m 2013-03-18 19:21:23.000000000 +0000 @@ -0,0 +1,265 @@ +/** + * @file + * Implementation of class HBPreferencesController. + */ + +#import "HBPreferencesController.h" +#define TOOLBAR_GENERAL @"TOOLBAR_GENERAL" +#define TOOLBAR_PICTURE @"TOOLBAR_PICTURE" +#define TOOLBAR_AUDIO @"TOOLBAR_AUDIO" +#define TOOLBAR_ADVANCED @"TOOLBAR_ADVANCED" + +/** + * This class controls the preferences window of HandBrake. Default values for + * all preferences and user defaults are specified in class method + * @c registerUserDefaults. The preferences window is loaded from + * Preferences.nib file when HBPreferencesController is initialized. + * + * All preferences are bound to user defaults in Interface Builder, therefore + * no getter/setter code is needed in this file (unless more complicated + * preference settings are added that cannot be handled with Cocoa bindings). + */ + +@interface HBPreferencesController (Private) + +- (void) setPrefView: (id) sender; +- (NSToolbarItem *)toolbarItemWithIdentifier: (NSString *)identifier + label: (NSString *)label + image: (NSImage *)image; + +@end + +@implementation HBPreferencesController + +/** + * +[HBPreferencesController registerUserDefaults] + * + * Registers default values to user defaults. This is called immediately + * when HandBrake starts, from [HBController init]. + */ ++ (void)registerUserDefaults +{ + NSString *desktopDirectory = [@"~/Desktop" stringByExpandingTildeInPath]; + + [[NSUserDefaults standardUserDefaults] registerDefaults:[NSDictionary dictionaryWithObjectsAndKeys: + @"YES", @"CheckForUpdates", + @"Open Source", @"LaunchSourceBehavior", + @"English", @"DefaultLanguage", + @"YES", @"UseCoreAudio", + @"Auto", @"DefaultMpegExtension", + @"YES", @"UseDvdNav", + @"", @"DefAdvancedx264Flags", + @"YES", @"DefaultPresetsDrawerShow", + desktopDirectory, @"LastDestinationDirectory", + desktopDirectory, @"LastSourceDirectory", + @"NO", @"DefaultAutoNaming", + @"NO", @"DisableDvdAutoDetect", + @"Alert Window", @"AlertWhenDone", + @"YES", @"AlertWhenDoneSound", + @"1", @"LoggingLevel", + @"NO", @"EncodeLogLocation", + @"10", @"MinTitleScanSeconds", + @"10", @"PreviewsNumber", + @"", @"Drawer Size", + @"0.25", @"x264CqSliderFractional", + @"YES", @"AlertBuiltInPresetUpdate", + @"MetaX", @"SendCompletedEncodeToApp", + @"NO", @"ShowAdvancedOptsForAutoPassthru", + nil]]; +} + +/** + * -[HBPreferencesController init] + * + * Initializes the preferences controller by loading Preferences.nib file. + * + */ +- (id)init +{ + if (self = [super initWithWindowNibName:@"Preferences"]) + { + NSAssert([self window], @"[HBPreferencesController init] window outlet is not connected in Preferences.nib"); + } + return self; +} + +/** + * -[HBPreferencesController awakeFromNib] + * + * Called after all the outlets in the nib file have been attached. Sets up the + * toolbar and shows the "General" pane. + * + */ +- (void) awakeFromNib +{ + NSToolbar * toolbar = [[[NSToolbar alloc] initWithIdentifier: @"Preferences Toolbar"] autorelease]; + [toolbar setDelegate: self]; + [toolbar setAllowsUserCustomization: NO]; + [toolbar setDisplayMode: NSToolbarDisplayModeIconAndLabel]; + [toolbar setSizeMode: NSToolbarSizeModeRegular]; + [[self window] setToolbar: toolbar]; + + [toolbar setSelectedItemIdentifier: TOOLBAR_GENERAL]; + [self setPrefView:nil]; +} + +- (NSToolbarItem *)toolbar: (NSToolbar *)toolbar + itemForItemIdentifier: (NSString *)ident + willBeInsertedIntoToolbar: (BOOL)flag +{ + if ( [ident isEqualToString:TOOLBAR_GENERAL] ) + { + return [self toolbarItemWithIdentifier:ident + label:NSLocalizedString(@"General", @"Preferences General Toolbar Item") + image:[NSImage imageNamed:@"settings"]]; + } + else if ( [ident isEqualToString:TOOLBAR_PICTURE] ) + { + return [self toolbarItemWithIdentifier:ident + label:NSLocalizedString(@"Picture", @"Preferences Picture Toolbar Item") + image:[NSImage imageNamed:@"picturesettings"]]; + } + else if ( [ident isEqualToString:TOOLBAR_AUDIO] ) + { + return [self toolbarItemWithIdentifier:ident + label:NSLocalizedString(@"Audio", @"Preferences Audio Toolbar Item") + image:[NSImage imageNamed:@"audio"]]; + } + else if ( [ident isEqualToString:TOOLBAR_ADVANCED] ) + { + return [self toolbarItemWithIdentifier:ident + label:NSLocalizedString(@"Advanced", @"Preferences Advanced Toolbar Item") + image:[NSImage imageNamed:@"advanced"]]; + } + + return nil; +} + +- (NSArray *) toolbarSelectableItemIdentifiers: (NSToolbar *) toolbar +{ + return [self toolbarDefaultItemIdentifiers: toolbar]; +} + +- (NSArray *) toolbarDefaultItemIdentifiers: (NSToolbar *) toolbar +{ + return [self toolbarAllowedItemIdentifiers: toolbar]; +} + +- (NSArray *) toolbarAllowedItemIdentifiers: (NSToolbar *) toolbar +{ + return [NSArray arrayWithObjects: TOOLBAR_GENERAL, /*TOOLBAR_PICTURE, */ + TOOLBAR_AUDIO, TOOLBAR_ADVANCED, nil]; +} + +/* Manage the send encode to xxx.app windows and field */ +/*Opens the app browse window*/ +- (IBAction) browseSendToApp: (id) sender +{ + NSOpenPanel * panel; + + panel = [NSOpenPanel openPanel]; + [panel setAllowsMultipleSelection: NO]; + [panel setCanChooseFiles: YES]; + [panel setCanChooseDirectories: NO ]; + NSString * sendToAppDirectory; + if ([[NSUserDefaults standardUserDefaults] stringForKey:@"LastSendToAppDirectory"]) + { + sendToAppDirectory = [[NSUserDefaults standardUserDefaults] stringForKey:@"LastSendToAppDirectory"]; + } + else + { + sendToAppDirectory = @"/Applications"; + } + [panel beginSheetForDirectory: sendToAppDirectory file: nil types: nil + modalForWindow: [self window] modalDelegate: self + didEndSelector: @selector( browseSendToAppDone:returnCode:contextInfo: ) + contextInfo: sender]; +} + +- (void) browseSendToAppDone: (NSOpenPanel *) sheet + returnCode: (int) returnCode contextInfo: (void *) contextInfo +{ + if( returnCode == NSOKButton ) + { + NSString *sendToAppPath = [[sheet filenames] objectAtIndex: 0]; + NSString *sendToAppDirectory = [sendToAppPath stringByDeletingLastPathComponent]; + [[NSUserDefaults standardUserDefaults] setObject:sendToAppDirectory forKey:@"LastSendToAppDirectory"]; + [sheet orderOut: self]; + NSString *sendToAppName; + sendToAppName = [[sendToAppPath lastPathComponent] stringByDeletingPathExtension]; + /* we set the name of the app to send to in the display field */ + [fSendEncodeToAppField setStringValue:sendToAppName]; + [[NSUserDefaults standardUserDefaults] setObject:[fSendEncodeToAppField stringValue] forKey:@"SendCompletedEncodeToApp"]; + + } +} + + +@end + +@implementation HBPreferencesController (Private) + +- (void) setPrefView: (id) sender +{ + NSView * view = fGeneralView; + if( sender ) + { + NSString * identifier = [sender itemIdentifier]; + if( [identifier isEqualToString: TOOLBAR_PICTURE] ) + view = fPictureView; + else if( [identifier isEqualToString: TOOLBAR_AUDIO] ) + view = fAudioView; + else if( [identifier isEqualToString: TOOLBAR_ADVANCED] ) + view = fAdvancedView; + else; + } + + NSWindow * window = [self window]; + if( [window contentView] == view ) + return; + + NSRect windowRect = [window frame]; + CGFloat difference = ( [view frame].size.height - [[window contentView] frame].size.height ) * [window userSpaceScaleFactor]; + windowRect.origin.y -= difference; + windowRect.size.height += difference; + + [view setHidden: YES]; + [window setContentView: view]; + [window setFrame: windowRect display: YES animate: YES]; + [view setHidden: NO]; + + //set title label + if( sender ) + [window setTitle: [sender label]]; + else + { + NSToolbar * toolbar = [window toolbar]; + NSString * itemIdentifier = [toolbar selectedItemIdentifier]; + for( NSToolbarItem * item in [toolbar items] ) + if( [[item itemIdentifier] isEqualToString: itemIdentifier] ) + { + [window setTitle: [item label]]; + break; + } + } +} + +/** + * -[HBPreferencesController(Private) toolbarItemWithIdentifier:label:image:] + * + * Shared code for creating the NSToolbarItems for the Preferences toolbar. + * + */ +- (NSToolbarItem *)toolbarItemWithIdentifier: (NSString *)identifier + label: (NSString *)label + image: (NSImage *)image +{ + NSToolbarItem *item = [[NSToolbarItem alloc] initWithItemIdentifier:identifier]; + [item setLabel:label]; + [item setImage:image]; + [item setAction:@selector(setPrefView:)]; + [item setAutovalidates:NO]; + return [item autorelease]; +} + +@end diff -Nru handbrake-0.9.9+dfsg/macosx/HBPresets.h handbrake-0.9.9+ppa1/macosx/HBPresets.h --- handbrake-0.9.9+dfsg/macosx/HBPresets.h 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/HBPresets.h 2013-03-04 14:16:12.000000000 +0000 @@ -0,0 +1,33 @@ +/* HBPresets.h $ + + This file is part of the HandBrake source code. + Homepage: . + It may be used under the terms of the GNU General Public License. */ + +#import + +@interface HBPresets : NSObject {} + +/* Called by -addFactoryPresets in Controller.m */ +- (NSMutableArray *)generateBuiltinPresets:(NSMutableArray *)UserPresets; + +/* Dictionaries for preset folders ("Devices, "Regular") */ +- (NSDictionary *)createDevicesPresetFolder; +- (NSDictionary *)createRegularPresetFolder; + +/* Dictionaries for individual presets ("Devices" folder) */ +- (NSDictionary *)createUniversalPreset; +- (NSDictionary *)createiPodPreset; +- (NSDictionary *)createiPhoneiPodtouchPreset; +- (NSDictionary *)createiPadPreset; +- (NSDictionary *)createAppleTVPreset; +- (NSDictionary *)createAppleTV2Preset; +- (NSDictionary *)createAppleTV3Preset; +- (NSDictionary *)createAndroidPreset; +- (NSDictionary *)createAndroidTabletPreset; + +/* Dictionaries for individual presets ("Regular" folder) */ +- (NSDictionary *)createNormalPreset; +- (NSDictionary *)createHighProfilePreset; + +@end diff -Nru handbrake-0.9.9+dfsg/macosx/HBPresets.m handbrake-0.9.9+ppa1/macosx/HBPresets.m --- handbrake-0.9.9+dfsg/macosx/HBPresets.m 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/HBPresets.m 2013-03-04 14:33:08.000000000 +0000 @@ -0,0 +1,1303 @@ +/* HBPresets.m $ + + This file is part of the HandBrake source code. + Homepage: . + It may be used under the terms of the GNU General Public License. */ + +#import "HBPresets.h" + +@implementation HBPresets + +- (id)init +{ + self = [super init]; + return self; +} + +/* Called by -addFactoryPresets in Controller.m */ +- (NSMutableArray *)generateBuiltinPresets:(NSMutableArray *)UserPresets +{ + /* + * We receive the user presets array of dictionaries from Controller.m + * + * Re-create new built-in presets programmatically and add them to the array + * + * Note: the built-in presets will *not* sort themselves alphabetically, + * so they will appear in the order you create them. + */ + + /* Built-in preset folders at the root of the hierarchy */ + [UserPresets addObject:[self createDevicesPresetFolder]]; + [UserPresets addObject:[self createRegularPresetFolder]]; + + /* Independent presets at the root hierarchy level would go here */ + + /* Return the newly-regenerated preset array back to Controller.m */ + return UserPresets; +} + +#pragma mark - +#pragma mark Preset Folder Definitions + +- (NSDictionary *)createDevicesPresetFolder +{ + NSMutableDictionary *preset = [[NSMutableDictionary alloc] init]; + + /* Preset properties (name, type: factory/user, default, folder, tooltip) */ + [preset setObject:@"Devices" forKey:@"PresetName"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"Type"]; //factory + [preset setObject:[NSNumber numberWithInt:0] forKey:@"Default"]; + [preset setObject:[NSNumber numberWithBool:YES] forKey:@"Folder"]; + + /* Initialize a child array, and add the individual presets to it */ + NSMutableArray *childrenArray = [[NSMutableArray alloc] init]; + [childrenArray addObject:[self createUniversalPreset]]; + [childrenArray addObject:[self createiPodPreset]]; + [childrenArray addObject:[self createiPhoneiPodtouchPreset]]; + [childrenArray addObject:[self createiPadPreset]]; + [childrenArray addObject:[self createAppleTVPreset]]; + [childrenArray addObject:[self createAppleTV2Preset]]; + [childrenArray addObject:[self createAppleTV3Preset]]; + [childrenArray addObject:[self createAndroidPreset]]; + [childrenArray addObject:[self createAndroidTabletPreset]]; + + /* Add the individual presets to the folder */ + [preset setObject:[NSMutableArray arrayWithArray:childrenArray] + forKey:@"ChildrenArray"]; + + /* Clean up and return the folder */ + [childrenArray autorelease]; + [preset autorelease]; + return preset; +} + +- (NSDictionary *)createRegularPresetFolder +{ + NSMutableDictionary *preset = [[NSMutableDictionary alloc] init]; + + /* Preset properties (name, type: factory/user, default, folder, tooltip) */ + [preset setObject:@"Regular" forKey:@"PresetName"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"Type"]; //factory + [preset setObject:[NSNumber numberWithInt:0] forKey:@"Default"]; + [preset setObject:[NSNumber numberWithBool:YES] forKey:@"Folder"]; + + /* Initialize a child array, and add the individual presets to it */ + NSMutableArray *childrenArray = [[NSMutableArray alloc] init]; + [childrenArray addObject:[self createNormalPreset]]; + [childrenArray addObject:[self createHighProfilePreset]]; + + /* Add the individual presets to the folder */ + [preset setObject:[NSMutableArray arrayWithArray:childrenArray] + forKey:@"ChildrenArray"]; + + /* Clean up and return the folder */ + [childrenArray autorelease]; + [preset autorelease]; + return preset; +} + +#pragma mark - +#pragma mark Individual Preset Definitions +/* These NSDictionary definitions contain settings for one built-in preset */ + +- (NSDictionary *)createUniversalPreset +{ + NSMutableDictionary *preset = [[NSMutableDictionary alloc] init]; + + /* Preset properties (name, type: factory/user, default, folder, tooltip) */ + [preset setObject:@"Universal" forKey:@"PresetName"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"Type"]; //factory + [preset setObject:[NSNumber numberWithInt:0] forKey:@"Default"]; + [preset setObject:[NSNumber numberWithBool:NO] forKey:@"Folder"]; + [preset setObject:@"HandBrake's settings for compatibility with all Apple devices (including the iPod 6G and later). Includes Dolby Digital audio for surround sound." + forKey:@"PresetDescription"]; + + /* Container format and related settings */ + [preset setObject:@"MP4 file" forKey:@"FileFormat"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"Mp4LargeFile"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"Mp4HttpOptimize"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"Mp4iPodCompatible"]; + + /* Chapter markers */ + [preset setObject:[NSNumber numberWithInt:1] forKey:@"ChapterMarkers"]; + + /* Video encoder and advanced options */ + [preset setObject:@"H.264 (x264)" forKey:@"VideoEncoder"]; + [preset setObject:@"" forKey:@"lavcOption"]; + [preset setObject:@"" forKey:@"x264Option"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"x264UseAdvancedOptions"]; + [preset setObject:@"fast" forKey:@"x264Preset"]; + [preset setObject:@"" forKey:@"x264Tune"]; + [preset setObject:@"" forKey:@"x264OptionExtra"]; + [preset setObject:@"baseline" forKey:@"h264Profile"]; + [preset setObject:@"3.0" forKey:@"h264Level"]; + + /* Video rate control */ + [preset setObject:@"2500" forKey:@"VideoAvgBitrate"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoTwoPass"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoTurboTwoPass"]; + [preset setObject:[NSNumber numberWithInt:2] forKey:@"VideoQualityType"]; //cq + [preset setObject:[NSNumber numberWithFloat:20.0] forKey:@"VideoQualitySlider"]; + + /* Video frame rate */ + [preset setObject:@"30" forKey:@"VideoFramerate"]; + [preset setObject:@"pfr" forKey:@"VideoFramerateMode"]; + + /* Picture size */ + [preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureSettings"]; + [preset setObject:[NSNumber numberWithInt:720] forKey:@"PictureWidth"]; + [preset setObject:[NSNumber numberWithInt:576] forKey:@"PictureHeight"]; + [preset setObject:[NSNumber numberWithInt:2] forKey:@"PicturePAR"]; //loose + [preset setObject:[NSNumber numberWithInt:2] forKey:@"PictureModulus"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureKeepRatio"]; //set to 0 for Loose (FIXME: why?) + + /* Picture filters */ + [preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureFilters"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDecomb"]; //off + [preset setObject:@"" forKey:@"PictureDecombCustom"]; + [preset setObject:[NSNumber numberWithInt:1] forKey:@"PictureDecombDeinterlace"]; //decomb + [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDeinterlace"]; + [preset setObject:@"" forKey:@"PictureDeinterlaceCustom"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDetelecine"]; + [preset setObject:@"" forKey:@"PictureDetelecineCustom"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDenoise"]; + [preset setObject:@"" forKey:@"PictureDenoiseCustom"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDeblock"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoGrayScale"]; + + /* Picture crop */ + [preset setObject:[NSNumber numberWithInt:1] forKey:@"PictureAutoCrop"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureTopCrop"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureBottomCrop"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureLeftCrop"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureRightCrop"]; + + /* Auto Passthru */ + [preset setObject:@"AC3 (ffmpeg)" forKey:@"AudioEncoderFallback"]; + [preset setObject:[NSNumber numberWithInt:1] forKey:@"AudioAllowAACPass"]; + [preset setObject:[NSNumber numberWithInt:1] forKey:@"AudioAllowAC3Pass"]; + [preset setObject:[NSNumber numberWithInt:1] forKey:@"AudioAllowDTSHDPass"]; + [preset setObject:[NSNumber numberWithInt:1] forKey:@"AudioAllowDTSPass"]; + [preset setObject:[NSNumber numberWithInt:1] forKey:@"AudioAllowMP3Pass"]; + + /* Audio track list - no need to add "None" at the end */ + NSMutableArray *audioListArray = [[NSMutableArray alloc] init]; + /* Track 1 */ + NSMutableDictionary *audioTrack1Array = [[NSMutableDictionary alloc] init]; + [audioTrack1Array setObject:[NSNumber numberWithInt:1] forKey:@"AudioTrack"]; + [audioTrack1Array setObject:@"AAC (faac)" forKey:@"AudioEncoder"]; + [audioTrack1Array setObject:@"Dolby Pro Logic II" forKey:@"AudioMixdown"]; + [audioTrack1Array setObject:@"Auto" forKey:@"AudioSamplerate"]; + [audioTrack1Array setObject:@"160" forKey:@"AudioBitrate"]; + [audioTrack1Array setObject:[NSNumber numberWithFloat:0.0] forKey:@"AudioTrackGainSlider"]; + [audioTrack1Array setObject:[NSNumber numberWithFloat:0.0] forKey:@"AudioTrackDRCSlider"]; + [audioTrack1Array autorelease]; + [audioListArray addObject:audioTrack1Array]; + /* Track 2 */ + NSMutableDictionary *audioTrack2Array = [[NSMutableDictionary alloc] init]; + [audioTrack2Array setObject:[NSNumber numberWithInt:1] forKey:@"AudioTrack"]; + [audioTrack2Array setObject:@"AC3 Passthru" forKey:@"AudioEncoder"]; + [audioTrack2Array setObject:@"None" forKey:@"AudioMixdown"]; + [audioTrack2Array setObject:@"Auto" forKey:@"AudioSamplerate"]; + [audioTrack2Array setObject:@"160" forKey:@"AudioBitrate"]; + [audioTrack2Array setObject:[NSNumber numberWithFloat:0.0] forKey:@"AudioTrackGainSlider"]; + [audioTrack2Array setObject:[NSNumber numberWithFloat:0.0] forKey:@"AudioTrackDRCSlider"]; + [audioTrack2Array autorelease]; + [audioListArray addObject:audioTrack2Array]; + /* Add the audio track(s) to the preset's audio list */ + [preset setObject:[NSMutableArray arrayWithArray:audioListArray] forKey:@"AudioList"]; + + /* Subtitles (note: currently ignored) */ + [preset setObject:@"None" forKey:@"Subtitles"]; + + /* Clean up and return the preset */ + [preset autorelease]; + return preset; +} + +- (NSDictionary *)createiPodPreset +{ + NSMutableDictionary *preset = [[NSMutableDictionary alloc] init]; + + /* Preset properties (name, type: factory/user, default, folder, tooltip) */ + [preset setObject:@"iPod" forKey:@"PresetName"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"Type"]; //factory + [preset setObject:[NSNumber numberWithInt:0] forKey:@"Default"]; + [preset setObject:[NSNumber numberWithBool:NO] forKey:@"Folder"]; + [preset setObject:@"HandBrake's settings for playback on the iPod with Video (all generations)." + forKey:@"PresetDescription"]; + + /* Container format and related settings */ + [preset setObject:@"MP4 file" forKey:@"FileFormat"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"Mp4LargeFile"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"Mp4HttpOptimize"]; + [preset setObject:[NSNumber numberWithInt:1] forKey:@"Mp4iPodCompatible"]; + + /* Chapter markers */ + [preset setObject:[NSNumber numberWithInt:1] forKey:@"ChapterMarkers"]; + + /* Video encoder and advanced options */ + [preset setObject:@"H.264 (x264)" forKey:@"VideoEncoder"]; + [preset setObject:@"" forKey:@"lavcOption"]; + [preset setObject:@"" forKey:@"x264Option"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"x264UseAdvancedOptions"]; + [preset setObject:@"medium" forKey:@"x264Preset"]; + [preset setObject:@"" forKey:@"x264Tune"]; + [preset setObject:@"" forKey:@"x264OptionExtra"]; + [preset setObject:@"baseline" forKey:@"h264Profile"]; + [preset setObject:@"1.3" forKey:@"h264Level"]; + + /* Video rate control */ + [preset setObject:@"2500" forKey:@"VideoAvgBitrate"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoTwoPass"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoTurboTwoPass"]; + [preset setObject:[NSNumber numberWithInt:2] forKey:@"VideoQualityType"]; //cq + [preset setObject:[NSNumber numberWithFloat:22.0] forKey:@"VideoQualitySlider"]; + + /* Video frame rate */ + [preset setObject:@"30" forKey:@"VideoFramerate"]; + [preset setObject:@"pfr" forKey:@"VideoFramerateMode"]; + + /* Picture size */ + [preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureSettings"]; + [preset setObject:[NSNumber numberWithInt:320] forKey:@"PictureWidth"]; + [preset setObject:[NSNumber numberWithInt:240] forKey:@"PictureHeight"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"PicturePAR"]; //none + [preset setObject:[NSNumber numberWithInt:2] forKey:@"PictureModulus"]; + [preset setObject:[NSNumber numberWithInt:1] forKey:@"PictureKeepRatio"]; + + /* Picture filters */ + [preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureFilters"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDecomb"]; //off + [preset setObject:@"" forKey:@"PictureDecombCustom"]; + [preset setObject:[NSNumber numberWithInt:1] forKey:@"PictureDecombDeinterlace"]; //decomb + [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDeinterlace"]; + [preset setObject:@"" forKey:@"PictureDeinterlaceCustom"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDetelecine"]; + [preset setObject:@"" forKey:@"PictureDetelecineCustom"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDenoise"]; + [preset setObject:@"" forKey:@"PictureDenoiseCustom"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDeblock"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoGrayScale"]; + + /* Picture crop */ + [preset setObject:[NSNumber numberWithInt:1] forKey:@"PictureAutoCrop"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureTopCrop"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureBottomCrop"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureLeftCrop"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureRightCrop"]; + + /* Auto Passthru */ + [preset setObject:@"AC3 (ffmpeg)" forKey:@"AudioEncoderFallback"]; + [preset setObject:[NSNumber numberWithInt:1] forKey:@"AudioAllowAACPass"]; + [preset setObject:[NSNumber numberWithInt:1] forKey:@"AudioAllowAC3Pass"]; + [preset setObject:[NSNumber numberWithInt:1] forKey:@"AudioAllowDTSHDPass"]; + [preset setObject:[NSNumber numberWithInt:1] forKey:@"AudioAllowDTSPass"]; + [preset setObject:[NSNumber numberWithInt:1] forKey:@"AudioAllowMP3Pass"]; + + /* Audio track list - no need to add "None" at the end */ + NSMutableArray *audioListArray = [[NSMutableArray alloc] init]; + /* Track 1 */ + NSMutableDictionary *audioTrack1Array = [[NSMutableDictionary alloc] init]; + [audioTrack1Array setObject:[NSNumber numberWithInt:1] forKey:@"AudioTrack"]; + [audioTrack1Array setObject:@"AAC (faac)" forKey:@"AudioEncoder"]; + [audioTrack1Array setObject:@"Dolby Pro Logic II" forKey:@"AudioMixdown"]; + [audioTrack1Array setObject:@"Auto" forKey:@"AudioSamplerate"]; + [audioTrack1Array setObject:@"160" forKey:@"AudioBitrate"]; + [audioTrack1Array setObject:[NSNumber numberWithFloat:0.0] forKey:@"AudioTrackGainSlider"]; + [audioTrack1Array setObject:[NSNumber numberWithFloat:0.0] forKey:@"AudioTrackDRCSlider"]; + [audioTrack1Array autorelease]; + [audioListArray addObject:audioTrack1Array]; + /* Add the audio track(s) to the preset's audio list */ + [preset setObject:[NSMutableArray arrayWithArray:audioListArray] forKey:@"AudioList"]; + + /* Subtitles (note: currently ignored) */ + [preset setObject:@"None" forKey:@"Subtitles"]; + + /* Clean up and return the preset */ + [preset autorelease]; + return preset; +} + +- (NSDictionary *)createiPhoneiPodtouchPreset +{ + NSMutableDictionary *preset = [[NSMutableDictionary alloc] init]; + + /* Preset properties (name, type: factory/user, default, folder, tooltip) */ + [preset setObject:@"iPhone & iPod touch" forKey:@"PresetName"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"Type"]; //factory + [preset setObject:[NSNumber numberWithInt:0] forKey:@"Default"]; + [preset setObject:[NSNumber numberWithBool:NO] forKey:@"Folder"]; + [preset setObject:@"HandBrake's settings for handheld iOS devices (iPhone 4, iPod touch 3G and later)." + forKey:@"PresetDescription"]; + + /* Container format and related settings */ + [preset setObject:@"MP4 file" forKey:@"FileFormat"]; + [preset setObject:[NSNumber numberWithInt:1] forKey:@"Mp4LargeFile"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"Mp4HttpOptimize"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"Mp4iPodCompatible"]; + + /* Chapter markers */ + [preset setObject:[NSNumber numberWithInt:1] forKey:@"ChapterMarkers"]; + + /* Video encoder and advanced options */ + [preset setObject:@"H.264 (x264)" forKey:@"VideoEncoder"]; + [preset setObject:@"" forKey:@"lavcOption"]; + [preset setObject:@"" forKey:@"x264Option"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"x264UseAdvancedOptions"]; + [preset setObject:@"medium" forKey:@"x264Preset"]; + [preset setObject:@"" forKey:@"x264Tune"]; + [preset setObject:@"" forKey:@"x264OptionExtra"]; + [preset setObject:@"high" forKey:@"h264Profile"]; + [preset setObject:@"3.1" forKey:@"h264Level"]; + + /* Video rate control */ + [preset setObject:@"2500" forKey:@"VideoAvgBitrate"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoTwoPass"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoTurboTwoPass"]; + [preset setObject:[NSNumber numberWithInt:2] forKey:@"VideoQualityType"]; //cq + [preset setObject:[NSNumber numberWithFloat:22.0] forKey:@"VideoQualitySlider"]; + + /* Video frame rate */ + [preset setObject:@"30" forKey:@"VideoFramerate"]; + [preset setObject:@"pfr" forKey:@"VideoFramerateMode"]; + + /* Picture size */ + [preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureSettings"]; + [preset setObject:[NSNumber numberWithInt:960] forKey:@"PictureWidth"]; + [preset setObject:[NSNumber numberWithInt:640] forKey:@"PictureHeight"]; + [preset setObject:[NSNumber numberWithInt:2] forKey:@"PicturePAR"]; //loose + [preset setObject:[NSNumber numberWithInt:2] forKey:@"PictureModulus"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureKeepRatio"]; //set to 0 for Loose (FIXME: why?) + + /* Picture filters */ + [preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureFilters"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDecomb"]; //off + [preset setObject:@"" forKey:@"PictureDecombCustom"]; + [preset setObject:[NSNumber numberWithInt:1] forKey:@"PictureDecombDeinterlace"]; //decomb + [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDeinterlace"]; + [preset setObject:@"" forKey:@"PictureDeinterlaceCustom"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDetelecine"]; + [preset setObject:@"" forKey:@"PictureDetelecineCustom"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDenoise"]; + [preset setObject:@"" forKey:@"PictureDenoiseCustom"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDeblock"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoGrayScale"]; + + /* Picture crop */ + [preset setObject:[NSNumber numberWithInt:1] forKey:@"PictureAutoCrop"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureTopCrop"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureBottomCrop"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureLeftCrop"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureRightCrop"]; + + /* Auto Passthru */ + [preset setObject:@"AC3 (ffmpeg)" forKey:@"AudioEncoderFallback"]; + [preset setObject:[NSNumber numberWithInt:1] forKey:@"AudioAllowAACPass"]; + [preset setObject:[NSNumber numberWithInt:1] forKey:@"AudioAllowAC3Pass"]; + [preset setObject:[NSNumber numberWithInt:1] forKey:@"AudioAllowDTSHDPass"]; + [preset setObject:[NSNumber numberWithInt:1] forKey:@"AudioAllowDTSPass"]; + [preset setObject:[NSNumber numberWithInt:1] forKey:@"AudioAllowMP3Pass"]; + + /* Audio track list - no need to add "None" at the end */ + NSMutableArray *audioListArray = [[NSMutableArray alloc] init]; + /* Track 1 */ + NSMutableDictionary *audioTrack1Array = [[NSMutableDictionary alloc] init]; + [audioTrack1Array setObject:[NSNumber numberWithInt:1] forKey:@"AudioTrack"]; + [audioTrack1Array setObject:@"AAC (faac)" forKey:@"AudioEncoder"]; + [audioTrack1Array setObject:@"Dolby Pro Logic II" forKey:@"AudioMixdown"]; + [audioTrack1Array setObject:@"Auto" forKey:@"AudioSamplerate"]; + [audioTrack1Array setObject:@"160" forKey:@"AudioBitrate"]; + [audioTrack1Array setObject:[NSNumber numberWithFloat:0.0] forKey:@"AudioTrackGainSlider"]; + [audioTrack1Array setObject:[NSNumber numberWithFloat:0.0] forKey:@"AudioTrackDRCSlider"]; + [audioTrack1Array autorelease]; + [audioListArray addObject:audioTrack1Array]; + /* Add the audio track(s) to the preset's audio list */ + [preset setObject:[NSMutableArray arrayWithArray:audioListArray] forKey:@"AudioList"]; + + /* Subtitles (note: currently ignored) */ + [preset setObject:@"None" forKey:@"Subtitles"]; + + /* Clean up and return the preset */ + [preset autorelease]; + return preset; +} + +- (NSDictionary *)createiPadPreset +{ + NSMutableDictionary *preset = [[NSMutableDictionary alloc] init]; + + /* Preset properties (name, type: factory/user, default, folder, tooltip) */ + [preset setObject:@"iPad" forKey:@"PresetName"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"Type"]; //factory + [preset setObject:[NSNumber numberWithInt:0] forKey:@"Default"]; + [preset setObject:[NSNumber numberWithBool:NO] forKey:@"Folder"]; + [preset setObject:@"HandBrake's settings for playback on the iPad (all generations)." + forKey:@"PresetDescription"]; + + /* Container format and related settings */ + [preset setObject:@"MP4 file" forKey:@"FileFormat"]; + [preset setObject:[NSNumber numberWithInt:1] forKey:@"Mp4LargeFile"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"Mp4HttpOptimize"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"Mp4iPodCompatible"]; + + /* Chapter markers */ + [preset setObject:[NSNumber numberWithInt:1] forKey:@"ChapterMarkers"]; + + /* Video encoder and advanced options */ + [preset setObject:@"H.264 (x264)" forKey:@"VideoEncoder"]; + [preset setObject:@"" forKey:@"lavcOption"]; + [preset setObject:@"" forKey:@"x264Option"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"x264UseAdvancedOptions"]; + [preset setObject:@"medium" forKey:@"x264Preset"]; + [preset setObject:@"" forKey:@"x264Tune"]; + [preset setObject:@"" forKey:@"x264OptionExtra"]; + [preset setObject:@"high" forKey:@"h264Profile"]; + [preset setObject:@"3.1" forKey:@"h264Level"]; + + /* Video rate control */ + [preset setObject:@"2500" forKey:@"VideoAvgBitrate"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoTwoPass"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoTurboTwoPass"]; + [preset setObject:[NSNumber numberWithInt:2] forKey:@"VideoQualityType"]; //cq + [preset setObject:[NSNumber numberWithFloat:20.0] forKey:@"VideoQualitySlider"]; + + /* Video frame rate */ + [preset setObject:@"30" forKey:@"VideoFramerate"]; + [preset setObject:@"pfr" forKey:@"VideoFramerateMode"]; + + /* Picture size */ + [preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureSettings"]; + [preset setObject:[NSNumber numberWithInt:1280] forKey:@"PictureWidth"]; + [preset setObject:[NSNumber numberWithInt:720] forKey:@"PictureHeight"]; + [preset setObject:[NSNumber numberWithInt:2] forKey:@"PicturePAR"]; //loose + [preset setObject:[NSNumber numberWithInt:2] forKey:@"PictureModulus"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureKeepRatio"]; //set to 0 for Loose (FIXME: why?) + + /* Picture filters */ + [preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureFilters"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDecomb"]; //off + [preset setObject:@"" forKey:@"PictureDecombCustom"]; + [preset setObject:[NSNumber numberWithInt:1] forKey:@"PictureDecombDeinterlace"]; //decomb + [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDeinterlace"]; + [preset setObject:@"" forKey:@"PictureDeinterlaceCustom"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDetelecine"]; + [preset setObject:@"" forKey:@"PictureDetelecineCustom"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDenoise"]; + [preset setObject:@"" forKey:@"PictureDenoiseCustom"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDeblock"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoGrayScale"]; + + /* Picture crop */ + [preset setObject:[NSNumber numberWithInt:1] forKey:@"PictureAutoCrop"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureTopCrop"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureBottomCrop"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureLeftCrop"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureRightCrop"]; + + /* Auto Passthru */ + [preset setObject:@"AC3 (ffmpeg)" forKey:@"AudioEncoderFallback"]; + [preset setObject:[NSNumber numberWithInt:1] forKey:@"AudioAllowAACPass"]; + [preset setObject:[NSNumber numberWithInt:1] forKey:@"AudioAllowAC3Pass"]; + [preset setObject:[NSNumber numberWithInt:1] forKey:@"AudioAllowDTSHDPass"]; + [preset setObject:[NSNumber numberWithInt:1] forKey:@"AudioAllowDTSPass"]; + [preset setObject:[NSNumber numberWithInt:1] forKey:@"AudioAllowMP3Pass"]; + + /* Audio track list - no need to add "None" at the end */ + NSMutableArray *audioListArray = [[NSMutableArray alloc] init]; + /* Track 1 */ + NSMutableDictionary *audioTrack1Array = [[NSMutableDictionary alloc] init]; + [audioTrack1Array setObject:[NSNumber numberWithInt:1] forKey:@"AudioTrack"]; + [audioTrack1Array setObject:@"AAC (faac)" forKey:@"AudioEncoder"]; + [audioTrack1Array setObject:@"Dolby Pro Logic II" forKey:@"AudioMixdown"]; + [audioTrack1Array setObject:@"Auto" forKey:@"AudioSamplerate"]; + [audioTrack1Array setObject:@"160" forKey:@"AudioBitrate"]; + [audioTrack1Array setObject:[NSNumber numberWithFloat:0.0] forKey:@"AudioTrackGainSlider"]; + [audioTrack1Array setObject:[NSNumber numberWithFloat:0.0] forKey:@"AudioTrackDRCSlider"]; + [audioTrack1Array autorelease]; + [audioListArray addObject:audioTrack1Array]; + /* Add the audio track(s) to the preset's audio list */ + [preset setObject:[NSMutableArray arrayWithArray:audioListArray] forKey:@"AudioList"]; + + /* Subtitles (note: currently ignored) */ + [preset setObject:@"None" forKey:@"Subtitles"]; + + /* Clean up and return the preset */ + [preset autorelease]; + return preset; +} + +- (NSDictionary *)createAppleTVPreset +{ + NSMutableDictionary *preset = [[NSMutableDictionary alloc] init]; + + /* Preset properties (name, type: factory/user, default, folder, tooltip) */ + [preset setObject:@"AppleTV" forKey:@"PresetName"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"Type"]; //factory + [preset setObject:[NSNumber numberWithInt:0] forKey:@"Default"]; + [preset setObject:[NSNumber numberWithBool:NO] forKey:@"Folder"]; + [preset setObject:@"HandBrake's settings for the original AppleTV. Includes Dolby Digital audio for surround sound. Also compatible with iOS devices released since 2009." + forKey:@"PresetDescription"]; + + /* Container format and related settings */ + [preset setObject:@"MP4 file" forKey:@"FileFormat"]; + [preset setObject:[NSNumber numberWithInt:1] forKey:@"Mp4LargeFile"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"Mp4HttpOptimize"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"Mp4iPodCompatible"]; + + /* Chapter markers */ + [preset setObject:[NSNumber numberWithInt:1] forKey:@"ChapterMarkers"]; + + /* Video encoder and advanced options */ + [preset setObject:@"H.264 (x264)" forKey:@"VideoEncoder"]; + [preset setObject:@"" forKey:@"lavcOption"]; + [preset setObject:@"" forKey:@"x264Option"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"x264UseAdvancedOptions"]; + [preset setObject:@"medium" forKey:@"x264Preset"]; + [preset setObject:@"" forKey:@"x264Tune"]; + [preset setObject:@"qpmin=4:cabac=0:ref=2:b-pyramid=none:weightb=0:weightp=0:vbv-maxrate=9500:vbv-bufsize=9500" + forKey:@"x264OptionExtra"]; + [preset setObject:@"high" forKey:@"h264Profile"]; + [preset setObject:@"3.1" forKey:@"h264Level"]; + + /* Video rate control */ + [preset setObject:@"2500" forKey:@"VideoAvgBitrate"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoTwoPass"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoTurboTwoPass"]; + [preset setObject:[NSNumber numberWithInt:2] forKey:@"VideoQualityType"]; //cq + [preset setObject:[NSNumber numberWithFloat:20.0] forKey:@"VideoQualitySlider"]; + + /* Video frame rate */ + [preset setObject:@"30" forKey:@"VideoFramerate"]; + [preset setObject:@"pfr" forKey:@"VideoFramerateMode"]; + + /* Picture size */ + [preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureSettings"]; + [preset setObject:[NSNumber numberWithInt:960] forKey:@"PictureWidth"]; + [preset setObject:[NSNumber numberWithInt:720] forKey:@"PictureHeight"]; + [preset setObject:[NSNumber numberWithInt:2] forKey:@"PicturePAR"]; //loose + [preset setObject:[NSNumber numberWithInt:2] forKey:@"PictureModulus"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureKeepRatio"]; //set to 0 for Loose (FIXME: why?) + + /* Picture filters */ + [preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureFilters"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDecomb"]; //off + [preset setObject:@"" forKey:@"PictureDecombCustom"]; + [preset setObject:[NSNumber numberWithInt:1] forKey:@"PictureDecombDeinterlace"]; //decomb + [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDeinterlace"]; + [preset setObject:@"" forKey:@"PictureDeinterlaceCustom"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDetelecine"]; + [preset setObject:@"" forKey:@"PictureDetelecineCustom"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDenoise"]; + [preset setObject:@"" forKey:@"PictureDenoiseCustom"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDeblock"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoGrayScale"]; + + /* Picture crop */ + [preset setObject:[NSNumber numberWithInt:1] forKey:@"PictureAutoCrop"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureTopCrop"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureBottomCrop"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureLeftCrop"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureRightCrop"]; + + /* Auto Passthru */ + [preset setObject:@"AC3 (ffmpeg)" forKey:@"AudioEncoderFallback"]; + [preset setObject:[NSNumber numberWithInt:1] forKey:@"AudioAllowAACPass"]; + [preset setObject:[NSNumber numberWithInt:1] forKey:@"AudioAllowAC3Pass"]; + [preset setObject:[NSNumber numberWithInt:1] forKey:@"AudioAllowDTSHDPass"]; + [preset setObject:[NSNumber numberWithInt:1] forKey:@"AudioAllowDTSPass"]; + [preset setObject:[NSNumber numberWithInt:1] forKey:@"AudioAllowMP3Pass"]; + + /* Audio track list - no need to add "None" at the end */ + NSMutableArray *audioListArray = [[NSMutableArray alloc] init]; + /* Track 1 */ + NSMutableDictionary *audioTrack1Array = [[NSMutableDictionary alloc] init]; + [audioTrack1Array setObject:[NSNumber numberWithInt:1] forKey:@"AudioTrack"]; + [audioTrack1Array setObject:@"AAC (faac)" forKey:@"AudioEncoder"]; + [audioTrack1Array setObject:@"Dolby Pro Logic II" forKey:@"AudioMixdown"]; + [audioTrack1Array setObject:@"Auto" forKey:@"AudioSamplerate"]; + [audioTrack1Array setObject:@"160" forKey:@"AudioBitrate"]; + [audioTrack1Array setObject:[NSNumber numberWithFloat:0.0] forKey:@"AudioTrackGainSlider"]; + [audioTrack1Array setObject:[NSNumber numberWithFloat:0.0] forKey:@"AudioTrackDRCSlider"]; + [audioTrack1Array autorelease]; + [audioListArray addObject:audioTrack1Array]; + /* Track 2 */ + NSMutableDictionary *audioTrack2Array = [[NSMutableDictionary alloc] init]; + [audioTrack2Array setObject:[NSNumber numberWithInt:1] forKey:@"AudioTrack"]; + [audioTrack2Array setObject:@"AC3 Passthru" forKey:@"AudioEncoder"]; + [audioTrack2Array setObject:@"None" forKey:@"AudioMixdown"]; + [audioTrack2Array setObject:@"Auto" forKey:@"AudioSamplerate"]; + [audioTrack2Array setObject:@"160" forKey:@"AudioBitrate"]; + [audioTrack2Array setObject:[NSNumber numberWithFloat:0.0] forKey:@"AudioTrackGainSlider"]; + [audioTrack2Array setObject:[NSNumber numberWithFloat:0.0] forKey:@"AudioTrackDRCSlider"]; + [audioTrack2Array autorelease]; + [audioListArray addObject:audioTrack2Array]; + /* Add the audio track(s) to the preset's audio list */ + [preset setObject:[NSMutableArray arrayWithArray:audioListArray] forKey:@"AudioList"]; + + /* Subtitles (note: currently ignored) */ + [preset setObject:@"None" forKey:@"Subtitles"]; + + /* Clean up and return the preset */ + [preset autorelease]; + return preset; +} + +- (NSDictionary *)createAppleTV2Preset +{ + NSMutableDictionary *preset = [[NSMutableDictionary alloc] init]; + + /* Preset properties (name, type: factory/user, default, folder, tooltip) */ + [preset setObject:@"AppleTV 2" forKey:@"PresetName"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"Type"]; //factory + [preset setObject:[NSNumber numberWithInt:0] forKey:@"Default"]; + [preset setObject:[NSNumber numberWithBool:NO] forKey:@"Folder"]; + [preset setObject:@"HandBrake's settings for the second-generation AppleTV. Includes Dolby Digital audio for surround sound. NOT compatible with the original AppleTV." + forKey:@"PresetDescription"]; + + /* Container format and related settings */ + [preset setObject:@"MP4 file" forKey:@"FileFormat"]; + [preset setObject:[NSNumber numberWithInt:1] forKey:@"Mp4LargeFile"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"Mp4HttpOptimize"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"Mp4iPodCompatible"]; + + /* Chapter markers */ + [preset setObject:[NSNumber numberWithInt:1] forKey:@"ChapterMarkers"]; + + /* Video encoder and advanced options */ + [preset setObject:@"H.264 (x264)" forKey:@"VideoEncoder"]; + [preset setObject:@"" forKey:@"lavcOption"]; + [preset setObject:@"" forKey:@"x264Option"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"x264UseAdvancedOptions"]; + [preset setObject:@"medium" forKey:@"x264Preset"]; + [preset setObject:@"" forKey:@"x264Tune"]; + [preset setObject:@"" forKey:@"x264OptionExtra"]; + [preset setObject:@"high" forKey:@"h264Profile"]; + [preset setObject:@"3.1" forKey:@"h264Level"]; + + /* Video rate control */ + [preset setObject:@"2500" forKey:@"VideoAvgBitrate"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoTwoPass"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoTurboTwoPass"]; + [preset setObject:[NSNumber numberWithInt:2] forKey:@"VideoQualityType"]; //cq + [preset setObject:[NSNumber numberWithFloat:20.0] forKey:@"VideoQualitySlider"]; + + /* Video frame rate */ + [preset setObject:@"30" forKey:@"VideoFramerate"]; + [preset setObject:@"pfr" forKey:@"VideoFramerateMode"]; + + /* Picture size */ + [preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureSettings"]; + [preset setObject:[NSNumber numberWithInt:1280] forKey:@"PictureWidth"]; + [preset setObject:[NSNumber numberWithInt:720] forKey:@"PictureHeight"]; + [preset setObject:[NSNumber numberWithInt:2] forKey:@"PicturePAR"]; //loose + [preset setObject:[NSNumber numberWithInt:2] forKey:@"PictureModulus"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureKeepRatio"]; //set to 0 for Loose (FIXME: why?) + + /* Picture filters */ + [preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureFilters"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDecomb"]; //off + [preset setObject:@"" forKey:@"PictureDecombCustom"]; + [preset setObject:[NSNumber numberWithInt:1] forKey:@"PictureDecombDeinterlace"]; //decomb + [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDeinterlace"]; + [preset setObject:@"" forKey:@"PictureDeinterlaceCustom"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDetelecine"]; + [preset setObject:@"" forKey:@"PictureDetelecineCustom"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDenoise"]; + [preset setObject:@"" forKey:@"PictureDenoiseCustom"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDeblock"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoGrayScale"]; + + /* Picture crop */ + [preset setObject:[NSNumber numberWithInt:1] forKey:@"PictureAutoCrop"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureTopCrop"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureBottomCrop"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureLeftCrop"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureRightCrop"]; + + /* Auto Passthru */ + [preset setObject:@"AC3 (ffmpeg)" forKey:@"AudioEncoderFallback"]; + [preset setObject:[NSNumber numberWithInt:1] forKey:@"AudioAllowAACPass"]; + [preset setObject:[NSNumber numberWithInt:1] forKey:@"AudioAllowAC3Pass"]; + [preset setObject:[NSNumber numberWithInt:1] forKey:@"AudioAllowDTSHDPass"]; + [preset setObject:[NSNumber numberWithInt:1] forKey:@"AudioAllowDTSPass"]; + [preset setObject:[NSNumber numberWithInt:1] forKey:@"AudioAllowMP3Pass"]; + + /* Audio track list - no need to add "None" at the end */ + NSMutableArray *audioListArray = [[NSMutableArray alloc] init]; + /* Track 1 */ + NSMutableDictionary *audioTrack1Array = [[NSMutableDictionary alloc] init]; + [audioTrack1Array setObject:[NSNumber numberWithInt:1] forKey:@"AudioTrack"]; + [audioTrack1Array setObject:@"AAC (faac)" forKey:@"AudioEncoder"]; + [audioTrack1Array setObject:@"Dolby Pro Logic II" forKey:@"AudioMixdown"]; + [audioTrack1Array setObject:@"Auto" forKey:@"AudioSamplerate"]; + [audioTrack1Array setObject:@"160" forKey:@"AudioBitrate"]; + [audioTrack1Array setObject:[NSNumber numberWithFloat:0.0] forKey:@"AudioTrackGainSlider"]; + [audioTrack1Array setObject:[NSNumber numberWithFloat:0.0] forKey:@"AudioTrackDRCSlider"]; + [audioTrack1Array autorelease]; + [audioListArray addObject:audioTrack1Array]; + /* Track 2 */ + NSMutableDictionary *audioTrack2Array = [[NSMutableDictionary alloc] init]; + [audioTrack2Array setObject:[NSNumber numberWithInt:1] forKey:@"AudioTrack"]; + [audioTrack2Array setObject:@"AC3 Passthru" forKey:@"AudioEncoder"]; + [audioTrack2Array setObject:@"None" forKey:@"AudioMixdown"]; + [audioTrack2Array setObject:@"Auto" forKey:@"AudioSamplerate"]; + [audioTrack2Array setObject:@"160" forKey:@"AudioBitrate"]; + [audioTrack2Array setObject:[NSNumber numberWithFloat:0.0] forKey:@"AudioTrackGainSlider"]; + [audioTrack2Array setObject:[NSNumber numberWithFloat:0.0] forKey:@"AudioTrackDRCSlider"]; + [audioTrack2Array autorelease]; + [audioListArray addObject:audioTrack2Array]; + /* Add the audio track(s) to the preset's audio list */ + [preset setObject:[NSMutableArray arrayWithArray:audioListArray] forKey:@"AudioList"]; + + /* Subtitles (note: currently ignored) */ + [preset setObject:@"None" forKey:@"Subtitles"]; + + /* Clean up and return the preset */ + [preset autorelease]; + return preset; +} + +- (NSDictionary *)createAppleTV3Preset +{ + NSMutableDictionary *preset = [[NSMutableDictionary alloc] init]; + + /* Preset properties (name, type: factory/user, default, folder, tooltip) */ + [preset setObject:@"AppleTV 3" forKey:@"PresetName"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"Type"]; //factory + [preset setObject:[NSNumber numberWithInt:0] forKey:@"Default"]; + [preset setObject:[NSNumber numberWithBool:NO] forKey:@"Folder"]; + [preset setObject:@"HandBrake's settings for the third-generation AppleTV. Includes Dolby Digital audio for surround sound. NOT compatible with the original AppleTV. May stutter on the second-generation AppleTV." + forKey:@"PresetDescription"]; + + /* Container format and related settings */ + [preset setObject:@"MP4 file" forKey:@"FileFormat"]; + [preset setObject:[NSNumber numberWithInt:1] forKey:@"Mp4LargeFile"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"Mp4HttpOptimize"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"Mp4iPodCompatible"]; + + /* Chapter markers */ + [preset setObject:[NSNumber numberWithInt:1] forKey:@"ChapterMarkers"]; + + /* Video encoder and advanced options */ + [preset setObject:@"H.264 (x264)" forKey:@"VideoEncoder"]; + [preset setObject:@"" forKey:@"lavcOption"]; + [preset setObject:@"" forKey:@"x264Option"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"x264UseAdvancedOptions"]; + [preset setObject:@"medium" forKey:@"x264Preset"]; + [preset setObject:@"" forKey:@"x264Tune"]; + [preset setObject:@"" forKey:@"x264OptionExtra"]; + [preset setObject:@"high" forKey:@"h264Profile"]; + [preset setObject:@"4.0" forKey:@"h264Level"]; + + /* Video rate control */ + [preset setObject:@"2500" forKey:@"VideoAvgBitrate"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoTwoPass"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoTurboTwoPass"]; + [preset setObject:[NSNumber numberWithInt:2] forKey:@"VideoQualityType"]; //cq + [preset setObject:[NSNumber numberWithFloat:20.0] forKey:@"VideoQualitySlider"]; + + /* Video frame rate */ + [preset setObject:@"30" forKey:@"VideoFramerate"]; + [preset setObject:@"pfr" forKey:@"VideoFramerateMode"]; + + /* Picture size */ + [preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureSettings"]; + [preset setObject:[NSNumber numberWithInt:1920] forKey:@"PictureWidth"]; + [preset setObject:[NSNumber numberWithInt:1080] forKey:@"PictureHeight"]; + [preset setObject:[NSNumber numberWithInt:2] forKey:@"PicturePAR"]; //loose + [preset setObject:[NSNumber numberWithInt:2] forKey:@"PictureModulus"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureKeepRatio"]; //set to 0 for Loose (FIXME: why?) + + /* Picture filters */ + [preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureFilters"]; + [preset setObject:[NSNumber numberWithInt:3] forKey:@"PictureDecomb"]; //fast + [preset setObject:@"" forKey:@"PictureDecombCustom"]; + [preset setObject:[NSNumber numberWithInt:1] forKey:@"PictureDecombDeinterlace"]; //decomb + [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDeinterlace"]; + [preset setObject:@"" forKey:@"PictureDeinterlaceCustom"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDetelecine"]; + [preset setObject:@"" forKey:@"PictureDetelecineCustom"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDenoise"]; + [preset setObject:@"" forKey:@"PictureDenoiseCustom"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDeblock"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoGrayScale"]; + + /* Picture crop */ + [preset setObject:[NSNumber numberWithInt:1] forKey:@"PictureAutoCrop"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureTopCrop"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureBottomCrop"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureLeftCrop"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureRightCrop"]; + + /* Auto Passthru */ + [preset setObject:@"AC3 (ffmpeg)" forKey:@"AudioEncoderFallback"]; + [preset setObject:[NSNumber numberWithInt:1] forKey:@"AudioAllowAACPass"]; + [preset setObject:[NSNumber numberWithInt:1] forKey:@"AudioAllowAC3Pass"]; + [preset setObject:[NSNumber numberWithInt:1] forKey:@"AudioAllowDTSHDPass"]; + [preset setObject:[NSNumber numberWithInt:1] forKey:@"AudioAllowDTSPass"]; + [preset setObject:[NSNumber numberWithInt:1] forKey:@"AudioAllowMP3Pass"]; + + /* Audio track list - no need to add "None" at the end */ + NSMutableArray *audioListArray = [[NSMutableArray alloc] init]; + /* Track 1 */ + NSMutableDictionary *audioTrack1Array = [[NSMutableDictionary alloc] init]; + [audioTrack1Array setObject:[NSNumber numberWithInt:1] forKey:@"AudioTrack"]; + [audioTrack1Array setObject:@"AAC (faac)" forKey:@"AudioEncoder"]; + [audioTrack1Array setObject:@"Dolby Pro Logic II" forKey:@"AudioMixdown"]; + [audioTrack1Array setObject:@"Auto" forKey:@"AudioSamplerate"]; + [audioTrack1Array setObject:@"160" forKey:@"AudioBitrate"]; + [audioTrack1Array setObject:[NSNumber numberWithFloat:0.0] forKey:@"AudioTrackGainSlider"]; + [audioTrack1Array setObject:[NSNumber numberWithFloat:0.0] forKey:@"AudioTrackDRCSlider"]; + [audioTrack1Array autorelease]; + [audioListArray addObject:audioTrack1Array]; + /* Track 2 */ + NSMutableDictionary *audioTrack2Array = [[NSMutableDictionary alloc] init]; + [audioTrack2Array setObject:[NSNumber numberWithInt:1] forKey:@"AudioTrack"]; + [audioTrack2Array setObject:@"AC3 Passthru" forKey:@"AudioEncoder"]; + [audioTrack2Array setObject:@"None" forKey:@"AudioMixdown"]; + [audioTrack2Array setObject:@"Auto" forKey:@"AudioSamplerate"]; + [audioTrack2Array setObject:@"160" forKey:@"AudioBitrate"]; + [audioTrack2Array setObject:[NSNumber numberWithFloat:0.0] forKey:@"AudioTrackGainSlider"]; + [audioTrack2Array setObject:[NSNumber numberWithFloat:0.0] forKey:@"AudioTrackDRCSlider"]; + [audioTrack2Array autorelease]; + [audioListArray addObject:audioTrack2Array]; + /* Add the audio track(s) to the preset's audio list */ + [preset setObject:[NSMutableArray arrayWithArray:audioListArray] forKey:@"AudioList"]; + + /* Subtitles (note: currently ignored) */ + [preset setObject:@"None" forKey:@"Subtitles"]; + + /* Clean up and return the preset */ + [preset autorelease]; + return preset; +} + +- (NSDictionary *)createAndroidPreset +{ + NSMutableDictionary *preset = [[NSMutableDictionary alloc] init]; + + /* Preset properties (name, type: factory/user, default, folder, tooltip) */ + [preset setObject:@"Android" forKey:@"PresetName"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"Type"]; //factory + [preset setObject:[NSNumber numberWithInt:0] forKey:@"Default"]; + [preset setObject:[NSNumber numberWithBool:NO] forKey:@"Folder"]; + [preset setObject:@"HandBrake's settings for midrange devices running Android 2.3 or later." + forKey:@"PresetDescription"]; + + /* Container format and related settings */ + [preset setObject:@"MP4 file" forKey:@"FileFormat"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"Mp4LargeFile"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"Mp4HttpOptimize"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"Mp4iPodCompatible"]; + + /* Chapter markers */ + [preset setObject:[NSNumber numberWithInt:0] forKey:@"ChapterMarkers"]; + + /* Video encoder and advanced options */ + [preset setObject:@"H.264 (x264)" forKey:@"VideoEncoder"]; + [preset setObject:@"" forKey:@"lavcOption"]; + [preset setObject:@"" forKey:@"x264Option"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"x264UseAdvancedOptions"]; + [preset setObject:@"medium" forKey:@"x264Preset"]; + [preset setObject:@"" forKey:@"x264Tune"]; + [preset setObject:@"" forKey:@"x264OptionExtra"]; + [preset setObject:@"main" forKey:@"h264Profile"]; + [preset setObject:@"3.0" forKey:@"h264Level"]; + + /* Video rate control */ + [preset setObject:@"2500" forKey:@"VideoAvgBitrate"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoTwoPass"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoTurboTwoPass"]; + [preset setObject:[NSNumber numberWithInt:2] forKey:@"VideoQualityType"]; //cq + [preset setObject:[NSNumber numberWithFloat:22.0] forKey:@"VideoQualitySlider"]; + + /* Video frame rate */ + [preset setObject:@"30" forKey:@"VideoFramerate"]; + [preset setObject:@"pfr" forKey:@"VideoFramerateMode"]; + + /* Picture size */ + [preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureSettings"]; + [preset setObject:[NSNumber numberWithInt:720] forKey:@"PictureWidth"]; + [preset setObject:[NSNumber numberWithInt:576] forKey:@"PictureHeight"]; + [preset setObject:[NSNumber numberWithInt:2] forKey:@"PicturePAR"]; //loose + [preset setObject:[NSNumber numberWithInt:2] forKey:@"PictureModulus"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureKeepRatio"]; //set to 0 for Loose (FIXME: why?) + + /* Picture filters */ + [preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureFilters"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDecomb"]; //off + [preset setObject:@"" forKey:@"PictureDecombCustom"]; + [preset setObject:[NSNumber numberWithInt:1] forKey:@"PictureDecombDeinterlace"]; //decomb + [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDeinterlace"]; + [preset setObject:@"" forKey:@"PictureDeinterlaceCustom"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDetelecine"]; + [preset setObject:@"" forKey:@"PictureDetelecineCustom"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDenoise"]; + [preset setObject:@"" forKey:@"PictureDenoiseCustom"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDeblock"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoGrayScale"]; + + /* Picture crop */ + [preset setObject:[NSNumber numberWithInt:1] forKey:@"PictureAutoCrop"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureTopCrop"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureBottomCrop"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureLeftCrop"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureRightCrop"]; + + /* Auto Passthru */ + [preset setObject:@"AC3 (ffmpeg)" forKey:@"AudioEncoderFallback"]; + [preset setObject:[NSNumber numberWithInt:1] forKey:@"AudioAllowAACPass"]; + [preset setObject:[NSNumber numberWithInt:1] forKey:@"AudioAllowAC3Pass"]; + [preset setObject:[NSNumber numberWithInt:1] forKey:@"AudioAllowDTSHDPass"]; + [preset setObject:[NSNumber numberWithInt:1] forKey:@"AudioAllowDTSPass"]; + [preset setObject:[NSNumber numberWithInt:1] forKey:@"AudioAllowMP3Pass"]; + + /* Audio track list - no need to add "None" at the end */ + NSMutableArray *audioListArray = [[NSMutableArray alloc] init]; + /* Track 1 */ + NSMutableDictionary *audioTrack1Array = [[NSMutableDictionary alloc] init]; + [audioTrack1Array setObject:[NSNumber numberWithInt:1] forKey:@"AudioTrack"]; + [audioTrack1Array setObject:@"AAC (faac)" forKey:@"AudioEncoder"]; + [audioTrack1Array setObject:@"Dolby Pro Logic II" forKey:@"AudioMixdown"]; + [audioTrack1Array setObject:@"Auto" forKey:@"AudioSamplerate"]; + [audioTrack1Array setObject:@"128" forKey:@"AudioBitrate"]; + [audioTrack1Array setObject:[NSNumber numberWithFloat:0.0] forKey:@"AudioTrackGainSlider"]; + [audioTrack1Array setObject:[NSNumber numberWithFloat:0.0] forKey:@"AudioTrackDRCSlider"]; + [audioTrack1Array autorelease]; + [audioListArray addObject:audioTrack1Array]; + /* Add the audio track(s) to the preset's audio list */ + [preset setObject:[NSMutableArray arrayWithArray:audioListArray] forKey:@"AudioList"]; + + /* Subtitles (note: currently ignored) */ + [preset setObject:@"None" forKey:@"Subtitles"]; + + /* Clean up and return the preset */ + [preset autorelease]; + return preset; +} + +- (NSDictionary *)createAndroidTabletPreset +{ + NSMutableDictionary *preset = [[NSMutableDictionary alloc] init]; + + /* Preset properties (name, type: factory/user, default, folder, tooltip) */ + [preset setObject:@"Android Tablet" forKey:@"PresetName"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"Type"]; //factory + [preset setObject:[NSNumber numberWithInt:0] forKey:@"Default"]; + [preset setObject:[NSNumber numberWithBool:NO] forKey:@"Folder"]; + [preset setObject:@"HandBrake's preset for tablets running Android 2.3 or later." + forKey:@"PresetDescription"]; + + /* Container format and related settings */ + [preset setObject:@"MP4 file" forKey:@"FileFormat"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"Mp4LargeFile"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"Mp4HttpOptimize"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"Mp4iPodCompatible"]; + + /* Chapter markers */ + [preset setObject:[NSNumber numberWithInt:0] forKey:@"ChapterMarkers"]; + + /* Video encoder and advanced options */ + [preset setObject:@"H.264 (x264)" forKey:@"VideoEncoder"]; + [preset setObject:@"" forKey:@"lavcOption"]; + [preset setObject:@"" forKey:@"x264Option"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"x264UseAdvancedOptions"]; + [preset setObject:@"medium" forKey:@"x264Preset"]; + [preset setObject:@"" forKey:@"x264Tune"]; + [preset setObject:@"" forKey:@"x264OptionExtra"]; + [preset setObject:@"main" forKey:@"h264Profile"]; + [preset setObject:@"3.1" forKey:@"h264Level"]; + + /* Video rate control */ + [preset setObject:@"2500" forKey:@"VideoAvgBitrate"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoTwoPass"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoTurboTwoPass"]; + [preset setObject:[NSNumber numberWithInt:2] forKey:@"VideoQualityType"]; //cq + [preset setObject:[NSNumber numberWithFloat:22.0] forKey:@"VideoQualitySlider"]; + + /* Video frame rate */ + [preset setObject:@"30" forKey:@"VideoFramerate"]; + [preset setObject:@"pfr" forKey:@"VideoFramerateMode"]; + + /* Picture size */ + [preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureSettings"]; + [preset setObject:[NSNumber numberWithInt:1280] forKey:@"PictureWidth"]; + [preset setObject:[NSNumber numberWithInt:720] forKey:@"PictureHeight"]; + [preset setObject:[NSNumber numberWithInt:2] forKey:@"PicturePAR"]; //loose + [preset setObject:[NSNumber numberWithInt:2] forKey:@"PictureModulus"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureKeepRatio"]; //set to 0 for Loose (FIXME: why?) + + /* Picture filters */ + [preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureFilters"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDecomb"]; //off + [preset setObject:@"" forKey:@"PictureDecombCustom"]; + [preset setObject:[NSNumber numberWithInt:1] forKey:@"PictureDecombDeinterlace"]; //decomb + [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDeinterlace"]; + [preset setObject:@"" forKey:@"PictureDeinterlaceCustom"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDetelecine"]; + [preset setObject:@"" forKey:@"PictureDetelecineCustom"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDenoise"]; + [preset setObject:@"" forKey:@"PictureDenoiseCustom"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDeblock"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoGrayScale"]; + + /* Picture crop */ + [preset setObject:[NSNumber numberWithInt:1] forKey:@"PictureAutoCrop"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureTopCrop"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureBottomCrop"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureLeftCrop"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureRightCrop"]; + + /* Auto Passthru */ + [preset setObject:@"AC3 (ffmpeg)" forKey:@"AudioEncoderFallback"]; + [preset setObject:[NSNumber numberWithInt:1] forKey:@"AudioAllowAACPass"]; + [preset setObject:[NSNumber numberWithInt:1] forKey:@"AudioAllowAC3Pass"]; + [preset setObject:[NSNumber numberWithInt:1] forKey:@"AudioAllowDTSHDPass"]; + [preset setObject:[NSNumber numberWithInt:1] forKey:@"AudioAllowDTSPass"]; + [preset setObject:[NSNumber numberWithInt:1] forKey:@"AudioAllowMP3Pass"]; + + /* Audio track list - no need to add "None" at the end */ + NSMutableArray *audioListArray = [[NSMutableArray alloc] init]; + /* Track 1 */ + NSMutableDictionary *audioTrack1Array = [[NSMutableDictionary alloc] init]; + [audioTrack1Array setObject:[NSNumber numberWithInt:1] forKey:@"AudioTrack"]; + [audioTrack1Array setObject:@"AAC (faac)" forKey:@"AudioEncoder"]; + [audioTrack1Array setObject:@"Dolby Pro Logic II" forKey:@"AudioMixdown"]; + [audioTrack1Array setObject:@"Auto" forKey:@"AudioSamplerate"]; + [audioTrack1Array setObject:@"128" forKey:@"AudioBitrate"]; + [audioTrack1Array setObject:[NSNumber numberWithFloat:0.0] forKey:@"AudioTrackGainSlider"]; + [audioTrack1Array setObject:[NSNumber numberWithFloat:0.0] forKey:@"AudioTrackDRCSlider"]; + [audioTrack1Array autorelease]; + [audioListArray addObject:audioTrack1Array]; + /* Add the audio track(s) to the preset's audio list */ + [preset setObject:[NSMutableArray arrayWithArray:audioListArray] forKey:@"AudioList"]; + + /* Subtitles (note: currently ignored) */ + [preset setObject:@"None" forKey:@"Subtitles"]; + + /* Clean up and return the preset */ + [preset autorelease]; + return preset; +} + +- (NSDictionary *)createNormalPreset +{ + NSMutableDictionary *preset = [[NSMutableDictionary alloc] init]; + + /* Preset properties (name, type: factory/user, default, folder, tooltip) */ + [preset setObject:@"Normal" forKey:@"PresetName"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"Type"]; //factory + [preset setObject:[NSNumber numberWithInt:1] forKey:@"Default"]; //default + [preset setObject:[NSNumber numberWithBool:NO] forKey:@"Folder"]; + [preset setObject:@"HandBrake's normal, default settings." + forKey:@"PresetDescription"]; + + /* Container format and related settings */ + [preset setObject:@"MP4 file" forKey:@"FileFormat"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"Mp4LargeFile"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"Mp4HttpOptimize"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"Mp4iPodCompatible"]; + + /* Chapter markers */ + [preset setObject:[NSNumber numberWithInt:1] forKey:@"ChapterMarkers"]; + + /* Video encoder and advanced options */ + [preset setObject:@"H.264 (x264)" forKey:@"VideoEncoder"]; + [preset setObject:@"" forKey:@"lavcOption"]; + [preset setObject:@"" forKey:@"x264Option"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"x264UseAdvancedOptions"]; + [preset setObject:@"veryfast" forKey:@"x264Preset"]; + [preset setObject:@"" forKey:@"x264Tune"]; + [preset setObject:@"" forKey:@"x264OptionExtra"]; + [preset setObject:@"main" forKey:@"h264Profile"]; + [preset setObject:@"4.0" forKey:@"h264Level"]; + + /* Video rate control */ + [preset setObject:@"2500" forKey:@"VideoAvgBitrate"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoTwoPass"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoTurboTwoPass"]; + [preset setObject:[NSNumber numberWithInt:2] forKey:@"VideoQualityType"]; //cq + [preset setObject:[NSNumber numberWithFloat:20.0] forKey:@"VideoQualitySlider"]; + + /* Video frame rate */ + [preset setObject:@"Same as source" forKey:@"VideoFramerate"]; + [preset setObject:@"vfr" forKey:@"VideoFramerateMode"]; + + /* Picture size */ + [preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureSettings"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureWidth"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureHeight"]; + [preset setObject:[NSNumber numberWithInt:2] forKey:@"PicturePAR"]; //loose + [preset setObject:[NSNumber numberWithInt:2] forKey:@"PictureModulus"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureKeepRatio"]; //set to 0 for Loose (FIXME: why?) + + /* Picture filters */ + [preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureFilters"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDecomb"]; //off + [preset setObject:@"" forKey:@"PictureDecombCustom"]; + [preset setObject:[NSNumber numberWithInt:1] forKey:@"PictureDecombDeinterlace"]; //decomb + [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDeinterlace"]; + [preset setObject:@"" forKey:@"PictureDeinterlaceCustom"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDetelecine"]; + [preset setObject:@"" forKey:@"PictureDetelecineCustom"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDenoise"]; + [preset setObject:@"" forKey:@"PictureDenoiseCustom"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDeblock"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoGrayScale"]; + + /* Picture crop */ + [preset setObject:[NSNumber numberWithInt:1] forKey:@"PictureAutoCrop"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureTopCrop"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureBottomCrop"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureLeftCrop"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureRightCrop"]; + + /* Auto Passthru */ + [preset setObject:@"AC3 (ffmpeg)" forKey:@"AudioEncoderFallback"]; + [preset setObject:[NSNumber numberWithInt:1] forKey:@"AudioAllowAACPass"]; + [preset setObject:[NSNumber numberWithInt:1] forKey:@"AudioAllowAC3Pass"]; + [preset setObject:[NSNumber numberWithInt:1] forKey:@"AudioAllowDTSHDPass"]; + [preset setObject:[NSNumber numberWithInt:1] forKey:@"AudioAllowDTSPass"]; + [preset setObject:[NSNumber numberWithInt:1] forKey:@"AudioAllowMP3Pass"]; + + /* Audio track list - no need to add "None" at the end */ + NSMutableArray *audioListArray = [[NSMutableArray alloc] init]; + /* Track 1 */ + NSMutableDictionary *audioTrack1Array = [[NSMutableDictionary alloc] init]; + [audioTrack1Array setObject:[NSNumber numberWithInt:1] forKey:@"AudioTrack"]; + [audioTrack1Array setObject:@"AAC (faac)" forKey:@"AudioEncoder"]; + [audioTrack1Array setObject:@"Dolby Pro Logic II" forKey:@"AudioMixdown"]; + [audioTrack1Array setObject:@"Auto" forKey:@"AudioSamplerate"]; + [audioTrack1Array setObject:@"160" forKey:@"AudioBitrate"]; + [audioTrack1Array setObject:[NSNumber numberWithFloat:0.0] forKey:@"AudioTrackGainSlider"]; + [audioTrack1Array setObject:[NSNumber numberWithFloat:0.0] forKey:@"AudioTrackDRCSlider"]; + [audioTrack1Array autorelease]; + [audioListArray addObject:audioTrack1Array]; + /* Add the audio track(s) to the preset's audio list */ + [preset setObject:[NSMutableArray arrayWithArray:audioListArray] forKey:@"AudioList"]; + + /* Subtitles (note: currently ignored) */ + [preset setObject:@"None" forKey:@"Subtitles"]; + + /* Clean up and return the preset */ + [preset autorelease]; + return preset; +} + +- (NSDictionary *)createHighProfilePreset +{ + NSMutableDictionary *preset = [[NSMutableDictionary alloc] init]; + + /* Preset properties (name, type: factory/user, default, folder, tooltip) */ + [preset setObject:@"High Profile" forKey:@"PresetName"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"Type"]; //factory + [preset setObject:[NSNumber numberWithInt:0] forKey:@"Default"]; + [preset setObject:[NSNumber numberWithBool:NO] forKey:@"Folder"]; + [preset setObject:@"HandBrake's general-purpose preset for High Profile H.264 video." + forKey:@"PresetDescription"]; + + /* Container format and related settings */ + [preset setObject:@"MP4 file" forKey:@"FileFormat"]; + [preset setObject:[NSNumber numberWithInt:1] forKey:@"Mp4LargeFile"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"Mp4HttpOptimize"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"Mp4iPodCompatible"]; + + /* Chapter markers */ + [preset setObject:[NSNumber numberWithInt:1] forKey:@"ChapterMarkers"]; + + /* Video encoder and advanced options */ + [preset setObject:@"H.264 (x264)" forKey:@"VideoEncoder"]; + [preset setObject:@"" forKey:@"lavcOption"]; + [preset setObject:@"" forKey:@"x264Option"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"x264UseAdvancedOptions"]; + [preset setObject:@"medium" forKey:@"x264Preset"]; + [preset setObject:@"" forKey:@"x264Tune"]; + [preset setObject:@"" forKey:@"x264OptionExtra"]; + [preset setObject:@"high" forKey:@"h264Profile"]; + [preset setObject:@"4.1" forKey:@"h264Level"]; + + /* Video rate control */ + [preset setObject:@"2500" forKey:@"VideoAvgBitrate"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoTwoPass"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoTurboTwoPass"]; + [preset setObject:[NSNumber numberWithInt:2] forKey:@"VideoQualityType"]; //cq + [preset setObject:[NSNumber numberWithFloat:20.0] forKey:@"VideoQualitySlider"]; + + /* Video frame rate */ + [preset setObject:@"Same as source" forKey:@"VideoFramerate"]; + [preset setObject:@"vfr" forKey:@"VideoFramerateMode"]; + + /* Picture size */ + [preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureSettings"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureWidth"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureHeight"]; + [preset setObject:[NSNumber numberWithInt:2] forKey:@"PicturePAR"]; //loose + [preset setObject:[NSNumber numberWithInt:2] forKey:@"PictureModulus"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureKeepRatio"]; //set to 0 for Loose (FIXME: why?) + + /* Picture filters */ + [preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureFilters"]; + [preset setObject:[NSNumber numberWithInt:2] forKey:@"PictureDecomb"]; //default + [preset setObject:@"" forKey:@"PictureDecombCustom"]; + [preset setObject:[NSNumber numberWithInt:1] forKey:@"PictureDecombDeinterlace"]; //decomb + [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDeinterlace"]; + [preset setObject:@"" forKey:@"PictureDeinterlaceCustom"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDetelecine"]; + [preset setObject:@"" forKey:@"PictureDetelecineCustom"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDenoise"]; + [preset setObject:@"" forKey:@"PictureDenoiseCustom"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDeblock"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoGrayScale"]; + + /* Picture crop */ + [preset setObject:[NSNumber numberWithInt:1] forKey:@"PictureAutoCrop"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureTopCrop"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureBottomCrop"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureLeftCrop"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureRightCrop"]; + + /* Auto Passthru */ + [preset setObject:@"AC3 (ffmpeg)" forKey:@"AudioEncoderFallback"]; + [preset setObject:[NSNumber numberWithInt:1] forKey:@"AudioAllowAACPass"]; + [preset setObject:[NSNumber numberWithInt:1] forKey:@"AudioAllowAC3Pass"]; + [preset setObject:[NSNumber numberWithInt:1] forKey:@"AudioAllowDTSHDPass"]; + [preset setObject:[NSNumber numberWithInt:1] forKey:@"AudioAllowDTSPass"]; + [preset setObject:[NSNumber numberWithInt:1] forKey:@"AudioAllowMP3Pass"]; + + /* Audio track list - no need to add "None" at the end */ + NSMutableArray *audioListArray = [[NSMutableArray alloc] init]; + /* Track 1 */ + NSMutableDictionary *audioTrack1Array = [[NSMutableDictionary alloc] init]; + [audioTrack1Array setObject:[NSNumber numberWithInt:1] forKey:@"AudioTrack"]; + [audioTrack1Array setObject:@"AAC (faac)" forKey:@"AudioEncoder"]; + [audioTrack1Array setObject:@"Dolby Pro Logic II" forKey:@"AudioMixdown"]; + [audioTrack1Array setObject:@"Auto" forKey:@"AudioSamplerate"]; + [audioTrack1Array setObject:@"160" forKey:@"AudioBitrate"]; + [audioTrack1Array setObject:[NSNumber numberWithFloat:0.0] forKey:@"AudioTrackGainSlider"]; + [audioTrack1Array setObject:[NSNumber numberWithFloat:0.0] forKey:@"AudioTrackDRCSlider"]; + [audioTrack1Array autorelease]; + [audioListArray addObject:audioTrack1Array]; + /* Track 2 */ + NSMutableDictionary *audioTrack2Array = [[NSMutableDictionary alloc] init]; + [audioTrack2Array setObject:[NSNumber numberWithInt:1] forKey:@"AudioTrack"]; + [audioTrack2Array setObject:@"AC3 Passthru" forKey:@"AudioEncoder"]; + [audioTrack2Array setObject:@"None" forKey:@"AudioMixdown"]; + [audioTrack2Array setObject:@"Auto" forKey:@"AudioSamplerate"]; + [audioTrack2Array setObject:@"160" forKey:@"AudioBitrate"]; + [audioTrack2Array setObject:[NSNumber numberWithFloat:0.0] forKey:@"AudioTrackGainSlider"]; + [audioTrack2Array setObject:[NSNumber numberWithFloat:0.0] forKey:@"AudioTrackDRCSlider"]; + [audioTrack2Array autorelease]; + [audioListArray addObject:audioTrack2Array]; + /* Add the audio track(s) to the preset's audio list */ + [preset setObject:[NSMutableArray arrayWithArray:audioListArray] forKey:@"AudioList"]; + + /* Subtitles (note: currently ignored) */ + [preset setObject:@"None" forKey:@"Subtitles"]; + + /* Clean up and return the preset */ + [preset autorelease]; + return preset; +} + +@end diff -Nru handbrake-0.9.9+dfsg/macosx/HBPreviewController.h handbrake-0.9.9+ppa1/macosx/HBPreviewController.h --- handbrake-0.9.9+dfsg/macosx/HBPreviewController.h 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/HBPreviewController.h 2013-02-01 16:58:48.000000000 +0000 @@ -0,0 +1,129 @@ +/* $Id: HBPreviewController.h,v 1.6 2005/04/14 20:40:05 titer Exp $ + + This file is part of the HandBrake source code. + Homepage: . + It may be used under the terms of the GNU General Public License. */ + +#import + +#include "hb.h" +/* Needed for Quicktime movie previews */ +#import + +@class HBController; + +@interface PreviewController : NSWindowController +{ + hb_handle_t * fHandle; + hb_title_t * fTitle; + + HBController * fHBController; // reference to HBController + + NSMutableDictionary * fPicturePreviews; // NSImages, one for each preview libhb creates, created lazily + int fPicture; + + CALayer * fWhiteBackground; + CALayer * fPictureLayer; + IBOutlet NSBox * fPictureControlBox; + IBOutlet NSBox * fEncodingControlBox; + IBOutlet NSBox * fMoviePlaybackControlBox; + + IBOutlet NSSlider * fPictureSlider; + IBOutlet NSTextField * fInfoField; + IBOutlet NSTextField * fscaleInfoField; + + CGFloat backingScaleFactor; + + /* Hud Control Overlay */ + NSTimer * fHudTimer; + int hudTimerSeconds; + + /* Full Screen Mode Toggle */ + BOOL scaleToScreen; + IBOutlet NSButton * fScaleToScreenToggleButton; + IBOutlet NSButton * fPictureSettingsToggleButton; + + /* Movie Previews */ + QTMovie * aMovie; + IBOutlet QTMovieView * fMovieView; + /* Playback Panel Controls */ + IBOutlet NSButton * fPlayPauseButton; + IBOutlet NSButton * fGoToBeginningButton; + IBOutlet NSButton * fGoToEndButton; + IBOutlet NSButton * fGoForwardOneFrameButton; + IBOutlet NSButton * fGoBackwardOneFrameButton; + IBOutlet NSSlider * fMovieScrubberSlider; + IBOutlet NSButton * fGoToStillPreviewButton; + IBOutlet NSTextField * fMovieInfoField; + NSTimer * fMovieTimer; + + IBOutlet NSButton * fCreatePreviewMovieButton; + IBOutlet NSButton * fCancelPreviewMovieButton; + IBOutlet NSButton * fShowPreviewMovieButton; + NSString * fPreviewMoviePath; + IBOutlet NSProgressIndicator * fMovieCreationProgressIndicator; + hb_handle_t * fPreviewLibhb; // private libhb for creating previews + NSInteger fEncodeState; + NSTimer * fLibhbTimer; // timer for retrieving state from libhb + IBOutlet NSTextField * fPreviewMovieStatusField; + IBOutlet NSPopUpButton * fPreviewMovieLengthPopUp; // popup of choices for length of preview in seconds +} +- (id)init; + +- (void) SetHandle: (hb_handle_t *) handle; +- (void) SetTitle: (hb_title_t *) title; +- (void) setHBController: (HBController *)controller; +- (void) displayPreview; + +- (IBAction) settingsChanged: (id) sender; +- (IBAction) pictureSliderChanged: (id) sender; +- (IBAction) showPictureSettings:(id)sender; +- (NSString*) pictureSizeInfoString; + +- (IBAction) toggleScaleToScreen:(id)sender; + +/* HUD overlay */ +- (void) enableHudControls; +- (void) disableHudControls; + +- (void) startHudTimer; +- (void) stopHudTimer; + +/* Movie Previews */ +- (void) startReceivingLibhbNotifications; +- (void) stopReceivingLibhbNotifications; + +- (void) installMovieCallbacks; +- (void) removeMovieCallbacks; + +- (IBAction) cancelCreateMoviePreview: (id) sender; +- (IBAction) createMoviePreview: (id) sender; +- (void) libhbStateChanged: (hb_state_t ) state; +- (IBAction) showMoviePreview: (NSString *) path; +- (IBAction) showPicturesPreview: (id) sender; +- (IBAction) toggleMoviePreviewPlayPause: (id) sender; +- (IBAction) moviePlaybackGoToBeginning: (id) sender; +- (IBAction) moviePlaybackGoToEnd: (id) sender; +- (IBAction) moviePlaybackGoBackwardOneFrame: (id) sender; +- (IBAction) moviePlaybackGoForwardOneFrame: (id) sender; + +- (void) initPreviewScrubberForMovie; +- (void) adjustPreviewScrubberForCurrentMovieTime; +- (IBAction) previewScrubberChanged: (id) sender; +- (BOOL) isPlaying; + +- (void) startMovieTimer; +- (void) stopMovieTimer; + +- (NSString*) SMTPETimecode: (QTTime)time; +- (QTTime)SliderToQTTime:(double)time; + +- (IBAction) previewDurationPopUpChanged: (id) sender; + ++ (NSImage *) makeImageForPicture: (NSInteger)pictureIndex + libhb:(hb_handle_t*)handle + title:(hb_title_t*)title; +- (NSImage *) imageForPicture: (NSInteger) pictureIndex; +- (void) purgeImageCache; +@end + diff -Nru handbrake-0.9.9+dfsg/macosx/HBPreviewController.m handbrake-0.9.9+ppa1/macosx/HBPreviewController.m --- handbrake-0.9.9+dfsg/macosx/HBPreviewController.m 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/HBPreviewController.m 2013-03-19 13:12:15.000000000 +0000 @@ -0,0 +1,1469 @@ +/* $Id: HBPreviewController.mm,v 1.11 2005/08/01 15:10:44 titer Exp $ + + This file is part of the HandBrake source code. + Homepage: . + It may be used under the terms of the GNU General Public License. */ + +#import "HBPreviewController.h" +#import "Controller.h" + +#define BORDER_SIZE 2.0 +#define HB_NUM_HBLIB_PICTURES 20 // # of preview pictures libhb should generate + +@implementation QTMovieView (HBExtensions) +- (void) mouseMoved:(NSEvent *)theEvent +{ + [super mouseMoved:theEvent]; +} +@end + +#if MAC_OS_X_VERSION_MAX_ALLOWED < 1070 +@interface NSWindow(HBExtensions) + +@property (readonly) CGFloat backingScaleFactor; + +@end +#endif + +@interface PreviewController (Private) + +- (NSSize)optimalViewSizeForImageSize: (NSSize)imageSize; +- (void)resizeWindowForViewSize: (NSSize)viewSize; +@end + +@implementation PreviewController + +- (id)init +{ + if (self = [super initWithWindowNibName:@"PicturePreview"]) + { + // NSWindowController likes to lazily load its window. However since + // this controller tries to set all sorts of outlets before the window + // is displayed, we need it to load immediately. The correct way to do + // this, according to the documentation, is simply to invoke the window + // getter once. + // + // If/when we switch a lot of this stuff to bindings, this can probably + // go away. + [self window]; + + fPicturePreviews = [[NSMutableDictionary dictionaryWithCapacity: HB_NUM_HBLIB_PICTURES] retain]; + /* Init libhb with check for updates libhb style set to "0" so its ignored and lets sparkle take care of it */ + int loggingLevel = [[[NSUserDefaults standardUserDefaults] objectForKey:@"LoggingLevel"] intValue]; + fPreviewLibhb = hb_init(loggingLevel, 0); + } + return self; +} + +- (void)setHBController: (HBController *)controller +{ + fHBController = controller; +} + +- (void)awakeFromNib +{ + [[self window] setDelegate:self]; + + if( ![[self window] setFrameUsingName:@"Preview"] ) + [[self window] center]; + + [self setWindowFrameAutosaveName:@"Preview"]; + [[self window] setExcludedFromWindowsMenu:YES]; + + /* lets set the preview window to accept mouse moved events */ + [[self window] setAcceptsMouseMovedEvents:YES]; + [self startReceivingLibhbNotifications]; + + hudTimerSeconds = 0; + /* we set the progress indicator to not use threaded animation + * as it causes a conflict with the qtmovieview's controllerbar + */ + [fMovieCreationProgressIndicator setUsesThreadedAnimation:NO]; + + /* we set the preview length popup in seconds */ + [fPreviewMovieLengthPopUp removeAllItems]; + [fPreviewMovieLengthPopUp addItemWithTitle: @"15"]; + [fPreviewMovieLengthPopUp addItemWithTitle: @"30"]; + [fPreviewMovieLengthPopUp addItemWithTitle: @"45"]; + [fPreviewMovieLengthPopUp addItemWithTitle: @"60"]; + [fPreviewMovieLengthPopUp addItemWithTitle: @"90"]; + [fPreviewMovieLengthPopUp addItemWithTitle: @"105"]; + [fPreviewMovieLengthPopUp addItemWithTitle: @"120"]; + [fPreviewMovieLengthPopUp addItemWithTitle: @"135"]; + [fPreviewMovieLengthPopUp addItemWithTitle: @"150"]; + [fPreviewMovieLengthPopUp addItemWithTitle: @"165"]; + [fPreviewMovieLengthPopUp addItemWithTitle: @"180"]; + [fPreviewMovieLengthPopUp addItemWithTitle: @"195"]; + [fPreviewMovieLengthPopUp addItemWithTitle: @"210"]; + [fPreviewMovieLengthPopUp addItemWithTitle: @"225"]; + [fPreviewMovieLengthPopUp addItemWithTitle: @"240"]; + + [fMovieView setHidden:YES]; + [fMovieView setDelegate:self]; + + /* Setup our layers for core animation */ + [[[self window] contentView] setWantsLayer:YES]; + [fPictureControlBox setWantsLayer:YES]; + [fEncodingControlBox setWantsLayer:YES]; + [fMoviePlaybackControlBox setWantsLayer:YES]; + + fWhiteBackground = [CALayer layer]; + [fWhiteBackground setBounds:CGRectMake(0.0, 0.0, 480.0, 360.0)]; + [fWhiteBackground setPosition:CGPointMake([[[self window] contentView] frame].size.width /2, + [[[self window] contentView] frame].size.height /2)]; + + [fWhiteBackground setAutoresizingMask: NSViewWidthSizable | NSViewHeightSizable]; + CGColorRef white = CGColorCreateGenericRGB(1.0, 1.0, 1.0, 1.0); + [fWhiteBackground setBackgroundColor: white]; + CFRelease(white); + [fWhiteBackground setShadowOpacity:0.5f]; + [fWhiteBackground setShadowOffset:CGSizeMake(0, 0)]; + + fPictureLayer = [CALayer layer]; + [fPictureLayer setBounds:CGRectMake(0.0, 0.0, 476.0, 356.0)]; + [fPictureLayer setPosition:CGPointMake([[[self window] contentView] frame].size.width /2, + [[[self window] contentView] frame].size.height /2)]; + + [fPictureLayer setAutoresizingMask: NSViewWidthSizable | NSViewHeightSizable]; + + NSMutableDictionary *actions = [NSMutableDictionary + dictionaryWithDictionary:[fPictureLayer actions]]; + + // Disable fade on contents change + [actions setObject:[NSNull null] forKey:@"contents"]; + [fPictureLayer setActions:actions]; + + [[[[self window] contentView] layer] insertSublayer:fWhiteBackground below: [fMovieView layer]]; + [[[[self window] contentView] layer] insertSublayer:fPictureLayer below: [fMovieView layer]]; + + /* relocate our hud origins */ + NSPoint hudControlBoxOrigin = [fMoviePlaybackControlBox frame].origin; + [fPictureControlBox setFrameOrigin:hudControlBoxOrigin]; + [fEncodingControlBox setFrameOrigin:hudControlBoxOrigin]; + [fMoviePlaybackControlBox setFrameOrigin:hudControlBoxOrigin]; + + if( [[self window] respondsToSelector:@selector( backingScaleFactor )] ) + backingScaleFactor = [[self window] backingScaleFactor]; + else + backingScaleFactor = 1.0; + + [[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(titleChanged:) name: HBTitleChangedNotification object:nil]; +} + +- (void) titleChanged: (NSNotification *) aNotification +{ + /* Notification from HBController, only used to stop + * an encoding while the HBController is scanning a new title + */ + [self cancelCreateMoviePreview:self]; +} + +- (void)windowWillClose:(NSNotification *)aNotification +{ + /* Upon closing the preview window, we make sure we clean up any + * preview movie that might be playing or encoding. However, first + * make sure we have a preview picture before calling pictureSliderChanged + * to go back to still previews .. just in case nothing is loaded up like in + * a Launch, cancel new scan then quit type scenario. + */ + + if (fEncodeState || [self isPlaying]) + { + [self cancelCreateMoviePreview:self]; + [fMovieView pause:self]; + [self stopMovieTimer]; + } + + hudTimerSeconds = 0; + [[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"PreviewWindowIsOpen"]; +} + +- (void) dealloc +{ + hb_stop(fPreviewLibhb); + if (fPreviewMoviePath) + { + [[NSFileManager defaultManager] removeItemAtPath:fPreviewMoviePath error:nil]; + [fPreviewMoviePath release]; + } + + [fLibhbTimer invalidate]; + [fLibhbTimer release]; + + [fHudTimer invalidate]; + [fHudTimer release]; + + [fMovieTimer invalidate]; + [fMovieTimer release]; + + [fPicturePreviews release]; + + hb_close(&fPreviewLibhb); + + [self removeMovieCallbacks]; + + [super dealloc]; +} + +- (void) SetHandle: (hb_handle_t *) handle +{ + fHandle = handle; + + /* adjust the preview slider length */ + /* We use our advance pref to determine how many previews we scanned */ + int hb_num_previews = [[[NSUserDefaults standardUserDefaults] objectForKey:@"PreviewsNumber"] intValue]; + [fPictureSlider setMaxValue: hb_num_previews - 1.0]; + [fPictureSlider setNumberOfTickMarks: hb_num_previews]; + + if ([[NSUserDefaults standardUserDefaults] objectForKey:@"PreviewLength"]) + { + [fPreviewMovieLengthPopUp selectItemWithTitle:[[NSUserDefaults standardUserDefaults] objectForKey:@"PreviewLength"]]; + } + else + { + /* currently hard set default to 15 seconds */ + [fPreviewMovieLengthPopUp selectItemAtIndex: 0]; + } +} + +- (void) SetTitle: (hb_title_t *) title +{ + fTitle = title; + fPicture = 0; + + [self settingsChanged:nil]; +} + +- (void)windowDidChangeBackingProperties:(NSNotification *)notification { + + NSWindow *theWindow = (NSWindow *)[notification object]; + + CGFloat newBackingScaleFactor = [theWindow backingScaleFactor]; + CGFloat oldBackingScaleFactor = [[[notification userInfo] + objectForKey:@"NSBackingPropertyOldScaleFactorKey"] + doubleValue]; + if( newBackingScaleFactor != oldBackingScaleFactor ) + { + // Scale factor changed, update the preview window + // to the new situation + backingScaleFactor = newBackingScaleFactor; + if (fTitle) + [self pictureSliderChanged:self]; + } +} + +// Adjusts the window to draw the current picture (fPicture) adjusting its size as +// necessary to display as much of the picture as possible. +- (void) displayPreview +{ + hb_job_t * job = fTitle->job; + + NSImage *fPreviewImage = [self imageForPicture: fPicture]; + NSSize imageScaledSize = [fPreviewImage size]; + [fPictureLayer setContents:fPreviewImage]; + + NSSize displaySize = NSMakeSize( ( CGFloat )fTitle->width, ( CGFloat )fTitle->height ); + NSString *sizeInfoString; + + /* Set the picture size display fields below the Preview Picture*/ + int output_width, output_height, output_par_width, output_par_height; + int display_width; + if( fTitle->job->anamorphic.mode == 1 ) // Original PAR Implementation + { + output_width = fTitle->width-fTitle->job->crop[2]-fTitle->job->crop[3]; + output_height = fTitle->height-fTitle->job->crop[0]-fTitle->job->crop[1]; + display_width = output_width * fTitle->job->anamorphic.par_width / fTitle->job->anamorphic.par_height; + sizeInfoString = [NSString stringWithFormat: + @"Source: %dx%d, Output: %dx%d, Anamorphic: %dx%d Strict", + fTitle->width, fTitle->height, output_width, output_height, display_width, output_height]; + + displaySize.width = display_width; + displaySize.height = fTitle->height; + imageScaledSize.width = display_width; + imageScaledSize.height = output_height; + } + else if (fTitle->job->anamorphic.mode == 2) // Loose Anamorphic + { + hb_set_anamorphic_size(job, &output_width, &output_height, &output_par_width, &output_par_height); + display_width = output_width * output_par_width / output_par_height; + sizeInfoString = [NSString stringWithFormat: + @"Source: %dx%d, Output: %dx%d, Anamorphic: %dx%d Loose", + fTitle->width, fTitle->height, output_width, output_height, display_width, output_height]; + + displaySize.width = display_width; + displaySize.height = fTitle->height; + imageScaledSize.width = display_width; + imageScaledSize.height = output_height; + } + else if (fTitle->job->anamorphic.mode == 3) // Custom Anamorphic + { + hb_set_anamorphic_size(job, &output_width, &output_height, &output_par_width, &output_par_height); + sizeInfoString = [NSString stringWithFormat: + @"Source: %dx%d, Output: %dx%d, Anamorphic: %dx%d Custom", + fTitle->width, fTitle->height, output_width, output_height, fTitle->job->anamorphic.dar_width, fTitle->job->anamorphic.dar_height]; + + displaySize.width = fTitle->job->anamorphic.dar_width + fTitle->job->crop[2] + fTitle->job->crop[3] ; + displaySize.height = fTitle->job->anamorphic.dar_height + fTitle->job->crop[0] + fTitle->job->crop[1]; + imageScaledSize.width = (int)fTitle->job->anamorphic.dar_width; + imageScaledSize.height = (int)fTitle->job->height; + } + else // No Anamorphic + { + sizeInfoString = [NSString stringWithFormat: + @"Source: %dx%d, Output: %dx%d", fTitle->width, fTitle->height, + fTitle->job->width, fTitle->job->height]; + + displaySize.width = fTitle->width; + displaySize.height = fTitle->height; + imageScaledSize.width = fTitle->job->width; + imageScaledSize.height = fTitle->job->height; + } + + if( backingScaleFactor != 1.0 ) + { + // HiDPI mode usually display everything + // with douple pixel count, but we don't + // want to double the size of the video + displaySize.height /= backingScaleFactor; + displaySize.width /= backingScaleFactor; + imageScaledSize.height /= backingScaleFactor; + imageScaledSize.width /= backingScaleFactor; + } + + // Get the optimal view size for the image + NSSize viewSize = [self optimalViewSizeForImageSize:displaySize]; + viewSize.width += BORDER_SIZE * 2; + viewSize.height += BORDER_SIZE * 2; + + NSSize windowSize; + if (scaleToScreen == YES) + // Scale the window to the max possible size + windowSize = [[[self window] screen] visibleFrame].size; + else + // Scale the window to the image size + windowSize = viewSize; + + [self resizeWindowForViewSize:windowSize]; + NSSize areaSize = [[[self window] contentView] frame].size; + areaSize.width -= BORDER_SIZE * 2; + areaSize.height -= BORDER_SIZE * 2; + + if (scaleToScreen == YES) + { + /* We are in Scale To Screen mode so, we have to get the ratio for height and width against the window + *size so we can scale from there. + */ + CGFloat pictureAspectRatio = imageScaledSize.width / imageScaledSize.height; + CGFloat areaAspectRatio = areaSize.width / areaSize.height; + + if (pictureAspectRatio > areaAspectRatio) + { + viewSize.width = areaSize.width; + viewSize.height = viewSize.width / pictureAspectRatio; + } + else + { + viewSize.height = areaSize.height; + viewSize.width = viewSize.height * pictureAspectRatio; + } + } + else + { + // If the image is larger then the window, scale the image + viewSize = imageScaledSize; + + if (imageScaledSize.width > areaSize.width || imageScaledSize.height > areaSize.height) + { + CGFloat pictureAspectRatio = imageScaledSize.width / imageScaledSize.height; + CGFloat areaAspectRatio = areaSize.width / areaSize.height; + + if (pictureAspectRatio > areaAspectRatio) + { + viewSize.width = areaSize.width; + viewSize.height = viewSize.width / pictureAspectRatio; + } + else + { + viewSize.height = areaSize.height; + viewSize.width = viewSize.height * pictureAspectRatio; + } + } + } + + // Resize the CALayers + [fWhiteBackground setBounds:CGRectMake(0, 0, viewSize.width + (BORDER_SIZE * 2), viewSize.height + (BORDER_SIZE * 2))]; + [fPictureLayer setBounds:CGRectMake(0, 0, viewSize.width, viewSize.height)]; + + NSString *scaleString; + CGFloat scale = ( ( CGFloat )[fPictureLayer frame].size.width) / ( ( CGFloat )imageScaledSize.width); + if (scale * 100.0 != 100) + scaleString = [NSString stringWithFormat: + NSLocalizedString( @" (%.0f%% actual size)", + @"String shown when a preview is scaled" ), scale * 100.0]; + else + scaleString = @"(Actual size)"; + + if (scaleToScreen == YES) + scaleString = [scaleString stringByAppendingString:@" Scaled To Screen"]; + + /* Set the info fields in the hud controller */ + [fInfoField setStringValue: [NSString stringWithFormat: + @"%@", sizeInfoString]]; + + [fscaleInfoField setStringValue: [NSString stringWithFormat: + @"%@", scaleString]]; + /* Set the info field in the window title bar */ + [[self window] setTitle:[NSString stringWithFormat: @"Preview - %@ %@",sizeInfoString, scaleString]]; +} + +- (IBAction) previewDurationPopUpChanged: (id) sender +{ + [[NSUserDefaults standardUserDefaults] setObject:[fPreviewMovieLengthPopUp titleOfSelectedItem] forKey:@"PreviewLength"]; +} + +- (IBAction) settingsChanged: (id) sender +{ + // Purge the existing picture previews so they get recreated the next time + // they are needed. + [self purgeImageCache]; + [self pictureSliderChanged:nil]; +} + +- (IBAction) pictureSliderChanged: (id) sender +{ + /* Run cancelCreateMoviePreview in case a preview is being encoded and then cancel if so */ + [self cancelCreateMoviePreview:nil]; + + // Show the picture view + if (aMovie) + { + [fMoviePlaybackControlBox setHidden:YES]; + [fMovieView pause:nil]; + [fMovieView setHidden:YES]; + [fMovieView setMovie:nil]; + aMovie = nil; + } + + int newPicture = [fPictureSlider intValue]; + if (newPicture != fPicture) + { + fPicture = newPicture; + } + [self displayPreview]; + +} + +- (IBAction)showWindow:(id)sender +{ + if (aMovie) + [self startMovieTimer]; + + [super showWindow:sender]; +} +- (NSString*) pictureSizeInfoString +{ + return [fInfoField stringValue]; +} + +- (IBAction)showPictureSettings:(id)sender +{ + [fHBController showPicturePanel:self]; +} + +#pragma mark Hud Control Overlay +/* enableHudControls and disableHudControls are used to sync enableUI + * in HBController so that during a scan we do not attempt to access source + * images, etc. which can cause a crash. In general this ui behavior will mirror + * the main window ui's enableUI method and in fact is called from there */ +- (void) enableHudControls +{ + [fPictureSlider setEnabled:YES]; + [fScaleToScreenToggleButton setEnabled:YES]; + [fCreatePreviewMovieButton setEnabled:YES]; + [fGoToStillPreviewButton setEnabled:YES]; +} + +- (void) disableHudControls +{ + [fPictureSlider setEnabled:NO]; + [fScaleToScreenToggleButton setEnabled:NO]; + [fCreatePreviewMovieButton setEnabled:NO]; + [fGoToStillPreviewButton setEnabled:NO]; +} + +- (void) mouseMoved:(NSEvent *)theEvent +{ + [super mouseMoved:theEvent]; + NSPoint mouseLoc = [theEvent locationInWindow]; + + /* Test for mouse location to show/hide hud controls */ + if( fEncodeState != 1 ) + { + /* Since we are not encoding, verify which control hud to show + * or hide based on aMovie ( aMovie indicates we need movie controls ) + */ + NSBox *hudBoxToShow; + if ( aMovie == nil ) // No movie loaded up + { + hudBoxToShow = fPictureControlBox; + } + else // We have a movie + { + hudBoxToShow = fMoviePlaybackControlBox; + } + + if( NSPointInRect( mouseLoc, [fPictureControlBox frame] ) ) + { + [[hudBoxToShow animator] setHidden: NO]; + [self stopHudTimer]; + } + else if( NSPointInRect( mouseLoc, [[[self window] contentView] frame] ) ) + { + [[hudBoxToShow animator] setHidden: NO]; + [self startHudTimer]; + } + else + { + [[hudBoxToShow animator] setHidden: YES]; + } + } +} + +- (void) startHudTimer +{ + if( fHudTimer ) { + [fHudTimer invalidate]; + [fHudTimer release]; + } + fHudTimer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(hudTimerFired:) userInfo:nil repeats:YES]; + [fHudTimer retain]; +} + +- (void) stopHudTimer +{ + if( fHudTimer ) + { + [fHudTimer invalidate]; + [fHudTimer release]; + fHudTimer = nil; + hudTimerSeconds = 0; + } +} + +- (void) hudTimerFired: (NSTimer*)theTimer +{ + hudTimerSeconds++; + if( hudTimerSeconds >= 10 ) + { + /* Regardless which control box is active, after the timer + * period we want either one to fade to hidden. + */ + [[fPictureControlBox animator] setHidden: YES]; + [[fMoviePlaybackControlBox animator] setHidden: YES]; + [self stopHudTimer]; + } +} + +- (IBAction)toggleScaleToScreen:(id)sender +{ + if (scaleToScreen == YES) + { + scaleToScreen = NO; + /* make sure we are set to a still preview */ + [self pictureSliderChanged:nil]; + [fScaleToScreenToggleButton setTitle:@"Scale To Screen"]; + } + else + { + scaleToScreen = YES; + /* make sure we are set to a still preview */ + [self pictureSliderChanged:nil]; + [fScaleToScreenToggleButton setTitle:@"Actual Scale"]; + } + +} + +#pragma mark Still Preview Image Processing + +// This function converts an image created by libhb (specified via pictureIndex) into +// an NSImage suitable for the GUI code to use. If removeBorders is YES, +// makeImageForPicture crops the image generated by libhb stripping off the gray +// border around the content. This is the low-level method that generates the image. +// -imageForPicture calls this function whenever it can't find an image in its cache. ++ (NSImage *) makeImageForPicture: (NSInteger)pictureIndex + libhb:(hb_handle_t*)handle + title:(hb_title_t*)title +{ + static uint8_t * buffer; + static int bufferSize; + + // Make sure we have a big enough buffer to receive the image from libhb. libhb + int dstWidth = title->job->width; + int dstHeight = title->job->height; + + int newSize; + newSize = dstWidth * dstHeight * 4; + if( bufferSize < newSize ) + { + bufferSize = newSize; + buffer = (uint8_t *) realloc( buffer, bufferSize ); + } + + hb_get_preview( handle, title->job, (int)pictureIndex, buffer ); + + // Create an NSBitmapImageRep and copy the libhb image into it, converting it from + // libhb's format to one suitable for NSImage. Along the way, we'll strip off the + // border around libhb's image. + + // The image data returned by hb_get_preview is 4 bytes per pixel, BGRA format. + // Alpha is ignored. + + NSBitmapFormat bitmapFormat = (NSBitmapFormat)NSAlphaFirstBitmapFormat; + NSBitmapImageRep * imgrep = [[[NSBitmapImageRep alloc] + initWithBitmapDataPlanes:nil + pixelsWide:dstWidth + pixelsHigh:dstHeight + bitsPerSample:8 + samplesPerPixel:3 // ignore alpha + hasAlpha:NO + isPlanar:NO + colorSpaceName:NSCalibratedRGBColorSpace + bitmapFormat:bitmapFormat + bytesPerRow:dstWidth * 4 + bitsPerPixel:32] autorelease]; + + UInt32 * src = (UInt32 *)buffer; + UInt32 * dst = (UInt32 *)[imgrep bitmapData]; + int r, c; + for (r = 0; r < dstHeight; r++) + { + for (c = 0; c < dstWidth; c++) +#if TARGET_RT_LITTLE_ENDIAN + *dst++ = Endian32_Swap(*src++); +#else + *dst++ = *src++; +#endif + } + + NSImage * img = [[[NSImage alloc] initWithSize: NSMakeSize(dstWidth, dstHeight)] autorelease]; + [img addRepresentation:imgrep]; + + return img; +} + +// Returns the preview image for the specified index, retrieving it from its internal +// cache or by calling makeImageForPicture if it is not cached. Generally, you should +// use imageForPicture so that images are cached. Calling makeImageForPicture will +// always generate a new copy of the image. +- (NSImage *) imageForPicture: (NSInteger) pictureIndex +{ + // The preview for the specified index may not currently exist, so this method + // generates it if necessary. + NSNumber * key = [NSNumber numberWithInteger:pictureIndex]; + NSImage * theImage = [fPicturePreviews objectForKey:key]; + if (!theImage) + { + theImage = [PreviewController makeImageForPicture:pictureIndex libhb:fHandle title:fTitle]; + [fPicturePreviews setObject:theImage forKey:key]; + } + return theImage; +} + +// Purges all images from the cache. The next call to imageForPicture will cause a new +// image to be generated. +- (void) purgeImageCache +{ + [fPicturePreviews removeAllObjects]; +} + +#pragma mark Movie Preview + +- (IBAction) cancelCreateMoviePreview: (id) sender +{ + hb_state_t s; + hb_get_state2(fPreviewLibhb, &s); + + if (fEncodeState && (s.state == HB_STATE_WORKING || + s.state == HB_STATE_PAUSED)) + { + fEncodeState = 2; + hb_stop(fPreviewLibhb); + hb_system_sleep_allow(fPreviewLibhb); + [NSAnimationContext beginGrouping]; + [[NSAnimationContext currentContext] setDuration:0.2]; + [[fEncodingControlBox animator] setHidden:YES]; + [[fPictureControlBox animator] setHidden:NO]; + [NSAnimationContext endGrouping]; + + return; + } +} + +- (IBAction) createMoviePreview: (id) sender +{ + /* Rip or Cancel ? */ + hb_state_t s; + hb_get_state2( fPreviewLibhb, &s ); + + /* we use controller.mm's prepareJobForPreview to go ahead and set all of our settings + * however, we want to use a temporary destination field of course + * so that we do not put our temp preview in the users chosen + * directory */ + + hb_job_t * job = fTitle->job; + + /* We run our current setting through prepeareJob in Controller.mm + * just as if it were a regular encode */ + + [fHBController prepareJobForPreview]; + + /* Make sure we have a Preview sub directory with our pidnum attached */ + NSString *PreviewDirectory = [NSString stringWithFormat:@"~/Library/Application Support/HandBrake/Previews/%d", [fHBController getPidnum]]; + PreviewDirectory = [PreviewDirectory stringByExpandingTildeInPath]; + if( ![[NSFileManager defaultManager] fileExistsAtPath:PreviewDirectory] ) + { + [[NSFileManager defaultManager] createDirectoryAtPath:PreviewDirectory + withIntermediateDirectories:NO + attributes:nil + error:nil]; + } + /* Destination file. We set this to our preview directory + * changing the extension appropriately.*/ + if (fTitle->job->mux == HB_MUX_MP4) // MP4 file + { + /* we use .m4v for our mp4 files so that ac3 and chapters in mp4 will play properly */ + fPreviewMoviePath = [PreviewDirectory stringByAppendingString:@"/preview_temp.m4v"]; + } + else if (fTitle->job->mux == HB_MUX_MKV) // MKV file + { + fPreviewMoviePath = [PreviewDirectory stringByAppendingString:@"/preview_temp.mkv"]; + } + + fPreviewMoviePath = [[fPreviewMoviePath stringByExpandingTildeInPath]retain]; + + /* See if there is an existing preview file, if so, delete it */ + if( ![[NSFileManager defaultManager] fileExistsAtPath:fPreviewMoviePath] ) + { + [[NSFileManager defaultManager] removeItemAtPath:fPreviewMoviePath error:nil]; + } + + /* We now direct our preview encode to fPreviewMoviePath */ + hb_job_set_file(fTitle->job, [fPreviewMoviePath UTF8String]); + + /* We use our advance pref to determine how many previews to scan */ + int hb_num_previews = [[[NSUserDefaults standardUserDefaults] objectForKey:@"PreviewsNumber"] intValue]; + job->start_at_preview = fPicture + 1; + job->seek_points = hb_num_previews; + + /* we use the preview duration popup to get the specified + * number of seconds for the preview encode. + */ + + job->pts_to_stop = [[fPreviewMovieLengthPopUp titleOfSelectedItem] intValue] * 90000LL; + + /* lets go ahead and send it off to libhb + * Note: unlike a full encode, we only send 1 pass regardless if the final encode calls for 2 passes. + * this should suffice for a fairly accurate short preview and cuts our preview generation time in half. + * However we also need to take into account the indepth scan for subtitles. + */ + /* + * If scanning we need to do some extra setup of the job. + */ + if( job->indepth_scan == 1 ) + { + char *x264opts_tmp; + + /* + * When subtitle scan is enabled do a fast pre-scan job + * which will determine which subtitles to enable, if any. + */ + job->pass = -1; + x264opts_tmp = job->advanced_opts; + + job->advanced_opts = NULL; + job->indepth_scan = 1; + /* + * Add the pre-scan job + */ + hb_add( fPreviewLibhb, job ); + job->advanced_opts = x264opts_tmp; + } + /* Go ahead and perform the actual encoding preview scan */ + job->indepth_scan = 0; + job->pass = 0; + hb_add( fPreviewLibhb, job ); + + /* we need to clean up the various lists after the job(s) have been set */ + hb_job_reset( job ); + + [fMovieCreationProgressIndicator setDoubleValue:0]; + + [NSAnimationContext beginGrouping]; + [[NSAnimationContext currentContext] setDuration:0.2]; + [[fEncodingControlBox animator] setHidden: NO]; + [[fPictureControlBox animator] setHidden: YES]; + [NSAnimationContext endGrouping]; + + /* Let fPreviewLibhb do the job */ + fEncodeState = 1; + hb_system_sleep_prevent(fPreviewLibhb); + hb_start(fPreviewLibhb); + +} + +- (void) startReceivingLibhbNotifications +{ + if (!fLibhbTimer) + { + fLibhbTimer = [NSTimer scheduledTimerWithTimeInterval:0.5 target:self selector:@selector(libhbTimerFired:) userInfo:nil repeats:YES]; + [fLibhbTimer retain]; + } +} + +- (void) stopReceivingLibhbNotifications +{ + if (fLibhbTimer) + { + [fLibhbTimer invalidate]; + [fLibhbTimer release]; + fLibhbTimer = nil; + } +} +- (void) libhbTimerFired: (NSTimer*)theTimer +{ + hb_state_t s; + hb_get_state( fPreviewLibhb, &s ); + [self libhbStateChanged: s]; +} + +- (void) libhbStateChanged: (hb_state_t)state +{ + switch( state.state ) + { + case HB_STATE_IDLE: + case HB_STATE_SCANNING: + case HB_STATE_SCANDONE: + break; + + case HB_STATE_WORKING: + { +#define p state.param.working + NSMutableString * string; + /* Update text field */ + string = [NSMutableString stringWithFormat: NSLocalizedString( @"Encoding preview: %.2f %%", @"" ), 100.0 * p.progress]; + + if( p.seconds > -1 ) + { + [string appendFormat: + NSLocalizedString( @" (%.2f fps, avg %.2f fps, ETA %02dh%02dm%02ds)", @"" ), + p.rate_cur, p.rate_avg, p.hours, p.minutes, p.seconds]; + } + [fPreviewMovieStatusField setStringValue: string]; + + [fMovieCreationProgressIndicator setIndeterminate: NO]; + /* Update slider */ + [fMovieCreationProgressIndicator setDoubleValue: 100.0 * p.progress]; + + break; + + } +#undef p + +#define p state.param.muxing + case HB_STATE_MUXING: + { + // Update fMovieCreationProgressIndicator + [fMovieCreationProgressIndicator setIndeterminate: YES]; + [fMovieCreationProgressIndicator startAnimation: nil]; + [fPreviewMovieStatusField setStringValue: NSLocalizedString( @"Muxing Preview ...", @"" )]; + break; + } +#undef p + case HB_STATE_PAUSED: + [fMovieCreationProgressIndicator stopAnimation: nil]; + break; + + case HB_STATE_WORKDONE: + { + // Delete all remaining jobs since libhb doesn't do this on its own. + hb_job_t * job; + while( ( job = hb_job(fPreviewLibhb, 0) ) ) + hb_rem( fHandle, job ); + + [fPreviewMovieStatusField setStringValue: @""]; + [fMovieCreationProgressIndicator stopAnimation: nil]; + + if (fEncodeState != 2) + { + // Show the movie view + [self showMoviePreview:fPreviewMoviePath]; + } + + fEncodeState = 0; + /* Done encoding, allow system sleep for the preview handle */ + hb_system_sleep_allow(fPreviewLibhb); + break; + } + } +} + +- (IBAction) toggleMoviePreviewPlayPause: (id) sender +{ + /* make sure a movie is even loaded up */ + if (aMovie != nil) + { + /* For some stupid reason there is no "isPlaying" method for a QTMovie + * object, given that, we detect the rate to determine whether the movie + * is playing or not. + */ + if ([self isPlaying]) // we are playing + { + [fMovieView pause:aMovie]; + [fPlayPauseButton setState: NSOnState]; + } + else // we are paused or stopped + { + [fMovieView play:aMovie]; + [fPlayPauseButton setState: NSOffState]; + } + } +} + +- (IBAction) moviePlaybackGoToBeginning: (id) sender +{ + /* make sure a movie is even loaded up */ + if (aMovie != nil) + { + [fMovieView gotoBeginning:aMovie]; + } +} + +- (IBAction) moviePlaybackGoToEnd: (id) sender +{ + /* make sure a movie is even loaded up */ + if (aMovie != nil) + { + [fMovieView gotoEnd:aMovie]; + } +} + +- (IBAction) moviePlaybackGoBackwardOneFrame: (id) sender +{ + /* make sure a movie is even loaded up */ + if (aMovie != nil) + { + [fMovieView pause:aMovie]; // Pause the movie + [fMovieView stepBackward:aMovie]; + } +} + +- (IBAction) moviePlaybackGoForwardOneFrame: (id) sender +{ + /* make sure a movie is even loaded up */ + if (aMovie != nil) + { + [fMovieView pause:aMovie]; // Pause the movie + [fMovieView stepForward:aMovie]; + } +} + +- (void) startMovieTimer +{ + if( fMovieTimer ) { + [fMovieTimer invalidate]; + [fMovieTimer release]; + } + fMovieTimer = [NSTimer scheduledTimerWithTimeInterval:0.10 target:self selector:@selector(movieTimerFired:) userInfo:nil repeats:YES]; + [fMovieTimer retain]; +} + +- (void) stopMovieTimer +{ + if( fMovieTimer ) + { + [fMovieTimer invalidate]; + [fMovieTimer release]; + fMovieTimer = nil; + } +} + +- (void) movieTimerFired: (NSTimer*)theTimer +{ + if (aMovie != nil) + { + [self adjustPreviewScrubberForCurrentMovieTime]; + [fMovieInfoField setStringValue: [self SMTPETimecode:[aMovie currentTime]]]; + } +} + +- (IBAction) showPicturesPreview: (id) sender +{ + [fMovieView pause:self]; + [self stopMovieTimer]; + + [NSAnimationContext beginGrouping]; + [[NSAnimationContext currentContext] setDuration:0.2]; + [[fMoviePlaybackControlBox animator] setHidden:YES]; + [[fMovieView animator] setHidden:YES]; + [[fPictureControlBox animator] setHidden:NO]; + [NSAnimationContext endGrouping]; + + [fMovieView setMovie:nil]; + aMovie = nil; +} + + +- (IBAction) showMoviePreview: (NSString *) path +{ + /* Since the gray background for the still images is part of + * fPictureView, lets leave the picture view visible and postion + * the fMovieView over the image portion of fPictureView so + * we retain the gray cropping border we have already established + * with the still previews + */ + + /* Load the new movie into fMovieView */ + if (path) + { + NSError *outError; + NSURL *movieUrl = [NSURL fileURLWithPath:path]; + NSDictionary *movieAttributes = [NSDictionary dictionaryWithObjectsAndKeys: + movieUrl, QTMovieURLAttribute, + [NSNumber numberWithBool:NO], QTMovieAskUnresolvedDataRefsAttribute, + [NSNumber numberWithBool:YES], @"QTMovieOpenForPlaybackAttribute", + [NSNumber numberWithBool:NO], @"QTMovieOpenAsyncRequiredAttribute", + [NSNumber numberWithBool:NO], @"QTMovieOpenAsyncOKAttribute", + [NSNumber numberWithBool:YES], @"QTMovieIsSteppableAttribute", + QTMovieApertureModeClean, QTMovieApertureModeAttribute, + nil]; + + aMovie = [[[QTMovie alloc] initWithAttributes:movieAttributes error:&outError] autorelease]; + + if (!aMovie) + { + [fHBController writeToActivityLog: "showMoviePreview: Unable to open movie"]; + } + else + { + NSRect movieBounds; + + [fMovieView setControllerVisible:NO]; + + /* we get some size information from the preview movie */ + NSSize movieSize = [[aMovie attributeForKey:QTMovieNaturalSizeAttribute] sizeValue]; + movieBounds = [fMovieView movieBounds]; + movieBounds.size.height = movieSize.height; + /* We also get our view size to use for scaling fMovieView's size */ + NSSize scaledMovieViewSize = [fPictureLayer frame].size; + movieBounds.size.width = movieSize.width; + + /* we need to account for an issue where the scaledMovieViewSize > the window size */ + if (scaledMovieViewSize.height > [[self window] frame].size.height) + { + [fHBController writeToActivityLog: "showMoviePreview: Our window is not tall enough to show the controller bar ..."]; + } + + /* Scale the fMovieView to scaledMovieViewSize */ + [fMovieView setFrameSize:scaledMovieViewSize]; + + /*set our origin try using fPictureViewArea or fPictureView */ + NSPoint origin = [fPictureLayer frame].origin; + origin.x += trunc( ( [fPictureLayer frame].size.width - + [fMovieView frame].size.width ) / 2.0 ); + origin.y += trunc( ( ( [fPictureLayer frame].size.height - + [fMovieView frame].size.height ) / 2.0 ) ); + + [fMovieView setFrameOrigin:origin]; + [fMovieView setMovie:aMovie]; + + // get and enable subtitles + NSArray *subtitlesArray; + subtitlesArray = [aMovie tracksOfMediaType: @"sbtl"]; + if( subtitlesArray && [subtitlesArray count] ) + { + // enable the first TX3G subtitle track + [[subtitlesArray objectAtIndex: 0] setEnabled: YES]; + } + else + { + // Perian subtitles + subtitlesArray = [aMovie tracksOfMediaType: QTMediaTypeVideo]; + if( subtitlesArray && ( [subtitlesArray count] >= 2 ) ) + { + // track 0 should be video, other video tracks should + // be subtitles; force-enable the first subs track + [[subtitlesArray objectAtIndex: 1] setEnabled: YES]; + } + } + + // to actually play the movie + [NSAnimationContext beginGrouping]; + [[NSAnimationContext currentContext] setDuration:0.2]; + [[fEncodingControlBox animator] setHidden: YES]; + [[fMovieView animator] setHidden:NO]; + [[fMoviePlaybackControlBox animator] setHidden: NO]; + [NSAnimationContext endGrouping]; + + [self initPreviewScrubberForMovie]; + [self startMovieTimer]; + /* Install amovie notifications */ + [aMovie setDelegate:self]; + [self installMovieCallbacks]; + [fMovieView play:aMovie]; + } + } +} + +#pragma mark *** Movie Playback Scrubber and time code methods *** + +// Initialize the preview scrubber min/max to appropriate values for the current movie +-(void) initPreviewScrubberForMovie +{ + if (aMovie) + { + QTTime duration = [aMovie duration]; + CGFloat result = duration.timeValue / duration.timeScale; + + [fMovieScrubberSlider setMinValue:0.0]; + [fMovieScrubberSlider setMaxValue: result]; + [fMovieScrubberSlider setDoubleValue: 0.0]; + } +} + +-(void) adjustPreviewScrubberForCurrentMovieTime +{ + if (aMovie) + { + QTTime time = [aMovie currentTime]; + + CGFloat result = (CGFloat)time.timeValue / (CGFloat)time.timeScale;; + [fMovieScrubberSlider setDoubleValue:result]; + } +} + +- (IBAction) previewScrubberChanged: (id) sender +{ + if (aMovie) + { + [fMovieView pause:aMovie]; + QTTime time = [self SliderToQTTime:[fMovieScrubberSlider doubleValue]]; + [aMovie setCurrentTime:time]; + [fMovieInfoField setStringValue: [self SMTPETimecode:time]]; + } +} + +- (BOOL) isPlaying +{ + if (aMovie != nil) + { + /* For some stupid reason there is no "isPlaying" method for a QTMovie + * object, given that, we detect the rate to determine whether the movie + * is playing or not. + */ + if ([aMovie rate] != 0.0f) // we are playing + return YES; + else // we are paused or stopped + return NO; + } + return NO; +} + +#pragma mark *** Movie Notifications *** + +- (void) installMovieCallbacks +{ + /*Notification for any time the movie rate changes */ + [[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(movieRateDidChange:) + name:@"QTMovieRateDidChangeNotification" + object:aMovie]; + /*Notification for when the movie ends */ + [[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(movieDidEnd:) + name:@"QTMovieDidEndNotification" + object:aMovie]; +} + +- (void)removeMovieCallbacks +{ + if (aMovie) + { + /*Notification for any time the movie rate changes */ + [[NSNotificationCenter defaultCenter] removeObserver:self + name:@"QTMovieRateDidChangeNotification" + object:aMovie]; + /*Notification for when the movie ends */ + [[NSNotificationCenter defaultCenter] removeObserver:self + name:@"QTMovieDidEndNotification" + object:aMovie]; + } +} + +- (void)movieRateDidChange:(NSNotification *)notification +{ + if (aMovie != nil) + { + if ([self isPlaying]) + [fPlayPauseButton setState: NSOnState]; + else + [fPlayPauseButton setState: NSOffState]; + } +} + +/* This notification is not currently used. However we should keep it "just in case" as + * live preview playback is enhanced. + */ +- (void)movieDidEnd:(NSNotification *)notification +{ + //[fHBController writeToActivityLog: "Movie DidEnd Notification Received"]; +} + +/* fMovieView Keyboard controls */ +- (void)keyDown:(NSEvent *)event +{ + unichar key = [[event charactersIgnoringModifiers] characterAtIndex:0]; + + if (aMovie) + { + if (key == 32) + { + if ([self isPlaying]) + [fMovieView pause:aMovie]; + else + [fMovieView play:aMovie]; + } + else if (key == 'k') + [fMovieView pause:aMovie]; + else if (key == 'l') + { + float rate = [aMovie rate]; + rate += 1.0f; + [fMovieView play:aMovie]; + [aMovie setRate:rate]; + } + else if (key == 'j') + { + float rate = [aMovie rate]; + rate -= 1.0f; + [fMovieView play:aMovie]; + [aMovie setRate:rate]; + } + else if ([event modifierFlags] & NSAlternateKeyMask && key == NSLeftArrowFunctionKey) + [fMovieView gotoBeginning:self]; + else if ([event modifierFlags] & NSAlternateKeyMask && key == NSRightArrowFunctionKey) + [fMovieView gotoEnd:self]; + else if (key == NSLeftArrowFunctionKey) + [fMovieView stepBackward:self]; + else if (key == NSRightArrowFunctionKey) + [fMovieView stepForward:self]; + else + [super keyDown:event]; + } + else if (!fEncodeState) + { + if (key == NSLeftArrowFunctionKey) + { + [fPictureSlider setIntegerValue:fPicture > [fPictureSlider minValue] ? fPicture - 1 : fPicture]; + [self pictureSliderChanged:self]; + } + else if (key == NSRightArrowFunctionKey) + { + [fPictureSlider setIntegerValue:fPicture < [fPictureSlider maxValue] ? fPicture + 1 : fPicture]; + [self pictureSliderChanged:self]; + } + else + [super keyDown:event]; + } + else + [super keyDown:event]; +} + +#pragma mark *** QTTime Utilities *** + + // convert a time value (long) to a QTTime structure +-(QTTime)SliderToQTTime:(double)value +{ + long timeScale = [[aMovie attributeForKey:QTMovieTimeScaleAttribute] longValue]; + return QTMakeTime(value * timeScale, timeScale); +} + +/* Since MacOSX Leopard QTKit has taken over some responsibility for assessing movie playback + * information from the old QuickTime carbon api ( time code information as well as fps, etc.). + * However, the QTKit devs at apple were not really big on documentation and further ... + * QuickTimes ability to playback HB's largely variable framerate output makes perfectly frame + * accurate information at best convoluted. Still, for the purpose of a custom hud based custom + * playback scrubber slider this has so far proven to be as accurate as I have found. To say it + * could use some better accuracy is not understating it enough probably. + * Most of this was gleaned from this obscure Apple Mail list thread: + * http://www.mailinglistarchive.com/quicktime-api@lists.apple.com/msg05642.html + * Now as we currently do not show a QTKit control bar with scrubber for display sizes > container + * size, this seems to facilitate playback control from the HB custom HUD controller fairly close + * to the built in controller bar. + * Further work needs to be done to try to get accurate frame by frame playback display if we want it. + * Note that the keyboard commands for frame by frame step through etc. work as always. + */ + +// Returns a human readable string from the currentTime of movie playback +- (NSString*) SMTPETimecode:(QTTime)time +{ + NSString *smtpeTimeCodeString; + int days, hour, minute, second, frame; + long long result; + + result = time.timeValue / time.timeScale; // second + frame = (time.timeValue % time.timeScale) / 100; + + second = result % 60; + + result = result / 60; // minute + minute = result % 60; + + result = result / 60; // hour + hour = result % 24; + days = result; + + smtpeTimeCodeString = [NSString stringWithFormat:@"%02d:%02d:%02d", hour, minute, second]; // hh:mm:ss + return smtpeTimeCodeString; +} + +@end + +@implementation PreviewController (Private) + +// +// -[PictureController(Private) optimalViewSizeForImageSize:] +// +// Given the size of the preview image to be shown, returns the best possible +// size for the view. +// +- (NSSize)optimalViewSizeForImageSize: (NSSize)imageSize +{ + // The min size is 480x360 + CGFloat minWidth = 480.0; + CGFloat minHeight = 360.0; + + NSSize screenSize = [[[self window] screen] visibleFrame].size; + CGFloat maxWidth = screenSize.width; + CGFloat maxHeight = screenSize.height; + + NSSize resultSize = imageSize; + CGFloat resultPar = resultSize.width / resultSize.height; + + //note, a mbp 15" at 1440 x 900 is a 1.6 ar + CGFloat screenAspect = screenSize.width / screenSize.height; + + if ( resultSize.width > maxWidth || resultSize.height > maxHeight ) + { + // Source is larger than screen in one or more dimensions + if ( resultPar > screenAspect ) + { + // Source aspect wider than screen aspect, snap to max width and vary height + resultSize.width = maxWidth; + resultSize.height = (maxWidth / resultPar); + } + else + { + // Source aspect narrower than screen aspect, snap to max height vary width + resultSize.height = maxHeight; + resultSize.width = (maxHeight * resultPar); + } + } + + // If necessary, grow to minimum dimensions to ensure controls overlay is not obstructed + if ( resultSize.width < minWidth ) + resultSize.width = minWidth; + if ( resultSize.height < minHeight ) + resultSize.height = minHeight; + + return resultSize; +} + +// +// -[PictureController(Private) resizeWindowForViewSize:] +// +// Resizes the entire window to accomodate a view of a particular size. +// +- (void)resizeWindowForViewSize: (NSSize)viewSize +{ + // Figure out the deltas for the new frame area + NSSize currentSize = [[[self window] contentView] frame].size; + CGFloat deltaX = viewSize.width - currentSize.width; + CGFloat deltaY = viewSize.height - currentSize.height; + + // Now resize the whole panel by those same deltas, but don't exceed the min + NSRect frame = [[self window] frame]; + NSSize maxSize = [[[self window] screen] visibleFrame].size; + /* if we are not Scale To Screen, put an 10% of visible screen on the window */ + if (scaleToScreen == NO ) + { + maxSize.width = maxSize.width * 0.90; + maxSize.height = maxSize.height * 0.90; + } + + /* Set our min size to the storage size */ + NSSize minSize; + minSize.width = fTitle->width / backingScaleFactor; + minSize.height = fTitle->height / backingScaleFactor; + + frame.size.width += deltaX; + frame.size.height += deltaY; + if( frame.size.width < minSize.width ) + { + frame.size.width = minSize.width; + deltaX = frame.size.width - currentSize.width; + } + if( frame.size.height < minSize.height ) + { + frame.size.height = minSize.height; + deltaY = frame.size.height - currentSize.height; + } + /* compare frame to max size of screen */ + + if( frame.size.width > maxSize.width ) + { + frame.size.width = maxSize.width; + } + + if( frame.size.height > maxSize.height ) + { + frame.size.height = maxSize.height; + } + + // But now the sheet is off-center, so also shift the origin to center it and + // keep the top aligned. + if( frame.size.width != [[self window] frame].size.width ) + frame.origin.x -= (deltaX / 2.0); + + /* Since upon launch we can open up the preview window if it was open + * the last time we quit (and at the size it was) we want to make + * sure that upon resize we do not have the window off the screen + * So check the origin against the screen origin and adjust if + * necessary. + */ + NSSize screenSize = [[[self window] screen] visibleFrame].size; + NSPoint screenOrigin = [[[self window] screen] frame].origin; + if (screenSize.height < frame.size.height) + { + frame.size.height = screenSize.height; + } + if (screenSize.width < frame.size.width) + { + frame.size.width = screenSize.width; + } + + /* our origin is off the screen to the left*/ + if (frame.origin.x < screenOrigin.x) + { + /* so shift our origin to the right */ + frame.origin.x = screenOrigin.x; + } + else if ((frame.origin.x + frame.size.width) > (screenOrigin.x + screenSize.width)) + { + /* the right side of the preview is off the screen, so shift to the left */ + frame.origin.x = (screenOrigin.x + screenSize.width) - frame.size.width; + } + + [[self window] setFrame:frame display:YES animate:YES]; +} + +@end diff -Nru handbrake-0.9.9+dfsg/macosx/HBQueueController.h handbrake-0.9.9+ppa1/macosx/HBQueueController.h --- handbrake-0.9.9+dfsg/macosx/HBQueueController.h 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/HBQueueController.h 2010-07-19 17:02:43.000000000 +0000 @@ -0,0 +1,152 @@ +/* HBQueueController + + This file is part of the HandBrake source code. + Homepage: . + It may be used under the terms of the GNU General Public License. */ + + +#import +#include "hb.h" + +@class HBController; + + +#define HB_QUEUE_DRAGGING 0 // <--- NOT COMPLETELY FUNCTIONAL YET +#define HB_OUTLINE_METRIC_CONTROLS 0 // for tweaking the outline cell spacings + + + +//------------------------------------------------------------------------------------ +// As usual, we need to subclass NSOutlineView to handle a few special cases: +// +// (1) variable row heights during live resizes +// HBQueueOutlineView exists solely to get around a bug in variable row height outline +// views in which row heights get messed up during live resizes. See this discussion: +// http://lists.apple.com/archives/cocoa-dev/2005/Oct/msg00871.html +// However, the recommeneded fix (override drawRect:) does not work. Instead, this +// subclass implements viewDidEndLiveResize in order to recalculate all row heights. +// +// (2) prevent expanding of items during drags +// During dragging operations, we don't want outline items to expand, since a queue +// doesn't really have children items. +// +// (3) generate a drag image that incorporates more than just the first column +// By default, NSTableView only drags an image of the first column. Change this to +// drag an image of the queue's icon and desc columns. + +@interface HBQueueOutlineView : NSOutlineView +{ + +BOOL fIsDragging; + +} + +- (BOOL) isDragging; + +@end + + + + +@interface HBQueueController : NSWindowController +{ + hb_handle_t *fQueueEncodeLibhb; // reference to libhb + HBController *fHBController; // reference to HBController + NSMutableArray *fJobGroups; // mirror image of the queue array from controller.mm + + int pidNum; // Records the PID number from HBController for this instance + int fEncodingQueueItem; // corresponds to the index of fJobGroups encoding item + int fPendingCount; // Number of various kinds of job groups in fJobGroups. + int fCompletedCount; + int fCanceledCount; + int fWorkingCount; + BOOL fJobGroupCountsNeedUpdating; + + BOOL fCurrentJobPaneShown; // NO when fCurrentJobPane has been shifted out of view (see showCurrentJobPane) + NSMutableIndexSet *fSavedExpandedItems; // used by save/restoreOutlineViewState to preserve which items are expanded + NSMutableIndexSet *fSavedSelectedItems; // used by save/restoreOutlineViewState to preserve which items are selected +#if HB_QUEUE_DRAGGING + NSArray *fDraggedNodes; +#endif + NSTimer *fAnimationTimer; // animates the icon of the current job in the queue outline view + int fAnimationIndex; // used to generate name of image used to animate the current job in the queue outline view + + // +------------------window-------------------+ + // |+-------------fCurrentJobPane-------------+| + // || || + // || || + // || || + // |+-----------------------------------------+| + // |+---------------fQueuePane----------------+| + // || || + // || || + // || || + // || || + // || || + // || || + // || || + // |+-----------------------------------------+| + // +-------------------------------------------+ + + // fCurrentJobPane - visible only when processing a job + IBOutlet NSView *fCurrentJobPane; + IBOutlet NSImageView *fJobIconView; + IBOutlet NSTextField *fJobDescTextField; + IBOutlet NSProgressIndicator *fProgressBar; + IBOutlet NSTextField *fProgressTextField; + + // fQueuePane - always visible; fills entire window when fCurrentJobPane is hidden + IBOutlet NSView *fQueuePane; + IBOutlet HBQueueOutlineView *fOutlineView; + IBOutlet NSTextField *fQueueCountField; + NSArray *fDraggedNodes; + BOOL fIsDragging; +#if HB_OUTLINE_METRIC_CONTROLS + IBOutlet NSSlider *fIndentation; // debug + IBOutlet NSSlider *fSpacing; // debug +#endif + +} +- (void)setPidNum: (int)myPidnum; +- (void)setHandle: (hb_handle_t *)handle; +- (void)setHBController: (HBController *)controller; + +- (void)setupToolbar; + +- (void)setQueueArray: (NSMutableArray *)QueueFileArray; +- (id)outlineView:(NSOutlineView *)fOutlineView child:(NSInteger)index ofItem:(id)item; + +- (BOOL)outlineView:(NSOutlineView *)fOutlineView isItemExpandable:(id)item; + +- (BOOL)outlineView:(NSOutlineView *)fOutlineView shouldExpandItem:(id)item; + +- (NSInteger)outlineView:(NSOutlineView *)fOutlineView numberOfChildrenOfItem:(id)item; + +- (id)outlineView:(NSOutlineView *)fOutlineView objectValueForTableColumn:(NSTableColumn *)tableColumn byItem:(id)item; + +- (void)outlineView:(NSOutlineView *)fOutlineView willDisplayCell:(id)cell forTableColumn:(NSTableColumn *)tableColumn item:(id)item; + +/* Animate the icon for the current encode */ +- (void) animateWorkingEncodeIconInQueue; +- (void) startAnimatingCurrentWorkingEncodeInQueue; +- (void) stopAnimatingCurrentJobGroupInQueue; +- (void)setQueueStatusString: (NSString *)statusString; + +- (IBAction)showQueueWindow: (id)sender; + + +/* control encodes in the window */ +- (IBAction)removeSelectedQueueItem: (id)sender; +- (IBAction)revealSelectedQueueItem: (id)sender; +- (IBAction)editSelectedQueueItem: (id)sender; + +#if HB_OUTLINE_METRIC_CONTROLS +- (IBAction)imageSpacingChanged: (id)sender; +- (IBAction)indentChanged: (id)sender; +#endif + + + + + +@end diff -Nru handbrake-0.9.9+dfsg/macosx/HBQueueController.mm handbrake-0.9.9+ppa1/macosx/HBQueueController.mm --- handbrake-0.9.9+dfsg/macosx/HBQueueController.mm 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/HBQueueController.mm 2013-04-12 20:14:05.000000000 +0000 @@ -0,0 +1,1484 @@ +/* HBQueueController + + This file is part of the HandBrake source code. + Homepage: . + It may be used under the terms of the GNU General Public License. */ + +#import "HBQueueController.h" +#import "Controller.h" +#import "HBImageAndTextCell.h" + +#define HB_ROW_HEIGHT_TITLE_ONLY 17.0 +#define HB_ROW_HEIGHT_FULL_DESCRIPTION 200.0 +// Pasteboard type for or drag operations +#define DragDropSimplePboardType @"MyCustomOutlineViewPboardType" + +//------------------------------------------------------------------------------------ +#pragma mark - +//------------------------------------------------------------------------------------ + +//------------------------------------------------------------------------------------ +// NSMutableAttributedString (HBAdditions) +//------------------------------------------------------------------------------------ + +@interface NSMutableAttributedString (HBAdditions) +- (void) appendString: (NSString*)aString withAttributes: (NSDictionary *)aDictionary; +@end + +@implementation NSMutableAttributedString (HBAdditions) +- (void) appendString: (NSString*)aString withAttributes: (NSDictionary *)aDictionary +{ + NSAttributedString * s = [[[NSAttributedString alloc] + initWithString: aString + attributes: aDictionary] autorelease]; + [self appendAttributedString: s]; +} +@end + + +@implementation HBQueueOutlineView + +- (void)viewDidEndLiveResize +{ + // Since we disabled calculating row heights during a live resize, force them to + // recalculate now. + [self noteHeightOfRowsWithIndexesChanged: + [NSIndexSet indexSetWithIndexesInRange: NSMakeRange(0, [self numberOfRows])]]; + [super viewDidEndLiveResize]; +} + + + +/* This should be for dragging, we take this info from the presets right now */ +- (NSImage *)dragImageForRowsWithIndexes:(NSIndexSet *)dragRows tableColumns:(NSArray *)tableColumns event:(NSEvent*)dragEvent offset:(NSPointPointer)dragImageOffset +{ + fIsDragging = YES; + + // By default, NSTableView only drags an image of the first column. Change this to + // drag an image of the queue's icon and desc and action columns. + NSArray * cols = [NSArray arrayWithObjects: [self tableColumnWithIdentifier:@"desc"], [self tableColumnWithIdentifier:@"icon"],[self tableColumnWithIdentifier:@"action"], nil]; + return [super dragImageForRowsWithIndexes:dragRows tableColumns:cols event:dragEvent offset:dragImageOffset]; +} + + + +- (void) mouseDown:(NSEvent *)theEvent +{ + [super mouseDown:theEvent]; + fIsDragging = NO; +} + + + +- (BOOL) isDragging; +{ + return fIsDragging; +} + +@end + +#pragma mark Toolbar Identifiers +// Toolbar identifiers +static NSString* HBQueueToolbar = @"HBQueueToolbar1"; +static NSString* HBQueueStartCancelToolbarIdentifier = @"HBQueueStartCancelToolbarIdentifier"; +static NSString* HBQueuePauseResumeToolbarIdentifier = @"HBQueuePauseResumeToolbarIdentifier"; + +#pragma mark - + +@implementation HBQueueController + +//------------------------------------------------------------------------------------ +// init +//------------------------------------------------------------------------------------ +- (id)init +{ + if (self = [super initWithWindowNibName:@"Queue"]) + { + // NSWindowController likes to lazily load its window nib. Since this + // controller tries to touch the outlets before accessing the window, we + // need to force it to load immadiately by invoking its accessor. + // + // If/when we switch to using bindings, this can probably go away. + [self window]; + + // Our defaults + [[NSUserDefaults standardUserDefaults] registerDefaults:[NSDictionary dictionaryWithObjectsAndKeys: + @"NO", @"QueueWindowIsOpen", + @"NO", @"QueueShowsDetail", + @"YES", @"QueueShowsJobsAsGroups", + nil]]; + + fJobGroups = [[NSMutableArray arrayWithCapacity:0] retain]; + } + + return self; +} + +- (void)setQueueArray: (NSMutableArray *)QueueFileArray +{ + [fJobGroups setArray:QueueFileArray]; + fIsDragging = NO; + /* First stop any timer working now */ + //[self stopAnimatingCurrentJobGroupInQueue]; + [fOutlineView reloadData]; + + + + /* lets get the stats on the status of the queue array */ + + fPendingCount = 0; + fCompletedCount = 0; + fCanceledCount = 0; + fWorkingCount = 0; + + /* We use a number system to set the encode status of the queue item + * in controller.mm + * 0 == already encoded + * 1 == is being encoded + * 2 == is yet to be encoded + * 3 == cancelled + */ + int i = 0; + NSDictionary *thisQueueDict = nil; + for(id tempObject in fJobGroups) + { + thisQueueDict = tempObject; + if ([[thisQueueDict objectForKey:@"Status"] intValue] == 0) // Completed + { + fCompletedCount++; + } + if ([[thisQueueDict objectForKey:@"Status"] intValue] == 1) // being encoded + { + fWorkingCount++; + /* we have an encoding job so, lets start the animation timer */ + if ([thisQueueDict objectForKey:@"EncodingPID"] && [[thisQueueDict objectForKey:@"EncodingPID"] intValue] == pidNum) + { + fEncodingQueueItem = i; + } + } + if ([[thisQueueDict objectForKey:@"Status"] intValue] == 2) // pending + { + fPendingCount++; + } + if ([[thisQueueDict objectForKey:@"Status"] intValue] == 3) // cancelled + { + fCanceledCount++; + } + i++; + } + + /* Set the queue status field in the queue window */ + NSMutableString * string; + if (fPendingCount == 0) + { + string = [NSMutableString stringWithFormat: NSLocalizedString( @"No encode pending", @"" )]; + } + else if (fPendingCount == 1) + { + string = [NSMutableString stringWithFormat: NSLocalizedString( @"%d encode pending", @"" ), fPendingCount]; + } + else + { + string = [NSMutableString stringWithFormat: NSLocalizedString( @"%d encodes pending", @"" ), fPendingCount]; + } + [fQueueCountField setStringValue:string]; + +} + +/* This method sets the status string in the queue window + * and is called from Controller.mm (fHBController) + * instead of running another timer here polling libhb + * for encoding status + */ +- (void)setQueueStatusString: (NSString *)statusString +{ + + [fProgressTextField setStringValue:statusString]; + +} + +//------------------------------------------------------------------------------------ +// dealloc +//------------------------------------------------------------------------------------ +- (void)dealloc +{ + // clear the delegate so that windowWillClose is not attempted + if( [[self window] delegate] == self ) + [[self window] setDelegate:nil]; + + [fJobGroups release]; + + [fSavedExpandedItems release]; + [fSavedSelectedItems release]; + + [[NSNotificationCenter defaultCenter] removeObserver:self]; + + [super dealloc]; +} + +//------------------------------------------------------------------------------------ +// Receive HB handle +//------------------------------------------------------------------------------------ +- (void)setHandle: (hb_handle_t *)handle +{ + fQueueEncodeLibhb = handle; +} + +//------------------------------------------------------------------------------------ +// Receive HBController +//------------------------------------------------------------------------------------ +- (void)setHBController: (HBController *)controller +{ + fHBController = controller; +} + +- (void)setPidNum: (int)myPidnum +{ + pidNum = myPidnum; + [fHBController writeToActivityLog: "HBQueueController : My Pidnum is %d", pidNum]; +} + +#pragma mark - + +//------------------------------------------------------------------------------------ +// Displays and brings the queue window to the front +//------------------------------------------------------------------------------------ +- (IBAction) showQueueWindow: (id)sender +{ + [self showWindow:sender]; + [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"QueueWindowIsOpen"]; + [self startAnimatingCurrentWorkingEncodeInQueue]; +} + + + +//------------------------------------------------------------------------------------ +// awakeFromNib +//------------------------------------------------------------------------------------ +- (void)awakeFromNib +{ + [self setupToolbar]; + + if( ![[self window] setFrameUsingName:@"Queue"] ) + [[self window] center]; + [self setWindowFrameAutosaveName:@"Queue"]; + + /* lets setup our queue list outline view for drag and drop here */ + [fOutlineView registerForDraggedTypes: [NSArray arrayWithObject:DragDropSimplePboardType] ]; + [fOutlineView setDraggingSourceOperationMask:NSDragOperationEvery forLocal:YES]; + [fOutlineView setVerticalMotionCanBeginDrag: YES]; + + + // Don't allow autoresizing of main column, else the "delete" column will get + // pushed out of view. + [fOutlineView setAutoresizesOutlineColumn: NO]; + +#if HB_OUTLINE_METRIC_CONTROLS + [fIndentation setHidden: NO]; + [fSpacing setHidden: NO]; + [fIndentation setIntegerValue:[fOutlineView indentationPerLevel]]; // debug + [fSpacing setIntegerValue:3]; // debug +#endif + + // Show/hide UI elements + fCurrentJobPaneShown = NO; // it's shown in the nib + +} + + +//------------------------------------------------------------------------------------ +// windowWillClose +//------------------------------------------------------------------------------------ +- (void)windowWillClose:(NSNotification *)aNotification +{ + [[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"QueueWindowIsOpen"]; + [self stopAnimatingCurrentJobGroupInQueue]; +} + +#pragma mark Toolbar + +//------------------------------------------------------------------------------------ +// setupToolbar +//------------------------------------------------------------------------------------ +- (void)setupToolbar +{ + // Create a new toolbar instance, and attach it to our window + NSToolbar *toolbar = [[[NSToolbar alloc] initWithIdentifier: HBQueueToolbar] autorelease]; + + // Set up toolbar properties: Allow customization, give a default display mode, and remember state in user defaults + [toolbar setAllowsUserCustomization: YES]; + [toolbar setAutosavesConfiguration: YES]; + [toolbar setDisplayMode: NSToolbarDisplayModeIconAndLabel]; + + // We are the delegate + [toolbar setDelegate: self]; + + // Attach the toolbar to our window + [[self window] setToolbar:toolbar]; +} + +//------------------------------------------------------------------------------------ +// toolbar:itemForItemIdentifier:willBeInsertedIntoToolbar: +//------------------------------------------------------------------------------------ +- (NSToolbarItem *)toolbar:(NSToolbar *)toolbar + itemForItemIdentifier:(NSString *)itemIdentifier + willBeInsertedIntoToolbar:(BOOL)flag +{ + // Required delegate method: Given an item identifier, this method returns an item. + // The toolbar will use this method to obtain toolbar items that can be displayed + // in the customization sheet, or in the toolbar itself. + + NSToolbarItem *toolbarItem = nil; + + if ([itemIdentifier isEqual: HBQueueStartCancelToolbarIdentifier]) + { + toolbarItem = [[[NSToolbarItem alloc] initWithItemIdentifier: itemIdentifier] autorelease]; + + // Set the text label to be displayed in the toolbar and customization palette + [toolbarItem setLabel: @"Start"]; + [toolbarItem setPaletteLabel: @"Start/Cancel"]; + + // Set up a reasonable tooltip, and image + [toolbarItem setToolTip: @"Start Encoding"]; + [toolbarItem setImage: [NSImage imageNamed: @"encode"]]; + + // Tell the item what message to send when it is clicked + [toolbarItem setTarget: self]; + [toolbarItem setAction: @selector(toggleStartCancel:)]; + } + + if ([itemIdentifier isEqual: HBQueuePauseResumeToolbarIdentifier]) + { + toolbarItem = [[[NSToolbarItem alloc] initWithItemIdentifier: itemIdentifier] autorelease]; + + // Set the text label to be displayed in the toolbar and customization palette + [toolbarItem setLabel: @"Pause"]; + [toolbarItem setPaletteLabel: @"Pause/Resume"]; + + // Set up a reasonable tooltip, and image + [toolbarItem setToolTip: @"Pause Encoding"]; + [toolbarItem setImage: [NSImage imageNamed: @"pauseencode"]]; + + // Tell the item what message to send when it is clicked + [toolbarItem setTarget: self]; + [toolbarItem setAction: @selector(togglePauseResume:)]; + } + + return toolbarItem; +} + +//------------------------------------------------------------------------------------ +// toolbarDefaultItemIdentifiers: +//------------------------------------------------------------------------------------ +- (NSArray *) toolbarDefaultItemIdentifiers: (NSToolbar *) toolbar +{ + // Required delegate method: Returns the ordered list of items to be shown in the + // toolbar by default. + + return [NSArray arrayWithObjects: + HBQueueStartCancelToolbarIdentifier, + HBQueuePauseResumeToolbarIdentifier, + nil]; +} + +//------------------------------------------------------------------------------------ +// toolbarAllowedItemIdentifiers: +//------------------------------------------------------------------------------------ +- (NSArray *) toolbarAllowedItemIdentifiers: (NSToolbar *) toolbar +{ + // Required delegate method: Returns the list of all allowed items by identifier. + // By default, the toolbar does not assume any items are allowed, even the + // separator. So, every allowed item must be explicitly listed. + + return [NSArray arrayWithObjects: + HBQueueStartCancelToolbarIdentifier, + HBQueuePauseResumeToolbarIdentifier, + NSToolbarCustomizeToolbarItemIdentifier, + NSToolbarFlexibleSpaceItemIdentifier, + NSToolbarSpaceItemIdentifier, + NSToolbarSeparatorItemIdentifier, + nil]; +} + +//------------------------------------------------------------------------------------ +// validateToolbarItem: +//------------------------------------------------------------------------------------ +- (BOOL) validateToolbarItem: (NSToolbarItem *) toolbarItem +{ + // Optional method: This message is sent to us since we are the target of some + // toolbar item actions. + + if (!fQueueEncodeLibhb) return NO; + + BOOL enable = NO; + + hb_state_t s; + hb_get_state2 (fQueueEncodeLibhb, &s); + + if ([[toolbarItem itemIdentifier] isEqual: HBQueueStartCancelToolbarIdentifier]) + { + if ((s.state == HB_STATE_PAUSED) || (s.state == HB_STATE_WORKING) || (s.state == HB_STATE_MUXING)) + { + enable = YES; + [toolbarItem setImage:[NSImage imageNamed: @"stopencode"]]; + [toolbarItem setLabel: @"Stop"]; + [toolbarItem setToolTip: @"Stop Encoding"]; + } + + else if (fPendingCount > 0) + { + enable = YES; + [toolbarItem setImage:[NSImage imageNamed: @"encode"]]; + [toolbarItem setLabel: @"Start"]; + [toolbarItem setToolTip: @"Start Encoding"]; + } + + else + { + enable = NO; + [toolbarItem setImage:[NSImage imageNamed: @"encode"]]; + [toolbarItem setLabel: @"Start"]; + [toolbarItem setToolTip: @"Start Encoding"]; + } + } + + if ([[toolbarItem itemIdentifier] isEqual: HBQueuePauseResumeToolbarIdentifier]) + { + if (s.state == HB_STATE_PAUSED) + { + enable = YES; + [toolbarItem setImage:[NSImage imageNamed: @"encode"]]; + [toolbarItem setLabel: @"Resume"]; + [toolbarItem setToolTip: @"Resume Encoding"]; + } + + else if ((s.state == HB_STATE_WORKING) || (s.state == HB_STATE_MUXING)) + { + enable = YES; + [toolbarItem setImage:[NSImage imageNamed: @"pauseencode"]]; + [toolbarItem setLabel: @"Pause"]; + [toolbarItem setToolTip: @"Pause Encoding"]; + } + else + { + enable = NO; + [toolbarItem setImage:[NSImage imageNamed: @"pauseencode"]]; + [toolbarItem setLabel: @"Pause"]; + [toolbarItem setToolTip: @"Pause Encoding"]; + } + } + + return enable; +} + +#pragma mark - + + +#pragma mark Queue Item Controls +//------------------------------------------------------------------------------------ +// Delete encodes from the queue window and accompanying array +// Also handling first cancelling the encode if in fact its currently encoding. +//------------------------------------------------------------------------------------ +- (IBAction)removeSelectedQueueItem: (id)sender +{ + NSIndexSet * selectedRows = [fOutlineView selectedRowIndexes]; + NSUInteger row = [selectedRows firstIndex]; + if( row == NSNotFound ) + return; + /* if this is a currently encoding job, we need to be sure to alert the user, + * to let them decide to cancel it first, then if they do, we can come back and + * remove it */ + + if ([[[fJobGroups objectAtIndex:row] objectForKey:@"Status"] integerValue] == 1) + { + /* We pause the encode here so that it doesn't finish right after and then + * screw up the sync while the window is open + */ + [fHBController Pause:NULL]; + NSString * alertTitle = [NSString stringWithFormat:NSLocalizedString(@"Stop This Encode and Remove It ?", nil)]; + // Which window to attach the sheet to? + NSWindow * docWindow = nil; + if ([sender respondsToSelector: @selector(window)]) + docWindow = [sender window]; + + + NSBeginCriticalAlertSheet( + alertTitle, + NSLocalizedString(@"Keep Encoding", nil), + nil, + NSLocalizedString(@"Stop Encoding and Delete", nil), + docWindow, self, + nil, @selector(didDimissCancelCurrentJob:returnCode:contextInfo:), nil, + NSLocalizedString(@"Your movie will be lost if you don't continue encoding.", nil)); + + // didDimissCancelCurrentJob:returnCode:contextInfo: will be called when the dialog is dismissed + } + else + { + /* since we are not a currently encoding item, we can just be removed */ + [fHBController removeQueueFileItem:row]; + } +} + +- (void) didDimissCancelCurrentJob: (NSWindow *)sheet returnCode: (int)returnCode contextInfo: (void *)contextInfo +{ + /* We resume encoding and perform the appropriate actions + * Note: Pause: is a toggle type method based on hb's current + * state, if it paused, it will resume encoding and vice versa. + * In this case, we are paused from the calling window, so calling + * [fHBController Pause:NULL]; Again will resume encoding + */ + [fHBController Pause:NULL]; + if (returnCode == NSAlertOtherReturn) + { + /* We need to save the currently encoding item number first */ + int encodingItemToRemove = fEncodingQueueItem; + /* Since we are encoding, we need to let fHBController Cancel this job + * upon which it will move to the next one if there is one + */ + [fHBController doCancelCurrentJob]; + /* Now, we can go ahead and remove the job we just cancelled since + * we have its item number from above + */ + [fHBController removeQueueFileItem:encodingItemToRemove]; + } + +} + +//------------------------------------------------------------------------------------ +// Show the finished encode in the finder +//------------------------------------------------------------------------------------ +- (IBAction)revealSelectedQueueItem: (id)sender +{ + NSIndexSet * selectedRows = [fOutlineView selectedRowIndexes]; + NSInteger row = [selectedRows firstIndex]; + if (row != NSNotFound) + { + while (row != NSNotFound) + { + NSMutableDictionary *queueItemToOpen = [fOutlineView itemAtRow: row]; + [[NSWorkspace sharedWorkspace] selectFile:[queueItemToOpen objectForKey:@"DestinationPath"] inFileViewerRootedAtPath:nil]; + + row = [selectedRows indexGreaterThanIndex: row]; + } + } +} + + +//------------------------------------------------------------------------------------ +// Starts or cancels the processing of jobs depending on the current state +//------------------------------------------------------------------------------------ +- (IBAction)toggleStartCancel: (id)sender +{ + if (!fQueueEncodeLibhb) return; + + hb_state_t s; + hb_get_state2 (fQueueEncodeLibhb, &s); + + if ((s.state == HB_STATE_PAUSED) || (s.state == HB_STATE_WORKING) || (s.state == HB_STATE_MUXING)) + [fHBController Cancel: fQueuePane]; // sender == fQueuePane so that warning alert shows up on queue window + + else if (fPendingCount > 0) + [fHBController Rip: NULL]; +} + +//------------------------------------------------------------------------------------ +// Toggles the pause/resume state of libhb +//------------------------------------------------------------------------------------ +- (IBAction)togglePauseResume: (id)sender +{ + if (!fQueueEncodeLibhb) return; + + hb_state_t s; + hb_get_state2 (fQueueEncodeLibhb, &s); + + if (s.state == HB_STATE_PAUSED) + { + hb_resume (fQueueEncodeLibhb); + [self startAnimatingCurrentWorkingEncodeInQueue]; + } + else if ((s.state == HB_STATE_WORKING) || (s.state == HB_STATE_MUXING)) + { + hb_pause (fQueueEncodeLibhb); + [self stopAnimatingCurrentJobGroupInQueue]; + } +} + + +//------------------------------------------------------------------------------------ +// Send the selected queue item back to the main window for rescan and possible edit. +//------------------------------------------------------------------------------------ +- (IBAction)editSelectedQueueItem: (id)sender +{ + NSIndexSet * selectedRows = [fOutlineView selectedRowIndexes]; + NSUInteger row = [selectedRows firstIndex]; + if( row == NSNotFound ) + return; + /* if this is a currently encoding job, we need to be sure to alert the user, + * to let them decide to cancel it first, then if they do, we can come back and + * remove it */ + + if ([[[fJobGroups objectAtIndex:row] objectForKey:@"Status"] integerValue] == 1) + { + /* We pause the encode here so that it doesn't finish right after and then + * screw up the sync while the window is open + */ + [fHBController Pause:NULL]; + NSString * alertTitle = [NSString stringWithFormat:NSLocalizedString(@"Stop This Encode and Remove It ?", nil)]; + // Which window to attach the sheet to? + NSWindow * docWindow = nil; + if ([sender respondsToSelector: @selector(window)]) + docWindow = [sender window]; + + + NSBeginCriticalAlertSheet( + alertTitle, + NSLocalizedString(@"Keep Encoding", nil), + nil, + NSLocalizedString(@"Stop Encoding and Delete", nil), + docWindow, self, + nil, @selector(didDimissCancelCurrentJob:returnCode:contextInfo:), nil, + NSLocalizedString(@"Your movie will be lost if you don't continue encoding.", nil)); + + } + else + { + /* since we are not a currently encoding item, we can just be cancelled */ + [fHBController rescanQueueItemToMainWindow:[[fJobGroups objectAtIndex:row] objectForKey:@"SourcePath"] scanTitleNum:[[[fJobGroups objectAtIndex:row] objectForKey:@"TitleNumber"] integerValue] selectedQueueItem:row]; + + } +} + + +#pragma mark - +#pragma mark Animate Endcoding Item + + + + +//------------------------------------------------------------------------------------ +// Starts animating the job icon of the currently processing job in the queue outline +// view. +//------------------------------------------------------------------------------------ +- (void) startAnimatingCurrentWorkingEncodeInQueue +{ + if (!fAnimationTimer) + fAnimationTimer = [[NSTimer scheduledTimerWithTimeInterval:1.0/12.0 // 1/12 because there are 6 images in the animation cycle + target:self + selector:@selector(animateWorkingEncodeInQueue:) + userInfo:nil + repeats:YES] retain]; +} + +//------------------------------------------------------------------------------------ +// If a job is currently processing, its job icon in the queue outline view is +// animated to its next state. +//------------------------------------------------------------------------------------ +- (void) animateWorkingEncodeInQueue:(NSTimer*)theTimer +{ + if (fWorkingCount > 0) + { + fAnimationIndex++; + fAnimationIndex %= 6; // there are 6 animation images; see outlineView:objectValueForTableColumn:byItem: below. + [self animateWorkingEncodeIconInQueue]; + } +} + +/* We need to make sure we denote only working encodes even for multiple instances */ +- (void) animateWorkingEncodeIconInQueue +{ + NSInteger row = fEncodingQueueItem; /// need to set to fEncodingQueueItem + NSInteger col = [fOutlineView columnWithIdentifier: @"icon"]; + if (row != -1 && col != -1) + { + NSRect frame = [fOutlineView frameOfCellAtColumn:col row:row]; + [fOutlineView setNeedsDisplayInRect: frame]; + } +} + +//------------------------------------------------------------------------------------ +// Stops animating the job icon of the currently processing job in the queue outline +// view. +//------------------------------------------------------------------------------------ +- (void) stopAnimatingCurrentJobGroupInQueue +{ + if (fAnimationTimer && [fAnimationTimer isValid]) + { + [fAnimationTimer invalidate]; + [fAnimationTimer release]; + fAnimationTimer = nil; + } +} + + +#pragma mark - + +- (void)moveObjectsInArray:(NSMutableArray *)array fromIndexes:(NSIndexSet *)indexSet toIndex:(NSUInteger)insertIndex +{ + NSUInteger index = [indexSet lastIndex]; + NSUInteger aboveInsertIndexCount = 0; + + while (index != NSNotFound) + { + NSUInteger removeIndex; + + if (index >= insertIndex) + { + removeIndex = index + aboveInsertIndexCount; + aboveInsertIndexCount++; + } + else + { + removeIndex = index; + insertIndex--; + } + + id object = [[array objectAtIndex:removeIndex] retain]; + [array removeObjectAtIndex:removeIndex]; + [array insertObject:object atIndex:insertIndex]; + [object release]; + + index = [indexSet indexLessThanIndex:index]; + } +} + + +#pragma mark - +#pragma mark NSOutlineView delegate + + +- (id)outlineView:(NSOutlineView *)fOutlineView child:(NSInteger)index ofItem:(id)item +{ + if (item == nil) + return [fJobGroups objectAtIndex:index]; + + // We are only one level deep, so we can't be asked about children + NSAssert (NO, @"HBQueueController outlineView:child:ofItem: can't handle nested items."); + return nil; +} + +- (BOOL)outlineView:(NSOutlineView *)fOutlineView isItemExpandable:(id)item +{ + // Our outline view has no levels, but we can still expand every item. Doing so + // just makes the row taller. See heightOfRowByItem below. + return YES; +} + +- (BOOL)outlineView:(NSOutlineView *)outlineView shouldExpandItem:(id)item +{ + // Our outline view has no levels, but we can still expand every item. Doing so + // just makes the row taller. See heightOfRowByItem below. +return ![(HBQueueOutlineView*)outlineView isDragging]; +} + +- (NSInteger)outlineView:(NSOutlineView *)fOutlineView numberOfChildrenOfItem:(id)item +{ + // Our outline view has no levels, so number of children will be zero for all + // top-level items. + if (item == nil) + return [fJobGroups count]; + else + return 0; +} + +- (void)outlineViewItemDidCollapse:(NSNotification *)notification +{ + id item = [[notification userInfo] objectForKey:@"NSObject"]; + NSInteger row = [fOutlineView rowForItem:item]; + [fOutlineView noteHeightOfRowsWithIndexesChanged:[NSIndexSet indexSetWithIndexesInRange:NSMakeRange(row,1)]]; +} + +- (void)outlineViewItemDidExpand:(NSNotification *)notification +{ + id item = [[notification userInfo] objectForKey:@"NSObject"]; + NSInteger row = [fOutlineView rowForItem:item]; + [fOutlineView noteHeightOfRowsWithIndexesChanged:[NSIndexSet indexSetWithIndexesInRange:NSMakeRange(row,1)]]; +} + +- (CGFloat)outlineView:(NSOutlineView *)outlineView heightOfRowByItem:(id)item +{ + if ([outlineView isItemExpanded: item]) + { + /* Below is the original code to accommodate a live resize, + * however as stated in travistex's comments it's very buggy. + * For now I will leave it here ... commented out and use + * the code below to determine the row height based on each + * encodes optional parameters and how they are displayed. */ + + // Short-circuit here if in a live resize primarily to fix a bug but also to + // increase resposivness during a resize. There's a bug in NSTableView that + // causes row heights to get messed up if you try to change them during a live + // resize. So if in a live resize, simply return the previously calculated + // height. The row heights will get fixed up after the resize because we have + // implemented viewDidEndLiveResize to force all of them to be recalculated. + // if ([outlineView inLiveResize] && [item lastDescriptionHeight] > 0) + // return [item lastDescriptionHeight]; + + // CGFloat width = [[outlineView tableColumnWithIdentifier: @"desc"] width]; + // Column width is NOT what is ultimately used. I can't quite figure out what + // width to use for calculating text metrics. No matter how I tweak this value, + // there are a few conditions in which the drawn text extends below the bounds + // of the row cell. In previous versions, which ran under Tiger, I was + // reducing width by 47 pixles. + // width -= 2; // (?) for intercell spacing + + // CGFloat height = [item heightOfDescriptionForWidth: width]; + // return height; + + /* So, we know several rows of text that are in all queue items for display. + * These are the title line, Preset, Format, Destination, Picture, and Video Lines + */ + CGFloat rowHeightNonTitle = 15.0; + /* Add the title line height, then the non title line height for Preset, Format, Destination + * Picture and Video + */ + CGFloat itemHeightForDisplay = HB_ROW_HEIGHT_TITLE_ONLY + (rowHeightNonTitle * 5); + + /* get our item row number so we an use it to calc how many lines we have to display based + * on MP4 Options, Filter Options, X264 Options, Audio Tracks and Subtitles from our queue array */ + int itemRowNum = [outlineView rowForItem: item]; + NSMutableDictionary *queueItemToCheck = [outlineView itemAtRow: itemRowNum]; + + /* Check to see if we need to allow for container options */ + if ([[queueItemToCheck objectForKey:@"MuxerOptionsSummary"] length]) + { + itemHeightForDisplay += rowHeightNonTitle; + } + + /* check to see if we need to allow for the Picture Filters row */ + if ([[queueItemToCheck objectForKey:@"PictureFiltersSummary"] length]) + { + itemHeightForDisplay += rowHeightNonTitle; + } + + /* check to see if we need a line to display x264/lavc options */ + if ([[queueItemToCheck objectForKey:@"VideoEncoder"] isEqualToString: @"H.264 (x264)"]) + { + itemHeightForDisplay += rowHeightNonTitle * 2; + } + else if (![[queueItemToCheck objectForKey:@"VideoEncoder"] isEqualToString: @"VP3 (Theora)"]) + { + itemHeightForDisplay += rowHeightNonTitle; + } + + /* check to see how many audio track lines to allow for */ + unsigned int ourMaximumNumberOfAudioTracks = [HBController maximumNumberOfAllowedAudioTracks]; + int actualCountOfAudioTracks = 0; + BOOL autoPassthruPresent = NO; + for (unsigned int i = 1; i <= ourMaximumNumberOfAudioTracks; i++) { + if (0 < [[queueItemToCheck objectForKey: [NSString stringWithFormat: @"Audio%dTrack", i]] intValue]) + { + actualCountOfAudioTracks++; + } + if (HB_ACODEC_AUTO_PASS == [[queueItemToCheck objectForKey: [NSString stringWithFormat: @"JobAudio%dEncoder", i]] intValue]) + { + autoPassthruPresent = YES; + } + } + itemHeightForDisplay += (actualCountOfAudioTracks * rowHeightNonTitle * 2); + + if (autoPassthruPresent == YES) + { + itemHeightForDisplay += rowHeightNonTitle * 2; + } + + /* add in subtitle lines for each subtitle in the SubtitleList array */ + itemHeightForDisplay += rowHeightNonTitle * [[queueItemToCheck objectForKey:@"SubtitleList"] count]; + + return itemHeightForDisplay; + + } + else + { + return HB_ROW_HEIGHT_TITLE_ONLY; + } +} + +- (CGFloat) heightOfDescriptionForWidth:(CGFloat)width +{ + // Try to return the cached value if no changes have happened since the last time + //if ((width == fLastDescriptionWidth) && (fLastDescriptionHeight != 0) && !fNeedsDescription) + // return fLastDescriptionHeight; + + //if (fNeedsDescription) + // [self updateDescription]; + + // Calculate the height + //NSRect bounds = [fDescription boundingRectWithSize:NSMakeSize(width, 10000) options:NSStringDrawingUsesLineFragmentOrigin]; + //fLastDescriptionHeight = bounds.size.height + 6.0; // add some border to bottom + //fLastDescriptionWidth = width; + return HB_ROW_HEIGHT_FULL_DESCRIPTION; + +/* supposedly another way to do this, in case boundingRectWithSize isn't working + NSTextView* tmpView = [[NSTextView alloc] initWithFrame:NSMakeRect(0, 0, width, 1)]; + [[tmpView textStorage] setAttributedString:aString]; + [tmpView setHorizontallyResizable:NO]; + [tmpView setVerticallyResizable:YES]; +// [[tmpView textContainer] setHeightTracksTextView: YES]; +// [[tmpView textContainer] setContainerSize: NSMakeSize(width, 10000)]; + [tmpView sizeToFit]; + float height = [tmpView frame].size.height; + [tmpView release]; + return height; +*/ +} + +- (CGFloat) lastDescriptionHeight +{ + return HB_ROW_HEIGHT_FULL_DESCRIPTION; +} + +- (id)outlineView:(NSOutlineView *)fOutlineView objectValueForTableColumn:(NSTableColumn *)tableColumn byItem:(id)item +{ + if ([[tableColumn identifier] isEqualToString:@"desc"]) + { + + + /* Below should be put into a separate method but I am way too f'ing lazy right now */ + NSMutableAttributedString * finalString = [[[NSMutableAttributedString alloc] initWithString: @""] autorelease]; + // Attributes + NSMutableParagraphStyle * ps = [[[NSParagraphStyle defaultParagraphStyle] mutableCopy] retain]; + [ps setHeadIndent: 40.0]; + [ps setParagraphSpacing: 1.0]; + [ps setTabStops:[NSArray array]]; // clear all tabs + [ps addTabStop: [[[NSTextTab alloc] initWithType: NSLeftTabStopType location: 20.0] autorelease]]; + + + NSDictionary* detailAttr = [NSDictionary dictionaryWithObjectsAndKeys: + [NSFont systemFontOfSize:10.0], NSFontAttributeName, + ps, NSParagraphStyleAttributeName, + nil]; + + NSDictionary* detailBoldAttr = [NSDictionary dictionaryWithObjectsAndKeys: + [NSFont boldSystemFontOfSize:10.0], NSFontAttributeName, + ps, NSParagraphStyleAttributeName, + nil]; + + NSDictionary* titleAttr = [NSDictionary dictionaryWithObjectsAndKeys: + [NSFont systemFontOfSize:[NSFont systemFontSize]], NSFontAttributeName, + ps, NSParagraphStyleAttributeName, + nil]; + + NSDictionary* shortHeightAttr = [NSDictionary dictionaryWithObjectsAndKeys: + [NSFont systemFontOfSize:2.0], NSFontAttributeName, + nil]; + + /* First line, we should strip the destination path and just show the file name and add the title num and chapters (if any) */ + NSString * summaryInfo; + + NSString * titleString = [NSString stringWithFormat:@"Title %d", [[item objectForKey:@"TitleNumber"] intValue]]; + + NSString * startStopString = @""; + if ([[item objectForKey:@"fEncodeStartStop"] intValue] == 0) + { + /* Start Stop is chapters */ + startStopString = ([[item objectForKey:@"ChapterStart"] intValue] == [[item objectForKey:@"ChapterEnd"] intValue]) ? + [NSString stringWithFormat:@"Chapter %d", [[item objectForKey:@"ChapterStart"] intValue]] : + [NSString stringWithFormat:@"Chapters %d through %d", [[item objectForKey:@"ChapterStart"] intValue], [[item objectForKey:@"ChapterEnd"] intValue]]; + } + else if ([[item objectForKey:@"fEncodeStartStop"] intValue] == 1) + { + /* Start Stop is seconds */ + startStopString = [NSString stringWithFormat:@"Seconds %d through %d", [[item objectForKey:@"StartSeconds"] intValue], [[item objectForKey:@"StartSeconds"] intValue] + [[item objectForKey:@"StopSeconds"] intValue]]; + } + else if ([[item objectForKey:@"fEncodeStartStop"] intValue] == 2) + { + /* Start Stop is Frames */ + startStopString = [NSString stringWithFormat:@"Frames %d through %d", [[item objectForKey:@"StartFrame"] intValue], [[item objectForKey:@"StartFrame"] intValue] + [[item objectForKey:@"StopFrame"] intValue]]; + } + + NSString * passesString = @""; + /* check to see if our first subtitle track is Foreign Language Search, in which case there is an in depth scan */ + if ([item objectForKey:@"SubtitleList"] && [[[[item objectForKey:@"SubtitleList"] objectAtIndex:0] objectForKey:@"subtitleSourceTrackNum"] intValue] == 1) + { + passesString = [passesString stringByAppendingString:@"1 Foreign Language Search Pass - "]; + } + if ([[item objectForKey:@"VideoTwoPass"] intValue] == 0) + { + passesString = [passesString stringByAppendingString:@"1 Video Pass"]; + } + else + { + if ([[item objectForKey:@"VideoTurboTwoPass"] intValue] == 1) + { + passesString = [passesString stringByAppendingString:@"2 Video Passes First Turbo"]; + } + else + { + passesString = [passesString stringByAppendingString:@"2 Video Passes"]; + } + } + + [finalString appendString:[NSString stringWithFormat:@"%@", [item objectForKey:@"SourceName"]] withAttributes:titleAttr]; + + /* lets add the output file name to the title string here */ + NSString * outputFilenameString = [[item objectForKey:@"DestinationPath"] lastPathComponent]; + + summaryInfo = [NSString stringWithFormat: @" (%@, %@, %@) -> %@", titleString, startStopString, passesString, outputFilenameString]; + + [finalString appendString:[NSString stringWithFormat:@"%@\n", summaryInfo] withAttributes:detailAttr]; + + // Insert a short-in-height line to put some white space after the title + [finalString appendString:@"\n" withAttributes:shortHeightAttr]; + // End of Title Stuff + + /* Second Line (Preset Name)*/ + [finalString appendString: @"Preset: " withAttributes:detailBoldAttr]; + [finalString appendString:[NSString stringWithFormat:@"%@\n", [item objectForKey:@"PresetName"]] withAttributes:detailAttr]; + + /* Third Line (Format Summary) */ + NSString * audioCodecSummary = @""; // This seems to be set by the last track we have available... + /* Lets also get our audio track detail since we are going through the logic for use later */ + unsigned int ourMaximumNumberOfAudioTracks = [HBController maximumNumberOfAllowedAudioTracks]; + NSMutableArray *audioDetails = [NSMutableArray arrayWithCapacity: ourMaximumNumberOfAudioTracks]; + NSString *base; + NSString *detailString; + NSNumber *drc; + NSNumber *gain; + BOOL autoPassthruPresent = NO; + for (unsigned int i = 1; i <= ourMaximumNumberOfAudioTracks; i++) { + base = [NSString stringWithFormat: @"Audio%d", i]; + if (0 < [[item objectForKey: [base stringByAppendingString: @"Track"]] intValue]) + { + audioCodecSummary = [NSString stringWithFormat: @"%@", [item objectForKey: [base stringByAppendingString: @"Encoder"]]]; + drc = [item objectForKey: [base stringByAppendingString: @"TrackDRCSlider"]]; + gain = [item objectForKey: [base stringByAppendingString: @"TrackGainSlider"]]; + detailString = [NSString stringWithFormat: @"%@ Encoder: %@ Mixdown: %@ SampleRate: %@(khz) Bitrate: %@(kbps), DRC: %@, Gain: %@", + [item objectForKey: [base stringByAppendingString: @"TrackDescription"]], + [item objectForKey: [base stringByAppendingString: @"Encoder"]], + [item objectForKey: [base stringByAppendingString: @"Mixdown"]], + [item objectForKey: [base stringByAppendingString: @"Samplerate"]], + [item objectForKey: [base stringByAppendingString: @"Bitrate"]], + (0.0 < [drc floatValue]) ? (NSObject *)drc : (NSObject *)@"Off", + (0.0 != [gain floatValue]) ? (NSObject *)gain : (NSObject *)@"Off" + ] + ; + [audioDetails addObject: detailString]; + // check if we have an Auto Passthru output track + if ([[item objectForKey: [NSString stringWithFormat: @"Audio%dEncoder", i]] isEqualToString: @"Auto Passthru"]) + { + autoPassthruPresent = YES; + } + } + } + + + NSString * jobFormatInfo; + if ([[item objectForKey:@"ChapterMarkers"] intValue] == 1) + jobFormatInfo = [NSString stringWithFormat:@"%@ Container, %@ Video %@ Audio, Chapter Markers\n", [item objectForKey:@"FileFormat"], [item objectForKey:@"VideoEncoder"], audioCodecSummary]; + else + jobFormatInfo = [NSString stringWithFormat:@"%@ Container, %@ Video %@ Audio\n", [item objectForKey:@"FileFormat"], [item objectForKey:@"VideoEncoder"], audioCodecSummary]; + + + [finalString appendString: @"Format: " withAttributes:detailBoldAttr]; + [finalString appendString: jobFormatInfo withAttributes:detailAttr]; + + /* Optional String for muxer options */ + if ([[item objectForKey:@"MuxerOptionsSummary"] length]) + { + NSString *containerOptions = [NSString stringWithFormat:@"%@", + [item objectForKey:@"MuxerOptionsSummary"]]; + [finalString appendString:@"Container Options: " withAttributes:detailBoldAttr]; + [finalString appendString:containerOptions withAttributes:detailAttr]; + [finalString appendString:@"\n" withAttributes:detailAttr]; + } + + /* Fourth Line (Destination Path)*/ + [finalString appendString: @"Destination: " withAttributes:detailBoldAttr]; + [finalString appendString: [item objectForKey:@"DestinationPath"] withAttributes:detailAttr]; + [finalString appendString:@"\n" withAttributes:detailAttr]; + + /* Fifth Line Picture Details*/ + NSString *pictureInfo = [NSString stringWithFormat:@"%@", + [item objectForKey:@"PictureSettingsSummary"]]; + if ([[item objectForKey:@"PictureKeepRatio"] intValue] == 1) + { + pictureInfo = [pictureInfo stringByAppendingString:@" Keep Aspect Ratio"]; + } + [finalString appendString:@"Picture: " withAttributes:detailBoldAttr]; + [finalString appendString:pictureInfo withAttributes:detailAttr]; + [finalString appendString:@"\n" withAttributes:detailAttr]; + + /* Optional String for Picture Filters */ + if ([[item objectForKey:@"PictureFiltersSummary"] length]) + { + NSString *pictureFilters = [NSString stringWithFormat:@"%@", + [item objectForKey:@"PictureFiltersSummary"]]; + [finalString appendString:@"Filters: " withAttributes:detailBoldAttr]; + [finalString appendString:pictureFilters withAttributes:detailAttr]; + [finalString appendString:@"\n" withAttributes:detailAttr]; + } + + /* Sixth Line Video Details*/ + NSString * videoInfo; + videoInfo = [NSString stringWithFormat:@"Encoder: %@", [item objectForKey:@"VideoEncoder"]]; + + /* for framerate look to see if we are using vfr detelecine */ + if ([[item objectForKey:@"JobIndexVideoFramerate"] intValue] == 0) + { + if ([[item objectForKey:@"VideoFramerateMode"] isEqualToString:@"vfr"]) + { + /* we are using same as source with vfr detelecine */ + videoInfo = [NSString stringWithFormat:@"%@ Framerate: Same as source (Variable Frame Rate)", videoInfo]; + } + else + { + /* we are using a variable framerate without dropping frames */ + videoInfo = [NSString stringWithFormat:@"%@ Framerate: Same as source (Constant Frame Rate)", videoInfo]; + } + } + else + { + /* we have a specified, constant framerate */ + if ([[item objectForKey:@"VideoFramerateMode"] isEqualToString:@"pfr"]) + { + videoInfo = [NSString stringWithFormat:@"%@ Framerate: %@ (Peak Frame Rate)", videoInfo ,[item objectForKey:@"VideoFramerate"]]; + } + else + { + videoInfo = [NSString stringWithFormat:@"%@ Framerate: %@ (Constant Frame Rate)", videoInfo ,[item objectForKey:@"VideoFramerate"]]; + } + } + + if ([[item objectForKey:@"VideoQualityType"] intValue] == 0)// Target Size MB + { + videoInfo = [NSString stringWithFormat:@"%@ Target Size: %@(MB) (%d(kbps) abr)", videoInfo ,[item objectForKey:@"VideoTargetSize"],[[item objectForKey:@"VideoAvgBitrate"] intValue]]; + } + else if ([[item objectForKey:@"VideoQualityType"] intValue] == 1) // ABR + { + videoInfo = [NSString stringWithFormat:@"%@ Bitrate: %d(kbps)", videoInfo ,[[item objectForKey:@"VideoAvgBitrate"] intValue]]; + } + else // CRF + { + videoInfo = [NSString stringWithFormat:@"%@ Constant Quality: %.2f", videoInfo ,[[item objectForKey:@"VideoQualitySlider"] floatValue]]; + } + + [finalString appendString: @"Video: " withAttributes:detailBoldAttr]; + [finalString appendString: videoInfo withAttributes:detailAttr]; + [finalString appendString:@"\n" withAttributes:detailAttr]; + + if ([[item objectForKey:@"VideoEncoder"] isEqualToString: @"H.264 (x264)"]) + { + /* we are using x264 */ + NSString *x264Info = @""; + if ([[item objectForKey:@"x264UseAdvancedOptions"] intValue]) + { + // we are using the old advanced panel + if ([item objectForKey:@"x264Option"] && + [[item objectForKey:@"x264Option"] length]) + { + x264Info = [x264Info stringByAppendingString: [item objectForKey:@"x264Option"]]; + } + else + { + x264Info = [x264Info stringByAppendingString: @"default settings"]; + } + } + else + { + // we are using the x264 system + x264Info = [x264Info stringByAppendingString: [NSString stringWithFormat:@"Preset: %@", [item objectForKey:@"x264Preset"]]]; + if ([[item objectForKey:@"x264Tune"] length]) + { + x264Info = [x264Info stringByAppendingString: [NSString stringWithFormat:@" - Tune: %@", [item objectForKey:@"x264Tune"]]]; + } + if ([[item objectForKey:@"x264OptionExtra"] length]) + { + x264Info = [x264Info stringByAppendingString: [NSString stringWithFormat:@" - Options: %@", [item objectForKey:@"x264OptionExtra"]]]; + } + if ([[item objectForKey:@"h264Profile"] length]) + { + x264Info = [x264Info stringByAppendingString: [NSString stringWithFormat:@" - Profile: %@", [item objectForKey:@"h264Profile"]]]; + } + if ([[item objectForKey:@"h264Level"] length]) + { + x264Info = [x264Info stringByAppendingString: [NSString stringWithFormat:@" - Level: %@", [item objectForKey:@"h264Level"]]]; + } + } + [finalString appendString: @"x264: " withAttributes:detailBoldAttr]; + [finalString appendString: x264Info withAttributes:detailAttr]; + [finalString appendString:@"\n" withAttributes:detailAttr]; + } + else if (![[item objectForKey:@"VideoEncoder"] isEqualToString: @"VP3 (Theora)"]) + { + /* we are using libavcodec */ + NSString *lavcInfo = @""; + if ([item objectForKey:@"lavcOption"] && + [[item objectForKey:@"lavcOption"] length]) + { + lavcInfo = [lavcInfo stringByAppendingString: [item objectForKey:@"lavcOption"]]; + } + else + { + lavcInfo = [lavcInfo stringByAppendingString: @"default settings"]; + } + [finalString appendString: @"ffmpeg: " withAttributes:detailBoldAttr]; + [finalString appendString: lavcInfo withAttributes:detailAttr]; + [finalString appendString:@"\n" withAttributes:detailAttr]; + } + + + + + /* Seventh Line Audio Details*/ + NSEnumerator *audioDetailEnumerator = [audioDetails objectEnumerator]; + NSString *anAudioDetail; + int audioDetailCount = 0; + while (nil != (anAudioDetail = [audioDetailEnumerator nextObject])) { + audioDetailCount++; + if (0 < [anAudioDetail length]) { + [finalString appendString: [NSString stringWithFormat: @"Audio Track %d ", audioDetailCount] withAttributes: detailBoldAttr]; + [finalString appendString: anAudioDetail withAttributes: detailAttr]; + [finalString appendString: @"\n" withAttributes: detailAttr]; + } + } + + /* Eigth Line Auto Passthru Details */ + // only print Auto Passthru settings if we have an Auro Passthru output track + if (autoPassthruPresent == YES) + { + NSString *autoPassthruFallback = @"", *autoPassthruCodecs = @""; + autoPassthruFallback = [autoPassthruFallback stringByAppendingString: [item objectForKey: @"AudioEncoderFallback"]]; + if (0 < [[item objectForKey: @"AudioAllowAACPass"] intValue]) + { + autoPassthruCodecs = [autoPassthruCodecs stringByAppendingString: @"AAC"]; + } + if (0 < [[item objectForKey: @"AudioAllowAC3Pass"] intValue]) + { + if (0 < [autoPassthruCodecs length]) + { + autoPassthruCodecs = [autoPassthruCodecs stringByAppendingString: @", "]; + } + autoPassthruCodecs = [autoPassthruCodecs stringByAppendingString: @"AC3"]; + } + if (0 < [[item objectForKey: @"AudioAllowDTSHDPass"] intValue]) + { + if (0 < [autoPassthruCodecs length]) + { + autoPassthruCodecs = [autoPassthruCodecs stringByAppendingString: @", "]; + } + autoPassthruCodecs = [autoPassthruCodecs stringByAppendingString: @"DTS-HD"]; + } + if (0 < [[item objectForKey: @"AudioAllowDTSPass"] intValue]) + { + if (0 < [autoPassthruCodecs length]) + { + autoPassthruCodecs = [autoPassthruCodecs stringByAppendingString: @", "]; + } + autoPassthruCodecs = [autoPassthruCodecs stringByAppendingString: @"DTS"]; + } + if (0 < [[item objectForKey: @"AudioAllowMP3Pass"] intValue]) + { + if (0 < [autoPassthruCodecs length]) + { + autoPassthruCodecs = [autoPassthruCodecs stringByAppendingString: @", "]; + } + autoPassthruCodecs = [autoPassthruCodecs stringByAppendingString: @"MP3"]; + } + [finalString appendString: @"Auto Passthru Codecs: " withAttributes: detailBoldAttr]; + if (0 < [autoPassthruCodecs length]) + { + [finalString appendString: autoPassthruCodecs withAttributes: detailAttr]; + } + else + { + [finalString appendString: @"None" withAttributes: detailAttr]; + } + [finalString appendString: @"\n" withAttributes: detailAttr]; + [finalString appendString: @"Auto Passthru Fallback: " withAttributes: detailBoldAttr]; + [finalString appendString: autoPassthruFallback withAttributes: detailAttr]; + [finalString appendString: @"\n" withAttributes: detailAttr]; + } + + /* Ninth Line Subtitle Details */ + + int i = 0; + NSEnumerator *enumerator = [[item objectForKey:@"SubtitleList"] objectEnumerator]; + id tempObject; + while (tempObject = [enumerator nextObject]) + { + /* since the subtitleSourceTrackNum 0 is "None" in our array of the subtitle popups, + * we want to ignore it for display as well as encoding. + */ + if ([[tempObject objectForKey:@"subtitleSourceTrackNum"] intValue] > 0) + { + /* remember that index 0 of Subtitles can contain "Foreign Audio Search*/ + [finalString appendString: @"Subtitle: " withAttributes:detailBoldAttr]; + [finalString appendString: [tempObject objectForKey:@"subtitleSourceTrackName"] withAttributes:detailAttr]; + if ([[tempObject objectForKey:@"subtitleTrackForced"] intValue] == 1) + { + [finalString appendString: @" - Forced Only" withAttributes:detailAttr]; + } + if ([[tempObject objectForKey:@"subtitleTrackBurned"] intValue] == 1) + { + [finalString appendString: @" - Burned In" withAttributes:detailAttr]; + } + if ([[tempObject objectForKey:@"subtitleTrackDefault"] intValue] == 1) + { + [finalString appendString: @" - Default" withAttributes:detailAttr]; + } + [finalString appendString:@"\n" withAttributes:detailAttr]; + } + i++; + } + + return finalString; + } + else if ([[tableColumn identifier] isEqualToString:@"icon"]) + { + if ([[item objectForKey:@"Status"] intValue] == 0) + { + return [NSImage imageNamed:@"EncodeComplete"]; + } + else if ([[item objectForKey:@"Status"] intValue] == 1) + { + return [NSImage imageNamed: [NSString stringWithFormat: @"EncodeWorking%d", fAnimationIndex]]; + } + else if ([[item objectForKey:@"Status"] intValue] == 3) + { + return [NSImage imageNamed:@"EncodeCanceled"]; + } + else + { + return [NSImage imageNamed:@"JobSmall"]; + } + + } + else + { + return @""; + } +} +/* This method inserts the proper action icons into the far right of the queue window */ +- (void)outlineView:(NSOutlineView *)outlineView willDisplayCell:(id)cell forTableColumn:(NSTableColumn *)tableColumn item:(id)item +{ + if ([[tableColumn identifier] isEqualToString:@"desc"]) + { + + + // nb: The "desc" column is currently an HBImageAndTextCell. However, we are longer + // using the image portion of the cell so we could switch back to a regular NSTextFieldCell. + + // Set the image here since the value returned from outlineView:objectValueForTableColumn: didn't specify the image part + [cell setImage:nil]; + } + else if ([[tableColumn identifier] isEqualToString:@"action"]) + { + [cell setEnabled: YES]; + BOOL highlighted = [outlineView isRowSelected:[outlineView rowForItem: item]] && [[outlineView window] isKeyWindow] && ([[outlineView window] firstResponder] == outlineView); + + if ([[item objectForKey:@"Status"] intValue] == 0 || ([[item objectForKey:@"Status"] intValue] == 1 && [[item objectForKey:@"EncodingPID"] intValue] != pidNum)) + { + [cell setAction: @selector(revealSelectedQueueItem:)]; + if (highlighted) + { + [cell setImage:[NSImage imageNamed:@"RevealHighlight"]]; + [cell setAlternateImage:[NSImage imageNamed:@"RevealHighlightPressed"]]; + } + else + [cell setImage:[NSImage imageNamed:@"Reveal"]]; + } + else + { + + [cell setAction: @selector(removeSelectedQueueItem:)]; + if (highlighted) + { + [cell setImage:[NSImage imageNamed:@"DeleteHighlight"]]; + [cell setAlternateImage:[NSImage imageNamed:@"DeleteHighlightPressed"]]; + } + else + [cell setImage:[NSImage imageNamed:@"Delete"]]; + + } + } +} + +- (void)outlineView:(NSOutlineView *)outlineView willDisplayOutlineCell:(id)cell forTableColumn:(NSTableColumn *)tableColumn item:(id)item +{ + // By default, the disclosure image gets centered vertically in the cell. We want + // always at the top. + if ([outlineView isItemExpanded: item]) + [cell setImagePosition: NSImageAbove]; + else + [cell setImagePosition: NSImageOnly]; +} + +#pragma mark - +#pragma mark NSOutlineView delegate (dragging related) + +//------------------------------------------------------------------------------------ +// NSTableView delegate +//------------------------------------------------------------------------------------ + + +- (BOOL)outlineView:(NSOutlineView *)outlineView writeItems:(NSArray *)items toPasteboard:(NSPasteboard *)pboard +{ + // Dragging is only allowed of the pending items. + if ([[[items objectAtIndex:0] objectForKey:@"Status"] integerValue] != 2) // 2 is pending + { + return NO; + } + + // Don't retain since this is just holding temporaral drag information, and it is + //only used during a drag! We could put this in the pboard actually. + fDraggedNodes = items; + + // Provide data for our custom type, and simple NSStrings. + [pboard declareTypes:[NSArray arrayWithObjects: DragDropSimplePboardType, nil] owner:self]; + + // the actual data doesn't matter since DragDropSimplePboardType drags aren't recognized by anyone but us!. + [pboard setData:[NSData data] forType:DragDropSimplePboardType]; + + return YES; +} + + +/* This method is used to validate the drops. */ +- (NSDragOperation)outlineView:(NSOutlineView *)outlineView validateDrop:(id )info proposedItem:(id)item proposedChildIndex:(NSInteger)index +{ + // Don't allow dropping ONTO an item since they can't really contain any children. + BOOL isOnDropTypeProposal = index == NSOutlineViewDropOnItemIndex; + if (isOnDropTypeProposal) + { + return NSDragOperationNone; + } + + // Don't allow dropping INTO an item since they can't really contain any children. + if (item != nil) + { + index = [fOutlineView rowForItem: item] + 1; + item = nil; + } + + // NOTE: Should we allow dropping a pending job *above* the + // finished or already encoded jobs ? + // We do not let the user drop a pending job before or *above* + // already finished or currently encoding jobs. + if (index <= fEncodingQueueItem) + { + return NSDragOperationNone; + index = MAX (index, fEncodingQueueItem); + } + + [outlineView setDropItem:item dropChildIndex:index]; + return NSDragOperationGeneric; +} + +- (BOOL)outlineView:(NSOutlineView *)outlineView acceptDrop:(id )info item:(id)item childIndex:(NSInteger)index +{ + NSMutableIndexSet *moveItems = [NSMutableIndexSet indexSet]; + + for( id obj in fDraggedNodes ) + [moveItems addIndex:[fJobGroups indexOfObject:obj]]; + + // Successful drop, we use moveObjectsInQueueArray:... in fHBController + // to properly rearrange the queue array, save it to plist and then send it back here. + // since Controller.mm is handling all queue array manipulation. + // We *could do this here, but I think we are better served keeping that code together. + [fHBController moveObjectsInQueueArray:fJobGroups fromIndexes:moveItems toIndex: index]; + return YES; +} + + +@end diff -Nru handbrake-0.9.9+dfsg/macosx/HBSubtitles.h handbrake-0.9.9+ppa1/macosx/HBSubtitles.h --- handbrake-0.9.9+dfsg/macosx/HBSubtitles.h 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/HBSubtitles.h 2013-03-12 21:44:00.000000000 +0000 @@ -0,0 +1,58 @@ +/* $Id: HBSubtitles.h,v 1.35 2005/08/01 14:29:50 titer Exp $ + + This file is part of the HandBrake source code. + Homepage: . + It may be used under the terms of the GNU General Public License. */ + +#import +#include "hb.h" + + + + +@interface HBSubtitles : NSObject { +hb_title_t *fTitle; + +NSMutableArray *subtitleArray; // contains the output subtitle track info +NSMutableArray *subtitleSourceArray;// contains the source subtitle track info +NSString *foreignAudioSearchTrackName; +NSMutableArray *languagesArray; // array of languages taken from lang.c +int languagesArrayDefIndex; +NSMutableArray *charCodeArray; // array of character codes +int charCodeArrayDefIndex; +int container; + +} + +// Trigger a refresh of data +- (void)resetWithTitle:(hb_title_t *)title; + +// Create new subtitle track +- (void)addSubtitleTrack; +- (NSDictionary *)createSubtitleTrack; +- (NSMutableArray*) getSubtitleArray; +// Add an srt file +- (void)createSubtitleSrtTrack:(NSString *)filePath; + +- (void)containerChanged:(int) newContainer; + +- (void)setNewSubtitles:(NSMutableArray*) newSubtitleArray; + +// Table View Delegates +- (int)numberOfRowsInTableView:(NSTableView *)aTableView; + +- (id)tableView:(NSTableView *)aTableView + objectValueForTableColumn:(NSTableColumn *)aTableColumn + row:(NSInteger)rowIndex; + +- (void)tableView:(NSTableView *)aTableView + setObjectValue:(id)anObject + forTableColumn:(NSTableColumn *)aTableColumn + row:(NSInteger)rowIndex; + +- (void)tableView:(NSTableView *)aTableView + willDisplayCell:(id)aCell + forTableColumn:(NSTableColumn *)aTableColumn + row:(NSInteger)rowIndex; + +@end diff -Nru handbrake-0.9.9+dfsg/macosx/HBSubtitles.m handbrake-0.9.9+ppa1/macosx/HBSubtitles.m --- handbrake-0.9.9+dfsg/macosx/HBSubtitles.m 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/HBSubtitles.m 2013-05-12 21:49:54.000000000 +0000 @@ -0,0 +1,1065 @@ +/* $Id: HBSubtitles.m,v 1.35 2005/08/01 14:29:50 titer Exp $ + + This file is part of the HandBrake source code. + Homepage: . + It may be used under the terms of the GNU General Public License. */ + +#import "HBSubtitles.h" +#include "hb.h" + +@implementation HBSubtitles +- (id)init +{ + self = [super init]; + if( self != nil ) + { + fTitle = NULL; + } + + /* setup our array of languages */ + languagesArray = [[NSMutableArray alloc] init]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Any",@"und",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Afar",@"aar",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Abkhazian",@"abk",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Afrikaans",@"afr",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Akan",@"ak",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Albanian",@"sqi",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Amharic",@"amh",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Arabic",@"ara",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Aragonese",@"arg",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Armenian",@"hye",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Assamese",@"asm",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Avaric",@"ava",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Avestan",@"ave",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Aymara",@"aym",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Azerbaijani",@"aze",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Bashkir",@"bak",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Bambara",@"bam",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Basque",@"eus",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Belarusian",@"bel",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Bengali",@"ben",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Bihari",@"bih",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Bislama",@"bis",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Bosnian",@"bos",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Breton",@"bre",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Bulgarian",@"bul",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Burmese",@"mya",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Catalan",@"cat",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Chamorro",@"cha",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Chechen",@"che",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Chinese",@"zho",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Church Slavic",@"chu",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Chuvash",@"chv",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Cornish",@"cor",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Corsican",@"cos",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Cree",@"cre",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Czech",@"ces",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Danish",@"dan",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Divehi",@"div",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Dutch",@"nld",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Dzongkha",@"dzo",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"English",@"eng",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Esperanto",@"epo",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Estonian",@"est",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Ewe",@"ewe",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Faroese",@"fao",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Fijian",@"fij",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Finnish",@"fin",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"French",@"fra",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Western Frisian",@"fry",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Fulah",@"ful",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Georgian",@"kat",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"German",@"deu",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Gaelic (Scots)",@"gla",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Irish",@"gle",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Galician",@"glg",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Manx",@"glv",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Greek, Modern",@"ell",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Guarani",@"grn",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Gujarati",@"guj",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Haitian",@"hat",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Hausa",@"hau",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Hebrew",@"heb",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Herero",@"her",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Hindi",@"hin",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Hiri Motu",@"hmo",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Hungarian",@"hun",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Igbo",@"ibo",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Icelandic",@"isl",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Ido",@"ido",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Sichuan Yi",@"iii",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Inuktitut",@"iku",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Interlingue",@"ile",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Interlingua",@"ina",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Indonesian",@"ind",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Inupiaq",@"ipk",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Italian",@"ita",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Javanese",@"jav",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Japanese",@"jpn",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Kalaallisut (Greenlandic)",@"kal",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Kannada",@"kan",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Kashmiri",@"kas",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Kanuri",@"kau",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Kazakh",@"kaz",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Central Khmer",@"khm",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Kikuyu",@"kik",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Kinyarwanda",@"kin",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Kirghiz",@"kir",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Komi",@"kom",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Kongo",@"kon",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Korean",@"kor",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Kuanyama",@"kua",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Kurdish",@"kur",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Lao",@"lao",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Latin",@"lat",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Latvian",@"lav",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Limburgan",@"lim",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Lingala",@"lin",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Lithuanian",@"lit",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Luxembourgish",@"ltz",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Luba-Katanga",@"lub",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Ganda",@"lug",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Macedonian",@"mkd",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Marshallese",@"mah",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Malayalam",@"mal",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Maori",@"mri",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Marathi",@"mar",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Malay",@"msa",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Malagasy",@"mlg",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Maltese",@"mlt",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Moldavian",@"mol",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Mongolian",@"mon",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Nauru",@"nau",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Navajo",@"nav",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Ndebele, South",@"nbl",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Ndebele, North",@"nde",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Ndonga",@"ndo",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Nepali",@"nep",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Norwegian Nynorsk",@"nno",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Norwegian Bokmål",@"nob",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Norwegian",@"nor",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Chichewa; Nyanja",@"nya",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Occitan (post 1500); Provençal",@"oci",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Ojibwa",@"oji",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Oriya",@"ori",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Oromo",@"orm",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Ossetian; Ossetic",@"und",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Panjabi",@"pan",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Persian",@"fas",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Pali",@"pli",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Portuguese",@"por",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Pushto",@"pus",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Quechua",@"que",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Romansh",@"roh",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Romanian",@"ron",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Rundi",@"run",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Russian",@"rus",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Sango",@"sag",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Sanskrit",@"san",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Serbian",@"srp",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Croatian",@"hrv",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Sinhala",@"sin",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Slovak",@"slk",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Slovenian",@"slv",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Northern Sami",@"sme",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Samoan",@"smo",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Shona",@"sna",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Sindhi",@"snd",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Somali",@"som",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Sotho, Southern",@"sot",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Spanish",@"spa",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Sardinian",@"srd",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Swati",@"ssw",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Sundanese",@"sun",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Swahili",@"swa",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Swedish",@"swe",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Tahitian",@"tah",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Tamil",@"tam",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Tatar",@"tat",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Telugu",@"tel",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Tajik",@"tgk",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Tagalog",@"tgl",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Thai",@"tha",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Tibetan",@"bod",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Tigrinya",@"tir",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Tonga (Tonga Islands)",@"ton",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Tswana",@"tsn",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Tsonga",@"tso",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Turkmen",@"tuk",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Turkish",@"tur",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Twi",@"twi",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Uighur",@"uig",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Ukrainian",@"ukr",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Urdu",@"urd",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Uzbek",@"uzb",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Venda",@"ven",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Vietnamese",@"vie",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Volapük",@"vol",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Welsh",@"cym",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Walloon",@"wln",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Wolof",@"wol",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Xhosa",@"xho",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Yiddish",@"yid",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Yoruba",@"yor",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"ZhuangZhuang",@"zha",nil]]; + [languagesArray addObject:[NSArray arrayWithObjects:@"Zulu",@"zul",nil]]; + + languagesArrayDefIndex = 40; + + /* populate the charCodeArray */ + charCodeArray = [[NSMutableArray alloc] init]; + [charCodeArray addObject:@"ANSI_X3.4-1968"]; + [charCodeArray addObject:@"ANSI_X3.4-1986"]; + [charCodeArray addObject:@"ANSI_X3.4"]; + [charCodeArray addObject:@"ANSI_X3.110-1983"]; + [charCodeArray addObject:@"ANSI_X3.110"]; + [charCodeArray addObject:@"ASCII"]; + [charCodeArray addObject:@"ECMA-114"]; + [charCodeArray addObject:@"ECMA-118"]; + [charCodeArray addObject:@"ECMA-128"]; + [charCodeArray addObject:@"ECMA-CYRILLIC"]; + [charCodeArray addObject:@"IEC_P27-1"]; + [charCodeArray addObject:@"ISO-8859-1"]; + [charCodeArray addObject:@"ISO-8859-2"]; + [charCodeArray addObject:@"ISO-8859-3"]; + [charCodeArray addObject:@"ISO-8859-4"]; + [charCodeArray addObject:@"ISO-8859-5"]; + [charCodeArray addObject:@"ISO-8859-6"]; + [charCodeArray addObject:@"ISO-8859-7"]; + [charCodeArray addObject:@"ISO-8859-8"]; + [charCodeArray addObject:@"ISO-8859-9"]; + [charCodeArray addObject:@"ISO-8859-9E"]; + [charCodeArray addObject:@"ISO-8859-10"]; + [charCodeArray addObject:@"ISO-8859-11"]; + [charCodeArray addObject:@"ISO-8859-13"]; + [charCodeArray addObject:@"ISO-8859-14"]; + [charCodeArray addObject:@"ISO-8859-15"]; + [charCodeArray addObject:@"ISO-8859-16"]; + [charCodeArray addObject:@"UTF-7"]; + [charCodeArray addObject:@"UTF-8"]; + [charCodeArray addObject:@"UTF-16"]; + [charCodeArray addObject:@"UTF-16LE"]; + [charCodeArray addObject:@"UTF-16BE"]; + [charCodeArray addObject:@"UTF-32"]; + [charCodeArray addObject:@"UTF-32LE"]; + [charCodeArray addObject:@"UTF-32BE"]; + + charCodeArrayDefIndex = 11; + + return self; +} + + +- (void)resetWithTitle:(hb_title_t *)title +{ + if (!title) + { + return; + } + fTitle = title; + + /* reset the subtitle source array */ + if (subtitleSourceArray) + { + [subtitleSourceArray release]; + } + subtitleSourceArray = [[NSMutableArray alloc] init]; + + /* now populate the array with the source subtitle track info */ + int i; + hb_subtitle_t *subtitle; + NSMutableArray *forcedSourceNamesArray = [[NSMutableArray alloc] init]; + for (i = 0; i < hb_list_count(fTitle->list_subtitle); i++) + { + subtitle = (hb_subtitle_t*)hb_list_item(fTitle->list_subtitle, i); + + /* Subtitle source features */ + int canBeBurnedIn = hb_subtitle_can_burn(subtitle->source); + int supportsForcedFlags = hb_subtitle_can_force(subtitle->source); + /* Human-readable representation of subtitle->source */ + NSString *bitmapOrText = subtitle->format == PICTURESUB ? @"Bitmap" : @"Text"; + NSString *subSourceName = [NSString stringWithUTF8String:hb_subsource_name(subtitle->source)]; + /* if the subtitle track can be forced, add its source name to the array */ + if (supportsForcedFlags && + [forcedSourceNamesArray containsObject:subSourceName] == NO) + { + [forcedSourceNamesArray addObject:subSourceName]; + } + + /* create a dictionary of source subtitle information to store in our array */ + NSMutableDictionary *newSubtitleSourceTrack = [[NSMutableDictionary alloc] init]; + /* Subtitle Source track name */ + [newSubtitleSourceTrack setObject:[NSString stringWithFormat:@"%d - %@ - (%@) (%@)", + i, [NSString stringWithUTF8String:subtitle->lang], + bitmapOrText,subSourceName] + forKey:@"sourceTrackName"]; + /* Subtitle Source track number, type and features */ + [newSubtitleSourceTrack setObject:[NSNumber numberWithInt:i] forKey:@"sourceTrackNum"]; + [newSubtitleSourceTrack setObject:[NSNumber numberWithInt:subtitle->source] forKey:@"sourceTrackType"]; + [newSubtitleSourceTrack setObject:[NSNumber numberWithInt:canBeBurnedIn] forKey:@"sourceTrackCanBeBurnedIn"]; + [newSubtitleSourceTrack setObject:[NSNumber numberWithInt:supportsForcedFlags] forKey:@"sourceTrackSupportsForcedFlags"]; + [subtitleSourceArray addObject:newSubtitleSourceTrack]; + [newSubtitleSourceTrack autorelease]; + } + + /* now set the name of the Foreign Audio Search track */ + if ([forcedSourceNamesArray count]) + { + [forcedSourceNamesArray sortUsingComparator:^(id obj1, id obj2) + { + return [((NSString*)obj1) compare:((NSString*)obj2)]; + }]; + NSString *tempString; + NSString *tempList = @""; + NSEnumerator *enumerator = [forcedSourceNamesArray objectEnumerator]; + while (tempString = (NSString*)[enumerator nextObject]) + { + if ([tempList length]) + { + tempList = [tempList stringByAppendingString:@", "]; + } + tempList = [tempList stringByAppendingString:tempString]; + } + [foreignAudioSearchTrackName release]; + foreignAudioSearchTrackName = [[NSString stringWithFormat:@"Foreign Audio Search - (Bitmap) (%@)", tempList] + retain]; + } + else + { + [foreignAudioSearchTrackName release]; + foreignAudioSearchTrackName = [[NSString stringWithString:@"Foreign Audio Search - (Bitmap)"] + retain]; + } + [forcedSourceNamesArray release]; + + /* reset the subtitle output array */ + if (subtitleArray) + { + [subtitleArray release]; + } + subtitleArray = [[NSMutableArray alloc] init]; + [self addSubtitleTrack]; +} + +#pragma mark - +#pragma mark Create new Subtitles + +- (void)addSubtitleTrack +{ + [subtitleArray addObject:[self createSubtitleTrack]]; +} + +/* Creates a new subtitle track and stores it in an NSMutableDictionary */ +- (NSDictionary *)createSubtitleTrack +{ + NSMutableDictionary *newSubtitleTrack = [[NSMutableDictionary alloc] init]; + /* Subtitle Source track popup index */ + [newSubtitleTrack setObject:[NSNumber numberWithInt:0] forKey:@"subtitleSourceTrackNum"]; + /* Subtitle Source track popup language */ + [newSubtitleTrack setObject:@"None" forKey:@"subtitleSourceTrackName"]; + /* Subtitle track forced state */ + [newSubtitleTrack setObject:[NSNumber numberWithInt:0] forKey:@"subtitleTrackForced"]; + /* Subtitle track burned state */ + [newSubtitleTrack setObject:[NSNumber numberWithInt:0] forKey:@"subtitleTrackBurned"]; + /* Subtitle track default state */ + [newSubtitleTrack setObject:[NSNumber numberWithInt:0] forKey:@"subtitleTrackDefault"]; + /* Subtitle Source track canBeBurnedIn */ + [newSubtitleTrack setObject:[NSNumber numberWithInt:0] forKey:@"subtitleSourceTrackCanBeBurnedIn"]; + /* Subtitle Source track supportsForcedFlags */ + [newSubtitleTrack setObject:[NSNumber numberWithInt:0] forKey:@"subtitleSourceTrackSupportsForcedFlags"]; + + [newSubtitleTrack autorelease]; + return newSubtitleTrack; +} + +- (void)createSubtitleSrtTrack:(NSString *)filePath +{ + /* Create a new entry for the subtitle source array so it shows up in our subtitle source list */ + NSString *displayname = [filePath lastPathComponent];// grok an appropriate display name from the srt subtitle */ + /* create a dictionary of source subtitle information to store in our array */ + NSMutableDictionary *newSubtitleSourceTrack = [[NSMutableDictionary alloc] init]; + /* Subtitle Source track popup index */ + [newSubtitleSourceTrack setObject:[NSNumber numberWithInt:[subtitleSourceArray count]+1] forKey:@"sourceTrackNum"]; + /* Subtitle Source track name */ + [newSubtitleSourceTrack setObject:displayname forKey:@"sourceTrackName"]; + /* Subtitle Source track type (VobSub, Srt, etc.) */ + [newSubtitleSourceTrack setObject:[NSNumber numberWithInt:SRTSUB] forKey:@"sourceTrackType"]; + [newSubtitleSourceTrack setObject:[NSNumber numberWithInt:SRTSUB] forKey:@"subtitleSourceTrackType"]; + /* Subtitle Source file path */ + [newSubtitleSourceTrack setObject:filePath forKey:@"sourceSrtFilePath"]; + /* Subtitle Source track canBeBurnedIn */ + [newSubtitleSourceTrack setObject:[NSNumber numberWithInt:0] forKey:@"sourceTrackCanBeBurnedIn"]; + /* Subtitle Source track supportsForcedFlags */ + [newSubtitleSourceTrack setObject:[NSNumber numberWithInt:0] forKey:@"sourceTrackSupportsForcedFlags"]; + + [subtitleSourceArray addObject:newSubtitleSourceTrack]; + [newSubtitleSourceTrack autorelease]; + + /* Now create a new srt subtitle dictionary assuming the user wants to add it to their list + * Note: the subtitle array always has last entry for "None", so we need to replace its + * position in the array and tack a "None" track back on the end of the list */ + [subtitleArray removeObjectAtIndex:[subtitleArray count] - 1]; + + + NSMutableDictionary *newSubtitleSrtTrack = [[NSMutableDictionary alloc] init]; + /* Subtitle Source track popup index */ + if ([subtitleArray count] == 0) // we now have an empty array so this will be our first track + { + [newSubtitleSrtTrack setObject:[NSNumber numberWithInt:[subtitleSourceArray count] + 1] forKey:@"subtitleSourceTrackNum"]; + } + else + { + [newSubtitleSrtTrack setObject:[NSNumber numberWithInt:[subtitleSourceArray count]] forKey:@"subtitleSourceTrackNum"]; + } + + [newSubtitleSrtTrack setObject:[NSNumber numberWithInt:SRTSUB] forKey:@"sourceTrackType"]; + [newSubtitleSrtTrack setObject:[NSNumber numberWithInt:SRTSUB] forKey:@"subtitleSourceTrackType"]; + /* Subtitle Source track popup language */ + [newSubtitleSrtTrack setObject:displayname forKey:@"subtitleSourceTrackName"]; + /* Subtitle track forced state */ + [newSubtitleSrtTrack setObject:[NSNumber numberWithInt:0] forKey:@"subtitleTrackForced"]; + /* Subtitle track burned state */ + [newSubtitleSrtTrack setObject:[NSNumber numberWithInt:0] forKey:@"subtitleTrackBurned"]; + /* Subtitle track default state */ + [newSubtitleSrtTrack setObject:[NSNumber numberWithInt:0] forKey:@"subtitleTrackDefault"]; + /* Subtitle Source track canBeBurnedIn */ + [newSubtitleSrtTrack setObject:[NSNumber numberWithInt:0] forKey:@"subtitleSourceTrackCanBeBurnedIn"]; + /* Subtitle Source track supportsForcedFlags */ + [newSubtitleSrtTrack setObject:[NSNumber numberWithInt:0] forKey:@"subtitleSourceTrackSupportsForcedFlags"]; + + /* now the srt only info, Language, Chart Code and offset */ + [newSubtitleSrtTrack setObject:filePath forKey:@"subtitleSourceSrtFilePath"]; + [newSubtitleSrtTrack setObject:[NSNumber numberWithInt:languagesArrayDefIndex] forKey:@"subtitleTrackSrtLanguageIndex"]; + [newSubtitleSrtTrack setObject:[[languagesArray objectAtIndex:languagesArrayDefIndex] objectAtIndex:0] forKey:@"subtitleTrackSrtLanguageLong"]; + [newSubtitleSrtTrack setObject:[[languagesArray objectAtIndex:languagesArrayDefIndex] objectAtIndex:1] forKey:@"subtitleTrackSrtLanguageIso3"]; + + [newSubtitleSrtTrack setObject:[NSNumber numberWithInt:charCodeArrayDefIndex] forKey:@"subtitleTrackSrtCharCodeIndex"]; + [newSubtitleSrtTrack setObject:[charCodeArray objectAtIndex:charCodeArrayDefIndex] forKey:@"subtitleTrackSrtCharCode"]; + + [newSubtitleSrtTrack setObject:[NSNumber numberWithInt:0] forKey:@"subtitleTrackSrtOffset"]; + + + [subtitleArray addObject:newSubtitleSrtTrack]; + [newSubtitleSrtTrack release]; + + /* now add back the none track to the end of the array */ + [self addSubtitleTrack]; + + +} + +/* used to return the current subtitleArray to controller.m */ +- (NSMutableArray*) getSubtitleArray +{ + return subtitleArray; +} + +- (void)containerChanged:(int) newContainer +{ + container = newContainer; +} + +- (void)setNewSubtitles:(NSMutableArray*) newSubtitleArray +{ + /* Note: we need to look for external subtitles so it can be added to the source array track. + * Remember the source container subs are already loaded with resetTitle which is already called + * so any external sub sources need to be added to our source subs here + */ + + int i = 0; + NSEnumerator *enumerator = [newSubtitleArray objectEnumerator]; + id tempObject; + while ( tempObject = [enumerator nextObject] ) + { + /* We have an srt track */ + if ([[tempObject objectForKey:@"subtitleSourceTrackType"] intValue] == SRTSUB) + { + NSString *filePath = [tempObject objectForKey:@"subtitleSourceSrtFilePath"]; + /* Start replicate the add new srt code above */ + /* Create a new entry for the subtitle source array so it shows up in our subtitle source list */ + NSString *displayname = [filePath lastPathComponent];// grok an appropriate display name from the srt subtitle */ + /* create a dictionary of source subtitle information to store in our array */ + NSMutableDictionary *newSubtitleSourceTrack = [[NSMutableDictionary alloc] init]; + /* Subtitle Source track popup index */ + [newSubtitleSourceTrack setObject:[NSNumber numberWithInt:[subtitleSourceArray count]+1] forKey:@"sourceTrackNum"]; + /* Subtitle Source track name */ + [newSubtitleSourceTrack setObject:displayname forKey:@"sourceTrackName"]; + /* Subtitle Source track type (VobSub, Srt, etc.) */ + [newSubtitleSourceTrack setObject:[NSNumber numberWithInt:SRTSUB] forKey:@"sourceTrackType"]; + [newSubtitleSourceTrack setObject:[NSNumber numberWithInt:SRTSUB] forKey:@"subtitleSourceTrackType"]; + /* Subtitle Source file path */ + [newSubtitleSourceTrack setObject:filePath forKey:@"sourceSrtFilePath"]; + /* Subtitle Source track canBeBurnedIn */ + [newSubtitleSourceTrack setObject:[NSNumber numberWithInt:0] forKey:@"sourceTrackCanBeBurnedIn"]; + /* Subtitle Source track supportsForcedFlags */ + [newSubtitleSourceTrack setObject:[NSNumber numberWithInt:0] forKey:@"sourceTrackSupportsForcedFlags"]; + + [subtitleSourceArray addObject:newSubtitleSourceTrack]; + [newSubtitleSourceTrack autorelease]; + /* END replicate the add new srt code above */ + } + i++; + } + + + /*Set the subtitleArray to the newSubtitleArray */ + [subtitleArray setArray:newSubtitleArray]; +} + +#pragma mark - +#pragma mark Subtitle Table Delegate Methods +/* Table View delegate methods */ +/* Returns the number of tracks displayed + * NOTE: we return one more than the actual number of tracks + * specified as we always keep one track set to "None" which is ignored + * for setting up tracks, but is used to add tracks. + */ +- (int)numberOfRowsInTableView:(NSTableView *)aTableView +{ + if( fTitle == NULL || ![subtitleArray count]) + { + return 0; + } + else + { + return [subtitleArray count]; + } +} + +/* Used to tell the Table view which information is to be displayed per item */ +- (id)tableView:(NSTableView *)aTableView objectValueForTableColumn:(NSTableColumn *)aTableColumn row:(NSInteger)rowIndex +{ + NSString *cellEntry = @"__DATA ERROR__"; + + /* we setup whats displayed given the column identifier */ + if ([[aTableColumn identifier] isEqualToString:@"track"]) + { + /* 'track' is a popup of all available source subtitle tracks for the given title */ + NSPopUpButtonCell *cellTrackPopup = [[NSPopUpButtonCell alloc] init]; + [cellTrackPopup autorelease]; + /* Set the Popups properties */ + [cellTrackPopup setControlSize:NSSmallControlSize]; + [cellTrackPopup setFont:[NSFont systemFontOfSize:[NSFont systemFontSizeForControlSize:NSSmallControlSize]]]; + + + /* Add our initial "None" track which we use to add source tracks or remove tracks. + * "None" is always index 0. + */ + [[cellTrackPopup menu] addItemWithTitle: @"None" action: NULL keyEquivalent: @""]; + + /* Foreign Audio Search (index 1 in the popup) is only available for the first track */ + if (rowIndex == 0) + { + // TODO: hide the track when no force-able subtitles are present in the source + [[cellTrackPopup menu] addItemWithTitle:foreignAudioSearchTrackName + action:NULL + keyEquivalent:@""]; + } + + int i; + for(i = 0; i < [subtitleSourceArray count]; i++ ) + { + [[cellTrackPopup menu] addItemWithTitle: [[subtitleSourceArray objectAtIndex:i] objectForKey: @"sourceTrackName"] action: NULL keyEquivalent: @""]; + } + + + [aTableColumn setDataCell:cellTrackPopup]; + + } + else if ([[aTableColumn identifier] isEqualToString:@"forced"]) + { + /* 'forced' is a checkbox to determine if a given source track is only to be forced */ + NSButtonCell *cellForcedCheckBox = [[NSButtonCell alloc] init]; + [cellForcedCheckBox autorelease]; + [cellForcedCheckBox setButtonType:NSSwitchButton]; + [cellForcedCheckBox setImagePosition:NSImageOnly]; + [cellForcedCheckBox setAllowsMixedState:NO]; + [aTableColumn setDataCell:cellForcedCheckBox]; + + } + else if ([[aTableColumn identifier] isEqualToString:@"burned"]) + { + /* 'burned' is a checkbox to determine if a given source track is only to be burned */ + NSButtonCell *cellBurnedCheckBox = [[NSButtonCell alloc] init]; + [cellBurnedCheckBox autorelease]; + [cellBurnedCheckBox setButtonType:NSSwitchButton]; + [cellBurnedCheckBox setImagePosition:NSImageOnly]; + [cellBurnedCheckBox setAllowsMixedState:NO]; + [aTableColumn setDataCell:cellBurnedCheckBox]; + } + else if ([[aTableColumn identifier] isEqualToString:@"default"]) + { + NSButtonCell *cellDefaultCheckBox = [[NSButtonCell alloc] init]; + [cellDefaultCheckBox autorelease]; + [cellDefaultCheckBox setButtonType:NSSwitchButton]; + [cellDefaultCheckBox setImagePosition:NSImageOnly]; + [cellDefaultCheckBox setAllowsMixedState:NO]; + [aTableColumn setDataCell:cellDefaultCheckBox]; + } + /* These next three columns only apply to srt's. they are disabled for source subs */ + else if ([[aTableColumn identifier] isEqualToString:@"srt_lang"]) + { + /* 'srt_lang' is a popup of commonly used languages to be matched to the source srt file */ + NSPopUpButtonCell *cellSrtLangPopup = [[NSPopUpButtonCell alloc] init]; + [cellSrtLangPopup autorelease]; + /* Set the Popups properties */ + [cellSrtLangPopup setControlSize:NSSmallControlSize]; + [cellSrtLangPopup setFont:[NSFont systemFontOfSize:[NSFont systemFontSizeForControlSize:NSSmallControlSize]]]; + /* list our languages as per the languagesArray */ + int i; + for(i = 0; i < [languagesArray count]; i++ ) + { + [[cellSrtLangPopup menu] addItemWithTitle: [[languagesArray objectAtIndex:i] objectAtIndex:0] action: NULL keyEquivalent: @""]; + } + [aTableColumn setDataCell:cellSrtLangPopup]; + } + else if ([[aTableColumn identifier] isEqualToString:@"srt_charcode"]) + { + /* 'srt_charcode' is a popup of commonly used character codes to be matched to the source srt file */ + NSPopUpButtonCell *cellSrtCharCodePopup = [[NSPopUpButtonCell alloc] init]; + [cellSrtCharCodePopup autorelease]; + /* Set the Popups properties */ + [cellSrtCharCodePopup setControlSize:NSSmallControlSize]; + [cellSrtCharCodePopup setFont:[NSFont systemFontOfSize:[NSFont systemFontSizeForControlSize:NSSmallControlSize]]]; + /* list our character codes, as per charCodeArray */ + + int i; + for(i = 0; i < [charCodeArray count]; i++ ) + { + [[cellSrtCharCodePopup menu] addItemWithTitle: [charCodeArray objectAtIndex:i] action: NULL keyEquivalent: @""]; + } + [aTableColumn setDataCell:cellSrtCharCodePopup]; + + } + else if ([[aTableColumn identifier] isEqualToString:@"srt_offset"]) + { + if ([[subtitleArray objectAtIndex:rowIndex] objectForKey:@"subtitleTrackSrtOffset"]) + { + cellEntry = [NSString stringWithFormat:@"%d",[[[subtitleArray objectAtIndex:rowIndex] objectForKey:@"subtitleTrackSrtOffset"] intValue]]; + } + else + { + cellEntry = [NSString stringWithFormat:@"%d",0]; + } + } + else + { + cellEntry = nil; + } + + return cellEntry; +} + +/* Called whenever a widget in the table is edited or changed, we use it to record the change in the controlling array + * including removing and adding new tracks via the "None" ("track" index of 0) */ +- (void)tableView:(NSTableView *)aTableView setObjectValue:(id)anObject forTableColumn:(NSTableColumn *)aTableColumn row:(NSInteger)rowIndex +{ + + if ([[aTableColumn identifier] isEqualToString:@"track"]) + { + [[subtitleArray objectAtIndex:rowIndex] setObject:[NSNumber numberWithInt:[anObject intValue]] forKey:@"subtitleSourceTrackNum"]; + /* Set the array to track if we are vobsub (picture sub) */ + if ([anObject intValue] != 0) + { + /* The first row has an additional track (Foreign Audio Search) */ + int sourceSubtitleIndex = [anObject intValue] - 1 - (rowIndex == 0); + + if(rowIndex == 0 && [anObject intValue] == 1) + { + /* + * we are foreign lang search, which is inherently bitmap + * + * since it can be either VOBSUB or PGS and the latter can't be + * passed through to MP4, we need to know whether there are any + * PGS tracks in the source - otherwise we can just set the + * source track type to VOBSUB + */ + int subtitleTrackType = VOBSUB; + if ([foreignAudioSearchTrackName rangeOfString: + [NSString stringWithUTF8String: + hb_subsource_name(PGSSUB)]].location != NSNotFound) + { + subtitleTrackType = PGSSUB; + } + // now set the track type + [[subtitleArray objectAtIndex:rowIndex] setObject:[NSNumber numberWithInt:subtitleTrackType] forKey:@"subtitleSourceTrackType"]; + [[subtitleArray objectAtIndex:rowIndex] setObject:[NSNumber numberWithInt:1] forKey:@"subtitleSourceTrackCanBeBurnedIn"]; + [[subtitleArray objectAtIndex:rowIndex] setObject:[NSNumber numberWithInt:1] forKey:@"subtitleSourceTrackSupportsForcedFlags"]; + // foreign lang search is most useful when combined w/Forced Only - make it default + [[subtitleArray objectAtIndex:rowIndex] setObject:[NSNumber numberWithInt:1] forKey:@"subtitleTrackForced"]; + } + /* check to see if we are an srt, in which case set our file path and source track type kvp's*/ + else if ([[[subtitleSourceArray objectAtIndex:sourceSubtitleIndex] objectForKey:@"sourceTrackType"] intValue] == SRTSUB) + { + [[subtitleArray objectAtIndex:rowIndex] setObject:[NSNumber numberWithInt:SRTSUB] + forKey:@"subtitleSourceTrackType"]; + [[subtitleArray objectAtIndex:rowIndex] setObject:[[subtitleSourceArray objectAtIndex:sourceSubtitleIndex] objectForKey:@"sourceSrtFilePath"] + forKey:@"subtitleSourceSrtFilePath"]; + } + else + { + [[subtitleArray objectAtIndex:rowIndex] setObject:[[subtitleSourceArray objectAtIndex:sourceSubtitleIndex] objectForKey:@"sourceTrackType"] + forKey:@"subtitleSourceTrackType"]; + [[subtitleArray objectAtIndex:rowIndex] setObject:[[subtitleSourceArray objectAtIndex:sourceSubtitleIndex] objectForKey:@"sourceTrackCanBeBurnedIn"] + forKey:@"subtitleSourceTrackCanBeBurnedIn"]; + [[subtitleArray objectAtIndex:rowIndex] setObject:[[subtitleSourceArray objectAtIndex:sourceSubtitleIndex] objectForKey:@"sourceTrackSupportsForcedFlags"] + forKey:@"subtitleSourceTrackSupportsForcedFlags"]; + } + + if([[[subtitleArray objectAtIndex:rowIndex] objectForKey:@"subtitleSourceTrackCanBeBurnedIn"] intValue] == 0) + { + /* the source track cannot be burned in, so uncheck the widget */ + [[subtitleArray objectAtIndex:rowIndex] setObject:[NSNumber numberWithInt:0] forKey:@"subtitleTrackBurned"]; + } + + if([[[subtitleArray objectAtIndex:rowIndex] objectForKey:@"subtitleSourceTrackSupportsForcedFlags"] intValue] == 0) + { + /* the source track does not support forced flags, so uncheck the widget */ + [[subtitleArray objectAtIndex:rowIndex] setObject:[NSNumber numberWithInt:0] forKey:@"subtitleTrackForced"]; + } + } + } + else if ([[aTableColumn identifier] isEqualToString:@"forced"]) + { + [[subtitleArray objectAtIndex:rowIndex] setObject:[NSNumber numberWithInt:[anObject intValue]] forKey:@"subtitleTrackForced"]; + } + else if ([[aTableColumn identifier] isEqualToString:@"burned"]) + { + [[subtitleArray objectAtIndex:rowIndex] setObject:[NSNumber numberWithInt:[anObject intValue]] forKey:@"subtitleTrackBurned"]; + if([anObject intValue] == 1) + { + /* Burned In and Default are mutually exclusive */ + [[subtitleArray objectAtIndex:rowIndex] setObject:[NSNumber numberWithInt:0] forKey:@"subtitleTrackDefault"]; + } + /* now we need to make sure no other tracks are set to burned if we have set burned */ + if ([anObject intValue] == 1) + { + int i = 0; + NSEnumerator *enumerator = [subtitleArray objectEnumerator]; + id tempObject; + while ( tempObject = [enumerator nextObject] ) + { + if (i != rowIndex ) + { + [tempObject setObject:[NSNumber numberWithInt:0] forKey:@"subtitleTrackBurned"]; + } + i++; + } + } + } + else if ([[aTableColumn identifier] isEqualToString:@"default"]) + { + [[subtitleArray objectAtIndex:rowIndex] setObject:[NSNumber numberWithInt:[anObject intValue]] forKey:@"subtitleTrackDefault"]; + if([anObject intValue] == 1) + { + /* Burned In and Default are mutually exclusive */ + [[subtitleArray objectAtIndex:rowIndex] setObject:[NSNumber numberWithInt:0] forKey:@"subtitleTrackBurned"]; + } + /* now we need to make sure no other tracks are set to default */ + if ([anObject intValue] == 1) + { + int i = 0; + NSEnumerator *enumerator = [subtitleArray objectEnumerator]; + id tempObject; + while ( tempObject = [enumerator nextObject] ) + { + if (i != rowIndex) + { + [tempObject setObject:[NSNumber numberWithInt:0] forKey:@"subtitleTrackDefault"]; + } + i++; + } + } + + } + /* These next three columns only apply to srt's. they are disabled for source subs */ + else if ([[aTableColumn identifier] isEqualToString:@"srt_lang"]) + { + + [[subtitleArray objectAtIndex:rowIndex] setObject:[NSNumber numberWithInt:[anObject intValue]] forKey:@"subtitleTrackSrtLanguageIndex"]; + [[subtitleArray objectAtIndex:rowIndex] setObject:[[languagesArray objectAtIndex:[anObject intValue]] objectAtIndex:0] forKey:@"subtitleTrackSrtLanguageLong"]; + [[subtitleArray objectAtIndex:rowIndex] setObject:[[languagesArray objectAtIndex:[anObject intValue]] objectAtIndex:1] forKey:@"subtitleTrackSrtLanguageIso3"]; + + } + else if ([[aTableColumn identifier] isEqualToString:@"srt_charcode"]) + { + /* charCodeArray */ + [[subtitleArray objectAtIndex:rowIndex] setObject:[NSNumber numberWithInt:[anObject intValue]] forKey:@"subtitleTrackSrtCharCodeIndex"]; + [[subtitleArray objectAtIndex:rowIndex] setObject:[charCodeArray objectAtIndex:[anObject intValue]] forKey:@"subtitleTrackSrtCharCode"]; + } + else if ([[aTableColumn identifier] isEqualToString:@"srt_offset"]) + { + [[subtitleArray objectAtIndex:rowIndex] setObject:anObject forKey:@"subtitleTrackSrtOffset"]; + } + + + /* now lets do a bit of logic to add / remove tracks as necessary via the "None" track (index 0) */ + if ([[aTableColumn identifier] isEqualToString:@"track"]) + { + + /* Since currently no quicktime based playback devices support soft vobsubs in mp4, we make sure "burned in" is specified + * by default to avoid massive confusion and anarchy. However we also want to guard against multiple burned in subtitle tracks + * as libhb would ignore all but the first one anyway. Plus it would probably be stupid. + */ + if (container == HB_MUX_MP4 && [anObject intValue] != 0) + { + if ([[[subtitleArray objectAtIndex:rowIndex] objectForKey:@"subtitleSourceTrackType"] intValue] == VOBSUB) + { + /* lets see if there are currently any burned in subs specified */ + NSEnumerator *enumerator = [subtitleArray objectEnumerator]; + id tempObject; + BOOL subtrackBurnedInFound = NO; + while ( tempObject = [enumerator nextObject] ) + { + if ([[tempObject objectForKey:@"subtitleTrackBurned"] intValue] == 1) + { + subtrackBurnedInFound = YES; + } + } + /* if we have no current vobsub set to burn it in ... burn it in by default */ + if (!subtrackBurnedInFound) + { + [[subtitleArray objectAtIndex:rowIndex] setObject:[NSNumber numberWithInt:1] forKey:@"subtitleTrackBurned"]; + /* Burned In and Default are mutually exclusive */ + [[subtitleArray objectAtIndex:rowIndex] setObject:[NSNumber numberWithInt:0] forKey:@"subtitleTrackDefault"]; + } + } + } + + /* We use the track popup index number (presumes index 0 is "None" which is ignored and only used to remove tracks if need be) + * to determine whether to 1 modify an existing track, 2. add a new empty "None" track or 3. remove an existing track. + */ + + if ([anObject intValue] != 0 && rowIndex == [subtitleArray count] - 1) // if we have a last track which != "None" + { + /* add a new empty None track */ + [self addSubtitleTrack]; + + } + else if ([anObject intValue] == 0 && rowIndex != ([subtitleArray count] -1))// if this track is set to "None" and not the last track displayed + { + /* we know the user chose to remove this track by setting it to None, so remove it from the array */ + /* However,if this is the first track we have to reset the selected index of the next track by + 1, since it will now become + * the first track, which has to account for the extra "Foreign Language Search" index. */ + if (rowIndex == 0 && [[[subtitleArray objectAtIndex: 1] objectForKey: @"subtitleSourceTrackNum"] intValue] != 0) + { + /* get the index of the selection in row one (which is track two) */ + int trackOneSelectedIndex = [[[subtitleArray objectAtIndex: 1] objectForKey: @"subtitleSourceTrackNum"] intValue]; + /* increment the index of the subtitle menu item by one, to account for Foreign Language Search which is unique to the first track */ + [[subtitleArray objectAtIndex: 1] setObject:[NSNumber numberWithInt:trackOneSelectedIndex + 1] forKey:@"subtitleSourceTrackNum"]; + } + /* now that we have made the adjustment for track one (index 0) go ahead and delete the track */ + [subtitleArray removeObjectAtIndex: rowIndex]; + } + + + + } + + [aTableView reloadData]; +} + + +/* Gives fine grained control over the final drawing of the widget, including widget status via the controlling array */ +- (void)tableView:(NSTableView *)aTableView willDisplayCell:(id)aCell forTableColumn:(NSTableColumn *)aTableColumn row:(NSInteger)rowIndex +{ + /* we setup whats displayed given the column identifier */ + if ([[aTableColumn identifier] isEqualToString:@"track"]) + { + /* Set the index of the recorded source track here */ + [aCell selectItemAtIndex:[[[subtitleArray objectAtIndex:rowIndex] objectForKey:@"subtitleSourceTrackNum"] intValue]]; + /* now that we have actually selected our track, we can grok the titleOfSelectedItem for that track */ + [[subtitleArray objectAtIndex:rowIndex] setObject:[[aTableColumn dataCellForRow:rowIndex] titleOfSelectedItem] forKey:@"subtitleSourceTrackName"]; + + } + else + { + + [aCell setAlignment:NSCenterTextAlignment]; + /* If the Track is None, we disable the other cells as None is an empty track */ + if ([[[subtitleArray objectAtIndex:rowIndex] objectForKey:@"subtitleSourceTrackNum"] intValue] == 0) + { + [aCell setState:0]; + [aCell setEnabled:NO]; + } + else + { + /* Since we have a valid track, we go ahead and enable the rest of the widgets and set them according to the controlling array */ + [aCell setEnabled:YES]; + } + + if ([[aTableColumn identifier] isEqualToString:@"forced"]) + { + [aCell setState:[[[subtitleArray objectAtIndex:rowIndex] objectForKey:@"subtitleTrackForced"] intValue]]; + /* Disable the "Forced Only" checkbox if a) the track is "None" or b) the subtitle track doesn't support forced flags */ + if (![[[subtitleArray objectAtIndex:rowIndex] objectForKey:@"subtitleSourceTrackNum"] intValue] || + ![[[subtitleArray objectAtIndex:rowIndex] objectForKey:@"subtitleSourceTrackSupportsForcedFlags"] intValue]) + { + [aCell setEnabled:NO]; + } + else + { + [aCell setEnabled:YES]; + } + } + else if ([[aTableColumn identifier] isEqualToString:@"burned"]) + { + [aCell setState:[[[subtitleArray objectAtIndex:rowIndex] objectForKey:@"subtitleTrackBurned"] intValue]]; + /* + * Disable the "Burned In" checkbox if: + * a) the track is "None" OR + * b) the subtitle track can't be burned in OR + * c) the subtitle track can't be passed through (e.g. PGS w/MP4) + */ + if (![[[subtitleArray objectAtIndex:rowIndex] objectForKey:@"subtitleSourceTrackNum"] intValue] || + ![[[subtitleArray objectAtIndex:rowIndex] objectForKey:@"subtitleSourceTrackCanBeBurnedIn"] intValue] || + !hb_subtitle_can_pass([[[subtitleArray objectAtIndex:rowIndex] objectForKey:@"subtitleSourceTrackType"] intValue], container)) + { + [aCell setEnabled:NO]; + } + else + { + [aCell setEnabled:YES]; + } + } + else if ([[aTableColumn identifier] isEqualToString:@"default"]) + { + /* + * Disable the "Default" checkbox if: + * a) the track is "None" OR + * b) the subtitle track can't be passed through (e.g. PGS w/MP4) + */ + if (![[[subtitleArray objectAtIndex:rowIndex] objectForKey:@"subtitleSourceTrackNum"] intValue] || + !hb_subtitle_can_pass([[[subtitleArray objectAtIndex:rowIndex] objectForKey:@"subtitleSourceTrackType"] intValue], container)) + { + [aCell setState:NSOffState]; + [aCell setEnabled:NO]; + } + else + { + [aCell setState:[[[subtitleArray objectAtIndex:rowIndex] objectForKey:@"subtitleTrackDefault"] intValue]]; + [aCell setEnabled:YES]; + } + } + /* These next three columns only apply to srt's. they are disabled for source subs */ + else if ([[aTableColumn identifier] isEqualToString:@"srt_lang"]) + { + /* We have an srt file so set the track type (Source or SRT, and the srt file path ) kvp's*/ + if ([[[subtitleArray objectAtIndex:rowIndex] objectForKey:@"subtitleSourceTrackType"] intValue] == SRTSUB) + { + [aCell setEnabled:YES]; + if([[subtitleArray objectAtIndex:rowIndex] objectForKey:@"subtitleTrackSrtLanguageIndex"]) + { + [aCell selectItemAtIndex:[[[subtitleArray objectAtIndex:rowIndex] objectForKey:@"subtitleTrackSrtLanguageIndex"] intValue]]; + } + else + { + [aCell selectItemAtIndex:languagesArrayDefIndex]; // English + [[subtitleArray objectAtIndex:rowIndex] setObject:[NSNumber numberWithInt:languagesArrayDefIndex] forKey:@"subtitleTrackSrtLanguageIndex"]; + [[subtitleArray objectAtIndex:rowIndex] setObject:[[languagesArray objectAtIndex:languagesArrayDefIndex] objectAtIndex:0] forKey:@"subtitleTrackSrtLanguageLong"]; + [[subtitleArray objectAtIndex:rowIndex] setObject:[[languagesArray objectAtIndex:languagesArrayDefIndex] objectAtIndex:1] forKey:@"subtitleTrackSrtLanguageIso3"]; + + } + } + else + { + [aCell setEnabled:NO]; + } + } + else if ([[aTableColumn identifier] isEqualToString:@"srt_charcode"]) + { + /* We have an srt file so set the track type (Source or SRT, and the srt file path ) kvp's*/ + if ([[[subtitleArray objectAtIndex:rowIndex] objectForKey:@"subtitleSourceTrackType"] intValue] == SRTSUB) + { + [aCell setEnabled:YES]; + if ([[subtitleArray objectAtIndex:rowIndex] objectForKey:@"subtitleTrackSrtCharCodeIndex"]) + { + [aCell selectItemAtIndex:[[[subtitleArray objectAtIndex:rowIndex] objectForKey:@"subtitleTrackSrtCharCodeIndex"] intValue]]; + } + else + { + [aCell selectItemAtIndex:charCodeArrayDefIndex]; // ISO-8859-1 + [[subtitleArray objectAtIndex:rowIndex] setObject:[NSNumber numberWithInt:charCodeArrayDefIndex] forKey:@"subtitleTrackSrtCharCodeIndex"]; + [[subtitleArray objectAtIndex:rowIndex] setObject:[charCodeArray objectAtIndex:charCodeArrayDefIndex] forKey:@"subtitleTrackSrtCharCode"]; + } + } + else + { + [aCell setEnabled:NO]; + } + } + else if ([[aTableColumn identifier] isEqualToString:@"srt_offset"]) + { + if ([[[subtitleArray objectAtIndex:rowIndex] objectForKey:@"subtitleSourceTrackType"] intValue] == SRTSUB) + { + [aCell setEnabled:YES]; + } + else + { + [aCell setEnabled:NO]; + } + } + + /* + * Let's check whether any subtitles in the list cannot be passed through. + * Set the first of any such subtitles to burned-in, remove the others. + */ + id tempObject; + int subtitleTrackType; + BOOL convertToBurnInUsed = NO; + NSMutableArray *tracksToDelete = [[NSMutableArray alloc] init]; + NSEnumerator *enumerator = [subtitleArray objectEnumerator]; + /* convert any non-None incompatible tracks to burn-in or remove them */ + while ((tempObject = [enumerator nextObject]) && + [tempObject objectForKey:@"subtitleSourceTrackType"]) + { + subtitleTrackType = [[tempObject objectForKey:@"subtitleSourceTrackType"] intValue]; + if (!hb_subtitle_can_pass(subtitleTrackType, container)) + { + if (convertToBurnInUsed == NO) + { + /* we haven't set any track to burned-in yet, so we can */ + [tempObject setObject:[NSNumber numberWithInt:1] forKey:@"subtitleTrackBurned"]; + convertToBurnInUsed = YES; //remove any additional tracks + } + else + { + /* we already have a burned-in track, we must remove others */ + [tracksToDelete addObject:tempObject]; + } + } + } + /* if we converted a track to burned-in, unset it for tracks that support passthru */ + if (convertToBurnInUsed == YES) + { + enumerator = [subtitleArray objectEnumerator]; + while ((tempObject = [enumerator nextObject]) && + [tempObject objectForKey:@"subtitleSourceTrackType"]) + { + subtitleTrackType = [[tempObject objectForKey:@"subtitleSourceTrackType"] intValue]; + if (hb_subtitle_can_pass(subtitleTrackType, container)) + { + [tempObject setObject:[NSNumber numberWithInt:0] forKey:@"subtitleTrackBurned"]; + } + } + } + /* this is where the actual removal takes place */ + if ([tracksToDelete count] > 0) + { + [subtitleArray removeObjectsInArray:tracksToDelete]; + [aTableView reloadData]; + /* this must be called after reloadData so as to not block the UI */ + [[NSAlert alertWithMessageText:@"Subtitle tack(s) removed" + defaultButton:@"OK" + alternateButton:nil + otherButton:nil + informativeTextWithFormat:@"%d subtitle %@ could neither be converted to burn-in nor passed through", + [tracksToDelete count], + [tracksToDelete count] > 1 ? @"tracks" : @"track"] runModal]; + } + [tracksToDelete release]; + } +} + + +@end Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/macosx/i18n/de.strings and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/macosx/i18n/de.strings differ Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/macosx/i18n/es.strings and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/macosx/i18n/es.strings differ Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/macosx/i18n/fr.strings and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/macosx/i18n/fr.strings differ Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/macosx/i18n/it.strings and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/macosx/i18n/it.strings differ Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/macosx/i18n/ja.strings and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/macosx/i18n/ja.strings differ Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/macosx/i18n/Localizable.strings and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/macosx/i18n/Localizable.strings differ Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/macosx/i18n/nl.strings and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/macosx/i18n/nl.strings differ Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/macosx/i18n/pl.strings and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/macosx/i18n/pl.strings differ diff -Nru handbrake-0.9.9+dfsg/macosx/i18n/pt.strings handbrake-0.9.9+ppa1/macosx/i18n/pt.strings --- handbrake-0.9.9+dfsg/macosx/i18n/pt.strings 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/i18n/pt.strings 2007-02-11 20:00:15.000000000 +0000 @@ -0,0 +1,183 @@ +/* No comment provided by engineer. */ +"2-pass encoding" = "Codificar em 2 passagens"; + +/* No comment provided by engineer. */ +"Audio" = "Audio"; + +/* No comment provided by engineer. */ +"Autocrop" = "Cortado"; + +/* No comment provided by engineer. */ +"AVI file / H264 video / MP3 audio" = "AVI file / H264 video / MP3 audio"; + +/* No comment provided by engineer. */ +"AVI file / MPEG-4 video / MP3 audio" = "AVI file / MPEG-4 video / MP3 audio"; + +/* No comment provided by engineer. */ +"Bitrate" = "Bitrate"; + +/* No comment provided by engineer. */ +"Bitrate (kbps)" = "Bitrate (kbps)"; + +/* No comment provided by engineer. */ +"Bottom cropping" = "Cortado do final"; + +/* No comment provided by engineer. */ +"Browse" = "Visualizar"; + +/* No comment provided by engineer. */ +"Cancel" = "Cancelar"; + +/* No comment provided by engineer. */ +"Cancel - Are you sure?" = "Cancelar - Tem a certeza?"; + +/* No comment provided by engineer. */ +"Canceled." = "Cancelado."; + +/* No comment provided by engineer. */ +"Close" = "Fechar"; + +/* No comment provided by engineer. */ +"Crop & Scale..." = "Cortar e Redimensionar..."; + +/* No comment provided by engineer. */ +"Custom (kbps)" = " Normal em (kbps)"; + +/* No comment provided by engineer. */ +"Deinterlace picture" = "Deinterlace imagem"; + +/* No comment provided by engineer. */ +"Detected volume" = "Volume detectado"; + +/* No comment provided by engineer. */ +"Do you want to overwrite %@?" = "Quer reescrever %@?"; + +/* No comment provided by engineer. */ +"DVD Folder" = "Pasta do DVD"; + +/* No comment provided by engineer. */ +"DVD title" = "Titulo do DVD"; + +/* No comment provided by engineer. */ +"Encoding won't be recoverable." = "A codificacao nao pode ser recuperada."; + +/* No comment provided by engineer. */ +"Encoding: %.2f %% (pass %d of %d)" = "Codificao em progresso: %.2f %% (passagem %d of %d)"; + +/* No comment provided by engineer. */ +"File" = "Ficheiro"; + +/* No comment provided by engineer. */ +"File already exists" = "O ficheiro ja existe"; + +/* No comment provided by engineer. */ +"Final size: %dx%d" = "Tamanho do ficheiro: %dx%d"; + +/* No comment provided by engineer. */ +"General" = "Geral"; + +/* No comment provided by engineer. */ +"Invalid secondary language" = "Secunda lingua invalida"; + +/* No comment provided by engineer. */ +"Invalid video bitrate" = "Video bitrate invalido"; + +/* No comment provided by engineer. */ +"Invalid volume, try again" = "volume invalido, tente novamente"; + +/* No comment provided by engineer. */ +"Language 1" = "Lingua 1"; + +/* No comment provided by engineer. */ +"Language 2 (optional)" = "Lingua 2 (optional)"; + +/* No comment provided by engineer. */ +"Left cropping" = "Cortado a esquerda"; + +/* No comment provided by engineer. */ +"MP4 file / MPEG-4 video / AAC audio" = "MP4 file / MPEG-4 video / AAC audio"; + +/* No comment provided by engineer. */ +"MPEG-4 encoder" = "MPEG-4 encoder"; + +/* No comment provided by engineer. */ +"Next" = "Proximo"; + +/* No comment provided by engineer. */ +"No" = "Nao"; + +/* No comment provided by engineer. */ +"None" = "Nao existente"; + +/* No comment provided by engineer. */ +"OGM file / MPEG-4 video / Vorbis audio" = "OGM file / MPEG-4 video / Vorbis audio"; + +/* No comment provided by engineer. */ +"Ooops" = "Bolas"; + +/* No comment provided by engineer. */ +"Open" = "Aberto"; + +/* No comment provided by engineer. */ +"Opening device..." = "Abertura em curso..."; + +/* No comment provided by engineer. */ +"Output format" = "Formato de Output"; + +/* No comment provided by engineer. */ +"Pause" = "Pausa"; + +/* No comment provided by engineer. */ +"Picture width" = "Tamanho da figura"; + +/* No comment provided by engineer. */ +"Previous" = "Anterior"; + +/* No comment provided by engineer. */ +"Resume" = "Resumo"; + +/* No comment provided by engineer. */ +"Right cropping" = "Cortado a direita"; + +/* No comment provided by engineer. */ +"Rip" = "Rip"; + +/* No comment provided by engineer. */ +"Rip completed." = "Rip completado."; + +/* No comment provided by engineer. */ +"Scanning title %d of %d..." = "Exminar o titulo %d of %d..."; + +/* No comment provided by engineer. */ +"Select a DVD:" = "Selecione o DVD:"; + +/* No comment provided by engineer. */ +"Speed: %.2f fps (avg %.2f fps), %02dh%02dm%02ds remaining" = "Velocidade: %.2f fps (avg %.2f fps), %02dh%02dm%02ds restante"; + +/* No comment provided by engineer. */ +"Target size (MB)" = "Tamanho a atingir (MB)"; + +/* No comment provided by engineer. */ +"Top cropping" = "Cortado ao topo"; + +/* No comment provided by engineer. */ +"Useless OpenGL effects" = "Efeitos inuteis do OpenGL"; + +/* No comment provided by engineer. */ +"Video" = "Video"; + +/* No comment provided by engineer. */ +"Video bitrate is too high." = "Video bitrate e muito alto"; + +/* No comment provided by engineer. */ +"Video bitrate is too low." = "Video bitrate e muito baixo."; + +/* No comment provided by engineer. */ +"Welcome to MediaFork" = "Bemvindo ao MediaFork"; + +/* No comment provided by engineer. */ +"Yes" = "Sim"; + +/* No comment provided by engineer. */ +"You can't encode the same audio track twice." = "Nao se pode codificar a mesma facha de audio duas vezes."; + Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/macosx/i18n/ru.strings and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/macosx/i18n/ru.strings differ Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/macosx/icons/activity@2x.png and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/macosx/icons/activity@2x.png differ Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/macosx/icons/activity.png and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/macosx/icons/activity.png differ Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/macosx/icons/addqueue@2x.png and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/macosx/icons/addqueue@2x.png differ Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/macosx/icons/addqueue.png and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/macosx/icons/addqueue.png differ Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/macosx/icons/advanced@2x.png and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/macosx/icons/advanced@2x.png differ Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/macosx/icons/advanced.png and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/macosx/icons/advanced.png differ Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/macosx/icons/audio@2x.png and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/macosx/icons/audio@2x.png differ Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/macosx/icons/audio.png and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/macosx/icons/audio.png differ Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/macosx/icons/DeleteHighlight.png and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/macosx/icons/DeleteHighlight.png differ Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/macosx/icons/DeleteHighlightPressed.png and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/macosx/icons/DeleteHighlightPressed.png differ Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/macosx/icons/Delete.png and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/macosx/icons/Delete.png differ Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/macosx/icons/DeletePressed.png and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/macosx/icons/DeletePressed.png differ Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/macosx/icons/encode@2x.png and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/macosx/icons/encode@2x.png differ Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/macosx/icons/EncodeCanceled.png and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/macosx/icons/EncodeCanceled.png differ Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/macosx/icons/EncodeComplete.png and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/macosx/icons/EncodeComplete.png differ Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/macosx/icons/encode.png and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/macosx/icons/encode.png differ Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/macosx/icons/EncodeWorking0.png and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/macosx/icons/EncodeWorking0.png differ Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/macosx/icons/EncodeWorking1.png and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/macosx/icons/EncodeWorking1.png differ Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/macosx/icons/EncodeWorking2.png and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/macosx/icons/EncodeWorking2.png differ Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/macosx/icons/EncodeWorking3.png and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/macosx/icons/EncodeWorking3.png differ Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/macosx/icons/EncodeWorking4.png and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/macosx/icons/EncodeWorking4.png differ Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/macosx/icons/EncodeWorking5.png and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/macosx/icons/EncodeWorking5.png differ Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/macosx/icons/JobPassFirstSmall.png and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/macosx/icons/JobPassFirstSmall.png differ Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/macosx/icons/JobPassSecondSmall.png and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/macosx/icons/JobPassSecondSmall.png differ Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/macosx/icons/JobPassSubtitleSmall.png and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/macosx/icons/JobPassSubtitleSmall.png differ Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/macosx/icons/JobPassUnknownSmall.png and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/macosx/icons/JobPassUnknownSmall.png differ Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/macosx/icons/JobSmall.png and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/macosx/icons/JobSmall.png differ Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/macosx/icons/next-p.pdf and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/macosx/icons/next-p.pdf differ Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/macosx/icons/pauseencode@2x.png and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/macosx/icons/pauseencode@2x.png differ Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/macosx/icons/pauseencode.png and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/macosx/icons/pauseencode.png differ Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/macosx/icons/pause-p.pdf and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/macosx/icons/pause-p.pdf differ Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/macosx/icons/picturesettings@2x.png and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/macosx/icons/picturesettings@2x.png differ Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/macosx/icons/picturesettings.png and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/macosx/icons/picturesettings.png differ Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/macosx/icons/play-p.pdf and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/macosx/icons/play-p.pdf differ Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/macosx/icons/presets@2x.png and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/macosx/icons/presets@2x.png differ Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/macosx/icons/presets.png and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/macosx/icons/presets.png differ Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/macosx/icons/preview@2x.png and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/macosx/icons/preview@2x.png differ Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/macosx/icons/preview.png and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/macosx/icons/preview.png differ Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/macosx/icons/prev-p.pdf and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/macosx/icons/prev-p.pdf differ Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/macosx/icons/RevealHighlight.png and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/macosx/icons/RevealHighlight.png differ Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/macosx/icons/RevealHighlightPressed.png and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/macosx/icons/RevealHighlightPressed.png differ Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/macosx/icons/Reveal.png and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/macosx/icons/Reveal.png differ Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/macosx/icons/RevealPressed.png and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/macosx/icons/RevealPressed.png differ Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/macosx/icons/settings@2x.png and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/macosx/icons/settings@2x.png differ Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/macosx/icons/settings.png and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/macosx/icons/settings.png differ Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/macosx/icons/showqueue@2x.png and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/macosx/icons/showqueue@2x.png differ Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/macosx/icons/showqueue.png and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/macosx/icons/showqueue.png differ Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/macosx/icons/source@2x.png and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/macosx/icons/source@2x.png differ Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/macosx/icons/source.png and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/macosx/icons/source.png differ Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/macosx/icons/stopencode@2x.png and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/macosx/icons/stopencode@2x.png differ Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/macosx/icons/stopencode.png and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/macosx/icons/stopencode.png differ diff -Nru handbrake-0.9.9+dfsg/macosx/Info.plist.m4 handbrake-0.9.9+ppa1/macosx/Info.plist.m4 --- handbrake-0.9.9+dfsg/macosx/Info.plist.m4 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/Info.plist.m4 2013-04-21 13:51:46.000000000 +0000 @@ -0,0 +1,62 @@ +dnl +dnl +dnl +changequote(<<, >>)dnl +include(<>)dnl +dnl +dnl +dnl + + + + + CFBundleDevelopmentRegion + en + CFBundleDisplayName + __HB_name + CFBundleDocumentTypes + + + CFBundleTypeExtensions + + * + + CFBundleTypeName + All files + CFBundleTypeRole + Viewer + + + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleGetInfoString + __HB_build + CFBundleIconFile + ${EXECUTABLE_NAME} + CFBundleIdentifier + fr.handbrake.${PRODUCT_NAME:rfc1034identifier} + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${PRODUCT_NAME} + CFBundlePackageType + APPL + CFBundleShortVersionString + __HB_version __BUILD_arch + CFBundleSignature + ???? + CFBundleVersion + __HB_build + LSMinimumSystemVersion + ${MACOSX_DEPLOYMENT_TARGET} + NSHumanReadableCopyright + Copyright © 2003-2013 __HB_name Developers. +All rights reserved. + NSMainNibFile + MainMenu + NSPrincipalClass + NSApplication + SUFeedURL + __HB_url_appcast + + diff -Nru handbrake-0.9.9+dfsg/macosx/InstantHandBrake/DeviceController.h handbrake-0.9.9+ppa1/macosx/InstantHandBrake/DeviceController.h --- handbrake-0.9.9+dfsg/macosx/InstantHandBrake/DeviceController.h 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/InstantHandBrake/DeviceController.h 2008-01-30 12:28:55.000000000 +0000 @@ -0,0 +1,28 @@ +// +// DeviceController.h +// InstantHandBrake +// +// Created by Damiano Galassi on 23/01/08. +// This file is part of the HandBrake source code. +// Homepage: . +// It may be used under the terms of the GNU General Public License. +// +// + +#import +#import "device.h" + +@interface DeviceController : NSObject { + NSMutableArray *devicesArray; + NSString *appSupportPath; +} + +- (id)init; +- (BOOL) loadDevices; +- (BOOL) loadBuiltInDevices; +- (id)populateList; +- (NSArray *) devicesList; +- (BOOL) saveDevices; + + +@end diff -Nru handbrake-0.9.9+dfsg/macosx/InstantHandBrake/DeviceController.m handbrake-0.9.9+ppa1/macosx/InstantHandBrake/DeviceController.m --- handbrake-0.9.9+dfsg/macosx/InstantHandBrake/DeviceController.m 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/InstantHandBrake/DeviceController.m 2008-01-30 12:28:55.000000000 +0000 @@ -0,0 +1,159 @@ +// +// DeviceController.m +// InstantHandBrake +// +// Created by Damiano Galassi on 23/01/08. +// This file is part of the HandBrake source code. +// Homepage: . +// It may be used under the terms of the GNU General Public License. +// +// + +#import "DeviceController.h" +#import "hb.h" + +@implementation DeviceController + +- (id)init +{ + if (self = [super init]) + { + devicesArray = [[NSMutableArray alloc] init]; + appSupportPath = [NSHomeDirectory() stringByAppendingPathComponent:@"Library/Application Support/Instant HandBrake"]; + [self loadBuiltInDevices]; + [self loadDevices]; + } + return self; +} + +- (void) dealloc +{ + [devicesArray release]; + [super dealloc]; +} + +- (BOOL) loadBuiltInDevices +{ + NSBundle *bundle = [NSBundle mainBundle]; + NSArray *path = [bundle pathsForResourcesOfType:@"ihbdevice" inDirectory:@"Devices"]; + + Device *newDevice; + NSString *file; + + NSEnumerator *dirEnum = [path objectEnumerator]; + while (file = [dirEnum nextObject]) + { + newDevice = [NSKeyedUnarchiver unarchiveObjectWithFile:file]; + [devicesArray addObject:newDevice]; + } + + if ( ![devicesArray count] ) + return NO; + else + return YES; +} + +- (BOOL) loadDevices +{ + NSString *file; + NSFileManager *fileManager = [NSFileManager defaultManager]; + Device *newDevice; + + NSDirectoryEnumerator *dirEnum = [fileManager enumeratorAtPath:appSupportPath]; + while (file = [dirEnum nextObject]) + { + if ([[file pathExtension] isEqualToString: @"ihbdevice"]) + { + newDevice = [NSKeyedUnarchiver unarchiveObjectWithFile:[appSupportPath stringByAppendingPathComponent:file]]; + [devicesArray addObject:newDevice]; + } + } + + if ( ![devicesArray count] ) + return NO; + else + return YES; +} + +/* Use this to create a new device preset for now */ + +- (id) populateList +{ + [devicesArray addObject:[[Device alloc] initWithDeviceName: @"iPod"]]; + [devicesArray addObject:[[Device alloc] initWithDeviceName: @"PSP"]]; + [devicesArray addObject:[[Device alloc] initWithDeviceName: @"AppleTV"]]; + + Preset *newPreset; + newPreset = [[Preset alloc] initWithMuxer: HB_MUX_IPOD + videoCodec: HB_VCODEC_X264 + videoBitRate: 1500 + videoCodecOptions: @"bframes=0:cabac=0:ref=1:vbv-maxrate=1500:vbv-bufsize=2000:analyse=all:me=umh:subq=6:no-fast-pskip=1:level=30" + audioCodec: HB_ACODEC_FAAC + audioBitrate: 128 + audioSampleRate: 48000 + maxWidth: 640 + maxHeight: 480 + anamorphic: 0]; + + [[devicesArray objectAtIndex:0] addPreset:newPreset]; + + newPreset = [[Preset alloc] initWithMuxer: HB_MUX_MP4 + videoCodec: HB_VCODEC_X264 + videoBitRate: 600 + videoCodecOptions: @"" + audioCodec: HB_ACODEC_FAAC + audioBitrate: 128 + audioSampleRate: 48000 + maxWidth: 480 + maxHeight: 272 + anamorphic: 0]; + + [[devicesArray objectAtIndex:1] addPreset:newPreset]; + + newPreset = [[Preset alloc] initWithMuxer: HB_MUX_MP4 + videoCodec: HB_VCODEC_X264 + videoBitRate: 2500 + videoCodecOptions: @"bframes=3:ref=1:subq=5:me=umh:no-fast-pskip=1:trellis=1:cabac=0" + audioCodec: HB_ACODEC_FAAC + audioBitrate: 160 + audioSampleRate: 48000 + maxWidth: 720 + maxHeight: 576 + anamorphic: 1]; + + [[devicesArray objectAtIndex:2] addPreset:newPreset]; +} + +- (NSArray *) devicesList +{ + NSArray *deviceList = [devicesArray copy]; + [deviceList autorelease]; + + return deviceList; +} + +- (BOOL) saveDevices +{ + NSFileManager *fileManager = [NSFileManager defaultManager]; + BOOL noErr = YES; + + if( ![fileManager fileExistsAtPath:appSupportPath] ) + [fileManager createDirectoryAtPath:appSupportPath attributes:nil]; + + NSEnumerator *enumerator; + Device *object; + enumerator = [devicesArray objectEnumerator]; + + while( object = [enumerator nextObject] ) + { + NSString * saveLocation = [NSString stringWithFormat:@"%@/%@.ihbdevice", appSupportPath, [object name]]; + if (![fileManager fileExistsAtPath:saveLocation]) + { + noErr = [NSKeyedArchiver archiveRootObject:object + toFile:saveLocation]; + } + } + return noErr; +} + +@end diff -Nru handbrake-0.9.9+dfsg/macosx/InstantHandBrake/Device.h handbrake-0.9.9+ppa1/macosx/InstantHandBrake/Device.h --- handbrake-0.9.9+dfsg/macosx/InstantHandBrake/Device.h 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/InstantHandBrake/Device.h 2008-01-30 12:28:55.000000000 +0000 @@ -0,0 +1,27 @@ +// +// Preset.h +// InstantHandBrake +// +// Created by Damiano Galassi on 15/01/08. +// This file is part of the HandBrake source code. +// Homepage: . +// It may be used under the terms of the GNU General Public License. +// +// + +#import +#import "Preset.h" + + +@interface Device : NSObject { + NSString * deviceName; + NSMutableArray * presetsArray; +} + +- (id) initWithDeviceName:(NSString *) name; +- (void) addPreset: (Preset *) preset; + +- (NSString *) name; +- (Preset *) firstPreset; + +@end diff -Nru handbrake-0.9.9+dfsg/macosx/InstantHandBrake/Device.m handbrake-0.9.9+ppa1/macosx/InstantHandBrake/Device.m --- handbrake-0.9.9+dfsg/macosx/InstantHandBrake/Device.m 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/InstantHandBrake/Device.m 2008-01-30 12:28:55.000000000 +0000 @@ -0,0 +1,63 @@ +// +// Preset.h +// InstantHandBrake +// +// Created by Damiano Galassi on 15/01/08. +// This file is part of the HandBrake source code. +// Homepage: . +// It may be used under the terms of the GNU General Public License. +// +// + +#import "Device.h" + + +@implementation Device + +- (id)initWithDeviceName:(NSString *) name +{ + if (self = [super init]) + { + deviceName = name; + presetsArray = [[NSMutableArray alloc] init]; + } + return self; +} + +- (void) dealloc +{ + [presetsArray release]; + [super dealloc]; +} + +- (id) initWithCoder:(NSCoder *) coder +{ + deviceName = [[coder decodeObjectForKey:@"DeviceName"] retain]; + presetsArray = [[coder decodeObjectForKey:@"Presets"] retain]; + + return self; +} + +- (void) encodeWithCoder:(NSCoder *)encoder +{ + [encoder encodeObject: deviceName forKey:@"DeviceName"]; + [encoder encodeObject: presetsArray forKey:@"Presets"]; +} + +- (void) addPreset: (Preset *) preset +{ + [presetsArray addObject:preset]; + [preset release]; +} + +- (NSString *) name +{ + return deviceName; +} + +- (Preset *) firstPreset +{ + return [presetsArray objectAtIndex:0]; +} + +@end Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/macosx/InstantHandBrake/Devices/AppleTV.ihbdevice and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/macosx/InstantHandBrake/Devices/AppleTV.ihbdevice differ Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/macosx/InstantHandBrake/Devices/iPod.ihbdevice and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/macosx/InstantHandBrake/Devices/iPod.ihbdevice differ Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/macosx/InstantHandBrake/Devices/PSP.ihbdevice and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/macosx/InstantHandBrake/Devices/PSP.ihbdevice differ diff -Nru handbrake-0.9.9+dfsg/macosx/InstantHandBrake/DriveDetector.h handbrake-0.9.9+ppa1/macosx/InstantHandBrake/DriveDetector.h --- handbrake-0.9.9+dfsg/macosx/InstantHandBrake/DriveDetector.h 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/InstantHandBrake/DriveDetector.h 2008-01-30 12:28:55.000000000 +0000 @@ -0,0 +1,23 @@ +/* DriveDetector.h $ + + This file is part of the HandBrake source code. + Homepage: . + It may be used under the terms of the GNU General Public License. */ + +#import + +@interface DriveDetector : NSObject +{ + id fTarget; + SEL fSelector; + + int fCount; + NSMutableDictionary * fDrives; + NSTimer * fTimer; +} + +- (id) initWithCallback: (id) target selector: (SEL) selector; +- (void) run; +- (void) stop; + +@end diff -Nru handbrake-0.9.9+dfsg/macosx/InstantHandBrake/DriveDetector.m handbrake-0.9.9+ppa1/macosx/InstantHandBrake/DriveDetector.m --- handbrake-0.9.9+dfsg/macosx/InstantHandBrake/DriveDetector.m 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/InstantHandBrake/DriveDetector.m 2008-01-30 12:28:55.000000000 +0000 @@ -0,0 +1,142 @@ +/* DriveDetector.m $ + + This file is part of the HandBrake source code. + Homepage: . + It may be used under the terms of the GNU General Public License. */ + +#include +#include +#include +#include +#include + +#include "DriveDetector.h" +#include "hb.h" + +@interface DriveDetector (Private) + +- (void) detectTimer: (NSTimer *) timer; + +@end + +@implementation DriveDetector + +- (void) dealloc +{ + [fDrives release]; + [super dealloc]; +} + +- (id) initWithCallback: (id) target selector: (SEL) selector +{ + fTarget = target; + fSelector = selector; + + fCount = -1; + fDrives = [[NSMutableDictionary alloc] initWithCapacity: 1]; + + return self; +} + +- (void) run +{ + /* Set up a timer to check devices every second */ + fTimer = [NSTimer scheduledTimerWithTimeInterval: 2.0 target: self + selector: @selector( detectTimer: ) userInfo: nil repeats: YES]; + [[NSRunLoop currentRunLoop] addTimer: fTimer forMode: + NSModalPanelRunLoopMode]; + + /* Do a first update right away */ + [fTimer fire]; +} + +- (void) stop +{ + [fTimer invalidate]; +} + +- (void) detectTimer: (NSTimer *) timer +{ + /* Scan DVD drives (stolen from VLC) */ + io_object_t next_media; + mach_port_t master_port; + kern_return_t kern_result; + io_iterator_t media_iterator; + CFMutableDictionaryRef classes_to_match; + + kern_result = IOMasterPort( MACH_PORT_NULL, &master_port ); + if( kern_result != KERN_SUCCESS ) + { + return; + } + + classes_to_match = IOServiceMatching( kIODVDMediaClass ); + if( classes_to_match == NULL ) + { + return; + } + + CFDictionarySetValue( classes_to_match, CFSTR( kIOMediaEjectableKey ), + kCFBooleanTrue ); + + kern_result = IOServiceGetMatchingServices( master_port, + classes_to_match, &media_iterator ); + if( kern_result != KERN_SUCCESS ) + { + return; + } + + [fDrives removeAllObjects]; + + next_media = IOIteratorNext( media_iterator ); + if( next_media ) + { + char * name; + char psz_buf[0x32]; + size_t dev_path_length; + CFTypeRef str_bsd_path; + do + { + str_bsd_path = + IORegistryEntryCreateCFProperty( next_media, + CFSTR( kIOBSDNameKey ), + kCFAllocatorDefault, + 0 ); + if( str_bsd_path == NULL ) + { + IOObjectRelease( next_media ); + continue; + } + + snprintf( psz_buf, sizeof(psz_buf), "%s%c", _PATH_DEV, 'r' ); + dev_path_length = strlen( psz_buf ); + + if( CFStringGetCString( (CFStringRef) str_bsd_path, + (char*)&psz_buf + dev_path_length, + sizeof(psz_buf) - dev_path_length, + kCFStringEncodingASCII ) ) + { + if( ( name = hb_dvd_name( psz_buf ) ) ) + { + [fDrives setObject: [NSString stringWithCString: psz_buf] + forKey: [NSString stringWithCString: name]]; + } + } + + CFRelease( str_bsd_path ); + + IOObjectRelease( next_media ); + + } while( ( next_media = IOIteratorNext( media_iterator ) ) ); + } + + IOObjectRelease( media_iterator ); + + if( [fDrives count] != fCount ) + { + [fTarget performSelector: fSelector withObject: fDrives]; + fCount = [fDrives count]; + } +} + +@end diff -Nru handbrake-0.9.9+dfsg/macosx/InstantHandBrake/English.lproj/Express.xib handbrake-0.9.9+ppa1/macosx/InstantHandBrake/English.lproj/Express.xib --- handbrake-0.9.9+dfsg/macosx/InstantHandBrake/English.lproj/Express.xib 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/InstantHandBrake/English.lproj/Express.xib 2008-01-30 17:07:03.000000000 +0000 @@ -0,0 +1,5131 @@ + + + + 1050 + 9B18 + 629 + 949 + 343.00 + + YES + + + + + + YES + com.apple.InterfaceBuilder.CocoaPlugin + + + YES + + + NSApplication + + + + FirstResponder + + + NSApplication + + + 7 + 2 + {{125, 826}, {213, 107}} + 1881669632 + Instant HandBrake + NSWindow + + View + + {3.40282e+38, 3.40282e+38} + {213, 107} + + + 256 + {213, 107} + + {{0, 0}, {1680, 1028}} + {213, 129} + {3.40282e+38, 3.40282e+38} + + + Embedded + + YES + + + + + 1048576 + 2147483647 + + NSImage + NSMenuCheckmark + + + + NSMenuMixedState + + submenuAction: + + + + YES + + + About Instant HandBrake + + 2147483647 + + + + + + Q2hlY2sgZm9yIFVwZGF0ZeKApg + + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + UHJlZmVyZW5jZXPigKY + , + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Services + + 1048576 + 2147483647 + + + submenuAction: + + + Services + + + YES + + _NSServicesMenu + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Hide Instant HandBrake + h + 1048576 + 2147483647 + + + + + + Hide Others + + 1572864 + 2147483647 + + + + + + Show All + + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Quit Instant HandBrake + q + 1048576 + 2147483647 + + + + + _NSAppleMenu + + + + + File + + 1048576 + 2147483647 + + + submenuAction: + + + File + + + YES + + + New + n + 1048576 + 2147483647 + + + + + + T3BlbuKApg + o + 1048576 + 2147483647 + + + + + + Open Recent + + 1048576 + 2147483647 + + + submenuAction: + + + Open Recent + + + YES + + + Clear Menu + + 1048576 + 2147483647 + + + + + _NSRecentDocumentsMenu + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Close + w + 1048576 + 2147483647 + + + + + + Save + s + 1048576 + 2147483647 + + + + + + U2F2ZSBBc+KApg + S + 1048576 + 2147483647 + + + + + + Revert + + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + UGFnZSBTZXR1cOKApg + P + 1048576 + 2147483647 + + + + + + UHJpbnTigKY + p + 1048576 + 2147483647 + + + + + + + + + Edit + + 1048576 + 2147483647 + + + submenuAction: + + + Edit + + + YES + + + Undo + z + 1048576 + 2147483647 + + + + + + Redo + Z + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Cut + x + 1048576 + 2147483647 + + + + + + Copy + c + 1048576 + 2147483647 + + + + + + Paste + v + 1048576 + 2147483647 + + + + + + Paste and Match Style + V + 1572864 + 2147483647 + + + + + + Delete + + 1048576 + 2147483647 + + + + + + Select All + a + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Find + + 1048576 + 2147483647 + + + submenuAction: + + + Find + + + YES + + + RmluZOKApg + f + 1048576 + 2147483647 + + + 1 + + + + Find Next + g + 1048576 + 2147483647 + + + 2 + + + + Find Previous + G + 1048576 + 2147483647 + + + 3 + + + + Use Selection for Find + e + 1048576 + 2147483647 + + + 7 + + + + Jump to Selection + j + 1048576 + 2147483647 + + + + + + + + + Spelling + + 1048576 + 2147483647 + + + submenuAction: + + + + YES + + + U3BlbGxpbmfigKY + : + 1048576 + 2147483647 + + + + + + Check Spelling + ; + 1048576 + 2147483647 + + + + + + Check Spelling as You Type + + 1048576 + 2147483647 + + + + + + + + + Speech + + 1048576 + 2147483647 + + + submenuAction: + + + + YES + + + Start Speaking + + 1048576 + 2147483647 + + + + + + Stop Speaking + + 1048576 + 2147483647 + + + + + + + + + + + + Window + + 1048576 + 2147483647 + + + submenuAction: + + + Window + + + YES + + + Minimize + m + 1048576 + 2147483647 + + + + + + Zoom + + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Bring All to Front + + 1048576 + 2147483647 + + + + + _NSWindowsMenu + + + + + Help + + 1048576 + 2147483647 + + + submenuAction: + + + Help + + + YES + + + Instant HandBrake Help + ? + 1048576 + 2147483647 + + + + + + + + _NSMainMenu + + + + 256 + + YES + + + 268 + {{17, 185}, {99, 17}} + + + YES + + 67239424 + 272629760 + Select a Source + + LucidaGrande + 1.300000e+01 + 1044 + + + + 6 + System + controlColor + + 3 + MC42NjY2NjY2OQA + + + + 6 + + controlTextColor + + 3 + MAA + + + + + + + 289 + {{295, 12}, {79, 32}} + + + YES + + -2080244224 + 134217728 + Open + + + -2038284033 + 1 + + + DQ + 200 + 25 + + + + + 268 + + YES + + + 256 + + YES + + + 256 + {{13, 41}, {135, 57}} + + + YES + 2 + 1 + + YES + + -2080244224 + 0 + DVD Drive: + + + 1211912703 + 0 + + NSRadioButton + + + + + + 200 + 25 + + + 67239424 + 0 + DVD Folder / File: + + 1 + + 1211912703 + 0 + + + + 200 + 25 + + + {135, 18} + {4, 21} + 1143472128 + NSActionCell + + 67239424 + 0 + Radio + + 1211912703 + 0 + + 549453824 + {18, 18} + + YES + + YES + + + + TU0AKgAABRgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAwAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAADwRERGLJycnySsrK/A1NTXw +IyMjyRwcHIsJCQk8AAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFFRUVdVBQUOCoqKj/ +29vb//n5+f/6+vr/2tra/6qqqv9UVFTgHx8fdQAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUZGRl5 +dXV198PDw//8/Pz////////////////////////////U1NT/fHx89yUlJXkAAAAFAAAAAAAAAAAAAAAA +AAAAAxEREUZqamrmtbW1/+3t7f/+/v7//v7+//7+/v/9/f3//f39//39/f/39/f/xMTE/3d3d+YZGRlG +AAAAAwAAAAAAAAAAAAAACkJCQqGtra3/xsbG/+vr6//y8vL/9fX1//X19f/z8/P/9fX1//Ly8v/u7u7/ +0tLS/6+vr/9KSkqhAAAACgAAAAAAAAAAAAAAF3h4eN2/v7//z8/P/93d3f/q6ur/7+/v/+/v7//w8PD/ +7e3t/+3t7f/i4uL/zs7O/8XFxf98fHzdAAAAFwAAAAAAAAADAAAAJKSkpPjOzs7/2dnZ/+Dg4P/i4uL/ +5eXl/+bm5v/n5+f/5eXl/+Li4v/e3t7/2tra/9DQ0P+srKz4AAAAJAAAAAMAAAADAAAALrCwsPrW1tb/ +3t7e/+Tk5P/p6en/6+vr/+zs7P/p6en/6+vr/+fn5//k5OT/4ODg/9nZ2f+zs7P6AAAALgAAAAMAAAAD +AAAALp2dnezg4OD/5eXl/+rq6v/u7u7/8PDw//Dw8P/x8fH/8PDw/+7u7v/q6ur/5ubm/+Hh4f+ZmZns +AAAALgAAAAMAAAADAAAAJG5ubs/l5eX/6enp/+/v7//y8vL/9vb2//r6+v/5+fn/9/f3//b29v/x8fH/ +6+vr/+Tk5P9ra2vPAAAAJAAAAAMAAAAAAAAAFy4uLpPCwsL67Ozs//Pz8//5+fn//v7+//7+/v/+/v7/ +/v7+//v7+//19fX/8PDw/8LCwvosLCyTAAAAFwAAAAAAAAAAAAAACgAAAENfX1/S5OTk/vn5+f/+/v7/ +///////////////////////////8/Pz/5ubm/l9fX9IAAABDAAAACgAAAAAAAAAAAAAAAwAAABcAAABl +YmJi3NLS0v3////////////////////////////////V1dX9ZGRk3AAAAGUAAAAXAAAAAwAAAAAAAAAA +AAAAAAAAAAUAAAAfAAAAZTMzM8KAgIDwv7+//O3t7f/t7e3/v7+//ICAgPAzMzPCAAAAZQAAAB8AAAAF +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAFwAAAEMAAAB3AAAAnwAAALMAAACzAAAAnwAAAHcAAABD +AAAAFwAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAoAAAAXAAAAJAAAAC4AAAAu +AAAAJAAAABcAAAAKAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAwAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQEAAAMAAAABABIAAAEB +AAMAAAABABIAAAECAAMAAAAEAAAFugEDAAMAAAABAAEAAAEGAAMAAAABAAIAAAERAAQAAAABAAAACAES +AAMAAAABAAEAAAEVAAMAAAABAAQAAAEWAAMAAAABBxwAAAEXAAQAAAABAAAFEAEcAAMAAAABAAEAAAFS +AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA + + + + + + 3 + MCAwAA + + + + 400 + 75 + + + + + 3 + MQA + + + + + + 256 + {{153, 75}, {181, 26}} + + + YES + + -2076049856 + 2048 + + + 109199615 + 1 + + + + + + 400 + 75 + + + Item1 + + 1048576 + 2147483647 + 1 + + + _popUpItemAction: + + + YES + + + OtherViews + + + YES + + + + Item2 + + 1048576 + 2147483647 + + + _popUpItemAction: + + + + + Item3 + + 1048576 + 2147483647 + + + _popUpItemAction: + + + + + 3 + YES + YES + 1 + + + + + 256 + {{156, 40}, {175, 22}} + + + YES + + -1804468671 + 272630784 + + + + YES + + 6 + + textBackgroundColor + + + + 6 + + textColor + + + + + + + 256 + {{256, 8}, {80, 28}} + + + YES + + 67239424 + 134348800 + QnJvd3Nl4oCmA + + + 1.100000e+01 + 3100 + + + -2038284033 + 1 + + + 1.100000e+01 + 16 + + + + + + 200 + 25 + + + + {{1, 1}, {346, 115}} + + + + + {{20, 60}, {348, 117}} + + + {0, 0} + + 67239424 + 0 + Box + + + + 3 + MCAwLjgwMDAwMDAxAA + + + + 1 + 3 + 0 + NO + + + + -2147482356 + + {{18, -29}, {352, 20}} + + + 16396 + 1.000000e+02 + + + + 268 + {{17, 20}, {279, 17}} + + + YES + + 67239424 + 272629760 + + + + + + + + + {388, 212} + + + + NSView + + NSResponder + + + + 256 + + YES + + + 256 + {{17, 393}, {139, 17}} + + + YES + + 67239424 + 272629760 + Select DVD Features + + + + + + + + + 1280 + + {{18, 16}, {352, 20}} + + + 16396 + 1.000000e+02 + + + + 256 + {{17, 273}, {59, 17}} + + + YES + + 67239424 + 272629760 + Settings + + + + + + + + + 256 + + YES + + + 256 + + YES + + + 256 + {{166, 41}, {166, 26}} + + + YES + + -2076049856 + 2048 + + + 109199615 + 1 + + + + + + 400 + 75 + + + 4oCmA + + 1048576 + 2147483647 + 1 + + + _popUpItemAction: + + + YES + + + OtherViews + + + YES + + + + 3 + YES + YES + 1 + + + + + 256 + {{58, 47}, {106, 17}} + + + YES + + 67239424 + 71303168 + Preferred audio: + + + + + + + + + 256 + {{87, 137}, {77, 17}} + + + YES + + 67239424 + 71303168 + File format: + + + + + + + + + 256 + {{166, 131}, {166, 26}} + + + YES + + -2076049856 + 2048 + + + 109199615 + 1 + + + + + + 400 + 75 + + YES + + + OtherViews + + + YES + + + -1 + 3 + YES + YES + 1 + + + + + 256 + {{14, 167}, {150, 17}} + + + YES + + 67239424 + 71303168 + Save converted files to: + + + + + + + + + 256 + {{166, 161}, {166, 26}} + + + YES + + -2076049856 + 2048 + + + 109199615 + 1 + + + + + + 400 + 75 + + + + + 1048576 + 2147483647 + 1 + + + _popUpItemAction: + + + YES + + + OtherViews + + + YES + + + + YES + YES + + + 1048576 + 2147483647 + + + _popUpItemAction: + + + + + T3RoZXLigKY + + 1048576 + 2147483647 + + + _popUpItemAction: + + + + + 3 + YES + YES + 1 + + + + + 256 + {{166, 11}, {166, 26}} + + + YES + + -2076049856 + 2048 + + + 109199615 + 1 + + + + + + 400 + 75 + + + 4oCmIA + + 1048576 + 2147483647 + 1 + + + _popUpItemAction: + + + YES + + + OtherViews + + + YES + + + + 3 + YES + YES + 1 + + + + + 256 + {{36, 17}, {128, 17}} + + + YES + + 67239424 + 71303168 + Preferred subtitles: + + + + + + + + + 256 + {{66, 107}, {98, 17}} + + + YES + + 67239424 + 71303168 + Picture Aspect: + + + + + + + + + 256 + {{166, 101}, {166, 26}} + + + YES + + -2076049856 + 2048 + + + 109199615 + 1 + + + + + + 400 + 75 + + + Original + + 1048576 + 2147483647 + 1 + + + _popUpItemAction: + + + YES + + + OtherViews + + + YES + + + + 4 by 3 + + 1048576 + 2147483647 + + + _popUpItemAction: + + + + + 16 by 9 + + 1048576 + 2147483647 + + + _popUpItemAction: + + + + + Anamorphic + + 1048576 + 2147483647 + + + _popUpItemAction: + + + + + 3 + YES + YES + 1 + + + + + 256 + {{166, 71}, {166, 26}} + + + YES + + -2076049856 + 2048 + + + 109199615 + 1 + + + 1.300000e+01 + 16 + + + + + + 400 + 75 + + + 640 + + 1048576 + 2147483647 + 1 + + + _popUpItemAction: + + + YES + + + OtherViews + + + YES + + + + + 1048576 + 2147483647 + + + _popUpItemAction: + + + + + + 480 + + 1048576 + 2147483647 + + + _popUpItemAction: + + + + + 320 + + 1048576 + 2147483647 + + + _popUpItemAction: + + + + + 1 + 3 + YES + YES + 1 + + + + + 256 + {{42, 77}, {122, 17}} + + + YES + + 67239424 + 71303168 + Max Picture Width: + + + + + + + + {{1, 1}, {346, 200}} + + + + + {{20, 69}, {348, 202}} + + + + + 67239424 + 0 + + + + + 3 + MCAwLjgwMDAwMDAxAA + + + + 1 + 3 + 0 + NO + + + + 256 + {{17, 44}, {354, 17}} + + + YES + + 67239424 + 272629760 + Ready + + + + + + + + + 256 + + YES + + + 256 + + YES + + + 256 + + YES + + + 2304 + + YES + + + 256 + {347, 77} + + + YES + + + 256 + {347, 17} + + + + + + + -2147483392 + {{-26, 0}, {16, 17}} + + + + + YES + + Check + 2.300000e+01 + 1.000000e+01 + 1.000000e+03 + + 67239424 + 0 + + + + 6 + + headerColor + + + + 6 + + headerTextColor + + + + + 337772096 + 2048 + Text Cell + + + + 6 + + controlBackgroundColor + + + + + 3 + YES + YES + + + + Title + 6.399365e+01 + 4.199365e+01 + 1.000000e+03 + + 75628032 + 0 + + + + 3 + MC4zMzMzMzI5OQA + + + + + 337772096 + 2048 + + + + + + + 3 + YES + YES + + + + Duration + 1.336582e+02 + 6.765820e+01 + 1.000000e+03 + + 67239424 + 0 + + + + + + + 337772096 + 2048 + + + + + + + 3 + YES + YES + + + + Size + 1.138560e+02 + 9.000000e+01 + 1.000000e+03 + + 67239424 + 0 + Size (Converted) + + + + + + 337772096 + 2048 + + + + + + + 3 + YES + YES + + + + 3.000000e+00 + 2.000000e+00 + + + 6 + + gridColor + + 3 + MC41AA + + + 1.700000e+01 + 316669952 + 4 + 15 + 0 + YES + + + {{1, 17}, {346, 77}} + + + + + + 4 + + + + -2147483392 + {{332, 17}, {15, 77}} + + + + _doScroller: + 4.052632e-01 + + + + 256 + {{-100, -100}, {379, 15}} + + + YES + 1 + + + 9.358025e-01 + + + + 2304 + + YES + + + {{1, 0}, {346, 17}} + + + + + + 4 + + + + {{-1, -1}, {348, 95}} + + + + 658 + + + + + + AAAAAAAAAABBmAAAQZgAAA + + + {{1, 1}, {346, 93}} + + + + + {{20, 295}, {348, 95}} + + + + + 67239424 + 0 + + + + + 3 + MCAwLjgwMDAwMDAxAA + + + + 1 + 3 + 0 + NO + + + {388, 420} + + + + NSView + + + + + ExpressController + + + + 256 + {135, 65} + NSView + + + + + + YES + + + performMiniaturize: + + + + 37 + + + + arrangeInFront: + + + + 39 + + + + print: + + + + 86 + + + + runPageLayout: + + + + 87 + + + + showHelp: + + + + 122 + + + + clearRecentDocuments: + + + + 127 + + + + terminate: + + + + 139 + + + + orderFrontStandardAboutPanel: + + + + 142 + + + + hideOtherApplications: + + + + 146 + + + + hide: + + + + 152 + + + + unhideAllApplications: + + + + 153 + + + + performClose: + + + + 193 + + + + toggleContinuousSpellChecking: + + + + 222 + + + + undo: + + + + 223 + + + + copy: + + + + 224 + + + + checkSpelling: + + + + 225 + + + + paste: + + + + 226 + + + + stopSpeaking: + + + + 227 + + + + cut: + + + + 228 + + + + showGuessPanel: + + + + 230 + + + + redo: + + + + 231 + + + + selectAll: + + + + 232 + + + + startSpeaking: + + + + 233 + + + + delete: + + + + 235 + + + + performZoom: + + + + 240 + + + + performFindPanelAction: + + + + 241 + + + + + + + + 242 + + + + + + + + 243 + + + + + + + + 244 + + + + centerSelectionInVisibleArea: + + + + 245 + + + + pasteAsPlainText: + + + + 247 + + + + delegate + + + + 291 + + + + fOpenView + + + + 292 + + + + fConvertView + + + + 293 + + + + fWindow + + + + 294 + + + + fEmptyView + + + + 304 + + + + openGo: + + + + 320 + + + + fOpenGoButton + + + + 323 + + + + fConvertIndicator + + + + 331 + + + + openBrowse: + + + + 358 + + + + openMatrixChanged: + + + + 359 + + + + fOpenBrowseButton + + + + 360 + + + + fOpenFolderField + + + + 361 + + + + fOpenIndicator + + + + 362 + + + + fOpenMatrix + + + + 363 + + + + fOpenPopUp + + + + 364 + + + + fConvertTableView + + + + 405 + + + + fConvertFolderPopUp + + + + 406 + + + + dataSource + + + + 407 + + + + + + + + 408 + + + + fOpenProgressField + + + + 409 + + + + fConvertAspectPopUp + + + + 412 + + + + fConvertFormatPopUp + + + + 413 + + + + fConvertAudioPopUp + + + + 415 + + + + fConvertSubtitlePopUp + + + + 416 + + + + fConvertMaxWidthPopUp + + + + 425 + + + + fConvertInfoString + + + + 427 + + + + selectFolderSheetShow: + + + + 465 + + + + + YES + + 0 + + YES + + + + + + -2 + + + RmlsZSdzIE93bmVyA + + + -1 + + + First Responder + + + -3 + + + Application + + + 21 + + + YES + + + + + + + 2 + + + + + 29 + + + YES + + + + + + + + MainMenu + + + 19 + + + YES + + + + + + 24 + + + YES + + + + + + + + + 5 + + + + + 23 + + + + + 92 + + + + + 239 + + + + + 56 + + + YES + + + + + + 57 + + + YES + + + + + + + + + + + + + + + + + 58 + + + + + 129 + + + + + 131 + + + YES + + + + + + 130 + + + + + 134 + + + + + 136 + + + + + 143 + + + + + 144 + + + + + 145 + + + + + 149 + + + + + 150 + + + + + 236 + + + + + 83 + + + YES + + + + + + 81 + + + YES + + + + + + + + + + + + + + + + 72 + + + + + 73 + + + + + 74 + + + + + 75 + + + + + 77 + + + + + 78 + + + + + 79 + + + + + 80 + + + + + 82 + + + + + 112 + + + + + 124 + + + YES + + + + + + 125 + + + YES + + + + + + 126 + + + + + 103 + + + YES + + + + + + 106 + + + YES + + + + + + 111 + + + + + 217 + + + YES + + + + + + 205 + + + YES + + + + + + + + + + + + + + + + + + 197 + + + + + 198 + + + + + 199 + + + + + 202 + + + + + 203 + + + + + 206 + + + + + 207 + + + + + 211 + + + YES + + + + + + 212 + + + YES + + + + + + + 195 + + + + + 196 + + + + + 214 + + + + + 215 + + + + + 216 + + + YES + + + + + + 200 + + + YES + + + + + + + + 201 + + + + + 204 + + + + + 219 + + + + + 218 + + + YES + + + + + + 220 + + + YES + + + + + + + + + + 208 + + + + + 209 + + + + + 210 + + + + + 213 + + + + + 221 + + + + + 246 + + + + + 248 + + + YES + + + + + + + + OpenView + + + 249 + + + YES + + + + + + 297 + + + YES + + + + + + 333 + + + YES + + + + + + + + + 356 + + + + + 396 + + + YES + + + + + + 259 + + + YES + + + + + + + + + ConvertView + + + 260 + + + YES + + + + + + 289 + + + + + 365 + + + YES + + + + + + 366 + + + YES + + + + + + + + + + + + + + + + + 397 + + + YES + + + + + + 398 + + + YES + + + + + + 290 + + + + + + 303 + + + EmptyView + + + 429 + + + + + 430 + + + + + 434 + + + + + 435 + + + + + 436 + + + + + 449 + + + + + 345 + + + YES + + + + + + + + 450 + + + + + 347 + + + + + 346 + + + + + 348 + + + YES + + + + + + 431 + + + YES + + + + + + 349 + + + YES + + + + + + + + 350 + + + + + 351 + + + + + 352 + + + + + 353 + + + YES + + + + + + 432 + + + + + 354 + + + YES + + + + + + 433 + + + + + 372 + + + YES + + + + + + 437 + + + YES + + + + + + 373 + + + YES + + + + + + 374 + + + + + 375 + + + YES + + + + + + 438 + + + + + 376 + + + YES + + + + + + 439 + + + + + 377 + + + YES + + + + + + 440 + + + YES + + + + + + 378 + + + YES + + + + + 381 + + + YES + + + + + + 441 + + + + + 382 + + + YES + + + + + + 442 + + + YES + + + + + + 383 + + + YES + + + + + + + + 384 + + + + + 385 + + + + + 386 + + + + + 387 + + + YES + + + + + + 443 + + + YES + + + + + + 388 + + + YES + + + + + + 389 + + + + + 390 + + + YES + + + + + + 444 + + + + + 391 + + + YES + + + + + + 445 + + + + + 392 + + + YES + + + + + + 446 + + + YES + + + + + + 393 + + + YES + + + + + + + + + 394 + + + + + 395 + + + + + 419 + + + YES + + + + + + 447 + + + YES + + + + + + 420 + + + YES + + + + + + + + + 422 + + + + + 423 + + + + + 424 + + + YES + + + + + + 448 + + + + + 400 + + + YES + + + + + + + + + 457 + + + + + 456 + + + + + 455 + + + + + 401 + + + YES + + + + + + + + + 410 + + + YES + + + + + + 404 + + + YES + + + + + + 403 + + + YES + + + + + + 402 + + + YES + + + + + + 451 + + + + + 452 + + + + + 453 + + + + + 454 + + + + + 466 + + + + + 467 + + + + + 468 + + + + + 469 + + + + + 470 + + + + + + + YES + + YES + -1.IBPluginDependency + -2.IBPluginDependency + -3.IBPluginDependency + -3.ImportedFromIB2 + 103.IBPluginDependency + 103.ImportedFromIB2 + 106.IBPluginDependency + 106.ImportedFromIB2 + 106.editorWindowContentRectSynchronizationRect + 111.IBPluginDependency + 111.ImportedFromIB2 + 112.IBPluginDependency + 112.ImportedFromIB2 + 124.IBPluginDependency + 124.ImportedFromIB2 + 125.IBPluginDependency + 125.ImportedFromIB2 + 125.editorWindowContentRectSynchronizationRect + 126.IBPluginDependency + 126.ImportedFromIB2 + 129.IBPluginDependency + 129.ImportedFromIB2 + 130.IBPluginDependency + 130.ImportedFromIB2 + 130.editorWindowContentRectSynchronizationRect + 131.IBPluginDependency + 131.ImportedFromIB2 + 134.IBPluginDependency + 134.ImportedFromIB2 + 136.IBPluginDependency + 136.ImportedFromIB2 + 143.IBPluginDependency + 143.ImportedFromIB2 + 144.IBPluginDependency + 144.ImportedFromIB2 + 145.IBPluginDependency + 145.ImportedFromIB2 + 149.IBPluginDependency + 149.ImportedFromIB2 + 150.IBPluginDependency + 150.ImportedFromIB2 + 19.IBPluginDependency + 19.ImportedFromIB2 + 195.IBPluginDependency + 195.ImportedFromIB2 + 196.IBPluginDependency + 196.ImportedFromIB2 + 197.IBPluginDependency + 197.ImportedFromIB2 + 198.IBPluginDependency + 198.ImportedFromIB2 + 199.IBPluginDependency + 199.ImportedFromIB2 + 2.IBPluginDependency + 2.ImportedFromIB2 + 200.IBPluginDependency + 200.ImportedFromIB2 + 201.IBPluginDependency + 201.ImportedFromIB2 + 202.IBPluginDependency + 202.ImportedFromIB2 + 203.IBPluginDependency + 203.ImportedFromIB2 + 204.IBPluginDependency + 204.ImportedFromIB2 + 205.IBPluginDependency + 205.ImportedFromIB2 + 205.editorWindowContentRectSynchronizationRect + 206.IBPluginDependency + 206.ImportedFromIB2 + 207.IBPluginDependency + 207.ImportedFromIB2 + 208.IBPluginDependency + 208.ImportedFromIB2 + 209.IBPluginDependency + 209.ImportedFromIB2 + 21.IBPluginDependency + 21.IBWindowTemplateEditedContentRect + 21.ImportedFromIB2 + 21.NSWindowTemplate.visibleAtLaunch + 21.editorWindowContentRectSynchronizationRect + 21.windowTemplate.hasMaxSize + 21.windowTemplate.hasMinSize + 21.windowTemplate.maxSize + 21.windowTemplate.minSize + 210.IBPluginDependency + 210.ImportedFromIB2 + 211.IBPluginDependency + 211.ImportedFromIB2 + 212.IBPluginDependency + 212.ImportedFromIB2 + 213.IBPluginDependency + 213.ImportedFromIB2 + 214.IBPluginDependency + 214.ImportedFromIB2 + 215.IBPluginDependency + 215.ImportedFromIB2 + 216.IBPluginDependency + 216.ImportedFromIB2 + 217.IBPluginDependency + 217.ImportedFromIB2 + 218.IBPluginDependency + 218.ImportedFromIB2 + 219.IBPluginDependency + 219.ImportedFromIB2 + 220.IBPluginDependency + 220.ImportedFromIB2 + 221.IBPluginDependency + 221.ImportedFromIB2 + 23.IBPluginDependency + 23.ImportedFromIB2 + 236.IBPluginDependency + 236.ImportedFromIB2 + 239.IBPluginDependency + 239.ImportedFromIB2 + 24.IBPluginDependency + 24.ImportedFromIB2 + 24.editorWindowContentRectSynchronizationRect + 246.IBPluginDependency + 246.ImportedFromIB2 + 248.IBPluginDependency + 248.ImportedFromIB2 + 248.editorWindowContentRectSynchronizationRect + 249.IBPluginDependency + 249.ImportedFromIB2 + 259.IBPluginDependency + 259.ImportedFromIB2 + 259.editorWindowContentRectSynchronizationRect + 260.IBPluginDependency + 260.ImportedFromIB2 + 289.IBPluginDependency + 289.ImportedFromIB2 + 29.IBPluginDependency + 29.ImportedFromIB2 + 29.editorWindowContentRectSynchronizationRect + 290.IBPluginDependency + 290.ImportedFromIB2 + 297.IBPluginDependency + 297.ImportedFromIB2 + 303.IBPluginDependency + 303.ImportedFromIB2 + 303.editorWindowContentRectSynchronizationRect + 333.CustomClassName + 333.IBPluginDependency + 333.ImportedFromIB2 + 345.IBPluginDependency + 345.ImportedFromIB2 + 346.IBPluginDependency + 346.ImportedFromIB2 + 347.IBPluginDependency + 347.ImportedFromIB2 + 348.IBPluginDependency + 348.ImportedFromIB2 + 349.IBPluginDependency + 349.ImportedFromIB2 + 350.IBPluginDependency + 350.ImportedFromIB2 + 351.IBPluginDependency + 351.ImportedFromIB2 + 352.IBPluginDependency + 352.ImportedFromIB2 + 353.IBPluginDependency + 353.ImportedFromIB2 + 354.IBPluginDependency + 354.ImportedFromIB2 + 356.IBPluginDependency + 356.ImportedFromIB2 + 365.IBPluginDependency + 365.ImportedFromIB2 + 366.CustomClassName + 366.IBPluginDependency + 366.ImportedFromIB2 + 372.IBPluginDependency + 372.ImportedFromIB2 + 373.IBPluginDependency + 373.ImportedFromIB2 + 374.IBPluginDependency + 374.ImportedFromIB2 + 375.IBPluginDependency + 375.ImportedFromIB2 + 376.IBPluginDependency + 376.ImportedFromIB2 + 377.IBPluginDependency + 377.ImportedFromIB2 + 378.IBPluginDependency + 378.ImportedFromIB2 + 378.editorWindowContentRectSynchronizationRect + 381.IBPluginDependency + 381.ImportedFromIB2 + 382.IBPluginDependency + 382.ImportedFromIB2 + 383.IBPluginDependency + 383.ImportedFromIB2 + 383.editorWindowContentRectSynchronizationRect + 384.IBPluginDependency + 384.ImportedFromIB2 + 385.IBPluginDependency + 385.ImportedFromIB2 + 386.IBPluginDependency + 386.ImportedFromIB2 + 387.IBPluginDependency + 387.ImportedFromIB2 + 388.IBPluginDependency + 388.ImportedFromIB2 + 389.IBPluginDependency + 389.ImportedFromIB2 + 390.IBPluginDependency + 390.ImportedFromIB2 + 391.IBPluginDependency + 391.ImportedFromIB2 + 392.IBPluginDependency + 392.ImportedFromIB2 + 393.IBPluginDependency + 393.ImportedFromIB2 + 393.editorWindowContentRectSynchronizationRect + 394.IBPluginDependency + 394.ImportedFromIB2 + 395.IBPluginDependency + 395.ImportedFromIB2 + 396.IBPluginDependency + 396.ImportedFromIB2 + 397.IBPluginDependency + 397.ImportedFromIB2 + 398.IBPluginDependency + 398.ImportedFromIB2 + 400.IBPluginDependency + 400.ImportedFromIB2 + 401.IBPluginDependency + 401.ImportedFromIB2 + 402.IBPluginDependency + 402.ImportedFromIB2 + 403.IBPluginDependency + 403.ImportedFromIB2 + 404.IBPluginDependency + 404.ImportedFromIB2 + 410.IBPluginDependency + 410.ImportedFromIB2 + 419.IBPluginDependency + 419.ImportedFromIB2 + 420.IBPluginDependency + 420.ImportedFromIB2 + 420.editorWindowContentRectSynchronizationRect + 422.IBPluginDependency + 422.ImportedFromIB2 + 423.IBPluginDependency + 423.ImportedFromIB2 + 424.IBPluginDependency + 424.ImportedFromIB2 + 451.IBShouldRemoveOnLegacySave + 452.IBShouldRemoveOnLegacySave + 453.IBShouldRemoveOnLegacySave + 454.IBShouldRemoveOnLegacySave + 455.IBShouldRemoveOnLegacySave + 456.IBShouldRemoveOnLegacySave + 457.IBShouldRemoveOnLegacySave + 466.IBPluginDependency + 467.IBPluginDependency + 468.IBPluginDependency + 469.IBPluginDependency + 470.IBPluginDependency + 5.IBPluginDependency + 5.ImportedFromIB2 + 56.IBPluginDependency + 56.ImportedFromIB2 + 57.IBPluginDependency + 57.ImportedFromIB2 + 57.editorWindowContentRectSynchronizationRect + 58.IBPluginDependency + 58.ImportedFromIB2 + 72.IBPluginDependency + 72.ImportedFromIB2 + 73.IBPluginDependency + 73.ImportedFromIB2 + 74.IBPluginDependency + 74.ImportedFromIB2 + 75.IBPluginDependency + 75.ImportedFromIB2 + 77.IBPluginDependency + 77.ImportedFromIB2 + 78.IBPluginDependency + 78.ImportedFromIB2 + 79.IBPluginDependency + 79.ImportedFromIB2 + 80.IBPluginDependency + 80.ImportedFromIB2 + 81.IBPluginDependency + 81.ImportedFromIB2 + 81.editorWindowContentRectSynchronizationRect + 82.IBPluginDependency + 82.ImportedFromIB2 + 83.IBPluginDependency + 83.ImportedFromIB2 + 92.IBPluginDependency + 92.ImportedFromIB2 + + + YES + + + + + + + + + {{402, 708}, {234, 23}} + + + + + + + + + {{428, 668}, {146, 23}} + + + + + + + {{428, 713}, {64, 6}} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {{287, 488}, {253, 243}} + + + + + + + + + + {{505, 676}, {213, 107}} + + + {{505, 676}, {213, 107}} + + + {3.40282e+38, 3.40282e+38} + {213, 107} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {{331, 658}, {197, 73}} + + + + + {{533, 500}, {388, 212}} + + + + + {{404, 449}, {388, 420}} + + + + + + + {{81, 731}, {382, 20}} + + + + + + + {{57, 930}, {135, 65}} + WhiteBox + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {{488, 560}, {166, 4}} + + + + + + + {{488, 541}, {166, 53}} + + + + + + + + + + + + + + + + + + + + + {{602, 580}, {166, 83}} + + + + + + + + + + + + + + + + + + + + + + + + + + + {{602, 550}, {166, 83}} + + + + + + + + + + + + + + + + + + com.apple.InterfaceBuilder.CocoaPlugin + + + + + + + {{93, 528}, {263, 203}} + + + + + + + + + + + + + + + + + + + + + {{245, 528}, {183, 203}} + + + + + + + + + + YES + + YES + + + YES + + + + + YES + + YES + + + YES + + + + 470 + + + + YES + + WhiteBox + NSBox + + YES + + YES + + + YES + + + + YES + + YES + + + YES + + + + IBProjectSource + WhiteBox.h + + + + + + + YES + + YES + + + YES + + + + YES + + YES + + + YES + + + + IBUserSource + + + + + + + + YES + + YES + + + YES + + + + YES + + YES + + + YES + + + + + + + + + + NSObject + + YES + + YES + + + YES + + + + YES + + YES + + + YES + + + + + + + + + ExpressController + + + YES + + YES + convertCancel: + convertGo: + openBrowse: + openGo: + openMatrixChanged: + openShow: + selectFolderSheetShow: + + + YES + id + + + + + + + + + + YES + + YES + fConvertAspectPopUp + fConvertAudioPopUp + fConvertFolderPopUp + fConvertFormatPopUp + fConvertIndicator + fConvertInfoString + fConvertMaxWidthPopUp + fConvertSubtitlePopUp + fConvertTableView + fConvertView + fEmptyView + fOpenBrowseButton + fOpenFolderField + fOpenGoButton + fOpenIndicator + fOpenMatrix + fOpenPopUp + fOpenProgressField + fOpenView + fToolbar + fWindow + + + YES + NSPopUpButton + + + + NSProgressIndicator + NSTextField + + + NSTableView + + + NSButton + + + NSProgressIndicator + NSMatrix + + + + NSToolbar + + + + + + ExpressController.h + + + + + 0 + ../../InstantHandBrake.xcodeproj + 3 + + YnBsaXN0MDDUAAEAAgADAAQABQAGAAkAClgkdmVyc2lvblQkdG9wWSRhcmNoaXZlclgkb2JqZWN0cxIA +AYag0QAHAAhdSUIub2JqZWN0ZGF0YYABXxAPTlNLZXllZEFyY2hpdmVyrxEEDAALAAwAMQA1ADkAQABD +AEQASQBlAGYAZwBoAGsAbABtAGwAdQB5AHoAawB7AH4AggC/AMcAygDLAO4A/wALAQABCAESARMBFgEd +ATIBMwE2AT0BUgFTAV8BYAFoAWkBbAF2AXcBeAF8AX4BgwGEAYcBjQGXAZgBnQGiAaMBpgGrAawBrgGx +AbsBvAHDAcYBzQHXAdgB3gHlAe8B8AH2AfcB/gICAgcCCAILAg4CDwITAhcCJwIsAi0CLgIzAjQCNQI4 +AjwCPQJAAkECRAJIAk8CVAJVAlYCWwJjAmoCawKIAooClgKaApsCnAKfAqMCpQKqAq4CrwK0Ar0CxwAL +AsgC1QLWAtcC2QLbAtwC4ALnAugC6QLqAu8DCgMRAxIDFwMgAyEDJQMmAykDKwM0AzUDNgGLAzcDPgM/ +A0cDSANMANwDUQNVA1YDWgNcA18DYQNmA2cDagNrA3ADeAN5A4UDhwOQA5QCmwOVA5cDnQOmApsDpwOw +ApsDsQOyA7cDvwPEA8UDxgPHA8wD1APdA94D5gPnA+oD/gP/BAAEBAQLBBMEFAQfBCQEJQQqBCsEMwQ0 +BD0EPgRCBEQERQRGBEcETQROBFEEVARhBGMEZgRnBGoEcgRzBHoACwR7AHgEfQSABIEEhQSMBJAEkQSS +BJMEmASgBKEErwSxBLUEtwS6BLsEwATBBMUEzATQBNEE0gTTBNcE3gTfBOAE4QTlBOwE8ATxBPIE9wT/ +BQAFDAUOBRcFGwKbBRwFHgUiBSMFJwUuBTIFMwU0BTUFOgVDBUcCmwVIBVQFVQVZBWAFYQViBWMFaAVx +BXoFggWDBYoFiwWTBZUFlgWeBZ8FpgWnBbQFuAXHBc8F0AXYBdkF4QXiBekF6gXyBfMF+gX7BgMGBAYG +ApsGDwYRBhcCmwYkBiwGLQY0BjUGPQY+BkUGRgZOBk8GWwZdBmYGagKbBmsGbQZ0Bn0CmwZ+BocCmwaI +BpECmwaSBpoGmwanBqoGrAa1BrkCmwa6BrwGwwKbBswG1QKbBtYG3wKbBuAG6AbpBvAG8QbyBvMG+Qb7 +BwMHBAcLBwwHFwcbByIHJgcuBzIHMwc2B0AHQQdCB0UHTwdQB1QHVQdWB1kHWgdbB2EHYwdlAAsHZgdo +B2kHbgdvB3QHdQd5B4AHgQeCB4MHhweOB48HkAeVB5wHnQeeB6IHqQeuB68HsAexB7UHvAe9B74HvwfD +B8oHzgfPB9AH0QfVB9wH3QfeB+MH5AfpB+oH7wfwB/UH9gf7B/wIAAgHCAgICQgOCBUIFggXCBwIHQgi +CCMIJwguCC8IMAgxCDYINwg8CD0IQghIAHcISQhKCE4IVQhWCFcIWAhcCGMIZAhlCGYIawhyCHMIdAh4 +CH8IgAiBCIYIhwiMCI0IkQiYCJkImgieCKUIpginCKsIsgizCLQItQi5CMAIwQjCCMMIyAjJCM0I1AjV +CNYI2wjiCOMI5AjlCOoI7gj1CPYI9wmcCaMJpAmlCawJrQmuCbcJvgm/CcIJxgnPCdQJ1wnaCdsJ5Ant +CfYKAAnBCgUKBgoPCdYKBQoYChsKKQowCjEKMgo7CgUKPAo+CkIKQwpKCksKTApTClQKVQpcCl0KYApw +CnkKggqLCgUKjAqOCpYKnwoFCqAKpgqvCgUKsAq1ChoKBQq+Cs0KzgA4CtEK1ArbCuQK5QpfCgUK7grv +CvcKBQsACtMKBQsJCwoLrwxVDPsM/Az9DP4M/w0ADQENAg0DDQQNBQ0GDQcNCA0JDQoNCw0MDQ0NDg0P +DRANEQ0SDRMNFA0VDRYNFw0YDRkNGg0bDRwNHQ0eDR8NIA0hDSINIw0kDSUNJg0nDSgNKQ0qDSsNLA0t +DS4NLw0wDTENMg0zDTQNNQ02DTcNOA05DToNOw08DT0NPg0/DUANQQ1CDUMNRA1FDUYNRw1IDUkNSg1L +DUwNTQ1ODU8NUA1RDVINUw1UDVUNVg1XDVgNWQ1aDVsNXA1dDV4NXw1gDWENYg1jDWQNZQ1mDWcNaA1p +DWoNaw1sDW0Nbg1vDXANcQ1yDXMNdA11DXYNdw14DXkNeg17DXwNfQ1+DX8NgA2BDYINgw2EDYUNhg2H +DYgNiQ2KDYsNjA2NDY4Njw2QDZENkg2TDZQNlQ2WDZcNmA2ZDZoNmw2cDaENpg6GD2YPZw9oD2kPag9r +D2wPbQ9uD28PcA9xD3IPcw90D3UPdg93D3gPeQ96D3sPfA99D34Pfw+AD4EPgg+DD4QPhQ+GD4cPiA+J +D4oPiw+MD40Pjg+PD5APkQ+SD5MPlA+VD5YPlw+YD5kPmg+bD5wPnQ+eD58PoA+hD6IPow+kD6UPpg+n +D6gPqQ+qD6sPrA+tD64Prw+wD7EPsgKFD7MPtA+1D7YPtw+4D7kPug+7ArkPvA+9D74Pvw/AD8EPwg/D +D8QPxQ/GD8cPyA/JD8oPyw/MD80Pzg/PD9AP0Q/SD9MAYQ/UD9UP1g/XD9gP2Q/aD9sP3A/dD94P3w/g +D+EP4g/jD+QP5Q/mD+cP6A/pD+oP6w/sD+0P7g/vD/AP8Q/yD/MC0g/0D/UP9g/3D/gP+Q/6D/sP/A/9 +D/4P/xAAEAEQAhADEAQQBRAGEAcQCBAJEAoQCxAMEA0QDhAPEBAQERASEBMQFBAVEBYQFxAYEBkQGhAb +EBwQHRAeEB8QIBAhECIQIxAkECUQJhAnECgQKRAqECsQLBAtEC4QLxAwAnwQMRAyEDMQNBA1EDYQNxA4 +EDkQOhA7EDwQPRA+EEEQRBBHVSRudWxs3xASAA0ADgAPABAAEQASABMAFAAVABYAFwAYABkAGgAbABwA +HQAeAB8AIAAhACIAIwAkACUAJgAnACgAKQAqACsALAAtAC4ALwAwVk5TUm9vdFYkY2xhc3NdTlNPYmpl +Y3RzS2V5c18QD05TQ2xhc3Nlc1ZhbHVlc18QGU5TQWNjZXNzaWJpbGl0eU9pZHNWYWx1ZXNdTlNDb25u +ZWN0aW9uc1tOU05hbWVzS2V5c1tOU0ZyYW1ld29ya11OU0NsYXNzZXNLZXlzWk5TT2lkc0tleXNdTlNO +YW1lc1ZhbHVlc18QGU5TQWNjZXNzaWJpbGl0eUNvbm5lY3RvcnNdTlNGb250TWFuYWdlcl8QEE5TVmlz +aWJsZVdpbmRvd3NfEA9OU09iamVjdHNWYWx1ZXNfEBdOU0FjY2Vzc2liaWxpdHlPaWRzS2V5c1lOU05l +eHRPaWRcTlNPaWRzVmFsdWVzgAKBBAuBAi2BAyiBBAqAF4EChIAGgQMngQMpgQKFgQQIgACAB4ECg4EE +CREB2IEDKtIADgAyADMANFtOU0NsYXNzTmFtZYAFgAPSAA4ANgA3ADhZTlMuc3RyaW5ngARdTlNBcHBs +aWNhdGlvbtIAOgA7ADwAPVgkY2xhc3Nlc1okY2xhc3NuYW1lowA9AD4AP18QD05TTXV0YWJsZVN0cmlu +Z1hOU1N0cmluZ1hOU09iamVjdNIAOgA7AEEAQqIAQgA/Xk5TQ3VzdG9tT2JqZWN0XxAQSUJDb2NvYUZy +YW1ld29ya9IADgBFAEYAR1pOUy5vYmplY3RzgBahAEiACN4ASgAOAEsATABNAE4ATwBQAFEAUgBTAFQA +VQBWAFcAWABZAFoAWwBcAF0AXgBfAGAAYQBiAGMAZFxOU1dpbmRvd1ZpZXdfEBZOU1dpbmRvd0NvbnRl +bnRNYXhTaXplXE5TU2NyZWVuUmVjdF1OU1dpbmRvd1RpdGxlWU5TV1RGbGFnc11OU1dpbmRvd0NsYXNz +XxAWTlNXaW5kb3dDb250ZW50TWluU2l6ZVxOU1dpbmRvd1JlY3RZTlNNYXhTaXplXxAPTlNXaW5kb3dC +YWNraW5nXxARTlNXaW5kb3dTdHlsZU1hc2tZTlNNaW5TaXplW05TVmlld0NsYXNzgA+AFYANgBKAChJw +KAAAgAuADoAJgBQQAhAHgBOADF8QGHt7MTI1LCA4MjZ9LCB7MjEzLCAxMDd9fV8QEUluc3RhbnQgSGFu +ZEJyYWtlWE5TV2luZG930gAOADYANwBqgARUVmlld18QGnszLjQwMjgyZSszOCwgMy40MDI4MmUrMzh9 +WnsyMTMsIDEwN33UAG4ADgBvAHAAKwByAHMAdF8QD05TTmV4dFJlc3BvbmRlclhOU3ZGbGFnc1tOU0Zy +YW1lU2l6ZYAAgBERAQCAENIAOgA7AHYAd6MAdwB4AD9WTlNWaWV3W05TUmVzcG9uZGVyXxAWe3swLCAw +fSwgezE2ODAsIDEwMjh9fVp7MjEzLCAxMjl90gA6ADsAfAB9ogB9AD9fEBBOU1dpbmRvd1RlbXBsYXRl +0gA6ADsAfwCAowCAAIEAP1xOU011dGFibGVTZXRVTlNTZXTSAA4ARQCDAISAUK8QOgCFAIYAhwCIAIkA +igCLAIwAjQCOAI8AkACRAJIAkwCUAJUAlgCXAJgAmQCaAJsAnACdAJ4AnwCgAKEAogCjAKQApQCmAKcA +qACpAKoAqwCsAK0ArgCvALAAsQCyALMAtAC1ALYAtwC4ALkAugC7ALwAvQC+gBiAV4BlgGqAeoCFgIqA +q4C9gMOA8YD3gQEAgQECgQEIgQENgQESgQEegQEkgQErgQEwgQGrgQGtgQGvgQG0gQG4gQG8gQHCgQHH +gQHNgQHRgQHTgQHVgQHXgQHZgQHbgQHfgQHjgQHlgQHngQHsgQHugQHwgQH1gQH6gQH/gQIDgQIHgQIJ +gQILgQIPgQITgQIYgQIdgQIfgQIjgQIogQIp1AAOAMAAwQDCAMMAxADFAMZdTlNEZXN0aW5hdGlvblhO +U1NvdXJjZVdOU0xhYmVsgFaAG4AZgFXSAA4AMgAzAMmABYAaXxARRXhwcmVzc0NvbnRyb2xsZXLfEBQA +bgDMAA4AzQDOAM8A0ADRANIA0wDUAG8AcADVAGcA1gDXANgA2QDaANsA3ADdAN4A3wDgAOEA4gDjAOQA +5QBzAOYA4QDoAOkA6gDbAOwA7V8QH05TRHJhZ2dpbmdTb3VyY2VNYXNrRm9yTm9uTG9jYWxZTlNUdkZs +YWdzXE5TSGVhZGVyVmlld18QEU5TQmFja2dyb3VuZENvbG9yXxASTlNBbGxvd3NUeXBlU2VsZWN0XE5T +Q29ybmVyVmlld18QF05TSW50ZXJjZWxsU3BhY2luZ1dpZHRoXxAZTlNDb2x1bW5BdXRvcmVzaXppbmdT +dHlsZV8QGE5TSW50ZXJjZWxsU3BhY2luZ0hlaWdodFlOU0VuYWJsZWRbTlNHcmlkQ29sb3JfEBxOU0Ry +YWdnaW5nU291cmNlTWFza0ZvckxvY2FsW05TU3VwZXJ2aWV3Xk5TVGFibGVDb2x1bW5zW05TUm93SGVp +Z2h0gBwQAIBUEhLgAACAH4AyCYAjI0AIAAAAAAAAEAQjQAAAAAAAAACAHQmAHoBREA+AHIAnI0AxAAAA +AAAA2wBuAA4A7wDwAPEAbwDyAGcA8wDYAPQA9QD2APcA5AD4APkAxADoAPwA9QDEV05TRnJhbWVZTlNj +dkZsYWdzWk5TU3Vidmlld3NZTlNEb2NWaWV3WU5TQkdDb2xvcl1OU05leHRLZXlWaWV3gCSBAZeBAZaB +AZURCQCAG4AegDuAJIAbWXszNDcsIDc3fdcAbgAOAG8AcABnANgBAQECAQMAcwEEAOgBAgDEW05TVGFi +bGVWaWV3gCCAIoAhgB6AIIAb2wBuAA4A7wDwAPEAbwDyAGcA8wDYAPQA9QD2AQsA5AEMAPkA3wDoAPwA +9QDfgCSBAZeBAZ+BAZ6AH4AegDuAJIAfWXszNDcsIDE3fdIAOgA7ARQBFaQBFQB3AHgAP18QEU5TVGFi +bGVIZWFkZXJWaWV31gBuAA4A7wBvAGcA2AD1ARgBGQEaAOgA9YAkgCaAJRP/////gAABAIAegCTfEA8A +bgEeAA4A7wEfANEBIADxASEAbwBnANgBIgD0ASMBJAElASYBJwEoAOIBAgErASwAcwDoASQBLwDbANtb +TlNIU2Nyb2xsZXJYTlNzRmxhZ3NfEBBOU0hlYWRlckNsaXBWaWV3XE5TU2Nyb2xsQW10c1tOU1ZTY3Jv +bGxlcl1OU0NvbnRlbnRWaWV3gQGSgQGcgQGhgQGgEQKSgCOAIIEBlE8QEAAAAAAAAAAAQZgAAEGYAACA +HoEBkoEBmIAcgBxfEBR7ey0yNiwgMH0sIHsxNiwgMTd9fdIAOgA7ATQBNaQBNQB3AHgAP11fTlNDb3Ju +ZXJWaWV30gAOAEUAgwE4gFCkATkBOgE7ATyAKIBCgEeAS9sBPgAOAT8BQAFBAUIBQwFEAUUBRgEBAOEB +SAFJAUoBSwFMAU0BTgFPAOEAxF5OU0lzUmVzaXplYWJsZVxOU0hlYWRlckNlbGxcTlNJZGVudGlmaWVy +V05TV2lkdGhaTlNEYXRhQ2VsbF5OU1Jlc2l6aW5nTWFza1pOU01pbldpZHRoWk5TTWF4V2lkdGhcTlNJ +c0VkaXRhYmxlCYBBgCqAKSNANwAAAAAAAIA4EAMjQCQAAAAAAAAjQI9AAAAAAAAJgBtVQ2hlY2vXAVQA +DgDPAVUBVgFXAVgBWQFaAVsBXAFdANwBXltOU0NlbGxGbGFnc1pOU0NvbnRlbnRzWU5TU3VwcG9ydFxO +U0NlbGxGbGFnczJbTlNUZXh0Q29sb3ISBAH+AIA3gC+AK4AsgDRQ1AAOAWEBYgFjAWQBZQFmAWdWTlNT +aXplVk5TTmFtZVhOU2ZGbGFnc4AuI0AmAAAAAAAAgC0RDBxcTHVjaWRhR3JhbmRl0gA6ADsBagFrogFr +AD9WTlNGb2501QAOAW0BbgFvAXABcQDgAXMBdAF1V05TQ29sb3JcTlNDb2xvclNwYWNlW05TQ29sb3JO +YW1lXU5TQ2F0YWxvZ05hbWWAM4AyEAaAMYAwVlN5c3RlbVtoZWFkZXJDb2xvctMADgFuAXkBcQFNAXtX +TlNXaGl0ZYAzQjEA0gA6ADsBfQFtogFtAD/VAA4BbQFuAW8BcAFxAYABcwGBAXWAM4A2gDWAMF8QD2hl +YWRlclRleHRDb2xvctMADgFuAXkBcQFNAYaAM0IwANIAOgA7AYgBiaUBiQGKAYsBjAA/XxARTlNUYWJs +ZUhlYWRlckNlbGxfEA9OU1RleHRGaWVsZENlbGxcTlNBY3Rpb25DZWxsVk5TQ2VsbNgBVAAOAM8BVQFW +AY4BVwFYAY8BkAD8AZIBkwDEAZUBll1OU0NvbnRyb2xWaWV3EhQh/kCAQIA7gDmAOoAbEQgAgD5ZVGV4 +dCBDZWxs1AAOAWEBYgFjAWQBmgFmAZyALiNAKgAAAAAAAIAtEQQU1QAOAW0BbgFvAXABcQGfAXMBoAF1 +gDOAPYA8gDBfEBZjb250cm9sQmFja2dyb3VuZENvbG9y0wAOAW4BeQFxAU0BpYAzSzAuNjY2NjY2NjkA +1QAOAW0BbgFvAXABcQGAAXMBqQF1gDOANoA/gDBfEBBjb250cm9sVGV4dENvbG9y0gA6ADsBrQGKpAGK +AYsBjAA/0gA6ADsBrwGwogGwAD9dTlNUYWJsZUNvbHVtbtsBPgAOAT8BQAFBAUIBQwFEAUUBRgEBAOEB +SAG0AbUBtgG3AU0BuAFPAOEAxAmAQYBEgEMjQE//L+AAAACARiNARP8v4AAAAAmAG1VUaXRsZdcBVAAO +AM8BVQFWAVcBWAG9AVoBvwG1AV0A3AFeEgSB/gCAN4BFgEOALIA00wAOAW4BeQFxAU0BxYAzSzAuMzMz +MzMyOTkA2AFUAA4AzwFVAVYBjgFXAVgBjwGQAPwBkgGTAMQBlQGWgECAO4A5gDqAG4A+2wE+AA4BPwFA +AUEBQgFDAUQBRQFGAQEA4QFIAdAB0QHSAdMBTQHUAU8A4QDECYBBgEmASCNAYLUQAAAAAIBKI0BQ6iAA +AAAACYAbWER1cmF0aW9u1wFUAA4AzwFVAVYBVwFYAVkBWgFbAdEBXQDcAV6AN4AvgEiALIA02AFUAA4A +zwFVAVYBjgFXAVgBjwGQAPwBkgGTAMQBlQGWgECAO4A5gDqAG4A+2wE+AA4BPwFAAUEBQgFDAUQBRQFG +AQEA4QFIAegB6QHqAesBTQHsAU8A4QDECYBBgE2ATCNAXHbIwAAAAIBPI0BWgAAAAAAACYAbVFNpemXX +AVQADgDPAVUBVgFXAVgBWQFaAVsB8wFdANwBXoA3gC+AToAsgDRfEBBTaXplIChDb252ZXJ0ZWQp2AFU +AA4AzwFVAVYBjgFXAVgBjwGQAPwBkgGTAMQBlQGWgECAO4A5gDqAG4A+0gA6ADsB/wIAowIAAgEAP15O +U011dGFibGVBcnJheVdOU0FycmF51QAOAW0BbgFvAXABcQIEAXMCBQF1gDOAU4BSgDBZZ3JpZENvbG9y +0wAOAW4BeQFxAU0CCoAzRDAuNQDSADoAOwIMAQGlAQECDQB3AHgAP1lOU0NvbnRyb2xfEBFmQ29udmVy +dFRhYmxlVmlld9IAOgA7AhACEaMCEQISAD9fEBROU05pYk91dGxldENvbm5lY3Rvcl5OU05pYkNvbm5l +Y3RvctMADgDBAMICFAIVAhaAZIBYgGPYAA4CGAIZAhoCGwIcAh0CHgIfAiACIQIiAiMCJAIlAiZXTlNU +aXRsZV8QEU5TS2V5RXF1aXZNb2RNYXNrWk5TS2V5RXF1aXZdTlNNbmVtb25pY0xvY1lOU09uSW1hZ2Vc +TlNNaXhlZEltYWdlVk5TTWVudYBigFoSABAAAIBbEn////+AXIBggFnTAA4CGAIoAikCKgIrW05TTWVu +dUl0ZW1zgHaBAlyBAl1UVW5kb1F60wAOADICLwIwAjECMl5OU1Jlc291cmNlTmFtZYBfgF2AXldOU0lt +YWdlXxAPTlNNZW51Q2hlY2ttYXJr0gA6ADsCNgI3ogI3AD9fEBBOU0N1c3RvbVJlc291cmNl0wAOADIC +LwIwAjECO4BfgF2AYV8QEE5TTWVudU1peGVkU3RhdGXSADoAOwI+Aj+iAj8AP1pOU01lbnVJdGVtVXVu +ZG860gA6ADsCQgJDowJDAhIAP18QFU5TTmliQ29udHJvbENvbm5lY3RvctMADgDBAMICFAJGAkeAZIBm +gGnYAA4CGAIZAhoCGwIcAh0CHgIfAkoCIQFcAiMCJAIlAk6AYoBogCuAXIBggGfUAA4CGAFiAigCKQJR +AlICU4B2gQJRgQJTgQJSWkNsZWFyIE1lbnVfEBVjbGVhclJlY2VudERvY3VtZW50czrUAA4AwADBAMIA +wwJYAMUCWoBWgGuAGYB52ABuAA4A7wGMAG8A1QBnANgCXAJdAl4CXwBzAOEA6AJcgGyAeIBtgG4JgB6A +bNcAbgAOAO8A8QBvAGcA2AJkAHICZgJnAHMA6AJkgQE+gBGBAYiBAUCAHoEBPl8QFnt7MTY2LCAxMX0s +IHsxNjYsIDI2fX3fEBMBVAJsAm0CbgJvAA4CcAJxAnIBVgI/AY4CcwJ0AnUCdgFXAh4CdwJ4AOECegFc +AnwCfQJ6AZMCfwGTAoECWAFNAOEA4QKFAZUChgKHXxAaTlNNZW51SXRlbVJlc3BlY3RBbGlnbm1lbnRf +EA9OU0Fycm93UG9zaXRpb25fEBNOU0FsdGVybmF0ZUNvbnRlbnRzXxASTlNQZXJpb2RpY0ludGVydmFs +Xk5TQnV0dG9uRmxhZ3MyXxAQTlNBbHRlcm5hdGVJbWFnZV8QD05TS2V5RXF1aXZhbGVudF8QD05TUHJl +ZmVycmVkRWRnZV8QEk5TVXNlc0l0ZW1Gcm9tTWVudV1OU0FsdGVyc1N0YXRlXxAPTlNQZXJpb2RpY0Rl +bGF5XU5TQnV0dG9uRmxhZ3MT/////4RB/kAJEAGAKxBLgHeAOoBvgDqAcIBrCQkRAZCAcRIGgkD/0gAO +ADYANwFfgATbAosADgIYAhkCGgIbAhwCHQIeAowCjQJfAh8CkAIhAVwCIwIkAiUChgKVAnpYTlNUYXJn +ZXRYTlNBY3Rpb25XTlNTdGF0ZYBugGKAcoArgFyAYIBxgHPTAA4CGAIoAikCmAKZgHaAdIB1YiAmACBf +EBFfcG9wVXBJdGVtQWN0aW9uOtIADgA2ADcCnoAEWk90aGVyVmlld3PSAA4ARQCDAqGAUKECgYBw0gA6 +ADsCpAIeogIeAD/SADoAOwKmAqemAqcCqAKpAYsBjAA/XxARTlNQb3BVcEJ1dHRvbkNlbGxeTlNNZW51 +SXRlbUNlbGxcTlNCdXR0b25DZWxs0gA6ADsCqwKspgKsAq0CDQB3AHgAP11OU1BvcFVwQnV0dG9uWE5T +QnV0dG9uXxAVZkNvbnZlcnRTdWJ0aXRsZVBvcFVw1AAOAMAAwQDCAMMCsQDFArOAVoB7gBmAhNgAbgAO +AO8BjABvANUAZwDYArUCtgK3ArgCuQDhArsCtYB8gIOAfYB/EQEhCYB+gHzZAG4ADgDxAG8AcABnADIC +vgDYArsCwALBAHMCwgK7AsQCxQLGW05TRXh0ZW5zaW9ugH6A74DEgOuAfoDtgO6A7F8QFXt7Mjk1LCAx +Mn0sIHs3OSwgMzJ9fd0BVAAOAm4CbwJwAnECcgFVAVYBjgJ2AVcCdwLJAsoBXALMAnoBkwLOAs8BkwKx +AtIC0wLUE/////+EAf4AgIKAKxAZgDqAgYCAgDqAexDIEggAAAAT/////4aCQP9UT3BlblEN0gA6ADsC +2AKppAKpAYsBjAA/0gA6ADsC2gKtpQKtAg0AdwB4AD9dZk9wZW5Hb0J1dHRvbtMADgDBAMICFALeAt+A +ZICGgInYAA4CGAIZAhoCGwIcAh0CHgIfAuICIQLjAiMCJAIlAiaAYoCHgIiAXIBggFlTQ3V0UXhUY3V0 +OtQADgDAAMEAwgDDAuwAxQLugFaAi4AZgKrfEBMAbgAOAO8C8ALxAvIAzwLzAvQBawL1AG8A1QBnAvYA +2AL3AvgC+QL6AvsC/AL9AGEC/gL/AwAA4AGTAwMAcwDhArsCegL6AwcDCAMJW05TUHJvdG9DZWxsWU5T +TnVtUm93c15OU1NlbGVjdGVkQ2VsbFtOU0NlbGxDbGFzc18QFU5TQ2VsbEJhY2tncm91bmRDb2xvclpO +U0NlbGxTaXplWU5TTnVtQ29sc18QEk5TSW50ZXJjZWxsU3BhY2luZ11OU01hdHJpeEZsYWdzV05TQ2Vs +bHOAjICpgI2AmoCPgKeAmYAygDqAlwmAfoCMgJgSRCgAAICO1wBuAA4A7wDxAG8AZwDYAwsAcgMNAw4A +cwK7AwuAyoARgNyAzoB+gMpfEBV7ezEzLCA0MX0sIHsxMzUsIDU3fX3SAA4ARQCDAxSAUKIC/gMWgI+A +ld0BVAAOAm4CbwJwAnECcgFVAVYBjgJ2AVcCdwLJAsoDGQLMANwDGgMZAxwBkwLsAtIA3AMfgIKAlICR +gJSAkIA6gIsSSDxR/1pEVkQgRHJpdmU60gAOAyIDIwMkW05TSW1hZ2VOYW1lgJOAkl1OU1JhZGlvQnV0 +dG9u0gA6ADsDJwMoogMoAD9fEBNOU0J1dHRvbkltYWdlU291cmNl0gAOADYANwFfgATeAVQADgJuAm8C +cAJxAnIBVQFWAY4CdgFXAncDLAFZAsoDGQLMANwDGgMZAzEBkwLsAtIA3AMfAnpVTlNUYWeAgoCUgJGA +lICWgDqAi18QEkRWRCBGb2xkZXIgLyBGaWxlOll7MTM1LCAxOH1XezQsIDIxfdsBVAAOAzgCbwJwAnEB +VQFWAnYBVwJ3AVkCygM6AnwA3AMaAzwBkwKFANwDH11OU05vcm1hbEltYWdlgIKAnICRgJuAOlVSYWRp +b9UADgFhA0ADQQFtA0IDQwNEA0UDRlxOU0ltYWdlRmxhZ3NWTlNSZXBzgKaAnRIgwAAAgJ6ApVh7MTgs +IDE4fdIADgBFAIMDSoBQoQNLgJ/SAA4ARQNNA06ApKIDTwNQgKCAodIADgNSA1MDVF8QFE5TVElGRlJl +cHJlc2VudGF0aW9ugKOAok8RBcpNTQAqAAAFGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD +AAAAAwAAAAMAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD +AAAAPBEREYsnJyfJKysr8DU1NfAjIyPJHBwciwkJCTwAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAUVFRV1UFBQ4KioqP/b29v/+fn5//r6+v/a2tr/qqqq/1RUVOAfHx91AAAABQAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAABRkZGXl1dXX3w8PD//z8/P///////////////////////////9TU1P98fHz3 +JSUleQAAAAUAAAAAAAAAAAAAAAAAAAADERERRmpqaua1tbX/7e3t//7+/v/+/v7//v7+//39/f/9/f3/ +/f39//f39//ExMT/d3d35hkZGUYAAAADAAAAAAAAAAAAAAAKQkJCoa2trf/Gxsb/6+vr//Ly8v/19fX/ +9fX1//Pz8//19fX/8vLy/+7u7v/S0tL/r6+v/0pKSqEAAAAKAAAAAAAAAAAAAAAXeHh43b+/v//Pz8// +3d3d/+rq6v/v7+//7+/v//Dw8P/t7e3/7e3t/+Li4v/Ozs7/xcXF/3x8fN0AAAAXAAAAAAAAAAMAAAAk +pKSk+M7Ozv/Z2dn/4ODg/+Li4v/l5eX/5ubm/+fn5//l5eX/4uLi/97e3v/a2tr/0NDQ/6ysrPgAAAAk +AAAAAwAAAAMAAAAusLCw+tbW1v/e3t7/5OTk/+np6f/r6+v/7Ozs/+np6f/r6+v/5+fn/+Tk5P/g4OD/ +2dnZ/7Ozs/oAAAAuAAAAAwAAAAMAAAAunZ2d7ODg4P/l5eX/6urq/+7u7v/w8PD/8PDw//Hx8f/w8PD/ +7u7u/+rq6v/m5ub/4eHh/5mZmewAAAAuAAAAAwAAAAMAAAAkbm5uz+Xl5f/p6en/7+/v//Ly8v/29vb/ ++vr6//n5+f/39/f/9vb2//Hx8f/r6+v/5OTk/2tra88AAAAkAAAAAwAAAAAAAAAXLi4uk8LCwvrs7Oz/ +8/Pz//n5+f/+/v7//v7+//7+/v/+/v7/+/v7//X19f/w8PD/wsLC+iwsLJMAAAAXAAAAAAAAAAAAAAAK +AAAAQ19fX9Lk5OT++fn5//7+/v////////////////////////////z8/P/m5ub+X19f0gAAAEMAAAAK +AAAAAAAAAAAAAAADAAAAFwAAAGViYmLc0tLS/f///////////////////////////////9XV1f1kZGTc +AAAAZQAAABcAAAADAAAAAAAAAAAAAAAAAAAABQAAAB8AAABlMzMzwoCAgPC/v7/87e3t/+3t7f+/v7/8 +gICA8DMzM8IAAABlAAAAHwAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAXAAAAQwAAAHcAAACf +AAAAswAAALMAAACfAAAAdwAAAEMAAAAXAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD +AAAACgAAABcAAAAkAAAALgAAAC4AAAAkAAAAFwAAAAoAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAwAAAAMAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAANAQAAAwAAAAEAEgAAAQEAAwAAAAEAEgAAAQIAAwAAAAQAAAW6AQMAAwAAAAEAAQAAAQYAAwAA +AAEAAgAAAREABAAAAAEAAAAIARIAAwAAAAEAAQAAARUAAwAAAAEABAAAARYAAwAAAAEHHAAAARcABAAA +AAEAAAUQARwAAwAAAAEAAQAAAVIAAwAAAAEAAQAAAVMAAwAAAAQAAAXCAAAAAAAIAAgACAAIAAEAAQAB +AAHSADoAOwNXA1ijA1gDWQA/XxAQTlNCaXRtYXBJbWFnZVJlcFpOU0ltYWdlUmVw0gA6ADsDWwIBogIB +AD/TAA4BbgF5AXEBTQNegDNEMCAwANIAOgA7A2ACM6ICMwA/1QAOAW0BbgFvAXABcQGfAXMDZAF1gDOA +PYCogDBcY29udHJvbENvbG9y0gA6ADsDaANppQNpAg0AdwB4AD9YTlNNYXRyaXhbZk9wZW5NYXRyaXjU +AA4AwADBAMIAwwNtAMUDb4BWgKyAGYC82ABuAA4A7wGMAG8A1QBnANgC+gJdA3MDdABzAOECuwL6gIyA +eICtgK4JgH6AjF8QFnt7MTUzLCA3NX0sIHsxODEsIDI2fX3fEBMBVAJsAm0CbgJvAA4CcAJxAnIBVgI/ +AY4CcwJ0AnUCdgFXAh4CdwJ4AOECegFcAnwCfQJ6AZMDfgGTA4ADbQFNAOEA4QKFAZUDhAKHCYArgHeA +OoCvgDqAsICsCQmAsdIADgA2ADcBX4AE2wKLAA4CGAIZAhoCGwIcAh0CHgKMAo0DdAIfA4oCIQFcAiMC +JAIlA4QDjwJ6gK6AYoCygCuAXIBggLGAs9MADgIYAigCKQOSA5OAdoC0gLVVSXRlbTHSAA4ANgA3Ap6A +BNIADgBFAIMDmYBQowOAA5sDnICwgLaAudoCiwAOAhgCGQIaAhsCHAIdAh4CjAN0Ah8DoAIhAVwCIwIk +AiUDhAOlgK6AYoC3gCuAXIBggLGAuFVJdGVtMtoCiwAOAhgCGQIaAhsCHAIdAh4CjAN0Ah8DqgIhAVwC +IwIkAiUDhAOvgK6AYoC6gCuAXIBggLGAu1VJdGVtM1pmT3BlblBvcFVw1AAOAMAAwQDCAhQAHwO1A7aA +ZIACgL6AwtgADgIYAhkCGgIbAhwCHQIeAh8DuQO6A7sCIwIkAiUDvoBigMASABgAAIDBgFyAYIC/1AAO +AhgBYgIoAikAWwPCA8OAdoAKgQJxgQJwW0hpZGUgT3RoZXJzUWhfEBZoaWRlT3RoZXJBcHBsaWNhdGlv +bnM61AAOAMAAwQDCAMMCtQDFA8uAVoB8gBmA8NIADgBFAIMDzoBQpQPPArEDCwPSA9OAxYB7gMqA44Do +2ABuAA4A7wGMAG8A1QBnANgCtQPWA9cD2APZAOECuwK1gHyAyYDGgMcRAQwJgH6AfF8QFXt7MTcsIDE4 +NX0sIHs5OSwgMTd9fdgBVAAOAM8BVQFWAY4BVwFYAVkBkAL/A+EBkwPPA+QBloBAgKeAyIA6gMUSEEAA +AIA+XxAPU2VsZWN0IGEgU291cmNl0gA6ADsD6APppQPpAg0AdwB4AD9bTlNUZXh0RmllbGTfEBAAbgPr +AA4D7ADvA+0D7gDxAG8D7wBnADID8APxANgBIwK1AU0D8wP0A/UD9gP3A/gD2QJ6ArsD+gP7ANwCtQL6 +WU5TQm94VHlwZVtOU1RpdGxlQ2VsbF8QE05TT3JpZ2luYWxDbGFzc05hbWVdTlNUcmFuc3BhcmVudFxO +U0JvcmRlclR5cGVZTlNPZmZzZXRzXxAPTlNUaXRsZVBvc2l0aW9ugHyA4oDfgN2AzAiAzYB+gMuA3oB8 +gIxYV2hpdGVCb3hVTlNCb3jSAA4ARQCDBAKAUKEC+oCM0gAOAEUAgwQGgFCkAuwDbQQJBAqAi4CsgM+A +1tgAbgAOAO8BjABvANUAZwDYAvoD1gQOBA8AcwDhArsC+oCMgMmA0IDRCYB+gIxfEBZ7ezE1NiwgNDB9 +LCB7MTc1LCAyMn192QFUAA4AzwFVAVYBjgFXBBUBWAQWAZAEGAFcAZMECQQcAOEEHl8QEU5TRHJhd3NC +YWNrZ3JvdW5kE/////+Ucf5BgECA0oArgDqAzxIQQAQACYDU1QAOAW0BbgFvAXABcQDgAXMEIgF1gDOA +MoDTgDBfEBN0ZXh0QmFja2dyb3VuZENvbG9y1QAOAW0BbgFvAXABcQGAAXMEKAF1gDOANoDVgDBZdGV4 +dENvbG9y2ABuAA4A7wGMAG8A1QBnANgC+gK2BC4ELwBzAOECuwL6gIyAg4DXgNgJgH6AjF8QFHt7MjU2 +LCA4fSwgezgwLCAyOH193QFUAA4CbgJvAnACcQJyAVUBVgGOAnYBVwJ3AVkCygFcAswCegQ3BDgEOQFd +BAoC0gQ8AtSAgoArgNqA24DZgCyA1hIIAgAAZwBCAHIAbwB3AHMAZSAm1AAOAWEBYgFjAWQBZQFmBEGA +LoAtEBDSAA4ANgA3AV+ABF8QFHt7MSwgMX0sIHszNDYsIDExNX19XxAWe3syMCwgNjB9LCB7MzQ4LCAx +MTd9fVZ7MCwgMH3XAVQADgDPAVUBVgFXAVgBWQGQBBgESgFdANwETIBAgNKA4IAsgOFTQm940wAOAW4B +eQFxAU0EUIAzTTAgMC44MDAwMDAwMQDSADoAOwRSBFOiBFMAP15OU0NsYXNzU3dhcHBlctkAbgAOAO8E +VQBvAGcEVgDYBFcCtQRZBFoEWwRcArsEXgK1BGBaTlNNYXhWYWx1ZVlOU3BpRmxhZ3NcTlNEcmF3TWF0 +cml4gHyA54DmI0BZAAAAAAAAE/////+AAAUMgH4RQAyAfIDk0QAOBGKA5dIAOgA7BGQEZaIEZQA/Wk5T +UFNNYXRyaXhfEBZ7ezE4LCAtMjl9LCB7MzUyLCAyMH190gA6ADsEaARppARpAHcAeAA/XxATTlNQcm9n +cmVzc0luZGljYXRvctgAbgAOAO8BjABvANUAZwDYArUD1gRtBG4D2QDhArsCtYB8gMmA6YDqCYB+gHxf +EBV7ezE3LCAyMH0sIHsyNzksIDE3fX3YAVQADgDPAVUBVgGOAVcBWAFZAZAC/wFcAZMD0wPkAZaAQICn +gCuAOoDogD5aezM4OCwgMjEyfdIADgA2ADcAd4AE0gA6ADsEfgR/pAR/AHcAeAA/XE5TQ3VzdG9tVmll +d1lmT3BlblZpZXfTAA4AwQDCAhQEgwSEgGSA8oD22QAOAhgCGQIaAhsCHAIdAh4DLAIfBIcCIQSIAiMC +JAIlBIsAYoBigPSA9YBcgGCA89MADgIYAigCKQSOBI+AdoECY4ECZF8QFlVzZSBTZWxlY3Rpb24gZm9y +IEZpbmRRZV8QF3BlcmZvcm1GaW5kUGFuZWxBY3Rpb2461AAOAMAAwQDCAMMElQDFBJeAVoD4gBmA/9gA +bgAOAO8BjABvANUAZwDYAlwCXQSbBJwAcwDhAOgCXIBsgHiA+YD6CYAegGxfEBd7ezE2NiwgMTMxfSwg +ezE2NiwgMjZ9fd8QFAFUAmwCbQJuAm8ADgJwAnECcgFWAj8BjgJzAnQCdQJ2AVcCHgJ3BKICeADhAnoB +XAJ8An0CegGTBKcBkwArBJUBTQDhAOEChQGVBK0ChwSuXxAPTlNTZWxlY3RlZEluZGV4CYArgHeAOoD7 +gDqAAID4CQmA/BP//////////9IADgA2ADcBX4AE0wAOAhgCKAIpBLMEtIB2gP2A/tIADgA2ADcCnoAE +0gAOAEUAgwS5gFCgXxATZkNvbnZlcnRGb3JtYXRQb3BVcNQADgDAAMEAwgIUAMUCsQS/gGSAGYB7gQEB +V29wZW5HbzrTAA4AwQDCAhQEwwTEgGSBAQOBAQfYAA4CGAIZAhoCGwIcAh0CHgIfBMcCIQTIAiMCJAIl +BMuAYoEBBYEBBoBcgGCBAQTTAA4CGAIoAikEzgTPgHaBAjeBAjhfEBZJbnN0YW50IEhhbmRCcmFrZSBI +ZWxwUT9Zc2hvd0hlbHA60wAOAMEAwgIUBNUE1oBkgQEJgQEM2AAOAhgCGQIaAhsCHAIdAh4CHwTZAiEE +2gIjAiQCJQImgGKBAQqBAQuAXIBggFlVUGFzdGVRdlZwYXN0ZTrTAA4AwQDCAhQE4wTkgGSBAQ6BARHY +AA4CGAIZAhoCGwIcAh0CHgIfBOcCIQFcAiMCJAIlBOuAYoEBEIArgFyAYIEBD9MADgIYAigCKQTuBO+A +doECaoECbF1TdG9wIFNwZWFraW5nXXN0b3BTcGVha2luZzrUAA4AwADBAMIAwwT0AMUE9oBWgQETgBmB +AR3YAG4ADgDvAYwAbwDVAGcA2AJcAl0E+gT7AHMA4QDoAlyAbIB4gQEUgQEVCYAegGxfEBZ7ezE2Niwg +NDF9LCB7MTY2LCAyNn193xATAVQCbAJtAm4CbwAOAnACcQJyAVYCPwGOAnMCdAJ1AnYBVwIeAncCeADh +AnoBXAJ8An0CegGTBQUBkwUHBPQBTQDhAOEChQGVBQsChwmAK4B3gDqBARaAOoEBF4EBEwkJgQEY0gAO +ADYANwFfgATbAosADgIYAhkCGgIbAhwCHQIeAowCjQT7Ah8FEQIhAVwCIwIkAiUFCwUWAnqBARWAYoEB +GYArgFyAYIEBGIEBGtMADgIYAigCKQUZBRqAdoEBG4EBHGEgJtIADgA2ADcCnoAE0gAOAEUAgwUggFCh +BQeBARdfEBJmQ29udmVydEF1ZGlvUG9wVXDTAA4AwQDCAhQFJQUmgGSBAR+BASPYAA4CGAIZAhoCGwIc +Ah0CHgIfBSkCIQUqAiMCJAIlBS2AYoEBIYEBIoBcgGCBASDTAA4CGAIoAikFMAUxgHaBAmaBAmhpAFMA +cABlAGwAbABpAG4AZyAmUTpfEA9zaG93R3Vlc3NQYW5lbDrUAA4AwADBAMICFADFBTgFOYBkgBmBASWB +ASraAosADgIYAhkCGgIbAhwCHQIeAowFOwIfBT0CIQFcAiMCJAIlBUEFQoEBKYBigQEngCuAXIBggQEm +gQEo0wAOAhgCKAIpBUUFRoB2gQFSgQFTZgBPAHQAaABlAHIgJt8QEwFUAmwCbQJuAm8ADgJwAnECcgFW +Aj8BjgJzAnQCdQJ2AVcCHgJ3AngA4QJ6AVwCfAJ9AnoBkwVNAZMFTwVQAU0A4QDhAoUBlQVBAocJgCuA +d4A6gQFPgDqBAVCBAU0JCYEBJl8QFnNlbGVjdEZvbGRlclNoZWV0U2hvdzrTAA4AwQDCAhQFVwVYgGSB +ASyBAS/YAA4CGAIZAhoCGwIcAh0CHgIfBVsCIQVcAiMCJAIlBS2AYoEBLYEBLoBcgGCBASBeQ2hlY2sg +U3BlbGxpbmdRO15jaGVja1NwZWxsaW5nOtQADgDAAMEAwgDDBWUAxQVngFaBATGAGYEBqtkAbgAOAPEA +bwBwAGcAMgK+ANgA6ALABWsAcwVsAOgFbgLFBXCAHoDvgQEygQGngB6BAamA7oEBqNIADgBFAIMFc4BQ +pgV0BXUFdgJkBXgFeYEBM4EBN4EBOoEBPoEBjIEBkNgAbgAOAO8BjABvANUAZwDYBWUD1gV9BX4AcwDh +AOgFZYEBMYDJgQE0gQE1CYAegQExXxAWe3sxNywgMzkzfSwgezEzOSwgMTd9fdgBVAAOAM8BVQFWAY4B +VwFYAVkBkAL/BYYBkwV0A+QBloBAgKeBATaAOoEBM4A+XxATU2VsZWN0IERWRCBGZWF0dXJlc9kAbgAO +AO8EVQBvAGcEVgDYBFcFZQRZBY4EWwWPAOgEXgVlBZKBATGA54EBOREFAIAegQExgQE40QAOBGKA5V8Q +FXt7MTgsIDE2fSwgezM1MiwgMjB9fdgAbgAOAO8BjABvANUAZwDYBWUD1gWZBZoAcwDhAOgFZYEBMYDJ +gQE7gQE8CYAegQExXxAVe3sxNywgMjczfSwgezU5LCAxN3192AFUAA4AzwFVAVYBjgFXAVgBWQGQAv8F +ogGTBXYD5AGWgECAp4EBPYA6gQE6gD5YU2V0dGluZ3PfEBAAbgPrAA4D7ADvA+0D7gDxAG8D7wBnADID +8APxANgBIwVlAU0D8wWqBasD9gP3Ba4AcwJ6AOgD+gP7ANwFZQJcgQExgOKBAYqBAYmAzAiBAT+AHoDL +gN6BATGAbNIADgBFAIMFtoBQoQJcgGzSAA4ARQCDBbqAUKwE9AW8Bb0ElQW/BVACWAXCBcMFxAXFBcaB +AROBAUGBAUWA+IEBSYEBTYBrgQFWgQFagQFegQFxgQGE2ABuAA4A7wGMAG8A1QBnANgCXAPWBcoFywBz +AOEA6AJcgGyAyYEBQoEBQwmAHoBsXxAVe3s1OCwgNDd9LCB7MTA2LCAxN3192AFUAA4AzwFVAVYBjgFX +AVgBWQGQAv8F0wGTBbwF1gGWgECAp4EBRIA6gQFBEgRAAACAPl8QEFByZWZlcnJlZCBhdWRpbzrYAG4A +DgDvAYwAbwDVAGcA2AJcA9YF3AXdAHMA4QDoAlyAbIDJgQFGgQFHCYAegGxfEBV7ezg3LCAxMzd9LCB7 +NzcsIDE3fX3YAVQADgDPAVUBVgGOAVcBWAFZAZAC/wXlAZMFvQXWAZaAQICngQFIgDqBAUWAPlxGaWxl +IGZvcm1hdDrYAG4ADgDvAYwAbwDVAGcA2AJcA9YF7QXuAHMA4QDoAlyAbIDJgQFKgQFLCYAegGxfEBZ7 +ezE0LCAxNjd9LCB7MTUwLCAxN3192AFUAA4AzwFVAVYBjgFXAVgBWQGQAv8F9gGTBb8F1gGWgECAp4EB +TIA6gQFJgD5fEBhTYXZlIGNvbnZlcnRlZCBmaWxlcyB0bzrYAG4ADgDvAYwAbwDVAGcA2AJcAl0F/gU7 +AHMA4QDoAlyAbIB4gQFOgQEpCYAegGxfEBd7ezE2NiwgMTYxfSwgezE2NiwgMjZ9fdIADgA2ADcBX4AE +2wKLAA4CGAIZAhoCGwIcAh0CHgKMAo0FOwIfBRECIQFcAiMCJAIlBUEGDgJ6gQEpgGKBARmAK4BcgGCB +ASaBAVHSAA4ANgA3Ap6ABNIADgBFAIMGE4BQowVPBhUFOIEBUIEBVIEBJdwCiwAOAhgCGQYYAhoGGQIb +AhwCHQIeAowFOwIfAVwCIQDhAVwA4QIjAiQCJQVBBiNdTlNJc1NlcGFyYXRvclxOU0lzRGlzYWJsZWSB +ASmAYoArCYArCYBcgGCBASaBAVXYAG4ADgDvAYwAbwDVAGcA2AJcA9YGJwYoAHMA4QDoAlyAbIDJgQFX +gQFYCYAegGxfEBV7ezM2LCAxN30sIHsxMjgsIDE3fX3YAVQADgDPAVUBVgGOAVcBWAFZAZAC/wYwAZMF +wgXWAZaAQICngQFZgDqBAVaAPl8QFFByZWZlcnJlZCBzdWJ0aXRsZXM62ABuAA4A7wGMAG8A1QBnANgC +XAPWBjgGOQBzAOEA6AJcgGyAyYEBW4EBXAmAHoBsXxAVe3s2NiwgMTA3fSwgezk4LCAxN3192AFUAA4A +zwFVAVYBjgFXAVgBWQGQAv8GQQGTBcMF1gGWgECAp4EBXYA6gQFagD5fEA9QaWN0dXJlIEFzcGVjdDrY +AG4ADgDvAYwAbwDVAGcA2AJcAl0GSQZKAHMA4QDoAlyAbIB4gQFfgQFgCYAegGxfEBd7ezE2NiwgMTAx +fSwgezE2NiwgMjZ9fd8QEwFUAmwCbQJuAm8ADgJwAnECcgFWAj8BjgJzAnQCdQJ2AVcCHgJ3AngA4QJ6 +AVwCfAJ9AnoBkwZUAZMGVgXEAU0A4QDhAoUBlQZaAocJgCuAd4A6gQFhgDqBAWKBAV4JCYEBY9IADgA2 +ADcBX4AE2wKLAA4CGAIZAhoCGwIcAh0CHgKMAo0GSgIfBmACIQFcAiMCJAIlBloGZQJ6gQFggGKBAWSA +K4BcgGCBAWOBAWXTAA4CGAIoAikGaAZpgHaBAWaBAWdYT3JpZ2luYWzSAA4ANgA3Ap6ABNIADgBFAIMG +b4BQpAZWBnEGcgZzgQFigQFogQFrgQFu2gKLAA4CGAIZAhoCGwIcAh0CHgKMBkoCHwZ3AiEBXAIjAiQC +JQZaBnyBAWCAYoEBaYArgFyAYIEBY4EBalY0IGJ5IDPaAosADgIYAhkCGgIbAhwCHQIeAowGSgIfBoEC +IQFcAiMCJAIlBloGhoEBYIBigQFsgCuAXIBggQFjgQFtVzE2IGJ5IDnaAosADgIYAhkCGgIbAhwCHQIe +AowGSgIfBosCIQFcAiMCJAIlBloGkIEBYIBigQFvgCuAXIBggQFjgQFwWkFuYW1vcnBoaWPYAG4ADgDv +AYwAbwDVAGcA2AJcAl0GlQaWAHMA4QDoAlyAbIB4gQFygQFzCYAegGxfEBZ7ezE2NiwgNzF9LCB7MTY2 +LCAyNn193xAUAVQCbAJtAm4CbwAOAnACcQJyAVYCPwGOAnMCdAJ1AnYBVwIeAncEogJ4AOECegFcAnwC +fQJ6Bp8GoAGTBqIFxQFNAOEA4QKFAZUGpgKHAnoJgCuAd4EBdIEBdYA6gQF2gQFxCQmBAXfUAA4BYQFi +AWMBZAGaAWYEQYAugC3SAA4ANgA3AV+ABNsCiwAOAhgCGQIaAhsCHAIdAh4CjAKNBpYCHwavAiEBXAIj +AiQCJQamBrQCeoEBc4BigQF4gCuAXIBggQF3gQF50wAOAhgCKAIpBrcGuIB2gQF6gQF7UzY0MNIADgA2 +ADcCnoAE0gAOAEUAgwa+gFCkBr8GogbBBsKBAXyBAXaBAX6BAYHaAosADgIYAhkCGgIbAhwCHQIeAowG +lgIfBmACIQFcAiMCJAIlBqYGy4EBc4BigQFkgCuAXIBggQF3gQF92gKLAA4CGAIZAhoCGwIcAh0CHgKM +BpYCHwbPAiEBXAIjAiQCJQamBtSBAXOAYoEBf4ArgFyAYIEBd4EBgFM0ODDaAosADgIYAhkCGgIbAhwC +HQIeAowGlgIfBtkCIQFcAiMCJAIlBqYG3oEBc4BigQGCgCuAXIBggQF3gQGDUzMyMNgAbgAOAO8BjABv +ANUAZwDYAlwD1gbjBuQAcwDhAOgCXIBsgMmBAYWBAYYJgB6AbF8QFXt7NDIsIDc3fSwgezEyMiwgMTd9 +fdgBVAAOAM8BVQFWAY4BVwFYAVkBkAL/BuwBkwXGBdYBloBAgKeBAYeAOoEBhIA+XxASTWF4IFBpY3R1 +cmUgV2lkdGg6XxAUe3sxLCAxfSwgezM0NiwgMjAwfX1fEBZ7ezIwLCA2OX0sIHszNDgsIDIwMn191wFU +AA4AzwFVAVYBVwFYAVkBkAQYBEoBXQDcBviAQIDSgOCALIEBi9MADgFuAXkBcQFNBFCAM9gAbgAOAO8B +jABvANUAZwDYBWUD1gb+Bv8AcwDhAOgFZYEBMYDJgQGNgQGOCYAegQExXxAVe3sxNywgNDR9LCB7MzU0 +LCAxN3192AFUAA4AzwFVAVYBjgFXAVgBWQGQAv8HBwGTBXgD5AGWgECAp4EBj4A6gQGMgD5VUmVhZHne +AG4D6wAOA+wA7wPuAPEAbwPvAGcD8APxANgBIwVlAU0HDgcPBxAD9wcSAHMCegDoA/sA3AVlASSBATGB +AaaBAaSBAaMIgQGRgB6A3oEBMYEBktIADgBFAIMHGYBQoQEkgQGS1wBuAA4A7wDxAG8AZwDYBXkAcgce +Bx8AcwDoBXmBAZCAEYEBooEBk4AegQGQ0gAOAEUAgwckgFChAPWAJNIADgBFAIMHKIBQpQDbAS8BJQEC +AOKAHIEBmIEBnIAggCPSAA4ARQCDBzCAUKEAxIAbXxAUe3sxLCAxN30sIHszNDYsIDc3fX3SADoAOwc0 +BzWkBzUAdwB4AD9aTlNDbGlwVmlld9kAbgKLAA4A7wBvAGcCjADYBzcA9QD1BzoHOwEaAOgHPQD1Bz9Z +TlNQZXJjZW50gCSAJIEBm4EBmYAegQGagCQjP9nv1QAAAABfEBV7ezMzMiwgMTd9LCB7MTUsIDc3fX1c +X2RvU2Nyb2xsZXI60gA6ADsHQwdEpQdEAg0AdwB4AD9aTlNTY3JvbGxlctsAbgKLAA4A7wEfAG8A1QBn +AowA2Ac3APUA9Qc6B0kCegBzAOEA6Ac9APUHToAkgCSBAZuBAZ0JgB6BAZqAJCM/7fIYIAAAAF8QGXt7 +LTEwMCwgLTEwMH0sIHszNzksIDE1fX3SAA4ARQCDB1KAUKEA34AfXxATe3sxLCAwfSwgezM0NiwgMTd9 +fV8QFXt7LTEsIC0xfSwgezM0OCwgOTV9fdIAOgA7B1cHWKQHWAB3AHgAP1xOU1Njcm9sbFZpZXdfEBN7 +ezEsIDF9LCB7MzQ2LCA5M319XxAWe3syMCwgMjk1fSwgezM0OCwgOTV9fdcBVAAOAM8BVQFWAVcBWAFZ +AZAEGARKAV0A3AdggECA0oDggCyBAaXTAA4BbgF5AXEBTQRQgDPSADoAOwdkA/+kA/8AdwB4AD9aezM4 +OCwgNDIwfdIADgA2ADcAd4AEXGZDb252ZXJ0Vmlld9QADgDAAMEAwgDDAEgAxQdtgFaACIAZgQGsV2ZX +aW5kb3fUAA4AwADBAMIAwwV4AMUHc4BWgQGMgBmBAa5fEBJmQ29udmVydEluZm9TdHJpbmfTAA4AwQDC +AhQHdwd4gGSBAbCBAbPYAA4CGAIZAhoCGwIcAh0CHgIfB3sCIQd8AiMCJAIlAiaAYoEBsYEBsoBcgGCA +WVRSZWRvUVpVcmVkbzrTAA4AwQDCAhQHhQeGgGSBAbWBAbfYAA4CGAIZAhoCGwIcAh0CHgIfB4kCIQFc +AiMCJAIlAiaAYoEBtoArgFyAYIBZVkRlbGV0ZVdkZWxldGU61AAOAMAAwQDCAhQAHweTB5SAZIACgQG5 +gQG71wAOAhgCGgIbAhwCHQIeAh8HlwFcAiMCJAIlA76AYoEBuoArgFyAYIC/XxAXQWJvdXQgSW5zdGFu +dCBIYW5kQnJha2VfEB1vcmRlckZyb250U3RhbmRhcmRBYm91dFBhbmVsOtMADgDBAMICFAegB6GAZIEB +vYEBwdgADgIYAhkCGgIbAhwCHQIeAh8HpAIhB6UCIwIkAiUHqIBigQG/gQHAgFyAYIEBvtQADgIYAWIC +KAIpB6sHrAetgHaBAnSBAneBAnVYTWluaW1pemVRbV8QE3BlcmZvcm1NaW5pYXR1cml6ZTrTAA4AwQDC +AhQHswe0gGSBAcOBAcbYAA4CGAIZAhoCGwIcAh0CHgIfB7cCIQe4AiMCJAIlAiaAYoEBxIEBxYBcgGCA +WVpTZWxlY3QgQWxsUWFac2VsZWN0QWxsOtMADgDBAMICFAfBB8KAZIEByIEBzNgADgIYAhkCGgIbAhwC +HQIeAh8HxQIhB8YCIwIkAiUHyYBigQHKgQHLgFyAYIEBydMADgIYAigCKQfMB82AdoECSYECSlVDbG9z +ZVF3XXBlcmZvcm1DbG9zZTrTAA4AwQDCAhQH0wfUgGSBAc6BAdDYAA4CGAIZAhoCGwIcAh0CHgIfB9cC +IQFcAiMCJAIlBOuAYoEBz4ArgFyAYIEBD15TdGFydCBTcGVha2luZ15zdGFydFNwZWFraW5nOtQADgDA +AMEAwgIUAMUC7AfigGSAGYCLgQHSXxASb3Blbk1hdHJpeENoYW5nZWQ61AAOAMAAwQDCAMMFxADFB+iA +VoEBXoAZgQHUXxATZkNvbnZlcnRBc3BlY3RQb3BVcNQADgDAAMEAwgIUAMUECgfugGSAGYDWgQHWW29w +ZW5Ccm93c2U61AAOAMAAwQDCAMMECgDFB/SAVoDWgBmBAdhfEBFmT3BlbkJyb3dzZUJ1dHRvbtQADgDA +AMEAwgDDA9MAxQf6gFaA6IAZgQHaXxASZk9wZW5Qcm9ncmVzc0ZpZWxk0wAOAMEAwgIUB/4H/4BkgQHc +gQHe2AAOAhgCGQIaAhsCHAIdAh4CHwgCAiEBXAIjAiQCJQeogGKBAd2AK4BcgGCBAb5fEBJCcmluZyBB +bGwgdG8gRnJvbnRfEA9hcnJhbmdlSW5Gcm9udDrUAA4AwADBAMICFAAfCAwIDYBkgAKBAeCBAeLYAA4C +GAIZAhoCGwIcAh0CHgIfCBACIQO7AiMCJAIlA76AYoEB4YDBgFyAYIC/XxAWSGlkZSBJbnN0YW50IEhh +bmRCcmFrZVVoaWRlOtQADgDAAMEAwgDDBAkAxQgbgFaAz4AZgQHkXxAQZk9wZW5Gb2xkZXJGaWVsZNQA +DgDAAMEAwgDDBcUAxQghgFaBAXGAGYEB5l8QFWZDb252ZXJ0TWF4V2lkdGhQb3BVcNMADgDBAMICFAgl +CCaAZIEB6IEB69gADgIYAhkCGgIbAhwCHQIeAh8IKQO6CCoCIwIkAiUCJoBigQHpgQHqgFyAYIBZXxAV +UGFzdGUgYW5kIE1hdGNoIFN0eWxlUVZfEBFwYXN0ZUFzUGxhaW5UZXh0OtQADgDAAMEAwgDDAMUAxAg1 +gFaAGYAbgQHtWmRhdGFTb3VyY2XUAA4AwADBAMIAwwDFAMQIO4BWgBmAG4EB71hkZWxlZ2F0ZdQADgDA +AMEAwgDDCD8AxQhBgFaBAfGAGYEB9NYAbgAOAG8AcAAyAr4AKwLAAHMIRQhGAsWAAIDvgQHygQHzgO5Z +ezEzNSwgNjV9WmZFbXB0eVZpZXfTAA4AwQDCAhQITAhNgGSBAfaBAfnYAA4CGAIZAhoCGwIcAh0CHgIf +CFACIQhRAiMCJAIlBIuAYoEB94EB+IBcgGCA818QEUp1bXAgdG8gU2VsZWN0aW9uUWpfEB1jZW50ZXJT +ZWxlY3Rpb25JblZpc2libGVBcmVhOtMADgDBAMICFAhaCFuAZIEB+4EB/tgADgIYAhkCGgIbAhwCHQIe +Ah8IXgIhCF8CIwIkAiUHyYBigQH8gQH9gFyAYIEByWsAUABhAGcAZQAgAFMAZQB0AHUAcCAmUVBecnVu +UGFnZUxheW91dDrUAA4AwADBAMICFAAfCGkIaoBkgAKBAgCBAgLYAA4CGAIZAhoCGwIcAh0CHgIfCG0C +IQFcAiMCJAIlA76AYoECAYArgFyAYIC/WFNob3cgQWxsXxAWdW5oaWRlQWxsQXBwbGljYXRpb25zOtMA +DgDBAMICFAh2CHeAZIECBIECBtgADgIYAhkCGgIbAhwCHQIeAh8IegIhAVwCIwIkAiUHqIBigQIFgCuA +XIBggQG+VFpvb21ccGVyZm9ybVpvb2061AAOAMAAwQDCAMMD0gDFCIWAVoDjgBmBAgheZk9wZW5JbmRp +Y2F0b3LUAA4AwADBAMIAwwV1AMUIi4BWgQE3gBmBAgpfEBFmQ29udmVydEluZGljYXRvctMADgDBAMIC +FAiPBISAZIECDID22QAOAhgCGQIaAhsCHAIdAh4DLAIfCJMCIQiUAiMCJAIlBIsAYYBigQINgQIOgFyA +YIDzWUZpbmQgTmV4dFFn0wAOAMEAwgIUCJwEhIBkgQIQgPbZAA4CGAIZAhoCGwIcAh0CHgMsAh8IoAIh +CKECIwIkAiUEiwFNgGKBAhGBAhKAXIBggPNdRmluZCBQcmV2aW91c1FH0wAOAMEAwgIUCKkIqoBkgQIU +gQIX2AAOAhgCGQIaAhsCHAIdAh4CHwitAiEIrgIjAiQCJQfJgGKBAhWBAhaAXIBggQHJZgBQAHIAaQBu +AHQgJlFwVnByaW50OtMADgDBAMICFAi3CLiAZIECGYECHNgADgIYAhkCGgIbAhwCHQIeAh8IuwIhCLwC +IwIkAiUCJoBigQIagQIbgFyAYIBZVENvcHlRY1Vjb3B5OtQADgDAAMEAwgDDBVAAxQjHgFaBAU2AGYEC +Hl8QE2ZDb252ZXJ0Rm9sZGVyUG9wVXDTAA4AwQDCAhQIywSEgGSBAiCA9tkADgIYAhkCGgIbAhwCHQIe +AywCHwjPAiEI0AIjAiQCJQSLAnqAYoECIYECIoBcgGCA82UARgBpAG4AZCAmUWbUAA4AwADBAMICFAAf +CNkI2oBkgAKBAiSBAifYAA4CGAIZAhoCGwIcAh0CHgIfCN0CIQjeAiMCJAIlA76AYoECJYECJoBcgGCA +v18QFlF1aXQgSW5zdGFudCBIYW5kQnJha2VRcVp0ZXJtaW5hdGU61AAOAMAAwQDCAMMAxQAfCDuAVoAZ +gAKBAe/TAA4AwQDCAhQI7AjtgGSBAiqBAizYAA4CGAIZAhoCGwIcAh0CHgIfCPACIQFcAiMCJAIlBS2A +YoECK4ArgFyAYIEBIF8QGkNoZWNrIFNwZWxsaW5nIGFzIFlvdSBUeXBlXxAedG9nZ2xlQ29udGludW91 +c1NwZWxsQ2hlY2tpbmc60gAOAEUDTQj5gKSvEKIHwQW9BlYBJQj+BIMJAAkBBcUAVwkEBMsJBgBIA5sC +WAV0BTsC7AW8A9IIjwEvAMUHdwE8BVcGWgK1CGkGSgkZAoYIWgkcCJwIDAkfBG4BOgkiAbcGFQa/A88F +dgZzCSkJKgHTCSwHyQImAhUFLQezAv4H0wb/BNUHkwk3A9gFOAk6ATsH/gO+BWUFQQlAB6AFJQeoCUQC +uAlGBAkDgAJfBjkGwQXGAv0CsQXLBOMJUQglBXgJVANtCHYFeQlYBcIHhQlbAwsElQYoAxYEDwTDCLcE +9AXdCWUCRgZyCOwBOQVQAN8BTAltBC8FTwXECD8ErQWaBsIDnAUHCNkA9QULBPsGpgl8CEwFfgJkA4QF +dQXDAesJhAXuCYYJhwmICMsGlgbkA3QFvwZxCKkCgQTrA9MDtQJOCZUEiwaiBAoEnADEAt6BAciBAUWB +AWKBAZyBAi6A8oECMYECNIEBcYAPgQI1gQEEgQI5gAiAtoBrgQEzgQEpgIuBAUGA44ECDIEBmIAZgQGw +gEuBASyBAWOAfIECAIEBYIECOoBxgQH7gQI+gQIQgQHggQI/gOqAQoECQIBGgQFUgQF8gMWBATqBAW6B +AkGBAkWASoECRoEByYBZgFiBASCBAcOAj4EBzoEBjoEBCYEBuYECXoDHgQElgQJtgEeBAdyAv4EBMYEB +JoECcoEBvYEBH4EBvoECeIB/gQJLgM+AsIBugQFcgQF+gQGEgJqAe4EBQ4EBDoECToEB6IEBjIECZYCs +gQIEgQGQgQJagQFWgQG1gQJCgMqA+IEBWICVgNGBAQOBAhmBAROBAUeBAnaAZoEBa4ECKoAogQFNgB+A +OIECf4DYgQFQgQFegQHxgPyBATyBAYGAuYEBF4ECJIAkgQEYgQEVgQF3gQJfgQH2gQE1gQE+gLGBATeB +AVqAT4ECV4EBS4ECfYECVIECaYECIIEBc4EBhoCugQFJgQFogQIUgHCBAQ+A6IC+gGeBAmCA84EBdoDW +gPqAG4CG2AAOAhgCGQIaAhsCHAIdAh4CHwmeAiEJnwIjAiQCJQO+gGKBAi+BAjCAXIBggL9sAFAAcgBl +AGYAZQByAGUAbgBjAGUAcyAmUSzYAA4CGAIZAhoCGwIcAh0CHgIfCacCIQmoAiMCJAIlB8mAYoECMoEC +M4BcgGCBAcllAE8AcABlAG4gJlFv2gAOAhgCGQYYAhoGGQIbAhwCHQIeAh8BXAIhAOEBXADhAiMCJAIl +B8mAYoArCYArCYBcgGCBAcnYAA4CGAIZAhoCGwIcAh0CHgIfCbkCIQFcAiMCJAIlA76AYoECNoArgFyA +YIC/bxARAEMAaABlAGMAawAgAGYAbwByACAAVQBwAGQAYQB0AGUgJtIADgA2ADcJwYAEVEhlbHDSAA4A +RQCDCcSAUKEEw4EBA9oADgIYAhkGGAIaBhkCGwIcAh0CHgIfAVwCIQDhAVwA4QIjAiQCJQO+gGKAKwmA +KwmAXIBggL/UAA4CGAFiAigCKQnRCdIJ04B2gQI7gQI9gQI80gAOADYANwnWgARYU2VydmljZXPSAA4A +RQCDCdmAUKBfEA9fTlNTZXJ2aWNlc01lbnXaAA4CGAIZBhgCGgYZAhsCHAIdAh4CHwFcAiEA4QFcAOEC +IwIkAiUHyYBigCsJgCsJgFyAYIEBydoADgIYAhkGGAIaBhkCGwIcAh0CHgIfAVwCIQDhAVwA4QIjAiQC +JQO+gGKAKwmAKwmAXIBggL/aAA4CGAIZBhgCGgYZAhsCHAIdAh4CHwFcAiEA4QFcAOECIwIkAiUDvoBi +gCsJgCsJgFyAYIC/2gAOCfcCGAIZAhoCGwIcAh0CHgKMAh8Eywn6AiEBXAIjAiQCJQlbCf9ZTlNTdWJt +ZW51gGKBAQSBAkOAK4BcgGCBAkKBAkTUAA4CGAFiAigCKQoCCgMKBIB2gQJ7gQKCgQJ8XnN1Ym1lbnVB +Y3Rpb2462gAOAhgCGQYYAhoGGQIbAhwCHQIeAh8BXAIhAOEBXADhAiMCJAIlA76AYoArCYArCYBcgGCA +v9oADgn3AhgCGQIaAhsCHAIdAh4CjAIfCRkKEgIhAVwCIwIkAiUDvgoXgGKBAjqBAkeAK4BcgGCAv4EC +SNIADgA2ADcKGoAEVEZpbGXSAA4ARQCDCh2AUKsJRgkACVEJAQfBCYcJhAlYCRwIWgipgQJLgQIxgQJO +gQI0gQHIgQJUgQJXgQJagQI+gQH7gQIU2AAOAhgCGQIaAhsCHAIdAh4CHworAiEKLAIjAiQCJQfJgGKB +AkyBAk2AXIBggQHJU05ld1Fu2gAOCfcCGAIZAhoCGwIcAh0CHgKMAh8CTgo1AiEBXAIjAiQCJQfJCjqA +YoBngQJPgCuAXIBggQHJgQJQW09wZW4gUmVjZW500gAOADYANwo7gATSAA4ARQCDCkCAUKECRoBmXxAW +X05TUmVjZW50RG9jdW1lbnRzTWVuddgADgIYAhkCGgIbAhwCHQIeAh8KRQIhCkYCIwIkAiUHyYBigQJV +gQJWgFyAYIEByVRTYXZlUXPYAA4CGAIZAhoCGwIcAh0CHgIfCk4CIQpPAiMCJAIlB8mAYoECWIECWYBc +gGCBAcloAFMAYQB2AGUAIABBAHMgJlFT1wAOAhgCGgIbAhwCHQIeAh8KVwFcAiMCJAIlB8mAYoECW4Ar +gFyAYIEByVZSZXZlcnTSAA4ANgA3Cl+ABFRFZGl00gAOAEUAgwpigFCtAhUHdwk3At4ItwTVCCUHhQez +CXwJlQlUCYiAWIEBsIECXoCGgQIZgQEJgQHogQG1gQHDgQJfgQJggQJlgQJp2gAOAhgCGQYYAhoGGQIb +AhwCHQIeAh8BXAIhAOEBXADhAiMCJAIlAiaAYoArCYArCYBcgGCAWdoADgIYAhkGGAIaBhkCGwIcAh0C +HgIfAVwCIQDhAVwA4QIjAiQCJQImgGKAKwmAKwmAXIBggFnaAA4J9wIYAhkCGgIbAhwCHQIeAowCHwSL +CoUCIQFcAiMCJAIlAiYKioBigPOBAmGAK4BcgGCAWYECYlRGaW5k0gAOADYANwqLgATSAA4ARQCDCpCA +UKUIywiPCJwEgwhMgQIggQIMgQIQgPKBAfbaAA4J9wIYAhkCGgIbAhwCHQIeAowCHwUtBTACIQFcAiMC +JAIlAiYKnoBigQEggQJmgCuAXIBggFmBAmdYU3BlbGxpbmfSAA4ARQCDCqKAUKMFJQVXCOyBAR+BASyB +AiraAA4J9wIYAhkCGgIbAhwCHQIeAowCHwTrBO4CIQFcAiMCJAIlAiYKroBigQEPgQJqgCuAXIBggFmB +AmtWU3BlZWNo0gAOAEUAgwqygFCiB9ME44EBzoEBDtoADgn3AhgCGQIaAhsCHAIdAh4CjAIfB8kKuAIh +AVwCIwIkAiUJWwq9gGKBAcmBAm6AK4BcgGCBAkKBAm/SAA4ARQCDCsCAUKwHkwkECSoI/gkiCSwJBggM +A7UIaQkfCNmBAbmBAjWBAkWBAi6BAkCBAkaBAjmBAeCAvoECAIECP4ECJFxfTlNBcHBsZU1lbnXSAA4A +MgAzCtCABYECc9IADgA2ADcK04AEVldpbmRvd9IADgBFAIMK1oBQpAegCHYJZQf+gQG9gQIEgQJ2gQHc +2gAOAhgCGQYYAhoGGQIbAhwCHQIeAh8BXAIhAOEBXADhAiMCJAIlB6iAYoArCYArCYBcgGCBAb5eX05T +V2luZG93c01lbnXaAA4J9wIYAhkCGgIbAhwCHQIeAowCHwImCugCIQFcAiMCJAIlCVsK7YBigFmBAnmA +K4BcgGCBAkKBAnpYRW1iZWRkZWTSAA4ARQCDCvGAUKUJhgk6CUQJbQkpgQJ9gQJtgQJ4gQJ/gQJB2gAO +CfcCGAIZAhoCGwIcAh0CHgKMAh8DvgBbAiEBXAIjAiQCJQlbCv+AYoC/gAqAK4BcgGCBAkKBAn7aAA4J +9wIYAhkCGgIbAhwCHQIeAowCHweoCwMCIQFcAiMCJAIlCVsLCIBigQG+gQKAgCuAXIBggQJCgQKBW19O +U01haW5NZW510gAOAEUDTQsMgKSvEKIHyQJkBloA9QO+BIsHyQfJAmQASAO+CSkDvgAfA4QCZAVlBVAD +CwJkArUEiwD1AB8CJgDEBS0GSgAfA74FxAksAl8HyQfJBIsDvgO+A9MAxAO+AToFQQamArUFZQZaCVsD +vgE7A74JOglEAiYJVAImAuwE6wV4AiYDvgImA88FQQlbAMQHqAmGAB8FOwAfB6gFLQltCVsCsQfJAwsD +hAJYBcMGpgJkAuwCtQW8BOsHyQImBWUCJgMLB6gFZQfJAmQCJgAfArUCZAXCAuwECQTLAiYCZAW9B6gC +TgZaBS0AxAJkAPUBOQlbBAoFQQJkAB8EnAV2BqYDhAULA74FeQT7BPQGlgImBIsFdAVlA3QFZQJkATwH +yQW/CVsHyQImBIsFxQXGA20CZAZaB8kChgmIArUDvglRAiYJlQamAwsElQD1AiaBAcmBAT6BAWOAJIC/ +gPOBAcmBAcmBAT6ACIC/gQJBgL+AAoCxgQE+gQExgQFNgMqBAT6AfIDzgCSAAoBZgBuBASCBAWCAAoC/ +gQFegQJGgG6BAcmBAcmA84C/gL+A6IAbgL+AQoEBJoEBd4B8gQExgQFjgQJCgL+AR4C/gQJtgQJ4gFmB +AmWAWYCLgQEPgQGMgFmAv4BZgMWBASaBAkKAG4EBvoECfYACgQEpgAKBAb6BASCBAn+BAkKAe4EByYDK +gLGAa4EBWoEBd4EBPoCLgHyBAUGBAQ+BAcmAWYEBMYBZgMqBAb6BATGBAcmBAT6AWYACgHyBAT6BAVaA +i4DPgQEEgFmBAT6BAUWBAb6AZ4EBY4EBIIAbgQE+gCSAKIECQoDWgQEmgQE+gAKA+oEBOoEBd4CxgQEY +gL+BAZCBARWBAROBAXOAWYDzgQEzgQExgK6BATGBAT6AS4EByYEBSYECQoEByYBZgPOBAXGBAYSArIEB +PoEBY4EByYBxgQJpgHyAv4ECToBZgQJggQF3gMqA+IAkgFnSAA4ARQNNC7GApK8QowW9B8EBJQZWCP4E +gwkACQEFxQBXCQQEywkGAEgCWAObBXQFOwLsBbwD0giPAS8AxQd3ATwFVwZaArUIaQZKCRkChghaCRwI +nAgMCR8EbgE6CSIBtwYVBr8DzwV2BnMJKQkqAdMHyQImAhUJLAUtB7MG/wL+ATsD2ATVCTcHkwfTCToF +OAf+A74AHwVlBUEJQAegBjkHqAlEArgJRgQJBcYCXwUlA4AGwQL9ArEFywTjCVEIJQV4CVQDbQV5CHYJ +WAXCB4UJWwMLBJUGKAMWBA8EwwT0CD8ItwllBd0BOQJGCOwFUADfAUwJbQXEBC8FTwZyBK0FmgbCA5wF +BwjZAPUFCwT7BqYJfAhMBX4CZAOEBXUFwwHrCYQF7gmGCYcJiAaWCMsG5AN0Bb8GcQipAoEE6wPTCZUD +tQJOBIsGogQKAMQEnALegQFFgQHIgQGcgQFigQIugPKBAjGBAjSBAXGAD4ECNYEBBIECOYAIgGuAtoEB +M4EBKYCLgQFBgOOBAgyBAZiAGYEBsIBLgQEsgQFjgHyBAgCBAWCBAjqAcYEB+4ECPoECEIEB4IECP4Dq +gEKBAkCARoEBVIEBfIDFgQE6gQFugQJBgQJFgEqBAcmAWYBYgQJGgQEggQHDgQGOgI+AR4DHgQEJgQJe +gQG5gQHOgQJtgQElgQHcgL+AAoEBMYEBJoECcoEBvYEBXIEBvoECeIB/gQJLgM+BAYSAboEBH4CwgQF+ +gJqAe4EBQ4EBDoECToEB6IEBjIECZYCsgQGQgQIEgQJagQFWgQG1gQJCgMqA+IEBWICVgNGBAQOBAROB +AfGBAhmBAnaBAUeAKIBmgQIqgQFNgB+AOIECf4EBXoDYgQFQgQFrgPyBATyBAYGAuYEBF4ECJIAkgQEY +gQEVgQF3gQJfgQH2gQE1gQE+gLGBATeBAVqAT4ECV4EBS4ECfYECVIECaYEBc4ECIIEBhoCugQFJgQFo +gQIUgHCBAQ+A6IECYIC+gGeA84EBdoDWgBuA+oCG0gAOAEUDTQxXgKSvEKMMWAxZDFoMWwxcDF0MXgxf +DGAMYQxiDGMMZAsDDGYMZwxoDGkMagxrDGwMbQxuAMkMcAxxDHIMcwx0DHUMdgx3DHgMeQx6DHsMfAx9 +DH4MfwyADIEMggyDDIQMhQyGDIcMiAyJDIoMiwyMDI0MjgyPDJAMkQySDJMMlAyVDJYMlwyYDJkMmgyb +DJwMnQyeDJ8MoAyhDKIMowykDKUMpgynDKgMqQyqDKsMrAytDK4MrwywDLEMsgyzDLQMtQy2DLcMuAy5 +DLoMuwy8DL0Mvgy/DMAMwQzCDMMMxAzFDMYMxwzIDMkMygzLDMwMzQzODM8M0AzRDNIM0wzUDNUM1gzX +DNgM2QzaDNsM3AzdDN4M3wzgDOEM4gzjDOQM5QzmDOcM6AzpDOoM6wzsDO0M7gzvDPAM8QzyDPMM9Az1 +DPYM9wz4DPkM+oEChoECh4ECiIECiYECioECi4ECjIECjYECjoECj4ECkIECkYECkoECgIECk4EClIEC +lYECloECl4ECmIECmYECmoECm4AagQKcgQKdgQKegQKfgQKggQKhgQKigQKjgQKkgQKlgQKmgQKngQKo +gQKpgQKqgQKrgQKsgQKtgQKugQKvgQKwgQKxgQKygQKzgQK0gQK1gQK2gQK3gQK4gQK5gQK6gQK7gQK8 +gQK9gQK+gQK/gQLAgQLBgQLCgQLDgQLEgQLFgQLGgQLHgQLIgQLJgQLKgQLLgQLMgQLNgQLOgQLPgQLQ +gQLRgQLSgQLTgQLUgQLVgQLWgQLXgQLYgQLZgQLagQLbgQLcgQLdgQLegQLfgQLggQLhgQLigQLjgQLk +gQLlgQLmgQLngQLogQLpgQLqgQLrgQLsgQLtgQLugQLvgQLwgQLxgQLygQLzgQL0gQL1gQL2gQL3gQL4 +gQL5gQL6gQL7gQL8gQL9gQL+gQL/gQMAgQMBgQMCgQMDgQMEgQMFgQMGgQMHgQMIgQMJgQMKgQMLgQMM +gQMNgQMOgQMPgQMQgQMRgQMSgQMTgQMUgQMVgQMWgQMXgQMYgQMZgQMagQMbgQMcgQMdgQMegQMfgQMg +gQMhgQMigQMjgQMkgQMlgQMmXxAaU3RhdGljIFRleHQgKEZpbGUgZm9ybWF0OilfEBFNZW51IEl0ZW0g +KENsb3NlKV8QE0hvcml6b250YWwgU2Nyb2xsZXJfEBZNZW51IEl0ZW0gKE9yaWdpbmFsKS0xbxAYAE0A +ZQBuAHUAIABJAHQAZQBtACAAKABQAHIAZQBmAGUAcgBlAG4AYwBlAHMgJgApXxAiTWVudSBJdGVtIChV +c2UgU2VsZWN0aW9uIGZvciBGaW5kKW8QEQBNAGUAbgB1ACAASQB0AGUAbQAgACgATwBwAGUAbiAmAClZ +U2VwYXJhdG9yXxASUG9wdXAgQnV0dG9uICg2NDApXENvbnRlbnQgVmlld28QHQBNAGUAbgB1ACAASQB0 +AGUAbQAgACgAQwBoAGUAYwBrACAAZgBvAHIAIABVAHAAZABhAHQAZSAmAClbTWVudSAoSGVscClbU2Vw +YXJhdG9yLTVvEBEAUABvAHAAdQBwACAAQgB1AHQAdABvAG4AIAAoICYAIAApXxARTWVudSBJdGVtIChJ +dGVtMilfECFTdGF0aWMgVGV4dCAoU2VsZWN0IERWRCBGZWF0dXJlcylvEBgAUABvAHAAIABVAHAAIABC +AHUAdAB0AG8AbgAgAEMAZQBsAGwAIAAoICYAKQAtADFWTWF0cml4XxAeU3RhdGljIFRleHQgKFByZWZl +cnJlZCBhdWRpbzopXxAdSG9yaXpvbnRhbCBQcm9ncmVzcyBJbmRpY2F0b3JfEBVNZW51IEl0ZW0gKEZp +bmQgTmV4dClfEBFWZXJ0aWNhbCBTY3JvbGxlcl8QEE1lbnUgSXRlbSAoUmVkbylfEBNUYWJsZSBDb2x1 +bW4gKFNpemUpXxAaTWVudSBJdGVtIChDaGVjayBTcGVsbGluZylfEBNNZW51IChPdGhlclZpZXdzKS02 +WE9wZW5WaWV3XxAUTWVudSBJdGVtIChTaG93IEFsbClfEB1Qb3AgVXAgQnV0dG9uIENlbGwgKE9yaWdp +bmFsKV8QD01lbnUgKFNlcnZpY2VzKV8QE01lbnUgKE90aGVyVmlld3MpLTJvEBcATQBlAG4AdQAgAEkA +dABlAG0AIAAoAFAAYQBnAGUAIABTAGUAdAB1AHAgJgApW1NlcGFyYXRvci0xXxAZTWVudSBJdGVtIChG +aW5kIFByZXZpb3VzKV8QIk1lbnUgSXRlbSAoSGlkZSBJbnN0YW50IEhhbmRCcmFrZSlbU2VwYXJhdG9y +LTZfEA9UZXh0IEZpZWxkIENlbGxfEBRUYWJsZSBDb2x1bW4gKFRpdGxlKVtTZXBhcmF0b3ItN18QHVRl +eHQgRmllbGQgQ2VsbCAoVGV4dCBDZWxsKS0xW1NlcGFyYXRvci05XxAUTWVudSBJdGVtIChPcmlnaW5h +bClfEB1TdGF0aWMgVGV4dCAoU2VsZWN0IGEgU291cmNlKV8QFlN0YXRpYyBUZXh0IChTZXR0aW5ncylf +EBZNZW51IEl0ZW0gKEFuYW1vcnBoaWMpXxAQTWVudSBJdGVtIChIZWxwKVtTZXBhcmF0b3ItOF8QHVRl +eHQgRmllbGQgQ2VsbCAoVGV4dCBDZWxsKS0yW01lbnUgKEZpbGUpW01lbnUgKEVkaXQpXxAQTWVudSBJ +dGVtIChVbmRvKV8QFE1lbnUgSXRlbSAoU2VydmljZXMpXxAPTWVudSAoU3BlbGxpbmcpXxAWTWVudSBJ +dGVtIChTZWxlY3QgQWxsKV8QF1RleHQgRmllbGQgQ2VsbCAoUmVhZHkpXxAYQnV0dG9uIENlbGwgKERW +RCBEcml2ZTopXxAXVGFibGUgQ29sdW1uIChEdXJhdGlvbilfECFUZXh0IEZpZWxkIENlbGwgKFNlbGVj +dCBhIFNvdXJjZSlfEBFNZW51IEl0ZW0gKFBhc3RlKVtTZXBhcmF0b3ItMl8QI01lbnUgSXRlbSAoQWJv +dXQgSW5zdGFudCBIYW5kQnJha2UpXxAaTWVudSBJdGVtIChTdGFydCBTcGVha2luZylfEBBNZW51IEl0 +ZW0gKEZpbGUpbxASAE0AZQBuAHUAIABJAHQAZQBtACAAKABPAHQAaABlAHIgJgApXxAeTWVudSBJdGVt +IChCcmluZyBBbGwgdG8gRnJvbnQpXxAYTWVudSAoSW5zdGFudCBIYW5kQnJha2UpXEZpbGUncyBPd25l +cltDb252ZXJ0Vmlld18QE01lbnUgKE90aGVyVmlld3MpLTVbQXBwbGljYXRpb25fEBRNZW51IEl0ZW0g +KE1pbmltaXplKV8QIVRleHQgRmllbGQgQ2VsbCAoUGljdHVyZSBBc3BlY3Q6KV1NZW51IChXaW5kb3cp +XxAQTWVudSBJdGVtIChFZGl0KV8QEkJ1dHRvbiBDZWxsIChPcGVuKV8QD01lbnUgSXRlbSAoTmV3KVpU +ZXh0IEZpZWxkXxAgU3RhdGljIFRleHQgKE1heCBQaWN0dXJlIFdpZHRoOilvEBcAUABvAHAAIABVAHAA +IABCAHUAdAB0AG8AbgAgAEMAZQBsAGwAIAAoICYAIAApbxAVAE0AZQBuAHUAIABJAHQAZQBtACAAKABT +AHAAZQBsAGwAaQBuAGcgJgApXxARTWVudSBJdGVtIChJdGVtMSlfEA9NZW51IEl0ZW0gKDQ4MClfECdQ +cm90b3R5cGUgUHJvdG90eXBlIEJ1dHRvbiBDZWxsIChSYWRpbylfEBJQdXNoIEJ1dHRvbiAoT3Blbilf +ECJUZXh0IEZpZWxkIENlbGwgKFByZWZlcnJlZCBhdWRpbzopXxAZTWVudSBJdGVtIChTdG9wIFNwZWFr +aW5nKV8QF01lbnUgSXRlbSAoT3BlbiBSZWNlbnQpXxAhTWVudSBJdGVtIChQYXN0ZSBhbmQgTWF0Y2gg +U3R5bGUpXxATU3RhdGljIFRleHQgKFJlYWR5KV8QFE1lbnUgSXRlbSAoU3BlbGxpbmcpXxAUUG9wdXAg +QnV0dG9uIChJdGVtMSlbQm94IChCb3gpLTFfEBBNZW51IEl0ZW0gKFpvb20pXxASTWVudSBJdGVtIChS +ZXZlcnQpXxAiU3RhdGljIFRleHQgKFByZWZlcnJlZCBzdWJ0aXRsZXM6KV8QEk1lbnUgSXRlbSAoRGVs +ZXRlKVhNYWluTWVudVlCb3ggKEJveClcUG9wdXAgQnV0dG9uXxAmVGV4dCBGaWVsZCBDZWxsIChQcmVm +ZXJyZWQgc3VidGl0bGVzOilfECBCdXR0b24gQ2VsbCAoRFZEIEZvbGRlciAvIEZpbGU6KV8QEVRleHQg +RmllbGQgQ2VsbC0xXxAiTWVudSBJdGVtIChJbnN0YW50IEhhbmRCcmFrZSBIZWxwKW8QEABQAG8AcAB1 +AHAAIABCAHUAdAB0AG8AbgAgACggJgApWUVtcHR5Vmlld18QEE1lbnUgSXRlbSAoQ29weSlbU2VwYXJh +dG9yLTRfEB5UZXh0IEZpZWxkIENlbGwgKEZpbGUgZm9ybWF0OilfEBRUYWJsZSBDb2x1bW4gKENoZWNr +KV8QFk1lbnUgSXRlbSAoQ2xlYXIgTWVudSlfECZNZW51IEl0ZW0gKENoZWNrIFNwZWxsaW5nIGFzIFlv +dSBUeXBlKW8QEgBQAG8AcAB1AHAAIABCAHUAdAB0AG8AbgAgACggJgApAC0AMV8QEVRhYmxlIEhlYWRl +ciBWaWV3XxAdVGV4dCBGaWVsZCBDZWxsIChUZXh0IENlbGwpLTNfEBJNZW51IEl0ZW0gKFdpbmRvdylf +EBdQb3B1cCBCdXR0b24gKE9yaWdpbmFsKW8QFQBCAHUAdAB0AG8AbgAgAEMAZQBsAGwAIAAoAEIAcgBv +AHcAcwBlICYAKW8QDwBNAGUAbgB1ACAASQB0AGUAbQAgACggJgApAC0AMV8QE01lbnUgSXRlbSAoMTYg +YnkgOSlfEBNNZW51IChPdGhlclZpZXdzKS0zXxAaVGV4dCBGaWVsZCBDZWxsIChTZXR0aW5ncylfEA9N +ZW51IEl0ZW0gKDMyMClfEBFNZW51IEl0ZW0gKEl0ZW0zKW0ATQBlAG4AdQAgAEkAdABlAG0AIAAoICYA +KV8QIk1lbnUgSXRlbSAoUXVpdCBJbnN0YW50IEhhbmRCcmFrZSlbU2Nyb2xsIFZpZXdfEBNNZW51IChP +dGhlclZpZXdzKS00bxAWAFAAbwBwACAAVQBwACAAQgB1AHQAdABvAG4AIABDAGUAbABsACAAKCAmAClf +EBNNZW51IChPdGhlclZpZXdzKS0xW1NlcGFyYXRvci0zXxAdTWVudSBJdGVtIChKdW1wIHRvIFNlbGVj +dGlvbilfECVUZXh0IEZpZWxkIENlbGwgKFNlbGVjdCBEVkQgRmVhdHVyZXMpW0JveCAoQm94KS0yXxAR +TWVudSAoT3RoZXJWaWV3cylfEB9Ib3Jpem9udGFsIFByb2dyZXNzIEluZGljYXRvci0xXxAdU3RhdGlj +IFRleHQgKFBpY3R1cmUgQXNwZWN0OilfEBtUZXh0IEZpZWxkIENlbGwgKFRleHQgQ2VsbClvEBQATQBl +AG4AdQAgAEkAdABlAG0AIAAoAFMAYQB2AGUAIABBAHMgJgApXxAqVGV4dCBGaWVsZCBDZWxsIChTYXZl +IGNvbnZlcnRlZCBmaWxlcyB0bzopXxAdTWVudSBJdGVtIChJbnN0YW50IEhhbmRCcmFrZSlfEBBNZW51 +IEl0ZW0gKFNhdmUpXxASTWVudSBJdGVtIChTcGVlY2gpXxAYUG9wIFVwIEJ1dHRvbiBDZWxsICg2NDAp +bxARAE0AZQBuAHUAIABJAHQAZQBtACAAKABGAGkAbgBkICYAKV8QJFRleHQgRmllbGQgQ2VsbCAoTWF4 +IFBpY3R1cmUgV2lkdGg6KV8QGlBvcCBVcCBCdXR0b24gQ2VsbCAoSXRlbTEpXxAmU3RhdGljIFRleHQg +KFNhdmUgY29udmVydGVkIGZpbGVzIHRvOilfEBJNZW51IEl0ZW0gKDQgYnkgMylvEBIATQBlAG4AdQAg +AEkAdABlAG0AIAAoAFAAcgBpAG4AdCAmACluAE0AZQBuAHUAIABJAHQAZQBtACAAKCAmACAAKV1NZW51 +IChTcGVlY2gpW1N0YXRpYyBUZXh0XxAQTWVudSBJdGVtIChGaW5kKV8QF01lbnUgSXRlbSAoSGlkZSBP +dGhlcnMpXxASTWVudSAoT3BlbiBSZWNlbnQpW01lbnUgKEZpbmQpXxAPTWVudSBJdGVtICg2NDApbxAV +AFAAdQBzAGgAIABCAHUAdAB0AG8AbgAgACgAQgByAG8AdwBzAGUgJgApXxAuVGFibGUgVmlldyAoVGl0 +bGUsIER1cmF0aW9uLCBTaXplIChDb252ZXJ0ZWQpKV8QElBvcCBVcCBCdXR0b24gQ2VsbF8QD01lbnUg +SXRlbSAoQ3V0KdIADgBFA00NnoCkogMLAmSAyoEBPtIADgBFA00No4CkogP6A/qAy4DL0gAOAEUDTQ2o +gKSvEN0AtAC+ALgAjAkABcUJBACGCQYAigCbA5sCWACsBXQC7AW8A9IIjwDFAI4GWgK1BkoJGQCNCRwB +OgkiA88AnACrAhUCJgE7Av4E1QC9AK4JOgVlAIgJQAUlALAHqAbBALECXwQJA4AFxgL9AJcJUQlUA20I +dglYBcIAsgC6AI8DCwSVAxYAnwi3BPQGcgE5AKQFUAWaBsIArQUHAPUFCwCYBPsGpgl8ALkAlQV+ALcF +dQXDAesAkQaWCYgIywbkA3QFvwipAoEE6wmVAKECTgClB8EFvQZWASUI/gSDALYJAQBXBMsAhwBIBTsA +kgCdAS8AqAd3ATwAogVXCGkAqgKGCFoAmgicCAwJHwRuAbcGFQa/BXYGcwkpAIsJKgHTCSwHyQUtALMH +swb/B9MAuwPYB5MJNwU4ALwH/gO+AB8FQQY5B6AAtQlEArgJRgCTAKAApgCWArEFywTjCCUFeAV5B4UJ +WwYoBA8EwwXdCD8BTAllAkYI7ADfCW0ELwVPBcQErQCQA5wI2QhMAmQAqQOEAKcArwCUCYQF7gCeCYYJ +hwCFBnEAiQPTA7UAmQSLBqIECgScAMQAowLegQIHgQIpgQITgKuBAjGBAXGBAjWAV4ECOYCFgQGtgLaA +a4EB54EBM4CLgQFBgOOBAgyAGYDDgQFjgHyBAWCBAjqAvYECPoBCgQJAgMWBAa+BAeWAWIBZgEeAj4EB +CYECKIEB7oECbYEBMYBqgQJygQEfgQH1gQG+gQF+gQH6gG6Az4CwgQGEgJqBASSBAk6BAmWArIECBIEC +WoEBVoEB/4ECHYDxgMqA+ICVgQG8gQIZgQETgQFrgCiBAdOBAU2BATyBAYGBAeyBAReAJIEBGIEBK4EB +FYEBd4ECX4ECGIEBEoEBNYECD4EBN4EBWoBPgQEAgQFzgQJpgQIggQGGgK6BAUmBAhSAcIEBD4ECYIEB +x4BngQHVgQHIgQFFgQFigQGcgQIugPKBAguBAjSAD4EBBIBlgAiBASmBAQKBAbSBAZiBAduBAbCAS4EB +zYEBLIECAIEB44BxgQH7gQGrgQIQgQHggQI/gOqARoEBVIEBfIEBOoEBboECQYCKgQJFgEqBAkaBAcmB +ASCBAgOBAcOBAY6BAc6BAh+Ax4EBuYECXoEBJYECI4EB3IC/gAKBASaBAVyBAb2BAgmBAniAf4ECS4EB +CIEBwoEB14EBHoB7gQFDgQEOgQHogQGMgQGQgQG1gQJCgQFYgNGBAQOBAUeBAfGAOIECdoBmgQIqgB+B +An+A2IEBUIEBXoD8gPeAuYECJIEB9oEBPoEB34CxgQHZgQHwgQENgQJXgQFLgQG4gQJ9gQJUgBiBAWiA +eoDogL6BATCA84EBdoDWgPqAG4EB0YCG0gAOAEUDTQ6IgKSvEN0OiQ6KDosOjA6NDo4Ojw6QDpEOkg6T +DpQOlQ6WDpcOmA6ZDpoOmw6cDp0Ong6fDqAOoQ6iDqMOpA6lDqYOpw6oDqkOqg6rDqwOrQ6uDq8OsA6x +DrIOsw60DrUOtg63DrgOuQ66DrsOvA69Dr4Ovw7ADsEOwg7DDsQOxQ7GDscOyA7JDsoOyw7MDs0Ozg7P +DtAO0Q7SDtMO1A7VDtYO1w7YDtkO2g7bDtwO3Q7eDt8O4A7hDuIO4w7kDuUO5g7nDugO6Q7qDusO7A7t +Du4O7w7wDvEO8g7zDvQO9Q72DvcO+A75DvoO+w78Dv0O/g7/DwAPAQ8CDwMPBA8FDwYPBw8IDwkPCg8L +DwwPDQ8ODw8PEA8RDxIPEw8UDxUPFg8XDxgPGQ8aDxsPHA8dDx4PHw8gDyEPIg8jDyQPJQ8mDycPKA8p +DyoPKw8sDy0PLg8vDzAPMQ8yDzMPNA81DzYPNw84DzkPOg87DzwPPQ8+Dz8PQA9BD0IPQw9ED0UPRg9H +D0gPSQ9KD0sPTA9ND04PTw9QD1EPUg9TD1QPVQ9WD1cPWA9ZD1oPWw9cD10PXg9fD2APYQ9iD2MPZA9l +gQMrgQMsgQMtgQMugQMvgQMwgQMxgQMygQMzgQM0gQM1gQM2gQM3gQM4gQM5gQM6gQM7gQM8gQM9gQM+ +gQM/gQNAgQNBgQNCgQNDgQNEgQNFgQNGgQNHgQNIgQNJgQNKgQNLgQNMgQNNgQNOgQNPgQNQgQNRgQNS +gQNTgQNUgQNVgQNWgQNXgQNYgQNZgQNagQNbgQNcgQNdgQNegQNfgQNggQNhgQNigQNjgQNkgQNlgQNm +gQNngQNogQNpgQNqgQNrgQNsgQNtgQNugQNvgQNwgQNxgQNygQNzgQN0gQN1gQN2gQN3gQN4gQN5gQN6 +gQN7gQN8gQN9gQN+gQN/gQOAgQOBgQOCgQODgQOEgQOFgQOGgQOHgQOIgQOJgQOKgQOLgQOMgQONgQOO +gQOPgQOQgQORgQOSgQOTgQOUgQOVgQOWgQOXgQOYgQOZgQOagQObgQOcgQOdgQOegQOfgQOggQOhgQOi +gQOjgQOkgQOlgQOmgQOngQOogQOpgQOqgQOrgQOsgQOtgQOugQOvgQOwgQOxgQOygQOzgQO0gQO1gQO2 +gQO3gQO4gQO5gQO6gQO7gQO8gQO9gQO+gQO/gQPAgQPBgQPCgQPDgQPEgQPFgQPGgQPHgQPIgQPJgQPK +gQPLgQPMgQPNgQPOgQPPgQPQgQPRgQPSgQPTgQPUgQPVgQPWgQPXgQPYgQPZgQPagQPbgQPcgQPdgQPe +gQPfgQPggQPhgQPigQPjgQPkgQPlgQPmgQPngQPogQPpgQPqgQPrgQPsgQPtgQPugQPvgQPwgQPxgQPy +gQPzgQP0gQP1gQP2gQP3gQP4gQP5gQP6gQP7gQP8gQP9gQP+gQP/gQQAgQQBgQQCgQQDgQQEgQQFgQQG +gQQHEQFqEN4QVhEBbBBIEQGjEQHWEN8QkBDkEQGrEQFfEQGDEPcRAQQRAVkRAXcRAWQQ0BEBIhEBJBEB +iRD4EQG+EIIQkhBKEQGTEI8Q+RDnEQGpEM8QzREBlBEBWhDLEQEjEQGYEFMRAQMRAaAT//////////0Q +zBD1EBgRAdQQVxEBuxEBYREBYBEBqBEBwhEB0RB8ENgRAVwQ7xBwEQGGEJkRAZYQ9BEBTREBeREBWxAl +EMURAXQRAdIRAZIRAZwRAX4RAbQRAacRAZcRAXYRAXUQ4REBtREBpBDWEOARAZ8RAbMQ8xEBhxEBxhEB +QBEBvxDTENERAcARAa8RAX0QThEBhRDUENoQwRB9EQFmEEkRAXgRAYoRAcgQgRDdEPIQTxBqEH8QFREB +uhB6EOsRAccQJxDXEQGaEOkQyRCWEQFpEQGEEE0RASYQ1RCGEJURAbIRAcQRAYERAdMRAW0RAdUQZxEB +axDsEQHFEIMQURDwEMYRAcEQxBDxEQGtEDoQzhEBghCLEAUQOREB1xEBfxEBvRAXEQFLENkRAa4QUhDi +EOgRAWgQ5hEBKREBthDDEPYRAY0RAY4QyhAdEQG8EQGwEG8RAbcRAS8RAcMQXBB+ENsRAckQExEBsREB +gBEBiBEBehEBnREBXhCIENIRAW4QmBEBXREBmREBMBDjEFARAbkQjhA4EQGVEQGLEQFDEQGMEJERASUQ +3BEBphEBYhEBuBEBkREBZxDH0gAOAEUAgxBAgFCg0gAOAEUDTRBDgKSg0gAOAEUDTRBGgKSg0gA6ADsQ +SBBJohBJAD9eTlNJQk9iamVjdERhdGEACAAZACIAJwAxADoAPwBEAFIAVABmCIIIiAjTCNoI4QjvCQEJ +HQkrCTcJQwlRCVwJagmGCZQJpwm5CdMJ3QnqCewJ7wnyCfUJ+An6Cf0J/woCCgUKCAoLCg0KDwoSChUK +GAobCiQKMAoyCjQKPQpHCkkKVwpgCmkKdAp7Co0KlgqfCqgKrQq8Cs8K2ArjCuUK6ArqCyMLMAtJC1YL +ZAtuC3wLlQuiC6wLvgvSC9wL6AvqC+wL7gvwC/IL9wv5C/sL/Qv/DAEMAwwFDAcMIgw2DD8MSAxKDE8M +bAx3DIgMmgyjDK8MsQyzDLYMuAzBDMgMzwzbDPQM/w0IDQ0NIA0pDTANPQ1DDUwNTg3FDccNyQ3LDc0N +zw3RDdMN1Q3XDdkN2w3dDeAN4w3mDekN7A3vDfIN9Q34DfsN/g4BDgQOBw4KDg0OEA4TDhYOGQ4cDh8O +Ig4lDigOKw4uDjEONA43DjoOPQ5ADkMORg5JDkwOTw5SDlUOWA5bDl4OYQ5kDmcOeA6GDo8Olw6ZDpsO +nQ6fDqgOqg6sDsAPEw81Dz8PTA9gD3UPgg+cD7gP0w/dD+kQCBAUECMQLxAxEDMQNRA6EDwQPhA/EEEQ +ShBMEFUQVxBYEFoQXBBeEGAQYhBrEJgQoBCqELUQvxDJENcQ2RDcEN8Q4hDlEOcQ6RDrEO0Q7xD5ERYR +IhEkESYRKBEqESwRLhFbEV0RYBFjEWYRaBFqEWwRbhFwEXoRgxGMEaARuRG7Eb0RvxHIEcoRzBILEhcS +IBIzEkASTBJaEl0SYBJjEmYSaRJrEm0ScBKDEoUSiBKLEo0SjxKmEq8SuBLGEs8S0RLaEtwS3hLgEuIT +DxMeEysTOBNAE0sTWhNlE3ATfRN+E4ATghOEE40TjxORE5oToxOkE6YTrBPJE9UT4BPqE/cUAxQIFAoU +DBQOFBAUEhQTFCQUKxQyFDsUPRRGFEgUSxRYFGEUZhRtFIIUihSXFKMUsRSzFLUUtxS5FLsUwhTOFNsU +4xTlFOgU8RT2FQsVDRUPFREVExUlFTIVNBU3FUAVSxVfFXEVfhWFFaYVtBW5FbsVvRW/FcEVwxXGFcgV +0hXjFeUV7hXwFfMWCBYKFgwWDhYQFikWNhY4FkQWWRZbFl0WXxZhFnQWfRaGFo8WlBaiFs8W0BbSFtQW +1hbfFuEW6hbrFu0W8xcQFxUXFxcZFxsXHRcfFywXLhc6F1sXXRdfF2EXYxdlF2cXlBeVF5cXmRebF6QX +phevF7AXshe7F9gX2hfcF94X4BfiGAMYBRgHGAkYCxgNGA8YPBg9GD8YQRhDGEwYThhXGFgYWhhfGHwY +fhiAGIIYhBiGGJkYuhi8GL4YwBjCGMQYxhjPGNYY5RjtGQIZBBkGGQgZChkUGSEZIxkoGTEZPBlGGVoZ +YxlqGYEZkBmdGZ8ZoRmjGcQZzBngGesZ+RoDGhAaFxoZGhsaIBoiGicaKRorGi0aOhpGGkgaSxpOGlMa +VRpiGnEacxp1GncafxqRGpoanxqyGr8awRrDGsUa2BrhGuYa8Rr3GwAbBxsfGywbLhswGzIbUxtVG1cb +WRtbG10bXxtwG3IbdRt4G3sbhhueG68bsRuzG7UbtxvYG9ob3BveG+Ab4RvjG+UcAhwFHAccChwNHA8c +EhwrHHoclxypHL8c1BzjHPYdCB0aHS8dPR1PHV0dZh1nHWkdax1tHW8dcR1zHXUddx15HXodex1+HYAd +hR2OHZAdvR3GHc8d1x3ZHdsd3R3fHeEd4x3lHecd9B32Hfgd+h3/HhMeHB4eHikeMh40HjceOR5CHkce +UB5dHnEegB6NHpYeox6xHroe0h7jHuUe5x7pHusfDB8OHxAfEh8UHxcfGB8aHxwfQR9NH08fUR9TH1Uf +Vx9ZH1sfXR91H6ofsx+1H7cfuR+7H70fvx/BH8MfxR/KH9Mf2B/aH+Mf7B/1IAAgDiAbIB0gHyAhIEIg +RCBGIEggSiBMIE4gUiBUIFkgaiBsIG4gcCByIMEgzSDXIOYg8iEKIRUhHyE0IUIhSiFMIU4hUCFSIVQh +ViFYIVohXCFeIV8hYSFjIWUhaiFsIYkhiyGNIY8hkSGTIZUhrSG2IbghvSG/IcEh9iH4Ifoh/CH+IgAi +AiIEIgkiFCIdIikiKyItIjsiRCJJIl8iaCJqIqMiqSKrIq0iryKxIrMitSK3Iswi1iLeIwsjGSMbIx0j +HyMhIyMjKSM+I0sjUiNUI1YjWyNdI18jaCNxI3MjdiN4I4EjgyOII4ojjCOVI6wjriOwKX4phymOKaEp +rCm1KbopxynJKc4p1yncKfEp8yn1Kfcp+SoGKg8qGiojKi8qQCpCKkQqRipIKmkqayptKm8qcSpyKnQq +diqPKt4q3yrhKuMq5SrnKukq6yrtKu4q7yrxKvoq/CspKysrLSsvKzErMys1KzcrOStGK0grSitMK1Ir +WytdK2YraCtvK3Ercyt1K54roCuiK6QrpiuoK6orrCuuK7Qr3SvfK+Er4yvlK+cr6SvrK+0r8yv+LA8s +ESwTLBUsFyw4LDosPCxBLEMsRSxHLEksWixcLF4sYSxkLHAsciyLLJwsniygLKIspCytLK8suiy8LL4s +wCzCLMQs5SznLOks6yztLPAs8SzzLPUtDS0uLTAtMi00LTYtOC09LT8tUS1aLWUtcS20Lb4tyi3gLe4t ++y4FLhcuGS4bLh0uHy4hLiIuJC4mLiguKi4sLi4uNy49LkYuSC5LLk0uVi5YLmEuYy5lLmcuaS6KLowu +ji6QLpIuky6VLpcusC7VLuku8i70LvYu+C76LvwvAS8CLwQvGS8bLx0vHy8hLzcvTC9OL1AvUi9UL14v +fy+BL4MvhS+HL4gvii+ML6Mv2C/aL9wv3i/gL+Iv5C/mL+sv+jALMA0wDzARMBowHDAzMEwwUzBwMHIw +dDB2MHgwejB+MIswjTCbMKQwqTC4MN0w6DDyMP8xATEDMQUxDjEXMRkxHDEeMSAxJTEnMTAxNTFAMVkx +YjFrMYExojGkMaYxqDGqMasxrTGvMccx6DHqMewx7jHwMfIx9DH/MggyCjITMhwyKTIzMkAyQjJEMkYy +azJtMm8ycTJzMnUydzKEMoYyiTKMMqUypzLBMtIy1DLWMtgy2jL7Mv0y/zMBMwMzBDMGMwgzIjN1M4cz +iDOKM4wzjjOQM5IzlDOWM5czmDOaM6MzrDOuM7szvTO/M8EzyjPMM9Uz1zPYM+4z/zQBNAM0BTQINBA0 +HTQfNCI0JTRGNEg0SzRONFA0UjRVNGI0ZDRnNGo0gzSFNI80nDSeNKE0pDTFNMc0yjTNNM800TTTNNk0 +2zTiNO808TT0NPc1GDUaNR01HzUhNSM1JjUzNTU1ODU7NUk1VzVoNWo1bTVvNXI1kzWVNZc1mjWdNZ41 +oDWiNbs2CjYLNg02DzYRNhQ2FjYZNhw2HTYeNiE2KjYsNlk2XDZeNmE2YzZlNmc2ajZtNno2fDZ/NoI2 +hTaONpA2mTabNp42oTa2NsM2xTbINss27DbuNvE29Db2Nvg2+zcINwo3DTcQNyM3JTc3N0g3SjdMN083 +Ujd7N343gDeDN4U3hzeJN4w3jzecN543oTekN7E4ADgBOAM4BTgHOAo4DDgPOBI4EzgUOBc4MDg9OD84 +QjhFOGY4aDhrOG44cDhyOHU4hDiGOJU4pjioOKs4rTiwONU41zjZONw43zjhOOQ45jjpOPI49DkBOQQ5 +BzkKOQ05EDkTOTQ5Nzk5OTw5PzlAOUI5RTleOX85gTmDOYY5iDmLOY05oznIOcs5zTnQOdM51TnYOds5 +4DniOfo6GzoeOiA6IzomOic6KTosOkQ6ZTpnOmk6bDpuOnE6czp8Or86wjrEOsc6yjrMOs060DrSOtQ6 +1jrZOts65DrmOuk66zr0OvY7DzsSOxU7GDsaOx07IDsiOyU7KDsrOy47MTtSO1Q7VjtZO1w7XTtfO2E7 +eTuaO5w7njuhO6M7pjurO607wDvhO+M75TvoO+s77DvuO/A8CDwpPCs8LTwwPDI8NTw3PEQ8ZTxnPGk8 +bDxvPHA8cjx0PI08rjywPLI8tTy3PLo8vDzXPPg8+jz8PP89Aj0DPQU9Bz0hPSo9LD1ZPVw9Xj1hPWM9 +ZT1nPWo9bT12PXg9gT2DPYo9jT2QPZM9xD3SPd894j3kPeY95z3pPeo97D3uPfE99D4VPhc+GT4cPh8+ +ID4iPiQ+PD5dPl8+YT5kPmY+aT5rPoI+oz6lPqc+qj6tPq4+sD6yPso+6z7tPu8+8j70Pvc++T8LPyw/ +Lj8wPzM/Nj83Pzk/Oz9VP6Q/pT+nP6k/qz+uP7A/sz+2P7c/uD+7P8Q/xj/zP/Y/+D/7P/0//0ABQARA +B0AUQBZAGUAcQCVALkAwQDlAO0BEQEdASkBNQFBAeUB8QH5AgUCDQIVAh0CKQI1AlEC9QMBAwkDFQMdA +yUDLQM5A0UDZQQJBBUEHQQpBDEEOQRBBE0EWQSFBQkFEQUZBSUFMQU1BT0FRQWpBvUG+QcBBwkHFQchB +ykHNQdBB0UHSQdVB5kHoQepB80H1QiJCJUInQipCLEIuQjBCM0I2QkNCRUJIQktCT0JYQlpCY0JlQm5C +cUJ0QndCekKjQqZCqEKrQq1Cr0KxQrRCt0LgQuNC5ULoQupC7ELuQvFC9EL4QyFDJEMmQylDK0MtQy9D +MkM1QzlDWkNcQ15DYUNkQ2VDZ0NpQ4FDokOkQ6ZDqUOrQ65DsEPFQ9xD9UQSRBREFkQYRBpEHUQqRCxE +TURQRFJEVURYRFlEW0ReRHZEl0SZRJtEnkSgRKNEpUSrRORE50TqRO1E8ETxRPRE9kT4RPtE/kUHRQlF +DEUPRSxFL0UxRTRFN0U5RTxFRUVHRUpFTEVVRVdFYkVkRWdFakVsRW5Fd0V5RXxFfkWVRZ5Fp0WyRddF +4UXjReVF6EXrRe1F8EXyRftGE0YgRilGNEY/RmxGbkZwRnNGdkZ3RnlGfEZ+RodGo0asRq5GsUazRslG +4UbqRvNHAEcWRy9HTEdOR1BHUkdUR1dHZEdmR29HeEeDR4xHjkebR6xHrkewR7JHtUe9R85H0EfTR9VH +2EftR/pH/Ef/SAJII0glSChIK0gtSC9IMUg2SDhIPkhLSE1IUEhTSHRIdkh5SHtIfUh/SIFIiEiQSKFI +o0ilSKhIq0jISMpIzUjPSNFI00jVSO9JD0kcSR5JIUkkSUVJR0lKSU1JT0lRSVRJZUlnSWpJbUlwSXlJ +e0mRSZ5JoEmjSaZJx0nJScxJz0nRSdNJ1UngSeJJ7Un6SfxJ/0oCSiNKJUooSitKLUovSjJKP0pBSkRK +R0pNSk9KXUpqSmxKb0pySpNKlUqYSppKnEqeSqFKsEq/StBK0krUStZK2UruSv9LAUsESwZLCUsfSzBL +Mks0SzZLOUtFS1ZLWEtaS1xLX0tzS4RLhkuIS4pLjUuiS69LsUu0S7dL2EvaS91L30vhS+NL5kv7TA1M +HkwgTCJMJUwoTElMS0xOTFBMUkxUTFZMb0x1TIZMiEyKTIxMj0yiTLNMtUy4TLpMvUzVTOJM5EznTOpN +C00NTRBNE00VTRdNGU0xTTNNR01YTVpNXE1eTWFNbE19TX9NgU2DTYZNj02gTaJNpU2nTapNw03FTcdN +yk3NTc9N2U3kTfFN8032TflOGk4cTh9OIk4kTiZOKE48Tj5OXk5rTm1OcE5zTpROlk6ZTpxOnk6gTqNO +uk68TstO3E7eTuBO407mTwdPCU8MTw5PEE8STxRPHU82T0NPRU9IT0tPbE9uT3FPc091T3dPek9/T4xP +nU+fT6FPo0+mT7VPxk/IT8tPzU/QT+RP8U/zT/ZP+FAdUB9QIlAlUCdQKVArUDVQN1BEUEZQSVBLUHBQ +clB1UHhQelB8UH5QjFCOUJtQnVCgUKNQxFDGUMlQzFDOUNBQ01DgUOJQ6VD2UPhQ+1D+UR9RIVEkUSdR +KVErUS1RMlE0UTpRS1FNUVBRUlFVUWtReFF6UX1Rf1GkUaZRqVGsUa5RsFGyUb1Rv1HQUdJR1FHXUdpR ++1H9UgBSA1IFUgdSCVIiUiRSL1JAUkJSRFJGUklSVlJYUltSXlJ/UoFShFKGUohSilKNUqpSy1LUUtZU +HVQgVCNUJlQpVCxULlQxVDRUN1Q5VDxUP1RCVERURlRIVEtUTlRQVFNUVVRYVFtUXVRgVGJUZVRoVGpU +bVRwVHNUdVR4VHtUflSBVIRUhlSIVItUjVSQVJNUlVSYVJtUnlShVKNUplSpVKtUrVSwVLNUtVS4VLtU +vlTBVMRUxlTJVMxUzlTRVNNU1lTZVNxU31TiVOVU6FTqVO1U71TxVPNU9lT5VPxU/lUAVQNVBlUJVQxV +D1USVRRVF1UaVR1VIFUjVSZVKFUqVS1VL1UxVTRVN1U6VT1VQFVCVUVVSFVKVU1VT1VRVVRVVlVZVVxV +X1VhVWRVZ1VpVWxVb1VxVXRVd1V6VX1VgFWDVYZViFWLVY5VkFWTVZZVmVWcVZ9VolWlVahVqlWtVbBV +s1W1VbhVulW8Vb5VwVXDVcZVyFXKVcxVzlXvVfFV9FX3VflV+1X9VhZWGFY5VjtWPlZBVkNWRVZIVlNW +VVZ+VoBWglaDVoVWhlaIVopWjVauVrBWs1a1VrdWuVa7VuBW6VbrVvBW+Vb7Vv5XAVcqVyxXLlcvVzFX +Mlc0VzZXOFdJV0tXTldRV1RXXVdfV2hXcVdzV3RXhlevV7FXs1e0V7ZXt1e5V7tXvlfnV+lX61fsV+5X +71fxV/NX9VgeWCBYIlgjWCVYJlgoWCpYLFhVWF9YYVhkWGdYaVhrWG1YcFhzWIRYhliJWIxYj1ieWMdY +yVjLWMxYzljPWNFY01jVWP5ZAFkDWQZZCFkKWQxZDlkRWRpZHFkhWSpZLFlDWUZZSVlMWU9ZUllVWVhZ +W1leWWFZZFmFWYdZilmNWY9ZkVmUWZhZmlnDWcVZx1nKWcxZzlnQWdNZ1lniWetZ7Vn2WfhZ+1n9WhZa +N1o5WjxaP1pBWkNaRlpLWk1ablpwWnNadlp4WnpafVqOWpBarVqvWrJatFq2Wrhau1rCWstazVrSWtta +3Vr4Wvpa/VsAWwJbBVsIWwtbDlsRWxRbF1saWx1bRltIW0pbS1tNW05bUFtSW1RbfVt/W4FbgluEW4Vb +h1uJW4tbtFu2W7hbu1u9W79bwVvDW8Zby1vUW9Zb31vhW+xb71vyW/Vb91v6XCNcJVwoXCtcLVwvXDFc +M1w2XD9cSFxKXFFcVFxXXFpcg1yFXIhci1yNXI9ckVyTXJZcnVymXKhcrVywXLNc3FzeXOFc5FzmXOhc +6lztXPBc+Vz7XRRdF10aXR1dIF0jXSZdKV0sXS5dMV00XTddRF1NXU9dUl1bXV1dZF1tXW9deF17XX5d +gV2EXa1dr12xXbJdtF21XbdduV28Xctd9F32Xfhd+139Xf9eAV4EXgdeEF4ZXhteJl4pXixeL14yXjVe +Xl5gXmJeZF5mXmheal5tXnBemV6bXp5eoV6jXqVep16qXq1euV7CXsRgC2AOYBFgFGAWYBhgGmAdYCBg +I2AlYCdgKmAsYC5gMGAzYDZgOWA7YD5gQGBCYERgRmBIYEpgTWBQYFJgVGBXYFpgXGBfYGJgZGBmYGhg +amBsYG5gcGBzYHZgeGB7YH5ggWCDYIVgh2CKYI1gj2CSYJRglmCZYJxgnmCgYKJgpGCnYKpgrGCvYLJg +tGC3YLlgvGC/YMJgxWDHYMpgzGDOYNBg02DWYNlg22DdYOBg42DmYOhg62DtYO9g8mD1YPhg+2D9YP9h +AWEEYQdhCWELYQ5hEGETYRZhGWEbYR5hIWEjYSZhKGEqYS1hL2EyYTVhN2E5YTxhP2FBYURhRmFJYUxh +T2FSYVRhVmFZYVxhXmFhYWRhZmFpYWxhb2FyYXRhdmF5YXxhfmGBYYRhh2GJYYxhjmGQYZNhlWGYYZth +nWGfYaFho2GsYa5i92L6Yv1jAGMDYwZjCGMLYw5jEWMTYxZjGWMcYx5jIGMiYyVjKGMqYy1jL2MyYzVj +N2M6YzxjP2NCY0RjR2NKY01jT2NSY1VjWGNbY15jYGNiY2VjZ2NqY21jb2NyY3VjeGN7Y31jgGOCY4Rj +h2OKY41jkGOSY5RjlmOZY5xjn2OiY6VjqGOrY61jr2OyY7VjuGO7Y75jwWPEY8ZjyWPLY85j0GPTY9Vj +2GPaY9xj32PiY+Vj6GPrY+5j8GPzY/Zj+WP8Y/9kAmQEZAZkCWQLZA1kEGQTZBZkGWQcZB9kIWQjZCZk +KWQrZC1kMGQzZDVkOGQ7ZD1kQGRDZEVkSGRLZE1kUGRTZFZkWWRcZF9kYmRkZGdkamRsZG9kcmR1ZHhk +e2R+ZIFkhGSGZIlkjGSPZJFklGSWZJlkm2SdZJ9komSkZKZkqGSqZLNktWX+ZgFmBGYHZgpmDWYQZhNm +FmYZZhxmH2YiZiVmKGYrZi5mMWY0ZjdmOmY9ZkBmQ2ZFZkhmS2ZOZlFmVGZXZlpmXWZgZmNmZmZpZmxm +b2ZyZnVmeGZ7Zn5mgWaEZodmimaNZpBmk2aWZplmnGafZqJmpWaoZqtmrmaxZrRmt2a6Zr1mwGbDZsZm +yWbMZs9m0mbVZthm22beZuFm5GbnZupm7WbwZvNm9mb5Zvxm/2cCZwVnCGcLZw5nEWcUZxdnGmcdZyBn +I2cmZylnLGcvZzJnNWc4ZztnPmdBZ0RnR2dKZ01nUGdTZ1ZnWWdcZ19nYmdlZ2hna2duZ3FndGd3Z3pn +fWeAZ4NnhmeJZ4xnj2eSZ5VnmGebZ55noWekZ6dnqmetZ7Bns2e2Z7lnvGe/Z8JnxWfIZ8tnzmfRZ9Rn +12faZ91n4GfjZ+ZoA2gXaC1oRmh5aJ5ow2jNaOJo72ksaThpRGlpaX1poWnUadtp/GocajRqSGpbanFq +jmqkaq1qxGrkavZrDGs9a0lrZWuKa5ZrqGu/a8tr62v3bA5sLmxHbGBsc2x/bJ9sq2y3bMps4WzzbQxt +Jm1BbVttf22TbZ9txW3ibfVuHG49blhuZW5xboduk26qbs5u3G7vbwRvFm8hb0RvdW+ib7ZvyG/ycAdw +LHBIcGJwhnCccLNwynDWcOlw/nEjcThxQXFLcVhxgXGkcbhx3XIAcgpyHXIpckpyYXJ6cqNyynLecv5z +E3Mtc1pze3ORc6dzxHPWc+p0BXQqdDZ0THR7dJF0nXS9dOV08XUFdSd1R3VldZB1vXXddfB2BXYgdkV2 +bHaJdrJ2x3budwt3GXcldzh3Undnd3N3hXeyd+N3+HgKeBN4FXgaeBx4H3goeCp4L3gxeDN4PHg+eft5 +/noBegR6BnoJegx6D3oRehR6FnoZeht6HXogeiN6JXooeip6LXovejF6NHo2ejl6PHo+ekF6Q3pGekh6 +S3pOelB6UnpUelZ6WXpcel96Ynplemd6anptenB6c3p2enl6e3p9en96gnqEeod6inqNeo96knqVeph6 +m3qeeqB6onqkeqZ6qXqseq96snq0erd6unq9esB6w3rGesh6y3rOetF61HrXetp63XrgeuN65nrpeut6 +7nrxevR693r6evx6/3sCewR7B3sKew17D3sSexV7GHsbex57IXsjeyZ7KXsrey57MHsyezV7OHs7ez57 +QXtEe0Z7SXtMe097UntUe1d7Wntde2B7Y3tle2d7antte3B7c3t2e3h7e3t9e4B7g3uGe4l7jHuPe5J7 +lXuXe5p7nXuge6N7pnuoe6p7rXuwe7N7tnu5e7t7vnvBe8R7x3vKe8x7z3vSe9V72Hvbe9574Xvke+Z7 +6Xvse+978Xv0e/Z7+Xv7e/58AHwDfAZ8CHwKfAx8D3wSfBV8GHwafB18IHwjfCZ8KXwsfC98Mnw0fDd8 +OXw7fD18QHxCfEV8R3xJfEt8TnxQfFl8W34Yfht+Hn4hfiR+J34qfi1+MH4zfjZ+OX48fj9+Qn5Ffkh+ +S35OflF+VH5Xflp+XX5gfmN+Zn5pfmx+b35yfnV+eH57fn5+gX6Efod+in6NfpB+k36Wfpl+nH6ffqJ+ +pX6ofqt+rn6xfrR+t366fr1+wH7DfsZ+yX7Mfs9+0n7Vfth+237efuF+5H7nfup+7X7wfvN+9n75fvx+ +/38CfwV/CH8Lfw5/EX8Ufxd/Gn8dfyB/I38mfyl/LH8vfzJ/NX84fzt/Pn9Bf0R/R39Kf01/UH9Tf1Z/ +WX9cf19/Yn9lf2h/a39uf3F/dH93f3p/fX+Af4N/hn+Jf4x/j3+Sf5V/mH+bf55/oX+kf6d/qn+tf7B/ +s3+2f7l/vH+/f8J/xX/If8t/zn/Rf9R/13/af91/4H/jf+Z/6X/sf+9/8n/1f/h/+3/+gAGABIAHgAqA +DYAQgBOAFoAZgByAH4AigCWAKIArgC6AMYA0gDeAOoA9gECAQ4BGgEmATIBPgFKAVYBYgFuAXoBhgGSA +Z4BqgG2AcIBzgHaAeYB8gH+AgoCFgIiAi4COgJGAlICXgJqAnYCggKOApoCpgKyAr4CygLSAtoC5gLuA +voDBgMOAxYDHgMqAzYDQgNKA1YDYgNuA3oDggOOA5oDpgOuA7oDwgPKA9ID3gPmA+4D9gQCBAoEEgQeB +CoEMgQ+BEoEUgReBGoEjgSWBJ4EpgSyBLoExgTSBN4E6gT2BQIFCgUSBR4FJgUuBToFQgVOBVYFYgVuB +XoFggWKBZYFogWuBboFxgXSBd4F6gX2BgIGCgYWBiIGKgYyBj4GSgZSBl4GagZ2BoIGigaSBp4Gqga2B +r4GygbSBtoG4gbqBvYG/gcKBxYHIgcqBzIHOgdCB0oHUgdaB2YHbgd2B4IHigeSB54HpgeuB7YHwgfOB +9YH4gfqB/IH+ggGCBIIHggqCDYIQghKCFYIXghqCHIIegiCCIoIlgieCKYIsgi6CMIIzgjWCN4I5gjyC +P4JCgkSCR4JJgkyCToJQglKCVYJXglqCXYJfgmGCZIJngmmCa4JugnGCc4J2gnmCfIJ+goCCgoKFgoeC +ioKNgpCCk4KWgpmCm4KdgqCCooKlgqiCq4Ktgq+CsoK0graCuYK8gr+CwoLEgseCyYLMgs+C0oLVgtiC +2oLjguWC5oLvgvGC8oL7gv2C/oMHgwwAAAAAAAACAgAAAAAAABBKAAAAAAAAAAAAAAAAAACDGw + + + diff -Nru handbrake-0.9.9+dfsg/macosx/InstantHandBrake/English.lproj/InfoPlist.strings handbrake-0.9.9+ppa1/macosx/InstantHandBrake/English.lproj/InfoPlist.strings --- handbrake-0.9.9+dfsg/macosx/InstantHandBrake/English.lproj/InfoPlist.strings 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/InstantHandBrake/English.lproj/InfoPlist.strings 2008-01-30 12:28:55.000000000 +0000 @@ -0,0 +1,4 @@ +/* Localized versions of Info.plist keys */ + +CFBundleName = "Instant HandBrake"; +NSHumanReadableCopyright = "Copyright © 2004 - 2008, HandBrake Devs"; diff -Nru handbrake-0.9.9+dfsg/macosx/InstantHandBrake/ExpressController.h handbrake-0.9.9+ppa1/macosx/InstantHandBrake/ExpressController.h --- handbrake-0.9.9+dfsg/macosx/InstantHandBrake/ExpressController.h 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/InstantHandBrake/ExpressController.h 2008-01-30 17:07:03.000000000 +0000 @@ -0,0 +1,65 @@ +/* ExpressController + + This file is part of the HandBrake source code. + Homepage: . + It may be used under the terms of the GNU General Public License. */ + +#import +#import + +#import "DriveDetector.h" +#import "DeviceController.h" +#import "HBCore.h" +#import "hb.h" + +@interface ExpressController : NSObject + +{ + hb_handle_t * fHandle; + hb_list_t * fList; + const hb_state_t * fState; + + IBOutlet NSWindow * fWindow; + IBOutlet NSView * fEmptyView; + IBOutlet NSToolbar * fToolbar; + + IBOutlet NSView * fOpenView; + IBOutlet NSMatrix * fOpenMatrix; + IBOutlet NSPopUpButton * fOpenPopUp; + IBOutlet NSTextField * fOpenFolderField; + IBOutlet NSButton * fOpenBrowseButton; + IBOutlet NSTextField * fOpenProgressField; + IBOutlet NSProgressIndicator * fOpenIndicator; + IBOutlet NSButton * fOpenGoButton; + NSString * fOpenFolderString; + + IBOutlet NSView * fConvertView; + IBOutlet NSTableView * fConvertTableView; + IBOutlet NSPopUpButton * fConvertFolderPopUp; + IBOutlet NSPopUpButton * fConvertFormatPopUp; + IBOutlet NSPopUpButton * fConvertMaxWidthPopUp; + IBOutlet NSPopUpButton * fConvertAspectPopUp; + IBOutlet NSPopUpButton * fConvertAudioPopUp; + IBOutlet NSPopUpButton * fConvertSubtitlePopUp; + IBOutlet NSTextField * fConvertInfoString; + IBOutlet NSProgressIndicator * fConvertIndicator; + NSMutableArray * fConvertCheckArray; + NSString * fConvertFolderString; + + DriveDetector * fDriveDetector; + HBCore * fCore; + DeviceController * fDevice; + NSDictionary * fDrives; +} + +- (void) openShow: (id) sender; +- (void) openMatrixChanged: (id) sender; +- (void) openBrowse: (id) sender; +- (void) openGo: (id) sender; + +- (void) selectFolderSheetShow: (id) sender; +- (void) convertGo: (id) sender; +- (void) convertCancel: (id) sender; + +@end + diff -Nru handbrake-0.9.9+dfsg/macosx/InstantHandBrake/ExpressController.m handbrake-0.9.9+ppa1/macosx/InstantHandBrake/ExpressController.m --- handbrake-0.9.9+dfsg/macosx/InstantHandBrake/ExpressController.m 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/InstantHandBrake/ExpressController.m 2011-03-11 22:40:30.000000000 +0000 @@ -0,0 +1,808 @@ +/* This file is part of the HandBrake source code. + Homepage: . + It may be used under the terms of the GNU General Public License. */ + +#import "ExpressController.h" + +#define INSERT_STRING @"Insert a DVD" +#define TOOLBAR_START @"TOOLBAR_START" +#define TOOLBAR_PAUSE @"TOOLBAR_PAUSE" +#define TOOLBAR_OPEN @"TOOLBAR_OPEN" +#define TOOLBAR_ADVANCED @"TOOLBAR_ADVANCED" + +#define p fState->param + +#import "Device.h" + +@interface ExpressController (Private) + +- (void) openUpdateDrives: (NSDictionary *) drives; +- (void) openBrowseDidEnd: (NSOpenPanel *) sheet returnCode: (int) + returnCode contextInfo: (void *) contextInfo; +- (void) openEnable: (BOOL) b; + +- (id) updatePopUpIcon: (id) value; +- (void) convertShow; +- (void) convertEnable: (BOOL) b; + +@end + +@implementation ExpressController + +/*********************************************************************** + * Application delegate methods + **********************************************************************/ +- (void) awakeFromNib +{ + NSEnumerator * enumerator; + + /* NSToolbar initializations */ + fToolbar = [[NSToolbar alloc] initWithIdentifier: @"InstantHandBrake Toolbar"]; + [fToolbar setDelegate: self]; + [fToolbar setAllowsUserCustomization: NO]; + [fToolbar setDisplayMode: NSToolbarDisplayModeIconAndLabel]; + [fToolbar setVisible:NO]; + [fWindow setShowsToolbarButton:NO]; + [fWindow setToolbar: fToolbar]; + + /* Show the "Open DVD" interface */ + fDriveDetector = [[DriveDetector alloc] initWithCallback: self + selector: @selector( openUpdateDrives: )]; + [fDriveDetector run]; + [self openEnable: YES]; + [fWindow setContentSize: [fOpenView frame].size]; + [fWindow setContentView: fOpenView]; + [fWindow center]; + [fWindow makeKeyAndOrderFront: nil]; + + /* NSTableView initializations */ + NSButtonCell * buttonCell; + NSTableColumn * tableColumn; + enumerator = [[fConvertTableView tableColumns] objectEnumerator]; + while( ( tableColumn = [enumerator nextObject] ) ) + { + [tableColumn setEditable: NO]; + } + tableColumn = [fConvertTableView tableColumnWithIdentifier: @"Check"]; + buttonCell = [[[NSButtonCell alloc] initTextCell: @""] autorelease]; + [buttonCell setEditable: YES]; + [buttonCell setButtonType: NSSwitchButton]; + [tableColumn setDataCell: buttonCell]; + + /* Preferences */ + fConvertFolderString = [NSHomeDirectory() stringByAppendingPathComponent:@"Desktop"]; + [fConvertFolderString retain]; +} + +- (void) applicationWillFinishLaunching: (NSNotification *) n +{ + fCore = [[HBCore alloc] init]; + [fCore openInDebugMode:NO checkForUpdates:NO]; + fHandle = [fCore hb_handle]; + fState = [fCore hb_state]; + fList = hb_get_titles( fHandle ); + + fDevice = [[DeviceController alloc] init]; + + [[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(scanningSource:) + name:@"HBCoreScanningNotification" object:nil]; + + [[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(scanDone:) + name:@"HBCoreScanDoneNotification" object:nil]; + + [[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(muxing:) + name:@"HBCoreMuxingNotification" object:nil]; + + [[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(working:) + name:@"HBCoreWorkingNotification" object:nil]; + + [[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(workDone:) + name:@"HBCoreWorkDoneNotification" object:nil]; + + [GrowlApplicationBridge setGrowlDelegate: self]; +} + +- (void) applicationWillTerminate: (NSNotification *) n +{ + [fCore close]; +} + +- (BOOL)applicationShouldHandleReopen:(NSApplication *)theApplication hasVisibleWindows:(BOOL)flag +{ + if( !flag ) { + [fWindow makeKeyAndOrderFront:nil]; + return YES; + } + return NO; +} + +- (NSToolbarItem *) toolbar: (NSToolbar *) toolbar itemForItemIdentifier: (NSString *) ident + willBeInsertedIntoToolbar: (BOOL) flag +{ + NSToolbarItem * item; + item = [[NSToolbarItem alloc] initWithItemIdentifier: ident]; + + if ([ident isEqualToString: TOOLBAR_START]) + { + [item setLabel: NSLocalizedString(@"Convert", "Convert")]; + [item setPaletteLabel: NSLocalizedString(@"Convert/Cancel", @"Convert/Cancel")]; + [item setImage: [NSImage imageNamed: @"Play"]]; + [item setTarget: self]; + [item setAction: @selector(convertGo:)]; + } + else if ([ident isEqualToString: TOOLBAR_PAUSE]) + { + [item setLabel: NSLocalizedString(@"Pause", "Pause")]; + [item setPaletteLabel: NSLocalizedString(@"Pause/Resume", @"Pause/Resume")]; + [item setImage: [NSImage imageNamed: @"Pause"]]; + [item setTarget: self]; + [item setAction: @selector(pauseGo:)]; + } + else if ([ident isEqualToString: TOOLBAR_OPEN]) + { + [item setLabel: NSLocalizedString(@"Open...", "Open...")]; + [item setPaletteLabel: NSLocalizedString(@"Open Another Source", "Open Another Source")]; + [item setImage: [NSImage imageNamed: @"Open"]]; + [item setTarget: self]; + [item setAction: @selector(openShow:)]; + } + else + { + [item release]; + return nil; + } + + return item; +} + +- (NSArray *) toolbarDefaultItemIdentifiers: (NSToolbar *) toolbar +{ + return [NSArray arrayWithObjects: TOOLBAR_START, TOOLBAR_PAUSE, + NSToolbarFlexibleSpaceItemIdentifier, TOOLBAR_OPEN, nil]; +} + +- (NSArray *) toolbarAllowedItemIdentifiers: (NSToolbar *) toolbar +{ + return [NSArray arrayWithObjects: TOOLBAR_START, TOOLBAR_PAUSE, + TOOLBAR_OPEN, NSToolbarFlexibleSpaceItemIdentifier, nil]; +} + +/*********************************************************************** + * Tableview datasource methods + **********************************************************************/ +- (int) numberOfRowsInTableView: (NSTableView *) t +{ + if( !fHandle ) + return 0; + + return hb_list_count( fList ); +} + +- (id) tableView:(NSTableView *) t objectValueForTableColumn: + (NSTableColumn *) col row: (int) row +{ + if( [[col identifier] isEqualToString: @"Check"] ) + { + return [fConvertCheckArray objectAtIndex: row]; + } + else + { + hb_title_t * title = hb_list_item( fList, row ); + if( [[col identifier] isEqualToString: @"Title"] ) + { + return [@"Title " stringByAppendingFormat: @"%d", + title->index]; + } + else if( [[col identifier] isEqualToString: @"Duration"] ) + { + if( title->hours > 0 ) + { + return [NSString stringWithFormat: + @"%d hour%s %d min%s", title->hours, + title->hours > 1 ? "s" : "", title->minutes, + title->minutes > 1 ? "s": ""]; + } + else if( title->minutes > 0 ) + { + return [NSString stringWithFormat: + @"%d min%s %d sec%s", title->minutes, + title->minutes > 1 ? "s" : "", title->seconds, + title->seconds > 1 ? "s": ""]; + } + else + { + return [NSString stringWithFormat: @"%d seconds", + title->seconds]; + } + } + else if( [[col identifier] isEqualToString: @"Size"] ) + { + return [NSString stringWithFormat:@"-"]; + } + } + return nil; +} + +- (void) tableView: (NSTableView *) t setObjectValue: (id) object + forTableColumn: (NSTableColumn *) col row: (int) row +{ + if( [[col identifier] isEqualToString: @"Check"] ) + { + [fConvertCheckArray replaceObjectAtIndex: row withObject: object]; + } +} + +/*********************************************************************** + * User events methods + **********************************************************************/ +- (void) openShow: (id) sender +{ + NSRect frame = [fWindow frame]; + float offset = ( [fConvertView frame].size.height - + [fOpenView frame].size.height ) * [fWindow userSpaceScaleFactor]; + + frame.origin.y += offset; + frame.size.height -= offset; + [fWindow setContentView: fEmptyView]; + [fWindow setFrame: frame display: YES animate: YES]; + [fToolbar setVisible:NO]; + [fOpenProgressField setStringValue: @""]; + [fWindow setContentView: fOpenView]; + + [fDriveDetector run]; +} + +- (void) openMatrixChanged: (id) sender +{ + [self openEnable: YES]; + if( [fOpenMatrix selectedRow] ) + { + [self openBrowse: self]; + } +} + +- (void) openBrowse: (id) sender +{ + NSOpenPanel * panel = [NSOpenPanel openPanel]; + [panel setAllowsMultipleSelection: NO]; + [panel setCanChooseFiles: YES]; + [panel setCanChooseDirectories: YES ]; + [panel beginSheetForDirectory: nil file: nil types: nil + modalForWindow: fWindow modalDelegate: self + didEndSelector: @selector( openBrowseDidEnd:returnCode:contextInfo: ) + contextInfo: nil]; +} + +- (void) openGo: (id) sender +{ + [self openEnable: NO]; + [fOpenIndicator setIndeterminate: YES]; + [fOpenIndicator startAnimation: nil]; + [fOpenProgressField setStringValue: NSLocalizedString( @"Opening...", @"Opening...") ]; + [fDriveDetector stop]; + + if( [fOpenMatrix selectedRow] ) + { + hb_scan( fHandle, [fOpenFolderString UTF8String], 0 ); + } + else + { + hb_scan( fHandle, [[fDrives objectForKey: [fOpenPopUp + titleOfSelectedItem]] UTF8String], 0 ); + } +} + +- (void) selectFolderSheetShow: (id) sender +{ + NSOpenPanel * panel = [NSOpenPanel openPanel]; + + [panel setPrompt: NSLocalizedString(@"Select", @"Convert -> Save panel prompt")]; + [panel setAllowsMultipleSelection: NO]; + [panel setCanChooseFiles: NO]; + [panel setCanChooseDirectories: YES]; + [panel setCanCreateDirectories: YES]; + + [panel beginSheetForDirectory: nil file: nil types: nil + modalForWindow: fWindow modalDelegate: self didEndSelector: + @selector(selectFolderSheetClosed:returnCode:contextInfo:) contextInfo: nil]; +} + +- (void) selectFolderSheetClosed: (NSOpenPanel *) sheet returnCode: (int) + returnCode contextInfo: (void *) contextInfo +{ + if( returnCode != NSOKButton ) + return; + + if( fConvertFolderString ) + [fConvertFolderString release]; + fConvertFolderString = [[[sheet filenames] objectAtIndex: 0] retain]; + [[fConvertFolderPopUp itemAtIndex: 0] setTitle: [fConvertFolderString lastPathComponent]]; + [fConvertFolderPopUp selectItemAtIndex:0]; + + NSMenuItem * item = [fConvertFolderPopUp itemAtIndex: 0]; + [item setImage: [self updatePopUpIcon:fConvertFolderString]]; + +} + +- (void) convertGo: (id) sender +{ + int i, j; + Preset * currentPreset = [[[fDevice devicesList] objectAtIndex:[fConvertFormatPopUp indexOfSelectedItem]] firstPreset]; + + for( i = 0; i < hb_list_count( fList ); i++ ) + { + if( ![[fConvertCheckArray objectAtIndex: i] boolValue] ) + continue; + + hb_title_t * title = hb_list_item( fList, i ); + hb_job_t * job = title->job; + + int maxwidth = [currentPreset maxWidth]; + int maxheight = [currentPreset maxHeight]; + int pixels = maxwidth * maxheight; + int aspect = title->aspect; + + if( [fConvertAspectPopUp indexOfSelectedItem] == 1 ) + { + aspect = 4 * HB_ASPECT_BASE / 3; + } + else if ( [fConvertAspectPopUp indexOfSelectedItem] == 2 ) + { + aspect = 16 * HB_ASPECT_BASE / 9; + } + + job->vbitrate = [currentPreset videoBitRate]; + + if( [fConvertMaxWidthPopUp indexOfSelectedItem] == 2 ) + { + maxwidth = 480; + job->vbitrate /= 1.5; + } + else if ( [fConvertMaxWidthPopUp indexOfSelectedItem] == 3 ) + { + maxwidth = 320; + job->vbitrate /= 2; + } + + if ( [fConvertAspectPopUp indexOfSelectedItem] > 0 ) + { + do + { + hb_set_size( job, aspect, pixels ); + pixels -= 10; + } while(job->width > maxwidth || job->height > maxheight); + } + else + { + /* Reset job->crop values */ + memcpy( job->crop, job->title->crop, 4 * sizeof( int ) ); + job->width = maxwidth; + hb_fix_aspect( job, HB_KEEP_WIDTH ); + } + + job->mux = [currentPreset muxer]; + job->vcodec = [currentPreset videoCodec]; + job->advanced_opts = (char *)calloc(1024, 1); /* Fixme, this just leaks */ + strcpy(job->advanced_opts, [[currentPreset videoCodecOptions] UTF8String]); + job->chapter_markers = 1; + job->vquality = -1.0; + + const char * lang; + + /* Audio selection */ + hb_audio_t * audio; + lang = [[fConvertAudioPopUp titleOfSelectedItem] UTF8String]; + job->audios[0] = -1; + for( j = 0; j < hb_list_count( title->list_audio ); j++ ) + { + /* Choose the first track that matches the language */ + audio = hb_list_item( title->list_audio, j ); + if( !strcmp( lang, audio->lang_simple ) ) + { + job->audios[0] = j; + break; + } + } + if( job->audios[0] == -1 ) + { + /* If the language isn't available in this title, choose + the first track */ + job->audios[0] = 0; + } + job->audios[1] = -1; + + job->audio_mixdowns[0] = HB_AMIXDOWN_DOLBYPLII; + + /* Subtitle selection */ + hb_subtitle_t * subtitle; + lang = [[fConvertSubtitlePopUp titleOfSelectedItem] UTF8String]; + job->subtitle = -1; + for( j = 0; j < hb_list_count( title->list_subtitle ); j++ ) + { + /* Choose the first track that matches the language */ + subtitle = hb_list_item( title->list_subtitle, j ); + if( !strcmp( lang, subtitle->lang ) ) + { + job->subtitle = j; + break; + } + } + + job->file = strdup( [[NSString stringWithFormat: + @"%@/%s - Title %d.m4v", fConvertFolderString, + title->name, title->index] UTF8String] ); + hb_add( fHandle, job ); + } + + hb_start( fHandle ); + + [self convertEnable: NO]; +} + +- (void) convertCancel: (id) sender +{ + hb_stop( fHandle ); + [self convertEnable: YES]; +} + +@end + +/*********************************************************************** + * Private methods + **********************************************************************/ + +@implementation ExpressController (Private) + +- (void) openUpdateDrives: (NSDictionary *) drives +{ + if( fDrives ) + { + [fDrives release]; + } + fDrives = [[NSDictionary alloc] initWithDictionary: drives]; + + NSString * device; + NSEnumerator * enumerator = [fDrives keyEnumerator]; + [fOpenPopUp removeAllItems]; + while( ( device = [enumerator nextObject] ) ) + { + [fOpenPopUp addItemWithTitle: device]; + } + + if( ![fOpenPopUp numberOfItems] ) + { + [fOpenPopUp addItemWithTitle: INSERT_STRING]; + } + [fOpenPopUp selectItemAtIndex: 0]; + if( [fOpenMatrix isEnabled] ) + { + [self openEnable: YES]; + } +} + +- (void) openBrowseDidEnd: (NSOpenPanel *) sheet returnCode: (int) + returnCode contextInfo: (void *) contextInfo +{ + if( returnCode != NSOKButton ) + return; + + if( fOpenFolderString ) + [fOpenFolderString release]; + fOpenFolderString = [[[sheet filenames] objectAtIndex: 0] retain]; + [fOpenFolderField setStringValue: [fOpenFolderString lastPathComponent]]; + [self openGo: self]; +} + +- (BOOL)validateToolbarItem: (NSToolbarItem *) toolbarItem +{ + NSString * ident = [toolbarItem itemIdentifier]; + + if ([ident isEqualToString: TOOLBAR_START] && [HBStateWorking isEqualToString:[fCore state]]) + { + [toolbarItem setAction: @selector(convertCancel:)]; + [toolbarItem setLabel:NSLocalizedString(@"Cancel", @"Cancel")]; + return YES; + } + else if ([ident isEqualToString: TOOLBAR_START] && [HBStateWorkDone isEqualToString:[fCore state]]) + { + [toolbarItem setAction: @selector(convertGo:)]; + [toolbarItem setLabel:NSLocalizedString(@"Convert", @"Convert")]; + return YES; + } + else if ([ident isEqualToString: TOOLBAR_OPEN] && [HBStateWorking isEqualToString:[fCore state]]) + { + return NO; + } + + return YES; +} + +- (void) openEnable: (BOOL) b +{ + [fOpenMatrix setEnabled: b]; + [fOpenPopUp setEnabled: b]; + [fOpenFolderField setEnabled: b]; + [fOpenBrowseButton setEnabled: b]; + [fOpenGoButton setEnabled: b]; + + if( b ) + { + if( [fOpenMatrix selectedRow] ) + { + [fOpenPopUp setEnabled: NO]; + } + else + { + [fOpenFolderField setEnabled: NO]; + [fOpenBrowseButton setEnabled: NO]; + if( [[fOpenPopUp titleOfSelectedItem] + isEqualToString: INSERT_STRING] ) + { + [fOpenGoButton setEnabled: NO]; + } + } + } +} + +- (void) scanningSource: (NSNotification *) n +{ + [fOpenIndicator setIndeterminate: NO]; + [fOpenIndicator setDoubleValue: 100.0 * + ( (float) p.scanning.title_cur - 0.5 ) / p.scanning.title_count]; + [fOpenProgressField setStringValue: [NSString + stringWithFormat: @"Scanning title %d of %d...", + p.scanning.title_cur, p.scanning.title_count]]; +} + +- (void) scanDone: (NSNotification *) n +{ + [fOpenIndicator setIndeterminate: NO]; + [fOpenIndicator setDoubleValue: 0.0]; + + [self openEnable: YES]; + + if( hb_list_count( fList ) ) + { + [self convertShow]; + } + else + { + [fDriveDetector run]; + [fOpenProgressField setStringValue: NSLocalizedString(@"No Title Found...",@"No Title Found...")]; + } +} + +- (void) convertShow +{ + int i, j; + + fConvertCheckArray = [[NSMutableArray alloc] initWithCapacity: + hb_list_count( fList )]; + [fConvertAudioPopUp removeAllItems]; + [fConvertSubtitlePopUp removeAllItems]; + [fConvertSubtitlePopUp addItemWithTitle: @"None"]; + for( i = 0; i < hb_list_count( fList ); i++ ) + { + /* Default is to convert titles longer than 30 minutes. */ + hb_title_t * title = hb_list_item( fList, i ); + [fConvertCheckArray addObject: [NSNumber numberWithBool: + ( 60 * title->hours + title->minutes > 30 )]]; + + /* Update audio popup */ + hb_audio_t * audio; + for( j = 0; j < hb_list_count( title->list_audio ); j++ ) + { + audio = hb_list_item( title->list_audio, j ); + [fConvertAudioPopUp addItemWithTitle: + [NSString stringWithUTF8String: audio->lang_simple]]; + } + [fConvertAudioPopUp selectItemWithTitle: @"English"]; + + if ( [fConvertAudioPopUp selectedItem] == nil ) + [fConvertAudioPopUp selectItemAtIndex:0]; + + /* Update subtitle popup */ + hb_subtitle_t * subtitle; + for( j = 0; j < hb_list_count( title->list_subtitle ); j++ ) + { + subtitle = hb_list_item( title->list_subtitle, j ); + [fConvertSubtitlePopUp addItemWithTitle: + [NSString stringWithUTF8String: subtitle->lang]]; + } + } + [fConvertTableView reloadData]; + + NSEnumerator * enumerator; + Device * device; + enumerator = [[fDevice devicesList] objectEnumerator]; + + while( ( device = [enumerator nextObject] ) ) + [fConvertFormatPopUp addItemWithTitle:[device name]]; + + NSRect frame = [fWindow frame]; + float offset = ( [fConvertView frame].size.height - + [fOpenView frame].size.height ) * [fWindow userSpaceScaleFactor];; + frame.origin.y -= offset; + frame.size.height += offset; + [fWindow setContentView: fEmptyView]; + [fWindow setFrame: frame display: YES animate: YES]; + [fToolbar setVisible:YES]; + [fWindow setContentView: fConvertView]; + + NSMenuItem * item = [fConvertFolderPopUp itemAtIndex: 0]; + [item setTitle: [fConvertFolderString lastPathComponent]]; + [item setImage: [self updatePopUpIcon:fConvertFolderString]]; + + [self convertEnable: YES]; +} + +- (void) convertEnable: (BOOL) b +{ + [fConvertTableView setEnabled: b]; + [fConvertFolderPopUp setEnabled: b]; + [fConvertFormatPopUp setEnabled: b]; + [fConvertAspectPopUp setEnabled: b]; + [fConvertMaxWidthPopUp setEnabled: b]; + [fConvertAudioPopUp setEnabled: b]; + [fConvertSubtitlePopUp setEnabled: b]; +} + +/*********************************************************************** +* UpdateDockIcon +*********************************************************************** +* Shows a progression bar on the dock icon, filled according to +* 'progress' (0.0 <= progress <= 1.0). +* Called with progress < 0.0 or progress > 1.0, restores the original +* icon. +**********************************************************************/ +- (void) UpdateDockIcon: (float) progress +{ + NSImage * icon; + NSData * tiff; + NSBitmapImageRep * bmp; + uint32_t * pen; + uint32_t black = htonl( 0x000000FF ); + uint32_t red = htonl( 0xFF0000FF ); + uint32_t white = htonl( 0xFFFFFFFF ); + int row_start, row_end; + int i, j; + + /* Get application original icon */ + icon = [NSImage imageNamed: @"NSApplicationIcon"]; + + if( progress < 0.0 || progress > 1.0 ) + { + [NSApp setApplicationIconImage: icon]; + return; + } + + /* Get it in a raw bitmap form */ + tiff = [icon TIFFRepresentationUsingCompression: + NSTIFFCompressionNone factor: 1.0]; + bmp = [NSBitmapImageRep imageRepWithData: tiff]; + + /* Draw the progression bar */ + /* It's pretty simple (ugly?) now, but I'm no designer */ + + row_start = 3 * (int) [bmp size].height / 4; + row_end = 7 * (int) [bmp size].height / 8; + + for( i = row_start; i < row_start + 2; i++ ) + { + pen = (uint32_t *) ( [bmp bitmapData] + i * [bmp bytesPerRow] ); + for( j = 0; j < (int) [bmp size].width; j++ ) + { + pen[j] = black; + } + } + for( i = row_start + 2; i < row_end - 2; i++ ) + { + pen = (uint32_t *) ( [bmp bitmapData] + i * [bmp bytesPerRow] ); + pen[0] = black; + pen[1] = black; + for( j = 2; j < (int) [bmp size].width - 2; j++ ) + { + if( j < 2 + (int) ( ( [bmp size].width - 4.0 ) * progress ) ) + { + pen[j] = red; + } + else + { + pen[j] = white; + } + } + pen[j] = black; + pen[j+1] = black; + } + for( i = row_end - 2; i < row_end; i++ ) + { + pen = (uint32_t *) ( [bmp bitmapData] + i * [bmp bytesPerRow] ); + for( j = 0; j < (int) [bmp size].width; j++ ) + { + pen[j] = black; + } + } + + /* Now update the dock icon */ + tiff = [bmp TIFFRepresentationUsingCompression: + NSTIFFCompressionNone factor: 1.0]; + icon = [[NSImage alloc] initWithData: tiff]; + [NSApp setApplicationIconImage: icon]; + [icon release]; +} + +- (id) updatePopUpIcon: (id) value +{ + if (!value) + return nil; + + NSImage * icon; + + icon = [[NSWorkspace sharedWorkspace] iconForFile: value]; + + [icon setScalesWhenResized: YES]; + [icon setSize: NSMakeSize(16.0 , 16.0)]; + + return icon; +} + +- (void) working: (NSNotification *) n +{ + float progress_total = ( p.working.progress + p.working.job_cur - 1 ) / p.working.job_count; + NSMutableString * string = [NSMutableString stringWithFormat: @"Converting: %.1f %%", 100.0 * progress_total]; + + if( p.working.seconds > -1 ) + { + [string appendFormat: @" (%.1f fps, ", p.working.rate_avg]; + if( p.working.hours > 0 ) + { + [string appendFormat: @"%d hour%s %d min%s", + p.working.hours, p.working.hours == 1 ? "" : "s", + p.working.minutes, p.working.minutes == 1 ? "" : "s"]; + } + else if( p.working.minutes > 0 ) + { + [string appendFormat: @"%d min%s %d sec%s", + p.working.minutes, p.working.minutes == 1 ? "" : "s", + p.working.seconds, p.working.seconds == 1 ? "" : "s"]; + } + else + { + [string appendFormat: @"%d second%s", + p.working.seconds, p.working.seconds == 1 ? "" : "s"]; + } + [string appendString: @" left)"]; + } + + [fConvertInfoString setStringValue: string]; + [fConvertIndicator setIndeterminate: NO]; + [fConvertIndicator setDoubleValue: 100.0 * progress_total]; + [self UpdateDockIcon: progress_total]; +} + +- (void) muxing: (NSNotification *) n +{ + [fConvertInfoString setStringValue: NSLocalizedString(@"Muxing...",@"Muxing...")]; + [fConvertIndicator setIndeterminate: YES]; + [fConvertIndicator startAnimation: nil]; + [self UpdateDockIcon: 1.0]; +} + +- (void) workDone: (NSNotification *) n +{ + [fConvertIndicator setIndeterminate: NO]; + [fConvertIndicator setDoubleValue: 0.0]; + [self UpdateDockIcon: -1.0]; + [self convertEnable: YES]; + + [fConvertInfoString setStringValue: NSLocalizedString(@"Done.",@"Done.")]; + + [fCore removeAllJobs]; +} + +@end diff -Nru handbrake-0.9.9+dfsg/macosx/InstantHandBrake/Express.plist handbrake-0.9.9+ppa1/macosx/InstantHandBrake/Express.plist --- handbrake-0.9.9+dfsg/macosx/InstantHandBrake/Express.plist 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/InstantHandBrake/Express.plist 2008-01-30 17:07:03.000000000 +0000 @@ -0,0 +1,34 @@ + + + + + BuildDate + BUILDDATE + CFBundleDevelopmentRegion + English + CFBundleDocumentTypes + + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIconFile + HandBrake + CFBundleIdentifier + fr.handbrake.instant + CFBundleInfoDictionaryVersion + 6.0 + CFBundlePackageType + APPL + CFBundleShortVersionString + 1.0a3 + CFBundleSignature + ???? + CFBundleVersion + BUILDID + LSMinimumSystemVersion + 10.4.0 + NSMainNibFile + Express + NSPrincipalClass + NSApplication + + diff -Nru handbrake-0.9.9+dfsg/macosx/InstantHandBrake/HBCore.h handbrake-0.9.9+ppa1/macosx/InstantHandBrake/HBCore.h --- handbrake-0.9.9+dfsg/macosx/InstantHandBrake/HBCore.h 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/InstantHandBrake/HBCore.h 2008-01-14 19:51:39.000000000 +0000 @@ -0,0 +1,53 @@ +/** + * @file + * Interface of class HBCore. + */ + +#import + +extern const NSString *HBStateIdle; +extern const NSString *HBStateScanning; +extern const NSString *HBStateScanDone; +extern const NSString *HBStateWorking; +extern const NSString *HBStatePaused; +extern const NSString *HBStateWorkDone; +extern const NSString *HBStateMuxing; +extern const NSString *HBStateAll; + +extern NSString *HBCoreScanningNotification; +extern NSString *HBCoreScanDoneNotification; +extern NSString *HBCoreWorkingNotification; +extern NSString *HBCorePausedNotification; +extern NSString *HBCoreWorkDoneNotification; +extern NSString *HBCoreMuxingNotification; + +/** + * HBCore is an Objective-C interface to the low-level HandBrake library. + * HBCore monitors state changes of libhb and provides notifications via + * NSNotificationCenter to any object who needs them. It can also be used + * to implement properties that can be directly bound to elements of the gui. + */ +@interface HBCore : NSObject +{ + /// Pointer to libhb handle. + struct hb_handle_s *hb_handle; + + /// Pointer to latest state information returned by libhb. + struct hb_state_s *hb_state; + + /// Timer used to poll libhb for state changes. + NSTimer *updateTimer; + + /// Current state of HBCore; one of the HBState* constants. + const NSString *state; +} + +- (id)init; +- (BOOL)openInDebugMode:(BOOL)debugMode checkForUpdates:(BOOL)checkForUpdates; +- (BOOL)close; +- (void)removeAllJobs; +- (NSString *)state; +- (struct hb_handle_s *)hb_handle; +- (const struct hb_state_s *)hb_state; + +@end diff -Nru handbrake-0.9.9+dfsg/macosx/InstantHandBrake/HBCore.m handbrake-0.9.9+ppa1/macosx/InstantHandBrake/HBCore.m --- handbrake-0.9.9+dfsg/macosx/InstantHandBrake/HBCore.m 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/InstantHandBrake/HBCore.m 2008-01-14 19:51:39.000000000 +0000 @@ -0,0 +1,282 @@ +/** + * @file + * Implementation of class HBCore. + */ + +#import "HBCore.h" +#include "hb.h" + +// These constants specify the current state of HBCore. + +const NSString *HBStateIdle = @"HBStateIdle"; ///< HB is doing nothing (HB_STATE_IDLE) +const NSString *HBStateScanning = @"HBStateScanning"; ///< HB is scanning (HB_STATE_SCANNING) +const NSString *HBStateScanDone = @"HBStateScanDone"; ///< Scanning has been completed (HB_STATE_SCANDONE) +const NSString *HBStateWorking = @"HBStateWorking"; ///< HB is encoding (HB_STATE_WORKING) +const NSString *HBStatePaused = @"HBStatePaused"; ///< Encoding is paused (HB_STATE_PAUSED) +const NSString *HBStateWorkDone = @"HBStateWorkDone"; ///< Encoding has been completed (HB_STATE_WORKDONE) +const NSString *HBStateMuxing = @"HBStateMuxing"; ///< HB is muxing (HB_STATE_MUXING) + + +// These constants specify various status notifications sent by HBCore + +/// Notification sent to update status while scanning. Matches HB_STATE_SCANNING constant in libhb. +NSString *HBCoreScanningNotification = @"HBCoreScanningNotification"; + +/// Notification sent after scanning is complete. Matches HB_STATE_SCANDONE constant in libhb. +NSString *HBCoreScanDoneNotification = @"HBCoreScanDoneNotification"; + +/// Notification sent to update status while encoding. Matches HB_STATE_WORKING constant in libhb. +NSString *HBCoreWorkingNotification = @"HBCoreWorkingNotification"; + +/// Notification sent when encoding is paused. Matches HB_STATE_PAUSED constant in libhb. +NSString *HBCorePausedNotification = @"HBCorePausedNotification"; + +/// Notification sent after encoding is complete. Matches HB_STATE_WORKDONE constant in libhb. +NSString *HBCoreWorkDoneNotification = @"HBCoreWorkDoneNotification"; + +/// Notification sent to update status while muxing. Matches HB_STATE_MUXING constant in libhb. +NSString *HBCoreMuxingNotification = @"HBCoreMuxingNotification"; + +/** + * Private methods of HBCore. + */ +@interface HBCore (Private) +- (NSString *)stateAsString:(int)stateValue; +@end + +@implementation HBCore + +/** + * Initializes HBCore. + */ +- (id)init +{ + if (self = [super init]) + { + state = HBStateIdle; + hb_state = malloc(sizeof(struct hb_state_s)); + } + return self; +} + +/** + * Releases resources. + */ +- (void)dealloc +{ + free(hb_state); + [super dealloc]; +} + +/** + * Opens low level HandBrake library. This should be called once before other + * functions HBCore are used. + * + * @param debugMode If set to YES, libhb will print verbose debug output. + * @param checkForUpdates If set to YES, libhb checks for updated versions. + * + * @return YES if libhb was opened, NO if there was an error. + */ +- (BOOL)openInDebugMode:(BOOL)debugMode checkForUpdates:(BOOL)checkForUpdates; +{ + NSAssert(!hb_handle, @"[HBCore openInDebugMode:checkForUpdates:] libhb is already open"); + if (hb_handle) + return NO; + + state = HBStateIdle; + + hb_handle = hb_init(debugMode ? HB_DEBUG_ALL : HB_DEBUG_NONE, checkForUpdates); + if (!hb_handle) + return NO; + + updateTimer = [[NSTimer scheduledTimerWithTimeInterval:0.5 + target:self + selector:@selector(stateUpdateTimer:) + userInfo:NULL + repeats:YES] retain]; + + [[NSRunLoop currentRunLoop] addTimer:updateTimer forMode:NSEventTrackingRunLoopMode]; + return YES; +} + +/** + * Closes low level HandBrake library and releases resources. + * + * @return YES if libhb was closed successfully, NO if there was an error. + */ +- (BOOL)close +{ + NSAssert(hb_handle, @"[HBCore close] libhb is not open"); + if (!hb_handle) + return NO; + + [updateTimer invalidate]; + [updateTimer release]; + updateTimer = nil; + hb_close(&hb_handle); + hb_handle = NULL; + return YES; +} + +/** + * Removes all jobs from the queue. + */ + +- (void) removeAllJobs +{ + hb_job_t * job; + while( ( job = hb_job( hb_handle, 0 ) ) ) + hb_rem( hb_handle, job ); +} + +/** + * Returns libhb handle used by this HBCore instance. + */ +- (struct hb_handle_s *)hb_handle +{ + return hb_handle; +} + +/** + * Returns current state of HBCore. + * + * @return One of the HBState* string constants. + */ +- (const NSString *)state +{ + return state; +} + +/** + * Returns latest hb_state_s information struct returned by libhb. + * + * @return Pointer to a hb_state_s struct containing state information of libhb. + */ +- (const struct hb_state_s *)hb_state +{ + return hb_state; +} + +@end + +@implementation HBCore (Private) + +/** + * Transforms a libhb state constant to a matching HBCore state constant. + */ +- (const NSString *)stateAsString:(int)stateValue +{ + switch (stateValue) + { + case HB_STATE_IDLE: + return HBStateIdle; + case HB_STATE_SCANNING: + return HBStateScanning; + case HB_STATE_SCANDONE: + return HBStateScanDone; + case HB_STATE_WORKING: + return HBStateWorking; + case HB_STATE_PAUSED: + return HBStatePaused; + case HB_STATE_WORKDONE: + return HBStateWorkDone; + case HB_STATE_MUXING: + return HBStateMuxing; + default: + NSAssert1(NO, @"[HBCore stateAsString:] unknown state %d", stateValue); + return nil; + } +} + +/** + * This method polls libhb continuously for state changes and processes them. + * Additional processing for each state is performed in methods that start + * with 'handle' (e.g. handleHBStateScanning). + */ +- (void)stateUpdateTimer:(NSTimer *)timer +{ + if (!hb_handle) + { + // Libhb is not open so we cannot do anything. + return; + } + + hb_get_state(hb_handle, hb_state); + + if (hb_state->state == HB_STATE_IDLE) + { + // Libhb reported HB_STATE_IDLE, so nothing interesting has happened. + return; + } + + // Update HBCore state to reflect the current state of libhb + NSString *newState = [self stateAsString:hb_state->state]; + if (newState != state) + { + [self willChangeValueForKey:@"state"]; + state = newState; + [self didChangeValueForKey:@"state"]; + } + + // Determine name of the method that does further processing for this state + // and call it. + SEL sel = NSSelectorFromString([NSString stringWithFormat:@"handle%@", state]); + if ([self respondsToSelector:sel]) + [self performSelector:sel]; +} + +/** + * Processes HBStateScanning state information. Current implementation just + * sends HBCoreScanningNotification. + */ +- (void)handleHBStateScanning +{ + [[NSNotificationCenter defaultCenter] postNotificationName:HBCoreScanningNotification object:self]; +} + +/** + * Processes HBStateScanDone state information. Current implementation just + * sends HBCoreScanDoneNotification. + */ +- (void)handleHBStateScanDone +{ + [[NSNotificationCenter defaultCenter] postNotificationName:HBCoreScanDoneNotification object:self]; +} + +/** + * Processes HBStateWorking state information. Current implementation just + * sends HBCoreWorkingNotification. + */ +- (void)handleHBStateWorking +{ + [[NSNotificationCenter defaultCenter] postNotificationName:HBCoreWorkingNotification object:self]; +} + +/** + * Processes HBStatePaused state information. Current implementation just + * sends HBCorePausedNotification. + */ +- (void)handleHBStatePaused +{ + [[NSNotificationCenter defaultCenter] postNotificationName:HBCorePausedNotification object:self]; +} + +/** + * Processes HBStateWorkDone state information. Current implementation just + * sends HBCoreWorkDoneNotification. + */ +- (void)handleHBStateWorkDone +{ + [[NSNotificationCenter defaultCenter] postNotificationName:HBCoreWorkDoneNotification object:self]; +} + +/** + * Processes HBStateMuxing state information. Current implementation just + * sends HBCoreMuxingNotification. + */ +- (void)handleHBStateMuxing +{ + [[NSNotificationCenter defaultCenter] postNotificationName:HBCoreMuxingNotification object:self]; +} + +@end diff -Nru handbrake-0.9.9+dfsg/macosx/InstantHandBrake/InstantHandBrake.xcodeproj/project.pbxproj handbrake-0.9.9+ppa1/macosx/InstantHandBrake/InstantHandBrake.xcodeproj/project.pbxproj --- handbrake-0.9.9+dfsg/macosx/InstantHandBrake/InstantHandBrake.xcodeproj/project.pbxproj 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/InstantHandBrake/InstantHandBrake.xcodeproj/project.pbxproj 2008-01-30 12:28:55.000000000 +0000 @@ -0,0 +1,614 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 44; + objects = { + +/* Begin PBXAggregateTarget section */ + A95DD4FA0D4BA8A30056F1F2 /* Plist Macros */ = { + isa = PBXAggregateTarget; + buildConfigurationList = A95DD5070D4BA8E90056F1F2 /* Build configuration list for PBXAggregateTarget "Plist Macros" */; + buildPhases = ( + A95DD4F90D4BA8A30056F1F2 /* ShellScript */, + ); + dependencies = ( + ); + name = "Plist Macros"; + productName = "Plist Macros"; + }; +/* End PBXAggregateTarget section */ + +/* Begin PBXBuildFile section */ + 4D1EA2EA0993B09A00FDC1A2 /* main.mm in Sources */ = {isa = PBXBuildFile; fileRef = 29B97316FDCFA39411CA2CEA /* main.mm */; }; + 4D1EA2F60993B0CA00FDC1A2 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */; }; + 4D1EA31C0993B24700FDC1A2 /* ExpressController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4D1EA31B0993B24700FDC1A2 /* ExpressController.m */; }; + 4D2AEA1A09CCB332007E18F6 /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4DEB2024052B055F00C39CA9 /* IOKit.framework */; }; + 4D3ECC2709A4917000B2E45F /* WhiteBox.m in Sources */ = {isa = PBXBuildFile; fileRef = 4D3ECC2609A4917000B2E45F /* WhiteBox.m */; }; + A2122D820C7EAF6600AB87A4 /* DriveDetector.m in Sources */ = {isa = PBXBuildFile; fileRef = A2122D810C7EAF6600AB87A4 /* DriveDetector.m */; }; + A952EBCE0D3BB1B100A3DCA7 /* Open.tiff in Resources */ = {isa = PBXBuildFile; fileRef = A952EBCD0D3BB1B100A3DCA7 /* Open.tiff */; }; + A9595E4A0D4E2CBC003906A9 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = A9595E480D4E2CBC003906A9 /* InfoPlist.strings */; }; + A95C08560D50858F00084DA8 /* Devices in Resources */ = {isa = PBXBuildFile; fileRef = A95C08510D50858F00084DA8 /* Devices */; }; + A95DD5490D4BACF50056F1F2 /* Growl.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A9B706E50D356BC800385AF2 /* Growl.framework */; }; + A95DD6260D4BAD950056F1F2 /* Growl.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = A9B706E50D356BC800385AF2 /* Growl.framework */; }; + A98B18070D3CDF290093A591 /* Preset.m in Sources */ = {isa = PBXBuildFile; fileRef = A98B18060D3CDF290093A591 /* Preset.m */; }; + A98B180A0D3CDF380093A591 /* Device.m in Sources */ = {isa = PBXBuildFile; fileRef = A98B18090D3CDF380093A591 /* Device.m */; }; + A9B70A030D3570F100385AF2 /* HandBrake.icns in Resources */ = {isa = PBXBuildFile; fileRef = A9B70A020D3570F100385AF2 /* HandBrake.icns */; }; + A9B70A0F0D35719900385AF2 /* HBCore.m in Sources */ = {isa = PBXBuildFile; fileRef = A9B70A0D0D35719900385AF2 /* HBCore.m */; }; + A9C0EDB90D478699005CA5CF /* DeviceController.m in Sources */ = {isa = PBXBuildFile; fileRef = A9C0EDB80D478699005CA5CF /* DeviceController.m */; }; + A9DB3A1F0D37EC6800F77345 /* libhb.a in Frameworks */ = {isa = PBXBuildFile; fileRef = A9DB3A0F0D37EC2800F77345 /* libhb.a */; }; + A9ED4EF20D36226F004341F5 /* Play.tiff in Resources */ = {isa = PBXBuildFile; fileRef = A9ED4EEF0D36226F004341F5 /* Play.tiff */; }; + A9ED4EF30D36226F004341F5 /* Pause.tiff in Resources */ = {isa = PBXBuildFile; fileRef = A9ED4EF00D36226F004341F5 /* Pause.tiff */; }; + A9ED4EF40D36226F004341F5 /* Stop.tiff in Resources */ = {isa = PBXBuildFile; fileRef = A9ED4EF10D36226F004341F5 /* Stop.tiff */; }; + A9ED502E0D36477D004341F5 /* Express.xib in Resources */ = {isa = PBXBuildFile; fileRef = A9ED502C0D36477D004341F5 /* Express.xib */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + A95DD4FE0D4BA8D50056F1F2 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 29B97313FDCFA39411CA2CEA /* Project object */; + proxyType = 1; + remoteGlobalIDString = A95DD4FA0D4BA8A30056F1F2; + remoteInfo = "Plist Macros"; + }; + A9DB3A0E0D37EC2800F77345 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = A9DB3A080D37EC2800F77345 /* libhb.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 0DFF0B720B6BC6E600549488; + remoteInfo = libhb; + }; + A9DB3A140D37EC4200F77345 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = A9DB3A080D37EC2800F77345 /* libhb.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 0DFF0B710B6BC6E600549488; + remoteInfo = libhb; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXCopyFilesBuildPhase section */ + A95DD6D60D4BAD9D0056F1F2 /* CopyFiles */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + A95DD6260D4BAD950056F1F2 /* Growl.framework in CopyFiles */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = ""; }; + 29B97316FDCFA39411CA2CEA /* main.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = main.mm; sourceTree = ""; }; + 29B97324FDCFA39411CA2CEA /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = /System/Library/Frameworks/AppKit.framework; sourceTree = ""; }; + 29B97325FDCFA39411CA2CEA /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; sourceTree = ""; }; + 4D1EA2DA0993B01000FDC1A2 /* Instant HandBrake.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Instant HandBrake.app"; sourceTree = BUILT_PRODUCTS_DIR; }; + 4D1EA2DC0993B01000FDC1A2 /* Express.plist */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = Express.plist; sourceTree = ""; }; + 4D1EA31A0993B24700FDC1A2 /* ExpressController.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = ExpressController.h; sourceTree = ""; }; + 4D1EA31B0993B24700FDC1A2 /* ExpressController.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = ExpressController.m; sourceTree = ""; }; + 4D3ECC2509A4917000B2E45F /* WhiteBox.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = WhiteBox.h; sourceTree = ""; }; + 4D3ECC2609A4917000B2E45F /* WhiteBox.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = WhiteBox.m; sourceTree = ""; }; + 4DEB2024052B055F00C39CA9 /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = IOKit.framework; path = /System/Library/Frameworks/IOKit.framework; sourceTree = ""; }; + A2122D800C7EAF6500AB87A4 /* DriveDetector.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DriveDetector.h; sourceTree = ""; }; + A2122D810C7EAF6600AB87A4 /* DriveDetector.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = DriveDetector.m; sourceTree = ""; }; + A952EBCD0D3BB1B100A3DCA7 /* Open.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = Open.tiff; sourceTree = ""; }; + A9595E490D4E2CBC003906A9 /* English */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/InfoPlist.strings; sourceTree = ""; }; + A95C08510D50858F00084DA8 /* Devices */ = {isa = PBXFileReference; lastKnownFileType = folder; path = Devices; sourceTree = ""; }; + A98B18050D3CDF290093A591 /* Preset.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Preset.h; sourceTree = ""; }; + A98B18060D3CDF290093A591 /* Preset.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Preset.m; sourceTree = ""; }; + A98B18080D3CDF380093A591 /* Device.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Device.h; sourceTree = ""; }; + A98B18090D3CDF380093A591 /* Device.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Device.m; sourceTree = ""; }; + A9B706E50D356BC800385AF2 /* Growl.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Growl.framework; path = ../Growl.framework; sourceTree = SOURCE_ROOT; }; + A9B70A010D3570D300385AF2 /* hb.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = hb.h; path = ../../libhb/hb.h; sourceTree = SOURCE_ROOT; }; + A9B70A020D3570F100385AF2 /* HandBrake.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = HandBrake.icns; path = ../HandBrake.icns; sourceTree = SOURCE_ROOT; }; + A9B70A0D0D35719900385AF2 /* HBCore.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HBCore.m; sourceTree = ""; }; + A9B70A0E0D35719900385AF2 /* HBCore.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HBCore.h; sourceTree = ""; }; + A9C0EDB70D478699005CA5CF /* DeviceController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DeviceController.h; sourceTree = ""; }; + A9C0EDB80D478699005CA5CF /* DeviceController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DeviceController.m; sourceTree = ""; }; + A9DB3A080D37EC2800F77345 /* libhb.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; path = libhb.xcodeproj; sourceTree = ""; }; + A9ED4EEF0D36226F004341F5 /* Play.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = Play.tiff; path = ../icons/Play.tiff; sourceTree = SOURCE_ROOT; }; + A9ED4EF00D36226F004341F5 /* Pause.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = Pause.tiff; path = ../icons/Pause.tiff; sourceTree = SOURCE_ROOT; }; + A9ED4EF10D36226F004341F5 /* Stop.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = Stop.tiff; path = ../icons/Stop.tiff; sourceTree = SOURCE_ROOT; }; + A9ED502D0D36477D004341F5 /* English */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = English; path = English.lproj/Express.xib; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 4D1EA2D80993B01000FDC1A2 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + A95DD5490D4BACF50056F1F2 /* Growl.framework in Frameworks */, + A9DB3A1F0D37EC6800F77345 /* libhb.a in Frameworks */, + 4D1EA2F60993B0CA00FDC1A2 /* Cocoa.framework in Frameworks */, + 4D2AEA1A09CCB332007E18F6 /* IOKit.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 19C28FACFE9D520D11CA2CBB /* Products */ = { + isa = PBXGroup; + children = ( + 4D1EA2DA0993B01000FDC1A2 /* Instant HandBrake.app */, + ); + name = Products; + sourceTree = ""; + }; + 29B97314FDCFA39411CA2CEA /* HandBrake */ = { + isa = PBXGroup; + children = ( + A98B18080D3CDF380093A591 /* Device.h */, + A98B18090D3CDF380093A591 /* Device.m */, + A98B18050D3CDF290093A591 /* Preset.h */, + A98B18060D3CDF290093A591 /* Preset.m */, + A9C0EDB70D478699005CA5CF /* DeviceController.h */, + A9C0EDB80D478699005CA5CF /* DeviceController.m */, + 4D3ECC2509A4917000B2E45F /* WhiteBox.h */, + 4D3ECC2609A4917000B2E45F /* WhiteBox.m */, + A2122D800C7EAF6500AB87A4 /* DriveDetector.h */, + A2122D810C7EAF6600AB87A4 /* DriveDetector.m */, + 4D1EA31A0993B24700FDC1A2 /* ExpressController.h */, + 4D1EA31B0993B24700FDC1A2 /* ExpressController.m */, + A9B70A0E0D35719900385AF2 /* HBCore.h */, + A9B70A0D0D35719900385AF2 /* HBCore.m */, + 29B97315FDCFA39411CA2CEA /* Other Sources */, + 29B97317FDCFA39411CA2CEA /* Resources */, + 29B97323FDCFA39411CA2CEA /* Frameworks */, + 19C28FACFE9D520D11CA2CBB /* Products */, + ); + name = HandBrake; + sourceTree = ""; + }; + 29B97315FDCFA39411CA2CEA /* Other Sources */ = { + isa = PBXGroup; + children = ( + A9B70A010D3570D300385AF2 /* hb.h */, + 29B97316FDCFA39411CA2CEA /* main.mm */, + ); + name = "Other Sources"; + sourceTree = ""; + }; + 29B97317FDCFA39411CA2CEA /* Resources */ = { + isa = PBXGroup; + children = ( + A95C08510D50858F00084DA8 /* Devices */, + A952EBCD0D3BB1B100A3DCA7 /* Open.tiff */, + A9ED4EEF0D36226F004341F5 /* Play.tiff */, + A9ED4EF00D36226F004341F5 /* Pause.tiff */, + A9ED4EF10D36226F004341F5 /* Stop.tiff */, + A9595E480D4E2CBC003906A9 /* InfoPlist.strings */, + A9B70A020D3570F100385AF2 /* HandBrake.icns */, + 4D1EA2DC0993B01000FDC1A2 /* Express.plist */, + A9ED502C0D36477D004341F5 /* Express.xib */, + ); + name = Resources; + sourceTree = ""; + }; + 29B97323FDCFA39411CA2CEA /* Frameworks */ = { + isa = PBXGroup; + children = ( + A9DB3A080D37EC2800F77345 /* libhb.xcodeproj */, + A9B706E50D356BC800385AF2 /* Growl.framework */, + 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */, + 4DEB2024052B055F00C39CA9 /* IOKit.framework */, + 29B97325FDCFA39411CA2CEA /* Foundation.framework */, + 29B97324FDCFA39411CA2CEA /* AppKit.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; + A9DB3A090D37EC2800F77345 /* Products */ = { + isa = PBXGroup; + children = ( + A9DB3A0F0D37EC2800F77345 /* libhb.a */, + ); + name = Products; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 4D1EA2D90993B01000FDC1A2 /* Instant HandBrake */ = { + isa = PBXNativeTarget; + buildConfigurationList = 4D1EA2DD0993B01100FDC1A2 /* Build configuration list for PBXNativeTarget "Instant HandBrake" */; + buildPhases = ( + 4D1EA2D60993B01000FDC1A2 /* Resources */, + 4D1EA2D70993B01000FDC1A2 /* Sources */, + 4D1EA2D80993B01000FDC1A2 /* Frameworks */, + A95DD6D60D4BAD9D0056F1F2 /* CopyFiles */, + ); + buildRules = ( + ); + dependencies = ( + A95DD4FF0D4BA8D50056F1F2 /* PBXTargetDependency */, + A9DB3A150D37EC4200F77345 /* PBXTargetDependency */, + ); + name = "Instant HandBrake"; + productName = "Instant HandBrake"; + productReference = 4D1EA2DA0993B01000FDC1A2 /* Instant HandBrake.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 29B97313FDCFA39411CA2CEA /* Project object */ = { + isa = PBXProject; + attributes = { + BuildIndependentTargetsInParallel = YES; + }; + buildConfigurationList = 4D4E7BC4087804870051572B /* Build configuration list for PBXProject "InstantHandBrake" */; + compatibilityVersion = "Xcode 3.0"; + hasScannedForEncodings = 1; + mainGroup = 29B97314FDCFA39411CA2CEA /* HandBrake */; + projectDirPath = ""; + projectReferences = ( + { + ProductGroup = A9DB3A090D37EC2800F77345 /* Products */; + ProjectRef = A9DB3A080D37EC2800F77345 /* libhb.xcodeproj */; + }, + ); + projectRoot = ""; + targets = ( + 4D1EA2D90993B01000FDC1A2 /* Instant HandBrake */, + A95DD4FA0D4BA8A30056F1F2 /* Plist Macros */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXReferenceProxy section */ + A9DB3A0F0D37EC2800F77345 /* libhb.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libhb.a; + remoteRef = A9DB3A0E0D37EC2800F77345 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; +/* End PBXReferenceProxy section */ + +/* Begin PBXResourcesBuildPhase section */ + 4D1EA2D60993B01000FDC1A2 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + A9B70A030D3570F100385AF2 /* HandBrake.icns in Resources */, + A9ED4EF20D36226F004341F5 /* Play.tiff in Resources */, + A9ED4EF30D36226F004341F5 /* Pause.tiff in Resources */, + A9ED4EF40D36226F004341F5 /* Stop.tiff in Resources */, + A9ED502E0D36477D004341F5 /* Express.xib in Resources */, + A952EBCE0D3BB1B100A3DCA7 /* Open.tiff in Resources */, + A9595E4A0D4E2CBC003906A9 /* InfoPlist.strings in Resources */, + A95C08560D50858F00084DA8 /* Devices in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + A95DD4F90D4BA8A30056F1F2 /* ShellScript */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + outputPaths = ( + "${CONFIGURATION_TEMP_DIR}/Instant HandBrake.build/PlistMacros.h", + "${CONFIGURATION_TEMP_DIR}/Instant HandBrake.build/DummyFileToForceScriptToRunEveryTimeWithoutBeingCreated", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "PATH=$PATH:/usr/local/bin:/usr/bin:/sw/bin:/opt/local/bin\nbuildid=\"r`svn info | awk '/^Revision:/ {print $2}'`\"\n\necho \"#define BUILDID $buildid\" > $SCRIPT_OUTPUT_FILE_0\necho \"#define BUILDDATE `date`\" >> $SCRIPT_OUTPUT_FILE_0\necho \"#define WHOAMI `whoami`\" >> $SCRIPT_OUTPUT_FILE_0\n\n# Delete the intermediate Info.plist so that Xcode re-preprocesses the Info.plist with our updated macros.\n# Use -f because after a clean build, this file doesn't exist yet, so a plain rm would fail and stop the build.\nrm -f \"${CONFIGURATION_TEMP_DIR}/Instant HandBrake.build/Preprocessed-Info.plist\"\n"; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 4D1EA2D70993B01000FDC1A2 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 4D1EA2EA0993B09A00FDC1A2 /* main.mm in Sources */, + 4D1EA31C0993B24700FDC1A2 /* ExpressController.m in Sources */, + 4D3ECC2709A4917000B2E45F /* WhiteBox.m in Sources */, + A2122D820C7EAF6600AB87A4 /* DriveDetector.m in Sources */, + A9B70A0F0D35719900385AF2 /* HBCore.m in Sources */, + A98B18070D3CDF290093A591 /* Preset.m in Sources */, + A98B180A0D3CDF380093A591 /* Device.m in Sources */, + A9C0EDB90D478699005CA5CF /* DeviceController.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + A95DD4FF0D4BA8D50056F1F2 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = A95DD4FA0D4BA8A30056F1F2 /* Plist Macros */; + targetProxy = A95DD4FE0D4BA8D50056F1F2 /* PBXContainerItemProxy */; + }; + A9DB3A150D37EC4200F77345 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = libhb; + targetProxy = A9DB3A140D37EC4200F77345 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin PBXVariantGroup section */ + A9595E480D4E2CBC003906A9 /* InfoPlist.strings */ = { + isa = PBXVariantGroup; + children = ( + A9595E490D4E2CBC003906A9 /* English */, + ); + name = InfoPlist.strings; + sourceTree = ""; + }; + A9ED502C0D36477D004341F5 /* Express.xib */ = { + isa = PBXVariantGroup; + children = ( + A9ED502D0D36477D004341F5 /* English */, + ); + name = Express.xib; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 0D88F56D0B6CDCD400F81F26 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CONFIGURATION_BUILD_DIR = ..; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "\"$(SRCROOT)/..\"", + ); + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_MODEL_TUNING = G5; + GCC_OPTIMIZATION_LEVEL = s; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = "$(SYSTEM_LIBRARY_DIR)/Frameworks/AppKit.framework/Headers/AppKit.h"; + HEADER_SEARCH_PATHS = ../libhb; + INFOPLIST_FILE = Express.plist; + INFOPLIST_OTHER_PREPROCESSOR_FLAGS = "-C"; + INFOPLIST_PREFIX_HEADER = "${CONFIGURATION_TEMP_DIR}/Instant HandBrake.build/PlistMacros.h"; + INFOPLIST_PREPROCESS = YES; + INSTALL_PATH = "$(HOME)/Applications"; + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + "$(LIBRARY_SEARCH_PATHS_QUOTED_1)", + "\"$(SRCROOT)/../../libhb\"", + ); + LIBRARY_SEARCH_PATHS_QUOTED_1 = "\"$(SRCROOT)\""; + OTHER_LDFLAGS = ( + ../libhb/libhb.a, + ../contrib/lib/libmp4v2.a, + ../contrib/lib/liba52.a, + ../contrib/lib/libavformat.a, + ../contrib/lib/libavcodec.a, + ../contrib/lib/libavutil.a, + ../contrib/lib/libdvdread.a, + ../contrib/lib/libdvdcss.a, + ../contrib/lib/libfaac.a, + ../contrib/lib/libmp3lame.a, + ../contrib/lib/libmpeg2.a, + ../contrib/lib/libvorbis.a, + ../contrib/lib/libvorbisenc.a, + ../contrib/lib/libogg.a, + ../contrib/lib/libsamplerate.a, + ../contrib/lib/libx264.a, + ../contrib/lib/libxvidcore.a, + ../contrib/lib/libdca.a, + ../contrib/lib/libmkv.a, + ../contrib/lib/libswscale.a, + ); + PREBINDING = NO; + PRODUCT_NAME = "Instant HandBrake"; + SDKROOT = "$(DEVELOPER_SDK_DIR)/MacOSX10.5.sdk"; + WRAPPER_EXTENSION = app; + ZERO_LINK = NO; + }; + name = Release; + }; + 0D88F56F0B6CDCD400F81F26 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = ( + ppc, + i386, + ); + EXCLUDED_RECURSIVE_SEARCH_PATH_SUBDIRECTORIES = "*.nib *.lproj *.framework *.gch (*) CVS .svn *.xcodeproj *.xcode *.pbproj *.pbxproj"; + GCC_AUTO_VECTORIZATION = YES; + GCC_ENABLE_SSE3_EXTENSIONS = YES; + GCC_MODEL_TUNING = G5; + GCC_PREPROCESSOR_DEFINITIONS = "JOB_GROUPS=1"; + GCC_WARN_UNUSED_VALUE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + INFOPLIST_PREPROCESS = NO; + MACOSX_DEPLOYMENT_TARGET = 10.5; + SDKROOT = "$(DEVELOPER_SDK_DIR)/MacOSX10.5.sdk"; + }; + name = Release; + }; + 4D1EA2DE0993B01100FDC1A2 /* Development */ = { + isa = XCBuildConfiguration; + buildSettings = { + COPY_PHASE_STRIP = NO; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "\"$(SRCROOT)/..\"", + ); + GCC_DYNAMIC_NO_PIC = NO; + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_GENERATE_DEBUGGING_SYMBOLS = YES; + GCC_MODEL_TUNING = G5; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = "$(SYSTEM_LIBRARY_DIR)/Frameworks/AppKit.framework/Headers/AppKit.h"; + HEADER_SEARCH_PATHS = ../libhb; + INFOPLIST_FILE = Express.plist; + INFOPLIST_OTHER_PREPROCESSOR_FLAGS = "-C"; + INFOPLIST_PREFIX_HEADER = "${CONFIGURATION_TEMP_DIR}/Instant HandBrake.build/PlistMacros.h"; + INFOPLIST_PREPROCESS = YES; + INSTALL_PATH = "$(HOME)/Applications"; + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + "$(LIBRARY_SEARCH_PATHS_QUOTED_1)", + "\"$(SRCROOT)/../../libhb\"", + ); + LIBRARY_SEARCH_PATHS_QUOTED_1 = "\"$(SRCROOT)\""; + OTHER_LDFLAGS = ""; + PREBINDING = NO; + PRODUCT_NAME = "Instant HandBrake"; + SDKROOT = "$(DEVELOPER_SDK_DIR)/MacOSX10.5.sdk"; + WRAPPER_EXTENSION = app; + ZERO_LINK = NO; + }; + name = Development; + }; + 4D1EA2DF0993B01100FDC1A2 /* Deployment */ = { + isa = XCBuildConfiguration; + buildSettings = { + COPY_PHASE_STRIP = YES; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "\"$(SRCROOT)/..\"", + ); + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_GENERATE_DEBUGGING_SYMBOLS = NO; + GCC_MODEL_TUNING = G5; + GCC_OPTIMIZATION_LEVEL = s; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = "$(SYSTEM_LIBRARY_DIR)/Frameworks/AppKit.framework/Headers/AppKit.h"; + GCC_PREPROCESSOR_DEFINITIONS = ""; + HEADER_SEARCH_PATHS = ../libhb; + INFOPLIST_FILE = Express.plist; + INFOPLIST_OTHER_PREPROCESSOR_FLAGS = "-C"; + INFOPLIST_PREFIX_HEADER = "${CONFIGURATION_TEMP_DIR}/Instant HandBrake.build/PlistMacros.h"; + INFOPLIST_PREPROCESS = YES; + INSTALL_PATH = "$(HOME)/Applications"; + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + "$(LIBRARY_SEARCH_PATHS_QUOTED_1)", + "\"$(SRCROOT)/../../libhb\"", + ); + OTHER_LDFLAGS = ""; + PREBINDING = NO; + PRODUCT_NAME = "Instant HandBrake"; + SDKROOT = "$(DEVELOPER_SDK_DIR)/MacOSX10.5.sdk"; + WRAPPER_EXTENSION = app; + ZERO_LINK = NO; + }; + name = Deployment; + }; + 4D4E7BC5087804870051572B /* Development */ = { + isa = XCBuildConfiguration; + buildSettings = { + DEBUG_INFORMATION_FORMAT = dwarf; + EXCLUDED_RECURSIVE_SEARCH_PATH_SUBDIRECTORIES = "*.nib *.lproj *.framework *.gch (*) CVS .svn *.xcodeproj *.xcode *.pbproj *.pbxproj"; + GCC_AUTO_VECTORIZATION = NO; + GCC_DEBUGGING_SYMBOLS = default; + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_ENABLE_SSE3_EXTENSIONS = NO; + GCC_MODEL_TUNING = G5; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = "JOB_GROUPS=1"; + GCC_WARN_UNUSED_VALUE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + INFOPLIST_PREPROCESS = NO; + MACOSX_DEPLOYMENT_TARGET = 10.5; + PREBINDING = NO; + SDKROOT = "$(DEVELOPER_SDK_DIR)/MacOSX10.5.sdk"; + ZERO_LINK = NO; + }; + name = Development; + }; + 4D4E7BC6087804870051572B /* Deployment */ = { + isa = XCBuildConfiguration; + buildSettings = { + EXCLUDED_RECURSIVE_SEARCH_PATH_SUBDIRECTORIES = "*.nib *.lproj *.framework *.gch (*) CVS .svn *.xcodeproj *.xcode *.pbproj *.pbxproj"; + GCC_AUTO_VECTORIZATION = YES; + GCC_ENABLE_SSE3_EXTENSIONS = YES; + GCC_MODEL_TUNING = G5; + GCC_PREPROCESSOR_DEFINITIONS = "JOB_GROUPS=1"; + GCC_WARN_ABOUT_POINTER_SIGNEDNESS = YES; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VALUE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + INFOPLIST_PREPROCESS = NO; + MACOSX_DEPLOYMENT_TARGET = 10.5; + SDKROOT = "$(DEVELOPER_SDK_DIR)/MacOSX10.5.sdk"; + }; + name = Deployment; + }; + A95DD4FB0D4BA8A30056F1F2 /* Development */ = { + isa = XCBuildConfiguration; + buildSettings = { + COPY_PHASE_STRIP = NO; + GCC_DYNAMIC_NO_PIC = NO; + GCC_OPTIMIZATION_LEVEL = 0; + PRODUCT_NAME = "Plist Macros"; + }; + name = Development; + }; + A95DD4FC0D4BA8A30056F1F2 /* Deployment */ = { + isa = XCBuildConfiguration; + buildSettings = { + COPY_PHASE_STRIP = YES; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + GCC_ENABLE_FIX_AND_CONTINUE = NO; + PRODUCT_NAME = "Plist Macros"; + ZERO_LINK = NO; + }; + name = Deployment; + }; + A95DD4FD0D4BA8A30056F1F2 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + COPY_PHASE_STRIP = YES; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + GCC_ENABLE_FIX_AND_CONTINUE = NO; + PRODUCT_NAME = "Plist Macros"; + ZERO_LINK = NO; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 4D1EA2DD0993B01100FDC1A2 /* Build configuration list for PBXNativeTarget "Instant HandBrake" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 4D1EA2DE0993B01100FDC1A2 /* Development */, + 4D1EA2DF0993B01100FDC1A2 /* Deployment */, + 0D88F56D0B6CDCD400F81F26 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Deployment; + }; + 4D4E7BC4087804870051572B /* Build configuration list for PBXProject "InstantHandBrake" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 4D4E7BC5087804870051572B /* Development */, + 4D4E7BC6087804870051572B /* Deployment */, + 0D88F56F0B6CDCD400F81F26 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Deployment; + }; + A95DD5070D4BA8E90056F1F2 /* Build configuration list for PBXAggregateTarget "Plist Macros" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + A95DD4FB0D4BA8A30056F1F2 /* Development */, + A95DD4FC0D4BA8A30056F1F2 /* Deployment */, + A95DD4FD0D4BA8A30056F1F2 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Deployment; + }; +/* End XCConfigurationList section */ + }; + rootObject = 29B97313FDCFA39411CA2CEA /* Project object */; +} diff -Nru handbrake-0.9.9+dfsg/macosx/InstantHandBrake/libhb.xcodeproj/project.pbxproj handbrake-0.9.9+ppa1/macosx/InstantHandBrake/libhb.xcodeproj/project.pbxproj --- handbrake-0.9.9+dfsg/macosx/InstantHandBrake/libhb.xcodeproj/project.pbxproj 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/InstantHandBrake/libhb.xcodeproj/project.pbxproj 2008-01-30 17:07:03.000000000 +0000 @@ -0,0 +1,545 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 42; + objects = { + +/* Begin PBXBuildFile section */ + A9DB39100D37EA0300F77345 /* common.c in Sources */ = {isa = PBXBuildFile; fileRef = A9DB38E70D37EA0300F77345 /* common.c */; }; + A9DB39110D37EA0300F77345 /* common.h in Headers */ = {isa = PBXBuildFile; fileRef = A9DB38E80D37EA0300F77345 /* common.h */; }; + A9DB39120D37EA0300F77345 /* deblock.c in Sources */ = {isa = PBXBuildFile; fileRef = A9DB38E90D37EA0300F77345 /* deblock.c */; }; + A9DB39130D37EA0300F77345 /* deca52.c in Sources */ = {isa = PBXBuildFile; fileRef = A9DB38EA0D37EA0300F77345 /* deca52.c */; }; + A9DB39140D37EA0300F77345 /* decavcodec.c in Sources */ = {isa = PBXBuildFile; fileRef = A9DB38EB0D37EA0300F77345 /* decavcodec.c */; }; + A9DB39150D37EA0300F77345 /* decdca.c in Sources */ = {isa = PBXBuildFile; fileRef = A9DB38EC0D37EA0300F77345 /* decdca.c */; }; + A9DB39160D37EA0300F77345 /* declpcm.c in Sources */ = {isa = PBXBuildFile; fileRef = A9DB38ED0D37EA0300F77345 /* declpcm.c */; }; + A9DB39170D37EA0300F77345 /* decmpeg2.c in Sources */ = {isa = PBXBuildFile; fileRef = A9DB38EE0D37EA0300F77345 /* decmpeg2.c */; }; + A9DB39180D37EA0300F77345 /* decsub.c in Sources */ = {isa = PBXBuildFile; fileRef = A9DB38EF0D37EA0300F77345 /* decsub.c */; }; + A9DB39190D37EA0300F77345 /* deinterlace.c in Sources */ = {isa = PBXBuildFile; fileRef = A9DB38F00D37EA0300F77345 /* deinterlace.c */; }; + A9DB391A0D37EA0300F77345 /* demuxmpeg.c in Sources */ = {isa = PBXBuildFile; fileRef = A9DB38F10D37EA0300F77345 /* demuxmpeg.c */; }; + A9DB391B0D37EA0300F77345 /* denoise.c in Sources */ = {isa = PBXBuildFile; fileRef = A9DB38F20D37EA0300F77345 /* denoise.c */; }; + A9DB391C0D37EA0300F77345 /* detelecine.c in Sources */ = {isa = PBXBuildFile; fileRef = A9DB38F30D37EA0300F77345 /* detelecine.c */; }; + A9DB391D0D37EA0300F77345 /* dvd.c in Sources */ = {isa = PBXBuildFile; fileRef = A9DB38F40D37EA0300F77345 /* dvd.c */; }; + A9DB391E0D37EA0300F77345 /* encavcodec.c in Sources */ = {isa = PBXBuildFile; fileRef = A9DB38F50D37EA0300F77345 /* encavcodec.c */; }; + A9DB391F0D37EA0300F77345 /* encfaac.c in Sources */ = {isa = PBXBuildFile; fileRef = A9DB38F60D37EA0300F77345 /* encfaac.c */; }; + A9DB39200D37EA0300F77345 /* enclame.c in Sources */ = {isa = PBXBuildFile; fileRef = A9DB38F70D37EA0300F77345 /* enclame.c */; }; + A9DB39210D37EA0300F77345 /* encvorbis.c in Sources */ = {isa = PBXBuildFile; fileRef = A9DB38F80D37EA0300F77345 /* encvorbis.c */; }; + A9DB39220D37EA0300F77345 /* encx264.c in Sources */ = {isa = PBXBuildFile; fileRef = A9DB38F90D37EA0300F77345 /* encx264.c */; }; + A9DB39230D37EA0300F77345 /* encxvid.c in Sources */ = {isa = PBXBuildFile; fileRef = A9DB38FA0D37EA0300F77345 /* encxvid.c */; }; + A9DB39240D37EA0300F77345 /* fifo.c in Sources */ = {isa = PBXBuildFile; fileRef = A9DB38FB0D37EA0300F77345 /* fifo.c */; }; + A9DB39250D37EA0300F77345 /* hb.c in Sources */ = {isa = PBXBuildFile; fileRef = A9DB38FC0D37EA0300F77345 /* hb.c */; }; + A9DB39260D37EA0300F77345 /* hb.h in Headers */ = {isa = PBXBuildFile; fileRef = A9DB38FD0D37EA0300F77345 /* hb.h */; }; + A9DB39270D37EA0300F77345 /* internal.h in Headers */ = {isa = PBXBuildFile; fileRef = A9DB38FE0D37EA0300F77345 /* internal.h */; }; + A9DB39280D37EA0300F77345 /* ipodutil.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9DB38FF0D37EA0300F77345 /* ipodutil.cpp */; }; + A9DB39290D37EA0300F77345 /* lang.c in Sources */ = {isa = PBXBuildFile; fileRef = A9DB39000D37EA0300F77345 /* lang.c */; }; + A9DB392A0D37EA0300F77345 /* lang.h in Headers */ = {isa = PBXBuildFile; fileRef = A9DB39010D37EA0300F77345 /* lang.h */; }; + A9DB392B0D37EA0300F77345 /* muxavi.c in Sources */ = {isa = PBXBuildFile; fileRef = A9DB39020D37EA0300F77345 /* muxavi.c */; }; + A9DB392C0D37EA0300F77345 /* muxcommon.c in Sources */ = {isa = PBXBuildFile; fileRef = A9DB39030D37EA0300F77345 /* muxcommon.c */; }; + A9DB392D0D37EA0300F77345 /* muxmkv.c in Sources */ = {isa = PBXBuildFile; fileRef = A9DB39040D37EA0300F77345 /* muxmkv.c */; }; + A9DB392E0D37EA0300F77345 /* muxmp4.c in Sources */ = {isa = PBXBuildFile; fileRef = A9DB39050D37EA0300F77345 /* muxmp4.c */; }; + A9DB392F0D37EA0300F77345 /* muxogm.c in Sources */ = {isa = PBXBuildFile; fileRef = A9DB39060D37EA0300F77345 /* muxogm.c */; }; + A9DB39300D37EA0300F77345 /* ports.c in Sources */ = {isa = PBXBuildFile; fileRef = A9DB39070D37EA0300F77345 /* ports.c */; }; + A9DB39310D37EA0300F77345 /* ports.h in Headers */ = {isa = PBXBuildFile; fileRef = A9DB39080D37EA0300F77345 /* ports.h */; }; + A9DB39320D37EA0300F77345 /* reader.c in Sources */ = {isa = PBXBuildFile; fileRef = A9DB39090D37EA0300F77345 /* reader.c */; }; + A9DB39330D37EA0300F77345 /* render.c in Sources */ = {isa = PBXBuildFile; fileRef = A9DB390A0D37EA0300F77345 /* render.c */; }; + A9DB39340D37EA0300F77345 /* scan.c in Sources */ = {isa = PBXBuildFile; fileRef = A9DB390B0D37EA0300F77345 /* scan.c */; }; + A9DB39350D37EA0300F77345 /* stream.c in Sources */ = {isa = PBXBuildFile; fileRef = A9DB390C0D37EA0300F77345 /* stream.c */; }; + A9DB39360D37EA0300F77345 /* sync.c in Sources */ = {isa = PBXBuildFile; fileRef = A9DB390D0D37EA0300F77345 /* sync.c */; }; + A9DB39370D37EA0300F77345 /* update.c in Sources */ = {isa = PBXBuildFile; fileRef = A9DB390E0D37EA0300F77345 /* update.c */; }; + A9DB39380D37EA0300F77345 /* work.c in Sources */ = {isa = PBXBuildFile; fileRef = A9DB390F0D37EA0300F77345 /* work.c */; }; + A9DB39B20D37EB4700F77345 /* liba52.a in Frameworks */ = {isa = PBXBuildFile; fileRef = A9DB399D0D37EB4700F77345 /* liba52.a */; }; + A9DB39B30D37EB4700F77345 /* libavcodec.a in Frameworks */ = {isa = PBXBuildFile; fileRef = A9DB399E0D37EB4700F77345 /* libavcodec.a */; }; + A9DB39B40D37EB4700F77345 /* libavformat.a in Frameworks */ = {isa = PBXBuildFile; fileRef = A9DB399F0D37EB4700F77345 /* libavformat.a */; }; + A9DB39B50D37EB4700F77345 /* libavutil.a in Frameworks */ = {isa = PBXBuildFile; fileRef = A9DB39A00D37EB4700F77345 /* libavutil.a */; }; + A9DB39B60D37EB4700F77345 /* libdca.a in Frameworks */ = {isa = PBXBuildFile; fileRef = A9DB39A10D37EB4700F77345 /* libdca.a */; }; + A9DB39B70D37EB4700F77345 /* libdvdcss.a in Frameworks */ = {isa = PBXBuildFile; fileRef = A9DB39A20D37EB4700F77345 /* libdvdcss.a */; }; + A9DB39B80D37EB4700F77345 /* libdvdread.a in Frameworks */ = {isa = PBXBuildFile; fileRef = A9DB39A30D37EB4700F77345 /* libdvdread.a */; }; + A9DB39B90D37EB4700F77345 /* libfaac.a in Frameworks */ = {isa = PBXBuildFile; fileRef = A9DB39A40D37EB4700F77345 /* libfaac.a */; }; + A9DB39BA0D37EB4700F77345 /* libmkv.a in Frameworks */ = {isa = PBXBuildFile; fileRef = A9DB39A50D37EB4700F77345 /* libmkv.a */; }; + A9DB39BB0D37EB4700F77345 /* libmp3lame.a in Frameworks */ = {isa = PBXBuildFile; fileRef = A9DB39A60D37EB4700F77345 /* libmp3lame.a */; }; + A9DB39BC0D37EB4700F77345 /* libmp4v2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = A9DB39A70D37EB4700F77345 /* libmp4v2.a */; }; + A9DB39BD0D37EB4700F77345 /* libmpeg2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = A9DB39A80D37EB4700F77345 /* libmpeg2.a */; }; + A9DB39BE0D37EB4700F77345 /* libmpeg2convert.a in Frameworks */ = {isa = PBXBuildFile; fileRef = A9DB39A90D37EB4700F77345 /* libmpeg2convert.a */; }; + A9DB39BF0D37EB4700F77345 /* libogg.a in Frameworks */ = {isa = PBXBuildFile; fileRef = A9DB39AA0D37EB4700F77345 /* libogg.a */; }; + A9DB39C00D37EB4700F77345 /* libsamplerate.a in Frameworks */ = {isa = PBXBuildFile; fileRef = A9DB39AB0D37EB4700F77345 /* libsamplerate.a */; }; + A9DB39C10D37EB4700F77345 /* libswscale.a in Frameworks */ = {isa = PBXBuildFile; fileRef = A9DB39AC0D37EB4700F77345 /* libswscale.a */; }; + A9DB39C20D37EB4700F77345 /* libvorbis.a in Frameworks */ = {isa = PBXBuildFile; fileRef = A9DB39AD0D37EB4700F77345 /* libvorbis.a */; }; + A9DB39C30D37EB4700F77345 /* libvorbisenc.a in Frameworks */ = {isa = PBXBuildFile; fileRef = A9DB39AE0D37EB4700F77345 /* libvorbisenc.a */; }; + A9DB39C40D37EB4700F77345 /* libvorbisfile.a in Frameworks */ = {isa = PBXBuildFile; fileRef = A9DB39AF0D37EB4700F77345 /* libvorbisfile.a */; }; + A9DB39C50D37EB4700F77345 /* libxvidcore.a in Frameworks */ = {isa = PBXBuildFile; fileRef = A9DB39B00D37EB4700F77345 /* libxvidcore.a */; }; + A9DB39C60D37EB4700F77345 /* libx264.a in Frameworks */ = {isa = PBXBuildFile; fileRef = A9DB39B10D37EB4700F77345 /* libx264.a */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + 0DFF0B720B6BC6E600549488 /* libhb.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libhb.a; sourceTree = BUILT_PRODUCTS_DIR; }; + 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = ""; }; + 29B97324FDCFA39411CA2CEA /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = /System/Library/Frameworks/AppKit.framework; sourceTree = ""; }; + 29B97325FDCFA39411CA2CEA /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; sourceTree = ""; }; + 4D1125D709D72FD200E0657B /* libz.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libz.dylib; path = /usr/lib/libz.dylib; sourceTree = ""; }; + 4DEB2024052B055F00C39CA9 /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = IOKit.framework; path = /System/Library/Frameworks/IOKit.framework; sourceTree = ""; }; + A9DB38E70D37EA0300F77345 /* common.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = common.c; path = ../../libhb/common.c; sourceTree = SOURCE_ROOT; }; + A9DB38E80D37EA0300F77345 /* common.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = common.h; path = ../../libhb/common.h; sourceTree = SOURCE_ROOT; }; + A9DB38E90D37EA0300F77345 /* deblock.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = deblock.c; path = ../../libhb/deblock.c; sourceTree = SOURCE_ROOT; }; + A9DB38EA0D37EA0300F77345 /* deca52.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = deca52.c; path = ../../libhb/deca52.c; sourceTree = SOURCE_ROOT; }; + A9DB38EB0D37EA0300F77345 /* decavcodec.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = decavcodec.c; path = ../../libhb/decavcodec.c; sourceTree = SOURCE_ROOT; }; + A9DB38EC0D37EA0300F77345 /* decdca.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = decdca.c; path = ../../libhb/decdca.c; sourceTree = SOURCE_ROOT; }; + A9DB38ED0D37EA0300F77345 /* declpcm.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = declpcm.c; path = ../../libhb/declpcm.c; sourceTree = SOURCE_ROOT; }; + A9DB38EE0D37EA0300F77345 /* decmpeg2.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = decmpeg2.c; path = ../../libhb/decmpeg2.c; sourceTree = SOURCE_ROOT; }; + A9DB38EF0D37EA0300F77345 /* decsub.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = decsub.c; path = ../../libhb/decsub.c; sourceTree = SOURCE_ROOT; }; + A9DB38F00D37EA0300F77345 /* deinterlace.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = deinterlace.c; path = ../../libhb/deinterlace.c; sourceTree = SOURCE_ROOT; }; + A9DB38F10D37EA0300F77345 /* demuxmpeg.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = demuxmpeg.c; path = ../../libhb/demuxmpeg.c; sourceTree = SOURCE_ROOT; }; + A9DB38F20D37EA0300F77345 /* denoise.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = denoise.c; path = ../../libhb/denoise.c; sourceTree = SOURCE_ROOT; }; + A9DB38F30D37EA0300F77345 /* detelecine.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = detelecine.c; path = ../../libhb/detelecine.c; sourceTree = SOURCE_ROOT; }; + A9DB38F40D37EA0300F77345 /* dvd.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = dvd.c; path = ../../libhb/dvd.c; sourceTree = SOURCE_ROOT; }; + A9DB38F50D37EA0300F77345 /* encavcodec.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = encavcodec.c; path = ../../libhb/encavcodec.c; sourceTree = SOURCE_ROOT; }; + A9DB38F60D37EA0300F77345 /* encfaac.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = encfaac.c; path = ../../libhb/encfaac.c; sourceTree = SOURCE_ROOT; }; + A9DB38F70D37EA0300F77345 /* enclame.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = enclame.c; path = ../../libhb/enclame.c; sourceTree = SOURCE_ROOT; }; + A9DB38F80D37EA0300F77345 /* encvorbis.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = encvorbis.c; path = ../../libhb/encvorbis.c; sourceTree = SOURCE_ROOT; }; + A9DB38F90D37EA0300F77345 /* encx264.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = encx264.c; path = ../../libhb/encx264.c; sourceTree = SOURCE_ROOT; }; + A9DB38FA0D37EA0300F77345 /* encxvid.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = encxvid.c; path = ../../libhb/encxvid.c; sourceTree = SOURCE_ROOT; }; + A9DB38FB0D37EA0300F77345 /* fifo.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = fifo.c; path = ../../libhb/fifo.c; sourceTree = SOURCE_ROOT; }; + A9DB38FC0D37EA0300F77345 /* hb.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = hb.c; path = ../../libhb/hb.c; sourceTree = SOURCE_ROOT; }; + A9DB38FD0D37EA0300F77345 /* hb.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = hb.h; path = ../../libhb/hb.h; sourceTree = SOURCE_ROOT; }; + A9DB38FE0D37EA0300F77345 /* internal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = internal.h; path = ../../libhb/internal.h; sourceTree = SOURCE_ROOT; }; + A9DB38FF0D37EA0300F77345 /* ipodutil.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ipodutil.cpp; path = ../../libhb/ipodutil.cpp; sourceTree = SOURCE_ROOT; }; + A9DB39000D37EA0300F77345 /* lang.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = lang.c; path = ../../libhb/lang.c; sourceTree = SOURCE_ROOT; }; + A9DB39010D37EA0300F77345 /* lang.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = lang.h; path = ../../libhb/lang.h; sourceTree = SOURCE_ROOT; }; + A9DB39020D37EA0300F77345 /* muxavi.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = muxavi.c; path = ../../libhb/muxavi.c; sourceTree = SOURCE_ROOT; }; + A9DB39030D37EA0300F77345 /* muxcommon.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = muxcommon.c; path = ../../libhb/muxcommon.c; sourceTree = SOURCE_ROOT; }; + A9DB39040D37EA0300F77345 /* muxmkv.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = muxmkv.c; path = ../../libhb/muxmkv.c; sourceTree = SOURCE_ROOT; }; + A9DB39050D37EA0300F77345 /* muxmp4.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = muxmp4.c; path = ../../libhb/muxmp4.c; sourceTree = SOURCE_ROOT; }; + A9DB39060D37EA0300F77345 /* muxogm.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = muxogm.c; path = ../../libhb/muxogm.c; sourceTree = SOURCE_ROOT; }; + A9DB39070D37EA0300F77345 /* ports.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = ports.c; path = ../../libhb/ports.c; sourceTree = SOURCE_ROOT; }; + A9DB39080D37EA0300F77345 /* ports.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ports.h; path = ../../libhb/ports.h; sourceTree = SOURCE_ROOT; }; + A9DB39090D37EA0300F77345 /* reader.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = reader.c; path = ../../libhb/reader.c; sourceTree = SOURCE_ROOT; }; + A9DB390A0D37EA0300F77345 /* render.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = render.c; path = ../../libhb/render.c; sourceTree = SOURCE_ROOT; }; + A9DB390B0D37EA0300F77345 /* scan.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = scan.c; path = ../../libhb/scan.c; sourceTree = SOURCE_ROOT; }; + A9DB390C0D37EA0300F77345 /* stream.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = stream.c; path = ../../libhb/stream.c; sourceTree = SOURCE_ROOT; }; + A9DB390D0D37EA0300F77345 /* sync.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = sync.c; path = ../../libhb/sync.c; sourceTree = SOURCE_ROOT; }; + A9DB390E0D37EA0300F77345 /* update.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = update.c; path = ../../libhb/update.c; sourceTree = SOURCE_ROOT; }; + A9DB390F0D37EA0300F77345 /* work.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = work.c; path = ../../libhb/work.c; sourceTree = SOURCE_ROOT; }; + A9DB399D0D37EB4700F77345 /* liba52.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = liba52.a; path = ../../contrib/lib/liba52.a; sourceTree = SOURCE_ROOT; }; + A9DB399E0D37EB4700F77345 /* libavcodec.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libavcodec.a; path = ../../contrib/lib/libavcodec.a; sourceTree = SOURCE_ROOT; }; + A9DB399F0D37EB4700F77345 /* libavformat.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libavformat.a; path = ../../contrib/lib/libavformat.a; sourceTree = SOURCE_ROOT; }; + A9DB39A00D37EB4700F77345 /* libavutil.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libavutil.a; path = ../../contrib/lib/libavutil.a; sourceTree = SOURCE_ROOT; }; + A9DB39A10D37EB4700F77345 /* libdca.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libdca.a; path = ../../contrib/lib/libdca.a; sourceTree = SOURCE_ROOT; }; + A9DB39A20D37EB4700F77345 /* libdvdcss.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libdvdcss.a; path = ../../contrib/lib/libdvdcss.a; sourceTree = SOURCE_ROOT; }; + A9DB39A30D37EB4700F77345 /* libdvdread.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libdvdread.a; path = ../../contrib/lib/libdvdread.a; sourceTree = SOURCE_ROOT; }; + A9DB39A40D37EB4700F77345 /* libfaac.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libfaac.a; path = ../../contrib/lib/libfaac.a; sourceTree = SOURCE_ROOT; }; + A9DB39A50D37EB4700F77345 /* libmkv.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libmkv.a; path = ../../contrib/lib/libmkv.a; sourceTree = SOURCE_ROOT; }; + A9DB39A60D37EB4700F77345 /* libmp3lame.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libmp3lame.a; path = ../../contrib/lib/libmp3lame.a; sourceTree = SOURCE_ROOT; }; + A9DB39A70D37EB4700F77345 /* libmp4v2.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libmp4v2.a; path = ../../contrib/lib/libmp4v2.a; sourceTree = SOURCE_ROOT; }; + A9DB39A80D37EB4700F77345 /* libmpeg2.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libmpeg2.a; path = ../../contrib/lib/libmpeg2.a; sourceTree = SOURCE_ROOT; }; + A9DB39A90D37EB4700F77345 /* libmpeg2convert.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libmpeg2convert.a; path = ../../contrib/lib/libmpeg2convert.a; sourceTree = SOURCE_ROOT; }; + A9DB39AA0D37EB4700F77345 /* libogg.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libogg.a; path = ../../contrib/lib/libogg.a; sourceTree = SOURCE_ROOT; }; + A9DB39AB0D37EB4700F77345 /* libsamplerate.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libsamplerate.a; path = ../../contrib/lib/libsamplerate.a; sourceTree = SOURCE_ROOT; }; + A9DB39AC0D37EB4700F77345 /* libswscale.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libswscale.a; path = ../../contrib/lib/libswscale.a; sourceTree = SOURCE_ROOT; }; + A9DB39AD0D37EB4700F77345 /* libvorbis.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libvorbis.a; path = ../../contrib/lib/libvorbis.a; sourceTree = SOURCE_ROOT; }; + A9DB39AE0D37EB4700F77345 /* libvorbisenc.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libvorbisenc.a; path = ../../contrib/lib/libvorbisenc.a; sourceTree = SOURCE_ROOT; }; + A9DB39AF0D37EB4700F77345 /* libvorbisfile.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libvorbisfile.a; path = ../../contrib/lib/libvorbisfile.a; sourceTree = SOURCE_ROOT; }; + A9DB39B00D37EB4700F77345 /* libxvidcore.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libxvidcore.a; path = ../../contrib/lib/libxvidcore.a; sourceTree = SOURCE_ROOT; }; + A9DB39B10D37EB4700F77345 /* libx264.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libx264.a; path = ../../contrib/lib/libx264.a; sourceTree = SOURCE_ROOT; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 0DFF0B700B6BC6E600549488 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + A9DB39B20D37EB4700F77345 /* liba52.a in Frameworks */, + A9DB39B30D37EB4700F77345 /* libavcodec.a in Frameworks */, + A9DB39B40D37EB4700F77345 /* libavformat.a in Frameworks */, + A9DB39B50D37EB4700F77345 /* libavutil.a in Frameworks */, + A9DB39B60D37EB4700F77345 /* libdca.a in Frameworks */, + A9DB39B70D37EB4700F77345 /* libdvdcss.a in Frameworks */, + A9DB39B80D37EB4700F77345 /* libdvdread.a in Frameworks */, + A9DB39B90D37EB4700F77345 /* libfaac.a in Frameworks */, + A9DB39BA0D37EB4700F77345 /* libmkv.a in Frameworks */, + A9DB39BB0D37EB4700F77345 /* libmp3lame.a in Frameworks */, + A9DB39BC0D37EB4700F77345 /* libmp4v2.a in Frameworks */, + A9DB39BD0D37EB4700F77345 /* libmpeg2.a in Frameworks */, + A9DB39BE0D37EB4700F77345 /* libmpeg2convert.a in Frameworks */, + A9DB39BF0D37EB4700F77345 /* libogg.a in Frameworks */, + A9DB39C00D37EB4700F77345 /* libsamplerate.a in Frameworks */, + A9DB39C10D37EB4700F77345 /* libswscale.a in Frameworks */, + A9DB39C20D37EB4700F77345 /* libvorbis.a in Frameworks */, + A9DB39C30D37EB4700F77345 /* libvorbisenc.a in Frameworks */, + A9DB39C40D37EB4700F77345 /* libvorbisfile.a in Frameworks */, + A9DB39C50D37EB4700F77345 /* libxvidcore.a in Frameworks */, + A9DB39C60D37EB4700F77345 /* libx264.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 19C28FACFE9D520D11CA2CBB /* Products */ = { + isa = PBXGroup; + children = ( + 0DFF0B720B6BC6E600549488 /* libhb.a */, + ); + name = Products; + sourceTree = ""; + }; + 29B97314FDCFA39411CA2CEA /* HandBrake */ = { + isa = PBXGroup; + children = ( + A9DB38E70D37EA0300F77345 /* common.c */, + A9DB38E80D37EA0300F77345 /* common.h */, + A9DB38E90D37EA0300F77345 /* deblock.c */, + A9DB38EA0D37EA0300F77345 /* deca52.c */, + A9DB38EB0D37EA0300F77345 /* decavcodec.c */, + A9DB38EC0D37EA0300F77345 /* decdca.c */, + A9DB38ED0D37EA0300F77345 /* declpcm.c */, + A9DB38EE0D37EA0300F77345 /* decmpeg2.c */, + A9DB38EF0D37EA0300F77345 /* decsub.c */, + A9DB38F00D37EA0300F77345 /* deinterlace.c */, + A9DB38F10D37EA0300F77345 /* demuxmpeg.c */, + A9DB38F20D37EA0300F77345 /* denoise.c */, + A9DB38F30D37EA0300F77345 /* detelecine.c */, + A9DB38F40D37EA0300F77345 /* dvd.c */, + A9DB38F50D37EA0300F77345 /* encavcodec.c */, + A9DB38F60D37EA0300F77345 /* encfaac.c */, + A9DB38F70D37EA0300F77345 /* enclame.c */, + A9DB38F80D37EA0300F77345 /* encvorbis.c */, + A9DB38F90D37EA0300F77345 /* encx264.c */, + A9DB38FA0D37EA0300F77345 /* encxvid.c */, + A9DB38FB0D37EA0300F77345 /* fifo.c */, + A9DB38FC0D37EA0300F77345 /* hb.c */, + A9DB38FD0D37EA0300F77345 /* hb.h */, + A9DB38FE0D37EA0300F77345 /* internal.h */, + A9DB38FF0D37EA0300F77345 /* ipodutil.cpp */, + A9DB39000D37EA0300F77345 /* lang.c */, + A9DB39010D37EA0300F77345 /* lang.h */, + A9DB39020D37EA0300F77345 /* muxavi.c */, + A9DB39030D37EA0300F77345 /* muxcommon.c */, + A9DB39040D37EA0300F77345 /* muxmkv.c */, + A9DB39050D37EA0300F77345 /* muxmp4.c */, + A9DB39060D37EA0300F77345 /* muxogm.c */, + A9DB39070D37EA0300F77345 /* ports.c */, + A9DB39080D37EA0300F77345 /* ports.h */, + A9DB39090D37EA0300F77345 /* reader.c */, + A9DB390A0D37EA0300F77345 /* render.c */, + A9DB390B0D37EA0300F77345 /* scan.c */, + A9DB390C0D37EA0300F77345 /* stream.c */, + A9DB390D0D37EA0300F77345 /* sync.c */, + A9DB390E0D37EA0300F77345 /* update.c */, + A9DB390F0D37EA0300F77345 /* work.c */, + 29B97323FDCFA39411CA2CEA /* Frameworks */, + 19C28FACFE9D520D11CA2CBB /* Products */, + ); + name = HandBrake; + sourceTree = ""; + }; + 29B97323FDCFA39411CA2CEA /* Frameworks */ = { + isa = PBXGroup; + children = ( + A9DB399D0D37EB4700F77345 /* liba52.a */, + A9DB399E0D37EB4700F77345 /* libavcodec.a */, + A9DB399F0D37EB4700F77345 /* libavformat.a */, + A9DB39A00D37EB4700F77345 /* libavutil.a */, + A9DB39A10D37EB4700F77345 /* libdca.a */, + A9DB39A20D37EB4700F77345 /* libdvdcss.a */, + A9DB39A30D37EB4700F77345 /* libdvdread.a */, + A9DB39A40D37EB4700F77345 /* libfaac.a */, + A9DB39A50D37EB4700F77345 /* libmkv.a */, + A9DB39A60D37EB4700F77345 /* libmp3lame.a */, + A9DB39A70D37EB4700F77345 /* libmp4v2.a */, + A9DB39A80D37EB4700F77345 /* libmpeg2.a */, + A9DB39A90D37EB4700F77345 /* libmpeg2convert.a */, + A9DB39AA0D37EB4700F77345 /* libogg.a */, + A9DB39AB0D37EB4700F77345 /* libsamplerate.a */, + A9DB39AC0D37EB4700F77345 /* libswscale.a */, + A9DB39AD0D37EB4700F77345 /* libvorbis.a */, + A9DB39AE0D37EB4700F77345 /* libvorbisenc.a */, + A9DB39AF0D37EB4700F77345 /* libvorbisfile.a */, + A9DB39B00D37EB4700F77345 /* libxvidcore.a */, + A9DB39B10D37EB4700F77345 /* libx264.a */, + 4D1125D709D72FD200E0657B /* libz.dylib */, + 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */, + 4DEB2024052B055F00C39CA9 /* IOKit.framework */, + 29B97325FDCFA39411CA2CEA /* Foundation.framework */, + 29B97324FDCFA39411CA2CEA /* AppKit.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXHeadersBuildPhase section */ + 0DFF0B6E0B6BC6E600549488 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + A9DB39110D37EA0300F77345 /* common.h in Headers */, + A9DB39260D37EA0300F77345 /* hb.h in Headers */, + A9DB39270D37EA0300F77345 /* internal.h in Headers */, + A9DB392A0D37EA0300F77345 /* lang.h in Headers */, + A9DB39310D37EA0300F77345 /* ports.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXHeadersBuildPhase section */ + +/* Begin PBXNativeTarget section */ + 0DFF0B710B6BC6E600549488 /* libhb */ = { + isa = PBXNativeTarget; + buildConfigurationList = 0DFF0B730B6BC70400549488 /* Build configuration list for PBXNativeTarget "libhb" */; + buildPhases = ( + 0DFF0B6E0B6BC6E600549488 /* Headers */, + 0DFF0B6F0B6BC6E600549488 /* Sources */, + 0DFF0B700B6BC6E600549488 /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = libhb; + productName = libmediafork; + productReference = 0DFF0B720B6BC6E600549488 /* libhb.a */; + productType = "com.apple.product-type.library.static"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 29B97313FDCFA39411CA2CEA /* Project object */ = { + isa = PBXProject; + buildConfigurationList = 4D4E7BC4087804870051572B /* Build configuration list for PBXProject "libhb" */; + compatibilityVersion = "Xcode 2.4"; + hasScannedForEncodings = 1; + mainGroup = 29B97314FDCFA39411CA2CEA /* HandBrake */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 0DFF0B710B6BC6E600549488 /* libhb */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXSourcesBuildPhase section */ + 0DFF0B6F0B6BC6E600549488 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + A9DB39100D37EA0300F77345 /* common.c in Sources */, + A9DB39120D37EA0300F77345 /* deblock.c in Sources */, + A9DB39130D37EA0300F77345 /* deca52.c in Sources */, + A9DB39140D37EA0300F77345 /* decavcodec.c in Sources */, + A9DB39150D37EA0300F77345 /* decdca.c in Sources */, + A9DB39160D37EA0300F77345 /* declpcm.c in Sources */, + A9DB39170D37EA0300F77345 /* decmpeg2.c in Sources */, + A9DB39180D37EA0300F77345 /* decsub.c in Sources */, + A9DB39190D37EA0300F77345 /* deinterlace.c in Sources */, + A9DB391A0D37EA0300F77345 /* demuxmpeg.c in Sources */, + A9DB391B0D37EA0300F77345 /* denoise.c in Sources */, + A9DB391C0D37EA0300F77345 /* detelecine.c in Sources */, + A9DB391D0D37EA0300F77345 /* dvd.c in Sources */, + A9DB391E0D37EA0300F77345 /* encavcodec.c in Sources */, + A9DB391F0D37EA0300F77345 /* encfaac.c in Sources */, + A9DB39200D37EA0300F77345 /* enclame.c in Sources */, + A9DB39210D37EA0300F77345 /* encvorbis.c in Sources */, + A9DB39220D37EA0300F77345 /* encx264.c in Sources */, + A9DB39230D37EA0300F77345 /* encxvid.c in Sources */, + A9DB39240D37EA0300F77345 /* fifo.c in Sources */, + A9DB39250D37EA0300F77345 /* hb.c in Sources */, + A9DB39280D37EA0300F77345 /* ipodutil.cpp in Sources */, + A9DB39290D37EA0300F77345 /* lang.c in Sources */, + A9DB392B0D37EA0300F77345 /* muxavi.c in Sources */, + A9DB392C0D37EA0300F77345 /* muxcommon.c in Sources */, + A9DB392D0D37EA0300F77345 /* muxmkv.c in Sources */, + A9DB392E0D37EA0300F77345 /* muxmp4.c in Sources */, + A9DB392F0D37EA0300F77345 /* muxogm.c in Sources */, + A9DB39300D37EA0300F77345 /* ports.c in Sources */, + A9DB39320D37EA0300F77345 /* reader.c in Sources */, + A9DB39330D37EA0300F77345 /* render.c in Sources */, + A9DB39340D37EA0300F77345 /* scan.c in Sources */, + A9DB39350D37EA0300F77345 /* stream.c in Sources */, + A9DB39360D37EA0300F77345 /* sync.c in Sources */, + A9DB39370D37EA0300F77345 /* update.c in Sources */, + A9DB39380D37EA0300F77345 /* work.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + 0D88F56B0B6CDCD400F81F26 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CONFIGURATION_BUILD_DIR = "$(PROJECT_DIR)/"; + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_GENERATE_DEBUGGING_SYMBOLS = YES; + GCC_MODEL_TUNING = G5; + GCC_OPTIMIZATION_LEVEL = s; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = ""; + HEADER_SEARCH_PATHS = "$(PROJECT_DIR)/../../contrib/include"; + INSTALL_PATH = /usr/local/lib; + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", + ); + LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)/../../contrib/lib\""; + MACOSX_DEPLOYMENT_TARGET = 10.3; + OTHER_CFLAGS = ( + "-D__LIBHB__", + "-DSYS_DARWIN", + "$(OTHER_CFLAGS_QUOTED_1)", + "-DUSE_PTHREAD", + ); + OTHER_CFLAGS_QUOTED_1 = "-DHB_VERSION=\\\"0.9.1\\\" -DHB_BUILD=2007100800"; + OTHER_LDFLAGS = ""; + PER_ARCH_CFLAGS_ppc = "-DWORDS_BIGENDIAN"; + PREBINDING = NO; + PRODUCT_NAME = hb; + SDKROOT = /Developer/SDKs/MacOSX10.5.sdk; + ZERO_LINK = NO; + }; + name = Release; + }; + 0D88F56F0B6CDCD400F81F26 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = ( + ppc, + i386, + ); + GCC_MODEL_TUNING = G5; + GCC_PREPROCESSOR_DEFINITIONS = "JOB_GROUPS=1"; + IBC_NOTICES = NO; + MACOSX_DEPLOYMENT_TARGET = 10.5; + SDKROOT = /Developer/SDKs/MacOSX10.5.sdk; + }; + name = Release; + }; + 0DFF0B740B6BC70400549488 /* Development */ = { + isa = XCBuildConfiguration; + buildSettings = { + CONFIGURATION_BUILD_DIR = "$(PROJECT_DIR)/"; + COPY_PHASE_STRIP = NO; + GCC_DYNAMIC_NO_PIC = NO; + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_GENERATE_DEBUGGING_SYMBOLS = YES; + GCC_MODEL_TUNING = G5; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = ""; + HEADER_SEARCH_PATHS = "$(PROJECT_DIR)/../../contrib/include"; + INSTALL_PATH = /usr/local/lib; + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", + ); + LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)/../../contrib/lib\""; + MACOSX_DEPLOYMENT_TARGET = 10.3; + OTHER_CFLAGS = ( + "-D__LIBHB__", + "-DSYS_DARWIN", + "$(OTHER_CFLAGS_QUOTED_1)", + "-DUSE_PTHREAD", + ); + OTHER_CFLAGS_QUOTED_1 = "-DHB_VERSION=\\\"0.9.1\\\" -DHB_BUILD=2007100800"; + OTHER_LDFLAGS = ""; + PER_ARCH_CFLAGS_ppc = "-DWORDS_BIGENDIAN"; + PREBINDING = NO; + PRODUCT_NAME = hb; + SDKROOT = /Developer/SDKs/MacOSX10.5.sdk; + ZERO_LINK = NO; + }; + name = Development; + }; + 0DFF0B750B6BC70400549488 /* Deployment */ = { + isa = XCBuildConfiguration; + buildSettings = { + CONFIGURATION_BUILD_DIR = "$(PROJECT_DIR)/"; + COPY_PHASE_STRIP = YES; + GCC_ENABLE_FIX_AND_CONTINUE = NO; + GCC_GENERATE_DEBUGGING_SYMBOLS = YES; + GCC_MODEL_TUNING = G5; + GCC_OPTIMIZATION_LEVEL = s; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = ""; + HEADER_SEARCH_PATHS = "$(PROJECT_DIR)/../../contrib/include"; + INSTALL_PATH = /usr/local/lib; + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", + ); + LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)/../../contrib/lib\""; + MACOSX_DEPLOYMENT_TARGET = 10.3; + OTHER_CFLAGS = ( + "-D__LIBHB__", + "-DSYS_DARWIN", + "$(OTHER_CFLAGS_QUOTED_1)", + "-DUSE_PTHREAD", + ); + OTHER_CFLAGS_QUOTED_1 = "-DHB_VERSION=\\\"0.9.1\\\" -DHB_BUILD=2007100800"; + OTHER_LDFLAGS = ""; + PER_ARCH_CFLAGS_ppc = "-DWORDS_BIGENDIAN"; + PREBINDING = NO; + PRODUCT_NAME = hb; + SDKROOT = /Developer/SDKs/MacOSX10.5.sdk; + STRIP_INSTALLED_PRODUCT = YES; + STRIP_STYLE = all; + ZERO_LINK = NO; + }; + name = Deployment; + }; + 4D4E7BC5087804870051572B /* Development */ = { + isa = XCBuildConfiguration; + buildSettings = { + DEBUG_INFORMATION_FORMAT = dwarf; + GCC_DEBUGGING_SYMBOLS = default; + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_MODEL_TUNING = G5; + GCC_OPTIMIZATION_LEVEL = 0; + IBC_NOTICES = NO; + IBC_WARNINGS = YES; + MACOSX_DEPLOYMENT_TARGET = 10.5; + PREBINDING = NO; + SDKROOT = /Developer/SDKs/MacOSX10.5.sdk; + ZERO_LINK = NO; + }; + name = Development; + }; + 4D4E7BC6087804870051572B /* Deployment */ = { + isa = XCBuildConfiguration; + buildSettings = { + GCC_AUTO_VECTORIZATION = YES; + GCC_ENABLE_SSE3_EXTENSIONS = YES; + GCC_MODEL_TUNING = G5; + GCC_PREPROCESSOR_DEFINITIONS = "JOB_GROUPS=1"; + IBC_NOTICES = NO; + MACOSX_DEPLOYMENT_TARGET = 10.5; + SDKROOT = /Developer/SDKs/MacOSX10.5.sdk; + }; + name = Deployment; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 0DFF0B730B6BC70400549488 /* Build configuration list for PBXNativeTarget "libhb" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 0DFF0B740B6BC70400549488 /* Development */, + 0DFF0B750B6BC70400549488 /* Deployment */, + 0D88F56B0B6CDCD400F81F26 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Deployment; + }; + 4D4E7BC4087804870051572B /* Build configuration list for PBXProject "libhb" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 4D4E7BC5087804870051572B /* Development */, + 4D4E7BC6087804870051572B /* Deployment */, + 0D88F56F0B6CDCD400F81F26 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Deployment; + }; +/* End XCConfigurationList section */ + }; + rootObject = 29B97313FDCFA39411CA2CEA /* Project object */; +} diff -Nru handbrake-0.9.9+dfsg/macosx/InstantHandBrake/main.mm handbrake-0.9.9+ppa1/macosx/InstantHandBrake/main.mm --- handbrake-0.9.9+dfsg/macosx/InstantHandBrake/main.mm 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/InstantHandBrake/main.mm 2008-01-30 12:28:55.000000000 +0000 @@ -0,0 +1,19 @@ +/* $Id: main.mm,v 1.3 2005/11/25 15:04:35 titer Exp $ + + This file is part of the HandBrake source code. + Homepage: . + It may be used under the terms of the GNU General Public License. */ + +#include +#import "hb.h" + +void SigHandler( int signal ) +{ + [NSApp terminate: NULL]; +} + +int main( int argc, const char ** argv ) +{ + signal( SIGINT, SigHandler ); + return NSApplicationMain( argc, argv ); +} Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/macosx/InstantHandBrake/Open.tiff and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/macosx/InstantHandBrake/Open.tiff differ diff -Nru handbrake-0.9.9+dfsg/macosx/InstantHandBrake/Preset.h handbrake-0.9.9+ppa1/macosx/InstantHandBrake/Preset.h --- handbrake-0.9.9+dfsg/macosx/InstantHandBrake/Preset.h 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/InstantHandBrake/Preset.h 2008-01-30 12:28:55.000000000 +0000 @@ -0,0 +1,51 @@ +// +// Preset.h +// InstantHandBrake +// +// Created by Damiano Galassi on 15/01/08. +// This file is part of the HandBrake source code. +// Homepage: . +// It may be used under the terms of the GNU General Public License. +// +// + +#import + + +@interface Preset : NSObject { + NSString *presetName; + + int fMuxer; + int fVideoCodec; + int fVideoBitRate; + NSString *fVideoCodecOptions; + + int fAudioCodec; + int fAudioBitRate; + int fAudioSampleRate; + + int fMaxWidth; + int fMaxHeight; + int fAnamorphic; +} + +- (id) initWithMuxer: (int) muxer + videoCodec: (int) videoCodec + videoBitRate: (int) videoBitRate + videoCodecOptions: (NSString *) videoCodecOptions + audioCodec: (int) audioCodec + audioBitrate: (int) audioBitrate + audioSampleRate: (int) audioSampleRate + maxWidth: (int) maxWidth + maxHeight: (int) maxHeight + anamorphic: (int) anamorphic; + +- (int) muxer; +- (int) videoCodec; +- (NSString *) videoCodecOptions; +- (int) videoBitRate; +- (int) AudioCodec; +- (int) maxWidth; +- (int) maxHeight; + +@end diff -Nru handbrake-0.9.9+dfsg/macosx/InstantHandBrake/Preset.m handbrake-0.9.9+ppa1/macosx/InstantHandBrake/Preset.m --- handbrake-0.9.9+dfsg/macosx/InstantHandBrake/Preset.m 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/InstantHandBrake/Preset.m 2008-01-30 12:28:55.000000000 +0000 @@ -0,0 +1,117 @@ +// +// Preset.h +// InstantHandBrake +// +// Created by Damiano Galassi on 15/01/08. +// This file is part of the HandBrake source code. +// Homepage: . +// It may be used under the terms of the GNU General Public License. +// +// + +#import "Preset.h" + + +@implementation Preset + +- (id) initWithMuxer: (int) muxer + videoCodec: (int) videoCodec + videoBitRate: (int) videoBitRate + videoCodecOptions: (NSString *) videoCodecOptions + audioCodec: (int) audioCodec + audioBitrate: (int) audioBitrate + audioSampleRate: (int) audioSampleRate + maxWidth: (int) maxWidth + maxHeight: (int) maxHeight + anamorphic: (int) anamorphic; +{ + if (self = [super init]) + { + fMuxer = muxer; + fVideoCodec = videoCodec; + fVideoBitRate = videoBitRate; + fVideoCodecOptions = videoCodecOptions; + fAudioCodec = audioCodec; + fAudioBitRate = audioBitrate; + fAudioSampleRate = audioSampleRate; + fMaxWidth = maxWidth; + fMaxHeight = maxHeight; + fAnamorphic = anamorphic; + } + return self; +} + +- (void) dealloc +{ + [fVideoCodecOptions release]; + [super dealloc]; +} + +- (id) initWithCoder:(NSCoder *) coder +{ + presetName = [[coder decodeObjectForKey:@"Name"] retain]; + fMuxer = [coder decodeIntForKey:@"Muxer"]; + fVideoCodec = [coder decodeIntForKey:@"VideoCodec"]; + fVideoBitRate = [coder decodeIntForKey:@"VideoBitRate"]; + fVideoCodecOptions = [[coder decodeObjectForKey:@"VideoCodecOptions"] retain]; + fAudioCodec = [coder decodeIntForKey:@"AudioCodec"]; + fAudioBitRate = [coder decodeIntForKey:@"AudioBitRate"]; + fAudioSampleRate = [coder decodeIntForKey:@"AudioSampleRate"]; + fMaxWidth = [coder decodeIntForKey:@"MaxWidth"]; + fMaxHeight = [coder decodeIntForKey:@"MaxHeight"]; + fAnamorphic = [coder decodeIntForKey:@"Anarmophic"]; + + return self; +} + +- (void) encodeWithCoder:(NSCoder *)encoder +{ + [encoder encodeObject:presetName forKey:@"Name"]; + [encoder encodeInt:fMuxer forKey:@"Muxer"]; + [encoder encodeInt:fVideoCodec forKey:@"VideoCodec"]; + [encoder encodeInt:fVideoBitRate forKey:@"VideoBitRate"]; + [encoder encodeObject:fVideoCodecOptions forKey:@"VideoCodecOptions"]; + [encoder encodeInt:fAudioCodec forKey:@"AudioCodec"]; + [encoder encodeInt:fAudioBitRate forKey:@"AudioBitRate"]; + [encoder encodeInt:fAudioSampleRate forKey:@"AudioSampleRate"]; + [encoder encodeInt:fMaxWidth forKey:@"MaxWidth"]; + [encoder encodeInt:fMaxHeight forKey:@"MaxHeight"]; + [encoder encodeInt:fAnamorphic forKey:@"Anarmophic"]; +} + +- (int) muxer +{ + return fMuxer; +} + +- (int) videoCodec; +{ + return fVideoCodec; +} + +- (NSString *) videoCodecOptions +{ + return fVideoCodecOptions; +} + +- (int) videoBitRate +{ + return fVideoBitRate; +} + +- (int) AudioCodec; +{ + return fAudioCodec; +} + +- (int) maxWidth; +{ + return fMaxWidth; +} + +- (int) maxHeight; +{ + return fMaxHeight; +} + +@end diff -Nru handbrake-0.9.9+dfsg/macosx/InstantHandBrake/WhiteBox.h handbrake-0.9.9+ppa1/macosx/InstantHandBrake/WhiteBox.h --- handbrake-0.9.9+dfsg/macosx/InstantHandBrake/WhiteBox.h 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/InstantHandBrake/WhiteBox.h 2008-01-30 12:28:55.000000000 +0000 @@ -0,0 +1,12 @@ +/* WhiteBox + + This file is part of the HandBrake source code. + Homepage: . + It may be used under the terms of the GNU General Public License. */ + +#import + +@interface WhiteBox : NSBox +{ +} +@end diff -Nru handbrake-0.9.9+dfsg/macosx/InstantHandBrake/WhiteBox.m handbrake-0.9.9+ppa1/macosx/InstantHandBrake/WhiteBox.m --- handbrake-0.9.9+dfsg/macosx/InstantHandBrake/WhiteBox.m 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/InstantHandBrake/WhiteBox.m 2008-01-30 12:28:55.000000000 +0000 @@ -0,0 +1,18 @@ +/* WhiteBox + + This file is part of the HandBrake source code. + Homepage: . + It may be used under the terms of the GNU General Public License. */ + +#import "WhiteBox.h" + +@implementation WhiteBox + +- (void) drawRect: (NSRect) rect +{ + [[NSColor whiteColor] set]; + [[NSBezierPath bezierPathWithRect: rect] fill]; + [super drawRect: rect]; +} + +@end diff -Nru handbrake-0.9.9+dfsg/macosx/main.mm handbrake-0.9.9+ppa1/macosx/main.mm --- handbrake-0.9.9+dfsg/macosx/main.mm 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/main.mm 2013-01-27 19:42:52.000000000 +0000 @@ -0,0 +1,72 @@ +/* $Id: main.mm,v 1.3 2005/11/25 15:04:35 titer Exp $ + + This file is part of the HandBrake source code. + Homepage: . + It may be used under the terms of the GNU General Public License. */ + +#include +#include +#include +#include + +#import "hb.h" + +void SigHandler( int signal ) +{ + [NSApp terminate: NULL]; +} + +/**************************************************************************** + * hb_error_handler + * + * Change this to display a dialog box - and maybe move it somewhere else, + * this is the only place I could find that looked like C :) +****************************************************************************/ +extern "C" { + void hb_error_handler( const char *errmsg ) + { + fprintf(stderr, "GUI ERROR dialog: %s\n", errmsg ); + } +} + +char * str_printf(const char *fmt, ...) +{ + /* Guess we need no more than 100 bytes. */ + int len; + va_list ap; + int size = 100; + char *tmp, *str = NULL; + + str = (char*)malloc(size); + while (1) + { + /* Try to print in the allocated space. */ + va_start(ap, fmt); + len = vsnprintf(str, size, fmt, ap); + va_end(ap); + + /* If that worked, return the string. */ + if (len > -1 && len < size) { + return str; + } + + /* Else try again with more space. */ + if (len > -1) /* glibc 2.1 */ + size = len+1; /* precisely what is needed */ + else /* glibc 2.0 */ + size *= 2; /* twice the old size */ + + tmp = (char*)realloc(str, size); + if (tmp == NULL) { + return str; + } + str = tmp; + } +} + +int main( int argc, const char ** argv ) +{ + signal( SIGINT, SigHandler ); + hb_register_error_handler(&hb_error_handler); + return NSApplicationMain( argc, argv ); +} diff -Nru handbrake-0.9.9+dfsg/macosx/module.defs handbrake-0.9.9+ppa1/macosx/module.defs --- handbrake-0.9.9+dfsg/macosx/module.defs 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/module.defs 2013-03-03 16:18:16.000000000 +0000 @@ -0,0 +1,63 @@ +$(eval $(call import.MODULE.defs,MACOSX,macosx)) +$(eval $(call import.GCC,MACOSX)) + +MACOSX.src/ = $(SRC/)macosx/ +MACOSX.build/ = $(BUILD/)macosx/ + +MACOSX.m4.in = $(wildcard $(MACOSX.src/)*.m4) +MACOSX.m4.out = $(MACOSX.m4.in:$(MACOSX.src/)%.m4=$(MACOSX.build/)%) + +############################################################################### + +BUILD.out += $(MACOSX.m4.out) +BUILD.out += $(MACOSX.m4.wc.out) + +############################################################################### + +MACOSX.project = -project $(MACOSX.src/)HandBrake.xcodeproj + +## configuration: must be one of { release, debug } +MACOSX.configuration = -configuration $(MACOSX.map.g.$(MACOSX.GCC.g)) + +## mapping from symbolic debug value to xcode configuration +MACOSX.map.g.none = release +MACOSX.map.g.min = debug +MACOSX.map.g.std = debug +MACOSX.map.g.max = debug + +ifeq (1,$(FEATURE.fdk_aac)) +MACOSX.extra_ldflags = OTHER_LDFLAGS='$(abspath $(BUILD))/contrib/lib/libfdk-aac.a' +endif + +## xcconfig: must be one of macosx/xcconfig/*.xcconfig +MACOSX.xcconfig = $(foreach x,$(XCODE.xcconfig),-xcconfig $(MACOSX.src/)xcconfig/$(x)) +MACOSX.sdk = $(foreach sdk,$(GCC.sysroot),-sdk $(sdk)) + +## launch a build thru xcode; which in turn will do a nested make against +## this build system with normal build rules enabled. +## +## $(1) = list of targets +## $(2) = list of goals to shunt thru xcodebuild->make +## + +MACOSX.XCODE = $(strip \ + $(XCODEBUILD.exe) \ + $(MACOSX.project) \ + $(foreach t,$(1),-target $t) \ + $(MACOSX.configuration) \ + $(MACOSX.xcconfig) \ + \ + SYMROOT='$(XCODE.symroot)' \ + CONFIGURATION_BUILD_DIR='$(XCODE.symroot)' \ + CONFIGURATION_TEMP_DIR='$(XCODE.symroot)' \ + \ + EXTERNAL_BUILD='$(abspath $(BUILD))' \ + EXTERNAL_CONF_ARGS='$(CONF.args)' \ + EXTERNAL_DRIVER='$(XCODE.driver)' \ + EXTERNAL_GOALS='$(3)' \ + EXTERNAL_JOBS='$(BUILD.jobs)' \ + EXTERNAL_VARS='$(-*-command-variables-*-)' \ + \ + $(MACOSX.extra_ldflags) \ + \ + $(2) ) diff -Nru handbrake-0.9.9+dfsg/macosx/module.rules handbrake-0.9.9+ppa1/macosx/module.rules --- handbrake-0.9.9+dfsg/macosx/module.rules 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/module.rules 2012-01-04 09:41:11.000000000 +0000 @@ -0,0 +1,16 @@ +$(eval $(call import.MODULE.rules,MACOSX)) + +macosx.build: $(MACOSX.m4.out) + +macosx.clean: + $(RM.exe) -f $(MACOSX.m4.out) + +$(MACOSX.m4.out): $(BUILD/)project/handbrake.m4 +$(MACOSX.m4.out): | $(dir $(MACOSX.m4.out)) +$(MACOSX.m4.out): $(MACOSX.build/)%: $(MACOSX.src/)%.m4 + $(M4.exe) -Iproject $< > $@ + +############################################################################### + +clean: macosx.clean +build: macosx.build diff -Nru handbrake-0.9.9+dfsg/macosx/module.xcodebuild handbrake-0.9.9+ppa1/macosx/module.xcodebuild --- handbrake-0.9.9+dfsg/macosx/module.xcodebuild 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/module.xcodebuild 2012-01-04 09:41:11.000000000 +0000 @@ -0,0 +1,27 @@ +## This file is processed only when shunting build through xcodebuild + +.PHONY: macosx.build macosx.clean macosx.install + +macosx.build: + $(call MACOSX.XCODE,HandBrakeCLI HandBrake,build) + +macosx.clean: + $(call MACOSX.XCODE,HandBrakeCLI HandBrake,clean) + +macosx.install: + $(call MACOSX.XCODE,HandBrakeCLI HandBrake,install) + +build: macosx.build +clean: macosx.clean +install: macosx.install +xclean: clean + +############################################################################### + +MACOSX.goals = $(filter-out build clean install,$(MAKECMDGOALS)) + +$(MACOSX.goals): __goals__ + @true + +__goals__: + $(call MACOSX.XCODE,external,build,$(MACOSX.goals)) diff -Nru handbrake-0.9.9+dfsg/macosx/PictureController.h handbrake-0.9.9+ppa1/macosx/PictureController.h --- handbrake-0.9.9+dfsg/macosx/PictureController.h 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/PictureController.h 2013-02-04 19:55:40.000000000 +0000 @@ -0,0 +1,235 @@ +/* $Id: PictureController.h,v 1.6 2005/04/14 20:40:05 titer Exp $ + + This file is part of the HandBrake source code. + Homepage: . + It may be used under the terms of the GNU General Public License. */ + +#import + +#include "hb.h" + +@class HBController; +@class PreviewController; + + + +//#define HB_NUM_HBLIB_PICTURES 20 // # of preview pictures libhb should generate + +@interface PictureController : NSWindowController +{ + hb_handle_t * fHandle; + hb_title_t * fTitle; + + HBController *fHBController; + PreviewController *fPreviewController; // reference to HBController + + IBOutlet NSWindow * fPictureWindow; + + IBOutlet NSTabView * fSizeFilterView; + IBOutlet NSTabViewItem * fSizeTabView; + IBOutlet NSTabViewItem * fFilterTabView; + + /* Picture Sizing */ + + NSMutableDictionary * fPicturePreviews; // NSImages, one for each preview libhb creates, created lazily + int fPicture; + + + IBOutlet NSBox * fPictureSizeBox; + IBOutlet NSBox * fPictureCropBox; + + IBOutlet NSTextField * fWidthLabel; + IBOutlet NSTextField * fWidthField; + IBOutlet NSStepper * fWidthStepper; + IBOutlet NSTextField * fHeightField; + IBOutlet NSStepper * fHeightStepper; + IBOutlet NSTextField * fRatioLabel; + IBOutlet NSTextField * fRatioLabel2; // shown for capuj + IBOutlet NSButton * fRatioCheck; + IBOutlet NSMatrix * fCropMatrix; + IBOutlet NSTextField * fCropTopField; + IBOutlet NSStepper * fCropTopStepper; + IBOutlet NSTextField * fCropBottomField; + IBOutlet NSStepper * fCropBottomStepper; + IBOutlet NSTextField * fCropLeftField; + IBOutlet NSStepper * fCropLeftStepper; + IBOutlet NSTextField * fCropRightField; + IBOutlet NSStepper * fCropRightStepper; + + IBOutlet NSTextField * fModulusLabel; + IBOutlet NSPopUpButton * fModulusPopUp; + /* linkers for capuj */ + IBOutlet NSBox * fStorageLinkBox; + IBOutlet NSSlider * fStorageLinkSlider; + IBOutlet NSTextField * fStorageLinkParLabel; + IBOutlet NSTextField * fStorageLinkDisplayLabel; + + IBOutlet NSSlider * fParLinkSlider; + IBOutlet NSTextField * fParLinkStorageLabel; + IBOutlet NSTextField * fParLinkDisplayLabel; + + IBOutlet NSSlider * fDisplayLinkSlider; + IBOutlet NSTextField * fDisplayLinkStorageLabel; + IBOutlet NSTextField * fDisplayLinkParLabel; + + + IBOutlet NSTextField * fDisplayWidthField; + IBOutlet NSTextField * fDisplayWidthLabel; + + IBOutlet NSTextField * fParWidthField; + IBOutlet NSTextField * fParHeightField; + IBOutlet NSTextField * fParWidthLabel; + IBOutlet NSTextField * fParHeightLabel; + + /* for now we setup some values to remember our pars and dars + * from scan + */ + float titleDarWidth; + float titleDarHeight; + + int titleParWidth; + int titleParHeight; + float dar; + IBOutlet NSButton * fResetParDarButton; + + IBOutlet NSPopUpButton * fAnamorphicPopUp; + IBOutlet NSTextField * fSizeInfoField; + + IBOutlet NSButton * fPreviewOpenButton; + IBOutlet NSButton * fPictureFiltersOpenButton; + + int MaxOutputWidth; + int MaxOutputHeight; + BOOL autoCrop; + + int output_width, output_height, output_par_width, output_par_height; + int display_width; + + int modulus; + + /* used to track the previous state of the keep aspect + ratio checkbox when turning anamorphic on, so it can be + returned to the previous state when anamorphic is turned + off */ + BOOL keepAspectRatioPreviousState; + + + /* Video Filters */ + + IBOutlet NSBox * fPictureFilterBox; + + IBOutlet NSBox * fDetelecineBox; + IBOutlet NSPopUpButton * fDetelecinePopUp; + IBOutlet NSTextField * fDetelecineField; + + IBOutlet NSBox * fDecombDeinterlaceBox; + IBOutlet NSSlider * fDecombDeinterlaceSlider; + + IBOutlet NSBox * fDecombBox; + IBOutlet NSPopUpButton * fDecombPopUp; + IBOutlet NSTextField * fDecombField; + + IBOutlet NSBox * fDeinterlaceBox; + IBOutlet NSPopUpButton * fDeinterlacePopUp; + IBOutlet NSTextField * fDeinterlaceField; + + IBOutlet NSBox * fDenoiseBox; + IBOutlet NSPopUpButton * fDenoisePopUp; + IBOutlet NSTextField * fDenoiseField; + + + IBOutlet NSBox * fDeblockBox; // also holds the grayscale box + IBOutlet NSButton * fDeblockCheck; + IBOutlet NSTextField * fDeblockField; + IBOutlet NSSlider * fDeblockSlider; + + IBOutlet NSButton * fGrayscaleCheck; + + IBOutlet NSTextField * fInfoField; + + + + struct { + int detelecine; + int deinterlace; + int decomb; + int usedecomb; + int denoise; + int deblock; + int grayscale; + } fPictureFilterSettings; + +} +- (id)init; + +- (void) SetHandle: (hb_handle_t *) handle; +- (void) SetTitle: (hb_title_t *) title; +- (void)setHBController: (HBController *)controller; +- (IBAction) showPictureWindow: (id)sender; +- (void)tabView:(NSTabView *)tabView didSelectTabViewItem:(NSTabViewItem *)tabViewItem; +- (IBAction) resizeInspectorForTab: (id)sender; +- (IBAction) showPreviewWindow: (id)sender; + +- (void) enablePreviewHudControls; +- (void) disablePreviewHudControls; + +- (IBAction) adjustSizingDisplay: (id) sender; + + +- (IBAction) SettingsChanged: (id) sender; + +- (NSString*) getPictureSizeInfoString; +- (void)reloadStillPreview; + +- (BOOL) autoCrop; +- (void) setAutoCrop: (BOOL) setting; + +- (IBAction)showPreviewPanel: (id)sender forTitle: (hb_title_t *)title; +- (IBAction) storageLinkChanged: (id) sender; +- (IBAction) parLinkChanged: (id) sender; +- (IBAction) displayLinkChanged: (id) sender; + +- (void) setToWindowedMode; + +/* Filter Actions */ +- (void) setInitialPictureFilters; +- (IBAction) FilterSettingsChanged: (id) sender; +- (IBAction) adjustFilterDisplay: (id) sender; +- (IBAction) modeDecombDeinterlaceSliderChanged: (id) sender; +- (IBAction) deblockSliderChanged: (id) sender; + +- (void) decombDeinterlacePreviewImage; + +- (int) detelecine; +- (NSString*) detelecineCustomString; +- (void) setDetelecine: (int) setting; +- (void) setDetelecineCustomString: (NSString*) string; + +- (int) useDecomb; +- (void) setUseDecomb: (int) setting; + +- (int) decomb; +- (NSString*) decombCustomString; +- (void) setDecomb: (int) setting; +- (void) setDecombCustomString: (NSString*) string; + +- (int) deinterlace; +- (NSString*) deinterlaceCustomString; +- (void) setDeinterlace: (int) setting; +- (void) setDeinterlaceCustomString: (NSString*) string; + +- (int) denoise; +- (NSString*) denoiseCustomString; +- (void) setDenoise: (int) setting; +- (void) setDenoiseCustomString: (NSString*) string; + +- (int) deblock; +- (void) setDeblock: (int) setting; + +- (int) grayscale; +- (void) setGrayscale: (int) setting; + + + +@end + diff -Nru handbrake-0.9.9+dfsg/macosx/PictureController.m handbrake-0.9.9+ppa1/macosx/PictureController.m --- handbrake-0.9.9+dfsg/macosx/PictureController.m 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/PictureController.m 2013-03-18 23:08:43.000000000 +0000 @@ -0,0 +1,1400 @@ +/* $Id: PictureController.mm,v 1.11 2005/08/01 15:10:44 titer Exp $ + + This file is part of the HandBrake source code. + Homepage: . + It may be used under the terms of the GNU General Public License. */ + +#import "PictureController.h" +#import "Controller.h" +#import "HBPreviewController.h" + + + +@implementation PictureController + +- (id)init +{ + if (self = [super initWithWindowNibName:@"PictureSettings"]) + { + // NSWindowController likes to lazily load its window. However since + // this controller tries to set all sorts of outlets before the window + // is displayed, we need it to load immediately. The correct way to do + // this, according to the documentation, is simply to invoke the window + // getter once. + // + // If/when we switch a lot of this stuff to bindings, this can probably + // go away. + [self window]; + + fPreviewController = [[PreviewController alloc] init]; + } + return self; +} + +//------------------------------------------------------------------------------------ +// Displays and brings the picture window to the front +//------------------------------------------------------------------------------------ +- (IBAction) showPictureWindow: (id)sender +{ + + + if ([[self window] isVisible]) + { + [[self window] close]; + } + else + { + [self showWindow:sender]; + [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"PictureSizeWindowIsOpen"]; + [self setToWindowedMode]; + } + + [self adjustFilterDisplay:nil]; + [self adjustSizingDisplay:nil]; +} + + + +/* this method is used to detect clicking on a tab in fSizeFilterView */ +- (void)tabView:(NSTabView *)tabView didSelectTabViewItem:(NSTabViewItem *)tabViewItem +{ + +[self resizeInspectorForTab:nil]; + +} + +#pragma mark - + +/* resizeInspectorForTab is called at launch, and each time either the + * Size or Filters tab is clicked. Size gives a horizontally oriented + * inspector and Filters is a vertically aligned inspector. + */ +- (IBAction) resizeInspectorForTab: (id)sender +{ + NSRect frame = [[self window] frame]; + NSSize screenSize = [[[self window] screen] frame].size; + NSPoint screenOrigin = [[[self window] screen] frame].origin; + + /* We base our inspector size/layout on which tab is active for fSizeFilterView */ + /* we are 1 which is Filters*/ + if ([fSizeFilterView indexOfTabViewItem: [fSizeFilterView selectedTabViewItem]] == 1) + { + frame.size.width = 314; + /* we glean the height from the size of the boxes plus the extra window space + * needed for non boxed display + */ + frame.size.height = 110.0 + [fDetelecineBox frame].size.height + [fDecombDeinterlaceBox frame].size.height + [fDenoiseBox frame].size.height + [fDeblockBox frame].size.height; + /* Hide the size readout at the bottom as the vertical inspector is not wide enough */ + [fSizeInfoField setHidden:YES]; + } + else // we are Tab index 0 which is size + { + frame.size.width = 50.0 + [fPictureSizeBox frame].size.width + [fPictureCropBox frame].size.width; + frame.size.height = [fPictureSizeBox frame].size.height + 85; + /* hide the size summary field at the bottom */ + [fSizeInfoField setHidden:NO]; + } + /* get delta's for the change in window size */ + CGFloat deltaX = frame.size.width - [[self window] frame].size.width; + CGFloat deltaY = frame.size.height - [[self window] frame].size.height; + + /* Check to see if we have changed the height from current */ + //if (frame.size.height != [[self window] frame].size.height) + //{ + /* change the inspector origin via the deltaY */ + frame.origin.y -= deltaY; + /* keep the inspector centered so the tabs stay in place */ + frame.origin.x -= deltaX / 2.0; + //} + + /* we make sure we are not horizontally off of our screen. + * this would be the case if we are on the vertical filter tab + * and we hit the size tab and the inspector grows horizontally + * off the screen to the right + */ + if ((frame.origin.x + frame.size.width) > (screenOrigin.x + screenSize.width)) + { + /* the right side of the preview is off the screen, so shift to the left */ + frame.origin.x = (screenOrigin.x + screenSize.width) - frame.size.width; + } + + [[self window] setFrame:frame display:YES animate:YES]; +} + +- (IBAction) adjustSizingDisplay: (id) sender +{ + NSSize pictureSizingBoxSize = [fPictureSizeBox frame].size; + + NSPoint fPictureSizeBoxOrigin = [fPictureSizeBox frame].origin; + NSSize pictureCropBoxSize = [fPictureCropBox frame].size; + NSPoint fPictureCropBoxOrigin = [fPictureCropBox frame].origin; + + if ([fAnamorphicPopUp indexOfSelectedItem] == 3) // custom / power user jamboree + { + pictureSizingBoxSize.width = 530; + + /* Set visibility of capuj widgets */ + [fParWidthField setHidden: NO]; + [fParHeightField setHidden: NO]; + [fParWidthLabel setHidden: NO]; + [fParHeightLabel setHidden: NO]; + [fDisplayWidthField setHidden: NO]; + [fDisplayWidthLabel setHidden: NO]; + /* adjust/move keep ar checkbox */ + [fRatioLabel setHidden: YES]; + [fRatioLabel2 setHidden: NO]; + + /* Optionally swith the Storage and Display width positions*/ + /* + NSPoint fWidthLabelOrigin = [fWidthLabel frame].origin; + NSPoint fWidthFieldOrigin = [fWidthField frame].origin; + NSPoint fWidthStepperOrigin = [fWidthStepper frame].origin; + fWidthFieldOrigin.x = [fRatioLabel2 frame].origin.x + [fRatioLabel2 frame].size.width + 4; + [fWidthField setFrameOrigin:fWidthFieldOrigin]; + + fWidthStepperOrigin.x = [fWidthField frame].origin.x + [fWidthField frame].size.width + 4; + [fWidthStepper setFrameOrigin:fWidthStepperOrigin]; + + fWidthLabelOrigin.x = [fWidthField frame].origin.x - [fWidthLabel frame].size.width - 4; + [fWidthLabel setFrameOrigin:fWidthLabelOrigin]; + [fWidthLabel setStringValue:@"Storage Width:"]; + */ + + /* set the origin for fRatioCheck so origin.y == fRatioLabel2 + * and origin.x == fDisplayWidthField + */ + NSPoint fRatioCheckOrigin = [fRatioCheck frame].origin; + fRatioCheckOrigin.y = [fRatioLabel2 frame].origin.y - 2; + fRatioCheckOrigin.x = [fRatioLabel2 frame].origin.x + [fRatioLabel2 frame].size.width + 4; + [fRatioCheck setFrameOrigin:fRatioCheckOrigin]; + + } + else + { + pictureSizingBoxSize.width = 200; + + /* Set visibility of capuj widgets */ + [fParWidthField setHidden: YES]; + [fParHeightField setHidden: YES]; + [fParWidthLabel setHidden: YES]; + [fParHeightLabel setHidden: YES]; + [fDisplayWidthField setHidden: YES]; + [fDisplayWidthLabel setHidden: YES]; + /* adjust/move keep ar checkbox */ + [fRatioLabel setHidden: NO]; + [fRatioLabel2 setHidden: YES]; + + /* Optionally swith the Storage and Display width positions*/ + + /* + NSPoint fWidthLabelOrigin = [fWidthLabel frame].origin; + NSPoint fWidthFieldOrigin = [fWidthField frame].origin; + NSPoint fWidthStepperOrigin = [fWidthStepper frame].origin; + + fWidthFieldOrigin.x = [fHeightField frame].origin.x; + [fWidthField setFrameOrigin:fWidthFieldOrigin]; + + fWidthStepperOrigin.x = [fHeightStepper frame].origin.x; + [fWidthStepper setFrameOrigin:fWidthStepperOrigin]; + + fWidthLabelOrigin.x = [fWidthField frame].origin.x - [fWidthLabel frame].size.width -4; + [fWidthLabel setFrameOrigin:fWidthLabelOrigin]; + [fWidthLabel setStringValue:@"Width:"]; + */ + + + /* set the origin for fRatioCheck so origin.y == fRatioLabel + * and origin.x == fWidthStepper + */ + NSPoint fRatioCheckOrigin = [fRatioCheck frame].origin; + fRatioCheckOrigin.y = [fRatioLabel frame].origin.y - 2; + fRatioCheckOrigin.x = [fWidthStepper frame].origin.x - 2; + [fRatioCheck setFrameOrigin:fRatioCheckOrigin]; + + } + + /* Check to see if we have changed the size from current */ + if (pictureSizingBoxSize.height != [fPictureSizeBox frame].size.height || pictureSizingBoxSize.width != [fPictureSizeBox frame].size.width) + { + /* Get our delta for the change in picture size box height */ + CGFloat deltaYSizeBoxShift = pictureSizingBoxSize.height - [fPictureSizeBox frame].size.height; + fPictureSizeBoxOrigin.y -= deltaYSizeBoxShift; + /* Get our delta for the change in picture size box width */ + CGFloat deltaXSizeBoxShift = pictureSizingBoxSize.width - [fPictureSizeBox frame].size.width; + //fPictureSizeBoxOrigin.x += deltaXSizeBoxShift; + /* set our new Picture size box size */ + [fPictureSizeBox setFrameSize:pictureSizingBoxSize]; + [fPictureSizeBox setFrameOrigin:fPictureSizeBoxOrigin]; + + pictureCropBoxSize.height += deltaYSizeBoxShift; + fPictureCropBoxOrigin.y -= deltaYSizeBoxShift; + fPictureCropBoxOrigin.x += deltaXSizeBoxShift; + + [fPictureCropBox setFrameSize:pictureCropBoxSize]; + [[fPictureCropBox animator] setFrameOrigin:fPictureCropBoxOrigin]; + } + + + /* now we call to resize the entire inspector window */ + [self resizeInspectorForTab:nil]; +} + +- (IBAction) adjustFilterDisplay: (id) sender +{ + + NSBox * filterBox = nil; + NSTextField * filterField; + if (sender == fDetelecinePopUp) + { + filterBox = fDetelecineBox; + filterField = fDetelecineField; + } + + if (sender == fDecombDeinterlaceSlider) + { + if ([fDecombDeinterlaceSlider floatValue] == 0.0) + { + filterBox = fDecombBox; + filterField = fDecombField; + } + else + { + filterBox = fDeinterlaceBox; + filterField = fDeinterlaceField; + } + } + + if (sender == fDecombPopUp) + { + filterBox = fDecombBox; + filterField = fDecombField; + } + if (sender == fDeinterlacePopUp) + { + filterBox = fDeinterlaceBox; + filterField = fDeinterlaceField; + } + + if (sender == fDenoisePopUp) + { + filterBox = fDenoiseBox; + filterField = fDenoiseField; + } + + NSSize currentSize = [filterBox frame].size; + NSRect boxFrame = [filterBox frame]; + + if ([sender titleOfSelectedItem] == @"Custom") + { + + currentSize.height = 60; + + } + else + { + currentSize.height = 30; + + } + /* Check to see if we have changed the size from current */ + if (currentSize.height != [filterBox frame].size.height) + { + /* We are changing the size of the box, so recalc the origin */ + NSPoint boxOrigin = [filterBox frame].origin; + /* We get the deltaY here for how much we are expanding/contracting the box vertically */ + CGFloat deltaYBoxShift = currentSize.height - [filterBox frame].size.height; + boxOrigin.y -= deltaYBoxShift; + + boxFrame.size.height = currentSize.height; + boxFrame.origin.y = boxOrigin.y; + [filterBox setFrame:boxFrame]; + + /* go ahead and resize the box */ + //[[filterBox animator] setFrameSize:currentSize]; + //[[filterBox animator] setFrameOrigin:origin]; + + + if (filterBox == fDecombBox || filterBox == fDeinterlaceBox) + { + /* fDecombDeinterlaceBox*/ + NSSize decombDeinterlaceBoxSize = [fDecombDeinterlaceBox frame].size; + NSPoint decombDeinterlaceBoxOrigin = [fDecombDeinterlaceBox frame].origin; + + //decombDeinterlaceBoxSize.height = [filterBox frame].size.height + 50; + if (sender == fDecombDeinterlaceSlider) + { + [fHBController writeToActivityLog: "Sender is deinterlace decomb slider"]; + } + + if ([fDeinterlaceBox isHidden] == YES) + { + decombDeinterlaceBoxSize.height = [fDecombBox frame].size.height + 50; + [fHBController writeToActivityLog: "Resize by Decomb box"]; + } + else + { + decombDeinterlaceBoxSize.height = [fDeinterlaceBox frame].size.height + 50; + [fHBController writeToActivityLog: "Resize by Deinterlace box"]; + } + /* get delta's for the change in window size */ + + CGFloat deltaYdecombDeinterlace = decombDeinterlaceBoxSize.height - [fDecombDeinterlaceBox frame].size.height; + + deltaYBoxShift = deltaYdecombDeinterlace; + + decombDeinterlaceBoxOrigin.y -= deltaYdecombDeinterlace; + + [fDecombDeinterlaceBox setFrameSize:decombDeinterlaceBoxSize]; + [fDecombDeinterlaceBox setFrameOrigin:decombDeinterlaceBoxOrigin]; + } + + /* now we must reset the origin of each box below the adjusted box*/ + NSPoint decombDeintOrigin = [fDecombDeinterlaceBox frame].origin; + NSPoint denoiseOrigin = [fDenoiseBox frame].origin; + NSPoint deblockOrigin = [fDeblockBox frame].origin; + if (sender == fDetelecinePopUp) + { + decombDeintOrigin.y -= deltaYBoxShift; + [fDecombDeinterlaceBox setFrameOrigin:decombDeintOrigin]; + + denoiseOrigin.y -= deltaYBoxShift; + [fDenoiseBox setFrameOrigin:denoiseOrigin]; + + deblockOrigin.y -= deltaYBoxShift; + [fDeblockBox setFrameOrigin:deblockOrigin]; + } + if (sender == fDecombPopUp || sender == fDeinterlacePopUp) + { + denoiseOrigin.y -= deltaYBoxShift; + [fDenoiseBox setFrameOrigin:denoiseOrigin]; + + deblockOrigin.y -= deltaYBoxShift; + [fDeblockBox setFrameOrigin:deblockOrigin]; + } + + if (sender == fDenoisePopUp) + { + deblockOrigin.y -= deltaYBoxShift; + [fDeblockBox setFrameOrigin:deblockOrigin]; + } + + /* now we call to resize the entire inspector window */ + [self resizeInspectorForTab:nil]; + } + +} + + +#pragma mark - + + + +- (IBAction) showPreviewWindow: (id)sender +{ + [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"PreviewWindowIsOpen"]; + [fPreviewController showWindow:sender]; +} + +- (void) enablePreviewHudControls +{ + [fPreviewController enableHudControls]; +} + +- (void) disablePreviewHudControls +{ + [fPreviewController disableHudControls]; +} + +- (void) setToWindowedMode +{ + /* Set the window back to Floating Window mode + * This will put the window always on top, but + * since we have Hide on Deactivate set in our + * xib, if other apps are put in focus we will + * hide properly to stay out of the way + */ + [[self window] setLevel:NSFloatingWindowLevel]; +} + +- (void)setHBController: (HBController *)controller +{ + fHBController = controller; + [fPreviewController setHBController: controller]; + +} + +- (void)awakeFromNib +{ + [fPictureWindow setDelegate:self]; + if( ![[self window] setFrameUsingName:@"PictureSizing"] ) + [[self window] center]; + [self setWindowFrameAutosaveName:@"PictureSizing"]; + [[self window] setExcludedFromWindowsMenu:YES]; + + [self setInitialPictureFilters]; + + /* Setup our layers for core animation */ + [fSizeFilterView setWantsLayer:YES]; + [fPictureSizeBox setWantsLayer:YES]; + [fPictureCropBox setWantsLayer:YES]; + +} + + +- (void)windowWillClose:(NSNotification *)aNotification +{ +[[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"PictureSizeWindowIsOpen"]; +} + +- (BOOL)windowShouldClose:(id)fPictureWindow +{ + return YES; +} + +- (void) dealloc +{ + [fPreviewController release]; + [super dealloc]; +} + +- (void) SetHandle: (hb_handle_t *) handle +{ + fHandle = handle; + + [fPreviewController SetHandle: fHandle]; +} + +- (void) SetTitle: (hb_title_t *) title +{ + hb_job_t * job = title->job; + + fTitle = title; + + [fWidthStepper setValueWraps: NO]; + [fWidthStepper setIncrement: 16]; + [fWidthStepper setMinValue: 64]; + [fHeightStepper setValueWraps: NO]; + [fHeightStepper setIncrement: 16]; + [fHeightStepper setMinValue: 64]; + + [fCropTopStepper setIncrement: 2]; + [fCropTopStepper setMinValue: 0]; + [fCropBottomStepper setIncrement: 2]; + [fCropBottomStepper setMinValue: 0]; + [fCropLeftStepper setIncrement: 2]; + [fCropLeftStepper setMinValue: 0]; + [fCropRightStepper setIncrement: 2]; + [fCropRightStepper setMinValue: 0]; + + [fWidthStepper setMaxValue: title->width]; + [fWidthStepper setIntValue: job->width]; + [fWidthField setIntValue: job->width]; + [fHeightStepper setMaxValue: title->height]; + [fHeightStepper setIntValue: job->height]; + [fHeightField setIntValue: job->height]; + [fRatioCheck setState: job->keep_ratio ? NSOnState : NSOffState]; + [fCropTopStepper setMaxValue: title->height/2-2]; + [fCropBottomStepper setMaxValue: title->height/2-2]; + [fCropLeftStepper setMaxValue: title->width/2-2]; + [fCropRightStepper setMaxValue: title->width/2-2]; + + /* Populate the Anamorphic NSPopUp button here */ + [fAnamorphicPopUp removeAllItems]; + [fAnamorphicPopUp addItemWithTitle: @"None"]; + [fAnamorphicPopUp addItemWithTitle: @"Strict"]; + [fAnamorphicPopUp addItemWithTitle: @"Loose"]; + [fAnamorphicPopUp addItemWithTitle: @"Custom"]; + [fAnamorphicPopUp selectItemAtIndex: job->anamorphic.mode]; + + //[self adjustSizingDisplay:nil]; + + /* populate the modulus popup here */ + [fModulusPopUp removeAllItems]; + [fModulusPopUp addItemWithTitle: @"16"]; + [fModulusPopUp addItemWithTitle: @"8"]; + [fModulusPopUp addItemWithTitle: @"4"]; + [fModulusPopUp addItemWithTitle: @"2"]; + if (job->modulus) + { + [fModulusPopUp selectItemWithTitle: [NSString stringWithFormat:@"%d",job->modulus]]; + } + else + { + [fModulusPopUp selectItemAtIndex: 0]; + } + + + /* We initially set the previous state of keep ar to on */ + keepAspectRatioPreviousState = 1; + if (!autoCrop) + { + [fCropMatrix selectCellAtRow: 1 column:0]; + /* If auto, lets set the crop steppers according to current job->crop values */ + [fCropTopStepper setIntValue: job->crop[0]]; + [fCropTopField setIntValue: job->crop[0]]; + [fCropBottomStepper setIntValue: job->crop[1]]; + [fCropBottomField setIntValue: job->crop[1]]; + [fCropLeftStepper setIntValue: job->crop[2]]; + [fCropLeftField setIntValue: job->crop[2]]; + [fCropRightStepper setIntValue: job->crop[3]]; + [fCropRightField setIntValue: job->crop[3]]; + } + else + { + [fCropMatrix selectCellAtRow: 0 column:0]; + } + + /* Set filters widgets according to the filters struct */ + [fDetelecinePopUp selectItemAtIndex:fPictureFilterSettings.detelecine]; + [fDecombPopUp selectItemAtIndex:fPictureFilterSettings.decomb]; + [fDeinterlacePopUp selectItemAtIndex: fPictureFilterSettings.deinterlace]; + [fDenoisePopUp selectItemAtIndex: fPictureFilterSettings.denoise]; + [fDeblockSlider setFloatValue:fPictureFilterSettings.deblock]; + [fGrayscaleCheck setState:fPictureFilterSettings.grayscale]; + + [self deblockSliderChanged: nil]; + + fPicture = 0; + MaxOutputWidth = title->width - job->crop[2] - job->crop[3]; + MaxOutputHeight = title->height - job->crop[0] - job->crop[1]; + + titleDarWidth = job->anamorphic.dar_width; + titleDarHeight = job->anamorphic.dar_height; + + titleParWidth = job->anamorphic.par_width; + titleParHeight = job->anamorphic.par_height; + + [self SettingsChanged:nil]; +} + +- (IBAction) storageLinkChanged: (id) sender +{ + /* since we have a tickless slider, make sure we are at 0.0 or 1.0 */ + if ([fStorageLinkSlider floatValue] < 0.50) + { + [fStorageLinkSlider setFloatValue:0.0]; + /* set slider labels to reflect choice */ + [fStorageLinkParLabel setEnabled:YES]; + [fStorageLinkDisplayLabel setEnabled:NO]; + + } + else + { + [fStorageLinkSlider setFloatValue:1.0]; + /* set slider labels to reflect choice */ + [fStorageLinkParLabel setEnabled:NO]; + [fStorageLinkDisplayLabel setEnabled:YES]; + } + +} + +- (IBAction) parLinkChanged: (id) sender +{ + /* since we have a tickless slider, make sure we are at 0.0 or 1.0 */ + if ([fParLinkSlider floatValue] < 0.50) + { + [fParLinkSlider setFloatValue:0.0]; + /* set slider labels to reflect choice */ + [fParLinkStorageLabel setEnabled:YES]; + [fParLinkDisplayLabel setEnabled:NO]; + } + else + { + [fParLinkSlider setFloatValue:1.0]; + /* set slider labels to reflect choice */ + [fParLinkStorageLabel setEnabled:NO]; + [fParLinkDisplayLabel setEnabled:YES]; + } + +} + +- (IBAction) displayLinkChanged: (id) sender +{ + /* since we have a tickless slider, make sure we are at 0.0 or 1.0 */ + if ([fDisplayLinkSlider floatValue] < 0.50) + { + [fDisplayLinkSlider setFloatValue:0.0]; + /* set slider labels to reflect choice */ + [fDisplayLinkStorageLabel setEnabled:YES]; + [fDisplayLinkParLabel setEnabled:NO]; + } + else + { + [fDisplayLinkSlider setFloatValue:1.0]; + /* set slider labels to reflect choice */ + [fDisplayLinkStorageLabel setEnabled:NO]; + [fDisplayLinkParLabel setEnabled:YES]; + } + +} + +- (IBAction) SettingsChanged: (id) sender +{ + hb_job_t * job = fTitle->job; + + /* if we are anything but strict anamorphic */ + if ([fAnamorphicPopUp indexOfSelectedItem] != 1) + { + [fModulusLabel setHidden:NO]; + [fModulusPopUp setHidden:NO]; + if (sender == fModulusPopUp) + { + /* do a dry run with hb_fix aspect to get new modulus */ + job->modulus = [[fModulusPopUp titleOfSelectedItem] intValue]; + job->keep_ratio = 1; + hb_fix_aspect( job, HB_KEEP_WIDTH ); + if( job->height > fTitle->height ) + { + job->height = fTitle->height; + hb_fix_aspect( job, HB_KEEP_HEIGHT ); + } + [fWidthStepper setIntValue: job->width]; + [fWidthField setIntValue: job->width]; + if( [fAnamorphicPopUp indexOfSelectedItem] != 2) // if we are not loose or custom + { + [fHeightStepper setIntValue: job->height]; + [fHeightField setIntValue: job->height]; + } + } + } + else + { + /* we are strict so hide the mod popup since libhb uses mod 2 for strict anamorphic*/ + [fModulusLabel setHidden:YES]; + [fModulusPopUp setHidden:YES]; + } + + job->modulus = [[fModulusPopUp titleOfSelectedItem] intValue]; + + [fWidthStepper setIncrement: job->modulus]; + [fHeightStepper setIncrement: job->modulus]; + + /* Since custom anamorphic allows for a height setting > fTitle->height + * check to make sure it is returned to fTitle->height for all other modes + */ + [fHeightStepper setMaxValue: fTitle->height]; + + autoCrop = ( [fCropMatrix selectedRow] == 0 ); + [fCropTopStepper setEnabled: !autoCrop]; + [fCropBottomStepper setEnabled: !autoCrop]; + [fCropLeftStepper setEnabled: !autoCrop]; + [fCropRightStepper setEnabled: !autoCrop]; + + if( autoCrop ) + { + memcpy( job->crop, fTitle->crop, 4 * sizeof( int ) ); + } + else + { + job->crop[0] = [fCropTopStepper intValue]; + job->crop[1] = [fCropBottomStepper intValue]; + job->crop[2] = [fCropLeftStepper intValue]; + job->crop[3] = [fCropRightStepper intValue]; + } + + [fRatioCheck setEnabled: YES]; + + + [fParWidthField setEnabled: NO]; + [fParHeightField setEnabled: NO]; + [fDisplayWidthField setEnabled: NO]; + + /* If we are not custom anamorphic, make sure we retain the orginal par */ + if( [fAnamorphicPopUp indexOfSelectedItem] != 3 ) + { + job->anamorphic.par_width = titleParWidth; + job->anamorphic.par_height = titleParHeight; + [fRatioLabel setHidden: NO]; + } + + if( [fAnamorphicPopUp indexOfSelectedItem] > 0 ) + { + if ([fAnamorphicPopUp indexOfSelectedItem] == 1) // strict + { + [fWidthStepper setIntValue: fTitle->width-fTitle->job->crop[2]-fTitle->job->crop[3]]; + [fWidthField setIntValue: fTitle->width-fTitle->job->crop[2]-fTitle->job->crop[3]]; + + /* This will show correct anamorphic height values, but + show distorted preview picture ratio */ + [fHeightStepper setIntValue: fTitle->height-fTitle->job->crop[0]-fTitle->job->crop[1]]; + [fHeightField setIntValue: fTitle->height-fTitle->job->crop[0]-fTitle->job->crop[1]]; + job->width = [fWidthStepper intValue]; + job->height = [fHeightStepper intValue]; + + job->anamorphic.mode = 1; + [fWidthStepper setEnabled: NO]; + [fWidthField setEnabled: NO]; + [fHeightStepper setEnabled: NO]; + [fHeightField setEnabled: NO]; + [fRatioCheck setEnabled: NO]; + } + else if ([fAnamorphicPopUp indexOfSelectedItem] == 2) // Loose anamorphic + { + job->anamorphic.mode = 2; + [fWidthStepper setEnabled: YES]; + [fWidthField setEnabled: YES]; + [fRatioCheck setEnabled: NO]; + [fHeightStepper setEnabled: NO]; + [fHeightField setEnabled: NO]; + /* We set job->width and call hb_set_anamorphic_size in libhb to do a "dry run" to get + * the values to be used by libhb for loose anamorphic + */ + /* if the sender is the anamorphic popup, then we know that loose anamorphic has just + * been turned on, so snap the width to full width for the source. + */ + if (sender == fAnamorphicPopUp) + { + [fWidthStepper setIntValue: fTitle->width-fTitle->job->crop[2]-fTitle->job->crop[3]]; + [fWidthField setIntValue: fTitle->width-fTitle->job->crop[2]-fTitle->job->crop[3]]; + } + job->width = [fWidthStepper intValue]; + hb_set_anamorphic_size(job, &output_width, &output_height, &output_par_width, &output_par_height); + [fHeightStepper setIntValue: output_height]; + [fHeightField setIntValue: output_height]; + job->height = [fHeightStepper intValue]; + + } + else if ([fAnamorphicPopUp indexOfSelectedItem] == 3) // custom / power user jamboree + { + +#pragma mark - STARTCapuj + + job->anamorphic.mode = 3; + + /* Set the status of our custom ana only widgets accordingly */ + [fModulusPopUp setEnabled:YES]; + + [fWidthStepper setEnabled: YES]; + [fWidthField setEnabled: YES]; + + [fHeightStepper setEnabled: YES]; + /* for capuj the storage field is immaterial */ + [fHeightField setEnabled: YES]; + + [fRatioCheck setEnabled: YES]; + if (sender == fRatioCheck) + { + if ([fRatioCheck state] == NSOnState) + { + [fParWidthField setEnabled: NO]; + [fParHeightField setEnabled: NO]; + } + else + { + [fParWidthField setEnabled: YES]; + [fParHeightField setEnabled: YES]; + } + } + + [fParWidthField setEnabled: YES]; + [fParHeightField setEnabled: YES]; + + [fDisplayWidthField setEnabled: YES]; + + + /* If we are coming into custom anamorphic we reset the par to original + * which gives us a way back if things get hosed up. + */ + + if (sender == fAnamorphicPopUp) + { + /* When entering custom anamorphic, we start with keep ar on */ + [fRatioCheck setState: NSOnState]; + /* + KEEPING ASPECT RATIO + Disable editing: PIXEL WIDTH, PIXEL HEIGHT + */ + [fParWidthField setEnabled: NO]; + [fParHeightField setEnabled: NO]; + + job->width = [fWidthStepper intValue]; + job->height = [fHeightStepper intValue]; + + /* make sure our par is set back to original */ + job->anamorphic.par_width = titleParWidth; + job->anamorphic.par_height = titleParHeight; + + [fParWidthField setIntValue: titleParWidth]; + [fParHeightField setIntValue: titleParHeight]; + + /* modify our par dims from our storage dims */ + hb_set_anamorphic_size(job, &output_width, &output_height, &output_par_width, &output_par_height); + float par_display_width = (float)output_width * (float)output_par_width / (float)output_par_height; + + /* go ahead and mod the display dims */ + [fDisplayWidthField setStringValue: [NSString stringWithFormat:@"%.2f", par_display_width]]; + + job->anamorphic.dar_width = [fDisplayWidthField floatValue]; + job->anamorphic.dar_height = (float)[fHeightStepper intValue]; + + /* Set our dar here assuming we are just coming into capuj mode */ + dar = [fDisplayWidthField floatValue] / (float)[fHeightField intValue]; + + } + + /* For capuj we disable these fields if we are keeping the dispay aspect */ + if ([fRatioCheck state] == NSOnState) + { + /* + KEEPING ASPECT RATIO + DAR = DISPLAY WIDTH / DISPLAY HEIGHT (cache after every modification) */ + /*Disable editing: PIXEL WIDTH, PIXEL HEIGHT */ + + [fParWidthField setEnabled: NO]; + [fParHeightField setEnabled: NO]; + + /* Changing DISPLAY WIDTH: */ + if (sender == fDisplayWidthField) + { + job->anamorphic.dar_width = [fDisplayWidthField floatValue]; + /* Changes HEIGHT to keep DAR */ + /* calculate the height to retain the dar */ + int raw_calulated_height = (int)((int)[fDisplayWidthField floatValue] / dar); + /* now use the modulus to go lower if there is a remainder */ + /* Note to me, raw_calulated_height % [[fModulusPopUp titleOfSelectedItem] intValue] + * gives me the remainder we are not mod (whatever our modulus is) subtract that from + * the actual calculated value derived from the dar to round down to the nearest mod value. + * This should be desireable over rounding up to the next mod value + */ + int modulus_height = raw_calulated_height - (raw_calulated_height % [[fModulusPopUp titleOfSelectedItem] intValue]); + if (modulus_height > fTitle->height) + { + [fHeightStepper setMaxValue: modulus_height]; + } + [fHeightStepper setIntValue: modulus_height]; + job->anamorphic.dar_height = (float)[fHeightStepper intValue]; + job->height = [fHeightStepper intValue]; + + /* Changes PIXEL WIDTH to new DISPLAY WIDTH */ + [fParWidthField setIntValue: [fDisplayWidthField intValue]]; + job->anamorphic.par_width = [fParWidthField intValue]; + /* Changes PIXEL HEIGHT to STORAGE WIDTH */ + [fParHeightField setIntValue: [fWidthField intValue]]; + job->anamorphic.par_height = [fParHeightField intValue]; + + } + /* Changing HEIGHT: */ + if (sender == fHeightStepper) + { + job->anamorphic.dar_height = (float)[fHeightStepper intValue]; + job->height = [fHeightStepper intValue]; + + /* Changes DISPLAY WIDTH to keep DAR*/ + [fDisplayWidthField setStringValue: [NSString stringWithFormat: @"%.2f",[fHeightStepper intValue] * dar]]; + job->anamorphic.dar_width = [fDisplayWidthField floatValue]; + /* Changes PIXEL WIDTH to new DISPLAY WIDTH */ + [fParWidthField setIntValue: [fDisplayWidthField intValue]]; + job->anamorphic.par_width = [fParWidthField intValue]; + /* Changes PIXEL HEIGHT to STORAGE WIDTH */ + [fParHeightField setIntValue: [fWidthField intValue]]; + job->anamorphic.par_height = [fParHeightField intValue]; + } + /* Changing STORAGE_WIDTH: */ + if (sender == fWidthStepper) + { + job->width = [fWidthStepper intValue]; + + job->anamorphic.dar_width = [fDisplayWidthField floatValue]; + job->anamorphic.dar_height = [fHeightStepper floatValue]; + + /* Changes PIXEL WIDTH to DISPLAY WIDTH */ + [fParWidthField setIntValue: [fDisplayWidthField intValue]]; + job->anamorphic.par_width = [fParWidthField intValue]; + /* Changes PIXEL HEIGHT to new STORAGE WIDTH */ + [fParHeightField setIntValue: [fWidthStepper intValue]]; + job->anamorphic.par_height = [fParHeightField intValue]; + } + } + else if ([fRatioCheck state] == NSOffState) + { + /* Changing STORAGE_WIDTH: */ + if (sender == fWidthStepper) + { + job->width = [fWidthStepper intValue]; + /* changes DISPLAY WIDTH to STORAGE WIDTH * PIXEL WIDTH / PIXEL HEIGHT */ + [fDisplayWidthField setStringValue: [NSString stringWithFormat: @"%.2f",(float)[fWidthStepper intValue] * [fParWidthField intValue] / [fParHeightField intValue]]]; + job->anamorphic.dar_width = [fDisplayWidthField floatValue]; + } + /* Changing PIXEL dimensions */ + if (sender == fParWidthField || sender == fParHeightField) + { + job->anamorphic.par_width = [fParWidthField intValue]; + job->anamorphic.par_height = [fParHeightField intValue]; + /* changes DISPLAY WIDTH to STORAGE WIDTH * PIXEL WIDTH / PIXEL HEIGHT */ + [fDisplayWidthField setStringValue: [NSString stringWithFormat: @"%.2f",(float)[fWidthStepper intValue] * [fParWidthField intValue] / [fParHeightField intValue]]]; + job->anamorphic.dar_width = [fDisplayWidthField floatValue]; + } + /* Changing DISPLAY WIDTH: */ + if (sender == fDisplayWidthField) + { + job->anamorphic.dar_width = [fDisplayWidthField floatValue]; + job->anamorphic.dar_height = (float)[fHeightStepper intValue]; + /* changes PIXEL WIDTH to DISPLAY WIDTH and PIXEL HEIGHT to STORAGE WIDTH */ + [fParWidthField setIntValue: [fDisplayWidthField intValue]]; + job->anamorphic.par_width = [fParWidthField intValue]; + + [fParHeightField setIntValue: [fWidthField intValue]]; + job->anamorphic.par_height = [fParHeightField intValue]; + hb_set_anamorphic_size(job, &output_width, &output_height, &output_par_width, &output_par_height); + } + /* Changing HEIGHT: */ + if (sender == fHeightStepper) + { + /* just....changes the height.*/ + job->anamorphic.dar_height = [fHeightStepper intValue]; + job->height = [fHeightStepper intValue]; + } + + } + +#pragma mark - END Capuj + } + + /* if the sender is the Anamorphic checkbox, record the state + of KeepAspect Ratio so it can be reset if Anamorphic is unchecked again */ + if (sender == fAnamorphicPopUp) + { + keepAspectRatioPreviousState = [fRatioCheck state]; + } + if ([fAnamorphicPopUp indexOfSelectedItem] != 3) + { + [fRatioCheck setState:NSOffState]; + } + + } + else + { + job->width = [fWidthStepper intValue]; + job->height = [fHeightStepper intValue]; + job->anamorphic.mode = 0; + [fWidthStepper setEnabled: YES]; + [fWidthField setEnabled: YES]; + [fHeightStepper setEnabled: YES]; + [fHeightField setEnabled: YES]; + [fRatioCheck setEnabled: YES]; + /* if the sender is the Anamorphic checkbox, we return the + keep AR checkbox to its previous state */ + if (sender == fAnamorphicPopUp) + { + [fRatioCheck setState:keepAspectRatioPreviousState]; + } + + } + + if ([fAnamorphicPopUp indexOfSelectedItem] != 3) + { + job->keep_ratio = ( [fRatioCheck state] == NSOnState ); + if( job->keep_ratio ) + { + if( sender == fWidthStepper || sender == fRatioCheck || + sender == fCropTopStepper || sender == fCropBottomStepper|| + sender == fCropMatrix || sender == nil ) + { + hb_fix_aspect( job, HB_KEEP_WIDTH ); + if( job->height > fTitle->height ) + { + job->height = fTitle->height; + hb_fix_aspect( job, HB_KEEP_HEIGHT ); + } + } + else + { + hb_fix_aspect( job, HB_KEEP_HEIGHT ); + if( job->width > fTitle->width ) + { + job->width = fTitle->width; + hb_fix_aspect( job, HB_KEEP_WIDTH ); + } + } + + } + } + + // hb_get_preview can't handle sizes that are larger than the original title + if ([fAnamorphicPopUp indexOfSelectedItem] != 3) + { + // dimensions + if( job->width > fTitle->width ) + { + job->width = fTitle->width; + } + + if( job->height > fTitle->height ) + { + job->height = fTitle->height; + } + } + + [fWidthStepper setIntValue: job->width]; + [fWidthField setIntValue: job->width]; + if( [fAnamorphicPopUp indexOfSelectedItem] != 2) // if we are not loose or custom + { + [fHeightStepper setIntValue: job->height]; + [fHeightField setIntValue: job->height]; + } + + [fCropTopStepper setIntValue: job->crop[0]]; + [fCropTopField setIntValue: job->crop[0]]; + [fCropBottomStepper setIntValue: job->crop[1]]; + [fCropBottomField setIntValue: job->crop[1]]; + [fCropLeftStepper setIntValue: job->crop[2]]; + [fCropLeftField setIntValue: job->crop[2]]; + [fCropRightStepper setIntValue: job->crop[3]]; + [fCropRightField setIntValue: job->crop[3]]; + + /* + * Sanity-check here for previews < 16 pixels to avoid crashing + * hb_get_preview(). In fact, let's get previews at least 64 pixels in both + * dimensions; no human can see any meaningful detail below that. + */ + if (job->width >= 64 && job->height >= 64) + { + [self reloadStillPreview]; + } + + /* we get the sizing info to display from fPreviewController */ + [fSizeInfoField setStringValue: [fPreviewController pictureSizeInfoString]]; + + if (sender != nil) + { + [fHBController pictureSettingsDidChange]; + } + + if ([[self window] isVisible]) + { + [self adjustSizingDisplay:nil]; + } + +} + +- (NSString*) getPictureSizeInfoString +{ + return [fSizeInfoField stringValue]; +} + +- (void)reloadStillPreview +{ + [fPreviewController SetTitle:fTitle]; +} + + +#pragma mark - + +- (BOOL) autoCrop +{ + return autoCrop; +} +- (void) setAutoCrop: (BOOL) setting +{ + autoCrop = setting; +} + +- (IBAction)showPreviewPanel: (id)sender forTitle: (hb_title_t *)title +{ + //[self SetTitle:title]; + [self showWindow:sender]; + //[self adjustSizingDisplay:nil]; + //[self adjustFilterDisplay:nil]; + +} + + +#pragma mark - +/* we use this to setup the initial picture filters upon first launch, after that their states +are maintained across different sources */ +- (void) setInitialPictureFilters +{ + /* we use a popup to show the detelecine settings */ + [fDetelecinePopUp removeAllItems]; + [fDetelecinePopUp addItemWithTitle: @"Off"]; + [fDetelecinePopUp addItemWithTitle: @"Custom"]; + [fDetelecinePopUp addItemWithTitle: @"Default"]; + [fDetelecinePopUp selectItemAtIndex: fPictureFilterSettings.detelecine]; + + [self modeDecombDeinterlaceSliderChanged:nil]; + /* we use a popup to show the decomb settings */ + [fDecombPopUp removeAllItems]; + [fDecombPopUp addItemWithTitle: @"Off"]; + [fDecombPopUp addItemWithTitle: @"Custom"]; + [fDecombPopUp addItemWithTitle: @"Default"]; + [fDecombPopUp addItemWithTitle: @"Fast"]; + [fDecombPopUp addItemWithTitle: @"Bob"]; + + [fDecombPopUp selectItemAtIndex: fPictureFilterSettings.decomb]; + + /* we use a popup to show the deinterlace settings */ + [fDeinterlacePopUp removeAllItems]; + [fDeinterlacePopUp addItemWithTitle: @"Off"]; + [fDeinterlacePopUp addItemWithTitle: @"Custom"]; + [fDeinterlacePopUp addItemWithTitle: @"Fast"]; + [fDeinterlacePopUp addItemWithTitle: @"Slow"]; + [fDeinterlacePopUp addItemWithTitle: @"Slower"]; + [fDeinterlacePopUp addItemWithTitle: @"Bob"]; + + /* Set deinterlaces level according to the integer in the main window */ + [fDeinterlacePopUp selectItemAtIndex: fPictureFilterSettings.deinterlace]; + + /* we use a popup to show the denoise settings */ + [fDenoisePopUp removeAllItems]; + [fDenoisePopUp addItemWithTitle: @"Off"]; + [fDenoisePopUp addItemWithTitle: @"Custom"]; + [fDenoisePopUp addItemWithTitle: @"Weak"]; + [fDenoisePopUp addItemWithTitle: @"Medium"]; + [fDenoisePopUp addItemWithTitle: @"Strong"]; + /* Set denoises level according to the integer in the main window */ + [fDenoisePopUp selectItemAtIndex: fPictureFilterSettings.denoise]; + + +} + + + + +- (IBAction) modeDecombDeinterlaceSliderChanged: (id) sender +{ + + /* since its a tickless slider, we have to make sure we are on or off */ + if ([fDecombDeinterlaceSlider floatValue] < 0.50) + { + [fDecombDeinterlaceSlider setFloatValue:0.0]; + } + else + { + [fDecombDeinterlaceSlider setFloatValue:1.0]; + } + + + /* Decomb selected*/ + if ([fDecombDeinterlaceSlider floatValue] == 0.0) + { + [fDecombBox setHidden:NO]; + [fDeinterlaceBox setHidden:YES]; + fPictureFilterSettings.decomb = [fDecombPopUp indexOfSelectedItem]; + fPictureFilterSettings.usedecomb = 1; + fPictureFilterSettings.deinterlace = 0; + [fDecombPopUp selectItemAtIndex:fPictureFilterSettings.decomb]; + [self adjustFilterDisplay:fDecombPopUp]; + } + else + { + [fDecombBox setHidden:YES]; + [fDeinterlaceBox setHidden:NO]; + fPictureFilterSettings.usedecomb = 0; + fPictureFilterSettings.decomb = 0; + [fDeinterlacePopUp selectItemAtIndex: fPictureFilterSettings.deinterlace]; + [self adjustFilterDisplay:fDeinterlacePopUp]; + } + [self FilterSettingsChanged: fDecombDeinterlaceSlider]; +} + + +- (IBAction) FilterSettingsChanged: (id) sender +{ + + fPictureFilterSettings.detelecine = [fDetelecinePopUp indexOfSelectedItem]; + [self adjustFilterDisplay:fDetelecinePopUp]; + + fPictureFilterSettings.decomb = [fDecombPopUp indexOfSelectedItem]; + [self adjustFilterDisplay:fDecombPopUp]; + + fPictureFilterSettings.deinterlace = [fDeinterlacePopUp indexOfSelectedItem]; + [self adjustFilterDisplay:fDeinterlacePopUp]; + + fPictureFilterSettings.denoise = [fDenoisePopUp indexOfSelectedItem]; + [self adjustFilterDisplay:fDenoisePopUp]; + + if ([fDeblockField stringValue] == @"Off") + { + fPictureFilterSettings.deblock = 0; + } + else + { + fPictureFilterSettings.deblock = [fDeblockField intValue]; + } + + fPictureFilterSettings.grayscale = [fGrayscaleCheck state]; + + [self decombDeinterlacePreviewImage]; + + if (sender != nil) + { + [fHBController pictureSettingsDidChange]; + + } + +} + +- (void) decombDeinterlacePreviewImage +{ + /* XXX: make sure we actually have a title before de-referencing it */ + if (fTitle == NULL) + { + return; + } + + if ([fDecombDeinterlaceSlider floatValue] < 0.50) + { + /* Since Libhb only shows a deinterlaced preview image via deinterlace .. for decomb we + do a quick switch to get libhb to show a deinterlaced image if needed even though deinterlace + has not been changed by the user. so we temporarily switch deinterace accoring to decomb then + call reloadStillPreview quickly and then switch deinterlace back to its proper state. + */ + + // decomb is chosen + if (fPictureFilterSettings.decomb > 0) + { + /* Temporarily turn on deinterlacing .... */ + fTitle->job->deinterlace = 1; + /* Grab a still preview ... */ + [self reloadStillPreview]; + /* ... then reset deinterlace back to where specified in the ui */ + fTitle->job->deinterlace = [fDeinterlacePopUp indexOfSelectedItem]; + + } + else + { + [self reloadStillPreview]; + } + + } + else + { + fTitle->job->deinterlace = [fDeinterlacePopUp indexOfSelectedItem]; + [self reloadStillPreview]; + } +} +#pragma mark - + +- (IBAction) deblockSliderChanged: (id) sender +{ + if ([fDeblockSlider floatValue] == 4.0) + { + [fDeblockField setStringValue: [NSString stringWithFormat: @"Off"]]; + } + else + { + [fDeblockField setStringValue: [NSString stringWithFormat: @"%.0f", [fDeblockSlider floatValue]]]; + } + [self FilterSettingsChanged: sender]; +} + + +- (int) detelecine +{ + return fPictureFilterSettings.detelecine; +} + +- (NSString*) detelecineCustomString +{ + return [fDetelecineField stringValue]; +} + +- (void) setDetelecine: (int) setting +{ + fPictureFilterSettings.detelecine = setting; +} + +- (void) setDetelecineCustomString: (NSString*) string +{ + [fDetelecineField setStringValue:string]; +} + +- (int) deinterlace +{ + return fPictureFilterSettings.deinterlace; +} +- (NSString*) deinterlaceCustomString +{ + return [fDeinterlaceField stringValue]; +} + +- (void) setDeinterlaceCustomString: (NSString*) string +{ + [fDeinterlaceField setStringValue:string]; +} + +- (void) setDeinterlace: (int) setting +{ + fPictureFilterSettings.deinterlace = setting; +} +- (int) decomb +{ + return fPictureFilterSettings.decomb; +} + +- (NSString*) decombCustomString +{ + return [fDecombField stringValue]; +} + +- (int) useDecomb +{ + return fPictureFilterSettings.usedecomb; +} + +- (void) setUseDecomb: (int) setting +{ + fPictureFilterSettings.usedecomb = setting; + if (fPictureFilterSettings.usedecomb == 1) + { + [fDecombDeinterlaceSlider setFloatValue:0.0]; + } + else + { + [fDecombDeinterlaceSlider setFloatValue:1.0]; + } + [self modeDecombDeinterlaceSliderChanged:nil]; +} + +- (void) setDecomb: (int) setting { + fPictureFilterSettings.decomb = setting; +} + +- (void) setDecombCustomString: (NSString*) string +{ + [fDecombField setStringValue:string]; +} + +- (int) denoise +{ + return fPictureFilterSettings.denoise; +} + +- (NSString*) denoiseCustomString +{ + return [fDenoiseField stringValue]; +} + +- (void) setDenoiseCustomString: (NSString*) string +{ + [fDenoiseField setStringValue:string]; +} + +- (void) setDenoise: (int) setting +{ + fPictureFilterSettings.denoise = setting; +} + +- (int) deblock +{ + return fPictureFilterSettings.deblock; +} + +- (void) setDeblock: (int) setting +{ + fPictureFilterSettings.deblock = setting; +} + +- (int) grayscale +{ + return fPictureFilterSettings.grayscale; +} + +- (void) setGrayscale: (int) setting +{ + fPictureFilterSettings.grayscale = setting; +} + + + +@end + diff -Nru handbrake-0.9.9+dfsg/macosx/Sparkle.disable.security.patch handbrake-0.9.9+ppa1/macosx/Sparkle.disable.security.patch --- handbrake-0.9.9+dfsg/macosx/Sparkle.disable.security.patch 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/Sparkle.disable.security.patch 2009-06-18 20:48:07.000000000 +0000 @@ -0,0 +1,18 @@ +--- SUBasicUpdateDriver.m.orig 2009-06-18 16:23:17.000000000 -0400 ++++ SUBasicUpdateDriver.m 2009-06-18 16:23:53.000000000 -0400 +@@ -158,6 +158,7 @@ + + - (void)downloadDidFinish:(NSURLDownload *)d + { ++#if 0 + // New in Sparkle 1.5: we're now checking signatures on all non-secure downloads, where "secure" is defined as both the appcast and the download being transmitted over SSL. + NSURL *downloadURL = [[d request] URL]; + if (![[downloadURL scheme] isEqualToString:@"https"] || ![[appcastURL scheme] isEqualToString:@"https"] || [host publicDSAKey]) +@@ -168,6 +169,7 @@ + return; + } + } ++#endif + + [self extractUpdate]; + } diff -Nru handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Headers/Sparkle.h handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Headers/Sparkle.h --- handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Headers/Sparkle.h 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Headers/Sparkle.h 2009-06-16 19:39:04.000000000 +0000 @@ -0,0 +1,21 @@ +// +// Sparkle.h +// Sparkle +// +// Created by Andy Matuschak on 3/16/06. (Modified by CDHW on 23/12/07) +// Copyright 2006 Andy Matuschak. All rights reserved. +// + +#ifndef SPARKLE_H +#define SPARKLE_H + +// This list should include the shared headers. It doesn't matter if some of them aren't shared (unless +// there are name-space collisions) so we can list all of them to start with: + +#import + +#import +#import +#import + +#endif diff -Nru handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Headers/SUAppcast.h handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Headers/SUAppcast.h --- handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Headers/SUAppcast.h 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Headers/SUAppcast.h 2009-06-16 19:39:04.000000000 +0000 @@ -0,0 +1,33 @@ +// +// SUAppcast.h +// Sparkle +// +// Created by Andy Matuschak on 3/12/06. +// Copyright 2006 Andy Matuschak. All rights reserved. +// + +#ifndef SUAPPCAST_H +#define SUAPPCAST_H + +@class SUAppcastItem; +@interface SUAppcast : NSObject { + NSArray *items; + NSString *userAgentString; + id delegate; + NSMutableData *incrementalData; +} + +- (void)fetchAppcastFromURL:(NSURL *)url; +- (void)setDelegate:delegate; +- (void)setUserAgentString:(NSString *)userAgentString; + +- (NSArray *)items; + +@end + +@interface NSObject (SUAppcastDelegate) +- (void)appcastDidFinishLoading:(SUAppcast *)appcast; +- (void)appcast:(SUAppcast *)appcast failedToLoadWithError:(NSError *)error; +@end + +#endif diff -Nru handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Headers/SUAppcastItem.h handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Headers/SUAppcastItem.h --- handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Headers/SUAppcastItem.h 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Headers/SUAppcastItem.h 2009-06-16 19:39:04.000000000 +0000 @@ -0,0 +1,47 @@ +// +// SUAppcastItem.h +// Sparkle +// +// Created by Andy Matuschak on 3/12/06. +// Copyright 2006 Andy Matuschak. All rights reserved. +// + +#ifndef SUAPPCASTITEM_H +#define SUAPPCASTITEM_H + +@interface SUAppcastItem : NSObject { + NSString *title; + NSDate *date; + NSString *itemDescription; + + NSURL *releaseNotesURL; + + NSString *DSASignature; + NSString *minimumSystemVersion; + + NSURL *fileURL; + NSString *versionString; + NSString *displayVersionString; + + NSDictionary *propertiesDictionary; +} + +// Initializes with data from a dictionary provided by the RSS class. +- initWithDictionary:(NSDictionary *)dict; + +- (NSString *)title; +- (NSString *)versionString; +- (NSString *)displayVersionString; +- (NSDate *)date; +- (NSString *)itemDescription; +- (NSURL *)releaseNotesURL; +- (NSURL *)fileURL; +- (NSString *)DSASignature; +- (NSString *)minimumSystemVersion; + +// Returns the dictionary provided in initWithDictionary; this might be useful later for extensions. +- (NSDictionary *)propertiesDictionary; + +@end + +#endif diff -Nru handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Headers/SUUpdater.h handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Headers/SUUpdater.h --- handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Headers/SUUpdater.h 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Headers/SUUpdater.h 2009-06-16 19:39:04.000000000 +0000 @@ -0,0 +1,118 @@ +// +// SUUpdater.h +// Sparkle +// +// Created by Andy Matuschak on 1/4/06. +// Copyright 2006 Andy Matuschak. All rights reserved. +// + +#ifndef SUUPDATER_H +#define SUUPDATER_H + +#import + +@class SUUpdateDriver, SUAppcastItem, SUHost, SUAppcast; +@interface SUUpdater : NSObject { + NSTimer *checkTimer; + SUUpdateDriver *driver; + + SUHost *host; + IBOutlet id delegate; +} + ++ (SUUpdater *)sharedUpdater; ++ (SUUpdater *)updaterForBundle:(NSBundle *)bundle; +- (NSBundle *)hostBundle; + +- (void)setDelegate:(id)delegate; +- delegate; + +- (void)setAutomaticallyChecksForUpdates:(BOOL)automaticallyChecks; +- (BOOL)automaticallyChecksForUpdates; + +- (void)setUpdateCheckInterval:(NSTimeInterval)interval; +- (NSTimeInterval)updateCheckInterval; + +- (void)setFeedURL:(NSURL *)feedURL; +- (NSURL *)feedURL; + +- (void)setSendsSystemProfile:(BOOL)sendsSystemProfile; +- (BOOL)sendsSystemProfile; + +- (void)setAutomaticallyDownloadsUpdates:(BOOL)automaticallyDownloadsUpdates; +- (BOOL)automaticallyDownloadsUpdates; + +// This IBAction is meant for a main menu item. Hook up any menu item to this action, +// and Sparkle will check for updates and report back its findings verbosely. +- (IBAction)checkForUpdates:sender; + +// This kicks off an update meant to be programmatically initiated. That is, it will display no UI unless it actually finds an update, +// in which case it proceeds as usual. If the fully automated updating is turned on, however, this will invoke that behavior, and if an +// update is found, it will be downloaded and prepped for installation. +- (void)checkForUpdatesInBackground; + +// Date of last update check. Returns null if no check has been performed. +- (NSDate*)lastUpdateCheckDate; + +// This begins a "probing" check for updates which will not actually offer to update to that version. The delegate methods, though, +// (up to updater:didFindValidUpdate: and updaterDidNotFindUpdate:), are called, so you can use that information in your UI. +- (void)checkForUpdateInformation; + +// Call this to appropriately schedule or cancel the update checking timer according to the preferences for time interval and automatic checks. This call does not change the date of the next check, but only the internal NSTimer. +- (void)resetUpdateCycle; + +- (BOOL)updateInProgress; +@end + +@interface NSObject (SUUpdaterDelegateInformalProtocol) +// This method allows you to add extra parameters to the appcast URL, potentially based on whether or not Sparkle will also be sending along the system profile. This method should return an array of dictionaries with keys: "key", "value", "displayKey", "displayValue", the latter two being specifically for display to the user. +- (NSArray *)feedParametersForUpdater:(SUUpdater *)updater sendingSystemProfile:(BOOL)sendingProfile; + +// Use this to override the default behavior for Sparkle prompting the user about automatic update checks. +- (BOOL)updaterShouldPromptForPermissionToCheckForUpdates:(SUUpdater *)bundle; + +// Implement this if you want to do some special handling with the appcast once it finishes loading. +- (void)updater:(SUUpdater *)updater didFinishLoadingAppcast:(SUAppcast *)appcast; + +// If you're using special logic or extensions in your appcast, implement this to use your own logic for finding +// a valid update, if any, in the given appcast. +- (SUAppcastItem *)bestValidUpdateInAppcast:(SUAppcast *)appcast forUpdater:(SUUpdater *)bundle; + +// Sent when a valid update is found by the update driver. +- (void)updater:(SUUpdater *)updater didFindValidUpdate:(SUAppcastItem *)update; + +// Sent when a valid update is not found. +- (void)updaterDidNotFindUpdate:(SUUpdater *)update; + +// Sent immediately before installing the specified update. +- (void)updater:(SUUpdater *)updater willInstallUpdate:(SUAppcastItem *)update; + +// Return YES to delay the relaunch until you do some processing; invoke the given NSInvocation to continue. +- (BOOL)updater:(SUUpdater *)updater shouldPostponeRelaunchForUpdate:(SUAppcastItem *)update untilInvoking:(NSInvocation *)invocation; + +// Called immediately before relaunching. +- (void)updaterWillRelaunchApplication:(SUUpdater *)updater; + +// This method allows you to provide a custom version comparator. +// If you don't implement this method or return nil, the standard version comparator will be used. +- (id )versionComparatorForUpdater:(SUUpdater *)updater; + +// Returns the path which is used to relaunch the client after the update is installed. By default, the path of the host bundle. +- (NSString *)pathToRelaunchForUpdater:(SUUpdater *)updater; + +@end + +// Define some minimum intervals to avoid DOS-like checking attacks. These are in seconds. +#ifdef DEBUG +#define SU_MIN_CHECK_INTERVAL 60 +#else +#define SU_MIN_CHECK_INTERVAL 60*60 +#endif + +#ifdef DEBUG +#define SU_DEFAULT_CHECK_INTERVAL 60 +#else +#define SU_DEFAULT_CHECK_INTERVAL 60*60*24 +#endif + +#endif diff -Nru handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Headers/SUVersionComparisonProtocol copy.h handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Headers/SUVersionComparisonProtocol copy.h --- handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Headers/SUVersionComparisonProtocol copy.h 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Headers/SUVersionComparisonProtocol copy.h 2009-06-16 19:39:04.000000000 +0000 @@ -0,0 +1,27 @@ +// +// SUVersionComparisonProtocol.h +// Sparkle +// +// Created by Andy Matuschak on 12/21/07. +// Copyright 2007 Andy Matuschak. All rights reserved. +// + +#ifndef SUVERSIONCOMPARISONPROTOCOL_H +#define SUVERSIONCOMPARISONPROTOCOL_H + +/*! + @protocol + @abstract Implement this protocol to provide version comparison facilities for Sparkle. +*/ +@protocol SUVersionComparison + +/*! + @method + @abstract An abstract method to compare two version strings. + @discussion Should return NSOrderedAscending if b > a, NSOrderedDescending if b < a, and NSOrderedSame if they are equivalent. +*/ +- (NSComparisonResult)compareVersion:(NSString *)versionA toVersion:(NSString *)versionB; + +@end + +#endif diff -Nru handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Headers/SUVersionComparisonProtocol.h handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Headers/SUVersionComparisonProtocol.h --- handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Headers/SUVersionComparisonProtocol.h 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Headers/SUVersionComparisonProtocol.h 2009-06-16 19:39:04.000000000 +0000 @@ -0,0 +1,27 @@ +// +// SUVersionComparisonProtocol.h +// Sparkle +// +// Created by Andy Matuschak on 12/21/07. +// Copyright 2007 Andy Matuschak. All rights reserved. +// + +#ifndef SUVERSIONCOMPARISONPROTOCOL_H +#define SUVERSIONCOMPARISONPROTOCOL_H + +/*! + @protocol + @abstract Implement this protocol to provide version comparison facilities for Sparkle. +*/ +@protocol SUVersionComparison + +/*! + @method + @abstract An abstract method to compare two version strings. + @discussion Should return NSOrderedAscending if b > a, NSOrderedDescending if b < a, and NSOrderedSame if they are equivalent. +*/ +- (NSComparisonResult)compareVersion:(NSString *)versionA toVersion:(NSString *)versionB; + +@end + +#endif Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Resources/de.lproj/Sparkle.strings and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Resources/de.lproj/Sparkle.strings differ diff -Nru handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Resources/de.lproj/SUAutomaticUpdateAlert.nib/classes.nib handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Resources/de.lproj/SUAutomaticUpdateAlert.nib/classes.nib --- handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Resources/de.lproj/SUAutomaticUpdateAlert.nib/classes.nib 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Resources/de.lproj/SUAutomaticUpdateAlert.nib/classes.nib 2008-01-16 17:50:50.000000000 +0000 @@ -0,0 +1,12 @@ +{ + IBClasses = ( + {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, + { + ACTIONS = {relaunchLater = id; relaunchNow = id; }; + CLASS = SUAutomaticUpdateAlert; + LANGUAGE = ObjC; + SUPERCLASS = NSWindowController; + } + ); + IBVersion = 1; +} \ No newline at end of file diff -Nru handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Resources/de.lproj/SUAutomaticUpdateAlert.nib/info.nib handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Resources/de.lproj/SUAutomaticUpdateAlert.nib/info.nib --- handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Resources/de.lproj/SUAutomaticUpdateAlert.nib/info.nib 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Resources/de.lproj/SUAutomaticUpdateAlert.nib/info.nib 2008-01-16 17:50:50.000000000 +0000 @@ -0,0 +1,12 @@ + + + + + IBDocumentLocation + 188 142 356 240 0 0 1280 1002 + IBFramework Version + 443.0 + IBSystem Version + 8I127 + + Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Resources/de.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Resources/de.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib differ diff -Nru handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Resources/de.lproj/SUUpdateAlert.nib/classes.nib handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Resources/de.lproj/SUUpdateAlert.nib/classes.nib --- handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Resources/de.lproj/SUUpdateAlert.nib/classes.nib 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Resources/de.lproj/SUUpdateAlert.nib/classes.nib 2008-01-16 17:50:50.000000000 +0000 @@ -0,0 +1,21 @@ +{ + IBClasses = ( + {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, + {CLASS = NSObject; LANGUAGE = ObjC; }, + { + ACTIONS = {installUpdate = id; remindMeLater = id; skipThisVersion = id; }; + CLASS = SUUpdateAlert; + LANGUAGE = ObjC; + OUTLETS = {description = NSTextField; releaseNotesView = WebView; }; + SUPERCLASS = NSWindowController; + }, + { + ACTIONS = {installUpdate = id; remindMeLater = id; skipThisVersion = id; }; + CLASS = SUUpdateAlertController; + LANGUAGE = ObjC; + OUTLETS = {releaseNotesView = id; }; + SUPERCLASS = NSWindowController; + } + ); + IBVersion = 1; +} \ No newline at end of file diff -Nru handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Resources/de.lproj/SUUpdateAlert.nib/info.nib handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Resources/de.lproj/SUUpdateAlert.nib/info.nib --- handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Resources/de.lproj/SUUpdateAlert.nib/info.nib 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Resources/de.lproj/SUUpdateAlert.nib/info.nib 2008-01-16 17:50:50.000000000 +0000 @@ -0,0 +1,16 @@ + + + + + IBDocumentLocation + 425 40 356 240 0 0 1280 832 + IBFramework Version + 446.1 + IBOpenObjects + + 5 + + IBSystem Version + 8I127 + + Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Resources/de.lproj/SUUpdateAlert.nib/keyedobjects.nib and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Resources/de.lproj/SUUpdateAlert.nib/keyedobjects.nib differ Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Resources/en.lproj/Sparkle.strings and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Resources/en.lproj/Sparkle.strings differ diff -Nru handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Resources/en.lproj/SUAutomaticUpdateAlert.nib/classes.nib handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Resources/en.lproj/SUAutomaticUpdateAlert.nib/classes.nib --- handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Resources/en.lproj/SUAutomaticUpdateAlert.nib/classes.nib 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Resources/en.lproj/SUAutomaticUpdateAlert.nib/classes.nib 2009-06-16 19:39:04.000000000 +0000 @@ -0,0 +1,50 @@ + + + + + IBClasses + + + CLASS + SUWindowController + LANGUAGE + ObjC + SUPERCLASS + NSWindowController + + + ACTIONS + + doNotInstall + id + installLater + id + installNow + id + + CLASS + SUAutomaticUpdateAlert + LANGUAGE + ObjC + SUPERCLASS + SUWindowController + + + CLASS + FirstResponder + LANGUAGE + ObjC + SUPERCLASS + NSObject + + + CLASS + NSObject + LANGUAGE + ObjC + + + IBVersion + 1 + + diff -Nru handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Resources/en.lproj/SUAutomaticUpdateAlert.nib/info.nib handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Resources/en.lproj/SUAutomaticUpdateAlert.nib/info.nib --- handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Resources/en.lproj/SUAutomaticUpdateAlert.nib/info.nib 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Resources/en.lproj/SUAutomaticUpdateAlert.nib/info.nib 2009-06-16 19:39:04.000000000 +0000 @@ -0,0 +1,20 @@ + + + + + IBFramework Version + 658 + IBLastKnownRelativeProjectPath + ../Sparkle.xcodeproj + IBOldestOS + 5 + IBOpenObjects + + 6 + + IBSystem Version + 9C7010 + targetFramework + IBCocoaFramework + + Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Resources/en.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Resources/en.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib differ diff -Nru handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Resources/en.lproj/SUUpdateAlert.nib/classes.nib handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Resources/en.lproj/SUUpdateAlert.nib/classes.nib --- handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Resources/en.lproj/SUUpdateAlert.nib/classes.nib 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Resources/en.lproj/SUUpdateAlert.nib/classes.nib 2009-06-16 19:39:04.000000000 +0000 @@ -0,0 +1,67 @@ + + + + + IBClasses + + + CLASS + SUWindowController + LANGUAGE + ObjC + SUPERCLASS + NSWindowController + + + CLASS + NSApplication + LANGUAGE + ObjC + SUPERCLASS + NSResponder + + + ACTIONS + + installUpdate + id + remindMeLater + id + skipThisVersion + id + + CLASS + SUUpdateAlert + LANGUAGE + ObjC + OUTLETS + + delegate + id + description + NSTextField + releaseNotesView + WebView + + SUPERCLASS + SUWindowController + + + CLASS + FirstResponder + LANGUAGE + ObjC + SUPERCLASS + NSObject + + + CLASS + NSObject + LANGUAGE + ObjC + + + IBVersion + 1 + + diff -Nru handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Resources/en.lproj/SUUpdateAlert.nib/info.nib handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Resources/en.lproj/SUUpdateAlert.nib/info.nib --- handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Resources/en.lproj/SUUpdateAlert.nib/info.nib 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Resources/en.lproj/SUUpdateAlert.nib/info.nib 2009-06-16 19:39:04.000000000 +0000 @@ -0,0 +1,20 @@ + + + + + IBFramework Version + 670 + IBLastKnownRelativeProjectPath + ../Sparkle.xcodeproj + IBOldestOS + 5 + IBOpenObjects + + 18 + + IBSystem Version + 10A96 + targetFramework + IBCocoaFramework + + Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Resources/en.lproj/SUUpdateAlert.nib/keyedobjects.nib and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Resources/en.lproj/SUUpdateAlert.nib/keyedobjects.nib differ diff -Nru handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Resources/en.lproj/SUUpdatePermissionPrompt.nib/classes.nib handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Resources/en.lproj/SUUpdatePermissionPrompt.nib/classes.nib --- handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Resources/en.lproj/SUUpdatePermissionPrompt.nib/classes.nib 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Resources/en.lproj/SUUpdatePermissionPrompt.nib/classes.nib 2009-06-16 19:39:04.000000000 +0000 @@ -0,0 +1,59 @@ + + + + + IBClasses + + + CLASS + SUWindowController + LANGUAGE + ObjC + SUPERCLASS + NSWindowController + + + ACTIONS + + finishPrompt + id + toggleMoreInfo + id + + CLASS + SUUpdatePermissionPrompt + LANGUAGE + ObjC + OUTLETS + + delegate + id + descriptionTextField + NSTextField + moreInfoButton + NSButton + moreInfoView + NSView + + SUPERCLASS + SUWindowController + + + CLASS + FirstResponder + LANGUAGE + ObjC + SUPERCLASS + NSObject + + + CLASS + NSObject + LANGUAGE + ObjC + + + IBVersion + 1 + + diff -Nru handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Resources/en.lproj/SUUpdatePermissionPrompt.nib/info.nib handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Resources/en.lproj/SUUpdatePermissionPrompt.nib/info.nib --- handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Resources/en.lproj/SUUpdatePermissionPrompt.nib/info.nib 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Resources/en.lproj/SUUpdatePermissionPrompt.nib/info.nib 2009-06-16 19:39:04.000000000 +0000 @@ -0,0 +1,21 @@ + + + + + IBFramework Version + 670 + IBLastKnownRelativeProjectPath + ../Sparkle.xcodeproj + IBOldestOS + 5 + IBOpenObjects + + 6 + 41 + + IBSystem Version + 10A96 + targetFramework + IBCocoaFramework + + Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Resources/en.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Resources/en.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib differ Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Resources/es.lproj/Sparkle.strings and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Resources/es.lproj/Sparkle.strings differ diff -Nru handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Resources/es.lproj/SUAutomaticUpdateAlert.nib/classes.nib handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Resources/es.lproj/SUAutomaticUpdateAlert.nib/classes.nib --- handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Resources/es.lproj/SUAutomaticUpdateAlert.nib/classes.nib 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Resources/es.lproj/SUAutomaticUpdateAlert.nib/classes.nib 2008-01-16 17:50:50.000000000 +0000 @@ -0,0 +1,12 @@ +{ + IBClasses = ( + {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, + { + ACTIONS = {relaunchLater = id; relaunchNow = id; }; + CLASS = SUAutomaticUpdateAlert; + LANGUAGE = ObjC; + SUPERCLASS = NSWindowController; + } + ); + IBVersion = 1; +} \ No newline at end of file diff -Nru handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Resources/es.lproj/SUAutomaticUpdateAlert.nib/info.nib handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Resources/es.lproj/SUAutomaticUpdateAlert.nib/info.nib --- handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Resources/es.lproj/SUAutomaticUpdateAlert.nib/info.nib 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Resources/es.lproj/SUAutomaticUpdateAlert.nib/info.nib 2008-01-16 17:50:50.000000000 +0000 @@ -0,0 +1,12 @@ + + + + + IBDocumentLocation + 188 142 356 240 0 0 1280 1002 + IBFramework Version + 443.0 + IBSystem Version + 8I127 + + Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Resources/es.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Resources/es.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib differ diff -Nru handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Resources/es.lproj/SUUpdateAlert.nib/classes.nib handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Resources/es.lproj/SUUpdateAlert.nib/classes.nib --- handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Resources/es.lproj/SUUpdateAlert.nib/classes.nib 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Resources/es.lproj/SUUpdateAlert.nib/classes.nib 2008-01-16 17:50:50.000000000 +0000 @@ -0,0 +1,21 @@ +{ + IBClasses = ( + {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, + {CLASS = NSObject; LANGUAGE = ObjC; }, + { + ACTIONS = {installUpdate = id; remindMeLater = id; skipThisVersion = id; }; + CLASS = SUUpdateAlert; + LANGUAGE = ObjC; + OUTLETS = {description = NSTextField; releaseNotesView = WebView; }; + SUPERCLASS = NSWindowController; + }, + { + ACTIONS = {installUpdate = id; remindMeLater = id; skipThisVersion = id; }; + CLASS = SUUpdateAlertController; + LANGUAGE = ObjC; + OUTLETS = {releaseNotesView = id; }; + SUPERCLASS = NSWindowController; + } + ); + IBVersion = 1; +} \ No newline at end of file diff -Nru handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Resources/es.lproj/SUUpdateAlert.nib/info.nib handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Resources/es.lproj/SUUpdateAlert.nib/info.nib --- handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Resources/es.lproj/SUUpdateAlert.nib/info.nib 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Resources/es.lproj/SUUpdateAlert.nib/info.nib 2008-01-16 17:50:50.000000000 +0000 @@ -0,0 +1,16 @@ + + + + + IBDocumentLocation + 425 40 356 240 0 0 1280 832 + IBFramework Version + 446.1 + IBOpenObjects + + 5 + + IBSystem Version + 8I127 + + Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Resources/es.lproj/SUUpdateAlert.nib/keyedobjects.nib and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Resources/es.lproj/SUUpdateAlert.nib/keyedobjects.nib differ Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Resources/fr.lproj/Sparkle.strings and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Resources/fr.lproj/Sparkle.strings differ diff -Nru handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Resources/fr.lproj/SUAutomaticUpdateAlert.nib/classes.nib handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Resources/fr.lproj/SUAutomaticUpdateAlert.nib/classes.nib --- handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Resources/fr.lproj/SUAutomaticUpdateAlert.nib/classes.nib 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Resources/fr.lproj/SUAutomaticUpdateAlert.nib/classes.nib 2008-01-16 17:50:50.000000000 +0000 @@ -0,0 +1,12 @@ +{ + IBClasses = ( + {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, + { + ACTIONS = {relaunchLater = id; relaunchNow = id; }; + CLASS = SUAutomaticUpdateAlert; + LANGUAGE = ObjC; + SUPERCLASS = NSWindowController; + } + ); + IBVersion = 1; +} \ No newline at end of file diff -Nru handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Resources/fr.lproj/SUAutomaticUpdateAlert.nib/info.nib handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Resources/fr.lproj/SUAutomaticUpdateAlert.nib/info.nib --- handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Resources/fr.lproj/SUAutomaticUpdateAlert.nib/info.nib 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Resources/fr.lproj/SUAutomaticUpdateAlert.nib/info.nib 2008-01-16 17:50:50.000000000 +0000 @@ -0,0 +1,12 @@ + + + + + IBDocumentLocation + 188 142 356 240 0 0 1280 1002 + IBFramework Version + 439.0 + IBSystem Version + 8J133 + + Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Resources/fr.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Resources/fr.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib differ diff -Nru handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Resources/fr.lproj/SUUpdateAlert.nib/classes.nib handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Resources/fr.lproj/SUUpdateAlert.nib/classes.nib --- handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Resources/fr.lproj/SUUpdateAlert.nib/classes.nib 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Resources/fr.lproj/SUUpdateAlert.nib/classes.nib 2008-01-16 17:50:50.000000000 +0000 @@ -0,0 +1,21 @@ +{ + IBClasses = ( + {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, + {CLASS = NSObject; LANGUAGE = ObjC; }, + { + ACTIONS = {installUpdate = id; remindMeLater = id; skipThisVersion = id; }; + CLASS = SUUpdateAlert; + LANGUAGE = ObjC; + OUTLETS = {description = NSTextField; releaseNotesView = WebView; }; + SUPERCLASS = NSWindowController; + }, + { + ACTIONS = {installUpdate = id; remindMeLater = id; skipThisVersion = id; }; + CLASS = SUUpdateAlertController; + LANGUAGE = ObjC; + OUTLETS = {releaseNotesView = id; }; + SUPERCLASS = NSWindowController; + } + ); + IBVersion = 1; +} \ No newline at end of file diff -Nru handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Resources/fr.lproj/SUUpdateAlert.nib/info.nib handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Resources/fr.lproj/SUUpdateAlert.nib/info.nib --- handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Resources/fr.lproj/SUUpdateAlert.nib/info.nib 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Resources/fr.lproj/SUUpdateAlert.nib/info.nib 2008-01-16 17:50:50.000000000 +0000 @@ -0,0 +1,16 @@ + + + + + IBDocumentLocation + 425 51 356 240 0 0 1280 1002 + IBFramework Version + 439.0 + IBOpenObjects + + 5 + + IBSystem Version + 8J133 + + Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Resources/fr.lproj/SUUpdateAlert.nib/keyedobjects.nib and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Resources/fr.lproj/SUUpdateAlert.nib/keyedobjects.nib differ diff -Nru handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Resources/Info.plist handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Resources/Info.plist --- handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Resources/Info.plist 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Resources/Info.plist 2009-06-16 19:39:04.000000000 +0000 @@ -0,0 +1,24 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + Sparkle + CFBundleIdentifier + org.andymatuschak.Sparkle + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + Sparkle + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.5 Beta 6 + CFBundleSignature + ???? + CFBundleVersion + 313 + + Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Resources/it.lproj/Sparkle.strings and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Resources/it.lproj/Sparkle.strings differ diff -Nru handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Resources/it.lproj/SUAutomaticUpdateAlert.nib/classes.nib handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Resources/it.lproj/SUAutomaticUpdateAlert.nib/classes.nib --- handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Resources/it.lproj/SUAutomaticUpdateAlert.nib/classes.nib 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Resources/it.lproj/SUAutomaticUpdateAlert.nib/classes.nib 2008-01-16 17:50:50.000000000 +0000 @@ -0,0 +1,12 @@ +{ + IBClasses = ( + {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, + { + ACTIONS = {relaunchLater = id; relaunchNow = id; }; + CLASS = SUAutomaticUpdateAlert; + LANGUAGE = ObjC; + SUPERCLASS = NSWindowController; + } + ); + IBVersion = 1; +} \ No newline at end of file diff -Nru handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Resources/it.lproj/SUAutomaticUpdateAlert.nib/info.nib handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Resources/it.lproj/SUAutomaticUpdateAlert.nib/info.nib --- handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Resources/it.lproj/SUAutomaticUpdateAlert.nib/info.nib 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Resources/it.lproj/SUAutomaticUpdateAlert.nib/info.nib 2008-01-16 17:50:50.000000000 +0000 @@ -0,0 +1,12 @@ + + + + + IBDocumentLocation + 188 142 356 240 0 0 1280 1002 + IBFramework Version + 443.0 + IBSystem Version + 8I127 + + Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Resources/it.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Resources/it.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib differ diff -Nru handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Resources/it.lproj/SUUpdateAlert.nib/classes.nib handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Resources/it.lproj/SUUpdateAlert.nib/classes.nib --- handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Resources/it.lproj/SUUpdateAlert.nib/classes.nib 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Resources/it.lproj/SUUpdateAlert.nib/classes.nib 2008-01-16 17:50:50.000000000 +0000 @@ -0,0 +1,21 @@ +{ + IBClasses = ( + {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, + {CLASS = NSObject; LANGUAGE = ObjC; }, + { + ACTIONS = {installUpdate = id; remindMeLater = id; skipThisVersion = id; }; + CLASS = SUUpdateAlert; + LANGUAGE = ObjC; + OUTLETS = {description = NSTextField; releaseNotesView = WebView; }; + SUPERCLASS = NSWindowController; + }, + { + ACTIONS = {installUpdate = id; remindMeLater = id; skipThisVersion = id; }; + CLASS = SUUpdateAlertController; + LANGUAGE = ObjC; + OUTLETS = {releaseNotesView = id; }; + SUPERCLASS = NSWindowController; + } + ); + IBVersion = 1; +} \ No newline at end of file diff -Nru handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Resources/it.lproj/SUUpdateAlert.nib/info.nib handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Resources/it.lproj/SUUpdateAlert.nib/info.nib --- handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Resources/it.lproj/SUUpdateAlert.nib/info.nib 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Resources/it.lproj/SUUpdateAlert.nib/info.nib 2008-01-16 17:50:50.000000000 +0000 @@ -0,0 +1,16 @@ + + + + + IBDocumentLocation + 425 40 356 240 0 0 1280 832 + IBFramework Version + 446.1 + IBOpenObjects + + 5 + + IBSystem Version + 8I127 + + Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Resources/it.lproj/SUUpdateAlert.nib/keyedobjects.nib and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Resources/it.lproj/SUUpdateAlert.nib/keyedobjects.nib differ diff -Nru handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Resources/License.txt handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Resources/License.txt --- handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Resources/License.txt 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Resources/License.txt 2009-06-16 19:39:04.000000000 +0000 @@ -0,0 +1,7 @@ +Copyright (c) 2006 Andy Matuschak + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Resources/nl.lproj/Sparkle.strings and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Resources/nl.lproj/Sparkle.strings differ diff -Nru handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Resources/nl.lproj/SUAutomaticUpdateAlert.nib/classes.nib handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Resources/nl.lproj/SUAutomaticUpdateAlert.nib/classes.nib --- handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Resources/nl.lproj/SUAutomaticUpdateAlert.nib/classes.nib 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Resources/nl.lproj/SUAutomaticUpdateAlert.nib/classes.nib 2008-01-16 17:50:50.000000000 +0000 @@ -0,0 +1,12 @@ +{ + IBClasses = ( + {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, + { + ACTIONS = {relaunchLater = id; relaunchNow = id; }; + CLASS = SUAutomaticUpdateAlert; + LANGUAGE = ObjC; + SUPERCLASS = NSWindowController; + } + ); + IBVersion = 1; +} \ No newline at end of file diff -Nru handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Resources/nl.lproj/SUAutomaticUpdateAlert.nib/info.nib handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Resources/nl.lproj/SUAutomaticUpdateAlert.nib/info.nib --- handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Resources/nl.lproj/SUAutomaticUpdateAlert.nib/info.nib 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Resources/nl.lproj/SUAutomaticUpdateAlert.nib/info.nib 2008-01-16 17:50:50.000000000 +0000 @@ -0,0 +1,12 @@ + + + + + IBDocumentLocation + 188 142 356 240 0 0 1280 1002 + IBFramework Version + 443.0 + IBSystem Version + 8I127 + + Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Resources/nl.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Resources/nl.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib differ diff -Nru handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Resources/nl.lproj/SUUpdateAlert.nib/classes.nib handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Resources/nl.lproj/SUUpdateAlert.nib/classes.nib --- handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Resources/nl.lproj/SUUpdateAlert.nib/classes.nib 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Resources/nl.lproj/SUUpdateAlert.nib/classes.nib 2008-01-16 17:50:50.000000000 +0000 @@ -0,0 +1,21 @@ +{ + IBClasses = ( + {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, + {CLASS = NSObject; LANGUAGE = ObjC; }, + { + ACTIONS = {installUpdate = id; remindMeLater = id; skipThisVersion = id; }; + CLASS = SUUpdateAlert; + LANGUAGE = ObjC; + OUTLETS = {description = NSTextField; releaseNotesView = WebView; }; + SUPERCLASS = NSWindowController; + }, + { + ACTIONS = {installUpdate = id; remindMeLater = id; skipThisVersion = id; }; + CLASS = SUUpdateAlertController; + LANGUAGE = ObjC; + OUTLETS = {releaseNotesView = id; }; + SUPERCLASS = NSWindowController; + } + ); + IBVersion = 1; +} \ No newline at end of file diff -Nru handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Resources/nl.lproj/SUUpdateAlert.nib/info.nib handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Resources/nl.lproj/SUUpdateAlert.nib/info.nib --- handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Resources/nl.lproj/SUUpdateAlert.nib/info.nib 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Resources/nl.lproj/SUUpdateAlert.nib/info.nib 2008-01-16 17:50:50.000000000 +0000 @@ -0,0 +1,16 @@ + + + + + IBDocumentLocation + 425 40 356 240 0 0 1280 832 + IBFramework Version + 446.1 + IBOpenObjects + + 5 + + IBSystem Version + 8I127 + + Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Resources/nl.lproj/SUUpdateAlert.nib/keyedobjects.nib and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Resources/nl.lproj/SUUpdateAlert.nib/keyedobjects.nib differ Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Resources/relaunch and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Resources/relaunch differ Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Resources/ru.lproj/Sparkle.strings and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Resources/ru.lproj/Sparkle.strings differ diff -Nru handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Resources/ru.lproj/SUAutomaticUpdateAlert.nib/classes.nib handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Resources/ru.lproj/SUAutomaticUpdateAlert.nib/classes.nib --- handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Resources/ru.lproj/SUAutomaticUpdateAlert.nib/classes.nib 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Resources/ru.lproj/SUAutomaticUpdateAlert.nib/classes.nib 2008-01-16 17:50:50.000000000 +0000 @@ -0,0 +1,12 @@ +{ + IBClasses = ( + {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, + { + ACTIONS = {relaunchLater = id; relaunchNow = id; }; + CLASS = SUAutomaticUpdateAlert; + LANGUAGE = ObjC; + SUPERCLASS = NSWindowController; + } + ); + IBVersion = 1; +} \ No newline at end of file diff -Nru handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Resources/ru.lproj/SUAutomaticUpdateAlert.nib/info.nib handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Resources/ru.lproj/SUAutomaticUpdateAlert.nib/info.nib --- handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Resources/ru.lproj/SUAutomaticUpdateAlert.nib/info.nib 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Resources/ru.lproj/SUAutomaticUpdateAlert.nib/info.nib 2008-01-16 17:50:50.000000000 +0000 @@ -0,0 +1,12 @@ + + + + + IBDocumentLocation + 188 142 356 240 0 0 1280 1002 + IBFramework Version + 443.0 + IBSystem Version + 8I127 + + Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Resources/ru.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Resources/ru.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib differ diff -Nru handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Resources/ru.lproj/SUUpdateAlert.nib/classes.nib handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Resources/ru.lproj/SUUpdateAlert.nib/classes.nib --- handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Resources/ru.lproj/SUUpdateAlert.nib/classes.nib 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Resources/ru.lproj/SUUpdateAlert.nib/classes.nib 2008-01-16 17:50:50.000000000 +0000 @@ -0,0 +1,21 @@ +{ + IBClasses = ( + {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, + {CLASS = NSObject; LANGUAGE = ObjC; }, + { + ACTIONS = {installUpdate = id; remindMeLater = id; skipThisVersion = id; }; + CLASS = SUUpdateAlert; + LANGUAGE = ObjC; + OUTLETS = {description = NSTextField; releaseNotesView = WebView; }; + SUPERCLASS = NSWindowController; + }, + { + ACTIONS = {installUpdate = id; remindMeLater = id; skipThisVersion = id; }; + CLASS = SUUpdateAlertController; + LANGUAGE = ObjC; + OUTLETS = {releaseNotesView = id; }; + SUPERCLASS = NSWindowController; + } + ); + IBVersion = 1; +} \ No newline at end of file diff -Nru handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Resources/ru.lproj/SUUpdateAlert.nib/info.nib handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Resources/ru.lproj/SUUpdateAlert.nib/info.nib --- handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Resources/ru.lproj/SUUpdateAlert.nib/info.nib 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Resources/ru.lproj/SUUpdateAlert.nib/info.nib 2008-01-16 17:50:50.000000000 +0000 @@ -0,0 +1,16 @@ + + + + + IBDocumentLocation + 425 40 356 240 0 0 1280 832 + IBFramework Version + 446.1 + IBOpenObjects + + 5 + + IBSystem Version + 8I127 + + Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Resources/ru.lproj/SUUpdateAlert.nib/keyedobjects.nib and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Resources/ru.lproj/SUUpdateAlert.nib/keyedobjects.nib differ diff -Nru handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Resources/SUModelTranslation.plist handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Resources/SUModelTranslation.plist --- handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Resources/SUModelTranslation.plist 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Resources/SUModelTranslation.plist 2009-06-16 19:39:04.000000000 +0000 @@ -0,0 +1,174 @@ + + + + + ADP2,1 + Developer Transition Kit + MacBook1,1 + MacBook (Core Duo) + MacBook2,1 + MacBook (Core 2 Duo) + MacBook4,1 + MacBook (Core 2 Duo Feb 2008) + MacBookAir1,1 + MacBook Air (January 2008) + MacBookPro1,1 + MacBook Pro Core Duo (15-inch) + MacBookPro1,2 + MacBook Pro Core Duo (17-inch) + MacBookPro2,1 + MacBook Pro Core 2 Duo (17-inch) + MacBookPro2,2 + MacBook Pro Core 2 Duo (15-inch) + MacBookPro3,1 + MacBook Pro Core 2 Duo (15-inch LED, Core 2 Duo) + MacBookPro3,2 + MacBook Pro Core 2 Duo (17-inch HD, Core 2 Duo) + MacBookPro4,1 + MacBook Pro (Core 2 Duo Feb 2008) + MacPro1,1 + Mac Pro (four-core) + MacPro2,1 + Mac Pro (eight-core) + MacPro3,1 + Mac Pro (January 2008 4- or 8- core "Harpertown") + Macmini1,1 + Mac Mini (Core Solo/Duo) + PowerBook1,1 + PowerBook G3 + PowerBook2,1 + iBook G3 + PowerBook2,2 + iBook G3 (FireWire) + PowerBook2,3 + iBook G3 + PowerBook2,4 + iBook G3 + PowerBook3,1 + PowerBook G3 (FireWire) + PowerBook3,2 + PowerBook G4 + PowerBook3,3 + PowerBook G4 (Gigabit Ethernet) + PowerBook3,4 + PowerBook G4 (DVI) + PowerBook3,5 + PowerBook G4 (1GHz / 867MHz) + PowerBook4,1 + iBook G3 (Dual USB, Late 2001) + PowerBook4,2 + iBook G3 (16MB VRAM) + PowerBook4,3 + iBook G3 Opaque 16MB VRAM, 32MB VRAM, Early 2003) + PowerBook5,1 + PowerBook G4 (17 inch) + PowerBook5,2 + PowerBook G4 (15 inch FW 800) + PowerBook5,3 + PowerBook G4 (17-inch 1.33GHz) + PowerBook5,4 + PowerBook G4 (15 inch 1.5/1.33GHz) + PowerBook5,5 + PowerBook G4 (17-inch 1.5GHz) + PowerBook5,6 + PowerBook G4 (15 inch 1.67GHz/1.5GHz) + PowerBook5,7 + PowerBook G4 (17-inch 1.67GHz) + PowerBook5,8 + PowerBook G4 (Double layer SD, 15 inch) + PowerBook5,9 + PowerBook G4 (Double layer SD, 17 inch) + PowerBook6,1 + PowerBook G4 (12 inch) + PowerBook6,2 + PowerBook G4 (12 inch, DVI) + PowerBook6,3 + iBook G4 + PowerBook6,4 + PowerBook G4 (12 inch 1.33GHz) + PowerBook6,5 + iBook G4 (Early-Late 2004) + PowerBook6,7 + iBook G4 (Mid 2005) + PowerBook6,8 + PowerBook G4 (12 inch 1.5GHz) + PowerMac1,1 + Power Macintosh G3 (Blue & White) + PowerMac1,2 + Power Macintosh G4 (PCI Graphics) + PowerMac10,1 + Mac Mini G4 + PowerMac10,2 + Mac Mini (Late 2005) + PowerMac11,2 + Power Macintosh G5 (Late 2005) + PowerMac12,1 + iMac G5 (iSight) + PowerMac2,1 + iMac G3 (Slot-loading CD-ROM) + PowerMac2,2 + iMac G3 (Summer 2000) + PowerMac3,1 + Power Macintosh G4 (AGP Graphics) + PowerMac3,2 + Power Macintosh G4 (AGP Graphics) + PowerMac3,3 + Power Macintosh G4 (Gigabit Ethernet) + PowerMac3,4 + Power Macintosh G4 (Digital Audio) + PowerMac3,5 + Power Macintosh G4 (Quick Silver) + PowerMac3,6 + Power Macintosh G4 (Mirrored Drive Door) + PowerMac4,1 + iMac G3 (Early/Summer 2001) + PowerMac4,2 + iMac G4 (Flat Panel) + PowerMac4,4 + eMac + PowerMac4,5 + iMac G4 (17-inch Flat Panel) + PowerMac5,1 + Power Macintosh G4 Cube + PowerMac6,1 + iMac G4 (USB 2.0) + PowerMac6,3 + iMac G4 (20-inch Flat Panel) + PowerMac6,4 + eMac (USB 2.0, 2005) + PowerMac7,2 + Power Macintosh G5 + PowerMac7,3 + Power Macintosh G5 + PowerMac8,1 + iMac G5 + PowerMac8,2 + iMac G5 (Ambient Light Sensor) + PowerMac9,1 + Power Macintosh G5 (Late 2005) + RackMac1,1 + Xserve G4 + RackMac1,2 + Xserve G4 (slot-loading, cluster node) + RackMac3,1 + Xserve G5 + Xserve1,1 + Xserve (Intel Xeon) + Xserve2,1 + Xserve (January 2008 quad-core) + iMac1,1 + iMac G3 (Rev A-D) + iMac4,1 + iMac (Core Duo) + iMac4,2 + iMac for Education (17-inch, Core Duo) + iMac5,1 + iMac (Core 2 Duo, 17 or 20 inch, SuperDrive) + iMac5,2 + iMac (Core 2 Duo, 17 inch, Combo Drive) + iMac6,1 + iMac (Core 2 Duo, 24 inch, SuperDrive) + iMac8,1 + iMac (April 2008) + + diff -Nru handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Resources/SUStatus.nib/classes.nib handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Resources/SUStatus.nib/classes.nib --- handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Resources/SUStatus.nib/classes.nib 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Resources/SUStatus.nib/classes.nib 2009-06-16 19:39:04.000000000 +0000 @@ -0,0 +1,56 @@ + + + + + IBClasses + + + CLASS + SUWindowController + LANGUAGE + ObjC + SUPERCLASS + NSWindowController + + + CLASS + NSApplication + LANGUAGE + ObjC + SUPERCLASS + NSResponder + + + CLASS + FirstResponder + LANGUAGE + ObjC + SUPERCLASS + NSObject + + + CLASS + NSObject + LANGUAGE + ObjC + + + CLASS + SUStatusController + LANGUAGE + ObjC + OUTLETS + + actionButton + NSButton + progressBar + NSProgressIndicator + + SUPERCLASS + SUWindowController + + + IBVersion + 1 + + diff -Nru handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Resources/SUStatus.nib/info.nib handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Resources/SUStatus.nib/info.nib --- handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Resources/SUStatus.nib/info.nib 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Resources/SUStatus.nib/info.nib 2009-06-16 19:39:04.000000000 +0000 @@ -0,0 +1,20 @@ + + + + + IBFramework Version + 670 + IBLastKnownRelativeProjectPath + Sparkle.xcodeproj + IBOldestOS + 5 + IBOpenObjects + + 6 + + IBSystem Version + 10A96 + targetFramework + IBCocoaFramework + + Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Resources/SUStatus.nib/keyedobjects.nib and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Resources/SUStatus.nib/keyedobjects.nib differ Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Resources/sv.lproj/Sparkle.strings and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Resources/sv.lproj/Sparkle.strings differ diff -Nru handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Resources/sv.lproj/SUAutomaticUpdateAlert.nib/classes.nib handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Resources/sv.lproj/SUAutomaticUpdateAlert.nib/classes.nib --- handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Resources/sv.lproj/SUAutomaticUpdateAlert.nib/classes.nib 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Resources/sv.lproj/SUAutomaticUpdateAlert.nib/classes.nib 2008-01-16 17:50:50.000000000 +0000 @@ -0,0 +1,12 @@ +{ + IBClasses = ( + {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, + { + ACTIONS = {relaunchLater = id; relaunchNow = id; }; + CLASS = SUAutomaticUpdateAlert; + LANGUAGE = ObjC; + SUPERCLASS = NSWindowController; + } + ); + IBVersion = 1; +} \ No newline at end of file diff -Nru handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Resources/sv.lproj/SUAutomaticUpdateAlert.nib/info.nib handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Resources/sv.lproj/SUAutomaticUpdateAlert.nib/info.nib --- handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Resources/sv.lproj/SUAutomaticUpdateAlert.nib/info.nib 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Resources/sv.lproj/SUAutomaticUpdateAlert.nib/info.nib 2008-01-16 17:50:50.000000000 +0000 @@ -0,0 +1,12 @@ + + + + + IBDocumentLocation + 188 142 356 240 0 0 1280 1002 + IBFramework Version + 443.0 + IBSystem Version + 8I127 + + Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Resources/sv.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Resources/sv.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib differ diff -Nru handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Resources/sv.lproj/SUUpdateAlert.nib/classes.nib handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Resources/sv.lproj/SUUpdateAlert.nib/classes.nib --- handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Resources/sv.lproj/SUUpdateAlert.nib/classes.nib 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Resources/sv.lproj/SUUpdateAlert.nib/classes.nib 2008-01-16 17:50:50.000000000 +0000 @@ -0,0 +1,21 @@ +{ + IBClasses = ( + {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, + {CLASS = NSObject; LANGUAGE = ObjC; }, + { + ACTIONS = {installUpdate = id; remindMeLater = id; skipThisVersion = id; }; + CLASS = SUUpdateAlert; + LANGUAGE = ObjC; + OUTLETS = {description = NSTextField; releaseNotesView = WebView; }; + SUPERCLASS = NSWindowController; + }, + { + ACTIONS = {installUpdate = id; remindMeLater = id; skipThisVersion = id; }; + CLASS = SUUpdateAlertController; + LANGUAGE = ObjC; + OUTLETS = {releaseNotesView = id; }; + SUPERCLASS = NSWindowController; + } + ); + IBVersion = 1; +} \ No newline at end of file diff -Nru handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Resources/sv.lproj/SUUpdateAlert.nib/info.nib handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Resources/sv.lproj/SUUpdateAlert.nib/info.nib --- handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Resources/sv.lproj/SUUpdateAlert.nib/info.nib 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Resources/sv.lproj/SUUpdateAlert.nib/info.nib 2008-01-16 17:50:50.000000000 +0000 @@ -0,0 +1,16 @@ + + + + + IBDocumentLocation + 425 40 356 240 0 0 1280 832 + IBFramework Version + 446.1 + IBOpenObjects + + 5 + + IBSystem Version + 8I127 + + Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Resources/sv.lproj/SUUpdateAlert.nib/keyedobjects.nib and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Resources/sv.lproj/SUUpdateAlert.nib/keyedobjects.nib differ Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Sparkle and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Sparkle differ diff -Nru handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/A/Headers/Sparkle.h handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/A/Headers/Sparkle.h --- handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/A/Headers/Sparkle.h 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/A/Headers/Sparkle.h 2009-06-16 19:39:04.000000000 +0000 @@ -0,0 +1,21 @@ +// +// Sparkle.h +// Sparkle +// +// Created by Andy Matuschak on 3/16/06. (Modified by CDHW on 23/12/07) +// Copyright 2006 Andy Matuschak. All rights reserved. +// + +#ifndef SPARKLE_H +#define SPARKLE_H + +// This list should include the shared headers. It doesn't matter if some of them aren't shared (unless +// there are name-space collisions) so we can list all of them to start with: + +#import + +#import +#import +#import + +#endif diff -Nru handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/A/Headers/SUAppcast.h handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/A/Headers/SUAppcast.h --- handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/A/Headers/SUAppcast.h 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/A/Headers/SUAppcast.h 2009-06-16 19:39:04.000000000 +0000 @@ -0,0 +1,33 @@ +// +// SUAppcast.h +// Sparkle +// +// Created by Andy Matuschak on 3/12/06. +// Copyright 2006 Andy Matuschak. All rights reserved. +// + +#ifndef SUAPPCAST_H +#define SUAPPCAST_H + +@class SUAppcastItem; +@interface SUAppcast : NSObject { + NSArray *items; + NSString *userAgentString; + id delegate; + NSMutableData *incrementalData; +} + +- (void)fetchAppcastFromURL:(NSURL *)url; +- (void)setDelegate:delegate; +- (void)setUserAgentString:(NSString *)userAgentString; + +- (NSArray *)items; + +@end + +@interface NSObject (SUAppcastDelegate) +- (void)appcastDidFinishLoading:(SUAppcast *)appcast; +- (void)appcast:(SUAppcast *)appcast failedToLoadWithError:(NSError *)error; +@end + +#endif diff -Nru handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/A/Headers/SUAppcastItem.h handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/A/Headers/SUAppcastItem.h --- handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/A/Headers/SUAppcastItem.h 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/A/Headers/SUAppcastItem.h 2009-06-16 19:39:04.000000000 +0000 @@ -0,0 +1,47 @@ +// +// SUAppcastItem.h +// Sparkle +// +// Created by Andy Matuschak on 3/12/06. +// Copyright 2006 Andy Matuschak. All rights reserved. +// + +#ifndef SUAPPCASTITEM_H +#define SUAPPCASTITEM_H + +@interface SUAppcastItem : NSObject { + NSString *title; + NSDate *date; + NSString *itemDescription; + + NSURL *releaseNotesURL; + + NSString *DSASignature; + NSString *minimumSystemVersion; + + NSURL *fileURL; + NSString *versionString; + NSString *displayVersionString; + + NSDictionary *propertiesDictionary; +} + +// Initializes with data from a dictionary provided by the RSS class. +- initWithDictionary:(NSDictionary *)dict; + +- (NSString *)title; +- (NSString *)versionString; +- (NSString *)displayVersionString; +- (NSDate *)date; +- (NSString *)itemDescription; +- (NSURL *)releaseNotesURL; +- (NSURL *)fileURL; +- (NSString *)DSASignature; +- (NSString *)minimumSystemVersion; + +// Returns the dictionary provided in initWithDictionary; this might be useful later for extensions. +- (NSDictionary *)propertiesDictionary; + +@end + +#endif diff -Nru handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/A/Headers/SUUpdater.h handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/A/Headers/SUUpdater.h --- handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/A/Headers/SUUpdater.h 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/A/Headers/SUUpdater.h 2009-06-16 19:39:04.000000000 +0000 @@ -0,0 +1,118 @@ +// +// SUUpdater.h +// Sparkle +// +// Created by Andy Matuschak on 1/4/06. +// Copyright 2006 Andy Matuschak. All rights reserved. +// + +#ifndef SUUPDATER_H +#define SUUPDATER_H + +#import + +@class SUUpdateDriver, SUAppcastItem, SUHost, SUAppcast; +@interface SUUpdater : NSObject { + NSTimer *checkTimer; + SUUpdateDriver *driver; + + SUHost *host; + IBOutlet id delegate; +} + ++ (SUUpdater *)sharedUpdater; ++ (SUUpdater *)updaterForBundle:(NSBundle *)bundle; +- (NSBundle *)hostBundle; + +- (void)setDelegate:(id)delegate; +- delegate; + +- (void)setAutomaticallyChecksForUpdates:(BOOL)automaticallyChecks; +- (BOOL)automaticallyChecksForUpdates; + +- (void)setUpdateCheckInterval:(NSTimeInterval)interval; +- (NSTimeInterval)updateCheckInterval; + +- (void)setFeedURL:(NSURL *)feedURL; +- (NSURL *)feedURL; + +- (void)setSendsSystemProfile:(BOOL)sendsSystemProfile; +- (BOOL)sendsSystemProfile; + +- (void)setAutomaticallyDownloadsUpdates:(BOOL)automaticallyDownloadsUpdates; +- (BOOL)automaticallyDownloadsUpdates; + +// This IBAction is meant for a main menu item. Hook up any menu item to this action, +// and Sparkle will check for updates and report back its findings verbosely. +- (IBAction)checkForUpdates:sender; + +// This kicks off an update meant to be programmatically initiated. That is, it will display no UI unless it actually finds an update, +// in which case it proceeds as usual. If the fully automated updating is turned on, however, this will invoke that behavior, and if an +// update is found, it will be downloaded and prepped for installation. +- (void)checkForUpdatesInBackground; + +// Date of last update check. Returns null if no check has been performed. +- (NSDate*)lastUpdateCheckDate; + +// This begins a "probing" check for updates which will not actually offer to update to that version. The delegate methods, though, +// (up to updater:didFindValidUpdate: and updaterDidNotFindUpdate:), are called, so you can use that information in your UI. +- (void)checkForUpdateInformation; + +// Call this to appropriately schedule or cancel the update checking timer according to the preferences for time interval and automatic checks. This call does not change the date of the next check, but only the internal NSTimer. +- (void)resetUpdateCycle; + +- (BOOL)updateInProgress; +@end + +@interface NSObject (SUUpdaterDelegateInformalProtocol) +// This method allows you to add extra parameters to the appcast URL, potentially based on whether or not Sparkle will also be sending along the system profile. This method should return an array of dictionaries with keys: "key", "value", "displayKey", "displayValue", the latter two being specifically for display to the user. +- (NSArray *)feedParametersForUpdater:(SUUpdater *)updater sendingSystemProfile:(BOOL)sendingProfile; + +// Use this to override the default behavior for Sparkle prompting the user about automatic update checks. +- (BOOL)updaterShouldPromptForPermissionToCheckForUpdates:(SUUpdater *)bundle; + +// Implement this if you want to do some special handling with the appcast once it finishes loading. +- (void)updater:(SUUpdater *)updater didFinishLoadingAppcast:(SUAppcast *)appcast; + +// If you're using special logic or extensions in your appcast, implement this to use your own logic for finding +// a valid update, if any, in the given appcast. +- (SUAppcastItem *)bestValidUpdateInAppcast:(SUAppcast *)appcast forUpdater:(SUUpdater *)bundle; + +// Sent when a valid update is found by the update driver. +- (void)updater:(SUUpdater *)updater didFindValidUpdate:(SUAppcastItem *)update; + +// Sent when a valid update is not found. +- (void)updaterDidNotFindUpdate:(SUUpdater *)update; + +// Sent immediately before installing the specified update. +- (void)updater:(SUUpdater *)updater willInstallUpdate:(SUAppcastItem *)update; + +// Return YES to delay the relaunch until you do some processing; invoke the given NSInvocation to continue. +- (BOOL)updater:(SUUpdater *)updater shouldPostponeRelaunchForUpdate:(SUAppcastItem *)update untilInvoking:(NSInvocation *)invocation; + +// Called immediately before relaunching. +- (void)updaterWillRelaunchApplication:(SUUpdater *)updater; + +// This method allows you to provide a custom version comparator. +// If you don't implement this method or return nil, the standard version comparator will be used. +- (id )versionComparatorForUpdater:(SUUpdater *)updater; + +// Returns the path which is used to relaunch the client after the update is installed. By default, the path of the host bundle. +- (NSString *)pathToRelaunchForUpdater:(SUUpdater *)updater; + +@end + +// Define some minimum intervals to avoid DOS-like checking attacks. These are in seconds. +#ifdef DEBUG +#define SU_MIN_CHECK_INTERVAL 60 +#else +#define SU_MIN_CHECK_INTERVAL 60*60 +#endif + +#ifdef DEBUG +#define SU_DEFAULT_CHECK_INTERVAL 60 +#else +#define SU_DEFAULT_CHECK_INTERVAL 60*60*24 +#endif + +#endif diff -Nru handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/A/Headers/SUVersionComparisonProtocol copy.h handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/A/Headers/SUVersionComparisonProtocol copy.h --- handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/A/Headers/SUVersionComparisonProtocol copy.h 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/A/Headers/SUVersionComparisonProtocol copy.h 2009-06-16 19:39:04.000000000 +0000 @@ -0,0 +1,27 @@ +// +// SUVersionComparisonProtocol.h +// Sparkle +// +// Created by Andy Matuschak on 12/21/07. +// Copyright 2007 Andy Matuschak. All rights reserved. +// + +#ifndef SUVERSIONCOMPARISONPROTOCOL_H +#define SUVERSIONCOMPARISONPROTOCOL_H + +/*! + @protocol + @abstract Implement this protocol to provide version comparison facilities for Sparkle. +*/ +@protocol SUVersionComparison + +/*! + @method + @abstract An abstract method to compare two version strings. + @discussion Should return NSOrderedAscending if b > a, NSOrderedDescending if b < a, and NSOrderedSame if they are equivalent. +*/ +- (NSComparisonResult)compareVersion:(NSString *)versionA toVersion:(NSString *)versionB; + +@end + +#endif diff -Nru handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/A/Headers/SUVersionComparisonProtocol.h handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/A/Headers/SUVersionComparisonProtocol.h --- handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/A/Headers/SUVersionComparisonProtocol.h 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/A/Headers/SUVersionComparisonProtocol.h 2009-06-16 19:39:04.000000000 +0000 @@ -0,0 +1,27 @@ +// +// SUVersionComparisonProtocol.h +// Sparkle +// +// Created by Andy Matuschak on 12/21/07. +// Copyright 2007 Andy Matuschak. All rights reserved. +// + +#ifndef SUVERSIONCOMPARISONPROTOCOL_H +#define SUVERSIONCOMPARISONPROTOCOL_H + +/*! + @protocol + @abstract Implement this protocol to provide version comparison facilities for Sparkle. +*/ +@protocol SUVersionComparison + +/*! + @method + @abstract An abstract method to compare two version strings. + @discussion Should return NSOrderedAscending if b > a, NSOrderedDescending if b < a, and NSOrderedSame if they are equivalent. +*/ +- (NSComparisonResult)compareVersion:(NSString *)versionA toVersion:(NSString *)versionB; + +@end + +#endif Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/A/Resources/de.lproj/Sparkle.strings and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/A/Resources/de.lproj/Sparkle.strings differ diff -Nru handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/A/Resources/de.lproj/SUAutomaticUpdateAlert.nib/classes.nib handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/A/Resources/de.lproj/SUAutomaticUpdateAlert.nib/classes.nib --- handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/A/Resources/de.lproj/SUAutomaticUpdateAlert.nib/classes.nib 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/A/Resources/de.lproj/SUAutomaticUpdateAlert.nib/classes.nib 2008-01-16 17:50:50.000000000 +0000 @@ -0,0 +1,12 @@ +{ + IBClasses = ( + {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, + { + ACTIONS = {relaunchLater = id; relaunchNow = id; }; + CLASS = SUAutomaticUpdateAlert; + LANGUAGE = ObjC; + SUPERCLASS = NSWindowController; + } + ); + IBVersion = 1; +} \ No newline at end of file diff -Nru handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/A/Resources/de.lproj/SUAutomaticUpdateAlert.nib/info.nib handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/A/Resources/de.lproj/SUAutomaticUpdateAlert.nib/info.nib --- handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/A/Resources/de.lproj/SUAutomaticUpdateAlert.nib/info.nib 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/A/Resources/de.lproj/SUAutomaticUpdateAlert.nib/info.nib 2008-01-16 17:50:50.000000000 +0000 @@ -0,0 +1,12 @@ + + + + + IBDocumentLocation + 188 142 356 240 0 0 1280 1002 + IBFramework Version + 443.0 + IBSystem Version + 8I127 + + Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/A/Resources/de.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/A/Resources/de.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib differ diff -Nru handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/A/Resources/de.lproj/SUUpdateAlert.nib/classes.nib handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/A/Resources/de.lproj/SUUpdateAlert.nib/classes.nib --- handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/A/Resources/de.lproj/SUUpdateAlert.nib/classes.nib 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/A/Resources/de.lproj/SUUpdateAlert.nib/classes.nib 2008-01-16 17:50:50.000000000 +0000 @@ -0,0 +1,21 @@ +{ + IBClasses = ( + {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, + {CLASS = NSObject; LANGUAGE = ObjC; }, + { + ACTIONS = {installUpdate = id; remindMeLater = id; skipThisVersion = id; }; + CLASS = SUUpdateAlert; + LANGUAGE = ObjC; + OUTLETS = {description = NSTextField; releaseNotesView = WebView; }; + SUPERCLASS = NSWindowController; + }, + { + ACTIONS = {installUpdate = id; remindMeLater = id; skipThisVersion = id; }; + CLASS = SUUpdateAlertController; + LANGUAGE = ObjC; + OUTLETS = {releaseNotesView = id; }; + SUPERCLASS = NSWindowController; + } + ); + IBVersion = 1; +} \ No newline at end of file diff -Nru handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/A/Resources/de.lproj/SUUpdateAlert.nib/info.nib handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/A/Resources/de.lproj/SUUpdateAlert.nib/info.nib --- handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/A/Resources/de.lproj/SUUpdateAlert.nib/info.nib 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/A/Resources/de.lproj/SUUpdateAlert.nib/info.nib 2008-01-16 17:50:50.000000000 +0000 @@ -0,0 +1,16 @@ + + + + + IBDocumentLocation + 425 40 356 240 0 0 1280 832 + IBFramework Version + 446.1 + IBOpenObjects + + 5 + + IBSystem Version + 8I127 + + Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/A/Resources/de.lproj/SUUpdateAlert.nib/keyedobjects.nib and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/A/Resources/de.lproj/SUUpdateAlert.nib/keyedobjects.nib differ Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/A/Resources/en.lproj/Sparkle.strings and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/A/Resources/en.lproj/Sparkle.strings differ diff -Nru handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/A/Resources/en.lproj/SUAutomaticUpdateAlert.nib/classes.nib handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/A/Resources/en.lproj/SUAutomaticUpdateAlert.nib/classes.nib --- handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/A/Resources/en.lproj/SUAutomaticUpdateAlert.nib/classes.nib 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/A/Resources/en.lproj/SUAutomaticUpdateAlert.nib/classes.nib 2009-06-16 19:39:04.000000000 +0000 @@ -0,0 +1,50 @@ + + + + + IBClasses + + + CLASS + SUWindowController + LANGUAGE + ObjC + SUPERCLASS + NSWindowController + + + ACTIONS + + doNotInstall + id + installLater + id + installNow + id + + CLASS + SUAutomaticUpdateAlert + LANGUAGE + ObjC + SUPERCLASS + SUWindowController + + + CLASS + FirstResponder + LANGUAGE + ObjC + SUPERCLASS + NSObject + + + CLASS + NSObject + LANGUAGE + ObjC + + + IBVersion + 1 + + diff -Nru handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/A/Resources/en.lproj/SUAutomaticUpdateAlert.nib/info.nib handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/A/Resources/en.lproj/SUAutomaticUpdateAlert.nib/info.nib --- handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/A/Resources/en.lproj/SUAutomaticUpdateAlert.nib/info.nib 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/A/Resources/en.lproj/SUAutomaticUpdateAlert.nib/info.nib 2009-06-16 19:39:04.000000000 +0000 @@ -0,0 +1,20 @@ + + + + + IBFramework Version + 658 + IBLastKnownRelativeProjectPath + ../Sparkle.xcodeproj + IBOldestOS + 5 + IBOpenObjects + + 6 + + IBSystem Version + 9C7010 + targetFramework + IBCocoaFramework + + Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/A/Resources/en.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/A/Resources/en.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib differ diff -Nru handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdateAlert.nib/classes.nib handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdateAlert.nib/classes.nib --- handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdateAlert.nib/classes.nib 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdateAlert.nib/classes.nib 2009-06-16 19:39:04.000000000 +0000 @@ -0,0 +1,67 @@ + + + + + IBClasses + + + CLASS + SUWindowController + LANGUAGE + ObjC + SUPERCLASS + NSWindowController + + + CLASS + NSApplication + LANGUAGE + ObjC + SUPERCLASS + NSResponder + + + ACTIONS + + installUpdate + id + remindMeLater + id + skipThisVersion + id + + CLASS + SUUpdateAlert + LANGUAGE + ObjC + OUTLETS + + delegate + id + description + NSTextField + releaseNotesView + WebView + + SUPERCLASS + SUWindowController + + + CLASS + FirstResponder + LANGUAGE + ObjC + SUPERCLASS + NSObject + + + CLASS + NSObject + LANGUAGE + ObjC + + + IBVersion + 1 + + diff -Nru handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdateAlert.nib/info.nib handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdateAlert.nib/info.nib --- handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdateAlert.nib/info.nib 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdateAlert.nib/info.nib 2009-06-16 19:39:04.000000000 +0000 @@ -0,0 +1,20 @@ + + + + + IBFramework Version + 670 + IBLastKnownRelativeProjectPath + ../Sparkle.xcodeproj + IBOldestOS + 5 + IBOpenObjects + + 18 + + IBSystem Version + 10A96 + targetFramework + IBCocoaFramework + + Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdateAlert.nib/keyedobjects.nib and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdateAlert.nib/keyedobjects.nib differ diff -Nru handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdatePermissionPrompt.nib/classes.nib handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdatePermissionPrompt.nib/classes.nib --- handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdatePermissionPrompt.nib/classes.nib 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdatePermissionPrompt.nib/classes.nib 2009-06-16 19:39:04.000000000 +0000 @@ -0,0 +1,59 @@ + + + + + IBClasses + + + CLASS + SUWindowController + LANGUAGE + ObjC + SUPERCLASS + NSWindowController + + + ACTIONS + + finishPrompt + id + toggleMoreInfo + id + + CLASS + SUUpdatePermissionPrompt + LANGUAGE + ObjC + OUTLETS + + delegate + id + descriptionTextField + NSTextField + moreInfoButton + NSButton + moreInfoView + NSView + + SUPERCLASS + SUWindowController + + + CLASS + FirstResponder + LANGUAGE + ObjC + SUPERCLASS + NSObject + + + CLASS + NSObject + LANGUAGE + ObjC + + + IBVersion + 1 + + diff -Nru handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdatePermissionPrompt.nib/info.nib handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdatePermissionPrompt.nib/info.nib --- handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdatePermissionPrompt.nib/info.nib 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdatePermissionPrompt.nib/info.nib 2009-06-16 19:39:04.000000000 +0000 @@ -0,0 +1,21 @@ + + + + + IBFramework Version + 670 + IBLastKnownRelativeProjectPath + ../Sparkle.xcodeproj + IBOldestOS + 5 + IBOpenObjects + + 6 + 41 + + IBSystem Version + 10A96 + targetFramework + IBCocoaFramework + + Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib differ Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/A/Resources/es.lproj/Sparkle.strings and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/A/Resources/es.lproj/Sparkle.strings differ diff -Nru handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/A/Resources/es.lproj/SUAutomaticUpdateAlert.nib/classes.nib handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/A/Resources/es.lproj/SUAutomaticUpdateAlert.nib/classes.nib --- handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/A/Resources/es.lproj/SUAutomaticUpdateAlert.nib/classes.nib 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/A/Resources/es.lproj/SUAutomaticUpdateAlert.nib/classes.nib 2008-01-16 17:50:50.000000000 +0000 @@ -0,0 +1,12 @@ +{ + IBClasses = ( + {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, + { + ACTIONS = {relaunchLater = id; relaunchNow = id; }; + CLASS = SUAutomaticUpdateAlert; + LANGUAGE = ObjC; + SUPERCLASS = NSWindowController; + } + ); + IBVersion = 1; +} \ No newline at end of file diff -Nru handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/A/Resources/es.lproj/SUAutomaticUpdateAlert.nib/info.nib handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/A/Resources/es.lproj/SUAutomaticUpdateAlert.nib/info.nib --- handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/A/Resources/es.lproj/SUAutomaticUpdateAlert.nib/info.nib 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/A/Resources/es.lproj/SUAutomaticUpdateAlert.nib/info.nib 2008-01-16 17:50:50.000000000 +0000 @@ -0,0 +1,12 @@ + + + + + IBDocumentLocation + 188 142 356 240 0 0 1280 1002 + IBFramework Version + 443.0 + IBSystem Version + 8I127 + + Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/A/Resources/es.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/A/Resources/es.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib differ diff -Nru handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdateAlert.nib/classes.nib handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdateAlert.nib/classes.nib --- handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdateAlert.nib/classes.nib 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdateAlert.nib/classes.nib 2008-01-16 17:50:50.000000000 +0000 @@ -0,0 +1,21 @@ +{ + IBClasses = ( + {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, + {CLASS = NSObject; LANGUAGE = ObjC; }, + { + ACTIONS = {installUpdate = id; remindMeLater = id; skipThisVersion = id; }; + CLASS = SUUpdateAlert; + LANGUAGE = ObjC; + OUTLETS = {description = NSTextField; releaseNotesView = WebView; }; + SUPERCLASS = NSWindowController; + }, + { + ACTIONS = {installUpdate = id; remindMeLater = id; skipThisVersion = id; }; + CLASS = SUUpdateAlertController; + LANGUAGE = ObjC; + OUTLETS = {releaseNotesView = id; }; + SUPERCLASS = NSWindowController; + } + ); + IBVersion = 1; +} \ No newline at end of file diff -Nru handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdateAlert.nib/info.nib handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdateAlert.nib/info.nib --- handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdateAlert.nib/info.nib 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdateAlert.nib/info.nib 2008-01-16 17:50:50.000000000 +0000 @@ -0,0 +1,16 @@ + + + + + IBDocumentLocation + 425 40 356 240 0 0 1280 832 + IBFramework Version + 446.1 + IBOpenObjects + + 5 + + IBSystem Version + 8I127 + + Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdateAlert.nib/keyedobjects.nib and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdateAlert.nib/keyedobjects.nib differ Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/A/Resources/fr.lproj/Sparkle.strings and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/A/Resources/fr.lproj/Sparkle.strings differ diff -Nru handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/A/Resources/fr.lproj/SUAutomaticUpdateAlert.nib/classes.nib handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/A/Resources/fr.lproj/SUAutomaticUpdateAlert.nib/classes.nib --- handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/A/Resources/fr.lproj/SUAutomaticUpdateAlert.nib/classes.nib 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/A/Resources/fr.lproj/SUAutomaticUpdateAlert.nib/classes.nib 2008-01-16 17:50:50.000000000 +0000 @@ -0,0 +1,12 @@ +{ + IBClasses = ( + {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, + { + ACTIONS = {relaunchLater = id; relaunchNow = id; }; + CLASS = SUAutomaticUpdateAlert; + LANGUAGE = ObjC; + SUPERCLASS = NSWindowController; + } + ); + IBVersion = 1; +} \ No newline at end of file diff -Nru handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/A/Resources/fr.lproj/SUAutomaticUpdateAlert.nib/info.nib handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/A/Resources/fr.lproj/SUAutomaticUpdateAlert.nib/info.nib --- handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/A/Resources/fr.lproj/SUAutomaticUpdateAlert.nib/info.nib 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/A/Resources/fr.lproj/SUAutomaticUpdateAlert.nib/info.nib 2008-01-16 17:50:50.000000000 +0000 @@ -0,0 +1,12 @@ + + + + + IBDocumentLocation + 188 142 356 240 0 0 1280 1002 + IBFramework Version + 439.0 + IBSystem Version + 8J133 + + Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/A/Resources/fr.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/A/Resources/fr.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib differ diff -Nru handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/A/Resources/fr.lproj/SUUpdateAlert.nib/classes.nib handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/A/Resources/fr.lproj/SUUpdateAlert.nib/classes.nib --- handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/A/Resources/fr.lproj/SUUpdateAlert.nib/classes.nib 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/A/Resources/fr.lproj/SUUpdateAlert.nib/classes.nib 2008-01-16 17:50:50.000000000 +0000 @@ -0,0 +1,21 @@ +{ + IBClasses = ( + {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, + {CLASS = NSObject; LANGUAGE = ObjC; }, + { + ACTIONS = {installUpdate = id; remindMeLater = id; skipThisVersion = id; }; + CLASS = SUUpdateAlert; + LANGUAGE = ObjC; + OUTLETS = {description = NSTextField; releaseNotesView = WebView; }; + SUPERCLASS = NSWindowController; + }, + { + ACTIONS = {installUpdate = id; remindMeLater = id; skipThisVersion = id; }; + CLASS = SUUpdateAlertController; + LANGUAGE = ObjC; + OUTLETS = {releaseNotesView = id; }; + SUPERCLASS = NSWindowController; + } + ); + IBVersion = 1; +} \ No newline at end of file diff -Nru handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/A/Resources/fr.lproj/SUUpdateAlert.nib/info.nib handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/A/Resources/fr.lproj/SUUpdateAlert.nib/info.nib --- handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/A/Resources/fr.lproj/SUUpdateAlert.nib/info.nib 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/A/Resources/fr.lproj/SUUpdateAlert.nib/info.nib 2008-01-16 17:50:50.000000000 +0000 @@ -0,0 +1,16 @@ + + + + + IBDocumentLocation + 425 51 356 240 0 0 1280 1002 + IBFramework Version + 439.0 + IBOpenObjects + + 5 + + IBSystem Version + 8J133 + + Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/A/Resources/fr.lproj/SUUpdateAlert.nib/keyedobjects.nib and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/A/Resources/fr.lproj/SUUpdateAlert.nib/keyedobjects.nib differ diff -Nru handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/A/Resources/Info.plist handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/A/Resources/Info.plist --- handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/A/Resources/Info.plist 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/A/Resources/Info.plist 2009-06-16 19:39:04.000000000 +0000 @@ -0,0 +1,24 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + Sparkle + CFBundleIdentifier + org.andymatuschak.Sparkle + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + Sparkle + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.5 Beta 6 + CFBundleSignature + ???? + CFBundleVersion + 313 + + Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/A/Resources/it.lproj/Sparkle.strings and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/A/Resources/it.lproj/Sparkle.strings differ diff -Nru handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/A/Resources/it.lproj/SUAutomaticUpdateAlert.nib/classes.nib handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/A/Resources/it.lproj/SUAutomaticUpdateAlert.nib/classes.nib --- handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/A/Resources/it.lproj/SUAutomaticUpdateAlert.nib/classes.nib 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/A/Resources/it.lproj/SUAutomaticUpdateAlert.nib/classes.nib 2008-01-16 17:50:50.000000000 +0000 @@ -0,0 +1,12 @@ +{ + IBClasses = ( + {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, + { + ACTIONS = {relaunchLater = id; relaunchNow = id; }; + CLASS = SUAutomaticUpdateAlert; + LANGUAGE = ObjC; + SUPERCLASS = NSWindowController; + } + ); + IBVersion = 1; +} \ No newline at end of file diff -Nru handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/A/Resources/it.lproj/SUAutomaticUpdateAlert.nib/info.nib handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/A/Resources/it.lproj/SUAutomaticUpdateAlert.nib/info.nib --- handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/A/Resources/it.lproj/SUAutomaticUpdateAlert.nib/info.nib 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/A/Resources/it.lproj/SUAutomaticUpdateAlert.nib/info.nib 2008-01-16 17:50:50.000000000 +0000 @@ -0,0 +1,12 @@ + + + + + IBDocumentLocation + 188 142 356 240 0 0 1280 1002 + IBFramework Version + 443.0 + IBSystem Version + 8I127 + + Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/A/Resources/it.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/A/Resources/it.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib differ diff -Nru handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/A/Resources/it.lproj/SUUpdateAlert.nib/classes.nib handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/A/Resources/it.lproj/SUUpdateAlert.nib/classes.nib --- handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/A/Resources/it.lproj/SUUpdateAlert.nib/classes.nib 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/A/Resources/it.lproj/SUUpdateAlert.nib/classes.nib 2008-01-16 17:50:50.000000000 +0000 @@ -0,0 +1,21 @@ +{ + IBClasses = ( + {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, + {CLASS = NSObject; LANGUAGE = ObjC; }, + { + ACTIONS = {installUpdate = id; remindMeLater = id; skipThisVersion = id; }; + CLASS = SUUpdateAlert; + LANGUAGE = ObjC; + OUTLETS = {description = NSTextField; releaseNotesView = WebView; }; + SUPERCLASS = NSWindowController; + }, + { + ACTIONS = {installUpdate = id; remindMeLater = id; skipThisVersion = id; }; + CLASS = SUUpdateAlertController; + LANGUAGE = ObjC; + OUTLETS = {releaseNotesView = id; }; + SUPERCLASS = NSWindowController; + } + ); + IBVersion = 1; +} \ No newline at end of file diff -Nru handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/A/Resources/it.lproj/SUUpdateAlert.nib/info.nib handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/A/Resources/it.lproj/SUUpdateAlert.nib/info.nib --- handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/A/Resources/it.lproj/SUUpdateAlert.nib/info.nib 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/A/Resources/it.lproj/SUUpdateAlert.nib/info.nib 2008-01-16 17:50:50.000000000 +0000 @@ -0,0 +1,16 @@ + + + + + IBDocumentLocation + 425 40 356 240 0 0 1280 832 + IBFramework Version + 446.1 + IBOpenObjects + + 5 + + IBSystem Version + 8I127 + + Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/A/Resources/it.lproj/SUUpdateAlert.nib/keyedobjects.nib and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/A/Resources/it.lproj/SUUpdateAlert.nib/keyedobjects.nib differ diff -Nru handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/A/Resources/License.txt handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/A/Resources/License.txt --- handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/A/Resources/License.txt 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/A/Resources/License.txt 2009-06-16 19:39:04.000000000 +0000 @@ -0,0 +1,7 @@ +Copyright (c) 2006 Andy Matuschak + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/A/Resources/nl.lproj/Sparkle.strings and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/A/Resources/nl.lproj/Sparkle.strings differ diff -Nru handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/A/Resources/nl.lproj/SUAutomaticUpdateAlert.nib/classes.nib handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/A/Resources/nl.lproj/SUAutomaticUpdateAlert.nib/classes.nib --- handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/A/Resources/nl.lproj/SUAutomaticUpdateAlert.nib/classes.nib 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/A/Resources/nl.lproj/SUAutomaticUpdateAlert.nib/classes.nib 2008-01-16 17:50:50.000000000 +0000 @@ -0,0 +1,12 @@ +{ + IBClasses = ( + {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, + { + ACTIONS = {relaunchLater = id; relaunchNow = id; }; + CLASS = SUAutomaticUpdateAlert; + LANGUAGE = ObjC; + SUPERCLASS = NSWindowController; + } + ); + IBVersion = 1; +} \ No newline at end of file diff -Nru handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/A/Resources/nl.lproj/SUAutomaticUpdateAlert.nib/info.nib handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/A/Resources/nl.lproj/SUAutomaticUpdateAlert.nib/info.nib --- handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/A/Resources/nl.lproj/SUAutomaticUpdateAlert.nib/info.nib 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/A/Resources/nl.lproj/SUAutomaticUpdateAlert.nib/info.nib 2008-01-16 17:50:50.000000000 +0000 @@ -0,0 +1,12 @@ + + + + + IBDocumentLocation + 188 142 356 240 0 0 1280 1002 + IBFramework Version + 443.0 + IBSystem Version + 8I127 + + Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/A/Resources/nl.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/A/Resources/nl.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib differ diff -Nru handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdateAlert.nib/classes.nib handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdateAlert.nib/classes.nib --- handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdateAlert.nib/classes.nib 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdateAlert.nib/classes.nib 2008-01-16 17:50:50.000000000 +0000 @@ -0,0 +1,21 @@ +{ + IBClasses = ( + {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, + {CLASS = NSObject; LANGUAGE = ObjC; }, + { + ACTIONS = {installUpdate = id; remindMeLater = id; skipThisVersion = id; }; + CLASS = SUUpdateAlert; + LANGUAGE = ObjC; + OUTLETS = {description = NSTextField; releaseNotesView = WebView; }; + SUPERCLASS = NSWindowController; + }, + { + ACTIONS = {installUpdate = id; remindMeLater = id; skipThisVersion = id; }; + CLASS = SUUpdateAlertController; + LANGUAGE = ObjC; + OUTLETS = {releaseNotesView = id; }; + SUPERCLASS = NSWindowController; + } + ); + IBVersion = 1; +} \ No newline at end of file diff -Nru handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdateAlert.nib/info.nib handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdateAlert.nib/info.nib --- handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdateAlert.nib/info.nib 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdateAlert.nib/info.nib 2008-01-16 17:50:50.000000000 +0000 @@ -0,0 +1,16 @@ + + + + + IBDocumentLocation + 425 40 356 240 0 0 1280 832 + IBFramework Version + 446.1 + IBOpenObjects + + 5 + + IBSystem Version + 8I127 + + Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdateAlert.nib/keyedobjects.nib and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdateAlert.nib/keyedobjects.nib differ Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/A/Resources/relaunch and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/A/Resources/relaunch differ Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/A/Resources/ru.lproj/Sparkle.strings and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/A/Resources/ru.lproj/Sparkle.strings differ diff -Nru handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/A/Resources/ru.lproj/SUAutomaticUpdateAlert.nib/classes.nib handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/A/Resources/ru.lproj/SUAutomaticUpdateAlert.nib/classes.nib --- handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/A/Resources/ru.lproj/SUAutomaticUpdateAlert.nib/classes.nib 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/A/Resources/ru.lproj/SUAutomaticUpdateAlert.nib/classes.nib 2008-01-16 17:50:50.000000000 +0000 @@ -0,0 +1,12 @@ +{ + IBClasses = ( + {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, + { + ACTIONS = {relaunchLater = id; relaunchNow = id; }; + CLASS = SUAutomaticUpdateAlert; + LANGUAGE = ObjC; + SUPERCLASS = NSWindowController; + } + ); + IBVersion = 1; +} \ No newline at end of file diff -Nru handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/A/Resources/ru.lproj/SUAutomaticUpdateAlert.nib/info.nib handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/A/Resources/ru.lproj/SUAutomaticUpdateAlert.nib/info.nib --- handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/A/Resources/ru.lproj/SUAutomaticUpdateAlert.nib/info.nib 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/A/Resources/ru.lproj/SUAutomaticUpdateAlert.nib/info.nib 2008-01-16 17:50:50.000000000 +0000 @@ -0,0 +1,12 @@ + + + + + IBDocumentLocation + 188 142 356 240 0 0 1280 1002 + IBFramework Version + 443.0 + IBSystem Version + 8I127 + + Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/A/Resources/ru.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/A/Resources/ru.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib differ diff -Nru handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdateAlert.nib/classes.nib handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdateAlert.nib/classes.nib --- handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdateAlert.nib/classes.nib 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdateAlert.nib/classes.nib 2008-01-16 17:50:50.000000000 +0000 @@ -0,0 +1,21 @@ +{ + IBClasses = ( + {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, + {CLASS = NSObject; LANGUAGE = ObjC; }, + { + ACTIONS = {installUpdate = id; remindMeLater = id; skipThisVersion = id; }; + CLASS = SUUpdateAlert; + LANGUAGE = ObjC; + OUTLETS = {description = NSTextField; releaseNotesView = WebView; }; + SUPERCLASS = NSWindowController; + }, + { + ACTIONS = {installUpdate = id; remindMeLater = id; skipThisVersion = id; }; + CLASS = SUUpdateAlertController; + LANGUAGE = ObjC; + OUTLETS = {releaseNotesView = id; }; + SUPERCLASS = NSWindowController; + } + ); + IBVersion = 1; +} \ No newline at end of file diff -Nru handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdateAlert.nib/info.nib handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdateAlert.nib/info.nib --- handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdateAlert.nib/info.nib 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdateAlert.nib/info.nib 2008-01-16 17:50:50.000000000 +0000 @@ -0,0 +1,16 @@ + + + + + IBDocumentLocation + 425 40 356 240 0 0 1280 832 + IBFramework Version + 446.1 + IBOpenObjects + + 5 + + IBSystem Version + 8I127 + + Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdateAlert.nib/keyedobjects.nib and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdateAlert.nib/keyedobjects.nib differ diff -Nru handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/A/Resources/SUModelTranslation.plist handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/A/Resources/SUModelTranslation.plist --- handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/A/Resources/SUModelTranslation.plist 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/A/Resources/SUModelTranslation.plist 2009-06-16 19:39:04.000000000 +0000 @@ -0,0 +1,174 @@ + + + + + ADP2,1 + Developer Transition Kit + MacBook1,1 + MacBook (Core Duo) + MacBook2,1 + MacBook (Core 2 Duo) + MacBook4,1 + MacBook (Core 2 Duo Feb 2008) + MacBookAir1,1 + MacBook Air (January 2008) + MacBookPro1,1 + MacBook Pro Core Duo (15-inch) + MacBookPro1,2 + MacBook Pro Core Duo (17-inch) + MacBookPro2,1 + MacBook Pro Core 2 Duo (17-inch) + MacBookPro2,2 + MacBook Pro Core 2 Duo (15-inch) + MacBookPro3,1 + MacBook Pro Core 2 Duo (15-inch LED, Core 2 Duo) + MacBookPro3,2 + MacBook Pro Core 2 Duo (17-inch HD, Core 2 Duo) + MacBookPro4,1 + MacBook Pro (Core 2 Duo Feb 2008) + MacPro1,1 + Mac Pro (four-core) + MacPro2,1 + Mac Pro (eight-core) + MacPro3,1 + Mac Pro (January 2008 4- or 8- core "Harpertown") + Macmini1,1 + Mac Mini (Core Solo/Duo) + PowerBook1,1 + PowerBook G3 + PowerBook2,1 + iBook G3 + PowerBook2,2 + iBook G3 (FireWire) + PowerBook2,3 + iBook G3 + PowerBook2,4 + iBook G3 + PowerBook3,1 + PowerBook G3 (FireWire) + PowerBook3,2 + PowerBook G4 + PowerBook3,3 + PowerBook G4 (Gigabit Ethernet) + PowerBook3,4 + PowerBook G4 (DVI) + PowerBook3,5 + PowerBook G4 (1GHz / 867MHz) + PowerBook4,1 + iBook G3 (Dual USB, Late 2001) + PowerBook4,2 + iBook G3 (16MB VRAM) + PowerBook4,3 + iBook G3 Opaque 16MB VRAM, 32MB VRAM, Early 2003) + PowerBook5,1 + PowerBook G4 (17 inch) + PowerBook5,2 + PowerBook G4 (15 inch FW 800) + PowerBook5,3 + PowerBook G4 (17-inch 1.33GHz) + PowerBook5,4 + PowerBook G4 (15 inch 1.5/1.33GHz) + PowerBook5,5 + PowerBook G4 (17-inch 1.5GHz) + PowerBook5,6 + PowerBook G4 (15 inch 1.67GHz/1.5GHz) + PowerBook5,7 + PowerBook G4 (17-inch 1.67GHz) + PowerBook5,8 + PowerBook G4 (Double layer SD, 15 inch) + PowerBook5,9 + PowerBook G4 (Double layer SD, 17 inch) + PowerBook6,1 + PowerBook G4 (12 inch) + PowerBook6,2 + PowerBook G4 (12 inch, DVI) + PowerBook6,3 + iBook G4 + PowerBook6,4 + PowerBook G4 (12 inch 1.33GHz) + PowerBook6,5 + iBook G4 (Early-Late 2004) + PowerBook6,7 + iBook G4 (Mid 2005) + PowerBook6,8 + PowerBook G4 (12 inch 1.5GHz) + PowerMac1,1 + Power Macintosh G3 (Blue & White) + PowerMac1,2 + Power Macintosh G4 (PCI Graphics) + PowerMac10,1 + Mac Mini G4 + PowerMac10,2 + Mac Mini (Late 2005) + PowerMac11,2 + Power Macintosh G5 (Late 2005) + PowerMac12,1 + iMac G5 (iSight) + PowerMac2,1 + iMac G3 (Slot-loading CD-ROM) + PowerMac2,2 + iMac G3 (Summer 2000) + PowerMac3,1 + Power Macintosh G4 (AGP Graphics) + PowerMac3,2 + Power Macintosh G4 (AGP Graphics) + PowerMac3,3 + Power Macintosh G4 (Gigabit Ethernet) + PowerMac3,4 + Power Macintosh G4 (Digital Audio) + PowerMac3,5 + Power Macintosh G4 (Quick Silver) + PowerMac3,6 + Power Macintosh G4 (Mirrored Drive Door) + PowerMac4,1 + iMac G3 (Early/Summer 2001) + PowerMac4,2 + iMac G4 (Flat Panel) + PowerMac4,4 + eMac + PowerMac4,5 + iMac G4 (17-inch Flat Panel) + PowerMac5,1 + Power Macintosh G4 Cube + PowerMac6,1 + iMac G4 (USB 2.0) + PowerMac6,3 + iMac G4 (20-inch Flat Panel) + PowerMac6,4 + eMac (USB 2.0, 2005) + PowerMac7,2 + Power Macintosh G5 + PowerMac7,3 + Power Macintosh G5 + PowerMac8,1 + iMac G5 + PowerMac8,2 + iMac G5 (Ambient Light Sensor) + PowerMac9,1 + Power Macintosh G5 (Late 2005) + RackMac1,1 + Xserve G4 + RackMac1,2 + Xserve G4 (slot-loading, cluster node) + RackMac3,1 + Xserve G5 + Xserve1,1 + Xserve (Intel Xeon) + Xserve2,1 + Xserve (January 2008 quad-core) + iMac1,1 + iMac G3 (Rev A-D) + iMac4,1 + iMac (Core Duo) + iMac4,2 + iMac for Education (17-inch, Core Duo) + iMac5,1 + iMac (Core 2 Duo, 17 or 20 inch, SuperDrive) + iMac5,2 + iMac (Core 2 Duo, 17 inch, Combo Drive) + iMac6,1 + iMac (Core 2 Duo, 24 inch, SuperDrive) + iMac8,1 + iMac (April 2008) + + diff -Nru handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/A/Resources/SUStatus.nib/classes.nib handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/A/Resources/SUStatus.nib/classes.nib --- handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/A/Resources/SUStatus.nib/classes.nib 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/A/Resources/SUStatus.nib/classes.nib 2009-06-16 19:39:04.000000000 +0000 @@ -0,0 +1,56 @@ + + + + + IBClasses + + + CLASS + SUWindowController + LANGUAGE + ObjC + SUPERCLASS + NSWindowController + + + CLASS + NSApplication + LANGUAGE + ObjC + SUPERCLASS + NSResponder + + + CLASS + FirstResponder + LANGUAGE + ObjC + SUPERCLASS + NSObject + + + CLASS + NSObject + LANGUAGE + ObjC + + + CLASS + SUStatusController + LANGUAGE + ObjC + OUTLETS + + actionButton + NSButton + progressBar + NSProgressIndicator + + SUPERCLASS + SUWindowController + + + IBVersion + 1 + + diff -Nru handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/A/Resources/SUStatus.nib/info.nib handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/A/Resources/SUStatus.nib/info.nib --- handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/A/Resources/SUStatus.nib/info.nib 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/A/Resources/SUStatus.nib/info.nib 2009-06-16 19:39:04.000000000 +0000 @@ -0,0 +1,20 @@ + + + + + IBFramework Version + 670 + IBLastKnownRelativeProjectPath + Sparkle.xcodeproj + IBOldestOS + 5 + IBOpenObjects + + 6 + + IBSystem Version + 10A96 + targetFramework + IBCocoaFramework + + Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/A/Resources/SUStatus.nib/keyedobjects.nib and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/A/Resources/SUStatus.nib/keyedobjects.nib differ Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/A/Resources/sv.lproj/Sparkle.strings and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/A/Resources/sv.lproj/Sparkle.strings differ diff -Nru handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/A/Resources/sv.lproj/SUAutomaticUpdateAlert.nib/classes.nib handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/A/Resources/sv.lproj/SUAutomaticUpdateAlert.nib/classes.nib --- handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/A/Resources/sv.lproj/SUAutomaticUpdateAlert.nib/classes.nib 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/A/Resources/sv.lproj/SUAutomaticUpdateAlert.nib/classes.nib 2008-01-16 17:50:50.000000000 +0000 @@ -0,0 +1,12 @@ +{ + IBClasses = ( + {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, + { + ACTIONS = {relaunchLater = id; relaunchNow = id; }; + CLASS = SUAutomaticUpdateAlert; + LANGUAGE = ObjC; + SUPERCLASS = NSWindowController; + } + ); + IBVersion = 1; +} \ No newline at end of file diff -Nru handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/A/Resources/sv.lproj/SUAutomaticUpdateAlert.nib/info.nib handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/A/Resources/sv.lproj/SUAutomaticUpdateAlert.nib/info.nib --- handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/A/Resources/sv.lproj/SUAutomaticUpdateAlert.nib/info.nib 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/A/Resources/sv.lproj/SUAutomaticUpdateAlert.nib/info.nib 2008-01-16 17:50:50.000000000 +0000 @@ -0,0 +1,12 @@ + + + + + IBDocumentLocation + 188 142 356 240 0 0 1280 1002 + IBFramework Version + 443.0 + IBSystem Version + 8I127 + + Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/A/Resources/sv.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/A/Resources/sv.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib differ diff -Nru handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdateAlert.nib/classes.nib handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdateAlert.nib/classes.nib --- handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdateAlert.nib/classes.nib 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdateAlert.nib/classes.nib 2008-01-16 17:50:50.000000000 +0000 @@ -0,0 +1,21 @@ +{ + IBClasses = ( + {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, + {CLASS = NSObject; LANGUAGE = ObjC; }, + { + ACTIONS = {installUpdate = id; remindMeLater = id; skipThisVersion = id; }; + CLASS = SUUpdateAlert; + LANGUAGE = ObjC; + OUTLETS = {description = NSTextField; releaseNotesView = WebView; }; + SUPERCLASS = NSWindowController; + }, + { + ACTIONS = {installUpdate = id; remindMeLater = id; skipThisVersion = id; }; + CLASS = SUUpdateAlertController; + LANGUAGE = ObjC; + OUTLETS = {releaseNotesView = id; }; + SUPERCLASS = NSWindowController; + } + ); + IBVersion = 1; +} \ No newline at end of file diff -Nru handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdateAlert.nib/info.nib handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdateAlert.nib/info.nib --- handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdateAlert.nib/info.nib 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdateAlert.nib/info.nib 2008-01-16 17:50:50.000000000 +0000 @@ -0,0 +1,16 @@ + + + + + IBDocumentLocation + 425 40 356 240 0 0 1280 832 + IBFramework Version + 446.1 + IBOpenObjects + + 5 + + IBSystem Version + 8I127 + + Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdateAlert.nib/keyedobjects.nib and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdateAlert.nib/keyedobjects.nib differ Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/A/Sparkle and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/A/Sparkle differ diff -Nru handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/Current/Headers/Sparkle.h handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/Current/Headers/Sparkle.h --- handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/Current/Headers/Sparkle.h 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/Current/Headers/Sparkle.h 2009-06-16 19:39:04.000000000 +0000 @@ -0,0 +1,21 @@ +// +// Sparkle.h +// Sparkle +// +// Created by Andy Matuschak on 3/16/06. (Modified by CDHW on 23/12/07) +// Copyright 2006 Andy Matuschak. All rights reserved. +// + +#ifndef SPARKLE_H +#define SPARKLE_H + +// This list should include the shared headers. It doesn't matter if some of them aren't shared (unless +// there are name-space collisions) so we can list all of them to start with: + +#import + +#import +#import +#import + +#endif diff -Nru handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/Current/Headers/SUAppcast.h handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/Current/Headers/SUAppcast.h --- handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/Current/Headers/SUAppcast.h 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/Current/Headers/SUAppcast.h 2009-06-16 19:39:04.000000000 +0000 @@ -0,0 +1,33 @@ +// +// SUAppcast.h +// Sparkle +// +// Created by Andy Matuschak on 3/12/06. +// Copyright 2006 Andy Matuschak. All rights reserved. +// + +#ifndef SUAPPCAST_H +#define SUAPPCAST_H + +@class SUAppcastItem; +@interface SUAppcast : NSObject { + NSArray *items; + NSString *userAgentString; + id delegate; + NSMutableData *incrementalData; +} + +- (void)fetchAppcastFromURL:(NSURL *)url; +- (void)setDelegate:delegate; +- (void)setUserAgentString:(NSString *)userAgentString; + +- (NSArray *)items; + +@end + +@interface NSObject (SUAppcastDelegate) +- (void)appcastDidFinishLoading:(SUAppcast *)appcast; +- (void)appcast:(SUAppcast *)appcast failedToLoadWithError:(NSError *)error; +@end + +#endif diff -Nru handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/Current/Headers/SUAppcastItem.h handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/Current/Headers/SUAppcastItem.h --- handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/Current/Headers/SUAppcastItem.h 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/Current/Headers/SUAppcastItem.h 2009-06-16 19:39:04.000000000 +0000 @@ -0,0 +1,47 @@ +// +// SUAppcastItem.h +// Sparkle +// +// Created by Andy Matuschak on 3/12/06. +// Copyright 2006 Andy Matuschak. All rights reserved. +// + +#ifndef SUAPPCASTITEM_H +#define SUAPPCASTITEM_H + +@interface SUAppcastItem : NSObject { + NSString *title; + NSDate *date; + NSString *itemDescription; + + NSURL *releaseNotesURL; + + NSString *DSASignature; + NSString *minimumSystemVersion; + + NSURL *fileURL; + NSString *versionString; + NSString *displayVersionString; + + NSDictionary *propertiesDictionary; +} + +// Initializes with data from a dictionary provided by the RSS class. +- initWithDictionary:(NSDictionary *)dict; + +- (NSString *)title; +- (NSString *)versionString; +- (NSString *)displayVersionString; +- (NSDate *)date; +- (NSString *)itemDescription; +- (NSURL *)releaseNotesURL; +- (NSURL *)fileURL; +- (NSString *)DSASignature; +- (NSString *)minimumSystemVersion; + +// Returns the dictionary provided in initWithDictionary; this might be useful later for extensions. +- (NSDictionary *)propertiesDictionary; + +@end + +#endif diff -Nru handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/Current/Headers/SUUpdater.h handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/Current/Headers/SUUpdater.h --- handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/Current/Headers/SUUpdater.h 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/Current/Headers/SUUpdater.h 2009-06-16 19:39:04.000000000 +0000 @@ -0,0 +1,118 @@ +// +// SUUpdater.h +// Sparkle +// +// Created by Andy Matuschak on 1/4/06. +// Copyright 2006 Andy Matuschak. All rights reserved. +// + +#ifndef SUUPDATER_H +#define SUUPDATER_H + +#import + +@class SUUpdateDriver, SUAppcastItem, SUHost, SUAppcast; +@interface SUUpdater : NSObject { + NSTimer *checkTimer; + SUUpdateDriver *driver; + + SUHost *host; + IBOutlet id delegate; +} + ++ (SUUpdater *)sharedUpdater; ++ (SUUpdater *)updaterForBundle:(NSBundle *)bundle; +- (NSBundle *)hostBundle; + +- (void)setDelegate:(id)delegate; +- delegate; + +- (void)setAutomaticallyChecksForUpdates:(BOOL)automaticallyChecks; +- (BOOL)automaticallyChecksForUpdates; + +- (void)setUpdateCheckInterval:(NSTimeInterval)interval; +- (NSTimeInterval)updateCheckInterval; + +- (void)setFeedURL:(NSURL *)feedURL; +- (NSURL *)feedURL; + +- (void)setSendsSystemProfile:(BOOL)sendsSystemProfile; +- (BOOL)sendsSystemProfile; + +- (void)setAutomaticallyDownloadsUpdates:(BOOL)automaticallyDownloadsUpdates; +- (BOOL)automaticallyDownloadsUpdates; + +// This IBAction is meant for a main menu item. Hook up any menu item to this action, +// and Sparkle will check for updates and report back its findings verbosely. +- (IBAction)checkForUpdates:sender; + +// This kicks off an update meant to be programmatically initiated. That is, it will display no UI unless it actually finds an update, +// in which case it proceeds as usual. If the fully automated updating is turned on, however, this will invoke that behavior, and if an +// update is found, it will be downloaded and prepped for installation. +- (void)checkForUpdatesInBackground; + +// Date of last update check. Returns null if no check has been performed. +- (NSDate*)lastUpdateCheckDate; + +// This begins a "probing" check for updates which will not actually offer to update to that version. The delegate methods, though, +// (up to updater:didFindValidUpdate: and updaterDidNotFindUpdate:), are called, so you can use that information in your UI. +- (void)checkForUpdateInformation; + +// Call this to appropriately schedule or cancel the update checking timer according to the preferences for time interval and automatic checks. This call does not change the date of the next check, but only the internal NSTimer. +- (void)resetUpdateCycle; + +- (BOOL)updateInProgress; +@end + +@interface NSObject (SUUpdaterDelegateInformalProtocol) +// This method allows you to add extra parameters to the appcast URL, potentially based on whether or not Sparkle will also be sending along the system profile. This method should return an array of dictionaries with keys: "key", "value", "displayKey", "displayValue", the latter two being specifically for display to the user. +- (NSArray *)feedParametersForUpdater:(SUUpdater *)updater sendingSystemProfile:(BOOL)sendingProfile; + +// Use this to override the default behavior for Sparkle prompting the user about automatic update checks. +- (BOOL)updaterShouldPromptForPermissionToCheckForUpdates:(SUUpdater *)bundle; + +// Implement this if you want to do some special handling with the appcast once it finishes loading. +- (void)updater:(SUUpdater *)updater didFinishLoadingAppcast:(SUAppcast *)appcast; + +// If you're using special logic or extensions in your appcast, implement this to use your own logic for finding +// a valid update, if any, in the given appcast. +- (SUAppcastItem *)bestValidUpdateInAppcast:(SUAppcast *)appcast forUpdater:(SUUpdater *)bundle; + +// Sent when a valid update is found by the update driver. +- (void)updater:(SUUpdater *)updater didFindValidUpdate:(SUAppcastItem *)update; + +// Sent when a valid update is not found. +- (void)updaterDidNotFindUpdate:(SUUpdater *)update; + +// Sent immediately before installing the specified update. +- (void)updater:(SUUpdater *)updater willInstallUpdate:(SUAppcastItem *)update; + +// Return YES to delay the relaunch until you do some processing; invoke the given NSInvocation to continue. +- (BOOL)updater:(SUUpdater *)updater shouldPostponeRelaunchForUpdate:(SUAppcastItem *)update untilInvoking:(NSInvocation *)invocation; + +// Called immediately before relaunching. +- (void)updaterWillRelaunchApplication:(SUUpdater *)updater; + +// This method allows you to provide a custom version comparator. +// If you don't implement this method or return nil, the standard version comparator will be used. +- (id )versionComparatorForUpdater:(SUUpdater *)updater; + +// Returns the path which is used to relaunch the client after the update is installed. By default, the path of the host bundle. +- (NSString *)pathToRelaunchForUpdater:(SUUpdater *)updater; + +@end + +// Define some minimum intervals to avoid DOS-like checking attacks. These are in seconds. +#ifdef DEBUG +#define SU_MIN_CHECK_INTERVAL 60 +#else +#define SU_MIN_CHECK_INTERVAL 60*60 +#endif + +#ifdef DEBUG +#define SU_DEFAULT_CHECK_INTERVAL 60 +#else +#define SU_DEFAULT_CHECK_INTERVAL 60*60*24 +#endif + +#endif diff -Nru handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/Current/Headers/SUVersionComparisonProtocol copy.h handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/Current/Headers/SUVersionComparisonProtocol copy.h --- handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/Current/Headers/SUVersionComparisonProtocol copy.h 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/Current/Headers/SUVersionComparisonProtocol copy.h 2009-06-16 19:39:04.000000000 +0000 @@ -0,0 +1,27 @@ +// +// SUVersionComparisonProtocol.h +// Sparkle +// +// Created by Andy Matuschak on 12/21/07. +// Copyright 2007 Andy Matuschak. All rights reserved. +// + +#ifndef SUVERSIONCOMPARISONPROTOCOL_H +#define SUVERSIONCOMPARISONPROTOCOL_H + +/*! + @protocol + @abstract Implement this protocol to provide version comparison facilities for Sparkle. +*/ +@protocol SUVersionComparison + +/*! + @method + @abstract An abstract method to compare two version strings. + @discussion Should return NSOrderedAscending if b > a, NSOrderedDescending if b < a, and NSOrderedSame if they are equivalent. +*/ +- (NSComparisonResult)compareVersion:(NSString *)versionA toVersion:(NSString *)versionB; + +@end + +#endif diff -Nru handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/Current/Headers/SUVersionComparisonProtocol.h handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/Current/Headers/SUVersionComparisonProtocol.h --- handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/Current/Headers/SUVersionComparisonProtocol.h 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/Current/Headers/SUVersionComparisonProtocol.h 2009-06-16 19:39:04.000000000 +0000 @@ -0,0 +1,27 @@ +// +// SUVersionComparisonProtocol.h +// Sparkle +// +// Created by Andy Matuschak on 12/21/07. +// Copyright 2007 Andy Matuschak. All rights reserved. +// + +#ifndef SUVERSIONCOMPARISONPROTOCOL_H +#define SUVERSIONCOMPARISONPROTOCOL_H + +/*! + @protocol + @abstract Implement this protocol to provide version comparison facilities for Sparkle. +*/ +@protocol SUVersionComparison + +/*! + @method + @abstract An abstract method to compare two version strings. + @discussion Should return NSOrderedAscending if b > a, NSOrderedDescending if b < a, and NSOrderedSame if they are equivalent. +*/ +- (NSComparisonResult)compareVersion:(NSString *)versionA toVersion:(NSString *)versionB; + +@end + +#endif Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/Current/Resources/de.lproj/Sparkle.strings and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/Current/Resources/de.lproj/Sparkle.strings differ diff -Nru handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/Current/Resources/de.lproj/SUAutomaticUpdateAlert.nib/classes.nib handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/Current/Resources/de.lproj/SUAutomaticUpdateAlert.nib/classes.nib --- handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/Current/Resources/de.lproj/SUAutomaticUpdateAlert.nib/classes.nib 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/Current/Resources/de.lproj/SUAutomaticUpdateAlert.nib/classes.nib 2008-01-16 17:50:50.000000000 +0000 @@ -0,0 +1,12 @@ +{ + IBClasses = ( + {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, + { + ACTIONS = {relaunchLater = id; relaunchNow = id; }; + CLASS = SUAutomaticUpdateAlert; + LANGUAGE = ObjC; + SUPERCLASS = NSWindowController; + } + ); + IBVersion = 1; +} \ No newline at end of file diff -Nru handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/Current/Resources/de.lproj/SUAutomaticUpdateAlert.nib/info.nib handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/Current/Resources/de.lproj/SUAutomaticUpdateAlert.nib/info.nib --- handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/Current/Resources/de.lproj/SUAutomaticUpdateAlert.nib/info.nib 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/Current/Resources/de.lproj/SUAutomaticUpdateAlert.nib/info.nib 2008-01-16 17:50:50.000000000 +0000 @@ -0,0 +1,12 @@ + + + + + IBDocumentLocation + 188 142 356 240 0 0 1280 1002 + IBFramework Version + 443.0 + IBSystem Version + 8I127 + + Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/Current/Resources/de.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/Current/Resources/de.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib differ diff -Nru handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/Current/Resources/de.lproj/SUUpdateAlert.nib/classes.nib handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/Current/Resources/de.lproj/SUUpdateAlert.nib/classes.nib --- handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/Current/Resources/de.lproj/SUUpdateAlert.nib/classes.nib 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/Current/Resources/de.lproj/SUUpdateAlert.nib/classes.nib 2008-01-16 17:50:50.000000000 +0000 @@ -0,0 +1,21 @@ +{ + IBClasses = ( + {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, + {CLASS = NSObject; LANGUAGE = ObjC; }, + { + ACTIONS = {installUpdate = id; remindMeLater = id; skipThisVersion = id; }; + CLASS = SUUpdateAlert; + LANGUAGE = ObjC; + OUTLETS = {description = NSTextField; releaseNotesView = WebView; }; + SUPERCLASS = NSWindowController; + }, + { + ACTIONS = {installUpdate = id; remindMeLater = id; skipThisVersion = id; }; + CLASS = SUUpdateAlertController; + LANGUAGE = ObjC; + OUTLETS = {releaseNotesView = id; }; + SUPERCLASS = NSWindowController; + } + ); + IBVersion = 1; +} \ No newline at end of file diff -Nru handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/Current/Resources/de.lproj/SUUpdateAlert.nib/info.nib handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/Current/Resources/de.lproj/SUUpdateAlert.nib/info.nib --- handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/Current/Resources/de.lproj/SUUpdateAlert.nib/info.nib 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/Current/Resources/de.lproj/SUUpdateAlert.nib/info.nib 2008-01-16 17:50:50.000000000 +0000 @@ -0,0 +1,16 @@ + + + + + IBDocumentLocation + 425 40 356 240 0 0 1280 832 + IBFramework Version + 446.1 + IBOpenObjects + + 5 + + IBSystem Version + 8I127 + + Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/Current/Resources/de.lproj/SUUpdateAlert.nib/keyedobjects.nib and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/Current/Resources/de.lproj/SUUpdateAlert.nib/keyedobjects.nib differ Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/Current/Resources/en.lproj/Sparkle.strings and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/Current/Resources/en.lproj/Sparkle.strings differ diff -Nru handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/Current/Resources/en.lproj/SUAutomaticUpdateAlert.nib/classes.nib handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/Current/Resources/en.lproj/SUAutomaticUpdateAlert.nib/classes.nib --- handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/Current/Resources/en.lproj/SUAutomaticUpdateAlert.nib/classes.nib 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/Current/Resources/en.lproj/SUAutomaticUpdateAlert.nib/classes.nib 2009-06-16 19:39:04.000000000 +0000 @@ -0,0 +1,50 @@ + + + + + IBClasses + + + CLASS + SUWindowController + LANGUAGE + ObjC + SUPERCLASS + NSWindowController + + + ACTIONS + + doNotInstall + id + installLater + id + installNow + id + + CLASS + SUAutomaticUpdateAlert + LANGUAGE + ObjC + SUPERCLASS + SUWindowController + + + CLASS + FirstResponder + LANGUAGE + ObjC + SUPERCLASS + NSObject + + + CLASS + NSObject + LANGUAGE + ObjC + + + IBVersion + 1 + + diff -Nru handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/Current/Resources/en.lproj/SUAutomaticUpdateAlert.nib/info.nib handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/Current/Resources/en.lproj/SUAutomaticUpdateAlert.nib/info.nib --- handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/Current/Resources/en.lproj/SUAutomaticUpdateAlert.nib/info.nib 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/Current/Resources/en.lproj/SUAutomaticUpdateAlert.nib/info.nib 2009-06-16 19:39:04.000000000 +0000 @@ -0,0 +1,20 @@ + + + + + IBFramework Version + 658 + IBLastKnownRelativeProjectPath + ../Sparkle.xcodeproj + IBOldestOS + 5 + IBOpenObjects + + 6 + + IBSystem Version + 9C7010 + targetFramework + IBCocoaFramework + + Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/Current/Resources/en.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/Current/Resources/en.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib differ diff -Nru handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/Current/Resources/en.lproj/SUUpdateAlert.nib/classes.nib handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/Current/Resources/en.lproj/SUUpdateAlert.nib/classes.nib --- handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/Current/Resources/en.lproj/SUUpdateAlert.nib/classes.nib 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/Current/Resources/en.lproj/SUUpdateAlert.nib/classes.nib 2009-06-16 19:39:04.000000000 +0000 @@ -0,0 +1,67 @@ + + + + + IBClasses + + + CLASS + SUWindowController + LANGUAGE + ObjC + SUPERCLASS + NSWindowController + + + CLASS + NSApplication + LANGUAGE + ObjC + SUPERCLASS + NSResponder + + + ACTIONS + + installUpdate + id + remindMeLater + id + skipThisVersion + id + + CLASS + SUUpdateAlert + LANGUAGE + ObjC + OUTLETS + + delegate + id + description + NSTextField + releaseNotesView + WebView + + SUPERCLASS + SUWindowController + + + CLASS + FirstResponder + LANGUAGE + ObjC + SUPERCLASS + NSObject + + + CLASS + NSObject + LANGUAGE + ObjC + + + IBVersion + 1 + + diff -Nru handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/Current/Resources/en.lproj/SUUpdateAlert.nib/info.nib handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/Current/Resources/en.lproj/SUUpdateAlert.nib/info.nib --- handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/Current/Resources/en.lproj/SUUpdateAlert.nib/info.nib 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/Current/Resources/en.lproj/SUUpdateAlert.nib/info.nib 2009-06-16 19:39:04.000000000 +0000 @@ -0,0 +1,20 @@ + + + + + IBFramework Version + 670 + IBLastKnownRelativeProjectPath + ../Sparkle.xcodeproj + IBOldestOS + 5 + IBOpenObjects + + 18 + + IBSystem Version + 10A96 + targetFramework + IBCocoaFramework + + Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/Current/Resources/en.lproj/SUUpdateAlert.nib/keyedobjects.nib and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/Current/Resources/en.lproj/SUUpdateAlert.nib/keyedobjects.nib differ diff -Nru handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/Current/Resources/en.lproj/SUUpdatePermissionPrompt.nib/classes.nib handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/Current/Resources/en.lproj/SUUpdatePermissionPrompt.nib/classes.nib --- handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/Current/Resources/en.lproj/SUUpdatePermissionPrompt.nib/classes.nib 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/Current/Resources/en.lproj/SUUpdatePermissionPrompt.nib/classes.nib 2009-06-16 19:39:04.000000000 +0000 @@ -0,0 +1,59 @@ + + + + + IBClasses + + + CLASS + SUWindowController + LANGUAGE + ObjC + SUPERCLASS + NSWindowController + + + ACTIONS + + finishPrompt + id + toggleMoreInfo + id + + CLASS + SUUpdatePermissionPrompt + LANGUAGE + ObjC + OUTLETS + + delegate + id + descriptionTextField + NSTextField + moreInfoButton + NSButton + moreInfoView + NSView + + SUPERCLASS + SUWindowController + + + CLASS + FirstResponder + LANGUAGE + ObjC + SUPERCLASS + NSObject + + + CLASS + NSObject + LANGUAGE + ObjC + + + IBVersion + 1 + + diff -Nru handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/Current/Resources/en.lproj/SUUpdatePermissionPrompt.nib/info.nib handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/Current/Resources/en.lproj/SUUpdatePermissionPrompt.nib/info.nib --- handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/Current/Resources/en.lproj/SUUpdatePermissionPrompt.nib/info.nib 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/Current/Resources/en.lproj/SUUpdatePermissionPrompt.nib/info.nib 2009-06-16 19:39:04.000000000 +0000 @@ -0,0 +1,21 @@ + + + + + IBFramework Version + 670 + IBLastKnownRelativeProjectPath + ../Sparkle.xcodeproj + IBOldestOS + 5 + IBOpenObjects + + 6 + 41 + + IBSystem Version + 10A96 + targetFramework + IBCocoaFramework + + Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/Current/Resources/en.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/Current/Resources/en.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib differ Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/Current/Resources/es.lproj/Sparkle.strings and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/Current/Resources/es.lproj/Sparkle.strings differ diff -Nru handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/Current/Resources/es.lproj/SUAutomaticUpdateAlert.nib/classes.nib handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/Current/Resources/es.lproj/SUAutomaticUpdateAlert.nib/classes.nib --- handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/Current/Resources/es.lproj/SUAutomaticUpdateAlert.nib/classes.nib 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/Current/Resources/es.lproj/SUAutomaticUpdateAlert.nib/classes.nib 2008-01-16 17:50:50.000000000 +0000 @@ -0,0 +1,12 @@ +{ + IBClasses = ( + {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, + { + ACTIONS = {relaunchLater = id; relaunchNow = id; }; + CLASS = SUAutomaticUpdateAlert; + LANGUAGE = ObjC; + SUPERCLASS = NSWindowController; + } + ); + IBVersion = 1; +} \ No newline at end of file diff -Nru handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/Current/Resources/es.lproj/SUAutomaticUpdateAlert.nib/info.nib handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/Current/Resources/es.lproj/SUAutomaticUpdateAlert.nib/info.nib --- handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/Current/Resources/es.lproj/SUAutomaticUpdateAlert.nib/info.nib 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/Current/Resources/es.lproj/SUAutomaticUpdateAlert.nib/info.nib 2008-01-16 17:50:50.000000000 +0000 @@ -0,0 +1,12 @@ + + + + + IBDocumentLocation + 188 142 356 240 0 0 1280 1002 + IBFramework Version + 443.0 + IBSystem Version + 8I127 + + Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/Current/Resources/es.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/Current/Resources/es.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib differ diff -Nru handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/Current/Resources/es.lproj/SUUpdateAlert.nib/classes.nib handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/Current/Resources/es.lproj/SUUpdateAlert.nib/classes.nib --- handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/Current/Resources/es.lproj/SUUpdateAlert.nib/classes.nib 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/Current/Resources/es.lproj/SUUpdateAlert.nib/classes.nib 2008-01-16 17:50:50.000000000 +0000 @@ -0,0 +1,21 @@ +{ + IBClasses = ( + {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, + {CLASS = NSObject; LANGUAGE = ObjC; }, + { + ACTIONS = {installUpdate = id; remindMeLater = id; skipThisVersion = id; }; + CLASS = SUUpdateAlert; + LANGUAGE = ObjC; + OUTLETS = {description = NSTextField; releaseNotesView = WebView; }; + SUPERCLASS = NSWindowController; + }, + { + ACTIONS = {installUpdate = id; remindMeLater = id; skipThisVersion = id; }; + CLASS = SUUpdateAlertController; + LANGUAGE = ObjC; + OUTLETS = {releaseNotesView = id; }; + SUPERCLASS = NSWindowController; + } + ); + IBVersion = 1; +} \ No newline at end of file diff -Nru handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/Current/Resources/es.lproj/SUUpdateAlert.nib/info.nib handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/Current/Resources/es.lproj/SUUpdateAlert.nib/info.nib --- handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/Current/Resources/es.lproj/SUUpdateAlert.nib/info.nib 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/Current/Resources/es.lproj/SUUpdateAlert.nib/info.nib 2008-01-16 17:50:50.000000000 +0000 @@ -0,0 +1,16 @@ + + + + + IBDocumentLocation + 425 40 356 240 0 0 1280 832 + IBFramework Version + 446.1 + IBOpenObjects + + 5 + + IBSystem Version + 8I127 + + Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/Current/Resources/es.lproj/SUUpdateAlert.nib/keyedobjects.nib and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/Current/Resources/es.lproj/SUUpdateAlert.nib/keyedobjects.nib differ Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/Current/Resources/fr.lproj/Sparkle.strings and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/Current/Resources/fr.lproj/Sparkle.strings differ diff -Nru handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/Current/Resources/fr.lproj/SUAutomaticUpdateAlert.nib/classes.nib handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/Current/Resources/fr.lproj/SUAutomaticUpdateAlert.nib/classes.nib --- handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/Current/Resources/fr.lproj/SUAutomaticUpdateAlert.nib/classes.nib 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/Current/Resources/fr.lproj/SUAutomaticUpdateAlert.nib/classes.nib 2008-01-16 17:50:50.000000000 +0000 @@ -0,0 +1,12 @@ +{ + IBClasses = ( + {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, + { + ACTIONS = {relaunchLater = id; relaunchNow = id; }; + CLASS = SUAutomaticUpdateAlert; + LANGUAGE = ObjC; + SUPERCLASS = NSWindowController; + } + ); + IBVersion = 1; +} \ No newline at end of file diff -Nru handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/Current/Resources/fr.lproj/SUAutomaticUpdateAlert.nib/info.nib handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/Current/Resources/fr.lproj/SUAutomaticUpdateAlert.nib/info.nib --- handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/Current/Resources/fr.lproj/SUAutomaticUpdateAlert.nib/info.nib 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/Current/Resources/fr.lproj/SUAutomaticUpdateAlert.nib/info.nib 2008-01-16 17:50:50.000000000 +0000 @@ -0,0 +1,12 @@ + + + + + IBDocumentLocation + 188 142 356 240 0 0 1280 1002 + IBFramework Version + 439.0 + IBSystem Version + 8J133 + + Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/Current/Resources/fr.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/Current/Resources/fr.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib differ diff -Nru handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/Current/Resources/fr.lproj/SUUpdateAlert.nib/classes.nib handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/Current/Resources/fr.lproj/SUUpdateAlert.nib/classes.nib --- handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/Current/Resources/fr.lproj/SUUpdateAlert.nib/classes.nib 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/Current/Resources/fr.lproj/SUUpdateAlert.nib/classes.nib 2008-01-16 17:50:50.000000000 +0000 @@ -0,0 +1,21 @@ +{ + IBClasses = ( + {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, + {CLASS = NSObject; LANGUAGE = ObjC; }, + { + ACTIONS = {installUpdate = id; remindMeLater = id; skipThisVersion = id; }; + CLASS = SUUpdateAlert; + LANGUAGE = ObjC; + OUTLETS = {description = NSTextField; releaseNotesView = WebView; }; + SUPERCLASS = NSWindowController; + }, + { + ACTIONS = {installUpdate = id; remindMeLater = id; skipThisVersion = id; }; + CLASS = SUUpdateAlertController; + LANGUAGE = ObjC; + OUTLETS = {releaseNotesView = id; }; + SUPERCLASS = NSWindowController; + } + ); + IBVersion = 1; +} \ No newline at end of file diff -Nru handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/Current/Resources/fr.lproj/SUUpdateAlert.nib/info.nib handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/Current/Resources/fr.lproj/SUUpdateAlert.nib/info.nib --- handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/Current/Resources/fr.lproj/SUUpdateAlert.nib/info.nib 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/Current/Resources/fr.lproj/SUUpdateAlert.nib/info.nib 2008-01-16 17:50:50.000000000 +0000 @@ -0,0 +1,16 @@ + + + + + IBDocumentLocation + 425 51 356 240 0 0 1280 1002 + IBFramework Version + 439.0 + IBOpenObjects + + 5 + + IBSystem Version + 8J133 + + Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/Current/Resources/fr.lproj/SUUpdateAlert.nib/keyedobjects.nib and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/Current/Resources/fr.lproj/SUUpdateAlert.nib/keyedobjects.nib differ diff -Nru handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/Current/Resources/Info.plist handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/Current/Resources/Info.plist --- handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/Current/Resources/Info.plist 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/Current/Resources/Info.plist 2009-06-16 19:39:04.000000000 +0000 @@ -0,0 +1,24 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + Sparkle + CFBundleIdentifier + org.andymatuschak.Sparkle + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + Sparkle + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.5 Beta 6 + CFBundleSignature + ???? + CFBundleVersion + 313 + + Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/Current/Resources/it.lproj/Sparkle.strings and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/Current/Resources/it.lproj/Sparkle.strings differ diff -Nru handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/Current/Resources/it.lproj/SUAutomaticUpdateAlert.nib/classes.nib handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/Current/Resources/it.lproj/SUAutomaticUpdateAlert.nib/classes.nib --- handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/Current/Resources/it.lproj/SUAutomaticUpdateAlert.nib/classes.nib 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/Current/Resources/it.lproj/SUAutomaticUpdateAlert.nib/classes.nib 2008-01-16 17:50:50.000000000 +0000 @@ -0,0 +1,12 @@ +{ + IBClasses = ( + {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, + { + ACTIONS = {relaunchLater = id; relaunchNow = id; }; + CLASS = SUAutomaticUpdateAlert; + LANGUAGE = ObjC; + SUPERCLASS = NSWindowController; + } + ); + IBVersion = 1; +} \ No newline at end of file diff -Nru handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/Current/Resources/it.lproj/SUAutomaticUpdateAlert.nib/info.nib handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/Current/Resources/it.lproj/SUAutomaticUpdateAlert.nib/info.nib --- handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/Current/Resources/it.lproj/SUAutomaticUpdateAlert.nib/info.nib 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/Current/Resources/it.lproj/SUAutomaticUpdateAlert.nib/info.nib 2008-01-16 17:50:50.000000000 +0000 @@ -0,0 +1,12 @@ + + + + + IBDocumentLocation + 188 142 356 240 0 0 1280 1002 + IBFramework Version + 443.0 + IBSystem Version + 8I127 + + Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/Current/Resources/it.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/Current/Resources/it.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib differ diff -Nru handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/Current/Resources/it.lproj/SUUpdateAlert.nib/classes.nib handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/Current/Resources/it.lproj/SUUpdateAlert.nib/classes.nib --- handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/Current/Resources/it.lproj/SUUpdateAlert.nib/classes.nib 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/Current/Resources/it.lproj/SUUpdateAlert.nib/classes.nib 2008-01-16 17:50:50.000000000 +0000 @@ -0,0 +1,21 @@ +{ + IBClasses = ( + {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, + {CLASS = NSObject; LANGUAGE = ObjC; }, + { + ACTIONS = {installUpdate = id; remindMeLater = id; skipThisVersion = id; }; + CLASS = SUUpdateAlert; + LANGUAGE = ObjC; + OUTLETS = {description = NSTextField; releaseNotesView = WebView; }; + SUPERCLASS = NSWindowController; + }, + { + ACTIONS = {installUpdate = id; remindMeLater = id; skipThisVersion = id; }; + CLASS = SUUpdateAlertController; + LANGUAGE = ObjC; + OUTLETS = {releaseNotesView = id; }; + SUPERCLASS = NSWindowController; + } + ); + IBVersion = 1; +} \ No newline at end of file diff -Nru handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/Current/Resources/it.lproj/SUUpdateAlert.nib/info.nib handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/Current/Resources/it.lproj/SUUpdateAlert.nib/info.nib --- handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/Current/Resources/it.lproj/SUUpdateAlert.nib/info.nib 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/Current/Resources/it.lproj/SUUpdateAlert.nib/info.nib 2008-01-16 17:50:50.000000000 +0000 @@ -0,0 +1,16 @@ + + + + + IBDocumentLocation + 425 40 356 240 0 0 1280 832 + IBFramework Version + 446.1 + IBOpenObjects + + 5 + + IBSystem Version + 8I127 + + Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/Current/Resources/it.lproj/SUUpdateAlert.nib/keyedobjects.nib and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/Current/Resources/it.lproj/SUUpdateAlert.nib/keyedobjects.nib differ diff -Nru handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/Current/Resources/License.txt handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/Current/Resources/License.txt --- handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/Current/Resources/License.txt 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/Current/Resources/License.txt 2009-06-16 19:39:04.000000000 +0000 @@ -0,0 +1,7 @@ +Copyright (c) 2006 Andy Matuschak + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/Current/Resources/nl.lproj/Sparkle.strings and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/Current/Resources/nl.lproj/Sparkle.strings differ diff -Nru handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/Current/Resources/nl.lproj/SUAutomaticUpdateAlert.nib/classes.nib handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/Current/Resources/nl.lproj/SUAutomaticUpdateAlert.nib/classes.nib --- handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/Current/Resources/nl.lproj/SUAutomaticUpdateAlert.nib/classes.nib 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/Current/Resources/nl.lproj/SUAutomaticUpdateAlert.nib/classes.nib 2008-01-16 17:50:50.000000000 +0000 @@ -0,0 +1,12 @@ +{ + IBClasses = ( + {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, + { + ACTIONS = {relaunchLater = id; relaunchNow = id; }; + CLASS = SUAutomaticUpdateAlert; + LANGUAGE = ObjC; + SUPERCLASS = NSWindowController; + } + ); + IBVersion = 1; +} \ No newline at end of file diff -Nru handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/Current/Resources/nl.lproj/SUAutomaticUpdateAlert.nib/info.nib handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/Current/Resources/nl.lproj/SUAutomaticUpdateAlert.nib/info.nib --- handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/Current/Resources/nl.lproj/SUAutomaticUpdateAlert.nib/info.nib 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/Current/Resources/nl.lproj/SUAutomaticUpdateAlert.nib/info.nib 2008-01-16 17:50:50.000000000 +0000 @@ -0,0 +1,12 @@ + + + + + IBDocumentLocation + 188 142 356 240 0 0 1280 1002 + IBFramework Version + 443.0 + IBSystem Version + 8I127 + + Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/Current/Resources/nl.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/Current/Resources/nl.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib differ diff -Nru handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/Current/Resources/nl.lproj/SUUpdateAlert.nib/classes.nib handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/Current/Resources/nl.lproj/SUUpdateAlert.nib/classes.nib --- handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/Current/Resources/nl.lproj/SUUpdateAlert.nib/classes.nib 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/Current/Resources/nl.lproj/SUUpdateAlert.nib/classes.nib 2008-01-16 17:50:50.000000000 +0000 @@ -0,0 +1,21 @@ +{ + IBClasses = ( + {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, + {CLASS = NSObject; LANGUAGE = ObjC; }, + { + ACTIONS = {installUpdate = id; remindMeLater = id; skipThisVersion = id; }; + CLASS = SUUpdateAlert; + LANGUAGE = ObjC; + OUTLETS = {description = NSTextField; releaseNotesView = WebView; }; + SUPERCLASS = NSWindowController; + }, + { + ACTIONS = {installUpdate = id; remindMeLater = id; skipThisVersion = id; }; + CLASS = SUUpdateAlertController; + LANGUAGE = ObjC; + OUTLETS = {releaseNotesView = id; }; + SUPERCLASS = NSWindowController; + } + ); + IBVersion = 1; +} \ No newline at end of file diff -Nru handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/Current/Resources/nl.lproj/SUUpdateAlert.nib/info.nib handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/Current/Resources/nl.lproj/SUUpdateAlert.nib/info.nib --- handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/Current/Resources/nl.lproj/SUUpdateAlert.nib/info.nib 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/Current/Resources/nl.lproj/SUUpdateAlert.nib/info.nib 2008-01-16 17:50:50.000000000 +0000 @@ -0,0 +1,16 @@ + + + + + IBDocumentLocation + 425 40 356 240 0 0 1280 832 + IBFramework Version + 446.1 + IBOpenObjects + + 5 + + IBSystem Version + 8I127 + + Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/Current/Resources/nl.lproj/SUUpdateAlert.nib/keyedobjects.nib and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/Current/Resources/nl.lproj/SUUpdateAlert.nib/keyedobjects.nib differ Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/Current/Resources/relaunch and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/Current/Resources/relaunch differ Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/Current/Resources/ru.lproj/Sparkle.strings and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/Current/Resources/ru.lproj/Sparkle.strings differ diff -Nru handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/Current/Resources/ru.lproj/SUAutomaticUpdateAlert.nib/classes.nib handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/Current/Resources/ru.lproj/SUAutomaticUpdateAlert.nib/classes.nib --- handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/Current/Resources/ru.lproj/SUAutomaticUpdateAlert.nib/classes.nib 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/Current/Resources/ru.lproj/SUAutomaticUpdateAlert.nib/classes.nib 2008-01-16 17:50:50.000000000 +0000 @@ -0,0 +1,12 @@ +{ + IBClasses = ( + {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, + { + ACTIONS = {relaunchLater = id; relaunchNow = id; }; + CLASS = SUAutomaticUpdateAlert; + LANGUAGE = ObjC; + SUPERCLASS = NSWindowController; + } + ); + IBVersion = 1; +} \ No newline at end of file diff -Nru handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/Current/Resources/ru.lproj/SUAutomaticUpdateAlert.nib/info.nib handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/Current/Resources/ru.lproj/SUAutomaticUpdateAlert.nib/info.nib --- handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/Current/Resources/ru.lproj/SUAutomaticUpdateAlert.nib/info.nib 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/Current/Resources/ru.lproj/SUAutomaticUpdateAlert.nib/info.nib 2008-01-16 17:50:50.000000000 +0000 @@ -0,0 +1,12 @@ + + + + + IBDocumentLocation + 188 142 356 240 0 0 1280 1002 + IBFramework Version + 443.0 + IBSystem Version + 8I127 + + Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/Current/Resources/ru.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/Current/Resources/ru.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib differ diff -Nru handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/Current/Resources/ru.lproj/SUUpdateAlert.nib/classes.nib handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/Current/Resources/ru.lproj/SUUpdateAlert.nib/classes.nib --- handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/Current/Resources/ru.lproj/SUUpdateAlert.nib/classes.nib 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/Current/Resources/ru.lproj/SUUpdateAlert.nib/classes.nib 2008-01-16 17:50:50.000000000 +0000 @@ -0,0 +1,21 @@ +{ + IBClasses = ( + {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, + {CLASS = NSObject; LANGUAGE = ObjC; }, + { + ACTIONS = {installUpdate = id; remindMeLater = id; skipThisVersion = id; }; + CLASS = SUUpdateAlert; + LANGUAGE = ObjC; + OUTLETS = {description = NSTextField; releaseNotesView = WebView; }; + SUPERCLASS = NSWindowController; + }, + { + ACTIONS = {installUpdate = id; remindMeLater = id; skipThisVersion = id; }; + CLASS = SUUpdateAlertController; + LANGUAGE = ObjC; + OUTLETS = {releaseNotesView = id; }; + SUPERCLASS = NSWindowController; + } + ); + IBVersion = 1; +} \ No newline at end of file diff -Nru handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/Current/Resources/ru.lproj/SUUpdateAlert.nib/info.nib handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/Current/Resources/ru.lproj/SUUpdateAlert.nib/info.nib --- handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/Current/Resources/ru.lproj/SUUpdateAlert.nib/info.nib 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/Current/Resources/ru.lproj/SUUpdateAlert.nib/info.nib 2008-01-16 17:50:50.000000000 +0000 @@ -0,0 +1,16 @@ + + + + + IBDocumentLocation + 425 40 356 240 0 0 1280 832 + IBFramework Version + 446.1 + IBOpenObjects + + 5 + + IBSystem Version + 8I127 + + Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/Current/Resources/ru.lproj/SUUpdateAlert.nib/keyedobjects.nib and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/Current/Resources/ru.lproj/SUUpdateAlert.nib/keyedobjects.nib differ diff -Nru handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/Current/Resources/SUModelTranslation.plist handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/Current/Resources/SUModelTranslation.plist --- handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/Current/Resources/SUModelTranslation.plist 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/Current/Resources/SUModelTranslation.plist 2009-06-16 19:39:04.000000000 +0000 @@ -0,0 +1,174 @@ + + + + + ADP2,1 + Developer Transition Kit + MacBook1,1 + MacBook (Core Duo) + MacBook2,1 + MacBook (Core 2 Duo) + MacBook4,1 + MacBook (Core 2 Duo Feb 2008) + MacBookAir1,1 + MacBook Air (January 2008) + MacBookPro1,1 + MacBook Pro Core Duo (15-inch) + MacBookPro1,2 + MacBook Pro Core Duo (17-inch) + MacBookPro2,1 + MacBook Pro Core 2 Duo (17-inch) + MacBookPro2,2 + MacBook Pro Core 2 Duo (15-inch) + MacBookPro3,1 + MacBook Pro Core 2 Duo (15-inch LED, Core 2 Duo) + MacBookPro3,2 + MacBook Pro Core 2 Duo (17-inch HD, Core 2 Duo) + MacBookPro4,1 + MacBook Pro (Core 2 Duo Feb 2008) + MacPro1,1 + Mac Pro (four-core) + MacPro2,1 + Mac Pro (eight-core) + MacPro3,1 + Mac Pro (January 2008 4- or 8- core "Harpertown") + Macmini1,1 + Mac Mini (Core Solo/Duo) + PowerBook1,1 + PowerBook G3 + PowerBook2,1 + iBook G3 + PowerBook2,2 + iBook G3 (FireWire) + PowerBook2,3 + iBook G3 + PowerBook2,4 + iBook G3 + PowerBook3,1 + PowerBook G3 (FireWire) + PowerBook3,2 + PowerBook G4 + PowerBook3,3 + PowerBook G4 (Gigabit Ethernet) + PowerBook3,4 + PowerBook G4 (DVI) + PowerBook3,5 + PowerBook G4 (1GHz / 867MHz) + PowerBook4,1 + iBook G3 (Dual USB, Late 2001) + PowerBook4,2 + iBook G3 (16MB VRAM) + PowerBook4,3 + iBook G3 Opaque 16MB VRAM, 32MB VRAM, Early 2003) + PowerBook5,1 + PowerBook G4 (17 inch) + PowerBook5,2 + PowerBook G4 (15 inch FW 800) + PowerBook5,3 + PowerBook G4 (17-inch 1.33GHz) + PowerBook5,4 + PowerBook G4 (15 inch 1.5/1.33GHz) + PowerBook5,5 + PowerBook G4 (17-inch 1.5GHz) + PowerBook5,6 + PowerBook G4 (15 inch 1.67GHz/1.5GHz) + PowerBook5,7 + PowerBook G4 (17-inch 1.67GHz) + PowerBook5,8 + PowerBook G4 (Double layer SD, 15 inch) + PowerBook5,9 + PowerBook G4 (Double layer SD, 17 inch) + PowerBook6,1 + PowerBook G4 (12 inch) + PowerBook6,2 + PowerBook G4 (12 inch, DVI) + PowerBook6,3 + iBook G4 + PowerBook6,4 + PowerBook G4 (12 inch 1.33GHz) + PowerBook6,5 + iBook G4 (Early-Late 2004) + PowerBook6,7 + iBook G4 (Mid 2005) + PowerBook6,8 + PowerBook G4 (12 inch 1.5GHz) + PowerMac1,1 + Power Macintosh G3 (Blue & White) + PowerMac1,2 + Power Macintosh G4 (PCI Graphics) + PowerMac10,1 + Mac Mini G4 + PowerMac10,2 + Mac Mini (Late 2005) + PowerMac11,2 + Power Macintosh G5 (Late 2005) + PowerMac12,1 + iMac G5 (iSight) + PowerMac2,1 + iMac G3 (Slot-loading CD-ROM) + PowerMac2,2 + iMac G3 (Summer 2000) + PowerMac3,1 + Power Macintosh G4 (AGP Graphics) + PowerMac3,2 + Power Macintosh G4 (AGP Graphics) + PowerMac3,3 + Power Macintosh G4 (Gigabit Ethernet) + PowerMac3,4 + Power Macintosh G4 (Digital Audio) + PowerMac3,5 + Power Macintosh G4 (Quick Silver) + PowerMac3,6 + Power Macintosh G4 (Mirrored Drive Door) + PowerMac4,1 + iMac G3 (Early/Summer 2001) + PowerMac4,2 + iMac G4 (Flat Panel) + PowerMac4,4 + eMac + PowerMac4,5 + iMac G4 (17-inch Flat Panel) + PowerMac5,1 + Power Macintosh G4 Cube + PowerMac6,1 + iMac G4 (USB 2.0) + PowerMac6,3 + iMac G4 (20-inch Flat Panel) + PowerMac6,4 + eMac (USB 2.0, 2005) + PowerMac7,2 + Power Macintosh G5 + PowerMac7,3 + Power Macintosh G5 + PowerMac8,1 + iMac G5 + PowerMac8,2 + iMac G5 (Ambient Light Sensor) + PowerMac9,1 + Power Macintosh G5 (Late 2005) + RackMac1,1 + Xserve G4 + RackMac1,2 + Xserve G4 (slot-loading, cluster node) + RackMac3,1 + Xserve G5 + Xserve1,1 + Xserve (Intel Xeon) + Xserve2,1 + Xserve (January 2008 quad-core) + iMac1,1 + iMac G3 (Rev A-D) + iMac4,1 + iMac (Core Duo) + iMac4,2 + iMac for Education (17-inch, Core Duo) + iMac5,1 + iMac (Core 2 Duo, 17 or 20 inch, SuperDrive) + iMac5,2 + iMac (Core 2 Duo, 17 inch, Combo Drive) + iMac6,1 + iMac (Core 2 Duo, 24 inch, SuperDrive) + iMac8,1 + iMac (April 2008) + + diff -Nru handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/Current/Resources/SUStatus.nib/classes.nib handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/Current/Resources/SUStatus.nib/classes.nib --- handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/Current/Resources/SUStatus.nib/classes.nib 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/Current/Resources/SUStatus.nib/classes.nib 2009-06-16 19:39:04.000000000 +0000 @@ -0,0 +1,56 @@ + + + + + IBClasses + + + CLASS + SUWindowController + LANGUAGE + ObjC + SUPERCLASS + NSWindowController + + + CLASS + NSApplication + LANGUAGE + ObjC + SUPERCLASS + NSResponder + + + CLASS + FirstResponder + LANGUAGE + ObjC + SUPERCLASS + NSObject + + + CLASS + NSObject + LANGUAGE + ObjC + + + CLASS + SUStatusController + LANGUAGE + ObjC + OUTLETS + + actionButton + NSButton + progressBar + NSProgressIndicator + + SUPERCLASS + SUWindowController + + + IBVersion + 1 + + diff -Nru handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/Current/Resources/SUStatus.nib/info.nib handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/Current/Resources/SUStatus.nib/info.nib --- handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/Current/Resources/SUStatus.nib/info.nib 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/Current/Resources/SUStatus.nib/info.nib 2009-06-16 19:39:04.000000000 +0000 @@ -0,0 +1,20 @@ + + + + + IBFramework Version + 670 + IBLastKnownRelativeProjectPath + Sparkle.xcodeproj + IBOldestOS + 5 + IBOpenObjects + + 6 + + IBSystem Version + 10A96 + targetFramework + IBCocoaFramework + + Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/Current/Resources/SUStatus.nib/keyedobjects.nib and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/Current/Resources/SUStatus.nib/keyedobjects.nib differ Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/Current/Resources/sv.lproj/Sparkle.strings and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/Current/Resources/sv.lproj/Sparkle.strings differ diff -Nru handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/Current/Resources/sv.lproj/SUAutomaticUpdateAlert.nib/classes.nib handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/Current/Resources/sv.lproj/SUAutomaticUpdateAlert.nib/classes.nib --- handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/Current/Resources/sv.lproj/SUAutomaticUpdateAlert.nib/classes.nib 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/Current/Resources/sv.lproj/SUAutomaticUpdateAlert.nib/classes.nib 2008-01-16 17:50:50.000000000 +0000 @@ -0,0 +1,12 @@ +{ + IBClasses = ( + {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, + { + ACTIONS = {relaunchLater = id; relaunchNow = id; }; + CLASS = SUAutomaticUpdateAlert; + LANGUAGE = ObjC; + SUPERCLASS = NSWindowController; + } + ); + IBVersion = 1; +} \ No newline at end of file diff -Nru handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/Current/Resources/sv.lproj/SUAutomaticUpdateAlert.nib/info.nib handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/Current/Resources/sv.lproj/SUAutomaticUpdateAlert.nib/info.nib --- handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/Current/Resources/sv.lproj/SUAutomaticUpdateAlert.nib/info.nib 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/Current/Resources/sv.lproj/SUAutomaticUpdateAlert.nib/info.nib 2008-01-16 17:50:50.000000000 +0000 @@ -0,0 +1,12 @@ + + + + + IBDocumentLocation + 188 142 356 240 0 0 1280 1002 + IBFramework Version + 443.0 + IBSystem Version + 8I127 + + Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/Current/Resources/sv.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/Current/Resources/sv.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib differ diff -Nru handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/Current/Resources/sv.lproj/SUUpdateAlert.nib/classes.nib handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/Current/Resources/sv.lproj/SUUpdateAlert.nib/classes.nib --- handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/Current/Resources/sv.lproj/SUUpdateAlert.nib/classes.nib 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/Current/Resources/sv.lproj/SUUpdateAlert.nib/classes.nib 2008-01-16 17:50:50.000000000 +0000 @@ -0,0 +1,21 @@ +{ + IBClasses = ( + {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, + {CLASS = NSObject; LANGUAGE = ObjC; }, + { + ACTIONS = {installUpdate = id; remindMeLater = id; skipThisVersion = id; }; + CLASS = SUUpdateAlert; + LANGUAGE = ObjC; + OUTLETS = {description = NSTextField; releaseNotesView = WebView; }; + SUPERCLASS = NSWindowController; + }, + { + ACTIONS = {installUpdate = id; remindMeLater = id; skipThisVersion = id; }; + CLASS = SUUpdateAlertController; + LANGUAGE = ObjC; + OUTLETS = {releaseNotesView = id; }; + SUPERCLASS = NSWindowController; + } + ); + IBVersion = 1; +} \ No newline at end of file diff -Nru handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/Current/Resources/sv.lproj/SUUpdateAlert.nib/info.nib handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/Current/Resources/sv.lproj/SUUpdateAlert.nib/info.nib --- handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/Current/Resources/sv.lproj/SUUpdateAlert.nib/info.nib 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/Current/Resources/sv.lproj/SUUpdateAlert.nib/info.nib 2008-01-16 17:50:50.000000000 +0000 @@ -0,0 +1,16 @@ + + + + + IBDocumentLocation + 425 40 356 240 0 0 1280 832 + IBFramework Version + 446.1 + IBOpenObjects + + 5 + + IBSystem Version + 8I127 + + Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/Current/Resources/sv.lproj/SUUpdateAlert.nib/keyedobjects.nib and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/Current/Resources/sv.lproj/SUUpdateAlert.nib/keyedobjects.nib differ Binary files /tmp/yBcdRBsC1c/handbrake-0.9.9+dfsg/macosx/Sparkle.framework/Versions/Current/Sparkle and /tmp/xrdsbBdoxz/handbrake-0.9.9+ppa1/macosx/Sparkle.framework/Versions/Current/Sparkle differ diff -Nru handbrake-0.9.9+dfsg/macosx/xcconfig/base/arch.i386.xcconfig handbrake-0.9.9+ppa1/macosx/xcconfig/base/arch.i386.xcconfig --- handbrake-0.9.9+dfsg/macosx/xcconfig/base/arch.i386.xcconfig 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/xcconfig/base/arch.i386.xcconfig 2012-01-04 09:41:11.000000000 +0000 @@ -0,0 +1 @@ +ARCHS = i386 diff -Nru handbrake-0.9.9+dfsg/macosx/xcconfig/base/arch.native.xcconfig handbrake-0.9.9+ppa1/macosx/xcconfig/base/arch.native.xcconfig --- handbrake-0.9.9+dfsg/macosx/xcconfig/base/arch.native.xcconfig 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/xcconfig/base/arch.native.xcconfig 2012-01-04 09:41:11.000000000 +0000 @@ -0,0 +1 @@ +ARCHS = $(NATIVE_ARCH_ACTUAL) diff -Nru handbrake-0.9.9+dfsg/macosx/xcconfig/base/arch.x86_64.xcconfig handbrake-0.9.9+ppa1/macosx/xcconfig/base/arch.x86_64.xcconfig --- handbrake-0.9.9+dfsg/macosx/xcconfig/base/arch.x86_64.xcconfig 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/xcconfig/base/arch.x86_64.xcconfig 2012-01-04 09:41:11.000000000 +0000 @@ -0,0 +1 @@ +ARCHS = x86_64 diff -Nru handbrake-0.9.9+dfsg/macosx/xcconfig/base/os.osx106.xcconfig handbrake-0.9.9+ppa1/macosx/xcconfig/base/os.osx106.xcconfig --- handbrake-0.9.9+dfsg/macosx/xcconfig/base/os.osx106.xcconfig 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/xcconfig/base/os.osx106.xcconfig 2012-01-04 09:41:11.000000000 +0000 @@ -0,0 +1,2 @@ +SDKROOT = macosx10.6 +MACOSX_DEPLOYMENT_TARGET = 10.6 diff -Nru handbrake-0.9.9+dfsg/macosx/xcconfig/base/os.osx107.xcconfig handbrake-0.9.9+ppa1/macosx/xcconfig/base/os.osx107.xcconfig --- handbrake-0.9.9+dfsg/macosx/xcconfig/base/os.osx107.xcconfig 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/xcconfig/base/os.osx107.xcconfig 2012-01-04 09:41:11.000000000 +0000 @@ -0,0 +1,2 @@ +SDKROOT = macosx10.7 +MACOSX_DEPLOYMENT_TARGET = 10.7 diff -Nru handbrake-0.9.9+dfsg/macosx/xcconfig/native.xcconfig handbrake-0.9.9+ppa1/macosx/xcconfig/native.xcconfig --- handbrake-0.9.9+dfsg/macosx/xcconfig/native.xcconfig 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/xcconfig/native.xcconfig 2012-01-04 09:41:11.000000000 +0000 @@ -0,0 +1,2 @@ +#include "base/arch.native.xcconfig" +EXTERNAL_XCCONFIG = native diff -Nru handbrake-0.9.9+dfsg/macosx/xcconfig/osx106.i386.xcconfig handbrake-0.9.9+ppa1/macosx/xcconfig/osx106.i386.xcconfig --- handbrake-0.9.9+dfsg/macosx/xcconfig/osx106.i386.xcconfig 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/xcconfig/osx106.i386.xcconfig 2012-01-04 09:41:11.000000000 +0000 @@ -0,0 +1,3 @@ +#include "base/os.osx106.xcconfig" +#include "base/arch.i386.xcconfig" +EXTERNAL_XCCONFIG = osx106.i386 diff -Nru handbrake-0.9.9+dfsg/macosx/xcconfig/osx106.x86_64.xcconfig handbrake-0.9.9+ppa1/macosx/xcconfig/osx106.x86_64.xcconfig --- handbrake-0.9.9+dfsg/macosx/xcconfig/osx106.x86_64.xcconfig 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/xcconfig/osx106.x86_64.xcconfig 2012-01-04 09:41:11.000000000 +0000 @@ -0,0 +1,3 @@ +#include "base/os.osx106.xcconfig" +#include "base/arch.x86_64.xcconfig" +EXTERNAL_XCCONFIG = osx106.x86_64 diff -Nru handbrake-0.9.9+dfsg/macosx/xcconfig/osx107.i386.xcconfig handbrake-0.9.9+ppa1/macosx/xcconfig/osx107.i386.xcconfig --- handbrake-0.9.9+dfsg/macosx/xcconfig/osx107.i386.xcconfig 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/xcconfig/osx107.i386.xcconfig 2012-01-04 09:41:11.000000000 +0000 @@ -0,0 +1,3 @@ +#include "base/os.osx107.xcconfig" +#include "base/arch.i386.xcconfig" +EXTERNAL_XCCONFIG = osx107.i386 diff -Nru handbrake-0.9.9+dfsg/macosx/xcconfig/osx107.x86_64.xcconfig handbrake-0.9.9+ppa1/macosx/xcconfig/osx107.x86_64.xcconfig --- handbrake-0.9.9+dfsg/macosx/xcconfig/osx107.x86_64.xcconfig 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/macosx/xcconfig/osx107.x86_64.xcconfig 2012-01-04 09:41:11.000000000 +0000 @@ -0,0 +1,3 @@ +#include "base/os.osx107.xcconfig" +#include "base/arch.x86_64.xcconfig" +EXTERNAL_XCCONFIG = osx107.x86_64 diff -Nru handbrake-0.9.9+dfsg/win/CS/build.xml handbrake-0.9.9+ppa1/win/CS/build.xml --- handbrake-0.9.9+dfsg/win/CS/build.xml 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/win/CS/build.xml 2013-05-18 11:35:57.000000000 +0000 @@ -0,0 +1,84 @@ + + + + + + Release + + + + + + + + + + + + NightlyPreBuild;BuildRelease;NightlyPostBuild + + + + PreBuild;BuildRelease;ReleasePostBuild + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff -Nru handbrake-0.9.9+dfsg/win/CS/doc/AUTHORS handbrake-0.9.9+ppa1/win/CS/doc/AUTHORS --- handbrake-0.9.9+dfsg/win/CS/doc/AUTHORS 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/win/CS/doc/AUTHORS 2012-03-04 12:42:44.000000000 +0000 @@ -0,0 +1,119 @@ +AUTHORS file for HandBrake + +Eric Petit + + Core (construct, multithreading, BeOS/OS X/Linux ports) + + MPEG demuxer + + MPEG-2, AC3 and MPGA decoders (w/ libmpeg2/liba52/libavcodec) + + LPCM "decoder" + + MPEG-4, MP3 and AAC encoders (w/ libavcodec/libxvidcore/libmp3lame/ + libfaac) + + AC-3 pass-through + + AVI muxer + + MP4 muxer (w/ libmp4v2) + + BeOS interface + + OS X interface + + French translation + +Laurent Aimar + + H264 and Vorbis encoders (w/ libx264/libvorbis) + + OGG/OGM muxer (w/ libogg) + + Gtk2 interface + + wxWidgets interface + +Van Jacobson (van) + + Universal input architecture + + MPEG Standard Target Decoder timing model + + Auto-typing MPEG stream files + + Minor bug fixing in MPEG stream support + + Minor dvd reader fixes + + Chapter mark bug fixes + +John Allen + + Core enhancements + + Threading enhancements + + Simplified Mac OS X GUI + +Joe Crain (dynaflash) + + Mac OS X GUI enhancements/rewrite + +Damiano Galassi (ritsuka) + + Mac OS X GUI enhancements + +Edward Groenendaal (eddyg) + + Major bug fixes + + Subtitle scan & Colour + + Performance improvements + +David Foster (davidfstr) + + Subtitles from file inputs + + SSA subtitle support + +Rodney Hester (rhester) + + iPod firmware 1.2+ 640x480 MPEG-4/H.264 support + +Andrew Kimpton (awk) + + MPEG Audio fixes + + MPEG Stream Support + +Chris Lee + + PAR/anamorphic support + + dvdread enhancements + + Linux GUI + +Chris Long (chrislong) + + iPod firmware 1.2+ 640x480 MPEG-4/H.264 support + +Brian Mario (brianmario) + + Windows GUI + +Maurj(maurj) + + Dolby Surround and Dolby Pro Logic II mixdowns + + 6-channel AAC audio from 5.1 source + + Mono AAC audio from mono source + + PAR/anamorphic support in mp4 file format + + Chapter markers in mp4 file format + + Mac OS X GUI enhancements + + Support for DTS audio sources + +Mirkwood (mirkwood) + + Windows CLI port + +Nyx + + Frame re-ordering and flushing in mp4 + +Philippe Rigaux (prigaux) + + 3rd party library integration + + Mac OS X GUI enhancements + + PAR/anamorphic support + + Universal binary build process + + Conversion from jam to make for compiles + +Jonathon Rubin (jbrjake) + + Massive core enhancements + + Significant improvements to H.264 support + +Scott(s55) + + Windows GUI + +John Stebbins (j45) + + GTK GUI + + TrueHD demuxing + + libavcodec video encoding quality enhancements + + Numerous bug fixes + +Chris Thoman (huevos_rancheros) + + Ported video filters from libmpcodec + +Mark Krenek (travistex) + + Mac OS X GUI enhancements + + Mac OS X GUI Queueing system + +Kona 'mike' Blend (KonaBlend) + + Build System and related guides + +David Rickard (RandomEngy) ++ HandBrake Interop Library + +Tim Walker (Rodeo) ++ Miscellaneous fixes and enhancements + diff -Nru handbrake-0.9.9+dfsg/win/CS/doc/COPYING handbrake-0.9.9+ppa1/win/CS/doc/COPYING --- handbrake-0.9.9+dfsg/win/CS/doc/COPYING 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/win/CS/doc/COPYING 2012-03-04 12:42:44.000000000 +0000 @@ -0,0 +1,339 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Lesser General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. \ No newline at end of file diff -Nru handbrake-0.9.9+dfsg/win/CS/doc/CREDITS handbrake-0.9.9+ppa1/win/CS/doc/CREDITS --- handbrake-0.9.9+dfsg/win/CS/doc/CREDITS 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/win/CS/doc/CREDITS 2013-05-18 11:35:57.000000000 +0000 @@ -0,0 +1,33 @@ +CREDITS file for HandBrake + +HandBrake uses many cool libraries from the GNU/Linux world. + +Thanks to the authors of the following libraries which help power HandBrake: +See the local project AUTHORS files for details of the individuals involved. + +liba52 +libbzip2 +libfaac +libfaad2 +libavcodec +libfontconfig +libfreetype +liblame +libass +libbluray +libdca +libdvdnav +libdvdread +libiconv +libmkv +libogg +libsamplerate +libtheora +libvorbis +libxml2 +libmp4v2 +libmpeg2dec +libpthreadsw32 +libx264 +libzlib +fdk-aac \ No newline at end of file diff -Nru handbrake-0.9.9+dfsg/win/CS/doc/NEWS handbrake-0.9.9+ppa1/win/CS/doc/NEWS --- handbrake-0.9.9+dfsg/win/CS/doc/NEWS 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/win/CS/doc/NEWS 2013-05-18 11:35:57.000000000 +0000 @@ -0,0 +1,1024 @@ +NEWS file for HandBrake + + +Changes betwen 0.9.8 and 0.9.9: + + General + - Improved HandBrake pineapple icon by Matt Johnson + - Improved Retina-resolution icons within the application, by Nik Pawlak + + http://nikpawlak.com + Core + - Blu-ray (PGS) subtitle support + + works with Foreign Audio Search + + can be Burned-In + + can be passed through to MKV (but not MP4) + - Additional video framerates + + 30, 50, 59.94, 60 fps + - Double framerate ("bob") mode for the deinterlace and decomb filters + - Better audio remix support + + additional mixdowns: 6.1, 7.1, 7.1 (5F/2R/LFE) + CLI users should note 6ch becomes 5point1 + + better-than-Stereo sources can be upmixed to 5.1 + + discard one channel from Stereo sources + Mono (Left Only), Mono (Right Only) + - Allow the selection of higher audio bitrates where appropriate + - Allow the selection of lower audio samplerates where appropriate + + 8, 11.025, 12, 16 kHz + - Audio dithering (TPDF) when converting to 16-bit FLAC + - Use libavcodec for DTS audio decoding (instead of libdca) + + DTS-ES 6.1 Discrete support + - All graphical interfaces: support for x264's preset, tune and profile options + + alternative to the Advanced panel (which is still available) + + HandBrake-specific option to ensure compliance with a specific H.264 level + - Updated built-in presets + + take advantage of x264 preset/tune/profile support + + removed increasingly suboptimal and irrelevant Legacy presets + - Assorted bug fixes and improvements to the core library (libhb) + - Updated libraries + + x264 r2273-b3065e6 + + Libav v9.6 + + libbluray 0.2.3 + Windows + - User Interface has been re-written in WPF + + Includes many small UI enhancements + - Switched to .NET 4 Client Profile + + smaller download for those who don't have .NET 4 Full installed + Mac + - Assorted bug fixes + + including better support for Retina displays + - Prevent sleep during encoding and scanning for Mountain Lion + - Drag & Drop files onto the Main window or application icon to scan + - Nicer progress indication on the dock icon + - Preview window improvements and bugfixes + - Updated Growl to 2.0.1 + + Notification Center support (when Growl is not installed) + Linux + - Assorted bug fixes and improvements + - Use some system libraries rather than bundling + + fontconfig, freetype, libxml2, libass, libogg, libvorbis, libtheora and libsamplerate + Command Line Interface + - Audio option (-a) will ignore invalid input tracks and encode with only the valid ones + - Allow use of hh:mm:ss format when specifying p-to-p start/stop time + - Advanced audio options + + enable level normalization when downmixing (disabled by default) + + disable audio dithering or select a specific algorithm + + + + +Changes betwen 0.9.7 and 0.9.8: + + - Corrects a few crash bugs that showed up in 0.9.7 + + + +Changes betwen 0.9.6 and 0.9.7: + + - This is a bug fix release for 0.9.6. + - Includes an AppleTV3 Preset and updated iPad Preset + + + +Changes betwen 0.9.5 and 0.9.6: + + Encoders: + + -> Video: + + - updated libx264 (revision 2146) + - MPEG-2 encoder (from libavcodec) + - advanced options support for libavcodec encoders + format: option1=value1:option2=value2 + -bf 2 -trellis 2 becomes bf=2:trellis=2 + + -> Audio: + + - audio gain control (increase/decrease audio volume) + + - updated libogg (1.3.0) and libvorbis (aoTuV b6.03) + - new AAC encoder (from libavcodec) (considered experimental) + (supported mixdowns: Mono/Stereo/Dolby, 5.1 will come later) + (should be on par with faac in terms of quality, sometimes better) + - FLAC encoder (16-bit, MKV container only) + + - Mac OS X: HE-AAC encoding support, via Core Audio + + - quality-based variable bitrate encoding support + works with: Lame MP3, Vorbis, Core Audio AAC + only implemented in CLI and Linux GUI + + - AC3 encoder: set Dolby Surround flag in stream parameters when mixdown is Dolby Surround or Pro Logic II + + + -> Audio Passthru: + + - DTS Passthru to MP4 container (in addition to MKV) (supported by e.g. VLC, MPlayer) + - DTS-HD Passthru (MP4, MKV containers) + - MP3 Passthru (MP4, MKV containers) + - AAC Passthru (MP4, MKV containers) + (known issue: Magic Cookie not passed through from MPEG Program/Transport streams, + which will break playback in e.g. QuickTime Player) + - Auto Passthru: one encoder, multiple codecs + lets you define allowed codecs (from supported passthru codecs) + lets you pick a fallback encoder if passthru is not possible + + Muxers: + - start MKV clusters with a video keyframe whenever possible + should improve seeking and DLNA streaming + + - bug fix: use ISO 639-2 bibliographic form for MKV language codes + - bug fix: fix crash due to division by zero in MP4 muxer + - bug fix: fix muxing of Closed Captions. Improper interleaving broke playback on some players + + Decoders: + + -> Video: + + - updated libav* libraries from Libav (http://libav.org/) (v0.7-1696-gcae4f4b, late October 2011) + frame-based multithreading for H.264, VP8 + 10-bit decoding support for H.264, DNxHD + Apple ProRes decoding support + - improved average framerate detection + - duplicate frame detection for improved frame drop decision (CFR/PFR) + - new Same as source, Constant Framerate option + for devices that don't support variable framerate + automatically picks a constant framerate closest to the detected average framerate + + - bug fix: fix problem when resolution changes in the middle of a video stream + + -> Audio: + + - Blu-ray: make TrueHD, DTS-HD and E-AC3 Secondary Audio streams available for decoding and/or passthrough + + - bug fix: libavcodec-decoded streams can now be decoded multiple times + previously, multiple decodes of the same source tracks weren't possible + and audio output tracks had to be dropped + - bug fix: fix audio screech at beginning of some audio tracks when decoding AC3 + - bug fix: fix DTS decoder audio volume (was too low) + - bug fix: garbled audio when decoding DTS-HD audio from MKV containers + - bug fix: fix support for DTS-HD High Resolution Audio in MPEG Transport streams + + -> Subtitles: + + - updated libass (0.10.0) + - improved handling of subtitles with overlapping timestamps + - improved handling of DVD subtitles without Stop Display commands + - SSA subtitles are now passed through to MKV without conversion to SRT/UTF-8 + + - bug fix: fix rendering problem with SSA subtitles when no font is embedded in the source video + + Demuxers: + + - improved MPEG Program/Transport stream support + support for MPEG-1 Program streams + support for HD-DVD EVOB streams + improved handling of Transport streams that have no PCR + - WTV container support (via libavformat) + + - bug fix: files with more than 20 tracks (video, audio, subtitles etc.) are now supported + - bug fix: some QuickTime MOV files were misdirected as MPEG Transport streams + - bug fix: fix detection of TrueType font attachments that don't have the correct MIME type + + Filters: + + - new, much improved decomb filter (but slower) + new settings are default + old settings become decomb "Fast" + + Presets: + + - improved "Normal" preset (much faster, similar file size and quality) + - removed obsolete legacy presets + - added new device presets for Android phones/tablets + recent and/or powerful devices recommended + + Mac OS X: + + -> DVD decryption: + + - VLC 2.x or later will not work for DVD decryption + and is therefore unsupported as of HandBrake 0.9.6 + - libdvdcss is now the preferred method for DVD decryption + already works with HandBrake 0.9.5 + a .pkg installer is available from Videolan: + http://download.videolan.org/libdvdcss/last/macosx/ + + -> Build system: + + - support for Xcode 4 and Mac OS X 10.7 "Lion" + - Mac OS X 10.5 "Leopard" no longer supported + + Mac OS X GUI: + + -> OS X 10.7 Lion support: + + - bug fix: Live Preview window widgets updated to work under Lion + - bug fix: fixed positioning of widgets in the Audio panel under Lion + + -> Other: + + - wider main window providing more room for various widgets + + Windows GUI: + -> Preview window: + + - complete redesign + - support for VLC or the system default video player + - dropped built-in QuickTime playback support + + -> Other: + + - much improved control over the default audio and subtitle tracks selected (see Options) + - ability to set the minimal title length that will show up during a scan (see Options) + - several other usability improvements + - installer now has a silent option for easier network installs (launch the installer with /S) + + Linux GUI: + -> Audio panel: + + - new advanced audio options section for gain and audio track names + - dynamic range compression and samplerate moved to advanced audio options + + -> Other: + + - minor UI tweaks and usability enhancements + + Miscellaneous: + - Target Size is gone, and isn't coming back + Don't bother complaining on the forums + + - CLI: support for x264 presets, tunes and profiles + new --x264-preset, --x264-tune and --x264-profile options + + - DVD: fix issues with some discs (e.g. True Grit, Thor, Transformers 3) + - DVD: improved main feature detection + + - updated libbluray (0.0.1-pre-213-ga869da8, late May 2011) + + + +Changes between 0.9.4 and 0.9.5: + + * Core Library + - BluRay disc structure support. (No decryption support) + - Updated Libraries (x264, ffmpeg) + - SSA Subtitle support. (Including burn-in) + - MP3 audio now supported in MP4 files (Note: Limited Player compatibility) + - VOBSUB subtitle now supported in MP4 files (Note: Limited Player compatibility) + - Updated Presets for newer devices and better quality + - AC3 encoding support. + - Many Bug fixes and other small improvements + - Improved DVD Main Feature detection (when using dvdnav) + - Universal audio downmix support (all audio types can be downmixed) + + *All GUIs + - Updated x264 Advanced Panel + - Video Quality Slider drops % value and only shows RF for x264 + - Batch Scan (Scan Multiple files at once. N.B: Does not include multiple VIDEO_TS folders / Image files) + - Peak framerate option (Capped VFR) + - Many Bug fixes + - Many Tweaks to improve usability. + - Ability to edit queue jobs + - Point-to-Point encoding (second or frame start and end times) + + * Mac GUI + - New Audio Panel supporting >4 Audio Tracks + - VLC detection in /Applications and ~/Applications + + * Windows GUI + - Encode Status in GUI. (CLI window is now always hidden) + - Improved Auto-Naming for Destination file name. + - Drag / Drop Video onto Main Window to scan. + + * Linux GUI + - Multiple instance support (run multiple copies of ghb at once) + - Many Bug fixes and UI improvements. + + + +Changes between 0.9.3 and 0.9.4: + Core: + + * New build system, allowing 64-bit binaries (around 10% faster) + * Soft subtitles and Closed Captions: + - DVD Closed Captions + - ATSC Closed Captions + - SRT subtitle import + - Text soft subtitles in MP4 and MKV output + - Bitmap soft subtitles in MKV output + * Better support for DVD inputs: + - Uses libdvdnav + - DVD angles support + - Workaround for libdvdread malloc bomb on invalid PGC entry + - DVD drive region detection support in Linux + - Handles DVD programs with more than 16 streams + - No longer tries to detect and discard duplicate titles when scanning + - Libdvdnav patched to perform read error recovery + - Libdvdread patched to allow raw device access in Windows + - Handles poorly mastered DVDs that had the menus ripped out of them + * Better support for non-DVD inputs: + - Preserves MP4 metadata + - TrueHD + - DTS-HD demuxing + - 8 bit audio + - Better handling of transport streams where audio starts first + - Better handling of transport streams that have been spliced together, leading to duplicate timestamps + - Better VC-1 frame detection + - Fixes bug that was causing one sec. of audio to be dropped on many ffmpeg files + - Looks harder for aspect ratio info from DV sources + - No longer truncates the last (dummy) chapter + - Allows specifying field parity for detelecine and decomb + * Better AV sync + * Support for sources with no audio + * DTS passthrough for MKV + * x264 bumped from r1169 to r1347, which means speed optimizations, new default settings (see r2742 commit comment), the magic of macroblock tree rate control (mbtree), a new CRF curve (meaning you will get different, generally lower bitrates at the same RF, with similar quality metrics), and weighted P-Frames (disabled by default for Baseline encodes and the AppleTV preset). + * Better sample interleaving + * Better, optional deinterlacer for decomb (EEDI2) + * New mode structure for the decomb filter + * Variable verbose logging levels + * Fixed timing for first two frames coming out of filters + * Libtheora bumped to 1.1.0 + * Improvements to our theora implementation (2 pass encoding + soft target rate control) + * Caters to Theora's insistence on content having mod16 framing dimensions specified + * Flushes LAME encoder's final packets + * Fixed interjob framerate calculation + * Fixed pthreads regression in cygwin + * Tweaks for packaging tools + * Solaris 10 build support + + All interfaces: + + * Live video preview + * New subtitle tab + * New filters and picture settings inspector + * Custom anamorphic mode + * Updated Sparkle + * Custom number of preview images + * Quality slider now works off actual rate factor/quantizer values instead of percentages + * Partially updated advanced x264 tab + * New built-in presets + * Use libdvdnav by default on DVD sources + * Removed Constant QP encoding option for x264 (use CRF) + * Various bug fixes and UI tweaks + * x264 turbo 1st pass mode now uses subme=2 not subme=1 + + Mac: + + * Core Audio AAC encoding + * H.264 video source decoding crash fixed + * Queue displays varying row heights based on encode settings + * Fixed EyeTV package scanning + * 64bit / 32 bit VLC detection + * Preset import/export + + Windows: + + * New audio tab + * AAC audio source decoding bug fixed + * Tray minimization is now optional + * Queue can now be started from main window + * Growl for Windows notification support + * General UI improvements + * Preset import + * Preferred language control for audio dubs and subtitles + * Fixed file extensions resetting to m4v when enabling chapter markers in mkv + * Faster updating of GUI elements from CLI data + * Cleanup / Improved some of the programs options. (Growl, use m4v, drive detection) + * Numerous fixes in the Picture Settings Panel and CLI Query Handling code. + * Bug Fixes and Usability improvements. + + Linux: + + * General UI improvements + * Inhibits sleep mode while encoding + * Single title scan + * Chapter duration display + * Notifications when encodes complete + * Tray minimization + * Full screen preview + * Preset import/export + * Preferred language control for audio dubs and subtitles + * Preferences rearrangement + * Preference to auto-apply .m4v extension + * New system tray icon behavior + * Preference for what to do when encode completes + * Preference for how often to delete activity logs + * Preference to disable automatic scanning + * New Gnome session manager support + * Improved "auto" audio selection + * Use .m4v as the default extension for the MPEG-4 container + * Use .m4v when soft subs are enabled + * Alternate angle encoding fix + * Only strips drive letters for Windows builds + * Show correct audio format info when it's been sanitized for incompatibilities + * Preserve chapter list modifications made to queued jobs + * Fixed error when navigating chapter titles with the keyboard + * Bug Fixes. + + CLI: + + * Options to handle new subtitle, anamorphic, and preview features + * --srt-file, --srt-codeset, --srt-offset, --srt-lang, --srt-default + * --native-dub option lets users request dubbing instead of subs when the audio isn't in their native language + * Allow encoding sources with no audio without explicitly stating -a none + * Update checker on MinGW built exe should now work correctly. + * Matches GUIs' default verbosity level of 1 + +Changes between 0.9.2 and 0.9.3: + +0.9.3 Snapshot 5 -> 0.9.3 Final + - Better PMT processing + - Basic underlying support for live previews (encode from a seek point for a set number of frames) + - Better searching for IDR frames in H.264 streams + - Preset changes (iPhone goes CRF, some old Apple presets resurrected as Legacy) + - Assorted bug fixes + +0.9.3 Snapshot 4 -> 0.9.3 Snapshot 5 (r1913) + Core Library + - VC-1 stream input + - Newer libmp4v2, which fixes the issue with output > 2 gigs in Linux + - Proper allocation for preview frames + - Avoids corruption of previews of sources that use widths that aren't cleanly divisible by 8 + - Decodes DTS internally instead of using ffmpeg, to allow mixdowns + - Better support for DTS in MKV files with implicit timestamps or large timestamp errors + - Ensures proper chroma size by rounding up when dealing with odd dimensions + - Ensures "auto" samplerate sends a valid value to faac (22050, 24000, 32000, 44100, or 48000) + - Bumped Theora to 1.0 final + - Bumped x264 to r1024, which includes Nehalem optimizations as well as speed boosts for things such as b-adapt=2 + + Mac GUI + - Allows multibyte characters in chapter titles + + Windows GUI + - Fixes issue parsing presets that use maxWidth and maxHeight (-X and -Y) + - DRC defaults to 1 now + - Chapter markers disabled for non-DVD sources + - Makes sure Normal preset gets loaded + - Fixes arithmetic overflow crash when scanning + + Linux GUI + - Update checker + - Limits range of chapters to encode to the number of chapters on the DVD + - Disabled entry of dimensions larger than the source + + CLI + - Allows overriding of audio (tracks, bitrates, samplerates, codecs, mixdowns) and x264 options in built-in presets + + Documentation + - Documentation updates have begun on the wiki, although they are not yet complete + +0.9.3 Snapshot 3 -> 0.9.3 Snapshot 4 (r1896) + Core Library + - Converts video in other color spaces to YUV420 (this means DV support) + - Official, standards-based AC3-in-MP4 + - Tries to base the AV timing for streams off audio when possible + - Keeps some audio fixes for lost packets in over the air streams from interfering with other sources + - Handles rendering of sources where the picture resolution changes mid-stream (this fixes the long-standing bug reading a particular episode of Doctor Who) + - Wider window for clock references (AV sync) + - Fixed a crash when closing out data for AAC encoding on aborted encodes + - Rejiggered verbose activity log display to be more laconic by default + - Updated x264 to r1016, which means b-rdo and bime are gone and replaced with new subme modes + - DTS and HDMV DTS audio support in streams + - Doesn't show the audio track button on iPhones/iPod Touches unless there's more than 1 track + - Tries to avoid garbage data from AC3 sync by searching for two agreeing packets + - As the MPEG4IP project is defunct, switched to an independently maintained libmp4v2 which has folded in all our cumbersome patches + - Fixed SunOS compilation + - Fixed conflict between maxHeight and maxWidth and loose anamorphic + - Warn in the log when titles are being ignored during scan for lack of audio + - Fixed bug with Slow/Slowest deinterlacing and decomb which could leave a flickering line at the top or bottom of the screen + - Extracts audio and subtitle types from DVD sources, to do things like label commentary tracks + - Better handling of the beginning of AVI and WMV sources that start after time 0 + - Optimize MP4 for web download works with AC3 tracks now + + Mac GUI + - Nested presets + - Individual activity logs for each encode (stored by default in ~/Application Support/HandBrake, can be co-located with encoded file destination by preference) + - Allows reading from ZFS volumes + - Fixed target size mode. It keeps breaking itself. Maybe it should just be put out of its misery... + - Assorted other improvements + + Windows GUI + - Nested presets + - Individual activity logs for each encode + - Slow and slower deinterlacing and decomb work now in Windows + - Added resizeable update window + - Fixed parsing of non-DVD source audio formats + - Restored Copy to Clipboard to the Activity Log Window, among other enhancements to it + - Fixed bug with MKV presets showing up as .m4v + - Assorted other improvements + + Linux GUI (GTK) + - Nested presets + - Individual activity logs for each encode + - Allows pending queue items to be removed, and reloaded in the main window for editing + - Better handling of HD previews + - Assorted other improvements + + CLI + - Updated presets to the equivalent of the nested ones in the GUIs + - Allows setting custom audio track names in MP4 files + - Allows selection of the COLR atom in MP4 files, between Bt.601 and Bt.709 + - Fixed reading of device paths in OS X + + A special note on the new presets (they're collapsible-triangle-folder-thing-errific!) + - Deux Six Quatre, Blind, Broke, and Bedlam are gone. They were dead weight. + - iPod Low-Rez is now iPod Classic & iPod Nano + - iPod High-Rez is now iPod Legacy + - iPhone / iPod Touch is now iPhone & iPod Touch, so take care CLI users + - Animation and Television now use the decomb and detelecine (VFR) filters + - High Profile presets now use psy-trellis and the new subme 9 mode with B-frame RD refinement + - AppleTV is now CRF, so sizes will vary with content + - PS3 preset should be fixed + - Constant Quality Rate still needs its quality % lowered, probably + + The keen reader is already asking "iPod Legacy? WTF is iPod High-Rez called iPod Legacy now?" + + The answer is Universal. + + The Universal preset is designed to play on all modern iPods (anything newer than the iPod 5.5G). It also plays on iPhones. It also plays on AppleTVs. It should also play just about anywhere else, hence the name. It is full anamorphic DVD resolution--no tricks with downscaling like stuff from the iTunes Store. It includes chapters, and has the first audio track in both AAC (DPL2 downmixed) and AC3 pass-thru, just like the AppleTV preset. In fact, it should give the same quality as the AppleTV preset, but faster...and at a larger file size. Like the AppleTV preset, it used CRF, so sizes will vary. + +0.9.3 Snapshot2 -> 0.9.3 Snapshot 3 (r1797) + Core Library: + - Universal input support, utilizing libavcodec from the FFmpeg project for decoding non-MPEG-2 video + - Newer, faster, better version of the x264 codec, including psychovisual optimizations + - Better AV sync through full compliance with the MPEG Standard Target Decoder timing model + - More accurate auto-cropping + - Support for New Zealand and Norwegian HDTV broadcasts (H.264 and AAC-LATM in MPEG-TS) + - Detelecine is now "VFR detelecine" by default, dropping some frames and extending others to make up lost time, old behavior of keeping duplicate frames is enabled by selecting a framerate besides "Same as source" + - Threaded deinterlacing in Slow and Slower modes + - Threaded and entirely rewritten decomb filter + - Better audio resampling interpolator + - Better gamma in QuickTime through the use of the COLR MP4 atom + - Better constant quality encoding when using FFmpeg + - Hopefully better cache and virtual memory performance by recycling buffers that were most recently used instead of least + - Fix for MP4s with "negative duration" errors. + - Set the detelecine filter to work better with PAL by using "loose" breaks + - Fix for missing initial H.264 NAL units, improves reliability of 8x8dct + - Fix for subtitle-scan with XviD encoding + - Fix for crash at the end of 2nd pass using x264 + - Deblock filter works now + - Rewritten update system, so the core library can read a portion of Sparkle appcasts. + - Updates for libsamplerate, libogg, xvidcore, libtheora, libmpeg2, lame, faac, and of course ffmpeg and x264. + + Mac GUI + - Entirely rewritten and far more flexible queue that can be saved between sessions, capable of preserving queued items after a crash + - Now requires vlc 0.9.xx to read protected dvd's in the users /Applications folder + - Fix for 4x3 loose anamorphic to keep it from downscaling + - Countless other improvements + + Windows GUI + - Resolution calculation + - Better preset bar + - Better queue (including queue recovery feature) + - Better activity log window + - Improved UI (layout changes, animated x264 options, DVD drive detection, duration displayed) + - More options - includes support for custom auto name format & starting the CLI minimized + - Countless other improvements + + Linux GUI (GTK) + - It's alive! + + Known Issues in Snapshot 3 + - Possibility of a flickering line at the top or bottom of the frame after Slow or Slower deinterlacing or decombing + - Input bitrate display may be off by a factor of 100 for H.264-in-TS sources + - Constant Quality Rate preset probably needs a lower quality level (60% - 55%) + - With non-DVD sources that don't have AC3 audio, you can't encode 1 input audio track to multiple output audio tracks + - Slow and Slower deinterlacing and decombing are BROKEN in Windows + - QuickTime won't read Xvid-in-MP4 output, although VLC will + - Windows GUI does not detect all audio tracks from non-DVD sources + +0.9.3 Snapshot 1 -> 0.9.3 Snapshot 2 (r1477) + Core Library: + - Anamorphic PAR for the AVI container + - Allow constant frame rates when they different from the source's frame rate (otherwise pass through the variable MPEG-2 frame durations ) + - Decomb filter (selectively deinterlaces when it sees interlacing in the frame) + - Filter bug fixed, that would skip any filters after detelecine, if VFR wasn't enabled + - Loose anamorphic + FFmpeg video bug fixed + + Windows GUI: + - Title dropdown list bug fixed + - Missing log file bug fixed + + CLI: + - Default audio samplerate changed to 48kHz, audio bitrate changed to 160kbps. + - Samplerate entry bug fixed + +0.9.2 -> 0.9.3 Snapshot 1 (r1457) + Core Library: + - New audio subsystem (no more AAC+AC3, control each track's codec and settings individually) + - Removed libdvdcss (HandBrake no longer decrypts DVDs on its own, will use VLC to do so if it's available) + - Added Theora encoder + - Fixed x264-in-avi and ffmpeg-in-avi + - Fixed xvid + - More accurate scaling + - Major sync improvements + - Major stream improvements + - AAC+AC3 support in MKV + - MKV seeking fixes + - Make sure subtitles get displayed long enough to read them + - Updated VBV 2-pass and VBV 1-pass patch for x264 + - Adaptive Quantization for x264 + - Recover from bad preview scans + - Recover from invalid PGNs + - Fixed vorbis bitrate control + - Snapshot builds + + Mac: + - New audio interface + - Loads libdvdcss from VLC at runtime if it's present on the user's system + - No more general-purpose "Codecs" menu -- set video and audio codecs individually + - More robust preset system, in preparation for nested presets + - Made 64-bit MP4 file widget more prominent + - Only allow useful x264 options in the advanced tab + - Various fixes and improvements + + Windows: + - New x264 tab + - New audio interface + - Various fixes and improvements + + CLI: + - New audio interface + + + +Changes between 0.9.1 and 0.9.2: + CORE + + - AC3 in MP4 support + - Multi-track audio support for Apple devices + - Better handling of audio discontinuities + - More flexible, "loose" anamorphic + - Variable frame rate encoding + - MP4 optimization for progressive downloads + - Dynamic range compression for encoding from AC3 audio + - Ability to encode an audio stream and pass it through at the same time + - iPhone-compatible anamorphic (pasp atom) + - Robust program and transport stream support + - Better handling of DVD read errors from invalid VOB units + - Detects and works around missing end of cell markers + - Recovers from loss of signal in a stream + - Drops subtitles less often + - Keeps chapter markers in better sync and prevents duplicates + - Better handling of B-Frames + - Tunes FIFO sizes by CPU count + - Finally squashes the bug that cut off the end of movies + - Preset changes + - Standardizes on standard out for progress and standard error for everything else. + - Correct channel counts when passing AC3 audio to Matroska + - Tag MP4 files as encoded with HandBrake + - No more merging short chapters + - Newer copies of x264, + - VBV 2-pass patch for x264 + - Sets keyframes for x264 by frame rate. + - Support for >2GB MKV files in Linux + - Code audio languages in a way QuickTime understands + - Better subtitle positioning + - Fewer crashes in 2-pass encoding + + MAC + + - Leopard Only + - Sparkle + - Reads .eyetv files as well as .dvdmedia files + - Much better queue + - More white space + - Code restructuring + - Activity window logging, complete with a "black box recorder" for crashes + - Ability to open a single title for a DVD instead of scanning the whole thing + - Warns people when they try to queue up two files with the same name + - Maintains picture filter states between jobs + - .xib Interface Builder files SVN can track + - Switches to NSImageView for previews, so no more useless OpenGL effects + - Temporary loss of localizations for foreign languages (the old system was broken anyway) + - Separate filter settings for every queued job + + WIN + + - Revamped preset system + - Sparkle-compatible update checker + - Activity log window + - CLI built-in preset parsing + - No more admin rights required in Vista + - Handles more display resolutions + + CLI + + - Built-in presets + - Short names for denoising (weak, medium, strong) and deinterlacing (fast, slow, slower) + - Solaris port + - No more x264b30 (use -e x264 -I -x level=30:cabac=0 instead or better yet an iPod preset) + - Chapter marker .csv input fixed + - CRF as default quality mode for x264, now -q is CRF and if you want CQP add -Q to it + + + +Changes between 0.9.0 and 0.9.1: + + Core HandBrake Changes: + + Added: Forced subtitle support + + Added: 6-channel Vorbis audio + + Changed: Much better buffer management, leading to impressive speed-ups all over the place + + Changed: Color subtitles now display in color, instead of being transparent. + + Changed: All errors to stderr with hb_log() instead of to stdout with fprintf() + + Changed: Accept stream input where the file type is in caps (.VOB instead of just .vob, etc) + + Changed: Better quality Vorbis codec (AoTuV) + + Changed: Faster (threaded) ffmpeg + + Changed: Force x264 to use a key frame at chapter markers + + Changed: Try to recover from bad preview scans instead of crashing + + Fixed: No more hanging when using MKV with chapter markers + + Fixed: "Same as source" FPS now works correctly when the end-credits of a progressive film are interlaced. + + Fixed: "Slow" deinterlacing no longer doubles up the chapter markers + + Fixed: Proper display of fading subtitles + + Fixed: Nasty artifacts from inaccurate rounding in the video scaler + + Fixed: Improved compatibility with streams that have missing/misplaced PMTs + Assorted other changes + + Mac Changes: + + Changed: Bigger buffer for the Activity Log + + Changed: Redesigned Queueing window + + Changed: Redesigned Preferences window + + Changed: Structural reorganization of the code into more segmented files + + Fixed: Closing the main window no longer causes HandBrake to quit + + Fixed: Changing dimensions in Picture Settings no longer causes a crash + + Fixed: Target size bitrate calculation + + Fixed: Picture Settings previews now scale to display resolution and screen size + Assorted other changes + + Windows Changes: + + Added: More robust exception handling + + Added: On-completion options to shutdown, suspend, etc + + Added: Turn tooltips on or off + + Changed: Open source, NullSoft installer + + Fixed: Add-to-queue issues + + Fixed: Foreign language issues + Assorted other changes + + + +Changes between 0.8.5b1 and 0.9.0: + + Core HandBrake Changes + + Added: Matroska (MKV) container output + + Added: Limited MPEG-2 transport stream (.VOB and .TS) input support + + Added: Option to write MP4 files larger than 4GB + + Added: Video filters (pullup, yadif, mcdeint, hqdn3d, pp7) + + Added: DTS audio input + + Changed: Switched to Lanczos scaling from libswscale + + Changed: Precise chapter marker location + + Changed: Newer libraries + + Changed: Much faster (threaded) iPod encoding + + Changed: "Same as source" works differently (better?) now + + Fixed: Audio drops should be thoroughly banished now + + Fixed: MP2 audio support + Assorted other changes + + CLI Changes: + + Added: Chapter naming + + Added: Many new command line options for subtitles and filters. + + Added: Turbo for 2-pass x264 encodes + Assorted other changes + + Mac Changes: + + Added: Chapter naming + + Added: Growl support + + Added: Advanced x264 settings tab + + Added: Logging window + + Added: Turbo for 2-pass x264 encodes + + Added: Many new presets + + Added: Unified toolbar + + Changed: Default settings + + Changed: Further integration of the queue and active queuing + + Changed: Browse DVDs like any other volumes + + Fixed: No more floating window syndrome (Mac) + + Fixed: Presets retain "magic sauce" when you change settings + Assorted other changes + + Windows Changes: + + Changed: New C#-based Windows GUI front-end + + Changed: Improved queuing + + Changed: DVD information parser + Assorted other changes + + + +Changes between 0.8.0b1 and 0.8.5b1 + + Core HandBrake Changes + + Added: iTunes-style chapter markers. + + Added: 5.1 AAC surround sound. + + Added: Dolby Pro Logic I and II downmixing of discrete surround sound. + + Added: 1-channel AAC sound from monophonic sources. + + Added: Advanced x264 options. (including High Profile support) + + Added: B-frames in x264 + .mp4 + + Added: PPC Linux Support. + + Added: Preserve language IDs from the DVD in .mp4 + + Added: Snapshot build method. + + Added: Anamorphic video display in QuickTime. + + Changed: Renamed back to HandBrake. + + Changed: Libraries updated. + + Changed: Enabled Update Checker. + + Fixed: Multiple Audio tracks. + + Fixed: Sped up DVD scanning time by being nicer to libdvdread. + + Fixed: .dmg is now mountable in Mac OS X versions older than 10.4 + + Fixed: Proper output size from x264 in target size mode. + + Fixed: Allows output sizes larger than 2 gigs in Linux. + + Fixed: Several small memory leaks have been plugged. + + Fixed: Fixes for 64-bit systems. + + Fixed: Keep Aspect Ratio is no longer forced, so user-set height values are respected. + + CLI Interface Changes + + Added: Customize maximum width and height while keeping aspect ratio + + Changed: Much prettier help screen + + Changed: HBTest/MediaForkCLI renamed to HandBrakeCLI + + Fixed: Better display of audio and subtitle ids + + Mac GUI Changes + + Added: Presets! Includes initial ones for AppleTV, iPod, and PS3. + + Added: Preference option to auto-name output files with the DVD name and title number. + + Added: Preset support for x264 options. + + Changed: Remembers last destination path. + + Changed: Remembers last source path. + + Changed: Copy and paste in text fields. + + Changed: Updates target size more quickly. + + Changed: Mac GUI no longer retains target size values between enqueued jobs. (http://HandBrake.m0k.org/forum/viewtopic.php?t=249) + + Fixed: Preview frames are no longer distorted in anamorphic mode. + + Fixed: Mac GUI no longer floats above other windows. + + Fixed: Browse by file no longer dims the browse button preventing you from changing browse locations without switching back and forth between it and drive selection. (http://HandBrake.m0k.org/forum/viewtopic.php?t=342) + + Fixed: Makes sure destination directory is valid. + + Fixed: Fills in the file save field with the current output name instead of leaving it blank. + + Fixed: Update destination field with the current path instead of using the last one, which could have been a DVD. + + Windows GUI Changes ñ Version 2.2 beta 1 + + Added: A few presets for the iPod in the menu. + + Added: Ability to set default settings for all program encode options. + + Added: Ability to turn off Automatic Update check on start-up. See Tools > Options + + Added: Mod 16 check on the Height and Width boxes. + + Added: Check the amount of hard disk space left is not running low when saving file. + + Added: Option to have a Read DVD window showup on start-up. + + Added: ìView DVD dataî Menu item in the tools menu. + + Added: Links to the Homepage, forum, wiki and documentation page in the Help menu. + + Added: Chapter markers check box (New feature in 0.8.5b1 CLI) + + Changed: View DVD Information no longer appears after clicking the ìBrowseî button. + + Changed: A few changes to the GUI - replaced textboxes with Dropdowns which auto-populate. + + Changed: Auto Crop and Aspect text now automatically update when a new title is selected. + + Changed: Several tweaks to the GUI design, remove a few text items that are no longer needed. + + Changed: Ability to Queue videos enabled with completely re-written code. + + Changed: Ability to queue stuff up while the encoding process is running. + + Changed: Ability to remove items from the encode queue while is running. + + Changed: Anamorphic option blanks out resolution boxes. + + Changed: Re-written update checker. + + Changed: Ability to turn off update check on start-up in Tools > Options + + Changed: Auto Crop option now fills in figures into text boxes when selected. + + Changed: Mp4 now default output file extension. + + Changed: Enabled 5.1 AAC option. + + Changed: Enabled h264 advanced options. + + Changed: Updated the FAQ. + + Changed: Included new version of HandBrake. Version 0.8.5b1. + + Fixed: Pixel Ratio Not being saved with the profile. + + Removed: Both ìView Dataî buttons on the Title Selection Window. + + Removed: The ìRead DVDî button. - Automatically reads the DVD after selecting a source now. + + Removed: The Help and Support window. Been replaced with a few Web Links. + + + +Changes between 0.7.1 and 0.8.0 + + MediaFork project forked from HandBrake source + + Updated libraries (meaning better quality, hopefully fewer bugs, and increased speeds) + + iPod 5.5G support + + Revamped graphical interface (Mac OS X) + + Anamorphic encoding with pixel aspect ratio + + Brighter color reproduction in QuickTime + + Lists disks by DVD name instead of by drive name (Mac OS X) + + Titles output movies based on the DVD name (Mac OS X) + + 32Khz audio output + + Constant rate factor encoding with x264 + + New preference item to turn deinterlacing on by default (Mac OS X) + + New preference item to select the default audio language (Mac OS X) + + Bugfix for reading straight from a DVD + + + +Changes between 0.7.0 and 0.7.1 + + Universal Binary for PPC and Intel + + Bugfixes for missing subtitles, audio glitches with LPCM tracks and more + + + +Changes between 0.7.0-beta3 and 0.7.0 + + Multithreaded H.264 encoding with x264 + + Added option for H.264 Baseline (suitable for iPods) + + (Very) experimental queue support + + Fixes for some DVD titles HandBrake would not recognize + + Fixes audio gliches when encoding from LPCM tracks + + + +Changes between 0.6.2 and 0.7.0-beta3 + + Chapters selection + + Custom framerate + + Subtitle support + + Check for updates + + Custom aspect ratio + + Audio samplerate selection + + mp4/H.264 output + + Proper NTSC support + + AC3 pass-through + + Progress bar in the dock icon (OS X) + + 2-pass H.264 encoding + + Constant quality encoding + + Grayscale encoding + + Up-to-date BeOS UI + + + +Changes between 0.6.1 and 0.6.2 + + Support for DVDs with MPEG audio tracks + + Rewrote the DVD navigation code + + High quality resampler included + + Better AVI compliance + + Updated encoders + + Internal improvements + + Bugfixes + + + +Changes between 0.6.0 and 0.6.1 + + Fixed LPCM endianness issue + + + +Changes between 0.5.2 and 0.6.0 + + MP4 and OGM output + + AAC and Vorbis encoding + + Experimental H264 encoding + + LPCM DVDs support + + Autocrop + + GTK2 linux interface + + OS X interface localization + + + +Changes between 0.5.1 and 0.5.2 + + Bugfixes + + + +Changes between 0.5 and 0.5.1 + + 2-pass XviD encoding + + Bugfixes + + + +Changes between 0.4 and 0.5 + + Bugfixes, rewrite of large parts of the core + + XviD encoding (1-pass only) + + + +Changes between 0.3 and 0.4 + + Better multithreading + + Allow the user to specify a target size instead of bitrate + + Misc GUI enhancements + + Use low-priority threads on OS X + + + +Changes between 0.2 and 0.3 + + OSX & Linux ports + + Allow 2-pass encoding + + Many internal changes & fixes + + + +Changes between 0.1.1 and 0.2 + + Fixed a major bug that made HandBrake probably crash after ~ 15 + minutes encoded + + Fixed a few minor memory leaks + + + +Changes between 0.1 and 0.1.1 + + Fixed a stupid bug that prevented to scan volumes correctly if + FAT/NTFS/etc volumes were mounted + + + +Changes between 0.1-alpha2 and 0.1 : + + Automatically detect ripped DVDs on BFS volumes + + Allow picture cropping and resizing + + Allow dual-audio encoding + + Created files are quite compliant now (tested with OSX/Quicktime + and BSPlayer) + + Better A/V sync with some DVDs + + + +Changes between 0.1-alpha and 0.1-alpha2 : + + Show length for each title + + Fixed the screwed-audio bug + + Many bugfixes... + + + +First version is 0.1-alpha. diff -Nru handbrake-0.9.9+dfsg/win/CS/doc/THANKS handbrake-0.9.9+ppa1/win/CS/doc/THANKS --- handbrake-0.9.9+dfsg/win/CS/doc/THANKS 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/win/CS/doc/THANKS 2013-05-18 11:35:57.000000000 +0000 @@ -0,0 +1,35 @@ +THANKS file for HandBrake + +Graphics: + +Modernised Application Icon by Matt Johnson (mattdog.100@gmail.com) + +Handbrake Toolbar Icons by Nik Pawlak (holla@nikpawlak.com, @nikpawlak, http://nikpawlak.com) + + +Hosting: + +Github (http://github.com) +SourceForge(http://sourceforge.net/projects/handbrake) +Eric Petit (Running the servers behind HandBrake.fr) +Freenode IRC (http://freenode.net/) + +Software: + +ReviewBoard (http://www.reviewboard.org/) +PhpBB (http://www.phpbb.com/) +Jetbrains ReSharper (http://www.jetbrains.com/resharper/features/index.html?linklogos) +VisualSVN (http://www.visualsvn.com) + +Forum Moderators: + +Paul (baggss), +Du'Wayne Caviness (Cavalicious) +Edward Jackson. (TedJ) +Chuck (cvk_b) +Nate Thompson (nightstrm) + +Other: + +Thanks to all of you who have contributed time, patches, testing, uploaded test files etc. +There are too many to name here, but we do appreciate the effort. diff -Nru handbrake-0.9.9+dfsg/win/CS/doc/TRANSLATIONS handbrake-0.9.9+ppa1/win/CS/doc/TRANSLATIONS --- handbrake-0.9.9+dfsg/win/CS/doc/TRANSLATIONS 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/win/CS/doc/TRANSLATIONS 2012-03-04 12:42:44.000000000 +0000 @@ -0,0 +1,7 @@ +TRANSLATIONS file for HandBrake + +Translating HandBrake +===================== + +HandBrake does not currently have a localization scheme for any of its interfaces. + diff -Nru handbrake-0.9.9+dfsg/win/CS/HandBrake10.sln handbrake-0.9.9+ppa1/win/CS/HandBrake10.sln --- handbrake-0.9.9+dfsg/win/CS/HandBrake10.sln 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/win/CS/HandBrake10.sln 2012-09-25 15:23:17.000000000 +0000 @@ -0,0 +1,89 @@ + +Microsoft Visual Studio Solution File, Format Version 11.00 +# Visual Studio 2010 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HandBrake.ApplicationServices", "HandBrake.ApplicationServices\HandBrake.ApplicationServices.csproj", "{087A2BA8-BAC2-4577-A46F-07FF9D420016}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HandBrakeWPF", "HandBrakeWPF\HandBrakeWPF.csproj", "{DADE66CB-0E12-4959-ADE5-0ACD31D27C59}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HandBrakeInterop", "HandBrake.Interop\HandBrakeInterop\HandBrakeInterop.csproj", "{F0A61F62-2C3B-4A87-AFF4-0C4256253DA1}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{5CB7BC74-449C-4E95-98AB-E1E4387E514B}" + ProjectSection(SolutionItems) = preProject + build.xml = build.xml + EndProjectSection +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HandBrake.Server", "HandBrake.Server\HandBrake.Server.csproj", "{36847BA0-6814-41E1-B1C3-1D9D874418E9}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Debug|Mixed Platforms = Debug|Mixed Platforms + Debug|x64 = Debug|x64 + Debug|x86 = Debug|x86 + Release|Any CPU = Release|Any CPU + Release|Mixed Platforms = Release|Mixed Platforms + Release|x64 = Release|x64 + Release|x86 = Release|x86 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {087A2BA8-BAC2-4577-A46F-07FF9D420016}.Debug|Any CPU.ActiveCfg = Debug|x86 + {087A2BA8-BAC2-4577-A46F-07FF9D420016}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 + {087A2BA8-BAC2-4577-A46F-07FF9D420016}.Debug|Mixed Platforms.Build.0 = Debug|x86 + {087A2BA8-BAC2-4577-A46F-07FF9D420016}.Debug|x64.ActiveCfg = Debug|x64 + {087A2BA8-BAC2-4577-A46F-07FF9D420016}.Debug|x64.Build.0 = Debug|x64 + {087A2BA8-BAC2-4577-A46F-07FF9D420016}.Debug|x86.ActiveCfg = Debug|x86 + {087A2BA8-BAC2-4577-A46F-07FF9D420016}.Debug|x86.Build.0 = Debug|x86 + {087A2BA8-BAC2-4577-A46F-07FF9D420016}.Release|Any CPU.ActiveCfg = Release|x86 + {087A2BA8-BAC2-4577-A46F-07FF9D420016}.Release|Mixed Platforms.ActiveCfg = Release|x86 + {087A2BA8-BAC2-4577-A46F-07FF9D420016}.Release|Mixed Platforms.Build.0 = Release|x86 + {087A2BA8-BAC2-4577-A46F-07FF9D420016}.Release|x64.ActiveCfg = Release|x64 + {087A2BA8-BAC2-4577-A46F-07FF9D420016}.Release|x64.Build.0 = Release|x64 + {087A2BA8-BAC2-4577-A46F-07FF9D420016}.Release|x86.ActiveCfg = Release|x86 + {087A2BA8-BAC2-4577-A46F-07FF9D420016}.Release|x86.Build.0 = Release|x86 + {DADE66CB-0E12-4959-ADE5-0ACD31D27C59}.Debug|Any CPU.ActiveCfg = Debug|x86 + {DADE66CB-0E12-4959-ADE5-0ACD31D27C59}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 + {DADE66CB-0E12-4959-ADE5-0ACD31D27C59}.Debug|Mixed Platforms.Build.0 = Debug|x86 + {DADE66CB-0E12-4959-ADE5-0ACD31D27C59}.Debug|x64.ActiveCfg = Debug|x64 + {DADE66CB-0E12-4959-ADE5-0ACD31D27C59}.Debug|x64.Build.0 = Debug|x64 + {DADE66CB-0E12-4959-ADE5-0ACD31D27C59}.Debug|x86.ActiveCfg = Debug|x86 + {DADE66CB-0E12-4959-ADE5-0ACD31D27C59}.Debug|x86.Build.0 = Debug|x86 + {DADE66CB-0E12-4959-ADE5-0ACD31D27C59}.Release|Any CPU.ActiveCfg = Release|x86 + {DADE66CB-0E12-4959-ADE5-0ACD31D27C59}.Release|Mixed Platforms.ActiveCfg = Release|x86 + {DADE66CB-0E12-4959-ADE5-0ACD31D27C59}.Release|Mixed Platforms.Build.0 = Release|x86 + {DADE66CB-0E12-4959-ADE5-0ACD31D27C59}.Release|x64.ActiveCfg = Release|x64 + {DADE66CB-0E12-4959-ADE5-0ACD31D27C59}.Release|x64.Build.0 = Release|x64 + {DADE66CB-0E12-4959-ADE5-0ACD31D27C59}.Release|x86.ActiveCfg = Release|x86 + {DADE66CB-0E12-4959-ADE5-0ACD31D27C59}.Release|x86.Build.0 = Release|x86 + {F0A61F62-2C3B-4A87-AFF4-0C4256253DA1}.Debug|Any CPU.ActiveCfg = Debug|x86 + {F0A61F62-2C3B-4A87-AFF4-0C4256253DA1}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 + {F0A61F62-2C3B-4A87-AFF4-0C4256253DA1}.Debug|Mixed Platforms.Build.0 = Debug|x86 + {F0A61F62-2C3B-4A87-AFF4-0C4256253DA1}.Debug|x64.ActiveCfg = Debug|x64 + {F0A61F62-2C3B-4A87-AFF4-0C4256253DA1}.Debug|x64.Build.0 = Debug|x64 + {F0A61F62-2C3B-4A87-AFF4-0C4256253DA1}.Debug|x86.ActiveCfg = Debug|x86 + {F0A61F62-2C3B-4A87-AFF4-0C4256253DA1}.Debug|x86.Build.0 = Debug|x86 + {F0A61F62-2C3B-4A87-AFF4-0C4256253DA1}.Release|Any CPU.ActiveCfg = Release|x86 + {F0A61F62-2C3B-4A87-AFF4-0C4256253DA1}.Release|Mixed Platforms.ActiveCfg = Release|x86 + {F0A61F62-2C3B-4A87-AFF4-0C4256253DA1}.Release|Mixed Platforms.Build.0 = Release|x86 + {F0A61F62-2C3B-4A87-AFF4-0C4256253DA1}.Release|x64.ActiveCfg = Release|x64 + {F0A61F62-2C3B-4A87-AFF4-0C4256253DA1}.Release|x64.Build.0 = Release|x64 + {F0A61F62-2C3B-4A87-AFF4-0C4256253DA1}.Release|x86.ActiveCfg = Release|x86 + {F0A61F62-2C3B-4A87-AFF4-0C4256253DA1}.Release|x86.Build.0 = Release|x86 + {36847BA0-6814-41E1-B1C3-1D9D874418E9}.Debug|Any CPU.ActiveCfg = Debug|x86 + {36847BA0-6814-41E1-B1C3-1D9D874418E9}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 + {36847BA0-6814-41E1-B1C3-1D9D874418E9}.Debug|Mixed Platforms.Build.0 = Debug|x86 + {36847BA0-6814-41E1-B1C3-1D9D874418E9}.Debug|x64.ActiveCfg = Debug|x64 + {36847BA0-6814-41E1-B1C3-1D9D874418E9}.Debug|x64.Build.0 = Debug|x64 + {36847BA0-6814-41E1-B1C3-1D9D874418E9}.Debug|x86.ActiveCfg = Debug|x86 + {36847BA0-6814-41E1-B1C3-1D9D874418E9}.Debug|x86.Build.0 = Debug|x86 + {36847BA0-6814-41E1-B1C3-1D9D874418E9}.Release|Any CPU.ActiveCfg = Release|x86 + {36847BA0-6814-41E1-B1C3-1D9D874418E9}.Release|Mixed Platforms.ActiveCfg = Release|x86 + {36847BA0-6814-41E1-B1C3-1D9D874418E9}.Release|Mixed Platforms.Build.0 = Release|x86 + {36847BA0-6814-41E1-B1C3-1D9D874418E9}.Release|x64.ActiveCfg = Release|x64 + {36847BA0-6814-41E1-B1C3-1D9D874418E9}.Release|x64.Build.0 = Release|x64 + {36847BA0-6814-41E1-B1C3-1D9D874418E9}.Release|x86.ActiveCfg = Release|x86 + {36847BA0-6814-41E1-B1C3-1D9D874418E9}.Release|x86.Build.0 = Release|x86 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff -Nru handbrake-0.9.9+dfsg/win/CS/HandBrake10.sln.DotSettings handbrake-0.9.9+ppa1/win/CS/HandBrake10.sln.DotSettings --- handbrake-0.9.9+dfsg/win/CS/HandBrake10.sln.DotSettings 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/win/CS/HandBrake10.sln.DotSettings 2013-02-02 20:01:41.000000000 +0000 @@ -0,0 +1,1016 @@ + + True + True + True + False + HINT + HINT + DO_NOT_SHOW + DO_NOT_SHOW + HINT + DO_NOT_SHOW + HINT + HINT + DO_NOT_SHOW + DO_NOT_SHOW + HINT + <?xml version="1.0" encoding="utf-16"?><Profile name="StyleCop"><CSArrangeThisQualifier>True</CSArrangeThisQualifier><CSOptimizeUsings><OptimizeUsings>True</OptimizeUsings><EmbraceInRegion>False</EmbraceInRegion><RegionName></RegionName></CSOptimizeUsings><CSReformatCode>True</CSReformatCode><CSReorderTypeMembers>True</CSReorderTypeMembers><StyleCop.Documentation><SA1600ElementsMustBeDocumented>True</SA1600ElementsMustBeDocumented><SA1604ElementDocumentationMustHaveSummary>True</SA1604ElementDocumentationMustHaveSummary><SA1609PropertyDocumentationMustHaveValueDocumented>True</SA1609PropertyDocumentationMustHaveValueDocumented><SA1611ElementParametersMustBeDocumented>True</SA1611ElementParametersMustBeDocumented><SA1615ElementReturnValueMustBeDocumented>True</SA1615ElementReturnValueMustBeDocumented><SA1617VoidReturnValueMustNotBeDocumented>True</SA1617VoidReturnValueMustNotBeDocumented><SA1618GenericTypeParametersMustBeDocumented>True</SA1618GenericTypeParametersMustBeDocumented><SA1626SingleLineCommentsMustNotUseDocumentationStyleSlashes>True</SA1626SingleLineCommentsMustNotUseDocumentationStyleSlashes><SA1628DocumentationTextMustBeginWithACapitalLetter>True</SA1628DocumentationTextMustBeginWithACapitalLetter><SA1629DocumentationTextMustEndWithAPeriod>True</SA1629DocumentationTextMustEndWithAPeriod><SA1633SA1641UpdateFileHeader>ReplaceCopyrightElement</SA1633SA1641UpdateFileHeader><SA1639FileHeaderMustHaveSummary>True</SA1639FileHeaderMustHaveSummary><SA1642ConstructorSummaryDocumentationMustBeginWithStandardText>True</SA1642ConstructorSummaryDocumentationMustBeginWithStandardText><SA1643DestructorSummaryDocumentationMustBeginWithStandardText>True</SA1643DestructorSummaryDocumentationMustBeginWithStandardText><SA1644DocumentationHeadersMustNotContainBlankLines>True</SA1644DocumentationHeadersMustNotContainBlankLines></StyleCop.Documentation><StyleCop.Layout><SA1500CurlyBracketsForMultiLineStatementsMustNotShareLine>True</SA1500CurlyBracketsForMultiLineStatementsMustNotShareLine><SA1509OpeningCurlyBracketsMustNotBePrecededByBlankLine>True</SA1509OpeningCurlyBracketsMustNotBePrecededByBlankLine><SA1510ChainedStatementBlocksMustNotBePrecededByBlankLine>True</SA1510ChainedStatementBlocksMustNotBePrecededByBlankLine><SA1511WhileDoFooterMustNotBePrecededByBlankLine>True</SA1511WhileDoFooterMustNotBePrecededByBlankLine><SA1512SingleLineCommentsMustNotBeFollowedByBlankLine>True</SA1512SingleLineCommentsMustNotBeFollowedByBlankLine><SA1513ClosingCurlyBracketMustBeFollowedByBlankLine>True</SA1513ClosingCurlyBracketMustBeFollowedByBlankLine><SA1514ElementDocumentationHeaderMustBePrecededByBlankLine>True</SA1514ElementDocumentationHeaderMustBePrecededByBlankLine><SA1515SingleLineCommentMustBeProceededByBlankLine>True</SA1515SingleLineCommentMustBeProceededByBlankLine></StyleCop.Layout><StyleCop.Maintainability><SA1119StatementMustNotUseUnnecessaryParenthesis>True</SA1119StatementMustNotUseUnnecessaryParenthesis></StyleCop.Maintainability><StyleCop.Ordering><AlphabeticalUsingDirectives>Alphabetical</AlphabeticalUsingDirectives><ExpandUsingDirectives>FullyQualify</ExpandUsingDirectives><SA1212PropertyAccessorsMustFollowOrder>True</SA1212PropertyAccessorsMustFollowOrder><SA1213EventAccessorsMustFollowOrder>True</SA1213EventAccessorsMustFollowOrder></StyleCop.Ordering><StyleCop.Readability><SA1100DoNotPrefixCallsWithBaseUnlessLocalImplementationExists>True</SA1100DoNotPrefixCallsWithBaseUnlessLocalImplementationExists><SA1106CodeMustNotContainEmptyStatements>True</SA1106CodeMustNotContainEmptyStatements><SA1108BlockStatementsMustNotContainEmbeddedComments>True</SA1108BlockStatementsMustNotContainEmbeddedComments><SA1109BlockStatementsMustNotContainEmbeddedRegions>True</SA1109BlockStatementsMustNotContainEmbeddedRegions><SA1120CommentsMustContainText>True</SA1120CommentsMustContainText><SA1121UseBuiltInTypeAlias>True</SA1121UseBuiltInTypeAlias><SA1122UseStringEmptyForEmptyStrings>True</SA1122UseStringEmptyForEmptyStrings><SA1123DoNotPlaceRegionsWithinElements>True</SA1123DoNotPlaceRegionsWithinElements><SA1124CodeMustNotContainEmptyRegions>True</SA1124CodeMustNotContainEmptyRegions></StyleCop.Readability><StyleCop.Spacing><SA1001CommasMustBeSpacedCorrectly>True</SA1001CommasMustBeSpacedCorrectly><SA1005SingleLineCommentsMustBeginWithSingleSpace>True</SA1005SingleLineCommentsMustBeginWithSingleSpace><SA1006PreprocessorKeywordsMustNotBePrecededBySpace>True</SA1006PreprocessorKeywordsMustNotBePrecededBySpace><SA1021NegativeSignsMustBeSpacedCorrectly>True</SA1021NegativeSignsMustBeSpacedCorrectly><SA1022PositiveSignsMustBeSpacedCorrectly>True</SA1022PositiveSignsMustBeSpacedCorrectly><SA1025CodeMustNotContainMultipleWhitespaceInARow>True</SA1025CodeMustNotContainMultipleWhitespaceInARow></StyleCop.Spacing></Profile> + Default: Full Cleanup + StyleCop + False + True + 1 + 1 + 1 + SEPARATE + ALWAYS_ADD + ALWAYS_ADD + ALWAYS_ADD + ALWAYS_ADD + ALWAYS_ADD + False + False + 1 + 1 + False + public protected internal private static new abstract virtual override sealed readonly extern unsafe volatile async + False + False + False + False + True + ALWAYS_USE + ON_SINGLE_LINE + False + True + False + False + True + False + True + True + CHOP_IF_LONG + True + True + CHOP_IF_LONG + CHOP_IF_LONG + True + <?xml version="1.0" encoding="utf-8"?> +<!-- Last updated 15.05.2012 --> +<Patterns xmlns="urn:shemas-jetbrains-com:member-reordering-patterns"> + + <!-- Do not reorder COM interfaces --> + <Pattern> + <Match> + <And Weight="2000"> + <Kind Is="interface"/> + <Or> + <HasAttribute CLRName="System.Runtime.InteropServices.InterfaceTypeAttribute"/> + <HasAttribute CLRName="System.Runtime.InteropServices.ComImport"/> + </Or> + </And> + </Match> + </Pattern> + + <!-- Do not reorder P/Invoke structs --> + <Pattern> + <Match> + <And Weight="2000"> + <Or> + <Kind Is="struct"/> + <Kind Is="class"/> + </Or> + <HasAttribute CLRName="System.Runtime.InteropServices.StructLayoutAttribute"/> + </And> + </Match> + </Pattern> + + <!-- Do not reorder P/Invoke classes (called xxxNativeMethods) --> + <Pattern> + <Match> + <And Weight="2000"> + <Kind Is="class"/> + <Name Is=".*NativeMethods" /> + </And> + </Match> + </Pattern> + + <!-- StyleCop pattern --> + <Pattern RemoveAllRegions="true"> + <Match> + <Or Weight="1000" > + <Kind Is="class" /> + <Kind Is="struct" /> + <Kind Is="interface"/> + </Or> + </Match> + + <!-- Constants --> + <Entry> + <Match> + <Kind Is="constant"/> + </Match> + <Sort> + <Access Order="public internal protected-internal protected private"/> + <Name/> + </Sort> + <Group Region="Constants"/> + </Entry> + + <!-- Static fields --> + <Entry> + <Match> + <And> + <Kind Is="field"/> + <Static /> + </And> + </Match> + <Sort> + <Access Order="public internal protected-internal protected private"/> + <Readonly/> + <Name/> + </Sort> + <Group Region="Static Fields"/> + </Entry> + + <!-- Fields --> + <Entry> + <Match> + <Kind Is="field"/> + </Match> + <Sort> + <Access Order="public internal protected-internal protected private"/> + <Readonly/> + <Name/> + </Sort> + <Group Region="Fields"/> + </Entry> + + <!-- constructors and destructors --> + <Entry> + <Match> + <Or Weight="200"> + <Kind Is="constructor"/> + <Kind Is="destructor"/> + </Or> + </Match> + <Sort> + <Static/> + <Kind Order="constructor destructor"/> + <Access Order="public internal protected-internal protected private"/> + </Sort> + <Group Region="Constructors and Destructors"/> + </Entry> + + <!-- delegates --> + <Entry> + <Match> + <Kind Is="delegate"/> + </Match> + <Sort> + <Access Order="public internal protected-internal protected private" /> + <Static /> + <Name/> + </Sort> + <Group Region="Delegates"/> + </Entry> + + <!-- public events --> + <Entry> + <Match> + <And> + <Kind Is="event"/> + <Access Is="public"/> + </And> + </Match> + <Sort> + <Access Order="public" /> + <Static /> + <Name/> + </Sort> + <Group Region="Public Events"/> + </Entry> + + <!-- interface events --> + <Entry> + <Match> + <And> + <Kind Is="event"/> + <ImplementsInterface/> + </And> + </Match> + <Sort> + <ImplementsInterface Immediate="true"/> + <Name/> + </Sort> + <Group Region="Explicit Interface Events" /> + </Entry> + + <!-- other events --> + <Entry> + <Match> + <Kind Is="event"/> + </Match> + <Sort> + <Access Order="public internal protected-internal protected private" /> + <Static /> + <Name/> + </Sort> + <Group Region="Events"/> + </Entry> + + <!-- enum --> + <Entry> + <Match> + <Kind Is="enum"/> + </Match> + <Sort> + <Access Order="public internal protected-internal protected private" /> + <Name/> + </Sort> + <Group Region="Enums"/> + </Entry> + + <!-- interfaces --> + <Entry> + <Match> + <Kind Is="interface" /> + </Match> + <Sort> + <Access Order="public internal protected-internal protected private" /> + <Name/> + </Sort> + <Group Region="Interfaces"/> + </Entry> + + <!-- public properties --> + <Entry> + <Match> + <And> + <Kind Is="property"/> + <Access Is="public"/> + </And> + </Match> + <Sort> + <Access Order="public"/> + <Static/> + <Name/> + </Sort> + <Group Region="Public Properties"/> + </Entry> + + <!-- interface properties --> + <Entry> + <Match> + <And> + <Kind Is="property"/> + <ImplementsInterface/> + </And> + </Match> + <Sort> + <ImplementsInterface Immediate="true"/> + <Name/> + </Sort> + <Group Region="Explicit Interface Properties" /> + </Entry> + + <!-- other properties --> + <Entry> + <Match> + <Kind Is="property"/> + </Match> + <Sort> + <Access Order="public internal protected-internal protected private"/> + <Static/> + <Name/> + </Sort> + <Group Region="Properties"/> + </Entry> + + <!-- public indexers --> + <Entry> + <Match> + <And> + <Kind Is="indexer" Weight="1000" /> + <Access Is="public"/> + </And> + </Match> + <Sort> + <Access Order="public" /> + <Static/> + <Name/> + </Sort> + <Group Region="Public Indexers"/> + </Entry> + + <!-- interface indexers --> + <Entry> + <Match> + <And> + <Kind Is="indexer" Weight="1000"/> + <ImplementsInterface/> + </And> + </Match> + <Sort> + <ImplementsInterface Immediate="true"/> + <Name/> + </Sort> + <Group Region="Explicit Interface Indexers" /> + </Entry> + + <!-- other indexers --> + <Entry> + <Match> + <Kind Is="indexer" Weight="1000" /> + </Match> + <Sort> + <Access Order="public internal protected-internal protected private" /> + <Static/> + <Name/> + </Sort> + <Group Region="Indexers"/> + </Entry> + + <!-- public methods (includes operators) --> + <Entry> + <Match> + <And> + <Or> + <Kind Is="method"/> + <Kind Is="operator"/> + </Or> + <Access Is="public"/> + </And> + </Match> + <Sort> + <Access Order="public"/> + <Static/> + <Name/> + </Sort> + <Group Region="Public Methods and Operators"/> + </Entry> + + <!-- interface methods --> + <Entry> + <Match> + <And> + <Kind Is="method"/> + <ImplementsInterface/> + </And> + </Match> + <Sort> + <ImplementsInterface Immediate="true"/> + <Name/> + </Sort> + <Group Region="Explicit Interface Methods" /> + </Entry> + + <!-- other methods --> + <Entry> + <Match> + <Kind Is="method"/> + </Match> + <Sort> + <Access Order="public internal protected-internal protected private"/> + <Static/> + <Name/> + </Sort> + <Group Region="Methods"/> + </Entry> + + <!-- operators --> + <Entry> + <Match> + <Kind Is="operator"/> + </Match> + <Sort> + <Access Order="public internal protected-internal protected private" /> + <Static/> + <Name/> + </Sort> + <Group Region="Operators"/> + </Entry> + + <!-- Nested structs --> + <Entry> + <Match> + <Kind Is="struct" + Weight="600" /> + </Match> + <Sort> + <Static /> + <Access Order="public internal protected-internal protected private" /> + <Name/> + </Sort> + </Entry> + + <!-- Nested classes --> + <Entry> + <Match> + <Kind Is="class" + Weight="700" /> + </Match> + <Sort> + <Static /> + <Access Order="public internal protected-internal protected private" /> + <Name/> + </Sort> + </Entry> + + <!-- all other members --> + <Entry/> + + </Pattern> +</Patterns> + True + True + True + False + True + True + False + True + True + False + False + True + Automatic property + True + True + True + True + False + False + AAC + AC + DTS + DTSHD + HD + MP + RF + UI + $object$_On$event$ + <Policy Inspect="True" Prefix="" Suffix="" Style="AaBb" /> + <Policy Inspect="True" Prefix="" Suffix="" Style="AaBb" /> + <Policy Inspect="True" Prefix="I" Suffix="" Style="AaBb" /> + <Policy Inspect="True" Prefix="" Suffix="" Style="AaBb" /> + <Policy Inspect="True" Prefix="" Suffix="" Style="aaBb" /> + <Policy Inspect="True" Prefix="" Suffix="" Style="AaBb" /> + <Policy Inspect="True" Prefix="" Suffix="" Style="AaBb" /> + <Policy Inspect="True" Prefix="" Suffix="" Style="aaBb" /> + <Policy Inspect="True" Prefix="" Suffix="" Style="AaBb" /> + <Policy Inspect="True" Prefix="" Suffix="" Style="aaBb" /> + <Policy Inspect="True" Prefix="" Suffix="" Style="aaBb" /> + <Policy Inspect="True" Prefix="" Suffix="" Style="AaBb" /> + <Policy Inspect="True" Prefix="" Suffix="" Style="AaBb" /> + <Policy Inspect="True" Prefix="" Suffix="" Style="AaBb" /> + <Policy Inspect="True" Prefix="T" Suffix="" Style="AaBb" /> + <Policy Inspect="True" Prefix="" Suffix="" Style="AaBb" /> + $object$_On$event$ + False + True + ObjectBrowser + False + False + False + False + False + False + False + False + False + False + False + True + True + True + False + VS + SymbolsVs08 + False + True + True + Updates + -13,-311 + True + 271 + 269 + 91 + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + NotOverridden + NotOverridden + NotOverridden + NotOverridden + NotOverridden + NotOverridden + NotOverridden + NotOverridden + NotOverridden \ No newline at end of file diff -Nru handbrake-0.9.9+dfsg/win/CS/HandBrake.ApplicationServices/app.config handbrake-0.9.9+ppa1/win/CS/HandBrake.ApplicationServices/app.config --- handbrake-0.9.9+dfsg/win/CS/HandBrake.ApplicationServices/app.config 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/win/CS/HandBrake.ApplicationServices/app.config 2011-08-15 16:54:19.000000000 +0000 @@ -0,0 +1,9 @@ + + + + + + + + + diff -Nru handbrake-0.9.9+dfsg/win/CS/HandBrake.ApplicationServices/ASUserSettingConstants.cs handbrake-0.9.9+ppa1/win/CS/HandBrake.ApplicationServices/ASUserSettingConstants.cs --- handbrake-0.9.9+dfsg/win/CS/HandBrake.ApplicationServices/ASUserSettingConstants.cs 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/win/CS/HandBrake.ApplicationServices/ASUserSettingConstants.cs 2013-03-19 21:48:51.000000000 +0000 @@ -0,0 +1,92 @@ +// -------------------------------------------------------------------------------------------------------------------- +// +// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License. +// +// +// The User Setting Constants +// +// -------------------------------------------------------------------------------------------------------------------- + +namespace HandBrake.ApplicationServices +{ + /// + /// Constants for the User Settings Service + /// + public class ASUserSettingConstants + { + /// + /// The Verbosity + /// + public const string Verbosity = "Verbosity"; + + /// + /// When Complete Action + /// + public const string WhenCompleteAction = "WhenCompleteAction"; + + /// + /// Process Priority + /// + public const string ProcessPriority = "ProcessPriority"; + + /// + /// Prevent Sleep + /// + public const string PreventSleep = "PreventSleep"; + + /// + /// Save Log Directory + /// + public const string SaveLogToCopyDirectory = "SaveLogToCopyDirectory"; + + /// + /// Save log with video + /// + public const string SaveLogWithVideo = "SaveLogWithVideo"; + + /// + /// Save copy of the log to a directory + /// + public const string SaveLogCopyDirectory = "SaveLogCopyDirectory"; + + /// + /// HandBrakes build + /// + public const string HandBrakeBuild = "HandBrakeBuild"; + + /// + /// Disable Libdvdnav + /// + public const string DisableLibDvdNav = "DisableLibDvdNav"; + + /// + /// Send file enabled. + /// + public const string SendFile = "SendFile"; + + /// + /// Send file to application path + /// + public const string SendFileTo = "SendFileTo"; + + /// + /// Send file to arguments + /// + public const string SendFileToArgs = "SendFileToArgs"; + + /// + /// Min Title Scan Duration + /// + public const string MinScanDuration = "MinTitleScanDuration"; + + /// + /// Preview Scan Count + /// + public const string PreviewScanCount = "previewScanCount"; + + /// + /// Clear completed items from the queue automatically. + /// + public const string ClearCompletedFromQueue = "ClearCompletedFromQueue"; + } +} diff -Nru handbrake-0.9.9+dfsg/win/CS/HandBrake.ApplicationServices/Collections/SerializableDictionary.cs handbrake-0.9.9+ppa1/win/CS/HandBrake.ApplicationServices/Collections/SerializableDictionary.cs --- handbrake-0.9.9+dfsg/win/CS/HandBrake.ApplicationServices/Collections/SerializableDictionary.cs 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/win/CS/HandBrake.ApplicationServices/Collections/SerializableDictionary.cs 2012-06-14 19:08:34.000000000 +0000 @@ -0,0 +1,126 @@ +// -------------------------------------------------------------------------------------------------------------------- +// +// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License. +// +// +// A Serializable Dictionary +// +// -------------------------------------------------------------------------------------------------------------------- + +namespace HandBrake.ApplicationServices.Collections +{ + using System.Collections.Generic; + using System.Collections.Specialized; + using System.Xml.Serialization; + + /// + /// A Serializable Dictionary + /// + /// + /// The Key Type + /// + /// + /// The Value Type + /// + [XmlRoot("dictionary")] + public class SerializableDictionary : Dictionary, IXmlSerializable + { + #region IXmlSerializable Members + + /// + /// Get the Schema + /// + /// + /// Nothing. We don't use this. + /// + public System.Xml.Schema.XmlSchema GetSchema() + { + return null; + } + + /// + /// Deserialize some XML into a dictionary + /// + /// + /// The reader. + /// + public void ReadXml(System.Xml.XmlReader reader) + { + XmlSerializer keySerializer = new XmlSerializer(typeof(TKey)); + XmlSerializer valueSerializer = new XmlSerializer(typeof(TValue)); + + bool wasEmpty = reader.IsEmptyElement; + reader.Read(); + + if (wasEmpty) + return; + + while (reader.NodeType != System.Xml.XmlNodeType.EndElement) + { + reader.ReadStartElement("item"); + + reader.ReadStartElement("key"); + TKey key = (TKey)keySerializer.Deserialize(reader); + reader.ReadEndElement(); + + reader.ReadStartElement("value"); + TValue value; + if (reader.Name.Contains("ArrayOfString")) + { + XmlSerializer scSerializer = new XmlSerializer(typeof(StringCollection)); + value = (TValue)scSerializer.Deserialize(reader); + } + else + { + value = (TValue)valueSerializer.Deserialize(reader); + } + reader.ReadEndElement(); + + this.Add(key, value); + + reader.ReadEndElement(); + reader.MoveToContent(); + } + reader.ReadEndElement(); + } + + /// + /// Write the Dictionary out to XML + /// + /// + /// The writer. + /// + public void WriteXml(System.Xml.XmlWriter writer) + { + XmlSerializer keySerializer = new XmlSerializer(typeof(TKey)); + XmlSerializer valueSerializer = new XmlSerializer(typeof(TValue)); + + foreach (TKey key in this.Keys) + { + writer.WriteStartElement("item"); + + writer.WriteStartElement("key"); + keySerializer.Serialize(writer, key); + writer.WriteEndElement(); + + writer.WriteStartElement("value"); + TValue value = this[key]; + + if (value.GetType() == typeof(StringCollection)) + { + XmlSerializer scSerializer = new XmlSerializer(typeof(StringCollection)); + scSerializer.Serialize(writer, value); + writer.WriteEndElement(); + } + else + { + valueSerializer.Serialize(writer, value); + writer.WriteEndElement(); + } + + writer.WriteEndElement(); + } + } + #endregion + } +} diff -Nru handbrake-0.9.9+dfsg/win/CS/HandBrake.ApplicationServices/Converters/EnumToDescConverter.cs handbrake-0.9.9+ppa1/win/CS/HandBrake.ApplicationServices/Converters/EnumToDescConverter.cs --- handbrake-0.9.9+dfsg/win/CS/HandBrake.ApplicationServices/Converters/EnumToDescConverter.cs 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/win/CS/HandBrake.ApplicationServices/Converters/EnumToDescConverter.cs 2012-07-20 17:06:08.000000000 +0000 @@ -0,0 +1,60 @@ +// -------------------------------------------------------------------------------------------------------------------- +// +// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License. +// +// +// Enum to Description Converter +// +// -------------------------------------------------------------------------------------------------------------------- + +namespace HandBrake.ApplicationServices.Converters +{ + using System; + using System.ComponentModel; + + using HandBrake.ApplicationServices.Utilities; + + /// + /// Enum to Description Converter + /// + public class EnumToDescConverter : EnumConverter + { + /// + /// Initializes a new instance of the class. + /// + /// + /// The type. + /// + public EnumToDescConverter(Type type) + : base(type) + { + } + + /// + /// Convert To an Object. + /// + /// + /// The context. + /// + /// + /// The culture. + /// + /// + /// The value. + /// + /// + /// The destination type. + /// + /// + /// The Enum Object + /// + public override object ConvertTo( + ITypeDescriptorContext context, + System.Globalization.CultureInfo culture, + object value, + Type destinationType) + { + return EnumHelper.GetDescription((Enum)value); + } + } +} diff -Nru handbrake-0.9.9+dfsg/win/CS/HandBrake.ApplicationServices/EventArgs/EncodeCompletedEventArgs.cs handbrake-0.9.9+ppa1/win/CS/HandBrake.ApplicationServices/EventArgs/EncodeCompletedEventArgs.cs --- handbrake-0.9.9+dfsg/win/CS/HandBrake.ApplicationServices/EventArgs/EncodeCompletedEventArgs.cs 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/win/CS/HandBrake.ApplicationServices/EventArgs/EncodeCompletedEventArgs.cs 2012-08-22 20:11:18.000000000 +0000 @@ -0,0 +1,58 @@ +// -------------------------------------------------------------------------------------------------------------------- +// +// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License. +// +// +// Encode Progress Event Args +// +// -------------------------------------------------------------------------------------------------------------------- + +namespace HandBrake.ApplicationServices.EventArgs +{ + using System; + using System.Runtime.Serialization; + + /// + /// Encode Progress Event Args + /// + [DataContractAttribute] + public class EncodeCompletedEventArgs : EventArgs + { + /// + /// Initializes a new instance of the class. + /// + /// + /// The sucessful. + /// + /// + /// The exception. + /// + /// + /// The error information. + /// + public EncodeCompletedEventArgs(bool sucessful, Exception exception, string errorInformation) + { + this.Successful = sucessful; + this.Exception = exception; + this.ErrorInformation = errorInformation; + } + + /// + /// Gets or sets a value indicating whether Successful. + /// + [DataMember] + public bool Successful { get; set; } + + /// + /// Gets or sets Exception. + /// + [DataMember] + public Exception Exception { get; set; } + + /// + /// Gets or sets ErrorInformation. + /// + [DataMember] + public string ErrorInformation { get; set; } + } +} diff -Nru handbrake-0.9.9+dfsg/win/CS/HandBrake.ApplicationServices/EventArgs/EncodeProgressEventArgs.cs handbrake-0.9.9+ppa1/win/CS/HandBrake.ApplicationServices/EventArgs/EncodeProgressEventArgs.cs --- handbrake-0.9.9+dfsg/win/CS/HandBrake.ApplicationServices/EventArgs/EncodeProgressEventArgs.cs 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/win/CS/HandBrake.ApplicationServices/EventArgs/EncodeProgressEventArgs.cs 2012-08-22 20:11:18.000000000 +0000 @@ -0,0 +1,63 @@ +// -------------------------------------------------------------------------------------------------------------------- +// +// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License. +// +// +// Encode Progress Event Args +// +// -------------------------------------------------------------------------------------------------------------------- + +namespace HandBrake.ApplicationServices.EventArgs +{ + using System; + using System.Runtime.Serialization; + + /// + /// Encode Progress Event Args + /// + [DataContractAttribute] + public class EncodeProgressEventArgs : EventArgs + { + /// + /// Gets or sets PercentComplete. + /// + [DataMember] + public float PercentComplete { get; set; } + + /// + /// Gets or sets CurrentFrameRate. + /// + [DataMember] + public float CurrentFrameRate { get; set; } + + /// + /// Gets or sets AverageFrameRate. + /// + [DataMember] + public float AverageFrameRate { get; set; } + + /// + /// Gets or sets EstimatedTimeLeft. + /// + [DataMember] + public TimeSpan EstimatedTimeLeft { get; set; } + + /// + /// Gets or sets Task. + /// + [DataMember] + public int Task { get; set; } + + /// + /// Gets or sets TaskCount. + /// + [DataMember] + public int TaskCount { get; set; } + + /// + /// Gets or sets ElapsedTime. + /// + [DataMember] + public TimeSpan ElapsedTime { get; set; } + } +} diff -Nru handbrake-0.9.9+dfsg/win/CS/HandBrake.ApplicationServices/EventArgs/QueueProgressEventArgs.cs handbrake-0.9.9+ppa1/win/CS/HandBrake.ApplicationServices/EventArgs/QueueProgressEventArgs.cs --- handbrake-0.9.9+dfsg/win/CS/HandBrake.ApplicationServices/EventArgs/QueueProgressEventArgs.cs 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/win/CS/HandBrake.ApplicationServices/EventArgs/QueueProgressEventArgs.cs 2012-06-14 19:08:34.000000000 +0000 @@ -0,0 +1,37 @@ +// -------------------------------------------------------------------------------------------------------------------- +// +// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License. +// +// +// Queue Progress Event Args +// +// -------------------------------------------------------------------------------------------------------------------- + +namespace HandBrake.ApplicationServices.EventArgs +{ + using System; + + using HandBrake.ApplicationServices.Model; + + /// + /// Queue Progress Event Args + /// + public class QueueProgressEventArgs : EventArgs + { + /// + /// Initializes a new instance of the class. + /// + /// + /// The new job. + /// + public QueueProgressEventArgs(QueueTask newJob) + { + this.NewJob = newJob; + } + + /// + /// Gets or sets the new job which is about to be processed. + /// + public QueueTask NewJob { get; set; } + } +} diff -Nru handbrake-0.9.9+dfsg/win/CS/HandBrake.ApplicationServices/EventArgs/ScanCompletedEventArgs.cs handbrake-0.9.9+ppa1/win/CS/HandBrake.ApplicationServices/EventArgs/ScanCompletedEventArgs.cs --- handbrake-0.9.9+dfsg/win/CS/HandBrake.ApplicationServices/EventArgs/ScanCompletedEventArgs.cs 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/win/CS/HandBrake.ApplicationServices/EventArgs/ScanCompletedEventArgs.cs 2013-02-24 14:53:29.000000000 +0000 @@ -0,0 +1,65 @@ +// -------------------------------------------------------------------------------------------------------------------- +// +// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License. +// +// +// Scan Progress Event Args +// +// -------------------------------------------------------------------------------------------------------------------- + +namespace HandBrake.ApplicationServices.EventArgs +{ + using System; + using System.Runtime.Serialization; + + /// + /// Scan Progress Event Args + /// + [DataContractAttribute] + public class ScanCompletedEventArgs : EventArgs + { + /// + /// Initializes a new instance of the class. + /// + /// + /// Whether the scan was cancelled. + /// + /// + /// The exception. + /// + /// + /// The error information. + /// + public ScanCompletedEventArgs(bool cancelled, Exception exception, string errorInformation) + { + this.Successful = !cancelled && exception == null && string.IsNullOrEmpty(errorInformation); + this.Cancelled = cancelled; + this.Exception = exception; + this.ErrorInformation = errorInformation; + } + + /// + /// Gets or sets a value indicating whether Successful. + /// + [DataMember] + public bool Successful { get; set; } + + /// + /// Gets or sets a value indicating whether Cancelled. + /// + [DataMember] + public bool Cancelled { get; set; } + + /// + /// Gets or sets Exception. + /// + [DataMember] + public Exception Exception { get; set; } + + /// + /// Gets or sets ErrorInformation. + /// + [DataMember] + public string ErrorInformation { get; set; } + } +} diff -Nru handbrake-0.9.9+dfsg/win/CS/HandBrake.ApplicationServices/EventArgs/ScanProgressEventArgs.cs handbrake-0.9.9+ppa1/win/CS/HandBrake.ApplicationServices/EventArgs/ScanProgressEventArgs.cs --- handbrake-0.9.9+dfsg/win/CS/HandBrake.ApplicationServices/EventArgs/ScanProgressEventArgs.cs 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/win/CS/HandBrake.ApplicationServices/EventArgs/ScanProgressEventArgs.cs 2013-03-02 19:38:24.000000000 +0000 @@ -0,0 +1,39 @@ +// -------------------------------------------------------------------------------------------------------------------- +// +// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License. +// +// +// Scan Progress Event Args +// +// -------------------------------------------------------------------------------------------------------------------- + +namespace HandBrake.ApplicationServices.EventArgs +{ + using System; + using System.Runtime.Serialization; + + /// + /// Scan Progress Event Args + /// + [DataContractAttribute] + public class ScanProgressEventArgs : EventArgs + { + /// + /// Gets or sets the title currently being scanned. + /// + [DataMember] + public int CurrentTitle { get; set; } + + /// + /// Gets or sets the total number of Titles. + /// + [DataMember] + public int Titles { get; set; } + + /// + /// Gets or sets the percentage. + /// + [DataMember] + public decimal Percentage { get; set; } + } +} diff -Nru handbrake-0.9.9+dfsg/win/CS/HandBrake.ApplicationServices/EventArgs/SettingChangedEventArgs.cs handbrake-0.9.9+ppa1/win/CS/HandBrake.ApplicationServices/EventArgs/SettingChangedEventArgs.cs --- handbrake-0.9.9+dfsg/win/CS/HandBrake.ApplicationServices/EventArgs/SettingChangedEventArgs.cs 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/win/CS/HandBrake.ApplicationServices/EventArgs/SettingChangedEventArgs.cs 2013-01-17 22:29:37.000000000 +0000 @@ -0,0 +1,27 @@ +// -------------------------------------------------------------------------------------------------------------------- +// +// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License. +// +// +// The setting changed event args. +// +// -------------------------------------------------------------------------------------------------------------------- + +namespace HandBrake.ApplicationServices.EventArgs +{ + /// + /// The setting changed event args. + /// + public class SettingChangedEventArgs + { + /// + /// Gets or sets the key. + /// + public string Key { get; set; } + + /// + /// Gets or sets the value. + /// + public object Value { get; set; } + } +} diff -Nru handbrake-0.9.9+dfsg/win/CS/HandBrake.ApplicationServices/Exceptions/GeneralApplicationException.cs handbrake-0.9.9+ppa1/win/CS/HandBrake.ApplicationServices/Exceptions/GeneralApplicationException.cs --- handbrake-0.9.9+dfsg/win/CS/HandBrake.ApplicationServices/Exceptions/GeneralApplicationException.cs 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/win/CS/HandBrake.ApplicationServices/Exceptions/GeneralApplicationException.cs 2012-06-14 19:08:34.000000000 +0000 @@ -0,0 +1,53 @@ +// -------------------------------------------------------------------------------------------------------------------- +// +// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License. +// +// +// The Encode Failure Exception +// +// -------------------------------------------------------------------------------------------------------------------- + +namespace HandBrake.ApplicationServices.Exceptions +{ + using System; + + /// + /// The Encode Failure Exception + /// + public class GeneralApplicationException : Exception + { + /// + /// Initializes a new instance of the class. + /// + /// + /// The error. + /// + /// + /// The solution. + /// + /// + /// The inner Exception. + /// + public GeneralApplicationException(string error, string solution, Exception innerException) + { + this.Error = error; + this.Solution = solution; + this.ActualException = innerException; + } + + /// + /// Gets or sets FailureReason. + /// + public string Error { get; set; } + + /// + /// Gets or sets Solution. + /// + public string Solution { get; set; } + + /// + /// Gets or sets InnerException. + /// + public Exception ActualException { get; set; } + } +} diff -Nru handbrake-0.9.9+dfsg/win/CS/HandBrake.ApplicationServices/Extensions/StringExtensions.cs handbrake-0.9.9+ppa1/win/CS/HandBrake.ApplicationServices/Extensions/StringExtensions.cs --- handbrake-0.9.9+dfsg/win/CS/HandBrake.ApplicationServices/Extensions/StringExtensions.cs 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/win/CS/HandBrake.ApplicationServices/Extensions/StringExtensions.cs 2012-06-14 19:08:34.000000000 +0000 @@ -0,0 +1,41 @@ +// -------------------------------------------------------------------------------------------------------------------- +// +// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License. +// +// +// String Extensions +// +// -------------------------------------------------------------------------------------------------------------------- + +namespace HandBrake.ApplicationServices.Extensions +{ + using System.Text; + + /// + /// String Extensions + /// + public static class StringExtensions + { + /// + /// Change the input string to title case + /// + /// the input string + /// the input string in title case + public static string ToTitleCase(this string input) + { + string[] tokens = input.Split(' '); + StringBuilder sb = new StringBuilder(input.Length); + foreach (string s in tokens) + { + if (!string.IsNullOrEmpty(s)) + { + sb.Append(s[0].ToString().ToUpper()); + sb.Append(s.Substring(1).ToLower()); + sb.Append(" "); + } + } + + return sb.ToString().Trim(); + } + } +} diff -Nru handbrake-0.9.9+dfsg/win/CS/HandBrake.ApplicationServices/Factories/PlistPresetFactory.cs handbrake-0.9.9+ppa1/win/CS/HandBrake.ApplicationServices/Factories/PlistPresetFactory.cs --- handbrake-0.9.9+dfsg/win/CS/HandBrake.ApplicationServices/Factories/PlistPresetFactory.cs 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/win/CS/HandBrake.ApplicationServices/Factories/PlistPresetFactory.cs 2013-04-21 14:28:52.000000000 +0000 @@ -0,0 +1,364 @@ +// -------------------------------------------------------------------------------------------------------------------- +// +// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License. +// +// +// A Factory to translate a Plist object into a Preset. +// +// -------------------------------------------------------------------------------------------------------------------- + +namespace HandBrake.ApplicationServices.Factories +{ + using System.Collections.Generic; + using System.Collections.ObjectModel; + using System.Globalization; + using System.Linq; + + using HandBrake.ApplicationServices.Model; + using HandBrake.ApplicationServices.Model.Encoding; + using HandBrake.ApplicationServices.Services; + using HandBrake.ApplicationServices.Utilities; + using HandBrake.Interop.Model.Encoding; + using HandBrake.Interop.Model.Encoding.x264; + + /// + /// A Factory to translate a Plist object into a Preset. + /// + public class PlistPresetFactory + { + /// + /// The create preset. + /// + /// + /// The plist. + /// + /// + /// The . + /// + public static Preset CreatePreset(PList plist) + { + Preset preset = new Preset { Task = new EncodeTask(), Category = PresetService.UserPresetCatgoryName }; + + // Parse the settings out. + foreach (var item in plist) + { + if (item.Key == "AudioList") + { + List tracks = ParseAudioTracks(item.Value); + preset.Task.AudioTracks = new ObservableCollection(tracks); + } + else + { + ParseSetting(item, preset); + } + } + + // Handle the PictureDecombDeinterlace key + if (preset.UseDeinterlace) + { + preset.Task.Decomb = Decomb.Off; + preset.Task.CustomDecomb = string.Empty; + } + + // Depending on the selected preset options, we may need to change some settings around. + // If the user chose not to use fitlers, remove them. + if (!preset.UsePictureFilters) + { + preset.Task.Detelecine = Detelecine.Off; + preset.Task.Denoise = Denoise.Off; + preset.Task.Deinterlace = Deinterlace.Off; + preset.Task.Decomb = Decomb.Off; + preset.Task.Deblock = 0; + preset.Task.Grayscale = false; + } + + // IF we are using Source Max, Set the Max Width / Height values. + if (preset.PictureSettingsMode == PresetPictureSettingsMode.SourceMaximum) + { + preset.Task.MaxWidth = preset.Task.Height; + preset.Task.MaxHeight = preset.Task.Width; + } + + + return preset; + } + + /// + /// Parse a setting and set it in the given preset. + /// + /// + /// The kvp setting pair. + /// + /// + /// The preset object. + /// + private static void ParseSetting(KeyValuePair kvp, Preset preset) + { + switch (kvp.Key) + { + // Output Settings + case "FileFormat": + preset.Task.OutputFormat = Converters.GetFileFormat(kvp.Value.Replace("file", string.Empty).Trim()); + break; + case "Mp4HttpOptimize": + preset.Task.OptimizeMP4 = kvp.Value == 1; + break; + case "Mp4LargeFile": + preset.Task.LargeFile = kvp.Value == 1; + break; + case "Mp4iPodCompatible": + preset.Task.IPod5GSupport = kvp.Value == 1; + break; + + // Picture Settings + case "PictureAutoCrop": + preset.Task.HasCropping = kvp.Value != 1; + break; + case "PictureTopCrop": + preset.Task.Cropping.Top = kvp.Value; + break; + case "PictureBottomCrop": + preset.Task.Cropping.Bottom = kvp.Value; + break; + case "PictureLeftCrop": + preset.Task.Cropping.Left = kvp.Value; + break; + case "PictureRightCrop": + preset.Task.Cropping.Right = kvp.Value; + break; + case "PictureHeight": + preset.Task.Height = kvp.Value == null || kvp.Value == 0 ? null : kvp.Value; + break; + case "PictureWidth": + preset.Task.Width = kvp.Value == null || kvp.Value == 0 ? null : kvp.Value; + break; + case "PictureKeepRatio": + preset.Task.KeepDisplayAspect = kvp.Value == 1; + break; + case "PicturePAR": + preset.Task.Anamorphic = (Anamorphic)kvp.Value; + break; + case "PictureModulus": + preset.Task.Modulus = kvp.Value; + break; + + // Filters + case "PictureDeblock": + preset.Task.Deblock = kvp.Value; + break; + case "PictureDecomb": + preset.Task.Decomb = (Decomb)kvp.Value; + break; + case "PictureDecombCustom": + preset.Task.CustomDecomb = kvp.Value; + break; + case "PictureDecombDeinterlace": + preset.UseDeinterlace = kvp.Value == 1; + break; + case "PictureDeinterlace": + preset.Task.Deinterlace = (Deinterlace)kvp.Value; + break; + case "PictureDeinterlaceCustom": + preset.Task.CustomDeinterlace = kvp.Value; + break; + case "PictureDenoise": + preset.Task.Denoise = (Denoise)kvp.Value; + break; + case "PictureDenoiseCustom": + preset.Task.CustomDenoise = kvp.Value; + break; + case "PictureDetelecine": + preset.Task.Detelecine = (Detelecine)kvp.Value; + break; + case "PictureDetelecineCustom": + preset.Task.CustomDetelecine = kvp.Value; + break; + + // Video Tab + case "VideoAvgBitrate": + if (!string.IsNullOrEmpty(kvp.Value)) + { + preset.Task.VideoBitrate = int.Parse(kvp.Value); + } + break; + case "VideoEncoder": + preset.Task.VideoEncoder = EnumHelper.GetValue(kvp.Value); + break; + case "VideoFramerate": + preset.Task.Framerate = kvp.Value == "Same as source" || string.IsNullOrEmpty(kvp.Value) ? null : double.Parse(kvp.Value, CultureInfo.InvariantCulture); + break; + case "VideoFramerateMode": + string parsedValue = kvp.Value; + switch (parsedValue) + { + case "vfr": + preset.Task.FramerateMode = FramerateMode.VFR; + break; + case "cfr": + preset.Task.FramerateMode = FramerateMode.CFR; + break; + default: + preset.Task.FramerateMode = FramerateMode.PFR; + break; + } + break; + case "VideoGrayScale": + preset.Task.Grayscale = kvp.Value == 1; + break; + case "VideoQualitySlider": + preset.Task.Quality = double.Parse(kvp.Value.ToString(), CultureInfo.InvariantCulture); + break; + case "VideoQualityType": // The Type of Quality Mode used + preset.Task.VideoEncodeRateType = (VideoEncodeRateType)kvp.Value; + break; + case "VideoTurboTwoPass": + preset.Task.TurboFirstPass = kvp.Value == 1; + break; + case "VideoTwoPass": + preset.Task.TwoPass = kvp.Value == 1; + break; + case "x264OptionExtra": + preset.Task.AdvancedEncoderOptions = kvp.Value; + break; + case "x264Preset": + preset.Task.X264Preset = EnumHelper.GetValue(kvp.Value, true); + break; + case "h264Profile": + preset.Task.H264Profile = EnumHelper.GetValue(kvp.Value, true); + break; + case "x264Tune": + string value = kvp.Value; + if (value.Contains("fastdecode")) + { + preset.Task.FastDecode = true; + value = value.Replace("fastdecode", string.Empty).Replace(",", string.Empty); + } + preset.Task.X264Tune = EnumHelper.GetValue(value, true); + break; + case "h264Level": + preset.Task.H264Level = kvp.Value; + break; + + // Chapter Markers Tab + case "ChapterMarkers": + preset.Task.IncludeChapterMarkers = kvp.Value == 1; + break; + + // Advanced x264 tab + case "x264Option": + if (preset.Task.VideoEncoder == VideoEncoder.X264) // TODO Temp fix until a better solution is found. + { + preset.Task.AdvancedEncoderOptions = kvp.Value; + } + break; + + case "lavcOption": + if (preset.Task.VideoEncoder != VideoEncoder.X264) // TODO Temp fix until a better solution is found. + { + preset.Task.AdvancedEncoderOptions = kvp.Value; + } + break; + + // Preset Information + case "PresetBuildNumber": + preset.Version = kvp.Value; + break; + case "PresetDescription": + preset.Description = kvp.Value; + break; + case "PresetName": + preset.Name = kvp.Value; + break; + case "Type": + //preset.Task.Type = kvp.Value; // TODO find out what this is + break; + case "UsesMaxPictureSettings": + // TODO Not sure if this is used now!? + break; + case "UsesPictureFilters": + preset.UsePictureFilters = kvp.Value == 1; + break; + case "UsesPictureSettings": + preset.PictureSettingsMode = (PresetPictureSettingsMode)kvp.Value; + break; + + // Allowed Passthru + case "AudioAllowAACPass": + preset.Task.AllowedPassthruOptions.AudioAllowAACPass = kvp.Value == 1; + break; + case "AudioAllowAC3Pass": + preset.Task.AllowedPassthruOptions.AudioAllowAC3Pass = kvp.Value == 1; + break; + case "AudioAllowDTSHDPass": + preset.Task.AllowedPassthruOptions.AudioAllowDTSHDPass = kvp.Value == 1; + break; + case "AudioAllowDTSPass": + preset.Task.AllowedPassthruOptions.AudioAllowDTSPass = kvp.Value == 1; + break; + case "AudioAllowMP3Pass": + preset.Task.AllowedPassthruOptions.AudioAllowMP3Pass = kvp.Value == 1; + break; + case "AudioEncoderFallback": + preset.Task.AllowedPassthruOptions.AudioEncoderFallback = EnumHelper.GetValue(kvp.Value); + break; + } + } + + /// + /// Parse a number of audio tracks + /// + /// + /// The audio list. + /// + /// + /// The of audio tracks + /// + private static List ParseAudioTracks(IEnumerable audioList) + { + return audioList.Select(item => ParseAudioTrackParameters(item)).Cast().ToList(); + } + + /// + /// Parse an audio track's parameters. + /// + /// + /// The audio track params + /// + /// + /// An Object + /// + private static AudioTrack ParseAudioTrackParameters(Dictionary audioTrack) + { + AudioTrack track = new AudioTrack(); + foreach (var item in audioTrack) + { + switch (item.Key) + { + case "AudioBitrate": + track.Bitrate = int.Parse(item.Value); + break; + case "AudioEncoder": + track.Encoder = Converters.GetAudioEncoder(item.Value.Trim()); + break; + case "AudioMixdown": + track.MixDown = Converters.GetAudioMixDown(item.Value.Trim()); + break; + case "AudioSamplerate": + track.SampleRate = item.Value == "Auto" ? 0 : double.Parse(item.Value, CultureInfo.InvariantCulture); + break; + case "AudioTrack": + //track.SourceTrack = value; We don't do anything with this one. + break; + case "AudioTrackDRCSlider": + track.DRC = double.Parse(item.Value.ToString(), CultureInfo.InvariantCulture); + break; + case "AudioTrackGainSlider": + track.Gain = int.Parse(item.Value.ToString(), CultureInfo.InvariantCulture); + break; + } + } + + return track; + } + } +} diff -Nru handbrake-0.9.9+dfsg/win/CS/HandBrake.ApplicationServices/HandBrake.ApplicationServices.csproj handbrake-0.9.9+ppa1/win/CS/HandBrake.ApplicationServices/HandBrake.ApplicationServices.csproj --- handbrake-0.9.9+dfsg/win/CS/HandBrake.ApplicationServices/HandBrake.ApplicationServices.csproj 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/win/CS/HandBrake.ApplicationServices/HandBrake.ApplicationServices.csproj 2013-03-19 21:48:51.000000000 +0000 @@ -0,0 +1,195 @@ + + + + Debug + AnyCPU + 9.0.21022 + 2.0 + {087A2BA8-BAC2-4577-A46F-07FF9D420016} + Library + Properties + HandBrake.ApplicationServices + HandBrake.ApplicationServices + v4.0 + 512 + + + 3.5 + + Client + + + x86 + bin\Debug\ + DEBUG;TRACE + + + x86 + bin\Release\ + true + DEBUG;TRACE + pdbonly + true + + + x64 + bin\Debug\ + TRACE;DEBUG + + + x64 + bin\Release\ + DEBUG;TRACE + true + pdbonly + true + + + + False + ..\libraries\caliburn\Caliburn.Micro.dll + + + False + ..\libraries\caliburn\Castle.Core.dll + + + False + ..\libraries\caliburn\Castle.Windsor.dll + + + + + + + + 3.5 + + + + + + + + 3.5 + + + 3.5 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + True + True + Resources.resx + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ResXFileCodeGenerator + Resources.Designer.cs + + + + + + + + {F0A61F62-2C3B-4A87-AFF4-0C4256253DA1} + HandBrakeInterop + + + + + + + + + + \ No newline at end of file diff -Nru handbrake-0.9.9+dfsg/win/CS/HandBrake.ApplicationServices/Isolation/BackgroundServiceConnector.cs handbrake-0.9.9+ppa1/win/CS/HandBrake.ApplicationServices/Isolation/BackgroundServiceConnector.cs --- handbrake-0.9.9+dfsg/win/CS/HandBrake.ApplicationServices/Isolation/BackgroundServiceConnector.cs 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/win/CS/HandBrake.ApplicationServices/Isolation/BackgroundServiceConnector.cs 2012-09-25 15:23:17.000000000 +0000 @@ -0,0 +1,214 @@ +// -------------------------------------------------------------------------------------------------------------------- +// +// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License. +// +// +// Background Service Connector. +// HandBrake has the ability to connect to a service app that will control HandBrakeCLI or Libhb. +// This acts as process isolation. +// +// -------------------------------------------------------------------------------------------------------------------- + +namespace HandBrake.ApplicationServices.Isolation +{ + using System; + using System.Diagnostics; + using System.ServiceModel; + using System.Threading; + + using HandBrake.ApplicationServices.EventArgs; + using HandBrake.ApplicationServices.Exceptions; + using HandBrake.ApplicationServices.Services.Interfaces; + + /// + /// Background Service Connector. + /// HandBrake has the ability to connect to a service app that will control HandBrakeCLI or Libhb. + /// This acts as process isolation. + /// + public class BackgroundServiceConnector : IHbServiceCallback, IDisposable + { + #region Constants and Fields + + /// + /// Gets or sets the pipe factory. + /// DuplexChannelFactory is necessary for Callbacks. + /// + private static DuplexChannelFactory pipeFactory; + + /// + /// The background process. + /// + private static Process backgroundProcess; + + #endregion + + #region Properties + + /// + /// Gets or sets a value indicating whether is connected. + /// + public bool IsConnected { get; set; } + + /// + /// Gets or sets the service. + /// + public IServerService Service { get; set; } + + #endregion + + #region Public Server Management Methods + + /// + /// The can connect. + /// + /// + /// The System.Boolean. + /// + public bool CanConnect() + { + return true; + } + + /// + /// The connect. + /// + /// + /// The port. + /// + public void Connect(string port) + { + if (backgroundProcess == null) + { + ProcessStartInfo processStartInfo = new ProcessStartInfo( + "HandBrake.Server.exe", port) + { + UseShellExecute = false, + CreateNoWindow = true, + RedirectStandardOutput = true, + }; + + backgroundProcess = new Process { StartInfo = processStartInfo }; + backgroundProcess.Start(); + } + + // When the process writes out a line, it's pipe server is ready and can be contacted for + // work. Reading line blocks until this happens. + backgroundProcess.StandardOutput.ReadLine(); + + ThreadPool.QueueUserWorkItem(delegate + { + try + { + pipeFactory = new DuplexChannelFactory( + new InstanceContext(this), + new NetTcpBinding(), + new EndpointAddress(string.Format("net.tcp://127.0.0.1:{0}/IHbService", port))); + + // Connect and Subscribe to the Server + this.Service = pipeFactory.CreateChannel(); + this.Service.Subscribe(); + this.IsConnected = true; + } + catch (Exception exc) + { + throw new GeneralApplicationException("Unable to connect to background worker process", "Please restart HandBrake", exc); + } + }); + } + + /// + /// The disconnect. + /// + public void Shutdown() + { + try + { + if (backgroundProcess != null && !backgroundProcess.HasExited) + { + this.Service.Unsubscribe(); + } + } + catch (Exception exc) + { + throw new GeneralApplicationException("Unable to disconnect to background worker process", + "It may have already close. Check for any left over HandBrake.Server.exe processes", exc); + } + } + + #endregion + + #region Implemented Interfaces + + #region IDisposable + + /// + /// The dispose. + /// + public void Dispose() + { + this.Service.Unsubscribe(); + } + + #endregion + + #region IHbServiceCallback + + /// + /// The scan completed. + /// + /// + /// The event args. + /// + public virtual void ScanCompletedCallback(ScanCompletedEventArgs eventArgs) + { + } + + /// + /// The scan progress. + /// + /// + /// The event args. + /// + public virtual void ScanProgressCallback(ScanProgressEventArgs eventArgs) + { + } + + /// + /// The scan started callback. + /// + public virtual void ScanStartedCallback() + { + } + + /// + /// The encode progress callback. + /// + /// + /// The event Args. + /// + public virtual void EncodeProgressCallback(EncodeProgressEventArgs eventArgs) + { + } + + /// + /// The encode completed callback. + /// + /// + /// The event Args. + /// + public virtual void EncodeCompletedCallback(EncodeCompletedEventArgs eventArgs) + { + } + + /// + /// The encode started callback. + /// + public virtual void EncodeStartedCallback() + { + } + + #endregion + + #endregion + } +} \ No newline at end of file diff -Nru handbrake-0.9.9+dfsg/win/CS/HandBrake.ApplicationServices/Isolation/IsolatedEncodeService.cs handbrake-0.9.9+ppa1/win/CS/HandBrake.ApplicationServices/Isolation/IsolatedEncodeService.cs --- handbrake-0.9.9+dfsg/win/CS/HandBrake.ApplicationServices/Isolation/IsolatedEncodeService.cs 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/win/CS/HandBrake.ApplicationServices/Isolation/IsolatedEncodeService.cs 2013-03-07 22:11:11.000000000 +0000 @@ -0,0 +1,186 @@ +// -------------------------------------------------------------------------------------------------------------------- +// +// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License. +// +// +// Isolated Scan Service +// This is an implementation of the IEncode implementation that runs scans on a seperate process +// +// -------------------------------------------------------------------------------------------------------------------- + +namespace HandBrake.ApplicationServices.Isolation +{ + using System; + using System.Threading; + + using HandBrake.ApplicationServices.EventArgs; + using HandBrake.ApplicationServices.Exceptions; + using HandBrake.ApplicationServices.Model; + using HandBrake.ApplicationServices.Services.Interfaces; + + /// + /// Isolated Scan Service. + /// This is an implementation of the IEncode implementation that runs scans on a seperate process + /// + public class IsolatedEncodeService : BackgroundServiceConnector, IEncode + { + #region Constructors and Destructors + + /// + /// Initializes a new instance of the class. + /// + /// + /// The port. + /// + public IsolatedEncodeService(string port) + { + try + { + if (this.CanConnect()) + { + this.Connect(port); + } + } + catch (Exception exception) + { + throw new GeneralApplicationException("Unable to connect to scan worker process.", "Try restarting HandBrake", exception); + } + } + + #endregion + + #region Events + + /// + /// The encode completed. + /// + public event EncodeCompletedStatus EncodeCompleted; + + /// + /// The encode started. + /// + public event EventHandler EncodeStarted; + + /// + /// The encode status changed. + /// + public event EncodeProgessStatus EncodeStatusChanged; + + #endregion + + #region Properties + + /// + /// Gets ActivityLog. + /// + public string ActivityLog + { + get + { + return this.IsConnected ? this.Service.EncodeActivityLog : "Unable to connect to background worker service ..."; + } + } + + /// + /// Gets the log index. + /// + public int LogIndex + { + get + { + return -1; + } + } + + /// + /// Gets a value indicating whether IsEncoding. + /// + public bool IsEncoding + { + get + { + return this.IsConnected && this.Service.IsEncoding; + } + } + + #endregion + + #region Public Methods + + /// + /// The encode completed callback. + /// + /// + /// The event args. + /// + public override void EncodeCompletedCallback(EncodeCompletedEventArgs eventArgs) + { + if (this.EncodeCompleted != null) + { + ThreadPool.QueueUserWorkItem(delegate { this.EncodeCompleted(this, eventArgs); }); + } + + base.EncodeCompletedCallback(eventArgs); + } + + /// + /// The encode progress callback. + /// + /// + /// The event args. + /// + public override void EncodeProgressCallback(EncodeProgressEventArgs eventArgs) + { + if (this.EncodeStatusChanged != null) + { + ThreadPool.QueueUserWorkItem(delegate { this.EncodeStatusChanged(this, eventArgs); }); + } + + base.EncodeProgressCallback(eventArgs); + } + + #endregion + + #region Implemented Interfaces + + #region IEncode + + /// + /// Copy the log file to the desired destinations + /// + /// + /// The destination. + /// + public void ProcessLogs(string destination) + { + ThreadPool.QueueUserWorkItem(delegate { this.Service.ProcessEncodeLogs(destination); }); + } + + /// + /// Start with a LibHb EncodeJob Object + /// + /// + /// The job. + /// + /// + /// The enable Logging. + /// + public void Start(QueueTask job, bool enableLogging) + { + ThreadPool.QueueUserWorkItem( + delegate { this.Service.StartEncode(job, enableLogging); }); + } + + /// + /// Kill the CLI process + /// + public void Stop() + { + ThreadPool.QueueUserWorkItem(delegate { this.Service.StopEncode(); }); + } + + #endregion + + #endregion + } +} \ No newline at end of file diff -Nru handbrake-0.9.9+dfsg/win/CS/HandBrake.ApplicationServices/Isolation/IsolatedScanService.cs handbrake-0.9.9+ppa1/win/CS/HandBrake.ApplicationServices/Isolation/IsolatedScanService.cs --- handbrake-0.9.9+dfsg/win/CS/HandBrake.ApplicationServices/Isolation/IsolatedScanService.cs 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/win/CS/HandBrake.ApplicationServices/Isolation/IsolatedScanService.cs 2012-09-25 15:23:17.000000000 +0000 @@ -0,0 +1,216 @@ +// -------------------------------------------------------------------------------------------------------------------- +// +// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License. +// +// +// Isolated Scan Service +// This is an implementation of the IScan implementation that runs scans on a seperate process +// +// -------------------------------------------------------------------------------------------------------------------- + +namespace HandBrake.ApplicationServices.Isolation +{ + using System; + using System.Threading; + + using HandBrake.ApplicationServices.EventArgs; + using HandBrake.ApplicationServices.Exceptions; + using HandBrake.ApplicationServices.Parsing; + using HandBrake.ApplicationServices.Services.Interfaces; + + /// + /// Isolated Scan Service. + /// This is an implementation of the IScan implementation that runs scans on a seperate process + /// + public class IsolatedScanService : BackgroundServiceConnector, IScan + { + #region Constants and Fields + + /// + /// The post action. + /// + private Action postScanAction; + + #endregion + + #region Events + + /// + /// The scan completed. + /// + public event ScanCompletedStatus ScanCompleted; + + /// + /// The scan stared. + /// + public event EventHandler ScanStared; + + /// + /// The scan status changed. + /// + public event ScanProgessStatus ScanStatusChanged; + + #endregion + + /// + /// Initializes a new instance of the class. + /// + /// + /// The port. + /// + public IsolatedScanService(string port) + { + try + { + if (this.CanConnect()) + { + this.Connect(port); + } + } + catch (Exception exception) + { + throw new GeneralApplicationException("Unable to connect to scan worker process.", "Try restarting HandBrake", exception); + } + } + + #region Properties + + /// + /// Gets ActivityLog. + /// + public string ActivityLog + { + get + { + return this.Service.ScanActivityLog; + } + } + + /// + /// Gets a value indicating whether IsScanning. + /// + public bool IsScanning + { + get + { + return this.Service.IsScanning; + } + } + + /// + /// Gets the Souce Data. + /// + public Source SouceData + { + get + { + return this.Service.SouceData; + } + } + + #endregion + + #region Public Methods + + /// + /// The scan completed callback. + /// + /// + /// The event args. + /// + public override void ScanCompletedCallback(ScanCompletedEventArgs eventArgs) + { + if (this.postScanAction != null) + { + this.postScanAction(true); + } + + if (this.ScanCompleted != null) + { + ThreadPool.QueueUserWorkItem(delegate { this.ScanCompleted(this, eventArgs); }); + } + + base.ScanCompletedCallback(eventArgs); + } + + /// + /// The scan progress callback. + /// + /// + /// The event args. + /// + public override void ScanProgressCallback(ScanProgressEventArgs eventArgs) + { + if (this.ScanStatusChanged != null) + { + ThreadPool.QueueUserWorkItem(delegate { this.ScanStatusChanged(this, eventArgs); }); + } + + base.ScanProgressCallback(eventArgs); + } + + /// + /// The scan started callback. + /// + public override void ScanStartedCallback() + { + if (this.ScanStared != null) + { + ThreadPool.QueueUserWorkItem(delegate { this.ScanStared(this, EventArgs.Empty); }); + } + + base.ScanStartedCallback(); + } + + #endregion + + #region Implemented Interfaces + + #region IScan + + /// + /// Take a Scan Log file, and process it as if it were from the CLI. + /// + /// + /// The path to the log file. + /// + public void DebugScanLog(string path) + { + throw new NotImplementedException("Not available in process isolation mode!"); + } + + /// + /// Scan a Source Path. + /// Title 0: scan all + /// + /// + /// Path to the file to scan + /// + /// + /// int title number. 0 for scan all + /// + /// + /// The preview Count. + /// + /// + /// The post Action. + /// + public void Scan(string sourcePath, int title, int previewCount, Action postAction) + { + this.postScanAction = postAction; + this.Service.ScanSource(sourcePath, title, previewCount); + } + + /// + /// Kill the scan + /// + public void Stop() + { + this.Service.StopScan(); + } + + #endregion + + #endregion + } +} \ No newline at end of file diff -Nru handbrake-0.9.9+dfsg/win/CS/HandBrake.ApplicationServices/Model/DriveInformation.cs handbrake-0.9.9+ppa1/win/CS/HandBrake.ApplicationServices/Model/DriveInformation.cs --- handbrake-0.9.9+dfsg/win/CS/HandBrake.ApplicationServices/Model/DriveInformation.cs 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/win/CS/HandBrake.ApplicationServices/Model/DriveInformation.cs 2012-06-14 19:08:34.000000000 +0000 @@ -0,0 +1,48 @@ +// -------------------------------------------------------------------------------------------------------------------- +// +// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License. +// +// +// Information about a DVD drive +// +// -------------------------------------------------------------------------------------------------------------------- + +namespace HandBrake.ApplicationServices.Model +{ + /// + /// Information about a DVD drive + /// + public class DriveInformation + { + /// + /// Gets or sets A Unique ID That represemts this model. + /// + public int Id { get; set; } + + /// + /// Gets or sets The Drive Volume Name + /// + public string VolumeLabel { get; set; } + + /// + /// Gets or sets The Root Directory + /// + public string RootDirectory { get; set; } + + /// + /// Gets or sets a value indicating whether this is a BluRay Drive. + /// + public bool IsBluRay { get; set; } + + /// + /// Returns "Drive" + Id (e.g Drive2) + /// + /// + /// A String that contrains "Drive" and it's ID + /// + public override string ToString() + { + return "Drive" + this.Id; + } + } +} \ No newline at end of file diff -Nru handbrake-0.9.9+dfsg/win/CS/HandBrake.ApplicationServices/Model/EncodeTask.cs handbrake-0.9.9+ppa1/win/CS/HandBrake.ApplicationServices/Model/EncodeTask.cs --- handbrake-0.9.9+dfsg/win/CS/HandBrake.ApplicationServices/Model/EncodeTask.cs 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/win/CS/HandBrake.ApplicationServices/Model/EncodeTask.cs 2013-01-17 22:29:37.000000000 +0000 @@ -0,0 +1,516 @@ +// -------------------------------------------------------------------------------------------------------------------- +// +// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License. +// +// +// An Encode Task +// +// -------------------------------------------------------------------------------------------------------------------- + +namespace HandBrake.ApplicationServices.Model +{ + using System.Collections.ObjectModel; + using System.Linq; + + using Caliburn.Micro; + + using HandBrake.ApplicationServices.Model.Encoding; + using HandBrake.Interop.Model; + using HandBrake.Interop.Model.Encoding; + using HandBrake.Interop.Model.Encoding.x264; + + using OutputFormat = HandBrake.ApplicationServices.Model.Encoding.OutputFormat; + + /// + /// An Encode Task + /// + public class EncodeTask : PropertyChangedBase + { + #region Private Fields + + /// + /// The advanced panel enabled. + /// + private bool showAdvancedTab; + + #endregion + + /// + /// Initializes a new instance of the class. + /// + public EncodeTask() + { + this.Cropping = new Cropping(); + this.AudioTracks = new ObservableCollection(); + this.SubtitleTracks = new ObservableCollection(); + this.ChapterNames = new ObservableCollection(); + this.AllowedPassthruOptions = new AllowedPassthru(); + this.X264Preset = x264Preset.Medium; + this.H264Profile = x264Profile.None; + this.X264Tune = x264Tune.None; + this.Modulus = 16; + } + + /// + /// Initializes a new instance of the class. + /// Copy Constructor + /// + /// + /// The task. + /// + public EncodeTask(EncodeTask task) + { + this.AdvancedEncoderOptions = task.AdvancedEncoderOptions; + this.AllowedPassthruOptions = new AllowedPassthru(task.AllowedPassthruOptions); + this.Anamorphic = task.Anamorphic; + this.Angle = task.Angle; + + this.AudioTracks = new ObservableCollection(); + foreach (AudioTrack track in task.AudioTracks) + { + this.AudioTracks.Add(new AudioTrack(track)); + } + + this.ChapterNames = new ObservableCollection(); + foreach (ChapterMarker track in task.ChapterNames) + { + this.ChapterNames.Add(new ChapterMarker(track)); + } + + this.ChapterMarkersFilePath = task.ChapterMarkersFilePath; + this.Cropping = new Cropping(task.Cropping); + this.CustomDecomb = task.CustomDecomb; + this.CustomDeinterlace = task.CustomDeinterlace; + this.CustomDenoise = task.CustomDenoise; + this.CustomDetelecine = task.CustomDetelecine; + this.Deblock = task.Deblock; + this.Decomb = task.Decomb; + this.Deinterlace = task.Deinterlace; + this.Denoise = task.Denoise; + this.Destination = task.Destination; + this.Detelecine = task.Detelecine; + this.DisplayWidth = task.DisplayWidth; + this.EndPoint = task.EndPoint; + this.Framerate = task.Framerate; + this.FramerateMode = task.FramerateMode; + this.Grayscale = task.Grayscale; + this.HasCropping = task.HasCropping; + this.Height = task.Height; + this.IncludeChapterMarkers = task.IncludeChapterMarkers; + this.IPod5GSupport = task.IPod5GSupport; + this.KeepDisplayAspect = task.KeepDisplayAspect; + this.LargeFile = task.LargeFile; + this.MaxHeight = task.MaxHeight; + this.MaxWidth = task.MaxWidth; + this.Modulus = task.Modulus; + this.OptimizeMP4 = task.OptimizeMP4; + this.OutputFormat = task.OutputFormat; + this.PixelAspectX = task.PixelAspectX; + this.PixelAspectY = task.PixelAspectY; + this.PointToPointMode = task.PointToPointMode; + this.Quality = task.Quality; + this.Source = task.Source; + this.StartPoint = task.StartPoint; + + this.SubtitleTracks = new ObservableCollection(); + foreach (SubtitleTrack subtitleTrack in task.SubtitleTracks) + { + this.SubtitleTracks.Add(new SubtitleTrack(subtitleTrack)); + } + + this.Title = task.Title; + this.TurboFirstPass = task.TurboFirstPass; + this.TwoPass = task.TwoPass; + this.VideoBitrate = task.VideoBitrate; + this.VideoEncoder = task.VideoEncoder; + this.VideoEncodeRateType = task.VideoEncodeRateType; + this.Width = task.Width; + this.X264Preset = task.X264Preset; + this.H264Profile = task.H264Profile; + this.X264Tune = task.X264Tune; + this.H264Level = task.H264Level; + this.FastDecode = task.FastDecode; + this.ExtraAdvancedArguments = task.ExtraAdvancedArguments; + + this.PreviewStartAt = task.PreviewStartAt; + this.PreviewDuration = task.PreviewDuration; + } + + #region Source + + /// + /// Gets or sets Source. + /// + public string Source { get; set; } + + /// + /// Gets or sets Title. + /// + public int Title { get; set; } + + /// + /// Gets or sets the Angle + /// + public int Angle { get; set; } + + /// + /// Gets or sets PointToPointMode. + /// + public PointToPointMode PointToPointMode { get; set; } + + /// + /// Gets or sets StartPoint. + /// + public int StartPoint { get; set; } + + /// + /// Gets or sets EndPoint. + /// + public int EndPoint { get; set; } + + #endregion + + #region Destination + + /// + /// Gets or sets Destination. + /// + public string Destination { get; set; } + + #endregion + + #region Output Settings + /// + /// Gets or sets OutputFormat. + /// + public OutputFormat OutputFormat { get; set; } + + /// + /// Gets or sets a value indicating whether LargeFile. + /// + public bool LargeFile { get; set; } + + /// + /// Gets or sets a value indicating whether Optimize. + /// + public bool OptimizeMP4 { get; set; } + + /// + /// Gets or sets a value indicating whether IPod5GSupport. + /// + public bool IPod5GSupport { get; set; } + #endregion + + #region Picture + + /// + /// Gets or sets Width. + /// + public int? Width { get; set; } + + /// + /// Gets or sets Height. + /// + public int? Height { get; set; } + + /// + /// Gets or sets MaxWidth. + /// + public int? MaxWidth { get; set; } + + /// + /// Gets or sets MaxHeight. + /// + public int? MaxHeight { get; set; } + + /// + /// Gets or sets Cropping. + /// + public Cropping Cropping { get; set; } + + /// + /// Gets or sets a value indicating whether HasCropping. + /// + public bool HasCropping { get; set; } + + /// + /// Gets or sets Anamorphic. + /// + public Anamorphic Anamorphic { get; set; } + + /// + /// Gets or sets DisplayWidth. + /// + public double? DisplayWidth { get; set; } + + /// + /// Gets or sets a value indicating whether KeepDisplayAspect. + /// + public bool KeepDisplayAspect { get; set; } + + /// + /// Gets or sets PixelAspectX. + /// + public int PixelAspectX { get; set; } + + /// + /// Gets or sets PixelAspectY. + /// + public int PixelAspectY { get; set; } + + /// + /// Gets or sets Modulus. + /// + public int? Modulus { get; set; } + #endregion + + #region Filters + + /// + /// Gets or sets Deinterlace. + /// + public Deinterlace Deinterlace { get; set; } + + /// + /// Gets or sets CustomDeinterlace. + /// + public string CustomDeinterlace { get; set; } + + /// + /// Gets or sets Decomb. + /// + public Decomb Decomb { get; set; } + + /// + /// Gets or sets CustomDecomb. + /// + public string CustomDecomb { get; set; } + + /// + /// Gets or sets Detelecine. + /// + public Detelecine Detelecine { get; set; } + + /// + /// Gets or sets CustomDetelecine. + /// + public string CustomDetelecine { get; set; } + + /// + /// Gets or sets Denoise. + /// + public Denoise Denoise { get; set; } + + /// + /// Gets or sets CustomDenoise. + /// + public string CustomDenoise { get; set; } + + /// + /// Gets or sets Deblock. + /// + public int Deblock { get; set; } + + /// + /// Gets or sets a value indicating whether Grayscale. + /// + public bool Grayscale { get; set; } + #endregion + + #region Video + + /// + /// Gets or sets VideoEncodeRateType. + /// + public VideoEncodeRateType VideoEncodeRateType { get; set; } + + /// + /// Gets or sets the VideoEncoder + /// + public VideoEncoder VideoEncoder { get; set; } + + /// + /// Gets or sets the Video Encode Mode + /// + public FramerateMode FramerateMode { get; set; } + + /// + /// Gets or sets Quality. + /// + public double? Quality { get; set; } + + /// + /// Gets or sets VideoBitrate. + /// + public int? VideoBitrate { get; set; } + + /// + /// Gets or sets a value indicating whether TwoPass. + /// + public bool TwoPass { get; set; } + + /// + /// Gets or sets a value indicating whether TurboFirstPass. + /// + public bool TurboFirstPass { get; set; } + + /// + /// Gets or sets Framerate. + /// Null = Same as Source + /// + public double? Framerate { get; set; } + + #endregion + + #region Audio + + /// + /// Gets or sets AudioEncodings. + /// + public ObservableCollection AudioTracks { get; set; } + + /// + /// Gets or sets AllowedPassthruOptions. + /// + public AllowedPassthru AllowedPassthruOptions { get; set; } + #endregion + + #region Subtitles + + /// + /// Gets or sets SubtitleTracks. + /// + public ObservableCollection SubtitleTracks { get; set; } + #endregion + + #region Chapters + + /// + /// Gets or sets a value indicating whether IncludeChapterMarkers. + /// + public bool IncludeChapterMarkers { get; set; } + + /// + /// Gets or sets ChapterMarkersFilePath. + /// + public string ChapterMarkersFilePath { get; set; } + + /// + /// Gets or sets ChapterNames. + /// + public ObservableCollection ChapterNames { get; set; } + + #endregion + + #region Advanced + + /// + /// Gets or sets AdvancedEncoderOptions. + /// + public string AdvancedEncoderOptions { get; set; } + + /// + /// Gets or sets x264Preset. + /// + public x264Preset X264Preset { get; set; } + + /// + /// Gets or sets x264Profile. + /// + public x264Profile H264Profile { get; set; } + + /// + /// Gets or sets the x 264 level. + /// + public string H264Level { get; set; } + + /// + /// Gets or sets X264Tune. + /// + public x264Tune X264Tune { get; set; } + + /// + /// Gets or sets a value indicating whether fast decode. + /// + public bool FastDecode { get; set; } + + /// + /// Gets or sets Extra Advanced Arguments for the Video Tab. + /// + public string ExtraAdvancedArguments { get; set; } + + #endregion + + #region Preview + + /// + /// Gets or sets StartAt. + /// + public int? PreviewStartAt { get; set; } + + /// + /// Gets or sets Duration. + /// + public int? PreviewDuration { get; set; } + + #endregion + + #region Helpers + + /// + /// Gets a value indicating whether M4v extension is required. + /// + public bool RequiresM4v + { + get + { + if (this.OutputFormat == OutputFormat.M4V || this.OutputFormat == OutputFormat.Mp4) + { + bool audio = this.AudioTracks.Any(item => item.Encoder == AudioEncoder.Ac3Passthrough || + item.Encoder == AudioEncoder.Ac3 || item.Encoder == AudioEncoder.DtsPassthrough || item.Encoder == AudioEncoder.Passthrough); + + bool subtitles = this.SubtitleTracks.Any(track => track.SubtitleType != SubtitleType.VobSub); + + return audio || subtitles; + } + + return false; + } + } + + /// + /// Gets or sets a value indicating whether IsPreviewEncode. + /// + public bool IsPreviewEncode { get; set; } + + /// + /// Gets or sets PreviewEncodeDuration. + /// + public int PreviewEncodeDuration { get; set; } + + /// + /// Gets or sets PreviewEncodeStartAt. + /// + public string PreviewEncodeStartAt { get; set; } + + /// + /// Gets or sets a value indicating whether advanced panel enabled. + /// + public bool ShowAdvancedTab + { + get + { + return this.showAdvancedTab; + } + set + { + if (!object.Equals(value, this.showAdvancedTab)) + { + this.showAdvancedTab = value; + this.NotifyOfPropertyChange(() => this.ShowAdvancedTab); + } + } + } + #endregion + } +} diff -Nru handbrake-0.9.9+dfsg/win/CS/HandBrake.ApplicationServices/Model/Encoding/AllowedPassthru.cs handbrake-0.9.9+ppa1/win/CS/HandBrake.ApplicationServices/Model/Encoding/AllowedPassthru.cs --- handbrake-0.9.9+dfsg/win/CS/HandBrake.ApplicationServices/Model/Encoding/AllowedPassthru.cs 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/win/CS/HandBrake.ApplicationServices/Model/Encoding/AllowedPassthru.cs 2012-07-23 16:57:39.000000000 +0000 @@ -0,0 +1,182 @@ +// -------------------------------------------------------------------------------------------------------------------- +// +// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License. +// +// +// Allowed Passthru Options +// +// -------------------------------------------------------------------------------------------------------------------- + +namespace HandBrake.ApplicationServices.Model.Encoding +{ + using HandBrake.Interop.Model.Encoding; + + /// + /// Allowed Passthru Options + /// + public class AllowedPassthru + { + #region Constants and Fields + + /// + /// The audio allow aac pass. + /// + private bool? audioAllowAACPass; + + /// + /// The audio allow a c 3 pass. + /// + private bool? audioAllowAC3Pass; + + /// + /// The audio allow dtshd pass. + /// + private bool? audioAllowDTSHDPass; + + /// + /// The audio allow dts pass. + /// + private bool? audioAllowDTSPass; + + /// + /// The audio allow m p 3 pass. + /// + private bool? audioAllowMP3Pass; + + #endregion + + #region Constructors and Destructors + + /// + /// Initializes a new instance of the class. + /// + public AllowedPassthru() + { + this.AudioAllowAACPass = true; + this.AudioAllowAC3Pass = true; + this.AudioAllowDTSHDPass = true; + this.AudioAllowDTSPass = true; + this.AudioAllowMP3Pass = true; + this.AudioEncoderFallback = AudioEncoder.Ac3; + } + + /// + /// Initializes a new instance of the class. + /// + /// + /// The initial Value. + /// + public AllowedPassthru(bool? initialValue) + { + this.AudioAllowAACPass = initialValue; + this.AudioAllowAC3Pass = initialValue; + this.AudioAllowDTSHDPass = initialValue; + this.AudioAllowDTSPass = initialValue; + this.AudioAllowMP3Pass = initialValue; + this.AudioEncoderFallback = AudioEncoder.Ac3; + } + + /// + /// Initializes a new instance of the class. + /// Copy Constructor + /// + /// + /// The initial value. + /// + public AllowedPassthru(AllowedPassthru initialValue) + { + this.AudioAllowAACPass = initialValue.AudioAllowAACPass; + this.AudioAllowAC3Pass = initialValue.AudioAllowAC3Pass; + this.AudioAllowDTSHDPass = initialValue.AudioAllowDTSHDPass; + this.AudioAllowDTSPass = initialValue.AudioAllowDTSPass; + this.AudioAllowMP3Pass = initialValue.AudioAllowMP3Pass; + this.AudioEncoderFallback = initialValue.AudioEncoderFallback; + } + + #endregion + + #region Properties + + /// + /// Gets or sets a value indicating whether AudioAllowAACPass. + /// + public bool? AudioAllowAACPass + { + get + { + return this.audioAllowAACPass ?? true; + } + set + { + this.audioAllowAACPass = value; + } + } + + /// + /// Gets or sets a value indicating whether AudioAllowAC3Pass. + /// + public bool? AudioAllowAC3Pass + { + get + { + return this.audioAllowAC3Pass ?? true; + } + set + { + this.audioAllowAC3Pass = value; + } + } + + /// + /// Gets or sets a value indicating whether AudioAllowDTSHDPass. + /// + public bool? AudioAllowDTSHDPass + { + get + { + return this.audioAllowDTSHDPass ?? true; + } + set + { + this.audioAllowDTSHDPass = value; + } + } + + /// + /// Gets or sets a value indicating whether AudioAllowDTSPass. + /// + public bool? AudioAllowDTSPass + { + get + { + return this.audioAllowDTSPass ?? true; + } + set + { + this.audioAllowDTSPass = value; + } + } + + /// + /// Gets or sets a value indicating whether AudioAllowMP3Pass. + /// + public bool? AudioAllowMP3Pass + { + get + { + return this.audioAllowMP3Pass ?? true; + } + set + { + this.audioAllowMP3Pass = value; + } + } + + /// + /// Gets or sets AudioEncoderFallback. + /// + public AudioEncoder AudioEncoderFallback { get; set; } + + #endregion + } +} \ No newline at end of file diff -Nru handbrake-0.9.9+dfsg/win/CS/HandBrake.ApplicationServices/Model/Encoding/AudioTrack.cs handbrake-0.9.9+ppa1/win/CS/HandBrake.ApplicationServices/Model/Encoding/AudioTrack.cs --- handbrake-0.9.9+dfsg/win/CS/HandBrake.ApplicationServices/Model/Encoding/AudioTrack.cs 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/win/CS/HandBrake.ApplicationServices/Model/Encoding/AudioTrack.cs 2013-01-13 16:50:49.000000000 +0000 @@ -0,0 +1,384 @@ +// -------------------------------------------------------------------------------------------------------------------- +// +// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License. +// +// +// An Audio Track for the Audio Panel +// +// -------------------------------------------------------------------------------------------------------------------- + +namespace HandBrake.ApplicationServices.Model.Encoding +{ + using System; + using System.ComponentModel; + using System.Globalization; + + using Caliburn.Micro; + + using HandBrake.ApplicationServices.Parsing; + using HandBrake.ApplicationServices.Utilities; + using HandBrake.Interop.Model.Encoding; + + /// + /// An Audio Track for the Audio Panel + /// + public class AudioTrack : PropertyChangedBase + { + #region Constants and Fields + + /// + /// The bitrate. + /// + private int bitrate; + + /// + /// The DRC Value + /// + private double drc; + + /// + /// The encoder. + /// + private AudioEncoder encoder; + + /// + /// The gain value + /// + private int gain; + + /// + /// The mix down. + /// + private Mixdown mixDown; + + /// + /// The sample rate. + /// + private double sampleRate; + + /// + /// The Scanned Audio Track + /// + [NonSerialized] + [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] + private Audio scannedTrack; + + private string trackName; + + #endregion + + #region Constructors and Destructors + + /// + /// Initializes a new instance of the class. + /// + public AudioTrack() + { + // Default Values + this.Encoder = AudioEncoder.Faac; + this.MixDown = Mixdown.DolbyProLogicII; + this.SampleRate = 48; + this.Bitrate = 160; + this.DRC = 0; + this.ScannedTrack = new Audio(); + this.TrackName = string.Empty; + } + + /// + /// Initializes a new instance of the class. + /// Copy Constructor + /// + /// + /// The track. + /// + public AudioTrack(AudioTrack track) + { + this.bitrate = track.Bitrate; + this.drc = track.DRC; + this.encoder = track.Encoder; + this.gain = track.Gain; + this.mixDown = track.MixDown; + this.sampleRate = track.SampleRate; + this.scannedTrack = track.ScannedTrack ?? new Audio(); + this.TrackName = track.TrackName; + } + + #endregion + + #region Public Properties + + /// + /// Gets AudioEncoderDisplayValue. + /// + public string AudioEncoderDisplayValue + { + get + { + return EnumHelper.GetDisplay(this.Encoder); + } + } + + /// + /// Gets AudioMixdownDisplayValue. + /// + public string AudioMixdownDisplayValue + { + get + { + return EnumHelper.GetDisplay(this.MixDown); + } + } + + /// + /// Gets the The UI display value for bit rate + /// + public string BitRateDisplayValue + { + get + { + if (this.Encoder == AudioEncoder.Ac3Passthrough || this.Encoder == AudioEncoder.DtsPassthrough + || this.Encoder == AudioEncoder.DtsHDPassthrough) + { + return "Auto"; + } + + return this.Bitrate.ToString(); + } + } + + /// + /// Gets or sets Audio Bitrate + /// + public int Bitrate + { + get + { + return this.bitrate; + } + + set + { + this.bitrate = value; + this.NotifyOfPropertyChange(() => this.Bitrate); + } + } + + /// + /// Gets or sets Dynamic Range Compression + /// + public double DRC + { + get + { + return this.drc; + } + + set + { + if (!object.Equals(value, this.drc)) + { + this.drc = value; + this.NotifyOfPropertyChange(() => this.DRC); + } + } + } + + /// + /// Gets or sets Audio Encoder + /// + public AudioEncoder Encoder + { + get + { + return this.encoder; + } + + set + { + this.encoder = value; + this.NotifyOfPropertyChange(() => this.Encoder); + this.NotifyOfPropertyChange(() => this.IsPassthru); + this.NotifyOfPropertyChange(() => this.CannotSetBitrate); + this.NotifyOfPropertyChange(() => this.TrackReference); + } + } + + /// + /// Gets or sets the Gain for the audio track + /// + public int Gain + { + get + { + return this.gain; + } + + set + { + if (!object.Equals(value, this.gain)) + { + this.gain = value; + this.NotifyOfPropertyChange(() => this.Gain); + } + } + } + + /// + /// Gets or sets Audio Mixdown + /// + public Mixdown MixDown + { + get + { + return this.mixDown; + } + + set + { + this.mixDown = value; + this.NotifyOfPropertyChange(() => this.MixDown); + this.NotifyOfPropertyChange(() => this.TrackReference); + } + } + + /// + /// Gets or sets Audio SampleRate + /// + public double SampleRate + { + get + { + return this.sampleRate; + } + + set + { + this.sampleRate = value; + this.NotifyOfPropertyChange(() => this.SampleRate); + this.NotifyOfPropertyChange(() => this.TrackReference); + } + } + + /// + /// Gets or sets the The UI display value for sample rate + /// + public string SampleRateDisplayValue + { + get + { + return this.SampleRate == 0 ? "Auto" : this.SampleRate.ToString(CultureInfo.InvariantCulture); + } + set + { + // TODO change this to be a converted field + if (string.IsNullOrEmpty(value)) + { + return; + } + + double samplerate; + double.TryParse(value, NumberStyles.Any, CultureInfo.InvariantCulture, out samplerate); + + this.SampleRate = samplerate; + } + } + + /// + /// Gets or sets the Scanned Audio Tracks + /// + [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] + public Audio ScannedTrack + { + get + { + return this.scannedTrack; + } + + set + { + this.scannedTrack = value; + this.NotifyOfPropertyChange(() => this.ScannedTrack); + } + } + + /// + /// Gets the Audio Track Name + /// + public int? Track + { + get + { + if (this.ScannedTrack != null) + { + return this.ScannedTrack.TrackNumber; + } + + return null; + } + } + + /// + /// Gets a value indicating whether IsPassthru. + /// + public bool IsPassthru + { + get + { + if (this.Encoder == AudioEncoder.Ac3Passthrough || this.Encoder == AudioEncoder.DtsPassthrough + || this.Encoder == AudioEncoder.DtsHDPassthrough || this.Encoder == AudioEncoder.AacPassthru + || this.Encoder == AudioEncoder.Mp3Passthru || this.Encoder == AudioEncoder.Passthrough) + { + return true; + } + return false; + } + } + + /// + /// Gets a value indicating whether can set bitrate. + /// + public bool CannotSetBitrate + { + get + { + return this.IsPassthru || this.Encoder == AudioEncoder.ffflac; + } + } + + /// + /// Gets a value indicating whether IsLossless. + /// + public bool IsLossless + { + get + { + return this.IsPassthru || this.Encoder == AudioEncoder.ffflac; + } + } + + /// + /// Gets TrackReference. + /// + public AudioTrack TrackReference + { + get { return this; } + } + + /// + /// Gets or sets the track name. + /// + public string TrackName + { + get + { + return this.trackName; + } + set + { + this.trackName = value; + } + } + + #endregion + } +} \ No newline at end of file diff -Nru handbrake-0.9.9+dfsg/win/CS/HandBrake.ApplicationServices/Model/Encoding/ChapterMarker.cs handbrake-0.9.9+ppa1/win/CS/HandBrake.ApplicationServices/Model/Encoding/ChapterMarker.cs --- handbrake-0.9.9+dfsg/win/CS/HandBrake.ApplicationServices/Model/Encoding/ChapterMarker.cs 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/win/CS/HandBrake.ApplicationServices/Model/Encoding/ChapterMarker.cs 2013-01-23 19:04:55.000000000 +0000 @@ -0,0 +1,92 @@ +// -------------------------------------------------------------------------------------------------------------------- +// +// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License. +// +// +// A Movie Chapter +// +// -------------------------------------------------------------------------------------------------------------------- + +namespace HandBrake.ApplicationServices.Model.Encoding +{ + using System; + + using Caliburn.Micro; + + /// + /// A Movie Chapter + /// + public class ChapterMarker : PropertyChangedBase + { + /// + /// Backing field for chapter name + /// + private string chapterName; + + /// + /// Initializes a new instance of the class. + /// + public ChapterMarker() + { + } + + /// + /// Initializes a new instance of the class. + /// + /// + /// The number. + /// + /// + /// The name. + /// + /// + /// The duration. + /// + public ChapterMarker(int number, string name, TimeSpan duration) + { + this.ChapterName = name; + this.ChapterNumber = number; + this.Duration = duration; + } + + /// + /// Initializes a new instance of the class. + /// Copy Constructor + /// + /// + /// The chapter. + /// + public ChapterMarker(ChapterMarker chapter) + { + this.ChapterName = chapter.ChapterName; + this.ChapterNumber = chapter.ChapterNumber; + this.Duration = chapter.Duration; + } + + /// + /// Gets or sets The number of this Chapter, in regards to it's parent Title + /// + public int ChapterNumber { get; set; } + + /// + /// Gets or sets the duration. + /// + public TimeSpan Duration { get; set; } + + /// + /// Gets or sets ChapterName. + /// + public string ChapterName + { + get + { + return this.chapterName; + } + set + { + this.chapterName = value; + this.NotifyOfPropertyChange(() => this.ChapterName); + } + } + } +} diff -Nru handbrake-0.9.9+dfsg/win/CS/HandBrake.ApplicationServices/Model/Encoding/FramerateMode.cs handbrake-0.9.9+ppa1/win/CS/HandBrake.ApplicationServices/Model/Encoding/FramerateMode.cs --- handbrake-0.9.9+dfsg/win/CS/HandBrake.ApplicationServices/Model/Encoding/FramerateMode.cs 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/win/CS/HandBrake.ApplicationServices/Model/Encoding/FramerateMode.cs 2012-06-14 19:08:34.000000000 +0000 @@ -0,0 +1,21 @@ +// -------------------------------------------------------------------------------------------------------------------- +// +// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License. +// +// +// The Mode of Video Encoding. CFR, VFR, PFR +// +// -------------------------------------------------------------------------------------------------------------------- + +namespace HandBrake.ApplicationServices.Model.Encoding +{ + /// + /// The Mode of Video Encoding. CFR, VFR, PFR + /// + public enum FramerateMode + { + CFR = 0, + PFR, + VFR + } +} diff -Nru handbrake-0.9.9+dfsg/win/CS/HandBrake.ApplicationServices/Model/Encoding/OutputFormat.cs handbrake-0.9.9+ppa1/win/CS/HandBrake.ApplicationServices/Model/Encoding/OutputFormat.cs --- handbrake-0.9.9+dfsg/win/CS/HandBrake.ApplicationServices/Model/Encoding/OutputFormat.cs 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/win/CS/HandBrake.ApplicationServices/Model/Encoding/OutputFormat.cs 2012-06-14 19:08:34.000000000 +0000 @@ -0,0 +1,28 @@ +// -------------------------------------------------------------------------------------------------------------------- +// +// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License. +// +// +// The Output format. +// +// -------------------------------------------------------------------------------------------------------------------- + +namespace HandBrake.ApplicationServices.Model.Encoding +{ + using System.ComponentModel; + + /// + /// The Output format. + /// + public enum OutputFormat + { + [Description("MP4")] + Mp4, + + [Description("M4V")] + M4V, + + [Description("MKV")] + Mkv + } +} diff -Nru handbrake-0.9.9+dfsg/win/CS/HandBrake.ApplicationServices/Model/Encoding/PointToPointMode.cs handbrake-0.9.9+ppa1/win/CS/HandBrake.ApplicationServices/Model/Encoding/PointToPointMode.cs --- handbrake-0.9.9+dfsg/win/CS/HandBrake.ApplicationServices/Model/Encoding/PointToPointMode.cs 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/win/CS/HandBrake.ApplicationServices/Model/Encoding/PointToPointMode.cs 2012-06-14 19:08:34.000000000 +0000 @@ -0,0 +1,31 @@ +// -------------------------------------------------------------------------------------------------------------------- +// +// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License. +// +// +// Point to Point Mode +// +// -------------------------------------------------------------------------------------------------------------------- + +namespace HandBrake.ApplicationServices.Model.Encoding +{ + using System.ComponentModel.DataAnnotations; + + /// + /// Point to Point Mode + /// + public enum PointToPointMode + { + [Display(Name = "Chapters")] + Chapters = 0, + + [Display(Name = "Seconds")] + Seconds, + + [Display(Name = "Frames")] + Frames, + + [Display(Name = "Preview")] + Preview, + } +} diff -Nru handbrake-0.9.9+dfsg/win/CS/HandBrake.ApplicationServices/Model/Encoding/SubtitleTrack.cs handbrake-0.9.9+ppa1/win/CS/HandBrake.ApplicationServices/Model/Encoding/SubtitleTrack.cs --- handbrake-0.9.9+dfsg/win/CS/HandBrake.ApplicationServices/Model/Encoding/SubtitleTrack.cs 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/win/CS/HandBrake.ApplicationServices/Model/Encoding/SubtitleTrack.cs 2012-08-25 14:05:56.000000000 +0000 @@ -0,0 +1,272 @@ +// -------------------------------------------------------------------------------------------------------------------- +// +// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License. +// +// +// Subtitle Information +// +// -------------------------------------------------------------------------------------------------------------------- + +namespace HandBrake.ApplicationServices.Model.Encoding +{ + using System; + + using Caliburn.Micro; + + using HandBrake.ApplicationServices.Parsing; + + /// + /// Subtitle Information + /// + public class SubtitleTrack : PropertyChangedBase + { + #region Constants and Fields + + /// + /// The burned in backing field. + /// + private bool burned; + + /// + /// The is default backing field. + /// + private bool isDefault; + + /// + /// The source track. + /// + private Subtitle sourceTrack; + + /// + /// Backing field for the srt file name. + /// + private string srtFileName; + + /// + /// Backing field for Forced Subs + /// + private bool forced; + + #endregion + + #region Constructors and Destructors + + /// + /// Initializes a new instance of the class. + /// + public SubtitleTrack() + { + } + + /// + /// Initializes a new instance of the class. + /// Copy Constructor + /// + /// + /// The subtitle. + /// + public SubtitleTrack(SubtitleTrack subtitle) + { + this.Burned = subtitle.Burned; + this.Default = subtitle.Default; + this.Forced = subtitle.Forced; + this.sourceTrack = subtitle.SourceTrack; + this.SrtCharCode = subtitle.SrtCharCode; + this.SrtFileName = subtitle.SrtFileName; + this.SrtLang = subtitle.SrtLang; + this.SrtOffset = subtitle.SrtOffset; + this.SrtPath = subtitle.SrtPath; + this.SubtitleType = subtitle.SubtitleType; + this.SourceTrack = subtitle.SourceTrack; + } + + #endregion + + #region Properties + + /// + /// Gets or sets a value indicating whether Burned. + /// + public bool Burned + { + get + { + return this.burned; + } + + set + { + if (!object.Equals(this.burned, value)) + { + this.burned = value; + this.NotifyOfPropertyChange(() => this.Burned); + + if (value) + { + this.Default = false; + } + } + } + } + + /// + /// Gets or sets a value indicating whether Default. + /// + public bool Default + { + get + { + return this.isDefault; + } + + set + { + if (!object.Equals(this.isDefault, value)) + { + this.isDefault = value; + this.NotifyOfPropertyChange(() => this.Default); + + if (value) + { + this.Burned = false; + } + } + } + } + + /// + /// Gets or sets a value indicating whether Forced. + /// + public bool Forced + { + get + { + return this.forced; + } + set + { + this.forced = value; + this.NotifyOfPropertyChange(() => this.Forced); + } + } + + /// + /// Gets or sets SourceTrack. + /// + public Subtitle SourceTrack + { + get + { + return this.sourceTrack; + } + + set + { + this.sourceTrack = value; + this.NotifyOfPropertyChange(() => this.SourceTrack); + if (this.sourceTrack != null) + { + this.Track = this.sourceTrack.ToString(); + } + + this.NotifyOfPropertyChange(() => this.CanBeBurned); + this.NotifyOfPropertyChange(() => this.CanBeForced); + } + } + + /// + /// Gets or sets the SRT Character Code + /// + public string SrtCharCode { get; set; } + + /// + /// Gets or sets the SRT Filename + /// + public string SrtFileName + { + get + { + return srtFileName; + } + + set + { + srtFileName = value; + this.NotifyOfPropertyChange(() => this.IsSrtSubtitle); + } + } + + /// + /// Gets or sets the SRT Language + /// + public string SrtLang { get; set; } + + /// + /// Gets or sets the SRT Offset + /// + public int SrtOffset { get; set; } + + /// + /// Gets or sets the Path to the SRT file + /// + public string SrtPath { get; set; } + + /// + /// Gets or sets the type of the subtitle + /// + public SubtitleType SubtitleType { get; set; } + + /// + /// Gets or sets Track. + /// + [Obsolete("Use SourceTrack Instead")] + public string Track { get; set; } + + #endregion + + /// + /// Gets a value indicating whether CanForced. + /// + public bool CanBeForced + { + get + { + if (this.SourceTrack != null) + { + return this.SourceTrack.SubtitleType == SubtitleType.VobSub || this.SourceTrack.SubtitleType == SubtitleType.PGS + || this.SourceTrack.SubtitleType == SubtitleType.ForeignAudioSearch; + } + + return false; + } + } + + /// + /// Gets a value indicating whether CanBeBurned. + /// + public bool CanBeBurned + { + get + { + if (this.SourceTrack != null) + { + return this.SourceTrack.SubtitleType == SubtitleType.VobSub || this.SourceTrack.SubtitleType == SubtitleType.PGS + || this.SourceTrack.SubtitleType == SubtitleType.ForeignAudioSearch || this.SourceTrack.SubtitleType == SubtitleType.SSA; + } + + return false; + } + } + + /// + /// Gets a value indicating whether this is an SRT subtitle. + /// + public bool IsSrtSubtitle + { + get + { + return this.SrtFileName != "-" && this.SrtFileName != null; + } + } + } +} \ No newline at end of file diff -Nru handbrake-0.9.9+dfsg/win/CS/HandBrake.ApplicationServices/Model/Encoding/SubtitleType.cs handbrake-0.9.9+ppa1/win/CS/HandBrake.ApplicationServices/Model/Encoding/SubtitleType.cs --- handbrake-0.9.9+dfsg/win/CS/HandBrake.ApplicationServices/Model/Encoding/SubtitleType.cs 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/win/CS/HandBrake.ApplicationServices/Model/Encoding/SubtitleType.cs 2012-06-19 18:42:08.000000000 +0000 @@ -0,0 +1,38 @@ +// -------------------------------------------------------------------------------------------------------------------- +// +// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License. +// +// +// Subtitle Type. +// +// -------------------------------------------------------------------------------------------------------------------- + +namespace HandBrake.ApplicationServices.Model.Encoding +{ + using System.ComponentModel; + + /// + /// Subtitle Type. + /// + public enum SubtitleType + { + [Description("SSA")] + SSA, + [Description("SRT")] + SRT, + [Description("VobSub")] + VobSub, + [Description("CC")] + CC, + [Description("UTF8")] + UTF8Sub, + [Description("TX3G")] + TX3G, + [Description("PGS")] + PGS, + [Description("Unknown")] + Unknown, + [Description("Foreign Audio Search")] + ForeignAudioSearch, // Special Type for Foreign Audio Search + } +} \ No newline at end of file diff -Nru handbrake-0.9.9+dfsg/win/CS/HandBrake.ApplicationServices/Model/Preset.cs handbrake-0.9.9+ppa1/win/CS/HandBrake.ApplicationServices/Model/Preset.cs --- handbrake-0.9.9+dfsg/win/CS/HandBrake.ApplicationServices/Model/Preset.cs 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/win/CS/HandBrake.ApplicationServices/Model/Preset.cs 2012-10-27 19:54:23.000000000 +0000 @@ -0,0 +1,109 @@ +// -------------------------------------------------------------------------------------------------------------------- +// +// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License. +// +// +// A Preset for encoding with. +// +// -------------------------------------------------------------------------------------------------------------------- + +namespace HandBrake.ApplicationServices.Model +{ + using Caliburn.Micro; + + /// + /// A Preset for encoding with. + /// + public class Preset : PropertyChangedBase + { + #region Constants and Fields + + /// + /// The is default. + /// + private bool isDefault; + + #endregion + + #region Properties + + /// + /// Gets or sets the category which the preset resides under + /// + public string Category { get; set; } + + /// + /// Gets or sets the Description for the preset + /// + public string Description { get; set; } + + /// + /// Gets or sets a value indicating whether this is a built in preset + /// + public bool IsBuildIn { get; set; } + + /// + /// Gets or sets a value indicating whether IsDefault. + /// + public bool IsDefault + { + get + { + return this.isDefault; + } + set + { + this.isDefault = value; + this.NotifyOfPropertyChange(() => this.IsDefault); + } + } + + /// + /// Gets or sets the preset name + /// + public string Name { get; set; } + + /// + /// Gets or sets PictureSettingsMode. + /// Source Maximum, Custom or None + /// + public PresetPictureSettingsMode PictureSettingsMode { get; set; } + + /// + /// Gets or sets a value indicating whether use deinterlace. + /// + public bool UseDeinterlace { get; set; } + + /// + /// Gets or sets task. + /// + public EncodeTask Task { get; set; } + + /// + /// Gets or sets a value indicating whether Picture Filters are used with this preset. + /// + public bool UsePictureFilters { get; set; } + + /// + /// Gets or sets The version number which associates this preset with a HB build + /// + public string Version { get; set; } + + #endregion + + #region Public Methods + + /// + /// Override the ToString Method + /// + /// + /// The Preset Name + /// + public override string ToString() + { + return this.Name; + } + + #endregion + } +} \ No newline at end of file diff -Nru handbrake-0.9.9+dfsg/win/CS/HandBrake.ApplicationServices/Model/PresetPictureSettingsMode.cs handbrake-0.9.9+ppa1/win/CS/HandBrake.ApplicationServices/Model/PresetPictureSettingsMode.cs --- handbrake-0.9.9+dfsg/win/CS/HandBrake.ApplicationServices/Model/PresetPictureSettingsMode.cs 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/win/CS/HandBrake.ApplicationServices/Model/PresetPictureSettingsMode.cs 2012-10-27 19:54:23.000000000 +0000 @@ -0,0 +1,26 @@ +// -------------------------------------------------------------------------------------------------------------------- +// +// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License. +// +// +// Picture Settings Mode when adding presets +// +// -------------------------------------------------------------------------------------------------------------------- + +namespace HandBrake.ApplicationServices.Model +{ + using System.ComponentModel.DataAnnotations; + + /// + /// Picture Settings Mode when adding presets + /// + public enum PresetPictureSettingsMode + { + [Display(Name = "None")] + None = 0, + [Display(Name = "Custom")] + Custom = 1, + [Display(Name = "Source Maximum")] + SourceMaximum = 2, + } +} \ No newline at end of file diff -Nru handbrake-0.9.9+dfsg/win/CS/HandBrake.ApplicationServices/Model/QueueItemStatus.cs handbrake-0.9.9+ppa1/win/CS/HandBrake.ApplicationServices/Model/QueueItemStatus.cs --- handbrake-0.9.9+dfsg/win/CS/HandBrake.ApplicationServices/Model/QueueItemStatus.cs 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/win/CS/HandBrake.ApplicationServices/Model/QueueItemStatus.cs 2012-06-14 19:08:34.000000000 +0000 @@ -0,0 +1,39 @@ +// -------------------------------------------------------------------------------------------------------------------- +// +// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License. +// +// +// Queue Item Status +// +// -------------------------------------------------------------------------------------------------------------------- + +namespace HandBrake.ApplicationServices.Model +{ + using System.ComponentModel; + using System.ComponentModel.DataAnnotations; + + using HandBrake.ApplicationServices.Converters; + + /// + /// Queue Item Status + /// + [TypeConverter(typeof(EnumToDescConverter))] + public enum QueueItemStatus + { + [Description("Waiting")] + [Display(Name = "Waiting")] + Waiting = 0, + + [Description("In Progress")] + [Display(Name = "In Progress")] + InProgress, + + [Description("Completed")] + [Display(Name = "Completed")] + Completed, + + [Description("Error")] + [Display(Name = "Error")] + Error, + } +} diff -Nru handbrake-0.9.9+dfsg/win/CS/HandBrake.ApplicationServices/Model/QueueTask.cs handbrake-0.9.9+ppa1/win/CS/HandBrake.ApplicationServices/Model/QueueTask.cs --- handbrake-0.9.9+dfsg/win/CS/HandBrake.ApplicationServices/Model/QueueTask.cs 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/win/CS/HandBrake.ApplicationServices/Model/QueueTask.cs 2013-01-26 16:05:48.000000000 +0000 @@ -0,0 +1,135 @@ +// -------------------------------------------------------------------------------------------------------------------- +// +// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License. +// +// +// The QueueTask. +// +// -------------------------------------------------------------------------------------------------------------------- + +namespace HandBrake.ApplicationServices.Model +{ + using Caliburn.Micro; + + using HandBrake.ApplicationServices.Parsing; + + /// + /// The QueueTask. + /// + public class QueueTask : PropertyChangedBase + { + #region Constants and Fields + + /// + /// The status. + /// + private QueueItemStatus status; + + #endregion + + #region Properties + + /// + /// Initializes a new instance of the class. + /// + public QueueTask() + { + this.Status = QueueItemStatus.Waiting; + } + + /// + /// Gets or sets ScannedSource. + /// + public Source ScannedSource { get; set; } + + /// + /// Gets or sets a value indicating whether if this is a user or GUI generated query + /// + public bool CustomQuery { get; set; } + + /// + /// Gets or sets Status. + /// + public QueueItemStatus Status + { + get + { + return this.status; + } + + set + { + this.status = value; + this.NotifyOfPropertyChange(() => this.Status); + } + } + + /// + /// Gets or sets the Encode Task. + /// + public EncodeTask Task { get; set; } + + #endregion + + /// + /// The equals. + /// + /// + /// The other. + /// + /// + /// The . + /// + protected bool Equals(QueueTask other) + { + return Equals(this.ScannedSource, other.ScannedSource) && this.CustomQuery.Equals(other.CustomQuery) && Equals(this.Task, other.Task) && this.status == other.status; + } + + /// + /// The equals. + /// + /// + /// The obj. + /// + /// + /// The . + /// + public override bool Equals(object obj) + { + if (ReferenceEquals(null, obj)) + { + return false; + } + + if (ReferenceEquals(this, obj)) + { + return true; + } + + if (obj.GetType() != this.GetType()) + { + return false; + } + + return Equals((QueueTask)obj); + } + + /// + /// The get hash code. + /// + /// + /// The . + /// + public override int GetHashCode() + { + unchecked + { + int hashCode = (this.ScannedSource != null ? this.ScannedSource.GetHashCode() : 0); + hashCode = (hashCode * 397) ^ this.CustomQuery.GetHashCode(); + hashCode = (hashCode * 397) ^ (this.Task != null ? this.Task.GetHashCode() : 0); + hashCode = (hashCode * 397) ^ (int)this.status; + return hashCode; + } + } + } +} \ No newline at end of file diff -Nru handbrake-0.9.9+dfsg/win/CS/HandBrake.ApplicationServices/Parsing/Audio.cs handbrake-0.9.9+ppa1/win/CS/HandBrake.ApplicationServices/Parsing/Audio.cs --- handbrake-0.9.9+dfsg/win/CS/HandBrake.ApplicationServices/Parsing/Audio.cs 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/win/CS/HandBrake.ApplicationServices/Parsing/Audio.cs 2012-07-20 13:24:52.000000000 +0000 @@ -0,0 +1,181 @@ +// -------------------------------------------------------------------------------------------------------------------- +// +// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License. +// +// +// An object represending an AudioTrack associated with a Title, in a DVD +// +// -------------------------------------------------------------------------------------------------------------------- + +namespace HandBrake.ApplicationServices.Parsing +{ + using System; + + /// + /// An object represending an AudioTrack associated with a Title, in a DVD + /// + [Serializable] + public class Audio + { + /// + /// Initializes a new instance of the class. + /// + public Audio() + { + } + + /// + /// Initializes a new instance of the class. + /// + /// + /// The track number. + /// + /// + /// The language. + /// + /// + /// The language code. + /// + /// + /// The description. + /// + /// + /// The format. + /// + /// + /// The sample rate. + /// + /// + /// The bitrate. + /// + public Audio(int trackNumber, string language, string languageCode, string description, string format, int sampleRate, int bitrate) + { + this.TrackNumber = trackNumber; + this.Language = language; + this.LanguageCode = languageCode; + this.Description = description; + this.Format = format; + this.SampleRate = sampleRate; + this.Bitrate = bitrate; + } + + /// + /// Gets or sets The track number of this Audio Track + /// + public int TrackNumber { get; set; } + + /// + /// Gets or sets The language (if detected) of this Audio Track + /// + public string Language { get; set; } + + /// + /// Gets or sets LanguageCode. + /// + public string LanguageCode { get; set; } + + /// + /// Gets or sets Description. + /// + public string Description { get; set; } + + /// + /// Gets or sets The primary format of this Audio Track + /// + public string Format { get; set; } + + /// + /// Gets or sets The frequency (in MHz) of this Audio Track + /// + public int SampleRate { get; set; } + + /// + /// Gets or sets The bitrate (in kbps) of this Audio Track + /// + public int Bitrate { get; set; } + + /// + /// Override of the ToString method to make this object easier to use in the UI + /// + /// A string formatted as: {track #} {language} ({format}) ({sub-format}) + public override string ToString() + { + if (this.Description == "None Found") + { + return this.Description; + } + + if (this.Description == null) + { + return string.Format("{0} {1} ({2})", this.TrackNumber, this.Language, this.Format); + } + + return string.Format("{0} {1} ({2}) ({3})", this.TrackNumber, this.Language, this.Format, this.Description); + } + + /// + /// The equals. + /// + /// + /// The other. + /// + /// + /// The System.Boolean. + /// + public bool Equals(Audio other) + { + if (ReferenceEquals(null, other)) + { + return false; + } + if (ReferenceEquals(this, other)) + { + return true; + } + return other.TrackNumber == this.TrackNumber && object.Equals(other.Language, this.Language) && object.Equals(other.LanguageCode, this.LanguageCode) && object.Equals(other.Format, this.Format); + } + + /// + /// Determines whether the specified is equal to the current . + /// + /// + /// true if the specified is equal to the current ; otherwise, false. + /// + /// The to compare with the current . 2 + public override bool Equals(object obj) + { + if (ReferenceEquals(null, obj)) + { + return false; + } + if (ReferenceEquals(this, obj)) + { + return true; + } + if (obj.GetType() != typeof(Audio)) + { + return false; + } + return Equals((Audio)obj); + } + + /// + /// Serves as a hash function for a particular type. + /// + /// + /// A hash code for the current . + /// + /// 2 + public override int GetHashCode() + { + unchecked + { + int result = this.TrackNumber; + result = (result * 397) ^ (this.Language != null ? this.Language.GetHashCode() : 0); + result = (result * 397) ^ (this.LanguageCode != null ? this.LanguageCode.GetHashCode() : 0); + result = (result * 397) ^ (this.Format != null ? this.Format.GetHashCode() : 0); + return result; + } + } + } +} \ No newline at end of file diff -Nru handbrake-0.9.9+dfsg/win/CS/HandBrake.ApplicationServices/Parsing/AudioHelper.cs handbrake-0.9.9+ppa1/win/CS/HandBrake.ApplicationServices/Parsing/AudioHelper.cs --- handbrake-0.9.9+dfsg/win/CS/HandBrake.ApplicationServices/Parsing/AudioHelper.cs 1970-01-01 00:00:00.000000000 +0000 +++ handbrake-0.9.9+ppa1/win/CS/HandBrake.ApplicationServices/Parsing/AudioHelper.cs 2012-06-14 19:08:34.000000000 +0000 @@ -0,0 +1,95 @@ +// -------------------------------------------------------------------------------------------------------------------- +// +// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License. +// +// +// An Audio Helper Class +// +// -------------------------------------------------------------------------------------------------------------------- + +namespace HandBrake.ApplicationServices.Parsing +{ + using System.Collections.Generic; + using System.IO; + using System.Text.RegularExpressions; + + /// + /// An Audio Helper Class + /// + public class AudioHelper + { + /// + /// Gets A Dummy Not Found Track + /// + public static Audio NoneFound + { + get + { + return new Audio { Description = "None Found" }; + } + } + + /// + /// Parse the CLI input to an Audio Track object + /// + /// + /// The output. + /// + /// + /// An Audio Track obkect + /// + public static Audio Parse(StringReader output) + { + string audioTrack = output.ReadLine(); + Match m = Regex.Match(audioTrack, @"^ \+ ([0-9]*), ([A-Za-z0-9,\s]*) \((.*)\) \((.*)\)"); + Match track = Regex.Match(audioTrack, @"^ \+ ([0-9]*), ([A-Za-z0-9,\s]*) \((.*)\)"); // ID and Language + Match iso639_2 = Regex.Match(audioTrack, @"iso639-2: ([a-zA-Z]*)\)"); + Match samplerate = Regex.Match(audioTrack, @"([0-9]*)Hz"); + Match bitrate = Regex.Match(audioTrack, @"([0-9]*)bps"); + + string subformat = m.Groups[4].Value.Trim().Contains("iso639") ? null : m.Groups[4].Value; + string samplerateVal = samplerate.Success ? samplerate.Groups[0].Value.Replace("Hz", string.Empty).Trim() : "0"; + string bitrateVal = bitrate.Success ? bitrate.Groups[0].Value.Replace("bps", string.Empty).Trim() : "0"; + + if (track.Success) + { + Audio thisTrack = new Audio + { + TrackNumber = int.Parse(track.Groups[1].Value.Trim()), + Language = track.Groups[2].Value, + Format = m.Groups[3].Value, + Description = subformat, + SampleRate = int.Parse(samplerateVal), + Bitrate = int.Parse(bitrateVal), + LanguageCode = iso639_2.Value.Replace("iso639-2: ", string.Empty).Replace(")", string.Empty) + }; + return thisTrack; + } + + return null; + } + + /// + /// Pase a list of audio tracks + /// + /// + /// The output. + /// + /// + /// An array of audio tracks + /// + public static Audio[] ParseList(StringReader output) + { + var tracks = new List