Better support for new x264 builds with OpenCL Lookahead.

This commit is contained in:
LoRd_MuldeR 2013-05-05 14:11:34 +02:00
parent dd7a18abbb
commit b2b751035d
7 changed files with 52 additions and 20 deletions

View File

@ -195,7 +195,25 @@ if you want to encode audio from an Avisynth script, you must pass the
For convenience, the string "--audiofile $(INPUT)" may be used. For convenience, the string "--audiofile $(INPUT)" may be used.
11. Command-line Syntax 11. OpenCL Support
-----------------------
Newer builds of x264 now support OpenCL Lookahead, which can be enabled
with the "--opencl" parameter. However, even if you do NOT want to use
this feature, x264 will still depend on the OpenCL library (OpenCL.DLL)
and it will NOT even start, if the OpenCL DLL is missing! For this
reason, the Simple x264 Launcher ships with a "dummy" OpenCL library to
make x264 start on systems that do NOT support OpenCL. As a side effect
of this workaround, any OpenCL functions in x264 will not work at all!
If your video hardware supports OpenCL *and* if you have an up-to-date
video driver with OpenCL support installed *and* if you which to use
the OpenCL Lookahead function, then please remove the dummy OpenCL.DLL
from the Simple x264 Launcher directory, so x264 can load the system's
OpenCL.DLL (from system directory), provided by the video driver.
12. Command-line Syntax
----------------------- -----------------------
The following command-line switches are available: The following command-line switches are available:
@ -207,8 +225,11 @@ The following command-line switches are available:
--skip-avisynth-check ... Skip Avisynth check (not recommended!) --skip-avisynth-check ... Skip Avisynth check (not recommended!)
--force-cpu-no-64bit .... Forcefully disable 64-Bit support --force-cpu-no-64bit .... Forcefully disable 64-Bit support
These are parameters you can pass to Simple x264 Launcher, they can NOT
be passed to x264 itself as "custom" parameters!
12. Help & Support
13. Help & Support
------------------ ------------------
For help and support, please join the discussion at: For help and support, please join the discussion at:

View File

@ -91,7 +91,7 @@ g_x264_version =
}; };
//Compiler detection //Compiler detection
//The following code was (partially) borrowed from MPC-HC project: http://mpc-hc.sf.net/ //The following code was borrowed from MPC-HC project: http://mpc-hc.sf.net/
#if defined(__INTEL_COMPILER) #if defined(__INTEL_COMPILER)
#if (__INTEL_COMPILER >= 1300) #if (__INTEL_COMPILER >= 1300)
static const char *g_x264_version_compiler = "ICL 13." LAMEXP_MAKE_STR(__INTEL_COMPILER_BUILD_DATE); static const char *g_x264_version_compiler = "ICL 13." LAMEXP_MAKE_STR(__INTEL_COMPILER_BUILD_DATE);
@ -112,8 +112,10 @@ g_x264_version =
static const char *g_x264_version_compiler = "MSVC 2012-RTM"; static const char *g_x264_version_compiler = "MSVC 2012-RTM";
#elif (_MSC_FULL_VER < 170051106) #elif (_MSC_FULL_VER < 170051106)
static const char *g_x264_version_compiler = "MSVC 2012-U1 CTP"; static const char *g_x264_version_compiler = "MSVC 2012-U1 CTP";
#elif (_MSC_FULL_VER == 170051106) #elif (_MSC_FULL_VER < 170060315)
static const char *g_x264_version_compiler = "MSVC 2012-U1"; static const char *g_x264_version_compiler = "MSVC 2012-U1";
#elif (_MSC_FULL_VER == 170060315)
static const char *g_x264_version_compiler = "MSVC 2012-U2";
#else #else
#error Compiler version is not supported yet! #error Compiler version is not supported yet!
#endif #endif

View File

