2 #include <glib-object.h>
3 #include <glib/gstdio.h>
10 const gchar *widget_name;
11 const gchar *dep_name;
12 const gchar *enable_value;
13 const gboolean disable_if_equal;
17 static dependency_t dep_map[] =
19 {"title", "queue_add", "none", TRUE, FALSE},
20 {"title", "queue_add_menu", "none", TRUE, FALSE},
21 {"title", "show_picture", "none", TRUE, FALSE},
22 {"title", "show_preview_menu", "none", TRUE, FALSE},
23 {"title", "preview_frame", "none", TRUE, FALSE},
24 {"title", "picture_label", "none", TRUE, FALSE},
25 {"title", "picture_tab", "none", TRUE, FALSE},
26 {"title", "chapters_label", "none", TRUE, FALSE},
27 {"title", "chapters_tab", "none", TRUE, FALSE},
28 {"title", "start_chapter", "none", TRUE, FALSE},
29 {"title", "end_chapter", "none", TRUE, FALSE},
30 {"title", "angle", "none", TRUE, FALSE},
31 {"use_dvdnav", "angle", "FALSE", TRUE, TRUE},
32 {"use_dvdnav", "angle_label", "FALSE", TRUE, TRUE},
33 {"vquality_type_bitrate", "VideoAvgBitrate", "TRUE", FALSE, FALSE},
34 {"vquality_type_target", "VideoTargetSize", "TRUE", FALSE, FALSE},
35 {"vquality_type_constant", "VideoQualitySlider", "TRUE", FALSE, FALSE},
36 {"vquality_type_constant", "constant_rate_factor", "TRUE", FALSE, FALSE},
37 {"vquality_type_constant", "VideoTwoPass", "TRUE", TRUE, FALSE},
38 {"vquality_type_constant", "VideoTurboTwoPass", "TRUE", TRUE, FALSE},
39 {"VideoTwoPass", "VideoTurboTwoPass", "TRUE", FALSE, FALSE},
40 {"FileFormat", "Mp4LargeFile", "mp4", FALSE, TRUE},
41 {"FileFormat", "Mp4HttpOptimize", "mp4", FALSE, TRUE},
42 {"FileFormat", "Mp4iPodCompatible", "mp4", FALSE, TRUE},
43 {"PictureDecombDeinterlace", "PictureDeinterlace", "TRUE", TRUE, TRUE},
44 {"PictureDecombDeinterlace", "PictureDeinterlaceCustom", "TRUE", TRUE, TRUE},
45 {"PictureDecombDeinterlace", "PictureDeinterlaceLabel", "TRUE", TRUE, TRUE},
46 {"PictureDecombDeinterlace", "PictureDecomb", "FALSE", TRUE, TRUE},
47 {"PictureDecombDeinterlace", "PictureDecombCustom", "FALSE", TRUE, TRUE},
48 {"PictureDecombDeinterlace", "PictureDecombLabel", "FALSE", TRUE, TRUE},
49 {"PictureDeinterlace", "PictureDeinterlaceCustom", "custom", FALSE, TRUE},
50 {"PictureDenoise", "PictureDenoiseCustom", "custom", FALSE, TRUE},
51 {"PictureDecomb", "PictureDecombCustom", "custom", FALSE, TRUE},
52 {"PictureDetelecine", "PictureDetelecineCustom", "custom", FALSE, TRUE},
53 {"PictureAutoCrop", "PictureTopCrop", "FALSE", FALSE, FALSE},
54 {"PictureAutoCrop", "PictureBottomCrop", "FALSE", FALSE, FALSE},
55 {"PictureAutoCrop", "PictureLeftCrop", "FALSE", FALSE, FALSE},
56 {"PictureAutoCrop", "PictureRightCrop", "FALSE", FALSE, FALSE},
57 {"VideoEncoder", "x264_tab", "x264", FALSE, FALSE},
58 {"VideoEncoder", "x264_tab_label", "x264", FALSE, FALSE},
59 {"VideoEncoder", "Mp4iPodCompatible", "x264", FALSE, FALSE},
60 {"AudioEncoder", "AudioBitrate", "ac3|dts|auto", TRUE, FALSE},
61 {"AudioEncoder", "AudioSamplerate", "ac3|dts|auto", TRUE, FALSE},
62 {"AudioEncoder", "AudioMixdown", "ac3|dts|auto", TRUE, FALSE},
63 {"AudioEncoder", "AudioTrackDRCSlider", "ac3|dts|auto", TRUE, FALSE},
64 {"AudioEncoder", "drc_label", "ac3|dts|auto", TRUE, FALSE},
65 {"x264_bframes", "x264_weighted_bframes", "0", TRUE, FALSE},
66 {"x264_bframes", "x264_bpyramid", "<2", TRUE, FALSE},
67 {"x264_bframes", "x264_direct", "0", TRUE, FALSE},
68 {"x264_bframes", "x264_b_adapt", "0", TRUE, FALSE},
69 {"x264_refs", "x264_mixed_refs", "<2", TRUE, FALSE},
70 {"x264_cabac", "x264_trellis", "TRUE", FALSE, FALSE},
71 {"x264_subme", "x264_psy_rd", "<6", TRUE, FALSE},
72 {"x264_subme", "x264_psy_trell", "<6", TRUE, FALSE},
73 {"x264_cabac", "x264_psy_trell", "TRUE", FALSE, FALSE},
74 {"x264_trellis", "x264_psy_trell", "0", TRUE, FALSE},
75 {"x264_mbtree", "x264_bpyramid", "TRUE", TRUE, FALSE},
76 {"ChapterMarkers", "chapters_list", "TRUE", FALSE, FALSE},
77 {"use_source_name", "chapters_in_destination", "TRUE", FALSE, FALSE},
78 {"use_source_name", "title_no_in_destination", "TRUE", FALSE, FALSE},
82 main(gint argc, gchar *argv[])
86 gint count = sizeof(dep_map) / sizeof(dependency_t);
90 top = ghb_dict_value_new();
91 for (ii = 0; ii < count; ii++)
96 name = dep_map[ii].widget_name;
97 if (ghb_dict_lookup(top, name))
99 array = ghb_array_value_new(8);
100 for (jj = 0; jj < count; jj++)
102 if (strcmp(name, dep_map[jj].widget_name) == 0)
104 ghb_array_append(array,
105 ghb_value_dup(ghb_string_value(dep_map[jj].dep_name)));
108 ghb_dict_insert(top, g_strdup(name), array);
110 ghb_plist_write_file("widget.deps", top);
113 top = ghb_dict_value_new();
114 for (ii = 0; ii < count; ii++)
119 name = dep_map[ii].dep_name;
120 if (ghb_dict_lookup(top, name))
122 array = ghb_array_value_new(8);
123 for (jj = 0; jj < count; jj++)
125 if (strcmp(name, dep_map[jj].dep_name) == 0)
128 data = ghb_array_value_new(3);
129 ghb_array_append(data, ghb_value_dup(
130 ghb_string_value(dep_map[jj].widget_name)));
131 ghb_array_append(data, ghb_value_dup(
132 ghb_string_value(dep_map[jj].enable_value)));
133 ghb_array_append(data, ghb_value_dup(
134 ghb_boolean_value(dep_map[jj].disable_if_equal)));
135 ghb_array_append(data, ghb_value_dup(
136 ghb_boolean_value(dep_map[jj].hide)));
137 ghb_array_append(array, data);
140 ghb_dict_insert(top, g_strdup(name), array);
142 ghb_plist_write_file("widget_reverse.deps", top);