毛重是什么| 梦见下小雨是什么征兆| 何弃疗是什么意思| 一什么一什么| 撅眼是什么原因造成的| 银针茶属于什么茶| 乳房痛是什么原因| 小孩子睡觉磨牙是什么原因| 梦见吃樱桃是什么意思| 人生座右铭是什么意思| 头发斑秃是什么原因引起的| 新疆以前叫什么| 一起共勉是什么意思| 一什么天安门| 事业是什么意思| 什么面料不容易皱| 书字五行属什么| 檀郎是什么意思| 小孩个子矮小吃什么促进生长发育| 红豆和赤小豆有什么区别| 血糖高是什么引起的| 为什么坐月子不能吹风| 开火上下结构念什么| 游乐场都有什么项目| 老年人吃饭老是噎着是什么原因| 迷恋一个人说明什么| 缺蛋白质吃什么补得快| 踢馆什么意思| 五个手指头分别叫什么| 高密度脂蛋白胆固醇高是什么意思| 气血虚吃什么药| 摸摸头是什么意思| 老蒯是什么意思| 顽固不化是什么意思| 白葡萄酒配什么食物| 吝啬什么意思| 什么叫提供情绪价值| 猪八戒有什么优点| 分泌物呈褐色是什么原因| 声优是什么意思| 苏州古代叫什么| 类风湿不能吃什么| 胸闷气短吃什么特效药| 四月二号是什么星座| 蟊贼是什么意思| 盆腔炎有什么明显症状| 韩红和张一山什么关系| 肌肉溶解是什么意思| 楚怀王和芈月什么关系| 南冠指的是什么| 缺少维生素有什么症状| 服兵役是什么意思| 颧骨高适合什么发型| 节节草煮水喝治什么病| 产成品是什么意思| 蚊子咬了涂什么| 做梦梦见被蛇咬是什么意思| 什么样的小手| 什么蛋营养价值最高| 知恩图报是什么意思| 得了破伤风是什么症状| 女右眉毛跳是什么预兆| 肝炎有什么症状| 大便漂浮水面说明什么| 刘庄为什么要灭了阴家| 女人细菌感染什么原因引起的| mizuno是什么品牌| 什么地舞动| 为什么喝完酒头疼| 跑龙套是什么意思| 手指缝里长水泡还痒是什么原因| 91视频是什么| 泄是什么意思| 皮下出血小红点是什么原因造成的| 为什么一喝牛奶就拉肚子| 王母娘娘姓什么| 鸦雀无声是什么意思| 复印病历需要什么证件| 肝胃不和吃什么中成药| 生育保险是什么| 反胃酸是什么原因| 菊花可以和什么一起泡水喝| 肠道ct能检查什么| 什么是四环素牙| 吃了火龙果小便红色是什么原因| 富不过三代是什么意思| 什么奶粉比较好| 什么车不能坐| 什么经验| 塘角鱼吃什么食物| 湿气重是什么原因引起的| 什么坚果适合减肥吃| 小儿疝气挂什么科| 什么叫细胞| 时光静好是什么意思| 分辨率dpi是什么意思| 子宫内膜厚是什么意思| 子宫肌瘤是什么病| coach什么意思| 烫伤抹什么药| 金国人是现在的什么人| 维生素E什么牌子的效果最好| 药流前需要做什么检查| 面包虫是什么| 包皮发炎红肿用什么药| mep是什么意思| pin是什么意思啊| 注意力不集中是什么原因| 低回声结节是什么意思| 唐朝灭亡后是什么朝代| 给产妇送什么礼物好| 虎是什么命| 多字五行属什么| 什么笑| 咽喉疼吃什么药| 向日葵的花语是什么| serum是什么意思| 豚鼠吃什么| 故宫什么时候闭馆| 胃酸是什么原因| 胃不舒服吃什么水果| 美容美体包括什么项目| 黑魔鬼烟为什么是禁烟| 心率低是什么原因| 为什么要小心吉普赛人| 老年人爱出汗是什么原因| 空调漏水是什么原因| 色盲色弱是什么意思| 玉屏风颗粒治什么病| 感冒喝什么水好得快| 各自安好是什么意思| 手上长疣是什么原因造成的| 男性前列腺炎吃什么药| 梦到借钱给别人什么意思| 嗓子疼是什么原因| 每天拉肚子是什么原因引起的| 么么叽是什么意思| 什么是碱性磷酸酶高怎么回事| 1.25是什么星座| 耳结是什么原因造成的| 鉴定是什么意思| 生源地是指什么| 榴莲吃多了有什么坏处| 30年婚姻是什么婚| 一票制什么意思| 小狗呕吐是什么原因| 胆囊结石需要注意什么| 头痛头晕挂什么科| 为什么一喝水就出汗| 羽毛球拍什么牌子好| 拉肚子拉出血是什么原因| 吃了小龙虾不能吃什么| 董事总经理是什么职位| 为什么尽量不打免疫球蛋白| 尿检4个加号什么意思| 肠道紊乱吃什么药| 亚甲炎是什么原因引起的| 晞是什么意思| 孕妇牙痛有什么办法| 卡马西平片治什么病| 买什么意思| 什么虫子咬了会起水泡| 灵芝有什么好处| 夏季热是什么病| 自学成才是什么意思| 植鞣皮是什么皮| 星盘是什么| 瓜子脸剪什么发型好看| 左肾小结石是什么意思| 李世民是什么民族| 什么得什么| 同位分是什么意思| 咳嗽痰中带血是什么原因| 舒张压偏高是什么原因造成的| 九月十七是什么星座| 甲减对胎儿有什么影响| 朱砂是什么意思| 乌鸡白凤丸适合什么人吃| 肚子冰凉是什么原因| 国帑是什么意思| 头发长不长是什么原因怎么办| 听天的动物是什么生肖| 什么地说话| 势如破竹是什么意思| 鸡生肖配什么生肖最好| 木薯淀粉是什么做的| 网调是什么意思| 嘴苦是什么情况| 混社会的人一般干什么| 东南西北五行属什么| 过山风是什么蛇| 什么是细胞| 肺部纹理增粗是什么意思| 甲状腺肿大吃什么药| 3月31号什么星座| midea是什么牌子| 李幼斌是什么军衔| 2月24日是什么星座| 什么人生病从来不看医生| 委曲求全是什么生肖| 什么是备皮| 冲太岁是什么意思| 多汗症去医院挂什么科| 桑拿是什么| 运六月有什么说法| 描述是什么意思| 决明子和什么搭配最好| 看脱发应该挂什么科| 口关读什么| 国家穷为什么不多印钱| 鸡飞狗跳是什么意思| 胶囊壳是什么原料做的| 花胶是鱼的什么部位| 腿上有淤青是什么原因| 血小板减少是什么病| 感染乙肝病毒有什么症状| 痔疮挂什么科室| 脾五行属什么| 应无所住而生其心什么意思| 莫名其妙的名是什么意思| 1994年是什么命| 吹空调感冒咳嗽吃什么药| 幼犬可以吃什么| 老是打喷嚏是什么原因| 西咪替丁是治什么病| 亮油什么时候涂| 女人的逼是什么意思| 徐才厚什么级别| 头重脚轻是什么生肖| 66岁属什么| 拿什么不用手| 口腔溃疡是什么原因| 肛周脓肿吃什么药| 什么人容易得白塞氏病| 蜂窝织炎用什么抗生素| 收尿干什么用的| 马华读什么| 牛奶可以做什么美食| 吊膀子是什么意思| 立普妥是什么药| 为什么会甲状腺肿大| 什么物流寄大件便宜| 本字五行属什么| 青龙是什么意思| 预防感冒吃什么药| 本科专科有什么区别| 吃雪燕有什么好处| 长期湿热会引起什么病| 女人小腹痛什么原因| 尽收眼底是什么意思| 团宠是什么意思| 胆切除后吃什么好| 乳腺疼挂什么科| 支气管发炎是什么原因引起的| 八字不合是什么生肖| 难舍难分是什么意思| 婴儿足底采血查什么| 梦见女尸是什么预兆| 炒米泡水喝有什么功效| 赭是什么颜色| 行房时间短吃什么药| 心脏什么情况下需要支架| 腰肌劳损是什么意思| 女人内火旺喝什么降火| 百度

