4670101279
2 years ago
5 changed files with 1191 additions and 0 deletions
@ -0,0 +1,29 @@
@@ -0,0 +1,29 @@
|
||||
package sdk.java.lib.playmanager; |
||||
|
||||
public class PlayDefs { |
||||
|
||||
public static final int PLAY_LOG_ATTRIBUTE_ENABLE = 0x01; |
||||
public static final int PLAY_LOG_ATTRIBUTE_PRINT = 0x02; |
||||
public static final int PLAY_LOG_ATTRIBUTE_WRITE = 0x04; |
||||
|
||||
// 按帧序号获取关键帧
|
||||
public static final int TYPE_BY_FRAME_NUMBER = 1; |
||||
// 按帧事件获取关键帧
|
||||
public static final int TYPE_BY_FRAME_TIME = 2; |
||||
|
||||
public static final int MAX_SOURCE_BUF_SIZE = 1024 * 1024 * 100; // 数据流缓冲区最大长度
|
||||
public static final int MIN_SOURCE_BUF_SIZE = 1024 * 50; // 数据流缓冲区最小长度
|
||||
|
||||
public static final int STREAM_TYPE_REALTIME = 0; // 实时流模式
|
||||
public static final int STREAM_TYPE_FILE = 1; // 文件流模式
|
||||
|
||||
public static final int PlayMS_QueryTime = 1; //编码中时间信息
|
||||
public static final int PlayMS_QueryFileRate = 2; //帧率信息
|
||||
public static final int PlayMS_QueryMediaInfo = 3; //媒体信息
|
||||
public static final int PlayMS_QueryRenderNum = 4; //当前要渲染的帧号
|
||||
public static final int PlayMS_QueryRenderTime = 5; //当前要渲染的时间
|
||||
public static final int PlayMS_QuerySrcTime = 6; //视频源中的时间信息
|
||||
public static final int PlayMS_QueryCurRenderNum = 7; //当前帧号。4是上一帧的帧号
|
||||
public static final int PlayMS_QueryRenderPTS = 8; //当前要渲染的帧时间戳
|
||||
|
||||
} |
@ -0,0 +1,88 @@
@@ -0,0 +1,88 @@
|
||||
package sdk.java.lib.playmanager; |
||||
|
||||
import com.sun.jna.Callback; |
||||
import com.sun.jna.Pointer; |
||||
|
||||
public class PlayDelegates |
||||
{ |
||||
/********************************************************************************** |
||||
参数: [in] |
||||
HDC hDc 绘图设备上下文句柄 |
||||
void* pUserData 用户参数 |
||||
**********************************************************************************/ |
||||
public interface fRegDrawCallBack extends Callback |
||||
{ |
||||
public void invoke(int nPort, Pointer hDc, Pointer pUserData); |
||||
} |
||||
|
||||
/********************************************************************************** |
||||
参数: [in] |
||||
pBuf 数据指针 |
||||
nType 数据类型 |
||||
nLen 数据大小 |
||||
nRealLen 数据真实大小 |
||||
pReserved 保留参数 |
||||
pUserData 用户自定义数据 |
||||
**********************************************************************************/ |
||||
public interface fGetIVSInfoCallBack extends Callback |
||||
{ |
||||
public void invoke(Pointer pBuf, int nType, int nLen, int nRealLen, Pointer pReserved, Pointer pUserData); |
||||
} |
||||
|
||||
/********************************************************************************** |
||||
参数: [in] |
||||
FRAME_DEC_INFO* pFrameDecodeInfo: 帧内容 |
||||
FRAME_ATTRI_INFO_EX* pFrameInfo: 帧信息 |
||||
void* pUserData: 用户参数 |
||||
**********************************************************************************/ |
||||
public interface fDecodeCallBack extends Callback |
||||
{ |
||||
public void invoke(int nPort, Pointer pFrameDecodeInfo, Pointer pFrameInfo, Pointer pUserData); |
||||
} |
||||
|
||||
/********************************************************************************** |
||||
参数: [in] |
||||
char* pYuvBuf: 视频帧 YUV 数据 |
||||
void* pReserved: 保留参数 |
||||
**********************************************************************************/ |
||||
public interface fDisplayCallBack extends Callback |
||||
{ |
||||
public void invoke(int nPort, Pointer pYuvBuf, int nYuvSize, int nWidth, int nHeight, int nStamp, int nType, Pointer pReserved); |
||||
} |
||||
|
||||
/********************************************************************************** |
||||
参数: [in] |
||||
char* pAudioBuf: 视频帧 YUV 数据 |
||||
void* pUserData: 用户参数 |
||||
**********************************************************************************/ |
||||
public interface fAudioCallBack extends Callback |
||||
{ |
||||
public void invoke(int nPort, Pointer pAudioBuf, int nSize, int nStamp, int nType, Pointer pUserData); |
||||
} |
||||
|
||||
|
||||
public interface fFileEndCallBack extends Callback |
||||
{ |
||||
public void invoke(int nPort, Pointer pUserData); |
||||
} |
||||
|
||||
/********************************************************************************** |
||||
参数: [in] |
||||
char* pBuf: 水印数据buffer指针 |
||||
void* pUserData: 用户参数 |
||||
**********************************************************************************/ |
||||
public interface fGetWaterMarkInfoCallBack extends Callback |
||||
{ |
||||
public void invoke(Pointer pBuf, int nKey, int nLen, int nRealLen, int nType, Pointer pUserData); |
||||
} |
||||
|
||||
/********************************************************************************** |
||||
参数: [in] |
||||
char* buf: 水印数据缓冲 |
||||
void* pUserData: 用户参数 |
||||
**********************************************************************************/ |
||||
public interface fGetWaterMarkInfoCallBackEx extends Callback |
||||
{ |
||||
public void invoke(int nPort, Pointer buf, int lTimeStamp, int lInfoType, int len, int reallen, int lCheckResult, Pointer pUserData); |
||||
} |
||||
} |
@ -0,0 +1,139 @@
@@ -0,0 +1,139 @@
|
||||
package sdk.java.lib.playmanager; |
||||
|
||||
import com.sun.jna.Structure; |
||||
|
||||
public class PlayEnums { |
||||
|
||||
// 语言种类
|
||||
public static class ENUM_RENDER_TYPE extends Structure |
||||
{ |
||||
// 智能数据渲染
|
||||
public static final int RENDER_TYPE_INTL = 0x63; |
||||
// 动检数据渲染
|
||||
public static final int RENDER_TYPE_MOTION = 0x65; |
||||
}; |
||||
|
||||
// YUV 数据类型
|
||||
public static class ENUM_YUV_TYPE extends Structure |
||||
{ |
||||
// UYVY类型的YUV数据
|
||||
public static final int TYPE_UYUV = 1; |
||||
// 4:2:0类型YUV数据
|
||||
public static final int TYPE_IYUV = 3; |
||||
// RGB32类型YUV数据
|
||||
public static final int TYPE_RGB32 = 7; |
||||
}; |
||||
|
||||
// 音频数据类型
|
||||
public static class ENUM_AUDIO_DATA_TYPE extends Structure |
||||
{ |
||||
// 8位音频数据类型
|
||||
public static final int TYPE_AUDIO_DATA_8 = 100; |
||||
// 16位音频数据类型
|
||||
public static final int TYPE_AUDIO_DATA_16 = 101; |
||||
}; |
||||
|
||||
// 帧缓冲类型
|
||||
public static class ENUM_MEDIA_BUF_TYPE extends Structure |
||||
{ |
||||
// 视频源缓冲
|
||||
public static final int TYPE_MEDIA_VIDEO_SRC_BUF = 1; |
||||
// 音频源缓冲
|
||||
public static final int TYPE_MEDIA_AUDIO_SRC_BUF = 2; |
||||
// 解码后视频数据缓冲
|
||||
public static final int TYPE_MEDIA_VIDEO_RENDER_BUF = 3; |
||||
// 解码后音频数据缓冲
|
||||
public static final int TYPE_MEDIA_AUDIO_RENDER_BUF = 4; |
||||
}; |
||||
|
||||
// 多媒体帧类型
|
||||
public static class ENUM_MEDIA_FRAME_TYPE extends Structure |
||||
{ |
||||
public static final int MEDIA_FRAME_TYPE_VIDEO = 1; // 视频帧类型
|
||||
public static final int MEDIA_FRAME_TYPE_AUDIO = 2; // 音频帧类型
|
||||
public static final int MEDIA_FARMA_TYPE_DATA = 3; // 数据帧类型
|
||||
}; |
||||
|
||||
// 帧子类型
|
||||
public static class ENUM_SUB_FRAME_TYPE extends Structure |
||||
{ |
||||
public static final int SUB_FRAME_TYPE_VIDEO_I = 0; // I帧
|
||||
public static final int SUB_FRAME_TYPE_VIDEO_P = 1; // P帧
|
||||
public static final int SUB_FRAME_TYPE_VIDEO_B = 2; // B帧
|
||||
public static final int SUB_FRAME_TYPE_VIDEO_S = 3; // S帧
|
||||
|
||||
public static final int SUB_FRAME_TYPE_VIDEO_MJPEG = 8; // MJPEG
|
||||
}; |
||||
|
||||
// 编码格式
|
||||
public static class ENUM_VIDEO_ENCODE_TYPE extends Structure |
||||
{ |
||||
public static final int VIDEO_ENCODE_TYPE_UNKNOWN = 0x00; // 未知视频编码格式
|
||||
public static final int VIDEO_ENCODE_TYPE_MPEG4 = 0x01; // MPEG4 视频编码格式
|
||||
public static final int VIDEO_ENCODE_TYPE_HISI_H264 = 0x02; // 海思H264视频编码格式
|
||||
public static final int VIDEO_ENCODE_TYPE_JPEG = 0x03; // 标准JPEG视频编码格式
|
||||
|
||||
public static final int VIDEO_ENCODE_TYPE_AVS = 0x07; // 标准AVS视频编码格式
|
||||
public static final int VIDEO_ENCODE_TYPE_STD_H264 = 0x08; // 标准H264视频编码格式
|
||||
public static final int VIDEO_ENCODE_TYPE_MPEG2 = 0x09; // MPEG2视频编码格式
|
||||
|
||||
public static final int VIDEO_ENCODE_TYPE_RY_H264 = 0x0D; // 我司H264视频编码格式
|
||||
public static final int VIDEO_ENCODE_TYPE_RY_H265 = 0x0E; // 我司H265视频编码格式
|
||||
}; |
||||
|
||||
public static class ENUM_STREAM_PACKAGE_TYPE extends Structure |
||||
{ |
||||
public static final int STREAM_PACKAGE_TYPE_UNKNOWN = 0x00; // 未知码流
|
||||
public static final int STREAM_PACKAGE_TYPE_MPEG4 = 0x01; // MPEG4
|
||||
|
||||
public static final int STREAM_PACKAGE_TYPE_AUDIO = 0x06; // 音频
|
||||
public static final int STREAM_PACKAGE_TYPE_PS = 0x07; // PS(MPEG-2)
|
||||
|
||||
public static final int STREAM_PACKAGE_TYPE_ASF = 0x09; // ASF
|
||||
|
||||
public static final int STREAM_PACKAGE_TYPE_TS = 0x0C; // TS(MPEG-2)
|
||||
public static final int STREAM_PACKAGE_TYPE_SVC = 0x0D; // SVC
|
||||
public static final int STREAM_PACKAGE_TYPE_AVI = 0x0E; // AVI
|
||||
public static final int STREAM_PACKAGE_TYPE_MP4 = 0x0F; // MP4
|
||||
public static final int STREAM_PACKAGE_TYPE_CGI = 0x10; // CGI
|
||||
public static final int STREAM_PACKAGE_TYPE_WAV = 0x11; // WAV音频
|
||||
public static final int STREAM_PACKAGE_TYPE_FLV = 0x12; // FLV
|
||||
|
||||
public static final int STREAM_PACKAGE_TYPE_RYMS = 0x13; // 我司码流
|
||||
|
||||
public static final int STREAM_PACKAGE_TYPE_MKV = 0x14; // MKV
|
||||
public static final int STREAM_PACKAGE_TYPE_RTP = 0x15; // RTP
|
||||
public static final int STREAM_PACKAGE_TYPE_RAW_MPEG4 = 0x16; // MPEG4裸码流
|
||||
public static final int STREAM_PACKAGE_TYPE_RAW_H264 = 0x17; // H264裸码流
|
||||
public static final int STREAM_PACKAGE_TYPE_RAW_H265 = 0x18; // H265裸码流
|
||||
public static final int STREAM_PACKAGE_TYPE_WMV = 0x19; // WMV
|
||||
public static final int STREAM_PACKAGE_TYPE_RAW_MPEG2 = 0x20; // MPEG2裸码流
|
||||
public static final int STREAM_PACKAGE_TYPE_RAW_SVAC = 0x21; // SVAC裸码流
|
||||
public static final int STREAM_PACKAGE_TYPE_MOV = 0x22; // MOV
|
||||
public static final int STREAM_PACKAGE_TYPE_VOB = 0x23; // VOB
|
||||
}; |
||||
|
||||
// 数据帧的分析方式
|
||||
public static class SA_DD_PARSE_TYPE extends Structure |
||||
{ |
||||
public static final int DD_PARSE_TYPE_UNKNOWN = -1; // 未知类型
|
||||
|
||||
public static final int DD_PARSE_TYPE_INTL = 0x63; // 智能帧物体类型
|
||||
|
||||
public static final int DD_PARSE_TYPE_MOTION = 0x65; // 动检帧类型
|
||||
}; |
||||
|
||||
// 智能帧物体无类型
|
||||
public static class SA_DD_INTL_OBJECT_TYPE extends Structure |
||||
{ |
||||
public static final int DD_INITL_OBJECT_UNKNOWN = -1; // 未知物体
|
||||
|
||||
public static final int DD_INITL_OBJECT_FACE = 0x30; // 人脸物体
|
||||
|
||||
public static final int DD_INITL_OBJECT_TRAFFIC = 0x40; // 交通物体
|
||||
|
||||
public static final int DD_INITL_OBJECT_BODY = 0x50; // 人形物体
|
||||
|
||||
public static final int DD_INITL_OBJECT_GOODS = 0x51; // 商品
|
||||
}; |
||||
} |
@ -0,0 +1,632 @@
@@ -0,0 +1,632 @@
|
||||
package sdk.java.lib.playmanager; |
||||
|
||||
import com.sun.jna.Library; |
||||
import com.sun.jna.Native; |
||||
import com.sun.jna.Pointer; |
||||
import com.sun.jna.ptr.DoubleByReference; |
||||
import com.sun.jna.ptr.IntByReference; |
||||
|
||||
import sdk.java.lib.PlatUtils; |
||||
import sdk.java.lib.playmanager.PlayDelegates.fGetIVSInfoCallBack; |
||||
import sdk.java.lib.playmanager.PlayDelegates.fAudioCallBack; |
||||
import sdk.java.lib.playmanager.PlayDelegates.fDecodeCallBack; |
||||
import sdk.java.lib.playmanager.PlayDelegates.fDisplayCallBack; |
||||
import sdk.java.lib.playmanager.PlayDelegates.fFileEndCallBack; |
||||
import sdk.java.lib.playmanager.PlayDelegates.fGetWaterMarkInfoCallBack; |
||||
import sdk.java.lib.playmanager.PlayDelegates.fGetWaterMarkInfoCallBackEx; |
||||
import sdk.java.lib.playmanager.PlayDelegates.fRegDrawCallBack; |
||||
|
||||
public interface PlayLib extends Library |
||||
{ |
||||
public static String ry_play_library_name = "playmanager"; |
||||
PlayLib instance = (PlayLib)Native.loadLibrary(PlatUtils.sdk_plat_getLoadLibrary(ry_play_library_name), PlayLib.class); |
||||
|
||||
//////////////////////////////////////////////////////////////////////////////////////////////
|
||||
/********************************************************************************** |
||||
函数: PlayMS_SetLogOption |
||||
参数: [in] BYTE byOption: 日志选项 |
||||
返回值: 成功返回TRUE, 失败返回FALSE |
||||
说明: |
||||
**********************************************************************************/ |
||||
public boolean PlayMS_SetLogOption(int byOption); |
||||
|
||||
/********************************************************************************** |
||||
函数: PlayMS_Play |
||||
参数: [in] int nPort: 通道号 |
||||
[in] HWND hWnd: 播放窗口句柄 |
||||
返回值: 成功返回TRUE, 失败返回FALSE |
||||
说明: 开始播放。 如果当前已经是播放状态,则恢复到正常播放速度。 |
||||
在解码线程中,如果窗口句柄为NULL,不显示画面,但不影响解码。 |
||||
**********************************************************************************/ |
||||
public boolean PlayMS_Play(int nPort, Pointer hWnd); |
||||
|
||||
/********************************************************************************** |
||||
函数: PlayMS_Stop |
||||
参数: [in] int nPort: 通道号 |
||||
返回值: 成功返回TRUE, 失败返回FALSE |
||||
说明: 停止播放。 |
||||
**********************************************************************************/ |
||||
public boolean PlayMS_Stop(int nPort); |
||||
|
||||
/********************************************************************************** |
||||
函数: PlayMS_GetCurrentFrameRate |
||||
参数: [in] int nPort: 通道号 |
||||
返回值: 当前帧率 |
||||
说明: 获取当前帧率。 |
||||
**********************************************************************************/ |
||||
public int PlayMS_GetCurrentFrameRate(int nPort); |
||||
|
||||
/********************************************************************************** |
||||
函数: PlayMS_SetIVSCallBack |
||||
参数: [in] nPort 解码通道 |
||||
[in] pGetIVSInfoCB 设置解码回调 |
||||
pBuf 数据指针 |
||||
nType 数据类型 |
||||
nLen 数据大小 |
||||
nRealLen 数据真实大小 |
||||
pReserved 保留参数 |
||||
pUserData 用户自定义数据 |
||||
[in] pUserData 用户自定义数据 |
||||
返回: 成功返回TRUE, 失败返回FALSE |
||||
说明: 设置IVS回调 |
||||
**********************************************************************************/ |
||||
public boolean PlayMS_SetIVSCallBack(int nPort, fGetIVSInfoCallBack pGetIVSInfoCB, Pointer pUserData); |
||||
|
||||
/********************************************************************************** |
||||
函数: PlayMS_GetCurrentFrameRate |
||||
参数: [in] int nPort: 通道号 |
||||
[out] double *pBitRate: 实时码率值 |
||||
返回值: 实时码率 |
||||
说明: 获取实时码率。 |
||||
**********************************************************************************/ |
||||
public boolean PlayMS_GetRealFrameBitRate(int nPort, DoubleByReference pBitRate); |
||||
|
||||
/********************************************************************************** |
||||
函数: PlayMS_GetPictureSize |
||||
参数: [in] int nPort: 通道号 |
||||
[in] int *pWidth: 图片宽度 |
||||
[in] int *pHeight: 图片高度 |
||||
返回值: 成功返回TRUE, 失败返回FALSE |
||||
说明: 获取码流中原始图像的大小,该函数只有当播放开始后才能获取准确的值。 |
||||
**********************************************************************************/ |
||||
public boolean PlayMS_GetPictureSize(int nPort, IntByReference pWidth, IntByReference pHeight); |
||||
|
||||
/********************************************************************************** |
||||
函数: PlayMS_GetStreamOpenMode |
||||
参数: [in] int nPort: 通道号 |
||||
返回值: 成功返回流模式,失败返回-1 |
||||
说明: 获取码流打开模式。 |
||||
0 - STREAM_TYPE_REALTIME(实时流模式) |
||||
1 - STREAM_TYPE_FILE(文件流模式) |
||||
**********************************************************************************/ |
||||
public int PlayMS_GetStreamOpenMode(int nPort); |
||||
|
||||
/********************************************************************************** |
||||
函数: PlayMS_SetStreamOpenMode |
||||
参数: [in] int nPort: 通道号 |
||||
[in] int nMode: 播放模式 |
||||
返回值: 成功返回TRUE, 失败返回FALSE |
||||
说明: 设置码流打开模式,需在PlayMS_Play之前调用 |
||||
**********************************************************************************/ |
||||
public boolean PlayMS_SetStreamOpenMode(int nPort, int dwMode); |
||||
|
||||
/********************************************************************************** |
||||
函数: boolean PlayMS_GetFreePort |
||||
参数: [out] int *pnPort 通道号 |
||||
返回值: 成功返回TRUE, 失败返回FALSE |
||||
说明: 获取未使用的通道号,通道号的上限为500。 |
||||
通过该通道号来区分不同路的视频,与PlayMS_ReleasePort匹对使用。 |
||||
**********************************************************************************/ |
||||
public boolean PlayMS_GetFreePort(IntByReference pnPort); |
||||
|
||||
/********************************************************************************** |
||||
函数: BOOL PlayMS_ReleasePort |
||||
参数: [in] int nPort 通道号 |
||||
返回值: 成功返回TRUE, 失败返回FALSE |
||||
说明: 释放通道号,与PlayMS_GetFreePort匹对使用。 |
||||
**********************************************************************************/ |
||||
public boolean PlayMS_ReleasePort(int nPort); |
||||
|
||||
/********************************************************************************** |
||||
函数: PlayMS_ResetSourceBuffer |
||||
参数: [in] int nPort: 通道号 |
||||
返回值: 成功返回TRUE, 失败返回 FLASE. |
||||
说明: 清空流播放模式下源缓冲数据,一般在关闭码流后调用。 |
||||
**********************************************************************************/ |
||||
public boolean PlayMS_ResetSourceBuffer(int nPort); |
||||
|
||||
/********************************************************************************** |
||||
函数: PlayMS_RegisterDrawCallBack |
||||
描述: 注册一个画图函数 |
||||
参数: [in]nPort 端口号 |
||||
[in]fRegDrawCB 绘图回调函数 |
||||
nPort 端口号 |
||||
hDc 绘图设备上下文句柄 |
||||
pUserData 用户参数 |
||||
[in]pUserData 回调函数的用户参数 |
||||
返回值: 成功返回TRUE, 失败返回FALSE |
||||
说明: 注册一个绘图回调函数,用户可以在该绘图回调函数中绘制用户私有数据, |
||||
如用户可以在视频表面绘制一个矩形框。绘图回调函数中不能作过多操作, |
||||
否则会由于该类操作消耗过多时间,从而导致视频实时性受到影响。 |
||||
**********************************************************************************/ |
||||
public boolean PlayMS_RegisterDrawCallBack(int nPort, fRegDrawCallBack fRegDrawCB, Pointer pUserData); |
||||
|
||||
/********************************************************************************** |
||||
函数: PlayMS_OpenStream |
||||
参数: [in] int nPort: 通道号 |
||||
[in] int nBufPoolSize: 设置码流数据的缓冲区大小, |
||||
范围是[SOURCE_BUF_MIN~ SOURCE_BUF_MAX] |
||||
如果码流数据较均匀,可调小该值; |
||||
如果码流数据不均匀,可调大该值。 |
||||
返回值: 成功返回TRUE, 失败返回FALSE |
||||
说明: 打开码流播放。 |
||||
**********************************************************************************/ |
||||
public boolean PlayMS_OpenStream(int nPort, int nBufPoolSize); |
||||
|
||||
/********************************************************************************** |
||||
函数: BOOL PlayMS_CloseStream(int nPort) |
||||
参数: [in] int nPort: 通道号 |
||||
返回值: 成功返回TRUE, 失败返回FALSE |
||||
说明: 关闭码流播放。 |
||||
**********************************************************************************/ |
||||
public boolean PlayMS_CloseStream(int nPort); |
||||
|
||||
/********************************************************************************** |
||||
函数: PlayMS_InputData |
||||
参数: [in] int nPort: 通道号 |
||||
[in] PBYTE pBuf: 缓冲区数据地址 |
||||
[in] int nSize: 缓冲区数据大小 |
||||
返回值: 成功返回TRUE, 失败返回FALSE。 |
||||
说明: 输入数据流,需在打开流(PlayMS_OpenStream)且播放(PlayMS_Play)后才能输入数据。 |
||||
如果返回FALSE,很可能是缓冲区溢满,可等待一会儿再输入数据,或者扩大缓冲区。 |
||||
**********************************************************************************/ |
||||
public boolean PlayMS_InputData(int nPort, Pointer pBuf, int nSize); |
||||
|
||||
/********************************************************************************** |
||||
函数: PlayMS_SetDecodeCallBack |
||||
参数: [in] int nPort: 通道号 |
||||
[in] fDecodeCallBack fDecCB: 解码回调函数指针 |
||||
nPort: 通道号 |
||||
pFrameDecodeInfo: 帧内容 |
||||
pFrameInfo: 帧信息 |
||||
pUser: 用户参数 |
||||
[in] Pointer pUser: 用户自定义参数 |
||||
返回值: 成功返回TRUE, 失败返回FALSE |
||||
说明: 设置解码数据回调,适用于只解码不显示的情况。 |
||||
需在PlayMS_Play之后调用,在调用PlayMS_Stop之后自动失效 |
||||
**********************************************************************************/ |
||||
public boolean PlayMS_SetDecodeCallBack(int nPort, fDecodeCallBack fDecCB, Pointer pUserData); |
||||
|
||||
/********************************************************************************** |
||||
函数: PlayMS_SetVisibleDecodeCallBack |
||||
参数: [in] int nPort: 通道号 |
||||
[in] fDecodeCallBack fDecCB: 解码回调函数指针 |
||||
nPort: 通道号 |
||||
pFrameDecodeInfo: 帧内容 |
||||
pFrameInfo: 帧信息 |
||||
pUser: 用户参数 |
||||
[in] Pointer pUserData: 用户自定义参数 |
||||
返回值: 成功返回TRUE, 失败返回FALSE |
||||
说明: 设置解码数据回调,适用于解码且显示的情况。 |
||||
需在PlayMS_Play之后调用,在调用PlayMS_Stop之后自动失效 |
||||
**********************************************************************************/ |
||||
public boolean PlayMS_SetVisibleDecodeCallBack(int nPort, fDecodeCallBack fDecCB, Pointer pUserData); |
||||
|
||||
/********************************************************************************** |
||||
函数: PlayMS_SetDisplayCallBack |
||||
参数: [in] int nPort: 通道号 |
||||
[in] fDisplayCallBack fDisplayCB: 显示回调函数指针 |
||||
nPort: 通道号 |
||||
pYuvBuf: 视频帧 YUV 数据 |
||||
nYuvSize: YUV 数据大小 |
||||
nWidth: 画面宽,单位像素 |
||||
nHeight: 画面高,单位像素 |
||||
nStamp: 时间戳信息 |
||||
nType: 视频帧类型, TYPE_IYUV, TYPE_AUDIODATA_16, TYPE_RGB32 |
||||
pReserved: 保留参数 |
||||
[in] Pointer pUserData: 用户自定义参数 |
||||
返回值: 成功返回TRUE, 失败返回FALSE |
||||
说明: 设置视频抓图回调函数。当用户想得到一段时间内的抓图数据,可调用该函数。 |
||||
当将回调函数设置为NULL时, 停止函数回调。 |
||||
其中设置的回调函数,只有在有解码数据时才被调用,并由用户处理抓图数据。 |
||||
该函数可在任何时候调用 |
||||
**********************************************************************************/ |
||||
public boolean PlayMS_SetDisplayCallBack(int nPort, fDisplayCallBack fDisplayCB, Pointer pUserData); |
||||
|
||||
/********************************************************************************** |
||||
函数: PlayMS_CatchPic |
||||
参数: [in] int nPort: 通道号 |
||||
[in] char* sFileName: 图片的文件名称 |
||||
返回值: 成功返回TRUE, 失败返回FALSE |
||||
说明: 抓图,当用户想实现一次抓一张图,可调用该函数。 |
||||
该函数在视频暂停、单帧播放时也可使用。 |
||||
**********************************************************************************/ |
||||
public boolean PlayMS_CatchPic(int nPort, String sFileName); |
||||
|
||||
/********************************************************************************** |
||||
函数: PlayMS_SetPlayMethod |
||||
参数: [in] int nPort: 通道号 |
||||
[in] int nStartTime: 开始播放的时间(ms) |
||||
[in] int nSlowTime: 开始慢放的时间(ms) |
||||
[in] int nFastTime: 开始快放的时间(ms) |
||||
[in] int nFailedTime: 失败时间,超过该时间则数据投递失败(ms) |
||||
返回值: 成功返回TRUE, 失败返回FALSE |
||||
说明: 设置播放的方法策略,该函数只有在实时码流时调用才有效。 |
||||
**********************************************************************************/ |
||||
public boolean PlayMS_SetPlayMethod(int nPort, int nStartTime, int nSlowTime, int nFastTime, int nFailedTime); |
||||
|
||||
/********************************************************************************** |
||||
函数: PlayMS_SetDecCBStream |
||||
参数: [in] int nPort: 通道号 |
||||
[in] int dwStream: 码流类型,1为视频流,2为音频流,3为复合流 |
||||
返回值: 成功返回TRUE, 失败返回FALSE |
||||
说明: 设置解码回调的码流类型,该函数需在PlayMS_Play之前调用 |
||||
**********************************************************************************/ |
||||
public boolean PlayMS_SetDecCBStream(int nPort, int dwStream); |
||||
|
||||
/********************************************************************************** |
||||
函数: PlayMS_SetAudioCallBack |
||||
参数: [in] int nPort: 通道号 |
||||
[in] fAudioCallBack fAudioCB: 音频回调函数指针 |
||||
nPort: 通道号 |
||||
pAudioBuf: 音频缓存数据 |
||||
nSize: 缓存数据大小 |
||||
nStamp: 时标信息,单位毫秒 |
||||
nType: 音频数据类型 |
||||
8位音频数据类型 TYPE_AUDIO_DATA_8 = 100, |
||||
16位音频数据类型 TYPE_AUDIO_DATA_16 = 101, |
||||
pUserData: 用户参数 |
||||
[in] Pointer pUserData: 用户参数 |
||||
返回值: 成功返回TRUE, 失败返回FALSE |
||||
说明: 设置音频解码数据回调 |
||||
**********************************************************************************/ |
||||
public boolean PlayMS_SetAudioCallBack(int nPort, fAudioCallBack fAudioCB, Pointer pUserData); |
||||
|
||||
/********************************************************************************** |
||||
函数: PlayMS_StartDataRecord |
||||
参数: [in] int nPort: 通道号 |
||||
[in] char *sFileName: 录像文件名, |
||||
如果文件名中有不存在的文件夹,就创建该文件夹 |
||||
[in] int nDataType: 0表示原始视频流; 1表示转换成AVI格式; |
||||
2表示转换成ASF格式; 3分段保存文件 |
||||
返回值: 成功返回TRUE, 失败返回FALSE |
||||
说明: 开始流数据录像,该函数需在PlayMS_Play之后调用,只有在实时码流时调用才有效 |
||||
**********************************************************************************/ |
||||
public boolean PlayMS_StartDataRecord(int nPort, String sFileName, int nDataType); |
||||
|
||||
/********************************************************************************** |
||||
函数: PlayMS_WriteData |
||||
参数: [in] int nPort: 通道号 |
||||
[in] PBYTE pBuf: 码流数据 |
||||
[in] int nSize: 码流大小 |
||||
返回值: 成功返回TRUE, 失败返回FALSE |
||||
说明: 保存原始码流数据 |
||||
**********************************************************************************/ |
||||
public boolean PlayMS_WriteData(int nPort, byte pBuf, int nSize); |
||||
|
||||
/********************************************************************************** |
||||
函数: BOOL PlayMS_StopDataRecord(int nPort) |
||||
参数: [in] int nPort: 通道号 |
||||
返回值: 成功返回TRUE, 失败返回FALSE |
||||
说明: 停止流数据录像 |
||||
**********************************************************************************/ |
||||
public boolean PlayMS_StopDataRecord(int nPort); |
||||
|
||||
/********************************************************************************** |
||||
函数: PlayMS_QueryInfo |
||||
[in] int nPort: 通道号 |
||||
[in] int nQueryType: 指定查询类型,主要类型如下: |
||||
PlayMS_QueryTime 编码中时间信息 |
||||
PlayMS_QueryFileRate 帧率信息 |
||||
PlayMS_QueryMediaInfo 媒体信息 |
||||
PlayMS_QueryRenderNum 当前要渲染的帧号,上一帧的帧号 |
||||
PlayMS_QueryRenderTime 当前要渲染的时间 |
||||
PlayMS_QuerySrcTime 视频源中的时间信息 |
||||
PlayMS_QueryCurRenderNum 当前帧号 |
||||
PlayMS_QueryRenderPTS 当前时间戳 |
||||
[out] char* pBuffer: 存放查询到的缓冲数据 |
||||
[in] int nBufLen: 输入的缓冲区大小 |
||||
[out] int* pRetLen: 存放查询的有效数据大小 |
||||
返回值: 成功返回TRUE, 失败返回FALSE |
||||
说明: 查询指定通道的时间、帧率等信息 |
||||
**********************************************************************************/ |
||||
public boolean PlayMS_QueryInfo(int nPort, int nQueryType, Pointer pBuffer, int nBufLen, IntByReference pRetLen); |
||||
|
||||
/********************************************************************************** |
||||
函数: PlayMS_CreateStream |
||||
参数: [in] int nBufPoolSize: 设置码流数据的缓冲区大小 |
||||
范围是[MIN_SOURCE_BUF_SIZE, MAX_SOURCE_BUF_SIZE]. |
||||
返回值: 成功返回TRUE, 失败返回FALSE |
||||
说明: 分配空闲通道号并打开码流,就是PlayMS_GetFreePort和PlayMS_OpenStream接口的合集 |
||||
**********************************************************************************/ |
||||
public int PlayMS_CreateStream(int nBufPoolSize); |
||||
|
||||
/********************************************************************************** |
||||
函数: PlayMS_DestroyStream |
||||
参数: [in] int nPort: 通道号 |
||||
返回值: 成功返回TRUE, 失败返回FALSE |
||||
说明: 关闭码流并释放申请的通道号 |
||||
**********************************************************************************/ |
||||
public boolean PlayMS_DestroyStream(int nPort); |
||||
|
||||
/********************************************************************************** |
||||
函数: BOOL PlayMS_OpenFile(int nPort, LPSTR sFileName) |
||||
参数: [in] int nPort: 通道号 |
||||
[in] LPSTR sFileName: 文件名 |
||||
返回值: 成功返回TRUE, 失败返回FALSE |
||||
说明: 打开文件,需在PlayMS_Play之前调用。 |
||||
**********************************************************************************/ |
||||
public boolean PlayMS_OpenFile(int nPort, String sFileName); |
||||
|
||||
/********************************************************************************** |
||||
函数: BOOL PlayMS_CloseFile(int nPort) |
||||
参数: [in] int nPort: 通道号 |
||||
返回值: 成功返回TRUE, 失败返回FALSE |
||||
说明: 关闭文件,需在PlayMS_Stop之后调用。 |
||||
**********************************************************************************/ |
||||
public boolean PlayMS_CloseFile(int nPort); |
||||
|
||||
/********************************************************************************** |
||||
函数: BOOL PlayMS_Pause(int nPort, int nPause) |
||||
参数: [in] int nPort: 通道号 |
||||
[in] int nPause: 1为暂停,0为恢复播放 |
||||
返回值: 成功返回TRUE, 失败返回FALSE |
||||
说明: 暂停播放, 或者恢复播放。 |
||||
**********************************************************************************/ |
||||
public boolean PlayMS_Pause(int nPort,int nPause); |
||||
|
||||
/********************************************************************************** |
||||
函数: PlayMS_Fast |
||||
参数: [in] int nPort: 通道号 |
||||
返回值: 成功返回TRUE, 失败返回FALSE |
||||
说明: 播放提速。每调用一次,播放速度乘2,播放速度范围为[1/64,64] |
||||
调用PlayMS_Play后从当前位置恢复到正常播放速度 |
||||
**********************************************************************************/ |
||||
public boolean PlayMS_Fast(int nPort); |
||||
|
||||
/********************************************************************************** |
||||
函数: PlayMS_Slow |
||||
参数: [in] int nPort: 通道号 |
||||
返回值: 成功返回TRUE, 失败返回FALSE |
||||
说明: 播放减速。每调用一次,播放速度除2,播放速度范围为[1/64, 64]。 |
||||
调用PlayMS_Play后从当前位置恢复到正常播放速度 |
||||
**********************************************************************************/ |
||||
public boolean PlayMS_Slow(int nPort); |
||||
|
||||
/********************************************************************************** |
||||
函数: PlayMS_SetPlaySpeed |
||||
参数: [in] int nPort: 通道号 |
||||
[in] float fCoff: 播放速度,范围为[1/64,64] |
||||
返回值: 成功返回TRUE, 失败返回FALSE |
||||
说明: 设置视频播放速度 |
||||
**********************************************************************************/ |
||||
public boolean PlayMS_SetPlaySpeed(int nPort, float fCoff); |
||||
|
||||
/********************************************************************************** |
||||
函数: PlayMS_OneByOne |
||||
参数: [in] int nPort: 通道号 |
||||
返回值: 成功返回TRUE, 失败返回FALSE |
||||
说明: 单帧播放,每调用一次播放一帧。调用PlayMS_Play后恢复正常播放 |
||||
**********************************************************************************/ |
||||
public boolean PlayMS_OneByOne(int nPort); |
||||
|
||||
/********************************************************************************** |
||||
函数: PlayMS_SetPlayPos |
||||
参数: [in] int nPort: 通道号 |
||||
[in] float fRelativePos: 文件长度的百分比 |
||||
返回值: 成功返回TRUE, 失败返回FALSE |
||||
说明: 设置播放文件的相对位置(百分比)。需在PlayMS_Play之后调用 |
||||
**********************************************************************************/ |
||||
public boolean PlayMS_SetPlayPos(int nPort, float fRelativePos); |
||||
|
||||
/********************************************************************************** |
||||
函数: PlayMS_SetPlayDirection |
||||
参数: [in] int nPort: 通道号 |
||||
[in] int nDirection: 播放方向(0: 向前,1: 向后) |
||||
返回值: 成功返回TRUE, 失败返回FALSE |
||||
说明: 设置视频文件的播放方向 |
||||
**********************************************************************************/ |
||||
public boolean PlayMS_SetPlayDirection(int nPort, int nDirection); |
||||
|
||||
/********************************************************************************** |
||||
函数: PlayMS_GetPlayPos |
||||
参数: [in] int nPort: 通道号 |
||||
返回值: 成功返回TRUE, 失败返回FALSE |
||||
说明: 获取播放文件的相对位置(百分比)。需在PlayMS_Play之后调用 |
||||
**********************************************************************************/ |
||||
public float PlayMS_GetPlayPos(int nPort); |
||||
|
||||
/********************************************************************************** |
||||
函数: PlayMS_SetVolume |
||||
参数: [in] int nPort: 通道号 |
||||
[in] short nVolum: 音量值,范围为[0,0xFFFF] |
||||
返回值: 成功返回TRUE, 失败返回FALSE |
||||
说明: 设置音量大小。该接口设置的音量是声卡输出的主音量, |
||||
会对其他应用的音量有影响 |
||||
**********************************************************************************/ |
||||
public boolean PlayMS_SetVolume(int nPort, short nVolume); |
||||
|
||||
/********************************************************************************** |
||||
函数: PlayMS_GetVolume |
||||
参数: [in] int nPort: 通道号 |
||||
返回值: 成功返回音量值,失败返回值 <= 0 |
||||
说明: 获取声卡输出的音量 |
||||
**********************************************************************************/ |
||||
public short PlayMS_GetVolume(int nPort); |
||||
|
||||
/********************************************************************************** |
||||
函数: PlayMS_PlaySound |
||||
参数: [in] int nPort: 通道号 |
||||
返回值: 成功返回TRUE, 失败返回FALSE |
||||
说明: 以独占方式打开声音。也就是一次只能打开一路声音。 |
||||
如果打开当前的声音,则自动关闭之前已经打开的声音。 |
||||
建议和PlayMS_StopSound匹配使用 |
||||
**********************************************************************************/ |
||||
public boolean PlayMS_PlaySound(int nPort); |
||||
|
||||
/********************************************************************************** |
||||
函数: PlayMS_StopSound |
||||
参数: 无 |
||||
返回值: 成功返回TRUE, 失败返回FALSE |
||||
说明: 关闭声音 |
||||
**********************************************************************************/ |
||||
public boolean PlayMS_StopSound(); |
||||
|
||||
/********************************************************************************** |
||||
函数: PlayMS_GetFileTime |
||||
参数: [in] int nPort: 通道号 |
||||
返回值: 四舍五入后文件时长的长度值 |
||||
说明: 获取文件的总时长,单位为秒。需在PlayMS_Play之后调用 |
||||
**********************************************************************************/ |
||||
public int PlayMS_GetFileTime(int nPort); |
||||
|
||||
/********************************************************************************** |
||||
函数: PlayMS_GetPlayedTime |
||||
参数: [in] int nPort: 通道号 |
||||
返回值: 成功时返回文件已播放时间,失败时返回0 |
||||
说明: 获取文件已播放的时间,单位为秒。需在PlayMS_Play之后调用 |
||||
**********************************************************************************/ |
||||
public int PlayMS_GetPlayedTime(int nPort); |
||||
|
||||
/********************************************************************************** |
||||
函数: PlayMS_GetPlayedTimeEx |
||||
参数: [in] int nPort: 通道号 |
||||
返回值: 成功返回TRUE, 失败返回FALSE |
||||
说明: 获取文件当前播放的时间,单位为毫秒。需在PlayMS_Play之后调用 |
||||
**********************************************************************************/ |
||||
public int PlayMS_GetPlayedTimeEx(int nPort); |
||||
|
||||
/********************************************************************************** |
||||
函数: PlayMS_GetPlayedFrames |
||||
参数: [in] int nPort: 通道号 |
||||
返回值: 文件已经解码的帧数 |
||||
说明: 获取文件已经解码的帧数 |
||||
**********************************************************************************/ |
||||
public int PlayMS_GetPlayedFrames(int nPort); |
||||
|
||||
/********************************************************************************** |
||||
函数: PlayMS_GetFileTotalFrames |
||||
参数: [in] int nPort: 通道号 |
||||
返回值: 文件总帧数 |
||||
说明: 获取文件的总帧数。需在PlayMS_Play之后调用 |
||||
**********************************************************************************/ |
||||
public int PlayMS_GetFileTotalFrames(int nPort); |
||||
|
||||
/********************************************************************************** |
||||
函数: BOOL PlayMS_SetPlayedTimeEx(int nPort,int nTime) |
||||
参数: [in] int nPort: 通道号 |
||||
[in] int nTime: 播放时间 |
||||
返回值: 成功返回TRUE, 失败返回FALSE |
||||
说明: 设置文件播放到指定时间,单位为毫秒。需在PlayMS_Play之后调用 |
||||
**********************************************************************************/ |
||||
public boolean PlayMS_SetPlayedTimeEx(int nPort, int nTime); |
||||
|
||||
/********************************************************************************** |
||||
函数: int PlayMS_GetCurrentFrameNum(int nPort) |
||||
参数: [in] int nPort: 通道号 |
||||
返回值: 文件当前播放的帧序号 |
||||
说明: 获取文件当前播放的帧序号。 |
||||
如果视频不丢失,该数值接近PlayMS_GetPlayedFrames的返回值 |
||||
**********************************************************************************/ |
||||
public int PlayMS_GetCurrentFrameNum(int nPort); |
||||
|
||||
/********************************************************************************** |
||||
函数: int PlayMS_SetCurrentFrameNum(int nPort,int nFrameNum) |
||||
参数: [in] int nPort: 通道号 |
||||
[in] int nFrameNum: 帧序号 |
||||
返回值: 成功返回TRUE,失败返回FALSE |
||||
说明: 设置文件当前播放的帧序号 |
||||
**********************************************************************************/ |
||||
public boolean PlayMS_SetCurrentFrameNum(int nPort,int nFrameNum); |
||||
|
||||
/********************************************************************************** |
||||
函数: PlayMS_SetFileEndCallBack |
||||
参数: [in] int nPort: 通道号 |
||||
[in] fFileEndCallBack fFileEndCB: 回调函数指针 |
||||
nPort 通道号 |
||||
pUserData 用户自定义参数 |
||||
[in] Pointer pUserData: 用户自定义参数 |
||||
返回值: 成功返回TRUE, 失败返回FALSE |
||||
说明: 设置文件结束回调。当文件播放结束时,触发回调函数。 |
||||
需在PlayMS_OpenSteam或PlayMS_OpenFile之前调用 |
||||
**********************************************************************************/ |
||||
public boolean PlayMS_SetFileEndCallBack(int nPort, fFileEndCallBack pFileEndCBFun, Pointer pUserData); |
||||
|
||||
/********************************************************************************** |
||||
函数: PlayMS_SetFileEndMsg |
||||
参数: [in] int nPort: 通道号 |
||||
[in] HWND hWnd: 消息发送窗口 |
||||
[in] UINT nMsg: 用户自定义需发送的消息数据 |
||||
返回值: 成功返回TRUE, 失败返回FALSE |
||||
说明: 设置文件播放结束时,用户自定义发送的消息 |
||||
**********************************************************************************/ |
||||
public boolean PlayMS_SetFileEndMsg(int nPort, Pointer hWnd, int nMsg); |
||||
|
||||
/********************************************************************************** |
||||
函数: PlayMS_SetWaterMarkCallBack |
||||
描述: 设置水印数据回调。注意:水印校验回调设置后将不会进行解码显示 |
||||
参数: nPort 端口号 |
||||
pFunc 水印信息获取回调函数, 参数含义如下: |
||||
pBuf 水印数据buffer指针 |
||||
nKey 区分不同水印信息 |
||||
nLen 缓冲的最大长度 |
||||
nRealLen 缓冲的实际长度 |
||||
nType 数值范围[0,3],含义如下 |
||||
0 I帧帧数据水印信息 |
||||
1 帧水印 |
||||
2 水印校验 |
||||
3 智能分析帧 |
||||
pUserData 用户自定义参数 |
||||
pUserData 用户自定义参数 |
||||
返回: 成功返回TRUE,失败返回FALSE. |
||||
**********************************************************************************/ |
||||
public boolean PlayMS_SetWaterMarkCallBack(int nPort, fGetWaterMarkInfoCallBack pFunc, Pointer pUserData); |
||||
|
||||
/********************************************************************************** |
||||
函数: PlayMS_SetWaterMarkCallBackEx |
||||
描述: 设置水印数据回调(成功后解码不显示) |
||||
参数: nPort 端口号 |
||||
pGetWaterMarkCB 函数指针, 参数含义如下: |
||||
nPort 端口号 |
||||
buf 水印数据缓冲 |
||||
lTimeStamp 水印的时间戳 |
||||
lInfoType 水印信息类型 |
||||
len 缓冲的最大长度 |
||||
reallen 缓冲的实际长度 |
||||
lCheckResult 1-没有错误; 2-水印错误; 3-帧数据错误; 4-帧号错误 |
||||
pUserData 用户自定义参数 |
||||
pUserData 用户自定义参数 |
||||
返回: 成功返回TRUE,失败返回FALSE. |
||||
**********************************************************************************/ |
||||
public boolean PlayMS_SetWaterMarkCallBackEx(int nPort, fGetWaterMarkInfoCallBackEx pGetWaterMarkCB, Pointer pUserData); |
||||
|
||||
/********************************************************************************** |
||||
函数: PlayMS_ImageWatermarkCheck |
||||
参数: [in] String pImagePath: 图片本地路径 |
||||
返回值: 成功返回TRUE, 失败返回FALSE |
||||
说明: 图片水印校验 |
||||
**********************************************************************************/ |
||||
public boolean PlayMS_ImageWatermarkCheck(final String pImagePath); |
||||
|
||||
/********************************************************************************** |
||||
函数: PlayMS_RenderPrivateData |
||||
描述: 显示智能数据图形 |
||||
参数: nPort 端口号 |
||||
bShow 1 显示,0 不显示 |
||||
nReserved 保留参数 |
||||
返回: 成功返回TRUE,失败返回FALSE. |
||||
**********************************************************************************/ |
||||
public boolean PlayMS_RenderPrivateData(int nPort, int bShow, int nReserved); |
||||
|
||||
/********************************************************************************** |
||||
函数: PlayMS_SetRenderShapeLineType |
||||
描述: 设置渲染类型使能 |
||||
参数: nPort 端口号 |
||||
nRenderType 渲染类型 |
||||
ENUM_RENDER_TYPE |
||||
bEnable |
||||
LINE_TYPE_SOLID_WHOLE = 0x00: 实线,LINE_TYPE_SOLID_HALF - 0x01: 半线 |
||||
返回: 成功返回TRUE,失败返回FALSE. |
||||
**********************************************************************************/ |
||||
public boolean PlayMS_SetRenderTypeEnable(int nPort, int nRenderType, int bEnable); |
||||
}; |
@ -0,0 +1,303 @@
@@ -0,0 +1,303 @@
|
||||
package sdk.java.lib.playmanager; |
||||
|
||||
import java.util.Arrays; |
||||
import java.util.List; |
||||
|
||||
import com.sun.jna.Pointer; |
||||
import com.sun.jna.Structure; |
||||
|
||||
import sdk.java.lib.LLONG; |
||||
|
||||
public class PlayStructs { |
||||
|
||||
//////////////////////////////////////////////////////////////////////////////////////
|
||||
public static class SYSTEMTIME extends Structure |
||||
{ |
||||
public short wYear; |
||||
public short wMonth; |
||||
public short wDayOfWeek; |
||||
public short wDay; |
||||
public short wHour; |
||||
public short wMinute; |
||||
public short wSecond; |
||||
public short wMilliseconds; |
||||
|
||||
protected List<String> getFieldOrder() |
||||
{ |
||||
return Arrays.asList(new String [] {"wYear", "wMonth", "wDayOfWeek", "wDay", |
||||
"wHour", "wMinute", "wSecond", "wMilliseconds"}); |
||||
} |
||||
|
||||
public static class ByReference extends SYSTEMTIME implements Structure.ByReference |
||||
{ |
||||
} |
||||
|
||||
public static class ByValue extends SYSTEMTIME implements Structure.ByValue |
||||
{ |
||||
} |
||||
}; |
||||
|
||||
// 帧定位信息
|
||||
public static class FRAME_POS_INFO extends Structure |
||||
{ |
||||
public LLONG nFilePos; // 帧在文件中的偏移位置
|
||||
public int nFrameLen; // 帧长度
|
||||
public int nFrameNum; // 帧序号
|
||||
public int nFrameTime; // 帧时间
|
||||
public int nErrorFrameNum; // 未启用
|
||||
public Pointer pErrorTime; // 未启用,SYSTEMTIME
|
||||
public int nErrorLostFrameNum; // 未启用
|
||||
public int nErrorFrameSize; // 未启用
|
||||
|
||||
protected List<String> getFieldOrder() |
||||
{ |
||||
return Arrays.asList(new String [] {"nFilePos", "nFrameLen", "nFrameNum", "nFrameTime", |
||||
"nErrorFrameNum", "pErrorTime", "nErrorLostFrameNum", "nErrorFrameSize"}); |
||||
} |
||||
|
||||
public static class ByReference extends FRAME_POS_INFO implements Structure.ByReference |
||||
{ |
||||
} |
||||
|
||||
public static class ByValue extends FRAME_POS_INFO implements Structure.ByValue |
||||
{ |
||||
} |
||||
}; |
||||
|
||||
// 解码帧属性信息
|
||||
public static class FRAME_ATTRI_INFO extends Structure |
||||
{ |
||||
public int nWidth; // 画面宽,单位像素
|
||||
public int nHeight; // 画面高,单位像素
|
||||
public int nStamp; // 时标信息,单位毫秒
|
||||
public int nType; // 视频帧类型,TYPE_IYUV,TYPE_AUDIODATA_16,TYPE_RGB32
|
||||
public int nFrameRate; // 图像帧率
|
||||
|
||||
protected List<String> getFieldOrder() |
||||
{ |
||||
return Arrays.asList(new String [] {"nWidth", "nHeight", "nStamp", "nType", "nFrameRate"}); |
||||
} |
||||
|
||||
public static class ByReference extends FRAME_POS_INFO implements Structure.ByReference |
||||
{ |
||||
} |
||||
|
||||
public static class ByValue extends FRAME_POS_INFO implements Structure.ByValue |
||||
{ |
||||
} |
||||
}; |
||||
|
||||
// 解码帧属性信息
|
||||
public static class FRAME_ATTRI_INFO_EX extends Structure |
||||
{ |
||||
public int nFrameType; // 帧类型
|
||||
// 1 - MEDIA_FRAME_TYPE_VIDEO(视频帧)
|
||||
// 2 - MEDIA_FRAME_TYPE_AUDIO(音频帧)
|
||||
public int nSubFrameType; // 帧子类型(参见 ENUM_SUB_FRAME_TYPE 枚举值)
|
||||
public int nEncodeType; // 解码类型(参见 ENUM_VIDEO_ENCODE_TYPE 枚举值)
|
||||
public int nStreamType; // 码流封装类型(参见 ENUM_STREAM_PACKAGE_TYPE 枚举值)
|
||||
|
||||
public Pointer pFrameData; // 帧数据
|
||||
public int nFrameDataLen; // 帧数据长度
|
||||
public Pointer pFrameBodyData; // 帧裸数据
|
||||
public int nFrameBodyLen; // 帧裸数据长度
|
||||
|
||||
public int nFrameSeq; // 帧序号
|
||||
public int nStamp; // 时标信息(单位:ms)
|
||||
public int nWidth; // 面宽(单位:像素)
|
||||
public int nHeight; // 画面高(单位:像素)
|
||||
public int nFrameRate; // 图像帧率
|
||||
public int nChannels; // 音频通道数
|
||||
public int nBitPerSample; // 音频采样位数
|
||||
public int nSamplesPerSec; // 音频采样频率
|
||||
public int nRemainData; // 缓冲剩余数据量
|
||||
public SYSTEMTIME nDataTime; // 时间
|
||||
public int[] nReserved = new int[48]; // 保留位
|
||||
|
||||
protected List<String> getFieldOrder() |
||||
{ |
||||
return Arrays.asList(new String [] {"nFrameType", "nSubFrameType", "nEncodeType", "nStreamType", |
||||
"pFrameData", "nFrameDataLen", "pFrameBodyData", "nFrameBodyLen", "nFrameSeq", "nStamp", |
||||
"nWidth", "nHeight", "nFrameRate", "nChannels", "nBitPerSample", "nSamplesPerSec", |
||||
"nRemainData", "nDataTime", "nReserved"}); |
||||
} |
||||
|
||||
public static class ByReference extends FRAME_POS_INFO implements Structure.ByReference |
||||
{ |
||||
} |
||||
|
||||
public static class ByValue extends FRAME_POS_INFO implements Structure.ByValue |
||||
{ |
||||
} |
||||
}; |
||||
|
||||
// 解码帧内容
|
||||
public static class FRAME_DEC_INFO extends Structure |
||||
{ |
||||
public int nFrameType; // 帧类型
|
||||
// 1 - MEDIA_FRAME_TYPE_VIDEO(视频帧)
|
||||
// 2 - MEDIA_FRAME_TYPE_AUDIO(音频帧)
|
||||
public int nSubFrameType; // 帧子类型(参见 ENUM_SUB_FRAME_TYPE 枚举值)
|
||||
|
||||
public Pointer pAudioData; // 音频数据(音频帧有效)
|
||||
public int nAudioDataLen; // 音频数据长度
|
||||
|
||||
public Pointer[] pVideoData = new Pointer[3]; // 分别表示视频的YUV三个分量(视频帧有效)
|
||||
public int[] nStride = new int[3]; // 分别表示YUV三个分量的跨距(视频帧有效)
|
||||
public int[] nWidth = new int[3]; // 分别表示YUV三个分量的宽度(视频帧有效)
|
||||
public int[] nHeight = new int[3]; // 分别表示YUV三个分量的高度(视频帧有效)
|
||||
public int[] nReserved = new int[64]; // 保留位
|
||||
|
||||
protected List<String> getFieldOrder() |
||||
{ |
||||
return Arrays.asList(new String [] {"nFrameType", "nSubFrameType", "pAudioData", |
||||
"nAudioDataLen", "pVideoData", "nStride", "nWidth", "nHeight", "nReserved"}); |
||||
} |
||||
|
||||
public static class ByReference extends FRAME_DEC_INFO implements Structure.ByReference |
||||
{ |
||||
} |
||||
|
||||
public static class ByValue extends FRAME_DEC_INFO implements Structure.ByValue |
||||
{ |
||||
} |
||||
}; |
||||
|
||||
// 智能帧属性
|
||||
public static class SA_DD_INTL_OBJECT extends Structure |
||||
{ |
||||
public byte nAttriType; // 类型
|
||||
public byte nEnable; // 0 - 无效;1 - 有效
|
||||
public byte[] reseved = new byte[2]; // 保留参数
|
||||
public int nAttriId; // id
|
||||
public int nFrameNum; // 帧序号
|
||||
public int nPTS; // PTS
|
||||
public Pointer pData; // 智能帧结构体数据
|
||||
public int nDataLen; // 智能帧结构体数据长度
|
||||
|
||||
protected List<String> getFieldOrder() |
||||
{ |
||||
return Arrays.asList(new String [] {"nAttriType", "nEnable", "reseved", |
||||
"nAttriId", "nFrameNum", "nPTS", "pData", "nDataLen"}); |
||||
} |
||||
|
||||
public static class ByReference extends SA_DD_INTL_OBJECT implements Structure.ByReference |
||||
{ |
||||
} |
||||
|
||||
public static class ByValue extends SA_DD_INTL_OBJECT implements Structure.ByValue |
||||
{ |
||||
} |
||||
}; |
||||
|
||||
// 轨迹矩形
|
||||
public static class SA_DD_IF_RECT extends Structure |
||||
{ |
||||
// 轨迹点是物体外接矩形的中心
|
||||
// RECT = (X - XSize, Y - YSize, X + XSize, Y + YSize)
|
||||
public short x; |
||||
public short y; |
||||
public short xSize; |
||||
public short ySize; |
||||
|
||||
protected List<String> getFieldOrder() |
||||
{ |
||||
return Arrays.asList(new String [] {"x", "y", "xSize", "ySize"}); |
||||
} |
||||
|
||||
public static class ByReference extends SA_DD_IF_RECT implements Structure.ByReference |
||||
{ |
||||
} |
||||
|
||||
public static class ByValue extends SA_DD_IF_RECT implements Structure.ByValue |
||||
{ |
||||
} |
||||
} |
||||
|
||||
public static class SA_DD_ANGLE3D extends Structure |
||||
{ |
||||
// 上下俯仰角
|
||||
public float pitch; |
||||
// 左右摇摆角
|
||||
public float roll; |
||||
// 水平旋转角
|
||||
public float yaw; |
||||
|
||||
protected List<String> getFieldOrder() |
||||
{ |
||||
return Arrays.asList(new String [] {"pitch", "roll", "yaw"}); |
||||
} |
||||
|
||||
public static class ByReference extends SA_DD_ANGLE3D implements Structure.ByReference |
||||
{ |
||||
} |
||||
|
||||
public static class ByValue extends SA_DD_ANGLE3D implements Structure.ByValue |
||||
{ |
||||
} |
||||
} |
||||
|
||||
// 人员信息
|
||||
public static class SA_DD_OBJECT_PERSON_INFO extends Structure |
||||
{ |
||||
public byte nSex; // 人员性别,0-未知,1-男性,2-女性
|
||||
public byte nAge; // 年龄,0-未知
|
||||
public byte[] reserved1 = new byte[2]; // 字节对齐
|
||||
public byte[] szCode = new byte[128]; // 人员编号
|
||||
public byte[] szName = new byte[128]; // 人员姓名
|
||||
public byte[] reserved = new byte[256]; // 保留位
|
||||
|
||||
protected List<String> getFieldOrder() |
||||
{ |
||||
return Arrays.asList(new String [] {"nSex", "nAge", "reserved1", "szCode", "szName", "reserved"}); |
||||
} |
||||
|
||||
public static class ByReference extends SA_DD_OBJECT_PERSON_INFO implements Structure.ByReference |
||||
{ |
||||
} |
||||
|
||||
public static class ByValue extends SA_DD_OBJECT_PERSON_INFO implements Structure.ByValue |
||||
{ |
||||
} |
||||
} |
||||
|
||||
// 人脸
|
||||
public static class SA_DD_OBJECT_FACE extends Structure |
||||
{ |
||||
public int frame_num; // 帧序号
|
||||
public int pts; // PTS
|
||||
public int obj_id; // 物体 id
|
||||
public byte obj_type; // 物体类型
|
||||
public byte enable; // 0 表示无效物体, 1表示有效物体
|
||||
public byte shape_type; // 轨迹类型
|
||||
public byte shape_confidence; // 图形置信度
|
||||
public byte shape_quality; // 图形质量
|
||||
public byte[] reserved1 = new byte[3]; // 预留位1
|
||||
public int shape_color; // 图形颜色
|
||||
public SA_DD_IF_RECT shape_rect; // 图形矩形, 8192 坐标系
|
||||
public byte enableMask; // 0x01-0x08 的使能掩码
|
||||
public SA_DD_ANGLE3D angle3D; // 人脸三维角度
|
||||
public float shape_fuzzy_degree; // 模糊度
|
||||
public short pixelSize; // 像素大小
|
||||
public float score; // 人脸整体得分
|
||||
public byte enableMask0xFe; // 0x09-0x10 的使能掩码
|
||||
public byte[] reserved2 = new byte[12]; // 预留位2
|
||||
public SA_DD_OBJECT_PERSON_INFO person; // 人员信息
|
||||
public byte[] reserved3 = new byte[64]; // 预留位3
|
||||
|
||||
protected List<String> getFieldOrder() |
||||
{ |
||||
return Arrays.asList(new String [] {"frame_num", "pts", "obj_id", "obj_type", "enable", "shape_type", "shape_confidence", "shape_quality", |
||||
"reserved1", "shape_color", "shape_rect", "enableMask", "angle3D", "shape_fuzzy_degree", "pixelSize", "score", "enableMask0xFe", |
||||
"reserved2", "person", "reserved3"}); |
||||
} |
||||
|
||||
public static class ByReference extends SA_DD_OBJECT_FACE implements Structure.ByReference |
||||
{ |
||||
} |
||||
|
||||
public static class ByValue extends SA_DD_OBJECT_FACE implements Structure.ByValue |
||||
{ |
||||
} |
||||
} |
||||
} |
Loading…
Reference in new issue