当前位置: 首页 > article >正文

X265墒编码--代码分析

x265 墒编码X265 HEVC编码器架构分析一 整体代码架构1.1 目录与模块划分source/├── x265cli.cpp / x265cli.h # 命令行入口、参数解析、help├── x265.h # 对外 API、参数结构、版本├── encoder/ # 编码核心│ ├── encoder.cpp/h # 编码器顶层创建/销毁、encode() 主流程、VPS/SPS/PPS│ ├── api.cpp # x265_encoder_encode() 等对外接口│ ├── frameencoder.cpp/h # 单帧编码compressFrame、WPP 行调度、processRow│ ├── slicetype.cpp/h # Lookaheadslice 类型决策、低分辨率估计、cost│ ├── search.cpp/h # 运动估计、模式搜索ME、PME、merge 等│ ├── analysis.cpp/h # CU 划分与模式决策Analysis::compressCTU 等│ ├── motion.cpp/h # 运动估计数据结构与接口│ ├── entropy.cpp/h # CABAC 熵编码│ ├── framefilter.cpp/h # 去块、SAO│ ├── ratecontrol.cpp/h # 码率控制QP、VBV、ABR 等│ ├── dpb.cpp/h # 解码图像缓冲区DPB│ ├── nal.cpp/h, sei.cpp, level.cpp, reference.cpp, bitcost.cpp, sao.cpp├── common/ # 通用数据结构与算法│ ├── frame.cpp/h, framedata.cpp/h, slice, picyuv, cudata # 帧/片/CU 数据│ ├── quant.cpp/h, dct.cpp # 变换量化│ ├── param.cpp, primitives.cpp, bitstream, predict, deblock, loopfilter, intrapred│ ├── threadpool.cpp/h # 线程池、JobProvider、BondedTaskGroup│ ├── wavefront.cpp/h # WPP 波前调度行依赖、enqueue/enable│ ├── threading.cpp/h # Thread、Event、Lock 等封装├── input/, output/ # YUV/Y4M 等 IO├── dynamicHDR10/ # HDR10 等└── test/, profile/ # 测试与性能分析1.2 数据与编码流水线概览- 输入x265_picture, 拷贝到Frame PicYuv 送入Lookahead- Lookahead低分辨率初始化AQ帧代价估计slice类型与POC决策输出已决策帧- 编码器从Lookahead 取getDecidedPicture 交给某个FrameEncoder 做单帧压缩- 单帧压缩码率控制-slice 墒初始化CTU行波前或串行处理分析 变换量化 墒编码 去块/SAO- 输出 编码后的帧通过 getEncodePicture() 回到Encoder::encode() 写入DPB输出NAL比特流。二 线程架构2.1 线程角色概览- API 主线程1 调用encode() 送输入取lookahead决策帧分配FrameEncoder, 取编码结果并输出- Frame Encoder线程frameNumThreads 每个对应一个FrameEncoder运行threadMain 等- 线程池Worker 每池N个执行JobProvider::findJob() 为Lookahead或FrameEncoder- Lookahead 专用池可选lookaheadThreads 0 时单独建池只做lookahead 不与帧编码共享2.2 线程间协作关系API线程输入pic_in, 封装为Frame m_lookahead-addPicture()当lookahead填满后frameEnc m_lookahead-getDecidedPicture()再选一个curEncoder, curEncoder取出 curEncoder-getEncodedPicture(m_nallist) 内部会等该帧的m_done- Frame Encoder线程循环m_enable.wait() -comporessFrame() -m_done.trigger()再compressFrame() 里码率控制 slice/墒初始化若 ** 开WPP **则对每行解外部依赖后enableRow, 对row0, enqueueRow, tryWakeOne() 然后本线程 阻塞在m_completionEvent 直到所有行被处理完。- 未开 WPP同一线程串行执行processRowEncoder(i, m_tld[...]) 不用池- 线程池 Worker从当前或优先的JobProvider调用 findJob(workerId)JobProvider 可以是Lookahead 低分辨率初始化AQ帧代价估计等PreLookaheadGroup,CostEstimateGroup 等通过BondedTaskGroup 拉多线程FrameEncoder 继承WaveFront, JobProvider findJob 即波前调度取可用的最小row, 执行processRow(row, threadid) 分析 编码 滤波该行Lookahead专用池当lookaheadThreads 0时会单独allocThreadPools(..., 1) 建一组池只挂Lookahead为JobProvider, 不与帧编码的池共享避免lookahead与帧编码抢同一批worker。2.3 参数对线程的影响frame-threads (frameNumThreads) 并发编码的帧数也是FrameEncoder 及各自线程的个数每帧由一个FrameEncoder负责- pools numaPools:按NUMA节点划分的线程池每个池若干Worker FrameEncoder 轮流绑定到不同池i % m_numPools- wpp 开启后帧内按CTU行波前并行行由线程池Worker 执行processRow 关闭则仅仅由该帧对应的FrameEncoder线程串行processRowEncoder()-pmode/pme 在帧内用BondedTaskGroup把模式分析运动估计等子任务分给池内worker-lookahead-threads 专用lookahead 池的worker数量0表示lookahead与帧编码共用同一批池三 线程架构图(Mermaid)下面用 Mermaid 画出「线程类型 数据/控制流」的架构图便于在支持 Mermaid 的查看器中渲染如 GitHub、VS Code 插件等。mermaidflowchart TBsubgraph API[API / 主线程]A1[encode(pic_in, pic_out)]A2[Frame → Lookahead.addPicture()]A3[frameEnc Lookahead.getDecidedPicture()]A4[curEncoder.startCompressFrame(frameEnc)]A5[curEncoder.getEncodedPicture(nalList)]A1 -- A2A2 -- A3A3 -- A4A4 -- A5A5 -- A1endsubgraph FE[Frame Encoder 线程 (× frameNumThreads)]F1[threadMain(): m_enable.wait()]F2[compressFrame()]F3[slice/熵初始化、enableRow / enqueueRow]F4[WPP: m_completionEvent.wait()]F5[m_done.trigger()]F1 -- F2F2 -- F3F3 -- F4F4 -- F5F5 -- F1endsubgraph Pool[线程池 Worker (每池 N 个)]W1[findJob(workerId)]W2A[Lookahead: 低分辨率/AQ/Cost 估计]W2B[FrameEncoder: processRow(row)]W1 -- W2AW1 -- W2Bendsubgraph LA[Lookahead (逻辑)]L1[addPicture / 决策队列]L2[getDecidedPicture()]endAPI --|addPicture| LAAPI --|getDecidedPicture| LAAPI --|startCompressFrame → m_enable.trigger()| FEAPI --|getEncodedPicture → 等 m_done| FEFE --|enqueueRow / tryWakeOne()| PoolFE --|JobProvider this| PoolLA --|JobProvider Lookahead| PoolPool --|processRow() 完成行| FE简化版线程与角色关系Mermaidflowchart LRsubgraph Main[主线程]API[API encode]endsubgraph FrameThreads[帧编码线程]FE0[FrameEnc 0]FE1[FrameEnc 1]FEN[FrameEnc N-1]endsubgraph Pools[线程池]WP[Worker 0..M]endsubgraph LookaheadPool[Lookahead 专用池 (可选)]LW[Lookahead Workers]endAPI --|输入帧| LookaheadLookahead --|已决策帧| APIAPI --|分配帧| FrameThreadsFrameThreads --|WPP: 行任务| PoolsLookahead --|低分辨率/代价| PoolsLookahead --|若 lookaheadThreads0| LookaheadPoolPools --|processRow / findJob| FrameThreadsFrameThreads --|编码结果| API四 关键类与职责类/模块 职责Encoder 顶层编码器:create/destory, encode() 主循环Lookahead /DPB/RC/FrameEncoder创建与协调FrameEncoder 单帧编码继承Thread WaveFront(JobProvider)compressFrame, 行依赖WPP调度Lookahead 缓冲输入帧低分辨率AQ帧代价slice类型决策getDecidedPicture()ThreadPool,一组WorkerThread 分配JobProvider 支持Numa亲和JobProvider findJob(workerId); lookahead与FrameEncoder均为Provider WaveFront 行级依赖位图enqueueRow/enableRow, findJob选最小row调用processRowBondedTaskGroup 临时绑定多个worker执行processTasks, 用于PMEpmode,Lookahead批量任务五 小结帧级并行 多路FrameEncoder线程每路负责一帧的完整编码流出API线程按顺序取决策并轮转分配给不同FrameEncoder帧内并行WPP, 开启后由线程池Worker 并处理不同CTU行FrameEncoder 线程只做调度与等待完成。Lookahead 并行通过线程池或专用lookahead 池做低分辨率cost估计等可与帧编码共享或独立池。协调机制Event m_enable,m_done, m_completionEvent, lock原子/依赖位图以及RateControl的跨帧顺序保证正确性与码率控制。1 文档位置source/docs/ARCHITECTURE.md包含目录与模块划分数据/编码流水线线程角色与协作参数对线程的影响关键类职责以及两段Mermaid图流程图 简化关系图source/docs/thread-architecture.mmd单独的线程架构Mermaid图便于Mermaid编辑里打开或导出为图片。2 整体架构概括入口 Encoder::encode() 输入x265_picture 输出Nal比特流流水线输入帧-〉lookahead 低分辨率AQ帧代价slice类型决策-决策进入DPB/编码队列 分配给某个FrameEncoder 做整帧压缩码率控制slice, CTU行处理墒编码去块/SAO 输出编码帧核心目录encoder/编码流程帧编码lookahead 搜索墒编码码率控制等。common/帧CU/量化/DCT线程池波前参数等。3 线程架构概括 对应架构图线程类型数量/来源作用API主线程1调用encoder() 送帧进lookahead,取getDecidedPicture(), startCompressFrame() 分配帧getEncodePicture()取结果并输出Frame Encoder线程frameNumThreads每个一个线程循环等m_enable-执行compressFrame() 码率控制初始化若开WPP则下发行任务并等待完成-触发m_done线程池Worker每池N个执行JobProvider::findJob(),要么为Lookahead做低分辨率/代价估计要么为FrameEncoder做WPP的processRow(row),编码一行CTULookahead专用池可选单独一组worker只做lookahead不与帧编码池共享关系要点多帧并行多个FrameEncoder线程每帧固定由一个FrameEncoder负责帧内并行WPP开WPP时CTU行由线程池里的worker 并行执行processRow() ,对应FrameEncoder 线程只做调度并等m_completionEventLookahead可与帧编码共用同一批线程池也可用专用池。1 墒编码在本工程里分两层层次内容典型接口/写法参数集/高层语法VPSSPS,PPS,VUI,AUD,slice header等codeVPS/codeSPS/codePPS/codeSliceHeader等多为定长Exp-Golomb(WRITE_CODE,WRITE_UVLC等继承自SyntaxElementWriter)片内数据 CTU/CU/TU 系数HEVC规定的CABACEntropy::encodeBin/encodeBinEP/encodeBinTrm ,上下文在m_contextState[]Entropy.h 里面的Entropy同时承担写真实比特流m_bitIf 指向BitStream 和RDO时估计比特(m_bitIf NULL) 只累加m_fracBits, 不真正写文件。2 单帧里墒编码在流水线的位置1 模式决策 变换量化在Analysis::compressCTU完成过程中用一个Entropy在m_bitIf NULL 下估计代价。2 最终写码流同一 rowCoder在CTU定稿后再encodeCTU已选定的CU系数按语法写入若开SAO还会在CTU前写SAO语法。帧末尾在FrameEncoder::compressFrame, 先m_entropyCoder(m_initSliceContext), 再codeSliceHeader, 把各个WPP子码流 拼进NAL也就是说先把CTU 数据编码进子流再写slice头并封装。3 CTU 级encodeCTU, encodeCU递归void Entropy::encodeCTU(const CUData ctu, const CUGeom cuGeom){bool bEncodeDQP ctu.m_slice-m_pps-bUseDQP;encodeCU(ctu, cuGeom, 0, 0, bEncodeDQP);if (!(ctu.m_bLastCol ctu.m_bLastRow))encodeBinTrm(0);}encodeCU 按CUGeom 递归进入子CU需要时写codeSplitFlag叶CU上大致顺序 与HEVC一致1 非I片codeSkipFlag, 若为Skip codeMergeIndex finishCU, 结束2 否则codePredMode 帧内/帧间3 codePartSize PU划分2Nx2N,2NxN,AMP等4 codePredInfo, 帧内则亮度/色度intra方向帧间则codePUWise5 codeCoeff;根CBF 帧间再进行encodeTransform写TU树与系数If (!slice-isIntra()) {Bool skipFlag ctu.m_predMode[absPartIdx] PRED_SKIP;codeSkipFlag(ctu, absPartIdx, skipFlag);If (skipFlag) {codeMergeIndex(ctu, absPartIdx);finishCU(ctu, absPartIdx, depth, bEncodeDQP);Return ;}codePredMode(ctu.m_predMode[absPartIdx]);}codePartSize(ctu, absPartIdx, depth);//prediction InfocodePredInfo(ctu, absPartIdx);codeCoeff(ctu, absPartIdx, bEncodeDQP, tuDepthRange);finishCU(ctu, absPartIdx, depth, bEncodeDQP);4 变换与系数 codeCoeff-encodeTransform-codeCOeffNxNVoid Entropy::codeCoeff(const CUData cu, uint32_t absPartIdx, bool bCodeDQP, const uint32_t depthRange[2]){If (!cu.isIntra(absPartIdx)) {Bool rootCbf cu.getQtRootCbf(absPartIdx);If (!cu.m_mergeFlag[absPartIdx] cu.m_predMode[absPartIdx] PRED_2Nx2N)codeQtRootCbf(rootCbf);Uint32_t log2CuSize cu.m_log2CuSize[absPartIdx];encodeTransform(cu, absPartIdx, 0, log2CuSize, bCodeDQP, depthRange)}}codeCOeffNxN 系数编码的主体确定 last significant coefficient 位置一类逻辑前缀CABAC 后缀 bypass.按4x4系数组写significant_coeff_group_flag组内写significant_coeff_flag, coeff_abs_level_greater1/2, coeff_abs_level_remaining等与你在quant.cpp 里RDOQ用的上下文一致。若开启sign hiding, 符号按规范与电平一起处理。5 CABAC状态resetEntropy 与引擎resetEntropy(const Slice slice): 按slice 类型 QP用标准INIT_*表初始化m_contextState各段(split, skip, merge, MVD, cbf, sig, last, level等)然后start 重置算数编码寄存器void Entropy::resetEntropy(const Slice slice){int qp slice.m_sliceQp;SliceType sliceType slice.m_sliceType;initBuffer(m_contextState[OFF_SPLIT_FLAG_CTX], sliceType, qp, (uint8_t*)INIT_SPLIT_FLAG, NUM_SPLIT_FLAG_CTX);...initBuffer(m_contextState[OFF_ABS_FLAG_CTX], sliceType, qp, (uint8_t*)INIT_ABS_FLAG, NUM_ABS_FLAG_CTX);...start();}start(): m_range 510, m_low 0, m_bitsLeft -12等即HEVC CABAC算数编码段的起点void Entropy::start(){m_low 0;m_range 510;m_bitsLeft -12;m_numBufferedBytes 0;m_bufferedByte 0xff;}encodeBin(bin, ctxModel)用sbacNext 更新上下文状态若有m_bitIf 按LPS表划分区间重归一化必要时writeOut 把字节写入BitStream若无m_bitIf, 只m_fracBits sbacGetNetropyBits() 用于RDOvoid Entropy::encodeBin(uint32_t binValue, uint8_t ctxModel){uint32_t mstate ctxModel;ctxModel sbacNext(mstate, binValue);if (!m_bitIf){m_fracBits sbacGetEntropyBits(mstate, binValue);return;}...if (m_bitsLeft 0)writeOut();}encodeBinEP/encodeBinsEP, 等概率bin, 不更新上下文直接扩m_low / m_rangeencodeBinTrm 用于terminate 如CTU间0slice结束 finishSlice里的1Finish 算数编码flush, 处理carry与末尾比特与标准CABAC收尾一致。片结束处finishSlice() 会encodeBinTrm(1) finish() 字节对齐6 WPP与上下文同步每一行用独立子码流当前行第二个CTU col 1, 把CABAC上下文存到m_rows[row].bufferedEntropy,供下一行第一个CTU前loadCOntexts 保证与HEVC波前约束一致frameencoder.cpp里encodeRow/processRowEncoder 与bufferEntropy7流程串起来参数集用定长UVLC - slice header用混合语法片内从左上CTU起递归CUskip/merge /模式/PU/TU/CBF/QP 系数全部走CABAC encodeBin, 或bypass encodeBinEP, CTU之间encodeBinTrm(0), slice未encodeBinTrm(1) finish() RDO阶段同一套APi在m_bitIf NULL下只累计分数比特。

