Blame libfreerdp/codec/test/TestFreeRDPCodecProgressive.c

Packit Service fa4841
#include <winpr/wtypes.h>
Packit Service fa4841
#include <winpr/crt.h>
Packit Service fa4841
#include <winpr/path.h>
Packit Service fa4841
#include <winpr/image.h>
Packit Service fa4841
#include <winpr/print.h>
Packit Service fa4841
#include <winpr/wlog.h>
Packit Service fa4841
#include <winpr/sysinfo.h>
Packit Service fa4841
Packit Service fa4841
#include <freerdp/codec/region.h>
Packit Service fa4841
Packit Service fa4841
#include <freerdp/codec/progressive.h>
Packit Service fa4841
Packit Service fa4841
#include "../progressive.h"
Packit Service fa4841
Packit Service fa4841
/**
Packit Service fa4841
 * Microsoft Progressive Codec Sample Data
Packit Service fa4841
 * (available under NDA only)
Packit Service fa4841
 *
Packit Service fa4841
 * <enc/dec>_<image#>_<quarter#>_<prog%>_<bitmap>.<type>
Packit Service fa4841
 *
Packit Service fa4841
 * readme.pdf
Packit Service fa4841
 *
Packit Service fa4841
 * bitmaps/
Packit Service fa4841
 * 	1920by1080-SampleImage1.bmp
Packit Service fa4841
 * 	1920by1080-SampleImage2.bmp
Packit Service fa4841
 * 	1920by1080-SampleImage3.bmp
Packit Service fa4841
 *
Packit Service fa4841
 * compress/
Packit Service fa4841
 * 	enc_0_0_025_sampleimage1.bin
Packit Service fa4841
 * 	enc_0_0_050_sampleimage1.bin
Packit Service fa4841
 * 	enc_0_0_075_sampleimage1.bin
Packit Service fa4841
 * 	enc_0_0_100_sampleimage1.bin
Packit Service fa4841
 * 	enc_0_1_025_sampleimage1.bin
Packit Service fa4841
 * 	enc_0_1_050_sampleimage1.bin
Packit Service fa4841
 * 	enc_0_1_075_sampleimage1.bin
Packit Service fa4841
 * 	enc_0_1_100_sampleimage1.bin
Packit Service fa4841
 * 	enc_0_2_025_sampleimage1.bin
Packit Service fa4841
 * 	enc_0_2_050_sampleimage1.bin
Packit Service fa4841
 * 	enc_0_2_075_sampleimage1.bin
Packit Service fa4841
 * 	enc_0_2_100_sampleimage1.bin
Packit Service fa4841
 * 	enc_0_3_025_sampleimage1.bin
Packit Service fa4841
 * 	enc_0_3_050_sampleimage1.bin
Packit Service fa4841
 * 	enc_0_3_075_sampleimage1.bin
Packit Service fa4841
 * 	enc_0_3_100_sampleimage1.bin
Packit Service fa4841
 * 	enc_1_0_025_sampleimage2.bin
Packit Service fa4841
 * 	enc_1_0_050_sampleimage2.bin
Packit Service fa4841
 * 	enc_1_0_075_sampleimage2.bin
Packit Service fa4841
 * 	enc_1_0_100_sampleimage2.bin
Packit Service fa4841
 * 	enc_1_1_025_sampleimage2.bin
Packit Service fa4841
 * 	enc_1_1_050_sampleimage2.bin
Packit Service fa4841
 * 	enc_1_1_075_sampleimage2.bin
Packit Service fa4841
 * 	enc_1_1_100_sampleimage2.bin
Packit Service fa4841
 * 	enc_1_2_025_sampleimage2.bin
Packit Service fa4841
 * 	enc_1_2_050_sampleimage2.bin
Packit Service fa4841
 * 	enc_1_2_075_sampleimage2.bin
Packit Service fa4841
 * 	enc_1_2_100_sampleimage2.bin
Packit Service fa4841
 * 	enc_1_3_025_sampleimage2.bin
Packit Service fa4841
 * 	enc_1_3_050_sampleimage2.bin
Packit Service fa4841
 * 	enc_1_3_075_sampleimage2.bin
Packit Service fa4841
 * 	enc_1_3_100_sampleimage2.bin
Packit Service fa4841
 * 	enc_2_0_025_sampleimage3.bin
Packit Service fa4841
 * 	enc_2_0_050_sampleimage3.bin
Packit Service fa4841
 * 	enc_2_0_075_sampleimage3.bin
Packit Service fa4841
 * 	enc_2_0_100_sampleimage3.bin
Packit Service fa4841
 * 	enc_2_1_025_sampleimage3.bin
Packit Service fa4841
 * 	enc_2_1_050_sampleimage3.bin
Packit Service fa4841
 * 	enc_2_1_075_sampleimage3.bin
Packit Service fa4841
 * 	enc_2_1_100_sampleimage3.bin
Packit Service fa4841
 * 	enc_2_2_025_sampleimage3.bin
Packit Service fa4841
 * 	enc_2_2_050_sampleimage3.bin
Packit Service fa4841
 * 	enc_2_2_075_sampleimage3.bin
Packit Service fa4841
 * 	enc_2_2_100_sampleimage3.bin
Packit Service fa4841
 * 	enc_2_3_025_sampleimage3.bin
Packit Service fa4841
 * 	enc_2_3_050_sampleimage3.bin
Packit Service fa4841
 * 	enc_2_3_075_sampleimage3.bin
Packit Service fa4841
 * 	enc_2_3_100_sampleimage3.bin
Packit Service fa4841
 *
Packit Service fa4841
 * decompress/
Packit Service fa4841
 * 	dec_0_0_025_sampleimage1.bmp
Packit Service fa4841
 * 	dec_0_0_050_sampleimage1.bmp
Packit Service fa4841
 * 	dec_0_0_075_sampleimage1.bmp
Packit Service fa4841
 * 	dec_0_0_100_sampleimage1.bmp
Packit Service fa4841
 * 	dec_0_1_025_sampleimage1.bmp
Packit Service fa4841
 * 	dec_0_1_050_sampleimage1.bmp
Packit Service fa4841
 * 	dec_0_1_075_sampleimage1.bmp
Packit Service fa4841
 * 	dec_0_1_100_sampleimage1.bmp
Packit Service fa4841
 * 	dec_0_2_025_sampleimage1.bmp
Packit Service fa4841
 * 	dec_0_2_050_sampleimage1.bmp
Packit Service fa4841
 * 	dec_0_2_075_sampleimage1.bmp
Packit Service fa4841
 * 	dec_0_2_100_sampleimage1.bmp
Packit Service fa4841
 * 	dec_0_3_025_sampleimage1.bmp
Packit Service fa4841
 * 	dec_0_3_050_sampleimage1.bmp
Packit Service fa4841
 * 	dec_0_3_075_sampleimage1.bmp
Packit Service fa4841
 * 	dec_0_3_100_sampleimage1.bmp
Packit Service fa4841
 * 	dec_1_0_025_sampleimage2.bmp
Packit Service fa4841
 * 	dec_1_0_050_sampleimage2.bmp
Packit Service fa4841
 * 	dec_1_0_075_sampleimage2.bmp
Packit Service fa4841
 * 	dec_1_0_100_sampleimage2.bmp
Packit Service fa4841
 * 	dec_1_1_025_sampleimage2.bmp
Packit Service fa4841
 * 	dec_1_1_050_sampleimage2.bmp
Packit Service fa4841
 * 	dec_1_1_075_sampleimage2.bmp
Packit Service fa4841
 * 	dec_1_1_100_sampleimage2.bmp
Packit Service fa4841
 * 	dec_1_2_025_sampleimage2.bmp
Packit Service fa4841
 * 	dec_1_2_050_sampleimage2.bmp
Packit Service fa4841
 * 	dec_1_2_075_sampleimage2.bmp
Packit Service fa4841
 * 	dec_1_2_100_sampleimage2.bmp
Packit Service fa4841
 * 	dec_1_3_025_sampleimage2.bmp
Packit Service fa4841
 * 	dec_1_3_050_sampleimage2.bmp
Packit Service fa4841
 * 	dec_1_3_075_sampleimage2.bmp
Packit Service fa4841
 * 	dec_1_3_100_sampleimage2.bmp
Packit Service fa4841
 * 	dec_2_0_025_sampleimage3.bmp
Packit Service fa4841
 * 	dec_2_0_050_sampleimage3.bmp
Packit Service fa4841
 * 	dec_2_0_075_sampleimage3.bmp
Packit Service fa4841
 * 	dec_2_0_100_sampleimage3.bmp
Packit Service fa4841
 * 	dec_2_1_025_sampleimage3.bmp
Packit Service fa4841
 * 	dec_2_1_050_sampleimage3.bmp
Packit Service fa4841
 * 	dec_2_1_075_sampleimage3.bmp
Packit Service fa4841
 * 	dec_2_1_100_sampleimage3.bmp
Packit Service fa4841
 * 	dec_2_2_025_sampleimage3.bmp
Packit Service fa4841
 * 	dec_2_2_050_sampleimage3.bmp
Packit Service fa4841
 * 	dec_2_2_075_sampleimage3.bmp
Packit Service fa4841
 * 	dec_2_2_100_sampleimage3.bmp
Packit Service fa4841
 * 	dec_2_3_025_sampleimage3.bmp
Packit Service fa4841
 * 	dec_2_3_050_sampleimage3.bmp
Packit Service fa4841
 * 	dec_2_3_075_sampleimage3.bmp
Packit Service fa4841
 * 	dec_2_3_100_sampleimage3.bmp
Packit Service fa4841
 */