刘韵洁:除SDN、NFV外,AI也是未来网络重要部分


Directory: ../../../ffmpeg/
File: src/libavcodec/bsf/aac_adtstoasc.c
Date: 2025-08-04 00:43:16
Exec Total Coverage
Lines: 32 65 49.2%
Functions: 2 2 100.0%
Branches: 15 36 41.7%

Line Branch Exec Source
1 /*
2 * MPEG-2/4 AAC ADTS to MPEG-4 Audio Specific Configuration bitstream filter
3 * Copyright (c) 2009 Alex Converse <alex.converse@gmail.com>
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 "adts_header.h"
23 #include "adts_parser.h"
24 #include "bsf.h"
25 #include "bsf_internal.h"
26 #include "put_bits.h"
27 #include "get_bits.h"
28 #include "mpeg4audio.h"
29 #include "mpeg4audio_copy_pce.h"
30
31 typedef struct AACBSFContext {
32 int first_frame_done;
33 } AACBSFContext;
34
35 /**
36 * This filter creates an MPEG-4 AudioSpecificConfig from an MPEG-2/4
37 * ADTS header and removes the ADTS header.
38 */
39 242 static int aac_adtstoasc_filter(AVBSFContext *bsfc, AVPacket *pkt)
40 {
41 242 AACBSFContext *ctx = bsfc->priv_data;
42
43 PutBitContext pb;
44 AACADTSHeaderInfo hdr;
45 int ret;
46
47 242 ret = ff_bsf_get_packet_ref(bsfc, pkt);
48
2/2
✓ Branch 0 taken 122 times.
✓ Branch 1 taken 120 times.
242 if (ret < 0)
49 122 return ret;
50
51
1/6
✗ Branch 0 not taken.
✓ Branch 1 taken 120 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
120 if (bsfc->par_in->extradata && pkt->size >= 2 && (AV_RB16(pkt->data) >> 4) != 0xfff)
52 return 0;
53
54
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 120 times.
120 if (pkt->size < AV_AAC_ADTS_HEADER_SIZE)
55 goto packet_too_small;
56
57
1/2
✗ Branch 1 not taken.
✓ Branch 2 taken 120 times.
120 if (ff_adts_header_parse_buf(pkt->data, &hdr) < 0) {
58 av_log(bsfc, AV_LOG_ERROR, "Error parsing ADTS frame header!\n");
59 ret = AVERROR_INVALIDDATA;
60 goto fail;
61 }
62
63
1/4
✗ Branch 0 not taken.
✓ Branch 1 taken 120 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
120 if (!hdr.crc_absent && hdr.num_aac_frames > 1) {
64 avpriv_report_missing_feature(bsfc,
65 "Multiple RDBs per frame with CRC");
66 ret = AVERROR_PATCHWELCOME;
67 goto fail;
68 }
69
70
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 120 times.
120 pkt->size -= AV_AAC_ADTS_HEADER_SIZE + 2 * !hdr.crc_absent;
71
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 120 times.
120 if (pkt->size <= 0)
72 goto packet_too_small;
73
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 120 times.
120 pkt->data += AV_AAC_ADTS_HEADER_SIZE + 2 * !hdr.crc_absent;
74
75
2/2
✓ Branch 0 taken 2 times.
✓ Branch 1 taken 118 times.
120 if (!ctx->first_frame_done) {
76 2 int pce_size = 0;
77 uint8_t pce_data[MAX_PCE_SIZE];
78 uint8_t *extradata;
79
80
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
2 if (!hdr.chan_config) {
81 GetBitContext gb;
82 init_get_bits(&gb, pkt->data, pkt->size * 8);
83 if (get_bits(&gb, 3) != 5) {
84 avpriv_report_missing_feature(bsfc,
85 "PCE-based channel configuration "
86 "without PCE as first syntax "
87 "element");
88 ret = AVERROR_PATCHWELCOME;
89 goto fail;
90 }
91 init_put_bits(&pb, pce_data, MAX_PCE_SIZE);
92 pce_size = ff_copy_pce_data(&pb, &gb) / 8;
93 flush_put_bits(&pb);
94 pkt->size -= get_bits_count(&gb)/8;
95 pkt->data += get_bits_count(&gb)/8;
96 }
97
98 2 extradata = av_packet_new_side_data(pkt, AV_PKT_DATA_NEW_EXTRADATA,
99 2 2 + pce_size);
100
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
2 if (!extradata) {
101 ret = AVERROR(ENOMEM);
102 goto fail;
103 }
104
105 2 init_put_bits(&pb, extradata, 2 + pce_size);
106 2 put_bits(&pb, 5, hdr.object_type);
107 2 put_bits(&pb, 4, hdr.sampling_index);
108 2 put_bits(&pb, 4, hdr.chan_config);
109 2 put_bits(&pb, 1, 0); //frame length - 1024 samples
110 2 put_bits(&pb, 1, 0); //does not depend on core coder
111 2 put_bits(&pb, 1, 0); //is not extension
112 2 flush_put_bits(&pb);
113
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
2 if (pce_size) {
114 memcpy(extradata + 2, pce_data, pce_size);
115 }
116
117 2 ctx->first_frame_done = 1;
118 }
119
120 120 return 0;
121
122 packet_too_small:
123 av_log(bsfc, AV_LOG_ERROR, "Input packet too small\n");
124 ret = AVERROR_INVALIDDATA;
125 fail:
126 av_packet_unref(pkt);
127 return ret;
128 }
129
130 2 static int aac_adtstoasc_init(AVBSFContext *ctx)
131 {
132 /* Validate the extradata if the stream is already MPEG-4 AudioSpecificConfig */
133
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
2 if (ctx->par_in->extradata) {
134 MPEG4AudioConfig mp4ac;
135 int ret = avpriv_mpeg4audio_get_config2(&mp4ac, ctx->par_in->extradata,
136 ctx->par_in->extradata_size, 1, ctx);
137 if (ret < 0) {
138 av_log(ctx, AV_LOG_ERROR, "Error parsing AudioSpecificConfig extradata!\n");
139 return ret;
140 }
141 }
142
143 2 return 0;
144 }
145
146 static const enum AVCodecID codec_ids[] = {
147 AV_CODEC_ID_AAC, AV_CODEC_ID_NONE,
148 };
149
150 const FFBitStreamFilter ff_aac_adtstoasc_bsf = {
151 .p.name = "aac_adtstoasc",
152 .p.codec_ids = codec_ids,
153 .priv_data_size = sizeof(AACBSFContext),
154 .init = aac_adtstoasc_init,
155 .filter = aac_adtstoasc_filter,
156 };
157

