果蝇是什么| 孕妇吃西红柿对胎儿有什么好处| 三头六臂开过什么生肖| 竹叶青是什么茶| 晚上吃什么减肥效果最好| 女人喝红酒有什么好处| 妊娠期是什么意思| 什么是牙周炎| ad吃到什么时候| 孽缘什么意思| dpoy什么意思| 邮政ems是什么意思| spiderking是什么牌子| 蜱虫长什么样子图片| 体寒的人吃什么食物好| 3月份出生是什么星座| 阴道口疼是什么原因| 合掌是什么意思| 秦始皇是什么生肖| 低压高是什么原因引起的| 蝴蝶是什么意思| 面包用什么面粉| 擦是什么意思| 忠字五行属什么| 肠胃属于什么科| 剖腹产可以吃什么| 霉点用什么可以洗掉| 龟头发红是什么原因| 复方氨酚烷胺胶囊是什么药| 补肾壮阳吃什么效果好| 端午节安康是什么意思| 1989是什么年| 维生素c什么时候吃效果最好| 侍寝是什么意思| 淮山是什么| 兔子的耳朵有什么作用| 异父异母是什么意思| 吃什么东西可以补血| 叻叻是什么意思| 肛门周围痒是什么病| 老人头晕挂什么科| 小孩发烧可以吃什么水果| 咳嗽有白痰吃什么药最好| 什么叫弱视| 吃什么对脑血管好| 星巴克是什么| 学的偏旁部首是什么| 汗管瘤什么原因造成| 换手率是什么意思| 左侧后背疼是什么原因男性| 黑道日为什么还是吉日| 腹膜后是什么位置| 低烧不退是什么原因| 喝酒头晕是什么原因| 什么是员额制| 2月7日什么星座| bonnie是什么意思| 为什么会突发脑溢血| 拍拖是什么意思| 减肥可以吃什么| 腰肌劳损看什么科| 吃什么都咸是什么原因| 厥阴病是什么意思| 事半功倍的意思是什么| 医师是什么级别| 口气重是什么原因| 戒指戴无名指是什么意思| 秋天可以干什么| 长期缺铁性贫血会导致什么后果| 美的是什么牌子| 梦见桥断了是什么意思| 冰妹什么意思| 芒种是什么时候| 女性睾酮低说明什么| 腺样体肥大有什么症状| bbc是什么意思| 豕是什么动物| 什么叫玄关| 黄历修造是什么意思| 中央党校校长是什么级别| 血压高应该吃什么食物| 皮肤黑的人穿什么颜色的衣服显白| 拉肚子吃什么好| 微信什么时候有的| 卡介疫苗什么时候打| 灯火葳蕤是什么意思| 立flag是什么意思| 吃什么对心脏最好| 性格是什么| 片仔癀为什么这么贵| 结巴是什么原因引起的| 怀孕两周有什么症状| 50岁用什么牌子化妆品好| 措施是什么意思| 男生为什么喜欢女生叫爸爸| 乳酪和奶酪有什么区别| 阴性是什么意思| 化疗后恶心呕吐吃什么可以缓解| 儿童风寒咳嗽吃什么药| 女性肾虚吃什么补最好最快| 转氨酶是什么意思| 宫颈炎用什么药| 孕妇梦见别人怀孕是什么意思| 精分是什么意思| 韭菜什么时候种最合适| 解酒的酶是什么酶| 脸发红发痒是什么原因| 破釜沉舟什么意思| 羽毛球拍u是什么意思| 亭亭净植是什么意思| 人为什么打呼噜| 郑州有什么好玩的| 老火汤是什么意思| 宫外孕做什么手术| lemaire是什么品牌| 颔是什么部位| 一国两制什么时候提出的| 梦见一个人死了是什么意思| 巴扎黑是什么意思| co什么意思| 五月二十日是什么日子| 中暑吃什么药| 神仙眷侣是什么意思| 什么是篮球基本功| 西瓜都有什么品种| 向日葵代表什么象征意义| 胎梦梦见蛇是什么意思| 试孕纸什么时候测最准| 铁蛋白高吃什么食物好| 马拉色菌毛囊炎用什么药治疗最好| 阳痿早泄吃什么| 突破性出血是什么意思| 飞蚊症是什么原因造成的能治愈吗| 脚底发烫是什么原因| 警察两杠一星是什么级别| 豆工念什么| 血细胞分析五分类是查什么的| 暗合是什么意思| 茉莉茶叶有什么功效和作用| 愿君多采撷是什么意思| 英语专八是什么水平| 曹操是个什么样的人| 处女膜是什么颜色| 什么西瓜好吃| 科长是什么级别| 顺理成章是什么意思| 34岁属什么的生肖| 什么东西越晒越湿| 桶状胸常见于什么病| 35年属什么生肖| 过房是什么意思| 杜建英是宗庆后什么人| 治疗肺部气肿有什么方法| 强化灶是什么意思| 眼睛闪光是什么症状| 频繁什么意思| 泡桐是什么| 狗为什么不能吃葡萄| 遗传是什么意思| 什么颜色防晒| 备孕需要做些什么准备| 拉拉秧学名叫什么| 小祖宗是什么意思| 熊猫血是什么| 对偶是什么意思| 手腕疼挂什么科| 头部ct挂什么科| 龙年是什么年| dm是什么意思| 切除子宫对身体有什么伤害| 中午1点是什么时辰| 1977属什么| 72年属什么生肖| 固液法白酒是什么意思| 低血压低是什么原因| 白头发挂什么科| 敏感是什么意思| 植物神经功能紊乱吃什么药| 聊表心意什么意思| 头晕喝什么饮料| 1980年属什么| 一 什么云| 淤血是什么意思| 中成药是什么| 什么掌不能拍| 秋葵什么时候种植最好| 壅是什么意思| 那悲歌总会在梦中惊醒是什么歌| 10月是什么星座| ab血型和o型生的孩子是什么血型| 今天穿什么衣服合适| 为什么打呼噜| 脚跟疼是什么原因| 明天是什么生肖| 爱打哈欠是什么原因| 女人脖子后面有痣代表什么| 肠胃感冒吃什么| 什么无云| 孕晚期宫缩是什么感觉| 庚子是什么时辰| 腰间盘突出睡觉什么姿势好| 搞破鞋什么意思| 省管干部是什么级别| itp是什么| 孕酮低对胎儿有什么影响| yonex是什么品牌| 第一次见面送女生什么花| 孩子咳嗽吃什么饭菜好| 桂圆不能和什么一起吃| 上升星座什么意思| 心功能不全是什么意思| 上不来气是什么原因| 私处瘙痒用什么药| 什么是强直性脊柱炎| 吃东西就吐是什么原因| 肝功能异常是什么意思| 稀疏是什么意思| 褐色是什么颜色| 以貌取人是什么意思| 竹肠是什么部位| 风向是指风什么的方向| 老年人腿浮肿是什么原因引起的| 振字五行属什么| 茶化石属于什么茶| 什么干什么燥| 清宫和刮宫有什么区别| 黛是什么颜色| 明是什么生肖| 石榴花是什么颜色| 海兔是什么动物| 头痛吃什么药| 什么时候降温| 牙齿一碰就疼是什么原因| 阴毛长虱子用什么药| 灰色配什么颜色| 脾切除后有什么影响| 夏天适合喝什么养生茶| 钛是什么颜色| land rover是什么车| 六月初六是什么日子| 2000年属龙的是什么命| 车厘子与樱桃有什么区别| 打点滴是什么意思| 10月10日是什么星座| 阴晴不定是什么意思| 泡脚什么时候最佳时间| 孩子白细胞高是什么原因| 什么筷子不发霉又健康| 月经不调去医院挂什么科| 副师长是什么级别| 晕车为什么读第四声| 成年人改名字需要什么手续| 有机食品什么意思| 绿色衣服搭配什么颜色的裤子| 举足轻重是什么意思| 壮阳吃什么| 柿子像什么| 孝顺的真正含义是什么| 梦见房屋倒塌是什么征兆| 绍兴本地人喝什么黄酒| 铁蛋白高挂什么科| 卵圆孔未闭是什么意思| 女生喝什么茶对身体好| 言字旁与什么有关| 百度