Packit Service fa4841
Packit Service fa4841
struct _EGFX_SAMPLE_FILE
Packit Service fa4841
{
Packit Service fa4841
	BYTE* buffer;
Packit Service fa4841
	size_t size;
Packit Service fa4841
};
Packit Service fa4841
typedef struct _EGFX_SAMPLE_FILE EGFX_SAMPLE_FILE;
Packit Service fa4841
Packit Service fa4841
static int g_Width = 0;
Packit Service fa4841
static int g_Height = 0;
Packit Service fa4841
static int g_DstStep = 0;
Packit Service fa4841
static BYTE* g_DstData = NULL;
Packit Service fa4841
Packit Service fa4841
static void sample_file_free(EGFX_SAMPLE_FILE* file)
Packit Service fa4841
{
Packit Service fa4841
	if (!file)
Packit Service fa4841
		return;
Packit Service fa4841
Packit Service fa4841
	free(file->buffer);
Packit Service fa4841
	file->buffer = NULL;
Packit Service fa4841
	file->size = 0;
Packit Service fa4841
}
Packit Service fa4841
Packit Service fa4841
static void test_fill_image_alpha_channel(BYTE* data, int width, int height, BYTE value)
Packit Service fa4841
{
Packit Service fa4841
	int i, j;
Packit Service fa4841
	UINT32* pixel;
Packit Service fa4841
Packit Service fa4841
	for (i = 0; i < height; i++)
Packit Service fa4841
	{
Packit Service fa4841
		for (j = 0; j < width; j++)
Packit Service fa4841
		{
Packit Service fa4841
			pixel = (UINT32*)&data[((i * width) + j) * 4];
Packit Service fa4841
			*pixel = ((*pixel & 0x00FFFFFF) | (value << 24));
Packit Service fa4841
		}
Packit Service fa4841
	}
Packit Service fa4841
}
Packit Service fa4841
Packit Service fa4841
static void* test_image_memset32(UINT32* ptr, UINT32 fill, size_t length)
Packit Service fa4841
{
Packit Service fa4841
	while (length--)
Packit Service fa4841
	{
Packit Service fa4841
		*ptr++ = fill;
Packit Service fa4841
	}
Packit Service fa4841
Packit Service fa4841
	return (void*)ptr;
Packit Service fa4841
}
Packit Service fa4841
Packit Service fa4841
static int test_image_fill(BYTE* pDstData, int nDstStep, int nXDst, int nYDst, int nWidth,
Packit Service fa4841
                           int nHeight, UINT32 color)
Packit Service fa4841
{
Packit Service fa4841
	int y;
Packit Service fa4841
	UINT32* pDstPixel;
Packit Service fa4841
Packit Service fa4841
	if (nDstStep < 0)
Packit Service fa4841
		nDstStep = 4 * nWidth;
Packit Service fa4841
Packit Service fa4841
	for (y = 0; y < nHeight; y++)
Packit Service fa4841
	{
Packit Service fa4841
		pDstPixel = (UINT32*)&pDstData[((nYDst + y) * nDstStep) + (nXDst * 4)];
Packit Service fa4841
		test_image_memset32(pDstPixel, color, nWidth);
Packit Service fa4841
	}
Packit Service fa4841
Packit Service fa4841
	return 1;
Packit Service fa4841
}
Packit Service fa4841
Packit Service fa4841
static int test_image_fill_quarter(BYTE* pDstData, int nDstStep, int nWidth, int nHeight,
Packit Service fa4841
                                   UINT32 color, int quarter)
Packit Service fa4841
{
Packit Service fa4841
	int x = 0;
Packit Service fa4841
	int y = 0;
Packit Service fa4841
	int width = 0;
Packit Service fa4841
	int height = 0;
Packit Service fa4841
Packit Service fa4841
	switch (quarter)
Packit Service fa4841
	{
Packit Service fa4841
		case 0:
Packit Service fa4841
			x = 0;
Packit Service fa4841
			y = 0;
Packit Service fa4841
			width = nWidth / 2;
Packit Service fa4841
			height = nHeight / 2;
Packit Service fa4841
			break;
Packit Service fa4841
Packit Service fa4841
		case 1:
Packit Service fa4841
			x = nWidth / 2;
Packit Service fa4841
			y = nHeight / 2;
Packit Service fa4841
			width = nWidth / 2;
Packit Service fa4841
			height = nHeight / 2;
Packit Service fa4841
			break;
Packit Service fa4841
Packit Service fa4841
		case 2:
Packit Service fa4841
			x = 0;
Packit Service fa4841
			y = nHeight / 2;
Packit Service fa4841
			width = nWidth / 2;
Packit Service fa4841
			height = nHeight / 2;
Packit Service fa4841
			break;
Packit Service fa4841
Packit Service fa4841
		case 3:
Packit Service fa4841
			x = nWidth / 2;
Packit Service fa4841
			y = 0;
Packit Service fa4841
			width = nWidth / 2;
Packit Service fa4841
			height = nHeight / 2;
Packit Service fa4841
			break;
Packit Service fa4841
	}
Packit Service fa4841
Packit Service fa4841
	test_image_fill(pDstData, nDstStep, x, y, width, height, 0xFF000000);
Packit Service fa4841
	return 1;
Packit Service fa4841
}
Packit Service fa4841
Packit Service fa4841
static int test_image_fill_unused_quarters(BYTE* pDstData, int nDstStep, int nWidth, int nHeight,
Packit Service fa4841
                                           UINT32 color, int quarter)
