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

📄 opts.c

📁 Mplayer源码
💻 C
📖 第 1 页 / 共 5 页
字号:
#include <sys/types.h>#include <sys/stat.h>#include <unistd.h>#include <string.h>#include <gdk/gdkkeysyms.h>#include <gtk/gtk.h>#include "../../config.h"#include "../../help_mp.h"#include "../../mixer.h"#include "../../libao2/audio_out.h"#include "../../libvo/video_out.h"#include "../app.h"#include "../cfg.h"#include "../interface.h"#include "../widgets.h"#include "opts.h"#include "fs.h"#include "common.h"typedef struct sh_video_t sh_video_t;typedef struct sh_audio_t sh_audio_t;// for mpcodecs_[av]d_drivers:#include "../../libmpcodecs/vd.h"#include "../../libmpcodecs/ad.h"       GtkWidget * Preferences = NULL;static GtkWidget * AConfig;static GtkWidget * VConfig;//static GtkWidget * BLoadSubtitle;static GtkWidget * BLoadFont;static GtkWidget * BOk;static GtkWidget * BCancel;static GtkWidget * CLADrivers;static GtkWidget * CLVDrivers;//static GtkWidget * ESubtitleName;       GtkWidget * prEFontName;       GtkWidget * prEDVDDevice;       GtkWidget * prECDRomDevice;static GtkWidget * EVFM;static GtkWidget * EAFM;static GtkWidget * CBVFM;static GtkWidget * CBAFM;static GtkWidget * CBAudioEqualizer;//static GtkWidget * CBSurround;static GtkWidget * CBExtraStereo;static GtkWidget * CBNormalize;static GtkWidget * CBSoftwareMixer;static GtkWidget * CBDoubleBuffer;static GtkWidget * CBDR;static GtkWidget * CBFramedrop;static GtkWidget * CBHFramedrop;//static GtkWidget * CBFullScreen;static GtkWidget * CBShowVideoWindow;static GtkWidget * CBNonInterlaved;static GtkWidget * CBIndex;static GtkWidget * CBFlip;static GtkWidget * CBNoAutoSub;static GtkWidget * CBSubUnicode;static GtkWidget * CBSubOverlap;static GtkWidget * CBDumpMPSub;static GtkWidget * CBDumpSrt;static GtkWidget * CBPostprocess;static GtkWidget * CBCache;static GtkWidget * CBLoadFullscreen;static GtkWidget * CBSaveWinPos;static GtkWidget * CBStopXScreenSaver;static GtkWidget * CBPlayBar;static GtkWidget * SBCache;static GtkAdjustment * SBCacheadj;static GtkWidget * CBAutoSync;static GtkWidget * SBAutoSync;static GtkAdjustment * SBAutoSyncadj;static GtkWidget * RBOSDNone;static GtkWidget * RBOSDTandP;static GtkWidget * RBOSDIndicator;static GtkWidget * RBOSDTPTT;static GtkWidget * HSAudioDelay;static GtkWidget * HSExtraStereoMul;static GtkWidget * HSPanscan;static GtkWidget * HSSubDelay;static GtkWidget * HSSubPosition;static GtkWidget * HSSubFPS;static GtkWidget * HSPPQuality;static GtkWidget * HSFPS;static GtkAdjustment * HSExtraStereoMuladj, * HSAudioDelayadj, * HSPanscanadj, * HSSubDelayadj;static GtkAdjustment * HSSubPositionadj, * HSSubFPSadj, * HSPPQualityadj, * HSFPSadj;#ifndef HAVE_FREETYPEstatic GtkWidget     * HSFontFactor;static GtkAdjustment * HSFontFactoradj;#elsestatic GtkWidget     * HSFontBlur, * HSFontOutLine, * HSFontTextScale, * HSFontOSDScale;static GtkAdjustment * HSFontBluradj, * HSFontOutLineadj, * HSFontTextScaleadj, * HSFontOSDScaleadj;static GtkWidget     * CBFontEncoding, * EFontEncoding;static GtkWidget     * RBFontNoAutoScale, * RBFontAutoScaleWidth, * RBFontAutoScaleHeight, * RBFontAutoScaleDiagonal;//static GtkWidget     * AutoScale;#endif#ifdef USE_ICONVstatic GtkWidget     * CBSubEncoding, * ESubEncoding;#endif#if defined( HAVE_FREETYPE ) || defined( USE_ICONV )static struct { char * name; char * comment;} lEncoding[] = {  { "unicode",     MSGTR_PREFERENCES_FontEncoding1 },  { "iso-8859-1",  MSGTR_PREFERENCES_FontEncoding2 },  { "iso-8859-15", MSGTR_PREFERENCES_FontEncoding3 },  { "iso-8859-2",  MSGTR_PREFERENCES_FontEncoding4 },  { "cp1250",      MSGTR_PREFERENCES_FontEncoding22},  { "iso-8859-3",  MSGTR_PREFERENCES_FontEncoding5 },  { "iso-8859-4",  MSGTR_PREFERENCES_FontEncoding6 },  { "iso-8859-5",  MSGTR_PREFERENCES_FontEncoding7 },  { "cp1251",      MSGTR_PREFERENCES_FontEncoding21},  { "iso-8859-6",  MSGTR_PREFERENCES_FontEncoding8 },  { "iso-8859-7",  MSGTR_PREFERENCES_FontEncoding9 },  { "iso-8859-9",  MSGTR_PREFERENCES_FontEncoding10 },  { "iso-8859-13", MSGTR_PREFERENCES_FontEncoding11 },  { "iso-8859-14", MSGTR_PREFERENCES_FontEncoding12 },  { "iso-8859-8",  MSGTR_PREFERENCES_FontEncoding13 },  { "koi8-r",      MSGTR_PREFERENCES_FontEncoding14 },  { "koi8-u/ru",   MSGTR_PREFERENCES_FontEncoding15 },  { "cp936",       MSGTR_PREFERENCES_FontEncoding16 },  { "big5",        MSGTR_PREFERENCES_FontEncoding17 },  { "shift-jis",   MSGTR_PREFERENCES_FontEncoding18 },  { "cp949",       MSGTR_PREFERENCES_FontEncoding19 },  { "cp874",       MSGTR_PREFERENCES_FontEncoding20 },  { NULL,NULL }  };char * lCEncoding = NULL;char * lSEncoding = NULL;#endif	    static int    old_audio_driver = 0;static char * ao_driver[3];static char * vo_driver[3];static int    old_video_driver = 0;#ifdef HAVE_DXR3 void ShowDXR3Config( void ); void HideDXR3Config( void );#endif void ShowAudioConfig(); void HideAudioConfig();static gboolean prHScaler( GtkWidget * widget,GdkEventMotion  * event,gpointer user_data );static void prToggled( GtkToggleButton * togglebutton,gpointer user_data );static void prCListRow( GtkCList * clist,gint row,gint column,GdkEvent * event,gpointer user_data );#if defined( HAVE_FREETYPE ) || defined( USE_ICONV )static void prEntry( GtkContainer * container,gpointer user_data );#endifextern int    stop_xscreensaver;void ShowPreferences( void ){ if ( Preferences ) gtkActive( Preferences );   else Preferences=create_Preferences();// -- 1. page  gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( CBAudioEqualizer ),gtkEnableAudioEqualizer );#if 0 gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( CBSurround ),gtkAOSurround );#endif gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( CBExtraStereo ),gtkAOExtraStereo ); gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( CBNormalize ),gtkAONorm ); gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( CBSoftwareMixer ),soft_vol ); gtk_adjustment_set_value( HSExtraStereoMuladj,gtkAOExtraStereoMul ); {  int    i = 0;  char * tmp[3]; tmp[2]="";  old_audio_driver=-1;  if ( CLADrivers ) gtk_clist_clear( GTK_CLIST( CLADrivers ) );  while ( audio_out_drivers[i] )   {    const ao_info_t *info = audio_out_drivers[i++]->info;    if ( !strcmp( info->short_name,"plugin" ) ) continue;    if ( audio_driver_list )     {      char * name = gstrdup( audio_driver_list[0] );      char * sep = gstrchr( audio_driver_list[0],':' );      if ( sep ) *sep=0;      if ( !gstrcmp( name,(char *)info->short_name ) ) old_audio_driver=i - 1;      free( name );     }    tmp[0]=(char *)info->short_name; tmp[1]=(char *)info->name; gtk_clist_append( GTK_CLIST( CLADrivers ),tmp );   }  if ( old_audio_driver > -1 )   {    gtk_clist_select_row( GTK_CLIST( CLADrivers ),old_audio_driver,0 );    gtk_clist_get_text( GTK_CLIST( CLADrivers ),old_audio_driver,0,(char **)&ao_driver );    gtk_widget_set_sensitive( AConfig,FALSE );    if ( !strncmp( ao_driver[0],"oss",3 ) ||         !strncmp( ao_driver[0],"alsa",4 ) ||         !strncmp( ao_driver[0],"esd",3 ) ||         !strncmp( ao_driver[0],"sdl",3 ) )      gtk_widget_set_sensitive( AConfig,TRUE );   } }// -- 2. page gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( CBDoubleBuffer ),vo_doublebuffering ); gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( CBDR ),vo_directrendering ); gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( CBFramedrop ),FALSE ); gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( CBHFramedrop ),FALSE ); switch ( frame_dropping )  {   case 2: gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( CBHFramedrop ),TRUE );   case 1: gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( CBFramedrop ),TRUE );  } if (flip != -1)    gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( CBFlip ),flip ); gtk_adjustment_set_value( HSPanscanadj,vo_panscan ); {  int i = 0, c = 0;  char * tmp[3]; tmp[2]="";  old_video_driver=0;   if ( CLVDrivers ) gtk_clist_clear( GTK_CLIST( CLVDrivers ) );  while ( video_out_drivers[i] )   if ( video_out_drivers[i++]->control( VOCTRL_GUISUPPORT,NULL ) == VO_TRUE )    {      if ( video_driver_list && !gstrcmp( video_driver_list[0],(char *)video_out_drivers[i - 1]->info->short_name ) ) old_video_driver=c; c++;     tmp[0]=(char *)video_out_drivers[i - 1]->info->short_name; tmp[1]=(char *)video_out_drivers[i - 1]->info->name;      gtk_clist_append( GTK_CLIST( CLVDrivers ),tmp );    }  gtk_clist_select_row( GTK_CLIST( CLVDrivers ),old_video_driver,0 );  gtk_clist_get_text( GTK_CLIST( CLVDrivers ),old_video_driver,0,(char **)&vo_driver );  gtk_widget_set_sensitive( VConfig,FALSE );#ifdef HAVE_DXR3  if ( !gstrcmp( vo_driver[0],"dxr3" ) ) gtk_widget_set_sensitive( VConfig,TRUE );#endif }   gtk_adjustment_set_value( HSFPSadj,force_fps );// -- 3. page gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( CBSubOverlap ),suboverlap_enabled ); gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( CBNoAutoSub ),!sub_auto ); gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( CBDumpMPSub ),gtkSubDumpMPSub ); gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( CBDumpSrt ),gtkSubDumpSrt ); gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( CBSubUnicode ),sub_unicode ); gtk_adjustment_set_value( HSSubDelayadj,sub_delay ); gtk_adjustment_set_value( HSSubFPSadj,sub_fps ); gtk_adjustment_set_value( HSSubPositionadj,sub_pos ); switch ( osd_level )  {   case 0: gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( RBOSDNone ),TRUE ); break;   case 1: gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( RBOSDIndicator ),TRUE ); break;   case 2: gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( RBOSDTandP ),TRUE ); break;   case 3: gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( RBOSDTPTT ),TRUE ); break;  }#if 0 if ( guiIntfStruct.Subtitlename ) gtk_entry_set_text( GTK_ENTRY( ESubtitleName ),guiIntfStruct.Subtitlename );#endif#ifdef USE_ICONV if ( sub_cp )  {   int i;   for ( i=0;lEncoding[i].name;i++ )     if ( !gstrcmp( sub_cp,lEncoding[i].name ) ) break;   if ( lEncoding[i].name ) lSEncoding=lEncoding[i].comment;   gtk_entry_set_text( GTK_ENTRY( ESubEncoding ),lSEncoding );  }#endif// --- 4. page // font ... if ( font_name ) gtk_entry_set_text( GTK_ENTRY( prEFontName ),font_name );#ifndef HAVE_FREETYPE gtk_adjustment_set_value( HSFontFactoradj,font_factor );#else gtk_adjustment_set_value( HSFontBluradj,( subtitle_font_radius / 8.0f ) * 100.0f ); gtk_adjustment_set_value( HSFontOutLineadj,( subtitle_font_thickness / 8.0f ) * 100.0f ); gtk_adjustment_set_value( HSFontTextScaleadj,text_font_scale_factor ); gtk_adjustment_set_value( HSFontOSDScaleadj,osd_font_scale_factor ); if ( subtitle_font_encoding )  {   int i;   for ( i=0;lEncoding[i].name;i++ )     if ( !gstrcmp( subtitle_font_encoding,lEncoding[i].name ) ) break;   if ( lEncoding[i].name ) lCEncoding=lEncoding[i].comment;   gtk_entry_set_text( GTK_ENTRY( EFontEncoding ),lCEncoding );  } switch ( subtitle_autoscale )  {   case 0: gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( RBFontNoAutoScale ),TRUE ); break;   case 1: gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( RBFontAutoScaleHeight ),TRUE ); break;   case 2: gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( RBFontAutoScaleWidth ),TRUE ); break;   case 3: gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( RBFontAutoScaleDiagonal ),TRUE ); break;  }#endif// -- 5. page gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( CBNonInterlaved ),force_ni ); if ( index_mode == 1 ) gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( CBIndex ),1 ); {  int     i;  GList * Items = NULL;  char  * name = NULL;  Items=g_list_append( Items,MSGTR_PREFERENCES_None );  for( i=0;mpcodecs_vd_drivers[i];i++ )   {    Items=g_list_append( Items,(char *)mpcodecs_vd_drivers[i]->info->name );    if ( video_fm_list && !gstrcmp( video_fm_list[0],(char *)mpcodecs_vd_drivers[i]->info->short_name ) ) name=(char *)mpcodecs_vd_drivers[i]->info->name;   }  gtk_combo_set_popdown_strings( GTK_COMBO( CBVFM ),Items );

⌨️ 快捷键说明

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