转氨酶异常是什么意思| 为什么月经不来| 常喝普洱茶有什么好处| 乳白色是什么颜色| 铜镯子对人有什么好处| 吃茄子有什么好处和坏处| 婴儿外阴粘连挂什么科| birkin是什么意思| 嘌呤是什么| 做梦踩到屎是什么意思| 叶子为什么是绿色的| 7月7日是什么星座| 兔子的尾巴像什么| 瞳距是什么| 气是什么| ups是什么快递公司| 三高可以吃什么水果| 农历六月十三是什么星座| feno是什么检查| 怎么算自己五行缺什么| 男生为什么喜欢摸胸| 嫩黄的什么| 公分是什么单位| 家里放什么最招财| ade是什么意思| 粘纤是什么| 蚩尤是什么| 时来运转是什么生肖| 尖嘴猴腮是什么生肖| 胸椎退变是什么意思| 盆腔积液是什么原因造成的| bally属于什么档次| 小孩睡觉出很多汗是什么原因| 青的五行属性是什么| 水印是什么意思| 杏花是什么季节开的| 让我爱你然后把我抛弃是什么歌| 女性睾酮低意味着什么| 照见五蕴皆空什么意思| 珍珠纱是什么面料| 口交是什么| 壮志凌云是什么生肖| 男人少精弱精吃什么补最好| 舌苔厚黄是什么原因| 一月十号是什么星座| fl表示什么意思| 吃什么会长高| 脚气用什么药膏效果好| 早上7点多是什么时辰| 杀鸡取卵是什么生肖| 检查肾挂什么科| 炸鱼是什么意思| 私房照是什么| 十羊九不全是什么意思| 为什么减肥不建议喝粥| 梦见嫖娼是什么意思| sm是什么意思| 血友病是什么意思| 节令是什么意思| 吃什么油对心脑血管好| 刻板印象是什么意思| 胃不舒服可以吃什么水果| 参谋长是什么军衔| 建档需要准备什么资料| 数位板是什么| 4月4日什么星座| 尿液弱阳性什么意思| 磊字五行属什么| 龟头上抹什么可以延时| 婴儿蓝是什么颜色| 肾小球滤过率偏高说明什么| 足及念什么| 85年是什么命| 肚子胀气老放屁是什么原因| 梦见下小雨是什么征兆| 耐人寻味什么意思| 梦见自己的哥哥死了是什么意思| 为什么会缺钾| 口吐白沫是什么生肖| 嘴巴长疱疹是什么原因| 前胸疼是什么原因| 腰椎生理曲度变直什么意思| 猫鼻支什么症状| 空调不制冷是什么原因| 什么食物含维生素b12最多| 高反人群一般是什么人| 点痣后需要注意什么事项| 庚日是什么意思| 501是什么意思| 肠胃湿热吃什么药| 痰多是什么原因| 单脱是什么意思| 521代表什么含义| 得了肠胃炎吃什么最好| 官员出狱后靠什么生活| 3月7日什么星座| 梦见洗澡是什么意思| 负荆请罪是什么意思| 什么是易孕体质| 吊膀子是什么意思| 男孩长虎牙预示什么| 囊实性结节是什么意思| 橱窗是什么意思| 敏感肌是什么| 慢性肠炎吃什么药| 人流后能吃什么水果| 咳嗽吃什么好的快偏方| 95棉5氨纶是什么面料| 金屋藏娇是什么意思| 水苏糖是什么东西| 红光对皮肤有什么作用| 眼睛痒是什么原因| Preparing什么意思| 做梦抓到很多鱼是什么征兆| 人老放屁是什么原因| 什么是危险期| 农村合作医疗什么时候交| 中老年喝什么奶粉好| 口水是甜的是什么原因| 头晕用什么药好| 盂是什么意思| 食是什么生肖| 节操是什么意思| 长期便秘是什么原因引起的| 为什么我的| 不能喝酒是什么原因| 杜甫被后人称为什么| 镇党委副书记是什么级别| 血红蛋白偏低什么意思| 大姨妈期间不能吃什么东西| 5.20是什么星座| 大拇指旁边的手指叫什么| 全身疼是什么病| ins是什么| 白目是什么意思| 三叶香是什么菜| 万象更新什么意思| 毛峰是什么茶| gop是什么| 空调嗡嗡响是什么原因| 咽炎吃什么消炎药最好| 鹿几念什么| 山药和什么不能一起吃| 揉肚子有什么好处| 空腹吃西红柿有什么危害| 什么的公园| 章鱼是什么动物| 红豆吃多了有什么坏处| 隐患是什么意思| 降肌酐吃什么药| 以纯属于什么档次| bur什么意思| 烟雾病是什么| 以貌取人是什么意思| 无是什么意思| 华妃娘娘是什么电视剧| ppsu是什么材质| 露酒是什么酒| 偶尔耳鸣是什么原因| 冲管什么意思| 孔雀的尾巴像什么| 劳碌命是什么意思| 阴道镜是检查什么的| 阿莫西林治疗什么| 血压低是什么原因引起的| 屎壳郎的学名叫什么| 花重锦官城的重是什么意思| 静脉血栓是什么症状| 后脑勺出汗多是什么原因| 查肝肾功能挂什么科| 脚底板出汗是什么原因| 猪八戒的真名叫什么| 快速眼动是什么意思| 牙齿为什么会变黑| 趣味相投是什么意思| 大林木命忌讳什么颜色| 性激素六项什么时候查| 唵是什么意思| 男人结扎有什么危害| 小腹胀是什么原因| 汪峰什么星座| 月亮星座是什么意思| hicon是什么牌子| 什么布料最好| 辅酶q10什么时间吃最好| 一语惊醒梦中人是什么意思| 胎心停了是什么原因引起的| 102是什么意思| 落班是什么意思| 睡觉起来头晕什么原因| 爱马仕为什么要配货| 关节疼是什么原因| vm是什么意思| 鸡项是什么鸡| 草菅人命是什么意思| 看心脏病挂什么科| 老鼠人是什么意思| 小孩儿咳嗽有什么妙招| 皮肤细菌感染用什么药| 荷叶搭配什么一起喝减肥效果好| 身上长红色痣是什么原因| 早上8点是什么时辰| 6月9日什么星座| 什么网站可以看三节片| 18岁属什么的生肖| 六月六日是什么星座| 九月29号是什么星座| 扁桃体肥大有什么影响| 三本是什么| 医学pr是什么意思| 随时随地是什么意思| 皮下水肿是什么原因| 百里挑一是什么生肖| 瘦马什么意思| 总爱睡觉是什么原因| 检查怀孕要做什么检查| die是什么意思| 总做噩梦是什么原因| 儿童尿频什么原因引起的| 火气太旺是什么原因| 肚脐眼上面痛是什么原因引起的| 霉菌性阴道炎是什么引起的| 枸杞和什么一起泡水喝最好| 偏头痛有什么症状| 莆田荔枝什么时候成熟| 怀孕前三个月需要注意什么| 罗汉果有什么功效和作用| 婴儿足底采血查什么| 文艺兵是干什么的| 肾气虚吃什么药| 十一月一号是什么星座| 将军代表什么生肖| 阴虚火旺什么意思| 兔和什么属相最配| 酥油茶是什么做的| 三分钟热度是什么意思| 得宝松是什么药| 尿液弱阳性什么意思| 怀孕吃什么必定流产| 什么是干冰| 腊月初八是什么日子| 元宵节的习俗是什么| 小鱼缸适合养什么鱼| 为什么可乐能溶解鱼刺| 为什么会突然耳鸣| 小孩腿疼膝盖疼可能是什么原因| 什么桥下没有水| 黄精有什么作用| 苹果像什么| 胃酸吃什么可以缓解| 洋溢着什么样的笑容| 原发性高血压是什么意思| 隐疾是什么意思| 高危妊娠监督什么意思| 流局是什么意思| 三个土是什么字| 博士和博士后有什么区别| 喝枸杞有什么好处| 转氨酶高说明什么| 缺营养吃什么补身体最好| 喉咙痛吃什么药效果好| 什么是飞机杯| 肺部磨玻璃结节需要注意什么| 烧钱是什么意思| 百度