Packit Service fa4841
{
Packit Service fa4841
	return 1;
Packit Service fa4841
Packit Service fa4841
	if (quarter == 0)
Packit Service fa4841
	{
Packit Service fa4841
		test_image_fill_quarter(pDstData, nDstStep, nWidth, nHeight, color, 1);
Packit Service fa4841
		test_image_fill_quarter(pDstData, nDstStep, nWidth, nHeight, color, 2);
Packit Service fa4841
		test_image_fill_quarter(pDstData, nDstStep, nWidth, nHeight, color, 3);
Packit Service fa4841
	}
Packit Service fa4841
	else if (quarter == 1)
Packit Service fa4841
	{
Packit Service fa4841
		test_image_fill_quarter(pDstData, nDstStep, nWidth, nHeight, color, 0);
Packit Service fa4841
		test_image_fill_quarter(pDstData, nDstStep, nWidth, nHeight, color, 2);
Packit Service fa4841
		test_image_fill_quarter(pDstData, nDstStep, nWidth, nHeight, color, 3);
Packit Service fa4841
	}
Packit Service fa4841
	else if (quarter == 2)
Packit Service fa4841
	{
Packit Service fa4841
		test_image_fill_quarter(pDstData, nDstStep, nWidth, nHeight, color, 0);
Packit Service fa4841
		test_image_fill_quarter(pDstData, nDstStep, nWidth, nHeight, color, 1);
Packit Service fa4841
		test_image_fill_quarter(pDstData, nDstStep, nWidth, nHeight, color, 3);
Packit Service fa4841
	}
Packit Service fa4841
	else if (quarter == 3)
Packit Service fa4841
	{
Packit Service fa4841
		test_image_fill_quarter(pDstData, nDstStep, nWidth, nHeight, color, 0);
Packit Service fa4841
		test_image_fill_quarter(pDstData, nDstStep, nWidth, nHeight, color, 1);
Packit Service fa4841
		test_image_fill_quarter(pDstData, nDstStep, nWidth, nHeight, color, 2);
Packit Service fa4841
	}
Packit Service fa4841
Packit Service fa4841
	return 1;
Packit Service fa4841
}
Packit Service fa4841
Packit Service fa4841
static BYTE* test_progressive_load_file(char* path, char* file, size_t* size)
Packit Service fa4841
{
Packit Service fa4841
	FILE* fp;
Packit Service fa4841
	BYTE* buffer;
Packit Service fa4841
	char* filename;
Packit Service fa4841
	filename = GetCombinedPath(path, file);
Packit Service fa4841
Packit Service fa4841
	if (!filename)
Packit Service fa4841
		return NULL;
Packit Service fa4841
Packit Service fa4841
	fp = fopen(filename, "r");
Packit Service fa4841
	free(filename);
Packit Service fa4841
Packit Service fa4841
	if (!fp)
Packit Service fa4841
		return NULL;
Packit Service fa4841
Packit Service fa4841
	_fseeki64(fp, 0, SEEK_END);
Packit Service fa4841
	*size = _ftelli64(fp);
Packit Service fa4841
	_fseeki64(fp, 0, SEEK_SET);
Packit Service fa4841
	buffer = (BYTE*)malloc(*size);
Packit Service fa4841
Packit Service fa4841
	if (!buffer)
Packit Service fa4841
	{
Packit Service fa4841
		fclose(fp);
Packit Service fa4841
		return NULL;
Packit Service fa4841
	}
Packit Service fa4841
Packit Service fa4841
	if (fread(buffer, *size, 1, fp) != 1)
Packit Service fa4841
	{
Packit Service fa4841
		free(buffer);
Packit Service fa4841
		fclose(fp);
Packit Service fa4841
		return NULL;
Packit Service fa4841
	}
Packit Service fa4841
Packit Service fa4841
	fclose(fp);
Packit Service fa4841
	return buffer;
Packit Service fa4841
}
Packit Service fa4841
Packit Service fa4841
static int test_progressive_load_files(char* ms_sample_path, EGFX_SAMPLE_FILE files[3][4][4])
Packit Service fa4841
{
Packit Service fa4841
	int imageNo = 0;
Packit Service fa4841
	int quarterNo = 0;
Packit Service fa4841
	int passNo = 0;
Packit Service fa4841
	/* image 1 */
Packit Service fa4841
	files[imageNo][quarterNo][passNo].buffer =
Packit Service fa4841
	    test_progressive_load_file(ms_sample_path, "compress/enc_0_0_025_sampleimage1.bin",
Packit Service fa4841
	                               &(files[imageNo][quarterNo][passNo].size));
Packit Service fa4841
	passNo = (passNo + 1) % 4;
Packit Service fa4841
	files[imageNo][quarterNo][passNo].buffer =
Packit Service fa4841
	    test_progressive_load_file(ms_sample_path, "compress/enc_0_0_050_sampleimage1.bin",
Packit Service fa4841
	                               &(files[imageNo][quarterNo][passNo].size));
Packit Service fa4841
	passNo = (passNo + 1) % 4;
Packit Service fa4841
	files[imageNo][quarterNo][passNo].buffer =
Packit Service fa4841
	    test_progressive_load_file(ms_sample_path, "compress/enc_0_0_075_sampleimage1.bin",
Packit Service fa4841
	                               &(files[imageNo][quarterNo][passNo].size));
Packit Service fa4841
	passNo = (passNo + 1) % 4;
Packit Service fa4841
	files[imageNo][quarterNo][passNo].buffer =
Packit Service fa4841
	    test_progressive_load_file(ms_sample_path, "compress/enc_0_0_100_sampleimage1.bin",
Packit Service fa4841
	                               &(files[imageNo][quarterNo][passNo].size));
Packit Service fa4841
	passNo = (passNo + 1) % 4;
Packit Service fa4841
	quarterNo = (quarterNo + 1) % 4;
Packit Service fa4841
	files[imageNo][quarterNo][passNo].buffer =
Packit Service fa4841
	    test_progressive_load_file(ms_sample_path, "compress/enc_0_1_025_sampleimage1.bin",
Packit Service fa4841
	                               &(files[imageNo][quarterNo][passNo].size));
Packit Service fa4841
	passNo = (passNo + 1) % 4;
Packit Service fa4841
	files[imageNo][quarterNo][passNo].buffer =
Packit Service fa4841
	    test_progressive_load_file(ms_sample_path, "compress/enc_0_1_050_sampleimage1.bin",
Packit Service fa4841
	                               &(files[imageNo][quarterNo][passNo].size));
Packit Service fa4841
	passNo = (passNo + 1) % 4;
Packit Service fa4841
	files[imageNo][quarterNo][passNo].buffer =
Packit Service fa4841
	    test_progressive_load_file(ms_sample_path, "compress/enc_0_1_075_sampleimage1.bin",
Packit Service fa4841
	                               &(files[imageNo][quarterNo][passNo].size));
Packit Service fa4841
	passNo = (passNo + 1) % 4;
Packit Service fa4841
	files[imageNo][quarterNo][passNo].buffer =
Packit Service fa4841
	    test_progressive_load_file(ms_sample_path, "compress/enc_0_1_100_sampleimage1.bin",
Packit Service fa4841
	                               &(files[imageNo][quarterNo][passNo].size));
Packit Service fa4841
	passNo = (passNo + 1) % 4;
Packit Service fa4841
	quarterNo = (quarterNo + 1) % 4;
Packit Service fa4841
	files[imageNo][quarterNo][passNo].buffer =
Packit Service fa4841
	    test_progressive_load_file(ms_sample_path, "compress/enc_0_2_025_sampleimage1.bin",
Packit Service fa4841
	                               &(files[imageNo][quarterNo][passNo].size));
Packit Service fa4841
	passNo = (passNo + 1) % 4;
Packit Service fa4841
	files[imageNo][quarterNo][passNo].buffer =
Packit Service fa4841
	    test_progressive_load_file(ms_sample_path, "compress/enc_0_2_050_sampleimage1.bin",
Packit Service fa4841
	                               &(files[imageNo][quarterNo][passNo].size));
Packit Service fa4841
	passNo = (passNo + 1) % 4;
Packit Service fa4841
	files[imageNo][quarterNo][passNo].buffer =
Packit Service fa4841
	    test_progressive_load_file(ms_sample_path, "compress/enc_0_2_075_sampleimage1.bin",
Packit Service fa4841
	                               &(files[imageNo][quarterNo][passNo].size));
Packit Service fa4841
	passNo = (passNo + 1) % 4;
Packit Service fa4841
	files[imageNo][quarterNo][passNo].buffer =
Packit Service fa4841
	    test_progressive_load_file(ms_sample_path, "compress/enc_0_2_100_sampleimage1.bin",
Packit Service fa4841
	                               &(files[imageNo][quarterNo][passNo].size));
Packit Service fa4841
	passNo = (passNo + 1) % 4;
Packit Service fa4841
	quarterNo = (quarterNo + 1) % 4;
Packit Service fa4841
	files[imageNo][quarterNo][passNo].buffer =
Packit Service fa4841
	    test_progressive_load_file(ms_sample_path, "compress/enc_0_3_025_sampleimage1.bin",
Packit Service fa4841
	                               &(files[imageNo][quarterNo][passNo].size));
Packit Service fa4841
	passNo = (passNo + 1) % 4;
Packit Service fa4841
	files[imageNo][quarterNo][passNo].buffer =
Packit Service fa4841
	    test_progressive_load_file(ms_sample_path, "compress/enc_0_3_050_sampleimage1.bin",
Packit Service fa4841
	                               &(files[imageNo][quarterNo][passNo].size));
Packit Service fa4841
	passNo = (passNo + 1) % 4;
Packit Service fa4841
	files[imageNo][quarterNo][passNo].buffer =
Packit Service fa4841
	    test_progressive_load_file(ms_sample_path, "compress/enc_0_3_075_sampleimage1.bin",
Packit Service fa4841
	                               &(files[imageNo][quarterNo][passNo].size));
Packit Service fa4841
	passNo = (passNo + 1) % 4;
Packit Service fa4841
	files[imageNo][quarterNo][passNo].buffer =
Packit Service fa4841
	    test_progressive_load_file(ms_sample_path, "compress/enc_0_3_100_sampleimage1.bin",
Packit Service fa4841
	                               &(files[imageNo][quarterNo][passNo].size));
Packit Service fa4841
	passNo = (passNo + 1) % 4;
Packit Service fa4841
	imageNo++;
Packit Service fa4841
	/* image 2 */
Packit Service fa4841
	files[imageNo][quarterNo][passNo].buffer =
Packit Service fa4841
	    test_progressive_load_file(ms_sample_path, "compress/enc_1_0_025_sampleimage2.bin",
Packit Service fa4841
	                               &(files[imageNo][quarterNo][passNo].size));
Packit Service fa4841
	passNo = (passNo + 1) % 4;
Packit Service fa4841
	files[imageNo][quarterNo][passNo].buffer =
Packit Service fa4841
	    test_progressive_load_file(ms_sample_path, "compress/enc_1_0_050_sampleimage2.bin",
Packit Service fa4841
	                               &(files[imageNo][quarterNo][passNo].size));
Packit Service fa4841
	passNo = (passNo + 1) % 4;
Packit Service fa4841
	files[imageNo][quarterNo][passNo].buffer =
Packit Service fa4841
	    test_progressive_load_file(ms_sample_path, "compress/enc_1_0_075_sampleimage2.bin",
Packit Service fa4841
	                               &(files[imageNo][quarterNo][passNo].size));
Packit Service fa4841
	passNo = (passNo + 1) % 4;
Packit Service fa4841
	files[imageNo][quarterNo][passNo].buffer =
Packit Service fa4841
	    test_progressive_load_file(ms_sample_path, "compress/enc_1_0_100_sampleimage2.bin",
Packit Service fa4841
	                               &(files[imageNo][quarterNo][passNo].size));
Packit Service fa4841
	passNo = (passNo + 1) % 4;
Packit Service fa4841
	quarterNo = (quarterNo + 1) % 4;
Packit Service fa4841
	files[imageNo][quarterNo][passNo].buffer =
Packit Service fa4841
	    test_progressive_load_file(ms_sample_path, "compress/enc_1_1_025_sampleimage2.bin",
Packit Service fa4841
	                               &(files[imageNo][quarterNo][passNo].size));
Packit Service fa4841
	passNo = (passNo + 1) % 4;
Packit Service fa4841
	files[imageNo][quarterNo][passNo].buffer =
Packit Service fa4841
	    test_progressive_load_file(ms_sample_path, "compress/enc_1_1_050_sampleimage2.bin",
Packit Service fa4841
	                               &(files[imageNo][quarterNo][passNo].size));
Packit Service fa4841
	passNo = (passNo + 1) % 4;
Packit Service fa4841
	files[imageNo][quarterNo][passNo].buffer =
Packit Service fa4841
	    test_progressive_load_file(ms_sample_path, "compress/enc_1_1_075_sampleimage2.bin",
Packit Service fa4841
	                               &(files[imageNo][quarterNo][passNo].size));
Packit Service fa4841
	passNo = (passNo + 1) % 4;
Packit Service fa4841
	files[imageNo][quarterNo][passNo].buffer =
Packit Service fa4841
	    test_progressive_load_file(ms_sample_path, "compress/enc_1_1_100_sampleimage2.bin",
Packit Service fa4841
	                               &(files[imageNo][quarterNo][passNo].size));
Packit Service fa4841
	passNo = (passNo + 1) % 4;
Packit Service fa4841
	quarterNo = (quarterNo + 1) % 4;
Packit Service fa4841
	files[imageNo][quarterNo][passNo].buffer =
Packit Service fa4841
	    test_progressive_load_file(ms_sample_path, "compress/enc_1_2_025_sampleimage2.bin",
Packit Service fa4841
	                               &(files[imageNo][quarterNo][passNo].size));
Packit Service fa4841
	passNo = (passNo + 1) % 4;
Packit Service fa4841
	files[imageNo][quarterNo][passNo].buffer =
Packit Service fa4841
	    test_progressive_load_file(ms_sample_path, "compress/enc_1_2_050_sampleimage2.bin",
Packit Service fa4841
	                               &(files[imageNo][quarterNo][passNo].size));
Packit Service fa4841
	passNo = (passNo + 1) % 4;
Packit Service fa4841
	files[imageNo][quarterNo][passNo].buffer =
Packit Service fa4841
	    test_progressive_load_file(ms_sample_path, "compress/enc_1_2_075_sampleimage2.bin",
Packit Service fa4841
	                               &(files[imageNo][quarterNo][passNo].size));
Packit Service fa4841
	passNo = (passNo + 1) % 4;
Packit Service fa4841
	files[imageNo][quarterNo][passNo].buffer =
Packit Service fa4841
	    test_progressive_load_file(ms_sample_path, "compress/enc_1_2_100_sampleimage2.bin",
Packit Service fa4841
	                               &(files[imageNo][quarterNo][passNo].size));
Packit Service fa4841
	passNo = (passNo + 1) % 4;
Packit Service fa4841
	quarterNo = (quarterNo + 1) % 4;
Packit Service fa4841
	files[imageNo][quarterNo][passNo].buffer =
Packit Service fa4841
	    test_progressive_load_file(ms_sample_path, "compress/enc_1_3_025_sampleimage2.bin",
Packit Service fa4841
	                               &(files[imageNo][quarterNo][passNo].size));
Packit Service fa4841
	passNo = (passNo + 1) % 4;
Packit Service fa4841
	files[imageNo][quarterNo][passNo].buffer =
Packit Service fa4841
	    test_progressive_load_file(ms_sample_path, "compress/enc_1_3_050_sampleimage2.bin",
Packit Service fa4841
	                               &(files[imageNo][quarterNo][passNo].size));
Packit Service fa4841
	passNo = (passNo + 1) % 4;
Packit Service fa4841
	files[imageNo][quarterNo][passNo].buffer =
Packit Service fa4841
	    test_progressive_load_file(ms_sample_path, "compress/enc_1_3_075_sampleimage2.bin",
Packit Service fa4841
	                               &(files[imageNo][quarterNo][passNo].size));
Packit Service fa4841
	passNo = (passNo + 1) % 4;
Packit Service fa4841
	files[imageNo][quarterNo][passNo].buffer =
Packit Service fa4841
	    test_progressive_load_file(ms_sample_path, "compress/enc_1_3_100_sampleimage2.bin",
Packit Service fa4841
	                               &(files[imageNo][quarterNo][passNo].size));
Packit Service fa4841
	passNo = (passNo + 1) % 4;
Packit Service fa4841
	imageNo++;
Packit Service fa4841
	/* image 3 */
Packit Service fa4841
	files[imageNo][quarterNo][passNo].buffer =
Packit Service fa4841
	    test_progressive_load_file(ms_sample_path, "compress/enc_2_0_025_sampleimage3.bin",
Packit Service fa4841
	                               &(files[imageNo][quarterNo][passNo].size));
Packit Service fa4841
	passNo = (passNo + 1) % 4;
Packit Service fa4841
	files[imageNo][quarterNo][passNo].buffer =
Packit Service fa4841
	    test_progressive_load_file(ms_sample_path, "compress/enc_2_0_050_sampleimage3.bin",
Packit Service fa4841
	                               &(files[imageNo][quarterNo][passNo].size));
Packit Service fa4841
	passNo = (passNo + 1) % 4;
Packit Service fa4841
	files[imageNo][quarterNo][passNo].buffer =
Packit Service fa4841
	    test_progressive_load_file(ms_sample_path, "compress/enc_2_0_075_sampleimage3.bin",
Packit Service fa4841
	                               &(files[imageNo][quarterNo][passNo].size));
Packit Service fa4841
	passNo = (passNo + 1) % 4;
Packit Service fa4841
	files[imageNo][quarterNo][passNo].buffer =
Packit Service fa4841
	    test_progressive_load_file(ms_sample_path, "compress/enc_2_0_100_sampleimage3.bin",
Packit Service fa4841
	                               &(files[imageNo][quarterNo][passNo].size));
Packit Service fa4841
	passNo = (passNo + 1) % 4;
Packit Service fa4841
	quarterNo = (quarterNo + 1) % 4;
Packit Service fa4841
	files[imageNo][quarterNo][passNo].buffer =
Packit Service fa4841
	    test_progressive_load_file(ms_sample_path, "compress/enc_2_1_025_sampleimage3.bin",
Packit Service fa4841
	                               &(files[imageNo][quarterNo][passNo].size));
Packit Service fa4841
	passNo = (passNo + 1) % 4;
Packit Service fa4841
	files[imageNo][quarterNo][passNo].buffer =
Packit Service fa4841
	    test_progressive_load_file(ms_sample_path, "compress/enc_2_1_050_sampleimage3.bin",
Packit Service fa4841
	                               &(files[imageNo][quarterNo][passNo].size));
Packit Service fa4841
	passNo = (passNo + 1) % 4;
Packit Service fa4841
	files[imageNo][quarterNo][passNo].buffer =
Packit Service fa4841
	    test_progressive_load_file(ms_sample_path, "compress/enc_2_1_075_sampleimage3.bin",
Packit Service fa4841
	                               &(files[imageNo][quarterNo][passNo].size));
Packit Service fa4841
	passNo = (passNo + 1) % 4;
Packit Service fa4841
	files[imageNo][quarterNo][passNo].buffer =
Packit Service fa4841
	    test_progressive_load_file(ms_sample_path, "compress/enc_2_1_100_sampleimage3.bin",
Packit Service fa4841
	                               &(files[imageNo][quarterNo][passNo].size));
Packit Service fa4841
	passNo = (passNo + 1) % 4;
Packit Service fa4841
	quarterNo = (quarterNo + 1) % 4;
Packit Service fa4841
	files[imageNo][quarterNo][passNo].buffer =
Packit Service fa4841
	    test_progressive_load_file(ms_sample_path, "compress/enc_2_2_025_sampleimage3.bin",
Packit Service fa4841
	                               &(files[imageNo][quarterNo][passNo].size));
Packit Service fa4841
	passNo = (passNo + 1) % 4;
Packit Service fa4841
	files[imageNo][quarterNo][passNo].buffer =
Packit Service fa4841
	    test_progressive_load_file(ms_sample_path, "compress/enc_2_2_050_sampleimage3.bin",
Packit Service fa4841
	                               &(files[imageNo][quarterNo][passNo].size));
Packit Service fa4841
	passNo = (passNo + 1) % 4;
Packit Service fa4841
	files[imageNo][quarterNo][passNo].buffer =
Packit Service fa4841
	    test_progressive_load_file(ms_sample_path, "compress/enc_2_2_075_sampleimage3.bin",
Packit Service fa4841
	                               &(files[imageNo][quarterNo][passNo].size));
Packit Service fa4841
	passNo = (passNo + 1) % 4;
Packit Service fa4841
	files[imageNo][quarterNo][passNo].buffer =
Packit Service fa4841
	    test_progressive_load_file(ms_sample_path, "compress/enc_2_2_100_sampleimage3.bin",
Packit Service fa4841
	                               &(files[imageNo][quarterNo][passNo].size));
Packit Service fa4841
	passNo = (passNo + 1) % 4;
Packit Service fa4841
	quarterNo = (quarterNo + 1) % 4;
Packit Service fa4841
	files[imageNo][quarterNo][passNo].buffer =
Packit Service fa4841
	    test_progressive_load_file(ms_sample_path, "compress/enc_2_3_025_sampleimage3.bin",
Packit Service fa4841
	                               &(files[imageNo][quarterNo][passNo].size));
Packit Service fa4841
	passNo = (passNo + 1) % 4;
Packit Service fa4841
	files[imageNo][quarterNo][passNo].buffer =
Packit Service fa4841
	    test_progressive_load_file(ms_sample_path, "compress/enc_2_3_050_sampleimage3.bin",
Packit Service fa4841
	                               &(files[imageNo][quarterNo][passNo].size));
Packit Service fa4841
	passNo = (passNo + 1) % 4;
Packit Service fa4841
	files[imageNo][quarterNo][passNo].buffer =
Packit Service fa4841
	    test_progressive_load_file(ms_sample_path, "compress/enc_2_3_075_sampleimage3.bin",
Packit Service fa4841
	                               &(files[imageNo][quarterNo][passNo].size));
Packit Service fa4841
	passNo = (passNo + 1) % 4;
Packit Service fa4841
	files[imageNo][quarterNo][passNo].buffer =
Packit Service fa4841
	    test_progressive_load_file(ms_sample_path, "compress/enc_2_3_100_sampleimage3.bin",
Packit Service fa4841
	                               &(files[imageNo][quarterNo][passNo].size));
Packit Service fa4841
Packit Service fa4841
	/* check if all test data has been loaded */
Packit Service fa4841
Packit Service fa4841
	for (imageNo = 0; imageNo < 3; imageNo++)
Packit Service fa4841
	{
Packit Service fa4841
		for (quarterNo = 0; quarterNo < 4; quarterNo++)
Packit Service fa4841
		{
Packit Service fa4841
			for (passNo = 0; passNo < 4; passNo++)
Packit Service fa4841
			{
Packit Service fa4841
				if (!files[imageNo][quarterNo][passNo].buffer)
Packit Service fa4841
					return -1;
Packit Service fa4841
			}
Packit Service fa4841
		}
Packit Service fa4841
	}
Packit Service fa4841
Packit Service fa4841
	return 1;
Packit Service fa4841
}
Packit Service fa4841
Packit Service fa4841
static BYTE* test_progressive_load_bitmap(char* path, char* file, size_t* size, int quarter)
Packit Service fa4841
{
Packit Service fa4841
	int status;
Packit Service fa4841
	BYTE* buffer;
Packit Service fa4841
	wImage* image;
Packit Service fa4841
	char* filename;
Packit Service fa4841
	filename = GetCombinedPath(path, file);
Packit Service fa4841
Packit Service fa4841
	if (!filename)
Packit Service fa4841
		return NULL;
Packit Service fa4841
Packit Service fa4841
	image = winpr_image_new();
Packit Service fa4841
Packit Service fa4841
	if (!image)
Packit Service fa4841
		return NULL;
Packit Service fa4841
Packit Service fa4841
	status = winpr_image_read(image, filename);
Packit Service fa4841
Packit Service fa4841
	if (status < 0)
Packit Service fa4841
		return NULL;
Packit Service fa4841
Packit Service fa4841
	buffer = image->data;
Packit Service fa4841
	*size = image->height * image->scanline;
Packit Service fa4841
	test_fill_image_alpha_channel(image->data, image->width, image->height, 0xFF);
Packit Service fa4841
	test_image_fill_unused_quarters(image->data, image->scanline, image->width, image->height,
Packit Service fa4841
	                                quarter, 0xFF000000);
Packit Service fa4841
	winpr_image_free(image, FALSE);
Packit Service fa4841
	free(filename);
Packit Service fa4841
	return buffer;
Packit Service fa4841
}
Packit Service fa4841
Packit Service fa4841
static int test_progressive_load_bitmaps(char* ms_sample_path, EGFX_SAMPLE_FILE bitmaps[3][4][4])
Packit Service fa4841
{
Packit Service fa4841
	int imageNo = 0;
Packit Service fa4841
	int quarterNo = 0;
Packit Service fa4841
	int passNo = 0;
Packit Service fa4841
	/* image 1 */
Packit Service fa4841
	bitmaps[imageNo][quarterNo][passNo].buffer =
Packit Service fa4841
	    test_progressive_load_bitmap(ms_sample_path, "decompress/dec_0_0_025_sampleimage1.bmp",
Packit Service fa4841
	                                 &(bitmaps[imageNo][quarterNo][passNo].size), quarterNo);
Packit Service fa4841
	passNo = (passNo + 1) % 4;
Packit Service fa4841
	bitmaps[imageNo][quarterNo][passNo].buffer =
Packit Service fa4841
	    test_progressive_load_bitmap(ms_sample_path, "decompress/dec_0_0_050_sampleimage1.bmp",
Packit Service fa4841
	                                 &(bitmaps[imageNo][quarterNo][passNo].size), quarterNo);
Packit Service fa4841
	passNo = (passNo + 1) % 4;
Packit Service fa4841
	bitmaps[imageNo][quarterNo][passNo].buffer =
Packit Service fa4841
	    test_progressive_load_bitmap(ms_sample_path, "decompress/dec_0_0_075_sampleimage1.bmp",
Packit Service fa4841
	                                 &(bitmaps[imageNo][quarterNo][passNo].size), quarterNo);
Packit Service fa4841
	passNo = (passNo + 1) % 4;
Packit Service fa4841
	bitmaps[imageNo][quarterNo][passNo].buffer =
Packit Service fa4841
	    test_progressive_load_bitmap(ms_sample_path, "decompress/dec_0_0_100_sampleimage1.bmp",
Packit Service fa4841
	                                 &(bitmaps[imageNo][quarterNo][passNo].size), quarterNo);
Packit Service fa4841
	passNo = (passNo + 1) % 4;
Packit Service fa4841
	quarterNo = (quarterNo + 1) % 4;
Packit Service fa4841
	bitmaps[imageNo][quarterNo][passNo].buffer =
Packit Service fa4841
	    test_progressive_load_bitmap(ms_sample_path, "decompress/dec_0_1_025_sampleimage1.bmp",
Packit Service fa4841
	                                 &(bitmaps[imageNo][quarterNo][passNo].size), quarterNo);
Packit Service fa4841
	passNo = (passNo + 1) % 4;
Packit Service fa4841
	bitmaps[imageNo][quarterNo][passNo].buffer =
Packit Service fa4841
	    test_progressive_load_bitmap(ms_sample_path, "decompress/dec_0_1_050_sampleimage1.bmp",
Packit Service fa4841
	                                 &(bitmaps[imageNo][quarterNo][passNo].size), quarterNo);
Packit Service fa4841
	passNo = (passNo + 1) % 4;
Packit Service fa4841
	bitmaps[imageNo][quarterNo][passNo].buffer =
Packit Service fa4841
	    test_progressive_load_bitmap(ms_sample_path, "decompress/dec_0_1_075_sampleimage1.bmp",
Packit Service fa4841
	                                 &(bitmaps[imageNo][quarterNo][passNo].size), quarterNo);
Packit Service fa4841
	passNo = (passNo + 1) % 4;
Packit Service fa4841
	bitmaps[imageNo][quarterNo][passNo].buffer =
Packit Service fa4841
	    test_progressive_load_bitmap(ms_sample_path, "decompress/dec_0_1_100_sampleimage1.bmp",
Packit Service fa4841
	                                 &(bitmaps[imageNo][quarterNo][passNo].size), quarterNo);
Packit Service fa4841
	passNo = (passNo + 1) % 4;
Packit Service fa4841
	quarterNo = (quarterNo + 1) % 4;
Packit Service fa4841
	bitmaps[imageNo][quarterNo][passNo].buffer =
Packit Service fa4841
	    test_progressive_load_bitmap(ms_sample_path, "decompress/dec_0_2_025_sampleimage1.bmp",
Packit Service fa4841
	                                 &(bitmaps[imageNo][quarterNo][passNo].size), quarterNo);
Packit Service fa4841
	passNo = (passNo + 1) % 4;
Packit Service fa4841
	bitmaps[imageNo][quarterNo][passNo].buffer =
Packit Service fa4841
	    test_progressive_load_bitmap(ms_sample_path, "decompress/dec_0_2_050_sampleimage1.bmp",
Packit Service fa4841
	                                 &(bitmaps[imageNo][quarterNo][passNo].size), quarterNo);
Packit Service fa4841
	passNo = (passNo + 1) % 4;
Packit Service fa4841
	bitmaps[imageNo][quarterNo][passNo].buffer =
Packit Service fa4841
	    test_progressive_load_bitmap(ms_sample_path, "decompress/dec_0_2_075_sampleimage1.bmp",
Packit Service fa4841
	                                 &(bitmaps[imageNo][quarterNo][passNo].size), quarterNo);
Packit Service fa4841
	passNo = (passNo + 1) % 4;
Packit Service fa4841
	bitmaps[imageNo][quarterNo][passNo].buffer =
Packit Service fa4841
	    test_progressive_load_bitmap(ms_sample_path, "decompress/dec_0_2_100_sampleimage1.bmp",
Packit Service fa4841
	                                 &(bitmaps[imageNo][quarterNo][passNo].size), quarterNo);
Packit Service fa4841
	passNo = (passNo + 1) % 4;
Packit Service fa4841
	quarterNo = (quarterNo + 1) % 4;
Packit Service fa4841
	bitmaps[imageNo][quarterNo][passNo].buffer =
Packit Service fa4841
	    test_progressive_load_bitmap(ms_sample_path, "decompress/dec_0_3_025_sampleimage1.bmp",
Packit Service fa4841
	                                 &(bitmaps[imageNo][quarterNo][passNo].size), quarterNo);
Packit Service fa4841
	passNo = (passNo + 1) % 4;
Packit Service fa4841
	bitmaps[imageNo][quarterNo][passNo].buffer =
Packit Service fa4841
	    test_progressive_load_bitmap(ms_sample_path, "decompress/dec_0_3_050_sampleimage1.bmp",
Packit Service fa4841
	                                 &(bitmaps[imageNo][quarterNo][passNo].size), quarterNo);
Packit Service fa4841
	passNo = (passNo + 1) % 4;
Packit Service fa4841
	bitmaps[imageNo][quarterNo][passNo].buffer =
Packit Service fa4841
	    test_progressive_load_bitmap(ms_sample_path, "decompress/dec_0_3_075_sampleimage1.bmp",
Packit Service fa4841
	                                 &(bitmaps[imageNo][quarterNo][passNo].size), quarterNo);
Packit Service fa4841
	passNo = (passNo + 1) % 4;
Packit Service fa4841
	bitmaps[imageNo][quarterNo][passNo].buffer =
Packit Service fa4841
	    test_progressive_load_bitmap(ms_sample_path, "decompress/dec_0_3_100_sampleimage1.bmp",
Packit Service fa4841
	                                 &(bitmaps[imageNo][quarterNo][passNo].size), quarterNo);
Packit Service fa4841
	passNo = (passNo + 1) % 4;
Packit Service fa4841
	imageNo++;
Packit Service fa4841
	/* image 2 */
Packit Service fa4841
	bitmaps[imageNo][quarterNo][passNo].buffer =
Packit Service fa4841
	    test_progressive_load_bitmap(ms_sample_path, "decompress/dec_1_0_025_sampleimage2.bmp",
Packit Service fa4841
	                                 &(bitmaps[imageNo][quarterNo][passNo].size), quarterNo);
Packit Service fa4841
	passNo = (passNo + 1) % 4;
Packit Service fa4841
	bitmaps[imageNo][quarterNo][passNo].buffer =
Packit Service fa4841
	    test_progressive_load_bitmap(ms_sample_path, "decompress/dec_1_0_050_sampleimage2.bmp",
Packit Service fa4841
	                                 &(bitmaps[imageNo][quarterNo][passNo].size), quarterNo);
Packit Service fa4841
	passNo = (passNo + 1) % 4;
Packit Service fa4841
	bitmaps[imageNo][quarterNo][passNo].buffer =
Packit Service fa4841
	    test_progressive_load_bitmap(ms_sample_path, "decompress/dec_1_0_075_sampleimage2.bmp",
Packit Service fa4841
	                                 &(bitmaps[imageNo][quarterNo][passNo].size), quarterNo);
Packit Service fa4841
	passNo = (passNo + 1) % 4;
Packit Service fa4841
	bitmaps[imageNo][quarterNo][passNo].buffer =
Packit Service fa4841
	    test_progressive_load_bitmap(ms_sample_path, "decompress/dec_1_0_100_sampleimage2.bmp",
Packit Service fa4841
	                                 &(bitmaps[imageNo][quarterNo][passNo].size), quarterNo);
Packit Service fa4841
	passNo = (passNo + 1) % 4;
Packit Service fa4841
	quarterNo = (quarterNo + 1) % 4;
Packit Service fa4841
	bitmaps[imageNo][quarterNo][passNo].buffer =
Packit Service fa4841
	    test_progressive_load_bitmap(ms_sample_path, "decompress/dec_1_1_025_sampleimage2.bmp",
Packit Service fa4841
	                                 &(bitmaps[imageNo][quarterNo][passNo].size), quarterNo);
Packit Service fa4841
	passNo = (passNo + 1) % 4;
Packit Service fa4841
	bitmaps[imageNo][quarterNo][passNo].buffer =
Packit Service fa4841
	    test_progressive_load_bitmap(ms_sample_path, "decompress/dec_1_1_050_sampleimage2.bmp",
Packit Service fa4841
	                                 &(bitmaps[imageNo][quarterNo][passNo].size), quarterNo);
Packit Service fa4841
	passNo = (passNo + 1) % 4;
Packit Service fa4841
	bitmaps[imageNo][quarterNo][passNo].buffer =
Packit Service fa4841
	    test_progressive_load_bitmap(ms_sample_path, "decompress/dec_1_1_075_sampleimage2.bmp",
Packit Service fa4841
	                                 &(bitmaps[imageNo][quarterNo][passNo].size), quarterNo);
Packit Service fa4841
	passNo = (passNo + 1) % 4;
Packit Service fa4841
	bitmaps[imageNo][quarterNo][passNo].buffer =
Packit Service fa4841
	    test_progressive_load_bitmap(ms_sample_path, "decompress/dec_1_1_100_sampleimage2.bmp",
Packit Service fa4841
	                                 &(bitmaps[imageNo][quarterNo][passNo].size), quarterNo);
Packit Service fa4841
	passNo = (passNo + 1) % 4;
Packit Service fa4841
	quarterNo = (quarterNo + 1) % 4;
Packit Service fa4841
	bitmaps[imageNo][quarterNo][passNo].buffer =
Packit Service fa4841
	    test_progressive_load_bitmap(ms_sample_path, "decompress/dec_1_2_025_sampleimage2.bmp",
Packit Service fa4841
	                                 &(bitmaps[imageNo][quarterNo][passNo].size), quarterNo);
Packit Service fa4841
	passNo = (passNo + 1) % 4;
Packit Service fa4841
	bitmaps[imageNo][quarterNo][passNo].buffer =
Packit Service fa4841
	    test_progressive_load_bitmap(ms_sample_path, "decompress/dec_1_2_050_sampleimage2.bmp",
Packit Service fa4841
	                                 &(bitmaps[imageNo][quarterNo][passNo].size), quarterNo);
Packit Service fa4841
	passNo = (passNo + 1) % 4;
Packit Service fa4841
	bitmaps[imageNo][quarterNo][passNo].buffer =
Packit Service fa4841
	    test_progressive_load_bitmap(ms_sample_path, "decompress/dec_1_2_075_sampleimage2.bmp",
Packit Service fa4841
	                                 &(bitmaps[imageNo][quarterNo][passNo].size), quarterNo);
Packit Service fa4841
	passNo = (passNo + 1) % 4;
Packit Service fa4841
	bitmaps[imageNo][quarterNo][passNo].buffer =
Packit Service fa4841
	    test_progressive_load_bitmap(ms_sample_path, "decompress/dec_1_2_100_sampleimage2.bmp",
Packit Service fa4841
	                                 &(bitmaps[imageNo][quarterNo][passNo].size), quarterNo);
Packit Service fa4841
	passNo = (passNo + 1) % 4;
Packit Service fa4841
	quarterNo = (quarterNo + 1) % 4;
Packit Service fa4841
	bitmaps[imageNo][quarterNo][passNo].buffer =
Packit Service fa4841
	    test_progressive_load_bitmap(ms_sample_path, "decompress/dec_1_3_025_sampleimage2.bmp",
Packit Service fa4841
	                                 &(bitmaps[imageNo][quarterNo][passNo].size), quarterNo);
Packit Service fa4841
	passNo = (passNo + 1) % 4;
Packit Service fa4841
	bitmaps[imageNo][quarterNo][passNo].buffer =
Packit Service fa4841
	    test_progressive_load_bitmap(ms_sample_path, "decompress/dec_1_3_050_sampleimage2.bmp",
Packit Service fa4841
	                                 &(bitmaps[imageNo][quarterNo][passNo].size), quarterNo);
Packit Service fa4841
	passNo = (passNo + 1) % 4;
Packit Service fa4841
	bitmaps[imageNo][quarterNo][passNo].buffer =
Packit Service fa4841
	    test_progressive_load_bitmap(ms_sample_path, "decompress/dec_1_3_075_sampleimage2.bmp",
Packit Service fa4841
	                                 &(bitmaps[imageNo][quarterNo][passNo].size), quarterNo);
Packit Service fa4841
	passNo = (passNo + 1) % 4;
Packit Service fa4841
	bitmaps[imageNo][quarterNo][passNo].buffer =
Packit Service fa4841
	    test_progressive_load_bitmap(ms_sample_path, "decompress/dec_1_3_100_sampleimage2.bmp",
Packit Service fa4841
	                                 &(bitmaps[imageNo][quarterNo][passNo].size), quarterNo);
Packit Service fa4841
	passNo = (passNo + 1) % 4;
Packit Service fa4841
	imageNo++;
Packit Service fa4841
	/* image 3 */
Packit Service fa4841
	bitmaps[imageNo][quarterNo][passNo].buffer =
Packit Service fa4841
	    test_progressive_load_bitmap(ms_sample_path, "decompress/dec_2_0_025_sampleimage3.bmp",
Packit Service fa4841
	                                 &(bitmaps[imageNo][quarterNo][passNo].size), quarterNo);
Packit Service fa4841
	passNo = (passNo + 1) % 4;
Packit Service fa4841
	bitmaps[imageNo][quarterNo][passNo].buffer =
Packit Service fa4841
	    test_progressive_load_bitmap(ms_sample_path, "decompress/dec_2_0_050_sampleimage3.bmp",
Packit Service fa4841
	                                 &(bitmaps[imageNo][quarterNo][passNo].size), quarterNo);
Packit Service fa4841
	passNo = (passNo + 1) % 4;
Packit Service fa4841
	bitmaps[imageNo][quarterNo][passNo].buffer =
Packit Service fa4841
	    test_progressive_load_bitmap(ms_sample_path, "decompress/dec_2_0_075_sampleimage3.bmp",
Packit Service fa4841
	                                 &(bitmaps[imageNo][quarterNo][passNo].size), quarterNo);
Packit Service fa4841
	passNo = (passNo + 1) % 4;
Packit Service fa4841
	bitmaps[imageNo][quarterNo][passNo].buffer =
Packit Service fa4841
	    test_progressive_load_bitmap(ms_sample_path, "decompress/dec_2_0_100_sampleimage3.bmp",
Packit Service fa4841
	                                 &(bitmaps[imageNo][quarterNo][passNo].size), quarterNo);
Packit Service fa4841
	passNo = (passNo + 1) % 4;
Packit Service fa4841
	quarterNo = (quarterNo + 1) % 4;
Packit Service fa4841
	bitmaps[imageNo][quarterNo][passNo].buffer =
Packit Service fa4841
	    test_progressive_load_bitmap(ms_sample_path, "decompress/dec_2_1_025_sampleimage3.bmp",
Packit Service fa4841
	                                 &(bitmaps[imageNo][quarterNo][passNo].size), quarterNo);
Packit Service fa4841
	passNo = (passNo + 1) % 4;
Packit Service fa4841
	bitmaps[imageNo][quarterNo][passNo].buffer =
Packit Service fa4841
	    test_progressive_load_bitmap(ms_sample_path, "decompress/dec_2_1_050_sampleimage3.bmp",
Packit Service fa4841
	                                 &(bitmaps[imageNo][quarterNo][passNo].size), quarterNo);
Packit Service fa4841
	passNo = (passNo + 1) % 4;
Packit Service fa4841
	bitmaps[imageNo][quarterNo][passNo].buffer =
Packit Service fa4841
	    test_progressive_load_bitmap(ms_sample_path, "decompress/dec_2_1_075_sampleimage3.bmp",
Packit Service fa4841
	                                 &(bitmaps[imageNo][quarterNo][passNo].size), quarterNo);
Packit Service fa4841
	passNo = (passNo + 1) % 4;
Packit Service fa4841
	bitmaps[imageNo][quarterNo][passNo].buffer =
Packit Service fa4841
	    test_progressive_load_bitmap(ms_sample_path, "decompress/dec_2_1_100_sampleimage3.bmp",
Packit Service fa4841
	                                 &(bitmaps[imageNo][quarterNo][passNo].size), quarterNo);
Packit Service fa4841
	passNo = (passNo + 1) % 4;
Packit Service fa4841
	quarterNo = (quarterNo + 1) % 4;
Packit Service fa4841
	bitmaps[imageNo][quarterNo][passNo].buffer =
Packit Service fa4841
	    test_progressive_load_bitmap(ms_sample_path, "decompress/dec_2_2_025_sampleimage3.bmp",
Packit Service fa4841
	                                 &(bitmaps[imageNo][quarterNo][passNo].size), quarterNo);
Packit Service fa4841
	passNo = (passNo + 1) % 4;
Packit Service fa4841
	bitmaps[imageNo][quarterNo][passNo].buffer =
Packit Service fa4841
	    test_progressive_load_bitmap(ms_sample_path, "decompress/dec_2_2_050_sampleimage3.bmp",
Packit Service fa4841
	                                 &(bitmaps[imageNo][quarterNo][passNo].size), quarterNo);
Packit Service fa4841
	passNo = (passNo + 1) % 4;
Packit Service fa4841
	bitmaps[imageNo][quarterNo][passNo].buffer =
Packit Service fa4841
	    test_progressive_load_bitmap(ms_sample_path, "decompress/dec_2_2_075_sampleimage3.bmp",
Packit Service fa4841
	                                 &(bitmaps[imageNo][quarterNo][passNo].size), quarterNo);
Packit Service fa4841
	passNo = (passNo + 1) % 4;
Packit Service fa4841
	bitmaps[imageNo][quarterNo][passNo].buffer =
Packit Service fa4841
	    test_progressive_load_bitmap(ms_sample_path, "decompress/dec_2_2_100_sampleimage3.bmp",
Packit Service fa4841
	                                 &(bitmaps[imageNo][quarterNo][passNo].size), quarterNo);
Packit Service fa4841
	passNo = (passNo + 1) % 4;
Packit Service fa4841
	quarterNo = (quarterNo + 1) % 4;
Packit Service fa4841
	bitmaps[imageNo][quarterNo][passNo].buffer =
Packit Service fa4841
	    test_progressive_load_bitmap(ms_sample_path, "decompress/dec_2_3_025_sampleimage3.bmp",
Packit Service fa4841
	                                 &(bitmaps[imageNo][quarterNo][passNo].size), quarterNo);
Packit Service fa4841
	passNo = (passNo + 1) % 4;
Packit Service fa4841
	bitmaps[imageNo][quarterNo][passNo].buffer =
Packit Service fa4841
	    test_progressive_load_bitmap(ms_sample_path, "decompress/dec_2_3_050_sampleimage3.bmp",
Packit Service fa4841
	                                 &(bitmaps[imageNo][quarterNo][passNo].size), quarterNo);
Packit Service fa4841
	passNo = (passNo + 1) % 4;
Packit Service fa4841
	bitmaps[imageNo][quarterNo][passNo].buffer =
Packit Service fa4841
	    test_progressive_load_bitmap(ms_sample_path, "decompress/dec_2_3_075_sampleimage3.bmp",
Packit Service fa4841
	                                 &(bitmaps[imageNo][quarterNo][passNo].size), quarterNo);
Packit Service fa4841
	passNo = (passNo + 1) % 4;
Packit Service fa4841
	bitmaps[imageNo][quarterNo][passNo].buffer =
Packit Service fa4841
	    test_progressive_load_bitmap(ms_sample_path, "decompress/dec_2_3_100_sampleimage3.bmp",
Packit Service fa4841
	                                 &(bitmaps[imageNo][quarterNo][passNo].size), quarterNo);
Packit Service fa4841
Packit Service fa4841
	/* check if all test data has been loaded */
Packit Service fa4841
Packit Service fa4841
	for (imageNo = 0; imageNo < 3; imageNo++)
Packit Service fa4841
	{
Packit Service fa4841
		for (quarterNo = 0; quarterNo < 4; quarterNo++)
Packit Service fa4841
		{
Packit Service fa4841
			for (passNo = 0; passNo < 4; passNo++)
Packit Service fa4841
			{
Packit Service fa4841
				if (!bitmaps[imageNo][quarterNo][passNo].buffer)
Packit Service fa4841
					return -1;
Packit Service fa4841
			}
Packit Service fa4841
		}
Packit Service fa4841
	}
Packit Service fa4841
Packit Service fa4841
	return 1;
Packit Service fa4841
}
Packit Service fa4841
Packit Service fa4841
static int test_memcmp_count(const BYTE* mem1, const BYTE* mem2, int size, int margin)
Packit Service fa4841
{
Packit Service fa4841
	int error;
Packit Service fa4841
	int count = 0;
Packit Service fa4841
	int index = 0;
Packit Service fa4841
Packit Service fa4841
	for (index = 0; index < size; index++)
Packit Service fa4841
	{
Packit Service fa4841
		if (*mem1 != *mem2)
Packit Service fa4841
		{
Packit Service fa4841
			error = (*mem1 > *mem2) ? *mem1 - *mem2 : *mem2 - *mem1;
Packit Service fa4841
Packit Service fa4841
			if (error > margin)
Packit Service fa4841
				count++;
Packit Service fa4841
		}
Packit Service fa4841
Packit Service fa4841
		mem1++;
Packit Service fa4841
		mem2++;
Packit Service fa4841
	}
Packit Service fa4841
Packit Service fa4841
	return count;
Packit Service fa4841
}
Packit Service fa4841
Packit Service fa4841
static int test_progressive_decode(PROGRESSIVE_CONTEXT* progressive, EGFX_SAMPLE_FILE files[4],
Packit Service fa4841
                                   EGFX_SAMPLE_FILE bitmaps[4], int quarter, int count)