相关文章:

X265墒编码--代码分析

x265 墒编码 X265 HEVC编码器架构分析 一 整体代码架构 1.1 目录与模块划分 source/ ├── x265cli.cpp / x265cli.h # 命令行入口、参数解析、help ├── x265.h # 对外 API、参数结构、版本 ├── encoder/ # 编码核心…...

Steam成就数据自主管理:技术深度解析与实战应用

Steam成就数据自主管理:技术深度解析与实战应用 【免费下载链接】SteamAchievementManager A manager for game achievements in Steam. 项目地址: https://gitcode.com/gh_mirrors/st/SteamAchievementManager 你是否曾因某个隐藏成就的触发条件过于苛刻而反…...

2026年电脑怎么使用豆包?最新教程实测有效(网页版+客户端)

平时用电脑办公、写东西,AI助手真的离不开。很多人用豆包都纠结选网页版还是客户端,也有人想试试国外顶流模型又怕折腾。今天就把我的真实使用经验整理出来,纯个人分享,怎么好用怎么来。电脑上用豆包,无非就是网页版和…...

3个关键步骤:从零部署Duix.Avatar数字人克隆系统

3个关键步骤:从零部署Duix.Avatar数字人克隆系统 【免费下载链接】Duix-Avatar 项目地址: https://gitcode.com/GitHub_Trending/he/Duix-Avatar 想象一下,你只需要一段10秒的视频,就能在本地计算机上创建一个能说话、能做表情的AI数…...

