Log in

View Full Version : Media Player Classic Home Cinema (MPC-HC) - DXVA!


Pages : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 [344] 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410

SamuriHL
5th May 2011, 00:08
SIGH. Nope. I'm still getting this kind of stuff:


60>MpaDecFilter.cpp(1568): error C2065: 'm_ps2_state' : undeclared identifier
60>MpaDecFilter.cpp(1568): error C2228: left of '.sync' must have class/struct/u
nion
60> type is ''unknown-type''
60>MpaDecFilter.cpp(1570): error C2065: 'm_ps2_state' : undeclared identifier
60>MpaDecFilter.cpp(1570): error C2228: left of '.sync' must have class/struct/u
nion
60> type is ''unknown-type''
60>MpaDecFilter.cpp(1575): error C2065: 'm_ps2_state' : undeclared identifier
60>MpaDecFilter.cpp(1575): fatal error C1003: error count exceeds 100; stopping
compilation
60>
60>Build FAILED.


Tons of errors above that saying pretty much the same thing.

clsid
5th May 2011, 00:28
Fixed that too.

SamuriHL
5th May 2011, 00:28
Thanks. Will try again. :)

SamuriHL
5th May 2011, 00:29
P.S. I haven't pulled yet, but, have you run into this yet?


67>c:\dev\projects\mpc-hc\src\filters\./transform/MpaDecFilter/MpaDecFilter.h(13
0): error C2143: syntax error : missing ';' before '*'
67>c:\dev\projects\mpc-hc\src\filters\./transform/MpaDecFilter/MpaDecFilter.h(13
0): error C4430: missing type specifier - int assumed. Note: C++ does not suppor
t default-int
67>c:\dev\projects\mpc-hc\src\filters\./transform/MpaDecFilter/MpaDecFilter.h(13
0): error C4430: missing type specifier - int assumed. Note: C++ does not suppor
t default-int
67>c:\dev\projects\mpc-hc\src\filters\./transform/MpaDecFilter/MpaDecFilter.h(13
1): error C2143: syntax error : missing ';' before '*'
67>c:\dev\projects\mpc-hc\src\filters\./transform/MpaDecFilter/MpaDecFilter.h(13
1): error C4430: missing type specifier - int assumed. Note: C++ does not suppor
t default-int
67>c:\dev\projects\mpc-hc\src\filters\./transform/MpaDecFilter/MpaDecFilter.h(13
1): error C4430: missing type specifier - int assumed. Note: C++ does not suppor
t default-int
67>c:\dev\projects\mpc-hc\src\filters\./transform/MpaDecFilter/MpaDecFilter.h(13
2): error C2143: syntax error : missing ';' before '*'
67>c:\dev\projects\mpc-hc\src\filters\./transform/MpaDecFilter/MpaDecFilter.h(13
2): error C4430: missing type specifier - int assumed. Note: C++ does not suppor
t default-int
67>c:\dev\projects\mpc-hc\src\filters\./transform/MpaDecFilter/MpaDecFilter.h(13
2): error C4430: missing type specifier - int assumed. Note: C++ does not suppor
t default-int

SamuriHL
5th May 2011, 00:43
Brilliant. The last update did it. Thank you so much for fixing this!

SamuriHL
5th May 2011, 00:44
WOOPS. It wasn't done. :(


