农历六月十九是什么日子| 一月出生是什么星座| 数不胜数是什么意思| 缠腰蛇是什么原因引起的| 开封有什么大学| 淀粉酶是查什么的| 小孩睡觉流口水是什么原因| 吃益生菌有什么好处| 哈伦裤配什么鞋子好看| eb病毒igg抗体阳性是什么意思| 大豆磷脂是什么| 保育费是什么意思| 蒙脱石散适合什么腹泻| 十个一是什么| 小便很黄是什么原因| 仓鼠吃什么食物最好| 胡人是什么民族| warning什么意思| 福生无量是什么意思| 初吻是什么意思| 什么是腹式呼吸的正确方法| 2021年什么年| 5月14日是什么星座| 子宫息肉有什么危害| 乙肝核心抗体阳性是什么意思| 吃东西想吐是什么原因| 谨言是什么意思| 万金油什么意思| 房颤是什么原因引起的| 李子树苗什么品种好| 什么伤肝| 肛裂涂什么药膏能愈合| 为什么突然流鼻血| 一只耳朵响是什么原因| 狗和什么属相相冲| 肌肉劳损用什么药| 脚面麻木是什么原因| 扁平疣用什么药膏管用| 什么运动可以长高| 上上签什么意思| 168红包代表什么意思| 什么鸟没有翅膀| 护照免签是什么意思| st是什么意思| 颈椎钙化是什么意思严重么| 兰蔻适合什么年龄的人用| 血糖偏高会有什么症状| 6岁属什么生肖| 吃什么生精养精最快| 李小龙是什么生肖| 女性肝囊肿要注意什么| 靶点是什么意思| 色盲的世界是什么颜色| 鹅蛋脸适合什么刘海| 宁五行属什么| 肝部出现腹水是什么原因| 窦性心律不齐是什么| 流口水是什么病的前兆| 打美国电话前面加什么| 广州机场叫什么名字| 抽烟对身体有什么危害| dw手表属于什么档次| 破财免灾什么意思| o型血和ab型血生的孩子是什么血型| 猫舔人是什么意思| 减肥头晕是什么原因| 地府是什么意思| 开心的反义词是什么| 地铁不能带什么东西| c14阳性是什么意思| 肾结石不能吃什么东西| 一月四号是什么星座| 掌纹多而乱代表什么| 儿童头疼吃什么药| 脂肪肝喝什么茶最好最有效| 柿子是什么颜色| 7月去英国穿什么| alb医学上是什么意思| 下午一点半是什么时辰| 今年的属相是什么生肖| 什么食物去湿气效果好| 1983年是什么年| 老年人生日送什么礼物| 红糖荷包蛋有什么功效| 胃酸吃什么药| 什么安全套好用| 张宇的老婆叫什么名字| 乳清粉是什么东西| 人格魅力什么意思| 贴士是什么意思| 奚字五行属什么| 健康证办理需要什么材料| 为什么水不能燃烧| 来大姨妈量少是什么原因| 11月12日是什么星座| 心悸什么意思| 奇异是什么意思| 联通查话费打什么号码| lg手机是什么牌子| 生小孩有什么补贴政策| 伶牙俐齿是什么生肖| 温州特产是什么| 子非鱼什么意思| 蚊子喜欢咬什么血型| 梦见尸体是什么意思| 三阳开泰是什么意思| 积德是什么意思| 肺部结节是什么意思啊| 马路上的菱形标志是什么意思| 芙蓉花长什么样| 不亚于是什么意思| 属兔什么命| 心悸是什么症状| 意中人是什么意思| 绿色蛇是什么蛇| 2.4什么星座| b型血和o型血生的孩子是什么血型| 偏头疼是什么症状| 淋巴癌有什么症状| 身体起水泡是什么病症| 跳大神什么意思| 子宫彩超能检查出什么| 对调什么意思| 嘴角开裂是什么原因| 突然想吐是什么原因| 无锡为什么叫无锡| 不可开交是什么意思| 鲨鱼为什么怕海豚| 尿结晶是什么意思| 老二是什么意思| 活好的女人有什么表现| 私密瘙痒是什么原因| 什么枯石烂| 沈殿霞为什么地位高| 湿疹用什么药好得最快最有效| 胎头位于耻上是什么意思| 男人阴囊潮湿吃什么药| 梦见很多人是什么意思| 什么名字好听| 葡萄是什么季节的水果| 嗓子不舒服做什么检查| 什么情况下需要切除子宫| 梦见建房子是什么预兆| 5点是什么时辰| 手表seiko是什么牌子| 2006属狗的五行缺什么| 咿呀咿呀哟是什么歌| 6.7是什么星座| 1908年中国发生了什么| 骨癌的前兆是什么症状| 植物神经紊乱中医叫什么病| 梦见染头发是什么意思| 舌苔厚腻是什么原因| 肝不好有什么症状| 决明子泡水喝有什么好处| 喜人是什么意思| 父亲节该送什么礼物| 脑白质病变是什么病| 反流性食管炎吃什么中成药| 梦见手抓屎是什么意思| 射手男和什么座最配对| 什么克土| 碱性水是什么水| 被蚂蚁咬了擦什么药| 肠道感染是什么原因引起的| 乳腺增生吃什么药效果好| 超声是什么检查| 梦到抓鱼是什么意思| 人参归脾丸适合什么人吃| 王不见王是什么意思| 幽门螺杆菌阳性吃什么药| 社恐的人适合什么工作| 卒中优先是什么意思| 休渔期是什么时候| nov是什么意思| 息肉样增生是什么意思| 什么是红外线| 谷草谷丙比值偏高代表什么| 你本来就很美是什么广告| 喉咙痒是什么原因引起的| 什么是石女| 心灵鸡汤什么意思| 什么让我成长| 女人体检都查什么项目| 胃出血什么症状| 粟米是什么米| 孩子半夜咳嗽是什么原因| 胃子老是胀气是什么原因| 小针刀是什么| 瘰疬是什么意思| 3月4日是什么星座| 湿气重去医院挂什么科| 速度是70迈心情是自由自在什么歌| 什么是冰种翡翠| 墨绿色是什么颜色| 郝字五行属什么| 生日当天忌穿什么颜色| 牛奶不能和什么一起吃| 四大美女是什么生肖| 当枪使什么意思| 每天喝一杯豆浆有什么好处| 分泌物发黄是什么原因| 急火攻心是什么生肖| 什么叫奢侈| white是什么意思颜色| 雨水是什么季节| 乌江鱼是什么鱼| emma是什么意思| 刚怀孕有什么特征| 刻舟求剑什么意思| 男人有腰窝意味着什么| 国家能源局是什么级别| 益生菌治什么病| 男人吃什么壮阳最快| 水鱼是什么意思| 龋齿和蛀牙有什么区别| 阿司匹林和阿莫西林有什么区别| 把子肉是什么| 狗狗能看见什么颜色| 家人们是什么意思| 暗送秋波什么意思| 牙龈翻瓣术是什么意思| .什么意思| 妊娠高血压对胎儿有什么影响| 今年66岁属什么生肖的| 肠胃不好吃什么水果好| 锁精环是什么| 5.4是什么星座| 梦到自行车丢了是什么意思| 八月十五什么星座| 暗网是什么| 前列腺回声欠均匀什么意思| 靴型心见于什么病| 五心烦热是什么意思| 大便蛋花状是什么原因| 什么的花纹| 荨麻疹吃什么药最好| 胃幽门螺杆菌有什么症状| 梦见知了猴是什么意思| 父亲节送什么礼物比较好| fvc是什么意思| 消谷善饥是什么意思| 颖五行属什么| 95年属什么| 肌肉拉伤挂什么科| 平平仄仄是什么意思| 杏鲍菇炒什么好吃| 小孩不吃肉是什么原因| hm是什么品牌| 竹字头均念什么名字| 头皮痒掉发严重是什么原因| 刺猬爱吃什么| 脑出血是什么原因造成的| 万马奔腾什么意思| 肚子痛拉稀吃什么药| 肚脐右侧是什么器官| 血清载脂蛋白b偏高是什么意思| 风疹是什么样子图片| 潮热是什么症状| 什么的哲理| 什么东西可以止痒| ppt是什么意思| 妄想是什么意思| 腿弯后面疼是什么原因| 百度

