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