Initial community commit
This commit is contained in:
parent
537bcbc862
commit
fc06254474
16440 changed files with 4239995 additions and 2 deletions
846
Src/libvp6/config_dlg.cpp
Normal file
846
Src/libvp6/config_dlg.cpp
Normal file
|
@ -0,0 +1,846 @@
|
|||
/****************************************************************************
|
||||
*
|
||||
* Module Title : vfw_config_dlg.c
|
||||
*
|
||||
* Description : Configuration Parameters dialog module.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Header Files
|
||||
****************************************************************************/
|
||||
#include <windows.h>
|
||||
#include <stdio.h>
|
||||
#include <commctrl.h>
|
||||
#include "type_aliases.h"
|
||||
#include "vp60_comp_interface.h"
|
||||
#include "resource.h" // Must be the version resident in the VCAP dll directory!!!
|
||||
#include "vpvfwver.h"
|
||||
#include "vp6vfw.h"
|
||||
#include "vp60_comp_interface.h"
|
||||
#include <commdlg.h>
|
||||
//#include <cderr.h>
|
||||
extern HINSTANCE hInstance;
|
||||
|
||||
void BuildVersionInfo(char *modname,char *VersionInfo,int *vers)
|
||||
{
|
||||
|
||||
// ************************************************************
|
||||
// The next bit of code reads version information from resource
|
||||
VersionInfo[0]=0;
|
||||
char szFullPath[256];
|
||||
DWORD dwVerHnd;
|
||||
DWORD dwVerInfoSize;
|
||||
GetModuleFileName(/*GetModuleHandle(modname)*/hInstance, szFullPath, sizeof(szFullPath));
|
||||
dwVerInfoSize = GetFileVersionInfoSize(szFullPath, &dwVerHnd);
|
||||
|
||||
if (dwVerInfoSize)
|
||||
{
|
||||
// If we were able to get the information, process it:
|
||||
HANDLE hMem;
|
||||
LPVOID lpvMem;
|
||||
|
||||
hMem = GlobalAlloc(GMEM_MOVEABLE, dwVerInfoSize);
|
||||
lpvMem = GlobalLock(hMem);
|
||||
GetFileVersionInfo(szFullPath, dwVerHnd, dwVerInfoSize, lpvMem);
|
||||
|
||||
UINT cchVer = 0;
|
||||
LPSTR lszVer = NULL;
|
||||
strcat(VersionInfo, "\r");
|
||||
VerQueryValue(lpvMem,TEXT("\\StringFileInfo\\040904E4\\FileDescription"), (void **) &lszVer, &cchVer);
|
||||
strcat(VersionInfo,lszVer);
|
||||
strcat(VersionInfo, "\r\r");
|
||||
VerQueryValue(lpvMem,TEXT("\\StringFileInfo\\040904E4\\LegalCopyright"), (void **) &lszVer, &cchVer);
|
||||
strcat(VersionInfo,lszVer);
|
||||
strcat(VersionInfo, "\r");
|
||||
strcat(VersionInfo, " Version ");
|
||||
VerQueryValue(lpvMem,TEXT("\\StringFileInfo\\040904E4\\ProductVersion"), (void **) &lszVer, &cchVer);
|
||||
strcat(VersionInfo,lszVer);
|
||||
|
||||
GlobalUnlock(hMem);
|
||||
GlobalFree(hMem);
|
||||
}
|
||||
}
|
||||
|
||||
BOOL FAR PASCAL Advanced_ParamsDlgProc( HWND hWndDlg,UINT Message,WPARAM wParam,LPARAM lParam );
|
||||
BOOL FAR PASCAL General_ParamsDlgProc( HWND hWndDlg,UINT Message,WPARAM wParam,LPARAM lParam );
|
||||
BOOL FAR PASCAL Settings_ParamsDlgProc( HWND hWndDlg,UINT Message,WPARAM wParam,LPARAM lParam );
|
||||
BOOL FAR PASCAL Main_ParamsDlgProc( HWND hWndDlg,
|
||||
UINT Message,
|
||||
WPARAM wParam,
|
||||
LPARAM lParam)
|
||||
{
|
||||
COMP_CONFIG_VP6 *compConfig = (COMP_CONFIG_VP6 *)GetWindowLong(hWndDlg,GWL_USERDATA);
|
||||
|
||||
switch(Message)
|
||||
{
|
||||
case WM_NOTIFY:
|
||||
{
|
||||
switch(wParam)
|
||||
{
|
||||
case IDC_TAB1:
|
||||
{
|
||||
NMHDR *msg = (NMHDR *) lParam;
|
||||
|
||||
switch(msg->code)
|
||||
{
|
||||
case TCN_SELCHANGE:
|
||||
{
|
||||
HWND hwndTab = GetDlgItem(hWndDlg, IDC_TAB1);
|
||||
int whichTab = TabCtrl_GetCurSel(hwndTab);
|
||||
switch(whichTab)
|
||||
{
|
||||
case 2:
|
||||
{
|
||||
if(compConfig->PlaceHolder)
|
||||
DestroyWindow((HWND) compConfig->PlaceHolder);
|
||||
compConfig->PlaceHolder = (INT32) CreateDialogParam(hInstance,"SETTINGS",hWndDlg,Settings_ParamsDlgProc ,(LPARAM) compConfig);
|
||||
ShowWindow((HWND) compConfig->PlaceHolder,SW_SHOW);
|
||||
return TRUE;
|
||||
}
|
||||
case 0:
|
||||
{
|
||||
if(compConfig->PlaceHolder)
|
||||
DestroyWindow((HWND) compConfig->PlaceHolder);
|
||||
compConfig->PlaceHolder = (INT32) CreateDialogParam(hInstance,"GENERAL",hWndDlg,General_ParamsDlgProc ,(LPARAM) compConfig);
|
||||
ShowWindow((HWND) compConfig->PlaceHolder,SW_SHOW);
|
||||
return TRUE;
|
||||
}
|
||||
case 1:
|
||||
{
|
||||
|
||||
if(compConfig->PlaceHolder)
|
||||
DestroyWindow((HWND) compConfig->PlaceHolder);
|
||||
compConfig->PlaceHolder = (INT32) CreateDialogParam(hInstance,"ADVANCED",hWndDlg,Advanced_ParamsDlgProc ,(LPARAM) compConfig);
|
||||
ShowWindow((HWND) compConfig->PlaceHolder,SW_SHOW);
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
return (FALSE);
|
||||
}
|
||||
case WM_CTLCOLORSTATIC:
|
||||
{
|
||||
HDC hdc = (HDC) wParam;
|
||||
HWND hwndStatic = (HWND) lParam;
|
||||
|
||||
if ( hwndStatic == GetDlgItem ( hWndDlg, IDC_TITLE ) ||
|
||||
hwndStatic == GetDlgItem ( hWndDlg, IDC_FRAME ) )
|
||||
{
|
||||
return (LRESULT) GetStockObject(WHITE_BRUSH); ;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case WM_INITDIALOG:
|
||||
{
|
||||
|
||||
HWND hwndTab = GetDlgItem(hWndDlg, IDC_TAB1);
|
||||
TC_ITEM tie;
|
||||
|
||||
SetWindowLong(hWndDlg, GWL_USERDATA, (unsigned long)lParam);
|
||||
compConfig = (COMP_CONFIG_VP6 *) lParam;
|
||||
|
||||
tie.mask = TCIF_TEXT | TCIF_STATE | TCIF_IMAGE;
|
||||
tie.iImage = -1;
|
||||
|
||||
tie.pszText = "General";
|
||||
if (TabCtrl_InsertItem(hwndTab, 0, &tie) == -1)
|
||||
return NULL;
|
||||
|
||||
tie.pszText = "Advanced";
|
||||
if (TabCtrl_InsertItem(hwndTab, 1, &tie) == -1)
|
||||
return NULL;
|
||||
|
||||
tie.pszText = "Settings";
|
||||
if (TabCtrl_InsertItem(hwndTab, 2, &tie) == -1)
|
||||
return NULL;
|
||||
|
||||
char VersionString[2048]={0};
|
||||
int vers;
|
||||
BuildVersionInfo("VP6VFW.DLL",VersionString,&vers);
|
||||
SetDlgItemText( hWndDlg, IDC_TITLE, VersionString);
|
||||
|
||||
|
||||
compConfig->PlaceHolder = (INT32) CreateDialogParam(hInstance,"GENERAL",hWndDlg,General_ParamsDlgProc ,(LPARAM) compConfig);
|
||||
ShowWindow((HWND) compConfig->PlaceHolder,SW_SHOW);
|
||||
|
||||
|
||||
return (TRUE);
|
||||
}
|
||||
|
||||
|
||||
case WM_CLOSE: /* Close the dialog. */
|
||||
/* Closing the Dialog behaves the same as Cancel */
|
||||
PostMessage(hWndDlg, WM_COMMAND, IDCANCEL, 0L);
|
||||
return (TRUE);
|
||||
|
||||
case WM_COMMAND: /* A control has been activated. */
|
||||
switch(LOWORD(wParam))
|
||||
{
|
||||
/* OK leaves the current settings in force */
|
||||
case IDOK:
|
||||
EndDialog(hWndDlg, IDOK);
|
||||
break;
|
||||
|
||||
case IDCANCEL:
|
||||
EndDialog(hWndDlg, IDCANCEL);
|
||||
break;
|
||||
|
||||
default:
|
||||
return (FALSE);
|
||||
|
||||
}
|
||||
return (FALSE);
|
||||
|
||||
default:
|
||||
return (FALSE);
|
||||
|
||||
} /* End of Main Dialog case statement. */
|
||||
|
||||
return FALSE;
|
||||
} /* End of WndProc */
|
||||
|
||||
|
||||
|
||||
BOOL FAR PASCAL General_ParamsDlgProc( HWND hWndDlg,
|
||||
UINT Message,
|
||||
WPARAM wParam,
|
||||
LPARAM lParam)
|
||||
{
|
||||
COMP_CONFIG_VP6 *compConfig = (COMP_CONFIG_VP6 *)GetWindowLong(hWndDlg,GWL_USERDATA);
|
||||
|
||||
switch(Message)
|
||||
{
|
||||
case WM_SETFOCUS:
|
||||
Message+=0;
|
||||
break;
|
||||
case WM_INITDIALOG:
|
||||
{
|
||||
SetWindowLong(hWndDlg, GWL_USERDATA, (unsigned long)lParam);
|
||||
compConfig = (COMP_CONFIG_VP6 *) lParam;
|
||||
|
||||
// fill mode box
|
||||
SendDlgItemMessage(hWndDlg, IDD_MODE, CB_ADDSTRING, 0, (LPARAM) (LPCSTR) "Realtime / Live Encoding");
|
||||
SendDlgItemMessage(hWndDlg, IDD_MODE, CB_ADDSTRING, 0, (LPARAM) (LPCSTR) "Good Quality Fast Encoding");
|
||||
SendDlgItemMessage(hWndDlg, IDD_MODE, CB_ADDSTRING, 0, (LPARAM) (LPCSTR) "One Pass - Best Quality");
|
||||
SendDlgItemMessage(hWndDlg, IDD_MODE, CB_ADDSTRING, 0, (LPARAM) (LPCSTR) "Two Pass - First Pass" );
|
||||
SendDlgItemMessage(hWndDlg, IDD_MODE, CB_ADDSTRING, 0, (LPARAM) (LPCSTR) "Two Pass - Second Pass - Good Quality");
|
||||
SendDlgItemMessage(hWndDlg, IDD_MODE, CB_ADDSTRING, 0, (LPARAM) (LPCSTR) "Two Pass - Second Pass - Best Quality");
|
||||
|
||||
// set mode
|
||||
SendDlgItemMessage(hWndDlg, IDD_MODE, CB_SETCURSEL, (LPARAM) compConfig->Mode,0);
|
||||
|
||||
// set end usage
|
||||
switch(compConfig->EndUsage)
|
||||
{
|
||||
case 0:
|
||||
CheckDlgButton( hWndDlg, IDC_ENDUSAGE1, 1);
|
||||
CheckDlgButton( hWndDlg, IDC_ENDUSAGE2, 0);
|
||||
break;
|
||||
default:
|
||||
CheckDlgButton( hWndDlg, IDC_ENDUSAGE2, 1);
|
||||
CheckDlgButton( hWndDlg, IDC_ENDUSAGE1, 0);
|
||||
break;
|
||||
}
|
||||
|
||||
// set material
|
||||
switch(compConfig->Interlaced)
|
||||
{
|
||||
case 1:
|
||||
CheckDlgButton( hWndDlg, IDC_MATERIAL1, 1);
|
||||
CheckDlgButton( hWndDlg, IDC_MATERIAL2, 0);
|
||||
break;
|
||||
default:
|
||||
CheckDlgButton( hWndDlg, IDC_MATERIAL2, 1);
|
||||
CheckDlgButton( hWndDlg, IDC_MATERIAL1, 0);
|
||||
break;
|
||||
}
|
||||
|
||||
// setup noise reduction slider
|
||||
SendDlgItemMessage(hWndDlg, IDC_NOISEREDUCTION_SLIDER, TBM_SETRANGE, (WPARAM) TRUE, (LPARAM) MAKELONG(0, 6));
|
||||
|
||||
// set noise reduction
|
||||
SetDlgItemInt( hWndDlg, IDC_NOISEREDUCTION, compConfig->NoiseSensitivity, FALSE );
|
||||
SendDlgItemMessage(hWndDlg, IDC_NOISEREDUCTION_SLIDER, TBM_SETPOS, (WPARAM) TRUE,(LPARAM) compConfig->NoiseSensitivity);
|
||||
SendDlgItemMessage(hWndDlg, IDC_NOISEREDUCTION_SLIDER, TBM_SETTICFREQ, (WPARAM) 1,(LPARAM) 1);
|
||||
|
||||
// set auto keyframe
|
||||
CheckDlgButton( hWndDlg, IDC_AUTOKEYFRAME_CHECK, (compConfig->AutoKeyFrameEnabled) ? 1 : 0 );
|
||||
|
||||
// set max frames btw keys
|
||||
SetDlgItemInt( hWndDlg, IDC_MAXFRAMESBTWKEYS, compConfig->ForceKeyFrameEvery, FALSE );
|
||||
|
||||
return (TRUE);
|
||||
}
|
||||
case WM_HSCROLL:
|
||||
{
|
||||
// change edit box to match slider
|
||||
SetDlgItemInt( hWndDlg, IDC_NOISEREDUCTION, SendDlgItemMessage(hWndDlg, IDC_NOISEREDUCTION_SLIDER, TBM_GETPOS, 0,0), FALSE );
|
||||
return (TRUE);
|
||||
}
|
||||
|
||||
case WM_DESTROY: //case WM_CLOSE: /* Close the dialog. */
|
||||
|
||||
// save everything to our structure
|
||||
compConfig->AutoKeyFrameEnabled = SendDlgItemMessage(hWndDlg, IDC_AUTOKEYFRAME_CHECK, BM_GETCHECK, 0, 0);
|
||||
compConfig->EndUsage = (END_USAGE) SendDlgItemMessage(hWndDlg, IDC_ENDUSAGE2, BM_GETCHECK, 0, 0);
|
||||
compConfig->Interlaced = SendDlgItemMessage(hWndDlg, IDC_MATERIAL1, BM_GETCHECK, 0, 0);
|
||||
compConfig->ForceKeyFrameEvery = GetDlgItemInt(hWndDlg, IDC_MAXFRAMESBTWKEYS, NULL, FALSE );
|
||||
compConfig->Mode = (MODE) SendDlgItemMessage(hWndDlg, IDD_MODE, CB_GETCURSEL, 0, 0);
|
||||
compConfig->NoiseSensitivity = GetDlgItemInt(hWndDlg, IDC_NOISEREDUCTION, NULL, FALSE );
|
||||
return (TRUE);
|
||||
|
||||
case WM_COMMAND: /* A control has been activated. */
|
||||
{
|
||||
switch(HIWORD(wParam))
|
||||
{
|
||||
case EN_KILLFOCUS:
|
||||
{
|
||||
// error checking
|
||||
int value = GetDlgItemInt(hWndDlg, LOWORD(wParam), NULL, FALSE );
|
||||
|
||||
switch(LOWORD(wParam))
|
||||
{
|
||||
case IDC_NOISEREDUCTION:
|
||||
{
|
||||
if(value < 0) value = 0;
|
||||
if(value > 6) value = 6;
|
||||
|
||||
SendDlgItemMessage(hWndDlg, IDC_NOISEREDUCTION_SLIDER, TBM_SETPOS, (WPARAM) TRUE, value );
|
||||
SetDlgItemInt( hWndDlg, LOWORD(wParam), value, FALSE );
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case IDC_MAXFRAMESBTWKEYS:
|
||||
{
|
||||
if(value < 0) value = 0;
|
||||
SetDlgItemInt( hWndDlg, LOWORD(wParam), value, FALSE );
|
||||
break;
|
||||
}
|
||||
default:
|
||||
return (FALSE);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
return (FALSE);
|
||||
}
|
||||
|
||||
|
||||
default:
|
||||
return (FALSE);
|
||||
|
||||
} /* End of Main Dialog case statement. */
|
||||
|
||||
return FALSE;
|
||||
} /* End of WndProc */
|
||||
|
||||
|
||||
|
||||
|
||||
BOOL FAR PASCAL Advanced_ParamsDlgProc( HWND hWndDlg,
|
||||
UINT Message,
|
||||
WPARAM wParam,
|
||||
LPARAM lParam)
|
||||
{
|
||||
COMP_CONFIG_VP6 *compConfig = (COMP_CONFIG_VP6 *)GetWindowLong(hWndDlg,GWL_USERDATA);
|
||||
switch(Message)
|
||||
{
|
||||
case WM_INITDIALOG:
|
||||
{
|
||||
|
||||
SetWindowLong(hWndDlg, GWL_USERDATA, (unsigned long)lParam);
|
||||
compConfig = (COMP_CONFIG_VP6 *) lParam;
|
||||
|
||||
if ( compConfig->EndUsage == 1)
|
||||
{
|
||||
EnableWindow(GetDlgItem(hWndDlg, IDC_EDIT_MAXBITRATE), 0);
|
||||
EnableWindow(GetDlgItem(hWndDlg, STREAMING_PARAMETERS), 0);
|
||||
EnableWindow(GetDlgItem(hWndDlg, PEAK_BITRATE), 0);
|
||||
EnableWindow(GetDlgItem(hWndDlg, PREBUFFER), 0);
|
||||
EnableWindow(GetDlgItem(hWndDlg, IDC_EDIT_PREBUFFER), 0);
|
||||
EnableWindow(GetDlgItem(hWndDlg, OPTIMAL_BUFFER), 0);
|
||||
EnableWindow(GetDlgItem(hWndDlg, IDC_EDIT_OPTIMAL), 0);
|
||||
EnableWindow(GetDlgItem(hWndDlg, MAX_BUFFER), 0);
|
||||
EnableWindow(GetDlgItem(hWndDlg, IDC_EDIT_MAXBUFFER), 0);
|
||||
}
|
||||
if(compConfig->Mode < 4)
|
||||
{
|
||||
EnableWindow(GetDlgItem(hWndDlg, TWO_PASS_SECTION_DATARATE), 0);
|
||||
EnableWindow(GetDlgItem(hWndDlg, VARIABILITY), 0);
|
||||
EnableWindow(GetDlgItem(hWndDlg, IDC_DATARATEVARIABILITY), 0);
|
||||
EnableWindow(GetDlgItem(hWndDlg, MIN_SECTION), 0);
|
||||
EnableWindow(GetDlgItem(hWndDlg, IDC_EDIT_MINBANDWIDTH), 0);
|
||||
EnableWindow(GetDlgItem(hWndDlg, MAX_SECTION), 0);
|
||||
EnableWindow(GetDlgItem(hWndDlg, IDC_EDIT_MAXBANDWIDTH), 0);
|
||||
}
|
||||
|
||||
// set buffer stats
|
||||
SetDlgItemInt( hWndDlg, IDC_EDIT_PREBUFFER, compConfig->StartingBufferLevel, FALSE );
|
||||
SetDlgItemInt( hWndDlg, IDC_EDIT_OPTIMAL, compConfig->OptimalBufferLevel, FALSE );
|
||||
SetDlgItemInt( hWndDlg, IDC_EDIT_MAXBUFFER, compConfig->MaximumBufferSize, FALSE );
|
||||
|
||||
// setup vbr slider
|
||||
SendDlgItemMessage(hWndDlg, IDC_DATARATEVARIABILITY_SLIDER, TBM_SETRANGE, (WPARAM) TRUE, (LPARAM) MAKELONG(0, 100));
|
||||
SendDlgItemMessage(hWndDlg, IDC_DATARATEVARIABILITY_SLIDER, TBM_SETTICFREQ, (WPARAM) 10,(LPARAM) 10);
|
||||
|
||||
// set vbr settings
|
||||
SendDlgItemMessage(hWndDlg, IDC_DATARATEVARIABILITY_SLIDER, TBM_SETPOS, (WPARAM) TRUE,(LPARAM) compConfig->TwoPassVBRBias);
|
||||
SetDlgItemInt( hWndDlg, IDC_DATARATEVARIABILITY, compConfig->TwoPassVBRBias, FALSE );
|
||||
SetDlgItemInt( hWndDlg, IDC_EDIT_MINBANDWIDTH, compConfig->TwoPassVBRMinSection, FALSE );
|
||||
SetDlgItemInt( hWndDlg, IDC_EDIT_MAXBANDWIDTH, compConfig->TwoPassVBRMaxSection, FALSE );
|
||||
SetDlgItemInt( hWndDlg, IDC_EDIT_MAXBITRATE, compConfig->MaxAllowedDatarate, FALSE );
|
||||
|
||||
|
||||
|
||||
// datarate control options
|
||||
SetDlgItemInt( hWndDlg, IDC_EDIT_UNDERSHOOT, compConfig->UnderShootPct, FALSE );
|
||||
|
||||
// set adjust quantizer control
|
||||
CheckDlgButton( hWndDlg, IDC_ADJUSTQ_CHECK, (compConfig->FixedQ) ? 0 : 1 );
|
||||
SetDlgItemInt( hWndDlg, IDC_EDIT_MINQUALITY, compConfig->BestAllowedQ, FALSE );
|
||||
SetDlgItemInt( hWndDlg, IDC_EDIT_MAXQUALITY, compConfig->Quality, FALSE );
|
||||
|
||||
// allowing dropped frames
|
||||
CheckDlgButton( hWndDlg, IDC_ALLOW_DROPPED_FRAMES_CHECK, (compConfig->AllowDF) ? 1 : 0 );
|
||||
SetDlgItemInt( hWndDlg, IDC_EDIT_TEMPORAL_DOWN, compConfig->DropFramesWaterMark, FALSE );
|
||||
|
||||
// allowing spatial resampling
|
||||
CheckDlgButton( hWndDlg, IDC_SCALE_CHECK, (compConfig->AllowSpatialResampling) ? 1 : 0 );
|
||||
SetDlgItemInt( hWndDlg, IDC_EDIT_SPATIAL_DOWN, compConfig->ResampleDownWaterMark, FALSE );
|
||||
SetDlgItemInt( hWndDlg, IDC_EDIT_SPATIAL_UP, compConfig->ResampleUpWaterMark, FALSE );
|
||||
|
||||
|
||||
return (TRUE);
|
||||
}
|
||||
|
||||
|
||||
case WM_DESTROY: //case WM_CLOSE: /* Close the dialog. */
|
||||
|
||||
// save everything to our structure
|
||||
compConfig->StartingBufferLevel = GetDlgItemInt(hWndDlg, IDC_EDIT_PREBUFFER, NULL, FALSE );
|
||||
compConfig->OptimalBufferLevel = GetDlgItemInt(hWndDlg, IDC_EDIT_OPTIMAL, NULL, FALSE );
|
||||
compConfig->MaximumBufferSize = GetDlgItemInt(hWndDlg, IDC_EDIT_MAXBUFFER, NULL, FALSE );
|
||||
compConfig->TwoPassVBRBias = GetDlgItemInt(hWndDlg, IDC_DATARATEVARIABILITY, NULL, FALSE );
|
||||
compConfig->TwoPassVBRMinSection = GetDlgItemInt(hWndDlg, IDC_EDIT_MINBANDWIDTH, NULL, FALSE );
|
||||
compConfig->TwoPassVBRMaxSection = GetDlgItemInt(hWndDlg, IDC_EDIT_MAXBANDWIDTH, NULL, FALSE );
|
||||
compConfig->MaxAllowedDatarate = GetDlgItemInt(hWndDlg, IDC_EDIT_MAXBITRATE, NULL, FALSE );
|
||||
compConfig->UnderShootPct = GetDlgItemInt(hWndDlg, IDC_EDIT_UNDERSHOOT, NULL, FALSE );
|
||||
compConfig->FixedQ = !SendDlgItemMessage(hWndDlg, IDC_ADJUSTQ_CHECK, BM_GETCHECK, 0, 0);
|
||||
compConfig->BestAllowedQ = GetDlgItemInt(hWndDlg, IDC_EDIT_MINQUALITY, NULL, FALSE );
|
||||
compConfig->Quality = GetDlgItemInt(hWndDlg, IDC_EDIT_MAXQUALITY, NULL, FALSE );
|
||||
compConfig->AllowDF = SendDlgItemMessage(hWndDlg, IDC_ALLOW_DROPPED_FRAMES_CHECK, BM_GETCHECK, 0, 0);
|
||||
compConfig->DropFramesWaterMark = GetDlgItemInt(hWndDlg, IDC_EDIT_TEMPORAL_DOWN, NULL, FALSE );
|
||||
compConfig->AllowSpatialResampling = SendDlgItemMessage(hWndDlg, IDC_SCALE_CHECK, BM_GETCHECK, 0, 0);
|
||||
compConfig->ResampleDownWaterMark = GetDlgItemInt(hWndDlg, IDC_EDIT_SPATIAL_DOWN, NULL, FALSE );
|
||||
compConfig->ResampleUpWaterMark = GetDlgItemInt(hWndDlg, IDC_EDIT_SPATIAL_UP, NULL, FALSE );
|
||||
|
||||
return (TRUE);
|
||||
|
||||
case WM_HSCROLL:
|
||||
{
|
||||
// change edit box to match slider
|
||||
SetDlgItemInt( hWndDlg, IDC_DATARATEVARIABILITY, SendDlgItemMessage(hWndDlg, IDC_DATARATEVARIABILITY_SLIDER, TBM_GETPOS, 0,0), FALSE );
|
||||
return (TRUE);
|
||||
}
|
||||
|
||||
case WM_COMMAND: /* A control has been activated. */
|
||||
{
|
||||
switch(HIWORD(wParam))
|
||||
{
|
||||
case EN_KILLFOCUS:
|
||||
{
|
||||
// error checking
|
||||
int value = GetDlgItemInt(hWndDlg, LOWORD(wParam), NULL, FALSE );
|
||||
|
||||
switch(LOWORD(wParam))
|
||||
{
|
||||
case IDC_DATARATEVARIABILITY:
|
||||
{
|
||||
if(value < 0) value = 0;
|
||||
if(value > 100 ) value = 100;
|
||||
SendDlgItemMessage(hWndDlg, IDC_DATARATEVARIABILITY_SLIDER, TBM_SETPOS, (WPARAM) TRUE, value );
|
||||
SetDlgItemInt( hWndDlg, LOWORD(wParam), value, FALSE );
|
||||
break;
|
||||
}
|
||||
|
||||
// save everything to our structure
|
||||
case IDC_EDIT_PREBUFFER:
|
||||
{
|
||||
if(value < 0) value = 0;
|
||||
if(value > 30 ) value = 30;
|
||||
SetDlgItemInt( hWndDlg, LOWORD(wParam), value, FALSE );
|
||||
break;
|
||||
}
|
||||
case IDC_EDIT_OPTIMAL:
|
||||
{
|
||||
if(value < 0) value = 0;
|
||||
if(value > 30 ) value = 30;
|
||||
SetDlgItemInt( hWndDlg, LOWORD(wParam), value, FALSE );
|
||||
break;
|
||||
}
|
||||
case IDC_EDIT_MAXBUFFER:
|
||||
{
|
||||
if(value < 0) value = 0;
|
||||
if(value > 30 ) value = 30;
|
||||
SetDlgItemInt( hWndDlg, LOWORD(wParam), value, FALSE );
|
||||
break;
|
||||
}
|
||||
|
||||
case IDC_EDIT_MINBANDWIDTH:
|
||||
{
|
||||
if(value < 0) value = 0;
|
||||
if(value > 100 ) value = 100;
|
||||
SetDlgItemInt( hWndDlg, LOWORD(wParam), value, FALSE );
|
||||
break;
|
||||
}
|
||||
case IDC_EDIT_MAXBANDWIDTH:
|
||||
{
|
||||
if(value < 100) value = 100;
|
||||
if(value > 1000 ) value = 1000;
|
||||
SetDlgItemInt( hWndDlg, LOWORD(wParam), value, FALSE );
|
||||
break;
|
||||
}
|
||||
case IDC_EDIT_UNDERSHOOT:
|
||||
{
|
||||
if(value < 50) value = 50;
|
||||
if(value > 100 ) value = 100;
|
||||
SetDlgItemInt( hWndDlg, LOWORD(wParam), value, FALSE );
|
||||
break;
|
||||
}
|
||||
|
||||
case IDC_EDIT_MINQUALITY:
|
||||
{
|
||||
if(value < 0) value = 0;
|
||||
if(value > 63 ) value = 63;
|
||||
SetDlgItemInt( hWndDlg, LOWORD(wParam), value, FALSE );
|
||||
break;
|
||||
}
|
||||
case IDC_EDIT_MAXQUALITY:
|
||||
{
|
||||
if(value < 0) value = 0;
|
||||
if(value > 63 ) value = 63;
|
||||
SetDlgItemInt( hWndDlg, LOWORD(wParam), value, FALSE );
|
||||
break;
|
||||
}
|
||||
|
||||
case IDC_EDIT_TEMPORAL_DOWN :
|
||||
{
|
||||
if(value < 0) value = 0;
|
||||
if(value > 100 ) value = 100;
|
||||
SetDlgItemInt( hWndDlg, LOWORD(wParam), value, FALSE );
|
||||
break;
|
||||
}
|
||||
case IDC_EDIT_SPATIAL_DOWN :
|
||||
{
|
||||
if(value < 0) value = 0;
|
||||
if(value > 100 ) value = 100;
|
||||
|
||||
SetDlgItemInt( hWndDlg, LOWORD(wParam), value, FALSE );
|
||||
break;
|
||||
}
|
||||
case IDC_EDIT_SPATIAL_UP :
|
||||
{
|
||||
if(value < 0) value = 0;
|
||||
if(value > 100 ) value = 100;
|
||||
|
||||
SetDlgItemInt( hWndDlg, LOWORD(wParam), value, FALSE );
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
default:
|
||||
return (FALSE);
|
||||
}
|
||||
|
||||
return (FALSE);
|
||||
}
|
||||
|
||||
default:
|
||||
return (FALSE);
|
||||
|
||||
} /* End of Main Dialog case statement. */
|
||||
|
||||
return FALSE;
|
||||
} /* End of WndProc */
|
||||
|
||||
|
||||
|
||||
BOOL FAR PASCAL Settings_ParamsDlgProc( HWND hWndDlg,
|
||||
UINT Message,
|
||||
WPARAM wParam,
|
||||
LPARAM lParam)
|
||||
{
|
||||
COMP_CONFIG_VP6 *compConfig = (COMP_CONFIG_VP6 *)GetWindowLong(hWndDlg,GWL_USERDATA);
|
||||
|
||||
switch(Message)
|
||||
{
|
||||
case WM_INITDIALOG:
|
||||
{
|
||||
SetWindowLong(hWndDlg, GWL_USERDATA, (unsigned long)lParam);
|
||||
compConfig = (COMP_CONFIG_VP6 *) lParam;
|
||||
|
||||
if(!memcmp(compConfig->SettingsFile,compConfig->RootDirectory,strlen(compConfig->RootDirectory)))
|
||||
{
|
||||
strcpy(compConfig->SettingsFile,compConfig->SettingsFile+strlen(compConfig->RootDirectory));
|
||||
}
|
||||
if(!memcmp(compConfig->SettingsFile+strlen(compConfig->SettingsFile)-4,".vps",4))
|
||||
{
|
||||
compConfig->SettingsFile[strlen(compConfig->SettingsFile)-4]=0;
|
||||
}
|
||||
SetDlgItemText(hWndDlg,IDC_FIRSTPASS,compConfig->FirstPassFile);
|
||||
SetDlgItemText(hWndDlg,IDC_SETTINGSFILE,compConfig->SettingsFile);
|
||||
|
||||
WIN32_FIND_DATA wfd;
|
||||
|
||||
char FileFilter[512];
|
||||
strncpy(FileFilter,compConfig->RootDirectory,512);
|
||||
strcat(FileFilter,"\\*.vps");
|
||||
HANDLE ffh = FindFirstFile(FileFilter,&wfd);
|
||||
if( ffh !=INVALID_HANDLE_VALUE)
|
||||
{
|
||||
do
|
||||
{
|
||||
wfd.cFileName[strlen(wfd.cFileName)-4]=0;
|
||||
SendDlgItemMessage(hWndDlg, IDC_SETTINGS_LIST, LB_ADDSTRING, 0, (LPARAM) (LPCSTR) wfd.cFileName);
|
||||
}
|
||||
while ( FindNextFile(ffh,&wfd));
|
||||
FindClose(ffh);
|
||||
}
|
||||
|
||||
|
||||
return (TRUE);
|
||||
}
|
||||
|
||||
case WM_DESTROY: //case WM_CLOSE: /* Close the dialog. */
|
||||
|
||||
// save everything to our structure
|
||||
GetDlgItemText(hWndDlg,IDC_FIRSTPASS,compConfig->FirstPassFile,512);
|
||||
GetDlgItemText(hWndDlg,IDC_SETTINGSFILE,compConfig->SettingsFile,512);
|
||||
if(compConfig->SettingsFile[1] != ':' && compConfig->SettingsFile[1] != '\\')
|
||||
{
|
||||
char tmp[512];
|
||||
strncpy(tmp,compConfig->SettingsFile,512);
|
||||
strncpy(compConfig->SettingsFile,compConfig->RootDirectory,512);
|
||||
strcat(compConfig->SettingsFile,tmp);
|
||||
}
|
||||
if(compConfig->SettingsFile[strlen(compConfig->SettingsFile)-4] != '.' )
|
||||
{
|
||||
strcat(compConfig->SettingsFile,".vps");
|
||||
}
|
||||
|
||||
return (TRUE);
|
||||
|
||||
case WM_COMMAND: /* A control has been activated. */
|
||||
{
|
||||
switch(HIWORD(wParam))
|
||||
{
|
||||
case LBN_SELCHANGE :
|
||||
{
|
||||
int curSel =SendDlgItemMessage(hWndDlg, IDC_SETTINGS_LIST, LB_GETCURSEL, 0, 0);
|
||||
SendDlgItemMessage(hWndDlg, IDC_SETTINGS_LIST, LB_GETTEXT, curSel, (DWORD) compConfig->SettingsFile);
|
||||
SetDlgItemText(hWndDlg,IDC_SETTINGSFILE,compConfig->SettingsFile);
|
||||
if(compConfig->SettingsFile[1] != ':' && compConfig->SettingsFile[1] != '\\')
|
||||
{
|
||||
char tmp[512];
|
||||
strncpy(tmp,compConfig->SettingsFile,512);
|
||||
strncpy(compConfig->SettingsFile,compConfig->RootDirectory,512);
|
||||
strcat(compConfig->SettingsFile,"\\");
|
||||
strcat(compConfig->SettingsFile,tmp);
|
||||
}
|
||||
if(compConfig->SettingsFile[strlen(compConfig->SettingsFile)-4] != '.' )
|
||||
{
|
||||
strcat(compConfig->SettingsFile,".vps");
|
||||
}
|
||||
FILE *f = fopen(compConfig->SettingsFile,"rb");
|
||||
if(f)
|
||||
{
|
||||
char tmp[512];
|
||||
HWND still = (HWND) compConfig->PlaceHolder;
|
||||
strncpy(tmp,compConfig->RootDirectory,512);
|
||||
fread(compConfig,sizeof COMP_CONFIG_VP6,1,f);
|
||||
strncpy(compConfig->RootDirectory,tmp,512);
|
||||
fclose(f);
|
||||
compConfig->PlaceHolder = (INT32) still;
|
||||
}
|
||||
}
|
||||
|
||||
case BN_CLICKED:
|
||||
switch(LOWORD(wParam))
|
||||
{
|
||||
case ID_SAVE:
|
||||
{
|
||||
FILE *f;
|
||||
|
||||
GetDlgItemText(hWndDlg,IDC_SETTINGSFILE,compConfig->SettingsFile,512);
|
||||
GetDlgItemText(hWndDlg,IDC_FIRSTPASS,compConfig->FirstPassFile,512);
|
||||
|
||||
if(compConfig->SettingsFile[1] != ':' && compConfig->SettingsFile[1] != '\\')
|
||||
{
|
||||
char tmp[512];
|
||||
strncpy(tmp,compConfig->SettingsFile,512);
|
||||
strncpy(compConfig->SettingsFile,compConfig->RootDirectory,512);
|
||||
strcat(compConfig->SettingsFile,"\\");
|
||||
strcat(compConfig->SettingsFile,tmp);
|
||||
}
|
||||
if(compConfig->SettingsFile[strlen(compConfig->SettingsFile)-4] != '.' )
|
||||
{
|
||||
strcat(compConfig->SettingsFile,".vps");
|
||||
}
|
||||
|
||||
f=fopen(compConfig->SettingsFile,"wb");
|
||||
if(f)
|
||||
{
|
||||
fwrite(compConfig,10+sizeof COMP_CONFIG_VP6,1,f);
|
||||
fclose(f);
|
||||
}
|
||||
int curSel = SendDlgItemMessage(hWndDlg, IDC_SETTINGS_LIST, LB_FINDSTRING, 0, (LPARAM) (LPCSTR) compConfig->SettingsFile );
|
||||
if( curSel == LB_ERR)
|
||||
{
|
||||
WIN32_FIND_DATA wfd;
|
||||
|
||||
int curSel = SendDlgItemMessage(hWndDlg, IDC_SETTINGS_LIST, LB_RESETCONTENT, 0, 0 );
|
||||
char FileFilter[512];
|
||||
strncpy(FileFilter,compConfig->RootDirectory,512);
|
||||
strcat(FileFilter,"\\*.vps");
|
||||
HANDLE ffh = FindFirstFile(FileFilter,&wfd);
|
||||
if( ffh !=INVALID_HANDLE_VALUE)
|
||||
{
|
||||
do
|
||||
{
|
||||
wfd.cFileName[strlen(wfd.cFileName)-4]=0;
|
||||
SendDlgItemMessage(hWndDlg, IDC_SETTINGS_LIST, LB_ADDSTRING, 0, (LPARAM) (LPCSTR) wfd.cFileName);
|
||||
}
|
||||
while ( FindNextFile(ffh,&wfd));
|
||||
FindClose(ffh);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
return TRUE;
|
||||
};
|
||||
case ID_DELETE:
|
||||
{
|
||||
int curSel =SendDlgItemMessage(hWndDlg, IDC_SETTINGS_LIST, LB_GETCURSEL, 0, 0);
|
||||
SendDlgItemMessage(hWndDlg, IDC_SETTINGS_LIST, LB_DELETESTRING, curSel, 0);
|
||||
|
||||
|
||||
DeleteFile(compConfig->SettingsFile);
|
||||
|
||||
return TRUE;
|
||||
};
|
||||
case IDC_LOAD_FIRSTPASS:
|
||||
{
|
||||
static TCHAR szFilterLoad[] = TEXT("VP First Pass \0*.vpf\0\0");
|
||||
OPENFILENAME ofn;
|
||||
TCHAR szTitle[64];
|
||||
TCHAR szT[256];
|
||||
ofn.lStructSize= sizeof(ofn);
|
||||
ofn.hInstance= 0;
|
||||
ofn.lpstrFilter= szFilterLoad;
|
||||
ofn.lpstrCustomFilter= NULL;
|
||||
ofn.nMaxCustFilter= 0;
|
||||
ofn.nFilterIndex= 0;
|
||||
ofn.lpstrFileTitle= szTitle;
|
||||
ofn.nMaxFileTitle= sizeof(szTitle);
|
||||
ofn.lpstrInitialDir= compConfig->RootDirectory;
|
||||
ofn.lpstrTitle= NULL;
|
||||
ofn.nFileOffset= 0;
|
||||
ofn.nFileExtension= 0;
|
||||
ofn.lpstrDefExt= "vps";
|
||||
ofn.lCustData= 0L;
|
||||
ofn.lpfnHook= NULL;
|
||||
ofn.lpTemplateName= NULL;
|
||||
ofn.hwndOwner= hWndDlg;
|
||||
ofn.lpstrFile= szT;
|
||||
ofn.nMaxFile= sizeof(szT);
|
||||
ofn.Flags= 0;
|
||||
szTitle[0] = TEXT('\0');
|
||||
szT[0] = TEXT('\0');
|
||||
if(GetOpenFileName(&ofn))
|
||||
{
|
||||
strncpy(compConfig->FirstPassFile,ofn.lpstrFile,512);
|
||||
SetDlgItemText(hWndDlg,IDC_FIRSTPASS,compConfig->FirstPassFile);
|
||||
}
|
||||
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
case IDC_LOAD_SETTINGS:
|
||||
{
|
||||
static TCHAR szFilterLoad[] = TEXT("VP Setting Files\0*.vps\0\0");
|
||||
OPENFILENAME ofn;
|
||||
TCHAR szTitle[64];
|
||||
TCHAR szT[256];
|
||||
ofn.lStructSize= sizeof(ofn);
|
||||
ofn.hInstance= 0;
|
||||
ofn.lpstrFilter= szFilterLoad;
|
||||
ofn.lpstrCustomFilter= NULL;
|
||||
ofn.nMaxCustFilter= 0;
|
||||
ofn.nFilterIndex= 0;
|
||||
ofn.lpstrFileTitle= szTitle;
|
||||
ofn.nMaxFileTitle= sizeof(szTitle);
|
||||
ofn.lpstrInitialDir= compConfig->RootDirectory;
|
||||
ofn.lpstrTitle= NULL;
|
||||
ofn.nFileOffset= 0;
|
||||
ofn.nFileExtension= 0;
|
||||
ofn.lpstrDefExt= "vps";
|
||||
ofn.lCustData= 0L;
|
||||
ofn.lpfnHook= NULL;
|
||||
ofn.lpTemplateName= NULL;
|
||||
ofn.hwndOwner= hWndDlg;
|
||||
ofn.lpstrFile= szT;
|
||||
ofn.nMaxFile= sizeof(szT);
|
||||
ofn.Flags= 0;
|
||||
szTitle[0] = TEXT('\0');
|
||||
szT[0] = TEXT('\0');
|
||||
if(GetOpenFileName(&ofn))
|
||||
{
|
||||
|
||||
strncpy(compConfig->SettingsFile,ofn.lpstrFile,512);
|
||||
|
||||
FILE *f = fopen(compConfig->SettingsFile,"rb");
|
||||
if(f)
|
||||
{
|
||||
HWND still = (HWND) compConfig->PlaceHolder;
|
||||
fread(compConfig,sizeof COMP_CONFIG_VP6,1,f);
|
||||
fclose(f);
|
||||
compConfig->PlaceHolder = (INT32) still;
|
||||
}
|
||||
if(!memcmp(compConfig->SettingsFile,compConfig->RootDirectory,strlen(compConfig->RootDirectory)))
|
||||
{
|
||||
strcpy(compConfig->SettingsFile,compConfig->SettingsFile+strlen(compConfig->RootDirectory));
|
||||
}
|
||||
if(!memcmp(compConfig->SettingsFile+strlen(compConfig->SettingsFile)-4,".vps",4))
|
||||
{
|
||||
compConfig->SettingsFile[strlen(compConfig->SettingsFile)-4]=0;
|
||||
}
|
||||
SetDlgItemText(hWndDlg,IDC_SETTINGSFILE,compConfig->SettingsFile);
|
||||
}
|
||||
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
default:
|
||||
return (FALSE);
|
||||
|
||||
} /* End of Main Dialog case statement. */
|
||||
|
||||
return FALSE;
|
||||
} /* End of WndProc */
|
Loading…
Add table
Add a link
Reference in a new issue