Mercurial > audlegacy-plugins
changeset 1006:25c46293cbf2 trunk
[svn] - get rid of Disk-Writer and Out-Lame in favor of FileWriter finally
author | mf0102 |
---|---|
date | Thu, 10 May 2007 12:13:22 -0700 |
parents | 2346d918470d |
children | 0e4ee1c4e6cb |
files | ChangeLog src/disk_writer/Makefile src/disk_writer/disk_writer.c src/lame/Makefile src/lame/out_lame.c |
diffstat | 5 files changed, 11 insertions(+), 2942 deletions(-) [+] |
line wrap: on
line diff
--- a/ChangeLog Wed May 09 14:38:09 2007 -0700 +++ b/ChangeLog Thu May 10 12:13:22 2007 -0700 @@ -1,3 +1,14 @@ +2007-05-09 21:38:09 +0000 Ben Tucker <bnt@interchange.ubc.ca> + revision [2174] + Fixed rootvis' config to only declare stuff once; modified alarm.c to use dbus and made appropriate changes to the build system. + + trunk/configure.ac | 12 +++++++++--- + trunk/mk/rules.mk.in | 2 ++ + trunk/src/alarm/alarm.c | 35 ++++++++++++++++++----------------- + trunk/src/rootvis/config.h | 5 +++++ + 4 files changed, 34 insertions(+), 20 deletions(-) + + 2007-05-07 05:53:19 +0000 Yoshiki Yazawa <yaz@cc.rim.or.jp> revision [2172] - move bmp_title_input_free() into file_open() to avoid memory leak.
--- a/src/disk_writer/Makefile Wed May 09 14:38:09 2007 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,15 +0,0 @@ -include ../../mk/rules.mk -include ../../mk/init.mk - -OBJECTIVE_LIBS = libdisk_writer$(SHARED_SUFFIX) - -LIBDIR = $(plugindir)/$(OUTPUT_PLUGIN_DIR) - -LIBADD = $(GTK_LIBS) $(GLIB_LIBS) $(PANGO_LIBS) -SOURCES = disk_writer.c - -OBJECTS = ${SOURCES:.c=.o} - -CFLAGS += $(PICFLAGS) $(GTK_CFLAGS) $(GLIB_CFLAGS) $(PANGO_CFLAGS) -I../../intl -I../.. - -include ../../mk/objective.mk
--- a/src/disk_writer/disk_writer.c Wed May 09 14:38:09 2007 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,504 +0,0 @@ -/* XMMS - Cross-platform multimedia player - * Copyright (C) 1998-2004 Peter Alm, Mikael Alm, Olle Hallnas, - * Thomas Nilsson and 4Front Technologies - * Copyright (C) 1999-2004 Haavard Kvaalen - * - * File name suffix option added by Heikki Orsila 2003 - * <heikki.orsila@iki.fi> (no copyrights claimed) - * - * 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. - */ - -#include "config.h" - -#include <gtk/gtk.h> -#include <audacious/i18n.h> -#include <stdio.h> -#include <string.h> - -#include "audacious/plugin.h" -#include "audacious/beepctrl.h" -#include "audacious/configdb.h" -#include "audacious/util.h" -#include "audacious/vfs.h" - - -struct format_info { - AFormat format; - int frequency; - int channels; -}; -struct format_info input; - -struct wavhead -{ - guint32 main_chunk; - guint32 length; - guint32 chunk_type; - guint32 sub_chunk; - guint32 sc_len; - guint16 format; - guint16 modus; - guint32 sample_fq; - guint32 byte_p_sec; - guint16 byte_p_spl; - guint16 bit_p_spl; - guint32 data_chunk; - guint32 data_length; -}; - -static GtkWidget *configure_win = NULL, *configure_vbox; -static GtkWidget *path_hbox, *path_label, *path_dirbrowser; -static GtkWidget *configure_separator; -static GtkWidget *configure_bbox, *configure_ok, *configure_cancel; - -static GtkWidget *saveplace_hbox, *saveplace; -static gboolean save_original = TRUE; - -static GtkWidget *use_suffix_toggle = NULL; -static gboolean use_suffix = FALSE; - -static gchar *file_path = NULL; -static VFSFile *output_file = NULL; -static struct wavhead header; -static guint64 written = 0; -static AFormat afmt; -static gint arate, ach; -gint ctrlsocket_get_session_id(void); /* FIXME */ - -static void disk_init(void); -static gint disk_open(AFormat fmt, gint rate, gint nch); -static void disk_write(void *ptr, gint length); -static void disk_close(void); -static void disk_flush(gint time); -static void disk_pause(short p); -static gint disk_free(void); -static gint disk_playing(void); -static gint disk_get_written_time(void); -static gint disk_get_output_time(void); -static void disk_configure(void); -static void disk_getvol(gint *, gint *); -static void disk_setvol(gint, gint); - -static int lvol = 0, rvol = 0; - -OutputPlugin disk_op = -{ - NULL, - NULL, - NULL, - disk_init, - NULL, - NULL, - disk_configure, - disk_getvol, - disk_setvol, - disk_open, - disk_write, - disk_close, - disk_flush, - disk_pause, - disk_free, - disk_playing, - disk_get_output_time, - disk_get_written_time, - NULL -}; - -OutputPlugin *get_oplugin_info(void) -{ - disk_op.description = g_strdup_printf(_("Disk Writer Plugin %s"), VERSION); - return &disk_op; -} - -static void disk_init(void) -{ - ConfigDb *db; - - db = bmp_cfg_db_open(); - bmp_cfg_db_get_string(db, "disk_writer", "file_path", &file_path); - bmp_cfg_db_get_bool(db, "disk_writer", "save_original", &save_original); - bmp_cfg_db_get_bool(db, "disk_writer", "use_suffix", &use_suffix); - bmp_cfg_db_close(db); - - if (!file_path) - file_path = g_strdup(g_get_home_dir()); -} - -static gint disk_open(AFormat fmt, gint rate, gint nch) -{ - gchar *filename, *title, *temp; - gint pos; - - written = 0; - afmt = fmt; - arate = rate; - ach = nch; - - if (xmms_check_realtime_priority()) - { - xmms_show_message(_("Error"), - _("You cannot use the Disk Writer plugin\n" - "when you're running in realtime mode."), - _("OK"), FALSE, NULL, NULL); - return 0; - } - - pos = xmms_remote_get_playlist_pos(ctrlsocket_get_session_id()); - title = xmms_remote_get_playlist_file(ctrlsocket_get_session_id(), pos); - if (!use_suffix) { - if (title != NULL && (temp = strrchr(title, '.')) != NULL) { - *temp = '\0'; - } - } - if (title == NULL || strlen(g_basename(title)) == 0) - { - g_free(title); - /* No filename, lets try title instead */ - title = xmms_remote_get_playlist_title(ctrlsocket_get_session_id(), pos); - while (title != NULL && (temp = strchr(title, '/')) != NULL) - *temp = '-'; - - if (title == NULL || strlen(g_basename(title)) == 0) - { - g_free(title); - /* No title either. Just set it to something. */ - title = g_strdup_printf("xmms-%d", pos); - } - } - - if (save_original) - filename = g_strdup_printf("%s.wav", title); - else - filename = g_strdup_printf("%s/%s.wav", file_path, g_basename(title)); - // FIXME: check if filename equals title - g_free(title); - - output_file = vfs_fopen(filename, "wb"); - g_free(filename); - - if (!output_file) - return 0; - - memcpy(&header.main_chunk, "RIFF", 4); - header.length = GUINT32_TO_LE(0); - memcpy(&header.chunk_type, "WAVE", 4); - memcpy(&header.sub_chunk, "fmt ", 4); - header.sc_len = GUINT32_TO_LE(16); - header.format = GUINT16_TO_LE(1); - header.modus = GUINT16_TO_LE(nch); - header.sample_fq = GUINT32_TO_LE(rate); - if (fmt == FMT_U8 || fmt == FMT_S8) - header.bit_p_spl = GUINT16_TO_LE(8); - else - header.bit_p_spl = GUINT16_TO_LE(16); - header.byte_p_sec = GUINT32_TO_LE(rate * header.modus * (GUINT16_FROM_LE(header.bit_p_spl) / 8)); - header.byte_p_spl = GUINT16_TO_LE((GUINT16_FROM_LE(header.bit_p_spl) / (8 / nch))); - memcpy(&header.data_chunk, "data", 4); - header.data_length = GUINT32_TO_LE(0); - vfs_fwrite(&header, sizeof (struct wavhead), 1, output_file); - - input.format = fmt; - input.frequency = rate; - input.channels = nch; - - return 1; -} - -static void convert_buffer(gpointer buffer, gint length) -{ - gint i; - - if (afmt == FMT_S8) - { - guint8 *ptr1 = buffer; - gint8 *ptr2 = buffer; - - for (i = 0; i < length; i++) - *(ptr1++) = *(ptr2++) ^ 128; - } - if (afmt == FMT_S16_BE) - { - gint16 *ptr = buffer; - - for (i = 0; i < length >> 1; i++, ptr++) - *ptr = GUINT16_SWAP_LE_BE(*ptr); - } - if (afmt == FMT_S16_NE) - { - gint16 *ptr = buffer; - - for (i = 0; i < length >> 1; i++, ptr++) - *ptr = GINT16_TO_LE(*ptr); - } - if (afmt == FMT_U16_BE) - { - gint16 *ptr1 = buffer; - guint16 *ptr2 = buffer; - - for (i = 0; i < length >> 1; i++, ptr2++) - *(ptr1++) = GINT16_TO_LE(GUINT16_FROM_BE(*ptr2) ^ 32768); - } - if (afmt == FMT_U16_LE) - { - gint16 *ptr1 = buffer; - guint16 *ptr2 = buffer; - - for (i = 0; i < length >> 1; i++, ptr2++) - *(ptr1++) = GINT16_TO_LE(GUINT16_FROM_LE(*ptr2) ^ 32768); - } - if (afmt == FMT_U16_NE) - { - gint16 *ptr1 = buffer; - guint16 *ptr2 = buffer; - - for (i = 0; i < length >> 1; i++, ptr2++) - *(ptr1++) = GINT16_TO_LE((*ptr2) ^ 32768); - } -} - -static void disk_write(void *ptr, gint length) -{ - AFormat new_format; - int new_frequency, new_channels; - EffectPlugin *ep; - - new_format = input.format; - new_frequency = input.frequency; - new_channels = input.channels; - - ep = get_current_effect_plugin(); - if ( effects_enabled() && ep && ep->query_format ) { - ep->query_format(&new_format,&new_frequency,&new_channels); - } - - if ( effects_enabled() && ep && ep->mod_samples ) { - length = ep->mod_samples(&ptr,length, - input.format, - input.frequency, - input.channels ); - } - - if (afmt == FMT_S8 || afmt == FMT_S16_BE || - afmt == FMT_U16_LE || afmt == FMT_U16_BE || afmt == FMT_U16_NE) - convert_buffer(ptr, length); -#ifdef WORDS_BIGENDIAN - if (afmt == FMT_S16_NE) - convert_buffer(ptr, length); -#endif - written += vfs_fwrite(ptr, 1, length, output_file); -} - -static void disk_close(void) -{ - if (output_file) - { - header.length = GUINT32_TO_LE(written + sizeof (struct wavhead) - 8); - - header.data_length = GUINT32_TO_LE(written); - vfs_fseek(output_file, 0, SEEK_SET); - vfs_fwrite(&header, sizeof (struct wavhead), 1, output_file); - - vfs_fclose(output_file); - written = 0; - } - output_file = NULL; -} - -static void disk_flush(gint time) -{ - if (time == 0) - { - disk_close(); - disk_open(afmt, arate, ach); - } -} - -static void disk_pause(short p) -{ -} - -static gint disk_free(void) -{ - return 1000000; -} - -static gint disk_playing(void) -{ - return 0; -} - -static gint disk_get_written_time(void) -{ - if(header.byte_p_sec != 0) - return (gint) ((written * 1000) / header.byte_p_sec); - return 0; -} - -static gint disk_get_output_time(void) -{ - return disk_get_written_time(); -} - -static void configure_ok_cb(gpointer data) -{ - ConfigDb *db; - - if (file_path) - g_free(file_path); - file_path = g_strdup(gtk_file_chooser_get_current_folder(GTK_FILE_CHOOSER(path_dirbrowser))); - - use_suffix = - gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(use_suffix_toggle)); - - db = bmp_cfg_db_open(); - bmp_cfg_db_set_string(db, "disk_writer", "file_path", file_path); - bmp_cfg_db_set_bool(db, "disk_writer", "save_original", save_original); - bmp_cfg_db_set_bool(db, "disk_writer", "use_suffix", use_suffix); - bmp_cfg_db_close(db); - - gtk_widget_destroy(configure_win); - if (path_dirbrowser) - gtk_widget_destroy(path_dirbrowser); -} - -static void saveplace_original_cb(GtkWidget *button, gpointer data) -{ - if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(button))) - { - gtk_widget_set_sensitive(path_hbox, FALSE); - save_original = TRUE; - } -} - -static void saveplace_custom_cb(GtkWidget *button, gpointer data) -{ - if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(button))) - { - gtk_widget_set_sensitive(path_hbox, TRUE); - save_original = FALSE; - } -} - -static void configure_destroy(void) -{ - if (path_dirbrowser) - gtk_widget_destroy(path_dirbrowser); -} - -static void disk_configure(void) -{ - GtkTooltips *use_suffix_tooltips; - - if (!configure_win) - { - configure_win = gtk_window_new(GTK_WINDOW_TOPLEVEL); - - gtk_signal_connect(GTK_OBJECT(configure_win), "destroy", - GTK_SIGNAL_FUNC(configure_destroy), NULL); - gtk_signal_connect(GTK_OBJECT(configure_win), "destroy", - GTK_SIGNAL_FUNC(gtk_widget_destroyed), - &configure_win); - - gtk_window_set_title(GTK_WINDOW(configure_win), - _("Disk Writer Configuration")); - gtk_window_set_position(GTK_WINDOW(configure_win), GTK_WIN_POS_MOUSE); - - gtk_container_set_border_width(GTK_CONTAINER(configure_win), 10); - - configure_vbox = gtk_vbox_new(FALSE, 10); - gtk_container_add(GTK_CONTAINER(configure_win), configure_vbox); - - saveplace_hbox = gtk_hbox_new(FALSE, 5); - gtk_container_add(GTK_CONTAINER(configure_vbox), saveplace_hbox); - - saveplace = gtk_radio_button_new_with_label(NULL, _("Save into original directory")); - g_signal_connect(G_OBJECT(saveplace), "toggled", G_CALLBACK(saveplace_original_cb), NULL); - gtk_box_pack_start(GTK_BOX(saveplace_hbox), saveplace, FALSE, FALSE, 0); - - saveplace = gtk_radio_button_new_with_label_from_widget(GTK_RADIO_BUTTON(saveplace), - _("Save into custom directory")); - g_signal_connect(G_OBJECT(saveplace), "toggled", G_CALLBACK(saveplace_custom_cb), NULL); - gtk_box_pack_start(GTK_BOX(saveplace_hbox), saveplace, FALSE, FALSE, 0); - - if (!save_original) - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(saveplace), TRUE); - - - - path_hbox = gtk_hbox_new(FALSE, 5); - gtk_box_pack_start(GTK_BOX(configure_vbox), path_hbox, FALSE, FALSE, 0); - - path_label = gtk_label_new(_("Output file folder:")); - gtk_box_pack_start(GTK_BOX(path_hbox), path_label, FALSE, FALSE, 0); - - path_dirbrowser = - gtk_file_chooser_button_new ("Pick a folder", - GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER); - gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(path_dirbrowser), - file_path); - gtk_box_pack_start(GTK_BOX(path_hbox), path_dirbrowser, TRUE, TRUE, 0); - - if (save_original) - gtk_widget_set_sensitive(path_hbox, FALSE); - - - - use_suffix_toggle = gtk_check_button_new_with_label(_("Don't strip file name extension")); - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(use_suffix_toggle), use_suffix); - gtk_box_pack_start(GTK_BOX(configure_vbox), use_suffix_toggle, FALSE, FALSE, 0); - use_suffix_tooltips = gtk_tooltips_new(); - gtk_tooltips_set_tip(use_suffix_tooltips, use_suffix_toggle, "If enabled, the extension from the original filename will not be stripped before adding the .wav extension to the end.", NULL); - gtk_tooltips_enable(use_suffix_tooltips); - - configure_separator = gtk_hseparator_new(); - gtk_box_pack_start(GTK_BOX(configure_vbox), configure_separator, - FALSE, FALSE, 0); - - configure_bbox = gtk_hbutton_box_new(); - gtk_button_box_set_layout(GTK_BUTTON_BOX(configure_bbox), - GTK_BUTTONBOX_END); - gtk_button_box_set_spacing(GTK_BUTTON_BOX(configure_bbox), 5); - gtk_box_pack_start(GTK_BOX(configure_vbox), configure_bbox, - FALSE, FALSE, 0); - - configure_ok = gtk_button_new_from_stock(GTK_STOCK_OK); - gtk_signal_connect(GTK_OBJECT(configure_ok), "clicked", - GTK_SIGNAL_FUNC(configure_ok_cb), NULL); - gtk_box_pack_start(GTK_BOX(configure_bbox), configure_ok, - TRUE, TRUE, 0); - - configure_cancel = gtk_button_new_from_stock(GTK_STOCK_CANCEL); - gtk_signal_connect_object(GTK_OBJECT(configure_cancel), "clicked", - GTK_SIGNAL_FUNC(gtk_widget_destroy), - GTK_OBJECT(configure_win)); - gtk_box_pack_start(GTK_BOX(configure_bbox), configure_cancel, - TRUE, TRUE, 0); - - gtk_widget_show_all(configure_win); - } -} - -static void disk_getvol(gint *l, gint *r) -{ - (*l) = lvol; - (*r) = rvol; -} - -static void disk_setvol(gint l, gint r) -{ - lvol = l; - rvol = r; -}
--- a/src/lame/Makefile Wed May 09 14:38:09 2007 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,15 +0,0 @@ -include ../../mk/rules.mk -include ../../mk/init.mk - -OBJECTIVE_LIBS = liblame$(SHARED_SUFFIX) - -LIBDIR = $(plugindir)/$(OUTPUT_PLUGIN_DIR) - -LIBADD = $(GTK_LIBS) -lmp3lame -SOURCES = out_lame.c - -OBJECTS = ${SOURCES:.c=.o} - -CFLAGS += $(PICFLAGS) $(GTK_CFLAGS) -I../../intl -I../.. -Wall - -include ../../mk/objective.mk
--- a/src/lame/out_lame.c Wed May 09 14:38:09 2007 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,2408 +0,0 @@ -/* Out_Lame-Plugin - * (C) copyright 2002 Lars Siebold <khandha5@gmx.net> - * (C) copyright 2006-2007 porting to audacious by Yoshiki Yazawa <yaz@cc.rim.or.jp> - * - * Based on the diskwriter-plugin of XMMS. - * - * 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. - */ - -#include <gtk/gtk.h> -#include <stdio.h> -#include <string.h> -#include <dirent.h> - -#include <audacious/plugin.h> -#include <audacious/beepctrl.h> -#include <audacious/configdb.h> -#include <audacious/util.h> -#include <audacious/vfs.h> - -#include <lame/lame.h> - -#define ENCBUFFER_SIZE 35000 -#define OUT_LAME_VER "0.3" -/* #define DEBUG 1 */ - -GtkWidget *configure_win = NULL, *path_vbox; -GtkWidget *path_hbox, *path_label, *path_entry, *path_browse, - *path_dirbrowser = NULL; -GtkWidget *configure_separator; -GtkWidget *configure_bbox, *configure_ok, *configure_cancel; -GtkWidget *alg_quality_spin; -GtkWidget *alg_quality_label, *alg_quality_hbox; -GtkObject *alg_quality_adj; -GtkWidget *vbox, *notebook; -GtkWidget *quality_vbox, *quality_hbox1, *alg_quality_frame; -GtkWidget *enc_quality_frame, *enc_quality_vbox1, *enc_quality_vbox2, - *enc_quality_hbox, *enc_quality_label1, *enc_quality_label2; -GtkWidget *enc_radio1, *enc_radio2, *bitrate_option_menu, *bitrate_menu, - *bitrate_menu_item, *kbps_label; -GtkWidget *compression_spin, *compression_label; -GtkObject *compression_adj; -GtkWidget *mode_hbox, *mode_option_menu, *mode_menu, *mode_label, - *mode_frame, *mode_menu_item, *ms_mode_toggle, *use_source_file_path, *prepend_track_number; -GtkWidget *samplerate_hbox, *samplerate_option_menu, *samplerate_menu, - *samplerate_label, *samplerate_frame, *samplerate_menu_item; -GtkWidget *misc_frame, *misc_vbox, *enforce_iso_toggle, - *error_protection_toggle; -GtkTooltips *quality_tips, *vbr_tips, *tags_tips; -GtkWidget *vbr_vbox, *vbr_toggle, *vbr_options_vbox, *vbr_type_frame, - *vbr_type_hbox, *vbr_type_radio1, *vbr_type_radio2; -GtkWidget *abr_frame, *abr_option_menu, *abr_menu, *abr_menu_item, - *abr_hbox, *abr_label; -GtkWidget *vbr_frame, *vbr_options_vbox2; -GtkWidget *vbr_options_hbox1, *vbr_min_option_menu, *vbr_min_menu, - *vbr_min_menu_item, *vbr_min_label; -GtkWidget *vbr_options_hbox2, *vbr_max_option_menu, *vbr_max_menu, - *vbr_max_menu_item, *vbr_max_label, *enforce_min_toggle; -GtkWidget *vbr_options_hbox3, *vbr_quality_spin, *vbr_quality_label; -GtkObject *vbr_quality_adj; -GtkWidget *xing_header_toggle; -GtkWidget *tags_vbox, *tags_frames_frame, *tags_frames_hbox, - *tags_copyright_toggle, *tags_original_toggle; -GtkWidget *tags_id3_frame, *tags_id3_vbox, *tags_id3_hbox, - *tags_force_id3v2_toggle, *tags_only_v1_toggle, *tags_only_v2_toggle; - -GtkWidget *enc_quality_vbox, *hbox1, *hbox2; - -struct format_info { - AFormat format; - int frequency; - int channels; -}; -struct format_info input; - -static gchar *file_path = NULL; -static VFSFile *output_file = NULL; -static guint64 written = 0; -static guint64 olen = 0; -static AFormat afmt; -gint ctrlsocket_get_session_id(void); - -static guint64 offset = 0; - -int inside; -static gint vbr_on = 0; -static gint vbr_type = 0; -static gint vbr_min_val = 32; -static gint vbr_max_val = 320; -static gint enforce_min_val = 0; -static gint vbr_quality_val = 4; -static gint abr_val = 128; -static gint toggle_xing_val = 1; -static gint mark_original_val = 1; -static gint mark_copyright_val = 0; -static gint force_v2_val = 0; -static gint only_v1_val = 0; -static gint only_v2_val = 0; -static gint algo_quality_val = 5; -static gint out_samplerate_val = 0; -static gint bitrate_val = 128; -static gfloat compression_val = 11; -static gint enc_toggle_val = 0; -static gint audio_mode_val = 4; -static gint auto_ms_val = 0; -static gint enforce_iso_val = 0; -static gint error_protect_val = 0; -static gint srate; -static gint inch; -static gint b_use_source_file_path = 0; -static gint b_prepend_track_number = 0; - -// for id3 tag -static TitleInput *tuple = NULL; -extern TitleInput *input_get_song_tuple(const gchar * filename); - -typedef struct { - gchar *track_name; - gchar *album_name; - gchar *performer; - gchar *genre; - gchar *year; - gchar *track_number; -} lameid3_t; - -lameid3_t lameid3; - -static void outlame_init(void); -static void outlame_about(void); -static gint outlame_open(AFormat fmt, gint rate, gint nch); -static void outlame_write(void *ptr, gint length); -static void outlame_close(void); -static void outlame_flush(gint time); -static void outlame_pause(short p); -static gint outlame_buffer_free(void); -static gint outlame_buffer_playing(void); -static gint outlame_get_written_time(void); -static gint outlame_get_output_time(void); -static void outlame_configure(void); - -lame_global_flags *gfp; -int lame_init_return; -int encout; -static unsigned char encbuffer[ENCBUFFER_SIZE]; - -OutputPlugin outlame_op = { - NULL, - NULL, - NULL, /* Description */ - outlame_init, - NULL, - outlame_about, - outlame_configure, - NULL, /* get_volume */ - NULL, /* set_volume */ - outlame_open, - outlame_write, - outlame_close, - outlame_flush, - outlame_pause, - outlame_buffer_free, - outlame_buffer_playing, - outlame_get_output_time, - outlame_get_written_time, - NULL -}; - -void free_lameid3(lameid3_t *p) -{ - g_free(p->track_name); - g_free(p->album_name); - g_free(p->performer); - g_free(p->genre); - g_free(p->year); - g_free(p->track_number); - - p->track_name = NULL; - p->album_name = NULL; - p->performer = NULL; - p->genre = NULL; - p->year = NULL; - p->track_number = NULL; - -}; - -OutputPlugin *get_oplugin_info(void) -{ - outlame_op.description = g_strdup_printf("Out-Lame %s", OUT_LAME_VER); - return &outlame_op; -} - -static void lame_debugf(const char *format, va_list ap) -{ - (void) vfprintf(stdout, format, ap); -} - -static void outlame_init(void) -{ - ConfigDb *db; - - db = bmp_cfg_db_open(); - - bmp_cfg_db_get_string(db, "out_lame", "file_path", &file_path); -#ifdef DEBUG - printf("fle_path = %s\n", file_path); -#endif - //validate the path - if(file_path != NULL && opendir(file_path) == NULL) { //error -#ifdef DEBUG - printf("file_path freed\n"); -#endif - g_free(file_path); - file_path = NULL; - } - - bmp_cfg_db_get_int(db, "out_lame", "use_source_file_path", - &b_use_source_file_path); - bmp_cfg_db_get_int(db, "out_lame", "vbr_on", &vbr_on); - bmp_cfg_db_get_int(db, "out_lame", "vbr_type", &vbr_type); - bmp_cfg_db_get_int(db, "out_lame", "vbr_min_val", &vbr_min_val); - bmp_cfg_db_get_int(db, "out_lame", "vbr_max_val", &vbr_max_val); - bmp_cfg_db_get_int(db, "out_lame", "enforce_min_val", - &enforce_min_val); - bmp_cfg_db_get_int(db, "out_lame", "vbr_quality_val", - &vbr_quality_val); - bmp_cfg_db_get_int(db, "out_lame", "abr_val", &abr_val); - bmp_cfg_db_get_int(db, "out_lame", "toggle_xing_val", - &toggle_xing_val); - bmp_cfg_db_get_int(db, "out_lame", "mark_original_val", - &mark_original_val); - bmp_cfg_db_get_int(db, "out_lame", "mark_copyright_val", - &mark_copyright_val); - bmp_cfg_db_get_int(db, "out_lame", "force_v2_val", &force_v2_val); - bmp_cfg_db_get_int(db, "out_lame", "only_v1_val", &only_v1_val); - bmp_cfg_db_get_int(db, "out_lame", "only_v2_val", &only_v2_val); - bmp_cfg_db_get_int(db, "out_lame", "algo_quality_val", - &algo_quality_val); - bmp_cfg_db_get_int(db, "out_lame", "out_samplerate_val", - &out_samplerate_val); - bmp_cfg_db_get_int(db, "out_lame", "bitrate_val", &bitrate_val); - bmp_cfg_db_get_float(db, "out_lame", "compression_val", - &compression_val); - bmp_cfg_db_get_int(db, "out_lame", "enc_toggle_val", &enc_toggle_val); - bmp_cfg_db_get_int(db, "out_lame", "audio_mode_val", &audio_mode_val); - bmp_cfg_db_get_int(db, "out_lame", "auto_ms_val", &auto_ms_val); - bmp_cfg_db_get_int(db, "out_lame", "enforce_iso_val", - &enforce_iso_val); - bmp_cfg_db_get_int(db, "out_lame", "error_protect_val", - &error_protect_val); - bmp_cfg_db_get_int(db, "out_lame", "prepend_track_number", - &b_prepend_track_number); - - bmp_cfg_db_close(db); - - if (!file_path) - file_path = g_strdup(g_get_home_dir()); - -} - - -void outlame_about(void) -{ - static GtkWidget *dialog; - - if (dialog != NULL) - return; - - dialog = xmms_show_message("About Lame-Output-Plugin", - "Lame-Output-Plugin\n\n " - "This program is free software; you can redistribute it and/or modify\n" - "it under the terms of the GNU General Public License as published by\n" - "the Free Software Foundation; either version 2 of the License, or\n" - "(at your option) any later version.\n" - "\n" - "This program is distributed in the hope that it will be useful,\n" - "but WITHOUT ANY WARRANTY; without even the implied warranty of\n" - "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" - "GNU General Public License for more details.\n" - "\n" - "You should have received a copy of the GNU General Public License\n" - "along with this program; if not, write to the Free Software\n" - "Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,\n" - "USA.", "Ok", FALSE, NULL, NULL); - gtk_signal_connect(GTK_OBJECT(dialog), "destroy", - GTK_SIGNAL_FUNC(gtk_widget_destroyed), &dialog); -} - - -static gint outlame_open(AFormat fmt, gint rate, gint nch) -{ - - gchar *filename, *title = NULL, *temp; - gint pos; - int b_use_path_anyway = 0; - gchar *tmpfilename = NULL; - - /* store open paramators */ - input.format = fmt; - input.frequency = rate; - input.channels = nch; - - /* So all the values will be reset to the ones saved */ - /* Easier than to implement a tmp variable for every value */ - outlame_init(); - - written = 0; - afmt = fmt; - - if (xmms_check_realtime_priority()) { - xmms_show_message("Error", - "You cannot use the Lame-Output plugin\n" - "when you're running in realtime mode.", - "Ok", FALSE, NULL, NULL); - return 0; - } - - pos = xmms_remote_get_playlist_pos(ctrlsocket_get_session_id()); - - if (title == NULL || strlen(g_basename(title)) == 0) { - gchar *utf8 = NULL; - g_free(title); - /* No filename, lets try title instead */ - utf8 = xmms_remote_get_playlist_title(ctrlsocket_get_session_id(), pos); - g_strchomp(utf8); //chop trailing ^J --yaz - - title = g_locale_from_utf8(utf8, -1, NULL, NULL, NULL); - g_free(utf8); - while (title != NULL && (temp = strchr(title, '/')) != NULL) - *temp = '-'; - - if (title == NULL || strlen(g_basename(title)) == 0) { - g_free(title); - /* No title either. Just set it to something. */ - title = g_strdup_printf("aud-%d", pos); - } - } - /* That's a stream, save it to the default path anyway ... */ - if (strstr(title, "//") != NULL) - b_use_path_anyway = 1; - - - // get file_path from tuple and regrad as the destination path. - tmpfilename = xmms_remote_get_playlist_file(ctrlsocket_get_session_id(), pos); - tuple = input_get_song_tuple(tmpfilename); - g_free(tmpfilename); - - -#ifdef DEBUG - if(tuple) { - printf("tuple->file_path = %s\n", tuple->file_path); - printf("tuple->track_number = %d\n", tuple->track_number); - } - printf("file_path = %s\n", file_path); - printf("anyway = %d\n", b_use_path_anyway); -#endif - - if (tuple && !b_use_path_anyway) { - if (b_prepend_track_number) { - filename = g_strdup_printf("%s/%.02d %s.mp3", - b_use_source_file_path ? tuple->file_path : file_path, - tuple->track_number ? tuple->track_number : pos+1, title); - } - else { - filename = g_strdup_printf("%s/%s.mp3", - b_use_source_file_path ? tuple->file_path : file_path, title); - } - } - else { // no tuple || b_use_path_anyway - filename = g_strdup_printf("%s/%s.mp3", file_path, g_basename(title)); - g_free(title); - } - -#ifdef DEBUG - printf("filename = %s\n", filename); -#endif - output_file = vfs_fopen(filename, "w"); - g_free(filename); - - if (!output_file) - return 0; - - if ((gfp = lame_init()) == (void *)-1) - return 0; - - srate = rate; - inch = nch; - - /* setup id3 data */ - id3tag_init(gfp); - - if (tuple) { - /* XXX write UTF-8 even though libmp3lame does id3v2.3. --yaz */ -#ifdef DEBUG - g_print("track_name = %s\n", tuple->track_name); -#endif - lameid3.track_name = g_strdup(tuple->track_name); - id3tag_set_title(gfp, lameid3.track_name); - - lameid3.performer = g_strdup(tuple->performer); - id3tag_set_artist(gfp, lameid3.performer); - - lameid3.album_name = g_strdup(tuple->album_name); - id3tag_set_album(gfp, lameid3.album_name); - - lameid3.genre = g_strdup(tuple->genre); - id3tag_set_genre(gfp, lameid3.genre); - - lameid3.year = g_strdup_printf("%d", tuple->year); - id3tag_set_year(gfp, lameid3.year); - - lameid3.track_number = g_strdup_printf("%d", tuple->track_number); - id3tag_set_track(gfp, lameid3.track_number); - -// id3tag_write_v1(gfp); - id3tag_add_v2(gfp); - - bmp_title_input_free(tuple); - } - - -/* input stream description */ - - lame_set_in_samplerate(gfp, rate); - lame_set_num_channels(gfp, nch); - /* Maybe implement this? */ - /* lame_set_scale(lame_global_flags *, float); */ - lame_set_out_samplerate(gfp, out_samplerate_val); - -/* general control parameters */ - - lame_set_bWriteVbrTag(gfp, toggle_xing_val); - lame_set_quality(gfp, algo_quality_val); - if (audio_mode_val != 4) { -#ifdef DEBUG - printf("set mode to %d\n", audio_mode_val); -#endif - lame_set_mode(gfp, audio_mode_val); - } - if(auto_ms_val) - lame_set_mode_automs(gfp, auto_ms_val); // this forces to use joint stereo!! --yaz. - - lame_set_errorf(gfp, lame_debugf); - lame_set_debugf(gfp, lame_debugf); - lame_set_msgf(gfp, lame_debugf); - - if (enc_toggle_val == 0 && vbr_on == 0) - lame_set_brate(gfp, bitrate_val); - else if (vbr_on == 0) - lame_set_compression_ratio(gfp, compression_val); - -/* frame params */ - - lame_set_copyright(gfp, mark_copyright_val); - lame_set_original(gfp, mark_original_val); - lame_set_error_protection(gfp, error_protect_val); - lame_set_strict_ISO(gfp, enforce_iso_val); - - if (vbr_on != 0) { - if (vbr_type == 0) - lame_set_VBR(gfp, 2); - else - lame_set_VBR(gfp, 3); - lame_set_VBR_q(gfp, vbr_quality_val); - lame_set_VBR_mean_bitrate_kbps(gfp, abr_val); - lame_set_VBR_min_bitrate_kbps(gfp, vbr_min_val); - lame_set_VBR_max_bitrate_kbps(gfp, vbr_max_val); - lame_set_VBR_hard_min(gfp, enforce_min_val); - } - - if (lame_init_params(gfp) == -1) - return 0; - - return 1; -} - -static void convert_buffer(gpointer buffer, gint length) -{ - gint i; - - if (afmt == FMT_S8) - { - guint8 *ptr1 = buffer; - gint8 *ptr2 = buffer; - - for (i = 0; i < length; i++) - *(ptr1++) = *(ptr2++) ^ 128; - } - if (afmt == FMT_S16_BE) - { - gint16 *ptr = buffer; - - for (i = 0; i < length >> 1; i++, ptr++) - *ptr = GUINT16_SWAP_LE_BE(*ptr); - } - if (afmt == FMT_S16_NE) - { - gint16 *ptr = buffer; - - for (i = 0; i < length >> 1; i++, ptr++) - *ptr = GINT16_TO_LE(*ptr); - } - if (afmt == FMT_U16_BE) - { - gint16 *ptr1 = buffer; - guint16 *ptr2 = buffer; - - for (i = 0; i < length >> 1; i++, ptr2++) - *(ptr1++) = GINT16_TO_LE(GUINT16_FROM_BE(*ptr2) ^ 32768); - } - if (afmt == FMT_U16_LE) - { - gint16 *ptr1 = buffer; - guint16 *ptr2 = buffer; - - for (i = 0; i < length >> 1; i++, ptr2++) - *(ptr1++) = GINT16_TO_LE(GUINT16_FROM_LE(*ptr2) ^ 32768); - } - if (afmt == FMT_U16_NE) - { - gint16 *ptr1 = buffer; - guint16 *ptr2 = buffer; - - for (i = 0; i < length >> 1; i++, ptr2++) - *(ptr1++) = GINT16_TO_LE((*ptr2) ^ 32768); - } -} - -static void outlame_write(void *ptr, gint length) -{ - AFormat new_format; - int new_frequency, new_channels; - EffectPlugin *ep; - - new_format = input.format; - new_frequency = input.frequency; - new_channels = input.channels; - - ep = get_current_effect_plugin(); - if ( effects_enabled() && ep && ep->query_format ) { - ep->query_format(&new_format,&new_frequency,&new_channels); - } - - if ( effects_enabled() && ep && ep->mod_samples ) { - length = ep->mod_samples(&ptr,length, - input.format, - input.frequency, - input.channels ); - } - - if (afmt == FMT_S8 || afmt == FMT_S16_BE || - afmt == FMT_U16_LE || afmt == FMT_U16_BE || afmt == FMT_U16_NE) - convert_buffer(ptr, length); -#ifdef WORDS_BIGENDIAN - if (afmt == FMT_S16_NE) - convert_buffer(ptr, length); -#endif - - if (inch == 1) { - encout = - lame_encode_buffer(gfp, ptr, ptr, length / 2, encbuffer, - ENCBUFFER_SIZE); - } - else { - encout = - lame_encode_buffer_interleaved(gfp, ptr, length / 4, encbuffer, - ENCBUFFER_SIZE); - } - - vfs_fwrite(encbuffer, 1, encout, output_file); - written += encout; - olen += length; -} - -static void outlame_close(void) -{ - if (output_file) { - - encout = lame_encode_flush_nogap(gfp, encbuffer, ENCBUFFER_SIZE); - vfs_fwrite(encbuffer, 1, encout, output_file); - -// lame_mp3_tags_fid(gfp, output_file); // will erase id3v2 tag?? - - vfs_fclose(output_file); - lame_close(gfp); - - free_lameid3(&lameid3); - - written = 0; - olen = 0; - } - -#ifdef DEBUG - printf("close called\n"); -#endif - output_file = NULL; - -} - -static void outlame_flush(gint time) -{ - // some input plugins (typically aac for libmp4) call flush() with an - // argument like -1000 every end of playing a song. - // it would break lame context. - if (time < 0) { - return; - } - outlame_close(); - outlame_open(input.format, input.frequency, input.channels); -#ifdef DEBUG - printf("flush %d\n", time); -#endif - offset = time; -} - -static void outlame_pause(short p) -{ -} - -static gint outlame_buffer_free(void) -{ - return ENCBUFFER_SIZE - encout; -} - -static gint outlame_buffer_playing(void) -{ -#ifdef DEBUG - printf("lame: buffer_playing = %d\n", encout ? 1 : 0); -#endif - return encout ? 1 : 0; -} - -static gint outlame_get_written_time(void) -{ - gint time; - if (srate && inch) { - time = (gint) ((olen * 1000) / (srate * 2 * inch)); - return time + offset; - } - - return 0; -} - -static gint outlame_get_output_time(void) -{ - return outlame_get_written_time(); -} - -/*****************/ -/* Configuration */ -/*****************/ - -/* Various Singal-Fuctions */ - -static void algo_qual(GtkAdjustment * adjustment, gpointer user_data) -{ - - algo_quality_val = - gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON - (alg_quality_spin)); - -} - -static void samplerate_activate(GtkMenuItem * menuitem, gpointer user_data) -{ - - out_samplerate_val = GPOINTER_TO_INT(user_data); - -} - -static void bitrate_activate(GtkMenuItem * menuitem, gpointer user_data) -{ - - bitrate_val = GPOINTER_TO_INT(user_data); - -} - -static void compression_change(GtkAdjustment * adjustment, - gpointer user_data) -{ - - compression_val = - gtk_spin_button_get_value_as_float(GTK_SPIN_BUTTON - (compression_spin)); - -} - -static void encoding_toggle(GtkToggleButton * togglebutton, - gpointer user_data) -{ - - enc_toggle_val = GPOINTER_TO_INT(user_data); - -} - -static void mode_activate(GtkMenuItem * menuitem, gpointer user_data) -{ - - audio_mode_val = GPOINTER_TO_INT(user_data); - -} - -static void toggle_auto_ms(GtkToggleButton * togglebutton, - gpointer user_data) -{ - - if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(ms_mode_toggle)) == - TRUE) - auto_ms_val = 1; - else - auto_ms_val = 0; - -} - -static void toggle_enforce_iso(GtkToggleButton * togglebutton, - gpointer user_data) -{ - - if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(enforce_iso_toggle)) - == TRUE) - enforce_iso_val = 1; - else - enforce_iso_val = 0; - -} - -static void toggle_error_protect(GtkToggleButton * togglebutton, - gpointer user_data) -{ - - if (gtk_toggle_button_get_active - (GTK_TOGGLE_BUTTON(error_protection_toggle)) == TRUE) - error_protect_val = 1; - else - error_protect_val = 0; - -} - -static void toggle_vbr(GtkToggleButton * togglebutton, gpointer user_data) -{ - if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(vbr_toggle)) == - TRUE) { - gtk_widget_set_sensitive(vbr_options_vbox, TRUE); - gtk_widget_set_sensitive(enc_quality_frame, FALSE); - vbr_on = 1; - - if (vbr_type == 0) { - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON - (vbr_type_radio1), TRUE); - gtk_widget_set_sensitive(abr_frame, FALSE); - gtk_widget_set_sensitive(vbr_frame, TRUE); - } - else if (vbr_type == 1) { - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON - (vbr_type_radio2), TRUE); - gtk_widget_set_sensitive(abr_frame, TRUE); - gtk_widget_set_sensitive(vbr_frame, FALSE); - } - - } - else { - gtk_widget_set_sensitive(vbr_options_vbox, FALSE); - gtk_widget_set_sensitive(enc_quality_frame, TRUE); - vbr_on = 0; - } -} - -static void vbr_abr_toggle(GtkToggleButton * togglebutton, - gpointer user_data) -{ - if (user_data == "VBR") { - gtk_widget_set_sensitive(abr_frame, FALSE); - gtk_widget_set_sensitive(vbr_frame, TRUE); - vbr_type = 0; - } - else if (user_data == "ABR") { - gtk_widget_set_sensitive(abr_frame, TRUE); - gtk_widget_set_sensitive(vbr_frame, FALSE); - vbr_type = 1; - } -} - -static void vbr_min_activate(GtkMenuItem * menuitem, gpointer user_data) -{ - - vbr_min_val = GPOINTER_TO_INT(user_data); - -} - -static void vbr_max_activate(GtkMenuItem * menuitem, gpointer user_data) -{ - - vbr_max_val = GPOINTER_TO_INT(user_data); - -} - -static void toggle_enforce_min(GtkToggleButton * togglebutton, - gpointer user_data) -{ - - if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(enforce_min_toggle)) - == TRUE) - enforce_min_val = 1; - else - enforce_min_val = 0; - -} - -static void vbr_qual(GtkAdjustment * adjustment, gpointer user_data) -{ - - vbr_quality_val = - gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON - (vbr_quality_spin)); - -} - -static void abr_activate(GtkMenuItem * menuitem, gpointer user_data) -{ - - abr_val = GPOINTER_TO_INT(user_data); - -} - -static void toggle_xing(GtkToggleButton * togglebutton, gpointer user_data) -{ - - if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(xing_header_toggle)) == TRUE) - toggle_xing_val = 0; - else - toggle_xing_val = 1; - -} - -static void toggle_original(GtkToggleButton * togglebutton, - gpointer user_data) -{ - - if (gtk_toggle_button_get_active - (GTK_TOGGLE_BUTTON(tags_original_toggle)) == TRUE) - mark_original_val = 1; - else - mark_original_val = 0; - -} - -static void toggle_copyright(GtkToggleButton * togglebutton, - gpointer user_data) -{ - - if (gtk_toggle_button_get_active - (GTK_TOGGLE_BUTTON(tags_copyright_toggle)) == TRUE) - mark_copyright_val = 1; - else - mark_copyright_val = 0; - -} - -static void force_v2_toggle(GtkToggleButton * togglebutton, - gpointer user_data) -{ - - if (gtk_toggle_button_get_active - (GTK_TOGGLE_BUTTON(tags_force_id3v2_toggle)) == TRUE) { - force_v2_val = 1; - if (gtk_toggle_button_get_active - (GTK_TOGGLE_BUTTON(tags_only_v1_toggle)) == TRUE) { - inside = 1; - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON - (tags_only_v1_toggle), FALSE); - only_v1_val = 0; - inside = 0; - } - } - else - force_v2_val = 0; - -} - -static void id3_only_version(GtkToggleButton * togglebutton, - gpointer user_data) -{ - if (user_data == "v1" && inside != 1) { - if (gtk_toggle_button_get_active - (GTK_TOGGLE_BUTTON(tags_only_v1_toggle)) == TRUE); - { - inside = 1; - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON - (tags_only_v2_toggle), FALSE); - only_v1_val = 1; - only_v2_val = 0; - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON - (tags_force_id3v2_toggle), FALSE); - inside = 0; - } - } - else if (user_data == "v2" && inside != 1) { - if (gtk_toggle_button_get_active - (GTK_TOGGLE_BUTTON(tags_only_v2_toggle)) == TRUE); - { - inside = 1; - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON - (tags_only_v1_toggle), FALSE); - only_v1_val = 0; - only_v2_val = 1; - inside = 0; - } - } - -} - -static void use_source_file_path_cb(GtkToggleButton * togglebutton, - gpointer user_data) -{ - if (gtk_toggle_button_get_active - (GTK_TOGGLE_BUTTON(use_source_file_path)) == TRUE) { - b_use_source_file_path = 1; - gtk_widget_set_sensitive(path_dirbrowser, FALSE); - } - else { - b_use_source_file_path = 0; - gtk_widget_set_sensitive(path_dirbrowser, TRUE); - } -} - -static void prepend_track_number_cb(GtkToggleButton * togglebutton, - gpointer user_data) -{ - if (gtk_toggle_button_get_active - (GTK_TOGGLE_BUTTON(prepend_track_number)) == TRUE) { - b_prepend_track_number = 1; - } - else { - b_prepend_track_number = 0; - } -} - - -/* Save Configuration */ - -static void configure_ok_cb(gpointer data) -{ - ConfigDb *db; - - if (file_path) - g_free(file_path); - file_path = g_strdup(gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(path_dirbrowser))); - -#ifdef DEBUG - printf("ok_cb: fle_path = %s\n", file_path); -#endif - - if (vbr_min_val > vbr_max_val) - vbr_max_val = vbr_min_val; - - db = bmp_cfg_db_open(); - - bmp_cfg_db_set_string(db, "out_lame", "file_path", file_path); - bmp_cfg_db_set_int(db, "out_lame", "use_source_file_path", - b_use_source_file_path); - bmp_cfg_db_set_int(db, "out_lame", "vbr_on", vbr_on); - bmp_cfg_db_set_int(db, "out_lame", "vbr_type", vbr_type); - bmp_cfg_db_set_int(db, "out_lame", "vbr_min_val", vbr_min_val); - bmp_cfg_db_set_int(db, "out_lame", "vbr_max_val", vbr_max_val); - bmp_cfg_db_set_int(db, "out_lame", "enforce_min_val", enforce_min_val); - bmp_cfg_db_set_int(db, "out_lame", "vbr_quality_val", vbr_quality_val); - bmp_cfg_db_set_int(db, "out_lame", "abr_val", abr_val); - bmp_cfg_db_set_int(db, "out_lame", "toggle_xing_val", toggle_xing_val); - bmp_cfg_db_set_int(db, "out_lame", "mark_original_val", - mark_original_val); - bmp_cfg_db_set_int(db, "out_lame", "mark_copyright_val", - mark_copyright_val); - bmp_cfg_db_set_int(db, "out_lame", "force_v2_val", force_v2_val); - bmp_cfg_db_set_int(db, "out_lame", "only_v1_val", only_v1_val); - bmp_cfg_db_set_int(db, "out_lame", "only_v2_val", only_v2_val); - bmp_cfg_db_set_int(db, "out_lame", "algo_quality_val", - algo_quality_val); - bmp_cfg_db_set_int(db, "out_lame", "out_samplerate_val", - out_samplerate_val); - bmp_cfg_db_set_int(db, "out_lame", "bitrate_val", bitrate_val); - bmp_cfg_db_set_float(db, "out_lame", "compression_val", - compression_val); - bmp_cfg_db_set_int(db, "out_lame", "enc_toggle_val", enc_toggle_val); - bmp_cfg_db_set_int(db, "out_lame", "audio_mode_val", audio_mode_val); - bmp_cfg_db_set_int(db, "out_lame", "auto_ms_val", auto_ms_val); - bmp_cfg_db_set_int(db, "out_lame", "enforce_iso_val", enforce_iso_val); - bmp_cfg_db_set_int(db, "out_lame", "error_protect_val", - error_protect_val); - bmp_cfg_db_set_int(db, "out_lame", "prepend_track_number", - b_prepend_track_number); - bmp_cfg_db_close(db); - - - gtk_widget_destroy(configure_win); - if (path_dirbrowser) - gtk_widget_destroy(path_dirbrowser); -} - -static void configure_destroy(void) -{ - if (path_dirbrowser) - gtk_widget_destroy(path_dirbrowser); -} - - -/************************/ -/* Configuration Widget */ -/************************/ - - -static void outlame_configure(void) -{ - if (!configure_win) { - configure_win = gtk_window_new(GTK_WINDOW_TOPLEVEL); - - gtk_signal_connect(GTK_OBJECT(configure_win), "destroy", - GTK_SIGNAL_FUNC(configure_destroy), NULL); - gtk_signal_connect(GTK_OBJECT(configure_win), "destroy", - GTK_SIGNAL_FUNC(gtk_widget_destroyed), - &configure_win); - gtk_window_set_title(GTK_WINDOW(configure_win), - "Out-Lame Configuration"); - gtk_window_set_position(GTK_WINDOW(configure_win), - GTK_WIN_POS_MOUSE); - gtk_window_set_policy(GTK_WINDOW(configure_win), FALSE, TRUE, - FALSE); - gtk_container_set_border_width(GTK_CONTAINER(configure_win), 5); - - vbox = gtk_vbox_new(FALSE, 5); - gtk_container_add(GTK_CONTAINER(configure_win), vbox); - - notebook = gtk_notebook_new(); - gtk_box_pack_start(GTK_BOX(vbox), notebook, TRUE, TRUE, 0); - - - /* Quality */ - - quality_vbox = gtk_vbox_new(FALSE, 5); - gtk_container_set_border_width(GTK_CONTAINER(quality_vbox), 5); - - quality_tips = gtk_tooltips_new(); - - quality_hbox1 = gtk_hbox_new(FALSE, 5); - gtk_box_pack_start(GTK_BOX(quality_vbox), quality_hbox1, FALSE, - FALSE, 0); - - /* Algorithm Quality */ - - alg_quality_frame = gtk_frame_new("Algorithm Quality:"); - gtk_container_set_border_width(GTK_CONTAINER(alg_quality_frame), - 5); - gtk_box_pack_start(GTK_BOX(quality_hbox1), alg_quality_frame, - FALSE, FALSE, 0); - - alg_quality_hbox = gtk_hbox_new(FALSE, 5); - gtk_container_set_border_width(GTK_CONTAINER(alg_quality_hbox), - 10); - gtk_container_add(GTK_CONTAINER(alg_quality_frame), - alg_quality_hbox); - - alg_quality_adj = gtk_adjustment_new(5, 0, 9, 1, 1, 1); - alg_quality_spin = - gtk_spin_button_new(GTK_ADJUSTMENT(alg_quality_adj), 8, 0); - gtk_widget_set_usize(alg_quality_spin, 20, 28); - gtk_box_pack_start(GTK_BOX(alg_quality_hbox), alg_quality_spin, - TRUE, TRUE, 0); - gtk_signal_connect(GTK_OBJECT(alg_quality_adj), "value-changed", - GTK_SIGNAL_FUNC(algo_qual), NULL); - - gtk_tooltips_set_tip(GTK_TOOLTIPS(quality_tips), alg_quality_spin, - "best/slowest:0;\nworst/fastest:9;\nrecommended:2;\ndefault:5;", - ""); - - gtk_spin_button_set_value(GTK_SPIN_BUTTON(alg_quality_spin), - algo_quality_val); - - /* Output Samplerate */ - - samplerate_frame = gtk_frame_new("Output Samplerate:"); - gtk_container_set_border_width(GTK_CONTAINER(samplerate_frame), 5); - gtk_box_pack_start(GTK_BOX(quality_hbox1), samplerate_frame, FALSE, - FALSE, 0); - - samplerate_hbox = gtk_hbox_new(TRUE, 5); - gtk_container_set_border_width(GTK_CONTAINER(samplerate_hbox), 10); - gtk_container_add(GTK_CONTAINER(samplerate_frame), - samplerate_hbox); - samplerate_option_menu = gtk_option_menu_new(); - samplerate_menu = gtk_menu_new(); - samplerate_menu_item = gtk_menu_item_new_with_label("Auto"); - gtk_signal_connect(GTK_OBJECT(samplerate_menu_item), "activate", - GTK_SIGNAL_FUNC(samplerate_activate), - GINT_TO_POINTER(0)); - gtk_menu_append(GTK_MENU(samplerate_menu), samplerate_menu_item); - samplerate_menu_item = gtk_menu_item_new_with_label("8"); - gtk_signal_connect(GTK_OBJECT(samplerate_menu_item), "activate", - GTK_SIGNAL_FUNC(samplerate_activate), - GINT_TO_POINTER(8000)); - gtk_menu_append(GTK_MENU(samplerate_menu), samplerate_menu_item); - samplerate_menu_item = gtk_menu_item_new_with_label("11.025"); - gtk_signal_connect(GTK_OBJECT(samplerate_menu_item), "activate", - GTK_SIGNAL_FUNC(samplerate_activate), - GINT_TO_POINTER(11025)); - gtk_menu_append(GTK_MENU(samplerate_menu), samplerate_menu_item); - samplerate_menu_item = gtk_menu_item_new_with_label("12"); - gtk_signal_connect(GTK_OBJECT(samplerate_menu_item), "activate", - GTK_SIGNAL_FUNC(samplerate_activate), - GINT_TO_POINTER(12000)); - gtk_menu_append(GTK_MENU(samplerate_menu), samplerate_menu_item); - samplerate_menu_item = gtk_menu_item_new_with_label("16"); - gtk_signal_connect(GTK_OBJECT(samplerate_menu_item), "activate", - GTK_SIGNAL_FUNC(samplerate_activate), - GINT_TO_POINTER(16000)); - gtk_menu_append(GTK_MENU(samplerate_menu), samplerate_menu_item); - samplerate_menu_item = gtk_menu_item_new_with_label("22.05"); - gtk_signal_connect(GTK_OBJECT(samplerate_menu_item), "activate", - GTK_SIGNAL_FUNC(samplerate_activate), - GINT_TO_POINTER(22050)); - gtk_menu_append(GTK_MENU(samplerate_menu), samplerate_menu_item); - samplerate_menu_item = gtk_menu_item_new_with_label("24"); - gtk_signal_connect(GTK_OBJECT(samplerate_menu_item), "activate", - GTK_SIGNAL_FUNC(samplerate_activate), - GINT_TO_POINTER(24000)); - gtk_menu_append(GTK_MENU(samplerate_menu), samplerate_menu_item); - samplerate_menu_item = gtk_menu_item_new_with_label("32"); - gtk_signal_connect(GTK_OBJECT(samplerate_menu_item), "activate", - GTK_SIGNAL_FUNC(samplerate_activate), - GINT_TO_POINTER(32000)); - gtk_menu_append(GTK_MENU(samplerate_menu), samplerate_menu_item); - samplerate_menu_item = gtk_menu_item_new_with_label("44.1"); - gtk_signal_connect(GTK_OBJECT(samplerate_menu_item), "activate", - GTK_SIGNAL_FUNC(samplerate_activate), - GINT_TO_POINTER(44100)); - gtk_menu_append(GTK_MENU(samplerate_menu), samplerate_menu_item); - samplerate_menu_item = gtk_menu_item_new_with_label("48"); - gtk_signal_connect(GTK_OBJECT(samplerate_menu_item), "activate", - GTK_SIGNAL_FUNC(samplerate_activate), - GINT_TO_POINTER(48000)); - gtk_menu_append(GTK_MENU(samplerate_menu), samplerate_menu_item); - gtk_option_menu_set_menu(GTK_OPTION_MENU(samplerate_option_menu), - samplerate_menu); - gtk_widget_set_usize(samplerate_option_menu, 70, 28); - gtk_box_pack_start(GTK_BOX(samplerate_hbox), - samplerate_option_menu, FALSE, FALSE, 0); - samplerate_label = gtk_label_new("(kHz)"); - gtk_misc_set_alignment(GTK_MISC(samplerate_label), 0, 0.5); - gtk_box_pack_start(GTK_BOX(samplerate_hbox), samplerate_label, - FALSE, FALSE, 0); - - switch (out_samplerate_val) { - - case 0: - gtk_option_menu_set_history(GTK_OPTION_MENU - (samplerate_option_menu), 0); - break; - case 8000: - gtk_option_menu_set_history(GTK_OPTION_MENU - (samplerate_option_menu), 1); - break; - case 11025: - gtk_option_menu_set_history(GTK_OPTION_MENU - (samplerate_option_menu), 2); - break; - case 12000: - gtk_option_menu_set_history(GTK_OPTION_MENU - (samplerate_option_menu), 3); - break; - case 16000: - gtk_option_menu_set_history(GTK_OPTION_MENU - (samplerate_option_menu), 4); - break; - case 22050: - gtk_option_menu_set_history(GTK_OPTION_MENU - (samplerate_option_menu), 5); - break; - case 24000: - gtk_option_menu_set_history(GTK_OPTION_MENU - (samplerate_option_menu), 6); - break; - case 32000: - gtk_option_menu_set_history(GTK_OPTION_MENU - (samplerate_option_menu), 7); - break; - case 44100: - gtk_option_menu_set_history(GTK_OPTION_MENU - (samplerate_option_menu), 8); - break; - case 48000: - gtk_option_menu_set_history(GTK_OPTION_MENU - (samplerate_option_menu), 9); - break; - - } - - /* Encoder Quality */ - - enc_quality_frame = gtk_frame_new("Bitrate / Compression ratio:"); - gtk_container_set_border_width(GTK_CONTAINER(enc_quality_frame), - 5); - gtk_box_pack_start(GTK_BOX(quality_vbox), enc_quality_frame, FALSE, - FALSE, 0); - - - /* yaz new code */ - // vbox sorrounding hbox1 and hbox2 - enc_quality_vbox = gtk_vbox_new(FALSE, 5); - gtk_container_set_border_width(GTK_CONTAINER(enc_quality_vbox), 10); - - // pack vbox to frame - gtk_container_add(GTK_CONTAINER(enc_quality_frame), enc_quality_vbox); - - // hbox1 for bitrate - hbox1 = gtk_hbox_new(FALSE, 5); - gtk_container_add(GTK_CONTAINER(enc_quality_vbox), hbox1); - - // radio 1 - enc_radio1 = gtk_radio_button_new(NULL); - if (enc_toggle_val == 0) - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(enc_radio1), TRUE); - gtk_box_pack_start(GTK_BOX(hbox1), enc_radio1, FALSE, FALSE, 0); - - // label 1 - enc_quality_label1 = gtk_label_new("Bitrate (kbps):"); - gtk_box_pack_start(GTK_BOX(hbox1), enc_quality_label1, FALSE, FALSE, 0); - - // bitrate menu - bitrate_option_menu = gtk_option_menu_new(); - bitrate_menu = gtk_menu_new(); - bitrate_menu_item = gtk_menu_item_new_with_label("8"); - gtk_signal_connect(GTK_OBJECT(bitrate_menu_item), "activate", - GTK_SIGNAL_FUNC(bitrate_activate), - GINT_TO_POINTER(8)); - gtk_menu_append(GTK_MENU(bitrate_menu), bitrate_menu_item); - bitrate_menu_item = gtk_menu_item_new_with_label("16"); - gtk_signal_connect(GTK_OBJECT(bitrate_menu_item), "activate", - GTK_SIGNAL_FUNC(bitrate_activate), - GINT_TO_POINTER(16)); - gtk_menu_append(GTK_MENU(bitrate_menu), bitrate_menu_item); - bitrate_menu_item = gtk_menu_item_new_with_label("24"); - gtk_signal_connect(GTK_OBJECT(bitrate_menu_item), "activate", - GTK_SIGNAL_FUNC(bitrate_activate), - GINT_TO_POINTER(24)); - gtk_menu_append(GTK_MENU(bitrate_menu), bitrate_menu_item); - bitrate_menu_item = gtk_menu_item_new_with_label("32"); - gtk_signal_connect(GTK_OBJECT(bitrate_menu_item), "activate", - GTK_SIGNAL_FUNC(bitrate_activate), - GINT_TO_POINTER(32)); - gtk_menu_append(GTK_MENU(bitrate_menu), bitrate_menu_item); - bitrate_menu_item = gtk_menu_item_new_with_label("40"); - gtk_signal_connect(GTK_OBJECT(bitrate_menu_item), "activate", - GTK_SIGNAL_FUNC(bitrate_activate), - GINT_TO_POINTER(40)); - gtk_menu_append(GTK_MENU(bitrate_menu), bitrate_menu_item); - bitrate_menu_item = gtk_menu_item_new_with_label("48"); - gtk_signal_connect(GTK_OBJECT(bitrate_menu_item), "activate", - GTK_SIGNAL_FUNC(bitrate_activate), - GINT_TO_POINTER(48)); - gtk_menu_append(GTK_MENU(bitrate_menu), bitrate_menu_item); - bitrate_menu_item = gtk_menu_item_new_with_label("56"); - gtk_signal_connect(GTK_OBJECT(bitrate_menu_item), "activate", - GTK_SIGNAL_FUNC(bitrate_activate), - GINT_TO_POINTER(56)); - gtk_menu_append(GTK_MENU(bitrate_menu), bitrate_menu_item); - bitrate_menu_item = gtk_menu_item_new_with_label("64"); - gtk_signal_connect(GTK_OBJECT(bitrate_menu_item), "activate", - GTK_SIGNAL_FUNC(bitrate_activate), - GINT_TO_POINTER(64)); - gtk_menu_append(GTK_MENU(bitrate_menu), bitrate_menu_item); - bitrate_menu_item = gtk_menu_item_new_with_label("80"); - gtk_signal_connect(GTK_OBJECT(bitrate_menu_item), "activate", - GTK_SIGNAL_FUNC(bitrate_activate), - GINT_TO_POINTER(80)); - gtk_menu_append(GTK_MENU(bitrate_menu), bitrate_menu_item); - bitrate_menu_item = gtk_menu_item_new_with_label("96"); - gtk_signal_connect(GTK_OBJECT(bitrate_menu_item), "activate", - GTK_SIGNAL_FUNC(bitrate_activate), - GINT_TO_POINTER(96)); - gtk_menu_append(GTK_MENU(bitrate_menu), bitrate_menu_item); - bitrate_menu_item = gtk_menu_item_new_with_label("112"); - gtk_signal_connect(GTK_OBJECT(bitrate_menu_item), "activate", - GTK_SIGNAL_FUNC(bitrate_activate), - GINT_TO_POINTER(112)); - gtk_menu_append(GTK_MENU(bitrate_menu), bitrate_menu_item); - bitrate_menu_item = gtk_menu_item_new_with_label("128"); - gtk_signal_connect(GTK_OBJECT(bitrate_menu_item), "activate", - GTK_SIGNAL_FUNC(bitrate_activate), - GINT_TO_POINTER(128)); - gtk_menu_append(GTK_MENU(bitrate_menu), bitrate_menu_item); - bitrate_menu_item = gtk_menu_item_new_with_label("160"); - gtk_signal_connect(GTK_OBJECT(bitrate_menu_item), "activate", - GTK_SIGNAL_FUNC(bitrate_activate), - GINT_TO_POINTER(160)); - gtk_menu_append(GTK_MENU(bitrate_menu), bitrate_menu_item); - bitrate_menu_item = gtk_menu_item_new_with_label("192"); - gtk_signal_connect(GTK_OBJECT(bitrate_menu_item), "activate", - GTK_SIGNAL_FUNC(bitrate_activate), - GINT_TO_POINTER(192)); - gtk_menu_append(GTK_MENU(bitrate_menu), bitrate_menu_item); - bitrate_menu_item = gtk_menu_item_new_with_label("224"); - gtk_signal_connect(GTK_OBJECT(bitrate_menu_item), "activate", - GTK_SIGNAL_FUNC(bitrate_activate), - GINT_TO_POINTER(224)); - gtk_menu_append(GTK_MENU(bitrate_menu), bitrate_menu_item); - bitrate_menu_item = gtk_menu_item_new_with_label("256"); - gtk_signal_connect(GTK_OBJECT(bitrate_menu_item), "activate", - GTK_SIGNAL_FUNC(bitrate_activate), - GINT_TO_POINTER(256)); - gtk_menu_append(GTK_MENU(bitrate_menu), bitrate_menu_item); - bitrate_menu_item = gtk_menu_item_new_with_label("320"); - gtk_signal_connect(GTK_OBJECT(bitrate_menu_item), "activate", - GTK_SIGNAL_FUNC(bitrate_activate), - GINT_TO_POINTER(320)); - gtk_menu_append(GTK_MENU(bitrate_menu), bitrate_menu_item); - gtk_option_menu_set_menu(GTK_OPTION_MENU(bitrate_option_menu), - bitrate_menu); - gtk_widget_set_usize(bitrate_option_menu, 80, 28); - gtk_box_pack_end(GTK_BOX(hbox1), bitrate_option_menu, FALSE, FALSE, 0); - - - switch (bitrate_val) { - - case 8: - gtk_option_menu_set_history(GTK_OPTION_MENU - (bitrate_option_menu), 0); - break; - case 16: - gtk_option_menu_set_history(GTK_OPTION_MENU - (bitrate_option_menu), 1); - break; - case 24: - gtk_option_menu_set_history(GTK_OPTION_MENU - (bitrate_option_menu), 2); - break; - case 32: - gtk_option_menu_set_history(GTK_OPTION_MENU - (bitrate_option_menu), 3); - break; - case 40: - gtk_option_menu_set_history(GTK_OPTION_MENU - (bitrate_option_menu), 4); - break; - case 48: - gtk_option_menu_set_history(GTK_OPTION_MENU - (bitrate_option_menu), 5); - break; - case 56: - gtk_option_menu_set_history(GTK_OPTION_MENU - (bitrate_option_menu), 6); - break; - case 64: - gtk_option_menu_set_history(GTK_OPTION_MENU - (bitrate_option_menu), 7); - break; - case 80: - gtk_option_menu_set_history(GTK_OPTION_MENU - (bitrate_option_menu), 8); - break; - case 96: - gtk_option_menu_set_history(GTK_OPTION_MENU - (bitrate_option_menu), 9); - break; - case 112: - gtk_option_menu_set_history(GTK_OPTION_MENU - (bitrate_option_menu), 10); - break; - case 128: - gtk_option_menu_set_history(GTK_OPTION_MENU - (bitrate_option_menu), 11); - break; - case 160: - gtk_option_menu_set_history(GTK_OPTION_MENU - (bitrate_option_menu), 12); - break; - case 192: - gtk_option_menu_set_history(GTK_OPTION_MENU - (bitrate_option_menu), 13); - break; - case 224: - gtk_option_menu_set_history(GTK_OPTION_MENU - (bitrate_option_menu), 14); - break; - case 256: - gtk_option_menu_set_history(GTK_OPTION_MENU - (bitrate_option_menu), 15); - break; - case 320: - gtk_option_menu_set_history(GTK_OPTION_MENU - (bitrate_option_menu), 16); - break; - - } - - // hbox2 for compression ratio - hbox2 = gtk_hbox_new(FALSE, 5); - gtk_container_add(GTK_CONTAINER(enc_quality_vbox), hbox2); - - // radio 2 - enc_radio2 = gtk_radio_button_new_from_widget(GTK_RADIO_BUTTON(enc_radio1)); - if (enc_toggle_val == 1) - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(enc_radio2), - TRUE); - // pack radio 2 - gtk_box_pack_start(GTK_BOX(hbox2), enc_radio2, FALSE, FALSE, 0); - - // label - enc_quality_label2 = gtk_label_new("Compression ratio:"); - gtk_box_pack_start(GTK_BOX(hbox2), enc_quality_label2, FALSE, FALSE, 0); - - // comp-ratio spin - compression_adj = gtk_adjustment_new(11, 0, 100, 1, 1, 1); - compression_spin = - gtk_spin_button_new(GTK_ADJUSTMENT(compression_adj), 8, 0); - gtk_widget_set_usize(compression_spin, 40, 28); - gtk_container_add(GTK_CONTAINER(hbox2), compression_spin); - gtk_box_pack_end(GTK_BOX(hbox2), compression_spin, FALSE, FALSE, 0); - - gtk_signal_connect(GTK_OBJECT(compression_adj), "value-changed", - GTK_SIGNAL_FUNC(compression_change), NULL); - - gtk_spin_button_set_value(GTK_SPIN_BUTTON(compression_spin), - compression_val); - - // radio button signale connect - gtk_signal_connect(GTK_OBJECT(enc_radio1), "toggled", - GTK_SIGNAL_FUNC(encoding_toggle), - GINT_TO_POINTER(0)); - gtk_signal_connect(GTK_OBJECT(enc_radio2), "toggled", - GTK_SIGNAL_FUNC(encoding_toggle), - GINT_TO_POINTER(1)); - - /* end of yaz new code */ - - - /* Audio Mode */ - - mode_frame = gtk_frame_new("Audio Mode:"); - gtk_container_set_border_width(GTK_CONTAINER(mode_frame), 5); - gtk_box_pack_start(GTK_BOX(quality_vbox), mode_frame, FALSE, FALSE, - 0); - - mode_hbox = gtk_hbox_new(TRUE, 10); - gtk_container_set_border_width(GTK_CONTAINER(mode_hbox), 10); - gtk_container_add(GTK_CONTAINER(mode_frame), mode_hbox); - mode_option_menu = gtk_option_menu_new(); - mode_menu = gtk_menu_new(); - mode_menu_item = gtk_menu_item_new_with_label("Auto"); - gtk_signal_connect(GTK_OBJECT(mode_menu_item), "activate", - GTK_SIGNAL_FUNC(mode_activate), - GINT_TO_POINTER(4)); - gtk_menu_append(GTK_MENU(mode_menu), mode_menu_item); - mode_menu_item = gtk_menu_item_new_with_label("Joint-Stereo"); - gtk_signal_connect(GTK_OBJECT(mode_menu_item), "activate", - GTK_SIGNAL_FUNC(mode_activate), - GINT_TO_POINTER(1)); - gtk_menu_append(GTK_MENU(mode_menu), mode_menu_item); - mode_menu_item = gtk_menu_item_new_with_label("Stereo"); - gtk_signal_connect(GTK_OBJECT(mode_menu_item), "activate", - GTK_SIGNAL_FUNC(mode_activate), - GINT_TO_POINTER(0)); - gtk_menu_append(GTK_MENU(mode_menu), mode_menu_item); - mode_menu_item = gtk_menu_item_new_with_label("Mono"); - gtk_signal_connect(GTK_OBJECT(mode_menu_item), "activate", - GTK_SIGNAL_FUNC(mode_activate), - GINT_TO_POINTER(3)); - gtk_menu_append(GTK_MENU(mode_menu), mode_menu_item); - gtk_option_menu_set_menu(GTK_OPTION_MENU(mode_option_menu), - mode_menu); - gtk_widget_set_usize(mode_option_menu, 50, 28); - gtk_box_pack_start(GTK_BOX(mode_hbox), mode_option_menu, TRUE, - TRUE, 2); - - switch (audio_mode_val) { - - case 4: - gtk_option_menu_set_history(GTK_OPTION_MENU(mode_option_menu), - 0); - break; - case 1: - gtk_option_menu_set_history(GTK_OPTION_MENU(mode_option_menu), - 1); - break; - case 0: - gtk_option_menu_set_history(GTK_OPTION_MENU(mode_option_menu), - 2); - break; - case 3: - gtk_option_menu_set_history(GTK_OPTION_MENU(mode_option_menu), - 3); - break; - } - - ms_mode_toggle = gtk_check_button_new_with_label("auto-M/S mode"); - gtk_box_pack_start(GTK_BOX(mode_hbox), ms_mode_toggle, TRUE, TRUE, - 5); - gtk_signal_connect(GTK_OBJECT(ms_mode_toggle), "toggled", - GTK_SIGNAL_FUNC(toggle_auto_ms), NULL); - - if (auto_ms_val == 1) - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(ms_mode_toggle), - TRUE); - - /* Misc */ - - misc_frame = gtk_frame_new("Misc:"); - gtk_container_set_border_width(GTK_CONTAINER(misc_frame), 5); - gtk_box_pack_start(GTK_BOX(quality_vbox), misc_frame, FALSE, FALSE, - 0); - - misc_vbox = gtk_vbox_new(TRUE, 5); - gtk_container_set_border_width(GTK_CONTAINER(misc_vbox), 5); - gtk_container_add(GTK_CONTAINER(misc_frame), misc_vbox); - - enforce_iso_toggle = - gtk_check_button_new_with_label - ("Enforce strict ISO complience"); - gtk_box_pack_start(GTK_BOX(misc_vbox), enforce_iso_toggle, TRUE, - TRUE, 2); - gtk_signal_connect(GTK_OBJECT(enforce_iso_toggle), "toggled", - GTK_SIGNAL_FUNC(toggle_enforce_iso), NULL); - - if (enforce_iso_val == 1) - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON - (enforce_iso_toggle), TRUE); - - error_protection_toggle = - gtk_check_button_new_with_label("Error protection"); - gtk_box_pack_start(GTK_BOX(misc_vbox), error_protection_toggle, - TRUE, TRUE, 2); - gtk_signal_connect(GTK_OBJECT(error_protection_toggle), "toggled", - GTK_SIGNAL_FUNC(toggle_error_protect), NULL); - - if (error_protect_val == 1) - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON - (error_protection_toggle), TRUE); - - gtk_tooltips_set_tip(GTK_TOOLTIPS(quality_tips), - error_protection_toggle, - "Adds 16 bit checksum to every frame", ""); - - - /* Add the Notebook */ - gtk_notebook_append_page(GTK_NOTEBOOK(notebook), quality_vbox, - gtk_label_new("Quality")); - - -/* VBR/ABR */ - - vbr_vbox = gtk_vbox_new(FALSE, 5); - gtk_container_set_border_width(GTK_CONTAINER(vbr_vbox), 5); - - vbr_tips = gtk_tooltips_new(); - - /* Toggle VBR */ - - vbr_toggle = gtk_check_button_new_with_label("Enable VBR/ABR"); - gtk_widget_set_usize(vbr_toggle, 60, 30); - gtk_box_pack_start(GTK_BOX(vbr_vbox), vbr_toggle, FALSE, FALSE, 2); - gtk_signal_connect(GTK_OBJECT(vbr_toggle), "toggled", - GTK_SIGNAL_FUNC(toggle_vbr), NULL); - - vbr_options_vbox = gtk_vbox_new(FALSE, 0); - gtk_container_add(GTK_CONTAINER(vbr_vbox), vbr_options_vbox); - gtk_widget_set_sensitive(vbr_options_vbox, FALSE); - - /* Choose VBR/ABR */ - - vbr_type_frame = gtk_frame_new("Type:"); - gtk_container_set_border_width(GTK_CONTAINER(vbr_type_frame), 5); - gtk_box_pack_start(GTK_BOX(vbr_options_vbox), vbr_type_frame, - FALSE, FALSE, 2); - - vbr_type_hbox = gtk_hbox_new(FALSE, 5); - gtk_container_set_border_width(GTK_CONTAINER(vbr_type_hbox), 5); - gtk_container_add(GTK_CONTAINER(vbr_type_frame), vbr_type_hbox); - - vbr_type_radio1 = gtk_radio_button_new_with_label(NULL, "VBR"); - gtk_tooltips_set_tip(GTK_TOOLTIPS(vbr_tips), vbr_type_radio1, - "Variable bitrate", ""); - gtk_box_pack_start(GTK_BOX(vbr_type_hbox), vbr_type_radio1, TRUE, - TRUE, 2); - if (vbr_type == 0) - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON - (vbr_type_radio1), TRUE); - - vbr_type_radio2 = - gtk_radio_button_new_with_label_from_widget(GTK_RADIO_BUTTON - (vbr_type_radio1), - "ABR"); - gtk_tooltips_set_tip(GTK_TOOLTIPS(vbr_tips), vbr_type_radio2, - "Average bitrate", ""); - gtk_box_pack_start(GTK_BOX(vbr_type_hbox), vbr_type_radio2, TRUE, - TRUE, 2); - if (vbr_type == 1) - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON - (vbr_type_radio2), TRUE); - - gtk_signal_connect(GTK_OBJECT(vbr_type_radio1), "toggled", - GTK_SIGNAL_FUNC(vbr_abr_toggle), "VBR"); - gtk_signal_connect(GTK_OBJECT(vbr_type_radio2), "toggled", - GTK_SIGNAL_FUNC(vbr_abr_toggle), "ABR"); - - /* VBR Options */ - - vbr_frame = gtk_frame_new("VBR Options:"); - gtk_container_set_border_width(GTK_CONTAINER(vbr_frame), 5); - gtk_box_pack_start(GTK_BOX(vbr_options_vbox), vbr_frame, FALSE, - FALSE, 2); - - vbr_options_vbox2 = gtk_vbox_new(FALSE, 5); - gtk_container_set_border_width(GTK_CONTAINER(vbr_options_vbox2), - 5); - gtk_container_add(GTK_CONTAINER(vbr_frame), vbr_options_vbox2); - - vbr_options_hbox1 = gtk_hbox_new(FALSE, 5); - gtk_container_set_border_width(GTK_CONTAINER(vbr_options_hbox1), - 5); - gtk_container_add(GTK_CONTAINER(vbr_options_vbox2), - vbr_options_hbox1); - - vbr_min_label = gtk_label_new("Minimum bitrate (kbps):"); - gtk_misc_set_alignment(GTK_MISC(vbr_min_label), 0, 0.5); - gtk_box_pack_start(GTK_BOX(vbr_options_hbox1), vbr_min_label, TRUE, - TRUE, 0); - - vbr_min_option_menu = gtk_option_menu_new(); - vbr_min_menu = gtk_menu_new(); - vbr_min_menu_item = gtk_menu_item_new_with_label("8"); - gtk_signal_connect(GTK_OBJECT(vbr_min_menu_item), "activate", - GTK_SIGNAL_FUNC(vbr_min_activate), - GINT_TO_POINTER(8)); - gtk_menu_append(GTK_MENU(vbr_min_menu), vbr_min_menu_item); - vbr_min_menu_item = gtk_menu_item_new_with_label("16"); - gtk_signal_connect(GTK_OBJECT(vbr_min_menu_item), "activate", - GTK_SIGNAL_FUNC(vbr_min_activate), - GINT_TO_POINTER(16)); - gtk_menu_append(GTK_MENU(vbr_min_menu), vbr_min_menu_item); - vbr_min_menu_item = gtk_menu_item_new_with_label("24"); - gtk_signal_connect(GTK_OBJECT(vbr_min_menu_item), "activate", - GTK_SIGNAL_FUNC(vbr_min_activate), - GINT_TO_POINTER(24)); - gtk_menu_append(GTK_MENU(vbr_min_menu), vbr_min_menu_item); - vbr_min_menu_item = gtk_menu_item_new_with_label("32"); - gtk_signal_connect(GTK_OBJECT(vbr_min_menu_item), "activate", - GTK_SIGNAL_FUNC(vbr_min_activate), - GINT_TO_POINTER(32)); - gtk_menu_append(GTK_MENU(vbr_min_menu), vbr_min_menu_item); - vbr_min_menu_item = gtk_menu_item_new_with_label("40"); - gtk_signal_connect(GTK_OBJECT(vbr_min_menu_item), "activate", - GTK_SIGNAL_FUNC(vbr_min_activate), - GINT_TO_POINTER(40)); - gtk_menu_append(GTK_MENU(vbr_min_menu), vbr_min_menu_item); - vbr_min_menu_item = gtk_menu_item_new_with_label("48"); - gtk_signal_connect(GTK_OBJECT(vbr_min_menu_item), "activate", - GTK_SIGNAL_FUNC(vbr_min_activate), - GINT_TO_POINTER(48)); - gtk_menu_append(GTK_MENU(vbr_min_menu), vbr_min_menu_item); - vbr_min_menu_item = gtk_menu_item_new_with_label("56"); - gtk_signal_connect(GTK_OBJECT(vbr_min_menu_item), "activate", - GTK_SIGNAL_FUNC(vbr_min_activate), - GINT_TO_POINTER(56)); - gtk_menu_append(GTK_MENU(vbr_min_menu), vbr_min_menu_item); - vbr_min_menu_item = gtk_menu_item_new_with_label("64"); - gtk_signal_connect(GTK_OBJECT(vbr_min_menu_item), "activate", - GTK_SIGNAL_FUNC(vbr_min_activate), - GINT_TO_POINTER(64)); - gtk_menu_append(GTK_MENU(vbr_min_menu), vbr_min_menu_item); - vbr_min_menu_item = gtk_menu_item_new_with_label("80"); - gtk_signal_connect(GTK_OBJECT(vbr_min_menu_item), "activate", - GTK_SIGNAL_FUNC(vbr_min_activate), - GINT_TO_POINTER(80)); - gtk_menu_append(GTK_MENU(vbr_min_menu), vbr_min_menu_item); - vbr_min_menu_item = gtk_menu_item_new_with_label("96"); - gtk_signal_connect(GTK_OBJECT(vbr_min_menu_item), "activate", - GTK_SIGNAL_FUNC(vbr_min_activate), - GINT_TO_POINTER(96)); - gtk_menu_append(GTK_MENU(vbr_min_menu), vbr_min_menu_item); - vbr_min_menu_item = gtk_menu_item_new_with_label("112"); - gtk_signal_connect(GTK_OBJECT(vbr_min_menu_item), "activate", - GTK_SIGNAL_FUNC(vbr_min_activate), - GINT_TO_POINTER(112)); - gtk_menu_append(GTK_MENU(vbr_min_menu), vbr_min_menu_item); - vbr_min_menu_item = gtk_menu_item_new_with_label("128"); - gtk_signal_connect(GTK_OBJECT(vbr_min_menu_item), "activate", - GTK_SIGNAL_FUNC(vbr_min_activate), - GINT_TO_POINTER(128)); - gtk_menu_append(GTK_MENU(vbr_min_menu), vbr_min_menu_item); - vbr_min_menu_item = gtk_menu_item_new_with_label("160"); - gtk_signal_connect(GTK_OBJECT(vbr_min_menu_item), "activate", - GTK_SIGNAL_FUNC(vbr_min_activate), - GINT_TO_POINTER(160)); - gtk_menu_append(GTK_MENU(vbr_min_menu), vbr_min_menu_item); - vbr_min_menu_item = gtk_menu_item_new_with_label("192"); - gtk_signal_connect(GTK_OBJECT(vbr_min_menu_item), "activate", - GTK_SIGNAL_FUNC(vbr_min_activate), - GINT_TO_POINTER(192)); - gtk_menu_append(GTK_MENU(vbr_min_menu), vbr_min_menu_item); - vbr_min_menu_item = gtk_menu_item_new_with_label("224"); - gtk_signal_connect(GTK_OBJECT(vbr_min_menu_item), "activate", - GTK_SIGNAL_FUNC(vbr_min_activate), - GINT_TO_POINTER(224)); - gtk_menu_append(GTK_MENU(vbr_min_menu), vbr_min_menu_item); - vbr_min_menu_item = gtk_menu_item_new_with_label("256"); - gtk_signal_connect(GTK_OBJECT(vbr_min_menu_item), "activate", - GTK_SIGNAL_FUNC(vbr_min_activate), - GINT_TO_POINTER(256)); - gtk_menu_append(GTK_MENU(vbr_min_menu), vbr_min_menu_item); - vbr_min_menu_item = gtk_menu_item_new_with_label("320"); - gtk_signal_connect(GTK_OBJECT(vbr_min_menu_item), "activate", - GTK_SIGNAL_FUNC(vbr_min_activate), - GINT_TO_POINTER(320)); - gtk_menu_append(GTK_MENU(vbr_min_menu), vbr_min_menu_item); - gtk_option_menu_set_menu(GTK_OPTION_MENU(vbr_min_option_menu), - vbr_min_menu); - gtk_widget_set_usize(vbr_min_option_menu, 40, 25); - gtk_box_pack_start(GTK_BOX(vbr_options_hbox1), vbr_min_option_menu, - TRUE, TRUE, 2); - - switch (vbr_min_val) { - - case 8: - gtk_option_menu_set_history(GTK_OPTION_MENU - (vbr_min_option_menu), 0); - break; - case 16: - gtk_option_menu_set_history(GTK_OPTION_MENU - (vbr_min_option_menu), 1); - break; - case 24: - gtk_option_menu_set_history(GTK_OPTION_MENU - (vbr_min_option_menu), 2); - break; - case 32: - gtk_option_menu_set_history(GTK_OPTION_MENU - (vbr_min_option_menu), 3); - break; - case 40: - gtk_option_menu_set_history(GTK_OPTION_MENU - (vbr_min_option_menu), 4); - break; - case 48: - gtk_option_menu_set_history(GTK_OPTION_MENU - (vbr_min_option_menu), 5); - break; - case 56: - gtk_option_menu_set_history(GTK_OPTION_MENU - (vbr_min_option_menu), 6); - break; - case 64: - gtk_option_menu_set_history(GTK_OPTION_MENU - (vbr_min_option_menu), 7); - break; - case 80: - gtk_option_menu_set_history(GTK_OPTION_MENU - (vbr_min_option_menu), 8); - break; - case 96: - gtk_option_menu_set_history(GTK_OPTION_MENU - (vbr_min_option_menu), 9); - break; - case 112: - gtk_option_menu_set_history(GTK_OPTION_MENU - (vbr_min_option_menu), 10); - break; - case 128: - gtk_option_menu_set_history(GTK_OPTION_MENU - (vbr_min_option_menu), 11); - break; - case 160: - gtk_option_menu_set_history(GTK_OPTION_MENU - (vbr_min_option_menu), 12); - break; - case 192: - gtk_option_menu_set_history(GTK_OPTION_MENU - (vbr_min_option_menu), 13); - break; - case 224: - gtk_option_menu_set_history(GTK_OPTION_MENU - (vbr_min_option_menu), 14); - break; - case 256: - gtk_option_menu_set_history(GTK_OPTION_MENU - (vbr_min_option_menu), 15); - break; - case 320: - gtk_option_menu_set_history(GTK_OPTION_MENU - (vbr_min_option_menu), 16); - break; - - } - - vbr_options_hbox2 = gtk_hbox_new(FALSE, 5); - gtk_container_set_border_width(GTK_CONTAINER(vbr_options_hbox2), - 5); - gtk_container_add(GTK_CONTAINER(vbr_options_vbox2), - vbr_options_hbox2); - - vbr_max_label = gtk_label_new("Maximum bitrate (kbps):"); - gtk_misc_set_alignment(GTK_MISC(vbr_max_label), 0, 0.5); - gtk_box_pack_start(GTK_BOX(vbr_options_hbox2), vbr_max_label, TRUE, - TRUE, 0); - - vbr_max_option_menu = gtk_option_menu_new(); - vbr_max_menu = gtk_menu_new(); - vbr_max_menu_item = gtk_menu_item_new_with_label("8"); - gtk_signal_connect(GTK_OBJECT(vbr_max_menu_item), "activate", - GTK_SIGNAL_FUNC(vbr_max_activate), - GINT_TO_POINTER(8)); - gtk_menu_append(GTK_MENU(vbr_max_menu), vbr_max_menu_item); - vbr_max_menu_item = gtk_menu_item_new_with_label("16"); - gtk_signal_connect(GTK_OBJECT(vbr_max_menu_item), "activate", - GTK_SIGNAL_FUNC(vbr_max_activate), - GINT_TO_POINTER(16)); - gtk_menu_append(GTK_MENU(vbr_max_menu), vbr_max_menu_item); - vbr_max_menu_item = gtk_menu_item_new_with_label("24"); - gtk_signal_connect(GTK_OBJECT(vbr_max_menu_item), "activate", - GTK_SIGNAL_FUNC(vbr_max_activate), - GINT_TO_POINTER(24)); - gtk_menu_append(GTK_MENU(vbr_max_menu), vbr_max_menu_item); - vbr_max_menu_item = gtk_menu_item_new_with_label("32"); - gtk_signal_connect(GTK_OBJECT(vbr_max_menu_item), "activate", - GTK_SIGNAL_FUNC(vbr_max_activate), - GINT_TO_POINTER(32)); - gtk_menu_append(GTK_MENU(vbr_max_menu), vbr_max_menu_item); - vbr_max_menu_item = gtk_menu_item_new_with_label("40"); - gtk_signal_connect(GTK_OBJECT(vbr_max_menu_item), "activate", - GTK_SIGNAL_FUNC(vbr_max_activate), - GINT_TO_POINTER(40)); - gtk_menu_append(GTK_MENU(vbr_max_menu), vbr_max_menu_item); - vbr_max_menu_item = gtk_menu_item_new_with_label("48"); - gtk_signal_connect(GTK_OBJECT(vbr_max_menu_item), "activate", - GTK_SIGNAL_FUNC(vbr_max_activate), - GINT_TO_POINTER(48)); - gtk_menu_append(GTK_MENU(vbr_max_menu), vbr_max_menu_item); - vbr_max_menu_item = gtk_menu_item_new_with_label("56"); - gtk_signal_connect(GTK_OBJECT(vbr_max_menu_item), "activate", - GTK_SIGNAL_FUNC(vbr_max_activate), - GINT_TO_POINTER(56)); - gtk_menu_append(GTK_MENU(vbr_max_menu), vbr_max_menu_item); - vbr_max_menu_item = gtk_menu_item_new_with_label("64"); - gtk_signal_connect(GTK_OBJECT(vbr_max_menu_item), "activate", - GTK_SIGNAL_FUNC(vbr_max_activate), - GINT_TO_POINTER(64)); - gtk_menu_append(GTK_MENU(vbr_max_menu), vbr_max_menu_item); - vbr_max_menu_item = gtk_menu_item_new_with_label("80"); - gtk_signal_connect(GTK_OBJECT(vbr_max_menu_item), "activate", - GTK_SIGNAL_FUNC(vbr_max_activate), - GINT_TO_POINTER(80)); - gtk_menu_append(GTK_MENU(vbr_max_menu), vbr_max_menu_item); - vbr_max_menu_item = gtk_menu_item_new_with_label("96"); - gtk_signal_connect(GTK_OBJECT(vbr_max_menu_item), "activate", - GTK_SIGNAL_FUNC(vbr_max_activate), - GINT_TO_POINTER(96)); - gtk_menu_append(GTK_MENU(vbr_max_menu), vbr_max_menu_item); - vbr_max_menu_item = gtk_menu_item_new_with_label("112"); - gtk_signal_connect(GTK_OBJECT(vbr_max_menu_item), "activate", - GTK_SIGNAL_FUNC(vbr_max_activate), - GINT_TO_POINTER(112)); - gtk_menu_append(GTK_MENU(vbr_max_menu), vbr_max_menu_item); - vbr_max_menu_item = gtk_menu_item_new_with_label("128"); - gtk_signal_connect(GTK_OBJECT(vbr_max_menu_item), "activate", - GTK_SIGNAL_FUNC(vbr_max_activate), - GINT_TO_POINTER(128)); - gtk_menu_append(GTK_MENU(vbr_max_menu), vbr_max_menu_item); - vbr_max_menu_item = gtk_menu_item_new_with_label("160"); - gtk_signal_connect(GTK_OBJECT(vbr_max_menu_item), "activate", - GTK_SIGNAL_FUNC(vbr_max_activate), - GINT_TO_POINTER(160)); - gtk_menu_append(GTK_MENU(vbr_max_menu), vbr_max_menu_item); - vbr_max_menu_item = gtk_menu_item_new_with_label("192"); - gtk_signal_connect(GTK_OBJECT(vbr_max_menu_item), "activate", - GTK_SIGNAL_FUNC(vbr_max_activate), - GINT_TO_POINTER(192)); - gtk_menu_append(GTK_MENU(vbr_max_menu), vbr_max_menu_item); - vbr_max_menu_item = gtk_menu_item_new_with_label("224"); - gtk_signal_connect(GTK_OBJECT(vbr_max_menu_item), "activate", - GTK_SIGNAL_FUNC(vbr_max_activate), - GINT_TO_POINTER(224)); - gtk_menu_append(GTK_MENU(vbr_max_menu), vbr_max_menu_item); - vbr_max_menu_item = gtk_menu_item_new_with_label("256"); - gtk_signal_connect(GTK_OBJECT(vbr_max_menu_item), "activate", - GTK_SIGNAL_FUNC(vbr_max_activate), - GINT_TO_POINTER(256)); - gtk_menu_append(GTK_MENU(vbr_max_menu), vbr_max_menu_item); - vbr_max_menu_item = gtk_menu_item_new_with_label("320"); - gtk_signal_connect(GTK_OBJECT(vbr_max_menu_item), "activate", - GTK_SIGNAL_FUNC(vbr_max_activate), - GINT_TO_POINTER(320)); - gtk_menu_append(GTK_MENU(vbr_max_menu), vbr_max_menu_item); - gtk_option_menu_set_menu(GTK_OPTION_MENU(vbr_max_option_menu), - vbr_max_menu); - gtk_widget_set_usize(vbr_max_option_menu, 40, 25); - gtk_box_pack_start(GTK_BOX(vbr_options_hbox2), vbr_max_option_menu, - TRUE, TRUE, 2); - - switch (vbr_max_val) { - - case 8: - gtk_option_menu_set_history(GTK_OPTION_MENU - (vbr_max_option_menu), 0); - break; - case 16: - gtk_option_menu_set_history(GTK_OPTION_MENU - (vbr_max_option_menu), 1); - break; - case 24: - gtk_option_menu_set_history(GTK_OPTION_MENU - (vbr_max_option_menu), 2); - break; - case 32: - gtk_option_menu_set_history(GTK_OPTION_MENU - (vbr_max_option_menu), 3); - break; - case 40: - gtk_option_menu_set_history(GTK_OPTION_MENU - (vbr_max_option_menu), 4); - break; - case 48: - gtk_option_menu_set_history(GTK_OPTION_MENU - (vbr_max_option_menu), 5); - break; - case 56: - gtk_option_menu_set_history(GTK_OPTION_MENU - (vbr_max_option_menu), 6); - break; - case 64: - gtk_option_menu_set_history(GTK_OPTION_MENU - (vbr_max_option_menu), 7); - break; - case 80: - gtk_option_menu_set_history(GTK_OPTION_MENU - (vbr_max_option_menu), 8); - break; - case 96: - gtk_option_menu_set_history(GTK_OPTION_MENU - (vbr_max_option_menu), 9); - break; - case 112: - gtk_option_menu_set_history(GTK_OPTION_MENU - (vbr_max_option_menu), 10); - break; - case 128: - gtk_option_menu_set_history(GTK_OPTION_MENU - (vbr_max_option_menu), 11); - break; - case 160: - gtk_option_menu_set_history(GTK_OPTION_MENU - (vbr_max_option_menu), 12); - break; - case 192: - gtk_option_menu_set_history(GTK_OPTION_MENU - (vbr_max_option_menu), 13); - break; - case 224: - gtk_option_menu_set_history(GTK_OPTION_MENU - (vbr_max_option_menu), 14); - break; - case 256: - gtk_option_menu_set_history(GTK_OPTION_MENU - (vbr_max_option_menu), 15); - break; - case 320: - gtk_option_menu_set_history(GTK_OPTION_MENU - (vbr_max_option_menu), 16); - break; - - } - - enforce_min_toggle = - gtk_check_button_new_with_label - ("Strictly enforce minimum bitrate"); - gtk_tooltips_set_tip(GTK_TOOLTIPS(vbr_tips), enforce_min_toggle, - "For use with players that do not support low bitrate mp3 (Apex AD600-A DVD/mp3 player)", - ""); - gtk_box_pack_start(GTK_BOX(vbr_options_vbox2), enforce_min_toggle, - FALSE, FALSE, 2); - gtk_signal_connect(GTK_OBJECT(enforce_min_toggle), "toggled", - GTK_SIGNAL_FUNC(toggle_enforce_min), NULL); - - if (enforce_min_val == 1) - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON - (enforce_min_toggle), TRUE); - - /* ABR Options */ - - abr_frame = gtk_frame_new("ABR Options:"); - gtk_container_set_border_width(GTK_CONTAINER(abr_frame), 5); - gtk_box_pack_start(GTK_BOX(vbr_options_vbox), abr_frame, FALSE, - FALSE, 2); - gtk_widget_set_sensitive(abr_frame, FALSE); - - abr_hbox = gtk_hbox_new(FALSE, 5); - gtk_container_set_border_width(GTK_CONTAINER(abr_hbox), 5); - gtk_container_add(GTK_CONTAINER(abr_frame), abr_hbox); - - abr_label = gtk_label_new("Average bitrate (kbps):"); - gtk_misc_set_alignment(GTK_MISC(abr_label), 0, 0.5); - gtk_box_pack_start(GTK_BOX(abr_hbox), abr_label, TRUE, TRUE, 0); - - abr_option_menu = gtk_option_menu_new(); - abr_menu = gtk_menu_new(); - abr_menu_item = gtk_menu_item_new_with_label("8"); - gtk_signal_connect(GTK_OBJECT(abr_menu_item), "activate", - GTK_SIGNAL_FUNC(abr_activate), - GINT_TO_POINTER(8)); - gtk_menu_append(GTK_MENU(abr_menu), abr_menu_item); - abr_menu_item = gtk_menu_item_new_with_label("16"); - gtk_signal_connect(GTK_OBJECT(abr_menu_item), "activate", - GTK_SIGNAL_FUNC(abr_activate), - GINT_TO_POINTER(16)); - gtk_menu_append(GTK_MENU(abr_menu), abr_menu_item); - abr_menu_item = gtk_menu_item_new_with_label("24"); - gtk_signal_connect(GTK_OBJECT(abr_menu_item), "activate", - GTK_SIGNAL_FUNC(abr_activate), - GINT_TO_POINTER(24)); - gtk_menu_append(GTK_MENU(abr_menu), abr_menu_item); - abr_menu_item = gtk_menu_item_new_with_label("32"); - gtk_signal_connect(GTK_OBJECT(abr_menu_item), "activate", - GTK_SIGNAL_FUNC(abr_activate), - GINT_TO_POINTER(32)); - gtk_menu_append(GTK_MENU(abr_menu), abr_menu_item); - abr_menu_item = gtk_menu_item_new_with_label("40"); - gtk_signal_connect(GTK_OBJECT(abr_menu_item), "activate", - GTK_SIGNAL_FUNC(abr_activate), - GINT_TO_POINTER(40)); - gtk_menu_append(GTK_MENU(abr_menu), abr_menu_item); - abr_menu_item = gtk_menu_item_new_with_label("48"); - gtk_signal_connect(GTK_OBJECT(abr_menu_item), "activate", - GTK_SIGNAL_FUNC(abr_activate), - GINT_TO_POINTER(48)); - gtk_menu_append(GTK_MENU(abr_menu), abr_menu_item); - abr_menu_item = gtk_menu_item_new_with_label("56"); - gtk_signal_connect(GTK_OBJECT(abr_menu_item), "activate", - GTK_SIGNAL_FUNC(abr_activate), - GINT_TO_POINTER(56)); - gtk_menu_append(GTK_MENU(abr_menu), abr_menu_item); - abr_menu_item = gtk_menu_item_new_with_label("64"); - gtk_signal_connect(GTK_OBJECT(abr_menu_item), "activate", - GTK_SIGNAL_FUNC(abr_activate), - GINT_TO_POINTER(64)); - gtk_menu_append(GTK_MENU(abr_menu), abr_menu_item); - abr_menu_item = gtk_menu_item_new_with_label("80"); - gtk_signal_connect(GTK_OBJECT(abr_menu_item), "activate", - GTK_SIGNAL_FUNC(abr_activate), - GINT_TO_POINTER(80)); - gtk_menu_append(GTK_MENU(abr_menu), abr_menu_item); - abr_menu_item = gtk_menu_item_new_with_label("96"); - gtk_signal_connect(GTK_OBJECT(abr_menu_item), "activate", - GTK_SIGNAL_FUNC(abr_activate), - GINT_TO_POINTER(96)); - gtk_menu_append(GTK_MENU(abr_menu), abr_menu_item); - abr_menu_item = gtk_menu_item_new_with_label("112"); - gtk_signal_connect(GTK_OBJECT(abr_menu_item), "activate", - GTK_SIGNAL_FUNC(abr_activate), - GINT_TO_POINTER(112)); - gtk_menu_append(GTK_MENU(abr_menu), abr_menu_item); - abr_menu_item = gtk_menu_item_new_with_label("128"); - gtk_signal_connect(GTK_OBJECT(abr_menu_item), "activate", - GTK_SIGNAL_FUNC(abr_activate), - GINT_TO_POINTER(128)); - gtk_menu_append(GTK_MENU(abr_menu), abr_menu_item); - abr_menu_item = gtk_menu_item_new_with_label("160"); - gtk_signal_connect(GTK_OBJECT(abr_menu_item), "activate", - GTK_SIGNAL_FUNC(abr_activate), - GINT_TO_POINTER(160)); - gtk_menu_append(GTK_MENU(abr_menu), abr_menu_item); - abr_menu_item = gtk_menu_item_new_with_label("192"); - gtk_signal_connect(GTK_OBJECT(abr_menu_item), "activate", - GTK_SIGNAL_FUNC(abr_activate), - GINT_TO_POINTER(192)); - gtk_menu_append(GTK_MENU(abr_menu), abr_menu_item); - abr_menu_item = gtk_menu_item_new_with_label("224"); - gtk_signal_connect(GTK_OBJECT(abr_menu_item), "activate", - GTK_SIGNAL_FUNC(abr_activate), - GINT_TO_POINTER(224)); - gtk_menu_append(GTK_MENU(abr_menu), abr_menu_item); - abr_menu_item = gtk_menu_item_new_with_label("256"); - gtk_signal_connect(GTK_OBJECT(abr_menu_item), "activate", - GTK_SIGNAL_FUNC(abr_activate), - GINT_TO_POINTER(256)); - gtk_menu_append(GTK_MENU(abr_menu), abr_menu_item); - abr_menu_item = gtk_menu_item_new_with_label("320"); - gtk_signal_connect(GTK_OBJECT(abr_menu_item), "activate", - GTK_SIGNAL_FUNC(abr_activate), - GINT_TO_POINTER(320)); - gtk_menu_append(GTK_MENU(abr_menu), abr_menu_item); - gtk_option_menu_set_menu(GTK_OPTION_MENU(abr_option_menu), - abr_menu); - gtk_widget_set_usize(abr_option_menu, 40, 25); - gtk_box_pack_start(GTK_BOX(abr_hbox), abr_option_menu, TRUE, TRUE, - 2); - - switch (abr_val) { - - case 8: - gtk_option_menu_set_history(GTK_OPTION_MENU(abr_option_menu), - 0); - break; - case 16: - gtk_option_menu_set_history(GTK_OPTION_MENU(abr_option_menu), - 1); - break; - case 24: - gtk_option_menu_set_history(GTK_OPTION_MENU(abr_option_menu), - 2); - break; - case 32: - gtk_option_menu_set_history(GTK_OPTION_MENU(abr_option_menu), - 3); - break; - case 40: - gtk_option_menu_set_history(GTK_OPTION_MENU(abr_option_menu), - 4); - break; - case 48: - gtk_option_menu_set_history(GTK_OPTION_MENU(abr_option_menu), - 5); - break; - case 56: - gtk_option_menu_set_history(GTK_OPTION_MENU(abr_option_menu), - 6); - break; - case 64: - gtk_option_menu_set_history(GTK_OPTION_MENU(abr_option_menu), - 7); - break; - case 80: - gtk_option_menu_set_history(GTK_OPTION_MENU(abr_option_menu), - 8); - break; - case 96: - gtk_option_menu_set_history(GTK_OPTION_MENU(abr_option_menu), - 9); - break; - case 112: - gtk_option_menu_set_history(GTK_OPTION_MENU(abr_option_menu), - 10); - break; - case 128: - gtk_option_menu_set_history(GTK_OPTION_MENU(abr_option_menu), - 11); - break; - case 160: - gtk_option_menu_set_history(GTK_OPTION_MENU(abr_option_menu), - 12); - break; - case 192: - gtk_option_menu_set_history(GTK_OPTION_MENU(abr_option_menu), - 13); - break; - case 224: - gtk_option_menu_set_history(GTK_OPTION_MENU(abr_option_menu), - 14); - break; - case 256: - gtk_option_menu_set_history(GTK_OPTION_MENU(abr_option_menu), - 15); - break; - case 320: - gtk_option_menu_set_history(GTK_OPTION_MENU(abr_option_menu), - 16); - break; - - } - - /* Quality Level */ - - vbr_options_hbox3 = gtk_hbox_new(FALSE, 5); - gtk_container_set_border_width(GTK_CONTAINER(vbr_options_hbox3), - 5); - gtk_container_add(GTK_CONTAINER(vbr_options_vbox), - vbr_options_hbox3); - - vbr_quality_label = gtk_label_new("VBR quality level:"); - gtk_misc_set_alignment(GTK_MISC(vbr_quality_label), 0, 0.5); - gtk_box_pack_start(GTK_BOX(vbr_options_hbox3), vbr_quality_label, - TRUE, TRUE, 0); - - vbr_quality_adj = gtk_adjustment_new(4, 0, 9, 1, 1, 1); - vbr_quality_spin = - gtk_spin_button_new(GTK_ADJUSTMENT(vbr_quality_adj), 8, 0); - gtk_widget_set_usize(vbr_quality_spin, 20, -1); - gtk_box_pack_start(GTK_BOX(vbr_options_hbox3), vbr_quality_spin, - TRUE, TRUE, 0); - gtk_signal_connect(GTK_OBJECT(vbr_quality_adj), "value-changed", - GTK_SIGNAL_FUNC(vbr_qual), NULL); - - gtk_tooltips_set_tip(GTK_TOOLTIPS(vbr_tips), vbr_quality_spin, - "highest:0;\nlowest:9;\ndefault:4;", ""); - - gtk_spin_button_set_value(GTK_SPIN_BUTTON(vbr_quality_spin), - vbr_quality_val); - - /* Xing Header */ - - xing_header_toggle = - gtk_check_button_new_with_label("Don't write Xing VBR header"); - gtk_box_pack_start(GTK_BOX(vbr_options_vbox), xing_header_toggle, - FALSE, FALSE, 2); - gtk_signal_connect(GTK_OBJECT(xing_header_toggle), "toggled", - GTK_SIGNAL_FUNC(toggle_xing), NULL); - - if (toggle_xing_val == 0) - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON - (xing_header_toggle), TRUE); - - - - /* Add the Notebook */ - - gtk_notebook_append_page(GTK_NOTEBOOK(notebook), vbr_vbox, - gtk_label_new("VBR/ABR")); - - -/* Tags */ - - tags_vbox = gtk_vbox_new(FALSE, 5); - gtk_container_set_border_width(GTK_CONTAINER(tags_vbox), 5); - - tags_tips = gtk_tooltips_new(); - - /* Frame Params */ - - tags_frames_frame = gtk_frame_new("Frame params:"); - gtk_container_set_border_width(GTK_CONTAINER(tags_frames_frame), - 5); - gtk_box_pack_start(GTK_BOX(tags_vbox), tags_frames_frame, FALSE, - FALSE, 2); - - tags_frames_hbox = gtk_hbox_new(FALSE, 5); - gtk_container_set_border_width(GTK_CONTAINER(tags_frames_hbox), 5); - gtk_container_add(GTK_CONTAINER(tags_frames_frame), - tags_frames_hbox); - - tags_copyright_toggle = - gtk_check_button_new_with_label("Mark as copyright"); - gtk_box_pack_start(GTK_BOX(tags_frames_hbox), - tags_copyright_toggle, FALSE, FALSE, 2); - gtk_signal_connect(GTK_OBJECT(tags_copyright_toggle), "toggled", - GTK_SIGNAL_FUNC(toggle_copyright), NULL); - - if (mark_copyright_val == 1) - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON - (tags_copyright_toggle), TRUE); - - tags_original_toggle = - gtk_check_button_new_with_label("Mark as original"); - gtk_box_pack_start(GTK_BOX(tags_frames_hbox), tags_original_toggle, - FALSE, FALSE, 2); - gtk_signal_connect(GTK_OBJECT(tags_original_toggle), "toggled", - GTK_SIGNAL_FUNC(toggle_original), NULL); - - if (mark_original_val == 1) - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON - (tags_original_toggle), TRUE); - - /* ID3 Params */ - - tags_id3_frame = gtk_frame_new("ID3 params:"); - gtk_container_set_border_width(GTK_CONTAINER(tags_id3_frame), 5); - gtk_box_pack_start(GTK_BOX(tags_vbox), tags_id3_frame, FALSE, - FALSE, 2); - - tags_id3_vbox = gtk_vbox_new(FALSE, 5); - gtk_container_set_border_width(GTK_CONTAINER(tags_id3_vbox), 5); - gtk_container_add(GTK_CONTAINER(tags_id3_frame), tags_id3_vbox); - - tags_force_id3v2_toggle = - gtk_check_button_new_with_label - ("Force addition of version 2 tag"); - gtk_box_pack_start(GTK_BOX(tags_id3_vbox), tags_force_id3v2_toggle, - FALSE, FALSE, 2); - gtk_signal_connect(GTK_OBJECT(tags_force_id3v2_toggle), "toggled", - GTK_SIGNAL_FUNC(force_v2_toggle), NULL); - - tags_id3_hbox = gtk_hbox_new(FALSE, 5); - gtk_container_add(GTK_CONTAINER(tags_id3_vbox), tags_id3_hbox); - - tags_only_v1_toggle = - gtk_check_button_new_with_label("Only add v1 tag"); - gtk_box_pack_start(GTK_BOX(tags_id3_hbox), tags_only_v1_toggle, - FALSE, FALSE, 2); - gtk_signal_connect(GTK_OBJECT(tags_only_v1_toggle), "toggled", - GTK_SIGNAL_FUNC(id3_only_version), "v1"); - - tags_only_v2_toggle = - gtk_check_button_new_with_label("Only add v2 tag"); - gtk_box_pack_start(GTK_BOX(tags_id3_hbox), tags_only_v2_toggle, - FALSE, FALSE, 2); - gtk_signal_connect(GTK_OBJECT(tags_only_v2_toggle), "toggled", - GTK_SIGNAL_FUNC(id3_only_version), "v2"); - - if (force_v2_val == 1) - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON - (tags_force_id3v2_toggle), TRUE); - - if (only_v1_val == 1) - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON - (tags_only_v1_toggle), TRUE); - - if (only_v2_val == 1) - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON - (tags_only_v2_toggle), TRUE); - - /* Add the Notebook */ - - gtk_notebook_append_page(GTK_NOTEBOOK(notebook), tags_vbox, - gtk_label_new("Tags")); - - -/* Path Config */ - - path_hbox = gtk_hbox_new(FALSE, 5); - gtk_container_set_border_width(GTK_CONTAINER(path_hbox), 10); - gtk_box_pack_start(GTK_BOX(vbox), path_hbox, FALSE, FALSE, 0); - - path_label = gtk_label_new("Path:"); - gtk_box_pack_start(GTK_BOX(path_hbox), path_label, FALSE, FALSE, - 0); - gtk_widget_show(path_label); - - path_dirbrowser = - gtk_file_chooser_button_new("Pick a folder", GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER); - gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(path_dirbrowser), file_path); - gtk_box_pack_start(GTK_BOX(path_hbox), path_dirbrowser, FALSE, FALSE, 0); - - use_source_file_path = - gtk_check_button_new_with_label("Use source file dir"); - gtk_box_pack_start(GTK_BOX(GTK_BOX(path_hbox)), - use_source_file_path, TRUE, TRUE, 5); - gtk_signal_connect(GTK_OBJECT(use_source_file_path), "toggled", - GTK_SIGNAL_FUNC(use_source_file_path_cb), NULL); - - if (b_use_source_file_path == 1) - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON - (use_source_file_path), TRUE); - - prepend_track_number = - gtk_check_button_new_with_label("Prepend track number/playlist position to filename"); - gtk_box_pack_start(GTK_BOX(GTK_BOX(path_hbox)), - prepend_track_number, TRUE, TRUE, 5); - gtk_signal_connect(GTK_OBJECT(prepend_track_number), "toggled", - GTK_SIGNAL_FUNC(prepend_track_number_cb), NULL); - - if (b_prepend_track_number == 1) - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON - (prepend_track_number), TRUE); - - -/* The Rest */ - - /* Seperator */ - - configure_separator = gtk_hseparator_new(); - gtk_box_pack_start(GTK_BOX(vbox), configure_separator, FALSE, - FALSE, 0); - gtk_widget_show(configure_separator); - - /* Buttons */ - - configure_bbox = gtk_hbutton_box_new(); - gtk_button_box_set_layout(GTK_BUTTON_BOX(configure_bbox), - GTK_BUTTONBOX_END); - gtk_button_box_set_spacing(GTK_BUTTON_BOX(configure_bbox), 5); - gtk_box_pack_start(GTK_BOX(vbox), configure_bbox, FALSE, FALSE, 0); - - configure_ok = gtk_button_new_with_label("Ok"); - gtk_signal_connect(GTK_OBJECT(configure_ok), "clicked", - GTK_SIGNAL_FUNC(configure_ok_cb), NULL); - GTK_WIDGET_SET_FLAGS(configure_ok, GTK_CAN_DEFAULT); - gtk_box_pack_start(GTK_BOX(configure_bbox), configure_ok, TRUE, - TRUE, 0); - gtk_widget_show(configure_ok); - gtk_widget_grab_default(configure_ok); - - configure_cancel = gtk_button_new_with_label("Cancel"); - gtk_signal_connect_object(GTK_OBJECT(configure_cancel), "clicked", - GTK_SIGNAL_FUNC(gtk_widget_destroy), - GTK_OBJECT(configure_win)); - GTK_WIDGET_SET_FLAGS(configure_cancel, GTK_CAN_DEFAULT); - gtk_box_pack_start(GTK_BOX(configure_bbox), configure_cancel, TRUE, - TRUE, 0); - - /* Set States */ - - if (vbr_on == 1) - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(vbr_toggle), - TRUE); - else - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(vbr_toggle), - FALSE); - - /* Show it! */ - - gtk_widget_show_all(configure_win); - - } -}