67>..\..\thirdparty\mfc\afxglobals.cpp(44): error C2039: 'm_hinstD2DDLL' : is no
t a member of 'AFX_GLOBAL_DATA'
67> C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\atlmfc\inclu
de\afxglobals.h(111) : see declaration of 'AFX_GLOBAL_DATA'
67>..\..\thirdparty\mfc\afxglobals.cpp(45): error C2039: 'm_hinstDWriteDLL' : is
not a member of 'AFX_GLOBAL_DATA'
67> C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\atlmfc\inclu
de\afxglobals.h(111) : see declaration of 'AFX_GLOBAL_DATA'
67>..\..\thirdparty\mfc\afxglobals.cpp(47): error C2143: syntax error : missing
';' before '*'
67>..\..\thirdparty\mfc\afxglobals.cpp(47): error C4430: missing type specifier
- int assumed. Note: C++ does not support default-int
67>..\..\thirdparty\mfc\afxglobals.cpp(47): error C2039: 'm_pDirect2dFactory' :
is not a member of 'AFX_GLOBAL_DATA'
67> C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\atlmfc\inclu
de\afxglobals.h(111) : see declaration of 'AFX_GLOBAL_DATA'
67>..\..\thirdparty\mfc\afxglobals.cpp(47): error C4430: missing type specifier
- int assumed. Note: C++ does not support default-int
67>..\..\thirdparty\mfc\afxglobals.cpp(48): error C2143: syntax error : missing
';' before '*'
67>..\..\thirdparty\mfc\afxglobals.cpp(48): error C4430: missing type specifier
- int assumed. Note: C++ does not support default-int
67>..\..\thirdparty\mfc\afxglobals.cpp(48): error C2039: 'm_pWriteFactory' : is
not a member of 'AFX_GLOBAL_DATA'
67> C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\atlmfc\inclu
de\afxglobals.h(111) : see declaration of 'AFX_GLOBAL_DATA'
67>..\..\thirdparty\mfc\afxglobals.cpp(48): error C4430: missing type specifier
- int assumed. Note: C++ does not support default-int
67>..\..\thirdparty\mfc\afxglobals.cpp(49): error C2143: syntax error : missing
';' before '*'
67>..\..\thirdparty\mfc\afxglobals.cpp(49): error C4430: missing type specifier
- int assumed. Note: C++ does not support default-int
67>..\..\thirdparty\mfc\afxglobals.cpp(49): error C2039: 'm_pWicFactory' : is no
t a member of 'AFX_GLOBAL_DATA'
67> C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\atlmfc\inclu
de\afxglobals.h(111) : see declaration of 'AFX_GLOBAL_DATA'
67>..\..\thirdparty\mfc\afxglobals.cpp(49): error C4430: missing type specifier
- int assumed. Note: C++ does not support default-int
67>..\..\thirdparty\mfc\afxglobals.cpp(51): error C2039: 'm_pfD2D1MakeRotateMatr
ix' : is not a member of 'AFX_GLOBAL_DATA'
67> C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\atlmfc\inclu
de\afxglobals.h(111) : see declaration of 'AFX_GLOBAL_DATA'
67>..\..\thirdparty\mfc\afxglobals.cpp(51): error C2146: syntax error : missing
';' before identifier 'm_pfD2D1MakeRotateMatrix'
67>..\..\thirdparty\mfc\afxglobals.cpp(51): error C4430: missing type specifier
- int assumed. Note: C++ does not support default-int
67>..\..\thirdparty\mfc\afxglobals.cpp(51): error C4430: missing type specifier
- int assumed. Note: C++ does not support default-int
67>..\..\thirdparty\mfc\afxglobals.cpp(53): error C2039: 'm_bD2DInitialized' : i
s not a member of 'AFX_GLOBAL_DATA'
67> C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\atlmfc\inclu
de\afxglobals.h(111) : see declaration of 'AFX_GLOBAL_DATA'
67>..\..\thirdparty\mfc\afxglobals.cpp(915): error C3861: 'ReleaseD2DRefs': iden
tifier not found
67>..\..\thirdparty\mfc\afxglobals.cpp(1463): error C2039: 'InitD2D' : is not a
member of 'AFX_GLOBAL_DATA'
67> C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\atlmfc\inclu
de\afxglobals.h(111) : see declaration of 'AFX_GLOBAL_DATA'
67>..\..\thirdparty\mfc\afxglobals.cpp(1463): error C2065: 'D2D1_FACTORY_TYPE' :
undeclared identifier
67>..\..\thirdparty\mfc\afxglobals.cpp(1463): error C2146: syntax error : missin
g ')' before identifier 'd2dFactoryType'
67>..\..\thirdparty\mfc\afxglobals.cpp(1463): error C2059: syntax error : ')'
67>..\..\thirdparty\mfc\afxglobals.cpp(1464): error C2143: syntax error : missin
g ';' before '{'
67>..\..\thirdparty\mfc\afxglobals.cpp(1464): error C2447: '{' : missing functio
n header (old-style formal list?)
67>..\..\thirdparty\mfc\afxglobals.cpp(1521): error C2039: 'ReleaseD2DRefs' : is
not a member of 'AFX_GLOBAL_DATA'
67> C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\atlmfc\inclu
de\afxglobals.h(111) : see declaration of 'AFX_GLOBAL_DATA'
67>..\..\thirdparty\mfc\afxglobals.cpp(1530): error C2227: left of '->Release' m
ust point to class/struct/union/generic type
67> type is 'int *'
67>..\..\thirdparty\mfc\afxglobals.cpp(1536): error C2227: left of '->Release' m
ust point to class/struct/union/generic type
67> type is 'int *'
67>..\..\thirdparty\mfc\afxglobals.cpp(1542): error C2227: left of '->Release' m
ust point to class/struct/union/generic type
67> type is 'int *'
67> winmdi.cpp
67> AppSettings.cpp
67> AuthDlg.cpp
67>c:\dev\projects\mpc-hc\src\apps\mplayerc\AppSettings.h(442): error C2229: cla
ss 'CAppSettings' has an illegal zero-sized array
67>c:\dev\projects\mpc-hc\src\apps\mplayerc\AppSettings.h(555): error C2229: cla
ss 'CAppSettings' has an illegal zero-sized array
67> BaseGraph.cpp


I guess I didn't have enough patience. :D

SamuriHL
5th May 2011, 01:30
Yea, this isn't good. Even reverting the header to include all the filters, the build is still broken on a clean full build.

clsid
5th May 2011, 02:03
Perhaps your visual studio isn't up-to-date? You need SP1.

