自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(106)
  • 资源 (5)
  • 问答 (3)
  • 收藏
  • 关注

原创 Windows下好玩的一些命令(会持续更新)

查看文件的MD5值 certutil -hashfile filename MD5 建立远程桌面连接 mstsc 当然也可以使用TeamViewer 显示桌面键盘 osk 检查windows版本 winver 查看cmd窗口下的所有命令 help 知道命令之后查看命令的使用方法 ...

2019-03-09 14:24:26 4549

原创 C++获取屏幕分辨率(屏幕窗口大小),屏幕显示比例(DPI)几种方法

获取屏幕的分辨率的几种方法 #include <Windows.h>#include <iostream>int main(void) { HWND hd = GetDesktopWindow(); // 方法一 RECT rect; // 只获得窗口客户区的大小 GetClientRect(hd, &rect); int client_wid...

2019-03-08 15:32:46 17290 5

原创 SystemC 学习之与 Verilog 的混合仿真(十)

Systemc 和 verilog 通信方式有两种,一种是 PLI,但是 PLI 只能 verilog 调用 c/c++,不能从 c/c++ 直接调用 verilog,想要从 c/c++ 调用 verilog 的话,需要先用 verilog 调用 c/c++ 函数,然后在 c++ 里面给对应的参数设置好值,然后 verilog 里面再拿这些数据,比较麻烦。还有一种是使用 DPI-C,DPI-C 是 system verilog 里面的,这样的话需要在编译的时候加上 -sverilog 编译选项。

2023-11-13 14:11:36 505

原创 SystemC 学习之与 System Verilog 的混合仿真(九)

Systemc 和 System Verilog 的通信接口有点类似于 c++ 里面的 socket 通信一样,如果要通信,那么需要绑定到相同的一个端口上,这里的端口是一个字符串。编译之前需要更新 gcc 的版本,这里将 gcc 版本降低到 5.2.0,因为 vcs2018 只支持少数几个 gcc 版本,降低 gcc 的版本可以参考之前的文章。对于 sc 的发送端,需要定义输出 socket 接口,然后调用 b_transport 发送。System Verilog 数据回传模块。

2023-11-13 14:05:16 478

原创 SystemC 学习之 VCS 仿真工具安装(八)

提示找不到 libpng12.so.0,将 vcs_install/libpng12.so.0 下面的 libpng12.so.0 拷贝到 /usr/lib/x86_64-linux-gnu/ 目录下面。然后点击 Generate,这个时候会在当前目录下面生成 Synopsys.dat 文件,然后将这个文件放在 linux 的 license 目录下面。这个时候需要修改之前设置的环境变量,之前 SNPSLMD_LICENSE_FILE 设置了两次,这里需要先将第二次注释掉。

2023-11-13 11:40:45 719

原创 SystemC 学习之 SystemC 验证库(七)

scv_bag 可以为随机数设置加权的分布,使得 scv_smart_ptr 类型的对象的 next() 函数返回的随机数的分布满足所设置的加权分布。约束类:scv_constraint_base,约束类用于定义约束,以及将多个复杂和简单约束合并在一起成为一个更复杂的约束。Systemc 验证库 SCV2.0 为构建高级的 systemc 可重用的验证 IP 提供语言功能,主要包括。软约束失败,会给出一个警告,但是不会影响运行,只不过产生的值会是一个随机值,不再受约束。软约束和硬约束的区别。

2023-10-19 09:34:31 174

原创 SystemC 学习之 SystemC 行为建模(六)

SystemC 通道允许并行的操作,这就涉及同步的问题,比如在同一个时钟的上升沿既读又写,则读的结果应该是写入之前的值,但是怎样才能保证这些呢,一个通用的做法是将对通道的操作分为两个部分进行,即所谓的求值-更新过程,在求值阶段,新的结果被记录,同时保存原有的接口,如果是读操作,则在求值阶段将原有的结果返回,如果是写操作,则接着执行更新的过程,真正将新的数据写入,这里有点类似于 c++ 里面的 i++ 操作,也就是求值慢于更新一个时钟。在设计中,进行规则检查能够尽早的发现设计中一些不合理的地方。