突破设备限制:如何用Equalizer APO实现专业级音效

突破设备限制:如何用Equalizer APO实现专业级音效 【免费下载链接】equalizerapo Equalizer APO mirror 项目地址: https://gitcode.com/gh_mirrors/eq/equalizerapo 当你花费数千元购买的耳机却无法展现应有的音质,或笔记本内置扬声器播放音乐时…...

STM32内存管理与外设寄存器操作详解

## 1. STM32软硬件协同工作机制解析### 1.1 地址空间架构 32位STM32微控制器采用4GB统一编址空间,其内存映射结构在《STM32F407数据手册》的Memory map章节明确定义。关键存储区域分布如下:| 地址区块 | 容量 | 功能描述 |…...

使用hcxtools与hashcat实现WiFi握手包的高效破解指南

1. 从零开始理解WiFi握手包破解原理 当你用手机连接家里的WiFi时,设备会与路由器进行四次"握手"确认身份。这个过程中交换的数据包就像保险箱的密码盘,虽然看不到具体密码,但记录了密码转动的轨迹。hcxtools和hashcat这对黄金搭档&…...

从 i.MX6ULL 谈 ARM Cortex-A7 与 ARMv7-A 架构核心知识点

在嵌入式开发领域,NXP 的 i.MX6ULL 是一款应用极为广泛的 32 位工业级处理器,凭借低功耗、高性价比的特性成为物联网、工业控制、智能终端等场景的优选方案。而深入理解 i.MX6ULL 的核心架构,绕不开其搭载的 ARM Cortex-A7 内核与 ARMv7-A 指…...