SamuriHL
5th May 2011, 02:07
Oh son of a! Sometimes I don't like this laptop. I watched WU update it to SP1 a few weeks ago. What I DIDN'T apparently notice is that the damn update failed. Ok, off to fix VC2010 and get it up to SP1. This blows!

molitar
5th May 2011, 02:18
@Molitar: reset the registry settings: http://sourceforge.net/apps/trac/mpc-hc/wiki/Troubleshooting_guidelines

Thanks did that.. and someone stated them are CCCP defaults but them are the same defaults in the original MPC non cinema version because I tested dropped in another folder and tested and the defaults were just about the same as CCCP pack except for two more items checked in that list. But like I stated dropping the new version in rewrote all the defaults to being all checked. Good to know how to clear registry of what it changes when first ran..

betaking
5th May 2011, 02:36
CLSID.thansk you work but when i install last MSVC2008 sp1 after latest windows updates i can not compiler last svn!
输出窗口 正在编译...
OggFile.cpp
stdafx.cpp
OggSplitter.cpp
.\OggSplitter.cpp(697) : error C2668: “abs”: 对重载函数的调用不明确
C:\Program Files\Microsoft Visual Studio 9.0\VC\include\math.h(539): 可能是“long double abs(long double)”
C:\Program Files\Microsoft Visual Studio 9.0\VC\include\math.h(491): 或 “float abs(float)”
C:\Program Files\Microsoft Visual Studio 9.0\VC\include\math.h(487): 或 “double abs(double)”
C:\Program Files\Microsoft Visual Studio 9.0\VC\include\math.h(485): 或 “long abs(long)”
C:\Program Files\Microsoft Visual Studio 9.0\VC\include\stdlib.h(380): 或 “int abs(int)”
试图匹配参数列表“(REFERENCE_TIME)”时
结果 生成日志保存在“file://C:\mpc-hc\bin\obj\Release_Win32\OggSplitter\BuildLog.htm”
OggSplitter - 1 个错误,0 个警告
输出窗口 正在编译...
stdafx.cpp
正在编译...
MatroskaFile.cpp
MatroskaMuxer.cpp
.\MatroskaMuxer.cpp(667) : error C2668: “abs”: 对重载函数的调用不明确
C:\Program Files\Microsoft Visual Studio 9.0\VC\include\math.h(539): 可能是“long double abs(long double)”
C:\Program Files\Microsoft Visual Studio 9.0\VC\include\math.h(491): 或 “float abs(float)”
C:\Program Files\Microsoft Visual Studio 9.0\VC\include\math.h(487): 或 “double abs(double)”
C:\Program Files\Microsoft Visual Studio 9.0\VC\include\math.h(485): 或 “long abs(long)”
C:\Program Files\Microsoft Visual Studio 9.0\VC\include\stdlib.h(380): 或 “int abs(int)”
试图匹配参数列表“(REFERENCE_TIME)”时
结果 生成日志保存在“file://C:\mpc-hc\bin\obj\Release_Win32\MatroskaMuxer\BuildLog.htm”
MatroskaMuxer - 1 个错误,0 个警告
PPageFileInfoDetails.cpp
.\PPageFileInfoDetails.cpp(158) : error C3861: “StrFormatByteSizeW”: 找不到标识符
Playlist.cpp
.\Playlist.cpp(271) : error C3861: “StrCmpLogicalW”: 找不到标识符
.\MainFrm.cpp(4972) : error C3861: “StrFormatByteSizeW”: 找不到标识符
.\MainFrm.cpp(11702) : error C3861: “StrCmpLogicalW”: 找不到标识符
结果 生成日志保存在“file://C:\mpc-hc\bin\obj\Release_Win32\mpc-hc\BuildLog.htm”
mpc-hc - 4 个错误,18 个警告
PS: vs2010sp1 compiler is ok!