唐僧最后成了什么佛


Directory: ../../../ffmpeg/
File: src/libavformat/tty.c
Date: 2025-08-04 00:43:16
Exec Total Coverage
Lines: 57 67 85.1%
Functions: 5 5 100.0%
Branches: 32 54 59.3%

Line Branch Exec Source
1 /*
2 * Tele-typewriter demuxer
3 * Copyright (c) 2010 Peter Ross <pross@xvid.org>
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 /**
23 * @file
24 * Tele-typewriter demuxer
25 */
26
27 #include "libavutil/intreadwrite.h"
28 #include "libavutil/avstring.h"
29 #include "libavutil/log.h"
30 #include "libavutil/dict.h"
31 #include "libavutil/opt.h"
32 #include "libavutil/parseutils.h"
33 #include "avformat.h"
34 #include "demux.h"
35 #include "internal.h"
36 #include "sauce.h"
37
38 375605 static int isansicode(int x)
39 {
40
10/10
✓ Branch 0 taken 374119 times.
✓ Branch 1 taken 1486 times.
✓ Branch 2 taken 370222 times.
✓ Branch 3 taken 3897 times.
✓ Branch 4 taken 368846 times.
✓ Branch 5 taken 1376 times.
✓ Branch 6 taken 271060 times.
✓ Branch 7 taken 97786 times.
✓ Branch 8 taken 186535 times.
✓ Branch 9 taken 84525 times.
375605 return x == 0x1B || x == 0x0A || x == 0x0D || (x >= 0x20 && x < 0x7f);
41 }
42
43 static const char tty_extensions[31] = "ans,art,asc,diz,ice,nfo,txt,vt";
44
45 typedef struct TtyDemuxContext {
46 AVClass *class;
47 int chars_per_frame;
48 uint64_t fsize; /**< file size less metadata buffer */
49 int width, height; /**< Set by a private option. */
50 AVRational framerate; /**< Set by a private option. */
51 } TtyDemuxContext;
52
53 7241 static int read_probe(const AVProbeData *p)
54 {
55 7241 int cnt = 0;
56
57
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 7241 times.
7241 if (!p->buf_size)
58 return 0;
59
60
3/4
✓ Branch 0 taken 57928 times.
✓ Branch 1 taken 7241 times.
✓ Branch 2 taken 57928 times.
✗ Branch 3 not taken.
65169 for (int i = 0; i < 8 && i < p->buf_size; i++)
61 57928 cnt += !!isansicode(p->buf[i]);
62
63
2/2
✓ Branch 0 taken 7060 times.
✓ Branch 1 taken 181 times.
7241 if (cnt != 8)
64 7060 return 0;
65
66
2/2
✓ Branch 0 taken 317677 times.
✓ Branch 1 taken 181 times.
317858 for (int i = 8; i < p->buf_size; i++)
67 317677 cnt += !!isansicode(p->buf[i]);
68
69 362 return (cnt * 99LL / p->buf_size) * (cnt > 400) *
70 181 !!av_match_ext(p->filename, tty_extensions);
71 }
72
73 /**
74 * Parse EFI header
75 */
76 1 static int efi_read(AVFormatContext *avctx, uint64_t start_pos)
77 {
78 1 TtyDemuxContext *s = avctx->priv_data;
79 1 AVIOContext *pb = avctx->pb;
80 char buf[37];
81 int len;
82
83 1 avio_seek(pb, start_pos, SEEK_SET);
84
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
1 if (avio_r8(pb) != 0x1A)
85 1 return -1;
86
87 #define GET_EFI_META(name,size) \
88 len = avio_r8(pb); \
89 if (len < 1 || len > size) \
90 return -1; \
91 if (avio_read(pb, buf, size) == size) { \
92 buf[len] = 0; \
93 av_dict_set(&avctx->metadata, name, buf, 0); \
94 }
95
96 GET_EFI_META("filename", 12)
97 GET_EFI_META("title", 36)
98
99 s->fsize = start_pos;
100 return 0;
101 }
102
103 2 static int read_header(AVFormatContext *avctx)
104 {
105 2 TtyDemuxContext *s = avctx->priv_data;
106 2 int ret = 0;
107 2 AVStream *st = avformat_new_stream(avctx, NULL);
108
109
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
2 if (!st) {
110 ret = AVERROR(ENOMEM);
111 goto fail;
112 }
113 2 st->codecpar->codec_tag = 0;
114 2 st->codecpar->codec_type = AVMEDIA_TYPE_VIDEO;
115 2 st->codecpar->codec_id = AV_CODEC_ID_ANSI;
116
117 2 st->codecpar->width = s->width;
118 2 st->codecpar->height = s->height;
119 2 avpriv_set_pts_info(st, 60, s->framerate.den, s->framerate.num);
120 2 st->avg_frame_rate = s->framerate;
121
122 /* simulate tty display speed */
123
1/2
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
2 s->chars_per_frame = FFMAX(av_q2d(st->time_base)*s->chars_per_frame, 1);
124
125
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
2 if (avctx->pb->seekable & AVIO_SEEKABLE_NORMAL) {
126 2 int64_t fsize = avio_size(avctx->pb);
127
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
2 if (fsize > 0) {
128 2 s->fsize = fsize;
129 2 st->duration = (s->fsize + s->chars_per_frame - 1) / s->chars_per_frame;
130
131
2/2
✓ Branch 1 taken 1 times.
✓ Branch 2 taken 1 times.
2 if (ff_sauce_read(avctx, &s->fsize, 0, 0) < 0)
132 1 efi_read(avctx, s->fsize - 51);
133
134 2 avio_seek(avctx->pb, 0, SEEK_SET);
135 }
136 }
137
138 fail:
139 2 return ret;
140 }
141
142 27 static int read_packet(AVFormatContext *avctx, AVPacket *pkt)
143 {
144 27 TtyDemuxContext *s = avctx->priv_data;
145 int n;
146
147
1/2
✗ Branch 1 not taken.
✓ Branch 2 taken 27 times.
27 if (avio_feof(avctx->pb))
148 return AVERROR_EOF;
149
150 27 n = s->chars_per_frame;
151
1/2
✓ Branch 0 taken 27 times.
✗ Branch 1 not taken.
27 if (s->fsize) {
152 // ignore metadata buffer
153 27 uint64_t p = avio_tell(avctx->pb);
154
2/2
✓ Branch 0 taken 2 times.
✓ Branch 1 taken 25 times.
27 if (p == s->fsize)
155 2 return AVERROR_EOF;
156
2/2
✓ Branch 0 taken 2 times.
✓ Branch 1 taken 23 times.
25 if (p + s->chars_per_frame > s->fsize)
157 2 n = s->fsize - p;
158 }
159
160 25 pkt->size = av_get_packet(avctx->pb, pkt, n);
161
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 25 times.
25 if (pkt->size < 0)
162 return pkt->size;
163 25 pkt->stream_index = 0;
164 25 pkt->pts = pkt->pos / s->chars_per_frame;
165 25 pkt->flags |= AV_PKT_FLAG_KEY;
166 25 return 0;
167 }
168
169 #define OFFSET(x) offsetof(TtyDemuxContext, x)
170 #define DEC AV_OPT_FLAG_DECODING_PARAM
171 static const AVOption options[] = {
172 { "chars_per_frame", "", offsetof(TtyDemuxContext, chars_per_frame), AV_OPT_TYPE_INT, {.i64 = 6000}, 1, INT_MAX, AV_OPT_FLAG_DECODING_PARAM},
173 { "video_size", "A string describing frame size, such as 640x480 or hd720.", OFFSET(width), AV_OPT_TYPE_IMAGE_SIZE, {.str = NULL}, 0, 0, DEC },
174 { "framerate", "", OFFSET(framerate), AV_OPT_TYPE_VIDEO_RATE, {.str = "25"}, 0, INT_MAX, DEC },
175 { NULL },
176 };
177
178 static const AVClass tty_demuxer_class = {
179 .class_name = "TTY demuxer",
180 .item_name = av_default_item_name,
181 .option = options,
182 .version = LIBAVUTIL_VERSION_INT,
183 };
184
185 const FFInputFormat ff_tty_demuxer = {
186 .p.name = "tty",
187 .p.long_name = NULL_IF_CONFIG_SMALL("Tele-typewriter"),
188 .p.extensions = tty_extensions,
189 .p.priv_class = &tty_demuxer_class,
190 .p.flags = AVFMT_GENERIC_INDEX,
191 .priv_data_size = sizeof(TtyDemuxContext),
192 .read_probe = read_probe,
193 .read_header = read_header,
194 .read_packet = read_packet,
195 };
196

