hisi Camera 开发--HiMPP媒体处理软件开发基本概念

2023-11-08

1. HIMPP平台架构简介

海思提供的媒体处理软件平台(Media Process Platform,简称 MPP),可支持应用软件快速开发。该平台对应用软件屏蔽了芯片相关的复杂的底层处理,并对应用软件直接提供 MPI(MPP Program Interface)接口完成相应功能。该平台支持应用软件快速开发以下功能:输入视频捕获、H.265/H.264/JPEG 编码、H.265/H.264/JPEG 解码、视频输出显示、视频图像前处理(包括去噪、增强、锐化)、图像拼接、图像几何矫正、智能、音频捕获及输出、音频编解码等功能。

2. 系统分层结构

系统大概层次结构如下:

  • 硬件层
    硬件层由 Hi35xx 芯片加上必要的外围器件构成。外围器件包括 Flash、DDR、视频 Sensor 或 AD、音频 AD 等。
  • 操作系统层
    基于 Linux 或 Huawei LiteOS 的 OS 系统。
  • 操作系统适配层
    提供操作系统系统调用基础函数,屏蔽操作系统差异,支持媒体处理平台运行在不同的操作系统上,或相同操作系统不同版本。
  • 媒体处理平台
    基于操作系统适配层,控制芯片完成相应的媒体处理功能。它对应用层屏蔽了硬件处理细节,并为应用层提供 API 接口完成相应功能。
  • 其他驱动
    除媒体处理平台外,海思为 Hi35xx 芯片的其他相关硬件处理单元提供了相应的驱动,包括 CIPHER、RTC 等驱动。
  • 应用层
    基于海思媒体处理平台及其他驱动,由用户开发的应用软件系统。

以上这些分层,我们主要关注的是 HIMPP 媒体软件处理平台和应用层。我们必须对 HIMPP 这层的内容进行深入的学习了解,才能在其基础之上开发应用。

3. HIMPP 数据处理流程

海思媒体处理平台主要流程分为视频处理及音频处理两条路线:


 

我们先来大概了解一下各个模块的作用:

  • sensor: 包括镜头,感光芯片等器件,主要作用是光电信号转换。
  • disk: 为硬盘存储文件。视频的来源既可以是从 sensor 中采集的,也可以是从文件中读取出来的。视频回放时走的是这条通路。
  • VI:视频采集模块。捕获视频图像,可对其做剪切、缩放、镜像等处理,并输出多路不同分辨率的图像数据。
  • VDEC:视频解码模块。对编码后的视频码流进行解码,并将解析后的图像数据送 VPSS 进行图像处理或直接送 VO 显示。可对 H.264/H.265/VC1/MPEG4/MPEG2/AVS 格式的视 频码流进行解码。
  • VPSS:图像处理子系统。接收 VI 或 VDEC 发送过来的图像,可对图像进行去噪、图像增强、锐化等处理,并实现同源输出多路不同分辨率的图像数据用于编码、预览或抓拍。
  • NNIE:AI算法模块。从 VPSS 拿到帧数据,然后进行人脸检测,识别等各种 AI 算法。算法结果可以通过 histreaming 等协议发送给客户端 app。
  • VENC:编码模块。接收 VI 捕获并经 VPSS 处理后输出的图像数据,可叠加用户通过 Region 模块设置的 OSD 图像,然后按不同协议进行编码并输出相应码流(H264,MJPEG等)。然后可以通过各种视频传输协议进行传输。比如 uvc, rtsp, http 等。也可以保存到文件,后续可以进行回放。
  • VO:视频输出模块。接收 VPSS 处理后的输出图像,可进行播放控制等处理,最后按用户配置的输出协议输出给外围视频设备 HDMI 等。
  • mic:麦克风。主要作用是声电信号转换。
  • AI: 音频采集模块。捕获音频数据,然后 AENC 模块支持按多种音频协议对其进行编码,最后输出音频码流。
  • 用户从网络或外围存储设备获取的音频码流可直接送给 ADEC 模块,ADEC 支持 解码多种不同的音频格式码流,解码后数据送给 AO 模块即可播放声音。