SamuriHL
5th May 2011, 02:53
My MSVC 2010 install is borked. :( I'm gonna have to completely uninstall and reinstall it. I got the SP1 DVD image from MSDN and it also failed to install and is in the process of rolling back. SIGH. I guess I'll get back to building this at some point in the near future. cough cough. :(

SamuriHL
5th May 2011, 03:55
WOO HOO!

MPC-HC's compilation started on Wed 05/04/2011-22:28:00.20
and completed on Wed 05/04/2011-22:48:12.47

bin10\MPC-HomeCinema.1.5.2.3080.x86.MSVC2010.exe

Hurray. That's with only 1 filter selected. Thank you, clsid! Looks like I'm back in business.

clsid
5th May 2011, 03:55
This patch might fix the MSVC2008 build:

Index: include/stdafx_common_afx.h
===================================================================
--- include/stdafx_common_afx.h (revision 3078)
+++ include/stdafx_common_afx.h (working copy)
@@ -1,19 +1,15 @@
// turns off MFC's hiding of some common and often safely ignored warning messages
#define _AFX_ALL_WARNINGS

-#include <afxwin.h> // MFC core and standard components
-#include <afxext.h> // MFC extensions
-
-#include <afxdisp.h> // MFC Automation classes
-
-#ifndef _AFX_NO_OLE_SUPPORT
-#include <afxdtctl.h> // MFC support for Internet Explorer 4 Common Controls
+#if (_MSC_VER < 1600)
+#include <afx.h>
#endif
-#ifndef _AFX_NO_AFXCMN_SUPPORT
-#include <afxcmn.h> // MFC support for Windows Common Controls
-#endif // _AFX_NO_AFXCMN_SUPPORT

+#include <afxwin.h> // MFC core and standard components
+
+#if (_MSC_VER >= 1600)
#include "afxpriv.h"
#include "afxole.h"
#include "..\src\mfc\oleimpl2.h"
#include "..\src\mfc\afximpl.h"
+#endif
Index: include/stdafx_common_afx2.h
===================================================================
--- include/stdafx_common_afx2.h (revision 0)
+++ include/stdafx_common_afx2.h (revision 0)
@@ -0,0 +1,22 @@
+// turns off MFC's hiding of some common and often safely ignored warning messages
+#define _AFX_ALL_WARNINGS
+
+#include <afxwin.h> // MFC core and standard components
+#include <afxext.h> // MFC extensions
+#include <afxdisp.h> // MFC Automation classes
+
+#ifndef _AFX_NO_OLE_SUPPORT
+#include <afxdtctl.h> // MFC support for Internet Explorer 4 Common Controls
+#endif
+
+#ifndef _AFX_NO_AFXCMN_SUPPORT
+#include <afxcmn.h> // MFC support for Windows Common Controls
+#endif
+
+#include "afxole.h"
+
+#if (_MSC_VER >= 1600)
+#include "afxpriv.h"
+#include "..\src\mfc\oleimpl2.h"
+#include "..\src\mfc\afximpl.h"
+#endif
Index: src/apps/mplayerc/stdafx.h
===================================================================
--- src/apps/mplayerc/stdafx.h (revision 3078)
+++ src/apps/mplayerc/stdafx.h (working copy)
@@ -26,7 +26,7 @@
#include "../../../DSUtil/SharedInclude.h"
#include "../../../../include/stdafx_common.h"
#undef _ATL_CSTRING_EXPLICIT_CONSTRUCTORS
-#include "../../../../include/stdafx_common_afx.h"
+#include "../../../../include/stdafx_common_afx2.h"
#include "../../../../include/stdafx_common_dshow.h"

#include <afxdlgs.h>
Index: src/filters/transform/VSFilter/stdafx.h
===================================================================
--- src/filters/transform/VSFilter/stdafx.h (revision 3078)
+++ src/filters/transform/VSFilter/stdafx.h (working copy)
@@ -22,6 +22,6 @@

#include "../../../DSUtil/SharedInclude.h"
#include "../../../../include/stdafx_common.h"
-#include "../../../../include/stdafx_common_afx.h"
+#include "../../../../include/stdafx_common_afx2.h"
#include "../../../../include/stdafx_common_dshow.h"
#include "../../../DSUtil/DSUtil.h"

Please also test MSVC2010 build after this patch. I haven't got the time right now to do full builds to test.

betaking
5th May 2011, 04:09
thanks can you put this patch to svn? thanks!

SamuriHL
5th May 2011, 04:12
It needs to be fully tested with both a 2008 and 2010 compile first. That's what clsid was asking people to do. I'm off to bed so I can't test the 2010 part of that right now.

SamuriHL
5th May 2011, 04:24
Ok, clsid, I was able to build it again with no filters now. That's so awesome! Thanks for doing this for us. madshi's likely to be quite happy, as well. I wasn't able to test your patch to fix the 2008 build with 2010 but if no one's done it by the morning I'll take a look.

Aleksoid1978
5th May 2011, 04:52
http://aleksoid.tosei.ru/Dist/mpc-hc.exe.3083.7z - Only .exe
http://aleksoid.tosei.ru/Dist/mpc-hc.3083.7z - Complete set.

betaking
5th May 2011, 04:58
test clsid patch still have
PPageFileInfoDetails.cpp
.\PPageFileInfoDetails.cpp(158) : error C3861: “StrFormatByteSizeW”: 找不到标识符
Playlist.cpp
.\Playlist.cpp(271) : error C3861: “StrCmpLogicalW”: 找不到标识符
.\MainFrm.cpp(4972) : error C3861: “StrFormatByteSizeW”: 找不到标识符
.\MainFrm.cpp(11702) : error C3861: “StrCmpLogicalW”: 找不到标识符
结果 生成日志保存在“file://C:\mpc-hc\bin\obj\Release_Win32\mpc-hc\BuildLog.htm”
mpc-hc - 4 个错误,18 个警告

nevcairiel
5th May 2011, 07:00
Perhaps your visual studio isn't up-to-date? You need SP1.

While installing SP1 is certainly a good idea for everyone, breaking compilation for people that don't have it is just horrible.

I should really switch players, MPC-HC is a lost cause.. no developers, and enough people that claim to be developers breaking things left and right and arguing pointless semantics..

LAV Player, anyone?

ryrynz
5th May 2011, 07:36
While installing SP1 is certainly a good idea for everyone, breaking compilation for people that don't have it is just horrible.

I should really switch players, MPC-HC is a lost cause.. no developers, and enough people that claim to be developers breaking things left and right and arguing pointless semantics..

LAV Player, anyone?

Personally I have no problems with MPC-HC although I do think it's interface is severely outdated.
I'm in agreement with you regarding MPC-HC, If you'd like to develop for a media player probably best making your own.
Potplayer seems to be the best choice for a free media player right now.

mindbomb
5th May 2011, 08:14
isn't making a player too large an undertaking for a single person?

that being said, i would probably use lav player

nevcairiel
5th May 2011, 08:25
isn't making a player too large an undertaking for a single person?

Would probably take a while, but other devs would be welcome to join/help. :rolleyes:

BTW, i'm not saying i will do it. Maybe if some other active developers express some interest, there could be formed some kind of plan, but for now its just a pipe-dream. :p

madshi
5th May 2011, 08:48
At the speed you're currently developing you'll soon run out of work, so maybe a new player is not a bad idea... ;) Personally, I don't have enough time for developing or helping to develop a player, too much other work to do.

ForceX
5th May 2011, 09:31
isn't making a player too large an undertaking for a single person?

that being said, i would probably use lav player
Not really, AFAIK KMPlayer and later PotPlayer was developed by a single person and you can see that PotPlayer is being feverishly updated now, you just have to dedicate your complete life to that, that's all. Admittedly, a lot of the base for both KMP and PotP seems to be based on the work of MPC(-HC) and I doubt these players would have been this far if not for the existence of MPC. While MPC development does seem to have stagnated a bit, it is still pretty advanced in terms of good video playback capability and still setting standards for others to follow.

As a non-funded open source program, it is as good as it gets.

nevcairiel
5th May 2011, 10:48
I'm not talking about the player itself, i still use it and i think its fine. I'm mostly talking about decisions and actions by the people currently trying to maintain it. I, however, have no ambitions to try to maintain and enhance it myself, because the code is just horribly ugly.

Anyhow, this really doesn't belong here.

neoufo51
5th May 2011, 10:56
While installing SP1 is certainly a good idea for everyone, breaking compilation for people that don't have it is just horrible.

I should really switch players, MPC-HC is a lost cause.. no developers, and enough people that claim to be developers breaking things left and right and arguing pointless semantics..

LAV Player, anyone?
If you make a LAV Player, I will drop MPC-HC in an instant, and so will the majority of people who use MPC-HC. You'd also win over the people who use Zoomplayer and PotPlayer because they want something high quality that isn't MPC-HC, and your player would be the way to go, without question.

All you need to do is create a player that is simple, minimalistic, high quality, built from scratch and MPC-HC would just die in a matter of months. Sorry to anybody who loves MPC-HC but that's just the truth. It will be a lot of work, but I don't think anybody here wants something fancy-looking.

tetsuo55
5th May 2011, 12:15
We don't "need" a new player. Most of the bugs that exist are in filters. The GUI is really the only thing most people want changed.

The reason the project is moving so slow is because we lack a motivated, dedicated developer. Someone who is willing and able to spend 20-30 hours a week on MPC-HC.(all the dev activity you do see is all filter based)

Nevcairiel is right about the source being difficult to maintain. A dedicated dev would focus mostly on rewriting the actual player into a new clean codebase as mpc-hc2.0.

nevcairiel
5th May 2011, 12:19
A dedicated dev would focus mostly on rewriting the actual player into a new clean codebase as mpc-hc2.0.

Which is, essentially, a whole new player. :cool:
Loads of other players already use the same filters as MPC-HC (which i'm in the process to replace, anyhow :p)

Here is basically a concise list how i see this would work, if ever.
- A new base player (GUI, configuration, filter management, DirectShow graph building)
- A new, easier and universal way to render subtitles - preferably as a DirectShow filter, not directly hacked into the client.
- MASSIVE cleanup in the renderers (i mean actual cleanup, maybe even rewriting of huge parts, not hacking new "features" in there)
- Evaluation of filters. LAV can mostly replace internal source filters, it can fully replace the internal audio decoder, video is planned - DXVA1/2 decoders need evaluation.

The first step is the most important, just get some new player going that works with stand-alone filters, with standalone renderers, like default VMR9/EVR and madVR. Then cleanup the custom renderers from MPC-HC and try to reuse EVR-CP and VMR9(renderless). This would already give you proper playback of everything.
Next up would be subtitles. Thats probably a more complicated task and will require cooperation with the renderers.

And as the final touch, select open-source filters that should be bundled with the new player.

tetsuo55
5th May 2011, 12:21
Yeah, for maintainability we need a new player.
Will that be mpc-hc2.0, lavplayer, or something else, i don't know

CruNcher
5th May 2011, 12:55
Potplayer is in those regards another MPC-HC shares the same codebase though with a lot of additions (especially the skinning engine and the enhanced filter management), only still unique is Zoomplayer, but many already prefer Potplayer also Gom Player and i dunno but i think their are more MPC-HC based Player out their especially in the Asian direction. :)
And that is really sad the Potplayer guy could at least contribute back and normally he would have to under the GPL, testuo55 did you ever talked with him about this he seems to also have problems with ffmpeg and comply with the GPL their ?

However, the The KMPlayer authors have published an official comment on their own forum that denies the alleged GPL violation by Gabest.
Does somebody has a link to the written statement ?

Daiz
5th May 2011, 12:58
- A new, easier and universal way to render subtitles - preferably as a DirectShow filter, not directly hacked into the client.

Ever heard of VSFilter? :rolleyes:

tetsuo55
5th May 2011, 13:03
- A new, easier and universal way to render subtitles - preferably as a DirectShow filter, not directly hacked into the client.
- MASSIVE cleanup in the renderers (i mean actual cleanup, maybe even rewriting of huge parts, not hacking new "features" in there)
Neither of those are part of the core player imho, but filters. Granted these also need a rewrite and dedicated devs/

@Cruncher, afaik all the forks except splayer violate GPL. And to my knowledge none of them send us patches.

nevcairiel
5th May 2011, 13:04
Ever heard of VSFilter? :rolleyes:

VSFilter is crap. Its super slow, a simple text sub can make your video playback crawl - and it renders subs on the image before scaling and color space expansion.

Not to mention its buggy as hell, and gets sub positions wrong half the time.

Neither of those are part of the core player imho, but filters. Granted these also need a rewrite and dedicated devs

Indeed they are not, but for a full playback experience, they are needed. As you see above, only the first point is "core" player, everything else is stuff needed for a full playback package.

Daiz
5th May 2011, 13:25
VSFilter is crap. Its super slow, a simple text sub can make your video playback crawl - and it renders subs on the image before scaling and color space expansion.

Not to mention its buggy as hell, and gets sub positions wrong half the time.

While I agree that VSFilter is slow due to being poorly optimized and only single-threaded, it's not so slow that "a simple text sub" could make your video playback crawl unless you were using a Pentium II or something for playback. Neither does it get sub positions wrong half the time. You need to do quite heavy transform effects with ASS to make VSFilter slow down into unplayable territory, and those aren't something you could even do with simpler/unstyled subtitle formats.

But there isn't really much choice in terms of subtitle renderers. It's either VSFilter or libass. And libass doesn't have a DirectShow filter. That's certainly something I'd like to see, though. But while libass is a lot faster than VSFilter, it has also has some quirky rendering issues not present in VSFilter...

tetsuo55
5th May 2011, 13:28
While I agree that VSFilter is slow due to being poorly optimized and only single-threaded, it's not so slow that "a simple text sub" could make your video playback crawl unless you were using a Pentium II or something for playback. Neither does it get sub positions wrong half the time. You need to do quite heavy transform effects with ASS to make VSFilter slow down into unplayable territory, and those aren't something you could even do with simpler/unstyled subtitle formats.

But there isn't really much choice in terms of subtitle renderers. It's either VSFilter or libass. And libass doesn't have a DirectShow filter. That's certainly something I'd like to see, though. But while libass is a lot faster than VSFilter, it has also has some quirky rendering issues not present in VSFilter...VSfilter/internal renderer can cause framedrops from even the simplest subtitles. Its a major design flaw in the core that is not related to CPU time.

nevcairiel
5th May 2011, 13:32
While I agree that VSFilter is slow due to being poorly optimized and only single-threaded, it's not so slow that "a simple text sub" could make your video playback crawl unless you were using a Pentium II or something for playback. Neither does it get sub positions wrong half the time.

I recently fixed two bugs in VSFilter, and while testing i noticed all this.

I have a 1080p MKV with a very simple SRT subtitle, and displaying it just kills playback - and this is on a i7. Maybe its SRT thats so horribly inefficient, i don't have any real content with ASS subs, except samples for testing.

The bug i fixed was actually a positioning problem of PGS subs, half of them just showed up in the top left corner. Due to its weird code i was unable to fix the underlying issue, so i just fixed it in PGS - i don't doubt other subs still show up in the corner.

Not to mention that VSFilter suffers from the same code quality problems MPC-HC does (hey, its the same project), so recycling it is not really so easy.
If one were to write a new subtitle filter, there would at least be the possibility to look into re-using some of the subtitle rendering logic (after cleanups), as i realize that most fan-sub content is actually designed for VSFilter.

zhfi
5th May 2011, 13:37
test clsid patch still have
PPageFileInfoDetails.cpp
.\PPageFileInfoDetails.cpp(158) : error C3861: “StrFormatByteSizeW”: 找不到标识符
Playlist.cpp
.\Playlist.cpp(271) : error C3861: “StrCmpLogicalW”: 找不到标识符
.\MainFrm.cpp(4972) : error C3861: “StrFormatByteSizeW”: 找不到标识符
.\MainFrm.cpp(11702) : error C3861: “StrCmpLogicalW”: 找不到标识符
结果 生成日志保存在“file://C:\mpc-hc\bin\obj\Release_Win32\mpc-hc\BuildLog.htm”
mpc-hc - 4 个错误,18 个警告


try this patch while compile with VC2008:

Index: include/stdafx_common.h
===================================================================
--- include/stdafx_common.h (revision 3084)
+++ include/stdafx_common.h (working copy)
@@ -8,6 +8,10 @@
#define VC_EXTRALEAN // Exclude rarely-used stuff from Windows headers
#endif

+#ifndef NO_DSHOW_STRSAFE
+#define NO_DSHOW_STRSAFE
+#endif
+
#include <SDKDDKVer.h>

#define _ATL_CSTRING_EXPLICIT_CONSTRUCTORS // some CString constructors will be explicit

Daiz
5th May 2011, 13:37
I have a 1080p MVK with a very simple SRT subtitle, and displaying it just kills playback

Interesting. Was this with the internal VSFilter of MPC-HC or an external VSFilter? Also, can you cut a sample of the SRT track that I could try on a random 1080p video?

The bug i fixed was actually a positioning problem of PGS subs, half of them just showed up in the top left corner. Due to its weird code i was unable to fix the underlying issue, so i just fixed it in PGS - i don't doubt other subs still show up in the corner.

Admittedly I haven't tried to render any PGS subtitles with VSFilter (I don't think the external one even supports them?), but that's mainly because I OCR/convert all of my subtitles into ASS for superior subtitle quality.