皮肤长癣是什么原因 什么大什么小 hpv阴性什么意思 遁入空门是什么意思 受是什么意思
前列腺炎不治疗有什么后果 幽门螺旋杆菌挂什么科 排卵试纸什么时候测最准确 任督二脉是什么意思 异想天开什么意思
马不停蹄是什么生肖 巴戟天为什么要抽芯 抽血血液偏黑什么原因 白细胞偏高是什么原因引起的 活塞运动是什么
指鹿为马是什么意思 胃息肉吃什么药治疗 副支队长是什么级别 227是什么意思 华五行属什么
脊椎侧弯挂什么科hcv8jop4ns9r.cn 游泳比赛中wj是什么意思hcv9jop6ns9r.cn 什么叫谈恋爱hcv8jop9ns6r.cn 高血压一般在什么年龄wzqsfys.com 生产是什么意思hcv9jop2ns0r.cn
为什么失眠hcv9jop0ns2r.cn 生蚝不能和什么一起吃hcv9jop3ns0r.cn 7月25号是什么星座hcv7jop9ns7r.cn 八月十三号是什么星座bjhyzcsm.com 面基什么意思bjhyzcsm.com
五月初五是什么星座hcv8jop8ns3r.cn 清真是什么意思啊hcv7jop9ns7r.cn 青岛是什么省hcv7jop9ns1r.cn 收放自如是什么意思hcv8jop8ns5r.cn 丝状疣是什么原因长出来的hcv7jop9ns6r.cn
吃石斛有什么好处96micro.com 血小板低什么症状hcv8jop2ns6r.cn 注册安全工程师什么时候报名hcv7jop9ns5r.cn hmg是什么药fenrenren.com fa什么意思hcv9jop6ns2r.cn
百度