大華播放SDK開發(fā)手冊_第1頁
大華播放SDK開發(fā)手冊_第2頁
大華播放SDK開發(fā)手冊_第3頁
大華播放SDK開發(fā)手冊_第4頁
大華播放SDK開發(fā)手冊_第5頁
已閱讀5頁,還剩133頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

大華播放SDK開發(fā)手冊究前言本手冊可能包含技術(shù)上不準(zhǔn)確的地方或印刷錯誤,歡迎指正。我們將會定期更新手2010-1-292010-1-222009-10-262009-8-142009-07-152008-03-252007-10-16PLAY_SetFileRefCallBackExPLAY_GetRealFrameBitRate添加接口:PLAY_SetVisibleDecCallBack;PLAY_CatchResizePicPLAY_GetFreePort,PLAY_ReleasePort;PLAY_VerticalSyncEnable;PLAY_GetPicBMP,PLAY_GetPicJPEG;整理文檔,修改文檔版式,添加接口說明整理文檔,增加對最新接口的說明整理文檔,修改多顯卡及設(shè)置高畫質(zhì)接口的定義202007-9-32006-12-18施施播放SDK是大華壓縮卡和硬盤錄像機的配套產(chǎn)品,支持大華所有碼流格式以及海思播放SDK的主要功能有:支持文件或流數(shù)據(jù)的播放、回放控制(如暫停\恢復(fù)、快放慢放)、音頻控制、流數(shù)據(jù)錄像、多區(qū)域顯示、按幀序號或按時間定位、數(shù)據(jù)回調(diào)、消息回調(diào)、字符疊加、抓圖…….以及ADI的h264碼流和海思的h264碼流的解碼HBHBELB、LBE、GB、GBE、NVS機型碼流設(shè)計原則顯卡設(shè)備用的顯卡PLAY_InitDDrawDevicePLAY_GetDDrawDeviceTotalNumsPLAY_SetDDrawDevicePLAY_GetDDrawDeviceInfo束消息回調(diào)數(shù)回調(diào)改變消息回調(diào)式改變函數(shù)回調(diào)建立后回調(diào)閥值回調(diào)置數(shù)據(jù)解碼回調(diào)同時顯示視頻PLAY_GetCapsExPLAY_RealeseDDrawPLAY_SetFileEndMsgPLAY_SetFileEndCallBackPLAY_SetEncChangeMsgPLAY_SetEncTypeChangeCallBackPLAY_SetFileRefCallBackPLAY_SetSourceBufCallBackPLAY_SetDecCallBackPLAY_SetDecCallBackExPLAY_SetVisibleDecCallBackPLAY_SetDisplayCallBackPLAY_SetAudioCallBackPLAY_SetVerifyCallBackPLAY_SetDemuxCallBackPLAY_SetRefValuePLAY_SetDisplayBufPLAY_SetOverlayModePLAY_SetStreamOpenModePLAY_SetTimerTypePLAY_SetWaterMarkCallBackPLAY_CreateFilePLAY_OpenFilePLAY_CreateStreamPLAY_OpenStreamPLAY_OpenStreamExPLAY_PlayPLAY_PlaySoundPLAY_PlaySoundSharePLAY_SetVolumePLAY_GetVolumePLAY_StopSoundPLAY_StopSoundSharePLAY_StartDataRecordPLAY_GetFreePort釋放通道號PLAY_ReleasePortPLAY_InputDataPLAY_InputVideoDataPLAY_InputAudioDataPLAY_StopDataRecord回調(diào)標(biāo)志PLAY_ResetSourceBufFlagPLAY_FastPLAY_SlowPLAY_PausePLAY_SetCurrentFrameNumPLAY_SetPlayedTimeExPLAY_SetPlayPosPLAY_RefreshPlayPLAY_RefreshPlayExPLAY_OneByOnePLAY_OneByOneBackPLAY_BackOnePLAY_BackPLAY_CatchPicPLAY_CatchPicExPLAY_CatchResizePic據(jù))PLAY_GetPicBMPPLAY_GetPicJPEG放的流暢性PLAY_ResetBufferPLAY_SetColorPLAY_SetDisplayRegionPLAY_SetDisplayTypePLAY_VerticalSyncEnablePLAY_AdjustFluencyPLAY_ChangeRatePLAY_OpenAudioRecordPLAY_CloseAudioRecordPLAY_GetColorPLAY_GetColorKeyPLAY_GetCurrentFrameNumPLAY_GetCurrentFrameRatePLAY_GetDisplayBufPLAY_GetDisplayTypePLAY_GetPlayedTimePLAY_GetPlayedTimeExPLAY_QueryInfoPLAY_GetFileTotalFramesPLAY_GetFileTimePLAY_GetPlayPosPLAY_GetRefValuePLAY_GetSourceBufferRemainPLAY_GetStreamOpenModePLAY_GetKeyFramePosPLAY_GetNextKeyFramePosPLAY_GetOverlayModePLAY_GetPictureSizePLAY_GetPlayedFramesPLAY_GetRealFrameBitRatePLAYPLAY_Stop關(guān)閉創(chuàng)建的文件卡資源PLAY_DestroyFilePLAY_CloseFilePLAY_DestroyStreamPLAY_CloseStreamPLAY_CloseStreamExPLAY_ReleaseDDrawDevicePLAY_GetCapsPLAY_ConvertToBmpFilePLAY_GetFileHeadLengthPLAY_GetSdkVersion中的功能大部分之間沒有調(diào)用先后順序,當(dāng)然對同一個功能還是應(yīng)該按先打開再操作最3數(shù)據(jù)結(jié)構(gòu)定義//最大播放通道#defineFUNC_MAX_PORT//最大播放通道數(shù)-100#defineMIN_WAVE-100#defineMAX_WAVE_COEF#defineTIMER_1#defineTIMER_2#defineBUF_VIDEO_SRC#defineBUF_AUDIO_SRC#defineBUF_VIDEO_RENDER頻數(shù)據(jù)緩沖#defineBUF_AUDIO_RENDER頻數(shù)據(jù)緩沖12//默認(rèn)定時器,精確定時,但一據(jù)不限制//音頻源緩沖3//解碼后視4//解碼后音BUFBUF_VIDEO_SRC視頻數(shù)據(jù)源緩沖,緩沖解碼之前視頻數(shù)據(jù),只對流模式有效,單位byteBUF_AUDIO_SRC音頻數(shù)據(jù)源緩沖,緩沖解碼之前音頻數(shù)據(jù),只對流模BUF_VIDEO_RENDER解碼后視頻數(shù)據(jù)緩沖,單位幀數(shù)BUF_AUDIO_REND解碼后音頻數(shù)據(jù)緩沖,單位幀數(shù),音頻40ms數(shù)據(jù)定為ER一幀DHDH_PLAY_NOERROR#define0eDHPLAYPARAOVER非法#defineDH_PLAY_ORDER_ERROR不對#defineDH_PLAY_TIMER_ERROR鐘設(shè)置失敗#defineDH_PLAY_DEC_VIDEO_ERROR碼失敗#defineDH_PLAY_DEC_AUDIO_ERROR碼失敗#define#define作失敗#define等失敗DH_PLAY_ALLOC_MEMORY_ERROR6DH_PLAY_OPEN_FILE_ERRORDH_PLAY_CREATE_OBJ_ERROR#define#define失敗#defineDH_PLAY_CREATE_DDRAW_ERROR9DH_PLAY_CREATE_OFFSCREEN_ERRORDH_PLAY_BUF_OVER緩沖區(qū)滿,輸入流失敗#defineDH_PLAY_CREATE_SOUND_ERROR失敗#defineDH_PLAY_SET_VOLUME_ERROR#defineDH_PLAY_SUPPORT_FILE_ONLY時才能使用1//輸入?yún)?shù)2//調(diào)用順序3//多媒體時//分配內(nèi)存失敗8//創(chuàng)建線程事件/建directDra敗10//創(chuàng)建后端緩存11//12//創(chuàng)建音頻設(shè)備13//設(shè)置音量失敗14//只能在播放文件HPLAYSUPPORTSTREAMONLY用#defineDH_PLAY_SYS_NOT_SUPPORT16#defineDH_PLAY_FILEHEADER_UNKNOWN#defineDH_PLAY_VERSION_INCORRECT器版本不對應(yīng)#defineDH_PLAY_INIT_DECODER_ERROR失敗#defineDH_PLAY_CHECK_FILE_ERROR流無法識別#defineDH_PLAY_INIT_TIMER_ERROR多媒體時鐘失敗#defineDH_PLAY_BLT_ERROR位拷貝失敗#defineDH_PLAY_UPDATE_ERRORoverlay失敗#defineDH_PLAY_MEMORY_TOOSMALLsmall#defineMAX_DISPLAY_WND個區(qū)域顯示窗口15//只能在播放流時才能使//系統(tǒng)不支持,解碼器只能工作18//解碼器和編碼19//初始化解碼器20//文件太短或碼22//23//顯示24//memorytoo4//同時最多打開4////以正常分辨率顯DISPLAY_NORMAL#define示2//以四分之2//以四分之一分辨率顯示50//最大解碼#defineMAX_DIS_50//最大解碼緩沖幀數(shù)6//最小解碼緩沖幀#define6//最小解碼緩沖幀數(shù)#defineBY_#defineBY_FRAMENUM#defineBY_FRAMETIME2//按時間#defineSOURCE_BUF_MAX#define#defineSOURCE_BUF_MAX#defineSOURCE_BUF_MIN#defineSTREAME_REALTIME#defineSTREAME_REALTIME式#defineSTREAME_FILE1//最流暢方式#defineT#defineT_AUDIO16#defineT_AUDIO8#defineT_UYVY#defineT_YV#defineT_RGB322#definePLAY_CMD_GetTime2#definePLAY_CMD_GetFileRatenePLAYCMDGetMediaInfo/支持DIRECTDRAW;如果不支持,則播放器不#defineSUPPORT_DDRAW1#defineSUPPORT_BLT2definedefinedefinedefine#defineSUPPORT_BLTFOURCCSUPPORT_BLTSHRINKXSUPPORT_BLTSHRINKYSUPPORT_BLTSTRETCHXSUPPORT_BLTSTRETCHY#defineSUPPORT_SSEtypedeftypedefenum__tPicFormats{PicFormat_BMP=0,PicFormat_JPEG,typedeftypedefstruct{eerSampleplesPerSectypedefstruct{longnFilePos;//指定幀在文件中FrameNum}FRAME_POS,*PFRAME_POS;//畫面寬//畫面寬,單位像素。如果是音頻數(shù)據(jù)則為0//畫面高。如果是音頻數(shù)據(jù)則為0//時標(biāo)信息,單位毫秒碼時產(chǎn)生的圖像幀率typedefstruct{dthnHeight;StampnType;nFrameRate;typedefstruct{aBuflongnSize;函函數(shù)名BOOLPLAY_GetFreePort(LONG*plPort)稱述plPort獲取的通道號明函函數(shù)名BOOLPLAY_ReleasePort(LONGlPort)稱述lPort通道號明BOOLBOOLPLAY_OpenFile(LONGnPort,LPSTRsFileName)稱述nPort通道號明sFileName文件名,(文件不能超過4G或小于4K)BOOLBOOLPLAY_CreateFile(LONGnPort,LPSTRsFileName)稱,自動分配通道號述明sFileName函函數(shù)名BOOLPLAY_Play(LONGnPort,HWNDhWnd)稱功能描開始播放。如果已經(jīng)播放,改變當(dāng)前播放狀態(tài)為正常速度播放述明hWndBOOLBOOLPLAY_Stop(LONGnPort)稱述明tBOOLBOOLPLAY_CloseFile(LONGnPort)稱述明函數(shù)名BOOLPLAY_DestoryFile(LONGnPort)稱述nPort通道號明BOOLBOOLPLAY_OpenStream(LONGnPort,PBYTEpFileHeadBuf,DWORDnSize,DWORDnBufPoolSize)打開流接口(類似打開文件)eadBuflSize設(shè)置播放器中存放數(shù)據(jù)流的緩沖區(qū)大小。范圍可調(diào)小該值,如果數(shù)據(jù)傳輸不均勻,可增大該pFileHeadBuf原先用于識別該碼流是否是大華碼流,后改由碼流中的標(biāo)志來識別,所以現(xiàn)在該參數(shù)實際不起作用。這樣做的目的是為方便用戶做二次開發(fā),碼流識別由播放庫內(nèi)部處理,而不需要用戶傳個特定廠家的文件頭稱述明明BOOLBOOLPLAY_CreatStream(LONGnPort,PBYTEpFileHeadBuf,Size述明目前不使用,填NULL置播放器中存放數(shù)據(jù)流的緩沖區(qū)大小。范圍是設(shè)為900*1024,如果數(shù)據(jù)送過來相對均勻,可調(diào)小該值,如果數(shù)據(jù)傳輸不均勻,可增大該值稱BOOLBOOLPLAY_InputData(LONGnPort,PBYTEpBuf,DWORDze輸入從設(shè)備上得到的流數(shù)據(jù);打開流并調(diào)用PLAY_Play之后才明pBuf已滿稱述BOOLBOOLPLAY_CloseStream(LONGnPort)稱關(guān)閉數(shù)據(jù)流(類似關(guān)閉文件)述明函函數(shù)名BOOLPLAY_DestoryStream(LONGnPort)稱功能描關(guān)閉數(shù)據(jù)流,并釋放自動分配的端口號述nPort通道號明BOOLBOOLPLAY_OpenStreamEx(LONGnPort,PBYTEpFileHeadBuf,DWORDnSize,DWORDnBufPoolSize)述nPort通道號明pFileHeadBuf用戶從卡上得到的文件頭數(shù)據(jù)稱設(shè)置播放器中存放數(shù)據(jù)流的緩沖區(qū)大小。范圍是[SOURCE_BUF_MIN,SOURCE_BUF_MAX]eBOOLBOOLPLAY_InputVideoData(LONGnPort,PBYTEpBuf,DWORDnSize)輸入從設(shè)備上得到的視頻流(可以是復(fù)合流,但音頻數(shù)據(jù)會被忽略);打開流之后才能輸入數(shù)據(jù)通道號明緩沖區(qū)地址緩沖區(qū)大小稱述nPortpBufnSize回值BOOLBOOLPLAY_InputAudioData(LONGnPort,PBYTEpBuf,WORDnSize到的音頻流;打開聲音之后才能輸入數(shù)據(jù)述明pBuf稱BOOLBOOLPLAY_CloseStreamEx(LONGnPort)稱述明4.4.3.10流方式歷史數(shù)據(jù)(包括本地文件和遠(yuǎn)程錄像文件)播放簡單示例:PLAY_OpenStream(0,NULL,0,900*1024);PLAY_SetStreamOpenMode(0,STREAME_FILE)//文件模式PLAY_Play(0,hWnd);FILE*fp=fopen(“”,”rb”);BYTEpBuf[4096];while(true){intlen=fread(pBuf,1,4096,fp);{break}}WhilePLAY_InputData(0,pBuf,len)==FALSE){}}PLAY_OpenStream(0,NULL,0,900*1024);PLAYSetStreamOpenMode,STREAME_REALTIME)//實時模式,是實時模式PLAY_Play(0,hWnd);/網(wǎng)絡(luò)流數(shù)據(jù)回調(diào)函數(shù)voidWINAPICallFunction(LONGnPort,LPBYTEpDataBuffer,DWORDDataLength,{PLAY_InputData(nPort,pDataBuffer,DataLength);//網(wǎng)絡(luò)實時流數(shù)據(jù),數(shù)據(jù)只送一次,以保證實時性}BOOLBOOLPLAY_Pause(LONGnPort,DWORDnPause)稱述明SEseBOOLBOOLPLAY_Fast(LONGnPort)稱快速播放。播放速度分為九級,播放速度分別為每秒播放1,3,6,12,25,50,75,100,幀12圖5像。每次調(diào)用播放速度提升一級最多調(diào)用4次,要恢復(fù)正常播放調(diào)用PLAY_Play,從當(dāng)前位明述函函數(shù)名BOOLPLAY_Slow(LONGnPort)稱稱上。每次調(diào)用播放速度降一級;最多調(diào)用4次,nPort通道號明函函數(shù)名BOOLPLAY_OneByOne(LONGnPort)稱述nPort通道號明函函數(shù)名BOOLPLAY_OneByOneBack(LONGnPort)稱功能描單幀回放。每調(diào)用一次倒退一幀。此函數(shù)必須在文件索引生成述之后才能調(diào)用參數(shù)說nPort通道號明返回值成功返回TRUE,不成功返回FALSE稱BOOLBOOLPLAY_BackOne(LONGnPort)稱述明BOOLBOOLPLAY_Back(LONGnPort)述nPort通道號明函函數(shù)名BOOLPLAY_PlaySound(LONGnPort)稱功能描打開聲音;同一時刻只能有一路聲音。如果現(xiàn)在已經(jīng)有聲音打述開,則自動關(guān)閉原來已經(jīng)打開的聲音。注意:默認(rèn)情況下聲音明BOOLBOOLPLAY_StopSound()稱述明無函函數(shù)名BOOLPLAY_PlaySoundShare(LONGnPort)稱述nPort通道號明函數(shù)名BOOLPLAY_StopSoundShare(LONGnPort)稱以獨占方式播放聲音的。注意:在同一個進(jìn)程中,所有通道必須使用相同的方式播放或關(guān)閉聲音參數(shù)說nPort通道號明返回值成功返回TRUE,不成功返回FALSE述BOOLBOOLPLAY_SetVolume(LONGnPort,WORDnVolume)稱述明nVolume量的值,范圍[0,0XFFFF]WORDWORDPLAY_GetVolume(LONGnPort)稱量述明BOOLBOOLPLAY_AdjustWaveAudio(LONGnPort,LONG調(diào)整WAVE波形,可以改變聲音的大小。它和PLAY_SetVolumet明nCoefficientMAX_WAVE_COEF,0是不調(diào)整稱述BOOLBOOLPLAY_SetDecCallBack(LONGnPort,void(CALLBACK*DecCBFun)(longnPort,char*pBuf,longnSize,FRAME_INFO*pFrameInfo,longnReserved1,longnReserved2))設(shè)置回調(diào)函數(shù),替換播放器中的顯示部分,由用戶自己控制顯示,該函數(shù)在PLAY_Play之前調(diào)用,在PLAY_Stop時自動失效,下次調(diào)用PLAY_Play之前需要重新設(shè)置。解碼部分不控制速度,只要用戶從回調(diào)函數(shù)中返回,解碼器就會解碼下一部分放有足夠的了解,否則請慎重使用。通道號明回調(diào)函數(shù)指針,不能為NULLnPortDecCBFun述稱voidvoid(CALLBACK*DecCBFun)(longnPort,char*pBuf,longnSize,FRAME_INFO*pFrameInfo,longnReserved1,longnReserved2解碼后的音視頻數(shù)據(jù)pBuf的長度保留參數(shù)數(shù)明longnHeight;longnStamp;longnType;longnFrameRate;//畫面寬,單位像素。如果是音頻數(shù)據(jù)據(jù)則為0;BOOLBOOLPLAY_SetDecCallBackEx(LONGnPort,void(CALLBACK*DecCBFun)(longnPort,char*pBuf,longnSize,FRAME_INFO*pFrameInfo,longnReserved1,longnReserved2),long明DecCBFun述稱voidvoid(CALLBACK*DecCBFun)(longnPort,char*pBuf,longnSize,FRAME_INFO*pFrameInfo,longnReserved1,long明pBuf數(shù)函函數(shù)名BOOLPLAY_SetVisibleDecCallBack(LONGnPort,void稱稱((CALLBACK*DecCBFun)(longnPort,char*pBuf,longnSize,FRAME_INFO*pFrameInfo,longnReserved1,longlongnUser與PLAY_SetDecCallBackEx基本相同,不同的是解碼回調(diào)的同ortDecCBFunser用戶自定義回調(diào)參數(shù)稱述明BOOLBOOLPLAY_SetDecCBStream(LONGnPort,DWORDnStream)述明ream2ckBOOLBOOLPLAY_SetDisplayCallBack(LONGnPort,void(CALLBACK*DisplayCBFun)(longnPort,char*pBuf,longnSize,longnWidth,longnHeight,longnStamp,longnType,longavedlongnUser設(shè)置視頻圖像數(shù)據(jù)回調(diào),可用作抓圖。如果要停止回調(diào),可以述把回調(diào)函數(shù)指針DisplayCBFun設(shè)為NULL。一旦設(shè)置回調(diào)函數(shù),則一直有效,直到程序退出。該函數(shù)可以在任何時候調(diào)用nPort通道號明DisplayCBFun視頻圖像數(shù)據(jù)回調(diào)函數(shù)??梢訳LL;nUser用戶自定義數(shù)據(jù)返回值成功返回TRUE,不成功返回FALSE回調(diào)函數(shù)參數(shù)說明:voidvoid(CALLBACK*DisplayCBFun)(longnPort,char*pBuf,longnSize,longnWidth,longnHeight,longnStamp,longnType,longnReceaved)nPort通道號明pBuf返回圖像數(shù)據(jù)nSize返回圖像數(shù)據(jù)大小nWidth畫面寬,單位像素nHeight畫面高nStamp時標(biāo)信息,單位毫秒nReceaved保留數(shù)函函數(shù)名BOOLPLAY_SetAudioCallBack(LONGnPort,void(CALLBACK**funAudio)(longnPort,char*pAudioBuf,longnSize,稱述明voidvoidCALLBACKFunAudio(longnPort,char*pAudioBuf,nPort通道號nSize數(shù)據(jù)長度nStampms每個采樣點16位表示用戶自定義數(shù)據(jù)數(shù)明音頻類型T_AUDIO16,采樣率8000,單聲道,nUserBOOLBOOLPLAY_SetVerifyCallBack(LONGnPort,DWORDnBeginTime,DWORDnEndTime,void(CALLBACK*funVerify)(longnPort,FRAME_POS*pFilePos,DWORDbIsVideo,DWORDnUser),DWORDnUser)稱注冊一個回調(diào)函數(shù),校驗數(shù)據(jù)是否被修改,實現(xiàn)水印功能。注冊一個回調(diào)函數(shù),校驗數(shù)據(jù)是否被修改,實現(xiàn)水印功能。該接口暫未實現(xiàn)nPortnBeginTimenEndTimefunVerifynUser通道號開始時間結(jié)束時間水印回調(diào)函數(shù)指針用戶自定義數(shù)據(jù)成功返回TRUE,不成功返回FALSE述明返回值voidvoidCALLBACKfunVerify(longnPort,FRAME_POS*pFilePos,DWORDbIsVideo,DWORDnUser)通道號明幀信息是否是視頻數(shù)據(jù)用戶自定義數(shù)據(jù)nPortpFilePosbIsVideonUser數(shù)BOOLBOOLPLAY_SetDemuxCallBack(LONGnPort,void(CALLBACK*DemuxCBFun)(longnPort,char*pBuf,longnSize,void*pParam,longnReserved,longnUser),longnUser)的數(shù)據(jù)回調(diào)述明DemuxCBFun稱nUsernUser用戶自定義數(shù)據(jù)voidvoidCALLBACKDemuxCBFun(longlongnSize,void*pParam,明pBufnPortchar*pBuf,longnReserved,long數(shù)BOOLBOOLPLAY_SetWaterMarkCallBack(LONGnPort,GetWaterMarkInfoCallbackFuncpFunc,longnUser)述明pFunc回調(diào)函數(shù)稱intint(__stdcall*GetWaterMarkInfoCallbackFunc)(char*longlen,longreallen,longreserved,明keylongkey,數(shù)BOOLBOOLPLAY_SetEncChangeMsg(LONGnPort,HWNDhWnd,UINT發(fā)送的消息用戶輸入的消息,當(dāng)解碼時編碼格式發(fā)生改變hWnd這個消息稱述明BOOLBOOLPLAY_SetFileEndMsg(LONGnPort,HWNDhWnd,UINT述明hWndhWnd窗口過程中收到這個消息用戶輸入的消息,當(dāng)播放到文件結(jié)束時用戶在稱BOOLBOOLPLAY_SetSourceBufCallBack(LONGnPort,DWORDnThreShold,void(CALLBACK*SourceBufCallBack)(longnPort,DWORDnBufSize,DWORDdwUser,void*pResvered),DWORDdwUser,void*pReserved)數(shù)據(jù)小于等于閥值時的回調(diào)函數(shù)指針述明nThreSholdllB稱稱pReservedpReserved保留voidvoidCALLBACKSourceBufCallBack(longnPort,DWORDred明緩沖中的數(shù)據(jù)長度數(shù)agBOOLBOOLPLAY_ResetSourceBufFlag(LONGnPort)功能描重置回調(diào)標(biāo)志位為有效狀態(tài)。流模式下源緩沖到達(dá)閥值時(如果用戶設(shè)置了回調(diào)函數(shù))不一定會回調(diào),用戶需要重置回調(diào)標(biāo)志位后才能回調(diào)。而且每次回調(diào)后標(biāo)志位都被設(shè)為無效,用戶可以在適當(dāng)?shù)臅r候重置回調(diào)標(biāo)志,這個接口的主要目的是防止重復(fù)回調(diào)(數(shù)據(jù)在閥值附近擺動因為用戶輸入數(shù)據(jù)時,播放器也在讀走數(shù)據(jù))。初始化狀態(tài)下,回調(diào)標(biāo)志位是有效的。參數(shù)說nPort通道號明返回值成功返回TRUE,不成功返回FALSE述函數(shù)名BOOLPLAY_SetEncTypeChangeCallBack(LONGnPort,稱voidvoid(CALLBACK*funEncChange)(longnPort,longnUser),設(shè)置解碼時圖象格式發(fā)生改變通知用戶的回調(diào)函數(shù);打開文件nPortfunEncChangenUser通道號用戶自定義數(shù)據(jù)成功返回TRUE,不成功返回FALSE稱述明返回值voidvoid(CALLBACK*funEncChange)(longnPort,longnUser)數(shù)明dwUser通道號用戶數(shù)據(jù)nPortckBOOLBOOLPLAY_SetFileRefCallBack(LONGnPort,void(CALLBACK*pFileRefDone)(DWORDnPort,DWORDnUser),DWORDnUser)功能描設(shè)置回調(diào)函數(shù)指針,文件索引建立后回調(diào)。為了能在文件中準(zhǔn)確快速的定位,我們在文件打開時生成文件索引。這個過程耗時比較長,大約每秒處理40M左右的數(shù)據(jù),主要是因為從硬盤讀數(shù)據(jù)比較慢。建立索引的過程是在后臺完成,需要使用索引的函數(shù)要等待這個過程結(jié)束,而其他接口不會受到影響。參數(shù)說nPort通道號明pFileRefDone回調(diào)函數(shù)指針述nUsernUser用戶自定義數(shù)據(jù)FileRefDoneDWORDnPortDWORDnUser數(shù)明dwUserBOOLBOOLPLAY_SetFileRefCallBackEx(LONGnPort,(CALLBACK*pFileRefDoneEx)(DWORDnPort,bIndexCreated,DWORDnUser),DWORDnUser)PLAY_SetFileRefCallBack的擴展接口,可以返回索引的創(chuàng)建nPort通道號明pFileRefDoneE回調(diào)函數(shù)指針xnUser用戶自定義數(shù)據(jù)成功返回TRUE,不成功返回FALSE述稱返回值voidvoidFileRefDoneEx(DWORDnPort,BOOLbIndexCreated,nPort通道號明bIndexCreated索引創(chuàng)建標(biāo)志,TRUE--索引創(chuàng)建成功,F(xiàn)ALSE-數(shù)-失敗-失敗kBOOLBOOLCALLMETHODPLAY_SetFileEndCallBack(LONGnPort,void(CALLBACK*pFileEnd)(DWORDnPort,DWORDnUser),DWORDnUser述明pFileEnd稱voidvoidFileEnd(DWORDnPort,DWORDnUser)數(shù)明dwUser數(shù)名BOOLPLAY_SetRefValue(LONGnPort,BYTE*pBuffer,DWORDnSize)功能描設(shè)置文件索引。如果已經(jīng)有了文件索引信息,可以不再調(diào)用生成索引的回調(diào)函數(shù)(),直接輸入索引信息。注:索引信息及其明pBuffer述BOOLBOOLPLAY_GetRefValue(LONGnPort,BYTE*pBuffer,DWORD*pSize)獲取文件索引信息,以便下次打開同一個文件時直接使用這個信息。必須在索引建成后才能獲得信息通道號明索引信息出,輸入pBuffer的大小,輸出索引信注:可以在第一次指定需要的緩沖區(qū)大小。然后分配足夠的緩沖,再稱述nPortpBuffernSizeum函數(shù)名BOOLPLAY_SetCurrentFrameNum(LONGnPort,DWORD稱設(shè)設(shè)置當(dāng)前播放播放位置到指定幀號,根據(jù)幀號來定位播放位置。此函數(shù)必須在文件索引生成之后才能調(diào)用通道號幀序號成功返回TRUE,不成功返回FALSE述明返回值nPortnFrameNumBOOLBOOLPLAY_SetPlayedTimeEx(LONGnPort,DWORDnTime)稱根據(jù)時間設(shè)置文件播放位置,此接口比PLAY_SetPlayPos費時,但如果用時間來控制進(jìn)度條(與PLAY_GetPlayedTime(Ex)配合使用),那么可以使進(jìn)度條平滑滾動明設(shè)置文件播放位置到指定時間。單位毫秒述ortimeBOOLBOOLPLAY_SetPlayPos(LONGnPort,floatfRelativePos)設(shè)置文件播放指針的相對位置(百分比)述nPort通道號明fRelativePos范圍0-100%floatfloatPLAY_GetPlayPos(LONGnPort)稱文件播放指針的相對位置述明BOOLBOOLPLAY_SetColor(LONGnPort,DWORDnRegionNum,intnBrightness,intnContrast,intnSaturation,intnHue)置圖像的視頻參數(shù),即時起作用述明nRegionNum果只有一個顯示區(qū)域(通常情況)設(shè)為0返回值顯示區(qū)域,參考PLAY_SetDisplayRegi;on如nBrightnessnContrastnSaturationnHue稱成功返回TRUE,不成功返回FALSE稱BOOLBOOLPLAY_SetDisplayBuf(LONGnPort,DWORDnNum)稱設(shè)置播放緩沖區(qū)(即解碼后的圖像緩沖區(qū))大?。贿@個緩沖區(qū)比較重要,他直接影響播放的流暢性和延時性。在一定范圍內(nèi)緩沖越大越流暢,同時延時越大。在播放文件時用戶最好可以考慮開大緩沖(如果內(nèi)存足夠大),我們的默認(rèn)值是15(幀),在25幀/秒的情況下即秒的數(shù)據(jù)。如果用戶追求最大延時最小,可以考慮試當(dāng)減小這個值nPort通道號明nNum數(shù)。范圍:352*288圖像的所需內(nèi)存最小值是352*288*3/2大約150K。最大值是352*288*4MIN_DIS_FRAMES播放緩沖最小值MAX_DIS_FRAMES播放緩沖最大值述BOOLBOOLPLAY_SetDisplayType(LONGnPort,LONGnType)設(shè)置顯示的模式,在小畫面顯示時,采用DISPLAY_QUARTER可以減小顯卡工作量,從而支持更多路顯示,但畫面顯示質(zhì)量有下降。在正常和大畫面顯示時應(yīng)該使用DISPLAY_NORMALnPort通道號述稱兩兩種模式:DISPLAY_NORMAL或DISPLAY_QUARTERDISPLAY_NORMAL正常送顯卡顯示DISPLAY_QUARTER1/4分辨率數(shù)據(jù)送顯卡顯示返回值成功返回TRUE,不成功返回FALSEleBOOLBOOLPLAY_VerticalSyncEnable(LONGnPort,BOOLbEnable)稱此接口需在PLAY_Play之后調(diào)用,重新播放時需重新設(shè)置。在播放動態(tài)圖像出現(xiàn)斷層時,可以使用此接口打開垂直同步功能,但CPU占用率會明顯提高通道號明TRUEFALSE成功返回TRUE,不成功返回FALSE打開垂直同步關(guān)閉垂直同步nPortbEnable述返回值BOOLBOOLPLAY_AdjustFluency(LONGnPort,intlevel)功能描調(diào)整圖象播放的流暢性。流暢性和實時性是一對平衡體。當(dāng)述整圖象的等級(0-6)實時監(jiān)視時,使用了新的幀率控制方式,目前該函數(shù)無效明明BOOLBOOLPLAY_ChangeRate(LONGnPort,intrate)稱述明rateBOOLBOOLPLAY_OpenAudioRecord(pCallFunctionnProc,LONGnBitsPerSample,LONGnSamplesPerSec,longnLength,longnReserved,LONGnUser)述明表示每個采樣所需要的位數(shù)eplesPerSesPerSampl稱cvoidpCallFunction(LPBYTEvoidpCallFunction(LPBYTEerpDataBuffer,DWORD數(shù)明函數(shù)名BOOLPLAY_CloseAudioRecord()稱采集功能述明函數(shù)名BOOLPLAY_SetOverlayMode(LONGnPort,BOOLbOverlay,FcolorKey述述OVERLAY表面處于活動狀態(tài),如果此時系統(tǒng)中已經(jīng)有程序使用了OVERLAY,那么播放器就不能再創(chuàng)建OVERLAY表面,它將自動改OffScreen面,并不返回FALSE。一些常用的播放器,以及我們卡的預(yù)覽都可能使用了OVERLAY表面。同樣,如果播放器使用了OVERLAY表面,那么,其他的程序?qū)⒉荒苁褂肙VERLAY表面,特別注意,我們的卡在預(yù)覽時可能也要使用OVERLAY(用戶可設(shè)置),如果先打開播放器(并且使用了OVERLAY),再啟動使用OVERLAY模式的優(yōu)點是:大部份的顯卡都支持OVERLAY,顯卡)使用OVERLAY模式(OVERLAY模式下的縮放和顏色轉(zhuǎn)換由顯卡支持),可以大大減小CPU利用率并提高畫面質(zhì)量(相對于軟件縮放和顏色轉(zhuǎn)換)。缺點是:只能有一路播放器使用。明TRUE表示將首先嘗試使用OVERLAY模其他模式FALSE不進(jìn)行OVERLAY模式的嘗試colorKey用戶設(shè)置的透明色,透明色相當(dāng)于一層透視膜,顯示的畫面只能穿過這種顏色,而其他的顏色將擋住顯示的畫面。用戶應(yīng)該在顯示窗口到顯示畫面。一是一個雙字節(jié)值0x00rrggbb,最高字節(jié)為0,后rgb的值返回值成功返回TRUE,不成功返回FALSE稱述明返回值BOOLPLAY_SetPicQuality(LONGnPort,BOOLbHighQuality)設(shè)置圖像質(zhì)量,當(dāng)設(shè)置成高質(zhì)量時畫面效果好,但CPU利用率高。在支持多路播放時,可以設(shè)為低質(zhì)量,以降低CPU利用率;當(dāng)某路放大播放時將該路設(shè)置成高質(zhì)量,以達(dá)到好的畫面nPortbHighQuality音頻采集數(shù)據(jù)回調(diào)指針等于1時圖像高質(zhì)量,等于0時低質(zhì)量(默認(rèn)成功返回TRUE,不成功返回FALSEBOOLBOOLPLAY_SetStreamOpenMode(LONGnPort,DWORDnMode)設(shè)置流播放的模式。必須在播放之前設(shè)置STREAME_REALTIME(默認(rèn))STREAME_FILE模式實時模式,適合播放網(wǎng)絡(luò)實時數(shù)據(jù),解碼器會稱述明文件文件模式,適合用戶把文件數(shù)據(jù)用流方式輸注意:當(dāng)PLAY_InputData()返回FALSE時,用戶要等一下重新輸入;返回值成功返回TRUE,不成功返回FALSEBOOLBOOLPLAY_SetTimerType(LONGnPort,DWORDnTimerType,DWORDnReserved)述明TIMER_1多媒體定時器,精度高,但不能超過TIMER_2線程定時器,精度略低,無數(shù)量限制稱nTimerTypenReservedintintPLAY_GetCaps()稱測試播放器需要的一些系統(tǒng)功能述無稱明明作顯卡BLT支持顏色轉(zhuǎn)換;如果不支持,播放器會使用軟件方式作RGB轉(zhuǎn)換SUPPORT_BLTSHRINKXYBOOLBOOLPLAY_GetColor(LONGnPort,DWORDnRegionNum,int*pBrightness,int*pContrast,int*pSaturation,intenBrightnessnContrastnSaturationnHue顯示區(qū)域,參考PLAY_SetDisplayRegi;on如果只有一個顯示區(qū)域(通常情況)設(shè)為0色調(diào),默認(rèn)64;范圍0-128成功返回TRUE,不成功返回FALSE述明返回值DWORDDWORDPLAY_GetDisplayBuf(LONGnPort)稱放緩沖區(qū)最大緩沖的幀數(shù)述明所獲得的播放緩沖區(qū)最大緩沖幀數(shù)longlongPLAY_GetDisplayType(LONGnPort)稱顯示模式述nPort通道號明返回值DISPLAY_NORMAL或DISPLAY_QUARTERlonglongPLAY_GetDisplayType(LONGnPort)稱述明函函數(shù)名LONGPLAY_GetOverlayMode(LONGnPort)稱述nPort通道號明y函函數(shù)名BOOLPLAY_GetPictureQuality(LONG稱bHighQuality)前圖像質(zhì)量nPort,BOOL*述述明低質(zhì)量lityeLONGLONGPLAY_GetStreamOpenMode(LONGnPort)稱述明MEFILEBOOLBOOLPLAY_GetTimerType(LONGnPort,DWORD*pTimerType,DWORD*pReserved)述明pTimerTypepReserved稱稱述明DWORDPLAY_GetBufferValue(LONGnPort,DWORDnBufType)獲取播放器中的緩沖區(qū)大小(幀數(shù)或者byte)。這個接口可以幫助用戶了解緩沖區(qū)中的數(shù)據(jù),從而在網(wǎng)絡(luò)延時方面有所估計ype根據(jù)不同參數(shù)返回緩沖區(qū)值,源緩沖區(qū)返回byte,解碼后緩沖函數(shù)名DWORDPLAY_GetCurrentFrameNum(LONGnPort)稱述的幀數(shù)。如果文件播放位置不被改變,那么這兩個函數(shù)的返回值應(yīng)該非常接近,除非碼流丟失數(shù)據(jù)參數(shù)說nPort通道號明返回值當(dāng)前播放的幀序號函函數(shù)名DWORDPLAY_GetCurrentFrameRate(LONGnPort)稱描得到當(dāng)前碼流中編碼時的幀率述nPort通道號明時的幀率值函數(shù)名DWORDPLAY_GetFileHeadLength()稱功能描得到當(dāng)前版本播放器能播放的文件的文件頭長度述明返回值此版本播放器對應(yīng)的文件頭的長度DWORDDWORDPLAY_GetFileTime(LONGnPort)稱得到文件總的時間長度,單位秒述明長度值函函數(shù)名DWORDPLAY_GetFileTotalFrames(LONGnPort)稱件中的總幀數(shù)述nPort通道號明BOOLBOOLPLAY_GetKeyFramePos(LONGnPort,DWORDnValue,DWORDnType,PFRAME_POSpFramePos)查找指定位置之前的關(guān)鍵幀位置信息。圖像解碼必須從關(guān)鍵幀開始,如果用戶保存的文件不是從關(guān)鍵幀開始的,那么倒下一個關(guān)鍵幀之前的數(shù)據(jù)會被忽略。如果用戶要截取文件中的一段數(shù)據(jù),則應(yīng)該考慮從關(guān)鍵幀開始截取。結(jié)束位置則關(guān)系不大,nPortnValuepFramePos通道號當(dāng)前位置,可以是時間或幀號,類型由nType如果nType是BY_FRAMENUM,則nValu表e示幀如果nType是BY_FRAMTIME,則nValu表e示時間,單位ms查找到的關(guān)鍵幀的文件位置信息結(jié)構(gòu)指針。typedefstruct{longnFilePo;s/件位置;稱述明}FRAME_POS,*PFRAME_POS//幀時標(biāo)(ms);BOOLBOOLPLAY_GetNextKeyFramePos(LONGnPort,DWORDnValue,DWORDnType,PFRAME_POSpFramePos)置當(dāng)前位置,可以是時間或幀號,類型由nType如果nType是BY_FRAMENUM,則nValu表e示幀如果nType是BY_FRAMTIME,則nValu表e示時間,單位ms查找到的關(guān)鍵幀的文件位置信息結(jié)構(gòu)指針。typedefstruct{pFramePoslongnFilePo;slongnFrameNu;mlongnFrameTim;e/件位置;//幀序號;ms稱述明}}FRAME_POS,*PFRAME_POS稱述明返回值BOOLPLAY_GetPictureSize(LONGnPort,LONG*pWidth,LONGht獲得碼流中原始圖像的大小,根據(jù)此大小來設(shè)置顯示窗口的區(qū)域,可以不用顯卡做縮放工作,對于那些不支持硬件縮放的顯卡來說非常有用nPortpWidthpHeight通道號原始圖像的寬。在PAL制CIF格式下是352原始圖像的高。在PAL制CIF格式下是288成功返回TRUE,不成功返回FALSEDWORDDWORDPLAY_GetPlayedFrames(LONGnPort)稱已經(jīng)解碼的視頻幀數(shù)述明函函數(shù)名DWORDPLAY_GetPlayedTime(LONGnPort)稱位秒述nPort通道號明間函數(shù)名DWORDPLAY_GetPlayedTimeEx(LONGnPort)稱功能描得到文件當(dāng)前播放的時間,單位毫秒述nPort通道號明文件當(dāng)前播放的時間oBOOLBOOLPLAY_QueryInfo(LONGnPort,intcmdType,char*lenPLAY_CMD_GetTimems稱述明獲取時間信息,單flenreturnlenPLAY_CMD_GetFileRate獲取幀率信息PLAY_CMD_GetMediaInfo獲取媒體信息,信MEDIAINFO的緩沖息的有效數(shù)據(jù)長度MEDIA_INFOtMediaInfo;PLAY_QueryInfo(0,PLAY_CMD_GetMediaInfo,(char*)&tMediaInfo,sizeof(MEDIA_INFO),&len);函數(shù)名DWORDPLAY_GetSourceBufferRemain(LONGnPort)稱能描獲得流播放模式下源緩沖剩余數(shù)據(jù)述nPort通道號明返回值當(dāng)前源緩沖的大小(BYTE)函數(shù)名BOOLPLAY_GetRealFrameBitRate(LONGnPort,double*述明pBitRate稱BOOLBOOLPLAY_InitDDrawDevice()稱顯示設(shè)備,多顯卡使能述明無cevoidvoidPLAY_ReleaseDDrawDevice()稱釋放枚舉顯示設(shè)備的過程中分配的資源述明無無函函數(shù)名BOOLPLAY_SetDDrawDevice(LONGnPort,DWORDnDeviceNum)稱述明函函數(shù)名BOOLPLAY_SetDDrawDeviceEx(LONGnPort,DWORDiceNum述明foBOOLBOOLPLAY_GetDDrawDeviceInfo(DWORDnDeviceNum,LPSTRlpDriverDescription,DWORDnDespLen,LPSTRlpDriverNameDWORDnNameLenHMONITOR*hhMonitor)監(jiān)視器信息述參數(shù)說nDeviceNum[in]顯示設(shè)備的設(shè)備號,如果是0,則表示稱lpDriverNamenNameLenhhMonitor[in]表示lpDriverDescript已in配空間的大小,單位byte[out]顯示設(shè)備的設(shè)備名[in]表示lpDriverNam分配空間的大小,單位byte[out]顯示設(shè)備使用的監(jiān)視器句柄,通過WindowsAPI函數(shù)GetMonitorInfo,可以得到詳細(xì)信息,供用戶定位窗口位置成功返回TRUE,不成功返回FALSE明返回值DWORDDWORDPLAY_GetDDrawDeviceTotalNums()無系統(tǒng)中只有主顯示設(shè)備1表示系統(tǒng)中安裝了多塊顯卡,但只有一塊顯卡與Windows桌面綁定其他值表示系統(tǒng)中與桌面綁定的顯卡數(shù)目。在多顯卡的系統(tǒng)中可以通過設(shè)置顯示屬性,而指定任意一塊顯卡稱述明稱述明補充說明:目前的多顯卡顯示方式和上述接口函數(shù)有所出入。不需要由用戶去指定用哪BOOLBOOLPLAY_ConvertToBmpFile(char*pBuf,longnSize,longnWidth,longnHeight,longnType,char*sFileName)不要調(diào)用明圖像數(shù)據(jù)大小稱述NameBMPeBOOLBOOLPLAY_ConvertToJpegFile(char*pYUVBuf,longnWidth,longnHeight,intYUVtype,intquality,charsFileName述明圖像寬度YUV型,如T_YV12,T_UYVY好以jpg作為文件擴展名VBufhhtVtype稱函函數(shù)名BOOLPLAY_CatchPic(LONGnPort,char*sFileName)稱功能描抓圖,將圖片保存為指定的文件。設(shè)置的視頻數(shù)據(jù)回調(diào)函數(shù),只有在有視頻數(shù)據(jù)解碼出來時才調(diào)用,并由用戶處理視頻數(shù)據(jù)(如抓圖),如果不斷有解碼的數(shù)據(jù),就不斷調(diào)用這個回調(diào)函數(shù)。而PLAY_CatchPic一次只抓一幅圖,并能在暫停和單幀播放時實現(xiàn)抓圖。建議:如果用戶想實現(xiàn)抓圖(一次抓一幅圖),調(diào)用PLAY_CatchPic,而如果想得到一段時間內(nèi)的視頻述明BOOLBOOLPLAY_CatchPicEx(LONGnPort,char*sFileName,tPicFormatsePicfomat)明sFileName稱述BOOLBOOLPLAY_CatchResizePic(LONGnPort,char*sFileName,LONGlTargetWidth,LONGlTargetHeight,tPicFormats述明sFileName稱PicFomatsBOOLBOOLPLAY_GetPicBMP(LONGnPort,PBYTEpBmpBuf,DWORDdwBufSizeDWORDpBmpSize述明pBmpBufsizeof(BITM

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論