OSDN Git Service

LinGui: continue callbacks.c reduction. move audio tab handling to separate
[handbrake-jp/handbrake-jp-git.git] / gtk / src / makedeps.c
1 #include <glib.h>
2 #include <glib-object.h>
3 #include <glib/gstdio.h>
4 #include <string.h>
5 #include "values.h"
6 #include "plist.h"
7
8 typedef struct
9 {
10         const gchar *widget_name;
11         const gchar *dep_name;
12         const gchar *enable_value;
13         const gboolean disable_if_equal;
14 } dependency_t;
15
16 static dependency_t dep_map[] =
17 {
18         {"title", "queue_add", "none", TRUE},
19         {"title", "queue_add_menu", "none", TRUE},
20         {"title", "preview_button", "none", TRUE},
21         {"title", "show_preview_menu", "none", TRUE},
22         {"title", "preview_frame", "none", TRUE},
23         {"title", "picture_label", "none", TRUE},
24         {"title", "picture_tab", "none", TRUE},
25         {"title", "chapters_label", "none", TRUE},
26         {"title", "chapters_tab", "none", TRUE},
27         {"title", "title", "none", TRUE},
28         {"title", "start_chapter", "none", TRUE},
29         {"title", "end_chapter", "none", TRUE},
30         {"vquality_type_bitrate", "video_bitrate", "TRUE", FALSE},
31         {"vquality_type_target", "video_target_size", "TRUE", FALSE},
32         {"vquality_type_constant", "video_quality", "TRUE", FALSE},
33         {"vquality_type_constant", "constant_rate_factor", "TRUE", FALSE},
34         {"vquality_type_constant", "two_pass", "TRUE", TRUE},
35         {"vquality_type_constant", "turbo", "TRUE", TRUE},
36         {"two_pass", "turbo", "TRUE", FALSE},
37         {"container", "large_mp4", "mp4|m4v", FALSE},
38         {"container", "http_optimize_mp4", "mp4|m4v", FALSE},
39         {"container", "ipod_file", "mp4|m4v", FALSE},
40         {"decomb", "deinterlace", "TRUE", TRUE},
41         {"decomb", "tweak_deinterlace", "TRUE", TRUE},
42         {"autocrop", "crop_top", "FALSE", FALSE},
43         {"autocrop", "crop_bottom", "FALSE", FALSE},
44         {"autocrop", "crop_left", "FALSE", FALSE},
45         {"autocrop", "crop_right", "FALSE", FALSE},
46         {"autoscale", "scale_width", "FALSE", FALSE},
47         {"autoscale", "scale_height", "FALSE", FALSE},
48         {"anamorphic", "keep_aspect", "FALSE", FALSE},
49         {"anamorphic", "scale_height", "FALSE", FALSE},
50         {"keep_aspect", "scale_height", "FALSE", FALSE},
51         {"video_codec", "x264_tab", "x264", FALSE},
52         {"video_codec", "x264_tab_label", "x264", FALSE},
53         {"video_codec", "ipod_file", "x264", FALSE},
54         {"audio_codec", "audio_bitrate", "ac3", TRUE},
55         {"audio_codec", "audio_rate", "ac3", TRUE},
56         {"audio_codec", "audio_mix", "ac3", TRUE},
57         {"audio_codec", "audio_drc", "ac3", TRUE},
58         {"x264_bframes", "x264_weighted_bframes", "0", TRUE},
59         {"x264_bframes", "x264_brdo", "0", TRUE},
60         {"x264_bframes", "x264_bime", "0", TRUE},
61         {"x264_bframes", "x264_bpyramid", "<2", TRUE},
62         {"x264_bframes", "x264_direct", "0", TRUE},
63         {"x264_refs", "x264_mixed_refs", "<2", TRUE},
64         {"x264_cabac", "x264_trellis", "TRUE", FALSE},
65         {"x264_subme", "x264_brdo", "<6", TRUE},
66         {"x264_me", "x264_merange", "umh|esa", FALSE},
67         {"chapter_markers", "chapters_list", "TRUE", FALSE},
68         {"use_source_name", "chapters_in_destination", "TRUE", FALSE},
69 };
70
71 int
72 main(gint argc, gchar *argv[])
73 {
74         gint ii, jj;
75         GValue *top;
76         gint count = sizeof(dep_map) / sizeof(dependency_t);
77
78         g_type_init();
79
80         top = ghb_dict_value_new();
81         for (ii = 0; ii < count; ii++)
82         {
83                 const gchar *name;
84                 GValue *array;
85
86                 name = dep_map[ii].widget_name;
87                 if (ghb_dict_lookup(top, name))
88                         continue;
89                 array = ghb_array_value_new(8);
90                 for (jj = 0; jj < count; jj++)
91                 {
92                         if (strcmp(name, dep_map[jj].widget_name) == 0)
93                         {
94                                 ghb_array_append(array,
95                                         ghb_value_dup(ghb_string_value(dep_map[jj].dep_name)));
96                         }
97                 }
98                 ghb_dict_insert(top, g_strdup(name), array);
99         }
100         ghb_plist_write_file("widget_deps", top);
101
102         // reverse map
103         top = ghb_dict_value_new();
104         for (ii = 0; ii < count; ii++)
105         {
106                 const gchar *name;
107                 GValue *array;
108
109                 name = dep_map[ii].dep_name;
110                 if (ghb_dict_lookup(top, name))
111                         continue;
112                 array = ghb_array_value_new(8);
113                 for (jj = 0; jj < count; jj++)
114                 {
115                         if (strcmp(name, dep_map[jj].dep_name) == 0)
116                         {
117                                 GValue *data;
118                                 data = ghb_array_value_new(3);
119                                 ghb_array_append(data, ghb_value_dup(
120                                         ghb_string_value(dep_map[jj].widget_name)));
121                                 ghb_array_append(data, ghb_value_dup(
122                                         ghb_string_value(dep_map[jj].enable_value)));
123                                 ghb_array_append(data, ghb_value_dup(
124                                         ghb_boolean_value(dep_map[jj].disable_if_equal)));
125                                 ghb_array_append(array, data);
126                         }
127                 }
128                 ghb_dict_insert(top, g_strdup(name), array);
129         }
130         ghb_plist_write_file("widget_reverse_deps", top);
131         return 0;
132 }
133