我们对以上各模块的作用及数据处理流程一定要非常熟悉。因为应用层的开发基本上都是围绕着这个流程来进行编码实现的。应用层只需要配置好各模块的参数,启动,然后把各模块连接起来就行。

4. 系统初始化

系统控制模块根据芯片特性,完成硬件各个部件的复位、基本初始化工作,同时负责完成 MPP(Media Process Platform 媒体处理平台)系统各个业务模块的初始化、去初始化以及管理 MPP 系统各个业务模块的工作状态、提供当前 MPP 系统的版本信息、提供大块物理内存管理等功能。应用程序启动 MPP 业务前,必须完成 MPP 系统初始化工作。同理,应用程序退出 MPP 业务后,也要完成 MPP 系统去初始化工作,释放资源。

4.1 视频缓冲池 VB

视频缓存池主要向媒体业务提供大块物理内存管理功能,负责内存的分配和回收,充分发挥内存缓存池的作用,让物理内存资源在各个媒体处理模块中合理使用。一组大小相同、物理地址连续的缓存块组成一个视频缓存池。
视频输入通道需要使用公共视频缓存池。所有的视频输入通道都可以从公共视频缓存池中获取视频缓存块用于保存采集的图像(如图中所示从公共视频缓存池 B 中获取视频缓存块 Bm)。由于视频输入通道不提供创建和销毁公共视频缓存池功能,因此,在系统初始化之前,必须为视频输入通道配置公共视频缓存池。

典型的公共视频缓存池数据流图如下:

 

VI 从公共视频缓存池 B 中获取视频缓存块 Bm,缓存块 Bm 经 VI发送给 VPSS,输入缓存块 Bm 经过 VPSS 处理之后被释放回公共视频缓存池。假设 VPSS 通道的工作模式是 USER, 则 VPSS 通道 0 从公共视频缓存池 B 中获取缓存块 Bi 作为输出图像缓存 buffer 发送给 VENC,VPSS 通道 1 从公共视频缓存池 B 中获取缓存块 Bk 作为输出图像缓存 buffer 发送给 VO,Bi 经 VENC 编码完之后释放回公共视频缓存池,Bk 经 VO 显示完之后释放回公共视频缓存池。

5. VI

视频输入(VI)模块实现的功能:通过 MIPI Rx(含 MIPI 接口、LVDS 接口和 HISPI 接口),SLVS-EC,BT.1120,BT.656,BT.601,DC 等接口接收视频数据。VI 将接收到的数据存入到指定的内存区域,在此过程中,VI 可以对接收到的原始视频图像数据进行处理, 实现视频数据的采集。
VI 在软件层次上划分 4 个部分:


VI 从软件上划分了输入设备(DEV), 输入 PIPE(图示为物理 PIPE,虚拟 PIPE 只包含ISP_BE)、物理通道(PHY_CHN)、扩展通道(EXT_CHN)四个层级。

  • 视频输入设备
    视频输入设备支持若干种时序输入,负责对时序进行解析。
  • 视频输入物理 PIPE
    视频输入 PIPE 绑定在设备后端,负责设备解析后的数据再处理。包含了 ISP 的相关处理功能,主要是对图像数据进行流水线处理,输出YUV 图像格式给通道。
  • 视频输入虚拟 PIPE
    视频输入虚拟 PIPE 不绑定设备,负责其他模块或用户发送过来的数据再处理。
  • 视频物理通道
    物理通道负责将最终处理后的数据输出到 DDR,在真正将数据输出到 DDR 之前,它可以实现裁剪等功能。Hi3519AV100 VI 的一个 PIPE 包含 2 个物理通道。CH0 具有裁剪、压缩等功能。CH1 具有缩小的功能,支持 8 个扩展通道。
  • 视频扩展通道
    扩展通道是物理通道的扩展,扩展通道具备缩放、裁剪、鱼眼矫正功能,它通过绑定物理通道,将物理通道输出作为自己的输入,然后输出用户设置的目标图像。