从通信到存储:深入聊聊解复用器(Demux)在FPGA和芯片设计里的那些“隐藏”应用

解复用器的工程实践:从FPGA布线到存储系统的隐藏架构师 在数字电路设计的教科书里,解复用器(Demux)往往被简单描述为"将单一输入分配到多个输出的逻辑器件"——这种定义就像把瑞士军刀称为"开瓶器"一样片面。…...

OpenClaw调试技巧:Qwen3-VL:30B任务失败的5个常见原因

OpenClaw调试技巧:Qwen3-VL:30B任务失败的5个常见原因 1. 问题背景与调试环境准备 上周在星图平台部署Qwen3-VL:30B时,我遇到了一个典型场景:通过OpenClaw调用模型处理包含图片的飞书消息时,任务频繁中断。经过三天排查&#xf…...

从星座图旋转到环路锁定:图解QPSK Costas环核心原理

1. 从旋转的星座图说起 第一次接触QPSK信号解调时,我看到教科书上那些复杂的锁相环框图就头疼。直到有天导师在黑板上画了个旋转的星座图,突然就明白了Costas环的本质——它就是个不断"拽回"偏移信号的智能系统。 想象你在玩一个旋转拼图游戏&…...

Windows11下PCL1.12.1的aligned_free崩溃问题终极解决方案(附完整环境配置清单)

