强项是什么意思| 疝气长在什么位置图片| 三部曲是什么意思| 治疗阴虱子用什么药最好| 老舍为什么自杀| 用什么自慰| 下巴长痘痘是什么原因引起的| 拔罐对身体有什么好处| 儿童乳房发育挂什么科| 直接胆红素偏高是什么意思| 手脚心热是什么原因| 什么叫弱视| 胃反酸什么原因| 10月11日是什么星座| 眩晕症吃什么好| 18岁属什么生肖| 为什么气血不足| 专科和本科有什么区别| 食神生财是什么意思| 智齿拔了有什么影响| 便秘吃什么益生菌| 空虚是什么意思| 吃什么降血脂最快最好| 腕管综合症吃什么药| 人流后吃什么水果| 孩子为什么厌学| 辟谣是什么意思| 莲字五行属什么| 屎为什么是黑色的| 画饼是什么意思| 反胃酸是什么原因| 海狗是什么动物| 什么工作挣钱多| 没什么大不了的| 7.8号是什么日子| 大便泡沫状是什么原因| 食人鱼长什么样子| 月经不调吃什么药好| 军犬一般是什么品种| 舌苔黄腻厚是什么原因| 2月23是什么星座| 组织部是干什么的| 脚趾头抽筋是什么原因| 黄墙绿地的作用是什么| 什么是棱长| 苦瓜泡水喝有什么功效和作用| 头一直疼是什么原因| 黑瞎子是什么动物| 官印是什么意思| 旗舰店是什么意思| 狐臭是什么引起的| 钥匙代表什么生肖| 小姨是什么| 参谋是什么军衔| 结肠多发息肉是什么意思| hiv1是什么意思| 男人忽冷忽热说明什么| 宁字五行属什么的| 宫寒是什么意思| 鸿运当头什么意思| 梦见飞机是什么意思| 月经前尿频是什么原因| 杭州灵隐寺求什么最灵| 宝宝头爱出汗是什么原因| 心率过快会有什么后果| 飞机上可以带什么吃的| 1972年属鼠的是什么命| 精索静脉曲张是什么意思| 69年鸡是什么命| 缸垫呲了什么症状| 宝宝发烧吃什么药| 爱之深恨之切是什么意思| 破伤风感染后会出现什么症状| 卵磷脂什么牌子好| 胆结石不能吃什么| 朋友圈屏蔽显示什么| 兰蔻是什么牌子| 手突然发痒是什么原因| 水瓶座是什么星座| 息肉吃什么药可以消掉| 麻婆豆腐是什么菜系| 半边脸肿是什么原因| 露从今夜白下一句是什么| 二尖瓣反流什么意思| 胸部ct平扫能检查出什么| 女人下嘴唇厚代表什么| 辅酶q10什么时间吃好| 肌酐高是什么原因造成的| 温度计代表什么生肖| 什么黄河| 400能上什么大学| 拉肚子是什么原因| 总做噩梦是什么原因| 脊柱侧弯是什么原因引起的| 富屋贫人是什么意思| 四月初八是什么节日| 公关是什么工作| 什么呢| 马齿苋对什么病最有效| 吃什么可以消除淋巴结| 什么是低钾血症| 尿酸高会引起什么疾病| 淋病和梅毒有什么区别| 茶不能和什么一起吃| 专科和本科有什么区别| 遁形是什么意思| 帆船像什么| 手表seiko是什么牌子| 怀孕吸烟对胎儿有什么影响| 甲状腺桥本是什么意思| 砍单是什么意思| 慢阻肺是什么意思| 小腿出汗是什么原因| 大三阳是什么病| 三叉戟是什么意思| 6月份有什么节假日| 1.17是什么星座| 疝气是什么病怎样治疗| 甲钴胺片是治什么的| 术前八项检查是什么| 马眼棒是什么| 碧玺是什么宝石| tct和hpv有什么区别| 利多卡因是什么药| bld是什么意思| 下肢水肿挂什么科| 高中生适合用什么手机| 什么是皈依| 高考考生号是什么| 供血不足吃什么药效果最好| 王代表什么生肖| 什么是代偿| 谭咏麟属什么生肖| 脑梗输什么液效果最好| 烫伤起水泡涂什么药膏| 献血前需要注意什么| 碳13和碳14有什么区别| 低血糖什么症状| 什么叫文化| 73年属牛的是什么命| 手术后为什么要平躺6小时| 芒果和什么不能一起吃| 牛拉稀用什么药最快| 困惑什么意思| 有机磷是什么| 增肌是什么意思| prog是什么意思| 房间隔缺损是什么意思| 书店买不到的书是什么书| 裘皮是什么皮| 汗多是什么原因| 芬太尼是什么| 蚂蚱喜欢吃什么| 双眸是什么意思| 乙肝会有什么表现症状| 念珠菌感染用什么药| 愣头青是什么意思| 奠基什么意思| 经常玩手机有什么危害| 低密度脂蛋白高的原因是什么| ng是什么单位| 爱新觉罗是什么旗| 喝了藿香正气水不能吃什么| 乳头疼吃什么药| 什么是功德| 效劳是什么意思| 梦见耗子是什么预兆| 标王是什么意思| 蚯蚓可以钓什么鱼| 至死不渝是什么意思| 表面抗体阳性什么意思| 四川人喜欢吃什么| 促甲状腺高会导致什么| 过渡句的作用是什么| 白露是什么意思| 碱性磷酸酶高是什么病| 溢脂性皮炎用什么药| 什么叫钝角| 2001年是什么生肖| isis是什么组织| 斜视是什么原因导致的| 结局he是什么意思| 吃什么能增肥最快| 重庆沱茶属于什么茶| 化缘是什么意思| 拔胡子有什么危害| 哈伦裤配什么上衣好看| 89年是什么年| 小腿前侧肌肉叫什么| 居住证有什么用| 止咳平喘什么药最有效| 带教是什么意思| 对戒是什么意思| 心口疼是什么原因引起的| 衣原体感染是什么意思| 落下帷幕什么意思| 公开课是什么意思| 白牡丹是什么茶| 天是什么结构的字| 支原体是什么| 别名是什么意思| lpp什么意思| 花胶是鱼的什么部位| 什么原因引起血糖高| 大便干燥一粒一粒的是什么原因| 日益是什么意思| 怒发冲冠是什么意思| 长颈鹿的脖子像什么| 媾什么意思| 黑科技是什么意思| 活色生香什么意思| 摇粒绒是什么面料| 怀孕期间吃什么对胎儿发育好| 梅花像什么| 肌酐高了是什么原因| 孙子兵法到底说什么| 运是什么结构| 胆码是什么意思| 谈情说爱是什么意思| 女人跑马是什么意思| 黑枸杞有什么功效| 胃功能四项检查是什么| 祛湿气喝什么茶| 宫颈多发潴留囊肿是什么意思| 毛笔是用什么毛做的| 羊肉不能和什么一起吃| 睡觉手麻是什么原因| 女人梦见老虎是什么预兆| 贫血严重会得什么病| 王字加一笔是什么字| 什么安神助睡眠| 18k金是什么材质| 女人喝什么茶好减肥| 西米露是什么材料做的| 干扰素是治什么病的| 汗疱疹是什么| 郎中是什么意思| 水清则无鱼什么意思| 日出东方下一句是什么| 手脚肿胀是什么原因| 二姨子是什么意思| 双飞是什么意思| 四大神兽是什么动物| 守活寡什么意思| 仙姑是什么意思| 什么牛排最好吃| 基因病是什么意思| 5月12号是什么日子| 待字闺中是什么意思| 做高铁不能带什么| 婆家是什么意思| 不踏实是什么意思| 爸爸的哥哥叫什么| 小孩掉头发是什么原因引起的| 君子兰不开花是什么原因| 女孩第一次来月经需要注意什么| 橡皮泥能做什么| 梦房子倒塌什么预兆| 胃疼应该吃什么药| art什么意思| 胆囊炎吃什么消炎药| AR什么意思| 火可以加什么偏旁| 鱼油什么牌子好| 百度

