Skip to content
Snippets Groups Projects
TestCFHD.cpp 34.4 KiB
Newer Older
dnewman-gpsw's avatar
dnewman-gpsw committed

				if (psnr < PPM_EXPORT_BELOW)
				{
					char metadata[64];
#ifdef _WINDOWS 
					sprintf_s(metadata, sizeof(metadata), "PSNR = %f", psnr);
#else
					sprintf(metadata, "PSNR = %f", psnr);
#endif
					//ExportPPM(inputname, metadata, frameBuffer, frameWidth, frameHeight, framePitch, pixelFormat);
					ExportPPM(outputname, metadata, frameDecBuffer, frameWidth / scale, frameHeight / scale, framePitch / scale, pixelFormat);
				}
			}
#else
			printf("%d: source %d compressed to %d in %1.1fms - %1.1fms (%1.1f:1)\n", frameNumber, framePitch*frameHeight, sampleSize, (float)enc_us / 1000.0f, (float)dec_us / 1000.0f, (float)(framePitch*frameHeight) / (float)sampleSize);
#endif

#endif // DO_DECODE

			frameNumber++;
		}

		// Free the encoder
		CFHD_CloseEncoder(encoderRef);
		encoderRef = NULL;

		frmt++;
		if (TestPixelFormat[frmt * 3] == 0 && TestResolution[resmode + 1] != CFHD_DECODED_RESOLUTION_UNKNOWN)
		{
			resmode++;
			frmt = 0;
		}
		printf("\n");

	} while (TestPixelFormat[frmt * 3] && TestResolution[resmode] != CFHD_DECODED_RESOLUTION_UNKNOWN);

cleanup:
	if (error)
	{

#ifdef __APPLE__
		if (frameBuffer) free(frameBuffer), frameBuffer = NULL;
		if (frameDecBuffer) free(frameDecBuffer), frameDecBuffer = NULL;
#else
		if (frameBuffer) _mm_free(frameBuffer), frameBuffer = NULL;
		if (frameDecBuffer) _mm_free(frameDecBuffer), frameDecBuffer = NULL;
#endif
	}


	if (decoderRef) CFHD_CloseDecoder(decoderRef);
	if (encoderRef) CFHD_CloseEncoder(encoderRef);

	return error;
}




int main(int argc, char **argv)
{
	CFHD_Error error = CFHD_ERROR_OKAY;

	if (argc == 1)
	{
		//error = EncodeSpeedTest();
		if(error) printf("error code: %d\n", error);

		error = EncodeDecodeQualityTest();
		if (error) printf("error code: %d\n", error);
	}
	else
	{
		char ext[4] = "";
		int len = strlen(argv[1]);
		if (len > 4)
		{
			ext[0] = argv[1][len - 3];
			ext[1] = argv[1][len - 2];
			ext[2] = argv[1][len - 1];
			ext[3] = 0;
		}

		error = DecodeMOVIE(argv[1], ext);
	}

	if (error) printf("error code: %d\n", error);
	return error;
}