国家能源局—副局长:刘宝华


Directory: ../../../ffmpeg/
File: src/libavfilter/af_ashowinfo.c
Date: 2025-08-04 00:43:16
Exec Total Coverage
Lines: 0 115 0.0%
Functions: 0 9 0.0%
Branches: 0 53 0.0%

Line Branch Exec Source
1 /*
2 * Copyright (c) 2011 Stefano Sabatini
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 /**
22 * @file
23 * filter for showing textual audio frame information
24 */
25
26 #include <inttypes.h>
27
28 #include "libavutil/adler32.h"
29 #include "libavutil/attributes.h"
30 #include "libavutil/channel_layout.h"
31 #include "libavutil/downmix_info.h"
32 #include "libavutil/mem.h"
33 #include "libavutil/replaygain.h"
34 #include "libavutil/timestamp.h"
35 #include "libavutil/samplefmt.h"
36
37 #include "libavcodec/defs.h"
38
39 #include "audio.h"
40 #include "avfilter.h"
41 #include "filters.h"
42
43 typedef struct AShowInfoContext {
44 /**
45 * Scratch space for individual plane checksums for planar audio
46 */
47 uint32_t *plane_checksums;
48 } AShowInfoContext;
49
50 static av_cold void uninit(AVFilterContext *ctx)
51 {
52 AShowInfoContext *s = ctx->priv;
53 av_freep(&s->plane_checksums);
54 }
55
56 static void dump_matrixenc(AVFilterContext *ctx, AVFrameSideData *sd)
57 {
58 enum AVMatrixEncoding enc;
59
60 av_log(ctx, AV_LOG_INFO, "matrix encoding: ");
61
62 if (sd->size < sizeof(enum AVMatrixEncoding)) {
63 av_log(ctx, AV_LOG_INFO, "invalid data");
64 return;
65 }
66
67 enc = *(enum AVMatrixEncoding *)sd->data;
68 switch (enc) {
69 case AV_MATRIX_ENCODING_NONE: av_log(ctx, AV_LOG_INFO, "none"); break;
70 case AV_MATRIX_ENCODING_DOLBY: av_log(ctx, AV_LOG_INFO, "Dolby Surround"); break;
71 case AV_MATRIX_ENCODING_DPLII: av_log(ctx, AV_LOG_INFO, "Dolby Pro Logic II"); break;
72 case AV_MATRIX_ENCODING_DPLIIX: av_log(ctx, AV_LOG_INFO, "Dolby Pro Logic IIx"); break;
73 case AV_MATRIX_ENCODING_DPLIIZ: av_log(ctx, AV_LOG_INFO, "Dolby Pro Logic IIz"); break;
74 case AV_MATRIX_ENCODING_DOLBYEX: av_log(ctx, AV_LOG_INFO, "Dolby EX"); break;
75 case AV_MATRIX_ENCODING_DOLBYHEADPHONE: av_log(ctx, AV_LOG_INFO, "Dolby Headphone"); break;
76 default: av_log(ctx, AV_LOG_WARNING, "unknown"); break;
77 }
78 }
79
80 static void dump_downmix(AVFilterContext *ctx, AVFrameSideData *sd)
81 {
82 AVDownmixInfo *di;
83
84 av_log(ctx, AV_LOG_INFO, "downmix: ");
85 if (sd->size < sizeof(*di)) {
86 av_log(ctx, AV_LOG_INFO, "invalid data");
87 return;
88 }
89
90 di = (AVDownmixInfo *)sd->data;
91
92 av_log(ctx, AV_LOG_INFO, "preferred downmix type - ");
93 switch (di->preferred_downmix_type) {
94 case AV_DOWNMIX_TYPE_LORO: av_log(ctx, AV_LOG_INFO, "Lo/Ro"); break;
95 case AV_DOWNMIX_TYPE_LTRT: av_log(ctx, AV_LOG_INFO, "Lt/Rt"); break;
96 case AV_DOWNMIX_TYPE_DPLII: av_log(ctx, AV_LOG_INFO, "Dolby Pro Logic II"); break;
97 default: av_log(ctx, AV_LOG_WARNING, "unknown"); break;
98 }
99
100 av_log(ctx, AV_LOG_INFO, " Mix levels: center %f (%f ltrt) - "
101 "surround %f (%f ltrt) - lfe %f",
102 di->center_mix_level, di->center_mix_level_ltrt,
103 di->surround_mix_level, di->surround_mix_level_ltrt,
104 di->lfe_mix_level);
105 }
106
107 static void print_gain(AVFilterContext *ctx, const char *str, int32_t gain)
108 {
109 av_log(ctx, AV_LOG_INFO, "%s - ", str);
110 if (gain == INT32_MIN)
111 av_log(ctx, AV_LOG_INFO, "unknown");
112 else
113 av_log(ctx, AV_LOG_INFO, "%f", gain / 100000.0f);
114 av_log(ctx, AV_LOG_INFO, ", ");
115 }
116
117 static void print_peak(AVFilterContext *ctx, const char *str, uint32_t peak)
118 {
119 av_log(ctx, AV_LOG_INFO, "%s - ", str);
120 if (!peak)
121 av_log(ctx, AV_LOG_INFO, "unknown");
122 else
123 av_log(ctx, AV_LOG_INFO, "%f", peak / 100000.0f);
124 av_log(ctx, AV_LOG_INFO, ", ");
125 }
126
127 static void dump_replaygain(AVFilterContext *ctx, AVFrameSideData *sd)
128 {
129 AVReplayGain *rg;
130
131 av_log(ctx, AV_LOG_INFO, "replaygain: ");
132 if (sd->size < sizeof(*rg)) {
133 av_log(ctx, AV_LOG_INFO, "invalid data");
134 return;
135 }
136 rg = (AVReplayGain*)sd->data;
137
138 print_gain(ctx, "track gain", rg->track_gain);
139 print_peak(ctx, "track peak", rg->track_peak);
140 print_gain(ctx, "album gain", rg->album_gain);
141 print_peak(ctx, "album peak", rg->album_peak);
142 }
143
144 static void dump_audio_service_type(AVFilterContext *ctx, AVFrameSideData *sd)
145 {
146 enum AVAudioServiceType *ast;
147
148 av_log(ctx, AV_LOG_INFO, "audio service type: ");
149 if (sd->size < sizeof(*ast)) {
150 av_log(ctx, AV_LOG_INFO, "invalid data");
151 return;
152 }
153 ast = (enum AVAudioServiceType*)sd->data;
154 switch (*ast) {
155 case AV_AUDIO_SERVICE_TYPE_MAIN: av_log(ctx, AV_LOG_INFO, "Main Audio Service"); break;
156 case AV_AUDIO_SERVICE_TYPE_EFFECTS: av_log(ctx, AV_LOG_INFO, "Effects"); break;
157 case AV_AUDIO_SERVICE_TYPE_VISUALLY_IMPAIRED: av_log(ctx, AV_LOG_INFO, "Visually Impaired"); break;
158 case AV_AUDIO_SERVICE_TYPE_HEARING_IMPAIRED: av_log(ctx, AV_LOG_INFO, "Hearing Impaired"); break;
159 case AV_AUDIO_SERVICE_TYPE_DIALOGUE: av_log(ctx, AV_LOG_INFO, "Dialogue"); break;
160 case AV_AUDIO_SERVICE_TYPE_COMMENTARY: av_log(ctx, AV_LOG_INFO, "Commentary"); break;
161 case AV_AUDIO_SERVICE_TYPE_EMERGENCY: av_log(ctx, AV_LOG_INFO, "Emergency"); break;
162 case AV_AUDIO_SERVICE_TYPE_VOICE_OVER: av_log(ctx, AV_LOG_INFO, "Voice Over"); break;
163 case AV_AUDIO_SERVICE_TYPE_KARAOKE: av_log(ctx, AV_LOG_INFO, "Karaoke"); break;
164 default: av_log(ctx, AV_LOG_INFO, "unknown"); break;
165 }
166 }
167
168 static void dump_unknown(AVFilterContext *ctx, AVFrameSideData *sd)
169 {
170 av_log(ctx, AV_LOG_INFO, "unknown side data type: %d, size "
171 "%"SIZE_SPECIFIER" bytes", sd->type, sd->size);
172 }
173
174 static int filter_frame(AVFilterLink *inlink, AVFrame *buf)
175 {
176 FilterLink *inl = ff_filter_link(inlink);
177 AVFilterContext *ctx = inlink->dst;
178 AShowInfoContext *s = ctx->priv;
179 char chlayout_str[128];
180 uint32_t checksum = 0;
181 int channels = inlink->ch_layout.nb_channels;
182 int planar = av_sample_fmt_is_planar(buf->format);
183 int block_align = av_get_bytes_per_sample(buf->format) * (planar ? 1 : channels);
184 int data_size = buf->nb_samples * block_align;
185 int planes = planar ? channels : 1;
186 int i;
187 void *tmp_ptr = av_realloc_array(s->plane_checksums, channels, sizeof(*s->plane_checksums));
188
189 if (!tmp_ptr)
190 return AVERROR(ENOMEM);
191 s->plane_checksums = tmp_ptr;
192
193 for (i = 0; i < planes; i++) {
194 uint8_t *data = buf->extended_data[i];
195
196 s->plane_checksums[i] = av_adler32_update(0, data, data_size);
197 checksum = i ? av_adler32_update(checksum, data, data_size) :
198 s->plane_checksums[0];
199 }
200
201 av_channel_layout_describe(&buf->ch_layout, chlayout_str, sizeof(chlayout_str));
202
203 av_log(ctx, AV_LOG_INFO,
204 "n:%"PRId64" pts:%s pts_time:%s "
205 "fmt:%s channels:%d chlayout:%s rate:%d nb_samples:%d "
206 "checksum:%08"PRIX32" ",
207 inl->frame_count_out,
208 av_ts2str(buf->pts), av_ts2timestr(buf->pts, &inlink->time_base),
209 av_get_sample_fmt_name(buf->format), buf->ch_layout.nb_channels, chlayout_str,
210 buf->sample_rate, buf->nb_samples,
211 checksum);
212
213 av_log(ctx, AV_LOG_INFO, "plane_checksums: [ ");
214 for (i = 0; i < planes; i++)
215 av_log(ctx, AV_LOG_INFO, "%08"PRIX32" ", s->plane_checksums[i]);
216 av_log(ctx, AV_LOG_INFO, "]\n");
217
218 for (i = 0; i < buf->nb_side_data; i++) {
219 AVFrameSideData *sd = buf->side_data[i];
220
221 av_log(ctx, AV_LOG_INFO, " side data - ");
222 switch (sd->type) {
223 case AV_FRAME_DATA_MATRIXENCODING: dump_matrixenc (ctx, sd); break;
224 case AV_FRAME_DATA_DOWNMIX_INFO: dump_downmix (ctx, sd); break;
225 case AV_FRAME_DATA_REPLAYGAIN: dump_replaygain(ctx, sd); break;
226 case AV_FRAME_DATA_AUDIO_SERVICE_TYPE: dump_audio_service_type(ctx, sd); break;
227 default: dump_unknown (ctx, sd); break;
228 }
229
230 av_log(ctx, AV_LOG_INFO, "\n");
231 }
232
233 return ff_filter_frame(inlink->dst->outputs[0], buf);
234 }
235
236 static const AVFilterPad inputs[] = {
237 {
238 .name = "default",
239 .type = AVMEDIA_TYPE_AUDIO,
240 .filter_frame = filter_frame,
241 },
242 };
243
244 const FFFilter ff_af_ashowinfo = {
245 .p.name = "ashowinfo",
246 .p.description = NULL_IF_CONFIG_SMALL("Show textual information for each audio frame."),
247 .p.flags = AVFILTER_FLAG_METADATA_ONLY,
248 .priv_size = sizeof(AShowInfoContext),
249 .uninit = uninit,
250 FILTER_INPUTS(inputs),
251 FILTER_OUTPUTS(ff_audio_default_filterpad),
252 };
253

