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

📄 config.c.svn-base

📁 现在关于h.264的源码很多
💻 SVN-BASE
📖 第 1 页 / 共 3 页
字号:
                            (LPARAM) MAKELONG( 0, BITRATE_MAX ) );        EnableWindow( GetDlgItem( hTabs[0], IDC_UPDATESTATS ), FALSE );        EnableWindow( GetDlgItem( hTabs[0], IDC_STATSFILE ), FALSE );        EnableWindow( GetDlgItem( hTabs[0], IDC_STATSFILE_BROWSE ), FALSE );        break;    case 1 : /* 1 Pass, Quantizer Based */        SetDlgItemText( hTabs[0], IDC_BITRATELABEL, "Quantizer" );        SetDlgItemText( hTabs[0], IDC_BITRATELOW, "0 (High Quality)" );        sprintf(szTmp, "(Low Quality) %d", QUANT_MAX);        SetDlgItemText( hTabs[0], IDC_BITRATEHIGH, szTmp );        SendDlgItemMessage( hTabs[0], IDC_BITRATESLIDER, TBM_SETRANGE, TRUE,                            (LPARAM) MAKELONG( 0, QUANT_MAX ) );        EnableWindow( GetDlgItem( hTabs[0], IDC_UPDATESTATS ), FALSE );        EnableWindow( GetDlgItem( hTabs[0], IDC_STATSFILE ), FALSE );        EnableWindow( GetDlgItem( hTabs[0], IDC_STATSFILE_BROWSE ), FALSE );        break;    case 2 : /* 2 Pass */        SetDlgItemText( hTabs[0], IDC_BITRATELABEL, "Target Bitrate" );        SetDlgItemText( hTabs[0], IDC_BITRATELOW, "0" );        sprintf(szTmp, "%d", BITRATE_MAX);        SetDlgItemText( hTabs[0], IDC_BITRATEHIGH, szTmp );        SendDlgItemMessage( hTabs[0], IDC_BITRATESLIDER, TBM_SETRANGE, TRUE,                            (LPARAM) MAKELONG( 0, BITRATE_MAX ) );        EnableWindow( GetDlgItem( hTabs[0], IDC_UPDATESTATS ), TRUE );        EnableWindow( GetDlgItem( hTabs[0], IDC_STATSFILE ), TRUE );        EnableWindow( GetDlgItem( hTabs[0], IDC_STATSFILE_BROWSE ), TRUE );        break;    }    EnableWindow( GetDlgItem( hTabs[1], IDC_DIRECTPRED  ), config->i_bframe > 0 );    EnableWindow( GetDlgItem( hTabs[3], IDC_INLOOP_A    ), config->b_filter );    EnableWindow( GetDlgItem( hTabs[3], IDC_INLOOP_B    ), config->b_filter );    EnableWindow( GetDlgItem( hTabs[2], IDC_P8X8        ), config->b_psub16x16 );    EnableWindow( GetDlgItem( hTabs[2], IDC_I8X8        ), config->b_dct8x8 );    EnableWindow( GetDlgItem( hTabs[2], IDC_BREFS       ), config->i_bframe > 1 );    EnableWindow( GetDlgItem( hTabs[2], IDC_WBPRED      ), config->i_bframe > 1 );    EnableWindow( GetDlgItem( hTabs[2], IDC_BADAPT      ), config->i_bframe > 0 );    EnableWindow( GetDlgItem( hTabs[2], IDC_BBIAS       ), config->i_bframe > 0 );    EnableWindow( GetDlgItem( hTabs[2], IDC_BBIASSLIDER ), config->i_bframe > 0 );    EnableWindow( GetDlgItem( hTabs[3], IDC_MERANGE     ), config->i_me_method > 1 );    EnableWindow( GetDlgItem( hTabs[3], IDC_CHROMAME    ), config->i_subpel_refine >= 4 );}void tabs_update_items( HWND hDlg, CONFIG * config ){    char fourcc[5];    /* update bitrate tab */    if (SendMessage( GetDlgItem(hTabs[0],IDC_BITRATEMODE), CB_GETCOUNT, 0, 0 ) == 0)    {        SendDlgItemMessage(hTabs[0], IDC_BITRATEMODE, CB_ADDSTRING, 0, (LPARAM)"Single Pass - Bitrate");        SendDlgItemMessage(hTabs[0], IDC_BITRATEMODE, CB_ADDSTRING, 0, (LPARAM)"Single Pass - Quantizer");        SendDlgItemMessage(hTabs[0], IDC_BITRATEMODE, CB_ADDSTRING, 0, (LPARAM)"Multipass - First Pass");        SendDlgItemMessage(hTabs[0], IDC_BITRATEMODE, CB_ADDSTRING, 0, (LPARAM)"Multipass - First Pass (fast)");        SendDlgItemMessage(hTabs[0], IDC_BITRATEMODE, CB_ADDSTRING, 0, (LPARAM)"Multipass - Nth Pass");    }    switch( config->i_encoding_type )    {    case 0 : /* 1 Pass, Bitrate Based */        SendDlgItemMessage(hTabs[0], IDC_BITRATEMODE, CB_SETCURSEL, 0, 0);        SetDlgItemInt( hTabs[0], IDC_BITRATEEDIT, config->bitrate, FALSE );        SendDlgItemMessage(hTabs[0], IDC_BITRATESLIDER, TBM_SETPOS, TRUE,                           config->bitrate );        break;    case 1 : /* 1 Pass, Quantizer Based */        SendDlgItemMessage(hTabs[0], IDC_BITRATEMODE, CB_SETCURSEL, 1, 0);        SetDlgItemInt( hTabs[0], IDC_BITRATEEDIT, config->i_qp, FALSE );        SendDlgItemMessage(hTabs[0], IDC_BITRATESLIDER, TBM_SETPOS, TRUE,                           config->i_qp );        break;    case 2 : /* 2 Pass */        if (config->i_pass >= 2) {            SendDlgItemMessage(hTabs[0], IDC_BITRATEMODE, CB_SETCURSEL, 4, 0);        } else if (config->b_fast1pass) {            SendDlgItemMessage(hTabs[0], IDC_BITRATEMODE, CB_SETCURSEL, 3, 0);        } else {            SendDlgItemMessage(hTabs[0], IDC_BITRATEMODE, CB_SETCURSEL, 2, 0);        }        SetDlgItemInt( hTabs[0], IDC_BITRATEEDIT, config->i_2passbitrate, FALSE );        SendDlgItemMessage(hTabs[0], IDC_BITRATESLIDER, TBM_SETPOS, TRUE,                           config->i_2passbitrate );        break;    }    CheckDlgButton( hTabs[0], IDC_UPDATESTATS, config->b_updatestats ? BST_CHECKED : BST_UNCHECKED );    SetDlgItemText( hTabs[0], IDC_STATSFILE, config->stats );    /* update rate control tab */    if (SendMessage( GetDlgItem(hTabs[1],IDC_DIRECTPRED), CB_GETCOUNT, 0, 0 ) == 0)    {        SendDlgItemMessage(hTabs[1], IDC_DIRECTPRED, CB_ADDSTRING, 0, (LPARAM)"Spatial");        SendDlgItemMessage(hTabs[1], IDC_DIRECTPRED, CB_ADDSTRING, 0, (LPARAM)"Temporal");    }    SetDlgItemInt( hTabs[1], IDC_QPMIN, config->i_qp_min, FALSE );    SetDlgItemInt( hTabs[1], IDC_QPMAX, config->i_qp_max, FALSE );    SetDlgItemInt( hTabs[1], IDC_QPSTEP, config->i_qp_step, FALSE );    SetDlgItemInt( hTabs[1], IDC_IPRATIO, config->i_key_boost, FALSE );    SetDlgItemInt( hTabs[1], IDC_PBRATIO, config->i_b_red, FALSE );    SetDlgItemInt( hTabs[1], IDC_CURVECOMP, config->i_curve_comp, FALSE );    SendDlgItemMessage(hTabs[1], IDC_DIRECTPRED, CB_SETCURSEL, (config->i_direct_mv_pred), 0);    /* update debug tab */    if (SendMessage( GetDlgItem(hTabs[3],IDC_LOG), CB_GETCOUNT, 0, 0 ) == 0)    {        SendDlgItemMessage(hTabs[3], IDC_LOG, CB_ADDSTRING, 0, (LPARAM)"None");        SendDlgItemMessage(hTabs[3], IDC_LOG, CB_ADDSTRING, 0, (LPARAM)"Error");        SendDlgItemMessage(hTabs[3], IDC_LOG, CB_ADDSTRING, 0, (LPARAM)"Warning");        SendDlgItemMessage(hTabs[3], IDC_LOG, CB_ADDSTRING, 0, (LPARAM)"Info");        SendDlgItemMessage(hTabs[3], IDC_LOG, CB_ADDSTRING, 0, (LPARAM)"Debug");    }    SendDlgItemMessage(hTabs[3], IDC_LOG, CB_SETCURSEL, (config->i_log_level), 0);    memcpy( fourcc, config->fcc, 4 );    fourcc[4] = '\0';    SetDlgItemText( hTabs[3], IDC_FOURCC, fourcc );    /* update misc. tab */    SetDlgItemInt( hTabs[3], IDC_THREADEDIT, config->i_threads, FALSE );    CheckDlgButton( hTabs[3],IDC_CABAC,                    config->b_cabac ? BST_CHECKED : BST_UNCHECKED );    CheckDlgButton( hTabs[3],IDC_LOOPFILTER,                    config->b_filter ? BST_CHECKED: BST_UNCHECKED );    SetDlgItemInt( hTabs[3], IDC_SAR_W, config->i_sar_width,  FALSE );    SetDlgItemInt( hTabs[3], IDC_SAR_H, config->i_sar_height, FALSE );    SendDlgItemMessage( hTabs[3], IDC_INLOOP_A, TBM_SETRANGE, TRUE,                        (LPARAM) MAKELONG( -6, 6 ) );    SendDlgItemMessage( hTabs[3], IDC_INLOOP_A, TBM_SETPOS, TRUE,                        config->i_inloop_a );    set_dlgitem_int( hTabs[3], IDC_LOOPA_TXT, config->i_inloop_a);    SendDlgItemMessage( hTabs[3], IDC_INLOOP_B, TBM_SETRANGE, TRUE,                        (LPARAM) MAKELONG( -6, 6 ) );    SendDlgItemMessage( hTabs[3], IDC_INLOOP_B, TBM_SETPOS, TRUE,                        config->i_inloop_b );    set_dlgitem_int( hTabs[3], IDC_LOOPB_TXT, config->i_inloop_b);    /* update i/p-frames tab */    CheckDlgButton( hTabs[2],IDC_P16X16,                    config->b_psub16x16 ? BST_CHECKED: BST_UNCHECKED );    CheckDlgButton( hTabs[2],IDC_P8X8,                    config->b_psub8x8 ? BST_CHECKED: BST_UNCHECKED );    CheckDlgButton( hTabs[2],IDC_I4X4,                    config->b_i4x4 ? BST_CHECKED: BST_UNCHECKED );    CheckDlgButton( hTabs[2],IDC_I8X8,                    config->b_i8x8 ? BST_CHECKED: BST_UNCHECKED );    CheckDlgButton( hTabs[2],IDC_DCT8X8,                    config->b_dct8x8 ? BST_CHECKED: BST_UNCHECKED );    CheckDlgButton( hTabs[2],IDC_MIXEDREF,                    config->b_mixedref ? BST_CHECKED: BST_UNCHECKED );    SetDlgItemInt( hTabs[2], IDC_REFFRAMES, config->i_refmax, FALSE );    /* update b-frames tab */    CheckDlgButton( hTabs[2],IDC_WBPRED,                    config->b_b_wpred ? BST_CHECKED: BST_UNCHECKED );    CheckDlgButton( hTabs[2],IDC_BADAPT,                    config->b_bframe_adaptive ? BST_CHECKED: BST_UNCHECKED );    CheckDlgButton( hTabs[2],IDC_BREFS,                    config->b_b_refs ? BST_CHECKED: BST_UNCHECKED );    CheckDlgButton( hTabs[2],IDC_B16X16,                    config->b_bsub16x16 ? BST_CHECKED: BST_UNCHECKED );    SetDlgItemInt( hTabs[2], IDC_BFRAME, config->i_bframe, FALSE );    SetDlgItemInt( hTabs[2], IDC_BBIAS, config->i_bframe_bias, TRUE );    SendDlgItemMessage( hTabs[2], IDC_BBIASSLIDER, TBM_SETRANGE, TRUE,                        (LPARAM) MAKELONG( -100, 100 ) );    SendDlgItemMessage( hTabs[2], IDC_BBIASSLIDER, TBM_SETPOS, TRUE,                        config->i_bframe_bias );    /* update scene-cuts tab */    SetDlgItemInt( hTabs[1], IDC_KEYINTMIN, config->i_keyint_min, FALSE );    SetDlgItemInt( hTabs[1], IDC_KEYINTMAX, config->i_keyint_max, FALSE );    SetDlgItemInt( hTabs[1], IDC_SCENECUT, config->i_scenecut_threshold, TRUE );    /* update motion estimation tab */    if (SendMessage( GetDlgItem(hTabs[3],IDC_ME_METHOD), CB_GETCOUNT, 0, 0 ) == 0)    {        SendDlgItemMessage(hTabs[3], IDC_ME_METHOD, CB_ADDSTRING, 0, (LPARAM)"Diamond Search");        SendDlgItemMessage(hTabs[3], IDC_ME_METHOD, CB_ADDSTRING, 0, (LPARAM)"Hexagonal Search");        SendDlgItemMessage(hTabs[3], IDC_ME_METHOD, CB_ADDSTRING, 0, (LPARAM)"Uneven Multi-Hexagon");        SendDlgItemMessage(hTabs[3], IDC_ME_METHOD, CB_ADDSTRING, 0, (LPARAM)"Exhaustive Search");        SendDlgItemMessage(hTabs[3], IDC_SUBPEL, CB_ADDSTRING, 0, (LPARAM)"1 (Fastest)");        SendDlgItemMessage(hTabs[3], IDC_SUBPEL, CB_ADDSTRING, 0, (LPARAM)"2");        SendDlgItemMessage(hTabs[3], IDC_SUBPEL, CB_ADDSTRING, 0, (LPARAM)"3");        SendDlgItemMessage(hTabs[3], IDC_SUBPEL, CB_ADDSTRING, 0, (LPARAM)"4");        SendDlgItemMessage(hTabs[3], IDC_SUBPEL, CB_ADDSTRING, 0, (LPARAM)"5 (High Quality)");        SendDlgItemMessage(hTabs[3], IDC_SUBPEL, CB_ADDSTRING, 0, (LPARAM)"6 (RDO - Slowest)");    }    SendDlgItemMessage(hTabs[3], IDC_ME_METHOD, CB_SETCURSEL, (config->i_me_method), 0);    SendDlgItemMessage(hTabs[3], IDC_SUBPEL, CB_SETCURSEL, (config->i_subpel_refine), 0);    SetDlgItemInt( hTabs[3], IDC_MERANGE, config->i_me_range, FALSE );    CheckDlgButton( hTabs[3],IDC_CHROMAME,                    config->b_chroma_me ? BST_CHECKED: BST_UNCHECKED );}BOOL CALLBACK callback_tabs( 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;        break;    case WM_COMMAND:        switch ( HIWORD( wParam ) )        {        case BN_CLICKED :            switch( LOWORD( wParam ) )            {            case IDC_CABAC :                config->b_cabac = ( IsDlgButtonChecked( hTabs[3], IDC_CABAC ) == BST_CHECKED );                break;            case IDC_LOOPFILTER :                config->b_filter = ( IsDlgButtonChecked( hTabs[3], IDC_LOOPFILTER ) == BST_CHECKED );                EnableWindow( GetDlgItem( hTabs[3], IDC_INLOOP_A ), config->b_filter );                EnableWindow( GetDlgItem( hTabs[3], IDC_INLOOP_B ), config->b_filter );                break;            case IDC_BREFS :                config->b_b_refs = ( IsDlgButtonChecked( hTabs[2], IDC_BREFS ) == BST_CHECKED );                break;            case IDC_WBPRED :                config->b_b_wpred = ( IsDlgButtonChecked( hTabs[2], IDC_WBPRED ) == BST_CHECKED );                break;            case IDC_BADAPT :                config->b_bframe_adaptive = ( IsDlgButtonChecked( hTabs[2], IDC_BADAPT ) == BST_CHECKED );                break;            case IDC_P16X16 :                config->b_psub16x16 = ( IsDlgButtonChecked( hTabs[2], IDC_P16X16 ) == BST_CHECKED );                EnableWindow( GetDlgItem( hTabs[2], IDC_P8X8 ), config->b_psub16x16 );                break;            case IDC_P8X8 :                config->b_psub8x8 = ( IsDlgButtonChecked( hTabs[2], IDC_P8X8 ) == BST_CHECKED );                break;            case IDC_B16X16 :                config->b_bsub16x16 = ( IsDlgButtonChecked( hTabs[2], IDC_B16X16 ) == BST_CHECKED );                break;            case IDC_I4X4 :                config->b_i4x4 = ( IsDlgButtonChecked( hTabs[2], IDC_I4X4 ) == BST_CHECKED );                break;            case IDC_I8X8 :                config->b_i8x8 = ( IsDlgButtonChecked( hTabs[2], IDC_I8X8 ) == BST_CHECKED );                break;            case IDC_DCT8X8 :                config->b_dct8x8 = ( IsDlgButtonChecked( hTabs[2], IDC_DCT8X8 ) == BST_CHECKED );                EnableWindow( GetDlgItem( hTabs[2], IDC_I8X8 ), config->b_dct8x8 );                break;            case IDC_MIXEDREF :                config->b_mixedref = ( IsDlgButtonChecked( hTabs[2], IDC_MIXEDREF ) == BST_CHECKED );                break;            case IDC_CHROMAME :                config->b_chroma_me = ( IsDlgButtonChecked( hTabs[3], IDC_CHROMAME ) == BST_CHECKED );                break;            case IDC_UPDATESTATS :                config->b_updatestats = ( IsDlgButtonChecked( hTabs[0], IDC_UPDATESTATS ) == BST_CHECKED );                break;            case IDC_STATSFILE_BROWSE :                {                OPENFILENAME ofn;                char tmp[MAX_PATH];                GetDlgItemText( hTabs[0], 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( hTabs[0], IDC_STATSFILE, tmp );                }                break;            }            break;        case EN_CHANGE :            switch( LOWORD( wParam ) )            {            case IDC_FOURCC :                GetDlgItemText( hTabs[3], IDC_FOURCC, config->fcc, 5 );                break;            case IDC_THREADEDIT :                config->i_threads = GetDlgItemInt( hTabs[3], IDC_THREADEDIT, FALSE, FALSE );                if (config->i_threads < 1)                {                    config->i_threads = 1;                    SetDlgItemInt( hTabs[3], IDC_THREADEDIT, config->i_threads, FALSE );                }                else if (config->i_threads > 4)                {                    config->i_threads = 4;                    SetDlgItemInt( hTabs[3], IDC_THREADEDIT, config->i_threads, FALSE );                }                break;            case IDC_BITRATEEDIT :                switch (config->i_encoding_type)                {                case 0:                    config->bitrate = GetDlgItemInt( hTabs[0], IDC_BITRATEEDIT, FALSE, FALSE );                    SendDlgItemMessage( hTabs[0], IDC_BITRATESLIDER, TBM_SETPOS, TRUE, config->bitrate );                    break;                case 1:                    config->i_qp = GetDlgItemInt( hTabs[0], IDC_BITRATEEDIT, FALSE, FALSE );                    SendDlgItemMessage( hTabs[0], IDC_BITRATESLIDER, TBM_SETPOS, TRUE, config->i_qp );                    break;                case 2:                    config->i_2passbitrate = GetDlgItemInt( hTabs[0], IDC_BITRATEEDIT, FALSE, FALSE );                    SendDlgItemMessage( hTabs[0], IDC_BITRATESLIDER, TBM_SETPOS, TRUE, config->i_2passbitrate );                    break;                }                break;            case IDC_STATSFILE :                if( GetDlgItemText( hTabs[0], IDC_STATSFILE, config->stats, MAX_PATH ) == 0 )                    lstrcpy( config->stats, ".\\x264.stats" );                break;            case IDC_KEYINTMIN :                config->i_keyint_min = GetDlgItemInt( hTabs[1], IDC_KEYINTMIN, FALSE, FALSE );                break;            case IDC_KEYINTMAX :                config->i_keyint_max = GetDlgItemInt( hTabs[1], IDC_KEYINTMAX, FALSE, FALSE );                break;            case IDC_SCENECUT :                config->i_scenecut_threshold = GetDlgItemInt( hTabs[1], IDC_SCENECUT, FALSE, TRUE );                if( config->i_scenecut_threshold > 100 )                {                    config->i_scenecut_threshold = 100;                    SetDlgItemInt( hTabs[1], IDC_SCENECUT, config->i_scenecut_threshold, TRUE );                } else if ( config->i_scenecut_threshold < -1 )                {                    config->i_scenecut_threshold = -1;                    SetDlgItemInt( hTabs[1], IDC_SCENECUT, config->i_scenecut_threshold, TRUE );                }

⌨️ 快捷键说明

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