VI 的硬件通路如下:

 

  • 镜头畸变校正(LDC)
    镜头畸变校正,一些低端镜头容易产生图像畸变,需要根据畸变程度对其图像进行校正。
  • DIS
    DIS 模块通过比较当前图像与前两帧图像采用不同自由度的防抖算法计算出当前图像在各个轴方向上的抖动偏移向量,然后根据抖动偏移向量对当前图像进行校正,从而起到防抖的效果。
  • BAS
    Bayer scaling,即 Bayer 域缩放。
  • 低延时
    低延时指图像写出指定的行数到 DDR 后,VI 上报一个中断,把图像发给后端模块处理,可以减少延时,且硬件会有机制保证图像是先写后读,不会出现读图像错误。
  • 提前上报中断
    提前上报中断指图像写出指定的行数到 DDR 后,VI 上报一个中断,把图像发给后端模块处理,可以减少延时,但没有和低延时一样的硬件机制保证后端模块读图像不会出错。

6. VPSS

VPSS(Video Process Sub-System)是视频处理子系统,支持的具体图像处理功能包括 FRC(Frame Rate Control)、CROP、Sharpen、3DNR、Scale、像素格式转换、LDC、Spread、固定角度旋转、任意角度旋转、鱼眼校正、Cover/Coverex、Overlayex、Mosaic、Mirror/Flip、HDR、Aspect Ratio、压缩解压等。

vpss 的数据处理流程如下:

vpss 相关基本概念:

  • GROUP
    VPSS 对用户提供组(GROUP)的概念。最大个数请参见 VPSS_MAX_GRP_NUM 定义,各 GROUP 分时复用 VPSS 硬件,硬件依次处理各个组提交的任务。
  • CHANNEL
    VPSS 组的通道。通道分为 2 种:物理通道和扩展通道。VPSS 硬件提供多个物理通道,每个通道具有缩放、裁剪等功能。扩展通道具备裁剪、缩放功能,它通过绑定物理通道,将物理通道输出作为自己的输入,把图像裁剪、缩放成用户设置的目标分辨率输出。
  • PIPE
    VPSS 组的管道,取值只能为 0。
  • FRC
    帧率控制,分为 2 种:组帧率控制和通道帧率控制。
    • 组帧率控制:用于控制各 GROUP 对输入图像的接收。
    • 通道帧率控制:用于控制各个物理通道和扩展通道图像的处理。
  • CROP
    裁剪,分为 3 种:组裁剪、物理通道裁剪以及扩展通道裁剪。
    • 组裁剪,VPSS 对输入图像进行裁剪。
    • 物理通道裁剪,VPSS 对各个物理通道的输出图像进行裁剪。
    • 扩展通道裁剪,VPSS 调用 VGS 对扩展通道的输出图像进行裁剪
  • Scale
    缩放,对图像进行缩小放大。物理通道水平、垂直最大支持 15 倍缩小,最大支持 16 倍放大;扩展通道水平、垂直最大支持 30 倍缩小,最大支持 16 倍放大。
  • Mirror/Flip
    Mirror 即水平镜像,Flip 即上下翻转。可使用 Mirror+Flip 实现 180°旋转。
  • Mosaic
    马赛克,对 VPSS 的输出图像填充马赛克块。
  • Cover
    视频遮挡区域,对 VPSS 的输出图像填充纯色块。
  • Overlayex
    视频叠加区域,调用 VGS 对 VPSS 通道的输出图像叠加位图,支持位图格式 ARGB4444、ARGB1555、ARGB8888、2BPP(仅 Hi3516EV200/Hi3516EV300 支持)。
  • 3DNR
    去噪。通过参数配置,把图像中的高斯噪声去除,使得图像变得平滑,有助于降低编码码率。Hi3559AV100ES/Hi3559AV100 不支持。
  • 固定角度旋转
    支持 0 度、90 度、180 度以及 270 度固定角度的旋转功能。
  • 任意角度旋转
    支持任意角度的旋转功能。Hi3559AV100ES/Hi3559AV100/Hi3516EV200 不支持。
  • LDC
    对输入图像做镜头畸变校正。Hi3559AV100ES/Hi3559AV100/Hi3516EV200 不支
    持。
  • Spread
    对输入图像做展宽处理。Hi3559AV100ES/Hi3559AV100/Hi3516EV200 不支持。
  • 鱼眼校正
    仅 Hi3519AV100/Hi3516CV500/Hi3516AV300/Hi3516DV300 支持。
  • Aspect Ratio
    幅形比,指定输出画面相对于输入画面的宽高纵横比。