中山亿丰行汽车音响改装.三菱独爱改——三菱翼


Directory: ../../../ffmpeg/
File: src/libavfilter/vf_despill.c
Date: 2025-08-04 11:35:17
Exec Total Coverage
Lines: 0 44 0.0%
Functions: 0 3 0.0%
Branches: 0 24 0.0%

Line Branch Exec Source
1 /*
2 * Copyright (c) 2017 Paul B Mahol
3 *
4 * This file is part of FFmpeg.
5 *
6 * FFmpeg is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Lesser General Public
8 * License as published by the Free Software Foundation; either
9 * version 2.1 of the License, or (at your option) any later version.
10 *
11 * FFmpeg is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Lesser General Public License for more details.
15 *
16 * You should have received a copy of the GNU Lesser General Public
17 * License along with FFmpeg; if not, write to the Free Software
18 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
19 */
20
21 #include "libavutil/opt.h"
22 #include "libavutil/pixdesc.h"
23 #include "avfilter.h"
24 #include "filters.h"
25
26 typedef struct DespillContext {
27 const AVClass *class;
28
29 int co[4]; /* color offsets rgba */
30
31 int alpha;
32 int type;
33 float spillmix;
34 float spillexpand;
35 float redscale;
36 float greenscale;
37 float bluescale;
38 float brightness;
39 } DespillContext;
40
41 static int do_despill_slice(AVFilterContext *ctx, void *arg, int jobnr, int nb_jobs)
42 {
43 DespillContext *s = ctx->priv;
44 AVFrame *frame = arg;
45 const int ro = s->co[0], go = s->co[1], bo = s->co[2], ao = s->co[3];
46 const int slice_start = (frame->height * jobnr) / nb_jobs;
47 const int slice_end = (frame->height * (jobnr + 1)) / nb_jobs;
48 const float brightness = s->brightness;
49 const float redscale = s->redscale;
50 const float greenscale = s->greenscale;
51 const float bluescale = s->bluescale;
52 const float spillmix = s->spillmix;
53 const float factor = (1.f - spillmix) * (1.f - s->spillexpand);
54 float red, green, blue;
55 int x, y;
56
57 for (y = slice_start; y < slice_end; y++) {
58 uint8_t *dst = frame->data[0] + y * frame->linesize[0];
59
60 for (x = 0; x < frame->width; x++) {
61 float spillmap;
62
63 red = dst[x * 4 + ro] / 255.f;
64 green = dst[x * 4 + go] / 255.f;
65 blue = dst[x * 4 + bo] / 255.f;
66
67 if (s->type) {
68 spillmap = FFMAX(blue - (red * spillmix + green * factor), 0.f);
69 } else {
70 spillmap = FFMAX(green - (red * spillmix + blue * factor), 0.f);
71 }
72
73 red = FFMAX(red + spillmap * redscale + brightness * spillmap, 0.f);
74 green = FFMAX(green + spillmap * greenscale + brightness * spillmap, 0.f);
75 blue = FFMAX(blue + spillmap * bluescale + brightness * spillmap, 0.f);
76
77 dst[x * 4 + ro] = av_clip_uint8(red * 255);
78 dst[x * 4 + go] = av_clip_uint8(green * 255);
79 dst[x * 4 + bo] = av_clip_uint8(blue * 255);
80 if (s->alpha) {
81 spillmap = 1.f - spillmap;
82 dst[x * 4 + ao] = av_clip_uint8(spillmap * 255);
83 }
84 }
85 }
86
87 return 0;
88 }
89
90 static int filter_frame(AVFilterLink *link, AVFrame *frame)
91 {
92 AVFilterContext *ctx = link->dst;
93 int ret;
94
95 if (ret = ff_filter_execute(ctx, do_despill_slice, frame, NULL,
96 FFMIN(frame->height, ff_filter_get_nb_threads(ctx))))
97 return ret;
98
99 return ff_filter_frame(ctx->outputs[0], frame);
100 }
101
102 static av_cold int config_output(AVFilterLink *outlink)
103 {
104 AVFilterContext *ctx = outlink->src;
105 DespillContext *s = ctx->priv;
106 const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(outlink->format);
107 int i;
108
109 for (i = 0; i < 4; ++i)
110 s->co[i] = desc->comp[i].offset;
111
112 return 0;
113 }
114
115 static const enum AVPixelFormat pixel_fmts[] = {
116 AV_PIX_FMT_ARGB,
117 AV_PIX_FMT_RGBA,
118 AV_PIX_FMT_ABGR,
119 AV_PIX_FMT_BGRA,
120 AV_PIX_FMT_NONE
121 };
122
123 static const AVFilterPad despill_inputs[] = {
124 {
125 .name = "default",
126 .type = AVMEDIA_TYPE_VIDEO,
127 .flags = AVFILTERPAD_FLAG_NEEDS_WRITABLE,
128 .filter_frame = filter_frame,
129 },
130 };
131
132 static const AVFilterPad despill_outputs[] = {
133 {
134 .name = "default",
135 .type = AVMEDIA_TYPE_VIDEO,
136 .config_props = config_output,
137 },
138 };
139
140 #define OFFSET(x) offsetof(DespillContext, x)
141 #define FLAGS AV_OPT_FLAG_FILTERING_PARAM|AV_OPT_FLAG_VIDEO_PARAM|AV_OPT_FLAG_RUNTIME_PARAM
142
143 static const AVOption despill_options[] = {
144 { "type", "set the screen type", OFFSET(type), AV_OPT_TYPE_INT, {.i64=0}, 0, 1, FLAGS, .unit = "type" },
145 { "green", "greenscreen", 0, AV_OPT_TYPE_CONST, {.i64=0}, 0, 0, FLAGS, .unit = "type" },
146 { "blue", "bluescreen", 0, AV_OPT_TYPE_CONST, {.i64=1}, 0, 0, FLAGS, .unit = "type" },
147 { "mix", "set the spillmap mix", OFFSET(spillmix), AV_OPT_TYPE_FLOAT, {.dbl=0.5}, 0, 1, FLAGS },
148 { "expand", "set the spillmap expand", OFFSET(spillexpand), AV_OPT_TYPE_FLOAT, {.dbl=0}, 0, 1, FLAGS },
149 { "red", "set red scale", OFFSET(redscale), AV_OPT_TYPE_FLOAT, {.dbl=0}, -100, 100, FLAGS },
150 { "green", "set green scale", OFFSET(greenscale), AV_OPT_TYPE_FLOAT, {.dbl=-1}, -100, 100, FLAGS },
151 { "blue", "set blue scale", OFFSET(bluescale), AV_OPT_TYPE_FLOAT, {.dbl=0}, -100, 100, FLAGS },
152 { "brightness", "set brightness", OFFSET(brightness), AV_OPT_TYPE_FLOAT, {.dbl=0}, -10, 10, FLAGS },
153 { "alpha", "change alpha component", OFFSET(alpha), AV_OPT_TYPE_BOOL, {.i64=0}, 0, 1, FLAGS },
154 { NULL }
155 };
156
157 AVFILTER_DEFINE_CLASS(despill);
158
159 const FFFilter ff_vf_despill = {
160 .p.name = "despill",
161 .p.description = NULL_IF_CONFIG_SMALL("Despill video."),
162 .p.priv_class = &despill_class,
163 .p.flags = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC | AVFILTER_FLAG_SLICE_THREADS,
164 .priv_size = sizeof(DespillContext),
165 FILTER_INPUTS(despill_inputs),
166 FILTER_OUTPUTS(despill_outputs),
167 FILTER_PIXFMTS_ARRAY(pixel_fmts),
168 .process_command = ff_filter_process_command,
169 };
170

