I see the scaler test program comes with a pre-built DLL file, but does not include any header file or documentation for the DLL.
What are the arguments and calling conventions for the functions inside?
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Here are the declarations that I reverse-engineered up:
void* createScaler();
void scaleXBRZ(void *scaler, int factor, void *src, void *dest, int srcWidth, int srcHeight, int pixelFormat);
void releaseScaler(void *scaler);
Unfortunately, due to an issue with how Visual C++ generates code, it is incompatible with Windows XP. It tries to get thread-local storage by fetching something from FS:[0x2C], which returns 0 on Windows XP, then leads to a null pointer read.
If you replace the static const instance inside DistYCbCrBuffer with a normal global variable, it works fine on Windows XP.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
I see the scaler test program comes with a pre-built DLL file, but does not include any header file or documentation for the DLL.
What are the arguments and calling conventions for the functions inside?
Here are the declarations that I reverse-engineered up:
Unfortunately, due to an issue with how Visual C++ generates code, it is incompatible with Windows XP. It tries to get thread-local storage by fetching something from FS:[0x2C], which returns 0 on Windows XP, then leads to a null pointer read.
If you replace the static const instance inside DistYCbCrBuffer with a normal global variable, it works fine on Windows XP.
Uhm... the code is open source. Just saying.