return ICERR_OK;
}
+static void x264_log_vfw( void *p_private, int i_level, const char *psz_fmt, va_list arg )
+{
+ char error_msg[1024];
+ int idx;
+ HWND *hCons = p_private;
+
+ vsprintf( error_msg, psz_fmt, arg );
+
+ /* strip final linefeeds (required) */
+ idx=strlen( error_msg ) - 1;
+ while( idx >= 0 && error_msg[idx] == '\n' )
+ error_msg[idx--] = 0;
+
+ if(!( *hCons ) ) {
+ *hCons = CreateDialog( g_hInst, MAKEINTRESOURCE( IDD_ERRCONSOLE ), NULL,
+ callback_err_console );
+ //ShowWindow( *hCons, SW_SHOW );
+ }
+ idx = SendDlgItemMessage( *hCons, IDC_CONSOLE, LB_ADDSTRING, 0, ( LPARAM )error_msg );
+
+ /* make sure that the last item added is visible (autoscroll) */
+ if( idx >= 0 )
+ SendDlgItemMessage( *hCons, IDC_CONSOLE, LB_SETTOPINDEX, ( WPARAM )idx, 0 );
+
+}
+
static void statsfilename_renumber( char *dest, char *src, int i_pass )
{
char *last_dot = strrchr( src, '.' );
param.rc.psz_stat_out = malloc (MAX_PATH);
param.rc.psz_stat_in = malloc (MAX_PATH);
+
+ param.i_log_level = X264_LOG_ERROR;
+ param.pf_log = x264_log_vfw;
+ param.p_log_private = malloc( sizeof( HWND ) );
+ *( ( HWND * )param.p_log_private ) = NULL; /* error console window handle */
+ codec->hCons = ( HWND * )param.p_log_private;
- param.i_log_level = X264_LOG_NONE;
param.analyse.b_psnr = 0;
param.analyse.inter = 0;
param.analyse.intra = X264_ANALYSE_I4x4;
codec->h = NULL;
}
+ free( codec->hCons );
return ICERR_OK;
}
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;
+}
#define IDD_MAINCONFIG 101
#define IDD_ADVANCED 102
#define IDD_ABOUT 103
+#define IDD_ERRCONSOLE 104
#define IDC_BITRATESLIDER 1002
#define IDC_BITRATEEDIT 1003
#define IDC_BITRATESLIDER2 1004
#define IDC_UPDATESTATS 1053
#define IDC_STATSFILE 1054
#define IDC_STATSFILE_BROWSE 1055
+#define IDC_CONSOLE 1056
+#define IDC_COPYCLIP 1057
// Next default values for new objects
//
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
-#define _APS_NEXT_RESOURCE_VALUE 104
+#define _APS_NEXT_RESOURCE_VALUE 105
#define _APS_NEXT_COMMAND_VALUE 40001
-#define _APS_NEXT_CONTROL_VALUE 1056
+#define _APS_NEXT_CONTROL_VALUE 1058
#define _APS_NEXT_SYMED_VALUE 101
#endif
#endif
LTEXT "x264 - H.264/MPEG-4 AVC codec",IDC_X264,53,8,145,8,SS_CENTERIMAGE
END
+IDD_ERRCONSOLE DIALOG DISCARDABLE 0, 0, 264, 130
+STYLE DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_VISIBLE
+CAPTION "x264 error console"
+FONT 8, "MS Sans Serif"
+BEGIN
+ DEFPUSHBUTTON "OK",IDOK,68,110,48,14,WS_TABSTOP
+ DEFPUSHBUTTON "Copy",IDC_COPYCLIP,148,110,48,14,WS_TABSTOP
+ LISTBOX IDC_CONSOLE,6,8,251,95,LBS_NOSEL | LBS_NOINTEGRALHEIGHT
+END
/////////////////////////////////////////////////////////////////////////////
//
/* handle */
x264_t *h;
+ /* error console handle */
+ HWND *hCons;
+
/* XXX: needed ? */
unsigned int fincr;
unsigned int fbase;
BOOL CALLBACK callback_about( HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam );
BOOL CALLBACK callback_main ( HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam );
BOOL CALLBACK callback_advanced( HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam );
+BOOL CALLBACK callback_err_console( HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam );
/* Dll instance */
extern HINSTANCE g_hInst;