Windows 11环境下PCL点云库内存崩溃问题深度解析与实战修复指南 1. 问题现象与初步诊断 当你在Windows 11系统中使用PCL 1.12.1进行点云处理时,突然遭遇程序崩溃,VS2019输出窗口显示类似以下错误信息: HEAP[CircleTest.exe]: Invalid address…...

LangChain 1.x 实战入门:从零到一搭建你的第一个AI应用

1. 环境准备:从零搭建LangChain开发环境 第一次接触LangChain时,最让人头疼的就是环境配置。我刚开始用的时候,光是处理Python版本冲突就浪费了半天时间。现在咱们用更现代的工具链,5分钟就能搞定所有准备工作。 首先确保你的系统…...

Windows Cleaner:彻底解决C盘爆红问题的终极指南

Windows Cleaner:彻底解决C盘爆红问题的终极指南 【免费下载链接】WindowsCleaner Windows Cleaner——专治C盘爆红及各种不服! 项目地址: https://gitcode.com/gh_mirrors/wi/WindowsCleaner 你是不是经常遇到C盘爆红、系统卡顿的烦恼&#xff1…...

ZMotor3Library:面向Motor3控制板的嵌入式电机驱动信号抽象库

1. ZMotor3Library 项目概述ZMotor3Library 是专为 Motor3 控制板设计的嵌入式底层驱动库,面向基于 ARM Cortex-M 系列微控制器(典型如 STM32F4/F7/H7)的电机控制硬件平台。该库并非通用电机驱动框架,而是深度耦合 Motor3 板级硬件…...

