x264_gtk_private.h
上传用户:hjq518
上传日期:2021-12-09
资源大小:5084k
文件大小:4k
源码类别:

Audio

开发平台:

Visual C++

  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. #ifndef X264_GTK_PRIVATE_H
  21. #define X264_GTK_PRIVATE_H
  22. #include <common/osdep.h>
  23. typedef struct Bitrate_ Bitrate;
  24. typedef struct Rate_Control_ Rate_Control;
  25. typedef struct MB_ MB;
  26. typedef struct More_ More;
  27. typedef struct Cqm_ Cqm;
  28. typedef struct Zones_ Zones;
  29. typedef struct X264_Gui_Config_ X264_Gui_Config;
  30. typedef struct X264_Gui_Zone_ X264_Gui_Zone;
  31. struct Bitrate_
  32. {
  33.   GtkWidget *pass;
  34.   GtkWidget *label;
  35.   GtkWidget *w_quantizer;
  36.   GtkWidget *w_average_bitrate;
  37.   GtkWidget *w_target_bitrate;
  38.   GtkWidget *update_statfile;
  39.   GtkWidget *statsfile_name;
  40. };
  41. struct Rate_Control_
  42. {
  43.   /* bitrate */
  44.   struct
  45.   {
  46.     GtkWidget *keyframe_boost;
  47.     GtkWidget *bframes_reduction;
  48.     GtkWidget *bitrate_variability;
  49.   }bitrate;
  50.   /* Quantization Limits */
  51.   struct
  52.   {
  53.     GtkWidget *min_qp;
  54.     GtkWidget *max_qp;
  55.     GtkWidget *max_qp_step;
  56.   }quantization_limits;
  57.   /* Scene Cuts */
  58.   struct
  59.   {
  60.     GtkWidget *scene_cut_threshold;
  61.     GtkWidget *min_idr_frame_interval;
  62.     GtkWidget *max_idr_frame_interval;
  63.   }scene_cuts;
  64.   /* VBV */
  65.   struct
  66.   {
  67.     GtkWidget *vbv_max_bitrate;
  68.     GtkWidget *vbv_buffer_size;
  69.     GtkWidget *vbv_buffer_init;
  70.   }vbv;
  71. };
  72. struct MB_
  73. {
  74.   /* Partitions */
  75.   struct
  76.   {
  77.     GtkWidget *transform_8x8;
  78.     GtkWidget *pframe_search_8;
  79.     GtkWidget *bframe_search_8;
  80.     GtkWidget *pframe_search_4;
  81.     GtkWidget *inter_search_8;
  82.     GtkWidget *inter_search_4;
  83.   }partitions;
  84.   /* B-frames */
  85.   struct
  86.   {
  87.     GtkWidget *bframe_pyramid;
  88.     GtkWidget *bidir_me;
  89.     GtkWidget *bframe_adaptive;
  90.     GtkWidget *weighted_bipred;
  91.     GtkWidget *bframe;
  92.     GtkWidget *bframe_bias;
  93.     GtkWidget *direct_mode;
  94.   }bframes;
  95. };
  96. struct More_
  97. {
  98.   /* Motion estimation */
  99.   struct
  100.   {
  101.     GtkWidget *partition_decision;
  102.     GtkWidget *method;
  103.     GtkWidget *range;
  104.     GtkWidget *chroma_me;
  105.     GtkWidget *max_ref_frames;
  106.     GtkWidget *mixed_refs;
  107.     GtkWidget *fast_pskip;
  108.     GtkWidget *dct_decimate;
  109.   }motion_estimation;
  110.   /* Misc. Options */
  111.   struct
  112.   {
  113.     GtkWidget *sample_ar_x;
  114.     GtkWidget *sample_ar_y;
  115.     GtkWidget *threads;
  116.     GtkWidget *cabac;
  117.     GtkWidget *trellis;
  118.     GtkWidget *noise_reduction;
  119.     struct
  120.     {
  121.       GtkWidget *deblocking_filter;
  122.       GtkWidget *strength;
  123.       GtkWidget *threshold;
  124.     }df;
  125.   }misc;
  126.   struct
  127.   {
  128.     GtkWidget *log_level;
  129.     GtkWidget *fourcc;
  130.   }debug;
  131. };
  132. struct Cqm_
  133. {
  134.   GtkWidget *radio_flat;
  135.   GtkWidget *radio_jvt;
  136.   GtkWidget *radio_custom;
  137.   GtkWidget *cqm_file;
  138.   GtkWidget *cqm_4iy[16];
  139.   GtkWidget *cqm_4ic[16];
  140.   GtkWidget *cqm_4py[16];
  141.   GtkWidget *cqm_4pc[16];
  142.   GtkWidget *cqm_8iy[64];
  143.   GtkWidget *cqm_8py[64];
  144. };
  145. struct Zones_
  146. {
  147.   GtkWidget *list_zones;
  148. };
  149. struct X264_Gui_Config_
  150. {
  151.   Bitrate      bitrate;
  152.   Rate_Control rate_control;
  153.   MB           mb;
  154.   More         more;
  155.   Cqm          cqm;
  156.   Zones        zones;
  157. };
  158. struct X264_Gui_Zone_
  159. {
  160.   GtkWidget *entry_start_frame;
  161.   GtkWidget *radio_qp;
  162.   GtkWidget *entry_qp;
  163.   GtkWidget *entry_weight;
  164. };
  165. gchar *x264_gtk_path (const char* more_path);
  166. #endif /* X264_GTK_PRIVATE_H */