6.1 从 VPSS 模块中获取帧数据

我们需要进行 AI 算法运行的时候,需要从 VPSS 模块中获取帧数据,输入给算法模块进行处理。帧数据的获取大概如下:

1
2
3
4
5
6
7
8
// 1. 获取帧数据,保存到 pstVideoFrame 中。
HI_S32 HI_MPI_VPSS_GetChnFrame(VPSS_GRP VpssGrp, VPSS_CHN VpssChn, VIDEO_FRAME_INFO_S *pstVideoFrame, HI_S32 s32MilliSec);\
// 2. 第一步中获取到的数据地址是物理地址,需要调用 mmap 把物理地址映射成逻辑地址。
HI_VOID *HI_MPI_SYS_Mmap(HI_U64 u64PhyAddr, HI_U32 u32Size);
// 3. 数据使用
将帧数据输入给算法模块使用。
// 4. 释放帧数据
HI_S32 HI_MPI_VPSS_ReleaseChnFrame(VPSS_GRP VpssGrp, VPSS_CHN VpssChn, const VIDEO_FRAME_INFO_S *pstVideoFrame);

7. VO

VO(Video Output,视频输出)模块主动从内存相应位置读取视频和图形数据,并通过相应的显示设备(HDMI等)输出视频和图形。

8. VENC

视频编码模块支持多路实时编码,且每路编码独立,编码协议和编码 profile 可以不同。本模块支持视频编码同时,调度 Region 模块对编码图像内容进行叠加和遮挡。
视频编码流程如下:
 

 

其中编码通道处理流程如下:

venc 相关基本概念:

  • 编码通道
    编码通道作为基本容器,保存编码通道的多种用户设置和管理编码通道的多种内部资源。编码通道完成图像转化为码流的功能,具体由码率控制器和编码器协同完成。这里的编码器指的是狭义上的编码器,只完成编码功能。码率控制器提供了对编码参数的控制和调整,从而对输出码率进行控制。
  • 码率控制
    码率控制器实现对编码码率进行控制。从信息学的角度分析,图像的压缩比越低,压缩图像的质量越高;图像压缩比例越高,压缩图像的质量越低。对于场景变化的真实场景,图像质量稳定,编码码率会波动;编码码率稳定,图像质量会波动。以 H.264 编码为例,通常图像 Qp 越低,图像的质量越好,码率越高;图像 Qp 越高,图像质量越差,码率越低。
    码率控制是针对连续的编码码流而言,所以,JPEG 协议编码通道不包括码率控制功能。
    码率控制器分别提供了对 MJPEG 协议编码通道 CBR、VBR、FIXQP 三种码率控制模式,H.264/H.265 协议编码通道 CBR、VBR、AVBR、QVBR、CVBR、FIXQP、QPMAP 七种码率控制模式,对图像质量和码率进行调节,对于 H.264/H.265/协议通道的 QPMAP 模式,码控的策略由用户决定。

