984
|
1 /* FileWriter-Plugin
|
|
2 * (C) copyright 2007 merging of Disk Writer and Out-Lame by Michael Färber
|
|
3 *
|
|
4 * Original Out-Lame-Plugin:
|
|
5 * (C) copyright 2002 Lars Siebold <khandha5@gmx.net>
|
|
6 * (C) copyright 2006-2007 porting to audacious by Yoshiki Yazawa <yaz@cc.rim.or.jp>
|
|
7 *
|
|
8 * This program is free software; you can redistribute it and/or modify
|
|
9 * it under the terms of the GNU General Public License as published by
|
|
10 * the Free Software Foundation; either version 2 of the License, or
|
|
11 * (at your option) any later version.
|
|
12 *
|
|
13 * This program is distributed in the hope that it will be useful,
|
|
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
16 * GNU General Public License for more details.
|
|
17 *
|
|
18 * You should have received a copy of the GNU General Public License
|
|
19 * along with this program; if not, write to the Free Software
|
|
20 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
|
21 */
|
|
22
|
|
23 #include "plugins.h"
|
|
24
|
|
25 #include <lame/lame.h>
|
|
26 #define ENCBUFFER_SIZE 35000
|
|
27
|
|
28 static void mp3_init(void);
|
|
29 static void mp3_configure(void);
|
|
30 static gint mp3_open(void);
|
|
31 static void mp3_write(void *ptr, gint length);
|
|
32 static void mp3_close(void);
|
|
33 static gint mp3_free(void);
|
|
34 static gint mp3_playing(void);
|
|
35 static gint mp3_get_written_time(void);
|
|
36
|
|
37 FileWriter mp3_plugin =
|
|
38 {
|
|
39 mp3_init,
|
|
40 mp3_configure,
|
|
41 mp3_open,
|
|
42 mp3_write,
|
|
43 mp3_close,
|
|
44 mp3_free,
|
|
45 mp3_playing,
|
|
46 mp3_get_written_time
|
|
47 };
|
|
48
|
|
49 static GtkWidget *configure_win = NULL;
|
|
50 static GtkWidget *configure_bbox, *configure_ok, *configure_cancel;
|
|
51 static GtkWidget *alg_quality_spin;
|
|
52 static GtkWidget *alg_quality_hbox;
|
|
53 static GtkObject *alg_quality_adj;
|
|
54 static GtkWidget *vbox, *notebook;
|
|
55 static GtkWidget *quality_vbox, *quality_hbox1, *alg_quality_frame;
|
|
56 static GtkWidget *enc_quality_frame, *enc_quality_label1, *enc_quality_label2;
|
|
57 static GtkWidget *enc_radio1, *enc_radio2, *bitrate_option_menu, *bitrate_menu,
|
|
58 *bitrate_menu_item;
|
|
59 static GtkWidget *compression_spin;
|
|
60 static GtkObject *compression_adj;
|
|
61 static GtkWidget *mode_hbox, *mode_option_menu, *mode_menu, *mode_frame,
|
|
62 *mode_menu_item, *ms_mode_toggle;
|
|
63 static GtkWidget *samplerate_hbox, *samplerate_option_menu, *samplerate_menu,
|
|
64 *samplerate_label, *samplerate_frame, *samplerate_menu_item;
|
|
65 static GtkWidget *misc_frame, *misc_vbox, *enforce_iso_toggle,
|
|
66 *error_protection_toggle;
|
|
67 static GtkTooltips *quality_tips, *vbr_tips, *tags_tips;
|
|
68 static GtkWidget *vbr_vbox, *vbr_toggle, *vbr_options_vbox, *vbr_type_frame,
|
|
69 *vbr_type_hbox, *vbr_type_radio1, *vbr_type_radio2;
|
|
70 static GtkWidget *abr_frame, *abr_option_menu, *abr_menu, *abr_menu_item,
|
|
71 *abr_hbox, *abr_label;
|
|
72 static GtkWidget *vbr_frame, *vbr_options_vbox2;
|
|
73 static GtkWidget *vbr_options_hbox1, *vbr_min_option_menu, *vbr_min_menu,
|
|
74 *vbr_min_menu_item, *vbr_min_label;
|
|
75 static GtkWidget *vbr_options_hbox2, *vbr_max_option_menu, *vbr_max_menu,
|
|
76 *vbr_max_menu_item, *vbr_max_label, *enforce_min_toggle;
|
|
77 static GtkWidget *vbr_options_hbox3, *vbr_quality_spin, *vbr_quality_label;
|
|
78 static GtkObject *vbr_quality_adj;
|
|
79 static GtkWidget *xing_header_toggle;
|
|
80 static GtkWidget *tags_vbox, *tags_frames_frame, *tags_frames_hbox,
|
|
81 *tags_copyright_toggle, *tags_original_toggle;
|
|
82 static GtkWidget *tags_id3_frame, *tags_id3_vbox, *tags_id3_hbox,
|
|
83 *tags_force_id3v2_toggle, *tags_only_v1_toggle, *tags_only_v2_toggle;
|
|
84
|
|
85 static GtkWidget *enc_quality_vbox, *hbox1, *hbox2;
|
|
86
|
|
87 static guint64 olen = 0;
|
|
88 static int inside;
|
|
89
|
|
90 static gint vbr_on = 0;
|
|
91 static gint vbr_type = 0;
|
|
92 static gint vbr_min_val = 32;
|
|
93 static gint vbr_max_val = 320;
|
|
94 static gint enforce_min_val = 0;
|
|
95 static gint vbr_quality_val = 4;
|
|
96 static gint abr_val = 128;
|
|
97 static gint toggle_xing_val = 1;
|
|
98 static gint mark_original_val = 1;
|
|
99 static gint mark_copyright_val = 0;
|
|
100 static gint force_v2_val = 0;
|
|
101 static gint only_v1_val = 0;
|
|
102 static gint only_v2_val = 0;
|
|
103 static gint algo_quality_val = 5;
|
|
104 static gint out_samplerate_val = 0;
|
|
105 static gint bitrate_val = 128;
|
|
106 static gfloat compression_val = 11;
|
|
107 static gint enc_toggle_val = 0;
|
|
108 static gint audio_mode_val = 4;
|
|
109 static gint auto_ms_val = 0;
|
|
110 static gint enforce_iso_val = 0;
|
|
111 static gint error_protect_val = 0;
|
|
112
|
|
113 typedef struct {
|
|
114 gchar *track_name;
|
|
115 gchar *album_name;
|
|
116 gchar *performer;
|
|
117 gchar *genre;
|
|
118 gchar *year;
|
|
119 gchar *track_number;
|
|
120 } lameid3_t;
|
|
121
|
|
122 static lameid3_t lameid3;
|
|
123
|
|
124 static lame_global_flags *gfp;
|
|
125 static int encout;
|
|
126 static unsigned char encbuffer[ENCBUFFER_SIZE];
|
|
127
|
|
128 static void free_lameid3(lameid3_t *p)
|
|
129 {
|
|
130 g_free(p->track_name);
|
|
131 g_free(p->album_name);
|
|
132 g_free(p->performer);
|
|
133 g_free(p->genre);
|
|
134 g_free(p->year);
|
|
135 g_free(p->track_number);
|
|
136
|
|
137 p->track_name = NULL;
|
|
138 p->album_name = NULL;
|
|
139 p->performer = NULL;
|
|
140 p->genre = NULL;
|
|
141 p->year = NULL;
|
|
142 p->track_number = NULL;
|
|
143
|
|
144 };
|
|
145
|
|
146 static void lame_debugf(const char *format, va_list ap)
|
|
147 {
|
|
148 (void) vfprintf(stdout, format, ap);
|
|
149 }
|
|
150
|
|
151
|
|
152
|
|
153 static void mp3_init(void)
|
|
154 {
|
|
155 ConfigDb *db = bmp_cfg_db_open();
|
|
156 bmp_cfg_db_get_int(db, "filewriter_mp3", "vbr_on", &vbr_on);
|
|
157 bmp_cfg_db_get_int(db, "filewriter_mp3", "vbr_type", &vbr_type);
|
|
158 bmp_cfg_db_get_int(db, "filewriter_mp3", "vbr_min_val", &vbr_min_val);
|
|
159 bmp_cfg_db_get_int(db, "filewriter_mp3", "vbr_max_val", &vbr_max_val);
|
|
160 bmp_cfg_db_get_int(db, "filewriter_mp3", "enforce_min_val",
|
|
161 &enforce_min_val);
|
|
162 bmp_cfg_db_get_int(db, "filewriter_mp3", "vbr_quality_val",
|
|
163 &vbr_quality_val);
|
|
164 bmp_cfg_db_get_int(db, "filewriter_mp3", "abr_val", &abr_val);
|
|
165 bmp_cfg_db_get_int(db, "filewriter_mp3", "toggle_xing_val",
|
|
166 &toggle_xing_val);
|
|
167 bmp_cfg_db_get_int(db, "filewriter_mp3", "mark_original_val",
|
|
168 &mark_original_val);
|
|
169 bmp_cfg_db_get_int(db, "filewriter_mp3", "mark_copyright_val",
|
|
170 &mark_copyright_val);
|
|
171 bmp_cfg_db_get_int(db, "filewriter_mp3", "force_v2_val", &force_v2_val);
|
|
172 bmp_cfg_db_get_int(db, "filewriter_mp3", "only_v1_val", &only_v1_val);
|
|
173 bmp_cfg_db_get_int(db, "filewriter_mp3", "only_v2_val", &only_v2_val);
|
|
174 bmp_cfg_db_get_int(db, "filewriter_mp3", "algo_quality_val",
|
|
175 &algo_quality_val);
|
|
176 bmp_cfg_db_get_int(db, "filewriter_mp3", "out_samplerate_val",
|
|
177 &out_samplerate_val);
|
|
178 bmp_cfg_db_get_int(db, "filewriter_mp3", "bitrate_val", &bitrate_val);
|
|
179 bmp_cfg_db_get_float(db, "filewriter_mp3", "compression_val",
|
|
180 &compression_val);
|
|
181 bmp_cfg_db_get_int(db, "filewriter_mp3", "enc_toggle_val", &enc_toggle_val);
|
|
182 bmp_cfg_db_get_int(db, "filewriter_mp3", "audio_mode_val", &audio_mode_val);
|
|
183 bmp_cfg_db_get_int(db, "filewriter_mp3", "auto_ms_val", &auto_ms_val);
|
|
184 bmp_cfg_db_get_int(db, "filewriter_mp3", "enforce_iso_val",
|
|
185 &enforce_iso_val);
|
|
186 bmp_cfg_db_get_int(db, "filewriter_mp3", "error_protect_val",
|
|
187 &error_protect_val);
|
|
188 bmp_cfg_db_close(db);
|
|
189 }
|
|
190
|
|
191 static gint mp3_open(void)
|
|
192 {
|
|
193 if ((gfp = lame_init()) == (void *)-1)
|
|
194 return 0;
|
|
195
|
|
196 /* setup id3 data */
|
|
197 id3tag_init(gfp);
|
|
198
|
|
199 if (tuple) {
|
|
200 /* XXX write UTF-8 even though libmp3lame does id3v2.3. --yaz */
|
|
201 #ifdef DEBUG
|
|
202 g_print("track_name = %s\n", tuple->track_name);
|
|
203 #endif
|
|
204 lameid3.track_name = g_strdup(tuple->track_name);
|
|
205 id3tag_set_title(gfp, lameid3.track_name);
|
|
206
|
|
207 lameid3.performer = g_strdup(tuple->performer);
|
|
208 id3tag_set_artist(gfp, lameid3.performer);
|
|
209
|
|
210 lameid3.album_name = g_strdup(tuple->album_name);
|
|
211 id3tag_set_album(gfp, lameid3.album_name);
|
|
212
|
|
213 lameid3.genre = g_strdup(tuple->genre);
|
|
214 id3tag_set_genre(gfp, lameid3.genre);
|
|
215
|
|
216 lameid3.year = g_strdup_printf("%d", tuple->year);
|
|
217 id3tag_set_year(gfp, lameid3.year);
|
|
218
|
|
219 lameid3.track_number = g_strdup_printf("%d", tuple->track_number);
|
|
220 id3tag_set_track(gfp, lameid3.track_number);
|
|
221
|
|
222 // id3tag_write_v1(gfp);
|
|
223 id3tag_add_v2(gfp);
|
|
224 }
|
|
225
|
|
226 /* input stream description */
|
|
227
|
|
228 lame_set_in_samplerate(gfp, input.frequency);
|
|
229 lame_set_num_channels(gfp, input.channels);
|
|
230 /* Maybe implement this? */
|
|
231 /* lame_set_scale(lame_global_flags *, float); */
|
|
232 lame_set_out_samplerate(gfp, out_samplerate_val);
|
|
233
|
|
234 /* general control parameters */
|
|
235
|
|
236 lame_set_bWriteVbrTag(gfp, toggle_xing_val);
|
|
237 lame_set_quality(gfp, algo_quality_val);
|
|
238 if (audio_mode_val != 4) {
|
|
239 #ifdef DEBUG
|
|
240 printf("set mode to %d\n", audio_mode_val);
|
|
241 #endif
|
|
242 lame_set_mode(gfp, audio_mode_val);
|
|
243 }
|
|
244 if(auto_ms_val)
|
|
245 lame_set_mode_automs(gfp, auto_ms_val); // this forces to use joint stereo!! --yaz.
|
|
246
|
|
247 lame_set_errorf(gfp, lame_debugf);
|
|
248 lame_set_debugf(gfp, lame_debugf);
|
|
249 lame_set_msgf(gfp, lame_debugf);
|
|
250
|
|
251 if (enc_toggle_val == 0 && vbr_on == 0)
|
|
252 lame_set_brate(gfp, bitrate_val);
|
|
253 else if (vbr_on == 0)
|
|
254 lame_set_compression_ratio(gfp, compression_val);
|
|
255
|
|
256 /* frame params */
|
|
257
|
|
258 lame_set_copyright(gfp, mark_copyright_val);
|
|
259 lame_set_original(gfp, mark_original_val);
|
|
260 lame_set_error_protection(gfp, error_protect_val);
|
|
261 lame_set_strict_ISO(gfp, enforce_iso_val);
|
|
262
|
|
263 if (vbr_on != 0) {
|
|
264 if (vbr_type == 0)
|
|
265 lame_set_VBR(gfp, 2);
|
|
266 else
|
|
267 lame_set_VBR(gfp, 3);
|
|
268 lame_set_VBR_q(gfp, vbr_quality_val);
|
|
269 lame_set_VBR_mean_bitrate_kbps(gfp, abr_val);
|
|
270 lame_set_VBR_min_bitrate_kbps(gfp, vbr_min_val);
|
|
271 lame_set_VBR_max_bitrate_kbps(gfp, vbr_max_val);
|
|
272 lame_set_VBR_hard_min(gfp, enforce_min_val);
|
|
273 }
|
|
274
|
|
275 if (lame_init_params(gfp) == -1)
|
|
276 return 0;
|
|
277
|
|
278 return 1;
|
|
279 }
|
|
280
|
|
281 static void mp3_write(void *ptr, gint length)
|
|
282 {
|
|
283 if (input.channels == 1) {
|
|
284 encout =
|
|
285 lame_encode_buffer(gfp, ptr, ptr, length / 2, encbuffer,
|
|
286 ENCBUFFER_SIZE);
|
|
287 }
|
|
288 else {
|
|
289 encout =
|
|
290 lame_encode_buffer_interleaved(gfp, ptr, length / 4, encbuffer,
|
|
291 ENCBUFFER_SIZE);
|
|
292 }
|
|
293
|
|
294 vfs_fwrite(encbuffer, 1, encout, output_file);
|
|
295 written += encout;
|
|
296 olen += length;
|
|
297 }
|
|
298
|
|
299 static void mp3_close(void)
|
|
300 {
|
|
301 if (output_file)
|
|
302 {
|
|
303 encout = lame_encode_flush_nogap(gfp, encbuffer, ENCBUFFER_SIZE);
|
|
304 vfs_fwrite(encbuffer, 1, encout, output_file);
|
|
305
|
|
306 // lame_mp3_tags_fid(gfp, output_file); // will erase id3v2 tag??
|
|
307
|
|
308 lame_close(gfp);
|
|
309
|
|
310 free_lameid3(&lameid3);
|
|
311
|
|
312 olen = 0;
|
|
313 }
|
|
314 }
|
|
315
|
|
316 static gint mp3_free(void)
|
|
317 {
|
|
318 return ENCBUFFER_SIZE - encout;
|
|
319 }
|
|
320
|
|
321 static gint mp3_playing(void)
|
|
322 {
|
|
323 #ifdef DEBUG
|
|
324 printf("lame: buffer_playing = %d\n", encout ? 1 : 0);
|
|
325 #endif
|
|
326 return encout ? 1 : 0;
|
|
327 }
|
|
328
|
|
329 static gint mp3_get_written_time(void)
|
|
330 {
|
|
331 gint time;
|
|
332 if (input.frequency && input.channels) {
|
|
333 time = (gint) ((olen * 1000) / (input.frequency * 2 * input.channels));
|
|
334 return time + offset;
|
|
335 }
|
|
336
|
|
337 return 0;
|
|
338 }
|
|
339
|
|
340 /*****************/
|
|
341 /* Configuration */
|
|
342 /*****************/
|
|
343
|
|
344 /* Various Singal-Fuctions */
|
|
345
|
|
346 static void algo_qual(GtkAdjustment * adjustment, gpointer user_data)
|
|
347 {
|
|
348
|
|
349 algo_quality_val =
|
|
350 gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON
|
|
351 (alg_quality_spin));
|
|
352
|
|
353 }
|
|
354
|
|
355 static void samplerate_activate(GtkMenuItem * menuitem, gpointer user_data)
|
|
356 {
|
|
357
|
|
358 out_samplerate_val = GPOINTER_TO_INT(user_data);
|
|
359
|
|
360 }
|
|
361
|
|
362 static void bitrate_activate(GtkMenuItem * menuitem, gpointer user_data)
|
|
363 {
|
|
364
|
|
365 bitrate_val = GPOINTER_TO_INT(user_data);
|
|
366
|
|
367 }
|
|
368
|
|
369 static void compression_change(GtkAdjustment * adjustment,
|
|
370 gpointer user_data)
|
|
371 {
|
|
372
|
|
373 compression_val =
|
|
374 gtk_spin_button_get_value_as_float(GTK_SPIN_BUTTON
|
|
375 (compression_spin));
|
|
376
|
|
377 }
|
|
378
|
|
379 static void encoding_toggle(GtkToggleButton * togglebutton,
|
|
380 gpointer user_data)
|
|
381 {
|
|
382
|
|
383 enc_toggle_val = GPOINTER_TO_INT(user_data);
|
|
384
|
|
385 }
|
|
386
|
|
387 static void mode_activate(GtkMenuItem * menuitem, gpointer user_data)
|
|
388 {
|
|
389
|
|
390 audio_mode_val = GPOINTER_TO_INT(user_data);
|
|
391
|
|
392 }
|
|
393
|
|
394 static void toggle_auto_ms(GtkToggleButton * togglebutton,
|
|
395 gpointer user_data)
|
|
396 {
|
|
397
|
|
398 if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(ms_mode_toggle)) ==
|
|
399 TRUE)
|
|
400 auto_ms_val = 1;
|
|
401 else
|
|
402 auto_ms_val = 0;
|
|
403
|
|
404 }
|
|
405
|
|
406 static void toggle_enforce_iso(GtkToggleButton * togglebutton,
|
|
407 gpointer user_data)
|
|
408 {
|
|
409
|
|
410 if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(enforce_iso_toggle))
|
|
411 == TRUE)
|
|
412 enforce_iso_val = 1;
|
|
413 else
|
|
414 enforce_iso_val = 0;
|
|
415
|
|
416 }
|
|
417
|
|
418 static void toggle_error_protect(GtkToggleButton * togglebutton,
|
|
419 gpointer user_data)
|
|
420 {
|
|
421
|
|
422 if (gtk_toggle_button_get_active
|
|
423 (GTK_TOGGLE_BUTTON(error_protection_toggle)) == TRUE)
|
|
424 error_protect_val = 1;
|
|
425 else
|
|
426 error_protect_val = 0;
|
|
427
|
|
428 }
|
|
429
|
|
430 static void toggle_vbr(GtkToggleButton * togglebutton, gpointer user_data)
|
|
431 {
|
|
432 if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(vbr_toggle)) ==
|
|
433 TRUE) {
|
|
434 gtk_widget_set_sensitive(vbr_options_vbox, TRUE);
|
|
435 gtk_widget_set_sensitive(enc_quality_frame, FALSE);
|
|
436 vbr_on = 1;
|
|
437
|
|
438 if (vbr_type == 0) {
|
|
439 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON
|
|
440 (vbr_type_radio1), TRUE);
|
|
441 gtk_widget_set_sensitive(abr_frame, FALSE);
|
|
442 gtk_widget_set_sensitive(vbr_frame, TRUE);
|
|
443 }
|
|
444 else if (vbr_type == 1) {
|
|
445 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON
|
|
446 (vbr_type_radio2), TRUE);
|
|
447 gtk_widget_set_sensitive(abr_frame, TRUE);
|
|
448 gtk_widget_set_sensitive(vbr_frame, FALSE);
|
|
449 }
|
|
450
|
|
451 }
|
|
452 else {
|
|
453 gtk_widget_set_sensitive(vbr_options_vbox, FALSE);
|
|
454 gtk_widget_set_sensitive(enc_quality_frame, TRUE);
|
|
455 vbr_on = 0;
|
|
456 }
|
|
457 }
|
|
458
|
|
459 static void vbr_abr_toggle(GtkToggleButton * togglebutton,
|
|
460 gpointer user_data)
|
|
461 {
|
|
462 if (user_data == "VBR") {
|
|
463 gtk_widget_set_sensitive(abr_frame, FALSE);
|
|
464 gtk_widget_set_sensitive(vbr_frame, TRUE);
|
|
465 vbr_type = 0;
|
|
466 }
|
|
467 else if (user_data == "ABR") {
|
|
468 gtk_widget_set_sensitive(abr_frame, TRUE);
|
|
469 gtk_widget_set_sensitive(vbr_frame, FALSE);
|
|
470 vbr_type = 1;
|
|
471 }
|
|
472 }
|
|
473
|
|
474 static void vbr_min_activate(GtkMenuItem * menuitem, gpointer user_data)
|
|
475 {
|
|
476
|
|
477 vbr_min_val = GPOINTER_TO_INT(user_data);
|
|
478
|
|
479 }
|
|
480
|
|
481 static void vbr_max_activate(GtkMenuItem * menuitem, gpointer user_data)
|
|
482 {
|
|
483
|
|
484 vbr_max_val = GPOINTER_TO_INT(user_data);
|
|
485
|
|
486 }
|
|
487
|
|
488 static void toggle_enforce_min(GtkToggleButton * togglebutton,
|
|
489 gpointer user_data)
|
|
490 {
|
|
491
|
|
492 if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(enforce_min_toggle))
|
|
493 == TRUE)
|
|
494 enforce_min_val = 1;
|
|
495 else
|
|
496 enforce_min_val = 0;
|
|
497
|
|
498 }
|
|
499
|
|
500 static void vbr_qual(GtkAdjustment * adjustment, gpointer user_data)
|
|
501 {
|
|
502
|
|
503 vbr_quality_val =
|
|
504 gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON
|
|
505 (vbr_quality_spin));
|
|
506
|
|
507 }
|
|
508
|
|
509 static void abr_activate(GtkMenuItem * menuitem, gpointer user_data)
|
|
510 {
|
|
511
|
|
512 abr_val = GPOINTER_TO_INT(user_data);
|
|
513
|
|
514 }
|
|
515
|
|
516 static void toggle_xing(GtkToggleButton * togglebutton, gpointer user_data)
|
|
517 {
|
|
518
|
|
519 if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(xing_header_toggle)) == TRUE)
|
|
520 toggle_xing_val = 0;
|
|
521 else
|
|
522 toggle_xing_val = 1;
|
|
523
|
|
524 }
|
|
525
|
|
526 static void toggle_original(GtkToggleButton * togglebutton,
|
|
527 gpointer user_data)
|
|
528 {
|
|
529
|
|
530 if (gtk_toggle_button_get_active
|
|
531 (GTK_TOGGLE_BUTTON(tags_original_toggle)) == TRUE)
|
|
532 mark_original_val = 1;
|
|
533 else
|
|
534 mark_original_val = 0;
|
|
535
|
|
536 }
|
|
537
|
|
538 static void toggle_copyright(GtkToggleButton * togglebutton,
|
|
539 gpointer user_data)
|
|
540 {
|
|
541
|
|
542 if (gtk_toggle_button_get_active
|
|
543 (GTK_TOGGLE_BUTTON(tags_copyright_toggle)) == TRUE)
|
|
544 mark_copyright_val = 1;
|
|
545 else
|
|
546 mark_copyright_val = 0;
|
|
547
|
|
548 }
|
|
549
|
|
550 static void force_v2_toggle(GtkToggleButton * togglebutton,
|
|
551 gpointer user_data)
|
|
552 {
|
|
553
|
|
554 if (gtk_toggle_button_get_active
|
|
555 (GTK_TOGGLE_BUTTON(tags_force_id3v2_toggle)) == TRUE) {
|
|
556 force_v2_val = 1;
|
|
557 if (gtk_toggle_button_get_active
|
|
558 (GTK_TOGGLE_BUTTON(tags_only_v1_toggle)) == TRUE) {
|
|
559 inside = 1;
|
|
560 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON
|
|
561 (tags_only_v1_toggle), FALSE);
|
|
562 only_v1_val = 0;
|
|
563 inside = 0;
|
|
564 }
|
|
565 }
|
|
566 else
|
|
567 force_v2_val = 0;
|
|
568
|
|
569 }
|
|
570
|
|
571 static void id3_only_version(GtkToggleButton * togglebutton,
|
|
572 gpointer user_data)
|
|
573 {
|
|
574 if (user_data == "v1" && inside != 1) {
|
|
575 if (gtk_toggle_button_get_active
|
|
576 (GTK_TOGGLE_BUTTON(tags_only_v1_toggle)) == TRUE);
|
|
577 {
|
|
578 inside = 1;
|
|
579 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON
|
|
580 (tags_only_v2_toggle), FALSE);
|
|
581 only_v1_val = 1;
|
|
582 only_v2_val = 0;
|
|
583 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON
|
|
584 (tags_force_id3v2_toggle), FALSE);
|
|
585 inside = 0;
|
|
586 }
|
|
587 }
|
|
588 else if (user_data == "v2" && inside != 1) {
|
|
589 if (gtk_toggle_button_get_active
|
|
590 (GTK_TOGGLE_BUTTON(tags_only_v2_toggle)) == TRUE);
|
|
591 {
|
|
592 inside = 1;
|
|
593 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON
|
|
594 (tags_only_v1_toggle), FALSE);
|
|
595 only_v1_val = 0;
|
|
596 only_v2_val = 1;
|
|
597 inside = 0;
|
|
598 }
|
|
599 }
|
|
600
|
|
601 }
|
|
602
|
|
603
|
|
604
|
|
605 /* Save Configuration */
|
|
606
|
|
607 static void configure_ok_cb(gpointer data)
|
|
608 {
|
|
609 ConfigDb *db;
|
|
610
|
|
611 if (vbr_min_val > vbr_max_val)
|
|
612 vbr_max_val = vbr_min_val;
|
|
613
|
|
614 db = bmp_cfg_db_open();
|
|
615
|
|
616 bmp_cfg_db_set_int(db, "filewriter_mp3", "vbr_on", vbr_on);
|
|
617 bmp_cfg_db_set_int(db, "filewriter_mp3", "vbr_type", vbr_type);
|
|
618 bmp_cfg_db_set_int(db, "filewriter_mp3", "vbr_min_val", vbr_min_val);
|
|
619 bmp_cfg_db_set_int(db, "filewriter_mp3", "vbr_max_val", vbr_max_val);
|
|
620 bmp_cfg_db_set_int(db, "filewriter_mp3", "enforce_min_val", enforce_min_val);
|
|
621 bmp_cfg_db_set_int(db, "filewriter_mp3", "vbr_quality_val", vbr_quality_val);
|
|
622 bmp_cfg_db_set_int(db, "filewriter_mp3", "abr_val", abr_val);
|
|
623 bmp_cfg_db_set_int(db, "filewriter_mp3", "toggle_xing_val", toggle_xing_val);
|
|
624 bmp_cfg_db_set_int(db, "filewriter_mp3", "mark_original_val",
|
|
625 mark_original_val);
|
|
626 bmp_cfg_db_set_int(db, "filewriter_mp3", "mark_copyright_val",
|
|
627 mark_copyright_val);
|
|
628 bmp_cfg_db_set_int(db, "filewriter_mp3", "force_v2_val", force_v2_val);
|
|
629 bmp_cfg_db_set_int(db, "filewriter_mp3", "only_v1_val", only_v1_val);
|
|
630 bmp_cfg_db_set_int(db, "filewriter_mp3", "only_v2_val", only_v2_val);
|
|
631 bmp_cfg_db_set_int(db, "filewriter_mp3", "algo_quality_val",
|
|
632 algo_quality_val);
|
|
633 bmp_cfg_db_set_int(db, "filewriter_mp3", "out_samplerate_val",
|
|
634 out_samplerate_val);
|
|
635 bmp_cfg_db_set_int(db, "filewriter_mp3", "bitrate_val", bitrate_val);
|
|
636 bmp_cfg_db_set_float(db, "filewriter_mp3", "compression_val",
|
|
637 compression_val);
|
|
638 bmp_cfg_db_set_int(db, "filewriter_mp3", "enc_toggle_val", enc_toggle_val);
|
|
639 bmp_cfg_db_set_int(db, "filewriter_mp3", "audio_mode_val", audio_mode_val);
|
|
640 bmp_cfg_db_set_int(db, "filewriter_mp3", "auto_ms_val", auto_ms_val);
|
|
641 bmp_cfg_db_set_int(db, "filewriter_mp3", "enforce_iso_val", enforce_iso_val);
|
|
642 bmp_cfg_db_set_int(db, "filewriter_mp3", "error_protect_val",
|
|
643 error_protect_val);
|
|
644 bmp_cfg_db_close(db);
|
|
645
|
|
646
|
|
647 gtk_widget_destroy(configure_win);
|
|
648 }
|
|
649
|
|
650
|
|
651 /************************/
|
|
652 /* Configuration Widget */
|
|
653 /************************/
|
|
654
|
|
655
|
|
656 static void mp3_configure(void)
|
|
657 {
|
|
658 if (!configure_win) {
|
|
659 configure_win = gtk_window_new(GTK_WINDOW_TOPLEVEL);
|
|
660
|
|
661 gtk_signal_connect(GTK_OBJECT(configure_win), "destroy",
|
|
662 GTK_SIGNAL_FUNC(gtk_widget_destroyed),
|
|
663 &configure_win);
|
|
664 gtk_window_set_title(GTK_WINDOW(configure_win),
|
985
|
665 "MP3 Configuration");
|
984
|
666 gtk_window_set_position(GTK_WINDOW(configure_win),
|
|
667 GTK_WIN_POS_MOUSE);
|
|
668 gtk_window_set_policy(GTK_WINDOW(configure_win), FALSE, TRUE,
|
|
669 FALSE);
|
|
670 gtk_container_set_border_width(GTK_CONTAINER(configure_win), 5);
|
|
671
|
|
672 vbox = gtk_vbox_new(FALSE, 5);
|
|
673 gtk_container_add(GTK_CONTAINER(configure_win), vbox);
|
|
674
|
|
675 notebook = gtk_notebook_new();
|
|
676 gtk_box_pack_start(GTK_BOX(vbox), notebook, TRUE, TRUE, 0);
|
|
677
|
|
678
|
|
679 /* Quality */
|
|
680
|
|
681 quality_vbox = gtk_vbox_new(FALSE, 5);
|
|
682 gtk_container_set_border_width(GTK_CONTAINER(quality_vbox), 5);
|
|
683
|
|
684 quality_tips = gtk_tooltips_new();
|
|
685
|
|
686 quality_hbox1 = gtk_hbox_new(FALSE, 5);
|
|
687 gtk_box_pack_start(GTK_BOX(quality_vbox), quality_hbox1, FALSE,
|
|
688 FALSE, 0);
|
|
689
|
|
690 /* Algorithm Quality */
|
|
691
|
|
692 alg_quality_frame = gtk_frame_new("Algorithm Quality:");
|
|
693 gtk_container_set_border_width(GTK_CONTAINER(alg_quality_frame),
|
|
694 5);
|
|
695 gtk_box_pack_start(GTK_BOX(quality_hbox1), alg_quality_frame,
|
|
696 FALSE, FALSE, 0);
|
|
697
|
|
698 alg_quality_hbox = gtk_hbox_new(FALSE, 5);
|
|
699 gtk_container_set_border_width(GTK_CONTAINER(alg_quality_hbox),
|
|
700 10);
|
|
701 gtk_container_add(GTK_CONTAINER(alg_quality_frame),
|
|
702 alg_quality_hbox);
|
|
703
|
|
704 alg_quality_adj = gtk_adjustment_new(5, 0, 9, 1, 1, 1);
|
|
705 alg_quality_spin =
|
|
706 gtk_spin_button_new(GTK_ADJUSTMENT(alg_quality_adj), 8, 0);
|
|
707 gtk_widget_set_usize(alg_quality_spin, 20, 28);
|
|
708 gtk_box_pack_start(GTK_BOX(alg_quality_hbox), alg_quality_spin,
|
|
709 TRUE, TRUE, 0);
|
|
710 gtk_signal_connect(GTK_OBJECT(alg_quality_adj), "value-changed",
|
|
711 GTK_SIGNAL_FUNC(algo_qual), NULL);
|
|
712
|
|
713 gtk_tooltips_set_tip(GTK_TOOLTIPS(quality_tips), alg_quality_spin,
|
|
714 "best/slowest:0;\nworst/fastest:9;\nrecommended:2;\ndefault:5;",
|
|
715 "");
|
|
716
|
|
717 gtk_spin_button_set_value(GTK_SPIN_BUTTON(alg_quality_spin),
|
|
718 algo_quality_val);
|
|
719
|
|
720 /* Output Samplerate */
|
|
721
|
|
722 samplerate_frame = gtk_frame_new("Output Samplerate:");
|
|
723 gtk_container_set_border_width(GTK_CONTAINER(samplerate_frame), 5);
|
|
724 gtk_box_pack_start(GTK_BOX(quality_hbox1), samplerate_frame, FALSE,
|
|
725 FALSE, 0);
|
|
726
|
|
727 samplerate_hbox = gtk_hbox_new(TRUE, 5);
|
|
728 gtk_container_set_border_width(GTK_CONTAINER(samplerate_hbox), 10);
|
|
729 gtk_container_add(GTK_CONTAINER(samplerate_frame),
|
|
730 samplerate_hbox);
|
|
731 samplerate_option_menu = gtk_option_menu_new();
|
|
732 samplerate_menu = gtk_menu_new();
|
|
733 samplerate_menu_item = gtk_menu_item_new_with_label("Auto");
|
|
734 gtk_signal_connect(GTK_OBJECT(samplerate_menu_item), "activate",
|
|
735 GTK_SIGNAL_FUNC(samplerate_activate),
|
|
736 GINT_TO_POINTER(0));
|
|
737 gtk_menu_append(GTK_MENU(samplerate_menu), samplerate_menu_item);
|
|
738 samplerate_menu_item = gtk_menu_item_new_with_label("8");
|
|
739 gtk_signal_connect(GTK_OBJECT(samplerate_menu_item), "activate",
|
|
740 GTK_SIGNAL_FUNC(samplerate_activate),
|
|
741 GINT_TO_POINTER(8000));
|
|
742 gtk_menu_append(GTK_MENU(samplerate_menu), samplerate_menu_item);
|
|
743 samplerate_menu_item = gtk_menu_item_new_with_label("11.025");
|
|
744 gtk_signal_connect(GTK_OBJECT(samplerate_menu_item), "activate",
|
|
745 GTK_SIGNAL_FUNC(samplerate_activate),
|
|
746 GINT_TO_POINTER(11025));
|
|
747 gtk_menu_append(GTK_MENU(samplerate_menu), samplerate_menu_item);
|
|
748 samplerate_menu_item = gtk_menu_item_new_with_label("12");
|
|
749 gtk_signal_connect(GTK_OBJECT(samplerate_menu_item), "activate",
|
|
750 GTK_SIGNAL_FUNC(samplerate_activate),
|
|
751 GINT_TO_POINTER(12000));
|
|
752 gtk_menu_append(GTK_MENU(samplerate_menu), samplerate_menu_item);
|
|
753 samplerate_menu_item = gtk_menu_item_new_with_label("16");
|
|
754 gtk_signal_connect(GTK_OBJECT(samplerate_menu_item), "activate",
|
|
755 GTK_SIGNAL_FUNC(samplerate_activate),
|
|
756 GINT_TO_POINTER(16000));
|
|
757 gtk_menu_append(GTK_MENU(samplerate_menu), samplerate_menu_item);
|
|
758 samplerate_menu_item = gtk_menu_item_new_with_label("22.05");
|
|
759 gtk_signal_connect(GTK_OBJECT(samplerate_menu_item), "activate",
|
|
760 GTK_SIGNAL_FUNC(samplerate_activate),
|
|
761 GINT_TO_POINTER(22050));
|
|
762 gtk_menu_append(GTK_MENU(samplerate_menu), samplerate_menu_item);
|
|
763 samplerate_menu_item = gtk_menu_item_new_with_label("24");
|
|
764 gtk_signal_connect(GTK_OBJECT(samplerate_menu_item), "activate",
|
|
765 GTK_SIGNAL_FUNC(samplerate_activate),
|
|
766 GINT_TO_POINTER(24000));
|
|
767 gtk_menu_append(GTK_MENU(samplerate_menu), samplerate_menu_item);
|
|
768 samplerate_menu_item = gtk_menu_item_new_with_label("32");
|
|
769 gtk_signal_connect(GTK_OBJECT(samplerate_menu_item), "activate",
|
|
770 GTK_SIGNAL_FUNC(samplerate_activate),
|
|
771 GINT_TO_POINTER(32000));
|
|
772 gtk_menu_append(GTK_MENU(samplerate_menu), samplerate_menu_item);
|
|
773 samplerate_menu_item = gtk_menu_item_new_with_label("44.1");
|
|
774 gtk_signal_connect(GTK_OBJECT(samplerate_menu_item), "activate",
|
|
775 GTK_SIGNAL_FUNC(samplerate_activate),
|
|
776 GINT_TO_POINTER(44100));
|
|
777 gtk_menu_append(GTK_MENU(samplerate_menu), samplerate_menu_item);
|
|
778 samplerate_menu_item = gtk_menu_item_new_with_label("48");
|
|
779 gtk_signal_connect(GTK_OBJECT(samplerate_menu_item), "activate",
|
|
780 GTK_SIGNAL_FUNC(samplerate_activate),
|
|
781 GINT_TO_POINTER(48000));
|
|
782 gtk_menu_append(GTK_MENU(samplerate_menu), samplerate_menu_item);
|
|
783 gtk_option_menu_set_menu(GTK_OPTION_MENU(samplerate_option_menu),
|
|
784 samplerate_menu);
|
|
785 gtk_widget_set_usize(samplerate_option_menu, 70, 28);
|
|
786 gtk_box_pack_start(GTK_BOX(samplerate_hbox),
|
|
787 samplerate_option_menu, FALSE, FALSE, 0);
|
|
788 samplerate_label = gtk_label_new("(kHz)");
|
|
789 gtk_misc_set_alignment(GTK_MISC(samplerate_label), 0, 0.5);
|
|
790 gtk_box_pack_start(GTK_BOX(samplerate_hbox), samplerate_label,
|
|
791 FALSE, FALSE, 0);
|
|
792
|
|
793 switch (out_samplerate_val) {
|
|
794
|
|
795 case 0:
|
|
796 gtk_option_menu_set_history(GTK_OPTION_MENU
|
|
797 (samplerate_option_menu), 0);
|
|
798 break;
|
|
799 case 8000:
|
|
800 gtk_option_menu_set_history(GTK_OPTION_MENU
|
|
801 (samplerate_option_menu), 1);
|
|
802 break;
|
|
803 case 11025:
|
|
804 gtk_option_menu_set_history(GTK_OPTION_MENU
|
|
805 (samplerate_option_menu), 2);
|
|
806 break;
|
|
807 case 12000:
|
|
808 gtk_option_menu_set_history(GTK_OPTION_MENU
|
|
809 (samplerate_option_menu), 3);
|
|
810 break;
|
|
811 case 16000:
|
|
812 gtk_option_menu_set_history(GTK_OPTION_MENU
|
|
813 (samplerate_option_menu), 4);
|
|
814 break;
|
|
815 case 22050:
|
|
816 gtk_option_menu_set_history(GTK_OPTION_MENU
|
|
817 (samplerate_option_menu), 5);
|
|
818 break;
|
|
819 case 24000:
|
|
820 gtk_option_menu_set_history(GTK_OPTION_MENU
|
|
821 (samplerate_option_menu), 6);
|
|
822 break;
|
|
823 case 32000:
|
|
824 gtk_option_menu_set_history(GTK_OPTION_MENU
|
|
825 (samplerate_option_menu), 7);
|
|
826 break;
|
|
827 case 44100:
|
|
828 gtk_option_menu_set_history(GTK_OPTION_MENU
|
|
829 (samplerate_option_menu), 8);
|
|
830 break;
|
|
831 case 48000:
|
|
832 gtk_option_menu_set_history(GTK_OPTION_MENU
|
|
833 (samplerate_option_menu), 9);
|
|
834 break;
|
|
835
|
|
836 }
|
|
837
|
|
838 /* Encoder Quality */
|
|
839
|
|
840 enc_quality_frame = gtk_frame_new("Bitrate / Compression ratio:");
|
|
841 gtk_container_set_border_width(GTK_CONTAINER(enc_quality_frame),
|
|
842 5);
|
|
843 gtk_box_pack_start(GTK_BOX(quality_vbox), enc_quality_frame, FALSE,
|
|
844 FALSE, 0);
|
|
845
|
|
846
|
|
847 /* yaz new code */
|
|
848 // vbox sorrounding hbox1 and hbox2
|
|
849 enc_quality_vbox = gtk_vbox_new(FALSE, 5);
|
|
850 gtk_container_set_border_width(GTK_CONTAINER(enc_quality_vbox), 10);
|
|
851
|
|
852 // pack vbox to frame
|
|
853 gtk_container_add(GTK_CONTAINER(enc_quality_frame), enc_quality_vbox);
|
|
854
|
|
855 // hbox1 for bitrate
|
|
856 hbox1 = gtk_hbox_new(FALSE, 5);
|
|
857 gtk_container_add(GTK_CONTAINER(enc_quality_vbox), hbox1);
|
|
858
|
|
859 // radio 1
|
|
860 enc_radio1 = gtk_radio_button_new(NULL);
|
|
861 if (enc_toggle_val == 0)
|
|
862 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(enc_radio1), TRUE);
|
|
863 gtk_box_pack_start(GTK_BOX(hbox1), enc_radio1, FALSE, FALSE, 0);
|
|
864
|
|
865 // label 1
|
|
866 enc_quality_label1 = gtk_label_new("Bitrate (kbps):");
|
|
867 gtk_box_pack_start(GTK_BOX(hbox1), enc_quality_label1, FALSE, FALSE, 0);
|
|
868
|
|
869 // bitrate menu
|
|
870 bitrate_option_menu = gtk_option_menu_new();
|
|
871 bitrate_menu = gtk_menu_new();
|
|
872 bitrate_menu_item = gtk_menu_item_new_with_label("8");
|
|
873 gtk_signal_connect(GTK_OBJECT(bitrate_menu_item), "activate",
|
|
874 GTK_SIGNAL_FUNC(bitrate_activate),
|
|
875 GINT_TO_POINTER(8));
|
|
876 gtk_menu_append(GTK_MENU(bitrate_menu), bitrate_menu_item);
|
|
877 bitrate_menu_item = gtk_menu_item_new_with_label("16");
|
|
878 gtk_signal_connect(GTK_OBJECT(bitrate_menu_item), "activate",
|
|
879 GTK_SIGNAL_FUNC(bitrate_activate),
|
|
880 GINT_TO_POINTER(16));
|
|
881 gtk_menu_append(GTK_MENU(bitrate_menu), bitrate_menu_item);
|
|
882 bitrate_menu_item = gtk_menu_item_new_with_label("24");
|
|
883 gtk_signal_connect(GTK_OBJECT(bitrate_menu_item), "activate",
|
|
884 GTK_SIGNAL_FUNC(bitrate_activate),
|
|
885 GINT_TO_POINTER(24));
|
|
886 gtk_menu_append(GTK_MENU(bitrate_menu), bitrate_menu_item);
|
|
887 bitrate_menu_item = gtk_menu_item_new_with_label("32");
|
|
888 gtk_signal_connect(GTK_OBJECT(bitrate_menu_item), "activate",
|
|
889 GTK_SIGNAL_FUNC(bitrate_activate),
|
|
890 GINT_TO_POINTER(32));
|
|
891 gtk_menu_append(GTK_MENU(bitrate_menu), bitrate_menu_item);
|
|
892 bitrate_menu_item = gtk_menu_item_new_with_label("40");
|
|
893 gtk_signal_connect(GTK_OBJECT(bitrate_menu_item), "activate",
|
|
894 GTK_SIGNAL_FUNC(bitrate_activate),
|
|
895 GINT_TO_POINTER(40));
|
|
896 gtk_menu_append(GTK_MENU(bitrate_menu), bitrate_menu_item);
|
|
897 bitrate_menu_item = gtk_menu_item_new_with_label("48");
|
|
898 gtk_signal_connect(GTK_OBJECT(bitrate_menu_item), "activate",
|
|
899 GTK_SIGNAL_FUNC(bitrate_activate),
|
|
900 GINT_TO_POINTER(48));
|
|
901 gtk_menu_append(GTK_MENU(bitrate_menu), bitrate_menu_item);
|
|
902 bitrate_menu_item = gtk_menu_item_new_with_label("56");
|
|
903 gtk_signal_connect(GTK_OBJECT(bitrate_menu_item), "activate",
|
|
904 GTK_SIGNAL_FUNC(bitrate_activate),
|
|
905 GINT_TO_POINTER(56));
|
|
906 gtk_menu_append(GTK_MENU(bitrate_menu), bitrate_menu_item);
|
|
907 bitrate_menu_item = gtk_menu_item_new_with_label("64");
|
|
908 gtk_signal_connect(GTK_OBJECT(bitrate_menu_item), "activate",
|
|
909 GTK_SIGNAL_FUNC(bitrate_activate),
|
|
910 GINT_TO_POINTER(64));
|
|
911 gtk_menu_append(GTK_MENU(bitrate_menu), bitrate_menu_item);
|
|
912 bitrate_menu_item = gtk_menu_item_new_with_label("80");
|
|
913 gtk_signal_connect(GTK_OBJECT(bitrate_menu_item), "activate",
|
|
914 GTK_SIGNAL_FUNC(bitrate_activate),
|
|
915 GINT_TO_POINTER(80));
|
|
916 gtk_menu_append(GTK_MENU(bitrate_menu), bitrate_menu_item);
|
|
917 bitrate_menu_item = gtk_menu_item_new_with_label("96");
|
|
918 gtk_signal_connect(GTK_OBJECT(bitrate_menu_item), "activate",
|
|
919 GTK_SIGNAL_FUNC(bitrate_activate),
|
|
920 GINT_TO_POINTER(96));
|
|
921 gtk_menu_append(GTK_MENU(bitrate_menu), bitrate_menu_item);
|
|
922 bitrate_menu_item = gtk_menu_item_new_with_label("112");
|
|
923 gtk_signal_connect(GTK_OBJECT(bitrate_menu_item), "activate",
|
|
924 GTK_SIGNAL_FUNC(bitrate_activate),
|
|
925 GINT_TO_POINTER(112));
|
|
926 gtk_menu_append(GTK_MENU(bitrate_menu), bitrate_menu_item);
|
|
927 bitrate_menu_item = gtk_menu_item_new_with_label("128");
|
|
928 gtk_signal_connect(GTK_OBJECT(bitrate_menu_item), "activate",
|
|
929 GTK_SIGNAL_FUNC(bitrate_activate),
|
|
930 GINT_TO_POINTER(128));
|
|
931 gtk_menu_append(GTK_MENU(bitrate_menu), bitrate_menu_item);
|
|
932 bitrate_menu_item = gtk_menu_item_new_with_label("160");
|
|
933 gtk_signal_connect(GTK_OBJECT(bitrate_menu_item), "activate",
|
|
934 GTK_SIGNAL_FUNC(bitrate_activate),
|
|
935 GINT_TO_POINTER(160));
|
|
936 gtk_menu_append(GTK_MENU(bitrate_menu), bitrate_menu_item);
|
|
937 bitrate_menu_item = gtk_menu_item_new_with_label("192");
|
|
938 gtk_signal_connect(GTK_OBJECT(bitrate_menu_item), "activate",
|
|
939 GTK_SIGNAL_FUNC(bitrate_activate),
|
|
940 GINT_TO_POINTER(192));
|
|
941 gtk_menu_append(GTK_MENU(bitrate_menu), bitrate_menu_item);
|
|
942 bitrate_menu_item = gtk_menu_item_new_with_label("224");
|
|
943 gtk_signal_connect(GTK_OBJECT(bitrate_menu_item), "activate",
|
|
944 GTK_SIGNAL_FUNC(bitrate_activate),
|
|
945 GINT_TO_POINTER(224));
|
|
946 gtk_menu_append(GTK_MENU(bitrate_menu), bitrate_menu_item);
|
|
947 bitrate_menu_item = gtk_menu_item_new_with_label("256");
|
|
948 gtk_signal_connect(GTK_OBJECT(bitrate_menu_item), "activate",
|
|
949 GTK_SIGNAL_FUNC(bitrate_activate),
|
|
950 GINT_TO_POINTER(256));
|
|
951 gtk_menu_append(GTK_MENU(bitrate_menu), bitrate_menu_item);
|
|
952 bitrate_menu_item = gtk_menu_item_new_with_label("320");
|
|
953 gtk_signal_connect(GTK_OBJECT(bitrate_menu_item), "activate",
|
|
954 GTK_SIGNAL_FUNC(bitrate_activate),
|
|
955 GINT_TO_POINTER(320));
|
|
956 gtk_menu_append(GTK_MENU(bitrate_menu), bitrate_menu_item);
|
|
957 gtk_option_menu_set_menu(GTK_OPTION_MENU(bitrate_option_menu),
|
|
958 bitrate_menu);
|
|
959 gtk_widget_set_usize(bitrate_option_menu, 80, 28);
|
|
960 gtk_box_pack_end(GTK_BOX(hbox1), bitrate_option_menu, FALSE, FALSE, 0);
|
|
961
|
|
962
|
|
963 switch (bitrate_val) {
|
|
964
|
|
965 case 8:
|
|
966 gtk_option_menu_set_history(GTK_OPTION_MENU
|
|
967 (bitrate_option_menu), 0);
|
|
968 break;
|
|
969 case 16:
|
|
970 gtk_option_menu_set_history(GTK_OPTION_MENU
|
|
971 (bitrate_option_menu), 1);
|
|
972 break;
|
|
973 case 24:
|
|
974 gtk_option_menu_set_history(GTK_OPTION_MENU
|
|
975 (bitrate_option_menu), 2);
|
|
976 break;
|
|
977 case 32:
|
|
978 gtk_option_menu_set_history(GTK_OPTION_MENU
|
|
979 (bitrate_option_menu), 3);
|
|
980 break;
|
|
981 case 40:
|
|
982 gtk_option_menu_set_history(GTK_OPTION_MENU
|
|
983 (bitrate_option_menu), 4);
|
|
984 break;
|
|
985 case 48:
|
|
986 gtk_option_menu_set_history(GTK_OPTION_MENU
|
|
987 (bitrate_option_menu), 5);
|
|
988 break;
|
|
989 case 56:
|
|
990 gtk_option_menu_set_history(GTK_OPTION_MENU
|
|
991 (bitrate_option_menu), 6);
|
|
992 break;
|
|
993 case 64:
|
|
994 gtk_option_menu_set_history(GTK_OPTION_MENU
|
|
995 (bitrate_option_menu), 7);
|
|
996 break;
|
|
997 case 80:
|
|
998 gtk_option_menu_set_history(GTK_OPTION_MENU
|
|
999 (bitrate_option_menu), 8);
|
|
1000 break;
|
|
1001 case 96:
|
|
1002 gtk_option_menu_set_history(GTK_OPTION_MENU
|
|
1003 (bitrate_option_menu), 9);
|
|
1004 break;
|
|
1005 case 112:
|
|
1006 gtk_option_menu_set_history(GTK_OPTION_MENU
|
|
1007 (bitrate_option_menu), 10);
|
|
1008 break;
|
|
1009 case 128:
|
|
1010 gtk_option_menu_set_history(GTK_OPTION_MENU
|
|
1011 (bitrate_option_menu), 11);
|
|
1012 break;
|
|
1013 case 160:
|
|
1014 gtk_option_menu_set_history(GTK_OPTION_MENU
|
|
1015 (bitrate_option_menu), 12);
|
|
1016 break;
|
|
1017 case 192:
|
|
1018 gtk_option_menu_set_history(GTK_OPTION_MENU
|
|
1019 (bitrate_option_menu), 13);
|
|
1020 break;
|
|
1021 case 224:
|
|
1022 gtk_option_menu_set_history(GTK_OPTION_MENU
|
|
1023 (bitrate_option_menu), 14);
|
|
1024 break;
|
|
1025 case 256:
|
|
1026 gtk_option_menu_set_history(GTK_OPTION_MENU
|
|
1027 (bitrate_option_menu), 15);
|
|
1028 break;
|
|
1029 case 320:
|
|
1030 gtk_option_menu_set_history(GTK_OPTION_MENU
|
|
1031 (bitrate_option_menu), 16);
|
|
1032 break;
|
|
1033
|
|
1034 }
|
|
1035
|
|
1036 // hbox2 for compression ratio
|
|
1037 hbox2 = gtk_hbox_new(FALSE, 5);
|
|
1038 gtk_container_add(GTK_CONTAINER(enc_quality_vbox), hbox2);
|
|
1039
|
|
1040 // radio 2
|
|
1041 enc_radio2 = gtk_radio_button_new_from_widget(GTK_RADIO_BUTTON(enc_radio1));
|
|
1042 if (enc_toggle_val == 1)
|
|
1043 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(enc_radio2),
|
|
1044 TRUE);
|
|
1045 // pack radio 2
|
|
1046 gtk_box_pack_start(GTK_BOX(hbox2), enc_radio2, FALSE, FALSE, 0);
|
|
1047
|
|
1048 // label
|
|
1049 enc_quality_label2 = gtk_label_new("Compression ratio:");
|
|
1050 gtk_box_pack_start(GTK_BOX(hbox2), enc_quality_label2, FALSE, FALSE, 0);
|
|
1051
|
|
1052 // comp-ratio spin
|
|
1053 compression_adj = gtk_adjustment_new(11, 0, 100, 1, 1, 1);
|
|
1054 compression_spin =
|
|
1055 gtk_spin_button_new(GTK_ADJUSTMENT(compression_adj), 8, 0);
|
|
1056 gtk_widget_set_usize(compression_spin, 40, 28);
|
|
1057 gtk_container_add(GTK_CONTAINER(hbox2), compression_spin);
|
|
1058 gtk_box_pack_end(GTK_BOX(hbox2), compression_spin, FALSE, FALSE, 0);
|
|
1059
|
|
1060 gtk_signal_connect(GTK_OBJECT(compression_adj), "value-changed",
|
|
1061 GTK_SIGNAL_FUNC(compression_change), NULL);
|
|
1062
|
|
1063 gtk_spin_button_set_value(GTK_SPIN_BUTTON(compression_spin),
|
|
1064 compression_val);
|
|
1065
|
|
1066 // radio button signale connect
|
|
1067 gtk_signal_connect(GTK_OBJECT(enc_radio1), "toggled",
|
|
1068 GTK_SIGNAL_FUNC(encoding_toggle),
|
|
1069 GINT_TO_POINTER(0));
|
|
1070 gtk_signal_connect(GTK_OBJECT(enc_radio2), "toggled",
|
|
1071 GTK_SIGNAL_FUNC(encoding_toggle),
|
|
1072 GINT_TO_POINTER(1));
|
|
1073
|
|
1074 /* end of yaz new code */
|
|
1075
|
|
1076
|
|
1077 /* Audio Mode */
|
|
1078
|
|
1079 mode_frame = gtk_frame_new("Audio Mode:");
|
|
1080 gtk_container_set_border_width(GTK_CONTAINER(mode_frame), 5);
|
|
1081 gtk_box_pack_start(GTK_BOX(quality_vbox), mode_frame, FALSE, FALSE,
|
|
1082 0);
|
|
1083
|
|
1084 mode_hbox = gtk_hbox_new(TRUE, 10);
|
|
1085 gtk_container_set_border_width(GTK_CONTAINER(mode_hbox), 10);
|
|
1086 gtk_container_add(GTK_CONTAINER(mode_frame), mode_hbox);
|
|
1087 mode_option_menu = gtk_option_menu_new();
|
|
1088 mode_menu = gtk_menu_new();
|
|
1089 mode_menu_item = gtk_menu_item_new_with_label("Auto");
|
|
1090 gtk_signal_connect(GTK_OBJECT(mode_menu_item), "activate",
|
|
1091 GTK_SIGNAL_FUNC(mode_activate),
|
|
1092 GINT_TO_POINTER(4));
|
|
1093 gtk_menu_append(GTK_MENU(mode_menu), mode_menu_item);
|
|
1094 mode_menu_item = gtk_menu_item_new_with_label("Joint-Stereo");
|
|
1095 gtk_signal_connect(GTK_OBJECT(mode_menu_item), "activate",
|
|
1096 GTK_SIGNAL_FUNC(mode_activate),
|
|
1097 GINT_TO_POINTER(1));
|
|
1098 gtk_menu_append(GTK_MENU(mode_menu), mode_menu_item);
|
|
1099 mode_menu_item = gtk_menu_item_new_with_label("Stereo");
|
|
1100 gtk_signal_connect(GTK_OBJECT(mode_menu_item), "activate",
|
|
1101 GTK_SIGNAL_FUNC(mode_activate),
|
|
1102 GINT_TO_POINTER(0));
|
|
1103 gtk_menu_append(GTK_MENU(mode_menu), mode_menu_item);
|
|
1104 mode_menu_item = gtk_menu_item_new_with_label("Mono");
|
|
1105 gtk_signal_connect(GTK_OBJECT(mode_menu_item), "activate",
|
|
1106 GTK_SIGNAL_FUNC(mode_activate),
|
|
1107 GINT_TO_POINTER(3));
|
|
1108 gtk_menu_append(GTK_MENU(mode_menu), mode_menu_item);
|
|
1109 gtk_option_menu_set_menu(GTK_OPTION_MENU(mode_option_menu),
|
|
1110 mode_menu);
|
|
1111 gtk_widget_set_usize(mode_option_menu, 50, 28);
|
|
1112 gtk_box_pack_start(GTK_BOX(mode_hbox), mode_option_menu, TRUE,
|
|
1113 TRUE, 2);
|
|
1114
|
|
1115 switch (audio_mode_val) {
|
|
1116
|
|
1117 case 4:
|
|
1118 gtk_option_menu_set_history(GTK_OPTION_MENU(mode_option_menu),
|
|
1119 0);
|
|
1120 break;
|
|
1121 case 1:
|
|
1122 gtk_option_menu_set_history(GTK_OPTION_MENU(mode_option_menu),
|
|
1123 1);
|
|
1124 break;
|
|
1125 case 0:
|
|
1126 gtk_option_menu_set_history(GTK_OPTION_MENU(mode_option_menu),
|
|
1127 2);
|
|
1128 break;
|
|
1129 case 3:
|
|
1130 gtk_option_menu_set_history(GTK_OPTION_MENU(mode_option_menu),
|
|
1131 3);
|
|
1132 break;
|
|
1133 }
|
|
1134
|
|
1135 ms_mode_toggle = gtk_check_button_new_with_label("auto-M/S mode");
|
|
1136 gtk_box_pack_start(GTK_BOX(mode_hbox), ms_mode_toggle, TRUE, TRUE,
|
|
1137 5);
|
|
1138 gtk_signal_connect(GTK_OBJECT(ms_mode_toggle), "toggled",
|
|
1139 GTK_SIGNAL_FUNC(toggle_auto_ms), NULL);
|
|
1140
|
|
1141 if (auto_ms_val == 1)
|
|
1142 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(ms_mode_toggle),
|
|
1143 TRUE);
|
|
1144
|
|
1145 /* Misc */
|
|
1146
|
|
1147 misc_frame = gtk_frame_new("Misc:");
|
|
1148 gtk_container_set_border_width(GTK_CONTAINER(misc_frame), 5);
|
|
1149 gtk_box_pack_start(GTK_BOX(quality_vbox), misc_frame, FALSE, FALSE,
|
|
1150 0);
|
|
1151
|
|
1152 misc_vbox = gtk_vbox_new(TRUE, 5);
|
|
1153 gtk_container_set_border_width(GTK_CONTAINER(misc_vbox), 5);
|
|
1154 gtk_container_add(GTK_CONTAINER(misc_frame), misc_vbox);
|
|
1155
|
|
1156 enforce_iso_toggle =
|
|
1157 gtk_check_button_new_with_label
|
|
1158 ("Enforce strict ISO complience");
|
|
1159 gtk_box_pack_start(GTK_BOX(misc_vbox), enforce_iso_toggle, TRUE,
|
|
1160 TRUE, 2);
|
|
1161 gtk_signal_connect(GTK_OBJECT(enforce_iso_toggle), "toggled",
|
|
1162 GTK_SIGNAL_FUNC(toggle_enforce_iso), NULL);
|
|
1163
|
|
1164 if (enforce_iso_val == 1)
|
|
1165 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON
|
|
1166 (enforce_iso_toggle), TRUE);
|
|
1167
|
|
1168 error_protection_toggle =
|
|
1169 gtk_check_button_new_with_label("Error protection");
|
|
1170 gtk_box_pack_start(GTK_BOX(misc_vbox), error_protection_toggle,
|
|
1171 TRUE, TRUE, 2);
|
|
1172 gtk_signal_connect(GTK_OBJECT(error_protection_toggle), "toggled",
|
|
1173 GTK_SIGNAL_FUNC(toggle_error_protect), NULL);
|
|
1174
|
|
1175 if (error_protect_val == 1)
|
|
1176 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON
|
|
1177 (error_protection_toggle), TRUE);
|
|
1178
|
|
1179 gtk_tooltips_set_tip(GTK_TOOLTIPS(quality_tips),
|
|
1180 error_protection_toggle,
|
|
1181 "Adds 16 bit checksum to every frame", "");
|
|
1182
|
|
1183
|
|
1184 /* Add the Notebook */
|
|
1185 gtk_notebook_append_page(GTK_NOTEBOOK(notebook), quality_vbox,
|
|
1186 gtk_label_new("Quality"));
|
|
1187
|
|
1188
|
|
1189 /* VBR/ABR */
|
|
1190
|
|
1191 vbr_vbox = gtk_vbox_new(FALSE, 5);
|
|
1192 gtk_container_set_border_width(GTK_CONTAINER(vbr_vbox), 5);
|
|
1193
|
|
1194 vbr_tips = gtk_tooltips_new();
|
|
1195
|
|
1196 /* Toggle VBR */
|
|
1197
|
|
1198 vbr_toggle = gtk_check_button_new_with_label("Enable VBR/ABR");
|
|
1199 gtk_widget_set_usize(vbr_toggle, 60, 30);
|
|
1200 gtk_box_pack_start(GTK_BOX(vbr_vbox), vbr_toggle, FALSE, FALSE, 2);
|
|
1201 gtk_signal_connect(GTK_OBJECT(vbr_toggle), "toggled",
|
|
1202 GTK_SIGNAL_FUNC(toggle_vbr), NULL);
|
|
1203
|
|
1204 vbr_options_vbox = gtk_vbox_new(FALSE, 0);
|
|
1205 gtk_container_add(GTK_CONTAINER(vbr_vbox), vbr_options_vbox);
|
|
1206 gtk_widget_set_sensitive(vbr_options_vbox, FALSE);
|
|
1207
|
|
1208 /* Choose VBR/ABR */
|
|
1209
|
|
1210 vbr_type_frame = gtk_frame_new("Type:");
|
|
1211 gtk_container_set_border_width(GTK_CONTAINER(vbr_type_frame), 5);
|
|
1212 gtk_box_pack_start(GTK_BOX(vbr_options_vbox), vbr_type_frame,
|
|
1213 FALSE, FALSE, 2);
|
|
1214
|
|
1215 vbr_type_hbox = gtk_hbox_new(FALSE, 5);
|
|
1216 gtk_container_set_border_width(GTK_CONTAINER(vbr_type_hbox), 5);
|
|
1217 gtk_container_add(GTK_CONTAINER(vbr_type_frame), vbr_type_hbox);
|
|
1218
|
|
1219 vbr_type_radio1 = gtk_radio_button_new_with_label(NULL, "VBR");
|
|
1220 gtk_tooltips_set_tip(GTK_TOOLTIPS(vbr_tips), vbr_type_radio1,
|
|
1221 "Variable bitrate", "");
|
|
1222 gtk_box_pack_start(GTK_BOX(vbr_type_hbox), vbr_type_radio1, TRUE,
|
|
1223 TRUE, 2);
|
|
1224 if (vbr_type == 0)
|
|
1225 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON
|
|
1226 (vbr_type_radio1), TRUE);
|
|
1227
|
|
1228 vbr_type_radio2 =
|
|
1229 gtk_radio_button_new_with_label_from_widget(GTK_RADIO_BUTTON
|
|
1230 (vbr_type_radio1),
|
|
1231 "ABR");
|
|
1232 gtk_tooltips_set_tip(GTK_TOOLTIPS(vbr_tips), vbr_type_radio2,
|
|
1233 "Average bitrate", "");
|
|
1234 gtk_box_pack_start(GTK_BOX(vbr_type_hbox), vbr_type_radio2, TRUE,
|
|
1235 TRUE, 2);
|
|
1236 if (vbr_type == 1)
|
|
1237 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON
|
|
1238 (vbr_type_radio2), TRUE);
|
|
1239
|
|
1240 gtk_signal_connect(GTK_OBJECT(vbr_type_radio1), "toggled",
|
|
1241 GTK_SIGNAL_FUNC(vbr_abr_toggle), "VBR");
|
|
1242 gtk_signal_connect(GTK_OBJECT(vbr_type_radio2), "toggled",
|
|
1243 GTK_SIGNAL_FUNC(vbr_abr_toggle), "ABR");
|
|
1244
|
|
1245 /* VBR Options */
|
|
1246
|
|
1247 vbr_frame = gtk_frame_new("VBR Options:");
|
|
1248 gtk_container_set_border_width(GTK_CONTAINER(vbr_frame), 5);
|
|
1249 gtk_box_pack_start(GTK_BOX(vbr_options_vbox), vbr_frame, FALSE,
|
|
1250 FALSE, 2);
|
|
1251
|
|
1252 vbr_options_vbox2 = gtk_vbox_new(FALSE, 5);
|
|
1253 gtk_container_set_border_width(GTK_CONTAINER(vbr_options_vbox2),
|
|
1254 5);
|
|
1255 gtk_container_add(GTK_CONTAINER(vbr_frame), vbr_options_vbox2);
|
|
1256
|
|
1257 vbr_options_hbox1 = gtk_hbox_new(FALSE, 5);
|
|
1258 gtk_container_set_border_width(GTK_CONTAINER(vbr_options_hbox1),
|
|
1259 5);
|
|
1260 gtk_container_add(GTK_CONTAINER(vbr_options_vbox2),
|
|
1261 vbr_options_hbox1);
|
|
1262
|
|
1263 vbr_min_label = gtk_label_new("Minimum bitrate (kbps):");
|
|
1264 gtk_misc_set_alignment(GTK_MISC(vbr_min_label), 0, 0.5);
|
|
1265 gtk_box_pack_start(GTK_BOX(vbr_options_hbox1), vbr_min_label, TRUE,
|
|
1266 TRUE, 0);
|
|
1267
|
|
1268 vbr_min_option_menu = gtk_option_menu_new();
|
|
1269 vbr_min_menu = gtk_menu_new();
|
|
1270 vbr_min_menu_item = gtk_menu_item_new_with_label("8");
|
|
1271 gtk_signal_connect(GTK_OBJECT(vbr_min_menu_item), "activate",
|
|
1272 GTK_SIGNAL_FUNC(vbr_min_activate),
|
|
1273 GINT_TO_POINTER(8));
|
|
1274 gtk_menu_append(GTK_MENU(vbr_min_menu), vbr_min_menu_item);
|
|
1275 vbr_min_menu_item = gtk_menu_item_new_with_label("16");
|
|
1276 gtk_signal_connect(GTK_OBJECT(vbr_min_menu_item), "activate",
|
|
1277 GTK_SIGNAL_FUNC(vbr_min_activate),
|
|
1278 GINT_TO_POINTER(16));
|
|
1279 gtk_menu_append(GTK_MENU(vbr_min_menu), vbr_min_menu_item);
|
|
1280 vbr_min_menu_item = gtk_menu_item_new_with_label("24");
|
|
1281 gtk_signal_connect(GTK_OBJECT(vbr_min_menu_item), "activate",
|
|
1282 GTK_SIGNAL_FUNC(vbr_min_activate),
|
|
1283 GINT_TO_POINTER(24));
|
|
1284 gtk_menu_append(GTK_MENU(vbr_min_menu), vbr_min_menu_item);
|
|
1285 vbr_min_menu_item = gtk_menu_item_new_with_label("32");
|
|
1286 gtk_signal_connect(GTK_OBJECT(vbr_min_menu_item), "activate",
|
|
1287 GTK_SIGNAL_FUNC(vbr_min_activate),
|
|
1288 GINT_TO_POINTER(32));
|
|
1289 gtk_menu_append(GTK_MENU(vbr_min_menu), vbr_min_menu_item);
|
|
1290 vbr_min_menu_item = gtk_menu_item_new_with_label("40");
|
|
1291 gtk_signal_connect(GTK_OBJECT(vbr_min_menu_item), "activate",
|
|
1292 GTK_SIGNAL_FUNC(vbr_min_activate),
|
|
1293 GINT_TO_POINTER(40));
|
|
1294 gtk_menu_append(GTK_MENU(vbr_min_menu), vbr_min_menu_item);
|
|
1295 vbr_min_menu_item = gtk_menu_item_new_with_label("48");
|
|
1296 gtk_signal_connect(GTK_OBJECT(vbr_min_menu_item), "activate",
|
|
1297 GTK_SIGNAL_FUNC(vbr_min_activate),
|
|
1298 GINT_TO_POINTER(48));
|
|
1299 gtk_menu_append(GTK_MENU(vbr_min_menu), vbr_min_menu_item);
|
|
1300 vbr_min_menu_item = gtk_menu_item_new_with_label("56");
|
|
1301 gtk_signal_connect(GTK_OBJECT(vbr_min_menu_item), "activate",
|
|
1302 GTK_SIGNAL_FUNC(vbr_min_activate),
|
|
1303 GINT_TO_POINTER(56));
|
|
1304 gtk_menu_append(GTK_MENU(vbr_min_menu), vbr_min_menu_item);
|
|
1305 vbr_min_menu_item = gtk_menu_item_new_with_label("64");
|
|
1306 gtk_signal_connect(GTK_OBJECT(vbr_min_menu_item), "activate",
|
|
1307 GTK_SIGNAL_FUNC(vbr_min_activate),
|
|
1308 GINT_TO_POINTER(64));
|
|
1309 gtk_menu_append(GTK_MENU(vbr_min_menu), vbr_min_menu_item);
|
|
1310 vbr_min_menu_item = gtk_menu_item_new_with_label("80");
|
|
1311 gtk_signal_connect(GTK_OBJECT(vbr_min_menu_item), "activate",
|
|
1312 GTK_SIGNAL_FUNC(vbr_min_activate),
|
|
1313 GINT_TO_POINTER(80));
|
|
1314 gtk_menu_append(GTK_MENU(vbr_min_menu), vbr_min_menu_item);
|
|
1315 vbr_min_menu_item = gtk_menu_item_new_with_label("96");
|
|
1316 gtk_signal_connect(GTK_OBJECT(vbr_min_menu_item), "activate",
|
|
1317 GTK_SIGNAL_FUNC(vbr_min_activate),
|
|
1318 GINT_TO_POINTER(96));
|
|
1319 gtk_menu_append(GTK_MENU(vbr_min_menu), vbr_min_menu_item);
|
|
1320 vbr_min_menu_item = gtk_menu_item_new_with_label("112");
|
|
1321 gtk_signal_connect(GTK_OBJECT(vbr_min_menu_item), "activate",
|
|
1322 GTK_SIGNAL_FUNC(vbr_min_activate),
|
|
1323 GINT_TO_POINTER(112));
|
|
1324 gtk_menu_append(GTK_MENU(vbr_min_menu), vbr_min_menu_item);
|
|
1325 vbr_min_menu_item = gtk_menu_item_new_with_label("128");
|
|
1326 gtk_signal_connect(GTK_OBJECT(vbr_min_menu_item), "activate",
|
|
1327 GTK_SIGNAL_FUNC(vbr_min_activate),
|
|
1328 GINT_TO_POINTER(128));
|
|
1329 gtk_menu_append(GTK_MENU(vbr_min_menu), vbr_min_menu_item);
|
|
1330 vbr_min_menu_item = gtk_menu_item_new_with_label("160");
|
|
1331 gtk_signal_connect(GTK_OBJECT(vbr_min_menu_item), "activate",
|
|
1332 GTK_SIGNAL_FUNC(vbr_min_activate),
|
|
1333 GINT_TO_POINTER(160));
|
|
1334 gtk_menu_append(GTK_MENU(vbr_min_menu), vbr_min_menu_item);
|
|
1335 vbr_min_menu_item = gtk_menu_item_new_with_label("192");
|
|
1336 gtk_signal_connect(GTK_OBJECT(vbr_min_menu_item), "activate",
|
|
1337 GTK_SIGNAL_FUNC(vbr_min_activate),
|
|
1338 GINT_TO_POINTER(192));
|
|
1339 gtk_menu_append(GTK_MENU(vbr_min_menu), vbr_min_menu_item);
|
|
1340 vbr_min_menu_item = gtk_menu_item_new_with_label("224");
|
|
1341 gtk_signal_connect(GTK_OBJECT(vbr_min_menu_item), "activate",
|
|
1342 GTK_SIGNAL_FUNC(vbr_min_activate),
|
|
1343 GINT_TO_POINTER(224));
|
|
1344 gtk_menu_append(GTK_MENU(vbr_min_menu), vbr_min_menu_item);
|
|
1345 vbr_min_menu_item = gtk_menu_item_new_with_label("256");
|
|
1346 gtk_signal_connect(GTK_OBJECT(vbr_min_menu_item), "activate",
|
|
1347 GTK_SIGNAL_FUNC(vbr_min_activate),
|
|
1348 GINT_TO_POINTER(256));
|
|
1349 gtk_menu_append(GTK_MENU(vbr_min_menu), vbr_min_menu_item);
|
|
1350 vbr_min_menu_item = gtk_menu_item_new_with_label("320");
|
|
1351 gtk_signal_connect(GTK_OBJECT(vbr_min_menu_item), "activate",
|
|
1352 GTK_SIGNAL_FUNC(vbr_min_activate),
|
|
1353 GINT_TO_POINTER(320));
|
|
1354 gtk_menu_append(GTK_MENU(vbr_min_menu), vbr_min_menu_item);
|
|
1355 gtk_option_menu_set_menu(GTK_OPTION_MENU(vbr_min_option_menu),
|
|
1356 vbr_min_menu);
|
|
1357 gtk_widget_set_usize(vbr_min_option_menu, 40, 25);
|
|
1358 gtk_box_pack_start(GTK_BOX(vbr_options_hbox1), vbr_min_option_menu,
|
|
1359 TRUE, TRUE, 2);
|
|
1360
|
|
1361 switch (vbr_min_val) {
|
|
1362
|
|
1363 case 8:
|
|
1364 gtk_option_menu_set_history(GTK_OPTION_MENU
|
|
1365 (vbr_min_option_menu), 0);
|
|
1366 break;
|
|
1367 case 16:
|
|
1368 gtk_option_menu_set_history(GTK_OPTION_MENU
|
|
1369 (vbr_min_option_menu), 1);
|
|
1370 break;
|
|
1371 case 24:
|
|
1372 gtk_option_menu_set_history(GTK_OPTION_MENU
|
|
1373 (vbr_min_option_menu), 2);
|
|
1374 break;
|
|
1375 case 32:
|
|
1376 gtk_option_menu_set_history(GTK_OPTION_MENU
|
|
1377 (vbr_min_option_menu), 3);
|
|
1378 break;
|
|
1379 case 40:
|
|
1380 gtk_option_menu_set_history(GTK_OPTION_MENU
|
|
1381 (vbr_min_option_menu), 4);
|
|
1382 break;
|
|
1383 case 48:
|
|
1384 gtk_option_menu_set_history(GTK_OPTION_MENU
|
|
1385 (vbr_min_option_menu), 5);
|
|
1386 break;
|
|
1387 case 56:
|
|
1388 gtk_option_menu_set_history(GTK_OPTION_MENU
|
|
1389 (vbr_min_option_menu), 6);
|
|
1390 break;
|
|
1391 case 64:
|
|
1392 gtk_option_menu_set_history(GTK_OPTION_MENU
|
|
1393 (vbr_min_option_menu), 7);
|
|
1394 break;
|
|
1395 case 80:
|
|
1396 gtk_option_menu_set_history(GTK_OPTION_MENU
|
|
1397 (vbr_min_option_menu), 8);
|
|
1398 break;
|
|
1399 case 96:
|
|
1400 gtk_option_menu_set_history(GTK_OPTION_MENU
|
|
1401 (vbr_min_option_menu), 9);
|
|
1402 break;
|
|
1403 case 112:
|
|
1404 gtk_option_menu_set_history(GTK_OPTION_MENU
|
|
1405 (vbr_min_option_menu), 10);
|
|
1406 break;
|
|
1407 case 128:
|
|
1408 gtk_option_menu_set_history(GTK_OPTION_MENU
|
|
1409 (vbr_min_option_menu), 11);
|
|
1410 break;
|
|
1411 case 160:
|
|
1412 gtk_option_menu_set_history(GTK_OPTION_MENU
|
|
1413 (vbr_min_option_menu), 12);
|
|
1414 break;
|
|
1415 case 192:
|
|
1416 gtk_option_menu_set_history(GTK_OPTION_MENU
|
|
1417 (vbr_min_option_menu), 13);
|
|
1418 break;
|
|
1419 case 224:
|
|
1420 gtk_option_menu_set_history(GTK_OPTION_MENU
|
|
1421 (vbr_min_option_menu), 14);
|
|
1422 break;
|
|
1423 case 256:
|
|
1424 gtk_option_menu_set_history(GTK_OPTION_MENU
|
|
1425 (vbr_min_option_menu), 15);
|
|
1426 break;
|
|
1427 case 320:
|
|
1428 gtk_option_menu_set_history(GTK_OPTION_MENU
|
|
1429 (vbr_min_option_menu), 16);
|
|
1430 break;
|
|
1431
|
|
1432 }
|
|
1433
|
|
1434 vbr_options_hbox2 = gtk_hbox_new(FALSE, 5);
|
|
1435 gtk_container_set_border_width(GTK_CONTAINER(vbr_options_hbox2),
|
|
1436 5);
|
|
1437 gtk_container_add(GTK_CONTAINER(vbr_options_vbox2),
|
|
1438 vbr_options_hbox2);
|
|
1439
|
|
1440 vbr_max_label = gtk_label_new("Maximum bitrate (kbps):");
|
|
1441 gtk_misc_set_alignment(GTK_MISC(vbr_max_label), 0, 0.5);
|
|
1442 gtk_box_pack_start(GTK_BOX(vbr_options_hbox2), vbr_max_label, TRUE,
|
|
1443 TRUE, 0);
|
|
1444
|
|
1445 vbr_max_option_menu = gtk_option_menu_new();
|
|
1446 vbr_max_menu = gtk_menu_new();
|
|
1447 vbr_max_menu_item = gtk_menu_item_new_with_label("8");
|
|
1448 gtk_signal_connect(GTK_OBJECT(vbr_max_menu_item), "activate",
|
|
1449 GTK_SIGNAL_FUNC(vbr_max_activate),
|
|
1450 GINT_TO_POINTER(8));
|
|
1451 gtk_menu_append(GTK_MENU(vbr_max_menu), vbr_max_menu_item);
|
|
1452 vbr_max_menu_item = gtk_menu_item_new_with_label("16");
|
|
1453 gtk_signal_connect(GTK_OBJECT(vbr_max_menu_item), "activate",
|
|
1454 GTK_SIGNAL_FUNC(vbr_max_activate),
|
|
1455 GINT_TO_POINTER(16));
|
|
1456 gtk_menu_append(GTK_MENU(vbr_max_menu), vbr_max_menu_item);
|
|
1457 vbr_max_menu_item = gtk_menu_item_new_with_label("24");
|
|
1458 gtk_signal_connect(GTK_OBJECT(vbr_max_menu_item), "activate",
|
|
1459 GTK_SIGNAL_FUNC(vbr_max_activate),
|
|
1460 GINT_TO_POINTER(24));
|
|
1461 gtk_menu_append(GTK_MENU(vbr_max_menu), vbr_max_menu_item);
|
|
1462 vbr_max_menu_item = gtk_menu_item_new_with_label("32");
|
|
1463 gtk_signal_connect(GTK_OBJECT(vbr_max_menu_item), "activate",
|
|
1464 GTK_SIGNAL_FUNC(vbr_max_activate),
|
|
1465 GINT_TO_POINTER(32));
|
|
1466 gtk_menu_append(GTK_MENU(vbr_max_menu), vbr_max_menu_item);
|
|
1467 vbr_max_menu_item = gtk_menu_item_new_with_label("40");
|
|
1468 gtk_signal_connect(GTK_OBJECT(vbr_max_menu_item), "activate",
|
|
1469 GTK_SIGNAL_FUNC(vbr_max_activate),
|
|
1470 GINT_TO_POINTER(40));
|
|
1471 gtk_menu_append(GTK_MENU(vbr_max_menu), vbr_max_menu_item);
|
|
1472 vbr_max_menu_item = gtk_menu_item_new_with_label("48");
|
|
1473 gtk_signal_connect(GTK_OBJECT(vbr_max_menu_item), "activate",
|
|
1474 GTK_SIGNAL_FUNC(vbr_max_activate),
|
|
1475 GINT_TO_POINTER(48));
|
|
1476 gtk_menu_append(GTK_MENU(vbr_max_menu), vbr_max_menu_item);
|
|
1477 vbr_max_menu_item = gtk_menu_item_new_with_label("56");
|
|
1478 gtk_signal_connect(GTK_OBJECT(vbr_max_menu_item), "activate",
|
|
1479 GTK_SIGNAL_FUNC(vbr_max_activate),
|
|
1480 GINT_TO_POINTER(56));
|
|
1481 gtk_menu_append(GTK_MENU(vbr_max_menu), vbr_max_menu_item);
|
|
1482 vbr_max_menu_item = gtk_menu_item_new_with_label("64");
|
|
1483 gtk_signal_connect(GTK_OBJECT(vbr_max_menu_item), "activate",
|
|
1484 GTK_SIGNAL_FUNC(vbr_max_activate),
|
|
1485 GINT_TO_POINTER(64));
|
|
1486 gtk_menu_append(GTK_MENU(vbr_max_menu), vbr_max_menu_item);
|
|
1487 vbr_max_menu_item = gtk_menu_item_new_with_label("80");
|
|
1488 gtk_signal_connect(GTK_OBJECT(vbr_max_menu_item), "activate",
|
|
1489 GTK_SIGNAL_FUNC(vbr_max_activate),
|
|
1490 GINT_TO_POINTER(80));
|
|
1491 gtk_menu_append(GTK_MENU(vbr_max_menu), vbr_max_menu_item);
|
|
1492 vbr_max_menu_item = gtk_menu_item_new_with_label("96");
|
|
1493 gtk_signal_connect(GTK_OBJECT(vbr_max_menu_item), "activate",
|
|
1494 GTK_SIGNAL_FUNC(vbr_max_activate),
|
|
1495 GINT_TO_POINTER(96));
|
|
1496 gtk_menu_append(GTK_MENU(vbr_max_menu), vbr_max_menu_item);
|
|
1497 vbr_max_menu_item = gtk_menu_item_new_with_label("112");
|
|
1498 gtk_signal_connect(GTK_OBJECT(vbr_max_menu_item), "activate",
|
|
1499 GTK_SIGNAL_FUNC(vbr_max_activate),
|
|
1500 GINT_TO_POINTER(112));
|
|
1501 gtk_menu_append(GTK_MENU(vbr_max_menu), vbr_max_menu_item);
|
|
1502 vbr_max_menu_item = gtk_menu_item_new_with_label("128");
|
|
1503 gtk_signal_connect(GTK_OBJECT(vbr_max_menu_item), "activate",
|
|
1504 GTK_SIGNAL_FUNC(vbr_max_activate),
|
|
1505 GINT_TO_POINTER(128));
|
|
1506 gtk_menu_append(GTK_MENU(vbr_max_menu), vbr_max_menu_item);
|
|
1507 vbr_max_menu_item = gtk_menu_item_new_with_label("160");
|
|
1508 gtk_signal_connect(GTK_OBJECT(vbr_max_menu_item), "activate",
|
|
1509 GTK_SIGNAL_FUNC(vbr_max_activate),
|
|
1510 GINT_TO_POINTER(160));
|
|
1511 gtk_menu_append(GTK_MENU(vbr_max_menu), vbr_max_menu_item);
|
|
1512 vbr_max_menu_item = gtk_menu_item_new_with_label("192");
|
|
1513 gtk_signal_connect(GTK_OBJECT(vbr_max_menu_item), "activate",
|
|
1514 GTK_SIGNAL_FUNC(vbr_max_activate),
|
|
1515 GINT_TO_POINTER(192));
|
|
1516 gtk_menu_append(GTK_MENU(vbr_max_menu), vbr_max_menu_item);
|
|
1517 vbr_max_menu_item = gtk_menu_item_new_with_label("224");
|
|
1518 gtk_signal_connect(GTK_OBJECT(vbr_max_menu_item), "activate",
|
|
1519 GTK_SIGNAL_FUNC(vbr_max_activate),
|
|
1520 GINT_TO_POINTER(224));
|
|
1521 gtk_menu_append(GTK_MENU(vbr_max_menu), vbr_max_menu_item);
|
|
1522 vbr_max_menu_item = gtk_menu_item_new_with_label("256");
|
|
1523 gtk_signal_connect(GTK_OBJECT(vbr_max_menu_item), "activate",
|
|
1524 GTK_SIGNAL_FUNC(vbr_max_activate),
|
|
1525 GINT_TO_POINTER(256));
|
|
1526 gtk_menu_append(GTK_MENU(vbr_max_menu), vbr_max_menu_item);
|
|
1527 vbr_max_menu_item = gtk_menu_item_new_with_label("320");
|
|
1528 gtk_signal_connect(GTK_OBJECT(vbr_max_menu_item), "activate",
|
|
1529 GTK_SIGNAL_FUNC(vbr_max_activate),
|
|
1530 GINT_TO_POINTER(320));
|
|
1531 gtk_menu_append(GTK_MENU(vbr_max_menu), vbr_max_menu_item);
|
|
1532 gtk_option_menu_set_menu(GTK_OPTION_MENU(vbr_max_option_menu),
|
|
1533 vbr_max_menu);
|
|
1534 gtk_widget_set_usize(vbr_max_option_menu, 40, 25);
|
|
1535 gtk_box_pack_start(GTK_BOX(vbr_options_hbox2), vbr_max_option_menu,
|
|
1536 TRUE, TRUE, 2);
|
|
1537
|
|
1538 switch (vbr_max_val) {
|
|
1539
|
|
1540 case 8:
|
|
1541 gtk_option_menu_set_history(GTK_OPTION_MENU
|
|
1542 (vbr_max_option_menu), 0);
|
|
1543 break;
|
|
1544 case 16:
|
|
1545 gtk_option_menu_set_history(GTK_OPTION_MENU
|
|
1546 (vbr_max_option_menu), 1);
|
|
1547 break;
|
|
1548 case 24:
|
|
1549 gtk_option_menu_set_history(GTK_OPTION_MENU
|
|
1550 (vbr_max_option_menu), 2);
|
|
1551 break;
|
|
1552 case 32:
|
|
1553 gtk_option_menu_set_history(GTK_OPTION_MENU
|
|
1554 (vbr_max_option_menu), 3);
|
|
1555 break;
|
|
1556 case 40:
|
|
1557 gtk_option_menu_set_history(GTK_OPTION_MENU
|
|
1558 (vbr_max_option_menu), 4);
|
|
1559 break;
|
|
1560 case 48:
|
|
1561 gtk_option_menu_set_history(GTK_OPTION_MENU
|
|
1562 (vbr_max_option_menu), 5);
|
|
1563 break;
|
|
1564 case 56:
|
|
1565 gtk_option_menu_set_history(GTK_OPTION_MENU
|
|
1566 (vbr_max_option_menu), 6);
|
|
1567 break;
|
|
1568 case 64:
|
|
1569 gtk_option_menu_set_history(GTK_OPTION_MENU
|
|
1570 (vbr_max_option_menu), 7);
|
|
1571 break;
|
|
1572 case 80:
|
|
1573 gtk_option_menu_set_history(GTK_OPTION_MENU
|
|
1574 (vbr_max_option_menu), 8);
|
|
1575 break;
|
|
1576 case 96:
|
|
1577 gtk_option_menu_set_history(GTK_OPTION_MENU
|
|
1578 (vbr_max_option_menu), 9);
|
|
1579 break;
|
|
1580 case 112:
|
|
1581 gtk_option_menu_set_history(GTK_OPTION_MENU
|
|
1582 (vbr_max_option_menu), 10);
|
|
1583 break;
|
|
1584 case 128:
|
|
1585 gtk_option_menu_set_history(GTK_OPTION_MENU
|
|
1586 (vbr_max_option_menu), 11);
|
|
1587 break;
|
|
1588 case 160:
|
|
1589 gtk_option_menu_set_history(GTK_OPTION_MENU
|
|
1590 (vbr_max_option_menu), 12);
|
|
1591 break;
|
|
1592 case 192:
|
|
1593 gtk_option_menu_set_history(GTK_OPTION_MENU
|
|
1594 (vbr_max_option_menu), 13);
|
|
1595 break;
|
|
1596 case 224:
|
|
1597 gtk_option_menu_set_history(GTK_OPTION_MENU
|
|
1598 (vbr_max_option_menu), 14);
|
|
1599 break;
|
|
1600 case 256:
|
|
1601 gtk_option_menu_set_history(GTK_OPTION_MENU
|
|
1602 (vbr_max_option_menu), 15);
|
|
1603 break;
|
|
1604 case 320:
|
|
1605 gtk_option_menu_set_history(GTK_OPTION_MENU
|
|
1606 (vbr_max_option_menu), 16);
|
|
1607 break;
|
|
1608
|
|
1609 }
|
|
1610
|
|
1611 enforce_min_toggle =
|
|
1612 gtk_check_button_new_with_label
|
|
1613 ("Strictly enforce minimum bitrate");
|
|
1614 gtk_tooltips_set_tip(GTK_TOOLTIPS(vbr_tips), enforce_min_toggle,
|
|
1615 "For use with players that do not support low bitrate mp3 (Apex AD600-A DVD/mp3 player)",
|
|
1616 "");
|
|
1617 gtk_box_pack_start(GTK_BOX(vbr_options_vbox2), enforce_min_toggle,
|
|
1618 FALSE, FALSE, 2);
|
|
1619 gtk_signal_connect(GTK_OBJECT(enforce_min_toggle), "toggled",
|
|
1620 GTK_SIGNAL_FUNC(toggle_enforce_min), NULL);
|
|
1621
|
|
1622 if (enforce_min_val == 1)
|
|
1623 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON
|
|
1624 (enforce_min_toggle), TRUE);
|
|
1625
|
|
1626 /* ABR Options */
|
|
1627
|
|
1628 abr_frame = gtk_frame_new("ABR Options:");
|
|
1629 gtk_container_set_border_width(GTK_CONTAINER(abr_frame), 5);
|
|
1630 gtk_box_pack_start(GTK_BOX(vbr_options_vbox), abr_frame, FALSE,
|
|
1631 FALSE, 2);
|
|
1632 gtk_widget_set_sensitive(abr_frame, FALSE);
|
|
1633
|
|
1634 abr_hbox = gtk_hbox_new(FALSE, 5);
|
|
1635 gtk_container_set_border_width(GTK_CONTAINER(abr_hbox), 5);
|
|
1636 gtk_container_add(GTK_CONTAINER(abr_frame), abr_hbox);
|
|
1637
|
|
1638 abr_label = gtk_label_new("Average bitrate (kbps):");
|
|
1639 gtk_misc_set_alignment(GTK_MISC(abr_label), 0, 0.5);
|
|
1640 gtk_box_pack_start(GTK_BOX(abr_hbox), abr_label, TRUE, TRUE, 0);
|
|
1641
|
|
1642 abr_option_menu = gtk_option_menu_new();
|
|
1643 abr_menu = gtk_menu_new();
|
|
1644 abr_menu_item = gtk_menu_item_new_with_label("8");
|
|
1645 gtk_signal_connect(GTK_OBJECT(abr_menu_item), "activate",
|
|
1646 GTK_SIGNAL_FUNC(abr_activate),
|
|
1647 GINT_TO_POINTER(8));
|
|
1648 gtk_menu_append(GTK_MENU(abr_menu), abr_menu_item);
|
|
1649 abr_menu_item = gtk_menu_item_new_with_label("16");
|
|
1650 gtk_signal_connect(GTK_OBJECT(abr_menu_item), "activate",
|
|
1651 GTK_SIGNAL_FUNC(abr_activate),
|
|
1652 GINT_TO_POINTER(16));
|
|
1653 gtk_menu_append(GTK_MENU(abr_menu), abr_menu_item);
|
|
1654 abr_menu_item = gtk_menu_item_new_with_label("24");
|
|
1655 gtk_signal_connect(GTK_OBJECT(abr_menu_item), "activate",
|
|
1656 GTK_SIGNAL_FUNC(abr_activate),
|
|
1657 GINT_TO_POINTER(24));
|
|
1658 gtk_menu_append(GTK_MENU(abr_menu), abr_menu_item);
|
|
1659 abr_menu_item = gtk_menu_item_new_with_label("32");
|
|
1660 gtk_signal_connect(GTK_OBJECT(abr_menu_item), "activate",
|
|
1661 GTK_SIGNAL_FUNC(abr_activate),
|
|
1662 GINT_TO_POINTER(32));
|
|
1663 gtk_menu_append(GTK_MENU(abr_menu), abr_menu_item);
|
|
1664 abr_menu_item = gtk_menu_item_new_with_label("40");
|
|
1665 gtk_signal_connect(GTK_OBJECT(abr_menu_item), "activate",
|
|
1666 GTK_SIGNAL_FUNC(abr_activate),
|
|
1667 GINT_TO_POINTER(40));
|
|
1668 gtk_menu_append(GTK_MENU(abr_menu), abr_menu_item);
|
|
1669 abr_menu_item = gtk_menu_item_new_with_label("48");
|
|
1670 gtk_signal_connect(GTK_OBJECT(abr_menu_item), "activate",
|
|
1671 GTK_SIGNAL_FUNC(abr_activate),
|
|
1672 GINT_TO_POINTER(48));
|
|
1673 gtk_menu_append(GTK_MENU(abr_menu), abr_menu_item);
|
|
1674 abr_menu_item = gtk_menu_item_new_with_label("56");
|
|
1675 gtk_signal_connect(GTK_OBJECT(abr_menu_item), "activate",
|
|
1676 GTK_SIGNAL_FUNC(abr_activate),
|
|
1677 GINT_TO_POINTER(56));
|
|
1678 gtk_menu_append(GTK_MENU(abr_menu), abr_menu_item);
|
|
1679 abr_menu_item = gtk_menu_item_new_with_label("64");
|
|
1680 gtk_signal_connect(GTK_OBJECT(abr_menu_item), "activate",
|
|
1681 GTK_SIGNAL_FUNC(abr_activate),
|
|
1682 GINT_TO_POINTER(64));
|
|
1683 gtk_menu_append(GTK_MENU(abr_menu), abr_menu_item);
|
|
1684 abr_menu_item = gtk_menu_item_new_with_label("80");
|
|
1685 gtk_signal_connect(GTK_OBJECT(abr_menu_item), "activate",
|
|
1686 GTK_SIGNAL_FUNC(abr_activate),
|
|
1687 GINT_TO_POINTER(80));
|
|
1688 gtk_menu_append(GTK_MENU(abr_menu), abr_menu_item);
|
|
1689 abr_menu_item = gtk_menu_item_new_with_label("96");
|
|
1690 gtk_signal_connect(GTK_OBJECT(abr_menu_item), "activate",
|
|
1691 GTK_SIGNAL_FUNC(abr_activate),
|
|
1692 GINT_TO_POINTER(96));
|
|
1693 gtk_menu_append(GTK_MENU(abr_menu), abr_menu_item);
|
|
1694 abr_menu_item = gtk_menu_item_new_with_label("112");
|
|
1695 gtk_signal_connect(GTK_OBJECT(abr_menu_item), "activate",
|
|
1696 GTK_SIGNAL_FUNC(abr_activate),
|
|
1697 GINT_TO_POINTER(112));
|
|
1698 gtk_menu_append(GTK_MENU(abr_menu), abr_menu_item);
|
|
1699 abr_menu_item = gtk_menu_item_new_with_label("128");
|
|
1700 gtk_signal_connect(GTK_OBJECT(abr_menu_item), "activate",
|
|
1701 GTK_SIGNAL_FUNC(abr_activate),
|
|
1702 GINT_TO_POINTER(128));
|
|
1703 gtk_menu_append(GTK_MENU(abr_menu), abr_menu_item);
|
|
1704 abr_menu_item = gtk_menu_item_new_with_label("160");
|
|
1705 gtk_signal_connect(GTK_OBJECT(abr_menu_item), "activate",
|
|
1706 GTK_SIGNAL_FUNC(abr_activate),
|
|
1707 GINT_TO_POINTER(160));
|
|
1708 gtk_menu_append(GTK_MENU(abr_menu), abr_menu_item);
|
|
1709 abr_menu_item = gtk_menu_item_new_with_label("192");
|
|
1710 gtk_signal_connect(GTK_OBJECT(abr_menu_item), "activate",
|
|
1711 GTK_SIGNAL_FUNC(abr_activate),
|
|
1712 GINT_TO_POINTER(192));
|
|
1713 gtk_menu_append(GTK_MENU(abr_menu), abr_menu_item);
|
|
1714 abr_menu_item = gtk_menu_item_new_with_label("224");
|
|
1715 gtk_signal_connect(GTK_OBJECT(abr_menu_item), "activate",
|
|
1716 GTK_SIGNAL_FUNC(abr_activate),
|
|
1717 GINT_TO_POINTER(224));
|
|
1718 gtk_menu_append(GTK_MENU(abr_menu), abr_menu_item);
|
|
1719 abr_menu_item = gtk_menu_item_new_with_label("256");
|
|
1720 gtk_signal_connect(GTK_OBJECT(abr_menu_item), "activate",
|
|
1721 GTK_SIGNAL_FUNC(abr_activate),
|
|
1722 GINT_TO_POINTER(256));
|
|
1723 gtk_menu_append(GTK_MENU(abr_menu), abr_menu_item);
|
|
1724 abr_menu_item = gtk_menu_item_new_with_label("320");
|
|
1725 gtk_signal_connect(GTK_OBJECT(abr_menu_item), "activate",
|
|
1726 GTK_SIGNAL_FUNC(abr_activate),
|
|
1727 GINT_TO_POINTER(320));
|
|
1728 gtk_menu_append(GTK_MENU(abr_menu), abr_menu_item);
|
|
1729 gtk_option_menu_set_menu(GTK_OPTION_MENU(abr_option_menu),
|
|
1730 abr_menu);
|
|
1731 gtk_widget_set_usize(abr_option_menu, 40, 25);
|
|
1732 gtk_box_pack_start(GTK_BOX(abr_hbox), abr_option_menu, TRUE, TRUE,
|
|
1733 2);
|
|
1734
|
|
1735 switch (abr_val) {
|
|
1736
|
|
1737 case 8:
|
|
1738 gtk_option_menu_set_history(GTK_OPTION_MENU(abr_option_menu),
|
|
1739 0);
|
|
1740 break;
|
|
1741 case 16:
|
|
1742 gtk_option_menu_set_history(GTK_OPTION_MENU(abr_option_menu),
|
|
1743 1);
|
|
1744 break;
|
|
1745 case 24:
|
|
1746 gtk_option_menu_set_history(GTK_OPTION_MENU(abr_option_menu),
|
|
1747 2);
|
|
1748 break;
|
|
1749 case 32:
|
|
1750 gtk_option_menu_set_history(GTK_OPTION_MENU(abr_option_menu),
|
|
1751 3);
|
|
1752 break;
|
|
1753 case 40:
|
|
1754 gtk_option_menu_set_history(GTK_OPTION_MENU(abr_option_menu),
|
|
1755 4);
|
|
1756 break;
|
|
1757 case 48:
|
|
1758 gtk_option_menu_set_history(GTK_OPTION_MENU(abr_option_menu),
|
|
1759 5);
|
|
1760 break;
|
|
1761 case 56:
|
|
1762 gtk_option_menu_set_history(GTK_OPTION_MENU(abr_option_menu),
|
|
1763 6);
|
|
1764 break;
|
|
1765 case 64:
|
|
1766 gtk_option_menu_set_history(GTK_OPTION_MENU(abr_option_menu),
|
|
1767 7);
|
|
1768 break;
|
|
1769 case 80:
|
|
1770 gtk_option_menu_set_history(GTK_OPTION_MENU(abr_option_menu),
|
|
1771 8);
|
|
1772 break;
|
|
1773 case 96:
|
|
1774 gtk_option_menu_set_history(GTK_OPTION_MENU(abr_option_menu),
|
|
1775 9);
|
|
1776 break;
|
|
1777 case 112:
|
|
1778 gtk_option_menu_set_history(GTK_OPTION_MENU(abr_option_menu),
|
|
1779 10);
|
|
1780 break;
|
|
1781 case 128:
|
|
1782 gtk_option_menu_set_history(GTK_OPTION_MENU(abr_option_menu),
|
|
1783 11);
|
|
1784 break;
|
|
1785 case 160:
|
|
1786 gtk_option_menu_set_history(GTK_OPTION_MENU(abr_option_menu),
|
|
1787 12);
|
|
1788 break;
|
|
1789 case 192:
|
|
1790 gtk_option_menu_set_history(GTK_OPTION_MENU(abr_option_menu),
|
|
1791 13);
|
|
1792 break;
|
|
1793 case 224:
|
|
1794 gtk_option_menu_set_history(GTK_OPTION_MENU(abr_option_menu),
|
|
1795 14);
|
|
1796 break;
|
|
1797 case 256:
|
|
1798 gtk_option_menu_set_history(GTK_OPTION_MENU(abr_option_menu),
|
|
1799 15);
|
|
1800 break;
|
|
1801 case 320:
|
|
1802 gtk_option_menu_set_history(GTK_OPTION_MENU(abr_option_menu),
|
|
1803 16);
|
|
1804 break;
|
|
1805
|
|
1806 }
|
|
1807
|
|
1808 /* Quality Level */
|
|
1809
|
|
1810 vbr_options_hbox3 = gtk_hbox_new(FALSE, 5);
|
|
1811 gtk_container_set_border_width(GTK_CONTAINER(vbr_options_hbox3),
|
|
1812 5);
|
|
1813 gtk_container_add(GTK_CONTAINER(vbr_options_vbox),
|
|
1814 vbr_options_hbox3);
|
|
1815
|
|
1816 vbr_quality_label = gtk_label_new("VBR quality level:");
|
|
1817 gtk_misc_set_alignment(GTK_MISC(vbr_quality_label), 0, 0.5);
|
|
1818 gtk_box_pack_start(GTK_BOX(vbr_options_hbox3), vbr_quality_label,
|
|
1819 TRUE, TRUE, 0);
|
|
1820
|
|
1821 vbr_quality_adj = gtk_adjustment_new(4, 0, 9, 1, 1, 1);
|
|
1822 vbr_quality_spin =
|
|
1823 gtk_spin_button_new(GTK_ADJUSTMENT(vbr_quality_adj), 8, 0);
|
|
1824 gtk_widget_set_usize(vbr_quality_spin, 20, -1);
|
|
1825 gtk_box_pack_start(GTK_BOX(vbr_options_hbox3), vbr_quality_spin,
|
|
1826 TRUE, TRUE, 0);
|
|
1827 gtk_signal_connect(GTK_OBJECT(vbr_quality_adj), "value-changed",
|
|
1828 GTK_SIGNAL_FUNC(vbr_qual), NULL);
|
|
1829
|
|
1830 gtk_tooltips_set_tip(GTK_TOOLTIPS(vbr_tips), vbr_quality_spin,
|
|
1831 "highest:0;\nlowest:9;\ndefault:4;", "");
|
|
1832
|
|
1833 gtk_spin_button_set_value(GTK_SPIN_BUTTON(vbr_quality_spin),
|
|
1834 vbr_quality_val);
|
|
1835
|
|
1836 /* Xing Header */
|
|
1837
|
|
1838 xing_header_toggle =
|
|
1839 gtk_check_button_new_with_label("Don't write Xing VBR header");
|
|
1840 gtk_box_pack_start(GTK_BOX(vbr_options_vbox), xing_header_toggle,
|
|
1841 FALSE, FALSE, 2);
|
|
1842 gtk_signal_connect(GTK_OBJECT(xing_header_toggle), "toggled",
|
|
1843 GTK_SIGNAL_FUNC(toggle_xing), NULL);
|
|
1844
|
|
1845 if (toggle_xing_val == 0)
|
|
1846 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON
|
|
1847 (xing_header_toggle), TRUE);
|
|
1848
|
|
1849
|
|
1850
|
|
1851 /* Add the Notebook */
|
|
1852
|
|
1853 gtk_notebook_append_page(GTK_NOTEBOOK(notebook), vbr_vbox,
|
|
1854 gtk_label_new("VBR/ABR"));
|
|
1855
|
|
1856
|
|
1857 /* Tags */
|
|
1858
|
|
1859 tags_vbox = gtk_vbox_new(FALSE, 5);
|
|
1860 gtk_container_set_border_width(GTK_CONTAINER(tags_vbox), 5);
|
|
1861
|
|
1862 tags_tips = gtk_tooltips_new();
|
|
1863
|
|
1864 /* Frame Params */
|
|
1865
|
|
1866 tags_frames_frame = gtk_frame_new("Frame params:");
|
|
1867 gtk_container_set_border_width(GTK_CONTAINER(tags_frames_frame),
|
|
1868 5);
|
|
1869 gtk_box_pack_start(GTK_BOX(tags_vbox), tags_frames_frame, FALSE,
|
|
1870 FALSE, 2);
|
|
1871
|
|
1872 tags_frames_hbox = gtk_hbox_new(FALSE, 5);
|
|
1873 gtk_container_set_border_width(GTK_CONTAINER(tags_frames_hbox), 5);
|
|
1874 gtk_container_add(GTK_CONTAINER(tags_frames_frame),
|
|
1875 tags_frames_hbox);
|
|
1876
|
|
1877 tags_copyright_toggle =
|
|
1878 gtk_check_button_new_with_label("Mark as copyright");
|
|
1879 gtk_box_pack_start(GTK_BOX(tags_frames_hbox),
|
|
1880 tags_copyright_toggle, FALSE, FALSE, 2);
|
|
1881 gtk_signal_connect(GTK_OBJECT(tags_copyright_toggle), "toggled",
|
|
1882 GTK_SIGNAL_FUNC(toggle_copyright), NULL);
|
|
1883
|
|
1884 if (mark_copyright_val == 1)
|
|
1885 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON
|
|
1886 (tags_copyright_toggle), TRUE);
|
|
1887
|
|
1888 tags_original_toggle =
|
|
1889 gtk_check_button_new_with_label("Mark as original");
|
|
1890 gtk_box_pack_start(GTK_BOX(tags_frames_hbox), tags_original_toggle,
|
|
1891 FALSE, FALSE, 2);
|
|
1892 gtk_signal_connect(GTK_OBJECT(tags_original_toggle), "toggled",
|
|
1893 GTK_SIGNAL_FUNC(toggle_original), NULL);
|
|
1894
|
|
1895 if (mark_original_val == 1)
|
|
1896 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON
|
|
1897 (tags_original_toggle), TRUE);
|
|
1898
|
|
1899 /* ID3 Params */
|
|
1900
|
|
1901 tags_id3_frame = gtk_frame_new("ID3 params:");
|
|
1902 gtk_container_set_border_width(GTK_CONTAINER(tags_id3_frame), 5);
|
|
1903 gtk_box_pack_start(GTK_BOX(tags_vbox), tags_id3_frame, FALSE,
|
|
1904 FALSE, 2);
|
|
1905
|
|
1906 tags_id3_vbox = gtk_vbox_new(FALSE, 5);
|
|
1907 gtk_container_set_border_width(GTK_CONTAINER(tags_id3_vbox), 5);
|
|
1908 gtk_container_add(GTK_CONTAINER(tags_id3_frame), tags_id3_vbox);
|
|
1909
|
|
1910 tags_force_id3v2_toggle =
|
|
1911 gtk_check_button_new_with_label
|
|
1912 ("Force addition of version 2 tag");
|
|
1913 gtk_box_pack_start(GTK_BOX(tags_id3_vbox), tags_force_id3v2_toggle,
|
|
1914 FALSE, FALSE, 2);
|
|
1915 gtk_signal_connect(GTK_OBJECT(tags_force_id3v2_toggle), "toggled",
|
|
1916 GTK_SIGNAL_FUNC(force_v2_toggle), NULL);
|
|
1917
|
|
1918 tags_id3_hbox = gtk_hbox_new(FALSE, 5);
|
|
1919 gtk_container_add(GTK_CONTAINER(tags_id3_vbox), tags_id3_hbox);
|
|
1920
|
|
1921 tags_only_v1_toggle =
|
|
1922 gtk_check_button_new_with_label("Only add v1 tag");
|
|
1923 gtk_box_pack_start(GTK_BOX(tags_id3_hbox), tags_only_v1_toggle,
|
|
1924 FALSE, FALSE, 2);
|
|
1925 gtk_signal_connect(GTK_OBJECT(tags_only_v1_toggle), "toggled",
|
|
1926 GTK_SIGNAL_FUNC(id3_only_version), "v1");
|
|
1927
|
|
1928 tags_only_v2_toggle =
|
|
1929 gtk_check_button_new_with_label("Only add v2 tag");
|
|
1930 gtk_box_pack_start(GTK_BOX(tags_id3_hbox), tags_only_v2_toggle,
|
|
1931 FALSE, FALSE, 2);
|
|
1932 gtk_signal_connect(GTK_OBJECT(tags_only_v2_toggle), "toggled",
|
|
1933 GTK_SIGNAL_FUNC(id3_only_version), "v2");
|
|
1934
|
|
1935 if (force_v2_val == 1)
|
|
1936 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON
|
|
1937 (tags_force_id3v2_toggle), TRUE);
|
|
1938
|
|
1939 if (only_v1_val == 1)
|
|
1940 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON
|
|
1941 (tags_only_v1_toggle), TRUE);
|
|
1942
|
|
1943 if (only_v2_val == 1)
|
|
1944 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON
|
|
1945 (tags_only_v2_toggle), TRUE);
|
|
1946
|
|
1947 /* Add the Notebook */
|
|
1948
|
|
1949 gtk_notebook_append_page(GTK_NOTEBOOK(notebook), tags_vbox,
|
|
1950 gtk_label_new("Tags"));
|
|
1951
|
|
1952
|
|
1953
|
|
1954
|
|
1955 /* The Rest */
|
|
1956
|
|
1957 /* Buttons */
|
|
1958
|
|
1959 configure_bbox = gtk_hbutton_box_new();
|
|
1960 gtk_button_box_set_layout(GTK_BUTTON_BOX(configure_bbox),
|
|
1961 GTK_BUTTONBOX_END);
|
|
1962 gtk_button_box_set_spacing(GTK_BUTTON_BOX(configure_bbox), 5);
|
|
1963 gtk_box_pack_start(GTK_BOX(vbox), configure_bbox, FALSE, FALSE, 0);
|
|
1964
|
985
|
1965 configure_cancel = gtk_button_new_from_stock(GTK_STOCK_CANCEL);
|
|
1966 gtk_signal_connect_object(GTK_OBJECT(configure_cancel), "clicked",
|
|
1967 GTK_SIGNAL_FUNC(gtk_widget_destroy),
|
|
1968 GTK_OBJECT(configure_win));
|
|
1969 GTK_WIDGET_SET_FLAGS(configure_cancel, GTK_CAN_DEFAULT);
|
|
1970 gtk_box_pack_start(GTK_BOX(configure_bbox), configure_cancel, TRUE,
|
|
1971 TRUE, 0);
|
|
1972
|
|
1973 configure_ok = gtk_button_new_from_stock(GTK_STOCK_OK);
|
984
|
1974 gtk_signal_connect(GTK_OBJECT(configure_ok), "clicked",
|
|
1975 GTK_SIGNAL_FUNC(configure_ok_cb), NULL);
|
|
1976 GTK_WIDGET_SET_FLAGS(configure_ok, GTK_CAN_DEFAULT);
|
|
1977 gtk_box_pack_start(GTK_BOX(configure_bbox), configure_ok, TRUE,
|
|
1978 TRUE, 0);
|
|
1979 gtk_widget_show(configure_ok);
|
|
1980 gtk_widget_grab_default(configure_ok);
|
|
1981
|
|
1982 /* Set States */
|
|
1983
|
|
1984 if (vbr_on == 1)
|
|
1985 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(vbr_toggle),
|
|
1986 TRUE);
|
|
1987 else
|
|
1988 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(vbr_toggle),
|
|
1989 FALSE);
|
|
1990
|
|
1991 /* Show it! */
|
|
1992
|
|
1993 gtk_widget_show_all(configure_win);
|
|
1994
|
|
1995 }
|
|
1996 }
|