Welcome to Doom9's Forum, THE in-place to be for everyone interested in DVD conversion. Before you start posting please read the forum rules. By posting to this forum you agree to abide by the rules. |
22nd December 2009, 09:49 | #1 | Link |
Registered User
Join Date: Aug 2008
Posts: 4
|
MPC-HC 64 bit slower than 32 bit (MPEG)
Hi,
for my laptop having AMD Athlon X2 Dual-Core 2100 Caspian (M320) and Windows 7 64 bit Home premium I downloaded MediaPlayer Classic Home Cinema 64 bit. Noticed that a sony demo 1080 mpg (30 fps) could not be decoded successfully, it managed to keep up with about 24 frames per second (internal filter used). But when I downloaded 32 bit version, it started to show this demo flawlessly with 30 fps and not full CPU load. Is it a known issue? Is it related to the core MPC code or some between-architecture calls for some filters? I have no problem using 32-bit version, but knowing such things can help taking this into account in future Thanks in advance, Max |
23rd December 2009, 12:39 | #5 | Link |
*****
Join Date: Feb 2005
Posts: 5,643
|
MPC itself has little to none assembly. But ffdshow and MPC's internal ffmpeg decoders do. And yes, those contain a smaller amount of optimized assembly code in 64-bit builds.
__________________
MPC-HC 2.1.7.2 |
23rd December 2009, 16:43 | #6 | Link | |
Registered User
Join Date: Aug 2008
Posts: 4
|
Quote:
|
|
23rd December 2009, 16:52 | #7 | Link |
Software Developer
Join Date: Jun 2005
Location: Last House on Slunk Street
Posts: 13,248
|
Decoders are highly optimized code, in order to provide good playback performance. And the best performance is still achieved with hand-optimized assembler code. Even the best compilers with all their fancy auto-optimizations can't generated code that is as fast as a hand-optimized code written by one of the assembler gurus. However assembler code written for the x86 architecture -- and 99% of all assembler code written for PC software in the last three decades was developed for x86 -- doesn't run on amd64 (aka "x86-64") automatically. So when we built a software for amd64 instead of x86, we must either port all the assembler code to amd64 manually -- which may be a though task and a lot of work -- or we simply disable all the assembler code that won't run on amd64 yet. Disabling the assembler code means that we fall back to the plain C code, which will be much slower than the highly-optimized assembler code, even if compiled for amd64.
BTW: It is correct that all "instructions" of x86 are still available on amd64, but the ABI (Application Binary Interface) has changed significantly between 32-Bit and 64-Bit - at least on the Microsoft Windows platforms. As far as I know, this is one major reason why assembler code written for x86 cannot be ported to amd64 easily. Furthermore "inline assembly" is no longer supported by MSVC for 64-Bit, which means that all existing inline assembly must be disabled/replaced when compiling amd64 binaries with MSVC. That's another huge pitfall for 64-Bit performance, when porting existing applications...
__________________
Go to https://standforukraine.com/ to find legitimate Ukrainian Charities 🇺🇦✊ Last edited by LoRd_MuldeR; 23rd December 2009 at 17:53. |
23rd December 2009, 17:01 | #9 | Link |
Software Developer
Join Date: Jun 2005
Location: Last House on Slunk Street
Posts: 13,248
|
That's also because of Microsoft Window's weird 64-Bit ABI (Application Binary Interface), which apparently is very different from the rest of the world
__________________
Go to https://standforukraine.com/ to find legitimate Ukrainian Charities 🇺🇦✊ |
23rd December 2009, 20:30 | #10 | Link | |
Registered User
Join Date: Aug 2008
Posts: 4
|
Quote:
|
|
Tags |
64bit, mpc-hc, mpeg |
Thread Tools | Search this Thread |
Display Modes | |
|
|