2023-10-19 09:22:56 385

原创 SystemC 学习之 SystemC 波形跟踪(五)

SystemC 允许将仿真结果保存为 VCD 格式,该格式是目前最流行的波形格式之一SystemC 波形跟踪有以下特点只有在整个仿真期间都存在的信号和变量才能被跟踪任何类型的信号和变量包括标量、数组和其他聚合类型都可以被跟踪不同格式的波形文件可以在同一次仿真过程中同时产生,任何一个信号和变量都可以在不同格式的波形文件中不限制次数的被跟踪。

2023-10-16 17:28:13 294

原创 SystemC 学习之 SystemC 进程(四)

在操作系统中,进程是程序在并发环境中的执行过程,它具有动态性、并发性、独立性、异步性和结构性五大特征。使用 C++ 可以很容易的描述系统的顺序行为,但是要描述系统的并发行为是比较困难的,一般会使用多线程和多进程的方式。为了描述硬件系统的并发行为 SystemC 也引入了进程的概念,但是与操作系统的进程和线程相比,它更简单。在 SystemC 中,进程是一个基本的执行单位,被用来仿真目标系统的行为,SystemC 的基本进程有三种。

2023-10-16 17:25:08 613

原创 SystemC 学习之 SystemC 定点数据类型(三)

在 c++ 中采用浮点数据类型不仅能够很容易的进行算术运算,而且精度高,但是浮点运算在硬件上实现起来特别复杂,因此为了节省硬件资源很多硬件只支持定点运算。为了能够精确地建模和描述定点硬件,必须使用定点数据类型SystemC 专门定义了有符号和无符号的定点数据类型,而且还允许设置定点数据类型的量化和溢出模式SystemC 的四种基本定点数据类型为。

2023-10-12 09:41:40 340

原创 SystemC 学习之 SystemC 基本语法(二)

为了顺利进行编译和链接,任何 systemc 设计都必须包括合适的 systemc 库定义的头文件,systemc 和辛苦包括两个最基本和重要的名字空间,一个是 sc_core,一个是 sc_dt。sc_core 时 SystemC 基本的内核空间,sc_dt 则定义了 SystemC 的最基本数据类型。

2023-10-12 09:25:47 792

原创 SystemC 学习之 Linux 安装 SystemC(一)

完成一款集成电路需要设计、制造、封装和测试四个步骤。随着集成电路制造技术按照摩尔定律发展,电子系统变得越来越复杂,人们已经可以把复杂的电子系统集成到一个芯片上,这就是所谓的片上系统。对于一个复杂的片上系统,在进行寄存器传输级设计前需要进行深入的系统级仿真,以确认设计的体系架构是否恰当、总线是否能够满足吞吐量和实时性要求以及存储器是否被浪费。所进行的这些仿真要求在芯片的仿真模型上运行大量的软件,以覆盖所需的功能。在寄存器传输级,最广泛使用的两种语言是 VHDL 和 Verilog HDL。

2023-10-10 15:21:58 473

原创 Ubuntu 22.04 将 gcc 降级为 5.2.0

参考链接:https://github.com/staticfloat/gcc/commit/94801184df727b94bf7b8d64b1f98a22f51325d7。因为 ubuntu 自带的 gcc 是 11,gcc11 默认是 c++17,如果使用 gcc11 编译的话后面需要修改的错误比较多,所以这里先用 gcc-9 编译代码了。参考链接:https://www.jianshu.com/p/0148b44d4cfc。解决办法:找到下面几个文件依次修改,具体可以参考。

2023-10-10 15:11:34 525

原创 Windows 使用 Detours 进行 HOOK

