fast-yolo4/3rdparty/dahua/inc/dhplay.h

2728 lines
93 KiB
C
Raw Normal View History

2024-09-25 09:43:03 +08:00
#ifndef _DHPLAY_H
#define _DHPLAY_H
#if (defined(WIN32) || defined(WIN64))
#ifdef dhplay_EXPORTS
#define PLAYSDK_API __declspec(dllexport)
#else
#define PLAYSDK_API __declspec(dllimport)
#endif
#define CALLMETHOD __stdcall
#define CALLBACK __stdcall
#else
#define CALLMETHOD
#define CALLBACK
#define PLAYSDK_API //extern "C"
#endif
#if defined(WIN32) || defined(WIN64)
#include <windows.h>
#else
#ifdef __OBJC__
#include "objc/objc.h"
#else
#define BOOL int
#endif
#define BYTE unsigned char
#define PBYTE BYTE*
#define LPBYTE BYTE*
#ifndef LONG
#define LONG int
#endif
#ifndef DWORD
#define DWORD unsigned int
#endif
#define WORD unsigned short
#define COLORREF DWORD
#define HDC void*
#define HWND void*
#define LPSTR char*
#define UINT unsigned int
#define TRUE 1
#define FALSE 0
#define ULONGLONG unsigned long long
#define LONGLONG long long
typedef struct _SYSTEMTIME
{
WORD wYear;
WORD wMonth;
WORD wDayOfWeek;
WORD wDay;
WORD wHour;
WORD wMinute;
WORD wSecond;
WORD wMilliseconds;
} SYSTEMTIME, *PSYSTEMTIME, *LPSYSTEMTIME;
#endif
#ifdef __cplusplus
extern "C" {
#endif
/***********************************************************************************************/
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
/***********************************************************************************************/
/* ͨ<><CDA8><EFBFBD><EFBFBD> */
#define FUNC_MAX_PORT 511 // <20><><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD>ţ<EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD>ŷ<EFBFBD>Χ[0,512)
/* <20><>Ƶ<EFBFBD><C6B5>ֵ */
#define MIN_WAVE_COEF -100 // PLAY_AdjustWaveAudioʹ<6F><CAB9>
#define MAX_WAVE_COEF 100 // PLAY_AdjustWaveAudioʹ<6F><CAB9>
/* <20><>Ƶ<EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD><EFBFBD> */
#define MIN_AUDIO_RECORD_LEN 320 // <20><>С<EFBFBD><D0A1>Ƶ<EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD><EFBFBD>
#define MAX_AUDIO_RECORD_LEN 4096 // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD><EFBFBD>
/* <20><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD> */
#define MAX_DISPLAY_WND 64 // <20><><EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ŵ<EFBFBD><C5B5><EFBFBD><EFBFBD><EFBFBD>ֵ
/* <20><><EFBFBD>Ż<EFBFBD><C5BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
#define BUF_VIDEO_SRC 1 // <20><>ƵԴ<C6B5><D4B4><EFBFBD><EFBFBD>
#define BUF_AUDIO_SRC 2 // <20><>ƵԴ<C6B5><D4B4><EFBFBD><EFBFBD>
#define BUF_VIDEO_RENDER 3 // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><C6B5><EFBFBD>ݻ<EFBFBD><DDBB><EFBFBD>
#define BUF_AUDIO_RENDER 4 // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><C6B5><EFBFBD>ݻ<EFBFBD><DDBB><EFBFBD>
/* <20>ļ<EFBFBD><C4BC><EFBFBD>ת<EFBFBD><D7AA>ʽ */
#define BY_FRAMENUM 1 // <20><>֡<EFBFBD>ŷ<EFBFBD>ʽ(PLAY_GetKeyFramePosʹ<73><CAB9>)
#define BY_FRAMETIME 2 // <20><>ʱ<EFBFBD>ʽ(PLAY_GetKeyFramePosʹ<73><CAB9>)
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
#define SOURCE_BUF_MAX 1024*100000 // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>󳤶<EFBFBD>
#define SOURCE_BUF_MIN 1024*1024 // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD><D0A1><EFBFBD><EFBFBD>
#define STREAME_REALTIME 0 // ʵʱ<CAB5><CAB1>ģʽ
#define STREAME_FILE 1 // <20>ļ<EFBFBD><C4BC><EFBFBD>ģʽ
/* <20><>Ƶλ<C6B5><CEBB> */
#define T_AUDIO16 101 // 16λ<36><CEBB>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define T_AUDIO8 100 // 8λ<38><CEBB>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><C6B5>ʽ */
#define T_UYVY 1 // UYVY<56><59><EFBFBD>͵<EFBFBD>YUV<55><56><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD>ڲ<EFBFBD>֧<EFBFBD><D6A7>
#define T_IYUV 3 // IYUV(I420)<29><><EFBFBD><EFBFBD>YUV<55><56><EFBFBD><EFBFBD>
#define T_NV12 5 // NV12<31><32><EFBFBD><EFBFBD>yuv<75><76><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD><EFBFBD>ֻ֧<D6BB><D6A7>bmp32ץͼ
#define T_RGB32 7 // RGB32<33><32><EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD>ڲ<EFBFBD>֧<EFBFBD><D6A7>
/* aviת<69><D7AA> */
#define AVI_MEDIACHANGE_FRAMERATE 1 // ֡<>ʸı<CAB8>
#define AVI_MEDIACHANGE_RESOLUTION 2 // <20>ֱ<EFBFBD><D6B1>ʸı<CAB8>
/* ˮӡ<CBAE><D3A1><EFBFBD><EFBFBD> */
#define WATERMARK_DATA_TEXT 0 // <20><><EFBFBD><EFBFBD>
#define WATERMARK_DATA_JPEG_BMP 1 // JPEG<45><47><EFBFBD><EFBFBD>BMPͼƬ
#define WATERMARK_DATA_FRAMEDATA 3 // ֡<><D6A1><EFBFBD><EFBFBD>
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
#define DH_PLAY_NOERROR 0 //<2F>޴<EFBFBD><DEB4><EFBFBD>
#define DH_PLAY_COMMON_ERROR 1 //<2F><>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD>
#define DH_PLAY_PARA_INVALID 2 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч
#define DH_PLAY_ORDER_ERROR 3 //<2F><><EFBFBD><EFBFBD>˳<EFBFBD>򲻶<EFBFBD>
#define DH_PLAY_PORT_OPEN 4 //ͨ<><CDA8><EFBFBD>Ѿ<EFBFBD><D1BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define DH_PLAY_PORT_CLOSE 5 //ͨ<><CDA8><EFBFBD>Ѿ<EFBFBD><D1BE><EFBFBD><EFBFBD>ر<EFBFBD>
#define DH_PLAY_PORT_INVALID 6 //ͨ<><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч
#define DH_PLAY_PORT_EXIST 7 //ͨ<><CDA8><EFBFBD>Ѿ<EFBFBD><D1BE><EFBFBD><EFBFBD><EFBFBD>
#define DH_PLAY_OPEN_FILE_ERROR 8 //<2F><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>ʧ<EFBFBD><CAA7>
#define DH_PLAY_INTERFACE_NOT_SUPPORT 9 //<2F>ӿڲ<D3BF>֧<EFBFBD><D6A7>
#define DH_PLAY_HWND_INVALID 10 //<2F><><EFBFBD>ھ<EFBFBD><DABE><EFBFBD><EFBFBD><EFBFBD>Ч
#define DH_PLAY_PLAY_ERROR 11 //<2F><><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>
#define DH_PLAY_SPEED_INVALID 12 //<2F>ٶ<EFBFBD><D9B6><EFBFBD>Ч
#define DH_PLAY_NOT_FILE 13 //<2F><><EFBFBD>ļ<EFBFBD>ģʽ
#define DH_PLAY_NOT_STREAM 14 //<2F><><EFBFBD><EFBFBD>ģʽ
#define DH_PLAY_NO_FRAME 15 //<2F><>ǰû<C7B0><C3BB>֡<EFBFBD><D6A1><EFBFBD><EFBFBD>
#define DH_PLAY_INDEX_NOT_COMPLETE 16 //<2F><><EFBFBD><EFBFBD>û<EFBFBD>н<EFBFBD><D0BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define DH_PLAY_INDEX_COMPLETE 17 //<2F>ѽ<EFBFBD><D1BD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>
#define DH_PLAY_GET_FILE_SIZE_ERROR 18 //<2F><>ȡ<EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>Сʧ<D0A1><CAA7>
#define DH_PLAY_CREATE_THREAD_FAIL 19 //<2F><><EFBFBD><EFBFBD><EFBFBD>߳<EFBFBD>ʧ<EFBFBD><CAA7>
#define DH_PLAY_CREATE_EVENT_FAIL 20 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>
#define DH_PLAY_SOUND_SHARE_MODE 21 //<2F><><EFBFBD>ڹ<EFBFBD><DAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ
#define DH_PLAY_INCLUDE_SOUND_SHARE_PORT 22 //<2F>ö˿<C3B6><CBBF>Ѱ<EFBFBD><D1B0><EFBFBD>
#define DH_PLAY_NOT_INCLUDE_SOUND_SHARE_PORT 23 //<2F>ö˿<C3B6>δ<EFBFBD><CEB4><EFBFBD><EFBFBD>
#define DH_PLAY_CREATE_DIR_ERROR 24 //<2F><><EFBFBD><EFBFBD>·<EFBFBD><C2B7>ʧ<EFBFBD><CAA7>
#define DH_PLAY_CREATE_FILE_ERROR 25 //<2F><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>ʧ<EFBFBD><CAA7>
#define DH_PLAY_CONVERT_YUV_ERROR 26 //ת<><D7AA>yuvʧ<76><CAA7>
#define DH_PLAY_CONVERT_JPG_ERROR 27 //ת<><D7AA>jpgʧ<67><CAA7>
#define DH_PLAY_CONVERT_BMP_ERROR 28 //ת<><D7AA>bmpʧ<70><CAA7>
#define DH_PLAY_CONVERT_TIFF_ERROR 29 //ת<><D7AA>tiffʧ<66><CAA7>
#define DH_PLAY_HW_CATCH_ERROR 30 //Ӳ<><D3B2><EFBFBD><EFBFBD>ץ<EFBFBD><D7A5>ʧ<EFBFBD><CAA7>
#define DH_PLAY_CREATE_VIDEO_RENDER_ERROR 31 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><C6B5>Ⱦʧ<C8BE><CAA7>
#define DH_PLAY_NOT_SUPPORT_REF_VALUE 32 //<2F><>֧<EFBFBD><D6A7><EFBFBD>ⲿ<EFBFBD><E2B2BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define DH_PLAY_FORMAT_NOT_SUPPORT 33 //<2F><>ʽ<EFBFBD><CABD>֧<EFBFBD><D6A7>
#define DH_PLAY_CREATE_RECORD_ERROR 34 //<2F><><EFBFBD><EFBFBD>¼<EFBFBD><C2BC>ʧ<EFBFBD><CAA7>
#define DH_PLAY_OPEN_RECORD_ERROR 35 //<2F><><EFBFBD><EFBFBD>¼<EFBFBD><C2BC>ʧ<EFBFBD><CAA7>
#define DH_PLAY_FRAMERATE_ERROR 36 //֡<>ʴ<EFBFBD><CAB4><EFBFBD>
#define DH_PLAY_CREATE_AUDIO_RECORD_ERROR 37 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ¼<C6B5><C2BC>ʧ<EFBFBD><CAA7>
#define DH_PLAY_OPEN_AUDIO_RECORD_ERROR 38 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ¼<C6B5><C2BC>ʧ<EFBFBD><CAA7>
#define DH_PLAY_AES_ALLOC_ERROR 39 //<2F><><EFBFBD><EFBFBD>aes_allocʧ<63><CAA7>
#define DH_PLAY_BUF_OVER 40 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define DH_PLAY_ALLOC_MEMORY_ERROR 41 //<2F><><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>ʧ<EFBFBD><CAA7>
/***********************************************************************************************/
/* ö<>ٶ<EFBFBD><D9B6><EFBFBD> */
/***********************************************************************************************/
/* <20><>Ⱦģʽ */
typedef enum
{
RENDER_NOTSET = 0, // δ<><CEB4><EFBFBD><EFBFBD>
RENDER_GDI, // GDI<44><49>Ⱦ
RENDER_X11 = RENDER_GDI, // <20><>windowsƽ̨X11<31><31>Ⱦ
RENDER_DDRAW, // ddraw<61><77>Ⱦ
RENDER_OPENGL = RENDER_DDRAW, // <20><>windowsƽ̨opengl<67><6C>Ⱦ
RENDER_D3D, // D3D<33><44>Ⱦ,Ĭ<>ϵ<EFBFBD>ͬ<EFBFBD><CDAC>D3D9<44><39>Ⱦ
RENDER_D3D9 = RENDER_D3D, // D3D9<44><39>Ⱦ
RENDER_WGL, // windowsƽ̨opengl<67><6C>Ⱦ
RENDER_D3D11 // D3D11<31><31>Ⱦ
}RenderType;
/* <20><><EFBFBD><EFBFBD>ģʽ */
typedef enum
{
DECODE_NOTSET = 0, // δ<><CEB4><EFBFBD><EFBFBD>
DECODE_SW, // <20><><EFBFBD><EFBFBD>
DECODE_HW, // Ӳ<><D3B2><EFBFBD><EFBFBD><EBBFBD>ģʽ(<28><>ʹ<EFBFBD><CAB9>windowsƽ̨<C6BD><CCA8>ʹ<EFBFBD><CAB9>d3d9<64>ӿ<EFBFBD>)
DECODE_HW_FAST, // Ӳ<><D3B2><EFBFBD><EFBFBD>ֱ<EFBFBD><D6B1><EFBFBD><EFBFBD>ʾģʽ(<28><>ʹ<EFBFBD><CAB9>windowsƽ̨<C6BD><CCA8>ʹ<EFBFBD><CAB9>d3d9<64>ӿ<EFBFBD>)
DECODE_MSDK, // Ӳ<><D3B2><EFBFBD><EFBFBD><EBA3AC><EFBFBD><EFBFBD>intel media sdk<64><6B><EFBFBD>ѷ<EFBFBD><D1B7><EFBFBD>
DECODE_HW_FAST_D3D11, // Ӳ<><D3B2><EFBFBD><EFBFBD>ֱ<EFBFBD><D6B1><EFBFBD><EFBFBD>ʾģʽ,ʹ<><CAB9>d3d11<31>ӿ<EFBFBD>,<2C><><EFBFBD><EFBFBD>windowsƽ̨
}DecodeType;
/* ͼƬ<CDBC><C6AC>ʽ */
typedef enum __tPicFormats
{
PicFormat_BMP = 0, // BMP32<33><32><EFBFBD><EFBFBD>
PicFormat_JPEG, // JPEG<45><47><EFBFBD><EFBFBD>
PicFormat_JPEG_70, // 70%<25><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>JPEG<45><47><EFBFBD><EFBFBD>
PicFormat_JPEG_50, // 50%<25><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>JPEG<45><47><EFBFBD><EFBFBD>
PicFormat_JPEG_30, // 30%<25><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>JPEG<45><47><EFBFBD><EFBFBD>
PicFormat_JPEG_10, // 10%<25><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>JPEG<45><47><EFBFBD><EFBFBD>
PicFormat_BMP24, // BMP24<32><34><EFBFBD><EFBFBD>
PicFormat_TIFF // TIFF<46><46><EFBFBD><EFBFBD>
} tPicFormats;
/* <20><>ȡý<C8A1><C3BD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2>ʽ */
typedef enum _CMD_TYPE
{
PLAY_CMD_GetTime = 1, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
PLAY_CMD_GetFileRate = 2, // ֡<><D6A1><EFBFBD><EFBFBD>Ϣ
PLAY_CMD_GetMediaInfo = 3, // ý<><C3BD><EFBFBD><EFBFBD>Ϣ
PLAY_CMD_GetRenderNum = 4, // <20><>ǰҪ<C7B0><D2AA>Ⱦ<EFBFBD><C8BE>֡<EFBFBD><D6A1>
PLAY_CMD_GetRenderTime = 5, // <20><>ǰҪ<C7B0><D2AA>Ⱦ<EFBFBD><C8BE>ʱ<EFBFBD><EFBFBD><E4A3AC><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
PLAY_CMD_GetSrcTime = 6, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2>Ϊ1970<37><30>7<EFBFBD><37>1<EFBFBD>պ<EFBFBD><D5BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
PLAY_CMD_GetCurRenderNum = 7, // <20><>ǰ֡<C7B0>ţ<EFBFBD>PLAY_CMD_GetRenderNum<75><6D><EFBFBD><EFBFBD>һ֡<D2BB><D6A1>֡<EFBFBD><D6A1>
PLAY_CMD_GetRenderTimeStamp = 8 // <20><>ǰҪ<C7B0><D2AA>Ⱦ<EFBFBD><C8BE>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
} CMD_TYPE_E;
/* <20><><EFBFBD><EFBFBD>Ƶͬ<C6B5><CDAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
typedef enum
{
AV_SYNC_VIDEO_MASTER, // <20><><EFBFBD><EFBFBD>ƵΪ<C6B5><CEAA>׼<EFBFBD><D7BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶͬ<C6B5><CDAC><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD>
AV_SYNC_AUDIO_TIME_STAMP // <20><><EFBFBD><EFBFBD>Ƶʱ<C6B5><CAB1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>׼
}AV_SYNC_TYPE;
/***********************************************************************************************/
/* <20><EFBFBD><EFBFBD><E5B6A8> */
/***********************************************************************************************/
/* <20>ֲ<EFBFBD><D6B2><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD> */
typedef struct _tagRECT
{
LONG left;
LONG top;
LONG right;
LONG bottom;
}DISPLAYRECT;
/* ʱ<><CAB1><EFBFBD>ṹ */
#ifndef _DHTIME_
#define _DHTIME_
typedef struct _DHTIME
{
DWORD second :6; // <09><> 0-59
DWORD minute :6; // <09><> 0-59
DWORD hour :5; // ʱ 0-23
DWORD day :5; // <09><> 1-31
DWORD month :4; // <09><> 1-12
DWORD year :6; // <09><> 2000-2063
} DHTIME,*pDHTIME;
#endif
/* <20>ļ<EFBFBD><C4BC><EFBFBD>Ϣ<EFBFBD><EFBFBD><E1B9B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9> */
#define UUID_MAX_LEN 96 //<2F><><EFBFBD><EFBFBD>Ψһ<CEA8><D2BB>ʶ<EFBFBD><CAB6><EFBFBD><EFBFBD>
#define MAX_DEV_NAME_LEN 32 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƴ<EFBFBD><C6B3><EFBFBD>
typedef struct _FILE_INFO
{
UINT channel; //ͨ<><CDA8><EFBFBD><EFBFBD>
BYTE type; //<2F>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>
BYTE lock_flag; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28><><EFBFBD>Ͷ<EFBFBD><CDB6><EFBFBD><EFBFBD><EFBFBD>dhfs_file_state)
BYTE video_audio; //<2F><>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD>Ƶ
BYTE image; //bit0~3ͼ<33><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(bit4~6<><36><EFBFBD><EFBFBD>, bit7 <20><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>ʱ)
DHTIME start_time; //<2F><>ʼʱ<CABC><CAB1>
DHTIME end_time; //<2F><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
UINT file_length; //<2F>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>ȣ<EFBFBD><C8A3><EFBFBD>λΪKB
UINT first_clus_no; //<2F>ļ<EFBFBD><C4BC>״غ<D7B4>
UINT ud_no; //<2F>û<EFBFBD><C3BB><EFBFBD><EFBFBD>ݺ<EFBFBD>
char part[MAX_DEV_NAME_LEN]; //<2F>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>ڵķ<DAB5><C4B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><>:"dev/sda_0"
char uuid[UUID_MAX_LEN]; //<2F>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>ڷ<EFBFBD><DAB7><EFBFBD>uuid,ÿ<><C3BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ψһ<CEA8><D2BB>ʶ,<2C><><EFBFBD><EFBFBD>ж<EFBFBD><D0B6>|<7C><><EFBFBD>غ<EFBFBD><D8BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
UINT rev[9];
}FILE_INFO,*pFILE_INFO;
/* ֡λ<D6A1><CEBB><EFBFBD><EFBFBD>Ϣ */
typedef struct
{
LONGLONG nFilePos; // ָ<><D6B8>֡<EFBFBD><D6A1><EFBFBD>ļ<EFBFBD><C4BC>е<EFBFBD>ƫ<EFBFBD><C6AB>λ<EFBFBD><CEBB>
LONG nFrameLen; // ֡<><D6A1><EFBFBD><EFBFBD>
LONG nFrameNum; // ֡<><D6A1><EFBFBD><EFBFBD>
LONG nFrameTime; // ֡ʱ<D6A1><CAB1>
LONG nErrorFrameNum; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>
SYSTEMTIME* pErrorTime; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>
LONG nErrorLostFrameNum; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>
LONG nErrorFrameSize; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>
}FRAME_POS,*PFRAME_POS;
/* ֡<><D6A1>Ϣ */
typedef struct
{
LONG nWidth; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD>ء<EFBFBD><D8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ0
LONG nHeight; // <20><><EFBFBD><EFBFBD><EFBFBD>ߣ<EFBFBD><DFA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ0
LONG nStamp; // ʱ<><CAB1><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>
LONG nType; // <20><>Ƶ֡<C6B5><D6A1><EFBFBD>ͣ<EFBFBD>T_AUDIO16<31><36>T_RGB32<33><32>T_IYUV
LONG nFrameRate; // <20><>Ƶ<EFBFBD><C6B5>ʾ֡<CABE>ʣ<EFBFBD><CAA3><EFBFBD>Ƶ<EFBFBD><C6B5>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
}FRAME_INFO;
/* ֡<><D6A1>Ϣ<EFBFBD><CFA2>չ<EFBFBD>ֶ<EFBFBD> */
typedef struct
{
#define FRAME_TYPE_VIDEO 0 // <20><>Ƶ֡
#define FRAME_TYPE_AUDIO 1 // <20><>Ƶ֡
int nFrameType; // <20><>Ƶ֡<C6B5><D6A1><EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E6B6A8>
int nFrameSeq; // ֡<><D6A1><EFBFBD><EFBFBD>
int nStamp; // ʱ<><CAB1><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>
int nWidth; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD>ء<EFBFBD><D8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ0
int nHeight; // <20><><EFBFBD><EFBFBD><EFBFBD>ߣ<EFBFBD><DFA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ0
int nFrameRate; // <20><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC>֡<EFBFBD><D6A1>
int nChannels; // <20><>Ƶͨ<C6B5><CDA8><EFBFBD><EFBFBD>
int nBitPerSample; // <20><>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>
int nSamplesPerSec; // <20><>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD>Ƶ<EFBFBD><C6B5>
int nRemainData; // <20><><EFBFBD><EFBFBD>ʣ<EFBFBD><CAA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
SYSTEMTIME nDataTime; // ʱ<><CAB1>
int nFrameSubType; // <20><>Ƶ֡<C6B5><D6A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
int nReserved[58]; // <20><><EFBFBD><EFBFBD><EFBFBD>ֶ<EFBFBD>
}FRAME_INFO_EX;
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֡<EFBFBD><D6A1>Ϣ */
typedef struct
{
int nFrameType; // ֡<><D6A1><EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>FRAME_INFO_EX<45><58>nFrameType<70>ֶ<EFBFBD>
void* pAudioData; // <20><>Ƶ<EFBFBD><C6B5><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ֡
int nAudioDataLen; // <20><>Ƶ<EFBFBD><C6B5><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>
void* pVideoData[3]; // <20>ֱ<EFBFBD><D6B1><EFBFBD>ʾ<EFBFBD><CABE>Ƶ<EFBFBD><C6B5>YUV<55><56><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
int nStride[3]; // <20>ֱ<EFBFBD><D6B1><EFBFBD>ʾYUV<55><56><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD>
int nWidth[3]; // <20>ֱ<EFBFBD><D6B1><EFBFBD>ʾYUV<55><56><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD>
int nHeight[3]; // <20>ֱ<EFBFBD><D6B1><EFBFBD>ʾYUV<55><56><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĸ߶<C4B8>
SYSTEMTIME nDataTime; // ֡ʱ<D6A1><CAB1>
int nReserved[60]; // <20><><EFBFBD><EFBFBD><EFBFBD>ֶ<EFBFBD>
}FRAME_DECODE_INFO;
/* ý<><C3BD><EFBFBD><EFBFBD>Ϣ */
typedef struct
{
int lWidth; // <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>
int lHeight; // <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
int lFrameRate; // ֡<><D6A1>
int lChannel; // <09><>Ƶͨ<C6B5><CDA8><EFBFBD><EFBFBD>
int lBitPerSample; // <09><>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>
int lSamplesPerSec; // <09><>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD>Ƶ<EFBFBD><C6B5>
}MEDIA_INFO;
/***********************************************************************************************/
/* <20>ӿ<EFBFBD> */
/***********************************************************************************************/
/************************************************************************/
//> <20><>ȡ<EFBFBD><EFBFBD><E6B1BE>
/************************************************************************/
/**
* <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD>ſ<EFBFBD>SDK<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ţ<EFBFBD><EFBFBD>ΰ<EFBFBD>ź<EFBFBD>SVN<EFBFBD><EFBFBD>š<EFBFBD>
*
* @return <EFBFBD><EFBFBD><EFBFBD><EFBFBD>1λ<EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ţ<EFBFBD><EFBFBD><EFBFBD>2~3λ<EFBFBD><EFBFBD>ʾ<EFBFBD>ΰ<EFBFBD>ţ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ı<EFBFBD>ʾSVN<EFBFBD><EFBFBD>š<EFBFBD>
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ34033722<EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>3<EFBFBD><EFBFBD><EFBFBD>ΰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>40<EFBFBD><EFBFBD>SVN<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>33722<EFBFBD><EFBFBD>
*/
PLAYSDK_API DWORD CALLMETHOD PLAY_GetSdkVersion();
/************************************************************************/
//> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
/************************************************************************/
/**
* <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
* @return <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
PLAYSDK_API DWORD CALLMETHOD PLAY_GetLastErrorEx();
/************************************************************************/
//> <20><>־<EFBFBD><D6BE><EFBFBD><EFBFBD>
/************************************************************************/
/**
* <EFBFBD><EFBFBD>־<EFBFBD><EFBFBD><EFBFBD>Կ<EFBFBD><EFBFBD>أ<EFBFBD>Ĭ<EFBFBD><EFBFBD>ΪWarn<EFBFBD>ȼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӡ<EFBFBD><EFBFBD><EFBFBD>١<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϸ<EFBFBD><EFBFBD>־<EFBFBD><EFBFBD>ӡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ΪDebug<EFBFBD>ȼ<EFBFBD><EFBFBD><EFBFBD>
* Windowsƽ̨<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD>Ŀ¼<EFBFBD>µ<EFBFBD>playsdk.log<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>windowsΪ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>̨<EFBFBD><EFBFBD>ӡ<EFBFBD><EFBFBD>
*
*/
typedef enum
{
LOG_LevelUnknown= 0, // δ֪<CEB4>ȼ<EFBFBD>
LOG_LevelFatal, // fatal<61>ȼ<EFBFBD><C8BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD>˵ȼ<CBB5>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>һ<EFBFBD>ִ<EFBFBD>ӡ<EFBFBD><D3A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>fatal<61><6C><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
LOG_LevelError, // error<6F>ȼ<EFBFBD><C8BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD>˵ȼ<CBB5>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD>ӡ<EFBFBD><D3A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>fatal<61><6C>error<6F><72><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
LOG_LevelWarn, // warn<72>ȼ<EFBFBD><C8BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD>˵ȼ<CBB5>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD>ӡ<EFBFBD><D3A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>fatal<61><6C>error<6F><72>warn<72><6E><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
LOG_LevelInfo, // info<66>ȼ<EFBFBD><C8BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD>˵ȼ<CBB5>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD>ӡ<EFBFBD><D3A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>fatal<61><6C>error<6F><72>warn<72><6E>info<66><6F><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
LOG_LevelTrace, // Trace<63>ȼ<EFBFBD><C8BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD>˵ȼ<CBB5>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD>ӡ<EFBFBD><D3A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>fatal<61><6C>error<6F><72>warn<72><6E>info<66><6F>trace<63><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
LOG_LevelDebug // Debug<75>ȼ<EFBFBD><C8BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD>˵ȼ<CBB5>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD>ӡ<EFBFBD><D3A1>fatal<61><6C>error<6F><72>warn<72><6E>info<66><6F>trace<63><65>debug<75><67><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
}LOG_LEVEL;
PLAYSDK_API void CALLMETHOD PLAY_SetPrintLogLevel(LOG_LEVEL logLevel);
/************************************************************************/
//> <20><><EFBFBD>Ŷ˿ں<CBBF>
/************************************************************************/
/**
* <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><EFBFBD><EFBFBD>ţ<EFBFBD><EFBFBD><EFBFBD>Χ<EFBFBD><EFBFBD>101~511<EFBFBD><EFBFBD>
*
* @param[out] plPort <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @return BOOL<EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>TRUE<EFBFBD><EFBFBD>ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD><EFBFBD>FALSE
* @note <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><EFBFBD><EFBFBD>PLAY_GetLastErrorEx<EFBFBD>ӿڻ<EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
PLAYSDK_API BOOL CALLMETHOD PLAY_GetFreePort(LONG *plPort);
/**
* <EFBFBD>ͷ<EFBFBD>ͨ<EFBFBD><EFBFBD><EFBFBD>š<EFBFBD>
*
* @param[in] lPort ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @return BOOL<EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>TRUE<EFBFBD><EFBFBD>ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD><EFBFBD>FALSE
* @note <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><EFBFBD><EFBFBD>PLAY_GetLastErrorEx<EFBFBD>ӿڻ<EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
PLAYSDK_API BOOL CALLMETHOD PLAY_ReleasePort(LONG lPort);
/************************************************************************/
//> <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>
/************************************************************************/
/**
* <EFBFBD>򿪲<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD>
*
* @param[in] nPort ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[in] sFileName <EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD>
* @return BOOL<EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>TRUE<EFBFBD><EFBFBD>ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD><EFBFBD>FALSE
* @note <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><EFBFBD><EFBFBD>PLAY_GetLastErrorEx<EFBFBD>ӿڻ<EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
PLAYSDK_API BOOL CALLMETHOD PLAY_OpenFile(LONG nPort,LPSTR sFileName);
/**
* <EFBFBD>ر<EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD>
*
* @param[in] nPort ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @return BOOL<EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>TRUE<EFBFBD><EFBFBD>ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD><EFBFBD>FALSE
* @note <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><EFBFBD><EFBFBD>PLAY_GetLastErrorEx<EFBFBD>ӿڻ<EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
PLAYSDK_API BOOL CALLMETHOD PLAY_CloseFile(LONG nPort);
/**
* <EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
* @param[in] nPort ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[in] pUserData <EFBFBD>û<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
typedef void (CALLBACK *fFileEndCBFun)(DWORD nPort, void* pUserData);
/**
* <EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><EFBFBD><EFBFBD>
*
* @param[in] nPort ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[out] pFileEndCBFun <EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD>ָ<EFBFBD><EFBFBD>
* @param[in] pUserData <EFBFBD>û<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @return BOOL<EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>TRUE<EFBFBD><EFBFBD>ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD><EFBFBD>FALSE
* @note <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><EFBFBD><EFBFBD>PLAY_GetLastErrorEx<EFBFBD>ӿڻ<EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
PLAYSDK_API BOOL CALLMETHOD PLAY_SetFileEndCallBack(LONG nPort, fFileEndCBFun pFileEndCBFun, void* pUserData);
/************************************************************************/
//> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
/************************************************************************/
/**
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ<EFBFBD><EFBFBD>
*
* @param[in] nPort ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[in] nMode <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ<EFBFBD><EFBFBD>0ʵʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>1<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD>
* @return BOOL<EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>TRUE<EFBFBD><EFBFBD>ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD><EFBFBD>FALSE
* @note <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><EFBFBD><EFBFBD>PLAY_GetLastErrorEx<EFBFBD>ӿڻ<EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
PLAYSDK_API BOOL CALLMETHOD PLAY_SetStreamOpenMode(LONG nPort,DWORD nMode);
/**
* <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ<EFBFBD><EFBFBD>
*
* @param[in] nPort ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @return LONG<EFBFBD><EFBFBD>STREAM_MODE_REALSTREAM<EFBFBD><EFBFBD>STREAM_MODE_FILESTREAM
*/
PLAYSDK_API LONG CALLMETHOD PLAY_GetStreamOpenMode(LONG nPort);
/**
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
* @param[in] nPort ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[in] pFileHeadBuf <EFBFBD>ļ<EFBFBD>ͷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[in] nSize <EFBFBD>ļ<EFBFBD>ͷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[in] nBufPoolSize <EFBFBD><EFBFBD><EFBFBD>ò<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ<EFBFBD><EFBFBD>SOURCE_BUF_MIN~SOURCE_BUF_MAX
* @return BOOL<EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>TRUE<EFBFBD><EFBFBD>ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD><EFBFBD>FALSE
* @note <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><EFBFBD><EFBFBD>PLAY_GetLastErrorEx<EFBFBD>ӿڻ<EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
PLAYSDK_API BOOL CALLMETHOD PLAY_OpenStream(LONG nPort,PBYTE pFileHeadBuf,DWORD nSize,DWORD nBufPoolSize);
/**
* <EFBFBD>ر<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
* @param[in] nPort ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @return BOOL<EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>TRUE<EFBFBD><EFBFBD>ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD><EFBFBD>FALSE
* @note <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><EFBFBD><EFBFBD>PLAY_GetLastErrorEx<EFBFBD>ӿڻ<EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
PLAYSDK_API BOOL CALLMETHOD PLAY_CloseStream(LONG nPort);
/**
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>PLAY_Play֮<EFBFBD><EFBFBD>ʹ<EFBFBD>á<EFBFBD>
*
* @param[in] nPort ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[in] pBuf <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ
* @param[in] nSize <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><EFBFBD><EFBFBD>
* @return BOOL<EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>TURE<EFBFBD><EFBFBD>ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD><EFBFBD>FALSE
* @note <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><EFBFBD><EFBFBD>PLAY_GetLastErrorEx<EFBFBD>ӿڻ<EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
PLAYSDK_API BOOL CALLMETHOD PLAY_InputData(LONG nPort,PBYTE pBuf,DWORD nSize);
/************************************************************************/
//> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
/************************************************************************/
/**
* <EFBFBD>Զ<EFBFBD>ռ<EFBFBD><EFBFBD>ʽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
* @param[in] nPort ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @return BOOL<EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>TURE<EFBFBD><EFBFBD>ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD><EFBFBD>FALSE
* @note <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><EFBFBD><EFBFBD>PLAY_GetLastErrorEx<EFBFBD>ӿڻ<EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
PLAYSDK_API BOOL CALLMETHOD PLAY_PlaySound(LONG nPort);
/**
* <EFBFBD>ر<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ռ<EFBFBD><EFBFBD>ʽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
* @return BOOL<EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>TURE<EFBFBD><EFBFBD>ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD><EFBFBD>FALSE
* @note <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><EFBFBD><EFBFBD>PLAY_GetLastErrorEx<EFBFBD>ӿڻ<EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
PLAYSDK_API BOOL CALLMETHOD PLAY_StopSound();
/**
* <EFBFBD>Թ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
* @param[in] nPort ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @return BOOL<EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>TURE<EFBFBD><EFBFBD>ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD><EFBFBD>FALSE
* @note <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><EFBFBD><EFBFBD>PLAY_GetLastErrorEx<EFBFBD>ӿڻ<EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
PLAYSDK_API BOOL CALLMETHOD PLAY_PlaySoundShare(LONG nPort);
/**
* <EFBFBD>ر<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
* @param[in] nPort ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @return BOOL<EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>TURE<EFBFBD><EFBFBD>ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD><EFBFBD>FALSE
* @note <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><EFBFBD><EFBFBD>PLAY_GetLastErrorEx<EFBFBD>ӿڻ<EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
PLAYSDK_API BOOL CALLMETHOD PLAY_StopSoundShare(LONG nPort);
/**
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
* @param[in] nPort ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[in] nVolume <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ0-0xFFFF
* @return BOOL<EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>TURE<EFBFBD><EFBFBD>ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD><EFBFBD>FALSE
* @note <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><EFBFBD><EFBFBD>PLAY_GetLastErrorEx<EFBFBD>ӿڻ<EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
PLAYSDK_API BOOL CALLMETHOD PLAY_SetVolume(LONG nPort,WORD nVolume);
/**
* <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
* @param[in] nPort ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @return WORD<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
* @note <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD>á<EFBFBD>
*/
PLAYSDK_API WORD CALLMETHOD PLAY_GetVolume(LONG nPort);
/**
* <EFBFBD><EFBFBD>Ƶ<EFBFBD>ɼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݻص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
* @param[in] pDataBuffer <EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD>ַ
* @param[in] DataLength <EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><EFBFBD><EFBFBD>
* @param[in] pUserData <EFBFBD>û<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
typedef void (CALLBACK *pCallFunction)(LPBYTE pDataBuffer, DWORD DataLength, void* pUserData);
/**
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD>ɼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܡ<EFBFBD>
*
* @param[in] pProc<EFBFBD><EFBFBD>Ƶ<EFBFBD>ɼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݻص<EFBFBD>ָ<EFBFBD><EFBFBD>
* @param[in] nBitsPerSample <EFBFBD><EFBFBD>Ƶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD>
* @param[in] nSamplesPerSec <EFBFBD><EFBFBD>Ƶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[in] nLength <EFBFBD><EFBFBD><EFBFBD>ݻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ij<EFBFBD><EFBFBD>ȣ<EFBFBD><EFBFBD><EFBFBD>Χ320-4096
* @param[in] encodetype <EFBFBD>Բɼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݽ<EFBFBD><EFBFBD>б<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD>0<EFBFBD><EFBFBD>pcm<EFBFBD><EFBFBD>1<EFBFBD><EFBFBD>g711a<EFBFBD><EFBFBD>2<EFBFBD><EFBFBD>g711u<EFBFBD><EFBFBD>pcm<EFBFBD>ص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD>g711a<EFBFBD><EFBFBD>g711u<EFBFBD>ص<EFBFBD><EFBFBD><EFBFBD><EFBFBD>´<EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @return BOOL<EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>TURE<EFBFBD><EFBFBD>ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD><EFBFBD>FALSE
* @note <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><EFBFBD><EFBFBD>PLAY_GetLastErrorEx<EFBFBD>ӿڻ<EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
PLAYSDK_API BOOL CALLMETHOD PLAY_OpenAudioRecord(pCallFunction pProc, LONG nBitsPerSample, LONG nSamplesPerSec, LONG nLength, LONG encodetype, void* pUserData);
/**
* <EFBFBD>ر<EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD>ɼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܡ<EFBFBD>
*
* @return BOOL<EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>TURE<EFBFBD><EFBFBD>ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD><EFBFBD>FALSE
* @note <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><EFBFBD><EFBFBD>PLAY_GetLastErrorEx<EFBFBD>ӿڻ<EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
PLAYSDK_API BOOL CALLMETHOD PLAY_CloseAudioRecord();
/**
* <EFBFBD><EFBFBD>Ƶ<EFBFBD>ɼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܡ<EFBFBD>
*
* @param[in] bStart <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ر<EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD>ɼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1-<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0-<EFBFBD>رգ<EFBFBD> <EFBFBD><EFBFBD>֧<EFBFBD><EFBFBD>Andriod/IOS
* @param[in] nPitch <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ij̶ȣ<EFBFBD><EFBFBD><EFBFBD>Χ<EFBFBD><EFBFBD>-50-50<EFBFBD><EFBFBD>0ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[in] bQuick <EFBFBD>ǿ<EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD>֣<EFBFBD>0-<EFBFBD><EFBFBD>ʹ<EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߣ<EFBFBD>cpu<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1-ʹ<EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>½<EFBFBD><EFBFBD><EFBFBD>cpu<EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD>
* @return BOOL<EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>TURE<EFBFBD><EFBFBD>ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD><EFBFBD>FALSE
* @note <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><EFBFBD><EFBFBD>PLAY_GetLastErrorEx<EFBFBD>ӿڻ<EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
PLAYSDK_API BOOL CALLMETHOD PLAY_SpeechChange(BOOL bStart, int nPitch, BOOL bQuick);
/**
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD>ɼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ű<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
* @param[in] fRatio <EFBFBD><EFBFBD><EFBFBD>ű<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0С<EFBFBD><EFBFBD>1Ϊ<EFBFBD><EFBFBD>Ƶ<EFBFBD><EFBFBD>С<EFBFBD><EFBFBD>1Ϊԭʼ<EFBFBD><EFBFBD>Ƶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1Ϊ<EFBFBD><EFBFBD>Ƶ<EFBFBD>Ŵ<EFBFBD>
* @return BOOL<EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>TURE<EFBFBD><EFBFBD>ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD><EFBFBD>FALSE
* @note <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><EFBFBD><EFBFBD>PLAY_GetLastErrorEx<EFBFBD>ӿڻ<EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
PLAYSDK_API BOOL CALLMETHOD PLAY_SetAudioRecScaling(float fRatio);
/**
* <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD>Ƶ<EFBFBD>ɼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ű<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
* @param[out] pfRatio <EFBFBD><EFBFBD><EFBFBD>ű<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0С<EFBFBD><EFBFBD>1Ϊ<EFBFBD><EFBFBD>Ƶ<EFBFBD><EFBFBD>С<EFBFBD><EFBFBD>1Ϊԭʼ<EFBFBD><EFBFBD>Ƶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1Ϊ<EFBFBD><EFBFBD>Ƶ<EFBFBD>Ŵ<EFBFBD>
* @return BOOL<EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>TURE<EFBFBD><EFBFBD>ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD><EFBFBD>FALSE
* @note <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><EFBFBD><EFBFBD>PLAY_GetLastErrorEx<EFBFBD>ӿڻ<EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
PLAYSDK_API BOOL CALLMETHOD PLAY_GetAudioRecScaling(float* pfRatio);
/**
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ű<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
* @param[in] nPort ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[in] fRatio <EFBFBD><EFBFBD><EFBFBD>ű<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0С<EFBFBD><EFBFBD>1Ϊ<EFBFBD><EFBFBD>Ƶ<EFBFBD><EFBFBD>С<EFBFBD><EFBFBD>1Ϊԭʼ<EFBFBD><EFBFBD>Ƶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1Ϊ<EFBFBD><EFBFBD>Ƶ<EFBFBD>Ŵ<EFBFBD><EFBFBD><EFBFBD>
* @return BOOL<EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>TURE<EFBFBD><EFBFBD>ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD><EFBFBD>FALSE
* @note <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><EFBFBD><EFBFBD>PLAY_GetLastErrorEx<EFBFBD>ӿڻ<EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
PLAYSDK_API BOOL CALLMETHOD PLAY_SetAudioRenderScaling(LONG nPort, float fRatio);
/**
* <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD>Ƶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ű<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
* @param[in] nPort ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[out] pfRatio <EFBFBD><EFBFBD><EFBFBD>ű<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0С<EFBFBD><EFBFBD>1Ϊ<EFBFBD><EFBFBD>Ƶ<EFBFBD><EFBFBD>С<EFBFBD><EFBFBD>1Ϊԭʼ<EFBFBD><EFBFBD>Ƶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1Ϊ<EFBFBD><EFBFBD>Ƶ<EFBFBD>Ŵ<EFBFBD>
* @return BOOL<EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>TURE<EFBFBD><EFBFBD>ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD><EFBFBD>FALSE
* @note <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><EFBFBD><EFBFBD>PLAY_GetLastErrorEx<EFBFBD>ӿڻ<EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
PLAYSDK_API BOOL CALLMETHOD PLAY_GetAudioRenderScaling(LONG nPort, float* pfRatio);
/**
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>WAVE<EFBFBD><EFBFBD><EFBFBD>Σ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ըı<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĵ<EFBFBD>С<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>PLAY_SetVolume<EFBFBD>IJ<EFBFBD>ͬ<EFBFBD><EFBFBD><EFBFBD>ڣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD>ֻ<EFBFBD>Ը<EFBFBD>·<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD><EFBFBD><EFBFBD>PLAY_SetVolume<EFBFBD><EFBFBD>
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵͳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>á<EFBFBD>
*
* @param[in] nPort ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[in] nCoefficient <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD>Dz<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡֵ<EFBFBD><EFBFBD>Χ<EFBFBD><EFBFBD>MIN_WAVE_COEF<EFBFBD><EFBFBD>MAX_WAVE_COEF<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ΪMIN_WAVE_COEF<EFBFBD><EFBFBD>
* ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ΪMAX_WAVE_COEF<EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @return BOOL<EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>TURE<EFBFBD><EFBFBD>ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD><EFBFBD>FALSE
* @note <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><EFBFBD><EFBFBD>PLAY_GetLastErrorEx<EFBFBD>ӿڻ<EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
PLAYSDK_API BOOL CALLMETHOD PLAY_AdjustWaveAudio(LONG nPort,LONG nCoefficient);
/************************************************************************/
//> <20><><EFBFBD>ſ<EFBFBD><C5BF><EFBFBD>
/************************************************************************/
/**
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>š<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ſ<EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>hWnd<EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫȫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD>ֻҪ<EFBFBD><EFBFBD>hWnd<EFBFBD><EFBFBD><EFBFBD>ڷŴ<EFBFBD><EFBFBD><EFBFBD>ȫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̣߳<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD>
* <EFBFBD>ھ<EFBFBD><EFBFBD><EFBFBD>ΪNULL<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Dz<EFBFBD>Ӱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
* @param[in] nPort ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[in] hWnd <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD>Ĵ<EFBFBD><EFBFBD>ھ<EFBFBD><EFBFBD><EFBFBD>
* @return BOOL<EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>TURE<EFBFBD><EFBFBD>ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD><EFBFBD>FALSE
* @note <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><EFBFBD><EFBFBD>PLAY_GetLastErrorEx<EFBFBD>ӿڻ<EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
PLAYSDK_API BOOL CALLMETHOD PLAY_Play(LONG nPort, HWND hWnd);
/**
* <EFBFBD>رղ<EFBFBD><EFBFBD>š<EFBFBD>
*
* @param[in] nPort ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @return BOOL<EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>TURE<EFBFBD><EFBFBD>ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD><EFBFBD>FALSE
* @note <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><EFBFBD><EFBFBD>PLAY_GetLastErrorEx<EFBFBD>ӿڻ<EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
PLAYSDK_API BOOL CALLMETHOD PLAY_Stop(LONG nPort);
/**
* <EFBFBD><EFBFBD>ͣ/<EFBFBD>ָ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>š<EFBFBD>
*
* @param[in] nPort ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[in] nPause 1<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͣ<EFBFBD><EFBFBD>0<EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD>
* @return <EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>TURE<EFBFBD><EFBFBD>ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD><EFBFBD>FALSE
* @note <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><EFBFBD><EFBFBD>PLAY_GetLastErrorEx<EFBFBD>ӿڻ<EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
PLAYSDK_API BOOL CALLMETHOD PLAY_Pause(LONG nPort,DWORD nPause);
/**
* <EFBFBD><EFBFBD><EFBFBD>ٲ<EFBFBD><EFBFBD>š<EFBFBD>ÿ<EFBFBD>ε<EFBFBD><EFBFBD>ý<EFBFBD>ʹ<EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٶ<EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD>ָ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ŵ<EFBFBD><EFBFBD><EFBFBD>PLAY_Play()<EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD>ǰλ<EFBFBD>ÿ<EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>š<EFBFBD>
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٶȷ<EFBFBD>ΧΪ[1/64,64]<EFBFBD><EFBFBD>
*
* @param[in] nPort ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @return <EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>TURE<EFBFBD><EFBFBD>ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD><EFBFBD>FALSE
* @note <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><EFBFBD><EFBFBD>PLAY_GetLastErrorEx<EFBFBD>ӿڻ<EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
PLAYSDK_API BOOL CALLMETHOD PLAY_Slow(LONG nPort);
/**
* <EFBFBD><EFBFBD><EFBFBD>ٲ<EFBFBD><EFBFBD>š<EFBFBD>ÿ<EFBFBD>ε<EFBFBD><EFBFBD>ý<EFBFBD>ʹ<EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٶȼӿ<EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD>ָ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ŵ<EFBFBD><EFBFBD><EFBFBD>PLAY_Play()<EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD>ǰλ<EFBFBD>ÿ<EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD>ţ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڸ߱<EFBFBD><EFBFBD>ٲ<EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD><EFBFBD>ٶȡ<EFBFBD>
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٶȷ<EFBFBD>ΧΪ[1/64, 64]<EFBFBD><EFBFBD>
*
* @param[in] nPort ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @return <EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>TURE<EFBFBD><EFBFBD>ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD><EFBFBD>FALSE
* @note <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><EFBFBD><EFBFBD>PLAY_GetLastErrorEx<EFBFBD>ӿڻ<EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
PLAYSDK_API BOOL CALLMETHOD PLAY_Fast(LONG nPort);
/**
* <EFBFBD><EFBFBD>֡<EFBFBD><EFBFBD><EFBFBD>š<EFBFBD>Ҫ<EFBFBD>ָ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ŵ<EFBFBD><EFBFBD><EFBFBD>PLAY_ Play<EFBFBD><EFBFBD>
*
* @param[in] nPort ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @return <EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>TURE<EFBFBD><EFBFBD>ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD><EFBFBD>FALSE
* @note <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><EFBFBD><EFBFBD>PLAY_GetLastErrorEx<EFBFBD>ӿڻ<EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
PLAYSDK_API BOOL CALLMETHOD PLAY_OneByOne(LONG nPort);
/**
* <EFBFBD><EFBFBD>֡<EFBFBD><EFBFBD><EFBFBD>š<EFBFBD>Ҫ<EFBFBD>ָ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ŵ<EFBFBD><EFBFBD><EFBFBD>PLAY_ Play<EFBFBD><EFBFBD>ֻ֧<EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ţ<EFBFBD><EFBFBD>ұ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֮<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܵ<EFBFBD><EFBFBD>á<EFBFBD>
*
* @param[in] nPort ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @return <EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>TURE<EFBFBD><EFBFBD>ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD><EFBFBD>FALSE
* @note <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><EFBFBD><EFBFBD>PLAY_GetLastErrorEx<EFBFBD>ӿڻ<EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
PLAYSDK_API BOOL CALLMETHOD PLAY_OneByOneBack(LONG nPort);
/**
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
* @param[in] nPort ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[in] nRegionNum <EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֻ<EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>(ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)<EFBFBD><EFBFBD>Ϊ0
* @param[in] nBrightness <EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD>Ĭ<EFBFBD><EFBFBD>64<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ0-128
* @param[in] nContrast <EFBFBD>Աȶȡ<EFBFBD>Ĭ<EFBFBD><EFBFBD>64<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ0-128
* @param[in] nSaturation <EFBFBD><EFBFBD><EFBFBD>Ͷȡ<EFBFBD>Ĭ<EFBFBD><EFBFBD>64<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ0-128
* @param[in] nHue ɫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĭ<EFBFBD><EFBFBD>64<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ0-128
* @return <EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>TURE<EFBFBD><EFBFBD>ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD><EFBFBD>FALSE
* @note <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><EFBFBD><EFBFBD>PLAY_GetLastErrorEx<EFBFBD>ӿڻ<EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
PLAYSDK_API BOOL CALLMETHOD PLAY_SetColor(LONG nPort, DWORD nRegionNum, int nBrightness, int nContrast, int nSaturation, int nHue);
/**
* <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD>Ƶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
* @param[in] nPort ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[in] nRegionNum <EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[out] pBrightness <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[out] pContrast <EFBFBD>Աȶ<EFBFBD>
* @param[out] pSaturation <EFBFBD><EFBFBD><EFBFBD>Ͷ<EFBFBD>
* @param[out] pHue ɫ<EFBFBD><EFBFBD>
* @return <EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>TURE<EFBFBD><EFBFBD>ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD><EFBFBD>FALSE
* @note <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><EFBFBD><EFBFBD>PLAY_GetLastErrorEx<EFBFBD>ӿڻ<EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
PLAYSDK_API BOOL CALLMETHOD PLAY_GetColor(LONG nPort, DWORD nRegionNum, int *pBrightness, int *pContrast, int *pSaturation, int *pHue);
/**
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><EFBFBD><EFBFBD>Ų<EFBFBD><EFBFBD>ԡ<EFBFBD>
*
* @param[in] nPort ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[in] nAVSyncType <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ż<EFBFBD>׼<EFBFBD><EFBFBD><EFBFBD><EFBFBD>AV_SYNC_TYPE
* @return <EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>TURE<EFBFBD><EFBFBD>ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD><EFBFBD>FALSE
* @note <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><EFBFBD><EFBFBD>PLAY_GetLastErrorEx<EFBFBD>ӿڻ<EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
PLAYSDK_API BOOL CALLMETHOD PLAY_SetAVSyncType(LONG nPort,AV_SYNC_TYPE nAVSyncType);
/**
* <EFBFBD>ı<EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٶȡ<EFBFBD><EFBFBD>ڷ<EFBFBD>1<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
* @param[in] nPort ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[in] fCoff <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٶȣ<EFBFBD><EFBFBD><EFBFBD>Χ<EFBFBD><EFBFBD>1/64-64<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٶȽϿ<EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD>֡<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @return <EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>TURE<EFBFBD><EFBFBD>ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD><EFBFBD>FALSE
* @note <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><EFBFBD><EFBFBD>PLAY_GetLastErrorEx<EFBFBD>ӿڻ<EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
PLAYSDK_API BOOL CALLMETHOD PLAY_SetPlaySpeed(LONG nPort, float fCoff);
/**
* <EFBFBD><EFBFBD><EFBFBD>ò<EFBFBD><EFBFBD>ŷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
* @param[in] nPort ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[in] emDirection <EFBFBD><EFBFBD><EFBFBD>ŷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ţ<EFBFBD>1<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @return <EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>TURE<EFBFBD><EFBFBD>ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD><EFBFBD>FALSE<EFBFBD><EFBFBD>
* @note <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><EFBFBD><EFBFBD>PLAY_GetLastErrorEx<EFBFBD>ӿڻ<EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
PLAYSDK_API BOOL CALLMETHOD PLAY_SetPlayDirection(LONG nPort, DWORD emDirection);
/**
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӳٲ<EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>[nDelay,nThreshold]<EFBFBD><EFBFBD>С<EFBFBD><EFBFBD>nDelay<EFBFBD><EFBFBD>΢<EFBFBD><EFBFBD><EFBFBD>ţ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>nThreshold<EFBFBD><EFBFBD>΢<EFBFBD><EFBFBD><EFBFBD>ţ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֮<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>š<EFBFBD>
*
* @param[in] nPort ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[in] nDelay(ms) <EFBFBD>ӳ<EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ţ<EFBFBD>С<EFBFBD>ڸ<EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>΢<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[in] nThreshold(ms) <EFBFBD><EFBFBD>ֵʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD>ڸ<EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ţ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڸ<EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>΢<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @return <EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>TURE<EFBFBD><EFBFBD>ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD><EFBFBD>FALSE
* @note <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><EFBFBD><EFBFBD>PLAY_GetLastErrorEx<EFBFBD>ӿڻ<EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
PLAYSDK_API BOOL CALLMETHOD PLAY_SetDelayTime(LONG nPort, int nDelay, int nThreshold);
/**
* <EFBFBD><EFBFBD><EFBFBD>ò<EFBFBD><EFBFBD>Ų<EFBFBD><EFBFBD>ԣ<EFBFBD>ֻ<EFBFBD><EFBFBD>ʵʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><EFBFBD>
*
* @param[in] nPort ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[in] nStartTime(ms) <EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>
* @param[in] nSlowTime(ms) <EFBFBD><EFBFBD>ֵʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD>ڸ<EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ţ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڸ<EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>΢<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @return <EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>TURE<EFBFBD><EFBFBD>ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD><EFBFBD>FALSE
* @note <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><EFBFBD><EFBFBD>PLAY_GetLastErrorEx<EFBFBD>ӿڻ<EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
PLAYSDK_API BOOL CALLMETHOD PLAY_SetPlayMethod(LONG nPort, int nStartTime, int nSlowTime, int nFastTime, int nFailedTime);
/* ʵʱ<CAB5><CAB1><EFBFBD><EFBFBD><EFBFBD>ݻ<EFBFBD><DDBB><EFBFBD>ģʽ */
typedef enum
{
CACHE_MODE_OFF = 0, // <20>ر<EFBFBD>ʵʱ<CAB5><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>ģʽ
ADAPTIVE_CACHE, // <20><><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>
REALTIME_FIRST, // ʵʱ<CAB5><CAB1><EFBFBD><EFBFBD>
FLUENCY_FIRST, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
} CACHE_MODE;
/**
* <EFBFBD><EFBFBD><EFBFBD>ò<EFBFBD><EFBFBD>Ż<EFBFBD><EFBFBD><EFBFBD>ģʽ<EFBFBD><EFBFBD>ֻ<EFBFBD><EFBFBD>ʵʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><EFBFBD>
*
* @param[in] nPort ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[in] cacheMode ʵʱ<EFBFBD><EFBFBD><EFBFBD>ݻ<EFBFBD><EFBFBD><EFBFBD>ģʽ
* @return <EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>TURE<EFBFBD><EFBFBD>ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD><EFBFBD>FALSE
* @note <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><EFBFBD><EFBFBD>PLAY_GetLastErrorEx<EFBFBD>ӿڻ<EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
PLAYSDK_API BOOL CALLMETHOD PLAY_SetCacheMode(LONG nPort, CACHE_MODE cacheMode);
/**
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><EFBFBD><EFBFBD>Ų<EFBFBD><EFBFBD>ԣ<EFBFBD>ֻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڶԽ<EFBFBD>ҵ<EFBFBD>񣩣<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>PLAY_PlaySound֮<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
* @param[in] nPort ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[in] nClearTime(ms) <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
* @return <EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>TURE<EFBFBD><EFBFBD>ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD><EFBFBD>FALSE
* @note <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><EFBFBD><EFBFBD>PLAY_GetLastErrorEx<EFBFBD>ӿڻ<EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
PLAYSDK_API BOOL CALLMETHOD PLAY_SetAudioPlayMethod(LONG nPort, int nClearTime);
/**
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ0-3<EFBFBD><EFBFBD>
*
* @param[in] nPort ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[in] nrotateType <EFBFBD><EFBFBD>ת<EFBFBD><EFBFBD><EFBFBD>͡<EFBFBD>0<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><EFBFBD>1<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת90<EFBFBD>ȣ<EFBFBD>2<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת180<EFBFBD>ȣ<EFBFBD>3<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת270<EFBFBD><EFBFBD>
* @return <EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>TURE<EFBFBD><EFBFBD>ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD><EFBFBD>FALSE
* @note <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><EFBFBD><EFBFBD>PLAY_GetLastErrorEx<EFBFBD>ӿڻ<EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
PLAYSDK_API BOOL CALLMETHOD PLAY_SetRotateAngle(LONG nPort , int nrotateType);
/************************************************************************/
//> <20>ļ<EFBFBD><C4BC><EFBFBD>λ
/************************************************************************/
/**
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD>(<EFBFBD>ٷֱ<EFBFBD>)<EFBFBD><EFBFBD>
*
* @param[in] nPort ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[in] fRelativePos <EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȵİٷֱ<EFBFBD>
* @return BOOL<EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>TRUE<EFBFBD><EFBFBD>ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD><EFBFBD>FALSE
* @note <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><EFBFBD><EFBFBD>PLAY_GetLastErrorEx<EFBFBD>ӿڻ<EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
PLAYSDK_API BOOL CALLMETHOD PLAY_SetPlayPos(LONG nPort,float fRelativePos);
/**
* <EFBFBD><EFBFBD>ȡ<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD>(<EFBFBD>ٷֱ<EFBFBD>)<EFBFBD><EFBFBD>
*
* @param[in] nPort ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @return float<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD>ã<EFBFBD><EFBFBD><EFBFBD>Χ0-100%
*/
PLAYSDK_API float CALLMETHOD PLAY_GetPlayPos(LONG nPort);
/**
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>
*
* @param[in] nPort ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[in] nTime <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD>õ<EFBFBD>ָ<EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @return BOOL<EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>TRUE<EFBFBD><EFBFBD>ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD><EFBFBD>FALSE
* @note <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><EFBFBD><EFBFBD>PLAY_GetLastErrorEx<EFBFBD>ӿڻ<EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
PLAYSDK_API BOOL CALLMETHOD PLAY_SetPlayedTimeEx(LONG nPort,DWORD nTime);
/**
* <EFBFBD><EFBFBD>ȡ<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>
*
* @param[in] nPort ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @return DWORD<EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD><EFBFBD>ŵ<EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
PLAYSDK_API DWORD CALLMETHOD PLAY_GetPlayedTimeEx(LONG nPort);
/**
* <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD><EFBFBD>ŵ<EFBFBD>֡<EFBFBD><EFBFBD><EFBFBD>ţ<EFBFBD>PLAY_GetPlayedFrames<EFBFBD><EFBFBD><EFBFBD>ܹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֡<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD>ò<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ı<EFBFBD><EFBFBD>ô<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ķ<EFBFBD><EFBFBD><EFBFBD>ֵӦ<EFBFBD>÷dz<EFBFBD><EFBFBD>ӽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ
* <EFBFBD><EFBFBD><EFBFBD>ݡ<EFBFBD>
*
* @param[in] nPort ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @return DWORD<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD><EFBFBD>ŵ<EFBFBD>֡<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
PLAYSDK_API DWORD CALLMETHOD PLAY_GetCurrentFrameNum(LONG nPort);
/**
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD>ǰ֡<EFBFBD><EFBFBD><EFBFBD><EFBFBD>֡<EFBFBD>ţ<EFBFBD><EFBFBD>˺<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֮<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܵ<EFBFBD><EFBFBD>á<EFBFBD>
*
* @param[in] nPort ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[in] nFrameNum ֡<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @return BOOL<EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>TRUE<EFBFBD><EFBFBD>ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD><EFBFBD>FALSE
* @note <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><EFBFBD><EFBFBD>PLAY_GetLastErrorEx<EFBFBD>ӿڻ<EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
PLAYSDK_API BOOL CALLMETHOD PLAY_SetCurrentFrameNum(LONG nPort,DWORD nFrameNum);
/**
* <EFBFBD><EFBFBD>ȡ<EFBFBD>Ѳ<EFBFBD><EFBFBD>ŵ<EFBFBD>֡<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
* @param[in] nPort ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @return DWORD<EFBFBD><EFBFBD><EFBFBD>Ѿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ŵ<EFBFBD><EFBFBD><EFBFBD>Ƶ֡<EFBFBD><EFBFBD>
*/
PLAYSDK_API DWORD CALLMETHOD PLAY_GetPlayedFrames(LONG nPort);
/**
* <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD>ǰ<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>
*
* @param[in] nPort ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @return DWORD<EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD><EFBFBD>ŵ<EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD>
*/
PLAYSDK_API DWORD CALLMETHOD PLAY_GetPlayedTime(LONG nPort);
/**
* <EFBFBD><EFBFBD>ȡ<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>
*
* @param[in] nPort ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @return DWORD<EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD>ܵ<EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD>
*/
PLAYSDK_API DWORD CALLMETHOD PLAY_GetFileTime(LONG nPort);
/**
* <EFBFBD><EFBFBD>ȡ<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD>֡<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
* @param[in] nPort ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @return DWORD<EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD>е<EFBFBD><EFBFBD><EFBFBD>֡<EFBFBD><EFBFBD>
*/
PLAYSDK_API DWORD CALLMETHOD PLAY_GetFileTotalFrames(LONG nPort);
/************************************************************************/
//> <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>
/************************************************************************/
/**
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
* @param[in] nPort ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[in] pUserData <EFBFBD>û<EFBFBD><EFBFBD>Զ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
typedef void(CALLBACK *fFileRefDoneCBFun)(DWORD nPort, void* pUserData);
/**
* <EFBFBD><EFBFBD><EFBFBD>ý<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̺<EFBFBD>ʱ<EFBFBD>Ƚϳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Լ
* ÿ<EFBFBD><EFBFBD><EFBFBD>40M<EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD>Ӳ<EFBFBD>̶<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݱȽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĺ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* <EFBFBD><EFBFBD>̨<EFBFBD><EFBFBD><EFBFBD>ɣ<EFBFBD><EFBFBD><EFBFBD>Ҫʹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĺ<EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD>ȴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̽<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӿڲ<EFBFBD><EFBFBD><EFBFBD>Ӱ<EFBFBD>
*
* @param[in] nPort ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[out] pFileRefDoneCBFun <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD>
* @param[in] pUserData <EFBFBD>û<EFBFBD><EFBFBD>Զ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @return BOOL<EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>TRUE<EFBFBD><EFBFBD>ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD><EFBFBD>FALSE
* @note <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><EFBFBD><EFBFBD>PLAY_GetLastErrorEx<EFBFBD>ӿڻ<EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
PLAYSDK_API BOOL CALLMETHOD PLAY_SetFileRefCallBack(LONG nPort,
fFileRefDoneCBFun pFileRefDoneCBFunc,
void* pUserData);
/**
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
* @param[in] nPort ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[in] bIndexCreated <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־<EFBFBD><EFBFBD>TRUE<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD>FALSEʧ<EFBFBD><EFBFBD>
* @param[in] pUserData <EFBFBD>û<EFBFBD><EFBFBD>Զ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
typedef void (CALLBACK *fFileRefDoneCBFunEx)(DWORD nPort, BOOL bIndexCreated, void* pUserData);
/**
* <EFBFBD><EFBFBD><EFBFBD>ý<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̺<EFBFBD>ʱ<EFBFBD>Ƚϳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Լ
* ÿ<EFBFBD><EFBFBD><EFBFBD>40M<EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD>Ӳ<EFBFBD>̶<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݱȽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĺ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* <EFBFBD><EFBFBD>̨<EFBFBD><EFBFBD><EFBFBD>ɣ<EFBFBD><EFBFBD><EFBFBD>Ҫʹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĺ<EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD>ȴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̽<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӿڲ<EFBFBD><EFBFBD><EFBFBD>Ӱ<EFBFBD>
*
* @param[in] nPort ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[out] pFileRefDoneCBFunEx <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD>
* @param[in] pUserData <EFBFBD>û<EFBFBD><EFBFBD>Զ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @return BOOL<EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>TRUE<EFBFBD><EFBFBD>ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD><EFBFBD>FALSE
* @note <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><EFBFBD><EFBFBD>PLAY_GetLastErrorEx<EFBFBD>ӿڻ<EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
PLAYSDK_API BOOL CALLMETHOD PLAY_SetFileRefCallBackEx(LONG nPort, fFileRefDoneCBFunEx pFileRefDoneCBFunEx, void* pUserData);
/**
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD>֮ǰ<EFBFBD>Ĺؼ<EFBFBD>֡λ<EFBFBD>ã<EFBFBD>ͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӹؼ<EFBFBD>֡<EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* <EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǵӹؼ<EFBFBD>֡<EFBFBD><EFBFBD>ʼ<EFBFBD>ģ<EFBFBD><EFBFBD><EFBFBD>ô<EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD>ؼ<EFBFBD>֮֡ǰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݻ<EFBFBD><EFBFBD><EFBFBD>ԡ<EFBFBD><EFBFBD><EFBFBD>
* <EFBFBD><EFBFBD><EFBFBD>û<EFBFBD>Ҫ<EFBFBD><EFBFBD>ȡ<EFBFBD>ļ<EFBFBD><EFBFBD>е<EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD>ÿ<EFBFBD><EFBFBD>Ǵӹؼ<EFBFBD>֡<EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD>
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ3֡<EFBFBD><EFBFBD><EFBFBD>ݡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȫ<EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD><EFBFBD>£<EFBFBD><EFBFBD><EFBFBD>
* PLAY_GetNextKeyFramePos<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD>ã<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD>ּ<EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* <EFBFBD><EFBFBD><EFBFBD>ؼ<EFBFBD>֡<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>йء<EFBFBD>
*
* @param[in] nPort ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[in] nValue <EFBFBD><EFBFBD>ǰλ<EFBFBD>ã<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>֡<EFBFBD>ţ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>nTypeָ<EFBFBD><EFBFBD>
* @param[in] nType ָ<EFBFBD><EFBFBD>nValue<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͡<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>nType<EFBFBD><EFBFBD>BY_FRAMENUM<EFBFBD><EFBFBD><EFBFBD><EFBFBD>nValue<EFBFBD><EFBFBD>ʾ֡<EFBFBD>ţ<EFBFBD>nType<EFBFBD><EFBFBD>BY_FRAMETIME<EFBFBD><EFBFBD><EFBFBD><EFBFBD>nValue<EFBFBD><EFBFBD>ʾʱ<EFBFBD><EFBFBD><EFBFBD>λms<EFBFBD><EFBFBD>
* @param[in] pFramePos <EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><EFBFBD>Ĺؼ<EFBFBD>֡<EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>λ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD>ָ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>PFRAME_POS<EFBFBD><EFBFBD>
* @return BOOL<EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>TRUE<EFBFBD><EFBFBD>ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD><EFBFBD>FALSE
* @note <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><EFBFBD><EFBFBD>PLAY_GetLastErrorEx<EFBFBD>ӿڻ<EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
PLAYSDK_API BOOL CALLMETHOD PLAY_GetKeyFramePos(LONG nPort,DWORD nValue, DWORD nType, PFRAME_POS pFramePos);
/**
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD>֮<EFBFBD><EFBFBD><EFBFBD>Ĺؼ<EFBFBD>֡λ<EFBFBD>á<EFBFBD>
*
* @param[in] nPort ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[in] nValue <EFBFBD><EFBFBD>ǰλ<EFBFBD>ã<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>֡<EFBFBD>ţ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>nTypeָ<EFBFBD><EFBFBD>
* @param[in] nType ָ<EFBFBD><EFBFBD>nValue<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͡<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>nType<EFBFBD><EFBFBD>BY_FRAMENUM,<EFBFBD><EFBFBD>nValue<EFBFBD><EFBFBD>ʾ֡<EFBFBD>ţ<EFBFBD>nType<EFBFBD><EFBFBD>BY_FRAMETIME,<EFBFBD><EFBFBD>nValue<EFBFBD><EFBFBD>ʾʱ<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD>λms<EFBFBD><EFBFBD>
* @param[in] pFramePos <EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><EFBFBD>Ĺؼ<EFBFBD>֡<EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>λ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD>ָ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>PFRAME_POS<EFBFBD><EFBFBD>
* @return BOOL<EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>TRUE<EFBFBD><EFBFBD>ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD><EFBFBD>FALSE
* @note <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><EFBFBD><EFBFBD>PLAY_GetLastErrorEx<EFBFBD>ӿڻ<EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
PLAYSDK_API BOOL CALLMETHOD PLAY_GetNextKeyFramePos(LONG nPort,DWORD nValue, DWORD nType, PFRAME_POS pFramePos);
/**
* <EFBFBD><EFBFBD>ȡ<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD><EFBFBD>´δ<EFBFBD><EFBFBD><EFBFBD>ͬһ<EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>ʱֱ<EFBFBD><EFBFBD>ʹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɺ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD>
*
* @param[in] nPort ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[in] pBuffer <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
* @param[in/out] pSize <EFBFBD><EFBFBD><EFBFBD><EFBFBD>pBuffer<EFBFBD>Ĵ<EFBFBD>С<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD>С<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD>һ<EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD>pSize=0<EFBFBD><EFBFBD>pBuffer=NULL<EFBFBD><EFBFBD>
* <EFBFBD><EFBFBD>pSize<EFBFBD>ķ<EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD>Ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD><EFBFBD>Ȼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ļ<EFBFBD><EFBFBD><EFBFBD>ٵ<EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD>Ρ<EFBFBD>
* @return BOOL<EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>TRUE<EFBFBD><EFBFBD>ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD><EFBFBD>FALSE
* @note <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><EFBFBD><EFBFBD>PLAY_GetLastErrorEx<EFBFBD>ӿڻ<EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
PLAYSDK_API BOOL CALLMETHOD PLAY_GetRefValue(LONG nPort,BYTE *pBuffer, DWORD *pSize);
/**
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȱ<EFBFBD><EFBFBD><EFBFBD>׼ȷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* <EFBFBD><EFBFBD><EFBFBD>ٵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ļص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>PLAY_SetFileRefCallBackEx<EFBFBD><EFBFBD>ֱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD>
*
* @param[in] nPort ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[in] pBuffer <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
* @param[in] pSize <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD>ij<EFBFBD><EFBFBD><EFBFBD>
* @return BOOL<EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>TRUE<EFBFBD><EFBFBD>ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD><EFBFBD>FALSE
* @note <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><EFBFBD><EFBFBD>PLAY_GetLastErrorEx<EFBFBD>ӿڻ<EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
PLAYSDK_API BOOL CALLMETHOD PLAY_SetRefValue(LONG nPort,BYTE *pBuffer, DWORD nSize);
/************************************************************************/
//> <20><>ȡ<EFBFBD><C8A1><EFBFBD>Ż<EFBFBD><C5BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
/************************************************************************/
/**
* <EFBFBD><EFBFBD><EFBFBD>ý<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͣ<EFBFBD><EFBFBD><EFBFBD>PLAY_Play֮ǰ<EFBFBD><EFBFBD><EFBFBD>á<EFBFBD>
*
* @param[in] nPort ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[in] nStream 1 <EFBFBD><EFBFBD>Ƶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>2 <EFBFBD><EFBFBD>Ƶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>3 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @return BOOL<EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>TRUE<EFBFBD><EFBFBD>ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD><EFBFBD>FALSE
* @note <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><EFBFBD><EFBFBD>PLAY_GetLastErrorEx<EFBFBD>ӿڻ<EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
PLAYSDK_API BOOL CALLMETHOD PLAY_SetDecCBStream(LONG nPort,DWORD nStream);
/**
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
* @param[in] nPort ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[in] pFrameDecodeInfo <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[in] pFrameInfo ͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>μ<EFBFBD>FRAME_INFO<EFBFBD><EFBFBD><EFBFBD>
* @param[in] pUser <EFBFBD>û<EFBFBD><EFBFBD>Զ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
typedef void (CALLBACK* fCBDecode)(LONG nPort, FRAME_DECODE_INFO* pFrameDecodeInfo, FRAME_INFO_EX* pFrameInfo, void* pUser);
/**
* <EFBFBD><EFBFBD><EFBFBD>ý<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD>֣<EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><EFBFBD>Լ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD>ú<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* PLAY_Play֮ǰ<EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD><EFBFBD><EFBFBD>PLAY_Stopʱ<EFBFBD>Զ<EFBFBD>ʧЧ<EFBFBD><EFBFBD><EFBFBD>´ε<EFBFBD><EFBFBD><EFBFBD>PLAY_Play֮ǰ
* <EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>á<EFBFBD><EFBFBD><EFBFBD><EFBFBD>벿<EFBFBD>ֲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٶȣ<EFBFBD>ֻҪ<EFBFBD>û<EFBFBD><EFBFBD>ӻص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>з<EFBFBD><EFBFBD>أ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* <EFBFBD>ͻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ρ<EFBFBD>
*
* @param[in] nPort ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[out] cbDec <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ΪNULL
* @param[in] pUser <EFBFBD>û<EFBFBD><EFBFBD>Զ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @return BOOL<EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>TRUE<EFBFBD><EFBFBD>ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD><EFBFBD>FALSE
* @note <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><EFBFBD><EFBFBD>PLAY_GetLastErrorEx<EFBFBD>ӿڻ<EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
PLAYSDK_API BOOL CALLMETHOD PLAY_SetDecodeCallBack(LONG nPort, fCBDecode cbDec, void* pUser);
/**
* <EFBFBD><EFBFBD>Ƶץͼ<EFBFBD>ص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
* @param[in] nPort ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[in] pBuf <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[in] nSize <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴ<EFBFBD>С
* @param[in] nWidth <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[in] nHeight <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߣ<EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[in] nStamp ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[in] nType <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͣ<EFBFBD>T_RGB32<EFBFBD><EFBFBD>T_UYVY<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD><EFBFBD>
* @param[in] nReceaved <EFBFBD><EFBFBD>Ӧ<EFBFBD>û<EFBFBD><EFBFBD>Զ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
typedef void (CALLBACK* fDisplayCBFun)(LONG nPort,char * pBuf,LONG nSize,LONG nWidth,LONG nHeight,LONG nStamp,LONG nType, void* pReserved);
/**
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶץͼ<EFBFBD>ص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫֹͣ<EFBFBD>ص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>԰ѻص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ΪNULL<EFBFBD><EFBFBD><EFBFBD>ú<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κ<EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>á<EFBFBD>
*
* @param[in] nPort ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[out] DisplayCBFun ץͼ<EFBFBD>ص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ΪNULL
* @param[in] pUserData <EFBFBD>û<EFBFBD><EFBFBD>Զ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @return BOOL<EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>TRUE<EFBFBD><EFBFBD>ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD><EFBFBD>FALSE
* @note <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><EFBFBD><EFBFBD>PLAY_GetLastErrorEx<EFBFBD>ӿڻ<EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
PLAYSDK_API BOOL CALLMETHOD PLAY_SetDisplayCallBack(LONG nPort, fDisplayCBFun DisplayCBFun, void* pUserData);
/**
* <EFBFBD><EFBFBD>Ƶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>WAVE<EFBFBD><EFBFBD><EFBFBD>ݻص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
* @param[in] nPort ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[in] pAudioBuf wave<EFBFBD><EFBFBD>ʽ<EFBFBD><EFBFBD>Ƶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[in] nSize <EFBFBD><EFBFBD>Ƶ<EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><EFBFBD><EFBFBD>
* @param[in] nStamp ʱ<EFBFBD><EFBFBD>(ms)
* @param[in] nType <EFBFBD><EFBFBD>Ƶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>T_AUDIO16<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>8000<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ÿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>16λ<EFBFBD><EFBFBD>ʾ
* @param[in] pUserData <EFBFBD>û<EFBFBD><EFBFBD>Զ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
typedef void (CALLBACK * fAudioCBFun)(LONG nPort, char * pAudioBuf, LONG nSize, LONG nStamp, LONG nType, void* pUserData);
/**
* <EFBFBD><EFBFBD>Ƶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>WAVE<EFBFBD><EFBFBD><EFBFBD>ݻص<EFBFBD><EFBFBD><EFBFBD>
*
* @param[in] nPort ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[out] AudioCBFun <EFBFBD><EFBFBD>Ƶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[in] pUserData <EFBFBD>û<EFBFBD><EFBFBD>Զ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @return BOOL<EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>TRUE<EFBFBD><EFBFBD>ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD><EFBFBD>FALSE
* @note <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><EFBFBD><EFBFBD>PLAY_GetLastErrorEx<EFBFBD>ӿڻ<EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
PLAYSDK_API BOOL CALLMETHOD PLAY_SetAudioCallBack(LONG nPort, fAudioCBFun AudioCBFun, void* pUserData);
/**
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>PLAY_SetDecodeCallBack<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬ<EFBFBD><EFBFBD><EFBFBD>ǽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><EFBFBD><EFBFBD>ͬʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD>Ƶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD>ڻص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߼<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>
*
* @param[in] nPort ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[out] cbDec <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ΪNULL
* @param[in] pUser <EFBFBD>û<EFBFBD><EFBFBD>Զ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @return BOOL<EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>TRUE<EFBFBD><EFBFBD>ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD><EFBFBD>FALSE
* @note <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><EFBFBD><EFBFBD>PLAY_GetLastErrorEx<EFBFBD>ӿڻ<EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
typedef fCBDecode fVisibleDecodeCallBackFunc;
PLAYSDK_API BOOL CALLMETHOD PLAY_SetVisibleDecodeCallBack(LONG nPort, fVisibleDecodeCallBackFunc cbDec, void* pUser);
/**
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
* @param[in] nPort ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[in] pBuf <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[in] nSize <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>pBuf<EFBFBD>ij<EFBFBD><EFBFBD><EFBFBD>
* @param[in] pFrameInfo ͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>μ<EFBFBD>FRAME_INFO<EFBFBD><EFBFBD><EFBFBD>
* @param[in] pUserData <EFBFBD>û<EFBFBD><EFBFBD>Զ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[in] nReserved2 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
typedef void (CALLBACK* fDecCBFun)(LONG nPort,char * pBuf,LONG nSize,FRAME_INFO * pFrameInfo, void* pUserData, LONG nReserved2);
/**
* <EFBFBD><EFBFBD><EFBFBD>ý<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD>֣<EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><EFBFBD>Լ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD>ú<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* PLAY_Play֮ǰ<EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD><EFBFBD><EFBFBD>PLAY_Stopʱ<EFBFBD>Զ<EFBFBD>ʧЧ<EFBFBD><EFBFBD><EFBFBD>´ε<EFBFBD><EFBFBD><EFBFBD>PLAY_Play֮ǰ
* <EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>á<EFBFBD><EFBFBD><EFBFBD><EFBFBD>벿<EFBFBD>ֲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٶȣ<EFBFBD>ֻҪ<EFBFBD>û<EFBFBD><EFBFBD>ӻص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>з<EFBFBD><EFBFBD>أ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* <EFBFBD>ͻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ρ<EFBFBD>
*
* @param[in] nPort ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[out] DecCBFun <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ΪNULL
* @return BOOL<EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>TRUE<EFBFBD><EFBFBD>ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD><EFBFBD>FALSE
* @note <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><EFBFBD><EFBFBD>PLAY_GetLastErrorEx<EFBFBD>ӿڻ<EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
PLAYSDK_API BOOL CALLMETHOD PLAY_SetDecCallBack(LONG nPort, fDecCBFun DecCBFun);
/**
* <EFBFBD><EFBFBD><EFBFBD>ý<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD>֣<EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><EFBFBD>Լ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD>ú<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* PLAY_Play֮ǰ<EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD><EFBFBD><EFBFBD>PLAY_Stopʱ<EFBFBD>Զ<EFBFBD>ʧЧ<EFBFBD><EFBFBD><EFBFBD>´ε<EFBFBD><EFBFBD><EFBFBD>PLAY_Play֮ǰ
* <EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>á<EFBFBD><EFBFBD><EFBFBD><EFBFBD>벿<EFBFBD>ֲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٶȣ<EFBFBD>ֻҪ<EFBFBD>û<EFBFBD><EFBFBD>ӻص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>з<EFBFBD><EFBFBD>أ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* <EFBFBD>ͻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ρ<EFBFBD>
*
* @param[in] nPort ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[out] DecCBFun <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ΪNULL
* @param[in] pUserData <EFBFBD>û<EFBFBD><EFBFBD>Զ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @return BOOL<EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>TRUE<EFBFBD><EFBFBD>ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD><EFBFBD>FALSE
* @note <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><EFBFBD><EFBFBD>PLAY_GetLastErrorEx<EFBFBD>ӿڻ<EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
PLAYSDK_API BOOL CALLMETHOD PLAY_SetDecCallBackEx(LONG nPort, fDecCBFun DecCBFun, void* pUserData);
/**
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
* @param[in] nPort ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[in] pBuf <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[in] nSize <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>pBuf<EFBFBD>ij<EFBFBD><EFBFBD><EFBFBD>
* @param[in] pFrameInfo ͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ,<EFBFBD><EFBFBD><EFBFBD>μ<EFBFBD>FRAME_INFO<EFBFBD><EFBFBD><EFBFBD>
* @param[in] pUserData <EFBFBD>û<EFBFBD><EFBFBD>Զ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[in] nReserved1 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
typedef void (CALLBACK* fVisibleDecCBFun)(LONG nPort,char * pBuf,LONG nSize,FRAME_INFO * pFrameInfo, void* pUserData, LONG nReserved1);
/**
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>PLAY_SetDecCallBackEx<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬ<EFBFBD><EFBFBD><EFBFBD>ǽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><EFBFBD><EFBFBD>ͬʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* <EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD>Ƶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD>ڻص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߼<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>
*
* @param[in] nPort ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[out] DecCBFun <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ΪNULL
* @param[in] pUserData <EFBFBD>û<EFBFBD><EFBFBD>Զ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @return BOOL<EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>TRUE<EFBFBD><EFBFBD>ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD><EFBFBD>FALSE
* @note <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><EFBFBD><EFBFBD>PLAY_GetLastErrorEx<EFBFBD>ӿڻ<EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
PLAYSDK_API BOOL CALLMETHOD PLAY_SetVisibleDecCallBack(LONG nPort, fVisibleDecCBFun DecCBFun, void* pUserData);
/**
* ˮӡ<EFBFBD><EFBFBD><EFBFBD>ݻص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
* @param[in] buf ˮӡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>bufferָ<EFBFBD><EFBFBD>
* @param[in] key <EFBFBD><EFBFBD><EFBFBD>ֲ<EFBFBD>ͬˮӡ<EFBFBD><EFBFBD>Ϣ
* @param[in] len <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>󳤶<EFBFBD>
* @param[in] reallen <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD>ʳ<EFBFBD><EFBFBD><EFBFBD>
* @param[in] len <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>󳤶<EFBFBD>
* @param[in] reallen <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD>ʳ<EFBFBD><EFBFBD><EFBFBD>
* @param[in] type 1û<EFBFBD>д<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>2ˮӡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>3֡<EFBFBD><EFBFBD><EFBFBD>ݴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>4֡<EFBFBD>Ŵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>5֡ͷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>6û<EFBFBD><EFBFBD>֡ͷ
* @param[in] pUserData <EFBFBD>û<EFBFBD><EFBFBD>Զ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @return int <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
typedef int (CALLBACK* fGetWaterMarkInfoCallbackFunc)(char* buf, LONG key, LONG len, LONG reallen, LONG type, void* pUserData);
/**
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˮӡ<EFBFBD><EFBFBD><EFBFBD>ݻص<EFBFBD><EFBFBD><EFBFBD>ע<EFBFBD>ˮӡУ<EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ú󽫲<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>н<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD>
*
* @param[in] nPort ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[out] pFunc ˮӡ<EFBFBD>ص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD>
* @param[in] pUserData <EFBFBD>û<EFBFBD><EFBFBD>Զ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @return BOOL<EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>TRUE<EFBFBD><EFBFBD>ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD><EFBFBD>FALSE
* @note <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><EFBFBD><EFBFBD>PLAY_GetLastErrorEx<EFBFBD>ӿڻ<EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
PLAYSDK_API BOOL CALLMETHOD PLAY_SetWaterMarkCallBack(LONG nPort, fGetWaterMarkInfoCallbackFunc pFunc, void* pUserData);
/**
* ˮӡ<EFBFBD><EFBFBD><EFBFBD>ݻص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
* @param[in] nPort ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[in] buf ˮӡ<EFBFBD><EFBFBD><EFBFBD>ݻ<EFBFBD><EFBFBD><EFBFBD>
* @param[in] lTimeStamp ˮӡ<EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[in] lInfoType ˮӡ<EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,WATERMARK_DATA_TEXT,WATERMARK_DATA_JPEG_BMP,WATERMARK_DATA_FRAMEDATA
* @param[in] len <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>󳤶<EFBFBD>
* @param[in] reallen <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD>ʳ<EFBFBD><EFBFBD><EFBFBD>
* @param[in] lCheckResult 1û<EFBFBD>д<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>2ˮӡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>3֡<EFBFBD><EFBFBD><EFBFBD>ݴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>4֡<EFBFBD>Ŵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>5֡ͷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>6û<EFBFBD><EFBFBD>֡ͷ
* @param[in] pUserData <EFBFBD>û<EFBFBD><EFBFBD>Զ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @return int <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
typedef int (CALLBACK* fGetWaterMarkInfoCallbackFuncEx)(LONG nPort, char* buf, LONG lTimeStamp, LONG lInfoType, LONG len, LONG reallen, LONG lCheckResult, void* pUserData);
/**
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˮӡ<EFBFBD><EFBFBD><EFBFBD>ݻص<EFBFBD><EFBFBD><EFBFBD>ע<EFBFBD>ˮӡУ<EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ú󽫲<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>н<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD>
*
* @param[in] nPort ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[out] pFunc ˮӡ<EFBFBD>ص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD>
* @param[in] pUserData <EFBFBD>û<EFBFBD><EFBFBD>Զ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @return BOOL<EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>TRUE<EFBFBD><EFBFBD>ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD><EFBFBD>FALSE
* @note <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><EFBFBD><EFBFBD>PLAY_GetLastErrorEx<EFBFBD>ӿڻ<EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
PLAYSDK_API BOOL CALLMETHOD PLAY_SetWaterMarkCallBackEx(LONG nPort, fGetWaterMarkInfoCallbackFuncEx pFunc, void* pUserData);
/**
* ͼ<EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD><EFBFBD>ʸı<EFBFBD>֪ͨ<EFBFBD>ص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
* @param[in] nPort ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[in] pUserData <EFBFBD>û<EFBFBD><EFBFBD>Զ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
typedef void (CALLBACK *fEncChangeCBFun)(LONG nPort, void* pUserData);
/**
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD><EFBFBD>ʸı<EFBFBD>֪ͨ<EFBFBD>ص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>ǰʹ<EFBFBD>á<EFBFBD>
*
* @param[in] nPort ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[out] EncChangeCBFun <EFBFBD>ֱ<EFBFBD><EFBFBD>ʸı<EFBFBD>֪ͨ<EFBFBD>ص<EFBFBD>
* @param[in] pUserData <EFBFBD>û<EFBFBD><EFBFBD>Զ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @return BOOL<EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>TRUE<EFBFBD><EFBFBD>ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD><EFBFBD>FALSE
* @note <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><EFBFBD><EFBFBD>PLAY_GetLastErrorEx<EFBFBD>ӿڻ<EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
PLAYSDK_API BOOL CALLMETHOD PLAY_SetEncTypeChangeCallBack(LONG nPort, fEncChangeCBFun EncChangeCBFun, void* pUserData);
/**
* ͼ<EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD><EFBFBD>ʸı<EFBFBD>֪ͨ<EFBFBD>ص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
* @param[in] nPort ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[in] pUserData <EFBFBD>û<EFBFBD><EFBFBD>Զ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[in] nWidth ͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[in] nHeight ͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
typedef void(CALLBACK *fEncChangeCBFunEx)(LONG nPort, void* pUserData,LONG nWidth, LONG nHeight);
/**
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD><EFBFBD>ʸı<EFBFBD>֪ͨ<EFBFBD>ص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>ǰʹ<EFBFBD>á<EFBFBD>
*
* @param[in] nPort ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[out] EncChangeCBFun <EFBFBD>ֱ<EFBFBD><EFBFBD>ʸı<EFBFBD>֪ͨ<EFBFBD>ص<EFBFBD>
* @param[in] pUserData <EFBFBD>û<EFBFBD><EFBFBD>Զ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @return BOOL<EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>TRUE<EFBFBD><EFBFBD>ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD><EFBFBD>FALSE
* @note <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><EFBFBD><EFBFBD>PLAY_GetLastErrorEx<EFBFBD>ӿڻ<EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
PLAYSDK_API BOOL CALLMETHOD PLAY_SetEncTypeChangeCallBackEx(LONG nPort, fEncChangeCBFunEx EncChangeCBFun, void* pUserData);
/**
* <EFBFBD><EFBFBD>ѯ<EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD>
*
* @param[in] nPort ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[in] cmdType ָ<EFBFBD><EFBFBD>״̬<EFBFBD><EFBFBD>ѯָ<EFBFBD><EFBFBD><EFBFBD>CMD_TYPE_E
* @param[in] buf <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD>Ļ<EFBFBD><EFBFBD><EFBFBD>
* @param[in] buflen <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[out] returnlen <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><EFBFBD><EFBFBD>
* @return BOOL<EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>TRUE<EFBFBD><EFBFBD>ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD><EFBFBD>FALSE
* @note <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><EFBFBD><EFBFBD>PLAY_GetLastErrorEx<EFBFBD>ӿڻ<EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
PLAYSDK_API BOOL CALLMETHOD PLAY_QueryInfo(LONG nPort, int cmdType, char* buf, int buflen, int* returnlen);
/**
* <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD>Ƶʵʱ<EFBFBD><EFBFBD><EFBFBD>ʡ<EFBFBD>
*
* @param[in] nPort ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[out] pBitRate <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<EFBFBD><EFBFBD>λΪk)
* @return BOOL<EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>TRUE<EFBFBD><EFBFBD>ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD><EFBFBD>FALSE
* @note <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><EFBFBD><EFBFBD>PLAY_GetLastErrorEx<EFBFBD>ӿڻ<EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
PLAYSDK_API BOOL CALLMETHOD PLAY_GetRealFrameBitRate(LONG nPort, double* pBitRate);
/**
* <EFBFBD><EFBFBD>ȡ<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD>֡<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
* @param[in] nPort ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @return DWORD<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD>ǰ֡<EFBFBD><EFBFBD>
*/
PLAYSDK_API DWORD CALLMETHOD PLAY_GetCurrentFrameRate(LONG nPort);
/**
* <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD>ͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ۣ<EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD>񣩣<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴ˴<EFBFBD>С<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>򣬿<EFBFBD><EFBFBD>Բ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Կ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Щ<EFBFBD><EFBFBD>֧<EFBFBD><EFBFBD>Ӳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ŵ<EFBFBD><EFBFBD>Կ<EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD>dz<EFBFBD><EFBFBD><EFBFBD><EFBFBD>á<EFBFBD>
*
* @param[in] nPort ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[out] pWidth ͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[out] pHeight ͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @return BOOL<EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>TRUE<EFBFBD><EFBFBD>ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD><EFBFBD>FALSE
* @note <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><EFBFBD><EFBFBD>PLAY_GetLastErrorEx<EFBFBD>ӿڻ<EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
PLAYSDK_API BOOL CALLMETHOD PLAY_GetPictureSize(LONG nPort,LONG *pWidth,LONG *pHeight);
/**
* ֡<EFBFBD><EFBFBD><EFBFBD>ݻص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
* @param[in] nPort ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[in] pBuf <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD>
* @param[in] nSize <EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><EFBFBD><EFBFBD>
* @param[in] pMutexInfo ֡<EFBFBD><EFBFBD>Ϣ,ָ<EFBFBD><EFBFBD>DEMUX_INFO<EFBFBD>
* @param[in] pMutexInfoEx ֡<EFBFBD><EFBFBD><EFBFBD>ݻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD>ָ<EFBFBD><EFBFBD>DemuInfoEx<EFBFBD>
* @param[in] pUserData <EFBFBD>û<EFBFBD><EFBFBD>Զ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
/* Demux֡<78><D6A1><EFBFBD><EFBFBD> */
typedef enum
{
FRAME_UNKNOWN = 0, // ֡<><D6A1><EFBFBD>Ͳ<EFBFBD><CDB2><EFBFBD>֪
FRAME_VIDEO, // ֡<><D6A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ֡
FRAME_AUDIO, // ֡<><D6A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ֡
FRAME_DATA // ֡<><D6A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֡
}FRAME_TYPE;
/* Demux֡<78><D6A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
typedef enum
{
FRAME_SUB_TYPE_DATA_INVALID = 0, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч
FRAME_SUB_TYPE_VIDEO_I_FRAME = 1, // I֡
FRAME_SUB_TYPE_VIDEO_P_FRAME, // P֡
FRAME_SUB_TYPE_VIDEO_B_FRAME, // B֡
FRAME_SUB_TYPE_VIDEO_SMART_I_FRAME = 19, // smart I֡
FRAME_SUB_TYPE_VIDEO_SMART_P_FRAME, // smart P֡
FRAME_SUB_TYPE_DATA_CIPHER_AUXILIARY = 26 // <20><><EFBFBD><EFBFBD><EBB8A8>֡
}FRAME_SUB_TYPE;
/* Demux<75><78>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ */
typedef enum
{
ENCODE_VIDEO_UNKNOWN = 0, // <20><>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD>֪
ENCODE_VIDEO_MPEG4, // <20><>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD>MPEG4
ENCODE_VIDEO_HI_H264, // <20><>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD>Ǻ<EFBFBD>˼H264
ENCODE_VIDEO_JPEG, // <20><>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD>DZ<EFBFBD>׼JPEG
ENCODE_VIDEO_DH_H264, // <20><>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD>Ǵ<EFBFBD><C7B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>H264
ENCODE_VIDEO_JPEG2000 = 6, // <20><>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD>DZ<EFBFBD>׼JPEG2000
ENCODE_VIDEO_AVS = 7, // <20><>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD>DZ<EFBFBD>׼AVS
ENCODE_VIDEO_STD_H264 = 8, // <20><>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD>DZ<EFBFBD>׼H264
ENCODE_VIDEO_MPEG2 = 9, // <20><>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD>MPEG2
ENCODE_VIDEO_VNC = 10, // <20><>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD>VNC
ENCODE_VIDEO_SVAC = 11, // <20><>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD>SVAC
ENCODE_VIDEO_DH_H265 = 12 // <20><>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD>H265
}ENCODE_VIDEO_TYPE;
/* Demux<75><78>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ */
typedef enum
{
ENCODE_AUDIO_UNKNOWN = 0,
ENCODE_AUDIO_PCM = 7, // <20><>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD>PCM8
ENCODE_AUDIO_G729, // <20><>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD>G729
ENCODE_AUDIO_IMA, // <20><>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD>IMA
ENCODE_PCM_MULAW, // <20><>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD>PCM MULAW
ENCODE_AUDIO_G721, // <20><>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD>G721
ENCODE_PCM8_VWIS, // <20><>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD>PCM8_VWIS
ENCODE_MS_ADPCM, // <20><>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD>MS_ADPCM
ENCODE_AUDIO_G711A, // <20><>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD>G711A
ENCODE_AUDIO_AMR, // <20><>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD>AMR
ENCODE_AUDIO_PCM16, // <20><>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD>PCM16
ENCODE_AUDIO_G711U = 22, // <20><>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD>G711U
ENCODE_AUDIO_G723 = 25, // <20><>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD>G723
ENCODE_AUDIO_AAC, // <20><>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD>AAC
ENCODE_AUDIO_G726_40, // <20><>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD>G726, 40kbps
ENCODE_AUDIO_G726_32, // <20><>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD>G726, 32kbps
ENCODE_AUDIO_G726_24, // <20><>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD>G726, 24kbps
ENCODE_AUDIO_G726_16, // <20><>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD>G726, 16kbps
ENCODE_AUDIO_MP2, // <20><>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD>mp2
ENCODE_AUDIO_OGG, // <20><>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD>ogg vorbis
ENCODE_AUDIO_MP3, // <20><>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD>mp3
ENCODE_AUDIO_G722_1, // <20><>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD>G722_1
ENCODE_AUDIO_OPUS = 38 // <20><>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD>OPUS
}ENCODE_AUDIO_TYPE;
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>װ<EFBFBD><D7B0>ʽ */
typedef enum
{
STREAM_TYPE_UNKNOWN = 0, // δ֪<CEB4><D6AA><EFBFBD><EFBFBD>
STREAM_TYPE_MPEG4, // MPEG4
STREAM_TYPE_DHPT =3, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>DHPT
STREAM_TYPE_NEW, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>NEW
STREAM_TYPE_HB, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>HB
STREAM_TYPE_AUDIO, // <20><>Ƶ<EFBFBD><C6B5>
STREAM_TYPE_PS, // MPEG-2<><32>PS
STREAM_TYPE_DHSTD, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>µı<C2B5>׼<EFBFBD><D7BC><EFBFBD><EFBFBD>
STREAM_TYPE_ASF, // ASF
STREAM_TYPE_3GPP, // 3GP
STREAM_TYPE_RAW, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
STREAM_TYPE_TS, // MPEG-2<><32>TS
STREAM_TYPE_SVC, // svc
STREAM_TYPE_AVI, // AVI
STREAM_TYPE_MP4, // MP4
STREAM_TYPE_CGI, // CGI
STREAM_TYPE_WAV, // WAV<41><56>Ƶ
STREAM_TYPE_FLV, // FLV
STREAM_TYPE_MKV, // mkv
STREAM_TYPE_RTP, // RTP
STREAM_TYPE_RAW_MPEG4, // MPEG4<47><34><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
STREAM_TYPE_RAW_H264, // H264<36><34><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
STREAM_TYPE_RAW_H265, // H265<36><35><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
STREAM_TYPE_WMV, // WMV
STREAM_TYPE_RAW_MPEG2, // MPEG2<47><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
STREAM_TYPE_RAW_SVAC, // SVAC<41><43><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
STREAM_TYPE_MOV,
STREAM_TYPE_VOB, // VOB
STREAM_TYPE_RAW_H263,
STREAM_TYPE_RM,
STREAM_TYPE_DHPS, // DHPS
}STREAM_TYPE;
/* Demux<75><78>չ<EFBFBD><D5B9>Ϣ */
typedef struct
{
char* pHead; // ֡<><D6A1><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ)
int nLen; // ֡<><D6A1><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>
char* pBody; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ)
int nBodyLen; // <20><><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>
int nRet; // 0:<3A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 1:<3A><><EFBFBD><EFBFBD><EFBFBD>룬Ĭ<EBA3AC><C4AC>Ϊ0
BYTE nEncryptType; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͣ<EFBFBD>0:<3A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 1:AES
BYTE nRotateAngle; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD>Ƕ<EFBFBD> 0:<3A><><EFBFBD><EFBFBD>ת 1:90<39><30><EFBFBD><EFBFBD>ת 2:180<38><30><EFBFBD><EFBFBD>ת 3:270<37><30><EFBFBD><EFBFBD>ת
char reserved1[2];
int nStreamType; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>װ<EFBFBD><D7B0>ʽ,<2C><><EFBFBD><EFBFBD>STREAM_TYPE<50><45><EFBFBD><EFBFBD>
char reserved[120];
}DemuInfoEx;
/* Demux<75><78><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ */
typedef struct
{
int type; // <20><><EFBFBD><EFBFBD>FRAME_TYPE<50><45><EFBFBD><EFBFBD>
int subtype; // <20><><EFBFBD><EFBFBD>FRAME_SUB_TYPE<50><45><EFBFBD><EFBFBD>
int encode; // <20><><EFBFBD><EFBFBD>ENCODE_VIDEO_TYPE<50><45>ENCODE_AUDIO_TYPE<50><45><EFBFBD><EFBFBD>
int sequence; // ֡<><D6A1><EFBFBD><EFBFBD>
int width; // <20><>Ƶ<EFBFBD><C6B5>
int height; // <20><>Ƶ<EFBFBD><C6B5>
int rate; // ֡<><D6A1>
int year; // <20><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
int month; // <20><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
int day; // <20><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
int hour; // <20><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>ʱ
int minute; // <20><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
int secode; // <20><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
LONG timestamp; // <20><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
int channels; // <20><>Ƶͨ<C6B5><CDA8><EFBFBD><EFBFBD>
int bitspersample; // <20><>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
int samplespersecond;// <20><>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
}DEMUX_INFO;
typedef void (CALLBACK* fDemuxDecCBFun)(LONG nPort,char * pBuf, LONG nSize,void * pMutexInfo,void* pMutexInfoEx, void* pUserData);
/**
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>֡<EFBFBD><EFBFBD><EFBFBD>ݻص<EFBFBD><EFBFBD><EFBFBD>
*
* @param[in] nPort ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[out] DecCBFun ֡<EFBFBD><EFBFBD><EFBFBD>ݻص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[in] pUserData <EFBFBD>û<EFBFBD><EFBFBD>Զ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @return BOOL<EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>TRUE<EFBFBD><EFBFBD>ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD><EFBFBD>FALSE
* @note <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><EFBFBD><EFBFBD>PLAY_GetLastErrorEx<EFBFBD>ӿڻ<EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
PLAYSDK_API BOOL CALLMETHOD PLAY_SetDemuxCallBack(LONG nPort, fDemuxDecCBFun DecCBFun, void* pUserData);
/**
* H264<EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD>ȡ<EFBFBD>ص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
* @param[in] nPort ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[in] pBuf <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD>
* @param[in] nLen <EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><EFBFBD><EFBFBD>
* @param[in] pUserData <EFBFBD>û<EFBFBD><EFBFBD>Զ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
typedef int (CALLBACK *fH264InfoCBFun)(LONG nPort, char* pBuf, LONG nLen, void* pUserData);
/**
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>H264<EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD>ȡ<EFBFBD>ص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
* @param[in] nPort ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[out] pH264InfoCBFun H264<EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD>ȡ<EFBFBD>ص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[in] nUser <EFBFBD>û<EFBFBD><EFBFBD>Զ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @return BOOL<EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>TRUE<EFBFBD><EFBFBD>ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD><EFBFBD>FALSE
* @note <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><EFBFBD><EFBFBD>PLAY_GetLastErrorEx<EFBFBD>ӿڻ<EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
PLAYSDK_API BOOL CALLMETHOD PLAY_Set264EncodeInfoCallBack(LONG nPort, fH264InfoCBFun pH264InfoCBFun, void* nUser);
/**
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>aes<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Կ<EFBFBD><EFBFBD>
*
* @param[in] nPort ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[in] szKey <EFBFBD><EFBFBD>Կ<EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD>
* @param[in] nKeylen <EFBFBD><EFBFBD>Կ<EFBFBD>ij<EFBFBD><EFBFBD><EFBFBD>
* @return BOOL<EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>TRUE<EFBFBD><EFBFBD>ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD><EFBFBD>FALSE
* @note <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><EFBFBD><EFBFBD>PLAY_GetLastErrorEx<EFBFBD>ӿڻ<EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
PLAYSDK_API BOOL CALLMETHOD PLAY_SetSecurityKey(LONG nPort,const char* szKey,DWORD nKeylen);
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
typedef enum
{
ENCRYPT_UNKOWN = 0,
ENCRYPT_AES,
ENCRYPT_AES256,
ENCRYPT_AES256_GDPR2,
ENCRYPT_SM1_ECB, /*<2A><><EFBFBD>ܼ<EFBFBD><DCBC><EFBFBD><EFBFBD>㷨SM1_ECB*/
ENCRYPT_SM1_OFB, /*<2A><><EFBFBD>ܼ<EFBFBD><DCBC><EFBFBD><EFBFBD>㷨SM1_OFB*/
ENCRYPT_SM4_ECB, /*<2A><><EFBFBD>ܼ<EFBFBD><DCBC><EFBFBD><EFBFBD>㷨SM4_ECB*/
ENCRYPT_SM4_OFB, /*<2A><><EFBFBD>ܼ<EFBFBD><DCBC><EFBFBD><EFBFBD>㷨SM4_OFB*/ //<2F><>֪<EFBFBD><D6AA><EFBFBD><EFBFBD>ʬ<EFBFBD><CAAC><EFBFBD><EFBFBD><EFBFBD>ֹ<EFBFBD><D6B9>ܼ<EFBFBD><DCBC>ܣ<EFBFBD><DCA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>SP_ENCRYPT_SM4_OFB
}ENCRYPT_TYPE;
typedef struct
{
unsigned char x[32];
unsigned char y[32];
}PUBLICKEY_PARAM;
//<2F><><EFBFBD>ܲ<EFBFBD><DCB2><EFBFBD>
typedef struct
{
char* Key; //AES:key<65><79>AES256(GDPRһ<52><D2BB>):key<65><79> AES256(GDPR<50><52><EFBFBD><EFBFBD>)<29>͹<EFBFBD><CDB9><EFBFBD>:vkek<65><6B>
int KeyLen;
char* KeyId; //AES:<3A><><EFBFBD><EFBFBD><EFBFBD> AES256(GDPRһ<52><D2BB>):keyid<69><64> AES256(GDPR<50><52><EFBFBD><EFBFBD>)<29>͹<EFBFBD><CDB9><EFBFBD>:vkekid <20><>
int KeyIdLen;
bool bSetPublicKey; //<2F>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD>ù<EFBFBD>Կ pPublicKey
PUBLICKEY_PARAM* pPublicKey; //svac2.0 <20><><EFBFBD>ܽ<EFBFBD><DCBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA>; <20><><EFBFBD><EFBFBD><E0B6BC>NULL
char Reserved[19]; //<2F><><EFBFBD><EFBFBD><EFBFBD>ֶ<EFBFBD>
}DECRYPT_PARAM;
/**
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>aes<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Կ<EFBFBD><EFBFBD>
*
* @param[in] nPort ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[in] nType <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[in] szKey <EFBFBD><EFBFBD>Կ<EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD>
* @param[in] nKeylen <EFBFBD><EFBFBD>Կ<EFBFBD>ij<EFBFBD><EFBFBD><EFBFBD>
* @return BOOL<EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>TRUE<EFBFBD><EFBFBD>ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD><EFBFBD>FALSE
* @note <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><EFBFBD><EFBFBD>PLAY_GetLastErrorEx<EFBFBD>ӿڻ<EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
PLAYSDK_API BOOL CALLMETHOD PLAY_SetSecurityKeyEx(LONG nPort, ENCRYPT_TYPE nType, DECRYPT_PARAM* key, unsigned int key_len);
/************************************************************************/
//> <20><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
/************************************************************************/
/**
* <EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD>򣬿<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֲ<EFBFBD><EFBFBD>Ŵ<EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD>
*
* @param[in] nPort ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[in] nRegionNum <EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,0~(MAX_DISPLAY_WND-1),<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ0,<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[in] pSrcRect <EFBFBD>ֲ<EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[in] hDestWnd <EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD>ھ<EFBFBD><EFBFBD><EFBFBD>
* @param[in] bEnable <EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<EFBFBD><EFBFBD><EFBFBD><EFBFBD>)<EFBFBD><EFBFBD><EFBFBD>ر<EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @return BOOL<EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>TRUE<EFBFBD><EFBFBD>ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD><EFBFBD>FALSE
* @note <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><EFBFBD><EFBFBD>PLAY_GetLastErrorEx<EFBFBD>ӿڻ<EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
PLAYSDK_API BOOL CALLMETHOD PLAY_SetDisplayRegion(LONG nPort,DWORD nRegionNum, DISPLAYRECT *pSrcRect, HWND hDestWnd, BOOL bEnable);
/**
* ˢ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><EFBFBD><EFBFBD>ͣʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˢ<EFBFBD><EFBFBD><EFBFBD>˴<EFBFBD><EFBFBD>ڣ<EFBFBD><EFBFBD>򴰿<EFBFBD><EFBFBD>е<EFBFBD>ͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊˢ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><EFBFBD>
* <EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӿڿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>°<EFBFBD>ͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͣ<EFBFBD>͵<EFBFBD>֡<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>
* ִ<EFBFBD>У<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD>ӷ<EFBFBD><EFBFBD>ء<EFBFBD>
*
* @param[in] nPort ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @return BOOL<EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>TRUE<EFBFBD><EFBFBD>ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD><EFBFBD>FALSE
* @note <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><EFBFBD><EFBFBD>PLAY_GetLastErrorEx<EFBFBD>ӿڻ<EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
PLAYSDK_API BOOL CALLMETHOD PLAY_RefreshPlay(LONG nPort);
/************************************************************************/
//> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
/************************************************************************/
/**
* <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ<EFBFBD><EFBFBD>Դ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴ<EFBFBD>С(<EFBFBD><EFBFBD>λΪ<EFBFBD>ֽ<EFBFBD>)<EFBFBD><EFBFBD>
*
* @param[in] nPort ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @return DWORD<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰԴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĵ<EFBFBD>С<EFBFBD><EFBFBD>λBYTE(<EFBFBD><EFBFBD>λΪ<EFBFBD>ֽ<EFBFBD>)
* @note <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><EFBFBD><EFBFBD>PLAY_GetLastErrorEx<EFBFBD>ӿڻ<EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
PLAYSDK_API DWORD CALLMETHOD PLAY_GetSourceBufferRemain(LONG nPort);
/**
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ<EFBFBD><EFBFBD>Դ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݡ<EFBFBD>
*
* @param[in] nPort ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @return BOOL<EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>TRUE<EFBFBD><EFBFBD>ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD><EFBFBD>FALSE
* @note <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><EFBFBD><EFBFBD>PLAY_GetLastErrorEx<EFBFBD>ӿڻ<EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
PLAYSDK_API BOOL CALLMETHOD PLAY_ResetSourceBuffer(LONG nPort);
/**
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ<EFBFBD><EFBFBD>Դ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݡ<EFBFBD>
*
* @param[in] nPort ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[in] nBufType<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>£<EFBFBD>
* BUF_VIDEO_SRC 1 <EFBFBD><EFBFBD>ƵԴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* BUF_AUDIO_SRC 2 <EFBFBD><EFBFBD>ƵԴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* BUF_VIDEO_RENDER 3 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><EFBFBD><EFBFBD>ݻ<EFBFBD><EFBFBD><EFBFBD>
* BUF_AUDIO_RENDER 4 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><EFBFBD><EFBFBD>ݻ<EFBFBD><EFBFBD><EFBFBD>
* @return BOOL<EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>TRUE<EFBFBD><EFBFBD>ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD><EFBFBD>FALSE
* @note <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><EFBFBD><EFBFBD>PLAY_GetLastErrorEx<EFBFBD>ӿڻ<EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
PLAYSDK_API BOOL CALLMETHOD PLAY_ResetBuffer(LONG nPort,DWORD nBufType);
/**
* <EFBFBD><EFBFBD>ȡָ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĵ<EFBFBD>С<EFBFBD><EFBFBD>
*
* @param[in] nPort ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[in] nBufType<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>£<EFBFBD>
* BUF_VIDEO_SRC 1 <EFBFBD><EFBFBD>ƵԴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* BUF_AUDIO_SRC 2 <EFBFBD><EFBFBD>ƵԴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* BUF_VIDEO_RENDER 3 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><EFBFBD><EFBFBD>ݻ<EFBFBD><EFBFBD><EFBFBD>
* BUF_AUDIO_RENDER 4 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><EFBFBD><EFBFBD>ݻ<EFBFBD><EFBFBD><EFBFBD>
* @return DWORD<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݲ<EFBFBD>ͬ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ػ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD>Դ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>byte<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>󻺳<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֡<EFBFBD><EFBFBD>
* @note <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><EFBFBD><EFBFBD>PLAY_GetLastErrorEx<EFBFBD>ӿڻ<EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
PLAYSDK_API DWORD CALLMETHOD PLAY_GetBufferValue(LONG nPort,DWORD nBufType);
/************************************************************************/
//> <20><><EFBFBD><EFBFBD>Ӳ<EFBFBD><D3B2>
/************************************************************************/
/**
* <EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD>Ӳ<EFBFBD><EFBFBD>(Windows32ƽ̨)<EFBFBD><EFBFBD>
*
* @return UINT<EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD><EFBFBD>0
*/
PLAYSDK_API UINT CALLMETHOD PLAY_InitDisk();
/**
* <EFBFBD><EFBFBD><EFBFBD>Ȼص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
* @param[in] nPort ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[in] nPercent <EFBFBD><EFBFBD><EFBFBD>Ȱٷֱ<EFBFBD>, -1<EFBFBD><EFBFBD>ʾ<EFBFBD>
* @param[in] pUserData <EFBFBD>û<EFBFBD><EFBFBD>Զ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
typedef void (CALLBACK *fPercentCallbackFunc)(LONG nPort, int nPercent, void* pUserData);
/**
* <EFBFBD><EFBFBD><EFBFBD>Ȼص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҪPLAY_SetFileRefCallBack<EFBFBD>ص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><EFBFBD>[0,0] <EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD>С<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>PLAY_OpenFile֮<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>á<EFBFBD>
*
* @param[in] nPort ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[in] nStartTime <EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD>ʼʱ<EFBFBD> <EFBFBD><EFBFBD>λΪ<EFBFBD><EFBFBD>1970/1/1<EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[in] nEndTime <EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD> <EFBFBD><EFBFBD>λΪ<EFBFBD><EFBFBD>1970/1/1<EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[out] pFunCallback <EFBFBD><EFBFBD><EFBFBD>Ȼص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD>
* @param[in] pUserData <EFBFBD>û<EFBFBD><EFBFBD>Զ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @return BOOL<EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>TRUE<EFBFBD><EFBFBD>ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD><EFBFBD>FALSE
* @note <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><EFBFBD><EFBFBD>PLAY_GetLastErrorEx<EFBFBD>ӿڻ<EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
PLAYSDK_API BOOL CALLMETHOD PLAY_SetPercentCallBack(LONG nPort, LONG nStartTime, LONG nEndTime, fPercentCallbackFunc pFunCallback, void* pUserData);
typedef enum
{
FORMAT_ALL_DATA, //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
FORMAT_KEY_DATA //<2F><><EFBFBD><EFBFBD><EFBFBD>ؼ<EFBFBD><D8BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
}FormatType;
/**
* <EFBFBD><EFBFBD>ʽ<EFBFBD><EFBFBD>Ӳ<EFBFBD><EFBFBD>(Windows32ƽ̨)<EFBFBD><EFBFBD>
*
* @param[in] disk_no Ҫ<EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD>Ĵ<EFBFBD><EFBFBD>̺<EFBFBD>
* @param[in] type <EFBFBD><EFBFBD>ʽ<EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD>
* @return BOOL<EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>TRUE<EFBFBD><EFBFBD>ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD><EFBFBD>FALSE
* @note <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><EFBFBD><EFBFBD>PLAY_GetLastErrorEx<EFBFBD>ӿڻ<EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
PLAYSDK_API BOOL CALLMETHOD PLAY_FormatDisk(UINT disk_no, FormatType type);
/**
* <EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD>ѯ<EFBFBD>λ(Windows32ƽ̨)<EFBFBD><EFBFBD>
*
* @param[in] channel <EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD>ѯ<EFBFBD><EFBFBD>¼<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[in] start_time ¼<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѯ<EFBFBD>Ŀ<EFBFBD>ʼʱ<EFBFBD><EFBFBD>
* @param[in] end_time ¼<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѯ<EFBFBD>Ľ<EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>
* @param[in/out] pmax_ret_num <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ز<EFBFBD>ѯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>ϵͳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD>η<EFBFBD><EFBFBD><EFBFBD>pmax_ret_num<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[out] pfile_info <EFBFBD><EFBFBD>ѯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ŵ<EFBFBD>λ<EFBFBD><EFBFBD>
* @param[in] type <EFBFBD><EFBFBD>ѯ<EFBFBD><EFBFBD>¼<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ
* @param[in] hint <EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̶<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ0
* @param[in] driver_type <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ijЩ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD>ѯ
* @return BOOL<EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>TRUE<EFBFBD><EFBFBD>ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD><EFBFBD>FALSE
* @note <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><EFBFBD><EFBFBD>PLAY_GetLastErrorEx<EFBFBD>ӿڻ<EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* <EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֲο<EFBFBD>: "/part/uuid/%4d-%02d-%02d/%03d/%02d.%02d.%02d-%02d.%02d.%02d/cType/first_clus_no.dav"
*/
PLAYSDK_API UINT CALLMETHOD PLAY_QueryFileList(UINT nChannel,DHTIME start_time,DHTIME end_time,UINT *pmax_ret_num,pFILE_INFO pfile_info,UINT type, BYTE hint, UINT driver_type);
/************************************************************************/
//> <20><><EFBFBD><EFBFBD>
/************************************************************************/
typedef enum
{
FISHEYEMOUNT_MODE_INVALID = 0, // <20><>װģʽ<C4A3><CABD>Ч
FISHEYEMOUNT_MODE_CEIL = 1, // <20><>װ
FISHEYEMOUNT_MODE_WALL, // <20><>װ
FISHEYEMOUNT_MODE_FLOOR, // <20><>װ
FISHEYEMOUNT_MODE_NUM
}FISHEYE_MOUNTMODE;
typedef enum
{
FISHEYECALIBRATE_MODE_INVALID = 0, // <20><><EFBFBD><EFBFBD>ģʽ<C4A3><CABD>Ч
FISHEYECALIBRATE_MODE_OFF = 1, // <20>ر<EFBFBD><D8B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ⲿ<EFBFBD>ر<EFBFBD>
FISHEYECALIBRATE_MODE_ORIGINAL, // ԭʼģʽ(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>),<2C><><EFBFBD><EFBFBD><EFBFBD>ű<EFBFBD><C5B1><EFBFBD>
FISHEYECALIBRATE_MODE_PANORAMA, // 1p
FISHEYECALIBRATE_MODE_PANORAMA_PLUS_ONE_EPTZ, // 1p+1
FISHEYECALIBRATE_MODE_DOUBLE_PANORAMA, // 2p
FISHEYECALIBRATE_MODE_ORIGINAL_PLUS_DOUBLE_PANORAMA, // 1+2p
FISHEYECALIBRATE_MODE_ORIGINAL_PLUS_THREE_EPTZ_REGION, // 1+3
FISHEYECALIBRATE_MODE_PANORAMA_PLUS_THREE_EPTZ_REGION, // 1p+3
FISHEYECALIBRATE_MODE_ORIGINAL_PLUS_TWO_EPTZ_REGION, // 1+2
FISHEYECALIBRATE_MODE_ORIGINAL_PLUS_FOUR_EPTZ_REGION, // 1+4
FISHEYECALIBRATE_MODE_PANORAMA_PLUS_FOUR_EPTZ_REGION, // 1p+4
FISHEYECALIBRATE_MODE_PANORAMA_PLUS_SIX_EPTZ_REGION, // 1p+6
FISHEYECALIBRATE_MODE_ORIGINAL_PLUS_EIGHT_EPTZ_REGION, // 1+8
FISHEYECALIBRATE_MODE_PANORAMA_PLUS_EIGHT_EPTZ_REGION, // 1p+8
FISHEYECALIBRATE_MODE_TWO_EPTZ_REGION_WITH_ORIGINAL, // 1F+2
FISHEYECALIBRATE_MODE_FOUR_EPTZ_REGION_WITH_ORIGINAL, // 1F+4
FISHEYECALIBRATE_MODE_DOUBLE_PANORAMA_WITH_ORIGINAL, // 1F+2p
FISHEYECALIBRATE_MODE_FOUR_EPTZ_REGION_WITH_PANORAMA, // 1p(F)+4
FISHEYECALIBRATE_MODE_TWO_EPTZ_REGION, // 2<><32><EFBFBD><EFBFBD>
FISHEYECALIBRATE_MODE_SINGLE, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
FISHEYECALIBRATE_MODE_FOUR_EPTZ_REGION, // 4<><34><EFBFBD><EFBFBD>
FISHEYECALIBRATE_MODE_USER_DEFINED, // <20>û<EFBFBD><C3BB>Զ<EFBFBD><D4B6><EFBFBD>
FISHEYECALIBRATE_MODE_PHONE, // <20>ֻ<EFBFBD>ģʽ
FISHEYECALIBRATE_MODE_ORIGINAL_PLUS_ONE_EPTZ_REGION, // 1+1
FISHEYECALIBRATE_MODE_ONE_EPTZ_REGION, // 1<><31><EFBFBD><EFBFBD>
FISHEYECALIBRATE_MODE_SEMI_SPHERE, // <20><>Բ
FISHEYECALIBRATE_MODE_CYLINDER, // Բ<><D4B2>
FISHEYECALIBRATE_MODE_LITTLE_PLANET, // С<><D0A1><EFBFBD><EFBFBD>
FISHEYECALIBRATE_MODE_DOUBLE_SPHERE, // ˫Ŀ<CBAB><C4BF>
FISHEYECALIBRATE_MODE_DOUBLE_CYLINDER, // ˫ĿԲ<C4BF><D4B2>
FISHEYECALIBRATE_MODE_DOUBLE_360,
FISHEYECALIBRATE_MODE_NUM
}FISHEYE_CALIBRATMODE;
typedef enum
{
FISHEYEEPTZ_CMD_INVALID = 0,
FISHEYEEPTZ_CMD_ZOOM_IN = 1, // <20>Ŵ<EFBFBD>
FISHEYEEPTZ_CMD_ZOOM_OUT, // <20><>С
FISHEYEEPTZ_CMD_UP, // <20><><EFBFBD><EFBFBD><EFBFBD>ƶ<EFBFBD>
FISHEYEEPTZ_CMD_DOWN, // <20><><EFBFBD><EFBFBD><EFBFBD>ƶ<EFBFBD>
FISHEYEEPTZ_CMD_LEFT, // <20><><EFBFBD><EFBFBD><EFBFBD>ƶ<EFBFBD>
FISHEYEEPTZ_CMD_RIGHT, // <20><><EFBFBD><EFBFBD><EFBFBD>ƶ<EFBFBD>
FISHEYEEPTZ_CMD_ROTATE_CLOCKWISE_AUTO, // <20>Զ<EFBFBD>˳ʱ<CBB3><CAB1><EFBFBD><EFBFBD>ת
FISHEYEEPTZ_CMD_ROTATE_ANTICLOCKWISE_AUTO, // <20>Զ<EFBFBD><D4B6><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>ת
FISHEYEEPTZ_CMD_STOP, // ֹͣ
FISHEYEEPTZ_CMD_SHOW_REGION, // <20><>ѡ<EFBFBD>Ŵ<EFBFBD>
FISHEYEEPTZ_CMD_EXIT_SHOW_REGION, // <20>˳<EFBFBD><CBB3><EFBFBD>ѡ<EFBFBD>Ŵ<EFBFBD>
FISHEYEEPTZ_CMD_DEFAULT, // <20>ָ<EFBFBD>Ĭ<EFBFBD><C4AC>
FISHEYEEPTZ_CMD_ORIGIN_ROTATE, // Բ<><D4B2>ת
FISHEYEEPTZ_CMD_SET_CUR_REGION = 0x20, // <20><><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>Ϣ
FISHEYEEPTZ_CMD_GET_CUR_REGION, // <20><>ȡָ<C8A1><D6B8><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>Ϣ
FISHEYEEPTZ_CMD_IS_IN_PANORAMA_REGION, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7>ڵ<EFBFBD>ǰȫ<C7B0><C8AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
FISHEYEEPTZ_CMD_TAP_VIEW, // <20><>ʾָ<CABE><D6B8>λ<EFBFBD><CEBB>,<2C><><EFBFBD><EFBFBD><E3BCB4>
FISHEYEEPTZ_CMD_SET_FOCUS, // <20><><EFBFBD>ô<EFBFBD><C3B4><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>Ϣ
FISHEYEEPTZ_CMD_GET_FOCUS, // <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>Ϣ
FISHEYEEPTZ_CMD_PTZ_CALI, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
FISHEYEEPTZ_CMD_GET_PTZ_RLT, // <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>Ϣ
FISHEYEEPTZ_CMD_SET_CUR_REGION_PTZ, // <20>ⲿֱ<E2B2BF><D6B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ptzģʽ
FISHEYEEPTZ_CMD_GET_FOCUS_8192, // <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>Ϣ8192<39><32><EFBFBD><EFBFBD>ϵ
FISHEYEEPTZ_CMD_NUM
}FISHEYE_EPTZCMD;
typedef enum
{
FISHEYE_SETPARAM, // <20><><EFBFBD>ò<EFBFBD><C3B2><EFBFBD>
FISHEYE_GETPARAM // <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
}FISHEYE_OPERATETYPE;
typedef enum
{
/* ǹ<><C7B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
IPCTYPE_200WN = 0, //
IPCTYPE_130WN = 1,
IPCTYPE_D1WN = 2,
IPCTYPE_100WN = 3,
IPCTYPE_FE = 4, // <20><><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
SPCTYPE_D6501 = 100, // sony<6E><79>о65<36><35><EFBFBD><EFBFBD>
HSPCTYPE_D6A2030E = 101, // <20>󻪻<EFBFBD>о2030E<30><45>6A<36><41><EFBFBD><EFBFBD>
HSPCTYPE_D65A2030E = 102 // <20>󻪻<EFBFBD>о2030E<30><45>65A<35><41><EFBFBD><EFBFBD>
}CAM_TYPE;
/* <20><>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD> */
typedef enum
{
LENTYPE_NORM = 0, // <20>޻<EFBFBD><DEBB>侵ͷ
LENTYPE_Lens0361 = 1, // 3.6<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ
LENTYPE_Lens2880 = 2, // 130<33>ȹ<EFBFBD><C8B9><EFBFBD>ǹ<EFBFBD><C7B9><EFBFBD><EFBFBD>ͷ
LENTYPE_Lens0362 = 3, // 3.6<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ
LENTYPE_Lens0401 = 4, // 4.0<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ
LENTYPE_TEST1 = 100 // <20><><EFBFBD><EFBFBD><EFBFBD>ò<EFBFBD><C3B2><EFBFBD>
}LEN_TYPE;
typedef struct
{
int w;
int h;
}FISHEYE_SIZE;
typedef struct
{
short x;
short y;
}FISHEYE_POINT2D;
typedef struct
{
FISHEYE_MOUNTMODE subMountMode; // <20><>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD>װģʽ, <20><><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD>У<EFBFBD><D0A3>ģʽΪ<CABD>û<EFBFBD><C3BB>Զ<EFBFBD><D4B6><EFBFBD>ģʽʱ, <20><>ֵ<EFBFBD><D6B5>Ч
FISHEYE_CALIBRATMODE subCalibrateMode; // <20><>ͼ<EFBFBD><CDBC>У<EFBFBD><D0A3>ģʽ, <20><><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD>У<EFBFBD><D0A3>ģʽΪ<CABD>û<EFBFBD><C3BB>Զ<EFBFBD><D4B6><EFBFBD>ģʽʱ, <20><>ֵ<EFBFBD><D6B5>Ч
FISHEYE_SIZE imgOutput; // <20><>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD><D6B1><EFBFBD>
FISHEYE_POINT2D upperLeft; // <20><>ͼ<EFBFBD><CDBC>ƫ<EFBFBD><C6AB>
int reserved[3]; // <20><><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD>
}FISHEYE_SUBMODE;
typedef struct
{
FISHEYE_SIZE mainShowSize; // <20><><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD>ڷֱ<DAB7><D6B1><EFBFBD>, <20><EFBFBD>ݴ<EFBFBD><DDB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʺϵ<CABA><CFB5><EFBFBD><EFBFBD>Ž<EFBFBD><C5BD><EFBFBD>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¾<EFBFBD><C2BE><EFBFBD><EFBFBD><EFBFBD>ñ<EFBFBD><C3B1><EFBFBD>)
FISHEYE_SIZE floatMainShowSize; // <20><><EFBFBD><EFBFBD>˫bufferʱʹ<CAB1>ã<EFBFBD>Ŀǰ<C4BF><C7B0>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵIJ<CFB5><C4B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD>ڷֱ<DAB7><D6B1><EFBFBD>, <20><><EFBFBD><EFBFBD>Բ<EFBFBD>Ŀ<EFBFBD><C4BF>߱<EFBFBD><DFB1><EFBFBD>ҪΪ1:1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>װȫ<D7B0><C8AB><EFBFBD>Ŀ<EFBFBD><C4BF>߱<EFBFBD><DFB1><EFBFBD>ҪΪ16:9
FISHEYE_SIZE imgOutput; // <20><><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD>ֱ<EFBFBD><D6B1><EFBFBD>(<28><><EFBFBD><EFBFBD>ǰ), ͼ<><CDBC><EFBFBD><EFBFBD>У<EFBFBD><D0A3>ģʽΪ<CABD>û<EFBFBD><C3BB>Զ<EFBFBD><D4B6><EFBFBD>ģʽʱΪ<CAB1>ⲿ<EFBFBD><E2B2BF><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD>ģʽΪ<CABD>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD>
FISHEYE_SUBMODE* subMode; // <20><>ģʽ<C4A3><CABD>Ϣ, ͼ<><CDBC><EFBFBD><EFBFBD>У<EFBFBD><D0A3>ģʽΪ<CABD>û<EFBFBD><C3BB>Զ<EFBFBD><D4B6><EFBFBD>ģʽʱΪ<CAB1>ⲿ<EFBFBD><E2B2BF><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD>ģʽΪ<CABD>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD>
int subModeNum; // <20><>ģʽ<C4A3><CABD>, ͼ<><CDBC><EFBFBD><EFBFBD>У<EFBFBD><D0A3>ģʽΪ<CABD>û<EFBFBD><C3BB>Զ<EFBFBD><D4B6><EFBFBD>ģʽʱΪ<CAB1>ⲿ<EFBFBD><E2B2BF><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD>ģʽΪ<CABD>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD>
int outputSizeRatio; // <20>ݲ<EFBFBD><DDB2><EFBFBD><EFBFBD><EFBFBD>, У<><D0A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ű<EFBFBD>,Q8<51><38>ʽ,<2C><>Χ0-256, 256Ϊ<36><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD><D6B1><EFBFBD>
int reserved[1]; // <20><><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD>
}FISHEYE_OUTPUTFORMAT;
typedef struct
{
int x;
int y;
int hAngle;
int vAngle;
int available;
int reserved[3];
}FISHEYE_REGIONPARAM;
typedef struct
{
FISHEYE_REGIONPARAM regionParam[9];
int circularOffset;
int panoramaOffset;
int useRegionParam; // Ϊ1ʱ<31><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><D0A7>ʹ<EFBFBD>ø<EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD>г<EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>û<EFBFBD>б<EFBFBD><D0B1><EFBFBD><EFBFBD><EFBFBD>Ϣʱ<CFA2><CAB1><EFBFBD><EFBFBD>Ϊ0
int reserved[1];
}FISHEYE_MODEINITPARAM;
typedef struct
{
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
int zoom_type; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ----<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><EFBFBD>͸<EFBFBD><CDB8>ݿ<EFBFBD>ѡĿ<D1A1><C4BF><EFBFBD><EFBFBD>С<EFBFBD><EFBFBD><E4B1B6><EFBFBD><EFBFBD>ģʽ
int hcam_wax; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD>Ƕ<EFBFBD>x<EFBFBD><78>ˮƽ<CBAE><C6BD>
int hcam_way; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD>Ƕ<EFBFBD>y<EFBFBD><79><EFBFBD><EFBFBD>ֱ<EFBFBD><D6B1>
int hcam_wmul; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD><C3A3><EFBFBD>׼<EFBFBD><D7BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
int cfg_type; // <20><><EFBFBD>÷<EFBFBD>ʽ<EFBFBD><CABD>Ĭ<EFBFBD><C4AC>Ϊ1<CEAA><31>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD><EFBFBD>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD>ʽ,1<><31>ʹ<EFBFBD>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>÷<EFBFBD>ʽ<EFBFBD><CABD>0<EFBFBD><30>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD><E8B1B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>÷<EFBFBD>ʽ
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
/* <20><>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD> */
int prm_re; // ͶӰ<CDB6>
int prm_mul; // ͶӰ<CDB6><D3B0><EFBFBD><EFBFBD>
int prm_dx; // x<><78><EFBFBD><EFBFBD>ƫ<EFBFBD><C6AB>
int prm_dy; // y<><79><EFBFBD><EFBFBD>ƫ<EFBFBD><C6AB>
int prm_cw; // CMOS<4F><53><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5>ʹ<EFBFBD>ÿ<EFBFBD><C3BF><EFBFBD>
int prm_ch; // CMOS<4F>ߣ<EFBFBD>ʵ<EFBFBD><CAB5>ʹ<EFBFBD>øߣ<C3B8>
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CDB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD>cfg_typeΪ0ʱ<30><CAB1><EFBFBD>øò<C3B8><C3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><D0A7><><C4AC>130<33>ȡ<EFBFBD>130<33><30>ǹ<EFBFBD><C7B9><EFBFBD><EFBFBD>200W65<36><35><EFBFBD><EFBFBD> */
LEN_TYPE mlen_type; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD>
CAM_TYPE mcam_type; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CAM_TYPE hcam_type; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
int himg_width; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD>
int himg_height; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD>
int prm_fax; // <20><><EFBFBD><EFBFBD>ˮƽ<CBAE>ӳ<EFBFBD><D3B3><EFBFBD>
/* <20><>Ĭ<EFBFBD>ϵIJ<CFB5><C4B2><EFBFBD> */
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
int mcam_fc; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><D0A7><EFBFBD><EFBFBD>
int mcam_cw; // <20><>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
int mcam_ch; // <20><>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
int cam_height; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߶ȣ<DFB6><C8A3>ף<EFBFBD><D7A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱδʹ<CEB4>ã<EFBFBD>
int prm_ma; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
int prm_hw; // CMOS<4F><53>
int prm_hh; // CMOS<4F><53>
int prm_fo; // <20><>Ч<EFBFBD><D0A7><EFBFBD><EFBFBD>
int prm_ca; // <20><>Ұ<EFBFBD><D2B0><EFBFBD><EFBFBD>
int prm_mmul; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
}MHFPTZ_CONFIGPARAM;
typedef struct
{
FISHEYE_SIZE mainStreamSize; // <20><>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԭʼ<D4AD><CABC><EFBFBD>ߣ<EFBFBD><DFA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD><D6B1><EFBFBD><EFBFBD><EFBFBD>֮<EFBFBD><D6AE><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǵ˷ֱ<CBB7><D6B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŷ<EFBFBD><C5B6><EFBFBD>
int originX; // <20><><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Բ<EFBFBD><D4B2>Բ<EFBFBD>ĺ<EFBFBD><C4BA><EFBFBD><EFBFBD><EFBFBD>, <20><>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>0-8192<39><32><EFBFBD><EFBFBD>ϵ
int originY; // <20><><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Բ<EFBFBD><D4B2>Բ<EFBFBD><D4B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>0-8192<39><32><EFBFBD><EFBFBD>ϵ
int radius; // <20><><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Բ<EFBFBD>İ뾶, <20><>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>0-8192<39><32><EFBFBD><EFBFBD>ϵ
int lensDirection; // <20><>ת<EFBFBD>Ƕ<EFBFBD>, Q7<51><37>ʽ, <20><>Χ0-360*128, һ<><D2BB><EFBFBD><EFBFBD>Ϊ0
FISHEYE_MOUNTMODE mainMountMode; // <20><><EFBFBD><EFBFBD>װģʽ
FISHEYE_CALIBRATMODE mainCalibrateMode; // ͼ<><CDBC><EFBFBD><EFBFBD>У<EFBFBD><D0A3>ģʽ
FISHEYE_MODEINITPARAM modeInitParam; // <20>ⲿ<EFBFBD><E2B2BF><EFBFBD><EFBFBD>ģʽ<C4A3><CABD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ<C4A3>л<EFBFBD><D0BB>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD>ε<EFBFBD>״̬,
FISHEYE_OUTPUTFORMAT *outputFormat; // <20><><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD>Ϣ
MHFPTZ_CONFIGPARAM *configParam; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ò<EFBFBD><C3B2><EFBFBD>
int enableAutoContrast; // <20><><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6>Աȶ<D4B1>, 0<>ر<EFBFBD>, 1<><31><EFBFBD><EFBFBD>, <20>ù<EFBFBD><C3B9>ܻ<EFBFBD><DCBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E3B7A8>ʱ, <20><>Ҫ<EFBFBD><D2AA><EFBFBD>ܺõĻ<C3B5><C4BB><EFBFBD><EFBFBD>Ž<EFBFBD><C5BD><EFBFBD><E9BFAA>
int alphaHistogram; // ֱ<><D6B1>ͼIIRǿ<52><C7BF>0-255, Ĭ<><C4AC>128, Խ<><D4BD>Խ<EFBFBD>ο<EFBFBD><CEBF><EFBFBD>ǰ֡
int alphaGray; // <20>Ҷ<EFBFBD><D2B6><EFBFBD><EFBFBD><EFBFBD>ǿ<EFBFBD><C7BF>0-255, Ĭ<><C4AC>245, Խ<><D4BD>Խ<EFBFBD>Աȶ<D4B1><C8B6><EFBFBD>
FISHEYE_SIZE captureSize; // <20><>Ӧ<EFBFBD><D3A6>ǰģʽ<C4A3>µ<EFBFBD>ץͼ<D7A5>ֱ<EFBFBD><D6B1><EFBFBD>
int mhfptzIndex; // IN <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0,1,2....
int reserved[1]; // <20><><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD>
}FISHEYE_OPTPARAM;
typedef struct
{
FISHEYE_EPTZCMD ePtzCmd; // <20><>̨<EFBFBD><CCA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD><CBB5><EFBFBD><EFBFBD>FISHEYE_EPtzCmd<6D><64><EFBFBD><EFBFBD>
int winId; // Ҫ<><D2AA><EFBFBD><EFBFBD>eptz<74>Ĵ<EFBFBD><C4B4>ڱ<EFBFBD><DAB1>ţ<EFBFBD><C5A3><EFBFBD><EFBFBD>Ͻ<EFBFBD>winIdΪ0<CEAA><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5><EFBFBD>
int arg1;
int arg2;
int arg3;
int arg4;
int arg5;
int arg6;
int reserved0[6]; // <20><><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD>
void* pParam; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void* pResult;
void* pArg;
int reserved1[7]; // <20><><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD>
}FISHEYE_EPTZPARAM;
/**
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>fisheye.dll<EFBFBD>
*
* @param[in] nPort ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @return BOOL<EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>TRUE<EFBFBD><EFBFBD>ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD><EFBFBD>FALSE
* @note <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><EFBFBD><EFBFBD>PLAY_GetLastErrorEx<EFBFBD>ӿڻ<EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
PLAYSDK_API BOOL CALLMETHOD PLAY_StartFisheye(LONG nPort);
/**
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD>۲<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
* @param[in] nPort ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[in] operatetype <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[in/out] pOptParam <EFBFBD><EFBFBD><EFBFBD>۲<EFBFBD><EFBFBD><EFBFBD>
* @return BOOL<EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>TRUE<EFBFBD><EFBFBD>ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD><EFBFBD>FALSE
* @note <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><EFBFBD><EFBFBD>PLAY_GetLastErrorEx<EFBFBD>ӿڻ<EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
PLAYSDK_API BOOL CALLMETHOD PLAY_OptFisheyeParams(LONG nPort, FISHEYE_OPERATETYPE operatetype, FISHEYE_OPTPARAM* pOptParam);
/**
* <EFBFBD><EFBFBD><EFBFBD>ڸ<EFBFBD><EFBFBD><EFBFBD>ģʽ<EFBFBD>¿<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>رյڶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>۴<EFBFBD><EFBFBD>ڡ<EFBFBD>
*
* @param[in] nPort ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[in] hDestWnd <EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD>ھ<EFBFBD><EFBFBD><EFBFBD>
* @param[in] pOptParam <EFBFBD>ڶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڶ<EFBFBD>Ӧ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>۲<EFBFBD><EFBFBD><EFBFBD>
* @param[in] bEnable <EFBFBD>򿪻<EFBFBD><EFBFBD>ر<EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @return BOOL<EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>TRUE<EFBFBD><EFBFBD>ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD><EFBFBD>FALSE
* @note <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><EFBFBD><EFBFBD>PLAY_GetLastErrorEx<EFBFBD>ӿڻ<EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
PLAYSDK_API BOOL CALLMETHOD PLAY_FisheyeSecondRegion(LONG nPort, HWND hDestWnd, FISHEYE_OPTPARAM* pOptParam, BOOL bEnable);
/**
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>eptz(<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̨<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƶ<EFBFBD><EFBFBD><EFBFBD>
*
* @param[in] nPort ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[in/out] pEptzParam <EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><EFBFBD><EFBFBD>
* @param[in] bSecondRegion <EFBFBD>Ƿ<EFBFBD>Ϊ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ<EFBFBD>µĵڶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڣ<EFBFBD>1Ϊ<EFBFBD>Ĭ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>0
* @return BOOL<EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>TRUE<EFBFBD><EFBFBD>ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD><EFBFBD>FALSE
* @note <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><EFBFBD><EFBFBD>PLAY_GetLastErrorEx<EFBFBD>ӿڻ<EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
PLAYSDK_API BOOL CALLMETHOD PLAY_FisheyeEptzUpdate(LONG nPort, FISHEYE_EPTZPARAM* pEptzParam, BOOL bSecondRegion);
/**
* ֹͣ<EFBFBD><EFBFBD>Ƶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܡ<EFBFBD>
*
* @param[in] nPort ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @return BOOL<EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>TRUE<EFBFBD><EFBFBD>ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD><EFBFBD>FALSE
* @note <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><EFBFBD><EFBFBD>PLAY_GetLastErrorEx<EFBFBD>ӿڻ<EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
PLAYSDK_API BOOL CALLMETHOD PLAY_StopFisheye(LONG nPort);
/**
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD>ص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
* @param[in] nPort ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[in] byCorrectMode <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ
* @param[in] wRadius <EFBFBD>
* @param[in] wCircleX Բ<EFBFBD>ĺ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[in] wCircleY Բ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[in] widthRatio <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[in] heightRatio <EFBFBD>߱<EFBFBD><EFBFBD><EFBFBD>
* @param[in] gain <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[in] denoiseLevel <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȼ<EFBFBD>
* @param[in] InstallStyle <EFBFBD><EFBFBD><EFBFBD>۰<EFBFBD>װ<EFBFBD><EFBFBD>ʽ
* @param[in] pUserData <EFBFBD>û<EFBFBD><EFBFBD>Զ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
typedef void (CALLBACK* fFishEyeInfoFun)(
LONG nPort,
BYTE byCorrectMode,
WORD wRadius,
WORD wCircleX,
WORD wCircleY,
UINT widthRatio,
UINT heightRatio,
BYTE gain,
BYTE denoiseLevel,
BYTE installStyle,
void* pUserData );
/**
* <EFBFBD><EFBFBD><EFBFBD>û<EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD>ص<EFBFBD><EFBFBD><EFBFBD>
*
* @param[in] nPort ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[out] pFishEyeInfoFun <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD>ص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ΪNULL
* @param[in] pUserData <EFBFBD>û<EFBFBD><EFBFBD>Զ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @return BOOL<EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>TRUE<EFBFBD><EFBFBD>ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD><EFBFBD>FALSE
* @note <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><EFBFBD><EFBFBD>PLAY_GetLastErrorEx<EFBFBD>ӿڻ<EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
PLAYSDK_API BOOL CALLMETHOD PLAY_SetFishEyeInfoCallBack(LONG nPort, fFishEyeInfoFun pFishEyeInfoFun, void* pUserData);
/************************************************************************/
//> ץͼ
/************************************************************************/
/**
* ץͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>BMPͼƬ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊָ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD>PLAY_SetDisplayCallBack<EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><EFBFBD>
* <EFBFBD>ݻص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><EFBFBD><EFBFBD>ݽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>ŵ<EFBFBD><EFBFBD>ã<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><EFBFBD>
* <EFBFBD><EFBFBD>(<EFBFBD><EFBFBD>ץͼ)<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>н<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><EFBFBD>Ͳ<EFBFBD><EFBFBD>ϵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>PLAY_
* CatchPicһ<EFBFBD><EFBFBD>ֻץһ<EFBFBD><EFBFBD>ͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͣ<EFBFBD>͵<EFBFBD>֡<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱʵ<EFBFBD><EFBFBD>ץͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* <EFBFBD>û<EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD><EFBFBD>ץͼ(һ<EFBFBD><EFBFBD>ץһ<EFBFBD><EFBFBD>ͼ)<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>PLAY_CatchPic<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD>һ<EFBFBD><EFBFBD>
* ʱ<EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>PLAY_SetDisplayCallBack<EFBFBD><EFBFBD>
*
* @param[in] nPort ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[in] sFileName <EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD>
* @return BOOL<EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>TRUE<EFBFBD><EFBFBD>ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD><EFBFBD>FALSE
* @note <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><EFBFBD><EFBFBD>PLAY_GetLastErrorEx<EFBFBD>ӿڻ<EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
PLAYSDK_API BOOL CALLMETHOD PLAY_CatchPic(LONG nPort,char* sFileName);
/**
* ץͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼƬ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊָ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD>PLAY_SetDisplayCallBack<EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><EFBFBD>
* <EFBFBD>ݻص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><EFBFBD><EFBFBD>ݽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>ŵ<EFBFBD><EFBFBD>ã<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><EFBFBD>
* <EFBFBD><EFBFBD>(<EFBFBD><EFBFBD>ץͼ)<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>н<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><EFBFBD>Ͳ<EFBFBD><EFBFBD>ϵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>PLAY_
* CatchPicExһ<EFBFBD><EFBFBD>ֻץһ<EFBFBD><EFBFBD>ͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͣ<EFBFBD>͵<EFBFBD>֡<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱʵ<EFBFBD><EFBFBD>ץͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* <EFBFBD>û<EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD><EFBFBD>ץͼ(һ<EFBFBD><EFBFBD>ץһ<EFBFBD><EFBFBD>ͼ)<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>PLAY_CatchPicEx<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD>һ<EFBFBD><EFBFBD>
* ʱ<EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>PLAY_SetDisplayCallBack<EFBFBD><EFBFBD>
* @param[in] nPort ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[in] sFileName <EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD>
* @param[in] ePicfomat ͼƬ<EFBFBD><EFBFBD>ʽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>tPicFormats
* @return BOOL<EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>TRUE<EFBFBD><EFBFBD>ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD><EFBFBD>FALSE
* @note <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><EFBFBD><EFBFBD>PLAY_GetLastErrorEx<EFBFBD>ӿڻ<EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
PLAYSDK_API BOOL CALLMETHOD PLAY_CatchPicEx(LONG nPort,char* sFileName,tPicFormats ePicfomat);
/**
* ͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽתΪBMP<EFBFBD><EFBFBD>ʽ<EFBFBD><EFBFBD>
*
* @param[in] pBuf ͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD>
* @param[in] nSize ͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴ<EFBFBD>С
* @param[in] nWidth ͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[in] nHeight ͼ<EFBFBD><EFBFBD><EFBFBD>߶<EFBFBD>
* @param[in] nType <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͣ<EFBFBD><EFBFBD><EFBFBD>T_YV12<EFBFBD><EFBFBD>T_UYVY
* @param[in] sFileName Ҫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>BMP<EFBFBD><EFBFBD>Ϊ<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD>չ<EFBFBD><EFBFBD>
* @return BOOL<EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>TRUE<EFBFBD><EFBFBD>ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD><EFBFBD>FALSE
* @note <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><EFBFBD><EFBFBD>PLAY_GetLastErrorEx<EFBFBD>ӿڻ<EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
PLAYSDK_API BOOL CALLMETHOD PLAY_ConvertToBmpFile(char * pBuf,LONG nSize,LONG nWidth,LONG nHeight,LONG nType, char *sFileName);
/*
* ͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽתΪJPEG<EFBFBD><EFBFBD>ʽ<EFBFBD><EFBFBD>
*
* @param[in] pYUVBuf ͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD>
* @param[in] nWidth ͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[in] nHeight ͼ<EFBFBD><EFBFBD><EFBFBD>߶<EFBFBD>
* @param[in] YUVtype YUV<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͣ<EFBFBD><EFBFBD><EFBFBD>T_YV12<EFBFBD><EFBFBD>T_UYVY
* @param[in] quality ͼƬѹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ(0, 100]
* @param[in] sFileName <EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD>
* @return BOOL<EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>TRUE<EFBFBD><EFBFBD>ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD><EFBFBD>FALSE
* @note <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><EFBFBD><EFBFBD>PLAY_GetLastErrorEx<EFBFBD>ӿڻ<EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
PLAYSDK_API BOOL CALLMETHOD PLAY_ConvertToJpegFile(char *pYUVBuf, LONG nWidth, LONG nHeight, int YUVtype, int quality, char *sFileName);
/**
* ץȡBMPͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
* @param[in] nPort ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[in] pBmpBuf <EFBFBD><EFBFBD><EFBFBD><EFBFBD>BMPͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵĻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD><EFBFBD>bmp ͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD><EFBFBD>
* <EFBFBD>Ƽ<EFBFBD><EFBFBD><EFBFBD>С<EFBFBD><EFBFBD>sizeof(BITMAPFILEHEADER)+sizeof(BITMAPINFOHEADER)+w*h*4<EFBFBD><EFBFBD>
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>w<EFBFBD><EFBFBD>h<EFBFBD>ֱ<EFBFBD>Ϊͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[in] dwBufSize <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С
* @param[out] pBmpSize <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD><EFBFBD>bmpͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>С
* @return BOOL<EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>TRUE<EFBFBD><EFBFBD>ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD><EFBFBD>FALSE
* @note <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><EFBFBD><EFBFBD>PLAY_GetLastErrorEx<EFBFBD>ӿڻ<EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
PLAYSDK_API BOOL CALLMETHOD PLAY_GetPicBMP(LONG nPort, PBYTE pBmpBuf, DWORD dwBufSize, DWORD* pBmpSize);
/**
* ץȡBMPͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
* @param[in] nPort ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[in] pBmpBuf <EFBFBD><EFBFBD><EFBFBD><EFBFBD>BMPͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵĻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD><EFBFBD>bmp ͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD><EFBFBD>
* <EFBFBD>Ƽ<EFBFBD><EFBFBD><EFBFBD>С<EFBFBD><EFBFBD>sizeof(BITMAPFILEHEADER)+sizeof(BITMAPINFOHEADER)+w*h*4<EFBFBD><EFBFBD>
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>w<EFBFBD><EFBFBD>h<EFBFBD>ֱ<EFBFBD>Ϊͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߡ<EFBFBD>
* @param[in] dwBufSize <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С
* @param[out] pBmpSize <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD><EFBFBD>bmpͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>С
* @param[in] nWidth ָ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>bmp<EFBFBD>Ŀ<EFBFBD>
* @param[in] nHeight ָ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>bmp<EFBFBD>ĸ<EFBFBD>
* @param[in] nRgbType ָ<EFBFBD><EFBFBD>RGB<EFBFBD><EFBFBD>ʽ 0<EFBFBD><EFBFBD>RGB32<EFBFBD><EFBFBD>1<EFBFBD><EFBFBD>RGB24<EFBFBD><EFBFBD>
* @return BOOL<EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>TRUE<EFBFBD><EFBFBD>ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD><EFBFBD>FALSE
* @note <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><EFBFBD><EFBFBD>PLAY_GetLastErrorEx<EFBFBD>ӿڻ<EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
PLAYSDK_API BOOL CALLMETHOD PLAY_GetPicBMPEx(LONG nPort, PBYTE pBmpBuf, DWORD dwBufSize, DWORD* pBmpSize, LONG nWidth, LONG nHeight, int nRgbType);
/**
* ץȡJPEGͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
* @param[in] nPort ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[in] pJpegBuf <EFBFBD><EFBFBD><EFBFBD><EFBFBD>JPEGͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵĻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD><EFBFBD>JPEGͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD><EFBFBD>
<EFBFBD>Ƽ<EFBFBD><EFBFBD><EFBFBD>С<EFBFBD><EFBFBD>w*h*3/2<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>w<EFBFBD><EFBFBD>h<EFBFBD>ֱ<EFBFBD>Ϊͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[in] dwBufSize <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С
* @param[out] pJpegSize <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD><EFBFBD>JPEGͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>С
* @param[in] quality JPEGͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡֵ<EFBFBD><EFBFBD>ΧΪ(0,100]
* @return BOOL<EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>TRUE<EFBFBD><EFBFBD>ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD><EFBFBD>FALSE
* @note <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><EFBFBD><EFBFBD>PLAY_GetLastErrorEx<EFBFBD>ӿڻ<EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
PLAYSDK_API BOOL CALLMETHOD PLAY_GetPicJPEG(LONG nPort, PBYTE pJpegBuf, DWORD dwBufSize, DWORD* pJpegSize, int quality);
/**
* ץȡTIFFͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
* @param[in] nPort ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[in] pTiffBuf <EFBFBD><EFBFBD><EFBFBD><EFBFBD>TIFFͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵĻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD><EFBFBD>tiffͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD><EFBFBD>
<EFBFBD>Ƽ<EFBFBD><EFBFBD><EFBFBD>С<EFBFBD><EFBFBD>w*h*3+1024<EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>w<EFBFBD><EFBFBD>h<EFBFBD>ֱ<EFBFBD>Ϊͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[in] dwBufSize <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С
* @param[out] pTiffSize <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD><EFBFBD>TIFFͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>С
* @return BOOL<EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>TRUE<EFBFBD><EFBFBD>ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD><EFBFBD>FALSE
* @note <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><EFBFBD><EFBFBD>PLAY_GetLastErrorEx<EFBFBD>ӿڻ<EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
PLAYSDK_API BOOL CALLMETHOD PLAY_GetPicTIFF(LONG nPort, PBYTE pTiffBuf, DWORD dwBufSize, DWORD* pTiffSize);
/**
* ץͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߡ<EFBFBD>
*
* @param[in] nPort ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[in] sFileName <EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD>
* @param[in] lTargetWidth ָ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[in] lTargetHeight ָ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><EFBFBD><EFBFBD>߶<EFBFBD>
* @param[in] ePicfomat ͼƬ<EFBFBD><EFBFBD>ʽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>tPicFomats
* @return BOOL<EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>TRUE<EFBFBD><EFBFBD>ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD><EFBFBD>FALSE
* @note <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><EFBFBD><EFBFBD>PLAY_GetLastErrorEx<EFBFBD>ӿڻ<EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
PLAYSDK_API BOOL CALLMETHOD PLAY_CatchResizePic(LONG nPort, char* sFileName, LONG lTargetWidth, LONG lTargetHeight, tPicFormats ePicfomat);
/************************************************************************/
//> <20><>ͼ<EFBFBD>ص<EFBFBD>
/************************************************************************/
/*
*<EFBFBD><EFBFBD>ͼ<EFBFBD>ص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
* @param[in] nPort ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[in] hDc OffScreen<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[in] pUserData <EFBFBD>û<EFBFBD><EFBFBD>Զ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
typedef void (CALLBACK* fDrawCBFun)(LONG nPort,HDC hDc, void* pUserData);
/*
* ע<EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD>ǰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>device context<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>DC<EFBFBD>ϻ<EFBFBD>ͼ(<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)<EFBFBD><EFBFBD>
* <EFBFBD>ͺ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><EFBFBD>ڵĿͻ<EFBFBD><EFBFBD><EFBFBD>DC<EFBFBD>ϻ<EFBFBD>ͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>DC<EFBFBD><EFBFBD><EFBFBD>Ǵ<EFBFBD><EFBFBD>ڿͻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>DC<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>DirectDraw<EFBFBD><EFBFBD>
* <EFBFBD><EFBFBD>Off-Screen<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>DC<EFBFBD><EFBFBD>ע<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><EFBFBD>overlay<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӿ<EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϻ<EFBFBD>ͼ<EFBFBD><EFBFBD>ֻҪ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>͸<EFBFBD><EFBFBD>ɫ<EFBFBD>Ͳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǡ<EFBFBD>
*
* @param[in] nPort ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[out] DrawFun <EFBFBD><EFBFBD>ͼ<EFBFBD>ص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[in] pUserData <EFBFBD>û<EFBFBD><EFBFBD>Զ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @return BOOL<EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>TRUE<EFBFBD><EFBFBD>ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD><EFBFBD>FALSE
* @note <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><EFBFBD><EFBFBD>PLAY_GetLastErrorEx<EFBFBD>ӿڻ<EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
PLAYSDK_API BOOL CALLMETHOD PLAY_RigisterDrawFun(LONG nPort, fDrawCBFun DrawCBFun, void* pUserData);
/*
*<EFBFBD><EFBFBD>ͼ<EFBFBD>ص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
* @param[in] nPort ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[in] nReginNum <EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ţ<EFBFBD><EFBFBD><EFBFBD>Χ[0,(MAX_DISPLAY_WND-1)]<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>nRegionNumΪ0<EFBFBD><EFBFBD>
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD>
* @param[in] hDc OffScreen<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[in] pUserData <EFBFBD>û<EFBFBD><EFBFBD>Զ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
typedef void (CALLBACK* fDrawCBFunEx)(LONG nPort,LONG nReginNum,HDC hDc, void* pUserData);
/*
* ע<EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD>ǰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(HDC)<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>DC<EFBFBD><EFBFBD><EFBFBD>Ǵ<EFBFBD><EFBFBD>ڿͻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>DC<EFBFBD><EFBFBD>
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>DirectDraw<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Off-Screen<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>DC<EFBFBD><EFBFBD>ע<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><EFBFBD>overlay<EFBFBD><EFBFBD><EFBFBD>
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӿ<EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><EFBFBD>overlay<EFBFBD><EFBFBD>ʽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϻ<EFBFBD>ͼ<EFBFBD><EFBFBD>ֻҪ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>͸<EFBFBD><EFBFBD>ɫ<EFBFBD>Ͳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǡ<EFBFBD>
*
* @param[in] nPort ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[in] nReginNum <EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ţ<EFBFBD><EFBFBD><EFBFBD>Χ[0,(MAX_DISPLAY_WND-1)]<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>nRegionNumΪ0<EFBFBD><EFBFBD>
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[out] DrawFunEx <EFBFBD><EFBFBD>ͼ<EFBFBD>ص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[in] pUserData <EFBFBD>û<EFBFBD><EFBFBD>Զ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @return BOOL<EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>TRUE<EFBFBD><EFBFBD>ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD><EFBFBD>FALSE
* @note <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><EFBFBD><EFBFBD>PLAY_GetLastErrorEx<EFBFBD>ӿڻ<EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
PLAYSDK_API BOOL CALLMETHOD PLAY_RigisterDrawFunEx(LONG nPort, LONG nReginNum, fDrawCBFunEx DrawFunEx, void* pUserData);
/************************************************************************/
//> ¼<>ƻ<EFBFBD>ת<EFBFBD><EFBFBD><EBB9A6>
/************************************************************************/
/*
* <EFBFBD><EFBFBD>ʼԤ¼<EFBFBD><EFBFBD>
*
* @param[in] nPort <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><EFBFBD>
* @param[in] sFileName ¼<EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD>
* @return BOOL<EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>TRUE<EFBFBD><EFBFBD>ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD><EFBFBD>FALSE
* @note <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><EFBFBD><EFBFBD>PLAY_GetLastErrorEx<EFBFBD>ӿڻ<EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
PLAYSDK_API BOOL CALLMETHOD PLAY_StartPrepareRecord(LONG nPort,const char* pFileName);
/*
* ֹͣԤ¼<EFBFBD><EFBFBD>
*
* @param[in] nPort <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><EFBFBD>
* @return BOOL<EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>TRUE<EFBFBD><EFBFBD>ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD><EFBFBD>FALSE
* @note <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><EFBFBD><EFBFBD>PLAY_GetLastErrorEx<EFBFBD>ӿڻ<EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
PLAYSDK_API BOOL CALLMETHOD PLAY_StopPrepareRecord(LONG nPort);
/*
* <EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ<EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD><EFBFBD><EFBFBD>PLAY_Play֮<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>á<EFBFBD>
*
* @param[in] nPort ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[in] sFileName <EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD>
* @param[in] idataType ȡֵDATA_RECORD_TYPE
* @return BOOL<EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>TRUE<EFBFBD><EFBFBD>ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD><EFBFBD>FALSE
* @note <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><EFBFBD><EFBFBD>PLAY_GetLastErrorEx<EFBFBD>ӿڻ<EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
typedef enum
{
DATA_RECORD_ORIGINAL = 0, // ¼<><C2BC>ԭʼ<D4AD><CABC>Ƶ<EFBFBD><C6B5>
DATA_RECORD_AVI, // ¼<><C2BC>AVI
DATA_RECORD_ASF, // ¼<><C2BC>ASF
DATA_RECORD_ORIGINAL_SEGMENT, // ¼<>Ʒֶε<D6B6>ԭʼ<D4AD><CABC>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֶ<EFBFBD><D6B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>PLAY_StartDataRecordEx<45>ӿڣ<D3BF>
DATA_RECORD_RESIZE_AVI, // ¼<><C2BC>ת<EFBFBD><D7AA><EFBFBD>ֱ<EFBFBD><D6B1>ʵ<EFBFBD>AVI<56><49>ʹ<EFBFBD><CAB9>PLAY_ResolutionScale<6C><65><EFBFBD>ÿ<EFBFBD><C3BF><EFBFBD>
DATA_RECORD_MP4, // ¼<><C2BC>MP4
DATA_RECORD_RESIZE_MP4, // ¼<><C2BC>ת<EFBFBD><D7AA><EFBFBD>ֱ<EFBFBD><D6B1>ʵ<EFBFBD>MP4<50><34>ʹ<EFBFBD><CAB9>PLAY_ResolutionScale<6C><65><EFBFBD>ÿ<EFBFBD><C3BF><EFBFBD>
DATA_RECORD_MP4_NOSEEK, // ¼<>Ʋ<EFBFBD><C6B2><EFBFBD>дMP4
DATA_RECORD_RESIZE_MP4_NOSEEK,// ¼<><C2BC>ת<EFBFBD><D7AA><EFBFBD>ֱ<EFBFBD><D6B1>ʵIJ<CAB5><C4B2><EFBFBD>дMP4<50><34>ʹ<EFBFBD><CAB9>PLAY_ResolutionScale<6C><65><EFBFBD>ÿ<EFBFBD><C3BF><EFBFBD>
DATA_RECORD_TS, // ¼<><C2BC>TS
DATA_RECORD_PS, // <20><>׼PS<50><53>װ
DATA_RECORD_RESIZE_DAV, // ¼<><C2BC>DAV(<28><>Ҫ<EFBFBD><D2AA><EFBFBD>±<EFBFBD><C2B1><EFBFBD><EFBFBD><EFBFBD>)
DATA_RECORD_DAV, // ¼<><C2BC>DAV(<28><><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD>±<EFBFBD><C2B1><EFBFBD><EFBFBD><EFBFBD>)
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>ö<EFBFBD>٣<EFBFBD><D9A3>ڴ<EFBFBD>֮ǰ<D6AE><C7B0><EFBFBD><EFBFBD>
DATA_RECORD_COUNT // ¼<><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ
}DATA_RECORD_TYPE;
PLAYSDK_API BOOL CALLMETHOD PLAY_StartDataRecord(LONG nPort, char *sFileName, int idataType);
/*
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԭʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ýӿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>PLAY_StartDataRecord<EFBFBD><EFBFBD><EFBFBD><EFBFBD>PLAY_StartDataRecordEx<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD>á<EFBFBD>
*
* @param[in] nPort ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[in] pBuf <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[in] nSize <EFBFBD><EFBFBD>С
* @return BOOL<EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>TRUE<EFBFBD><EFBFBD>ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD><EFBFBD>FALSE
* @note <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><EFBFBD><EFBFBD>PLAY_GetLastErrorEx<EFBFBD>ӿڻ<EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
PLAYSDK_API BOOL CALLMETHOD PLAY_WriteData(LONG nPort, PBYTE pBuf,DWORD nSize);
/*
* ֹͣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
* @param[in] nPort ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @return BOOL<EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>TRUE<EFBFBD><EFBFBD>ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD><EFBFBD>FALSE
* @note <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><EFBFBD><EFBFBD>PLAY_GetLastErrorEx<EFBFBD>ӿڻ<EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
PLAYSDK_API BOOL CALLMETHOD PLAY_StopDataRecord(LONG nPort);
/*
* <EFBFBD>ص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> AVIConvertCallback<EFBFBD><EFBFBD>
*
* @param[in] nPort ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[in] lMediaChangeType AVI_MEDIACHANGE_FRAMERATE<EFBFBD><EFBFBD>ʾ֡<EFBFBD>ʸıAVI_MEDIACHANGE_RESOLUTION<EFBFBD><EFBFBD>ʾ<EFBFBD>ֱ<EFBFBD><EFBFBD>ʸı<EFBFBD>
* @param[in] pUserData <EFBFBD>û<EFBFBD><EFBFBD>Զ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[out] pIsNewFile TRUE <EFBFBD>ֶ<EFBFBD>ת<EFBFBD><EFBFBD><EFBFBD><EFBFBD>FALSE <EFBFBD><EFBFBD><EFBFBD>ֶΣ<EFBFBD>Ĭ<EFBFBD>ϲ<EFBFBD><EFBFBD>ֶ<EFBFBD>
* @param[out] sNewFileName <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֶ<EFBFBD>ת<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>µ<EFBFBD>¼<EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD>
* @return BOOL<EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>TRUE<EFBFBD><EFBFBD>ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD><EFBFBD>FALSE
* @note <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><EFBFBD><EFBFBD>PLAY_GetLastErrorEx<EFBFBD>ӿڻ<EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
typedef void (CALLBACK* fAVIConvertCallback)(LONG nPort, LONG lMediaChangeType, void* pUserData, BOOL *pIsNewFile, char *sNewFileName);
/*
* <EFBFBD><EFBFBD>ʼAVIת<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>AVIת<EFBFBD><EFBFBD>״̬<EFBFBD>ص<EFBFBD><EFBFBD><EFBFBD>
*
* @param[in] nPort ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[in] sFileName <EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD>
* @param[out] pAVIFunc <EFBFBD>ص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[in] pUserData <EFBFBD>û<EFBFBD><EFBFBD>Զ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @return BOOL<EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>TRUE<EFBFBD><EFBFBD>ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD><EFBFBD>FALSE
* @note <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><EFBFBD><EFBFBD>PLAY_GetLastErrorEx<EFBFBD>ӿڻ<EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
PLAYSDK_API BOOL CALLMETHOD PLAY_StartAVIConvert(LONG nPort, char *sFileName, fAVIConvertCallback pAVIFunc, void* pUserData);
/*
* ֹͣAVIת<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
* @param[in] nPort ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @return BOOL<EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>TRUE<EFBFBD><EFBFBD>ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD><EFBFBD>FALSE
* @note <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><EFBFBD><EFBFBD>PLAY_GetLastErrorEx<EFBFBD>ӿڻ<EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
PLAYSDK_API BOOL CALLMETHOD PLAY_StopAVIConvert(LONG nPort);
/************************************************************************/
//> <20><><EFBFBD><EFBFBD><EBBCB0>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
/************************************************************************/
/*
* ָ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(Windowsƽ̨)<EFBFBD><EFBFBD> PLAY_Play֮ǰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><EFBFBD>
*
* @param[in] nPort ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[in] decodeType <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>H264<EFBFBD><EFBFBD> Hevc)
* @param[in] renderType <EFBFBD><EFBFBD>Ⱦģʽ
* @return BOOL<EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>TRUE<EFBFBD><EFBFBD>ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD><EFBFBD>FALSE
* @note <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><EFBFBD><EFBFBD>PLAY_GetLastErrorEx<EFBFBD>ӿڻ<EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
PLAYSDK_API BOOL CALLMETHOD PLAY_SetEngine(LONG nPort,DecodeType decodeType,RenderType renderType);
/*
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>óɸ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD><EFBFBD><EFBFBD>CPU<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʸߡ<EFBFBD><EFBFBD><EFBFBD>֧<EFBFBD>ֶ<EFBFBD>·<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Խ<EFBFBD><EFBFBD><EFBFBD>CPU<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʡ<EFBFBD><EFBFBD><EFBFBD>ij·<EFBFBD>Ŵ󲥷<EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><EFBFBD><EFBFBD>óɸ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* <EFBFBD>Դ<EFBFBD>õĻ<EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
* @param[in] nPort ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[in] bHighQuality ΪTRUE(1)ʱͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ΪFALSE(0)ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(Ĭ<EFBFBD><EFBFBD>ֵ)
* @return BOOL<EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>TRUE<EFBFBD><EFBFBD>ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD><EFBFBD>FALSE
* @note <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><EFBFBD><EFBFBD>PLAY_GetLastErrorEx<EFBFBD>ӿڻ<EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
PLAYSDK_API BOOL CALLMETHOD PLAY_SetPicQuality(LONG nPort,BOOL bHighQuality);
/*
* <EFBFBD><EFBFBD>ȡͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
* @param[in] nPort ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[out] bHighQuality <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>TRUE<EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>FALSE<EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @return BOOL<EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>TRUE<EFBFBD><EFBFBD>ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD><EFBFBD>FALSE
* @note <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><EFBFBD><EFBFBD>PLAY_GetLastErrorEx<EFBFBD>ӿڻ<EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
PLAYSDK_API BOOL CALLMETHOD PLAY_GetPictureQuality(LONG nPort,BOOL *bHighQuality);
/*
* <EFBFBD><EFBFBD>ֱͬ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD>ء<EFBFBD><EFBFBD>˽ӿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>PLAY_Play֮<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD><EFBFBD><EFBFBD><EFBFBD>²<EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>á<EFBFBD>
* <EFBFBD>ڲ<EFBFBD><EFBFBD>Ŷ<EFBFBD>̬ͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֶϲ<EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD>ô˽ӿڴ򿪴<EFBFBD>ֱͬ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܡ<EFBFBD>
*
* @param[in] nPort ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[in] bEnable TRUE<EFBFBD>򿪴<EFBFBD>ֱͬ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>FALSE<EFBFBD>رմ<EFBFBD>ֱͬ<EFBFBD><EFBFBD>
* @return BOOL<EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>TRUE<EFBFBD><EFBFBD>ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD><EFBFBD>FALSE
* @note <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><EFBFBD><EFBFBD>PLAY_GetLastErrorEx<EFBFBD>ӿڻ<EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
PLAYSDK_API BOOL CALLMETHOD PLAY_VerticalSyncEnable(LONG nPort, BOOL bEnable);
/*
* <EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ø<EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԡ<EFBFBD>
*
* @param[in] nPort ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[in] bEnable <EFBFBD><EFBFBD><EFBFBD><EFBFBD>PLAY_STRATEGE_E<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @return BOOL<EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>TRUE<EFBFBD><EFBFBD>ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD><EFBFBD>FALSE
* @note <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><EFBFBD><EFBFBD>PLAY_GetLastErrorEx<EFBFBD>ӿڻ<EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
typedef enum _PLAY_STRATEGE
{
PLAY_THROW_FRAME_NO = 0, // <20><><EFBFBD><EFBFBD>֡
PLAY_THROW_FRAME_FLAG_HIGHT = 1, // Ĭ<>ϲ<EFBFBD><CFB2>Գ<EFBFBD>֡<EFBFBD><D6A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1080P<30><50><EFBFBD><EFBFBD>4<EFBFBD><34><EFBFBD><EFBFBD>(<28><>)<29><><EFBFBD>ϳ<EFBFBD>֡<EFBFBD><D6A1>[1080P,720P]<5D><><EFBFBD><EFBFBD>8<EFBFBD><38><EFBFBD><EFBFBD>(<28><>)<29><><EFBFBD>ϳ<EFBFBD>֡<EFBFBD><D6A1>С<EFBFBD><D0A1>720P<30><50><EFBFBD><EFBFBD>16<31><36><EFBFBD><EFBFBD>(<28><>)<29><><EFBFBD>ϳ<EFBFBD>֡
PLAY_THROW_FRAME_FLAG_ALL = 2, // ǿ<>Ƴ<EFBFBD><49><D6A1><EFBFBD><EFBFBD>
PLAY_THROW_FRAME_FLAG_ADAPTION = 3, // <20><><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֡
PLAY_THROW_FRAME_FLAG_ADAPTION_LOW_CPU = 4, // <20><><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֡<EFBFBD><D6A1><EFBFBD><EFBFBD>cpuռ<75><D5BC><EFBFBD><EFBFBD>
} PLAY_STRATEGE_E;
PLAYSDK_API BOOL CALLMETHOD PLAY_EnableLargePicAdjustment(LONG nPort, int bEnable);
/*
* <EFBFBD><EFBFBD><EFBFBD>ý<EFBFBD><EFBFBD><EFBFBD><EFBFBD>߳<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
* @param[in] nPort ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[in] nNum <EFBFBD>߳<EFBFBD><EFBFBD><EFBFBD>
* @return BOOL<EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>TRUE<EFBFBD><EFBFBD>ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD><EFBFBD>FALSE
* @note <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><EFBFBD><EFBFBD>PLAY_GetLastErrorEx<EFBFBD>ӿڻ<EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
PLAYSDK_API BOOL CALLMETHOD PLAY_SetDecodeThreadNum(LONG nPort, DWORD nNum);
/*
* <EFBFBD><EFBFBD><EFBFBD>ý<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
* @param[in] nPort ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[in] nStrategyType
* 16: <EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>frame<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* 8: <EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Э<EFBFBD><EFBFBD>ɽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* 0 : <EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Э<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @return BOOL<EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>TRUE<EFBFBD><EFBFBD>ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD><EFBFBD>FALSE
* @note <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><EFBFBD><EFBFBD>PLAY_GetLastErrorEx<EFBFBD>ӿڻ<EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
PLAYSDK_API BOOL CALLMETHOD PLAY_SetDecodeStrategy(LONG nPort, int nStrategyType);
/*
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD>ܿ<EFBFBD><EFBFBD>أ<EFBFBD><EFBFBD><EFBFBD>֧<EFBFBD><EFBFBD>Windows<EFBFBD><EFBFBD>
*
* @param[in] nPort ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[in] bEnable TRUE<EFBFBD>򿪿<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>FALSE<EFBFBD>رտ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴ<EFBFBD><EFBFBD><EFBFBD>
* @return BOOL<EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>TRUE<EFBFBD><EFBFBD>ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD><EFBFBD>FALSE
* @note <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><EFBFBD><EFBFBD>PLAY_GetLastErrorEx<EFBFBD>ӿڻ<EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
PLAYSDK_API BOOL CALLMETHOD PLAY_AntiAliasEnable(LONG nPort, BOOL bEnable);
/************************************************************************/
//> ˽<><CBBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
/************************************************************************/
/*
* <EFBFBD><EFBFBD>ʾ˽<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>򣬹<EFBFBD><EFBFBD><EFBFBD><EFBFBD>򱨾<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD>
*
* @param[in] nPort ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[in] bTrue TRUE<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> FALSE<EFBFBD><EFBFBD><EFBFBD>ر<EFBFBD>
* @param[in] nReserve <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @return BOOL<EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>TRUE<EFBFBD><EFBFBD>ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD><EFBFBD>FALSE
* @note <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><EFBFBD><EFBFBD>PLAY_GetLastErrorEx<EFBFBD>ӿڻ<EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
PLAYSDK_API BOOL CALLMETHOD PLAY_RenderPrivateData(LONG nPort, BOOL bTrue, LONG nReserve);
/*
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>֡<EFBFBD>ص<EFBFBD> PLAY_SetDataCallBack<EFBFBD><EFBFBD>
*
* @param[in] nPort ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[in] pBuf <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><EFBFBD>ԭʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[in] nSize <EFBFBD><EFBFBD><EFBFBD>ݴ<EFBFBD>С
* @param[in] pUserData <EFBFBD>û<EFBFBD><EFBFBD>Զ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
typedef void (CALLBACK* fDataCBFun)(LONG nPort,char * pBuf,LONG nSize, void* pUserData);
/*
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>֡<EFBFBD>ص<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><EFBFBD>ԭʼ<EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD>ʵ<EFBFBD>ֽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
* @param[in] nPort ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[out] pDataCBFun <EFBFBD>ص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[in] pUserData <EFBFBD>û<EFBFBD><EFBFBD>Զ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @return BOOL<EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>TRUE<EFBFBD><EFBFBD>ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD><EFBFBD>FALSE
* @note <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><EFBFBD><EFBFBD>PLAY_GetLastErrorEx<EFBFBD>ӿڻ<EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
PLAYSDK_API BOOL CALLMETHOD PLAY_SetDataCallBack(LONG nPort, fDataCBFun pDataCBFun, void* pUserData);
/*
* IVS<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
* @param[in] pIVSBuf <EFBFBD><EFBFBD><EFBFBD><EFBFBD>֡<EFBFBD><EFBFBD><EFBFBD><EFBFBD>(json<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֡<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>֡<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>pIVSBufΪIVS Object<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD>ַ
* @param[in] nIVSType <EFBFBD><EFBFBD><EFBFBD><EFBFBD>֡<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>IVS_TYPE
* ȡֵΪIVSINFOTYPE_RAWDATAʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧԭʼjson<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* ȡֵΪIVSINFOTYPE_TRACKʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IVS object<EFBFBD><EFBFBD>Ӧ<EFBFBD><EFBFBD><EFBFBD> SP_IVS_OBJ_EX<EFBFBD><EFBFBD>
* ȡֵΪIVSINFOTYPE_TRACK_EX_B0ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IVS object<EFBFBD><EFBFBD>Ӧ<EFBFBD><EFBFBD><EFBFBD> SP_IVS_COMMON_OBJ<EFBFBD><EFBFBD>
* @param[in] nIVSBufLen <EFBFBD><EFBFBD><EFBFBD><EFBFBD>֡<EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><EFBFBD><EFBFBD>(json<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֡<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)<EFBFBD><EFBFBD>
* <EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>֡<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>nIVSBufLenΪIVS Object<EFBFBD>ĸ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><EFBFBD><EFBFBD>IVS object<EFBFBD>ij<EFBFBD><EFBFBD>ȣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IVS object<EFBFBD>ij<EFBFBD><EFBFBD>ȿ<EFBFBD><EFBFBD><EFBFBD>type<EFBFBD><EFBFBD>ע<EFBFBD><EFBFBD><EFBFBD>ͻ<EFBFBD><EFBFBD><EFBFBD>
* @param[in] nFrameSeq <EFBFBD><EFBFBD><EFBFBD><EFBFBD>֡id
* @param[in] pReserved <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[in] pUserData <EFBFBD>Զ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
/* IVS<56><53><EFBFBD><EFBFBD> */
typedef enum _IVS_TYPE
{
IVSINFOTYPE_PRESETPOS = 1,
IVSINFOTYPE_MOTINTRKS = 2,
IVSINFOTYPE_MOTINTRKS_EX = 3,
IVSINFOTYPE_LIGHT = 4,
IVSINFOTYPE_RAWDATA = 5, // jason<6F><6E><EFBFBD><EFBFBD>
IVSINFOTYPE_TRACK = 6, // <20><><EFBFBD>ܷ<EFBFBD><DCB7><EFBFBD><EFBFBD><EFBFBD>Ϣ
IVSINFOTYPE_TRACK_EX_B0 = 7, // <20><><EFBFBD>ܽṹ<DCBD><E1B9B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
IVSINFOTYPE_MOTIONFRAME = 9,
IVSINFOTYPE_VIDEO_CONCENTRATION = 10,
IVSINFOTYPE_OVERLAY_PIC = 11, // <20><><EFBFBD><EFBFBD>ͼƬ֡
IVSINFOTYPE_OSD_INFO = 12, // OSD<53><44><EFBFBD><EFBFBD>֡
IVSINFOTYPE_GPS_INFO = 13, // GPS<50><53><EFBFBD><EFBFBD>֡
IVSINFOTYPE_TAGGING_INFO = 14, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2>ע֡<D7A2><D6A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֡(0x13)
IVSINFOTYPE_TRACK_A1 = 15, // NVRŨ<52><C5A8><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><ECBCA3>
IVSINFOTYPE_DATA_WITH_LARGE_AMOUNT = 16,
IVSINFOTYPE_TRACK_A1_EX = 17, // NVRŨ<52><C5A8><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><ECBCA3>(<28><>չ)
IVSINFOTYPE_DATA_WITH_WATER_LEVEL_MONITOR = 18, //ˮλ<CBAE><CEBB><EFBFBD><EFBFBD>ˮλ<CBAE><CEBB><EFBFBD><EFBFBD>Ϣ֡(0x17)
IVSINFOTYPE_INTELFLOW = 19, // <20><><EFBFBD>ܿ<EFBFBD><DCBF><EFBFBD><EFBFBD><EFBFBD>
IVSINFOTYPE_DATA_WITH_SOUND_DECIBEL = 20, //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD>ֵ<EFBFBD><D6B5>Ϣ֡(0x18)
IVSINFOTYPE_DATA_WITH_SMART_MOTION = 21, //<2F><><EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD>Ϣ֡(0x19)
}IVS_TYPE;
/* IVSINFOTYPE_OVERLAY_PIC<49><43><EFBFBD>Ͷ<EFBFBD>Ӧ<EFBFBD>Ľṹ */
typedef struct
{
unsigned char nOverLayPicPurpose; // <20><><EFBFBD><EFBFBD>ͼƬ<CDBC><C6AC>;
unsigned char nOverLayPicAction; // <20><><EFBFBD><EFBFBD>ͼƬ<CDBC><C6AC><EFBFBD><EFBFBD>
unsigned char nOverLayPicCodeFormat;// <20><><EFBFBD><EFBFBD>ͼƬ<CDBC><C6AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ
}OVERLAY_PIC_INFO;
/* IVSINFOTYPE_OSD_INFO<46><4F><EFBFBD>Ͷ<EFBFBD>Ӧ<EFBFBD>Ľṹ */
typedef struct
{
unsigned short nOsdTopLeftCornercoordinateX; // <20>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ͻ<EFBFBD>x<EFBFBD><78><EFBFBD><EFBFBD>
unsigned short nOsdTopLeftCornercoordinateY; // <20>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ͻ<EFBFBD>y<EFBFBD><79><EFBFBD><EFBFBD>
unsigned char nOsdWordSize; // <20>ֺ<EFBFBD>(<28>ַ<EFBFBD><D6B7><EFBFBD>С)
unsigned char nOsdWordAlignment; // <20>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>ʽ
unsigned char reverse[6];
unsigned int nOsdRgbaValue; // <20>ַ<EFBFBD><D6B7><EFBFBD>ɫ
}OSD_DATA_INFO;
typedef void (CALLMETHOD *fIVSInfoCallbackFunc)(char* pIVSBuf, LONG nIVSType, LONG nIVSBufLen, LONG nFrameSeq, void* pReserved, void* pUserData);
/*
* IVS<EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
* @param[in] nPort ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[out] pFunc <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[in] pUserData <EFBFBD>Զ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @return BOOL<EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>TRUE<EFBFBD><EFBFBD>ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD><EFBFBD>FALSE
* @note <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><EFBFBD><EFBFBD>PLAY_GetLastErrorEx<EFBFBD>ӿڻ<EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
PLAYSDK_API BOOL CALLMETHOD PLAY_SetIVSCallBack(LONG nPort, fIVSInfoCallbackFunc pFunc, void* pUserData);
/*
* GPS<EFBFBD><EFBFBD>Ϣ<EFBFBD>ص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
* @param[in] pBuf <EFBFBD><EFBFBD><EFBFBD><EFBFBD>֡<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[in] nLen <EFBFBD><EFBFBD><EFBFBD><EFBFBD>֡<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[in] pUserData <EFBFBD>Զ<EFBFBD><EFBFBD><EFBFBD>
* @return int <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
typedef int (CALLBACK *fGPSInfoCallbackFunc)(char* pBuf, LONG nLen, void* pUserData);
/*
* GPS<EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
* @param[in] nPort ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[out] pFunc <EFBFBD>ص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[in] pUserData <EFBFBD>Զ<EFBFBD><EFBFBD><EFBFBD>
* @return BOOL<EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>TRUE<EFBFBD><EFBFBD>ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD><EFBFBD>FALSE
* @note <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><EFBFBD><EFBFBD>PLAY_GetLastErrorEx<EFBFBD>ӿڻ<EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
PLAYSDK_API BOOL CALLMETHOD PLAY_SetGPSCallBack(LONG nPort, fGPSInfoCallbackFunc pFunc, void* pUserData);
/* ͳ<><CDB3><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD> */
typedef enum _STATISTIC_TYPE
{
TYPE_UNUSE = 0, // δʹ<CEB4><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
INPUT_DATA_INTERVAL, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݼ<EFBFBD><DDBC><EFBFBD>,<2C><><EFBFBD><EFBFBD>1Ϊʱ<CEAA><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><32><CEAA><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>
PRASE_VIDEO_INTERVAL, // <20><>Ƶ֡<C6B5><D6A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1Ϊʱ<CEAA><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>2λ֡<CEBB><D6A1>
VIDEO_PTS_INTERVAL, // <20><>Ƶpts<74><73><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1Ϊʱ<CEAA><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>2Ϊ֡<CEAA><D6A1>
DECODE_VIDEO_TIME, // <20><>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><31>ӿں<D3BF>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>2Ϊ֡<CEAA><D6A1>
PLAY_VIDEO_INTERVAL, // <20><>Ƶ֡<C6B5><D6A1><EFBFBD>ż<EFBFBD><C5BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1Ϊʱ<CEAA><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>2Ϊ֡<CEAA><D6A1>
RENDER_VIDEO_TIME, // <20><>Ƶ<EFBFBD><C6B5>Ⱦ<EFBFBD><C8BE>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><31>ӿں<D3BF>ʱ
VIDEO_DECODE_ERROR = 1000, // <20><>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD><EBB1A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1<EFBFBD><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E5A3AC><EFBFBD><EFBFBD>2Ϊ֡<CEAA><D6A1>
}STATISTIC_TYPE;
/* ͳ<><CDB3><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2>Ӧ<EFBFBD>Ľṹ */
typedef struct statistic_info
{
LONG nPort; // ͨ<><CDA8><EFBFBD><EFBFBD>
LONG nStatisticType; // <20><>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>
LONGLONG nParam1; // <20><><EFBFBD><EFBFBD>1
LONGLONG nParam2; // <20><><EFBFBD><EFBFBD>2
char szReserved[16]; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
} STATISTIC_INFO, *PSTATISTIC_INFO;
/*
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD>ص<EFBFBD>
*
* @param[in] pStatisticData ͳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[in] pUserData <EFBFBD>Զ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @return int <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
typedef int (CALLBACK *fStatisticCallbackFunc)(PSTATISTIC_INFO pStatisticData, void* pUserData);
/*
* ͳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
* @param[in] nPort,ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[out] pFunc <EFBFBD>ص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[in] pUserData <EFBFBD>Զ<EFBFBD><EFBFBD><EFBFBD>
* @return BOOL<EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>TRUE<EFBFBD><EFBFBD>ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD><EFBFBD>FALSE
* @note <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><EFBFBD><EFBFBD>PLAY_GetLastErrorEx<EFBFBD>ӿڻ<EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
PLAYSDK_API BOOL CALLMETHOD PLAY_SetStatisticCallBack(LONG nPort, fStatisticCallbackFunc pFunc, void* pUserData);
/*
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
* @param[in] nPort,ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[in] nWidthProportion <EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD>ͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߱<EFBFBD>
* @param[in] nHeightProportion <EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD>ͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߱<EFBFBD>
* @return BOOL<EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>TRUE<EFBFBD><EFBFBD>ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD><EFBFBD>FALSE
*/
PLAYSDK_API BOOL CALLMETHOD PLAY_SetViewProportion(LONG nPort, int nWidthProportion, int nHeightProportion);
/************************************************************************/
//> <20><><EFBFBD>Ƽ<EFBFBD>ʹ<EFBFBD>õĽӿ<C4BD>
/************************************************************************/
/*
* <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˽ӿ<EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><EFBFBD>PLAY_GetLastErrorEx<EFBFBD>ӿڡ<EFBFBD>
*
* @param[in] nPort,ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @return DWORD<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ô<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
PLAYSDK_API DWORD CALLMETHOD PLAY_GetLastError(LONG nPort);
/*
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><EFBFBD><EFBFBD>š<EFBFBD>
*
* @param[in] sFileName <EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD>
* @return DWORD<EFBFBD><EFBFBD>ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD><EFBFBD>0<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>򷵻<EFBFBD>ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @note <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><EFBFBD><EFBFBD>PLAY_GetLastErrorEx<EFBFBD>ӿڻ<EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
PLAYSDK_API DWORD CALLMETHOD PLAY_CreateFile(LPSTR sFileName);
/*
* <EFBFBD>رղ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><EFBFBD>Զ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><EFBFBD><EFBFBD>š<EFBFBD>
*
* @param[in] nPort ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @return BOOL<EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>TRUE<EFBFBD><EFBFBD>ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD><EFBFBD>FALSE
* @note <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><EFBFBD><EFBFBD>PLAY_GetLastErrorEx<EFBFBD>ӿڻ<EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
PLAYSDK_API BOOL CALLMETHOD PLAY_DestroyFile(LONG nPort);
/*
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӿڲ<EFBFBD><EFBFBD>Զ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><EFBFBD><EFBFBD>š<EFBFBD>
*
* @param[in] nBufPoolSize <EFBFBD>ò<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ<EFBFBD><EFBFBD>[SOURCE_BUF_MIN,SOURCE_BUF_MAX]
* @return DWORD,ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD><EFBFBD>0<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>򷵻<EFBFBD>ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @note <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><EFBFBD><EFBFBD>PLAY_GetLastErrorEx<EFBFBD>ӿڻ<EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
PLAYSDK_API DWORD CALLMETHOD PLAY_CreateStream(DWORD nBufPoolSize);
/*
* <EFBFBD>ر<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><EFBFBD>Զ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><EFBFBD><EFBFBD>š<EFBFBD>
*
* @param[in] nPort ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @return BOOL<EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>TRUE<EFBFBD><EFBFBD>ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD><EFBFBD>FALSE
* @note <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><EFBFBD><EFBFBD>PLAY_GetLastErrorEx<EFBFBD>ӿڻ<EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
PLAYSDK_API BOOL CALLMETHOD PLAY_DestroyStream(LONG nPort);
/*
* <EFBFBD><EFBFBD>PLAY_OneByOneBack<EFBFBD>ظ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><EFBFBD>PLAY_OneByOneBack<EFBFBD><EFBFBD>
*
* @param[in] nPort ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @return BOOL<EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>TRUE<EFBFBD><EFBFBD>ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD><EFBFBD>FALSE
* @note <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><EFBFBD><EFBFBD>PLAY_GetLastErrorEx<EFBFBD>ӿڻ<EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
PLAYSDK_API BOOL CALLMETHOD PLAY_BackOne(LONG nPort);
/*
* <EFBFBD><EFBFBD><EFBFBD>÷ֱ<EFBFBD><EFBFBD>ʸı<EFBFBD>֪ͨ<EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD>
*
* @param[in] nPort ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[in] hWnd <EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD>͵Ĵ<EFBFBD><EFBFBD><EFBFBD>
* @param[in] nMsg <EFBFBD>û<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ı<EFBFBD>ʱ<EFBFBD>û<EFBFBD><EFBFBD><EFBFBD>hWnd<EFBFBD><EFBFBD><EFBFBD>ڹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
* @return BOOL<EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>TRUE<EFBFBD><EFBFBD>ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD><EFBFBD>FALSE
* @note <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><EFBFBD><EFBFBD>PLAY_GetLastErrorEx<EFBFBD>ӿڻ<EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
PLAYSDK_API BOOL CALLMETHOD PLAY_SetEncChangeMsg(LONG nPort,HWND hWnd,UINT nMsg);
/*
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱҪ<EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD>
*
* @param[in] nPort ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[in] hWnd <EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><EFBFBD><EFBFBD>
* @param[in] nMsg <EFBFBD>û<EFBFBD><EFBFBD>Զ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ŵ<EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>û<EFBFBD><EFBFBD><EFBFBD>hWnd<EFBFBD><EFBFBD><EFBFBD>ڹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @return BOOL<EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>TRUE<EFBFBD><EFBFBD>ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD><EFBFBD>FALSE
* @note <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><EFBFBD><EFBFBD>PLAY_GetLastErrorEx<EFBFBD>ӿڻ<EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
PLAYSDK_API BOOL CALLMETHOD PLAY_SetFileEndMsg(LONG nPort,HWND hWnd,UINT nMsg);
#ifdef __cplusplus
}
#endif
#endif