Packit Service fa4841
{
Packit Service fa4841
	int cnt;
Packit Service fa4841
	int pass;
Packit Service fa4841
	int size;
Packit Service fa4841
	int index;
Packit Service fa4841
	int status;
Packit Service fa4841
	int nXSrc, nYSrc;
Packit Service fa4841
	int nXDst, nYDst;
Packit Service fa4841
	int nWidth, nHeight;
Packit Service fa4841
	RECTANGLE_16 tileRect;
Packit Service fa4841
	RECTANGLE_16 updateRect;
Packit Service fa4841
	RECTANGLE_16 clippingRect;
Packit Service fa4841
	RFX_PROGRESSIVE_TILE* tile;
Packit Service fa4841
	PROGRESSIVE_BLOCK_REGION* region;
Packit Service fa4841
	clippingRect.left = 0;
Packit Service fa4841
	clippingRect.top = 0;
Packit Service fa4841
	clippingRect.right = g_Width;
Packit Service fa4841
	clippingRect.bottom = g_Height;
Packit Service fa4841
Packit Service fa4841
	for (pass = 0; pass < count; pass++)
Packit Service fa4841
	{
Packit Service fa4841
		status = progressive_decompress(progressive, files[pass].buffer, files[pass].size,
Packit Service fa4841
		                                g_DstData, PIXEL_FORMAT_XRGB32, g_DstStep, 0, 0, NULL, 0);
Packit Service fa4841
		printf("ProgressiveDecompress: status: %d pass: %d\n", status, pass + 1);
Packit Service fa4841
		region = &(progressive->region);
Packit Service fa4841
Packit Service fa4841
		switch (quarter)
Packit Service fa4841
		{
Packit Service fa4841
			case 0:
Packit Service fa4841
				clippingRect.left = 0;
Packit Service fa4841
				clippingRect.top = 0;
Packit Service fa4841
				clippingRect.right = g_Width / 2;
Packit Service fa4841
				clippingRect.bottom = g_Height / 2;
Packit Service fa4841
				break;
Packit Service fa4841
Packit Service fa4841
			case 1:
Packit Service fa4841
				clippingRect.left = g_Width / 2;
Packit Service fa4841
				clippingRect.top = g_Height / 2;
Packit Service fa4841
				clippingRect.right = g_Width;
Packit Service fa4841
				clippingRect.bottom = g_Height;
Packit Service fa4841
				break;
Packit Service fa4841
Packit Service fa4841
			case 2:
Packit Service fa4841
				clippingRect.left = 0;
Packit Service fa4841
				clippingRect.top = g_Height / 2;
Packit Service fa4841
				clippingRect.right = g_Width / 2;
Packit Service fa4841
				clippingRect.bottom = g_Height;
Packit Service fa4841
				break;
Packit Service fa4841
Packit Service fa4841
			case 3:
Packit Service fa4841
				clippingRect.left = g_Width / 2;
Packit Service fa4841
				clippingRect.top = 0;
Packit Service fa4841
				clippingRect.right = g_Width;
Packit Service fa4841
				clippingRect.bottom = g_Height / 2;
Packit Service fa4841
				break;
Packit Service fa4841
		}
Packit Service fa4841
Packit Service fa4841
		for (index = 0; index < region->numTiles; index++)
Packit Service fa4841
		{
Packit Service fa4841
			tile = region->tiles[index];
Packit Service fa4841
			tileRect.left = tile->x;
Packit Service fa4841
			tileRect.top = tile->y;
Packit Service fa4841
			tileRect.right = tile->x + tile->width;
Packit Service fa4841
			tileRect.bottom = tile->y + tile->height;
Packit Service fa4841
			rectangles_intersection(&tileRect, &clippingRect, &updateRect);
Packit Service fa4841
			nXDst = updateRect.left;
Packit Service fa4841
			nYDst = updateRect.top;
Packit Service fa4841
			nWidth = updateRect.right - updateRect.left;
Packit Service fa4841
			nHeight = updateRect.bottom - updateRect.top;
Packit Service fa4841
Packit Service fa4841
			if ((nWidth <= 0) || (nHeight <= 0))
Packit Service fa4841
				continue;
Packit Service fa4841
Packit Service fa4841
			nXSrc = nXDst - tile->x;
Packit Service fa4841
			nYSrc = nYDst - tile->y;
Packit Service fa4841
			freerdp_image_copy(g_DstData, PIXEL_FORMAT_XRGB32, g_DstStep, nXDst, nYDst, nWidth,
Packit Service fa4841
			                   nHeight, tile->data, PIXEL_FORMAT_XRGB32, 64 * 4, nXSrc, nYSrc, NULL,
Packit Service fa4841
			                   FREERDP_FLIP_NONE);
Packit Service fa4841
		}
Packit Service fa4841
Packit Service fa4841
		size = bitmaps[pass].size;
Packit Service fa4841
		cnt = test_memcmp_count(g_DstData, bitmaps[pass].buffer, size, 1);
Packit Service fa4841
Packit Service fa4841
		if (cnt)
Packit Service fa4841
		{
Packit Service fa4841
			float rate = ((float)cnt) / ((float)size) * 100.0f;
Packit Service fa4841
			printf("Progressive RemoteFX decompression failure\n");
Packit Service fa4841
			printf("Actual, Expected (%d/%d = %.3f%%):\n", cnt, size, rate);
Packit Service fa4841
		}
Packit Service fa4841
Packit Service fa4841
		// WLog_Image(progressive->log, WLOG_TRACE, g_DstData, g_Width, g_Height, 32);
Packit Service fa4841
	}
Packit Service fa4841
Packit Service fa4841
	return 1;
Packit Service fa4841
}
Packit Service fa4841
Packit Service fa4841
static int test_progressive_ms_sample(char* ms_sample_path)
Packit Service fa4841
{
Packit Service fa4841
	int i, j, k;
Packit Service fa4841
	int count;
Packit Service fa4841
	int status;
Packit Service fa4841
	EGFX_SAMPLE_FILE files[3][4][4];
Packit Service fa4841
	EGFX_SAMPLE_FILE bitmaps[3][4][4];
Packit Service fa4841
	PROGRESSIVE_CONTEXT* progressive;
Packit Service fa4841
	g_Width = 1920;
Packit Service fa4841
	g_Height = 1080;
Packit Service fa4841
	g_DstStep = g_Width * 4;
Packit Service fa4841
	ZeroMemory(files, sizeof(files));
Packit Service fa4841
	ZeroMemory(bitmaps, sizeof(bitmaps));
Packit Service fa4841
	status = test_progressive_load_files(ms_sample_path, files);
Packit Service fa4841
Packit Service fa4841
	if (status < 0)
Packit Service fa4841
	{
Packit Service fa4841
		for (i = 0; i < 3; i++)
Packit Service fa4841
		{
Packit Service fa4841
			for (j = 0; j < 4; j++)
Packit Service fa4841
			{
Packit Service fa4841
				for (k = 0; k < 4; k++)
Packit Service fa4841
					sample_file_free(&files[i][j][k]);
Packit Service fa4841
			}
Packit Service fa4841
		}
Packit Service fa4841
Packit Service fa4841
		return -1;
Packit Service fa4841
	}
Packit Service fa4841
Packit Service fa4841
	status = test_progressive_load_bitmaps(ms_sample_path, bitmaps);
Packit Service fa4841
Packit Service fa4841
	if (status < 0)
Packit Service fa4841
	{
Packit Service fa4841
		for (i = 0; i < 3; i++)
Packit Service fa4841
		{
Packit Service fa4841
			for (j = 0; j < 4; j++)
Packit Service fa4841
			{
Packit Service fa4841
				for (k = 0; k < 4; k++)
Packit Service fa4841
					sample_file_free(&files[i][j][k]);
Packit Service fa4841
			}
Packit Service fa4841
		}
Packit Service fa4841
Packit Service fa4841
		return -1;
Packit Service fa4841
	}
Packit Service fa4841
Packit Service fa4841
	count = 4;
Packit Service fa4841
	progressive = progressive_context_new(FALSE);
Packit Service fa4841
	g_DstData = _aligned_malloc(g_DstStep * g_Height, 16);
Packit Service fa4841
	progressive_create_surface_context(progressive, 0, g_Width, g_Height);
Packit Service fa4841
Packit Service fa4841
	/* image 1 */
Packit Service fa4841
Packit Service fa4841
	if (1)
Packit Service fa4841
	{
Packit Service fa4841
		printf("\nSample Image 1\n");
Packit Service fa4841
		test_image_fill(g_DstData, g_DstStep, 0, 0, g_Width, g_Height, 0xFF000000);
Packit Service fa4841
		test_progressive_decode(progressive, files[0][0], bitmaps[0][0], 0, count);
Packit Service fa4841
		test_progressive_decode(progressive, files[0][1], bitmaps[0][1], 1, count);
Packit Service fa4841
		test_progressive_decode(progressive, files[0][2], bitmaps[0][2], 2, count);
Packit Service fa4841
		test_progressive_decode(progressive, files[0][3], bitmaps[0][3], 3, count);
Packit Service fa4841
	}
Packit Service fa4841
Packit Service fa4841
	/* image 2 */
Packit Service fa4841
Packit Service fa4841
	if (0)
Packit Service fa4841
	{
Packit Service fa4841
		printf("\nSample Image 2\n"); /* sample data is in incorrect order */
Packit Service fa4841
		test_image_fill(g_DstData, g_DstStep, 0, 0, g_Width, g_Height, 0xFF000000);
Packit Service fa4841
		test_progressive_decode(progressive, files[1][0], bitmaps[1][0], 0, count);
Packit Service fa4841
		test_progressive_decode(progressive, files[1][1], bitmaps[1][1], 1, count);
Packit Service fa4841
		test_progressive_decode(progressive, files[1][2], bitmaps[1][2], 2, count);
Packit Service fa4841
		test_progressive_decode(progressive, files[1][3], bitmaps[1][3], 3, count);
Packit Service fa4841
	}
Packit Service fa4841
Packit Service fa4841
	/* image 3 */
Packit Service fa4841
Packit Service fa4841
	if (0)
Packit Service fa4841
	{
Packit Service fa4841
		printf("\nSample Image 3\n"); /* sample data is in incorrect order */
Packit Service fa4841
		test_image_fill(g_DstData, g_DstStep, 0, 0, g_Width, g_Height, 0xFF000000);
Packit Service fa4841
		test_progressive_decode(progressive, files[2][0], bitmaps[2][0], 0, count);
Packit Service fa4841
		test_progressive_decode(progressive, files[2][1], bitmaps[2][1], 1, count);
Packit Service fa4841
		test_progressive_decode(progressive, files[2][2], bitmaps[2][2], 2, count);
Packit Service fa4841
		test_progressive_decode(progressive, files[2][3], bitmaps[2][3], 3, count);
Packit Service fa4841
	}
Packit Service fa4841
Packit Service fa4841
	progressive_context_free(progressive);
Packit Service fa4841
Packit Service fa4841
	for (i = 0; i < 3; i++)
Packit Service fa4841
	{
Packit Service fa4841
		for (j = 0; j < 4; j++)
Packit Service fa4841
		{
Packit Service fa4841
			for (k = 0; k < 4; k++)
Packit Service fa4841
			{
Packit Service fa4841
				sample_file_free(&bitmaps[i][j][k]);
Packit Service fa4841
				sample_file_free(&files[i][j][k]);
Packit Service fa4841
			}
Packit Service fa4841
		}
Packit Service fa4841
	}
Packit Service fa4841
Packit Service fa4841
	_aligned_free(g_DstData);
Packit Service fa4841
	return 0;
Packit Service fa4841
}
Packit Service fa4841
Packit Service fa4841
int TestFreeRDPCodecProgressive(int argc, char* argv[])
Packit Service fa4841
{
Packit Service fa4841
	char* ms_sample_path;
Packit Service fa4841
	char name[8192];
Packit Service fa4841
	SYSTEMTIME systemTime;
Packit Service fa4841
	WINPR_UNUSED(argc);
Packit Service fa4841
	WINPR_UNUSED(argv);
Packit Service fa4841
	GetSystemTime(&systemTime);
Packit Service fa4841
	sprintf_s(name, sizeof(name),
Packit Service fa4841
	          "EGFX_PROGRESSIVE_MS_SAMPLE-%04" PRIu16 "%02" PRIu16 "%02" PRIu16 "%02" PRIu16
Packit Service fa4841
	          "%02" PRIu16 "%02" PRIu16 "%04" PRIu16,
Packit Service fa4841
	          systemTime.wYear, systemTime.wMonth, systemTime.wDay, systemTime.wHour,
Packit Service fa4841
	          systemTime.wMinute, systemTime.wSecond, systemTime.wMilliseconds);
Packit Service fa4841
	ms_sample_path = GetKnownSubPath(KNOWN_PATH_TEMP, name);
Packit Service fa4841
Packit Service fa4841
	if (!ms_sample_path)
Packit Service fa4841
	{
Packit Service fa4841
		printf("Memory allocation failed\n");
Packit Service fa4841
		return -1;
Packit Service fa4841
	}
Packit Service fa4841
Packit Service fa4841
	if (PathFileExistsA(ms_sample_path))
Packit Service fa4841
		return test_progressive_ms_sample(ms_sample_path);
Packit Service fa4841
Packit Service fa4841
	free(ms_sample_path);
Packit Service fa4841
	return 0;
Packit Service fa4841
}