]> git.sesse.net Git - x264/blob - gtk/x264_gtk_private.h
Update file headers throughout x264
[x264] / gtk / x264_gtk_private.h
1 /*****************************************************************************
2  * x264_gtk_private.h: h264 gtk encoder frontend
3  *****************************************************************************
4  * Copyright (C) 2006 Vincent Torri
5  *
6  * This program is free software; you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License as published by
8  * the Free Software Foundation; either version 2 of the License, or
9  * (at your option) any later version.
10  *
11  * This program is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14  * GNU General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License
17  * along with this program; if not, write to the Free Software
18  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02111, USA.
19  *****************************************************************************/
20
21 #ifndef X264_GTK_PRIVATE_H
22 #define X264_GTK_PRIVATE_H
23
24
25 #include <common/osdep.h>
26
27
28 typedef struct Bitrate_ Bitrate;
29 typedef struct Rate_Control_ Rate_Control;
30 typedef struct MB_ MB;
31 typedef struct More_ More;
32 typedef struct Cqm_ Cqm;
33 typedef struct Zones_ Zones;
34 typedef struct X264_Gui_Config_ X264_Gui_Config;
35 typedef struct X264_Gui_Zone_ X264_Gui_Zone;
36
37 struct Bitrate_
38 {
39   GtkWidget *pass;
40   GtkWidget *label;
41   GtkWidget *w_quantizer;
42   GtkWidget *w_average_bitrate;
43   GtkWidget *w_target_bitrate;
44
45   GtkWidget *update_statfile;
46   GtkWidget *statsfile_name;
47 };
48
49 struct Rate_Control_
50 {
51   /* bitrate */
52   struct
53   {
54     GtkWidget *keyframe_boost;
55     GtkWidget *bframes_reduction;
56     GtkWidget *bitrate_variability;
57   }bitrate;
58
59   /* Quantization Limits */
60   struct
61   {
62     GtkWidget *min_qp;
63     GtkWidget *max_qp;
64     GtkWidget *max_qp_step;
65   }quantization_limits;
66
67   /* Scene Cuts */
68   struct
69   {
70     GtkWidget *scene_cut_threshold;
71     GtkWidget *min_idr_frame_interval;
72     GtkWidget *max_idr_frame_interval;
73   }scene_cuts;
74
75   /* VBV */
76   struct
77   {
78     GtkWidget *vbv_max_bitrate;
79     GtkWidget *vbv_buffer_size;
80     GtkWidget *vbv_buffer_init;
81   }vbv;
82
83 };
84
85 struct MB_
86 {
87   /* Partitions */
88   struct
89   {
90     GtkWidget *transform_8x8;
91     GtkWidget *pframe_search_8;
92     GtkWidget *bframe_search_8;
93     GtkWidget *pframe_search_4;
94     GtkWidget *inter_search_8;
95     GtkWidget *inter_search_4;
96   }partitions;
97
98   /* B-frames */
99   struct
100   {
101     GtkWidget *bframe_pyramid;
102     GtkWidget *bidir_me;
103     GtkWidget *bframe_adaptive;
104     GtkWidget *weighted_bipred;
105     GtkWidget *bframe;
106     GtkWidget *bframe_bias;
107     GtkWidget *direct_mode;
108   }bframes;
109
110 };
111
112 struct More_
113 {
114   /* Motion estimation */
115   struct
116   {
117     GtkWidget *partition_decision;
118     GtkWidget *method;
119     GtkWidget *range;
120     GtkWidget *chroma_me;
121     GtkWidget *max_ref_frames;
122     GtkWidget *mixed_refs;
123     GtkWidget *fast_pskip;
124     GtkWidget *dct_decimate;
125   }motion_estimation;
126
127   /* Misc. Options */
128   struct
129   {
130     GtkWidget *sample_ar_x;
131     GtkWidget *sample_ar_y;
132     GtkWidget *threads;
133     GtkWidget *cabac;
134     GtkWidget *trellis;
135     GtkWidget *noise_reduction;
136
137     struct
138     {
139       GtkWidget *deblocking_filter;
140       GtkWidget *strength;
141       GtkWidget *threshold;
142     }df;
143
144   }misc;
145
146   struct
147   {
148     GtkWidget *log_level;
149     GtkWidget *fourcc;
150   }debug;
151
152 };
153
154 struct Cqm_
155 {
156   GtkWidget *radio_flat;
157   GtkWidget *radio_jvt;
158   GtkWidget *radio_custom;
159   GtkWidget *cqm_file;
160   GtkWidget *cqm_4iy[16];
161   GtkWidget *cqm_4ic[16];
162   GtkWidget *cqm_4py[16];
163   GtkWidget *cqm_4pc[16];
164   GtkWidget *cqm_8iy[64];
165   GtkWidget *cqm_8py[64];
166 };
167
168 struct Zones_
169 {
170   GtkWidget *list_zones;
171 };
172
173 struct X264_Gui_Config_
174 {
175   Bitrate      bitrate;
176   Rate_Control rate_control;
177   MB           mb;
178   More         more;
179   Cqm          cqm;
180   Zones        zones;
181 };
182
183 struct X264_Gui_Zone_
184 {
185   GtkWidget *entry_start_frame;
186   GtkWidget *radio_qp;
187   GtkWidget *entry_qp;
188   GtkWidget *entry_weight;
189 };
190
191 gchar *x264_gtk_path (const char* more_path);
192
193
194 #endif /* X264_GTK_PRIVATE_H */