梦见包被偷了什么预兆| 煞南是什么意思| 学兽医需要什么学历| 四不像长什么样| 人体乳头瘤病毒是什么| 什么时候打耳洞最好| 血管没有弹性是什么原因| hc是什么| 月经不调吃什么药效果好| 麦昆牌子是什么档次| 下眼皮跳动是什么原因| 社区建档需要什么资料| 鸟加一笔是什么字| 痢疾吃什么药效果最好| 燃面为什么叫燃面| 什么是脊柱侧弯| nba什么时候开始| 抽脂有什么风险和后遗症| 阳虚湿热吃什么中成药| 偷什么东西不犯法| 鳞状上皮是什么意思| 吃什么东西最营养| 短裙配什么鞋子好看| 沾沾喜气什么意思| 鸡皮肤用什么药膏最好| 待客是什么意思| 喜欢蓝色的女人是什么性格| 母婴传播是什么意思| 消化功能紊乱吃什么药| 瘦肉炒什么配菜好吃| 私处变黑是什么原因| 向内求什么意思| 五毒是什么| 孕期用什么护肤品| 联字五行属什么| 睡觉磨牙是什么原因| 自提是什么意思| 健康查体是什么意思| 姜虫咬人有什么症状| 为什么会拉肚子| 为什么会得阴道炎| 肚子老是疼是什么原因| 腰肌劳损是什么原因引起的| 什么叫三叉神经痛| 幽门梗阻是什么意思| kimi是什么意思| 久坐腰疼是什么原因| 脖子痛是什么原因| 舌头火辣辣的是什么病| 蚂蚁吃什么| 西京医院什么科室最强| 单纯疱疹病毒吃什么药| 蚂蚱吃什么食物| 加白是什么意思| 黄瓜又什么又什么| 属龙女和什么属相最配| 什么火热| 什么的歌| 农历五月二十一是什么星座| 肝火旺盛吃什么中成药| 外寒内热感冒吃什么药| 手脚出汗多是什么原因| 性激素六项是什么| 翘嘴鱼是什么鱼| 8月15号是什么日子| 为什么会长鸡眼| 瘦马什么意思| 什么水果是降火的| 一个虫一个尧念什么| 肾小球滤过率偏高说明什么| 产前筛查是检查什么| 淋巴结看什么科| 盆腔积液吃什么药| 韭菜有什么功效| 吃芒果对身体有什么好处| 眼睛散光和近视有什么区别| 秦始皇叫什么名字| 尿路感染看什么科| 更的部首是什么| 梦见别人家办丧事是什么意思| 莲花代表什么生肖| 七岁属什么生肖| 吃什么瘦肚子| ad是什么的缩写| 眼眶发青是什么原因| 夜晚咳嗽是什么原因| 肚脐周围疼痛是什么原因| 犬吠是什么意思| 嗓子发炎挂什么科| 为什么当兵| 蜱虫咬了什么症状| 吃什么可以控制血糖| 唇上有痣代表什么| 贫血吃什么食物| 降压药有什么副作用| 空气炸锅能做什么| 为什么干红那么难喝| 土星为什么有光环| 左手小手指麻木是什么原因引起的| 为什么偏偏喜欢你| 名落孙山是什么意思| 甲功三项能查出什么病| 腹泻用什么药| 只是当时已惘然是什么意思| kksk是什么意思| 睾丸变小了是什么原因| 司是什么级别| 两弹一星是什么| xsh是什么意思| 酒后吃什么水果好| 三刀六洞什么意思| 杯弓蛇影告诉我们什么道理| 什么木头有香味| 玉兰花什么季节开| 落户什么意思| 碧根果和核桃有什么区别| 小孩包皮挂什么科| 悼念是什么意思| 劳士顿手表什么档次| 胎动什么感觉| 高大尚是什么意思| 化脓性扁桃体炎吃什么药| 低钾血症是什么病| qid是什么意思| 尿管痒是什么原因| 什么眉什么眼| 特点是什么意思| 直径是什么| 什么蛇可以吃| 壮阳吃什么补最快最好| 拈花一笑什么意思| 小孩什么时候换牙| 踩指压板有什么好处| 什么好| 晚上睡觉咳嗽是什么原因| 恢复是什么意思| 什么牌子的燃气灶质量好| 金不换是什么菜| dw手表属于什么档次| 宋朝之前是什么朝代| 射手座什么性格| 水生什么五行| 傻狍子什么意思| 什么竹笋不能吃| 甲减是一种什么病| 脚脱皮用什么药膏| 化学性肝损伤是什么意思| 静脉曲张吃什么食物| 脱式计算是什么意思| 羊水指数是什么意思| 溴隐亭是什么药| 梵高属于什么画派| 9.3是什么日子| 什么病不能吃玉米| 脚为什么会发麻| 老年人腿脚无力是什么原因| 胃气上逆有什么好的办法治疗| 脉络是什么意思| 菜场附近开什么店好| 胃不消化吃什么药| 双子座是什么象星座| 鹿参膏有什么作用和功效| 沐沐是什么意思| 是什么符号| 阴虱是什么样子图片| 租赁费计入什么科目| 喉咙痒干咳吃什么药| 六月份什么星座| 淋巴发炎吃什么药| 8月30号什么星座| 为什么大便拉不出来| 情投意合是什么意思| 五行金是什么颜色| 蒙古族不吃什么肉| 眼花缭乱什么意思| 景泰蓝是什么地方的特种工艺| 用红笔写名字代表什么| 和平是什么意思| 1970年是什么命| 激素六项什么时候查最准| 嘴里发苦是什么原因| 201是什么意思| 胃下垂是什么症状| 塔利班是什么| 朱棣是朱元璋的什么人| 甘肃天水有什么好玩的地方| 776是什么意思| 冰晶是什么| 什么是数字化| 马齿苋什么人不能吃| 830是什么意思| 减肥吃什么瘦得快| vain是什么意思| 掌中宝是什么肉| 成语一什么不什么| 痔疮用什么药治最好效果最快| 下面痒是什么原因女性| 肾在什么位置| 12月28是什么星座| 结痂什么意思| 尿检3个加号什么意思| 爱的本质是什么| 膝盖后面叫什么部位| 天使综合征是什么病| 镶什么牙实惠耐用| 闲是什么生肖| 慢什么斯什么| 乳房发烫胀痛什么原因| tommy什么牌子| 暑假是什么时候放假| btc是什么货币| 柔肝是什么意思| 糖类抗原ca125偏高是什么原因| 肠梗阻是什么意思| 梦见自己梳头发是什么意思| 检查梅毒挂什么科| hpv病毒是什么| 碳酸氢根偏低什么意思| 人脱水了会有什么表现| 日语斯国一是什么意思| 煮虾放什么| 喝生鸡蛋有什么好处| 脚肿腿肿是什么原因引起的| 路旁土命什么意思| 润喉咙什么东西最合适| 7月15日什么星座| examine什么意思| 乳腺癌ki67是什么意思| 为什么早上起床头晕| 全麦粉和小麦粉的区别是什么| 维生素ad和维生素d有什么区别| 两个人可以玩什么| 吃什么水果长头发| 11月10日是什么星座| 但求无愧于心上句是什么| 黄体期什么意思| 鼻子旁边长痘是什么原因| 喝藿香正气水不能吃什么| 泛性恋是什么意思| 皇太后是皇上的什么人| 与什么有关| 为什么生理期不能拔牙| 工科和理科有什么区别| 马云是什么大学毕业的| 养老院和敬老院有什么区别| 感染hpv吃什么药| acc是什么意思| 易经和周易有什么区别| 一级甲等医院是什么意思| 马黛茶什么味道| 小孩子走神是什么原因| 步兵什么意思| 本我是什么意思| 腺肌症吃什么药效果好| 南笙是什么意思| d二聚体高是什么原因| 勾绞煞是什么意思| 梦到自己老公出轨是什么意思| 亿五行属什么| 梦见蛀牙掉是什么预兆| 什么是表达方式| prc什么意思| 头爱出汗是什么原因引起的| 大便细是什么原因| 百度