8.1 从 VENC 模块中获取帧数据

VENC 编码完成后,需要 uvc, rtsp 等模块从 VENC 中获取帧数据,然后对外发送。帧数据的获取流程大概如下:

1
2
3
4
5
6
7
8
// 1. 查询 VENC 编码状态, VENC_CHN_STATUS_S.u32CurPacks 为当前帧的 package 数量。为 0 时说明还没编码好,等会再查询。
HI_S32 HI_MPI_VENC_QueryStatus(VENC_CHN VeChn, VENC_CHN_STATUS_S *pstStatus);
// 2. 获取帧数据,保存到 pstStream 中。
HI_S32 HI_MPI_VENC_GetStream(VENC_CHN VeChn, VENC_STREAM_S *pstStream, HI_S32 s32MilliSec);
// 3. 数据使用
将帧数据输入给 uvc, rtsp 等模块。
// 4. 释放帧数据
HI_S32 HI_MPI_VENC_ReleaseStream(VENC_CHN VeChn, VENC_STREAM_S *pstStream);

9. VI, VPSS 工作模式

VI 和 VPSS 各自的工作模式分为在线,离线,并行模式,工作模式说明如下:

模式 VI_CAP 与 VI_PROC VI_PROC 与 VPSS
在线模式 VI_CAP 与 VI_PROC 之间在线数据流传输,此模式下 VI_CAP不会写出 RAW 数据到 DDR,而是直接把数据流送给VI_PROC。 VI_PROC 与 VPSS 之间的在线数据流传输,在此模式下 VI_PROC不会写出 YUV 数据到 DDR,而是直接把数据流送给 VPSS。
离线模式 VI_CAP 写出 RAW 数据到DDR,然后 VI_PROC 从 DDR 读取 RAW 数据进行后处理。 VI_PROC 写出 YUV 数据到DDR,然后 VPSS 从 DDR 读取 YUV 数据进行后处理。

从以上的描述来看在线模式和离线模式的主要差别是是否将数据写出 DDR。在线模式时 VI 进行时序解析后直接在芯片内部将数据传递到VPSS,中间无DDR 写出的过程。在线模式可以省一定的带宽和内存,降低端到端的延时。但是,在线模式时,因为VI 不写出数据到DDR,无法进行CoverEx、OverlayEx、Rotate、LDC 等操作,需要在VPSS 各通道写出后再进行Rotate/LDC 等处理,而且有些功能只在离线下能支持,比如DIS。所以使用在线模式还是离线模式需要根据具体需求来决定。如果追求低延时,那自然要使用在线模式。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