牛商股份(股票代码830770)新三板上市最新公告列表


Directory: ../../../ffmpeg/
File: src/libavformat/format.c
Date: 2025-08-04 00:43:16
Exec Total Coverage
Lines: 155 189 82.0%
Functions: 9 10 90.0%
Branches: 119 162 73.5%

Line Branch Exec Source
1 /*
2 * Format register and lookup
3 * Copyright (c) 2000, 2001, 2002 Fabrice Bellard
4 *
5 * This file is part of FFmpeg.
6 *
7 * FFmpeg is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU Lesser General Public
9 * License as published by the Free Software Foundation; either
10 * version 2.1 of the License, or (at your option) any later version.
11 *
12 * FFmpeg is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 * Lesser General Public License for more details.
16 *
17 * You should have received a copy of the GNU Lesser General Public
18 * License along with FFmpeg; if not, write to the Free Software
19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
20 */
21
22 #include "config_components.h"
23
24 #include "libavutil/avstring.h"
25 #include "libavutil/mem.h"
26 #include "libavutil/opt.h"
27
28 #include "avio_internal.h"
29 #include "avformat.h"
30 #include "demux.h"
31 #include "id3v2.h"
32 #include "internal.h"
33 #include "url.h"
34
35
36 /**
37 * @file
38 * Format register and lookup
39 */
40
41 1279209 int av_match_ext(const char *filename, const char *extensions)
42 {
43 const char *ext;
44
45
2/2
✓ Branch 0 taken 528438 times.
✓ Branch 1 taken 750771 times.
1279209 if (!filename)
46 528438 return 0;
47
48 750771 ext = strrchr(filename, '.');
49
2/2
✓ Branch 0 taken 745446 times.
✓ Branch 1 taken 5325 times.
750771 if (ext)
50 745446 return av_match_name(ext + 1, extensions);
51 5325 return 0;
52 }
53
54 195 int ff_match_url_ext(const char *url, const char *extensions)
55 {
56 const char *ext;
57 URLComponents uc;
58 int ret;
59 char scratchpad[128];
60
61
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 195 times.
195 if (!url)
62 return 0;
63
64 195 ret = ff_url_decompose(&uc, url, NULL);
65
2/4
✓ Branch 0 taken 195 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 195 times.
✗ Branch 3 not taken.
195 if (ret < 0 || !URL_COMPONENT_HAVE(uc, scheme))
66 195 return ret;
67 for (ext = uc.query; *ext != '.' && ext > uc.path; ext--)
68 ;
69
70 if (*ext != '.')
71 return 0;
72 if (uc.query - ext > sizeof(scratchpad))
73 return AVERROR(ENOMEM); //not enough memory in our scratchpad
74 av_strlcpy(scratchpad, ext + 1, uc.query - ext);
75
76 return av_match_name(scratchpad, extensions);
77 }
78
79 8476 const AVOutputFormat *av_guess_format(const char *short_name, const char *filename,
80 const char *mime_type)
81 {
82 8476 const AVOutputFormat *fmt = NULL;
83 8476 const AVOutputFormat *fmt_found = NULL;
84 8476 void *i = 0;
85 int score_max, score;
86
87 /* specific test for image sequences */
88 #if CONFIG_IMAGE2_MUXER
89
5/6
✓ Branch 0 taken 184 times.
✓ Branch 1 taken 8292 times.
✓ Branch 2 taken 184 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 56 times.
✓ Branch 5 taken 128 times.
8660 if (!short_name && filename &&
90
2/2
✓ Branch 1 taken 51 times.
✓ Branch 2 taken 5 times.
240 av_filename_number_test(filename) &&
91 56 ff_guess_image2_codec(filename) != AV_CODEC_ID_NONE) {
92 51 return av_guess_format("image2", NULL, NULL);
93 }
94 #endif
95 /* Find the proper file type. */
96 8425 score_max = 0;
97
2/2
✓ Branch 1 taken 1566890 times.
✓ Branch 2 taken 8425 times.
1575315 while ((fmt = av_muxer_iterate(&i))) {
98
1/4
✗ Branch 0 not taken.
✓ Branch 1 taken 1566890 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
1566890 if (fmt->flags & AVFMT_EXPERIMENTAL && !short_name)
99 continue;
100 1566890 score = 0;
101
5/6
✓ Branch 0 taken 1566890 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1542152 times.
✓ Branch 3 taken 24738 times.
✓ Branch 5 taken 8325 times.
✓ Branch 6 taken 1533827 times.
1566890 if (fmt->name && short_name && av_match_name(short_name, fmt->name))
102 8325 score += 100;
103
3/6
✓ Branch 0 taken 615025 times.
✓ Branch 1 taken 951865 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 615025 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
1566890 if (fmt->mime_type && mime_type && !strcmp(fmt->mime_type, mime_type))
104 score += 10;
105
6/6
✓ Branch 0 taken 25110 times.
✓ Branch 1 taken 1541780 times.
✓ Branch 2 taken 18225 times.
✓ Branch 3 taken 6885 times.
✓ Branch 4 taken 149 times.
✓ Branch 5 taken 18076 times.
1585115 if (filename && fmt->extensions &&
106 18225 av_match_ext(filename, fmt->extensions)) {
107 149 score += 5;
108 }
109
2/2
✓ Branch 0 taken 8425 times.
✓ Branch 1 taken 1558465 times.
1566890 if (score > score_max) {
110 8425 score_max = score;
111 8425 fmt_found = fmt;
112 }
113 }
114 8425 return fmt_found;
115 }
116
117 27196 enum AVCodecID av_guess_codec(const AVOutputFormat *fmt, const char *short_name,
118 const char *filename, const char *mime_type,
119 enum AVMediaType type)
120 {
121
2/4
✓ Branch 1 taken 27196 times.
✗ Branch 2 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 27196 times.
27196 if (av_match_name("segment", fmt->name) || av_match_name("ssegment", fmt->name)) {
122 const AVOutputFormat *fmt2 = av_guess_format(NULL, filename, NULL);
123 if (fmt2)
124 fmt = fmt2;
125 }
126
127
2/2
✓ Branch 0 taken 10268 times.
✓ Branch 1 taken 16928 times.
27196 if (type == AVMEDIA_TYPE_VIDEO) {
128 10268 enum AVCodecID codec_id = AV_CODEC_ID_NONE;
129
130 #if CONFIG_IMAGE2_MUXER || CONFIG_IMAGE2PIPE_MUXER
131
4/4
✓ Branch 0 taken 10159 times.
✓ Branch 1 taken 109 times.
✓ Branch 2 taken 13 times.
✓ Branch 3 taken 10146 times.
10268 if (!strcmp(fmt->name, "image2") || !strcmp(fmt->name, "image2pipe")) {
132 122 codec_id = ff_guess_image2_codec(filename);
133 }
134 #endif
135
2/2
✓ Branch 0 taken 10150 times.
✓ Branch 1 taken 118 times.
10268 if (codec_id == AV_CODEC_ID_NONE)
136 10150 codec_id = fmt->video_codec;
137 10268 return codec_id;
138
2/2
✓ Branch 0 taken 8700 times.
✓ Branch 1 taken 8228 times.
16928 } else if (type == AVMEDIA_TYPE_AUDIO)
139 8700 return fmt->audio_codec;
140
2/2
✓ Branch 0 taken 30 times.
✓ Branch 1 taken 8198 times.
8228 else if (type == AVMEDIA_TYPE_SUBTITLE)
141 30 return fmt->subtitle_codec;
142 else
143 8198 return AV_CODEC_ID_NONE;
144 }
145
146 3822 const AVInputFormat *av_find_input_format(const char *short_name)
147 {
148 3822 const AVInputFormat *fmt = NULL;
149 3822 void *i = 0;
150
1/2
✓ Branch 1 taken 574815 times.
✗ Branch 2 not taken.
574815 while ((fmt = av_demuxer_iterate(&i)))
151
2/2
✓ Branch 1 taken 3822 times.
✓ Branch 2 taken 570993 times.
574815 if (av_match_name(short_name, fmt->name))
152 3822 return fmt;
153 return NULL;
154 }
155
156 11118 const AVInputFormat *av_probe_input_format3(const AVProbeData *pd,
157 int is_opened, int *score_ret)
158 {
159 11118 AVProbeData lpd = *pd;
160 11118 const AVInputFormat *fmt1 = NULL;
161 11118 const AVInputFormat *fmt = NULL;
162 11118 int score, score_max = 0;
163 11118 void *i = 0;
164 const static uint8_t zerobuffer[AVPROBE_PADDING_SIZE];
165 enum nodat {
166 NO_ID3,
167 ID3_ALMOST_GREATER_PROBE,
168 ID3_GREATER_PROBE,
169 ID3_GREATER_MAX_PROBE,
170 11118 } nodat = NO_ID3;
171
172
2/2
✓ Branch 0 taken 3877 times.
✓ Branch 1 taken 7241 times.
11118 if (!lpd.buf)
173 3877 lpd.buf = (unsigned char *) zerobuffer;
174
175
4/4
✓ Branch 0 taken 7241 times.
✓ Branch 1 taken 3877 times.
✓ Branch 3 taken 51 times.
✓ Branch 4 taken 7190 times.
11118 if (lpd.buf_size > 10 && ff_id3v2_match(lpd.buf, ID3v2_DEFAULT_MAGIC)) {
176 51 int id3len = ff_id3v2_tag_len(lpd.buf);
177
2/2
✓ Branch 0 taken 30 times.
✓ Branch 1 taken 21 times.
51 if (lpd.buf_size > id3len + 16) {
178
2/2
✓ Branch 0 taken 13 times.
✓ Branch 1 taken 17 times.
30 if (lpd.buf_size < 2LL*id3len + 16)
179 13 nodat = ID3_ALMOST_GREATER_PROBE;
180 30 lpd.buf += id3len;
181 30 lpd.buf_size -= id3len;
182
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 21 times.
21 } else if (id3len >= PROBE_BUF_MAX) {
183 nodat = ID3_GREATER_MAX_PROBE;
184 } else
185 21 nodat = ID3_GREATER_PROBE;
186 }
187
188
2/2
✓ Branch 1 taken 4033720 times.
✓ Branch 2 taken 11118 times.
4044838 while ((fmt1 = av_demuxer_iterate(&i))) {
189
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 4033720 times.
4033720 if (fmt1->flags & AVFMT_EXPERIMENTAL)
190 continue;
191
4/4
✓ Branch 0 taken 1443172 times.
✓ Branch 1 taken 2590548 times.
✓ Branch 2 taken 1435931 times.
✓ Branch 3 taken 7241 times.
4033720 if (!is_opened == !(fmt1->flags & AVFMT_NOFILE) && strcmp(fmt1->name, "image2"))
192 1435931 continue;
193 2597789 score = 0;
194
2/2
✓ Branch 1 taken 2220516 times.
✓ Branch 2 taken 377273 times.
2597789 if (ffifmt(fmt1)->read_probe) {
195 2220516 score = ffifmt(fmt1)->read_probe(&lpd);
196
2/2
✓ Branch 0 taken 7052 times.
✓ Branch 1 taken 2213464 times.
2220516 if (score)
197 7052 av_log(NULL, AV_LOG_TRACE, "Probing %s score:%d size:%d\n", fmt1->name, score, lpd.buf_size);
198
4/4
✓ Branch 0 taken 1042704 times.
✓ Branch 1 taken 1177812 times.
✓ Branch 3 taken 2407 times.
✓ Branch 4 taken 1040297 times.
2220516 if (fmt1->extensions && av_match_ext(lpd.filename, fmt1->extensions)) {
199
2/4
✓ Branch 0 taken 2377 times.
✓ Branch 1 taken 30 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
2407 switch (nodat) {
200 2377 case NO_ID3:
201 2377 score = FFMAX(score, 1);
202 2377 break;
203 30 case ID3_GREATER_PROBE:
204 case ID3_ALMOST_GREATER_PROBE:
205 30 score = FFMAX(score, AVPROBE_SCORE_EXTENSION / 2 - 1);
206 30 break;
207 case ID3_GREATER_MAX_PROBE:
208 score = FFMAX(score, AVPROBE_SCORE_EXTENSION);
209 break;
210 }
211 }
212
2/2
✓ Branch 0 taken 195507 times.
✓ Branch 1 taken 181766 times.
377273 } else if (fmt1->extensions) {
213
2/2
✓ Branch 1 taken 25 times.
✓ Branch 2 taken 195482 times.
195507 if (av_match_ext(lpd.filename, fmt1->extensions))
214 25 score = AVPROBE_SCORE_EXTENSION;
215 }
216
1/2
✗ Branch 1 not taken.
✓ Branch 2 taken 2597789 times.
2597789 if (av_match_name(lpd.mime_type, fmt1->mime_type)) {
217 int old_score = score;
218 score += AVPROBE_SCORE_MIME_BONUS;
219 if (score > AVPROBE_SCORE_MAX) score = AVPROBE_SCORE_MAX;
220 av_log(NULL, AV_LOG_DEBUG, "Probing %s score:%d increased to %d due to MIME type\n", fmt1->name, old_score, score);
221 }
222
2/2
✓ Branch 0 taken 6488 times.
✓ Branch 1 taken 2591301 times.
2597789 if (score > score_max) {
223 6488 score_max = score;
224 6488 fmt = fmt1;
225
2/2
✓ Branch 0 taken 1375874 times.
✓ Branch 1 taken 1215427 times.
2591301 } else if (score == score_max)
226 1375874 fmt = NULL;
227 }
228
2/2
✓ Branch 0 taken 21 times.
✓ Branch 1 taken 11097 times.
11118 if (nodat == ID3_GREATER_PROBE)
229 21 score_max = FFMIN(AVPROBE_SCORE_EXTENSION / 2 - 1, score_max);
230 11118 *score_ret = score_max;
231
232 11118 return fmt;
233 }
234
235 8081 const AVInputFormat *av_probe_input_format2(const AVProbeData *pd,
236 int is_opened, int *score_max)
237 {
238 int score_ret;
239 8081 const AVInputFormat *fmt = av_probe_input_format3(pd, is_opened, &score_ret);
240
2/2
✓ Branch 0 taken 3889 times.
✓ Branch 1 taken 4192 times.
8081 if (score_ret > *score_max) {
241 3889 *score_max = score_ret;
242 3889 return fmt;
243 } else
244 4192 return NULL;
245 }
246
247 const AVInputFormat *av_probe_input_format(const AVProbeData *pd, int is_opened)
248 {
249 int score = 0;
250 return av_probe_input_format2(pd, is_opened, &score);
251 }
252
253 3696 int av_probe_input_buffer2(AVIOContext *pb, const AVInputFormat **fmt,
254 const char *filename, void *logctx,
255 unsigned int offset, unsigned int max_probe_size)
256 {
257
1/2
✓ Branch 0 taken 3696 times.
✗ Branch 1 not taken.
3696 AVProbeData pd = { filename ? filename : "" };
258 3696 uint8_t *buf = NULL;
259 3696 int ret = 0, probe_size, buf_offset = 0;
260 3696 int score = 0;
261 int ret2;
262 3696 int eof = 0;
263
264
2/2
✓ Branch 0 taken 12 times.
✓ Branch 1 taken 3684 times.
3696 if (!max_probe_size)
265 12 max_probe_size = PROBE_BUF_MAX;
266
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 3684 times.
3684 else if (max_probe_size < PROBE_BUF_MIN) {
267 av_log(logctx, AV_LOG_ERROR,
268 "Specified probe size value %u cannot be < %u\n", max_probe_size, PROBE_BUF_MIN);
269 return AVERROR(EINVAL);
270 }
271
272
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 3696 times.
3696 if (offset >= max_probe_size)
273 return AVERROR(EINVAL);
274
275
2/2
✓ Branch 0 taken 3684 times.
✓ Branch 1 taken 12 times.
3696 if (pb->av_class) {
276 3684 uint8_t *mime_type_opt = NULL;
277 char *semi;
278 3684 av_opt_get(pb, "mime_type", AV_OPT_SEARCH_CHILDREN, &mime_type_opt);
279 3684 pd.mime_type = (const char *)mime_type_opt;
280
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 3684 times.
3684 semi = pd.mime_type ? strchr(pd.mime_type, ';') : NULL;
281
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 3684 times.
3684 if (semi) {
282 *semi = '\0';
283 }
284 }
285
286
5/6
✓ Branch 0 taken 7898 times.
✓ Branch 1 taken 2 times.
✓ Branch 2 taken 4204 times.
✓ Branch 3 taken 3694 times.
✓ Branch 4 taken 4204 times.
✗ Branch 5 not taken.
7900 for (probe_size = PROBE_BUF_MIN; probe_size <= max_probe_size && !*fmt && !eof;
287 4204 probe_size = FFMIN(probe_size << 1,
288 FFMAX(max_probe_size, probe_size + 1))) {
289
2/2
✓ Branch 0 taken 4202 times.
✓ Branch 1 taken 2 times.
4204 score = probe_size < max_probe_size ? AVPROBE_SCORE_RETRY : 0;
290
291 /* Read probe data. */
292
1/2
✗ Branch 1 not taken.
✓ Branch 2 taken 4204 times.
4204 if ((ret = av_reallocp(&buf, probe_size + AVPROBE_PADDING_SIZE)) < 0)
293 goto fail;
294
2/2
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 4196 times.
4204 if ((ret = avio_read(pb, buf + buf_offset,
295 probe_size - buf_offset)) < 0) {
296 /* Fail if error was not end of file, otherwise, lower score. */
297
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 8 times.
8 if (ret != AVERROR_EOF)
298 goto fail;
299
300 8 score = 0;
301 8 ret = 0; /* error was end of file, nothing read */
302 8 eof = 1;
303 }
304 4204 buf_offset += ret;
305
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 4204 times.
4204 if (buf_offset < offset)
306 continue;
307 4204 pd.buf_size = buf_offset - offset;
308 4204 pd.buf = &buf[offset];
309
310 4204 memset(pd.buf + pd.buf_size, 0, AVPROBE_PADDING_SIZE);
311
312 /* Guess file format. */
313 4204 *fmt = av_probe_input_format2(&pd, 1, &score);
314
2/2
✓ Branch 0 taken 3696 times.
✓ Branch 1 taken 508 times.
4204 if (*fmt) {
315 /* This can only be true in the last iteration. */
316
2/2
✓ Branch 0 taken 10 times.
✓ Branch 1 taken 3686 times.
3696 if (score <= AVPROBE_SCORE_RETRY) {
317 10 av_log(logctx, AV_LOG_WARNING,
318 "Format %s detected only with low score of %d, "
319 10 "misdetection possible!\n", (*fmt)->name, score);
320 } else
321 3686 av_log(logctx, AV_LOG_DEBUG,
322 "Format %s probed with size=%d and score=%d\n",
323 3686 (*fmt)->name, probe_size, score);
324 #if 0
325 FILE *f = fopen("probestat.tmp", "ab");
326 fprintf(f, "probe_size:%d format:%s score:%d filename:%s\n", probe_size, (*fmt)->name, score, filename);
327 fclose(f);
328 #endif
329 }
330 }
331
332
1/2
✓ Branch 0 taken 3696 times.
✗ Branch 1 not taken.
3696 if (!*fmt)
333 ret = AVERROR_INVALIDDATA;
334
335 3696 fail:
336 /* Rewind. Reuse probe buffer to avoid seeking. */
337 3696 ret2 = ffio_rewind_with_probe_data(pb, &buf, buf_offset);
338
1/2
✓ Branch 0 taken 3696 times.
✗ Branch 1 not taken.
3696 if (ret >= 0)
339 3696 ret = ret2;
340
341 3696 av_freep(&pd.mime_type);
342
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 3696 times.
3696 return ret < 0 ? ret : score;
343 }
344
345 12 int av_probe_input_buffer(AVIOContext *pb, const AVInputFormat **fmt,
346 const char *filename, void *logctx,
347 unsigned int offset, unsigned int max_probe_size)
348 {
349 12 int ret = av_probe_input_buffer2(pb, fmt, filename, logctx, offset, max_probe_size);
350 12 return ret < 0 ? ret : 0;
351 }
352