If you were to write a new subtitle renderer, it'd definitely need to support ASS - if it didn't, it'd be a major step back from VSFilter/libass, even if it had a lot less bugs and was more stable. I for one would not be willing to give up all the features that ASS has to offer and neither would many others.

nevcairiel
5th May 2011, 13:48
Interesting. Was this with the internal VSFilter of MPC-HC or an external VSFilter? Also, can you cut a sample of the SRT track that I could try on a random 1080p video?

External, internal didn't seem to suffer from the problem.

Here is the sample i tested on, it has both PGS and SRT
http://www.mediafire.com/?ucid8fzk282jm8b


Admittedly I haven't tried to render any PGS subtitles with VSFilter (I don't think the external one even supports them?), but that's mainly because I OCR/convert all of my subtitles into ASS for superior subtitle quality.

It does. Make sure you use a build from the mpc-hc standalone filters package, not the original vsfilter from gabest's old project (last updated years ago)

Oh btw, If i look at the bitmap subs of the forced subs in Avatar, i don't think you could get the same quality, or anything close, without the original Font. Blu-ray PGS are already pre-rendered at 1080p, they look pretty good to me. The "normal" subs (not forced) look a bit worse though, like some standard font - but i only really want forced subs.

OCR'ing DVD subs can only improve their quality, i guess.