hisi Camera 开发--HiMPP媒体处理软件开发基本概念 的相关文章

  • 【C++音视频开发】视频篇 | RGB与YUV

    前言 本专栏将不间断更新有关C 43 43 音视频开发的内容 xff0c 其中有初级章 中级章与高级章的内容 xff0c 包括但不限于音视频基础 FFmpeg实战 QT 流媒体客户端 流媒体服务器 WebRTC实战 Android NDK等
  • ioctl系统调用过程(深入Linux(ARM)内核源码)

    1 系统调用过程简述 图1 1 系统调用过程图 探究系统调用过程 以ioctl为例 通俗来说 其实就是探究操作系统实现应用程序的ioctl对应上特定驱动程序的ioctl的过程 由于应用程序的ioctl处于用户空间 驱动程序的ioctl处于内
  • FFmpeg源码分析:av_register_all()注册封装器与解封装器

    FFmpeg中av register all 函数用于注册所有muxers demuxers与protocols FFmpeg4 0以前是用链表存储muxer demuxer FFmpeg4 0以后改为数组存储 并且av register
  • FFplay文档解读-18-音频过滤器三

    26 21 anequalizer 每个通道的高阶参数多频带均衡器 它接受以下参数 params 此选项字符串的格式为 cchn f cf w w g g t f 每个均衡器带由 分隔 均衡器 解释 chn 设置要应用均衡的通道编号 如果输
  • 音视频&流媒体的原理以及基础入门知识

    流媒体背景 当下 音视频 流媒体已经无处不在 直播已经火了几年 在后续的时间里面 人们聊天已经不仅仅满足与文字 而是更多的在于 类面对面 交流 能够实时感知对方的表情 动作 为此 有必要跟紧时代潮流 好好梳理梳理流媒体这门功课 流媒体是什么
  • OBS-VirtualCam OBS的虚拟摄像头插件

    OBS VirtualCam 是OBS的一个虚拟摄像头插件 可以将OBS中的内容提供给一个虚拟摄像头 这样其它软件就可以使用这个内容了 这里试试这个插件功能 1 下载obs并安装 登录OBS Studio网站 下载windows版 下载完成
  • FFmpeg从入门到入魔(2):保存流到本地MP4

    1 FFmpeg裁剪移植 之前我们简单地讲解了下如何在Linux系统中编译FFmpeg 但是编译出来的so体积太大 而且得到的多个so不便于使用 本节在此基础上 将详细讲解在编译FFmpeg时如何对相关模块作裁剪以精简so的体积 并且编译只
  • 音视频开发--基础知识

    目录 音视频基础知识 1 相关术语 1 1 帧 1 2 分辨率 1 3 刷新率 1 4 码率 1 5 画质 1 6 采样率 1 7 量化精度 1 8 视频帧 I帧 P帧 B帧 1 9 音频帧 1 10 声道 1 11 PTS DTS 1 1
  • hisi Camera 开发--HiMPP媒体处理软件开发基本概念

    1 HIMPP平台架构简介 海思提供的媒体处理软件平台 Media Process Platform 简称 MPP 可支持应用软件快速开发 该平台对应用软件屏蔽了芯片相关的复杂的底层处理 并对应用软件直接提供 MPI MPP Program
  • 走进音视频的世界——RGB与YUV格式

    在图像的世界里 一般使用RGB作为存储格式 而在视频的世界里 一般使用YUV作为压缩存储格式 有时候面试官会问 为什么视频使用YUV来压缩存储 而不用RGB YUV与RGB有什么区别 两者如何转换的 常见的RGB格式有哪些 常见的YUV格式
  • FFMPEG进阶系列02-ffmpeg命令详解3

    ffmpeg 的封装转换 FFmpeg的封装转换部分 主要是通过libavformat这部分来完成的功能 通过libavformat库进行mux和demux操作 多媒体文件的格式有很多种 但是还是有好多demux与mux的操作参数是公用的
  • Linux车机平台pulseaudio多alsasink配置

    https www freedesktop org wiki Software PulseAudio 官网上的介绍是这样的 pulseaudio 是一个POSIX操作系统上的声音系统 是音频应用的代理 它允许你对音频数据 在从应用传递到硬件
  • Red5应用开发(三) 点播

    Red5点播默认只支持RTMP协议的点播地址 RTSP和HLS需要使用插件的形式进行配置 插件需要自己编译 很多依赖有问题 后期有需求再更新 Github 仓库地址 利用Red5的Eclipse插件生成的默认Red5工程即可直接作为点播应用
  • Android平台RTSP

    1 背景 我们在做Android平台RTSP或者RTMP播放器开发的时候 需要注意的点非常多 以下 以大牛直播SDK 官方 的接口为例 大概介绍下相关接口设计 2 接口设计 2 1 Open 接口 Open接口的目的 主要是创建实例 正常返
  • Python音视频开发:消除抖音短视频Logo和去电视台标的实现详解

    前往老猿Python博文目录 一 引言 对于带Logo 如抖音Logo 电视台标 的视频 有三种方案进行Logo消除 直接将对应区域用对应图像替换 直接将对应区域模糊化 通过变换将要去除部分进行填充 其中 方法1又可以使用三种方法 一是使用
  • 视频编解码(一):ffmpeg编码H.264帧类型判断

    本文主要讲述ffmpeg编码过程中是如何设置I帧 B帧及P帧的 以及如何通过代码判断帧类型 之前看过很多网上的文章 讲述如何判断I帧 B帧 P帧 然而都是停留在H 264官方文档中的定义 如果不结合ffmpeg 就仿佛纸上谈兵 有点不切实际
  • (ffmpeg)ffmpeg+SDL的简单播放器(雷霄骅)更新版

    代码源自雷神 一个是播放音频的demo 可以播放MP3和AAC 但是MP3应该是没有封面的 另一个是播放ts格式的视频 没有声音 源码可以到雷神博客下载 但是因为ffmpeg库的更新问题 并不能直接在ubuntu下直接运行 笔者做了修改 在
  • Ffmpeg视频开发教程(七)——基于ffmpeg4.0生成模拟yuv数据和模拟音频数据再合成为mp4文件

    本文主要实现使用最新版的ffmpeg生成模拟yuv数据和模拟音频数据再合成为mp4文件 重要代码都是来自官方 稳定性可靠 本文程序的环境搭建参考我的第一篇FFMPEG教程 https blog csdn net zhangamxqun ar
  • 封装一个OpenH264 编解码H264视频文件的类

    下面是一个更新后的代码 增加了 H 264 编码的支持 在这个示例中 我使用了 OpenH264 的 ISVCEncoder 接口进行编码 请确保在项目中正确链接 OpenH264 库 并根据你的项目需要调整代码 include
  • FFmpeg转码流程和常见概念

    视频格式 mkv flv mov wmv avi mp4 m3u8 ts等等 FFmpeg的转码工具 它的处理流程是这样的 从输入源获得原始的音视频数据 解封装得到压缩封装的音视频包 对音视频包进行解码 得到原始的音视频帧 对原始音视频帧进

