#pragma once

#include "nxu_vqd_api.h"

#ifdef __cplusplus
extern "C"
{
#endif

#ifdef _WIN32
#define Easy_NXU_EXPORTS_API	__declspec(dllexport)
#define Easy_NXU_EXPORTS_APICALL __stdcall
#else
#define Easy_NXU_EXPORTS_API	
#define Easy_NXU_EXPORTS_APICALL
#endif

    typedef struct __tagVideoInfo__
    {
		NXU_HANDLE phVQD;
		NXU_HANDLE VideoHandle;
		int interval;
		NXU_VQD_Para_S stPara;
		char url[256];
    } VideoInfo;


	// ��ȡ�汾
	Easy_NXU_EXPORTS_API int Easy_NXU_EXPORTS_APICALL
		ez_vqd_version(char* version);

	// �������
	Easy_NXU_EXPORTS_API int Easy_NXU_EXPORTS_APICALL
		ez_vqd_create(VideoInfo *handle);
	// ע�����
	Easy_NXU_EXPORTS_API int Easy_NXU_EXPORTS_APICALL
		ez_vqd_destroy(VideoInfo *handle);

	// ��ʼ����
	Easy_NXU_EXPORTS_API int Easy_NXU_EXPORTS_APICALL
		ez_vqd_run(VideoInfo handle, int frameNum, char *save_filename, int save_filename_size, NXU_VQD_Result_S *out_stResult);

	/*typedef struct __tagVideoInfoCVR__
	{
		NXU_HANDLE phVQD;
		int interval;
		NXU_VQD_Para_S stPara;
		int width;
		int height;
	} VideoInfoCVR;*/

	typedef void* VideoInfoCVR;

	Easy_NXU_EXPORTS_API int Easy_NXU_EXPORTS_APICALL
		ez_cvr_vqd_load(char *path, int path_size, char* errmsg);
	Easy_NXU_EXPORTS_API int Easy_NXU_EXPORTS_APICALL
		ez_cvr_vqd_unload();

	Easy_NXU_EXPORTS_API int Easy_NXU_EXPORTS_APICALL
		ez_cvr_vqd_create(VideoInfoCVR* handle);
	Easy_NXU_EXPORTS_API int Easy_NXU_EXPORTS_APICALL
		ez_cvr_vqd_destroy(VideoInfoCVR* handle);
	Easy_NXU_EXPORTS_API int Easy_NXU_EXPORTS_APICALL
		ez_cvr_vqd_config(VideoInfoCVR handle, NXU_VQD_Para_S *stPara, int interval);
	// ��ʼ����
	Easy_NXU_EXPORTS_API int Easy_NXU_EXPORTS_APICALL
		ez_cvr_vqd_run(VideoInfoCVR handle, int width, int height, char* data, int frameNum, char* save_filename, int save_filename_size, NXU_VQD_Result_S* out_stResult);

	Easy_NXU_EXPORTS_API int Easy_NXU_EXPORTS_APICALL
		ez_cvr_vqd_img(VideoInfoCVR handle, char* jpg_path, int jpg_path_size, NXU_VQD_Result_S* out_stResult);
#ifdef __cplusplus
}
#endif