If you were to write a new subtitle renderer, it'd definitely need to support ASS - if it didn't, it'd be a major step back from VSFilter/libass, even if it had a lot less bugs and was more stable. I for one would not be willing to give up all the features that ASS has to offer and neither would many others.

Of course it would aim to support as many subtitle formats as possible. Possibly even allowing both libass and vsfilter backends for rendering.

Reminder: This is just thinking here, there are no concrete plans for coding anything.

Daiz
5th May 2011, 13:57
Oh btw, If i look at the bitmap subs of the forced subs in Avatar, i don't think you could get the same quality, or anything close, without the original Font.

Well, considering that they're using Papyrus (http://en.wikipedia.org/wiki/Papyrus_%28typeface%29) for it, it wouldn't be particularly hard to use the exact same font... and personally, a big reason to OCR it would be to change that travesty of a font to something actually pleasant to look at. And from what I've seen of BD subtitles in general, they seem to either use quite basic fonts or alternatively cock it up completely by doing something as stupid as using a serif font for the main dialogue. Or having no subtitle borders, only a dropshadow. Or both. And the list goes on...

clsid
5th May 2011, 13:59
While installing SP1 is certainly a good idea for everyone, breaking compilation for people that don't have it is just horrible.
Compiling should now work again with 2010 RTM.

