Index: vfw/config.c =================================================================== --- vfw/config.c (revision 440) +++ vfw/config.c (working copy) @@ -123,6 +123,7 @@ { "threads", ®.i_threads, 1 }, { "cabac", ®.b_cabac, 1 }, { "trellis", ®.i_trellis, 1 }, + { "fast_pskip", ®.b_fast_pskip, 1 }, { "noise_reduction",®.i_noise_reduction, 0 }, { "loop_filter", ®.b_filter, 1 }, { "inloop_a", ®.i_inloop_a, 0 }, @@ -429,7 +430,11 @@ EnableWindow( GetDlgItem( hTabs[2], IDC_DIRECTPRED ), config->i_bframe > 0 ); EnableWindow( GetDlgItem( hTabs[3], IDC_INLOOP_A ), config->b_filter ); + EnableWindow( GetDlgItem( hTabs[3], IDC_LOOPA_TITLE ), config->b_filter ); + EnableWindow( GetDlgItem( hTabs[3], IDC_LOOPA_TXT ), config->b_filter ); EnableWindow( GetDlgItem( hTabs[3], IDC_INLOOP_B ), config->b_filter ); + EnableWindow( GetDlgItem( hTabs[3], IDC_LOOPB_TITLE ), config->b_filter ); + EnableWindow( GetDlgItem( hTabs[3], IDC_LOOPB_TXT ), config->b_filter ); EnableWindow( GetDlgItem( hTabs[2], IDC_P4X4 ), config->b_psub16x16 ); EnableWindow( GetDlgItem( hTabs[2], IDC_I8X8 ), config->b_dct8x8 ); EnableWindow( GetDlgItem( hTabs[2], IDC_B8X8 ), config->i_bframe > 0 ); @@ -525,6 +530,8 @@ config->b_cabac ? BST_CHECKED : BST_UNCHECKED ); CheckDlgButton( hTabs[3],IDC_TRELLIS, config->i_trellis ? BST_CHECKED: BST_UNCHECKED ); + CheckDlgButton( hTabs[3],IDC_FAST_PSKIP, + config->b_fast_pskip ? BST_CHECKED: BST_UNCHECKED ); CheckDlgButton( hTabs[3],IDC_LOOPFILTER, config->b_filter ? BST_CHECKED: BST_UNCHECKED ); @@ -629,6 +636,9 @@ case IDC_TRELLIS : config->i_trellis = ( IsDlgButtonChecked( hTabs[3], IDC_TRELLIS ) == BST_CHECKED ); break; + case IDC_FAST_PSKIP : + config->b_fast_pskip = ( IsDlgButtonChecked( hTabs[3], IDC_FAST_PSKIP ) == BST_CHECKED ); + break; case IDC_LOOPFILTER : config->b_filter = ( IsDlgButtonChecked( hTabs[3], IDC_LOOPFILTER ) == BST_CHECKED ); break; Index: vfw/resource.rc =================================================================== --- vfw/resource.rc (revision 440) +++ vfw/resource.rc (working copy) @@ -135,16 +135,17 @@ LTEXT "Threads",IDC_THREADS,10,119,30,12,SS_CENTERIMAGE EDITTEXT IDC_THREADEDIT,46,119,18,12,ES_AUTOHSCROLL | ES_NUMBER CONTROL "CABAC",IDC_CABAC,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,140,39,12,WS_EX_TRANSPARENT - CONTROL "Deblocking filter:",IDC_LOOPFILTER,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,154,66,12 + CONTROL "Deblocking filter:",IDC_LOOPFILTER,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,167,66,12,WS_EX_TRANSPARENT CONTROL "Trellis",IDC_TRELLIS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,65,140,37,12,WS_EX_TRANSPARENT LTEXT "Noise Reduction",IDC_STATIC,111,140,56,12,SS_CENTERIMAGE EDITTEXT IDC_NR,168,140,21,12,ES_AUTOHSCROLL | ES_NUMBER - LTEXT "Strength",IDC_STATIC,87,154,36,12,SS_CENTERIMAGE,WS_EX_TRANSPARENT - LTEXT "Threshold",IDC_STATIC,87,167,36,12,SS_CENTERIMAGE,WS_EX_TRANSPARENT + LTEXT "Strength",IDC_LOOPA_TITLE,87,154,36,12,SS_CENTERIMAGE,WS_EX_TRANSPARENT + LTEXT "Threshold",IDC_LOOPB_TITLE,87,167,36,12,SS_CENTERIMAGE,WS_EX_TRANSPARENT CONTROL "",IDC_INLOOP_A,"msctls_trackbar32",TBS_NOTICKS | WS_TABSTOP,123,155,42,12,WS_EX_TRANSPARENT CONTROL "",IDC_INLOOP_B,"msctls_trackbar32",TBS_NOTICKS | WS_TABSTOP,123,167,42,12,WS_EX_TRANSPARENT LTEXT "0",IDC_LOOPA_TXT,171,154,12,12,SS_CENTERIMAGE,WS_EX_TRANSPARENT LTEXT "0",IDC_LOOPB_TXT,171,167,12,12,SS_CENTERIMAGE,WS_EX_TRANSPARENT + CONTROL "Fast P-Skip",IDC_FAST_PSKIP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,154,66,12,WS_EX_TRANSPARENT END @@ -221,8 +222,10 @@ IDC_BREFS "Keep some B-frames as references" IDC_DEFAULTS "Reset everything" IDC_DIRECTPRED "B-Direct MV prediction mode" + IDC_FAST_PSKIP "Enables early SKIP detection on P-frames" + IDC_KEYINTMAX "Maximum GOP size" IDC_KEYINTMIN "Minimum GOP size" - IDC_KEYINTMAX "Maximum GOP size" + IDC_ME_METHOD "Diamond: Check all four 1-pixel radius\nHexagonal: Diamond + six 2-pixel radius\nUneven Multihexagon: Scattered checks up to 16-pixel radius, then Hexagonal on the best\nExhaustive: Check all possibilities" IDC_MIXEDREF "Decide references on a per partition basis" IDC_NR "DCT noise reduction amount" IDC_SCENECUT "How aggressively to insert extra I-frames" Index: vfw/x264vfw.h =================================================================== --- vfw/x264vfw.h (revision 440) +++ vfw/x264vfw.h (working copy) @@ -103,6 +103,7 @@ int i_trellis; int b_bidir_me; int i_noise_reduction; + int b_fast_pskip; } CONFIG; /* CODEC: vfw codec instance Index: vfw/resource.h =================================================================== --- vfw/resource.h (revision 440) +++ vfw/resource.h (working copy) @@ -100,6 +100,9 @@ #define IDC_BUILDREV 1095 #define IDC_TRELLIS 1097 #define IDC_BIDIR_ME 1098 +#define IDC_FAST_PSKIP 1100 +#define IDC_LOOPA_TITLE 1101 +#define IDC_LOOPB_TITLE 1102 // Next default values for new objects // @@ -107,7 +110,7 @@ #ifndef APSTUDIO_READONLY_SYMBOLS #define _APS_NEXT_RESOURCE_VALUE 109 #define _APS_NEXT_COMMAND_VALUE 40001 -#define _APS_NEXT_CONTROL_VALUE 1101 +#define _APS_NEXT_CONTROL_VALUE 1103 #define _APS_NEXT_SYMED_VALUE 101 #endif #endif Index: vfw/codec.c =================================================================== --- vfw/codec.c (revision 440) +++ vfw/codec.c (working copy) @@ -228,6 +228,7 @@ param.b_cabac = config->b_cabac; if( config->b_cabac && config->i_trellis ) param.analyse.i_trellis = 1; + param.analyse.b_fast_pskip = config->b_fast_pskip; param.analyse.b_chroma_me = config->b_chroma_me; param.rc.f_ip_factor = 1 + (float)config->i_key_boost / 100;