高锰酸钾是什么颜色 日本的町是什么意思 硅胶是什么材料做的 吃什么降低甘油三酯 美白吃什么
真菌性龟头炎用什么药 scofield是什么品牌 肺肾两虚吃什么中成药 腰疼不能弯腰是什么原因引起的 special是什么意思
ph值什么意思 一年级又什么又什么 蚂蚁长什么样子 otg线是什么 bridge什么意思
大唐集团什么级别 心脏变大是什么原因 依达拉奉注射功效与作用是什么 梦见考试是什么预兆 7月30号什么星座
三月十五日是什么星座hcv8jop9ns1r.cn 潜血试验阳性什么意思hcv9jop7ns3r.cn 失眠用什么药最好hcv7jop4ns7r.cn 牛奶有什么营养hcv9jop3ns8r.cn 烂嘴唇是什么原因引起的hcv9jop7ns1r.cn
姑妈是什么关系hebeidezhi.com 水为什么会结冰hcv9jop4ns6r.cn 黑蛇是什么蛇hcv9jop2ns0r.cn 鼻窦炎吃什么抗生素hcv9jop2ns1r.cn 男戴观音女戴佛是什么意思hcv8jop7ns8r.cn
血糖高会有什么症状hcv7jop9ns7r.cn 鸡蛋为什么这么便宜hcv8jop4ns6r.cn 瑶字五行属什么hcv8jop6ns7r.cn 埃及艳后叫什么sanhestory.com 不愁吃穿是什么生肖hcv7jop4ns5r.cn
什么是佛跳墙hcv9jop4ns7r.cn 玛瑙五行属什么hcv9jop5ns5r.cn 肋软骨炎挂什么科hcv7jop5ns0r.cn 三级护理是什么意思hcv8jop1ns3r.cn 形态是什么意思hcv8jop1ns3r.cn
百度