[svn] / trunk / xvidcore / dshow / src / config.c Repository:
ViewVC logotype

Annotation of /trunk/xvidcore/dshow/src/config.c

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1916 - (view) (download)

1 : edgomez 1382 /*****************************************************************************
2 :     *
3 :     * XVID MPEG-4 VIDEO CODEC
4 :     * - Configuration processing -
5 :     *
6 :     * Copyright(C) 2002-2004 Peter Ross <pross@xvid.org>
7 :     *
8 :     * This program is free software ; you can redistribute it and/or modify
9 :     * it under the terms of the GNU General Public License as published by
10 :     * the Free Software Foundation ; either version 2 of the License, or
11 :     * (at your option) any later version.
12 :     *
13 :     * This program is distributed in the hope that it will be useful,
14 :     * but WITHOUT ANY WARRANTY ; without even the implied warranty of
15 :     * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 :     * GNU General Public License for more details.
17 :     *
18 :     * You should have received a copy of the GNU General Public License
19 :     * along with this program ; if not, write to the Free Software
20 :     * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
21 :     *
22 : Isibaar 1916 * $Id: config.c,v 1.12 2010-12-22 15:21:13 Isibaar Exp $
23 : edgomez 1382 *
24 :     ****************************************************************************/
25 :    
26 :     #include <windows.h>
27 :     #include <commctrl.h>
28 :     #include "config.h"
29 :     #include "debug.h"
30 :     #include "resource.h"
31 :    
32 :    
33 :     // -----------------------------------------
34 :     // global config structure
35 :     CONFIG g_config;
36 :    
37 :    
38 :    
39 :     void LoadRegistryInfo()
40 :     {
41 :     HKEY hKey;
42 :     DWORD size;
43 :     RegOpenKeyEx(XVID_REG_KEY, XVID_REG_SUBKEY, 0, KEY_READ, &hKey);
44 :    
45 :     // Set the default post-processing settings
46 : syskin 1561 REG_GET_N("Brightness", g_config.nBrightness, 0)
47 : edgomez 1382 REG_GET_N("Deblock_Y", g_config.nDeblock_Y, 0)
48 :     REG_GET_N("Deblock_UV", g_config.nDeblock_UV, 0)
49 : syskin 1437 REG_GET_N("Dering_Y", g_config.nDering_Y, 0)
50 :     REG_GET_N("Dering_UV", g_config.nDering_UV, 0)
51 : edgomez 1382 REG_GET_N("FilmEffect", g_config.nFilmEffect, 0)
52 :     REG_GET_N("ForceColorspace", g_config.nForceColorspace, 0)
53 :     REG_GET_N("FlipVideo", g_config.nFlipVideo, 0)
54 :     REG_GET_N("Supported_4CC", g_config.supported_4cc, 0)
55 :     REG_GET_N("Videoinfo_Compat", g_config.videoinfo_compat, 0)
56 : suxen_drol 1636 REG_GET_N("Decoder_Aspect_Ratio", g_config.aspect_ratio, 0)
57 : Isibaar 1912 REG_GET_N("num_threads", g_config.num_threads, 0)
58 : Isibaar 1916 REG_GET_N("cpu_flags", g_config.cpu, 0)
59 : edgomez 1382
60 :     RegCloseKey(hKey);
61 :     }
62 :    
63 :     void SaveRegistryInfo()
64 :     {
65 :     HKEY hKey;
66 :     DWORD dispo;
67 :    
68 :     if (RegCreateKeyEx(
69 :     XVID_REG_KEY,
70 :     XVID_REG_SUBKEY,
71 :     0,
72 :     XVID_REG_CLASS,
73 :     REG_OPTION_NON_VOLATILE,
74 :     KEY_WRITE,
75 :     0,
76 :     &hKey,
77 :     &dispo) != ERROR_SUCCESS)
78 :     {
79 :     OutputDebugString("Couldn't create XVID_REG_SUBKEY");
80 :     return;
81 :     }
82 :    
83 :     REG_SET_N("Brightness", g_config.nBrightness);
84 :     REG_SET_N("Deblock_Y", g_config.nDeblock_Y);
85 :     REG_SET_N("Deblock_UV", g_config.nDeblock_UV);
86 : syskin 1437 REG_SET_N("Dering_Y", g_config.nDering_Y);
87 :     REG_SET_N("Dering_UV", g_config.nDering_UV);
88 : edgomez 1382 REG_SET_N("FilmEffect", g_config.nFilmEffect);
89 :     REG_SET_N("ForceColorspace", g_config.nForceColorspace);
90 :     REG_SET_N("FlipVideo", g_config.nFlipVideo);
91 :     REG_SET_N("Supported_4CC", g_config.supported_4cc);
92 :     REG_SET_N("Videoinfo_Compat", g_config.videoinfo_compat);
93 : suxen_drol 1636 REG_SET_N("Decoder_Aspect_Ratio", g_config.aspect_ratio);
94 : Isibaar 1916 REG_SET_N("num_threads", g_config.num_threads);
95 : edgomez 1382
96 :     RegCloseKey(hKey);
97 :     }
98 :    
99 :    
100 :    
101 : Isibaar 1827 INT_PTR CALLBACK adv_proc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
102 : edgomez 1382 {
103 :     HWND hBrightness;
104 :    
105 :     switch ( uMsg )
106 :     {
107 :     case WM_DESTROY:
108 :     {
109 : Isibaar 1827 LPARAM nForceColorspace;
110 :     LPARAM aspect_ratio;
111 : syskin 1488
112 : edgomez 1382 nForceColorspace = SendMessage(GetDlgItem(hwnd, IDC_COLORSPACE), CB_GETCURSEL, 0, 0);
113 :     if ( g_config.nForceColorspace != nForceColorspace )
114 :     {
115 : Isibaar 1802 MessageBox(0, "You have changed the output colorspace.\r\nClose the movie and open it for the new colorspace to take effect.", "Xvid DShow", MB_TOPMOST);
116 : edgomez 1382 }
117 : Isibaar 1827 g_config.nForceColorspace = (int) nForceColorspace;
118 : syskin 1488
119 :     aspect_ratio = SendMessage(GetDlgItem(hwnd, IDC_USE_AR), CB_GETCURSEL, 0, 0);
120 :     if ( g_config.aspect_ratio != aspect_ratio )
121 :     {
122 : Isibaar 1802 MessageBox(0, "You have changed the default aspect ratio.\r\nClose the movie and open it for the new aspect ratio to take effect.", "Xvid DShow", MB_TOPMOST);
123 : syskin 1488 }
124 : Isibaar 1827 g_config.aspect_ratio = (int) aspect_ratio;
125 : edgomez 1382 SaveRegistryInfo();
126 :     }
127 :     break;
128 :    
129 :     case WM_INITDIALOG:
130 :    
131 :     // Load Force Colorspace Box
132 :     SendMessage(GetDlgItem(hwnd, IDC_COLORSPACE), CB_ADDSTRING, 0, (LPARAM)"No Force");
133 :     SendMessage(GetDlgItem(hwnd, IDC_COLORSPACE), CB_ADDSTRING, 0, (LPARAM)"YV12");
134 :     SendMessage(GetDlgItem(hwnd, IDC_COLORSPACE), CB_ADDSTRING, 0, (LPARAM)"YUY2");
135 :     SendMessage(GetDlgItem(hwnd, IDC_COLORSPACE), CB_ADDSTRING, 0, (LPARAM)"RGB24");
136 :     SendMessage(GetDlgItem(hwnd, IDC_COLORSPACE), CB_ADDSTRING, 0, (LPARAM)"RGB32");
137 :    
138 :     // Select Colorspace
139 :     SendMessage(GetDlgItem(hwnd, IDC_COLORSPACE), CB_SETCURSEL, g_config.nForceColorspace, 0);
140 :    
141 :     hBrightness = GetDlgItem(hwnd, IDC_BRIGHTNESS);
142 : suxen_drol 1397 SendMessage(hBrightness, TBM_SETRANGE, (WPARAM)TRUE, (LPARAM)MAKELONG(-96, 96));
143 :     SendMessage(hBrightness, TBM_SETTICFREQ, (WPARAM)16, (LPARAM)0);
144 :     SendMessage(hBrightness, TBM_SETPOS, (WPARAM)TRUE, (LPARAM) g_config.nBrightness);
145 : edgomez 1382
146 : syskin 1488 // Load Aspect Ratio Box
147 : syskin 1498 SendMessage(GetDlgItem(hwnd, IDC_USE_AR), CB_ADDSTRING, 0, (LPARAM)"Auto (mpeg-4 first)");
148 :     SendMessage(GetDlgItem(hwnd, IDC_USE_AR), CB_ADDSTRING, 0, (LPARAM)"Auto (external first)");
149 : syskin 1488 SendMessage(GetDlgItem(hwnd, IDC_USE_AR), CB_ADDSTRING, 0, (LPARAM)"4:3");
150 :     SendMessage(GetDlgItem(hwnd, IDC_USE_AR), CB_ADDSTRING, 0, (LPARAM)"16:9");
151 :     SendMessage(GetDlgItem(hwnd, IDC_USE_AR), CB_ADDSTRING, 0, (LPARAM)"2.35:1");
152 :    
153 :     // Select Aspect Ratio
154 :     SendMessage(GetDlgItem(hwnd, IDC_USE_AR), CB_SETCURSEL, g_config.aspect_ratio, 0);
155 :    
156 :    
157 : edgomez 1382 // Load Buttons
158 :     SendMessage(GetDlgItem(hwnd, IDC_DEBLOCK_Y), BM_SETCHECK, g_config.nDeblock_Y, 0);
159 :     SendMessage(GetDlgItem(hwnd, IDC_DEBLOCK_UV), BM_SETCHECK, g_config.nDeblock_UV, 0);
160 : syskin 1437 SendMessage(GetDlgItem(hwnd, IDC_DERINGY), BM_SETCHECK, g_config.nDering_Y, 0);
161 :     SendMessage(GetDlgItem(hwnd, IDC_DERINGUV), BM_SETCHECK, g_config.nDering_UV, 0);
162 : edgomez 1382 SendMessage(GetDlgItem(hwnd, IDC_FILMEFFECT), BM_SETCHECK, g_config.nFilmEffect, 0);
163 :     SendMessage(GetDlgItem(hwnd, IDC_FLIPVIDEO), BM_SETCHECK, g_config.nFlipVideo, 0);
164 :    
165 :     // 4CC checkbuttons
166 :     SendMessage(GetDlgItem(hwnd, IDC_DIVX), BM_SETCHECK, g_config.supported_4cc & SUPPORT_DIVX, 0);
167 :     SendMessage(GetDlgItem(hwnd, IDC_DX50), BM_SETCHECK, g_config.supported_4cc & SUPPORT_DX50, 0);
168 :     SendMessage(GetDlgItem(hwnd, IDC_MP4V), BM_SETCHECK, g_config.supported_4cc & SUPPORT_MP4V, 0);
169 :     SendMessage(GetDlgItem(hwnd, IDC_COMPAT), BM_SETCHECK, g_config.videoinfo_compat, 0);
170 :    
171 : syskin 1437 EnableWindow(GetDlgItem(hwnd,IDC_DERINGY),g_config.nDeblock_Y);
172 :     EnableWindow(GetDlgItem(hwnd,IDC_DERINGUV),g_config.nDeblock_UV);
173 :    
174 : syskin 1498 EnableWindow(GetDlgItem(hwnd, IDC_USE_AR), !g_config.videoinfo_compat);
175 : syskin 1488
176 : edgomez 1382 // Set Date & Time of Compilation
177 :     DPRINTF("(%s %s)", __DATE__, __TIME__);
178 :     break;
179 :    
180 :     case WM_COMMAND:
181 :     switch ( wParam )
182 :     {
183 :     case IDC_RESET:
184 :     ZeroMemory(&g_config, sizeof(CONFIG));
185 :     hBrightness = GetDlgItem(hwnd, IDC_BRIGHTNESS);
186 : suxen_drol 1397 SendMessage(hBrightness, TBM_SETPOS, (WPARAM) TRUE, (LPARAM) g_config.nBrightness);
187 : edgomez 1382 // Load Buttons
188 :     SendMessage(GetDlgItem(hwnd, IDC_DEBLOCK_Y), BM_SETCHECK, g_config.nDeblock_Y, 0);
189 :     SendMessage(GetDlgItem(hwnd, IDC_DEBLOCK_UV), BM_SETCHECK, g_config.nDeblock_UV, 0);
190 : syskin 1437 SendMessage(GetDlgItem(hwnd, IDC_DERINGY), BM_SETCHECK, g_config.nDering_Y, 0);
191 :     SendMessage(GetDlgItem(hwnd, IDC_DERINGUV), BM_SETCHECK, g_config.nDering_UV, 0);
192 : edgomez 1382 SendMessage(GetDlgItem(hwnd, IDC_FILMEFFECT), BM_SETCHECK, g_config.nFilmEffect, 0);
193 :     SendMessage(GetDlgItem(hwnd, IDC_FLIPVIDEO), BM_SETCHECK, g_config.nFlipVideo, 0);
194 :     g_config.nForceColorspace = 0;
195 :     SendMessage(GetDlgItem(hwnd, IDC_COLORSPACE), CB_SETCURSEL, g_config.nForceColorspace, 0);
196 : syskin 1488 g_config.aspect_ratio = 0;
197 :     SendMessage(GetDlgItem(hwnd, IDC_USE_AR), CB_SETCURSEL, g_config.aspect_ratio, 0);
198 : edgomez 1382 break;
199 :     case IDC_DEBLOCK_Y:
200 :     g_config.nDeblock_Y = !g_config.nDeblock_Y;
201 :     break;
202 :     case IDC_DEBLOCK_UV:
203 :     g_config.nDeblock_UV = !g_config.nDeblock_UV;
204 :     break;
205 : syskin 1437 case IDC_DERINGY:
206 :     g_config.nDering_Y = !g_config.nDering_Y;
207 : edgomez 1382 break;
208 : syskin 1437 case IDC_DERINGUV:
209 :     g_config.nDering_UV = !g_config.nDering_UV;
210 :     break;
211 : edgomez 1382 case IDC_FILMEFFECT:
212 :     g_config.nFilmEffect = !g_config.nFilmEffect;
213 :     break;
214 :     case IDC_FLIPVIDEO:
215 :     g_config.nFlipVideo = !g_config.nFlipVideo;
216 :     break;
217 :     case IDC_DIVX:
218 :     g_config.supported_4cc ^= SUPPORT_DIVX;
219 :     break;
220 :     case IDC_DX50:
221 :     g_config.supported_4cc ^= SUPPORT_DX50;
222 :     break;
223 :     case IDC_MP4V:
224 :     g_config.supported_4cc ^= SUPPORT_MP4V;
225 :     break;
226 :     case IDC_COMPAT:
227 :     g_config.videoinfo_compat = !g_config.videoinfo_compat;
228 :     break;
229 :     default :
230 :     return FALSE;
231 :     }
232 : syskin 1437 EnableWindow(GetDlgItem(hwnd,IDC_DERINGY),g_config.nDeblock_Y);
233 :     EnableWindow(GetDlgItem(hwnd,IDC_DERINGUV),g_config.nDeblock_UV);
234 : syskin 1498
235 :     EnableWindow(GetDlgItem(hwnd, IDC_USE_AR), !g_config.videoinfo_compat);
236 :    
237 : edgomez 1382 SaveRegistryInfo();
238 : syskin 1437
239 :    
240 : edgomez 1382 break;
241 :     case WM_NOTIFY:
242 :     hBrightness = GetDlgItem(hwnd, IDC_BRIGHTNESS);
243 : Isibaar 1827 g_config.nBrightness = (int) SendMessage(hBrightness, TBM_GETPOS, (WPARAM)NULL, (LPARAM)NULL);
244 : edgomez 1382 SaveRegistryInfo();
245 :     break;
246 :     default :
247 :     return FALSE;
248 :     }
249 :    
250 :     return TRUE; /* ok */
251 :     }
252 :    
253 :    
254 :    
255 :    
256 :    

No admin address has been configured
ViewVC Help
Powered by ViewVC 1.0.4