24属什么生肖 黄毛什么意思 牙齿贴片是什么意思 资产负债率高说明什么 磨破皮了涂什么药
1月21是什么星座 月全食是什么意思 少年白头发是什么原因 有机奶粉是什么意思 小熊是什么牌子
为什么单位不愿意申请工伤 为什么会便血 为什么叫西瓜 毛泽东的女儿为什么姓李 朱元璋原名叫什么
垂体饱满是什么意思 收缩压和舒张压是什么 中暑什么症状 脑浆是什么颜色 异常的反义词是什么
soie是什么面料hcv9jop6ns6r.cn 26岁属什么的生肖hcv8jop8ns4r.cn 96年的鼠是什么命hcv8jop4ns6r.cn 七月十九是什么星座huizhijixie.com 二椅子什么意思hcv9jop7ns9r.cn
小动脉瘤是什么意思hcv9jop4ns6r.cn 百合花什么时候种植hcv8jop2ns4r.cn 弟弟是什么意思hcv7jop9ns1r.cn 治疗荨麻疹用什么药最好wzqsfys.com 慕强什么意思hcv8jop7ns9r.cn
血小板高是什么引起的hcv8jop2ns1r.cn 甲低有什么危害beikeqingting.com 梦见自己流血是什么预兆hcv9jop5ns8r.cn 为什么一来月经就拉肚子hcv9jop4ns6r.cn 冰岛茶属于什么茶hcv9jop6ns3r.cn
外阴红肿疼痛用什么药hcv8jop0ns1r.cn 为什么最迷人的最危险是什么歌hcv8jop2ns6r.cn 舍我其谁是什么意思hcv8jop5ns1r.cn 频繁流鼻血是什么原因hcv9jop0ns2r.cn 什么是钼靶检查adwl56.com
百度