公司监事是干什么的 新生儿超敏c反应蛋白高说明什么 主动脉夹层是什么原因引起的 何曾是什么意思 薄荷与什么相克
什么叫人 潮汐是什么意思 9像什么 脖子肿了是什么原因 马铃薯是什么
哺乳期抽烟对宝宝有什么影响 尿颜色很黄是什么原因 狭鳕鱼是什么鱼 粘纤是什么材质 上传下达是什么意思
曼月乐是什么 女人跑马是什么意思 luna什么意思 昂字五行属什么 肛门长肉球是什么原因
侃侃而谈是什么意思hcv9jop2ns7r.cn 心肌缺血做什么检查能查出来hcv9jop1ns4r.cn 什么叫有格局的人hcv9jop1ns3r.cn 嗓子突然哑了是什么原因引起的hcv8jop4ns6r.cn 糖尿病都有什么症状hcv8jop3ns0r.cn
为什么舌头老是有灼烧感hcv8jop4ns7r.cn 发低烧吃什么药hcv9jop4ns6r.cn 14数字代表什么意思hcv8jop0ns2r.cn 5.29是什么星座hcv9jop0ns7r.cn 考科二紧张心慌有什么方法缓解hcv9jop1ns9r.cn
女生腰疼是什么原因hcv9jop2ns2r.cn 三个小是什么字hcv7jop4ns6r.cn 苍蝇吃什么食物hcv8jop1ns5r.cn 衣柜放什么代替樟脑丸hcv8jop8ns3r.cn 舌尖痛什么原因hcv9jop5ns3r.cn
午时右眼跳是什么预兆travellingsim.com 小孩阑尾炎是由什么原因引起的hcv7jop7ns1r.cn 负离子什么意思tiangongnft.com 梦见出国了是什么意思cl108k.com 薷是什么意思hcv8jop9ns6r.cn
百度