⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 x264_gtk_rc.c.svn-base

📁 一個影像串流的壓縮方式H264加密方式
💻 SVN-BASE
字号:
#include <gtk/gtk.h>#include "x264_gtk_private.h"/* Callbacks */static void _insert_numeric (GtkEditable *editable,                             const gchar *text,                             gint         length,                             gint        *position,                             gpointer     data);GtkWidget *_rate_control_page (X264_Gui_Config *config){  GtkWidget     *vbox;  GtkWidget     *frame;  GtkWidget     *table;  GtkWidget     *label;  vbox = gtk_vbox_new (FALSE, 0);  gtk_container_set_border_width (GTK_CONTAINER (vbox), 6);  /* bitrate */  frame = gtk_frame_new ("Bitrate");  gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, TRUE, 6);  gtk_widget_show (frame);  table = gtk_table_new (3, 2, TRUE);  gtk_table_set_row_spacings (GTK_TABLE (table), 6);  gtk_container_set_border_width (GTK_CONTAINER (table), 6);  gtk_container_add (GTK_CONTAINER (frame), table);  gtk_widget_show (table);  label = gtk_label_new ("Keyframe boost (%)");  gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);  gtk_table_attach_defaults (GTK_TABLE (table), label,                             0, 1, 0, 1);  gtk_widget_show (label);  config->rate_control.bitrate.keyframe_boost = gtk_entry_new_with_max_length (3);  g_signal_connect (G_OBJECT (config->rate_control.bitrate.keyframe_boost),                    "insert-text",                    G_CALLBACK (_insert_numeric),                    NULL);  gtk_table_attach_defaults (GTK_TABLE (table),                             config->rate_control.bitrate.keyframe_boost,                             1, 2, 0, 1);  gtk_widget_show (config->rate_control.bitrate.keyframe_boost);  label = gtk_label_new ("B-frames reduction (%)");  gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);  gtk_table_attach_defaults (GTK_TABLE (table), label,                             0, 1, 1, 2);  gtk_widget_show (label);  config->rate_control.bitrate.bframes_reduction = gtk_entry_new_with_max_length (5);  gtk_table_attach_defaults (GTK_TABLE (table),                             config->rate_control.bitrate.bframes_reduction,                             1, 2, 1, 2);  gtk_widget_show (config->rate_control.bitrate.bframes_reduction);  label = gtk_label_new ("Bitrate variability (%)");  gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);  gtk_table_attach_defaults (GTK_TABLE (table), label,                             0, 1, 2, 3);  gtk_widget_show (label);  config->rate_control.bitrate.bitrate_variability = gtk_entry_new_with_max_length (3);  gtk_table_attach_defaults (GTK_TABLE (table),                             config->rate_control.bitrate.bitrate_variability,                             1, 2, 2, 3);  gtk_widget_show (config->rate_control.bitrate.bitrate_variability);  /* Quantization limits */  frame = gtk_frame_new ("Quantization limits");  gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, TRUE, 6);  gtk_widget_show (frame);  table = gtk_table_new (3, 2, TRUE);  gtk_table_set_row_spacings (GTK_TABLE (table), 6);  gtk_container_set_border_width (GTK_CONTAINER (table), 6);  gtk_container_add (GTK_CONTAINER (frame), table);  gtk_widget_show (table);  label = gtk_label_new ("Min QP");  gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);  gtk_table_attach_defaults (GTK_TABLE (table), label,                             0, 1, 0, 1);  gtk_widget_show (label);  config->rate_control.quantization_limits.min_qp = gtk_entry_new_with_max_length (3);  gtk_table_attach_defaults (GTK_TABLE (table),                             config->rate_control.quantization_limits.min_qp,                             1, 2, 0, 1);  gtk_widget_show (config->rate_control.quantization_limits.min_qp);  label = gtk_label_new ("Max QP");  gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);  gtk_table_attach_defaults (GTK_TABLE (table), label,                             0, 1, 1, 2);  gtk_widget_show (label);  config->rate_control.quantization_limits.max_qp = gtk_entry_new_with_max_length (3);  gtk_table_attach_defaults (GTK_TABLE (table),                             config->rate_control.quantization_limits.max_qp,                             1, 2, 1, 2);  gtk_widget_show (config->rate_control.quantization_limits.max_qp);  label = gtk_label_new ("Max QP Step");  gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);  gtk_table_attach_defaults (GTK_TABLE (table), label,                             0, 1, 2, 3);  gtk_widget_show (label);  config->rate_control.quantization_limits.max_qp_step = gtk_entry_new_with_max_length (3);  gtk_table_attach_defaults (GTK_TABLE (table),                             config->rate_control.quantization_limits.max_qp_step,                             1, 2, 2, 3);  gtk_widget_show (config->rate_control.quantization_limits.max_qp_step);  /* Scene Cuts */  frame = gtk_frame_new ("Scene Cuts");  gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, TRUE, 6);  gtk_widget_show (frame);  table = gtk_table_new (3, 2, TRUE);  gtk_table_set_row_spacings (GTK_TABLE (table), 6);  gtk_container_set_border_width (GTK_CONTAINER (table), 6);  gtk_container_add (GTK_CONTAINER (frame), table);  gtk_widget_show (table);  label = gtk_label_new ("Scene Cut Threshold");  gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);  gtk_table_attach_defaults (GTK_TABLE (table), label,                             0, 1, 0, 1);  gtk_widget_show (label);  config->rate_control.scene_cuts.scene_cut_threshold = gtk_entry_new_with_max_length (3);  gtk_table_attach_defaults (GTK_TABLE (table),                             config->rate_control.scene_cuts.scene_cut_threshold,                             1, 2, 0, 1);  gtk_widget_show (config->rate_control.scene_cuts.scene_cut_threshold);  label = gtk_label_new ("Min IDR-frame interval");  gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);  gtk_table_attach_defaults (GTK_TABLE (table), label,                             0, 1, 1, 2);  gtk_widget_show (label);  config->rate_control.scene_cuts.min_idr_frame_interval = gtk_entry_new_with_max_length (3);  gtk_table_attach_defaults (GTK_TABLE (table),                             config->rate_control.scene_cuts.min_idr_frame_interval,                             1, 2, 1, 2);  gtk_widget_show (config->rate_control.scene_cuts.min_idr_frame_interval);  label = gtk_label_new ("Max IDR-frame interval");  gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);  gtk_table_attach_defaults (GTK_TABLE (table), label,                             0, 1, 2, 3);  gtk_widget_show (label);  config->rate_control.scene_cuts.max_idr_frame_interval = gtk_entry_new_with_max_length (3);  gtk_table_attach_defaults (GTK_TABLE (table),                             config->rate_control.scene_cuts.max_idr_frame_interval,                             1, 2, 2, 3);  gtk_widget_show (config->rate_control.scene_cuts.max_idr_frame_interval);  return vbox;}static void_insert_numeric (GtkEditable *editable,                 const gchar *text,                 gint         length,                 gint        *position,                 gpointer     data){  gint i;  gint j;  gchar *result;  result = (gchar *)g_malloc (sizeof (gchar) * (length + 1));  if (!result)    return;  for (i = 0, j = 0; i < length; i++)    {      if (g_ascii_isdigit (text[i]))        {          result[j] = text[i];          j++;        }    }  result[j] = '\0';  g_signal_handlers_block_by_func (editable,				   (gpointer) _insert_numeric, data);  gtk_editable_insert_text (editable, result, j, position);  g_signal_handlers_unblock_by_func (editable,                                     (gpointer) _insert_numeric, data);  g_signal_stop_emission_by_name (editable, "insert-text");  g_free (result);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -