2023年11月27日发(作者:)
大华播放SDK编程手册
VERSION 3.28.2(Build 100129)
2010-01-29
版权所有 侵权必究
前 言
非常感谢您使用我们公司的设备,我们将为您提供最好的服务。
本手册可能包含技术上不准确的地方或印刷错误,欢迎指正。我们将会定期更新手
册的内容。
修订记录
日期修订内容修订者
2010-1-29添加接口:金志贤
PLAY_SetFileRefCallBackEx
PLAY_GetRealFrameBitRate
2010-1-22添加接口:金志贤
PLAY_SetVisibleDecCallBack;
PLAY_CatchResizePic
2009-10-26添加接口说明:金志贤
PLAY_GetFreePort, PLAY_ReleasePort;
PLAY_VerticalSyncEnable;
PLAY_GetPicBMP, PLAY_GetPicJPEG;
添加媒体信息获取指令:PLAY_CMD_GetMediaInfo
2009-8-14
整理文档,修改文档版式,添加接口说明金志贤
2009-07-15整理文档,增加对最新接口的说明张博
2008-03-25整理文档,修改多显卡及设置高画质接口的定义周国锋
2006-12-27整理文档周国锋、陈琼施
2006-12-18创建冯江、周国锋
目 录
1 简 介 ............................................................. 8
1.1概述 ........................................................... 8
1.2适用性 ......................................................... 8
2 设计原则 ........................................................... 8
2.1典型调用 ....................................................... 8
2.2编程补充说明 .................................................. 14
3 数据结构定义 ...................................................... 14
3.1宏定义 ........................................................ 14
3.2媒体信息结构 .................................................. 19
3.3帧信息结构 .................................................... 20
4.5音频控制 ...................................................... 32
4.6数据回调 ...................................................... 35
4.7消息回调 ...................................................... 43
4.8函数回调 ...................................................... 44
4.9文件索引 ...................................................... 48
4.10文件定位 ..................................................... 49
4.21获得错误号 ................................................... 82
4.22其它 ......................................................... 82
1 简 介
1.1 概述
播放SDK是大华压缩卡和硬盘录像机的配套产品,支持大华所有码流格式以及海思
公司的h264码流和ADI的h264码流。本文档详细描述了开发包中各函数实现的功能及
接口
播放SDK的主要功能有:支持文件或流数据的播放、回放控制(如暂停恢复、快放
慢放)、音频控制、流数据录像、多区域显示、按帧序号或按时间定位、数据回调、消息
回调、字符叠加、抓图…….
开发包中包括的文件有: 、dhplay.h、、底层mpeg4解码库
()、底层h264解码库(解大华的h264码流和ADI公司的码
流)和海思的h264解码库,包括(、、
hi_h264dec_) 。
1.2 适用性
支持大华所有码流以及ADI的h264码流和海思的h264码流的解码
支持HB、HBE、LB、LBE、GB、GBE、NVS机型码流设计原则
2 设计原则
2.1 典型调用
2.1.1 多显卡初始化
初始化多显卡设备PLAY_InitDDrawDevice
获取显卡数目PLAY_GetDDrawDeviceTotalNums
设置播放窗口使用的显卡PLAY_SetDDrawDevice
获取显卡信息PLAY_GetDDrawDeviceInfo
获取显卡功能PLAY_GetCapsEx
关闭多显卡设备PLAY_RealeseDDraw
2.1.2 回调及功能设置
设置文件结束消息回调PLAY_SetFileEndMsg
设置文件结束函数回调PLAY_SetFileEndCallBack
设置图像格式改变消息回调PLAY_SetEncChangeMsg
设置图像格式改变函数回调PLAY_SetEncTypeChangeCallBack
设置文件索引建立后回调PLAY_SetFileRefCallBack
设置流缓冲小于阀值回调PLAY_SetSourceBufCallBack
设置数据解码回调PLAY_SetDecCallBack
PLAY_SetDecCallBackEx
设置流打开模式PLAY_SetStreamOpenMode
设置定时器类型PLAY_SetTimerType
设置水印数据回调PLAY_SetWaterMarkCallBack
2.1.3 打开文件或数据流
创建文件PLAY_CreateFile
打开文件PLAY_OpenFile
创建流文件PLAY_CreateStream
打开流PLAY_OpenStream
PLAY_OpenStreamEx
2.1.4 播放
播放开始PLAY_Play
2.1.5 各功能操作及信息获取
播放声音PLAY_PlaySound
释放通道号PLAY_ReleasePort
输入流数据
PLAY_InputData
PLAY_InputVideoData
PLAY_InputAudioData
结束流数据录像PLAY_StopDataRecord
重置流缓冲回调标志PLAY_ResetSourceBufFlag
快放PLAY_Fast
慢放PLAY_Slow
暂停PLAY_Pause
按帧号定位PLAY_SetCurrentFrameNum
按时间定位PLAY_SetPlayedTimeEx
PLAY_GetPicJPEG
清缓冲PLAY_ResetBuffer
颜色调整PLAY_SetColor
多区域显示PLAY_SetDisplayRegion
显示模式设置PLAY_SetDisplayType
垂直同步使能PLAY_VerticalSyncEnable
调整图象播放的流畅性PLAY_AdjustFluency
改变图象播放的帧率PLAY_ChangeRate
打开音频采集功能PLAY_OpenAudioRecord
关闭音频采集功能PLAY_CloseAudioRecord
获取索引信息PLAY_GetRefValue
获取流剩余缓冲PLAY_GetSourceBufferRemain
获取流打开模式PLAY_GetStreamOpenMode
获取关键帧信息PLAY_GetKeyFramePos
PLAY_GetNextKeyFramePos
获取OVERLAY模式PLAY_GetOverlayMode
获取图像大小PLAY_GetPictureSize
获取已播放的桢数PLAY_GetPlayedFrames
获取视频实时码率PLAY_GetRealFrameBitRate
2.1.6 停止
播放停止PLAY_Stop
2.1.7 结束
关闭创建的文件PLAY_DestroyFile
转BMP文件PLAY_ConvertToBmpFile
获取文件头长度PLAY_GetFileHeadLength
获取版本信息PLAY_GetSdkVersion
2.2 编程补充说明
步骤A中的操作用于支持多显卡,目前播放库暂不支持,采用默认的显卡。
步骤B中的功能设置操作只能在PLAY_play之前设置一次。如果用户不调用这些
函数,播放库会采用默认值,如播放缓冲帧数默认为15帧,默认用overlay显
示,默认流打开模式为最实时模式。
要使播放SDK能正常工作,步骤C和步骤D是必须的
大部分操作集中在步骤E中,即在PLAY_Play和PLAY_ Stop之间调用。但其中播放
声音的函数PLAY_PlaySound、PLAY_PlaySoundShare可以在PLAY_Play之前调用,以防
止部分声音数据不能播放,这在播放一个纯音频文件时较为明显对D、E、F、G、H、I中
的功能大部分之间没有调用先后顺序,当然对同一个功能还是应该按先打开再操作最后
关闭的顺序。
3 数据结构定义
3.1 宏定义
3.1.1 最大通道数
#define FUNC_MAX_PORT 501 //最大播放通道数
3.1.2 声音波形范围
#define MIN_WAVE_COEF -100
#define MAX_WAVE_COEF 100
3.1.3 定时器类型
#define TIMER_1 1 //默认定时器,精确定时,但一个进程中最
多只有16个
#define TIMER_2 2 //不精确定时,个数据不限制
3.1.4 缓冲类型
#define BUF_VIDEO_SRC 1 //视频源缓冲
#define BUF_AUDIO_SRC 2 //音频源缓冲
3 //解码后视频数据缓冲#define BUF_VIDEO_RENDER
4 //解码后音频数据缓冲#define BUF_AUDIO_RENDER
注:
BUF_VIDEO_SRC视频数据源缓冲,缓冲解码之前视频数据,只对流模式
有效,单位byte
BUF_AUDIO_SRC音频数据源缓冲,缓冲解码之前音频数据,只对流模式
有效, 单位byte
BUF_VIDEO_REND解码后视频数据缓冲,单位帧数
ER
BUF_AUDIO_REND解码后音频数据缓冲,单位帧数,音频40ms数据定为
ER一帧
3.1.5 错误类型
#define DH_PLAY_NOERROR 0 //没有错误
1 //输入参数非法#define DH_PLAY_PARA_OVER
2 //调用顺序不对#define DH_PLAY_ORDER_ERROR
#define DH_PLAY_TIMER_ERROR 3 //多媒体时钟设置失败
4 //视频解码失败#define DH_PLAY_DEC_VIDEO_ERROR
5 //音频解码失败#define DH_PLAY_DEC_AUDIO_ERROR
#define DH_PLAY_ALLOC_MEMORY_ERROR 6 //分配内存失败
#define DH_PLAY_OPEN_FILE_ERROR 7 //文件操作失败
#define DH_PLAY_CREATE_OBJ_ERROR 8 //创建线程事件等失败
#define DH_PLAY_CREATE_DDRAW_ERROR 9 //创建directDraw失败
10 //创建后端缓存失败#define DH_PLAY_CREATE_OFFSCREEN_ERROR
11 //缓冲区满,输入流失败#define DH_PLAY_BUF_OVER
12 //创建音频设备失败 #define DH_PLAY_CREATE_SOUND_ERROR
13 //设置音量失败 #define DH_PLAY_SET_VOLUME_ERROR
14 //只能在播放文件时才能 #define DH_PLAY_SUPPORT_FILE_ONLY
使用
#define DH_PLAY_SUPPORT_STREAM_ONLY 15 //只能在播放流时才能使
用
#define DH_PLAY_SYS_NOT_SUPPORT 16 //系统不支持,解码器只能工作在
Pentium 3以上
#define DH_PLAY_FILEHEADER_UNKNOWN 17 //没有文件头
#define DH_PLAY_VERSION_INCORRECT 18 //解码器和编码器版本不
#define DH_PLAY_INIT_TIMER_ERROR 21 //初始化多媒体时钟失
败
#define DH_PLAY_BLT_ERROR 22 //位拷贝失败
#define DH_PLAY_UPDATE_ERROR 23 //显示overlay失败
#define DH_PLAY_MEMORY_TOOSMALL 24 //memory too small
3.1.6 最大区域显示数
#define MAX_DISPLAY_WND 4 //同时最多打开4个区域显
示窗口
3.1.7 显示类型
#define DISPLAY_NORMAL 1 //以正常分辨率显示
#define DISPLAY_QUARTER 2 //以四分之一分辨率显示
3.1.8 解码缓冲数
#define MAX_DIS_FRAMES 50 //最大解码缓冲帧数
6 //最小解码缓冲帧#define MIN_DIS_FRAMES
数
3.1.9 定位类型
#define BY_FRAMENUM 1 //按帧号
//按时间#define BY_FRAMETIME 2
3.1.10 数据流原始缓冲大小
#define SOURCE_BUF_MAX 1024*100000 //最大原始缓冲
#define SOURCE_BUF_MIN 1024*50 //最小原始缓冲
3.1.11 数据流播放模式
#define STREAME_REALTIME 0 //最实时方式
#define STREAME_FILE //最流畅方式1
3.1.12 解码回调音频帧类型
#define T_AUDIO16 101
#define T_AUDIO8 100
3.1.13 解码回调视频帧类型
#define T_UYVY 1
#define T_YV12 3
7#define T_RGB32
3.1.14 媒体信息查询指令
#define PLAY_CMD_GetTime 1
2#define PLAY_CMD_GetFileRate
3#define PLAY_CMD_GetMediaInfo
3.1.15 系统功能
#define SUPPORT_DDRAW 1 //支持DIRECTDRAW;如果不支持,则播放器不
能工作
#define SUPPORT_BLT 2 //显卡支持BLT操作;如果不支持,则播放器
不能工作
#define SUPPORT_BLTFOURCC 4 //显卡BLT支持颜色转换
#define SUPPORT_BLTSHRINKX 8 //显卡BLT支持X轴缩小
#define SUPPORT_BLTSHRINKY //显卡BLT支持Y轴缩小16
#define SUPPORT_BLTSTRETCHX //显卡BLT支持X轴放大32
#define SUPPORT_BLTSTRETCHY //显卡BLT支持Y轴放大64
#define SUPPORT_SSE 128 //CPU支持SSE指令,Intel Pentium3以上支
持SSE指令
#define SUPPORT_MMX 256 //CPU支持MMX指令集
3.1.16 抓图格式类型定义
typedef enum __tPicFormats
{
PicFormat_BMP = 0,
PicFormat_JPEG,
} tPicFormats;
3.2 媒体信息结构
typedef struct {
long lWidth;
long lHeight;
long lFrameRate;
long lChannel;
long lBitPerSample;
long lSamplesPerSec;
}MEDIA_INFO;
3.3 帧信息结构
3.3.1 帧位置
typedef struct{
long nFilePos; //指定帧在文件中的偏移位置
long nFrameLen; //帧长度
long nFrameNum; //帧序号
long nFrameTime; //帧时间
//错误帧号long nErrorFrameNum;
SYSTEMTIME *pErrorTime; //错误帧时间
long nErrorLostFrameNum; //错误帧帧号
long nErrorFrameSize; //错误帧大小
}FRAME_POS,*PFRAME_POS;
3.3.2 帧信息
typedef struct{
long nWidth; //画面宽,单位像素。如果是音频数据则为0
long nHeight; //画面高。如果是音频数据则为0
long nStamp; //时标信息,单位毫秒
long nType; //视频帧类型,T_AUDIO16,T_RGB32, T_YV12
long nFrameRate; //编码时产生的图像帧率
}FRAME_INFO;
3.3.3 帧类型
typedef struct {
char *pDataBuf; //帧数据
long nSize; //帧大小
//帧序号long nFrameNum;
//是否音频帧BOOL bIsAudio;
//保留字long nReserved;
}FRAME_TYPE;
4 接口定义
4.1 通道控制
4.1.1 PLAY_GetFreePort
函数名BOOL PLAY_GetFreePort(LONG *plPort)
称
功能描获取空闲的通道号,与PLAY_RealsePort成对使用
述
参数说plPort获取的通道号
明
返回值成功返回TRUE,不成功返回FALSE
4.1.2 PLAY_ReleasePort
函数名BOOL PLAY_ReleasePort (LONG lPort)
称
功能描释放端口号,与PLAY_ GetFreePort成对使用
述
参数说lPort通道号
明
返回值成功返回TRUE,不成功返回FALSE
4.2 播放文件
4.2.1 PLAY_OpenFile
函数名BOOL PLAY_OpenFile(LONG nPort,LPSTR sFileName)
称
功能描打开文件
述
参数说nPort 通道号
明
返回值成功返回TRUE,不成功返回FALSE
sFileName文件名, (文件不能超过4G或小于4K)
4.2.2 PLAY_CreateFile
参数说nPort 未使用
明
返回值成功返回TRUE,不成功返回FALSE
sFileName文件名, (文件不能超过4G或小于4K)
4.2.3 PLAY_Play
函数名BOOL PLAY_Play(LONG nPort, HWND hWnd)
称
功能描开始播放。如果已经播放,改变当前播放状态为正常速度播放
述
参数说nPort 通道号
明
返回值成功返回TRUE,不成功返回FALSE
hWnd播放窗口句柄
4.2.4 PLAY_Stop
函数名BOOL PLAY_Stop(LONG nPort)
称
功能描关闭播放文件, 在PLAY_Stop后调用
述
参数说nPort 通道号
明
返回值成功返回TRUE,不成功返回FALSE
4.2.6 PLAY_ DestoryFile
函数名BOOL PLAY_ DestoryFile (LONG nPort)
称
功能描关闭播放文件,并释放自动分配的通道号。
述
参数说nPort 通道号
明
返回值成功返回TRUE,不成功返回FALSE
4.3 播放流数据
4.3.1 PLAY_OpenStream
函数名BOOL PLAY_OpenStream(LONG nPort, PBYTE pFileHeadBuf,
称DWORD nSize, DWORD nBufPoolSize)
功能描打开流接口(类似打开文件)
述
nBufPoolSize设置播放器中存放数据流的缓冲区大小。范围
是[SOURCE_BUF_MIN, SOURCE_BUF_MAX]。一般
设为900*1024,如果数据送过来相对均匀,可
调小该值,如果数据传输不均匀,可增大该值。
返回值成功返回TRUE,不成功返回FALSE
补充说pFileHeadBuf 原先用于识别该码流是否是大华码流,后改由码
明流中的标志来识别,所以现在该参数实际不起作用。这样做的目
的是为方便用户做二次开发,码流识别由播放库内部处理,而不
需要用户传个特定厂家的文件头
4.3.2 PLAY_CreatStream
函数名BOOL PLAY_CreatStream(LONG nPort, PBYTE pFileHeadBuf,
称DWORD nSize, DWORD nBufPoolSize)
功能描打开流接口,并自动分配通道号
述
参数说nPort 通道号,未使用
明
pFileHeadBuf目前不使用,填NULL
nSize目前不使用,填0
nBufPoolSize置播放器中存放数据流的缓冲区大小。范围是
[SOURCE_BUF_MIN, SOURCE_BUF_MAX]。一般设
为900*1024,如果数据送过来相对均匀,可调
小该值,如果数据传输不均匀,可增大该值
返回值成功返回TRUE,不成功返回FALSE
4.3.3 PLAY_InputData
函数名BOOL PLAY_InputData(LONG nPort, PBYTE pBuf, DWORD
称nSize)
功能描输入从设备上得到的流数据;打开流并调用PLAY_Play之后才能
述输入数据。
通道号参数说nPort
缓冲区地址pBuf
缓冲区大小nSize
明
返回值TURE,表示已经输入数据。FALSE 表示失败,数据没有输入,一
般为缓冲已满
4.3.4 PLAY_CloseStream
函数名BOOL PLAY_CloseStream(LONG nPort)
称
功能描关闭数据流(类似关闭文件)
述
参数说nPort 通道号
明
返回值成功返回TRUE,不成功返回FALSE
4.3.6 PLAY_OpenStreamEx
函数名BOOL PLAY_OpenStreamEx(LONG nPort, PBYTE pFileHeadBuf,
称DWORD nSize, DWORD nBufPoolSize)
功能描以音视频分开输入的方式打开流
述
参数说nPort 通道号
明
pFileHeadBuf用户从卡上得到的文件头数据
nSize文件头长度
nBufPoolSize设置播放器中存放数据流的缓冲区大小。范围
是[SOURCE_BUF_MIN, SOURCE_BUF_MAX]
返回值成功返回TRUE,不成功返回FALSE
4.3.7 PLAY_InputVideoData
函数名BOOL PLAY_InputVideoData(LONG nPort, PBYTE pBuf, DWORD
称nSize)
功能描输入从设备上得到的视频流 (可以是复合流,但音频数据会被忽
述略);打开流之后才能输入数据
通道号参数说nPort
缓冲区地址pBuf
缓冲区大小nSize
4.3.8 PLAY_InputAudioData
函数名BOOL PLAY_ InputAudioData (LONG nPort, PBYTE pBuf, DWORD
称nSize)
功能描输入从设备上得到的音频流;打开声音之后才能输入数据
述
参数说nPort 通道号
明
pBuf缓冲区地址
nSize缓冲区大小
返回值成功返回TRUE,不成功返回FALSE
4.3.9 PLAY_CloseStreamEx
函数名BOOL PLAY_CloseStreamEx (LONG nPort)
称
功能描关闭数据流
述
参数说nPort 通道号
明
BYTE pBuf[4096];
while (true)
{
int len = fread(pBuf,1,4096,fp);
if (len <= 0)
{
break;
}
While (PLAY_InputData(0, pBuf, len) == FALSE)
{
Sleep(45);
}
}
4.3.11 实时流数据播放简单示例:
PLAY_OpenStream(0, NULL, 0, 900*1024);
PLAY_SetStreamOpenMode(0, STREAME_REALTIME)//实时模式,
//默认是实时模式
PLAY_Play(0, hWnd);
//网络流数据回调函数
//网络实时流数据,数据只送一次,以保证实时性
}
4.4 回放控制
4.4.1 PLAY_Pause
函数名BOOL PLAY_Pause(LONG nPort, DWORD nPause)
称
功能描播放暂停/恢复
述
参数说nPort 通道号
明
nPauseTRUE 暂停
FLASE 恢复
返回值成功返回TRUE,不成功返回FALSE
4.4.2 PLAY_Fast
函数名BOOL PLAY_Fast(LONG nPort)
称
功能描快速播放。播放速度分为九级,播放速度分别为每秒播放
述1,3,6,12,25,50,75,100,125帧图像。每次调用播放速度提升一
级最多调用4次,要恢复正常播放调用PLAY_Play,从当前位置
开始正常播放
参数说nPort 通道号
明
返回值成功返回TRUE,不成功返回FALSE
4.4.3 PLAY_Slow
函数名BOOL PLAY_Slow (LONG nPort)
称
功能描慢速播放,同上。每次调用播放速度降一级;最多调用4次,要
述恢复正常播放调用PLAY_Play
通道号参数说nPort
明
返回值成功返回TRUE,不成功返回FALSE
4.4.4 PLAY_OneByOne
函数名BOOL PLAY_OneByOne(LONG nPort)
称
功能描单帧播放。要恢复正常播放调用PLAY_ Play
述
参数说nPort 通道号
明
返回值成功返回TRUE,不成功返回FALSE
4.4.5 PLAY_OneByOneBack
返回值成功返回TRUE,不成功返回FALSE
4.4.6 PLAY_BackOne
函数名BOOL PLAY_BackOne(LONG nPort)
称
功能描此接口与PLAY_OneByOneBack重复
述
参数说nPort 通道号
明
返回值成功返回TRUE,不成功返回FALSE
4.4.7 PLAY_Back
函数名BOOL PLAY_Back(LONG nPort)
称
功能描反向回放
述
述则自动关闭原来已经打开的声音。注意:默认情况下声音是关闭
的
参数说nPort 通道号
明
返回值成功返回TRUE,不成功返回FALSE
4.5.2 PLAY_StopSound
函数名BOOL PLAY_StopSound()
称
功能描关闭声音
述
参数说无
明
返回值成功返回TRUE,不成功返回FALSE
称
功能描以共享方式关闭声音。PLAY_PlaySound和PLAY_StopSound是以
述独占方式播放声音的。注意:在同一个进程中,所有通道必须使
用相同的方式播放或关闭声音
参数说nPort通道号
明
返回值成功返回TRUE,不成功返回FALSE
4.5.5 PLAY_SetVolume
函数名BOOL PLAY_SetVolume(LONG nPort, WORD nVolume)
称
功能描设置音量
述
参数说nPort通道号
明
返回值成功返回TRUE,不成功返回FALSE
nVolume音量的值,范围[0, 0XFFFF]
4.5.6 PLAY_GetVolume
函数名WORD PLAY_GetVolume(LONG nPort)
4.5.7 PLAY_AdjustWaveAudio
函数名BOOL PLAY_AdjustWaveAudio(LONG nPort, LONG
称nCoefficient)
功能描调整WAVE波形,可以改变声音的大小。它和PLAY_SetVolume
述的不同在于,它是调整声音数据,只对该路其作用,而
PLAY_SetVolume是调整声卡音量,对整个系统起作用。该函数
尚未实现
参数说nPort通道号
明
nCoefficient调整的参数,范围从MIN_WAVE_COEF 到
MAX_WAVE_COEF,0是不调整
返回值成功返回TRUE,不成功返回FALSE
4.6 数据回调
4.6.1 PLAY_SetDecCallBack
函数名BOOL PLAY_SetDecCallBack(LONG nPort, void (CALLBACK*
称DecCBFun)(long nPort,char * pBuf,long nSize,FRAME_INFO *
pFrameInfo, long nReserved1,long nReserved2))
功能描设置回调函数,替换播放器中的显示部分,由用户自己控制显示,
述该函数在PLAY_Play之前调用,在PLAY_Stop时自动失效,下次
调用PLAY_Play之前需要重新设置。解码部分不控制速度,只要
用户从回调函数中返回,解码器就会解码下一部分数据。【注意】
这个功能的使用需要用户对视频显示和声音播放有足够的了解,
否则请慎重使用。
参数说nPort通道号
明
DecCBFun回调函数指针,不能为NULL
返回值成功返回TRUE,不成功返回FALSE
回调函数参数说明:
回调函void (CALLBACK* DecCBFun)(long nPort,char * pBuf,long
数nSize,FRAME_INFO * pFrameInfo, long nReserved1,long
nReserved2)
参数说nPort通道号
明
pBuf解码后的音视频数据
nSize解码后的音视频数据的长度
pFrameInfo图像和声音信息。详见下
nReserved1保留参数
nReserved2保留参数
结构说明:
pBuf
typedef struct{
long nWidth; //画面宽,单位像素。如果是音频数据则为0;
//画面高。如果是音频数据则为0; long nHeight;
//时标信息,单位毫秒。 long nStamp;
long nType; //数据类型,T_AUDIO16,T_RGB32, T_YV12
详见宏定义说明。
long nFrameRate; //编码时产生的图像帧率。
}FRAME_INFO;
4.6.2 PLAY_SetDecCallBackEx
函数名BOOL PLAY_SetDecCallBackEx(LONG nPort, void (CALLBACK*
称DecCBFun)(long nPort,char * pBuf,long nSize,FRAME_INFO *
pFrameInfo, long nReserved1,long nReserved2), long nUser)
功能描与PLAY_SetDecCallBack基本相同,增加了nUser用户自定义回
述调参数
通道号参数说nPort
回调函数指针,不能为NULLDecCBFun
用户自定义回调参数nUser
明
返回值成功返回TRUE,不成功返回FALSE
回调函数参数说明:
回调函void (CALLBACK* DecCBFun)(long nPort,char * pBuf,long
数nSize,FRAME_INFO * pFrameInfo, long nReserved1,long
nReserved2)
参数说nPort通道号
明
pBuf解码后的音视频数据
nSize解码后的音视频数据的长度
pFrameInfo图像和声音信息。详见下
nReserved1对应用户自定义回调参数
nReserved2保留参数
pBuf
4.6.3 PLAY_SetVisibleDecCallBack
函数名BOOL PLAY_SetVisibleDecCallBack(LONG nPort, void
称(CALLBACK* DecCBFun)(long nPort,char * pBuf,long
nSize,FRAME_INFO * pFrameInfo, long nReserved1,long
nReserved2), long nUser)
功能描与PLAY_SetDecCallBackEx基本相同,不同的是解码回调的同时
述可以显示视频
通道号参数说nPort
回调函数指针,不能为NULLDecCBFun
用户自定义回调参数nUser
明
返回值成功返回TRUE,不成功返回FALSE
4.6.4 PLAY_SetDecCBStream
函数名BOOL PLAY_SetDecCBStream(LONG nPort, DWORD nStream)
称
功能描设置解码回调的流类型,在PLAY_Play之前调用
述
参数说nPort通道号
明
nStream1 视频流
2 音频流
3 复合流
返回值成功返回TRUE,不成功返回FALSE
4.6.5 PLAY_SetDisplayCallBack
函数名BOOL PLAY_SetDisplayCallBack(LONG nPort,void (CALLBACK*
称DisplayCBFun)(long nPort, char * pBuf, long nSize, long
nWidth, long nHeight, long nStamp, long nType, long
nReceaved), long nUser)
功能描设置视频图像数据回调,可用作抓图。如果要停止回调,可以把
述回调函数指针DisplayCBFun设为NULL。一旦设置回调函数,则
一直有效,直到程序退出。该函数可以在任何时候调用
参数说nPort通道号
明
DisplayCBFun视频图像数据回调函数。可以为NULL;
nUser用户自定义数据
返回值成功返回TRUE,不成功返回FALSE
回调函数参数说明:
回调函void (CALLBACK* DisplayCBFun)(long nPort, char * pBuf,
数long nSize, long nWidth, long nHeight, long nStamp, long
nType, long nReceaved)
参数说nPort通道号
明
pBuf返回图像数据
nSize返回图像数据大小
nWidth画面宽,单位像素
nHeight画面高
nStamp时标信息,单位毫秒
nType数据类型, T_RGB32,T_UYVY,详见宏定义说
明。
nReceaved保留
4.6.6 PLAY_SetAudioCallBack
函数名BOOL PLAY_SetAudioCallBack(LONG nPort, void (CALLBACK *
参数说nPort通道号
明
funAudio音频回调函数
nUser用户自定义数据
返回值成功返回TRUE,不成功返回FALSE
回调函数参数说明:
回调函void CALLBACK FunAudio(long nPort, char * pAudioBuf, long
数nSize, long nStamp, long nType, long nUser)
通道号参数说nPort
明
pAudioBuf格式音频数据
nSize音频数据长度
nStamp时标(ms)
nType音频类型T_AUDIO16, 采样率8000,单声道,每
wave
个采样点16位表示
nUser用户自定义数据
4.6.7 PLAY_SetVerifyCallBack
函数名BOOL PLAY_SetVerifyCallBack(LONG nPort, DWORD
称DWORD nEndTime, void * nBeginTime, (CALLBACK
funVerify)(long nPort, FRAME_POS * pFilePos, DWORD
bIsVideo, DWORD nUser), DWORD nUser)
功能描注册一个回调函数,校验数据是否被修改,实现水印功能。该接
述口暂未实现
通道号参数说nPort
开始时间nBeginTime
明
nEndTime结束时间
funVerify水印回调函数指针
nUser用户自定义数据
返回值成功返回TRUE,不成功返回FALSE
回调函数参数说明:
回调函void CALLBACK funVerify (long nPort, FRAME_POS * pFilePos,
数DWORD bIsVideo, DWORD nUser)
通道号参数说nPort
帧信息pFilePos
是否是视频数据bIsVideo
用户自定义数据nUser
明
4.6.8 PLAY_SetDemuxCallBack
函数名BOOL PLAY_SetDemuxCallBack(LONG nPort, void (CALLBACK*
称DemuxCBFun)(long nPort,char * pBuf, long nSize,void *
pParam, long nReserved,long nUser), long nUser)
功能描源数据分析完的数据回调
述
参数说nPort通道号
明
DemuxCBFun分析数据回调指针
nUser用户自定义数据
返回值成功返回TRUE,不成功返回FALSE
数 long nSize, void * pParam, long nReserved, long nUser)
通道号参数说nPort
数据指针pBuf
数据长度nSize
帧信息pParam
保留nReserved
用户自定义数据nUser
明
4.6.9 PLAY_SetWaterMarkCallBack
函数名BOOL PLAY_SetWaterMarkCallBack(LONG nPort,
称
GetWaterMarkInfoCallbackFunc pFunc, long nUser)
功能描设置水印数据回调
述
参数说nPort通道号
明
pFunc水印信息获取回调函数
nUser用户自定义数据
返回值成功返回TRUE,不成功返回FALSE
回调函数参数说明:
回调函int (__stdcall* GetWaterMarkInfoCallbackFunc)(char* buf,
数long key, long len, long reallen, long reserved, long
nUser)
参数说buf水印数据buffer指针
明
key区分不同水印信息
len缓冲的最大长度
reallen缓冲的实际长度
reserved0 I帧帧数据水印信息
1 帧水印
2 表水印校验
3 表智能分析帧
nUser用户自定义数据
4.7 消息回调
4.7.1 PLAY_SetEncChangeMsg
函数名BOOL PLAY_SetEncChangeMsg(LONG nPort, HWND hWnd, UINT
称nMsg)
功能描设置解码时编码格式发生改变时要发送的消息
述
参数说nPort通道号
明
hWnd消息发送的窗口
nMsg用户输入的消息,当解码时编码格式发生改变
时用户在hWnd窗口过程中收到这个消息
返回值成功返回TRUE,不成功返回FALSE
4.7.2 PLAY_SetFileEndMsg
函数名BOOL PLAY_SetFileEndMsg(LONG nPort, HWND hWnd, UINT
称nMsg)
功能描设置文件结束时要发送的消息
述
参数说nPort通道号
明
hWnd消息发送的窗口
nMsg用户输入的消息,当播放到文件结束时用户在
hWnd窗口过程中收到这个消息
返回值成功返回TRUE,不成功返回FALSE
4.8 函数回调
4.8.1 PLAY_SetSourceBufCallBack
函数名BOOL PLAY_SetSourceBufCallBack(LONG nPort, DWORD
称nThreShold, void (CALLBACK * SourceBufCallBack)(long
nPort, DWORD nBufSize, DWORD dwUser,void*pResvered),
DWORD dwUser, void *pReserved)
功能描设置源缓冲区阀值和剩余数据小于等于阀值时的回调函数指针
述
参数说nPort通道号
明
nThreShold阀值
SourceBufCallB回调函数指针
ack
dwUser用户数据
pReserved保留
返回值成功返回TRUE,不成功返回FALSE
回调函数参数说明:
回调函void CALLBACK SourceBufCallBack(long nPort, DWORD
数nBufSize, DWORD dwUser, void* pResvered)
通道号参数说nPort
缓冲中的数据长度nBufSize
用户数据dwUser
保留pResvered
明
4.8.2 PLAY_ResetSourceBufFlag
函数名BOOL PLAY_ResetSourceBufFlag(LONG nPort)
称
功能描重置回调标志位为有效状态。流模式下源缓冲到达阀值时(如果
述用户设置了回调函数)不一定会回调,用户需要重置回调标志位
后才能回调。而且每次回调后标志位都被设为无效,用户可以在
适当的时候重置回调标志,这个接口的主要目的是防止重复回调
(数据在阀值附近摆动因为用户输入数据时,播放器也在读走数
据)。初始化状态下,回调标志位是有效的。
参数说nPort通道号
明
返回值成功返回TRUE,不成功返回FALSE
4.8.3 PLAY_SetEncTypeChangeCallBack
函数名BOOL PLAY_SetEncTypeChangeCallBack(LONG nPort,
称void(CALLBACK *funEncChange)(long nPort, long nUser),
long nUser)
功能描设置解码时图象格式发生改变通知用户的回调函数;打开文件前
述使用
通道号参数说nPort
明funEncChange回调函数
nUser用户自定义数据
返回值成功返回TRUE,不成功返回FALSE
回调函数参数说明:
回调函void (CALLBACK *funEncChange)(long nPort, long nUser)
数
参数说nPort通道号
明
dwUser用户数据
4.8.4 PLAY_SetFileRefCallBack
函数名BOOL PLAY_SetFileRefCallBack(LONG nPort, void (CALLBACK
称*pFileRefDone) (DWORD nPort, DWORD nUser), DWORD nUser)
功能描设置回调函数指针,文件索引建立后回调。为了能在文件中准确
述快速的定位,我们在文件打开时生成文件索引。这个过程耗时比
较长,大约每秒处理40M左右的数据,主要是因为从硬盘读数据
比较慢。建立索引的过程是在后台完成,需要使用索引的函数要
等待这个过程结束,而其他接口不会受到影响。
参数说nPort通道号
明
pFileRefDone回调函数指针
nUser用户自定义数据
参数说nPort通道号
明
dwUser用户数据
4.8.5 PLAY_SetFileRefCallBackEx
函数名BOOL PLAY_SetFileRefCallBackEx(LONG nPort, void (CALLBACK
称* pFileRefDoneEx) (DWORD nPort, BOOL bIndexCreated, DWORD
nUser), DWORD nUser)
功能描PLAY_SetFileRefCallBack的扩展接口,可以返回索引的创建情
述况。
通道号参数说nPort
回调函数指针pFileRefDoneE
明
x
nUser用户自定义数据
返回值成功返回TRUE,不成功返回FALSE
回调函数参数说明:
回调函void FileRefDoneEx(DWORD nPort, BOOL bIndexCreated, DWORD
数nUser)
通道号参数说nPort
明
bIndexCreated索引创建标志,TRUE--索引创建成功,FALSE--
失败
dwUser用户数据
4.8.6 PLAY_SetFileEndCallBack
函数名BOOL CALLMETHOD PLAY_SetFileEndCallBack(LONG nPort, void
称(CALLBACK *pFileEnd)(DWORD nPort, DWORD nUser), DWORD
nUser)
功能描设置文件结束回调
述
参数说nPort通道号
明
pFileEnd回调函数指针
nUser用户自定义数据
返回值成功返回TRUE,不成功返回FALSE
回调函数参数说明:
回调函void FileEnd (DWORD nPort, DWORD nUser)
数
参数说nPort通道号
明
4.9 文件索引
4.9.1 PLAY_SetRefValue
函数名BOOL PLAY_SetRefValue(LONG nPort, BYTE *pBuffer, DWORD
称nSize)
dwUser用户数据
功能描设置文件索引。如果已经有了文件索引信息,可以不再调用生成
述索引的回调函数(PLAY_SetFileRefCallBack),直接输入索引信
息。注:索引信息及其长度必须准确
4.9.2 PLAY_GetRefValue
函数名BOOL PLAY_GetRefValue(LONG nPort, BYTE *pBuffer, DWORD
称*pSize)
功能描获取文件索引信息,以便下次打开同一个文件时直接使用这个信
述息。必须在索引建成后才能获得信息
通道号参数说nPort
索引信息pBuffer
输入/输出,输入的大小,输出索引信nSize
pBuffer
息大小
注:可以在第一次指定=0,pr=NULL,
pSizeBuffe
从的返回值获得需要的缓冲区大小。然后
pSize
分配足够的缓冲,再调用一次
返回值成功返回TRUE,不成功返回FALSE
明
4.10 文件定位
4.10.1 PLAY_SetCurrentFrameNum
函数名BOOL PLAY_SetCurrentFrameNum(LONG nPort, DWORD
称nFrameNum)
功能描设置当前播放播放位置到指定帧号,根据帧号来定位播放位置。
述此函数必须在文件索引生成之后才能调用
通道号参数说nPort
帧序号nFrameNum
明
返回值成功返回TRUE,不成功返回FALSE
4.10.2 PLAY_SetPlayedTimeEx
函数名BOOL PLAY_SetPlayedTimeEx(LONG nPort, DWORD nTime)
称
功能描根据时间设置文件播放位置,此接口比PLAY_SetPlayPos费时,
述但如果用时间来控制进度条(与PLAY_GetPlayedTime(Ex)配合
使用),那么可以使进度条平滑滚动
参数说nPort通道号
明
返回值成功返回TRUE,不成功返回FALSE
nTime设置文件播放位置到指定时间。单位毫秒
4.10.3 PLAY_SetPlayPos
函数名BOOL PLAY_SetPlayPos(LONG nPort, float fRelativePos)
称
功能描设置文件播放指针的相对位置(百分比)
述
明
返回值范围0-100%
4.11 设置属性
4.11.1 PLAY_SetColor
函数名BOOL PLAY_SetColor(LONG nPort, DWORD nRegionNum, int
称
nBrightness, int nContrast, int nSaturation, int nHue)
功能描设置图像的视频参数,即时起作用
述
参数说nPort通道号
明
nRegionNum显示区域,参考PLAY_SetDisplayRegion;如果
只有一个显示区域(通常情况)设为0
nBrightness亮度,默认64; 范围0-128
nContrast对比度,默认64; 范围0-128
nSaturation饱和度,默认64; 范围0-128
nHue色调,默认64; 范围0-128
返回值成功返回TRUE,不成功返回FALSE
4.11.2 PLAY_SetDisplayBuf
函数名BOOL PLAY_SetDisplayBuf(LONG nPort, DWORD nNum)
称
功能描设置播放缓冲区(即解码后的图像缓冲区)大小;这个缓冲区比
述较重要,他直接影响播放的流畅性和延时性。在一定范围内缓冲
越大越流畅,同时延时越大。在播放文件时用户最好可以考虑开
大缓冲(如果内存足够大),我们的默认值是15(帧),在25
帧/秒的情况下即0.6秒的数据。如果用户追求最大延时最小,
可以考虑试当减小这个值
参数说nPort通道号
明
nNum播放缓冲区最大缓冲帧数。范围:
MIN_DIS_FRAMES ~MAX_DIS_FRAMES。一帧
352*288图像的所需内存最小值是
352*288*3/2大约150K 。最大值是352*288*4
大约405K
MIN_DIS_FRAMES 播放缓冲最小值
MAX_DIS_FRAMES 播放缓冲最大值
返回值成功返回TRUE,不成功返回FALSE
4.11.3 PLAY_SetDisplayType
函数名BOOL PLAY_SetDisplayType(LONG nPort, LONG nType)
称
功能描设置显示的模式,在小画面显示时,采用DISPLAY_QUARTER 可
述以减小显卡工作量,从而支持更多路显示,但画面显示质量有下
降。在正常和大画面显示时应该使用DISPLAY_NORMAL
参数说nPort通道号
明
nType两种模式:DISPLAY_NORMAL或
DISPLAY_QUARTER DISPLAY_NORMAL 正常分
辨率数据送显卡显示
DISPLAY_QUARTER 1/4分辨率数据送显卡显
示
返回值成功返回TRUE,不成功返回FALSE
4.11.4 PLAY_VerticalSyncEnable
函数名BOOL PLAY_VerticalSyncEnable(LONG nPort, BOOL bEnable)
称
功能描垂直同步显示开关接口。只支持offscreen显示模式
述
此接口需在PLAY_Play之后调用,重新播放时需重新设置。在播
放动态图像出现断层时,可以使用此接口打开垂直同步功能,但
CPU占用率会明显提高
参数说nPort通道号
明
bEnableTRUE 打开垂直同步
FALSE 关闭垂直同步
返回值成功返回TRUE,不成功返回FALSE
4.11.5 PLAY_AdjustFluency
函数名BOOL PLAY_AdjustFluency(LONG nPort, int level)
称
功能描调整图象播放的流畅性。流畅性和实时性是一对平衡体。当
述level为0时,图象最流畅;当level为6时,图象最实时。Level
的默认值为3
参数说nPort通道号
明
返回值成功返回TRUE,不成功返回FALSE
level将要调整图象的等级(0-6)
补充说实时监视时,使用了新的帧率控制方式,目前该函数无效
明
4.11.6 PLAY_ChangeRate
函数名BOOL PLAY_ChangeRate(LONG nPort, int rate)
称
功能描改变图像播放的帧率
述
参数说nPort通道号
明
返回值成功返回TRUE,不成功返回FALSE
rate播放帧率
4.11.7 PLAY_OpenAudioRecord
函数名BOOL PLAY_OpenAudioRecord(pCallFunction nProc, LONG
称
nBitsPerSample, LONG nSamplesPerSec, long nLength, long
nReserved, LONG nUser)
功能描打开音频采集功能
述
参数说nProc音频采集数据回调指针
回调函数参数说明:
回调函void pCallFunction(LPBYTE pDataBuffer, DWORD DataLength,
数long nUser)
回调数据指针参数说pDataBuffer
回调数据长度DataLength
用户数据nUser
明
4.11.8 PLAY_CloseAudioRecord
函数名BOOL PLAY_CloseAudioRecord( )
称
功能描关闭音频采集功能
述
参数说无
明
返回值成功返回TRUE,不成功返回FALSE
4.11.9 PLAY_SetOverlayMode
函数名BOOL PLAY_SetOverlayMode(LONG nPort, BOOL bOverlay,
称COLORREF colorKey)
功能描设置OVERLAY模式显示画面。在一块显卡中同一时刻只能有一个
述OVERLAY表面处于活动状态,如果此时系统中已经有程序使用了
OVERLAY,那么播放器就不能再创建OVERLAY表面,它将自动改用
Off_Screen表面,并不返回FALSE。一些常用的播放器,以及我
们卡的预览都可能使用了OVERLAY表面。同样,如果播放器使用
了OVERLAY表面,那么,其他的程序将不能使用OVERLAY表面,特
别注意,我们的卡在预览时可能也要使用OVERLAY (用户可设
置),如果先打开播放器(并且使用了OVERLAY),再启动预览,
那么预览可能因为得不到OVERLAY而失败。
使用OVERLAY模式的优点是:大部份的显卡都支持OVERLAY,在
一些不支持BLT硬件缩放和颜色转换的显卡上 (如SIS系列显
卡)使用OVERLAY模式(OVERLAY模式下的缩放和颜色转换由显
卡支持),可以大大减小CPU利用率并提高画面质量(相对于软
件缩放和颜色转换)。缺点是:只能有一路播放器使用。该设置
必须在PLAY之前使用,而且需要设置透明色。
参数说nPort音频采集数据回调指针
明
bOverlay 表示将首先尝试使用OVERLAY模
TRUE
式,如果不行再使用其他模式
FALSE
不进行OVERLAY模式的尝试
colorKey用户设置的透明色,透明色相当于一层透视膜,
显示的画面只能穿过这种颜色,而其他的颜色
将挡住显示的画面。用户应该在显示窗口中涂
上这种颜色,那样才能看到显示画面。一般应
该使用一种不常用的颜色作为透明色。这是一
个双字节值0x00rrggbb,最高字节为0,后三个
字节分别表示r,g,b的值
返回值成功返回TRUE,不成功返回FALSE
4.11.10 PLAY_SetPicQuality
函数名BOOL PLAY_SetPicQuality(LONG nPort, BOOL bHighQuality)
称
功能描设置图像质量,当设置成高质量时画面效果好,但CPU利用率高。
述在支持多路播放时,可以设为低质量,以降低CPU利用率;当某
路放大播放时将该路设置成高质量,以达到好的画面效果
参数说nPort音频采集数据回调指针
明
返回值成功返回TRUE,不成功返回FALSE
bHighQuality等于1时图像高质量,等于0时低质量(默认值)
4.11.11 PLAY_SetStreamOpenMode
函数名BOOL PLAY_SetStreamOpenMode(LONG nPort, DWORD nMode)
称
功能描设置流播放的模式。必须在播放之前设置
述
参数说nPort通道号
明
nModeSTREAME_REALTIME 实时模式(默认)
STREAME_FILE 文件模式
注:
实时模式,适合播放网络实时数据,解码器会
立刻解码;
文件模式,适合用户把文件数据用流方式输入;
注意:当PLAY_InputData()返回FALSE时,用户
要等一下重新输入;
返回值成功返回TRUE,不成功返回FALSE
4.11.12 PLAY_SetTimerType
函数名BOOL PLAY_SetTimerType(LONG nPort, DWORD nTimerType,
称DWORD nReserved)
功能描设置当前通道使用的定时器类型,注意:必须在Open之前调用
述
参数说nPort通道号
明
nTimerTypeTIMER_1 多媒体定时器,精度高,但不能超过
16个;
TIMER_2 线程定时器,精度略低,无数量限制
nReserved保留
返回值成功返回TRUE,不成功返回FALSE
4.12 获得属性
4.12.1 PLAY_GetCaps
函数名int PLAY_GetCaps( )
称
功能描测试播放器需要的一些系统功能
述
参数说无
明
返回值属性值,按位取。
注:属性值,1~9位分别表示以下信息(位与是TRUE表示支持)
SUPPORT_DDRAW支持DIRECTDRAW;如果不支持,则播放器不能工作
SUPPORT_BLT显卡支持BLT操作;如果不支持,则播放器不能工
作
SUPPORT_BLTFOURCC显卡BLT支持颜色转换;如果不支持,播放器会使用
软件方式作RGB转换
SUPPORT_BLTSHRINK显卡BLT支持X轴缩小;如果不支持,系统使用软
X件方式转换
SUPPORT_BLTSHRINK显卡BLT支持X轴缩小;如果不支持,系统使用软
Y件方式转换
SUPPORT_BLTSTRETC显卡BLT支持Y轴放大;如果不支持,系统使用软
HX件方式转换
SUPPORT_BLTSTRETC显卡BLT支持Y轴放大;如果不支持,系统使用软
HY件方式转换
SUPPORT_SSE CPU支持SSE指令,Intel Pentium3以上支持SSE指
令
SUPPORT_MMX CPU支持MMX指令集
4.12.2 PLAY_GetColor
函数名BOOL PLAY_GetColor(LONG nPort, DWORD nRegionNum, int
称*pBrightness, int *pContrast, int *pSaturation, int *pHue)
功能描相应的获得颜色值,参数同PLAY_SetColor
述
参数说nPort通道号
明
nRegionNum显示区域,参考PLAY_SetDisplayRegion;如果
只有一个显示区域(通常情况)设为0
nBrightness亮度,默认64; 范围0-128
nContrast对比度,默认64; 范围0-128
nSaturation饱和度,默认64; 范围0-128
nHue色调,默认64; 范围0-128
返回值成功返回TRUE,不成功返回FALSE
4.12.3 PLAY_GetDisplayBuf
函数名DWORD PLAY_GetDisplayBuf(LONG nPort)
称
功能描获得播放缓冲区最大缓冲的帧数
述
参数说nPort通道号
明
返回值所获得的播放缓冲区最大缓冲帧数
4.12.4 PLAY_GetDisplayType
函数名long PLAY_GetDisplayType(LONG nPort)
称
功能描获得目前设置的显示模式
述
返回值颜色值
4.12.6 PLAY_GetOverlayMode
函数名LONG PLAY_GetOverlayMode(LONG nPort)
称
功能描检查当前播放器是否使用了OVERLAY模式
述
参数说nPort通道号
明
返回值0-- 表示没有使用OVERLAY, 1--表示使用了OVERLAY表面
4.12.7 PLAY_GetPictureQuality
函数名BOOL PLAY_GetPictureQuality(LONG nPort, BOOL*
称bHighQuality)
功能描获得当前图像质量
述
参数说nPort通道号
明
bHighQuality1 表示高质量
0 表示低质量
返回值成功返回TRUE,不成功返回FALSE
4.12.8 PLAY_GetStreamOpenMode
函数名LONG PLAY_GetStreamOpenMode(LONG nPort)
述
参数说nPort通道号
明
返回值或
STREAME_REALTIMESTREAME_FILE
4.12.9 PLAY_GetTimerType
函数名BOOL PLAY_GetTimerType(LONG nPort, DWORD *pTimerType,
称
DWORD *pReserved)
功能描获得定时器类型
述
参数说nPort通道号
明
pTimerType定时器类型
pReserved保留
返回值成功返回TRUE,不成功返回FALSE
4.12.10 PLAY_GetBufferValue
函数名DWORD PLAY_GetBufferValue(LONG nPort, DWORD nBufType)
称
4.12.11 PLAY_GetCurrentFrameNum
函数名DWORD PLAY_GetCurrentFrameNum(LONG nPort)
称
功能描得到当前播放的帧序号。而PLAY_GetPlayedFrames是总共解码
述的帧数。如果文件播放位置不被改变,那么这两个函数的返回值
应该非常接近,除非码流丢失数据
参数说nPort通道号
明
返回值当前播放的帧序号
4.12.12 PLAY_GetCurrentFrameRate
函数名DWORD PLAY_GetCurrentFrameRate(LONG nPort)
称
功能描得到当前码流中编码时的帧率
述
参数说nPort通道号
明
返回值此版本播放器对应的文件头的长度
4.12.14 PLAY_GetFileTime
函数名DWORD PLAY_GetFileTime(LONG nPort)
称
功能描得到文件总的时间长度,单位秒
述
参数说nPort通道号
明
返回值文件总的时间长度值
4.12.15 PLAY_GetFileTotalFrames
函数名DWORD PLAY_GetFileTotalFrames(LONG nPort)
称
键帧之前的数据会被忽略。如果用户要截取文件中的一段数据,
则应该考虑从关键帧开始截取。结束位置则关系不大,最多丢失
3帧数据
参数说nPort通道号
明
nValue当前位置,可以是时间或帧号,类型由
nType
指定
nType指定nValue的类型。
如果是BY_FRAMENUM,则表示帧号;
nTypenValue
如果是BY_FRAMTIME,则表示时间,
nTypenValue
单位ms
pFramePos查找到的关键帧的文件位置信息结构指针。
typedef struct{
long nFilePos; //文件位置;
long nFrameNum; //帧序号;
long nFrameTime; //帧时标(ms);
}FRAME_POS,*PFRAME_POS
返回值成功返回TRUE,不成功返回FALSE
4.12.17 PLAY_GetNextKeyFramePos
函数名BOOL PLAY_GetNextKeyFramePos(LONG nPort, DWORD nValue,
称DWORD nType, PFRAME_POS pFramePos)
功能描查找指定位置之后的关键帧位置
述
参数说nPort通道号
明nValue当前位置,可以是时间或帧号,类型由
nType
指定
nType指定nValue的类型。
如果是BY_FRAMENUM,则表示帧号;
nTypenValue
如果是BY_FRAMTIME,则表示时间,
nTypenValue
单位ms
pFramePos查找到的关键帧的文件位置信息结构指针。
typedef struct{
long nFilePos; //文件位置;
long nFrameNum; //帧序号;
long nFrameTime; //帧时标(ms);
}FRAME_POS,*PFRAME_POS
返回值成功返回TRUE,不成功返回FALSE
4.12.18 PLAY_GetPictureSize
函数名BOOL PLAY_GetPictureSize(LONG nPort, LONG *pWidth, LONG
称*pHeight)
功能描获得码流中原始图像的大小,根据此大小来设置显示窗口的区
述域,可以不用显卡做缩放工作,对于那些不支持硬件缩放的显卡
来说非常有用
参数说nPort通道号
明
pWidth原始图像的宽。在PAL制CIF格式下是352
pHeight原始图像的高。在PAL制CIF格式下是288
返回值成功返回TRUE,不成功返回FALSE
4.12.19 PLAY_GetPlayedFrames
函数名DWORD PLAY_GetPlayedFrames(LONG nPort)
称
功能描得到已经解码的视频帧数
述
参数说nPort通道号
明
返回值已经解码的视频帧数
4.12.20 PLAY_GetPlayedTime
函数名DWORD PLAY_GetPlayedTime(LONG nPort)
称
返回值文件当前播放的时间
4.12.22 PLAY_QueryInfo
函数名BOOL PLAY_QueryInfo(LONG nPort , int cmdType, char* buf,
称int buflen, int* returnlen)
功能描信息状态查询函数。目前实现了对当前时间和帧率信息的查询
述
参数说nPort通道号
明
cmdType指定状态查询指令
PLAY_CMD_GetTime 获取时间信息,单位
ms
PLAY_CMD_GetFileRate 获取帧率信息
PLAY_CMD_GetMediaInfo 获取媒体信息,信息
结构为 MEDIA_INFO
buf存放信息的缓冲
buflen缓冲长度
returnlen获取的信息的有效数据长度
返回值成功返回TRUE,不成功返回FALSE
Ex:
int len;
MEDIA_INFO tMediaInfo;
PLAY_QueryInfo(0, PLAY_CMD_GetMediaInfo, (char*)&tMediaInfo,
sizeof(MEDIA_INFO), &len);
4.12.23 PLAY_GetSourceBufferRemain
函数名DWORD PLAY_GetSourceBufferRemain(LONG nPort)
称
功能描获得流播放模式下源缓冲剩余数据
述
参数说nPort通道号
明
返回值当前源缓冲的大小(BYTE)
4.12.24 PLAY_GetRealFrameBitRate
函数名BOOL PLAY_GetRealFrameBitRate(LONG nPort, double*
称pBitRate)
功能描获得视频的实时码率
述
参数说nPort通道号
明
返回值成功返回TRUE,不成功返回FALSE
pBitRate视频码率
4.13 多显卡控制
4.13.1 PLAY_InitDDrawDevice
函数名BOOL PLAY_InitDDrawDevice()
称
明
返回值成功返回TRUE,不成功返回FALSE
4.13.2 PLAY_ReleaseDDrawDevice
函数名void PLAY_ReleaseDDrawDevice()
称
功能描释放枚举显示设备的过程中分配的资源
述
参数说无
明
返回值无
4.13.3 PLAY_SetDDrawDevice
函数名BOOL PLAY_SetDDrawDevice(LONG nPort, DWORD nDeviceNum)
称
参数说
明
返回值
4.13.5 PLAY_GetDDrawDeviceInfo
函数名BOOL PLAY_GetDDrawDeviceInfo(DWORD nDeviceNum, LPSTR
称lpDriverDescription, DWORD nDespLen, LPSTR lpDriverName,
DWORD nNameLen, HMONITOR *hhMonitor)
功能描得到指定显卡和监视器信息
述
参数说nDeviceNum[in]显示设备的设备号,如果是0,则表示主
明显示设备
lpDriverDescri[out]显示设备的描述信息
ption
nDespLen[in]表示已分配空间
lpDriverDescription
的大小,单位byte
lpDriverName[out]显示设备的设备名
nNameLen[in]表示已分配空间的大小,
lpDriverName
单位byte
hhMonitor[out]显示设备使用的监视器句柄,通过
Windows API 函数GetMonitorInfo,可以得
到详细信息,供用户定位窗口位置
返回值成功返回TRUE,不成功返回FALSE
4.13.6 PLAY_GetDDrawDeviceTotalNums
函数名DWORD PLAY_GetDDrawDeviceTotalNums()
称
功能描获得系统中与windows桌面绑定的总的显示设备数目(这里主要
述是指显卡)
参数说无
明
返回值0 表示系统中只有主显示设备
1 表示系统中安装了多块显卡,但只有一块显卡与
Windows桌面绑定
其他值 表示系统中与桌面绑定的显卡数目。在多显卡的系统
中可以通过设置显示属性,而指定任意一块显卡作为
主显示设备
4.13.7 PLAY_GetCapsEx
函数名int PLAY_GetCapsEx(DWORD nDDrawDeviceNum)
称
功能描获得指定显示设备的系统信息。没有实现该接口。
述
参数说
明
称nWidth,long nHeight,long nType,char *sFileName)
功能描将YUV图像数据保存成BMP文件。转换函数占用的cpu资源,如
述果不需要保存图片,则不要调用
图像数据指针参数说pBuf
图像数据大小nSize
图像宽度nWidth
图像高度nHeight
数据类型。T_RGB32,T_UYVY等nType
要保存的文件名。最好以BMP作为文件扩展名sFileName
明
返回值成功返回TRUE,不成功返回FALSE
4.14.2 PLAY_ConvertToJpegFile
函数名BOOL PLAY_ConvertToJpegFile(char *pYUVBuf, long nWidth,
称long nHeight, int YUVtype, int quality, char *sFileName)
功能描将YUV图像数据压缩成jpeg格式
述
参数说pYUVBuf图像数据指针
明
nWidth图像宽度
nHeight图像高度
YUVtypeYUV数据类型,如T_YV12,T_UYVY
quality图片压缩质量,(0, 100]
sFileName要保存的文件名。最好以jpg作为文件扩展名
4.14.3 PLAY_CatchPic
函数名BOOL PLAY_CatchPic(LONG nPort, char* sFileName)
称
功能描抓图,将图片保存为指定的文件。PLAY_SetDisplayCallBack设
述置的视频数据回调函数,只有在有视频数据解码出来时才调用,
并由用户处理视频数据(如抓图),如果不断有解码的数据,就
不断调用这个回调函数。而PLAY_CatchPic一次只抓一幅图,并
能在暂停和单帧播放时实现抓图。建议:如果用户想实现抓图(一
次抓一幅图),调用PLAY_CatchPic,而如果想得到一段时间内
的视频数据,调用PLAY_SetDisplayCallBack
参数说nPort通道号
明
返回值成功返回TRUE,不成功返回FALSE
sFileName文件名称
4.14.4 PLAY_CatchPicEx
函数名BOOL PLAY_CatchPicEx(LONG nPort, char* sFileName,
称tPicFormats ePicfomat)
功能描PLAY_CatchPic的扩展接口,可指定图片格式,目前支持BMP,
述JPEG两种图片格式
通道号参数说nPort
文件名称sFileName
图片格式,见tPicFomatsePicfomat
明
返回值成功返回TRUE,不成功返回FALSE
4.14.5 PLAY_CatchResizePic
函数名BOOL PLAY_CatchResizePic(LONG nPort, char* sFileName,
称LONG lTargetWidth, LONG lTargetHeight, tPicFormats
ePicfomat)
功能描抓图接口,可以将图片调整为指定的宽高
述
参数说nPort通道号
明
sFileName文件名称
lTargetWidth指定的图像宽度
lTargetHeight指定的图像高度
ePicfomat图片格式,见tPicFomats
返回值成功返回TRUE,不成功返回FALSE
4.14.6 PLAY_GetPicBMP
函数名BOOL PLAY_GetPicBMP(LONG nPort, PBYTE pBmpBuf, DWORD
称dwBufSize, DWORD* pBmpSize)
功能描抓图,返回BMP格式的图像内存数据。
述
参数说nPort通道号
明
pBmpBuf用于存放BMP图像数据的缓冲地址,由用户分
配,不得小于bmp 图像大小,推荐大小:
sizeof(BITMAPFILEHEADER) +
sizeof(BITMAPINFOHEADER) + w * h * 4, 其
中w 和h 分别为图像宽高
dwBufSize申请的缓冲区大小
pBmpSize获取到的实际bmp 图像大小
返回值成功返回TRUE,不成功返回FALSE
4.14.7 PLAY_GetPicJPEG
函数名BOOL PLAY_GetPicJPEG(LONG nPort, PBYTE pJpegBuf, DWORD
称dwBufSize, DWORD* pJpegSize, int quality)
功能描抓图,返回JPEG格式的图像内存数据。
述
参数说nPort通道号
明
pJpegBuf用于存放JPEG图像数据的缓冲地址,由用户分
配,不得小于JPEG图像大小,推荐大小:
w*h*3/2, 其中w 和h 分别为图像宽高
dwBufSize申请的缓冲区大小
pJpegSize获取到的实际JPEG图像大小
qualityJpeg图像的压缩质量,取值范围为(0, 100]
返回值成功返回TRUE,不成功返回FALSE
4.15 字符叠加
4.15.1 PLAY_RigisterDrawFun
函数名BOOL PLAY_RigisterDrawFun(LONG nPort, void (CALLBACK*
称DrawFun)(long nPort, HDC hDc, LONG nUser), LONG nUser)
功能描注册一个回调函数,获得当前表面的device context, 你可以
述在这个DC上画图(或写字),就好像在窗口的客户区DC上绘图,
但这个DC不是窗口客户区的DC,而是DirectDraw里的
Off-Screenoverlay
表面的DC。注意,如果是使用表面,这个
接口无效,你可以直接在窗口上绘图,只要不是透明色就不会被
覆盖
参数说nPort通道号
明
DrawFun文件名称
nUser用户数据
返回值成功返回TRUE,不成功返回FALSE
回调函数参数说明:
函数名void CALLBACK DrawFun(long nPort, HDC hDc, LONG nUser)
称
参数说nPort通道号
明
hDcOffScreen表面设备上下文,你可以像操作显示
窗口客户区DC那样操作它
nUser用户数据,就是上面输入的用户数据
4.16 多区域显示
4.16.1 PLAY_SetDisplayRegion
函数名BOOL PLAY_SetDisplayRegion(LONG nPort, DWORD nRegionNum,
称RECT *pSrcRect, HWND hDestWnd, BOOL bEnable)
功能描设置或增加显示区域。可以做局部放大显示
述
参数说nPort通道号
明
nRegionNum显示区域序号,0~(MAX_DISPLAY_WND-1)。如果
nRegionNum
为0,则将设置的区域显示在主窗口
pSrcRect局部显示区域
hDestWnd显示窗口句柄
bEnable打开(设置)或关闭显示区域
返回值成功返回TRUE,不成功返回FALSE
4.16.2 PLAY_RefreshPlayEx
函数名BOOL PLAY_RefreshPlayEx(LONG nPort, DWORD nRegionNum)
称
功能描刷新显示,刷新多区域显示的窗口
述
参数说nPort通道号
明
nRegionNum显示区域序号,0~(MAX_DISPLAY_WND-1)。如果
nRegionNum
为0,则刷新主窗口
返回值成功返回TRUE,不成功返回FALSE
4.17 数据流录像
4.17.1 PLAY_StartDataRecord
函数名BOOL PLAY_StartDataRecord(LONG nPort, char *sFileName)
称
功能描开始流数据录像。只对流模式有用,在PLAY_Play之后调用
述
4.17.2 PLAY_StopDataRecord
函数名BOOL CALLMETHOD PLAY_StopDataRecord(LONG nPort)
称
功能描停止流数据录像
述
参数说nPort通道号
明
返回值成功返回TRUE,不成功返回FALSE
4.18 清缓冲
4.18.1 PLAY_ResetSourceBuffer
函数名BOOL PLAY_ResetSourceBuffer(LONG nPort)
称
功能描清除流播放模式下源缓冲区剩余数据
述
参数说nPort通道号
明nBufType缓冲类型,见宏定义
返回值成功返回TRUE,不成功返回FALSE
缓冲类型定义:
BUF_VIDEO_SRC视频数据源缓冲,缓冲解码之前视频数据,只对流模式
有效,单位byte
BUF_AUDIO_SRC音频数据源缓冲,缓冲解码之前音频数据,只对流模式
有效, 单位byte
BUF_VIDEO_REND解码后视频数据缓冲,单位帧数
ER
BUF_AUDIO_REND解码后音频数据缓冲区,单位帧数,音频40ms数据定
ER为一帧
4.19 智能搜索
该部分功能只对有数据帧信息的文件有效
数据帧指音频数据和视频数据之外的的数据块,譬如通道标题,LOGO等。
4.19.1 PLAY_SetMDRange
函数名BOOL CALLMETHOD PLAY_SetMDRange(LONG nPort, RECT* rc,
称DWORD nVauleBegin, DWORD nValueEnd, DWORD nType)
功能描设置搜索区域及范围
述
参数说nPort通道号
明
rc搜索区域,为播放画面的某一部分
nVauleBegin搜索范围的上限,可以是时间或帧号,取决于
nType
nValueEnd搜索范围的下限,可以是时间或帧号,取决于
nType
nType可以是BY_FRAMENUM或BY_FRAMETIME
返回值成功返回TRUE,不成功返回FALSE
4.19.2 PLAY_SetMDThreShold
函数名BOOL PLAY_SetMDThreShold(LONG nPort, DWORD ThreShold)
称
功能描设置智能搜索的阀值
述
参数说nPort通道号
明
返回值成功返回TRUE,不成功返回FALSE
ThreShold阀值
4.19.3 PLAY_GetMDPosition
函数名DWORD CALLMETHOD PLAY_GetMDPosition(LONG nPort, DWORD
称Direction, DWORD nFrame, DWORD* MDValue)
功能描获得搜索到的数据帧的帧序号
述
参数说nPort通道号
明
4.20 获得版本号
4.20.1 PLAY_GetSdkVersion
函数名DWORD PLAY_GetSdkVersion( )
称
功能描得到当前播放器sdk的主版本号、次版本号和补丁号
述
参数说无
明
返回值高16位表示当前的主版本号。9~16位表示次版本号,1~8位表
示次补丁号。如:返回值0x00030107表示:主版本号是3,次
版本号是1,补丁号是7
4.21 获得错误号
4.21.1 PLAY_GetLastError
函数名DWORD PLAY_GetLastError(LONG nPort)
称
功能描获得当前错误的错误码。用户应该在调用某个函数失败时,调用
述此函数以获得错误的详细信息
通道号参数说nPort
明
返回值见错误类型
4.22 其它
4.22.1 PLAY_InitDDraw
函数名BOOL PLAY_InitDDraw(HWND hWnd)
称
功能描初始化DirectDraw表面 。目前不使用
述
参数说hWnd应用程序主窗口的句柄
明
返回值
4.22.2 PLAY_RealeseDDraw
函数名BOOL PLAY_RealeseDDraw()
称
功能描释放DirectDraw表面。目前不使用
述
参数说
4.22.4 PLAY_RefreshPlay
函数名BOOL PLAY_RefreshPlay(LONG nPort)
称
功能描刷新显示。当用户暂停时如果刷新了窗口,则窗口中的图像因为
述刷新而消失,此时调用这个接口可以重新把图像显示出来。只有
在暂停和单帧播放时才会执行,其它情况会直接返回
参数说nPort通道号
明
返回值成功返回TRUE,不成功返回FALSE


发布评论