小鹿叮叮游泳纸尿裤发布 供宝宝游泳玩水专用


Directory: ../../../ffmpeg/
File: src/libavformat/pcmdec.c
Date: 2025-08-04 00:43:16
Exec Total Coverage
Lines: 19 42 45.2%
Functions: 1 1 100.0%
Branches: 4 28 14.3%

Line Branch Exec Source
1 /*
2 * RAW PCM demuxers
3 * Copyright (c) 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/channel_layout.h"
26 #include "libavutil/mem.h"
27 #include "avformat.h"
28 #include "demux.h"
29 #include "internal.h"
30 #include "pcm.h"
31 #include "libavutil/log.h"
32 #include "libavutil/opt.h"
33 #include "libavutil/avassert.h"
34
35 typedef struct PCMAudioDemuxerContext {
36 AVClass *class;
37 int sample_rate;
38 AVChannelLayout ch_layout;
39 } PCMAudioDemuxerContext;
40
41 70 static int pcm_read_header(AVFormatContext *s)
42 {
43 70 PCMAudioDemuxerContext *s1 = s->priv_data;
44 AVCodecParameters *par;
45 AVStream *st;
46 70 uint8_t *mime_type = NULL;
47 int ret;
48
49 70 st = avformat_new_stream(s, NULL);
50
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 70 times.
70 if (!st)
51 return AVERROR(ENOMEM);
52 70 par = st->codecpar;
53
54 70 par->codec_type = AVMEDIA_TYPE_AUDIO;
55 70 par->codec_id = ffifmt(s->iformat)->raw_codec_id;
56 70 par->sample_rate = s1->sample_rate;
57 70 ret = av_channel_layout_copy(&par->ch_layout, &s1->ch_layout);
58
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 70 times.
70 if (ret < 0)
59 return ret;
60
61 70 av_opt_get(s->pb, "mime_type", AV_OPT_SEARCH_CHILDREN, &mime_type);
62
1/4
✗ Branch 0 not taken.
✓ Branch 1 taken 70 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
70 if (mime_type && s->iformat->mime_type) {
63 int rate = 0, channels = 0, little_endian = 0;
64 const char *options;
65 if (av_stristart(mime_type, s->iformat->mime_type, &options)) { /* audio/L16 */
66 while (options = strchr(options, ';')) {
67 options++;
68 if (!rate)
69 sscanf(options, " rate=%d", &rate);
70 if (!channels)
71 sscanf(options, " channels=%d", &channels);
72 if (!little_endian) {
73 char val[sizeof("little-endian")];
74 if (sscanf(options, " endianness=%13s", val) == 1) {
75 little_endian = strcmp(val, "little-endian") == 0;
76 }
77 }
78 }
79 if (rate <= 0) {
80 av_log(s, AV_LOG_ERROR,
81 "Invalid sample_rate found in mime_type \"%s\"\n",
82 mime_type);
83 av_freep(&mime_type);
84 return AVERROR_INVALIDDATA;
85 }
86 par->sample_rate = rate;
87 if (channels > 0) {
88 av_channel_layout_uninit(&par->ch_layout);
89 par->ch_layout.nb_channels = channels;
90 }
91 if (little_endian)
92 par->codec_id = AV_CODEC_ID_PCM_S16LE;
93 }
94 }
95 70 av_freep(&mime_type);
96
97 70 par->bits_per_coded_sample = av_get_bits_per_sample(par->codec_id);
98
99
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 70 times.
70 av_assert0(par->bits_per_coded_sample > 0);
100
101 70 par->block_align = par->bits_per_coded_sample * par->ch_layout.nb_channels / 8;
102
103 70 avpriv_set_pts_info(st, 64, 1, par->sample_rate);
104 70 return 0;
105 }
106
107 static const AVOption pcm_options[] = {
108 { "sample_rate", "", offsetof(PCMAudioDemuxerContext, sample_rate), AV_OPT_TYPE_INT, {.i64 = 44100}, 0, INT_MAX, AV_OPT_FLAG_DECODING_PARAM },
109 { "ch_layout", "", offsetof(PCMAudioDemuxerContext, ch_layout), AV_OPT_TYPE_CHLAYOUT, {.str = "mono"}, 0, 0, AV_OPT_FLAG_DECODING_PARAM },
110 { NULL },
111 };
112 static const AVClass pcm_demuxer_class = {
113 .class_name = "pcm demuxer",
114 .item_name = av_default_item_name,
115 .option = pcm_options,
116 .version = LIBAVUTIL_VERSION_INT,
117 };
118
119 #define PCMDEF_0(name_, long_name_, ext, codec, ...)
120 #define PCMDEF_1(name_, long_name_, ext, codec, ...) \
121 const FFInputFormat ff_pcm_ ## name_ ## _demuxer = { \
122 .p.name = #name_, \
123 .p.long_name = NULL_IF_CONFIG_SMALL(long_name_), \
124 .p.flags = AVFMT_GENERIC_INDEX, \
125 .p.extensions = ext, \
126 .p.priv_class = &pcm_demuxer_class, \
127 .priv_data_size = sizeof(PCMAudioDemuxerContext), \
128 .read_header = pcm_read_header, \
129 .read_packet = ff_pcm_read_packet, \
130 .read_seek = ff_pcm_read_seek, \
131 .raw_codec_id = codec, \
132 __VA_ARGS__ \
133 };
134 #define PCMDEF_2(name, long_name, ext, codec, enabled, ...) \
135 PCMDEF_ ## enabled(name, long_name, ext, codec, __VA_ARGS__)
136 #define PCMDEF_3(name, long_name, ext, codec, config, ...) \
137 PCMDEF_2(name, long_name, ext, codec, config, __VA_ARGS__)
138 #define PCMDEF_EXT(name, long_name, ext, uppercase, ...) \
139 PCMDEF_3(name, long_name, ext, AV_CODEC_ID_PCM_ ## uppercase, \
140 CONFIG_PCM_ ## uppercase ## _DEMUXER, __VA_ARGS__)
141 #define PCMDEF(name, long_name, ext, uppercase) \
142 PCMDEF_EXT(name, long_name, ext, uppercase, )
143
144 PCMDEF(f64be, "PCM 64-bit floating-point big-endian", NULL, F64BE)
145 PCMDEF(f64le, "PCM 64-bit floating-point little-endian", NULL, F64LE)
146 PCMDEF(f32be, "PCM 32-bit floating-point big-endian", NULL, F32BE)
147 PCMDEF(f32le, "PCM 32-bit floating-point little-endian", NULL, F32LE)
148 PCMDEF(s32be, "PCM signed 32-bit big-endian", NULL, S32BE)
149 PCMDEF(s32le, "PCM signed 32-bit little-endian", NULL, S32LE)
150 PCMDEF(s24be, "PCM signed 24-bit big-endian", NULL, S24BE)
151 PCMDEF(s24le, "PCM signed 24-bit little-endian", NULL, S24LE)
152 PCMDEF_EXT(s16be, "PCM signed 16-bit big-endian",
153 AV_NE("sw", NULL), S16BE, .p.mime_type = "audio/L16")
154 PCMDEF(s16le, "PCM signed 16-bit little-endian", AV_NE(NULL, "sw"), S16LE)
155 PCMDEF(s8, "PCM signed 8-bit", "sb", S8)
156 PCMDEF(u32be, "PCM unsigned 32-bit big-endian", NULL, U32BE)
157 PCMDEF(u32le, "PCM unsigned 32-bit little-endian", NULL, U32LE)
158 PCMDEF(u24be, "PCM unsigned 24-bit big-endian", NULL, U24BE)
159 PCMDEF(u24le, "PCM unsigned 24-bit little-endian", NULL, U24LE)
160 PCMDEF(u16be, "PCM unsigned 16-bit big-endian", AV_NE("uw", NULL), U16BE)
161 PCMDEF(u16le, "PCM unsigned 16-bit little-endian", AV_NE(NULL, "uw"), U16LE)
162 PCMDEF(u8, "PCM unsigned 8-bit", "ub", U8)
163 PCMDEF(alaw, "PCM A-law", "al", ALAW)
164 PCMDEF(mulaw, "PCM mu-law", "ul", MULAW)
165 PCMDEF(vidc, "PCM Archimedes VIDC", NULL, VIDC)
166
167 #if CONFIG_SLN_DEMUXER
168 static const AVOption sln_options[] = {
169 { "sample_rate", "", offsetof(PCMAudioDemuxerContext, sample_rate), AV_OPT_TYPE_INT, {.i64 = 8000}, 0, INT_MAX, AV_OPT_FLAG_DECODING_PARAM },
170 { "ch_layout", "", offsetof(PCMAudioDemuxerContext, ch_layout), AV_OPT_TYPE_CHLAYOUT, {.str = "mono"}, 0, 0, AV_OPT_FLAG_DECODING_PARAM },
171 { NULL },
172 };
173
174 static const AVClass sln_demuxer_class = {
175 .class_name = "sln demuxer",
176 .item_name = av_default_item_name,
177 .option = sln_options,
178 .version = LIBAVUTIL_VERSION_INT,
179 };
180
181 const FFInputFormat ff_sln_demuxer = {
182 .p.name = "sln",
183 .p.long_name = NULL_IF_CONFIG_SMALL("Asterisk raw pcm"),
184 .p.flags = AVFMT_GENERIC_INDEX,
185 .p.extensions = "sln",
186 .p.priv_class = &sln_demuxer_class,
187 .priv_data_size = sizeof(PCMAudioDemuxerContext),
188 .read_header = pcm_read_header,
189 .read_packet = ff_pcm_read_packet,
190 .read_seek = ff_pcm_read_seek,
191 .raw_codec_id = AV_CODEC_ID_PCM_S16LE,
192 };
193 #endif
194

黄褐斑内调吃什么药 什么是拓扑 av是什么 时光荏苒什么意思 三个鬼是什么字
椰子和椰青有什么区别 草莓什么时候种植最好 男人遗精是什么原因 三文鱼又叫什么鱼 甲状腺彩超挂什么科
女人吃枸杞有什么好处 昂热为什么认识路鸣泽 记字五行属什么 手机壳什么材质好 心衰是什么意思
拔罐出水是什么原因 老鸨什么意思 角加斗念什么 坐小月子可以吃什么水果 擦枪走火什么意思
你太low了是什么意思hcv8jop5ns4r.cn 紫苏有什么功效hcv9jop4ns4r.cn 玫瑰糠疹是什么原因引起的hcv9jop1ns1r.cn 机遇什么意思huizhijixie.com 胳膊肘发黑是什么原因hcv8jop2ns0r.cn
泉肌症是什么病hcv8jop1ns4r.cn 办健康证要带什么hcv8jop2ns0r.cn 治疗结石最好的方法是什么hcv7jop9ns6r.cn 银壶一般什么价位hcv8jop6ns9r.cn 卷饼卷什么菜好吃hcv9jop4ns4r.cn
脚底灼热是什么原因hcv7jop9ns9r.cn 医院介入科是干什么的chuanglingweilai.com aut0是什么意思hcv9jop1ns4r.cn 什么叫腺样体肥大hcv8jop2ns9r.cn 虬是什么动物hcv8jop0ns8r.cn
707是什么意思qingzhougame.com 取环后月经量少是什么原因youbangsi.com 肌酐高吃什么水果好hcv8jop5ns8r.cn 喝什么能补肾hcv8jop4ns9r.cn 什么叫匝道hcv8jop3ns6r.cn
百度