package com.netsdk.demo.customize; import com.netsdk.demo.util.CaseMenu; import com.netsdk.lib.NetSDKLib; import com.netsdk.lib.ToolKits; import com.netsdk.lib.structure.*; import com.netsdk.lib.utils.Initialization; import com.sun.jna.Pointer; import static com.netsdk.lib.NetSDKLib.*; /** * @author 291189 * @version 1.0 * @description ERR220722146 * @date 2022/8/3 11:35 */ public class VideoDiagnosisDemo extends Initialization { private static NetSDKLib.LLong m_lDiagnosisHandle = new NetSDKLib.LLong(0); /** * 视频诊断订阅,当诊断完成后,会收到事件,一个计划只收到一个事件 */ public void StartVideoDiagnosis() { /* * 入参 */ NetSDKLib.NET_IN_VIDEODIAGNOSIS stIn = new NetSDKLib.NET_IN_VIDEODIAGNOSIS(); stIn.nDiagnosisID = -1; stIn.dwWaitTime = 5000; stIn.cbVideoDiagnosis = RealVideoDiagnosis.getInstance(); /* * 出参 */ NetSDKLib.NET_OUT_VIDEODIAGNOSIS stOut = new NetSDKLib.NET_OUT_VIDEODIAGNOSIS(); if(netSdk.CLIENT_StartVideoDiagnosis(loginHandle, stIn, stOut)) { m_lDiagnosisHandle = stOut.lDiagnosisHandle; System.out.println("视频诊断订阅成功!"); } else { System.err.println("订阅失败, " + ToolKits.getErrorCode()); } } // 取消订阅 public void StopVideoDiagnosis() { if(m_lDiagnosisHandle.longValue() != 0) { if(netSdk.CLIENT_StopVideoDiagnosis(m_lDiagnosisHandle)) { System.out.println("取消视频诊断订阅!"); m_lDiagnosisHandle.setValue(0); } } } private static class RealVideoDiagnosis implements NetSDKLib.fRealVideoDiagnosis { private RealVideoDiagnosis() {} private static class RealVideoDiagnosisHolder { private static RealVideoDiagnosis instance = new RealVideoDiagnosis(); } private static RealVideoDiagnosis getInstance() { return RealVideoDiagnosis.RealVideoDiagnosisHolder.instance; } @Override public int invoke(NetSDKLib.LLong lDiagnosisHandle, NetSDKLib.NET_REAL_DIAGNOSIS_RESULT pDiagnosisInfo, Pointer pBuf, int nBufLen, Pointer dwUser) { // NetSDKLib.NET_VIDEODIAGNOSIS_COMMON_INFO commons = new NetSDKLib.NET_VIDEODIAGNOSIS_COMMON_INFO(); ToolKits.GetPointerData(pDiagnosisInfo.pstDiagnosisCommonInfo, commons); int dwBufSize = pDiagnosisInfo.dwBufSize; System.out.println("dwBufSize:"+dwBufSize); System.out.println("nTypeCount:"+pDiagnosisInfo.nTypeCount); Pointer pDiagnosisResult = pDiagnosisInfo.pDiagnosisResult; int count=0; for(int i=0;i