直接解析DShow过滤器,获取全面类型信息

版权申诉
0 下载量 148 浏览量 更新于2024-10-07 收藏 473KB RAR 举报
资源摘要信息:"Filter_Enum.rar_enum.filter" 本文档提供了关于DShow(DirectShow)过滤器枚举工具包的详细信息,该工具包使用直接解析方法来枚举和获取过滤器的详细信息。DShow是Microsoft推出的一套用于媒体处理和播放的编程接口,广泛应用于视频编辑、播放及捕获等多个领域。 ### DShow过滤器概述 DShow过滤器是DirectShow架构中核心的组件,负责媒体数据的处理和传输。过滤器可以根据其功能被分为几类,包括源过滤器(Source filters)、转换过滤器(Transform filters)、渲染过滤器(Render filters)等。其中,源过滤器负责获取数据源,转换过滤器负责处理数据流,而渲染过滤器则负责输出数据流。 ### 枚举过滤器的重要性 在开发基于DirectShow的应用程序时,枚举过滤器是一个重要步骤。它能帮助开发者了解系统中可用的过滤器,以及它们各自的功能。通常情况下,开发者会使用系统提供的枚举接口,如`IAMGraphBuilder`或`ICreateDevEnum`等。然而,标准方法可能无法提供过滤器的所有细节信息。 ### 直接解析方法的特点 与标准枚举方法不同,直接解析方法通过直接访问系统底层数据结构的方式来获取过滤器信息,这种做法可以绕开一些标准接口的限制,获取更为全面和详细的过滤器信息。这包括但不限于过滤器的内部属性、注册信息、能力集以及任何可能被标准枚举过程忽略的细节。 ### 枚举工具包的实现 本工具包中的两个主要文件Flt_Enum和Filter_Enum都与过滤器的枚举工作有关。尽管文件名相似,它们可能代表了不同层面的枚举逻辑和实现。在实际使用时,开发者可能会根据需要选择使用其中的一个或两者结合。 ### 枚举过滤器的关键知识点 1. **DShow过滤器类型**:了解不同类型的DShow过滤器,如源过滤器、转换过滤器、渲染过滤器等,以及它们在媒体处理流程中的作用。 2. **过滤器枚举的意义**:掌握过滤器枚举在DirectShow编程中的作用,包括构建过滤器图、媒体处理能力分析等。 3. **标准枚举方法的局限**:认识到标准接口在枚举过滤器时可能存在的局限性,如信息不全、系统兼容性问题等。 4. **直接解析方法的优势**:了解直接解析方法如何提供更全面的过滤器信息,帮助开发者深入理解过滤器特性。 5. **本工具包的使用**:学习如何运用本工具包提供的两个主要文件Flt_Enum和Filter_Enum来实现过滤器的直接枚举和详细信息获取。 6. **过滤器属性和能力集**:掌握如何获取过滤器的属性和能力集,这对于过滤器的选择和配置至关重要。 7. **过滤器注册与管理**:了解过滤器在系统中的注册方式以及如何管理和维护过滤器库。 8. **兼容性与稳定性问题**:在使用直接解析方法时,可能会面临与系统兼容性及稳定性相关的挑战,开发者需要具备相应的应对策略。 ### 结论 Filter_Enum工具包提供了一种非标准的过滤器枚举方法,可以为DirectShow开发者提供更为详细和全面的过滤器信息。虽然这种方法可能带来更好的枚举结果,但也可能引入兼容性和稳定性风险。开发者在使用时需要权衡这些利弊,并根据实际开发需求进行选择。

C:\Users\adminstor\anaconda3\envs\python39\python.exe D:\daima\KalmanNet_TSP-main\main_lor_DT_NLobs.py Pipeline Start Current Time = 07.24.23_12:19:44 Using GPU 1/r2 [dB]: tensor(30.) 1/q2 [dB]: tensor(30.) Start Data Gen Data Load data_lor_v0_rq3030_T20.pt no chopping trainset size: torch.Size([1000, 3, 20]) cvset size: torch.Size([100, 3, 20]) testset size: torch.Size([200, 3, 20]) Evaluate EKF full Extended Kalman Filter - MSE LOSS: tensor(-26.4659) [dB] Extended Kalman Filter - STD: tensor(1.6740) [dB] Inference Time: 37.115127086639404 KalmanNet start Number of trainable parameters for KNet: 19938 Composition Loss: True Traceback (most recent call last): File "D:\daima\KalmanNet_TSP-main\main_lor_DT_NLobs.py", line 146, in <module> [MSE_cv_linear_epoch, MSE_cv_dB_epoch, MSE_train_linear_epoch, MSE_train_dB_epoch] = KalmanNet_Pipeline.NNTrain(sys_model, cv_input, cv_target, train_input, train_target, path_results) File "D:\daima\KalmanNet_TSP-main\Pipelines\Pipeline_EKF.py", line 150, in NNTrain MSE_trainbatch_linear_LOSS = self.alpha * self.loss_fn(x_out_training_batch, train_target_batch)+(1-self.alpha)*self.loss_fn(y_hat, y_training_batch) File "C:\Users\adminstor\anaconda3\envs\python39\lib\site-packages\torch\nn\modules\module.py", line 1102, in _call_impl return forward_call(*input, **kwargs) File "C:\Users\adminstor\anaconda3\envs\python39\lib\site-packages\torch\nn\modules\loss.py", line 520, in forward return F.mse_loss(input, target, reduction=self.reduction) File "C:\Users\adminstor\anaconda3\envs\python39\lib\site-packages\torch\nn\functional.py", line 3112, in mse_loss return torch._C._nn.mse_loss(expanded_input, expanded_target, _Reduction.get_enum(reduction)) RuntimeError: Expected all tensors to be on the same device, but found at least two devices, cuda:0 and cpu!

