打开微信,使用扫一扫进入页面后,点击右上角菜单,
点击“发送给朋友”或“分享到朋友圈”完成分享
自己写一个xxx.c文件,如为视频处理则以vf开头,音频处理以af开头,例如vf_scale_mlu.c
在libavfilter/allfilters.c添加一行: extern AVFilter ff_vf_scale_mlu
修改libavfilter/Makefile,添加一行:OBJS-$(CONFIG_TRANSFORM_FILTER) += vf_scale_mlu.o
AVFilterGraph:代表一个滤镜图,是将所有滤镜串在一起的总和
Avfilter:代表一个filter
AVFilterPad:代表一个滤镜的出入口
AVFilter :连接两个滤镜的连接结构体
该结构体用于向ffmpeg陈述滤镜的相关信息,结构体通过对名字、pad、class等一系列定义描述了ffmpeg从哪个方法进入我们的滤镜。
用于描述滤镜的输入输出
输入输出pad都可以用的元素:
name pad的名字,所有的输入pad名字不能重复,所有的输出名字不能重复;
type 此元素目前只能为“AV_PAD_VIDEO”值
config_props 链接此pad的配置方法的函数指针
仅限输入pad使用的元素:
min_perms 接受输入需要的最小权限
rej_perms 不接受的输入权限
start_ 一帧传入时引用的方法的函数指针
draw_slice 每个slice已经传入后引用的方法的函数指针
end_ 一帧完整结束后引用的方法的函数指针
get_video_buffer 前一个滤镜调用,用以为一个图像请求内存
仅限输出pad使用的元素:
request_ 请求滤镜输出一帧
通过AVFilter 建立两个结构体间的联系
其中常用成员为:
AVFilterContext *src :指代所连接的源滤镜
AVFilterContext *dst:指代所连接的目标滤镜
AVFilterFormats *in_formats:指代源滤镜定义的支持的像素格式
AVFilterFormats *out_formats:指代目标滤镜定义的支持的像素格式
int format:指代滤镜链上的像素格式
滤镜在执行功能先执行config_props再执行filt_ (先初始化再执行)
命令行执行时输入的参数由结构体AVClass中的option决定
热门帖子
精华帖子