# av.video.kernel 库模块帮助文档

## av.video.kernel 成员列表 <a id="av.video.kernel" href="#av.video.kernel">&#x23;</a>

### av.video.kernel._dll <a id="av.video.kernel._dll" href="#av.video.kernel._dll">&#x23;</a>
内存加载的 kernel.dll 模块

### av.video.kernel.background(buf,w,h,spec) <a id="av.video.kernel.background" href="#av.video.kernel.background">&#x23;</a>
生成背景：渐变 + 暗角 + 静态粗颗粒（浮点计算、量化一次），写入不透明 BGRX。  
spec: type="linear"|"radial",angle,cx,cy,radius,stops={{位置,0xRRGGBB}},vignette,grain,cell,seed

### av.video.kernel.blend(dst,src,pixels,a256) <a id="av.video.kernel.blend" href="#av.video.kernel.blend">&#x23;</a>
交叉混合 dst += (src-dst)*a/256

### av.video.kernel.blit(dst,dw,dh,src,sw,sh,dx,dy) <a id="av.video.kernel.blit" href="#av.video.kernel.blit">&#x23;</a>
整数偏移复制（带裁剪）

### av.video.kernel.bounds(buf,w,h) <a id="av.video.kernel.bounds" href="#av.video.kernel.bounds">&#x23;</a>
非透明像素（alpha>0）的包围盒 {x0;y0;x1;y1}（像素，开区间）；全透明返回 null

### av.video.kernel.boxMean(grid,cols,rows,win,outBuf) <a id="av.video.kernel.boxMean" href="#av.video.kernel.boxMean">&#x23;</a>
盒式均值：win×win 窗口（步长 1），输出 (cols-win+1)×(rows-win+1) 个 float

### av.video.kernel.clear(buf,w,h,rect) <a id="av.video.kernel.clear" href="#av.video.kernel.clear">&#x23;</a>
清成全透明；rect={x0;y0;x1;y1}，省略为整张

### av.video.kernel.flickerScore(a,b,c,d,e,cols,rows,win,thr,mask) <a id="av.video.kernel.flickerScore" href="#av.video.kernel.flickerScore">&#x23;</a>
单帧闪烁评分（av.video.flicker 内部使用）：a~e 为连续 5 帧的 boxMean 结果，评估中间帧；  
返回 分数(峰高/thr),窗口序号,方向(+1 更强/-1 更弱)

### av.video.kernel.glitch(dst,src,w,h,amount,seed,split) <a id="av.video.kernel.glitch" href="#av.video.kernel.glitch">&#x23;</a>
故障效果：少量粗条带错位，错位条带内轻微 RGB 分离；src 为 dst 的副本。  
amount 0~1；seed 决定条带（建议约 15Hz 换一次，每个状态停留约 2 帧）；split 满幅 RGB 分离占宽度比例，默认 0.004，0 = 不分离

### av.video.kernel.glitchMix(dst,a,b,w,h,amount,mix,seed,layoutSeed,split) <a id="av.video.kernel.glitchMix" href="#av.video.kernel.glitchMix">&#x23;</a>
故障撕裂转场：旧画面 a 按固定细条逐条换成新画面 b（mix 0~1，单调），另有少量粗条带错位。  
seed 约 15Hz 换一次；layoutSeed 决定细条布局（整个转场不变）；dst 不能与 a、b 相同；split 默认 0（细彩边经 4:2:0 色度抽样会糊成色块）

### av.video.kernel.grain(buf,w,h,amount,cell,seed) <a id="av.video.kernel.grain" href="#av.video.kernel.grain">&#x23;</a>
给不透明 BGRX 图像加静态粗颗粒（±amount 色阶，cell 像素一格，默认 3；与 background 的 grain 同一种噪声），  
用于过于平滑的深色背景图（AI 生成图常见）防止编码后出色带；只加在背景层

### av.video.kernel.lumaStats(src,w,h,stride,cols,rows,meanBuf,sdBuf,step) <a id="av.video.kernel.lumaStats" href="#av.video.kernel.lumaStats">&#x23;</a>
分区亮度统计：cols×rows 格的平均亮度与标准差（0~255，float 缓冲区，可为 null）；  
stride 默认 w*4；step 采样步长（行列都隔 step 像素取样），默认 1

### av.video.kernel.motionCheck(P,C,N,cols,rows,x0,y0,x1,y1,S,gs) <a id="av.video.kernel.motionCheck" href="#av.video.kernel.motionCheck">&#x23;</a>
闪烁复核（av.video.flicker 内部使用）：用整体平移能否解释中间帧 C 的突变（规则纹理快速平移）。  
P/C/N 为连续三帧的缩略亮度图（float），区域以格计、含两端，S 搜索半径（格），gs 粗搜间隔（默认 1）；  
返回 {e0;emc;d1x;d1y;d2x;d2y;peakMc;peak0;n}：不补偿/补偿后残差和、P→C 与 C→N 的移动（格/帧）、单格最大残差、格数（区域全在图外为 0）

### av.video.kernel.over(dst,src,w,h,opacity,rect) <a id="av.video.kernel.over" href="#av.video.kernel.over">&#x23;</a>
图层合成：同尺寸预乘 BGRA 图层按整体不透明度叠加到 dst；  
rect={x0;y0;x1;y1} 限定范围（像素，开区间），省略为整张

### av.video.kernel.resample(dstBuf,dw,dh,srcBuf,sw,sh,dstRect,srcRect,opt) <a id="av.video.kernel.resample" href="#av.video.kernel.resample">&#x23;</a>
轴对齐缩放平移重采样（浮点坐标精确、缩小有预滤波、边缘按覆盖率抗锯齿），  
预乘 alpha 叠加到目标；opt: opacity,filter,clip,copy,radius(圆角半径，目标像素)