Do you have any idea which code (or project settings) in the standalone filters might trigger the MFC bloat inclusion? Your filters don't suffer from it, which means it should be avoidable. A clean solution is of course preferred over the current workaround.

nevcairiel
5th May 2011, 14:00
Well, considering that they're using Papyrus (http://en.wikipedia.org/wiki/Papyrus_%28typeface%29) for it, it wouldn't be particularly hard to use the exact same font... and personally, a big reason to OCR it would be to change that travesty of a font to something actually pleasant to look at. And from what I've seen of BD subtitles in general, they seem to either use quite basic fonts or alternatively cock it up completely by doing something as stupid as using a serif font for the main dialogue. Or having no subtitle borders, only a dropshadow. Or both. And the list goes on...


I don't usually look at subs, i really hate them. I only watch content if i understand it - alien languages are of course the exception to this.
The forced subs in Avatar were actually "ok" to read during watching - IMHO of course - the normal subs for the english parts are as ugly as ever.


Do you have any idea which code (or project settings) in the standalone filters might trigger the MFC bloat inclusion? Your filters don't suffer from it, which means it should be avoidable. A clean solution is of course preferred over the current workaround.

My filters don't statically link MFC, i rather require the VS2010 runtime to be installed.

Daiz
5th May 2011, 14:06
I don't usually look at subs, i really hate them.

