尿道炎什么症状| 道观是什么意思| 脚底板出汗是什么原因| 隐血试验阴性是什么意思| 打完除皱针注意事项有什么| 跳蚤最怕什么| 为什么喝完酒头疼| 腰酸痛是什么原因| 违背是什么意思| 没有料酒用什么去腥| 胃难受是什么原因| 七月八号是什么日子| 生肖本命带红花是什么生肖| 笑口常开是什么生肖| 排卵期和排卵日有什么区别| 穷搬家富挪坟是什么意思| 电疗有什么作用和功效| 4p是什么意思| 三伏天吃什么对身体好| 双甘油脂肪酸酯是什么| 流产什么样的症状表现| 有氧运动是什么意思| 万事大吉是什么意思| 蜥蜴人是什么| 老鸨是什么意思| 心律不齐是什么原因引起的| 抗战纪念日为什么是9月3日| 尿酸高是为什么| 青绿色是什么颜色| 来袭是什么意思| 灰蓝色是什么颜色| 11月2日是什么星座| 手上起小水泡痒是什么原因| 3a是什么意思| 射精无力吃什么药最佳| 边缘化是什么意思| 吕洞宾属什么生肖| 驳什么意思| mac是什么| 乡镇党委书记是什么级别| 轴重是什么意思| 甲基蓝治疗什么鱼病| 3月17日是什么星座| 吃什么对牙齿好| 脾胃虚弱吃什么食物好| 脑炎是什么症状| 肠子长息肉有什么症状| 家财万贯是什么生肖| 树叶为什么是绿色的| 亲嘴有什么好处| 吃银耳有什么好处和坏处| 什么生| 左侧肚脐旁边疼是什么原因| 吃什么可以让卵泡长得快| 麦芽糊精是什么| 高血压属于什么系统疾病| a股是什么意思| 早上起床腰疼是什么原因| 腹水是什么| 11月20是什么星座| 阿莫西林有什么作用| 糖类抗原724偏高是什么原因| 脚气是什么菌| 下面痛是什么原因| 小儿风寒感冒吃什么药最好| 姨妈有血块是什么原因| 夜里咳嗽是什么原因| 鱼周念什么| 福建有什么特产| 雾化后为什么要漱口| 何方神圣是什么意思| 鸡炖什么好吃又有营养| 口头禅是什么意思| 送枕头代表什么意思| 梦到蛇什么意思| 工作性质是什么意思| 落花雨你飘摇的美丽是什么歌| 潜规则是什么| 普拉提是什么| 外交部部长是什么级别| 黑脸是什么意思| 表哥的儿子叫我什么| 菠萝不能和什么一起吃| 心肌炎是什么病严重吗| 慢性萎缩性胃炎吃什么食物好| 胃泌素偏低是什么原因| 鼻炎是什么原因引起的| 肝着是什么意思| 门牙下面的牙叫什么| 痛经喝什么| 双子座后面是什么星座| 5D电影是什么效果| 女人体检都查什么项目| 珠地棉是什么面料| 换身份证需要带什么| 末那识是什么意思| 为什么喝完酒头疼| 胃酸过多吃什么| 佛珠生菇讲述什么道理| 非你不可什么意思| 雪茄为什么不过肺| 再生纤维素纤维是什么面料| 老板是什么意思| 免疫比浊法是什么意思| 胸上长痘痘是什么原因| 人工智能是什么意思| 水冲脉见于什么病| 肚子拉稀是什么原因| 置之不理的置是什么意思| 甲亢病是什么原因引起的| 是什么样的感觉我不懂是什么歌| 喝中药尿黄是什么原因| 什么矿泉水最好| 低血糖和贫血有什么区别| hpv初期有什么症状女性| 什么是体位性低血压| 猎奇是什么意思| 腹水是什么原因引起的| 什么是犯太岁| 含是什么意思| 气虚的人适合什么运动| 荆芥俗名叫什么| 鱼油是什么| 乳房长斑点是什么原因| os是什么意思| 长期熬夜有什么坏处| 痘痘破了涂什么药膏| 薏米长什么样子的图片| 什么人每天靠运气赚钱| 摇曳是什么意思| 落花雨你飘摇的美丽是什么歌| 物理学是什么| 应该说什么| 红细胞压积偏高是什么意思| 唯有女子与小人难养也什么意思| 什么炒肉好吃| 视功能是什么| 肝内胆管结石是什么意思| 一个月一个屯念什么| 人为什么会做梦科学解释| 什么食物嘌呤高| 嗓子发炎吃什么消炎药| 怹是什么意思| 怀孕10天有什么症状| 男人耳后有痣代表什么| hpv阳性是什么病| 虫离念什么| 嘴上有痣代表什么| 夜晚尿频尿多是什么原因| 月经少吃什么好排血多| 口干口苦挂什么科| 为什么风团会在晚上爆发| 夹腿有什么坏处吗| 性激素六项什么时候检查| 手肿是什么病的前兆| 什么叫眼睛散光| 阴茎疱疹用什么药| 言字五行属什么| 舒张压和收缩压是什么| 什么症状吃藿香清胃胶囊| 嫂嫂是什么意思| 低血糖吃什么| ups是什么快递公司| 什么是负数| 突然戒烟对身体有什么影响| 什么是筋膜| 憋不住尿什么原因| 阿莫西林有什么副作用| 发瘟是什么意思| 铁路12306什么时候放票| 与生俱来是什么意思| 肠易激综合征是什么病| 进入icu病房意味着什么| 孕妇用什么驱蚊最好| 头发硬适合什么发型| 芜湖有什么大学| 老年人嘴唇发紫是什么原因| 客片什么意思| 为什么要割包皮| 西安有什么山| 青梅煮酒什么意思| 94年属狗的是什么命| 黄体破裂什么症状| 怀男孩和女孩有什么区别| 枸杞泡茶有什么功效| 产妇月子里可以吃什么水果| 乳房硬块疼是什么原因| 四个月念什么字| 传宗接代是什么意思| 什么是宾格| 高筋面粉可以做什么| 脾虚吃什么药| 肠胃功能紊乱什么症状| 没必要什么意思| 唯我独尊是什么生肖| 物上代位性是什么意思| 峻字五行属什么| 硬结灶是什么意思| 缺维生素c会得什么病| 白头翁是什么动物| 右眼一直跳是什么原因| 血小板压积是什么意思| 孩子口臭是什么原因| UDCA是什么药| 微针有什么功效| 龙生九子是什么生肖| 肌红蛋白偏低说明什么| 磨牙是什么原因引起的| 季付是什么意思| 鸡咳嗽吃什么药| 肠胃炎可以喝什么饮料| 卿字五行属什么| 三月十九是什么星座| 什么是清关| 打破伤风不能吃什么| 月经推迟吃什么药| 油菜花是什么颜色| 子宫小是什么原因引起的| 谋杀是什么意思| 胃癌早期有什么症状| 什么极了| 乌豆是什么| 气加山念什么| 梦见猫咬我是什么意思| 桑榆是什么意思| 1980年是什么年| 小孩抽动症是什么引起的| 宋朝之前是什么朝代| 给孩子测骨龄应该挂什么科| alex是什么意思| 绝经三年了突然又出血了什么原因| 正常的白带是什么样的| 吃什么长骨头最快| ad滴剂什么时候吃最好| 甲状腺结节看什么科室最好| 窍是什么意思| 什么是结缔组织| 十里八乡什么意思| 淀粉是什么| 为什么口水是臭的| 反应迟钝是什么原因造成的| 爬山带什么食物比较好| 身份证号后四位代表什么| s和m分别是什么意思| 普通感冒吃什么药| 眼睛发黄是什么原因引起的| 警示是什么意思| dg是什么| 梦见毒蛇是什么预兆| 正月初六是什么星座| 吃什么东西能减肥| pt是什么材质| 鸡尖是什么| 纾是什么意思| 怀女孩有什么征兆| 为什么高考要体检| 男人吃什么补身体| 鼻塞用什么药好| 金达克宁和达克宁有什么区别| 五行缺金是什么意思| apgar评分是什么意思| 胃不好吃什么蔬菜| 户籍是指什么| 毛主席什么时候去世的| 百度