一、detours 的下载和编译1、下载 Detours:GitHub - microsoft/Detours: Detours is a software package for monitoring and instrumenting API calls on Windows. It is distributed in source code form.2、编译cd Detours\vc打开 Detours.sln 编译运行如果编译失败,重定向一下解决方案3、编译运行成功之后会.

2021-10-24 20:37:59 2366

原创 Windows c++ 读写注册表

背景在 Windows 上面,我们常用注册表作为一个 cache 来保存一些数据,这样当程序下一次启动的时候,读取注册表,就能获取到上一次缓存的结果函数介绍创建指定的注册表项具体函数WINADVAPI LSTATUS APIENTRY RegCreateKeyA ( _In_ HKEY hKey, _In_opt_ LPCSTR lpSubKey, _Out_ PHKEY phkResult);参数介绍hKey:打开的注册表项的句柄,一般为 HKE.

2021-09-19 10:32:59 3326

原创 Windows 下安装 Linux 双系统

1、安装 oh-my-zshhttps://www.cnblogs.com/ExileRiven/p/13555281.html出现 443 无法访问的时候

2021-06-19 22:15:08 500

原创 Windows c++ 崩溃时生成 dump 文件

1、背景在做 Windows 客户端应用开发时,难免遇到程序的崩溃,当程序在 debug 崩溃时,我们可以直接定位到崩溃点,但是当程序打包成 release 发布时,难免也会遇到一些崩溃问题(当然在开发时要尽量保障程序的稳定性),一般遇到这样的崩溃,我们就需要使用 dump 文件加上符号表文件来进行调试程序,所以一般的 CI 除了将 exe 上传以外还需要将符号表信息上传。2、在代码中生成 dump 文件#include <Windows.h>#include <DbgHe

2021-04-18 14:02:09 753

原创 Windows C++ 窗口全屏