Well, if you're a German I can see why you would have an attitude like that :) In comparison to your experience with the alien language subtitles in Avatar, my thoughts during the first lines of alien dialogue were "Are they seriously using Papyrus as the font? That's goddamn cheap!" Personally I prefer to watch all media that I consume in its original language with subtitles. I also work with subtitles and subtitling on a weekly basis, so subtitle quality, formats, their features and rendering are quite important things for me and something I pay close attention to.

clsid
5th May 2011, 14:10
I recently fixed two bugs in VSFilter, and while testing i noticed all this.

I have a 1080p MKV with a very simple SRT subtitle, and displaying it just kills playback - and this is on a i7. Maybe its SRT thats so horribly inefficient, i don't have any real content with ASS subs, except samples for testing.

The bug i fixed was actually a positioning problem of PGS subs, half of them just showed up in the top left corner. Due to its weird code i was unable to fix the underlying issue, so i just fixed it in PGS - i don't doubt other subs still show up in the corner.

Not to mention that VSFilter suffers from the same code quality problems MPC-HC does (hey, its the same project), so recycling it is not really so easy.
If one were to write a new subtitle filter, there would at least be the possibility to look into re-using some of the subtitle rendering logic (after cleanups), as i realize that most fan-sub content is actually designed for VSFilter.
MPC-HC by default uses insane subtitle settings on quadcores (and higher). It enables "allow animation while buffering" which pretty much just eats CPU cycles. It is supposed to help with tearing issues, but its just a terrible code hack. I think it should be disabled or just removed entirely.
To get animation, use subpicture buffer of zero. For best performance (without correct animation) use non-zero buffer.

The biggest flaw in the subtitle renderer is that is uses the animation code path for every type of subtitle, even static ones like srt and vobsub. Fixing that would give a nice performance boost.

clsid
5th May 2011, 14:13
My filters don't statically link MFC, i rather require the VS2010 runtime to be installed.I forgot to mention that I modified them to be static to check out the size increase. The added size was in the order of 100KB, so pretty small.

nevcairiel
5th May 2011, 14:13
Well, if you're a German I can see why you would have an attitude like that :)

How is that?

I also don't watch content in german, unless its a german production. I watch it in english, as thats the language most the content i watch was produced in, come to think of it, nearly all of it, i guess.

PS:
Sometimes ignorance is bliss - i just enjoy a movie, and don't wonder about which font was used for the forced subs. :D

cca
5th May 2011, 14:21
MPC-HC by default uses insane subtitle settings on quadcores (and higher). It enables "allow animation while buffering" which pretty much just eats CPU cycles. It is supposed to help with tearing issues, but its just a terrible code hack. I think it should be disabled or just removed entirely.
To get animation, use subpicture buffer of zero. For best performance (without correct animation) use non-zero buffer.

The biggest flaw in the subtitle renderer is that is uses the animation code path for every type of subtitle, even static ones like srt and vobsub. Fixing that would give a nice performance boost.

Hack or not, with a buffer length of zero it's almost impossible to get subtitles without introducing Tearing. That's why this was introduced and it does the job, I watch fansubed anime for years now and the majority of them use ASS animated subtitles, I have tested those settings over time.

I do agree that it shouldn't be used for SRT and VobSubs though, no reason to.

madshi
5th May 2011, 14:30
Where does tearing come from in a subtitle renderer? Normally it's a video renderer problem...

nevcairiel
5th May 2011, 14:31
I forgot to mention that I modified them to be static to check out the size increase. The added size was in the order of 100KB, so pretty small.

It happens only if you use some function that actually causes those objects to be pulled in. Apparently i don't. My way of creating the properties pages is quite different to how MPC-HC filters do it, which may explain it (only place with alot of MFC usage).

Not sure what function exactly triggers it though, may be something in the MPC-HC base classes, DSUtil or whatever.

If its only 100Kb, i might even consider turning that on by default, and make those people shut up that don't have the runtime installed. :p