/ ** 播放应用程序的头文件。 此文件是头文件,用于定义Playback应用程序的API和数据类型。 @file PlaybackTsk.h @ingroup mIAPPPlay @note什么都没有。 版权所有Novatek Microelectronics Corp. .保留所有权利。 * / #ifndef _PLAYBACKAPI_H #define _PLAYBACKAPI_H #include“SysKer.h” #include“ExifDef.h” #include“JpgHeader.h” #include“GxImage.h” / ** @addtogroup mIAPPPlay * / // @ { // ------------------------------------------------ ------------------------------ //定义 // ------------------------------------------------ ------------------------------ / ** @name播放文件格式 文件的格式和属性。 @note对于_PLAY_OBJ :: uiPlayFileFmt。 * / // @ { #define PBFMT_UNKNOWN 0x00000000 /// <文件格式:未知 #define PBFMT_JPG 0x00000001 /// <文件格式:JPEG #define PBFMT_WAV 0x00000002 /// <文件格式:WAV #define PBFMT_AVI 0x00000004 /// <文件格式:AVI #define PBFMT_ASF 0x00000008 /// <文件格式:ASF #define PBFMT_RAW 0x00000010 /// <文件格式:RAW #define PBFMT_JPGMEMO 0x00000010 /// <文件属性:带语音备忘录的JPEG #define PBFMT_MP4 0x00000020 /// <文件格式:MP4 #define PBFMT_READONLY 0x00000040 /// <文件属性:只读 #define PBFMT_MPG 0x00000080 /// <文件格式:MPEG #define PBFMT_MOVMJPG 0x00000100 /// <文件格式:带动态JPEG的MOV #define PBFMT_MPO 0x00000200 /// <文件格式:MPO #define PB_SUPPORT_FMT(PBFMT_JPG | PBFMT_WAV | PBFMT_AVI | PBFMT_MOVMJPG | PBFMT_ASF | PBFMT_MPG | PBFMT_MPO)/// <播放的默认文件格式 // @} / ** @name播放图像方向 #note为#PBPRMID_ROTATE_DIR。 * / // @ { #define PLAY_ROTATE_DIR_UNKNOWN 0xFF /// <旋转方向:初始化(未知) #define PLAY_ROTATE_DIR_0 PLAY_ROTATE_DIR_UNKNOWN #define PLAY_ROTATE_DIR_90 0x00 /// <旋转方向:90度 #define PLAY_ROTATE_DIR_180 0x01 /// <旋转方向:180度 #define PLAY_ROTATE_DIR_270 0x02 /// <旋转方向:270度 #define PLAY_ROTATE_DIR_HOR 0x03 /// <旋转方向:水平 #define PLAY_ROTATE_DIR_VER 0x04 /// <旋转方向:垂直 // @} / ** @name播放照片显示方向 #note为#PBPRMID_DISP_DIRECTION。 * / // @ { #define PB_DISPDIR_HORIZONTAL 0x01 /// <将显示方向设置为水平 #define PB_DISPDIR_VERTICAL 0x02 /// <将显示方向设置为垂直 // @} / ** @name播放功能启用标志 #note为#PBPRMID_EN_FLAGS。 * / // @ { #define PB_ENABLE_KEEP_ASPECT_RATIO 0x00000001 /// <保持宽高比(letterboxing或邮箱) #define PB_ENABLE_SHOW_BACKGROUND_IN_THUMB 0x00000002 /// <以缩略图模式显示背景 #define PB_ENABLE_SEARCH_FILE_WITHOUT_DCF 0x00000004 /// <没有DCF的搜索文件 #define PB_ENABLE_SHOW_BG_IN_MOVIE 0x00000008 /// <在电影文件中显示背景 #define PB_ENABLE_SHOW_BG_IN_BADFILE 0x00000010 /// <在Bad文件中显示背景 #define PB_ENABLE_PLAY_FILE_BY_DATE 0x00000020 /// <按日期播放文件 #define PB_ENABLE_THUMB_WITH_DIFF_FOLDER 0x00000040 /// <带有diff文件夹的缩略图 #define PB_ENABLE_TV_PLUGIN 0x00000080 /// <代表电视插入 #define PB_ENABLE_SPEEDUP_SCREENNAIL 0x00000100 /// <在主图像后附加代表屏幕 // @} / ** @name播放缩略图模式显示方法 #note为#PBPRMID_THUMB_SHOW_METHOD。 * / // @ { #define PB_SHOW_THUMBNAIL_ONE_BY_ONE 0x00000001 /// <单一显示缩略图 #define PB_SHOW_THUMBNAIL_IN_THE_SAME_TIME 0x00000002 /// <同时显示缩略图 // @} / ** @name播放任务状态 #note为#PBPRMID_PLAYBACK_STATUS。 * / // @ { #define PB_STA_UNKNOWN 0x00000000 /// <未知 #define PB_STA_NOIMAGE 0x00000001 /// <无图像 #define PB_STA_ERR_FILE 0x00000002 /// <错误文件 #define PB_STA_ERR_DECODE 0x00000004 /// <解码错误 #define PB_STA_ERR_WRITE 0x00000008 /// <写入错误 #define PB_STA_DONE 0x00000010 /// <完成 #define PB_STA_BUSY 0x00000020 /// <忙碌 #define PB_STA_STANDBY 0x00000040 /// <待机 #define PB_STA_INITFAIL 0x00000080 /// <Init失败 #define PB_STA_ERR_TASK 0x00000100 /// <任务无法启动 // @} / ** @name播放单视图命令 @note对于_PLAY_SINGLE_OBJ :: PlayCommand。 * / // @ { #define PB_SINGLE_CURR 0x01 /// <播放当前图像 #define PB_SINGLE_NEXT 0x02 /// <播放下一张图像 #define PB_SINGLE_PREV 0x04 /// <播放上一张图像 #define PB_SINGLE_PRIMARY 0x08 /// <播放屏幕图像或主图像 #define PB_SINGLE_THUMB 0x40 /// <仅播放缩略图 #define PB_SINGLE_NO_HIDDEN 0x80 /// <仅播放主图像 // @} / ** @name Playback缩略图查看命令 @note对于_PLAY_BROWSER_OBJ :: BrowserCommand。 * / // @ { #define PB_BROWSER_CURR 0x01 /// <浏览当前缩略图页面 #define PB_BROWSER_NEXT 0x02 /// <浏览下一个缩略图页面 #define PB_BROWSER_PREV 0x04 /// <浏览上一个缩略图页面 #define PB_BROWSER_THUMB 0x40 /// <仅浏览缩略图 // @} / ** @name播放缩放命令 @note用于PB_PlayZoomMode(),PB_PlayZoomPanMode()。 * / // @ { #define PLAYZOOM_IN 0x01 /// <放大 #define PLAYZOOM_OUT 0x02 /// <缩小 #define PLAYZOOM_UP 0x04 /// <缩放 - 向上滚动 #define PLAYZOOM_DOWN 0x08 /// <缩放 - 向下滚动 #define PLAYZOOM_LEFT 0x10 /// <缩放 - 向左滚动 #define PLAYZOOM_RIGHT 0x20 /// <缩放 - 向右滚动 #define PLAYZOOM_USER 0x40 /// <用户定义的缩放命令 // @} / ** @name播放模式 @note用于PBPRMID_PLAYBACK_MODE。 * / // @ { #define PLAYMODE_THUMB 9 /// <缩略图模式 #define PLAYMODE_PRIMARY 10 /// <单视图模式:JPEG #define PLAYMODE_AVI 11 /// <单视图模式:AVI #define PLAYMODE_ROTATE 12 /// <Rotae display #define PLAYMODE_WAV 13 /// <单视图模式:WAV #define PLAYMODE_ASF 14 /// <单一视图模式:ASF #define PLAYMODE_MPG 16 /// <单一视图模式:MPEG #define PLAYMODE_MOVMJPG 17 /// <单视图模式:Motion JPEG #define PLAYMODE_ONLYTHUMB 33 /// <首先解码始终只解码缩略图 #define PLAYMODE_PICBRIDGE 55 /// <图片桥模式 #define PLAYMODE_USERJPGOUT 77 /// <用户JPEG模式 #define PLAYMODE_UNKNOWN 99 /// <开始播放时的初始模式 // @} // ------------------------------------------------ ------------------------------ //枚举 // ------------------------------------------------ ------------------------------ / ** 播放显示video1 / video2中的特定文件 @note对于_PLAY_SPECFILE_OBJ :: PlayFileVideo。 * / typedef enum { PLAY_SPEC_FILE_IN_VIDEO_1,/// <0,在video1中显示 PLAY_SPEC_FILE_IN_VIDEO_2 /// <1,在video2中显示 } PB_SPEC_VDO; / ** 播放用/ wo清除缓冲区显示特定文件 @note对于_PLAY_SPECFILE_OBJ :: PlayFileClearBuf。 * / typedef enum { PLAY_SPEC_FILE_WITH_CLEAR_BUF,/// <0,清除缓冲区 PLAY_SPEC_FILE_WITH_NOT_CLEAR_BUF /// <1,不清除缓冲区 } PB_SPEC_CLR; / ** 播放参数枚举 @note对于PB_GetParam(),PB_SetParam()。 * / typedef enum _PB_PRMID { PBPRMID_FILE_ATTR_LOCK = 0x01,/// <文件属性:只读 PBPRMID_JPEG_WITH_VOICE = 0x02,/// <带语音备忘录的JPEG PBPRMID_PLAYBACK_MODE = 0x10,/// <当前播放模式 PBPRMID_PLAYBACK_STATUS = 0x11,/// <播放任务的当前状态 PBPRMID_PLAYBACK_OBJ = 0x12,/// <指向回放对象设置结构的指针 PBPRMID_INFO_IMG = 0x13,/// <指向当前图像配置结构的指针 PBPRMID_INFO_VDO = 0x14,/// <指向当前视频配置结构的指针 PBPRMID_ROTATE_DIR = 0x15,/// <当前图像旋转方向 PBPRMID_MAX_PANELSZ = 0x16,/// <播放的最大面板大小 PBPRMID_EN_FLAGS = 0x17,/// <功能启用播放标志 PBPRMID_BG_COLOR = 0x18,/// <默认背景颜色 PBPRMID_THUMB_CURR_IDX = 0x20,/// <当前缩略图页面中当前浏览的文件索引 PBPRMID_THUMB_CURR_NUM = 0x21,/// <当前缩略图页面中当前解码的拇指文件编号 PBPRMID_THUMB_FMT_ARRAY = 0x22,/// <指向当前缩略图页面的文件格式数组的指针 PBPRMID_THUMB_DEC_ARRAY = 0x23,/// <指向当前缩略图页面的解码结果数组的指针 PBPRMID_THUMB_SEQ_ARRAY = 0x24,/// <指向当前缩略图页面的文件序列ID数组的指针 PBPRMID_THUMB_VDO_LTH_ARRAY = 0x25,/// <指向当前缩略图页面的视频时间数组的指针 PBPRMID_THUMB_SHOW_METHOD = 0x26,/// <缩略图模式显示方法(#PB_SHOW_THUMBNAIL_ONE_BY_ONE /#PB_SHOW_THUMBNAIL_IN_THE_SAME_TIME) PBPRMID_THUMB_LAYOUT_ARRAY = 0x27,/// <指向播放缩略图模式外观的配置数组的指针 PBPRMID_THUMB_LAYOUT_ARRAY2 = 0x28,/// <指向一个配置数组的指针,用于双视图的回放缩略图模式外观 PBPRMID_ZOOM_INDEX = 0x30,/// <当前缩放表索引 PBPRMID_ZOOM_LVL_TBL = 0x31,/// <指向缩放级别表的指针 PBPRMID_PAN_CURX = 0x32,/// <当前X地址 - PBZoom子图像左上角相对于主图像左上角((0,0)点) PBPRMID_PAN_CURY = 0x33,/// <当前Y地址 - PBZoom子图像左上角相对于主图像左上角((0,0)点) PBPRMID_PAN_MAXX = 0x34,/// <MAX X addr - MAX PBZoom图像滚动范围 PBPRMID_PAN_MAXY = 0x35,/// <MAX Y addr - MAX PBZoom图像滚动范围 PBPRMID_NAMEID_FILE = 0x40,/// <当前DCF文件ID PBPRMID_NAMEID_DIR = 0x41,/// <当前DCF目录ID PBPRMID_DATABUF_ADDR = 0x42,/// <当前数据缓冲区地址 PBPRMID_DATABUF_SIZE = 0x43,/// <当前数据缓冲区大小 PBPRMID_CURR_FILEPATH = 0x44,/// <当前文件路径 PBPRMID_CURR_FILESEQ = 0x45,/// <当前文件序列 PBPRMID_CURR_FILESIZE = 0x46,/// <当前文件大小 PBPRMID_CURR_FILEFMT = 0x47,/// <当前文件格式 PBPRMID_TOTAL_FILE_COUNT = 0x48,/// <文件总数 PBPRMID_DISP_DIRECTION = 0x50,/// <显示方向(#PB_DISPDIR_HORIZONTAL /#PB_DISPDIR_VERTICAL) PBPRMID_AUTO_ROTATE = 0x51,/// <根据EXIF方向自动旋转图像(TRUE / FALSE) PBPRMID_SLIDE_SPEED_TBL = 0x60,/// <幻灯片速度表的指针用于幻灯片效果功能 PBPRMID_FILEDB_HANDLE = 0x90,/// <与文件DB通信的文件句柄 PBPRMID_FILELIST_OBJ = 0x91,/// <文件列表对象指针 PBPRMID_DEC_IMG_CALLBACK = 0x92,/// <用于解码图像文件的回调函数 PBPRMID_DEC_VIDEO_CALLBACK = 0x93,/// <用于解码视频文件的回调函数 PBPRMID_CFG4NEXT_CALLBACK = 0x94,/// <在下一次触发之前做某事的回调函数(DspSrv) ENUM_DUMMY4WORD(PB_PRMID) PB_PRMID; / ** 播放错误代码。 * / typedef enum _PB_ERR { PBERR_OK = 0x00,/// <操作成功 PBERR_NOT_SUPPORT = 0xF0,/// <不支持的功能 PBERR_PAR = 0xF1,/// <参数无效 PBERR_FAIL = 0xFF,/// <操作失败 ENUM_DUMMY4WORD(PB_ERR) } PB_ERR; / ** 播放等待模式。 @note用于PB_WaitCommandFinish()。 * / typedef enum _PB_WAIT_MODE { PB_WAIT_NOWAIT = 0x00,/// <不等待 PB_WAIT_INFINITE = 0xFF,/// <等待操作完成 ENUM_DUMMY4WORD(PB_WAIT_MODE) } PB_WAIT_MODE; / ** 播放编辑图像操作。 @note对于_PB_EDIT_CONFIG :: Operation。 * / typedef enum _PB_EDIT_IMAGE { PBEDIT_RESIZE,/// <将图像大小调整为特定大小并保存文件 PBEDIT_REQTY,/// <当前图像和保存文件的重新质量 PBEDIT_ROTATE,/// <更新当前的JPEG EXIF-Orientation标签并保存文件 PBEDIT_ROTATE_DISP,/// <旋转图像仅供显示 PBEDIT_CROP,/// <裁剪打开的图像并保存为新文件 PBEDIT_NLIGHT_DISP,/// <设置Nova-Light仅供显示 PBEDIT_NLIGHT,/// <设置Nova-Light并保存文件 PBEDIT_CUSTOMIZE_DISP,/// <设置自定义效果仅供显示 PBEDIT_CUSTOMIZE,/// <设置自定义效果并保存文件 PBEDIT_CUSTOMIZE_PARA,/// <设置自定义参数(如有必要) ENUM_DUMMY4WORD(PB_EDIT_IMAGE) } PB_EDIT_IMAGE; / ** 播放屏幕控制类型。 屏幕控制与OSD同步显示。 @note用于PB_ScreenControl()。 * / typedef enum { PB_LOCK_SCREEN = ,/// <图像操作的结果不会显示在显示屏上 PB_FLUSH_SCREEN = 1,/// <在显示屏上显示图像操作的结果 ENUM_DUMMY4WORD(PB_SCREEN_CTRL_TYPE) } PB_SCREEN_CTRL_TYPE; / ** 要加载的文件的类型。 @note用于PB_QuasiLoadFile()。 * / typedef enum _PB_FILE_TYPE { PB_FILE_JPEG = ,/// <JPEG文件的主图像 PB_FILE_JPEG_THUMBNAIL,/// <JPEG文件的缩略图 PB_FILE_SCREENNAIL,/// <JPEG文件的屏幕图像 PB_FILE_AVI,/// <AVI文件的第1帧 PB_FILE_AVI_THUMBNAIL,/// <AVI文件的缩略图 ENUM_DUMMY4WORD(PB_FILE_TYPE) } PB_FILE_TYPE; / ** 显示索引 有两种显示引擎可供支持。 @note用于PB_ConfigVdoWIN(),PB_Set1stVideoFrame()。 * / typedef enum _PB_DISP_IDX { PBDISP_IDX_PRI = ,/// <主显示 PBDISP_IDX_SEC,/// <辅助显示 PBDISP_IDX_MAX, ENUM_DUMMY4WORD(PB_DISP_IDX) } PB_DISP_IDX; / ** 播放解码图像类型。 此信息表示播放模块正在解码缩略图或主图像。 @note适用于PB_DECIMG_CB。 * / typedef enum { PB_DECIMG_THUMBNAIL,/// <播放模块正在解码缩略图图像。 PB_DECIMG_PRIMARY,/// <播放模块正在解码主图像。 ENUM_DUMMY4WORD(PB_DECIMG_TYPE) } PB_DECIMG_TYPE; // ------------------------------------------------ ------------------------------ //函数原型 // ------------------------------------------------ ------------------------------ / ** 用于解码图像文件的回调函数原型。 每次重放图像文件时都会调用回调函数。 用户可以通过返回FLASE返回TRUE来决定图像文件的解码位置。 * / typedef BOOL(* PB_DECIMG_CB)(PB_DECIMG_TYPE DecType); / ** 用于解码视频文件的回调函数原型。 每次播放视频文件时都会调用回调函数。 用户可以通过返回FLASE来返回TRUE,从而决定视频文件的解码位置。 * / typedef BOOL(* PB_DECVIDEO_CB)(UINT32 uiUserDataAddr,UINT32 uiUserDataSize); / ** 回调函数原型,用于在DspSrv tirgger下一个图像之前做一些事情。 每次重放图像/视频时都会调用回调函数。 用户可以在DspSrv tirgger下一个图像之前旋转图像或执行其他操作。 * / typedef void(* PB_CFG4NEXT_CB)(void); // ------------------------------------------------ ------------------------------ //结构 // ------------------------------------------------ ------------------------------ / ** 播放的配置对象(PB_Open)。 @note用于PB_Open()。 * / typedef struct _PLAY_OBJ { UINT32 uiMemoryAddr; /// <内存缓冲区起始地址 UINT32 uiMemorySize; /// <内存缓冲区大小 UINT32 uiPlayFileFmt; /// <播放静止图像和视频的文件格式 PLAY_OBJ,* PPLAY_OBJ; / ** 播放编辑图像配置。 配置结构,包含操作的ID及其参数。 @注意 - #对于PB_EditImage()。 - #除非另有说明,否则puiParam []的值应始终为零。 * / typedef struct _PB_EDIT_CONFIG { PB_EDIT_IMAGE操作; /// <图像编辑操作ID UINT32 puiParam [4]; /// <特定编辑操作的参数 } PB_EDIT_CONFIG,* PPB_EDIT_CONFIG; / ** 单个视图的命令对象。 播放模式命令对象的结构。 @note用于PB_PlaySingleMode()。 * / typedef struct _PLAY_SINGLE_OBJ { UINT32 PlayCommand; /// <播放单个视图命令 UINT32 slideEffectFunc; /// <幻灯片效果函数,请参阅SlideEffect.h UINT8 JumpOffset; /// <读取下一个/上一个文件的跳转偏移量 PLAY_SINGLE_OBJ,* PPLAY_SINGLE_OBJ; / ** 缩略图视图的命令对象。 缩略图模式命令对象的结构。 @note用于PB_PlayBrowserMode()。 * / typedef struct _PLAY_BROWSER_OBJ { UINT8 BrowserCommand; /// <播放缩略图视图命令 UINT8 HorNums; /// <水平方向的图像数量,HorNums * VerNums必须<= 25 UINT8 VerNums; /// <垂直方向有多少个图像,HorNums * VerNums必须<= 25 UINT32 slideEffectFunc; /// <幻灯片效果函数,请参阅SlideEffect.h UINT8 JumpOffset; /// <读取下一个/上一个文件的跳转偏移量 BOOL bReDecodeImages; /// <用于重新解码所有拇指图像 /// < - @b FALSE:这意味着#JumpOffset仍在同一页面中 /// < - @b TRUE:这意味着Playback必须解码另一个页面中的所有图像 } PLAY_BROWSER_OBJ,* PPLAY_BROWSER_OBJ; / ** 显示特定文件的命令对象。 用于在特定视频层(#PB_SPEC_VDO)和特定大小中显示特定文件的结构。 @note用于PB_PlaySpecFile()。 * / typedef struct _PLAY_SPECFILE_OBJ { PB_SPEC_VDO PlayFileVideo; /// <播放在video1 / video2 #PB_SPEC_VDO中显示特定文件 PB_SPEC_CLR PlayFileClearBuf; /// <使用/ wo清除缓冲区#PB_SPEC_CLR播放显示特定文件 URECT PlayRect; /// <帧缓冲区布局的矩形数组的指针 BOOL bDisplayWoReDec; /// <用于加速第二个相同的特定文件 /// < - @b FALSE:强制当前图像重新解码以进行显示 /// < - @b TRUE:绘制图像,无需重新解码,以加速第二个相同的特定文件 PLAY_SPECFILE_OBJ,* PPLAY_SPECFILE_OBJ; / ** 捕获屏幕的配置对象。 用于捕获屏幕到特定图像大小的结构。 @note用于PB_CaptureScreen()。 * / typedef struct _PB_LOGO_INFO { UINT32 uiDstWidth; /// <[in]捕获图像的宽度('0'是特殊情况:使用面板宽度) UINT32 uiDstHeight; /// <[in]捕获图像的高度('0'是特殊情况:使用面板高度) UINT32 uiFileSize; /// <[in] JPEG文件的上限大小('0'是特殊情况:文件大小不受限制) /// <[out]捕获的JPEG文件的大小 UINT32 uiFileAddr; /// <[out]捕获的JPEG文件的起始地址 } PB_LOGO_INFO,* PPB_LOGO_INFO; // ------------------------------------------------ ------------------------------ //导出功能 // ------------------------------------------------ ------------------------------ / ** 安装播放任务,标志和信号量ID @return无效 * / extern void PB_InstallID(void)_SECTION(“。kercfg_text”); / ** 打开播放模式。 打开播放模式并开始播放任务。 @param [in] pPlayObj播放配置对象的指针:#_ PLAY_OBJ @返回 - @b PBERR_OK:成功。 - @b PBERR_FAIL:失败。 例: @码 { PLAY_OBJ PlayObj; PlayObj.uiMemoryAddr = 0x80000000; PlayObj.uiMemorySize = 0x00200000; PlayObj.uiPlayFileFmt =(PBFMT_JPG | PBFMT_AVI); PB_Open(&PlayObj); } @endcode * / extern PB_ERR PB_Open(PPLAY_OBJ pPlayObj); / ** 关闭播放模式。 关闭播放模式并终止播放任务。 @param [in] TimeOut播放等待模式 @返回 - @b PBERR_OK:成功。 - @b PBERR_FAIL:失败。 * / extern PB_ERR PB_Close(PB_WAIT_MODE TimeOut); / ** 获取播放参数。 获取特定Playback参数的值。 @param [in] ParamID要设置的Playback参数的标识符。 @param [in,out] puiVal指针在哪里写入从Playback读取的特定参数值。 @返回 - @b PBERR_OK:成功。 - @b PBERR_PAR:参数无效。 * / extern PB_ERR PB_GetParam(PB_PRMID ParamID,UINT32 * puiVal); / ** 设置播放参数。 为某些播放参数设置特定值。 @param [in] ParamID要设置的Playback参数的标识符。 @param [in] uiValue要设置为特定Playback参数的值。 @返回 - @b PBERR_OK:成功。 - @b PBERR_PAR:参数无效。 * / extern PB_ERR PB_SetParam(PB_PRMID ParamID,UINT32 uiValue); / ** 等待播放命令完成。 等待播放的最后命令完成。 @param [in] TimeOut播放等待模式:#_PB_WAIT_MODE。 @返回 - @b任务状态:根据响应状态回放任务状态。 * / extern INT32 PB_WaitCommandFinish(PB_WAIT_MODE TimeOut); // ------------------------- [Async Functions] ------------------- --------- / ** 编辑图像。 该功能执行图像编辑操作。 @注意 - #仅在JPEG文件格式的播放模式下允许图像编辑 - 必须在#PBEDIT_NLIGHT命令之前调用## PBEDIT_NLIGHT_DISP才能配置相关的Nova-light参数。 - #这个API是一个异步函数(意思是:需要调用#PB_WaitCommandFinish()来等待操作完成)。 @param [in] pConfig指向播放的指针编辑图像配置结构:#_PB_EDIT_CONFIG。 - @b Operation - 要执行的操作: - @b #PBEDIT_RESIZE - @b puiParam []输出图像大小的宽度。 - @b puiParam []输出图像大小的高度。 - @b puiParam []如果覆盖当前文件。 - @b #PBEDIT_ROTATE - @b puiParam [] JPEG EXIF-Orientation。 - @b puiParam []如果在应用更改后显示已编辑的图像。 - @b puiParam []如果覆盖当前文件。 - @b #PBEDIT_ROTATE_DISP - @b puiParam [] JPEG EXIF-Orientation。 - @b #PBEDIT_CROP - @b puiParam []裁剪边界的水平开始。 - @b puiParam []裁剪边界的垂直开始。 - @b puiParam []裁剪边界的宽度。 - @b puiParam []裁剪边界的高度。 - @b #PBEDIT_NLIGHT_DISP - @b puiParam [] Nova-light的等级。 - @b #PBEDIT_NLIGHT - @b puiParam []如果覆盖当前文件。 - @b #PBEDIT_CUSTOMIZE_DISP - @b puiParam []自定义编辑功能指针。 - @b puiParam []工作缓冲区所需的大小。 - @b #PBEDIT_CUSTOMIZE - @b puiParam []自定义编辑功能指针。 - @b puiParam []工作缓冲区所需的大小。 - @b puiParam []如果覆盖当前文件。 @返回 - @b PBERR_OK:成功。 - @b PBERR_PAR:参数无效。 - @b PBERR_NOT_SUPPORT:不支持的操作。 例: @码 { PB_EDIT_CONFIG配置= {}; Config.Operation = PBEDIT_RESIZE; Config.puiParam [] = ; Config.puiParam [] = ; Config.puiParam [] = FALSE; PB_EditImage(配置); PB_WaitCommandFinish(PB_WAIT_INFINITE); } @endcode * / extern PB_ERR PB_EditImage(PPB_EDIT_CONFIG pConfig); / ** 播放单张图片。 显示单个图像和第一帧视频剪辑。 @note这个API是一个异步函数(意思是:需要调用#PB_WaitCommandFinish()来等待操作完成)。 @param [in] pPlaySingleObj单个视图的命令对象的指针:#_ PLAY_SINGLE_OBJ。 @return无效。 * / extern void PB_PlaySingleMode(PPLAY_SINGLE_OBJ pPlaySingleObj); / ** 在缩略图视图中浏览图像。 显示缩略图页面,绘制缩略图图像和视频剪辑的第一帧。 @注意 - #水平图像编号*垂直图像编号不能超过25。 - #这个API是一个异步函数(意思是:需要调用#PB_WaitCommandFinish()来等待操作完成)。 @param [in] pPlayBrowserObj缩略图视图的命令对象的指针:#_ PLAY_BROWSER_OBJ。 @返回 - @b PBERR_OK:作业被发送到回放任务,你必须等待结果。 - @b PBERR_PAR:参数无效。 - @b PB_STA_DONE:此命令已完成。 * / extern INT32 PB_PlayBrowserMode(PPLAY_BROWSER_OBJ pPlayBrowserObj); / ** 播放图像缩放。 @note这个API是一个异步函数(意思是:需要调用#PB_WaitCommandFinish()来等待操作完成)。 @param [in] PlayCommand播放缩放命令(#PLAYZOOM_IN / #PLAYZOOM_OUT ..)。 @return无效。 例: @码 { PB_PlayZoomMode(PLAYZOOM_IN); PB_WaitCommandFinish(PB_WAIT_INFINITE); } @endcode * / extern void PB_PlayZoomMode(UINT32 PlayCommand); / ** 播放图像滚动。 @note这个API是一个异步函数(意思是:需要调用#PB_WaitCommandFinish()来等待操作完成)。 @param [in] PlayCommand播放缩放命令(#PLAYZOOM_UP / #PLAYZOOM_DOWN / #PLAYZOOM_LEFT / #PLAYZOOM_RIGHT)。 @param [in] MoveOffsetX水平滚动偏移量。 @param [in] MoveOffsetY垂直滚动偏移。 @返回 - @b PBERR_OK:作业被发送到回放任务,你必须等待结果。 - @b PBERR_PAR:参数无效。 - @b PB_STA_DONE:此命令已完成,无法再滚动。 例: @码 { PB_PlayZoomPanMode(PLAYZOOM_UP,,); PB_WaitCommandFinish(PB_WAIT_INFINITE); } @endcode * / extern INT32 PB_PlayZoomPanMode(UINT32 PlayCommand,UINT32 MoveOffsetX,UINT32 MoveOffsetY); / ** 通过用户设置进行数码变焦播放。 @note这个API是一个异步函数(意思是:需要调用#PB_WaitCommandFinish()来等待操作完成)。 @param [in] LeftUp_X此图片的start-Left-Up-pixel-X @param [in] LeftUp_Y此图片的开始 - 左上 - 像素-Y @param [in] RightDown_X此图片的结束 - 右下 - 像素-X @param [in] RightDown_Y此图片的结束 - 右下 - 像素-Y @返回 - @b PBERR_OK:作业被发送到回放任务,你必须等待结果。 - @b PBERR_PAR:参数无效。 例: @码 { PB_PlayZoomUserSetting(,,,); PB_WaitCommandFinish(PB_WAIT_INFINITE); } @endcode * / extern INT32 PB_PlayZoomUserSetting(UINT32 LeftUp_X,UINT32 LeftUp_Y,UINT32 RightDown_X,UINT32 RightDown_Y); / ** 在video1 / video2和规格尺寸中显示spec文件。 @note这个API是一个异步函数(意思是:需要调用#PB_WaitCommandFinish()来等待操作完成)。 @param [in] pPlayFileObj显示特定文件的命令对象的指针:#_ PLAY_SPECFILE_OBJ。 @return无效。 * / extern void PB_PlaySpecFile(PPLAY_SPECFILE_OBJ pPlayFileObj); / ** 将屏幕捕获到特定图像大小。 @note这个API是一个异步函数(意思是:需要调用#PB_WaitCommandFinish()来等待操作完成)。 @param [in,out] pPBLogoInfo指向捕获屏幕的配置对象的指针:#_PB_LOGO_INFO。 @return无效。 例: @码 { PB_LOGO_INFO LogoInfo = {}; LogoInfo.uiDstWidth = ; LogoInfo.uiDstHeight = ; LogoInfo.uiFileSize = ; PB_CaptureScreen(&LogoInfo); PB_WaitCommandFinish(PB_WAIT_INFINITE); } @endcode * / extern void PB_CaptureScreen(PPB_LOGO_INFO pPBLogoInfo); / ** 在显示坐标中获取面部编号和位置。 @note这个API是一个异步函数(意思是:需要调用#PB_WaitCommandFinish()来等待操作完成)。 @param [out] ppRect指向面矩形的指针。 @param [out] pNum指向面数的指针。 @return无效。 例: @码 { URECT * pRcLocation; UINT32 nFaces; PB_FaceDetection(&pRcLocation,&nFaces); PB_WaitCommandFinish(PB_WAIT_INFINITE); } @endcode * / extern void PB_FaceDetection(URECT ** ppRect,UINT32 * pNum); / ** 打开特定文件。 @note这个API是一个异步函数(意思是:需要调用#PB_WaitCommandFinish()来等待操作完成)。 @param [in] PlayDirId DCF目录ID。 @param [in] PlayFileId DCF文件ID。 @return无效。 例: @码 { PB_OpenSpecFile(,); PB_WaitCommandFinish(PB_WAIT_INFINITE); } @endcode * / extern void PB_OpenSpecFile(UINT32 PlayDirId,UINT32 PlayFileId); / ** 按序列ID打开特定文件。 @note这个API是一个异步函数(意思是:需要调用#PB_WaitCommandFinish()来等待操作完成)。 @param [in] uiSeqID文件序列ID。 @param [in] bOnlyQuery Only查询文件但不读取所有文件数据。 @return无效。 例: @码 { PB_OpenSpecFileBySeq(,FALSE); PB_WaitCommandFinish(PB_WAIT_INFINITE); } @endcode * / extern void PB_OpenSpecFileBySeq(UINT32 uiSeqID,BOOL bOnlyQuery); // - - - - - - - - - - - - - - -[ 获取信息 ] - - - - - - - - ---------------------- / ** 在解码之前获取当前图像的JPEG信息。 @param [in] bParseEXIF - @b TRUE:解析EXIF和主要图像信息。 - @b FALSE:仅解析主图像信息。 @return pJPGInfo指向JPEG解码配置的指针(@b NULL表示解析NG)。 例: @码 { PJPGHEAD_DEC_CFG pJPGDecCfg; pJPGDecCfg = PB_GetCurrImageInfoBeforeDec(FALSE); } @endcode * / extern PJPGHEAD_DEC_CFG PB_GetCurrImageInfoBeforeDec(BOOL bParseEXIF); / ** 使用此API检查是否可以成功显示可绘制文件(JPEG,MJPEG等)而不实际显示它。 @param [in] FileType要加载的文件的类型:#_PB_FILE_TYPE。 @返回 - @b PBERR_OK:成功。 - @b PBERR_FAIL:失败。 例: @码 { PB_ERR LoadRslt; PB_OpenSpecFileBySeq(,FALSE); PB_WaitCommandFinish(PB_WAIT_INFINITE); LoadRslt = PB_QuasiLoadFile(PB_FILE_JPEG); } @endcode * / extern PB_ERR PB_QuasiLoadFile(PB_FILE_TYPE FileType); // - - - - - - - - - - - - - - -[ 设置 ] - - - - - - - - --------------------- / ** 设置BRC(比特率控制)参数,以便在回放模式下重新编码PRIMARY图像。 @param [in] uiCompressRatio目标比特流压缩比。 @param [in] uiUpBoundRatio目标大小的上限比。 @param [in] uiLowBoundRatio目标大小的下限比率。 @param [in] uiLimitCnt重新编码的最大次数。 @return无效。 例: @码 { PB_SetExpectJPEGSize(,,,); PB_SetPerfectFix(PB_PERFECT_FIX_LIGHTING,FALSE,NULL); PB_WaitCommandFinish(PB_WAIT_INFINITE); } @endcode * / extern void PB_SetExpectJPEGSize(UINT32 uiCompressRatio,UINT32 uiUpBoundRatio,UINT32 uiLowBoundRatio,UINT32 uiLimitCnt); / ** 设置视频输出窗口(在此特定区域中绘制图像)。 @param [in] DispIdx显示索引:#_PB_DISP_IDX。 @param [in] pRect指向视频窗口矩形的指针 @return无效 * / extern void PB_ConfigVdoWIN(PB_DISP_IDX DispIdx,PURECT pRect); / ** 更新第一个视频帧对象。 @param [in] DispIdx显示索引:#_PB_DISP_IDX。 @param [in] pRect指向第一个视频剪辑帧的显示位置矩形的指针 @return无效。 * / extern void PB_Set1stVideoFrame(PB_DISP_IDX DispIdx,PURECT pRect); // - - - - - - - - - - - - - - -[ 其他 ] - - - - - - - - --------------------- / ** 控制操作结果立即显示在显示器上。 @note此API仅对一个PB操作有效。 @param [in] CtrlType播放屏幕控制类型:#PB_SCREEN_CTRL_TYPE。 @return无效。 例: @码 { PB_ScreenControl(PB_LOCK_SCREEN); PB_PlayZoomMode(PLAYZOOM_IN); PB_WaitCommandFinish(PB_WAIT_INFINITE); //在这里更新OSD PB_ScreenControl(PB_FLUSH_SCREEN); } @endcode * / extern void PB_ScreenControl(PB_SCREEN_CTRL_TYPE CtrlType); extern void PB_InSlideEffect4DetailMode(void); extern void PB_OutSlideEffect4DetailMode(void); // ----------------------------- [system] ---------------- --------------------- / ** 进入睡眠模式 @return无效 * / extern void PB_Sleep(void); / ** 离开睡眠模式 @return无效 * / extern void PB_Wakeup(void); / ** 暂停DMA @return无效 * / extern void PB_PauseDMA(void); / ** 恢复DMA @return无效 * / extern void PB_ResumeDMA(void); / ** 暂停显示 @param [in] bWaitFinish如果等到操作完成。 @return无效 * / extern void PB_PauseDisp(BOOL bWaitFinish); / ** 恢复显示 @param [in] bWaitFinish如果等到操作完成。 @return无效 * / extern void PB_ResumeDisp(BOOL bWaitFinish); / ** 更改TV / LCD的显示尺寸。 @param [in] uiDisp_w显示目标的宽度。 @param [in] uiDisp_h显示目标的高度。 @return无效 * / extern void PB_ChangeDisplaySize(UINT32 uiDisp_w,UINT32 uiDisp_h); // ***** [当FileList与FileDB合并时将删除以下代码] ****** // // [按日期排序] // #define PLAY_FILE_ALL 0 #define PLAY_FILE_BY_DAY 1 #define PLAY_FILE_BY_MONTH 2 #define PLAY_FILE_BY_YEAR 3 #define PB_GET_DAY_FROM_DATE(x)(x&0x1F) #define PB_GET_MONTH_FROM_DATE(x)((x >> 5)&0x0F) #define PB_GET_YEAR_FROM_DATE(x)(((x >> 9)&0x7F)+1980) typedef enum { PLAYDATE_INDEX_TO_1ST, PLAYDATE_INDEX_TO_CURR, PLAYDATE_INDEX_TO_LAST, PLAYDATE_INDEX_MAX } PLAYDATE_INDEX; extern void PB_PlayDeletByDate(UINT32 Year,UINT32 Month,UINT32 Day); extern UINT32 PB_SetBuffForFileDB(UINT32 u32MemAddr,UINT32 u32MaxFileNum); extern INT32 PB_PlayByDateInit(void); extern void PB_PlayByDateUnInit(void); extern UINT16 PB_GetTotalPlayDay(void); extern UINT16 PB_GetFirstPlayDay(void); extern UINT16 PB_GetLastPlayDay(void); extern UINT16 PB_GetNextPlayDay(void); extern UINT16 PB_GetPrevPlayDay(void); extern UINT16 PB_GetCurrPlayDay(void); extern UINT16 PB_GetCurrPlayDaySeq(void); extern UINT16 PB_GetCurrPlayYearSeq(void); extern UINT16 PB_GetCurrPlayDaySeqInThisYear(void); extern UINT16 PB_GetPlayDaysNuminYear(UINT16 SpecYear); extern UINT16 PB_GetTotalPlayMonth(void); extern UINT16 PB_GetFirstPlayMonth(void); extern UINT16 PB_GetNextPlayMonth(void); extern UINT16 PB_GetPrevPlayMonth(void); extern UINT16 PB_GetTotalPlayYear(void); extern UINT16 PB_GetFirstPlayYear(void); extern UINT16 PB_GetNextPlayYear(void); extern UINT16 PB_GetPrevPlayYear(void); extern UINT16 PB_GetTotalFilesNumOfSpecDate(void); extern void PB_SetPlayDate(UINT32 DateType,UINT16 Date,PLAYDATE_INDEX CurrIdxTo); extern void PB_SetPlayDateToPrev(void); extern void PB_SetPlayDateToNext(void); // ********* [当FileList与FileDB合并时将删除上面的代码] ********** // @} #万一
PlayBackTsk.h