美媒:无证华人被捕后将与美无缘?律师:并非如此


Directory: ../../../ffmpeg/
File: src/libavformat/oggparseogm.c
Date: 2025-08-04 00:43:16
Exec Total Coverage
Lines: 0 108 0.0%
Functions: 0 3 0.0%
Branches: 0 52 0.0%

Line Branch Exec Source
1 /**
2 Copyright (C) 2005 Michael Ahlberg, M?ns Rullg?rd
3
4 Permission is hereby granted, free of charge, to any person
5 obtaining a copy of this software and associated documentation
6 files (the "Software"), to deal in the Software without
7 restriction, including without limitation the rights to use, copy,
8 modify, merge, publish, distribute, sublicense, and/or sell copies
9 of the Software, and to permit persons to whom the Software is
10 furnished to do so, subject to the following conditions:
11
12 The above copyright notice and this permission notice shall be
13 included in all copies or substantial portions of the Software.
14
15 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
16 EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
17 MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
18 NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
19 HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
20 WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
22 DEALINGS IN THE SOFTWARE.
23 **/
24
25 #include <stdlib.h>
26
27 #include "libavutil/intreadwrite.h"
28
29 #include "libavcodec/bytestream.h"
30
31 #include "avformat.h"
32 #include "internal.h"
33 #include "oggdec.h"
34 #include "riff.h"
35
36 static int
37 ogm_header(AVFormatContext *s, int idx)
38 {
39 struct ogg *ogg = s->priv_data;
40 struct ogg_stream *os = ogg->streams + idx;
41 AVStream *st = s->streams[idx];
42 FFStream *const sti = ffstream(st);
43 GetByteContext p;
44 uint64_t time_unit;
45 uint64_t spu;
46 uint32_t size;
47 int ret;
48
49 bytestream2_init(&p, os->buf + os->pstart, os->psize);
50 if (!(bytestream2_peek_byte(&p) & 1))
51 return 0;
52
53 if (bytestream2_peek_byte(&p) == 1) {
54 bytestream2_skip(&p, 1);
55
56 if (bytestream2_peek_byte(&p) == 'v'){
57 int tag;
58 st->codecpar->codec_type = AVMEDIA_TYPE_VIDEO;
59 bytestream2_skip(&p, 8);
60 tag = bytestream2_get_le32(&p);
61 st->codecpar->codec_id = ff_codec_get_id(ff_codec_bmp_tags, tag);
62 st->codecpar->codec_tag = tag;
63 if (st->codecpar->codec_id == AV_CODEC_ID_MPEG4)
64 sti->need_parsing = AVSTREAM_PARSE_HEADERS;
65 } else if (bytestream2_peek_byte(&p) == 't') {
66 st->codecpar->codec_type = AVMEDIA_TYPE_SUBTITLE;
67 st->codecpar->codec_id = AV_CODEC_ID_TEXT;
68 bytestream2_skip(&p, 12);
69 } else {
70 uint8_t acid[5] = { 0 };
71 int cid;
72 st->codecpar->codec_type = AVMEDIA_TYPE_AUDIO;
73 bytestream2_skip(&p, 8);
74 bytestream2_get_buffer(&p, acid, 4);
75 acid[4] = 0;
76 cid = strtol(acid, NULL, 16);
77 st->codecpar->codec_id = ff_codec_get_id(ff_codec_wav_tags, cid);
78 // our parser completely breaks AAC in Ogg
79 if (st->codecpar->codec_id != AV_CODEC_ID_AAC)
80 sti->need_parsing = AVSTREAM_PARSE_FULL;
81 }
82
83 size = bytestream2_get_le32(&p);
84 size = FFMIN(size, os->psize);
85 time_unit = bytestream2_get_le64(&p);
86 spu = bytestream2_get_le64(&p);
87 if (!time_unit || !spu) {
88 av_log(s, AV_LOG_ERROR, "Invalid timing values.\n");
89 return AVERROR_INVALIDDATA;
90 }
91
92 bytestream2_skip(&p, 4); /* default_len */
93 bytestream2_skip(&p, 8); /* buffersize + bits_per_sample */
94
95 if(st->codecpar->codec_type == AVMEDIA_TYPE_VIDEO){
96 st->codecpar->width = bytestream2_get_le32(&p);
97 st->codecpar->height = bytestream2_get_le32(&p);
98 avpriv_set_pts_info(st, 64, time_unit, spu * 10000000);
99 } else {
100 st->codecpar->ch_layout.nb_channels = bytestream2_get_le16(&p);
101 bytestream2_skip(&p, 2); /* block_align */
102 st->codecpar->bit_rate = bytestream2_get_le32(&p) * 8;
103 st->codecpar->sample_rate = spu * 10000000 / time_unit;
104 avpriv_set_pts_info(st, 64, 1, st->codecpar->sample_rate);
105 if (size >= 56 && st->codecpar->codec_id == AV_CODEC_ID_AAC) {
106 bytestream2_skip(&p, 4);
107 size -= 4;
108 }
109 if (size > 52) {
110 size -= 52;
111 if (bytestream2_get_bytes_left(&p) < size)
112 return AVERROR_INVALIDDATA;
113 if ((ret = ff_alloc_extradata(st->codecpar, size)) < 0)
114 return ret;
115 bytestream2_get_buffer(&p, st->codecpar->extradata, st->codecpar->extradata_size);
116 }
117 }
118
119 // Update internal avctx with changes to codecpar above.
120 sti->need_context_update = 1;
121 } else if (bytestream2_peek_byte(&p) == 3) {
122 bytestream2_skip(&p, 7);
123 if (bytestream2_get_bytes_left(&p) > 1)
124 ff_vorbis_stream_comment(s, st, p.buffer, bytestream2_get_bytes_left(&p) - 1);
125 }
126
127 return 1;
128 }
129
130 static int
131 ogm_dshow_header(AVFormatContext *s, int idx)
132 {
133 struct ogg *ogg = s->priv_data;
134 struct ogg_stream *os = ogg->streams + idx;
135 AVStream *st = s->streams[idx];
136 uint8_t *p = os->buf + os->pstart;
137 uint32_t t;
138
139 if(!(*p & 1))
140 return 0;
141 if(*p != 1)
142 return 1;
143
144 if (os->psize < 100)
145 return AVERROR_INVALIDDATA;
146 t = AV_RL32(p + 96);
147
148 if(t == 0x05589f80){
149 if (os->psize < 184)
150 return AVERROR_INVALIDDATA;
151
152 st->codecpar->codec_type = AVMEDIA_TYPE_VIDEO;
153 st->codecpar->codec_id = ff_codec_get_id(ff_codec_bmp_tags, AV_RL32(p + 68));
154 avpriv_set_pts_info(st, 64, AV_RL64(p + 164), 10000000);
155 st->codecpar->width = AV_RL32(p + 176);
156 st->codecpar->height = AV_RL32(p + 180);
157 } else if(t == 0x05589f81){
158 if (os->psize < 136)
159 return AVERROR_INVALIDDATA;
160
161 st->codecpar->codec_type = AVMEDIA_TYPE_AUDIO;
162 st->codecpar->codec_id = ff_codec_get_id(ff_codec_wav_tags, AV_RL16(p + 124));
163 st->codecpar->ch_layout.nb_channels = AV_RL16(p + 126);
164 st->codecpar->sample_rate = AV_RL32(p + 128);
165 st->codecpar->bit_rate = AV_RL32(p + 132) * 8;
166 }
167
168 return 1;
169 }
170
171 static int
172 ogm_packet(AVFormatContext *s, int idx)
173 {
174 struct ogg *ogg = s->priv_data;
175 struct ogg_stream *os = ogg->streams + idx;
176 uint8_t *p = os->buf + os->pstart;
177 int lb;
178
179 if(*p & 8)
180 os->pflags |= AV_PKT_FLAG_KEY;
181
182 lb = ((*p & 2) << 1) | ((*p >> 6) & 3);
183 if (os->psize < lb + 1)
184 return AVERROR_INVALIDDATA;
185
186 os->pstart += lb + 1;
187 os->psize -= lb + 1;
188
189 while (lb--)
190 os->pduration += (uint64_t)p[lb+1] << (lb*8);
191
192 return 0;
193 }
194
195 const struct ogg_codec ff_ogm_video_codec = {
196 .magic = "\001video",
197 .magicsize = 6,
198 .header = ogm_header,
199 .packet = ogm_packet,
200 .granule_is_start = 1,
201 .nb_header = 2,
202 };
203
204 const struct ogg_codec ff_ogm_audio_codec = {
205 .magic = "\001audio",
206 .magicsize = 6,
207 .header = ogm_header,
208 .packet = ogm_packet,
209 .granule_is_start = 1,
210 .nb_header = 2,
211 };
212
213 const struct ogg_codec ff_ogm_text_codec = {
214 .magic = "\001text",
215 .magicsize = 5,
216 .header = ogm_header,
217 .packet = ogm_packet,
218 .granule_is_start = 1,
219 .nb_header = 2,
220 };
221
222 const struct ogg_codec ff_ogm_old_codec = {
223 .magic = "\001Direct Show Samples embedded in Ogg",
224 .magicsize = 35,
225 .header = ogm_dshow_header,
226 .packet = ogm_packet,
227 .granule_is_start = 1,
228 .nb_header = 1,
229 };
230