@ -91,7 +91,8 @@ while(0)
} \ } \
while(0) while(0)
#define X264_BINARY(BIN_DIR, IS_10BIT, IS_X64) QString("%1/x264_%2_%3.exe").arg((BIN_DIR), ((IS_10BIT) ? "10bit" : "8bit"), ((IS_X64) ? "x64" : "x86")) #define AVS2_BINARY(BIN_DIR, IS_X64) QString("%1/%2/avs2yuv_%2.exe").arg((BIN_DIR), ((IS_X64) ? "x64" : "x86"))
#define X264_BINARY(BIN_DIR, IS_10BIT, IS_X64) QString("%1/%2/x264_%3_%2.exe").arg((BIN_DIR), ((IS_X64) ? "x64" : "x86"), ((IS_10BIT) ? "10bit" : "8bit"))
/* /*
* Static vars * Static vars
@ -320,7 +321,7 @@ bool EncodeThread::runEncodingPass(bool x264_x64, bool x264_10bit, bool avs2yuv_
processAvisynth.setStandardOutputProcess(&processEncode); processAvisynth.setStandardOutputProcess(&processEncode);
log("Creating Avisynth process:"); log("Creating Avisynth process:");
if(!startProcess(processAvisynth, QString("%1/%2.exe").arg(m_binDir, avs2yuv_x64 ? "avs2yuv_x64" : "avs2yuv_x86"), cmdLine_Avisynth, false)) if(!startProcess(processAvisynth, AVS2_BINARY(m_binDir, avs2yuv_x64), cmdLine_Avisynth, false))
{ {
return false; return false;
} }
@ -726,7 +727,7 @@ unsigned int EncodeThread::checkVersionAvs2yuv(bool x64)
QProcess process; QProcess process;
log("\nCreating process:"); log("\nCreating process:");
if(!startProcess(process, QString("%1/%2.exe").arg(m_binDir, x64 ? "avs2yuv_x64" : "avs2yuv_x86"), QStringList())) if(!startProcess(process, AVS2_BINARY(m_binDir, x64), QStringList()))
{ {
return false;; return false;;
} }
@ -835,7 +836,7 @@ bool EncodeThread::checkProperties(bool x64, unsigned int &frames)
cmdLine << pathToLocal(QDir::toNativeSeparators(m_sourceFileName)) << "NUL"; cmdLine << pathToLocal(QDir::toNativeSeparators(m_sourceFileName)) << "NUL";
log("Creating process:"); log("Creating process:");
if(!startProcess(process, QString("%1/%2.exe").arg(m_binDir, x64 ? "avs2yuv_x64" : "avs2yuv_x86"), cmdLine)) if(!startProcess(process, AVS2_BINARY(m_binDir, x64), cmdLine))
{ {
return false;; return false;;
} }

View File

@ -22,10 +22,10 @@
#define VER_X264_MAJOR 2 #define VER_X264_MAJOR 2
#define VER_X264_MINOR 1 #define VER_X264_MINOR 1
#define VER_X264_PATCH 0 #define VER_X264_PATCH 0
#define VER_X264_BUILD 419 #define VER_X264_BUILD 422
#define VER_X264_MINIMUM_REV 2250 #define VER_X264_MINIMUM_REV 2282
#define VER_X264_CURRENT_API 130 #define VER_X264_CURRENT_API 132
#define VER_X264_AVS2YUV_VER 242 #define VER_X264_AVS2YUV_VER 242
#define VER_X264_PRE_RELEASE (0) #define VER_X264_PRE_RELEASE (0)

View File

@ -667,7 +667,7 @@ void MainWindow::shutdownComputer(void)
*/ */
void MainWindow::init(void) void MainWindow::init(void)
{ {
static const char *binFiles = "x264_8bit_x86.exe:x264_8bit_x64.exe:x264_10bit_x86.exe:x264_10bit_x64.exe:avs2yuv_x86.exe:avs2yuv_x64.exe"; static const char *binFiles = "x86/x264_8bit_x86.exe:x64/x264_8bit_x64.exe:x86/x264_10bit_x86.exe:x64/x264_10bit_x64.exe:x86/avs2yuv_x86.exe:x64/avs2yuv_x64.exe";
QStringList binaries = QString::fromLatin1(binFiles).split(":", QString::SkipEmptyParts); QStringList binaries = QString::fromLatin1(binFiles).split(":", QString::SkipEmptyParts);
updateLabelPos(); updateLabelPos();
@ -699,7 +699,7 @@ void MainWindow::init(void)
{ {
bool binaryTypeOkay = false; bool binaryTypeOkay = false;
DWORD binaryType; DWORD binaryType;
if(GetBinaryType(QWCHAR(file->fileName()), &binaryType)) if(GetBinaryType(QWCHAR(QDir::toNativeSeparators(file->fileName())), &binaryType))
{ {
binaryTypeOkay = (binaryType == SCS_32BIT_BINARY || binaryType == SCS_64BIT_BINARY); binaryTypeOkay = (binaryType == SCS_32BIT_BINARY || binaryType == SCS_64BIT_BINARY);
} }

View File

@ -69,9 +69,13 @@
<Command>del /S /Q "$(TargetDir)\*.dll" <Command>del /S /Q "$(TargetDir)\*.dll"
rmdir /S /Q "$(TargetDir)\toolset" rmdir /S /Q "$(TargetDir)\toolset"
rmdir /S /Q "$(TargetDir)\imageformats" rmdir /S /Q "$(TargetDir)\imageformats"
mkdir "$(TargetDir)\toolset" mkdir "$(TargetDir)\toolset\x86"
mkdir "$(TargetDir)\toolset\x64"
mkdir "$(TargetDir)\imageformats" mkdir "$(TargetDir)\imageformats"
copy /Y "$(SolutionDir)res\toolset\*.exe" "$(TargetDir)\toolset\" copy /Y "$(SolutionDir)res\toolset\x86\*.exe" "$(TargetDir)\toolset\x86\"
copy /Y "$(SolutionDir)res\toolset\x86\*.dll" "$(TargetDir)\toolset\x86\"
copy /Y "$(SolutionDir)res\toolset\x64\*.exe" "$(TargetDir)\toolset\x64\"
copy /Y "$(SolutionDir)res\toolset\x64\*.dll" "$(TargetDir)\toolset\x64\"
copy /Y "$(QTDIR)\bin\QtCored4.dll" "$(TargetDir)" copy /Y "$(QTDIR)\bin\QtCored4.dll" "$(TargetDir)"
copy /Y "$(QTDIR)\bin\QtGuid4.dll" "$(TargetDir)" copy /Y "$(QTDIR)\bin\QtGuid4.dll" "$(TargetDir)"
copy /Y "$(QTDIR)\bin\QtSvgd4.dll" "$(TargetDir)" copy /Y "$(QTDIR)\bin\QtSvgd4.dll" "$(TargetDir)"
@ -142,9 +146,13 @@ copy /Y "$(SolutionDir)etc\vld\bin\Win32\*.manifest" "$(TargetDir)"
<Command>del /S /Q "$(TargetDir)\*.dll" <Command>del /S /Q "$(TargetDir)\*.dll"
rmdir /S /Q "$(TargetDir)\toolset" rmdir /S /Q "$(TargetDir)\toolset"
rmdir /S /Q "$(TargetDir)\imageformats" rmdir /S /Q "$(TargetDir)\imageformats"
mkdir "$(TargetDir)\toolset" mkdir "$(TargetDir)\toolset\x86"
mkdir "$(TargetDir)\toolset\x64"
mkdir "$(TargetDir)\imageformats" mkdir "$(TargetDir)\imageformats"
copy /Y "$(SolutionDir)res\toolset\*.exe" "$(TargetDir)\toolset\" copy /Y "$(SolutionDir)res\toolset\x86\*.exe" "$(TargetDir)\toolset\x86\"
copy /Y "$(SolutionDir)res\toolset\x86\*.dll" "$(TargetDir)\toolset\x86\"
copy /Y "$(SolutionDir)res\toolset\x64\*.exe" "$(TargetDir)\toolset\x64\"
copy /Y "$(SolutionDir)res\toolset\x64\*.dll" "$(TargetDir)\toolset\x64\"
copy /Y "$(QTDIR)\bin\QtCore4.dll" "$(TargetDir)" copy /Y "$(QTDIR)\bin\QtCore4.dll" "$(TargetDir)"
copy /Y "$(QTDIR)\bin\QtGui4.dll" "$(TargetDir)" copy /Y "$(QTDIR)\bin\QtGui4.dll" "$(TargetDir)"
copy /Y "$(QTDIR)\bin\QtSvg4.dll" "$(TargetDir)" copy /Y "$(QTDIR)\bin\QtSvg4.dll" "$(TargetDir)"

View File

@ -48,9 +48,6 @@
<ClInclude Include="src\taskbar7.h"> <ClInclude Include="src\taskbar7.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="src\thread_avisynth.h">
<Filter>Header Files</Filter>
</ClInclude>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClCompile Include="src\main.cpp"> <ClCompile Include="src\main.cpp">
@ -178,6 +175,9 @@
<CustomBuild Include="src\thread_ipc.h"> <CustomBuild Include="src\thread_ipc.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</CustomBuild> </CustomBuild>
<CustomBuild Include="src\thread_avisynth.h">
<Filter>Header Files</Filter>
</CustomBuild>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ResourceCompile Include="x264_launcher.rc"> <ResourceCompile Include="x264_launcher.rc">