Qwen3-Reranker-8B部署指南:Kubernetes集群中vLLM服务编排实践

Qwen3-Reranker-8B部署指南:Kubernetes集群中vLLM服务编排实践 重要提示:本文仅讨论技术实现方案,所有内容均基于公开技术文档和合法合规的开源项目。严禁任何形式的网络穿透、边界突破等违法违规行为。 1. 导读:为什么需要专业的…...

如何用Gyroflow实现专业级视频防抖?创作者必备的4大核心技巧

如何用Gyroflow实现专业级视频防抖?创作者必备的4大核心技巧 【免费下载链接】gyroflow Video stabilization using gyroscope data 项目地址: https://gitcode.com/GitHub_Trending/gy/gyroflow 在视频创作领域,抖动问题一直是影响作品质量的关键…...

IntelliJ IDEA插件开发:为Local AI MusicGen打造智能提示工具

IntelliJ IDEA插件开发:为Local AI MusicGen打造智能提示工具 1. 当程序员开始写背景音乐时,注释里藏着什么秘密 上周给一个游戏项目写后台服务,顺手在Java类的注释里写了句“需要一段轻松愉快的咖啡馆背景音乐”。结果同事盯着这行字看了三…...

k8s控制器,daemonset

一、DaemonSet 是什么?DaemonSet 守护进程集核心作用:保证集群里 每一个节点 都运行 一个 Pod不需要写 replicas(节点数 Pod 数)新增节点 → 自动创建 Pod删除节点 → 自动删除 Pod每个节点 永远只跑一个二、典型应用场景节点监…...

