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

📄 config.c.svn-base

📁 H.264 source codes
💻 SVN-BASE
📖 第 1 页 / 共 2 页
字号:
                {                OPENFILENAME ofn;                char tmp[MAX_PATH];                GetDlgItemText( hDlg, IDC_STATSFILE, tmp, MAX_PATH );                memset( &ofn, 0, sizeof( OPENFILENAME ) );                ofn.lStructSize = sizeof( OPENFILENAME );                ofn.hwndOwner = hDlg;                ofn.lpstrFilter = "Statsfile (*.stats)\0*.stats\0All files (*.*)\0*.*\0\0";                ofn.lpstrFile = tmp;                ofn.nMaxFile = MAX_PATH-4;                ofn.Flags = OFN_PATHMUSTEXIST;                if( config->i_pass == 1 )                    ofn.Flags |= OFN_OVERWRITEPROMPT;                else ofn.Flags |= OFN_FILEMUSTEXIST;                if( ( config->i_pass == 1 && GetSaveFileName( &ofn ) ) ||                     ( config->i_pass > 1 && GetOpenFileName( &ofn ) ) )                    SetDlgItemText( hDlg, IDC_STATSFILE, tmp );                }                break;            }            break;        case EN_CHANGE :            switch( LOWORD( wParam ) )            {            case IDC_BITRATEEDIT :                config->bitrate = GetDlgItemInt( hDlg, IDC_BITRATEEDIT, FALSE, FALSE );                SendDlgItemMessage( hDlg, IDC_BITRATESLIDER, TBM_SETPOS, TRUE, config->bitrate );                break;            case IDC_QUANTEDIT :                config->i_qp = GetDlgItemInt( hDlg, IDC_QUANTEDIT, FALSE, FALSE );                SendDlgItemMessage( hDlg, IDC_QUANTSLIDER, TBM_SETPOS, TRUE, config->i_qp );                break;            case IDC_2PASSBITRATE :                config->i_2passbitrate = GetDlgItemInt( hDlg, IDC_2PASSBITRATE, FALSE, FALSE );                SendDlgItemMessage( hDlg, IDC_2PASSBITRATE_S, TBM_SETPOS, TRUE, config->i_2passbitrate );                break;            case IDC_STATSFILE :                if( GetDlgItemText( hDlg, IDC_STATSFILE, config->stats, MAX_PATH ) == 0 )                    lstrcpy( config->stats, ".\\x264.stats" );                break;            }            break;        default:            break;        }        break;        case WM_HSCROLL :            if( (HWND) lParam == GetDlgItem( hDlg, IDC_BITRATESLIDER ) )            {                config->bitrate = SendDlgItemMessage( hDlg, IDC_BITRATESLIDER, TBM_GETPOS, 0, 0 );                SetDlgItemInt( hDlg, IDC_BITRATEEDIT, config->bitrate, FALSE );            }            else if( (HWND) lParam == GetDlgItem( hDlg, IDC_QUANTSLIDER ) )            {                config->i_qp = SendDlgItemMessage( hDlg, IDC_QUANTSLIDER, TBM_GETPOS, 0, 0 );                SetDlgItemInt( hDlg, IDC_QUANTEDIT, config->i_qp, FALSE );            }            else if( (HWND) lParam == GetDlgItem( hDlg, IDC_2PASSBITRATE_S ) )            {                config->i_2passbitrate = SendDlgItemMessage( hDlg, IDC_2PASSBITRATE_S, TBM_GETPOS, 0, 0 );                SetDlgItemInt( hDlg, IDC_2PASSBITRATE, config->i_2passbitrate, FALSE );            }            break;    default :        return 0;    }    return 1;}/* About dialog */BOOL CALLBACK callback_about( HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam ){    switch( uMsg )    {    case WM_INITDIALOG :    {        char temp[1024];        sprintf( temp, "Core %d%s, build %s %s", X264_BUILD, X264_VERSION, __DATE__, __TIME__ );        SetDlgItemText( hDlg, IDC_BUILD,  temp );        break;    }    case WM_COMMAND:        if (LOWORD(wParam) == IDC_HOMEPAGE && HIWORD(wParam) == STN_CLICKED)            ShellExecute( hDlg, "open", X264_WEBSITE, NULL, NULL, SW_SHOWNORMAL );        else if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL)            EndDialog( hDlg, LOWORD(wParam) );        break;    default :        return 0;    }    return 1;}static void set_dlgitem_int(HWND hDlg, UINT item, int value){    char buf[8];    sprintf(buf, "%i", value);    SetDlgItemText(hDlg, item, buf);}static void adv_update_dlg( HWND hDlg, CONFIG * config ){    char fourcc[5];    SendDlgItemMessage(hDlg, IDC_DIRECTPRED, CB_ADDSTRING, 0, (LPARAM)"Spatial");    SendDlgItemMessage(hDlg, IDC_DIRECTPRED, CB_ADDSTRING, 0, (LPARAM)"Temporal");    SendDlgItemMessage(hDlg, IDC_SUBPEL, CB_ADDSTRING, 0, (LPARAM)"1 (Fastest)");    SendDlgItemMessage(hDlg, IDC_SUBPEL, CB_ADDSTRING, 0, (LPARAM)"2");    SendDlgItemMessage(hDlg, IDC_SUBPEL, CB_ADDSTRING, 0, (LPARAM)"3");    SendDlgItemMessage(hDlg, IDC_SUBPEL, CB_ADDSTRING, 0, (LPARAM)"4");    SendDlgItemMessage(hDlg, IDC_SUBPEL, CB_ADDSTRING, 0, (LPARAM)"5 (Max Quality)");    CheckDlgButton( hDlg,IDC_CABAC,                    config->b_cabac ? BST_CHECKED : BST_UNCHECKED );    CheckDlgButton( hDlg,IDC_LOOPFILTER,                    config->b_filter ? BST_CHECKED: BST_UNCHECKED );    CheckDlgButton( hDlg,IDC_WBPRED,                    config->b_b_wpred ? BST_CHECKED: BST_UNCHECKED );    CheckDlgButton( hDlg,IDC_BREFS,                    config->b_b_refs ? BST_CHECKED: BST_UNCHECKED );    CheckDlgButton( hDlg,IDC_P16X16,                    config->b_psub16x16 ? BST_CHECKED: BST_UNCHECKED );    CheckDlgButton( hDlg,IDC_P8X8,                    config->b_psub8x8 ? BST_CHECKED: BST_UNCHECKED );    CheckDlgButton( hDlg,IDC_B16X16,                    config->b_bsub16x16 ? BST_CHECKED: BST_UNCHECKED );    CheckDlgButton( hDlg,IDC_I4X4,                    config->b_i4x4 ? BST_CHECKED: BST_UNCHECKED );    SetDlgItemInt( hDlg, IDC_KEYINTMIN, config->i_keyint_min, FALSE );    SetDlgItemInt( hDlg, IDC_KEYINTMAX, config->i_keyint_max, FALSE );    SetDlgItemInt( hDlg, IDC_REFFRAMES, config->i_refmax, FALSE );    SetDlgItemInt( hDlg, IDC_BFRAME, config->i_bframe, FALSE );    SetDlgItemInt( hDlg, IDC_IPRATIO, config->i_key_boost, FALSE );    SetDlgItemInt( hDlg, IDC_PBRATIO, config->i_b_red, FALSE );    SetDlgItemInt( hDlg, IDC_CURVECOMP, config->i_curve_comp, FALSE );    SendDlgItemMessage(hDlg, IDC_DIRECTPRED, CB_SETCURSEL, (config->i_direct_mv_pred), 0);    SendDlgItemMessage(hDlg, IDC_SUBPEL, CB_SETCURSEL, (config->i_subpel_refine), 0);    SendDlgItemMessage( hDlg, IDC_INLOOP_A, TBM_SETRANGE, TRUE,                        (LPARAM) MAKELONG( -6, 6 ) );    SendDlgItemMessage( hDlg, IDC_INLOOP_A, TBM_SETPOS, TRUE,                        config->i_inloop_a );    set_dlgitem_int( hDlg, IDC_LOOPA_TXT, config->i_inloop_a);    EnableWindow( GetDlgItem( hDlg, IDC_P8X8 ), config->b_psub16x16 );    EnableWindow( GetDlgItem( hDlg, IDC_BREFS ), config->i_bframe > 1 );    EnableWindow( GetDlgItem( hDlg, IDC_WBPRED ), config->i_bframe > 1 );    EnableWindow( GetDlgItem( hDlg, IDC_DIRECTPRED ), config->i_bframe > 0 );    memcpy( fourcc, config->fcc, 4 );    fourcc[4] = '\0';    SetDlgItemText( hDlg, IDC_FOURCC, fourcc );}/* advanced configuration dialog process */BOOL CALLBACK callback_advanced( HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam ){    CONFIG* config = (CONFIG*)GetWindowLong(hDlg, GWL_USERDATA);    switch( uMsg )    {    case WM_INITDIALOG :        SetWindowLong( hDlg, GWL_USERDATA, lParam );        config = (CONFIG*)lParam;        adv_update_dlg( hDlg, config );        break;    case WM_COMMAND:        switch ( HIWORD( wParam ) )        {        case BN_CLICKED :            switch( LOWORD( wParam ) )            {            case IDOK :                EndDialog( hDlg, LOWORD( wParam ) );                break;            case IDC_CABAC :                config->b_cabac = ( IsDlgButtonChecked( hDlg, IDC_CABAC ) == BST_CHECKED );                break;            case IDC_LOOPFILTER :                config->b_filter = ( IsDlgButtonChecked( hDlg, IDC_LOOPFILTER ) == BST_CHECKED );                break;            case IDC_BREFS :                config->b_b_refs = ( IsDlgButtonChecked( hDlg, IDC_BREFS ) == BST_CHECKED );                break;            case IDC_WBPRED :                config->b_b_wpred = ( IsDlgButtonChecked( hDlg, IDC_WBPRED ) == BST_CHECKED );                break;            case IDC_P16X16 :                config->b_psub16x16 = ( IsDlgButtonChecked( hDlg, IDC_P16X16 ) == BST_CHECKED );                EnableWindow( GetDlgItem( hDlg, IDC_P8X8 ), config->b_psub16x16 );                break;            case IDC_P8X8 :                config->b_psub8x8 = ( IsDlgButtonChecked( hDlg, IDC_P8X8 ) == BST_CHECKED );                break;            case IDC_B16X16 :                config->b_bsub16x16 = ( IsDlgButtonChecked( hDlg, IDC_B16X16 ) == BST_CHECKED );                break;            case IDC_I4X4 :                config->b_i4x4 = ( IsDlgButtonChecked( hDlg, IDC_I4X4 ) == BST_CHECKED );                break;            }            break;        case EN_CHANGE :            switch( LOWORD( wParam ) )            {            case IDC_KEYINTMIN :                config->i_keyint_min = GetDlgItemInt( hDlg, IDC_KEYINTMIN, FALSE, FALSE );                break;            case IDC_KEYINTMAX :                config->i_keyint_max = GetDlgItemInt( hDlg, IDC_KEYINTMAX, FALSE, FALSE );                break;            case IDC_REFFRAMES :                config->i_refmax = GetDlgItemInt( hDlg, IDC_REFFRAMES, FALSE, FALSE );                if( config->i_refmax > 16 )                {                    config->i_refmax = 16;                    SetDlgItemInt( hDlg, IDC_REFFRAMES, config->i_refmax, FALSE );                }                break;            case IDC_FOURCC :                GetDlgItemText( hDlg, IDC_FOURCC, config->fcc, 5 );                break;            case IDC_BFRAME :                config->i_bframe = GetDlgItemInt( hDlg, IDC_BFRAME, FALSE, FALSE );                if( config->i_bframe > 5 )                {                    config->i_bframe = 5;                    SetDlgItemInt( hDlg, IDC_BFRAME, config->i_bframe, FALSE );                }                EnableWindow( GetDlgItem( hDlg, IDC_BREFS ), config->i_bframe > 1 );                EnableWindow( GetDlgItem( hDlg, IDC_WBPRED ), config->i_bframe > 1 );                EnableWindow( GetDlgItem( hDlg, IDC_DIRECTPRED ), config->i_bframe > 0 );                break;            case IDC_IPRATIO :                config->i_key_boost = GetDlgItemInt( hDlg, IDC_IPRATIO, FALSE, FALSE );                if (config->i_key_boost < 0)                {                    config->i_key_boost = 0;                    SetDlgItemInt( hDlg, IDC_IPRATIO, config->i_key_boost, FALSE );                }                else if (config->i_key_boost > 70)                {                    config->i_key_boost = 70;                    SetDlgItemInt( hDlg, IDC_IPRATIO, config->i_key_boost, FALSE );                }                                        break;            case IDC_PBRATIO :                config->i_b_red = GetDlgItemInt( hDlg, IDC_PBRATIO, FALSE, FALSE );                if (config->i_b_red < 0)                {                    config->i_b_red = 0;                    SetDlgItemInt( hDlg, IDC_PBRATIO, config->i_b_red, FALSE );                }                else if (config->i_b_red > 60)                {                    config->i_b_red = 60;                    SetDlgItemInt( hDlg, IDC_PBRATIO, config->i_b_red, FALSE );                }                                        break;            case IDC_CURVECOMP:                config->i_curve_comp = GetDlgItemInt( hDlg, IDC_CURVECOMP, FALSE, FALSE );                if( config->i_curve_comp < 0 )                {                    config->i_curve_comp = 0;                    SetDlgItemInt( hDlg, IDC_CURVECOMP, config->i_curve_comp, FALSE );                }                else if( config->i_curve_comp > 100 )                {                    config->i_curve_comp = 100;                    SetDlgItemInt( hDlg, IDC_CURVECOMP, config->i_curve_comp, FALSE );                }                                        break;            }            break;            case LBN_SELCHANGE :                switch ( LOWORD( wParam ) ) {                case IDC_DIRECTPRED:                    config->i_direct_mv_pred = SendDlgItemMessage(hDlg, IDC_DIRECTPRED, CB_GETCURSEL, 0, 0);                    break;                case IDC_SUBPEL:                    config->i_subpel_refine = SendDlgItemMessage(hDlg, IDC_SUBPEL, CB_GETCURSEL, 0, 0);                    break;                }            break;        }        break;        case WM_HSCROLL :         if( (HWND) lParam == GetDlgItem( hDlg, IDC_INLOOP_A ) ) {                config->i_inloop_a = SendDlgItemMessage( hDlg, IDC_INLOOP_A, TBM_GETPOS, 0, 0 );                set_dlgitem_int( hDlg, IDC_LOOPA_TXT, config->i_inloop_a);        }        break;        case WM_CLOSE:            EndDialog( hDlg, LOWORD( wParam ) );            break;    default :        return 0;    }    return 1;}/* error console dialog process */BOOL CALLBACK callback_err_console( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam ){    switch( uMsg )    {    case WM_INITDIALOG :        break;    case WM_DESTROY :         break;    case WM_COMMAND :        if( HIWORD( wParam ) == BN_CLICKED ) {            switch( LOWORD( wParam ) ) {            case IDOK :                DestroyWindow( hWnd );                break;            case IDC_COPYCLIP :                if( OpenClipboard( hWnd ) )                    {                        int i;                        int num_lines = SendDlgItemMessage( hWnd, IDC_CONSOLE,                                         LB_GETCOUNT, 0, 0 );                        int text_size;                        char *buffer;                        HGLOBAL clipbuffer;                        if( num_lines <= 0 )                            break;                        /* calculate text size */                        for( i = 0, text_size = 0; i < num_lines; i++ )                            text_size += SendDlgItemMessage( hWnd, IDC_CONSOLE,                                    LB_GETTEXTLEN, ( WPARAM )i, 0 );                        /* CR-LF for each line + terminating NULL */                        text_size += 2 * num_lines + 1;                                                EmptyClipboard( );                        clipbuffer = GlobalAlloc( GMEM_MOVEABLE | GMEM_DDESHARE,                                     text_size );                        buffer = (char *)GlobalLock( clipbuffer );                        /* concatenate lines of text in the global buffer */                        for( i = 0; i < num_lines; i++ )                        {                                                        char msg_buf[1024];                                                        SendDlgItemMessage( hWnd, IDC_CONSOLE, LB_GETTEXT,                                              ( WPARAM )i, ( LPARAM )msg_buf );                            strcat( msg_buf, "\r\n" );                            memcpy( buffer, msg_buf, strlen( msg_buf ) );                            buffer += strlen( msg_buf );                        }                        *buffer = 0; /* null-terminate the buffer */                        GlobalUnlock( clipbuffer );                        SetClipboardData( CF_TEXT, clipbuffer );                        CloseClipboard( );                    }                break;            default :                return 0;            }            break;        }        break;    default :        return DefWindowProc( hWnd, uMsg, wParam, lParam );    }    return 0;}

⌨️ 快捷键说明

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