幽门螺杆菌阳性什么意思 十二指肠球炎吃什么药 在什么的前面用英语怎么说 小孩铅过高有什么症状 脍炙人口什么意思
喉咙痛吃什么饭菜好 退步是什么意思 蟑螂讨厌什么味道 便秘缺什么维生素 山开念什么
脚拇指外翻是什么原因造成的 机灵的动物是什么生肖 男人什么时候精子最强 三月份有什么节日 早上吃什么
黑裤子配什么颜色上衣 水浒传有什么故事 uv是什么 中气是什么意思 黄金有什么作用与功效
代谢慢吃什么效果最快hcv9jop1ns6r.cn 柒牌男装什么档次hcv9jop5ns1r.cn 49是什么意思hcv7jop6ns4r.cn 苋菜与什么食物相克hcv7jop7ns3r.cn 减肥期间吃什么好zhongyiyatai.com
代谢慢的人吃什么有助于新陈代谢hcv8jop7ns8r.cn 髋关节弹响是什么原因hcv9jop8ns2r.cn 降血脂吃什么最好hcv9jop7ns9r.cn 拮抗药物是什么药hcv8jop9ns4r.cn 软组织挫伤用什么药hcv8jop1ns1r.cn
部署是什么意思hcv9jop0ns0r.cn 孩子肚脐眼下面疼是什么原因hcv9jop5ns9r.cn 宝宝病毒性感冒吃什么药效果好hcv8jop4ns0r.cn 红黄是什么颜色hcv8jop2ns4r.cn 类风湿有什么特效药hcv9jop2ns1r.cn
吃什么润肺养肺最快wuhaiwuya.com 倒灌是什么意思hcv8jop1ns8r.cn 贵州有什么山hcv9jop2ns1r.cn 西酞普兰为什么早晨吃hcv9jop2ns0r.cn 腹部b超能检查出什么hcv8jop0ns9r.cn
百度