37 #define compare_fourcc(fcc1, fcc2) (((fcc1)^(fcc2))&~0x20202020) 46 return (30 * clr.rgbRed + 59 * clr.rgbGreen + 11 * clr.rgbBlue)/4;
49 #define GetRawPixel(lpbi,lp,x) \ 50 ((lpbi)->biBitCount == 1 ? ((lp)[(x)/8] >> (8 - (x)%8)) & 1 : \ 51 ((lpbi)->biBitCount == 4 ? ((lp)[(x)/2] >> (4 * (1 - (x)%2))) & 15 : lp[x])) 161 INT diff = 0x00FFFFFF;
169 int r = ((
int)clrs[
i].rgbRed - (
int)clr.rgbRed);
170 int g = ((
int)clrs[
i].rgbGreen - (
int)clr.rgbGreen);
171 int b = ((
int)clrs[
i].rgbBlue - (
int)clr.rgbBlue);
190 WORD wIntensityTbl[256];
191 DWORD lInLine, lOutLine;
202 lpOut =
pi->pCurFrame;
220 for (
i = 0;
i < 7;
i++)
221 lpOut[8 *
x +
i] = wIntensityTbl[(lpIn[
x] >> (7 -
i)) & 1];
226 lpOut[2 *
x + 0] = wIntensityTbl[(lpIn[
x] >> 4)];
227 lpOut[2 *
x + 1] = wIntensityTbl[(lpIn[
x] & 0x0F)];
232 lpOut[
x] = wIntensityTbl[lpIn[
x]];
255 size = (2 +
a * (2 + ((
a + 2) & ~2)) +
b * (2 + ((
b + 2) & ~2)));
288 if (
ColorCmp(clr1, clr3) <= lDist &&
337 for (count2 = 0,
pos++;
pos <
width && count2 <= 5;
pos++, count2++) {
365 if (pos < lpbi->biWidth) {
396 int extra_byte =
bytes & 0x01;
398 *lpSizeImage += 2 +
bytes + extra_byte;
399 assert(((*lpSizeImage) % 2) == 0);
403 for (
i = 0;
i <
size;
i += 2) {
412 *lpOut++ = (clr1 << 4) | clr2;
431 *lpOut++ = (clr1 << 4) | clr2;
488 int extra_byte =
size % 2;
490 *lpSizeImage += 2 +
size + extra_byte;
505 *lpSizeImage += 2 *
count;
546 LPBYTE lpOutStart = lpOut;
576 lpOut +=
sizeof(
WORD);
587 lpP =
pi->pPrevFrame;
608 }
else if (jumpy || jumpx !=
pos) {
629 *lpOut =
min(
w, 255);
636 lpOut +=
sizeof(
WORD);
642 while (jumpy ||
pos != jumpx) {
646 *lpOut =
min(
pos - jumpx, 255);
649 *lpOut =
min(jumpy, 255);
675 lpOut +=
sizeof(
WORD);
683 lpOut +=
sizeof(
WORD);
699 LPBYTE lpOutStart = lpOut;
729 lpOut +=
sizeof(
WORD);
740 lpP =
pi->pPrevFrame;
761 }
else if (jumpy || jumpx !=
pos) {
775 lpOut +=
sizeof(
WORD);
782 while (jumpy ||
pos != jumpx) {
786 *lpOut =
min(
pos - jumpx, 255);
788 *lpOut =
min(jumpy, 255);
814 lpOut +=
sizeof(
WORD);
822 lpOut +=
sizeof(
WORD);
870 pixel_ptr += *lpIn++ * bytes_per_pixel;
871 lpOut += *lpIn++ * line_size;
872 if (pixel_ptr >= lpbi->
biWidth * bytes_per_pixel) {
878 extra_byte = (((code1 + 1) & (~1)) / 2) & 0x01;
880 if (pixel_ptr/bytes_per_pixel + code1 > lpbi->
biWidth)
884 for (
i = 0;
i < code0 / 2;
i++) {
885 if (bytes_per_pixel == 1) {
887 lpOut[pixel_ptr++] =
pi->palette_map[(code1 >> 4)];
888 if (2 *
i + 1 <= code0)
889 lpOut[pixel_ptr++] =
pi->palette_map[(code1 & 0x0F)];
890 }
else if (bytes_per_pixel == 2) {
891 code1 = lpIn[
i] >> 4;
892 lpOut[pixel_ptr++] =
pi->palette_map[code1 * 2 + 0];
893 lpOut[pixel_ptr++] =
pi->palette_map[code1 * 2 + 1];
895 if (2 *
i + 1 <= code0) {
896 code1 = lpIn[
i] & 0x0F;
897 lpOut[pixel_ptr++] =
pi->palette_map[code1 * 2 + 0];
898 lpOut[pixel_ptr++] =
pi->palette_map[code1 * 2 + 1];
901 code1 = lpIn[
i] >> 4;
902 lpOut[pixel_ptr + 0] =
pi->palette_map[code1 * 4 + 0];
903 lpOut[pixel_ptr + 1] =
pi->palette_map[code1 * 4 + 1];
904 lpOut[pixel_ptr + 2] =
pi->palette_map[code1 * 4 + 2];
905 pixel_ptr += bytes_per_pixel;
907 if (2 *
i + 1 <= code0) {
908 code1 = lpIn[
i] & 0x0F;
909 lpOut[pixel_ptr + 0] =
pi->palette_map[code1 * 4 + 0];
910 lpOut[pixel_ptr + 1] =
pi->palette_map[code1 * 4 + 1];
911 lpOut[pixel_ptr + 2] =
pi->palette_map[code1 * 4 + 2];
912 pixel_ptr += bytes_per_pixel;
917 if (bytes_per_pixel == 1) {
919 lpOut[pixel_ptr++] =
pi->palette_map[(code1 >> 4)];
920 }
else if (bytes_per_pixel == 2) {
921 code1 = lpIn[
i] >> 4;
922 lpOut[pixel_ptr++] =
pi->palette_map[code1 * 2 + 0];
923 lpOut[pixel_ptr++] =
pi->palette_map[code1 * 2 + 1];
925 code1 = lpIn[
i] >> 4;
926 lpOut[pixel_ptr + 0] =
pi->palette_map[code1 * 4 + 0];
927 lpOut[pixel_ptr + 1] =
pi->palette_map[code1 * 4 + 1];
928 lpOut[pixel_ptr + 2] =
pi->palette_map[code1 * 4 + 2];
929 pixel_ptr += bytes_per_pixel;
941 if (pixel_ptr/bytes_per_pixel + code0 > lpbi->
biWidth)
944 if (bytes_per_pixel == 1) {
945 BYTE c1 =
pi->palette_map[(code1 >> 4)];
946 BYTE c2 =
pi->palette_map[(code1 & 0x0F)];
948 for (
i = 0;
i < code0;
i++) {
950 lpOut[pixel_ptr++] = c1;
952 lpOut[pixel_ptr++] = c2;
954 }
else if (bytes_per_pixel == 2) {
955 BYTE hi1 =
pi->palette_map[(code1 >> 4) * 2 + 0];
956 BYTE lo1 =
pi->palette_map[(code1 >> 4) * 2 + 1];
958 BYTE hi2 =
pi->palette_map[(code1 & 0x0F) * 2 + 0];
959 BYTE lo2 =
pi->palette_map[(code1 & 0x0F) * 2 + 1];
961 for (
i = 0;
i < code0;
i++) {
963 lpOut[pixel_ptr++] = hi1;
964 lpOut[pixel_ptr++] = lo1;
966 lpOut[pixel_ptr++] = hi2;
967 lpOut[pixel_ptr++] = lo2;
971 BYTE b1 =
pi->palette_map[(code1 >> 4) * 4 + 0];
972 BYTE g1 =
pi->palette_map[(code1 >> 4) * 4 + 1];
973 BYTE r1 =
pi->palette_map[(code1 >> 4) * 4 + 2];
975 BYTE b2 =
pi->palette_map[(code1 & 0x0F) * 4 + 0];
976 BYTE g2 =
pi->palette_map[(code1 & 0x0F) * 4 + 1];
977 BYTE r2 =
pi->palette_map[(code1 & 0x0F) * 4 + 2];
979 for (
i = 0;
i < code0;
i++) {
981 lpOut[pixel_ptr + 0] =
b1;
982 lpOut[pixel_ptr + 1] = g1;
983 lpOut[pixel_ptr + 2] =
r1;
985 lpOut[pixel_ptr + 0] =
b2;
986 lpOut[pixel_ptr + 1] = g2;
987 lpOut[pixel_ptr + 2] =
r2;
989 pixel_ptr += bytes_per_pixel;
993 }
while (! bEndFlag);
1001 int bytes_per_pixel;
1010 bytes_per_pixel = (lpbi->
biBitCount + 1) / 8;
1031 pixel_ptr += *lpIn++ * bytes_per_pixel;
1032 lpOut += *lpIn++ * line_size;
1033 if (pixel_ptr >= lpbi->
biWidth * bytes_per_pixel) {
1039 if (pixel_ptr/bytes_per_pixel + code1 > lpbi->
biWidth) {
1040 WARN(
"aborted absolute: (%d=%d/%d+%d) > %d\n",pixel_ptr/bytes_per_pixel + code1,pixel_ptr,bytes_per_pixel,code1,lpbi->
biWidth);
1043 extra_byte = code1 & 0x01;
1048 if (bytes_per_pixel == 1) {
1049 lpOut[pixel_ptr] =
pi->palette_map[code1];
1050 }
else if (bytes_per_pixel == 2) {
1051 lpOut[pixel_ptr + 0] =
pi->palette_map[code1 * 2 + 0];
1052 lpOut[pixel_ptr + 1] =
pi->palette_map[code1 * 2 + 1];
1054 lpOut[pixel_ptr + 0] =
pi->palette_map[code1 * 4 + 0];
1055 lpOut[pixel_ptr + 1] =
pi->palette_map[code1 * 4 + 1];
1056 lpOut[pixel_ptr + 2] =
pi->palette_map[code1 * 4 + 2];
1058 pixel_ptr += bytes_per_pixel;
1067 if (pixel_ptr/bytes_per_pixel + code0 > lpbi->
biWidth) {
1068 WARN(
"aborted coded: (%d=%d/%d+%d) > %d\n",pixel_ptr/bytes_per_pixel + code1,pixel_ptr,bytes_per_pixel,code1,lpbi->
biWidth);
1072 if (bytes_per_pixel == 1) {
1073 code1 =
pi->palette_map[code1];
1075 lpOut[pixel_ptr++] = code1;
1076 }
else if (bytes_per_pixel == 2) {
1077 BYTE hi =
pi->palette_map[code1 * 2 + 0];
1078 BYTE lo =
pi->palette_map[code1 * 2 + 1];
1081 lpOut[pixel_ptr + 0] = hi;
1082 lpOut[pixel_ptr + 1] = lo;
1083 pixel_ptr += bytes_per_pixel;
1086 BYTE r =
pi->palette_map[code1 * 4 + 2];
1087 BYTE g =
pi->palette_map[code1 * 4 + 1];
1088 BYTE b =
pi->palette_map[code1 * 4 + 0];
1091 lpOut[pixel_ptr + 0] =
b;
1092 lpOut[pixel_ptr + 1] =
g;
1093 lpOut[pixel_ptr + 2] =
r;
1094 pixel_ptr += bytes_per_pixel;
1098 }
while (! bEndFlag);
1109 if (icinfo ==
NULL) {
1111 return (
LPVOID)0xFFFF0000;
1116 TRACE(
"(%p = {%u,0x%08X(%4.4s),0x%08X(%4.4s),0x%X,0x%X,...})\n", icinfo,
1131 WARN(
"unknown FOURCC = 0x%08X(%4.4s) !\n",
1142 pi->nPrevFrame = -1;
1143 pi->pPrevFrame =
pi->pCurFrame =
NULL;
1222 TRACE(
"(%p,%p,%p)\n",
pi,lpbiIn,lpbiOut);
1228 if (lpbiIn ==
NULL) {
1229 if (lpbiOut !=
NULL)
1240 switch (
pi->fccHandler) {
1260 if (lpbiOut !=
NULL) {
1297 TRACE(
"(%p,%p,%p)\n",
pi,lpbiIn,lpbiOut);
1300 if (lpbiIn ==
NULL && lpbiOut ==
NULL)
1320 if (lpbiIn ==
NULL && lpbiOut ==
NULL)
1324 if (lpbiIn !=
NULL) {
1339 if (lpbiOut !=
NULL) {
1343 if (lpbiIn !=
NULL) {
1364 TRACE(
"(%p,%p,%p)\n",
pi,lpbiIn,lpbiOut);
1370 if (lpbiIn ==
NULL || lpbiOut ==
NULL)
1377 if (
pi->bDecompress) {
1378 FIXME(
"cannot compress and decompress at same time!\n");
1387 if (
pi->pPrevFrame ==
NULL)
1390 if (
pi->pCurFrame ==
NULL) {
1394 pi->nPrevFrame = -1;
1404 if (
pi->palette_map ==
NULL) {
1435 TRACE(
"lpic={0x%X,%p,%p,%p,%p,%p,%p,%d,%u,%u,%p,%p}\n",lpic->
dwFlags,lpic->
lpbiOutput,lpic->lpOutput,lpic->
lpbiInput,lpic->lpInput,lpic->
lpckid,lpic->
lpdwFlags,lpic->
lFrameNum,lpic->
dwFrameSize,lpic->
dwQuality,lpic->
lpbiPrev,lpic->lpPrev);
1437 if (!
pi->bCompress) {
1454 pi->pPrevFrame =
pi->pCurFrame;
1455 pi->pCurFrame = pTmp;
1459 WARN(
": prev=%d cur=%d gone back? -- untested\n",
pi->nPrevFrame,lpic->
lFrameNum);
1465 WARN(
": prev=%d cur=%d compute swapped -- untested\n",
pi->nPrevFrame,lpic->
lFrameNum);
1470 pTmp =
pi->pPrevFrame;
1471 pi->pPrevFrame =
pi->pCurFrame;
1472 pi->pCurFrame = pTmp;
1478 for (
i = 0;
i < 3;
i++) {
1500 WARN(
"switched to keyframe, was small enough!\n");
1518 pi->pPrevFrame =
pi->pCurFrame;
1519 pi->pCurFrame = pTmp;
1533 if (
pi->pPrevFrame !=
NULL)
1538 if (
pi->pCurFrame !=
NULL)
1545 pi->nPrevFrame = -1;
1548 if (
pi->palette_map !=
NULL) {
1562 TRACE(
"(%p,%p,%p)\n",
pi,lpbiIn,lpbiOut);
1586 if (lpbiOut !=
NULL) {
1601 TRACE(
"(%p,%p,%p)\n",
pi,lpbiIn,lpbiOut);
1607 if (lpbiIn ==
NULL && lpbiOut ==
NULL)
1611 if (lpbiIn !=
NULL) {
1617 if (lpbiOut !=
NULL) {
1621 if (lpbiIn !=
NULL) {
1641 TRACE(
"(%p,%p,%p)\n",
pi,lpbiIn,lpbiOut);
1647 if (lpbiIn ==
NULL || lpbiOut ==
NULL)
1653 if (
pi->bCompress) {
1654 FIXME(
"cannot compress and decompress at same time!\n");
1658 if (
pi->bDecompress)
1677 if (
pi->palette_map ==
NULL)
1680 for (
i = 0;
i < colors;
i++)
1686 if (
pi->palette_map ==
NULL)
1689 for (
i = 0;
i < colors;
i++) {
1693 color = ((rgbIn[
i].rgbRed >> 3) << 10)
1694 | ((rgbIn[
i].rgbGreen >> 3) << 5) | (rgbIn[
i].rgbBlue >> 3);
1696 color = ((rgbIn[
i].rgbRed >> 3) << 11)
1697 | ((rgbIn[
i].rgbGreen >> 3) << 5) | (rgbIn[
i].rgbBlue >> 3);
1699 pi->palette_map[
i * 2 + 1] =
color >> 8;
1700 pi->palette_map[
i * 2 + 0] =
color & 0xFF;
1706 if (
pi->palette_map ==
NULL)
1732 if (!
pi->bDecompress) {
1766 if (
pi->palette_map !=
NULL) {
1779 TRACE(
"(%p,%p,%p)\n",
pi,lpbiIn,lpbiOut);
1785 if (lpbiIn ==
NULL || lpbiOut ==
NULL)
1814 TRACE(
"(%lx,%p,0x%04X,0x%08lX,0x%08lX)\n", dwDrvID, hDrv, uMsg, lParam1, lParam2);
1823 if (dwDrvID != 0xFFFF0000 && (
LPVOID)dwDrvID !=
NULL)
1841 FIXME(
"ICM_CONFIGURE (%ld)\n",lParam1);
1903 return DefDriverProc(dwDrvID, hDrv, uMsg, lParam1, lParam2);
1905 FIXME(
"Unknown message uMsg=0x%08X lParam1=0x%08lX lParam2=0x%08lX\n",uMsg,lParam1,lParam2);
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble * u
GLint GLint GLsizei width
#define GetRawPixel(lpbi, lp, x)
HGLOBAL NTAPI GlobalAlloc(UINT uFlags, SIZE_T dwBytes)
LPBITMAPINFOHEADER lpbiInput
#define MSRLE32_DEFAULTQUALITY
GLubyte GLubyte GLubyte GLubyte w
#define ICM_COMPRESS_BEGIN
static BYTE MSRLE32_GetNearestPaletteIndex(UINT count, const RGBQUAD *clrs, RGBQUAD clr)
static LRESULT DecompressEnd(CodecInfo *pi)
#define ICCOMPRESS_KEYFRAME
#define ICM_DECOMPRESS_SET_PALETTE
GLdouble GLdouble GLdouble r
struct tagBITMAPINFOHEADER BITMAPINFOHEADER
GLuint GLuint GLsizei count
#define ICM_GETDEFAULTQUALITY
static LONG MSRLE32_GetMaxCompressedSize(LPCBITMAPINFOHEADER lpbi)
LPBITMAPINFOHEADER lpbiInput
BOOL WINAPI DisableThreadLibraryCalls(IN HMODULE hLibModule)
GLint GLint GLint GLint GLint x
#define DLL_PROCESS_ATTACH
static INT MSRLE32_CompressRLE8Line(const CodecInfo *pi, const WORD *lpP, const WORD *lpC, LPCBITMAPINFOHEADER lpbi, const BYTE *lpIn, INT x, LPBYTE *ppOut, DWORD *lpSizeImage)
HGLOBAL NTAPI GlobalHandle(LPCVOID pMem)
static LRESULT DecompressBegin(CodecInfo *pi, LPCBITMAPINFOHEADER lpbiIn, LPCBITMAPINFOHEADER lpbiOut)
static CodecInfo * Open(LPICOPEN icinfo)
#define ICM_COMPRESS_QUERY
int WINAPI LoadStringW(_In_opt_ HINSTANCE hInstance, _In_ UINT uID, _Out_writes_to_(cchBufferMax, return+1) LPWSTR lpBuffer, _In_ int cchBufferMax)
static LRESULT GetInfo(const CodecInfo *pi, ICINFO *icinfo, DWORD dwSize)
static LRESULT CompressBegin(CodecInfo *pi, LPCBITMAPINFOHEADER lpbiIn, LPCBITMAPINFOHEADER lpbiOut)
#define DRV_QUERYCONFIGURE
static LRESULT Compress(CodecInfo *pi, ICCOMPRESS *lpic, DWORD dwSize)
#define ICM_DECOMPRESS_QUERY
#define DIBWIDTHBYTES(bi)
static unsigned char bytes[4]
LPBITMAPINFOHEADER lpbiOutput
static BOOL isSupportedMRLE(LPCBITMAPINFOHEADER lpbi)
static CRYPT_DATA_BLOB b1[]
LPBITMAPINFOHEADER lpbiPrev
static HINSTANCE MSRLE32_hModule
static LRESULT Configure(const CodecInfo *pi, HWND hWnd)
static LRESULT MSRLE32_CompressRLE4(const CodecInfo *pi, LPCBITMAPINFOHEADER lpbiIn, const BYTE *lpIn, LPBITMAPINFOHEADER lpbiOut, LPBYTE lpOut, BOOL isKey)
BOOL WINAPI DllMain(HINSTANCE hModule, DWORD dwReason, LPVOID lpReserved)
GLboolean GLboolean GLboolean b
static INT countDiffRLE4(const WORD *lpP, const WORD *lpA, const WORD *lpB, INT pos, LONG lDist, LONG width)
int WINAPI MessageBoxW(_In_opt_ HWND, _In_opt_ LPCWSTR, _In_opt_ LPCWSTR, _In_ UINT)
#define ICM_DECOMPRESS_GET_PALETTE
#define ICM_DECOMPRESS_GET_FORMAT
static LRESULT CompressGetFormat(CodecInfo *pi, LPCBITMAPINFOHEADER lpbiIn, LPBITMAPINFOHEADER lpbiOut)
#define ICM_DECOMPRESS_END
HGLOBAL NTAPI GlobalFree(HGLOBAL hMem)
#define VIDCF_FASTTEMPORALC
TCHAR szTitle[MAX_LOADSTRING]
static LRESULT CompressQuery(const CodecInfo *pi, LPCBITMAPINFOHEADER lpbiIn, LPCBITMAPINFOHEADER lpbiOut)
#define MB_ICONINFORMATION
#define ICERR_UNSUPPORTED
static INT countDiffRLE8(const WORD *lpP, const WORD *lpA, const WORD *lpB, INT pos, LONG lDist, LONG width)
LPVOID NTAPI GlobalLock(HGLOBAL hMem)
static WORD Intensity(RGBQUAD clr)
#define mmioFOURCC(c0, c1, c2, c3)
static LRESULT Decompress(CodecInfo *pi, ICDECOMPRESS *pic, DWORD dwSize)
#define memcpy(s1, s2, n)
#define MAKEAVICKID(tcc, stream)
static INT MSRLE32_CompressRLE4Line(const CodecInfo *pi, const WORD *lpP, const WORD *lpC, LPCBITMAPINFOHEADER lpbi, const BYTE *lpIn, LONG lDist, INT x, LPBYTE *ppOut, DWORD *lpSizeImage)
#define ICM_DECOMPRESS_BEGIN
static LRESULT DecompressGetFormat(CodecInfo *pi, LPCBITMAPINFOHEADER lpbiIn, LPBITMAPINFOHEADER lpbiOut)
static LRESULT MSRLE32_CompressRLE8(const CodecInfo *pi, LPCBITMAPINFOHEADER lpbiIn, const BYTE *lpIn, LPBITMAPINFOHEADER lpbiOut, LPBYTE lpOut, BOOL isKey)
#define ICM_COMPRESS_GET_FORMAT
WINE_DEFAULT_DEBUG_CHANNEL(msrle32)
static LRESULT Close(CodecInfo *pi)
static LRESULT CompressEnd(CodecInfo *pi)
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
LPBITMAPINFOHEADER lpbiOutput
static LRESULT MSRLE32_DecompressRLE4(const CodecInfo *pi, LPCBITMAPINFOHEADER lpbi, const BYTE *lpIn, LPBYTE lpOut)
HLOCAL NTAPI LocalFree(HLOCAL hMem)
static void computeInternalFrame(CodecInfo *pi, LPCBITMAPINFOHEADER lpbiIn, const BYTE *lpIn)
#define compare_fourcc(fcc1, fcc2)
static LRESULT DecompressQuery(CodecInfo *pi, LPCBITMAPINFOHEADER lpbiIn, LPCBITMAPINFOHEADER lpbiOut)
BOOL NTAPI GlobalUnlock(HGLOBAL hMem)
GLint GLint GLint GLint GLint GLint y
static LRESULT DecompressGetPalette(CodecInfo *pi, LPCBITMAPINFOHEADER lpbiIn, LPBITMAPINFOHEADER lpbiOut)
LRESULT WINAPI DefDriverProc(DWORD_PTR dwDriverIdentifier, HDRVR hDrv, UINT Msg, LPARAM lParam1, LPARAM lParam2)
static CRYPT_DATA_BLOB b2[]
#define StreamFromFOURCC(fcc)
static LRESULT MSRLE32_DecompressRLE8(const CodecInfo *pi, LPCBITMAPINFOHEADER lpbi, const BYTE *lpIn, LPBYTE lpOut)
static LRESULT CompressGetSize(CodecInfo *pi, LPCBITMAPINFOHEADER lpbiIn, LPCBITMAPINFOHEADER lpbiOut)
HLOCAL NTAPI LocalAlloc(UINT uFlags, SIZE_T dwBytes)
GLboolean GLboolean GLboolean GLboolean a
#define ICERR_GOTOKEYFRAME
#define ICM_GETDEFAULTKEYFRAMERATE
static LRESULT About(CodecInfo *pi, HWND hWnd)
PSDBQUERYRESULT_VISTA PVOID DWORD * dwSize
static BOOL isSupportedDIB(LPCBITMAPINFOHEADER lpbi)
LRESULT CALLBACK MSRLE32_DriverProc(DWORD_PTR dwDrvID, HDRVR hDrv, UINT uMsg, LPARAM lParam1, LPARAM lParam2)
static WORD ColorCmp(WORD clr1, WORD clr2)
#define ICM_COMPRESS_GET_SIZE
unsigned int(__cdecl typeof(jpeg_read_scanlines))(struct jpeg_decompress_struct *