1、在一些场景中我们需要将应用程序窗口进行全屏显示,比如一些会议程序,为了观看的清晰度,会将整个渲染窗口全屏显示。下面主要就实现一下这个功能2、首先创建一个窗口LRESULT CALLBACK WndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { switch (uMsg) { case WM_LBUTTONDOWN: break; case WM_PAINT: break

2021-03-30 21:18:29 4168 5

原创 Windows 透明绿边窗口

需求在 Windows 上,一些视频会议软件进行屏幕分享的时候,分享的屏幕时会有一个绿色边框将其标记出来,方便分享人知道当前正在分享的是哪一个屏幕,这篇博客主要就介绍一下如何实现这么一个窗口。我们要做到下面几个点1、始终置顶窗口(WS_EX_TOPMOST)2、透明并且可穿透(WS_EX_LAYERED |WS_EX_TRANSPARENT)3、没有最大化、最小化等(WS_EX_TOOLWINDOW)4、有绿边(使用 Gdiplus::SolidBrush)具体实现1、创建.

2021-03-14 21:25:38 703

原创 求一个数字二进制中 1 的个数

问题描述任意给定一个 32 位无符号的整数 n,计算 n 的二进制表示中 1 的个数,比如 n = 3(011))时,返回 2这是一到笔试面试经典的题目,下面介绍几种解法来实现这一道题目,如果你有更好的解法,欢迎指导交流方法一:普通法通过移位解决,每次向右移一位( >> 1),然后判断最后一位是不是 1(&1),最多循环 32 次int BitCount(unsigned int n){ int count = 0; while (n > 0) {

2021-03-03 10:20:12 252 1

原创 FFmpeg 使用 avpicture_alloc 内存泄漏或者崩溃问题

一、问题在项目中有一个逻辑是当数据帧的分辨率是奇数的时候,会使用crop 进行裁切 yuv 数据,进行 2 对齐,在项目中使用的是av_picture_crop 进行裁切的,具体代码类似于下面这样void Crop() { int32_t src_width = 1234; int32_t src_height = 567; uint8_t* src_buffer = new uint8_t[src_width * src_height * 3 / 2]; // 填充 srcBuffe..

2021-02-26 18:57:25 2841 1

原创 Windows 使用 DuiLib 显示屏幕和窗口缩略图

一、背景在视频会议中,有一个场景是屏幕分享,屏幕分享的时候要预览屏幕和窗口的缩略图,然后选中对应缩略图的窗口进行分享,本篇博客主要记录一下在 Windows 平台下面获取缩略图的一些方法,如果你有更好的方法欢迎交流二、获取和显示缩略图方法一:使用DwmUpdateThumbnailProperties 在指定窗口显示缩略图可以参考即构科技的官方文档说明https://doc-zh.zego.im/zh/2365.html,他们注册缩略图的 API 也是需要将位置传进去,也就是说他们使用...

2021-02-26 18:18:49 2196 5

原创 C++ 优先级队列 priority_queue

问题在刷题或者面试的过程中,我们经常会遇到这样一种题目,给一个数组,求最大或者最小的 k 个数,或者第 k 大或者第 k 小的数字解法看到这样一个题目,首先想到的就是大小堆,创建大小为 k 的大根堆或者小根堆,然后不断的更新堆,下面以求最大的 k 个数字为例,具体代码如下void BuildHeap(std::vector<int>& arr, int index, int len) { int i = index * 2 + 1; while (i &

2021-02-11 13:19:50 459

原创 Windows libyuv 引入 libjpeg

一、问题最近一直在做 Windows 摄像头的采集(关于 Windows 的 Camera 采集后面会有博客单独介绍),使用 libyuv 去做格式的转换,但是在将 MJPEG 转换成 I420 时候一直失败二、原因查找原因发现是默认的 libyuv 是没有把 MJPEG 转 I420 编译进去的,需要我们手动添加 libjpeg 的库,然后将 libjpeg 编译进去三、具体步骤1、下载 libjpeg-turbo 库https://github.com/libjpeg-turbo

2021-01-25 10:03:22 1106 3

原创 duilib开发(十四):使用NSIS打包

一、下载 NSIS 打包工具1、安装 NSIS下载地址:https://nsis.sourceforge.io/DownloadNSIS(Nullsoft Scriptable Install System)是一个开源的 Windows 系统下安装程序制作程序,提供了安装、卸载、系统设置、文件解压缩等功能。NSIS通过脚本语言来描述安装程序的行为和逻辑的。2、安装HW VNIS Edit下载地址:https://sourceforge.net/projects/hmne/HW V

2020-12-24 09:35:11 1026 1

原创 duilib开发(十三):使用自定义图标

一、使用自定义图标二、最小化到任务栏

2020-12-22 21:13:56 781

原创 duilib开发(十二):使用自定义控件

一、使用自定义控件

2020-12-22 09:44:58 1625

原创 duilib开发(十一):创建子窗口

一、创建子窗口

2020-12-20 09:45:53 2008

原创 Windows 下编译 WebRTC 记录 + 踩坑

一、具体步骤1、下载安装 Visual Studio2、安装Chromium软件仓库工具(1)下载depot_tools.zip并解压缩,比如我解压缩之后是在 C:\depot_tools\ 这个目录下面(2)将 depot_tools 的路径添加到系统的环境变量,并把它放在最上面(3)在C:\depot_tools\ 目录下面打开 cmd 窗口,然后执行 gclient,这个时候会安装自己的各种工具副本,出现下面的界面表示安装成功如果遇到失败,可以从下面几个角度检查..

2020-12-17 20:13:49 1429 3

原创 duilib开发(十):动态添加控件

一、设置图标和最小化到任务栏

2020-12-16 21:18:13 2141

原创 duilib开发(九):定时器和超链接

一、定时器和超链接

2020-12-14 20:20:57 959 3

原创 duilib开发(八):duilib 实现 table switch

一、效果如下图所示二、具体操作1、拷贝UIAnimation.cpp,UIAnimation.h 到 Control 目录下面,拷贝UIAnimationTabLayout.cpp,UIAnimationTabLayout.h 到 Layout 目录下面,这四个文件需要在网上自己找,然后拷贝到自己的目录2、在 Core/UIDefine.h 文件里面加上下面这一行#define DUI_CTR_ANIMATIONTABLAYOUT (_T("AnimationTabLayou..

2020-12-06 20:23:02 1003 4

原创 duilib开发(七):复杂控件介绍

一、复杂控件介绍

2020-12-06 20:22:31 1190

原创 duilib开发(六):基本控件介绍

一、基本控件介绍

2020-11-23 09:41:06 1951 3

原创 duilib开发(五):界面布局

一、使用界面布局

2020-11-23 09:40:03 1322

原创 duilib开发(四):使用xml基础类、并自绘标题栏

一、使用xml基础类二、自绘标题栏

2020-11-23 09:39:12 589

原创 duilib开发(三):使用xml配置界面

一、使用xmlduilib主打的界面制作方式是XML + UI引擎 + win32框架,一般很多ui相关的界面都是在xml中完成的,接下来我们将前面的一篇教程改为xml的方式来实现二、具体代码1、将原来OnCreate手动创建按钮的代码改到xml中去实现,然后在代码中解析xml文件2、建立xml文件,命名为MyDemo.xml,放在根目录下面的resources文件夹里面,xml文件的内容如下<?xml version="1.0" encoding="UTF-8"?>&l

2020-11-23 09:38:45 1314

原创 duilib开发(二):基于duilib的第一个程序

一、使用duilib接下来关于duilib的所有文章都是基于cmake去编译的,因为cmake比较方便快捷1、在原来的目录下面新建一个MyDemo目录2、在MyDemo目录下新建一个main.cpp和CMakeLists.txt文件二、具体代码1、CMakeLists.txtaux_source_directory(. SRCS)link_directories(${CMAKE_CURRENT_SOURCE_DIR}/../output/bin/${Configuration}

2020-11-23 09:38:33 624

原创 duilib开发(一):环境配置、编译demo

一、编译环境1、VS20172、cmake二、拉取代码代码仓库:https://github.com/duilib/duilib我fork的仓库:https://github.com/yangpan4485/duilib,develop分支建议fork一份到自己的仓库,可以自己修改、维护,后面的代码都是基于fork过来的仓库去做编译的三、编译四、学习资料1、网易云信Windows duilib,https://github.com/netease-im/NIM_Duili

2020-11-23 09:37:59 1081

原创 Windows下ppt放映获取不到窗口的问题

一、参考文章1、多显示器下判断ppt是否播放2、MFC检测笔记本电池电量3、MFC实时监测ppt是否在播放4、Windows检测PPT,WPS幻灯片播放并获取窗口句柄

2020-11-08 23:24:33 1105

uvmc 2.3.1 源代码,用来 SC 和 SV 的混合仿真

uvmc 2.3.1 源代码,用来 SC 和 SV 的混合仿真

2023-11-13

windows_thumbnail_image.zip

Windows 下获取屏幕和窗口的缩略图,并使用 DuiLib 显示出来

2021-02-26

Windows下OpenGL播放yuv

Windows下使用OpenGL渲染yuv420格式的数据,窗口使用Windows自己创建的窗口句柄

2020-10-18

Windows下mingw下载(配置好的)

Windows下需要使用mingw来编译一些开源的库,但是mingw需要网络访问,所以下载起来比较麻烦,这里直接将我的mingw配置上传上来,方便大家使用

2020-10-11

sdl2播放yuv数据

在Windows下面使用SDL2播放yuv 420p的数据

2020-10-06

解析SPS和PPS需要用到的头文件bs.h

解析SPS和PPS需要用到的头文件bs.h,在解析SPS和PPS的时候,我们需要从码流中读取1-n个字节,然后还需要无符号指数哥伦布编码和有符号指数哥伦布编码的解析,这里面用到一些函数,刚还bs.h头文件就包含了这些解析过程

2020-03-10

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除