/ **
播放应用程序的头文件。
此文件是头文件,用于定义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
手机扫一扫
移动阅读更方便
你可能感兴趣的文章