随机推荐

  • 一键排序Linux内存占用

    top c 大写M M
  • 华为鸿蒙os系统服务器炸了,华为鸿蒙OS短时间内威胁不到麒麟操作系统和统信UOS系统...

    麒麟操作系统和统信UOS系统是当前国产Linux操作系统的两座大山 它们鼎足而立 麒麟操作系统多用于高端部署 而统信UOS有更强大的Deepin社区支撑 比如麒麟操作系统可用于大型计算机 各类政企终端 而统信UOS受到华为笔记本的青睐 被预
  • 【教程】DGL中的子图分区函数partition_graph讲解

    转载请注明出处 小锋学长生活大爆炸 xfxuezhang cn 目录 函数形式 函数作用 函数内容 函数入参 函数返参 使用示例 实际上官方的函数解释中就已经非常详细了 函数形式 def partition graph g graph na
  • uniapp---- 微信小程序中获取当前地理位置(高德地图)

    uniapp 微信小程序中获取当前地理位置 高德地图 1 在manifest json中选择微信小程序配置 勾选上位置接口 2 在manifest json中选择源码视图 添加permission和requiredPrivateInfos
  • 《effective c++》总结

    文章目录 前言 条款02 尽量以const enum inline替换 define 条款03 尽可能使用const 条款04 确定对象被使用前已先被初始化 条款05 了解c 默默编写并调用哪些函数 条款06 若不想使用编译器自动生成的函数
  • Android开发下遇到的一些奇葩问题处理

    环境 MAC Android Studio Q1 Gradle Home not found 网上查到的解决方案比较少一些 如 gradle wrapper properties 配置错误等等 Solution 我的解决是 无意中点了Run
  • 希沃展台如何使用_视频展台的操作步骤

    键盘控制 1 开启展示台及外围设备 按select键选择信号源 当body指示灯亮时 输出信号为摄像头 当external指示灯亮时 输出信号为外部信号源 开机时默认为摄像头 2 将被演示物放置在展台上 调整摄像头对准被摄物体 3 根据镜头
  • K8S单master部署四:Kubelet+kube-proxy

    服务器角色分配 角色 地址 安装组件 master 192 168 142 220 kube apiserver kube controller manager kube scheduler etcd node1 192 168 142 1
  • 创新实训(21)——推荐算法的评估

    前言 昨天使用Mohout推荐引擎实现了用户的协同过滤算法 今天使用昨天实现的算法计算一下推荐的准确率以及查全率 查准率 算法评判标准 召回率 recall 与查准率 precision A 检索到的 相关的 搜到的也想要的 B 未检索到的
  • uni-app onBackPress 小程序 解决方案 uni-app返回

    onBackPress 只支持APP和H5 但不支持小程序 可以用onUnload生命周期解决 页面销毁的时候执行方法
  • 史上最简单的 SpringCloud 教程

    转载请标明出处 原文首发于 https www fangzhipeng com springcloud 2018 08 30 sc f1 eureka 本文出自方志朋的博客 一 spring cloud简介 鉴于 史上最简单的Spring
  • 2PC算法

    概述 2PC 是Two Phase Commit的缩写 即二阶段提交 主要解决的问题是让基于分布式架构下的所有节点在进行事务处理过程中能够保证原子性和一致性 它的核心思想是 一票否决 提交过程 正如它的名字 它的提交分为两个阶段 第一阶段
  • 测试操作xml文件

    先查出所有的时间 并转换为时间戳 time SELECT ROW NUMBER OVER ORDER BY a SERIAL AS row num a SERIAL a COMMANDID a CELLID a USERID a LIBTI
  • Redis 数据类型 (完整版)

    Redis 数据类型 Redis支持五种数据类型 string 字符串 hash 哈希 list 列表 set 无序集合 zset 有序集合 1 String 字符串 set key value 赋值 get key 取值 127 0 0
  • 十大经典排序算法最强总结

    点击上方 我要学编程 选择 置顶 星标公众号 福利干货 第一时间送达 排序算法属于经典基础算法基本功 笔试面试基本都会涉及和考察的 有原题也有变化 不过基础的几大排序算法还是得尽可能熟悉 能在思路熟悉的前提下手写出代码就更好了 为了防止不提
  • 开源中国 2018 年度榜单之国产新秀榜

    回看 2018 年 无论是国内外 科技公司对 开源 投入的巨大资本不仅令人咋舌 更重要的是 伴随着资本的强势注入 有理由相信 开源 将会有更光明且清晰可见的未来 而开源软件作为其中最重要的一环 除了充分展示 开源 的生态丰富之外 还在某种程
  • Java并发编程学习4-线程封闭和安全发布

    Java并发编程学习系列 线程封闭和安全发布 1 线程封闭 1 1 Ad hoc 线程封闭 1 2 栈封闭 1 3 ThreadLocal 类 2 不变性 2 1 Final 域 2 2 不可变对象的简单示例 3 安全发布 3 1 不正确的
  • 全方位解读Web3域名:DID基石、NFT新增长点

    1 Web3域名在NFT市场整体低迷的背景下表现出色 2 Web3域名有庞大的用户群体和巨大的上升空间 3 Web3域名是用户重要的Web3身份凭证 可使用域名访问全链应用 4 Web3域名长期来看使用大于炒作 今年下半年 Web3域名在N
  • gitlab配置https方式访问

    1 mkdir etc gitlab ssl 创建ssl证书目录 2 上传证书 3 配置gitlab vim etc gitlab gitlab rb external url https cloud cn nginx enable tru
  • hisi Camera 开发--HiMPP媒体处理软件开发基本概念

    1 HIMPP平台架构简介 海思提供的媒体处理软件平台 Media Process Platform 简称 MPP 可支持应用软件快速开发 该平台对应用软件屏蔽了芯片相关的复杂的底层处理 并对应用软件直接提供 MPI MPP Program