坐疮是什么样的图片 前列腺是什么器官 尿检查什么 吃什么能化解肾结石 四氯化碳什么颜色
圣诞节送女生什么礼物好 信心是什么意思 渣滓是什么意思 2.4号是什么星座 胸口中间疼是什么原因
一天当中什么时候血压最高 swisse是什么药 XX是什么意思 三体讲的是什么 祸起萧墙的萧墙指什么
为什么早上起来口苦 什么叫情商高 早泄吃什么中药 产褥热是什么病 心脏在乳房的什么位置
人乳头瘤病毒58型阳性是什么意思cl108k.com 经常梦遗是什么原因hcv8jop3ns8r.cn 六块钱的麻辣烫是什么意思hcv8jop4ns9r.cn 爱是什么感觉hcv7jop6ns4r.cn 什么口hcv7jop6ns5r.cn
心率过快吃什么药好bysq.com 什么的蚂蚁hcv8jop9ns6r.cn 脑梗吃什么东西好hcv8jop5ns5r.cn 飞天奖是什么奖hcv8jop6ns1r.cn 高铁列车长是什么级别hcv8jop3ns7r.cn
颞下颌关节紊乱挂什么科yanzhenzixun.com 良性反应性改变是什么意思hcv8jop7ns1r.cn 尿酸偏高是什么意思hcv8jop1ns4r.cn 肺主什么hcv9jop6ns3r.cn 纤维瘤是什么病hcv8jop0ns4r.cn
5月20日什么星座hcv8jop2ns5r.cn 两个虎是什么字hcv8jop9ns7r.cn 抬旗是什么意思520myf.com 是什么星座hcv8jop4ns6r.cn 农历正月初一是什么节hcv8jop4ns2r.cn
百度