]> git.sesse.net Git - x264/blob - gtk/x264_gtk.h
Update file headers throughout x264
[x264] / gtk / x264_gtk.h
1 /*****************************************************************************
2  * x264_gtk.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_H
22 #define X264_GTK_H
23
24
25 #include "x264_gtk_enum.h"
26
27 typedef struct X264_Gtk_ X264_Gtk;
28
29 struct X264_Gtk_
30 {
31   /* video properties */
32   gint width;
33   gint height;
34   gint csp;
35
36   /* bitrate */
37   X264_Pass pass;
38   gint average_bitrate;
39   gint target_bitrate;
40   gint quantizer;
41   gint desired_size;
42   gint statsfile_length; /* length of the filename (as returned by strlen) */
43   gchar statsfile_name[4095+1];
44
45   /* rc */
46   gint keyframe_boost;
47   gint bframes_reduction;
48   gint bitrate_variability;
49
50   gint min_qp;
51   gint max_qp;
52   gint max_qp_step;
53
54   gint scene_cut_threshold;
55   gint min_idr_frame_interval;
56   gint max_idr_frame_interval;
57
58   gint    vbv_max_bitrate;
59   gint    vbv_buffer_size;
60   gdouble vbv_buffer_init;
61
62   /* mb */
63
64   gint bframe;  /* max consecutive B frames */
65   gint bframe_bias;
66   X264_Direct_Mode direct_mode;
67
68   /* more */
69   X264_Partition_Decision partition_decision;
70   X264_Me_Method me_method;
71   gint range;
72   gint max_ref_frames;
73
74   gint sample_ar_x;
75   gint sample_ar_y;
76   gint threads;
77   guint trellis;
78   gint noise_reduction;
79   
80   gint strength;
81   gint threshold;
82
83   X264_Debug_Method debug_method;
84   gchar fourcc[4+1];
85
86   /* cqm */
87   X264_Cqm_Preset cqm_preset;
88   gchar           cqm_file[4095+1];
89   guint8          cqm_4iy[16];
90   guint8          cqm_4ic[16];
91   guint8          cqm_4py[16];
92   guint8          cqm_4pc[16];
93   guint8          cqm_8iy[64];
94   guint8          cqm_8py[64];
95
96   /* bitrate */
97   guint stat_write            : 1;
98   guint stat_read             : 1;
99   guint update_statfile       : 1;
100   /* mb - partitions */
101   guint transform_8x8         : 1;
102   guint pframe_search_8       : 1;
103   guint bframe_search_8       : 1;
104   guint pframe_search_4       : 1;
105   guint inter_search_8        : 1;
106   guint inter_search_4        : 1;
107   /* mb - bframes */
108   guint bframe_pyramid        : 1; /* use as reference */
109   guint bidir_me              : 1;
110   guint bframe_adaptive       : 1;
111   guint weighted_bipred       : 1;
112   /* more - me */
113   guint bframe_rdo            : 1;
114   guint chroma_me             : 1;
115   guint mixed_refs            : 1;
116   guint fast_pskip            : 1;
117   guint dct_decimate          : 1;
118   /* more - misc */
119   guint cabac                 : 1;
120   /* more - misc - df */
121   guint deblocking_filter     : 1;
122 };
123
124 x264_param_t *x264_gtk_param_get (X264_Gtk *x264_gtk);
125 X264_Gtk     *x264_gtk_load (void);
126 GtkWidget    *x264_gtk_window_create (GtkWidget *parent);
127 void          x264_gtk_shutdown (GtkWidget *dialog);
128 void          x264_gtk_free (X264_Gtk *x264_gtk);
129
130
131 #endif /* X264_GTK_H */