2023-07-25 上传

for (Winning winning : winnings) { // 若存在物流信息 发货时间不能为空 if (winning.getPostTime() != null){ rightNow.setTime(winning.getPostTime()); //日期加1个月 rightNow.add(Calendar.MONTH,1); flg = rightNow.getTime().compareTo(new Date()); if (flg <= 0 ){ flag = true; } } if (!VtuzxUtil.isEmpty(winning.getOutState())){ // 自动收货 if(winning.getOutState().equals(String.valueOf(PrizeOutStateEnum.Sent_ENUM.value())) && flag){ // 修改发放状态为已收货 winningDao.updOutStateById(String.valueOf(winning.getId()),PrizeOutStateEnum.Receive_Goods.value()); winning.setOutState(PrizeOutStateEnum.Receive_Goods.value()); flag = false; } } dataList.add( new VtuzxMap("prizeName",winning.getPrizeName()) .append("receiptNo",winning.getReceiptNo()) .append("companyName",winning.getCompanyName()) .append("department",winning.getDepartment()) .append("prizeNum",winning.getPrizeNum()) .append("outStore",winning.getOutStore()) .append("giveOut",winning.getGiveOut()) .append("userName",winning.getUserName()) .append("activityName",winning.getActivityName()) .append("outState",winning.getOutState()) .append("mobile",winning.getMobile()) .append("activityId",winning.getAwardActivityId()) .append("prizeType",winning.getPrizeType()) .append("clearingState",winning.getClearingState()) .append("postCompany",winning.getPostCompany()) .append("storeName", winning.getStoreName()) .append("postNo",winning.getPostNo()) .append("postName",winning.getPostName()) .append("contactMobile",winning.getContactMobile()) .append("province",winning.getProvince()) .append("city",winning.getCity()) .append("area",winning.getArea()) .append("createdAt",VtuzxUtil.formatYmdHmsF(winning.getCreatedAt())) .append("addressDetail",winning.getAddressDetail()) ); }使用stream优化

2023-06-06 上传

帮忙优化以下代码:public void runTask(ReportResultTask data, RunListener runListener) { UseMasterDataTypeEnum dataTypeEnum = ReportCommonLogicHelper.judgeTaskParam(data); // params.put(ReportCommonMasterDataRelationHelper.ParamTypeEnum.USE_MASTER_ENUM, dataTypeEnum.getValue()); params.put(ReportCommonMasterDataRelationHelper.ParamTypeEnum.YEAR_MONTH, data.getYearAndMonth()); try { List<ReportResultInventoryConsumablesNonFirst> saveList = Collections.synchronizedList(new ArrayList<>()); ReportNonFirstInvBO bo = new ReportNonFirstInvBO(); bo.setParams(params); bo.setYearMonth(Func.toLong(data.getYearAndMonth())); LiteflowResponse response = flowExecutor.execute2Resp("flow-calc-non-first-data", bo, ReportNonFirstInvBO.class); if (response.isSuccess()) { saveList = bo.getResults(); } if (saveList != null & saveList.size() > 0) { saveList.stream().forEachOrdered(fun -> { bo.setDistributorCode(fun.getNonFirstDistributorCode()); bo.setYearMonth(fun.getYearMonth()); bo.setIdo(BigDecimal.ZERO); fun.getNonFirstData().stream().forEach(fun1 -> { bo.setProductLine(fun1.getProductLine()); LiteflowResponse idoResponse = flowExecutor.execute2Resp("flow-calc-non-first-calcIdo", bo, ReportNonFirstInvBO.class); if (idoResponse.isSuccess()) { if (fun1.getProductLine().equals(IDO_TOTAL_PL)) { fun1.getItemData().stream().filter(fun2 -> ResultConstance.IDO_TOTAL.equals(fun2.getItemName())).forEach(x -> x.setItemValue(bo.getIdo())); } else { fun1.getItemData().stream().filter(fun2 -> ResultConstance.IDO.equals(fun2.getItemName())).forEach(x -> x.setItemValue(bo.getIdo())); } } }); }); this.updateSystemFieldInfo(saveList, data); inventoryConsumablesNonFirstService.insertBatch(saveList); runListener.complete(); } else { runListener.error(String.format("所选【%s-%s】产品/经销商主数据为空", data.getYearAndMonth(), "")); } } catch (Exception e) { log.error(StringUtil.format("非一级试剂耗材库存报表处理出错【{}】", e.getMessage()), e); runListener.error(StringUtil.format("非一级试剂耗材库存报表处理出错【{}】", e.getMessage())); } }

2023-06-08 上传