基于遗传算法GA算法优化的BP神经网络非线性函数拟合及参数反演的Matlab源代码(代码详解...

基于遗传算法GA算法的BP神经网络优化 非线性函数拟合 可用于参数反演 matlab源代码 代码有详细注释,完美运行基于遗传算法优化的BP神经网络在处理非线性函数拟合和参数反演问题上展现出强大的能力。BP网络作为一种经典的神经网络结构,具有多层感知机的强…...

大数据领域的金融应用剖析

大数据领域的金融应用剖析 一、引言 (Introduction) 钩子 (The Hook) 想象一下,你是一位银行的信贷经理,每天面对堆积如山的贷款申请,如何在短时间内准确判断申请人是否有能力按时还款,同时还要避免误拒潜在的优质客户&#xff1f…...

艾尔登法环终极帧率解锁与视野优化完整指南

艾尔登法环终极帧率解锁与视野优化完整指南 【免费下载链接】EldenRingFpsUnlockAndMore A small utility to remove frame rate limit, change FOV, add widescreen support and more for Elden Ring 项目地址: https://gitcode.com/gh_mirrors/el/EldenRingFpsUnlockAndMor…...

Burpsuite+Proxifier实战:精准捕获桌面应用HTTPS流量

1. 为什么需要捕获桌面应用的HTTPS流量? 很多开发者或安全研究人员都遇到过这样的场景:你想分析某个桌面应用程序的网络请求,比如游戏客户端的数据交互、独立登录程序的认证流程,或者某个小众工具的API调用。但当你打开常用的抓包…...

别再手动复制了!用Aspose.Words for Java自动搞定Word跨页表格的表头表尾

Aspose.Words for Java实战:跨页表格表头表尾的智能处理方案 在企业级文档处理场景中,动态生成多页Word表格是Java开发者的高频需求。无论是财务报告、库存清单还是学生成绩单,当数据量超过单页容量时,如何确保表头(列…...

如何在Linux中安装MySQL

一在MySQL官网中再到Linux版本(下载red hat 版的)二下载文件并解压,并在window power shell中上传服务器三在Linux中创建包四在Linux中查看文件是否上传成功五开始安装安装成功后查看原密码最后在MySQL中更改原密码...

嵌入式硬件接口开发的流程

1.4 嵌入式硬件接口开发的流程嵌入式硬件接口开发是一个从需求到交付的完整工程过程,涉及硬件设计、软件开发、系统调试等多个环节。遵循规范的开发流程,可以有效控制项目风险,提高开发效率,保证产品质量。本节将详细介绍接口开发…...

丹青识画系统开发环境搭建:从Anaconda安装到Python SDK调试

丹青识画系统开发环境搭建:从Anaconda安装到Python SDK调试 想在自己的电脑上折腾一下丹青识画系统,搞点二次开发或者做个自动化工具,第一步总是卡在环境搭建上。Python版本冲突、依赖包报错、API连不上……这些问题是不是听着就头疼&#x…...

3大隔离环境痛点解决:企业级服务器管理平台离线部署指南

3大隔离环境痛点解决:企业级服务器管理平台离线部署指南 【免费下载链接】btpanel-v7.7.0 宝塔v7.7.0官方原版备份 项目地址: https://gitcode.com/GitHub_Trending/btp/btpanel-v7.7.0 场景痛点:内网环境下的服务器管理困境 在金融机构的核心业…...

3步让你的PyTorch模型在Intel CPU提速50%:开发者实战指南

3步让你的PyTorch模型在Intel CPU提速50%:开发者实战指南 【免费下载链接】intel-extension-for-pytorch A Python package for extending the official PyTorch that can easily obtain performance on Intel platform 项目地址: https://gitcode.com/GitHub_Tre…...

Qwen2.5-VL-7B-Instruct效果对比:不同量化方式(GPTQ/FP16)生成质量实测

Qwen2.5-VL-7B-Instruct效果对比:不同量化方式(GPTQ/FP16)生成质量实测 1. 模型概述 Qwen2.5-VL-7B-Instruct是一款强大的多模态视觉-语言模型,能够同时处理图像和文本输入,生成高质量的文本输出。该模型在7B参数规模…...