怀孕后为什么会生化| 五位一体是什么| 二月二十是什么星座| 99足银是什么意思| 尿路感染吃什么药比较好的快| 6月15日什么星座| 一感冒就咳嗽是什么原因| 头发稀少是什么原因导致的| 吃什么变碱性体质最快| 一月十七是什么星座| m1是什么单位| 尿路感染吃什么药最好| 复合维生素b什么时候吃最好| 甲状腺炎是什么引起的| cr是什么意思| 痔疮的表现症状是什么| 减肥适合吃什么主食| 头部容易出汗是什么原因| 消炎药吃多了有什么副作用| 二氧化碳低是什么原因| 打扮的意思是什么| isis是什么组织| 羊膜束带是什么意思| 肌酐什么意思| 口杯是什么意思| 肝内脂质沉积是什么意思| 经常拉肚子吃什么药| 喝醉酒是什么感觉| 风湿病吃什么药| 11.23是什么星座| 硫磺是什么东西| 梦到插秧是什么意思| 为什么不能在床上打坐| 2月6日什么星座| 慢性肠炎用什么药| 乙肝抗体阳性是什么意思| 气血不足是什么意思| 水囊是什么| 前胸后背出汗是什么原因造成的| 节瓜煲汤放什么材料| 天津有什么特产| 闪卡是什么意思| 均金念什么| 绿色痰液是什么感染| 银耳和什么一起煮最好| 退位让贤是什么意思| 水瓜有什么作用和功效| 生蚝和什么不能一起吃| 黄瓜为什么苦| 什么是比特币| 膝盖疼吃什么药| 手指甲月牙代表什么| 西梅不能和什么一起吃| 明年什么生肖| 钓鲤鱼用什么饵料| 什么是家庭教育| 血沉是查什么| 呸是什么意思| 哦耶是什么意思| 酱油什么时候发明的| 禀赋是什么意思| 什么样的女人招人嫉妒| 12月20是什么星座| 什么样的树| 偶像包袱是什么意思| 嘴里苦是什么原因| 湿疹可以吃什么| 三百多分能上什么大学| 潜血试验阳性什么意思| 急性心力衰竭的急救措施是什么| 总是睡不着觉是什么原因| 为什么要拔掉智齿| 貂蝉原名叫什么| 海苔是什么| sd什么意思| 区长什么级别| 须发早白吃什么中成药| 眼睛里有红血丝是什么原因| 鼻子流血是什么原因| 怀疑肝不好挂什么科室| 睡觉流口水是什么原因| 年少轻狂是什么意思| 什么人不宜喝咖啡| 阑尾炎的症状是什么| 一个口一个女念什么| 捡什么废品最值钱| 心理素质是什么意思| 晚上两点是什么时辰| 教师节送什么礼物好| 汤姆猫是什么品种| 胳膊疼痛是什么原因| 农历7月21日是什么星座| 指甲发黄是什么原因| 脊椎痛什么原因| 什么叫做亚健康| 2001年什么年| 何妨是什么意思| 独活主治什么病| 去阴虱用什么药最好| 6月28日是什么星座| 马斯卡彭是什么| 日久生情是什么意思| 不长头发是什么原因| 诺如病毒拉的大便是什么样的| 马赛克是什么意思啊| 比卡丘什么意思| 顾影自怜是什么意思| 吹空调感冒了吃什么药| 热的什么| 结扎后需要注意什么| 长期喝蜂蜜有什么好处| 江西庐山产什么茶| 天乙贵人什么意思| 晕车吃什么| 红参和高丽参有什么区别| 二代身份证是什么意思| 东北有什么好玩的景点| 吃什么能快速减肥| 姓彭的女孩子取什么名字好| 洋葱不能和什么一起吃| 梦到吃蛇肉预示着什么| 十余载是什么意思| 花生碎能做什么食物吃| pg是什么意思| 处女座前面是什么星座| 豆奶不能和什么一起吃| 妍什么意思| 石斛有什么作用和功效| 有机酸是什么| 电信查流量打什么电话| 出汗吃什么药| pnh是什么病的简称| 肚子硬是什么原因| 女性尿浑浊是什么原因| 一个不一个好念什么| 6.29是什么星座| 新白娘子传奇许仙为什么用女的演| 白细胞减少有什么症状| 沉沦什么意思| 针眼是什么样子的图片| 处女什么意思| 封建思想是什么意思| 梅核气有什么症状| hbv是什么病毒| 手脚发麻吃什么药| 寅虎是什么意思| 擒贼先擒王是什么生肖| 警察两杠三星是什么级别| 为什么冬吃萝卜夏吃姜| lr是什么意思| 脾胃有火是什么症状| 四季春茶属于什么茶| 什么叫suv车| rhc血型阳性是什么意思| 肚子疼拉肚子挂什么科| 什么是白领| 再生聚酯纤维是什么面料| 什么是介入手术| 骨髓水肿是什么意思| 五香粉是什么| 鹤立鸡群代表什么生肖| 吃蜂蜜不能吃什么食物| 绿巨人是什么意思| 9月23日是什么星座| 肠胃不舒服吃什么药| 养肝护肝吃什么药| 右胳膊上长痣代表什么| 吃什么预防脑梗| 彷徨是什么意思| 做完肠镜需要注意什么| 鸡的贵人是什么生肖| 什么奶粉跟母乳一个味| 酒蒙子什么意思| 土克水是什么意思| 布洛芬0.3和0.4g有什么区别| 雌二醇高有什么症状| 吃什么能消除囊肿| 鹞子是什么鸟| 茁壮的什么| 味甘是什么意思| 什么洗面奶祛痘| 预防老年痴呆吃什么药| 忌是什么意思| 饿了么什么时候成立的| 加油什么意思| 长焦镜头是什么意思| 腿上有白色条纹是什么| 金银花有什么作用| 犒劳自己是什么意思| 什么是纳氏囊肿| 什么心什么力| 下眼睑红肿是什么原因| 检查盆腔炎做什么检查| 手脚冰凉是什么原因| 一直干咳是什么原因| 舌苔又白又厚是什么原因| 梦见吃雪糕是什么意思| ph值低是什么原因| 谦虚什么意思| 常吃南瓜子有什么好处和坏处| 五花肉和什么菜炒好吃| 毛遂自荐是什么意思| 鲱鱼罐头为什么这么臭| 对宫星座是什么意思| 平诊是什么意思| 白细胞多是什么意思| 胸闷什么感觉| 羊水破了有什么感觉| 腰椎间盘突出什么症状| 慢性胃炎是什么原因引起的| 牙龈萎缩是什么样子| 尿血是什么原因引起的| 唯女子与小人难养也是什么意思| 阴茎冰凉是什么原因| 胃烧吃什么药| 黄瓜什么时候种| 子宫脱垂是什么症状| 少将相当于地方什么级别| 小肚子疼是什么情况| 冬瓜什么季节吃最好| crs是什么意思| 什么水适合婴儿冲奶粉| 胰腺炎可以吃什么| 铁观音茶属于什么茶| 头晕是什么原因引起| 梦见捡鸡蛋是什么预兆| 肝脂肪浸润是什么意思| 促排卵吃什么药| 月经量减少是什么原因| 梦见生孩子是什么征兆| 芹菜和什么菜搭配最好| 肺气虚吃什么食物| 多吃蒜有什么好处和坏处| 手上长红点是什么原因| 流口水是什么原因引起的| 慢脚是什么| 耐受性是什么意思| 早泄是什么原因引起的| 窗户代表什么生肖| 为什么经常拉肚子| 12.8是什么星座| 身痒是什么原因引起的| 左眼上眼皮跳是什么预兆| 头痒是什么原因| 甲状腺囊肿不能吃什么| 风吹动窗吹动夜声响是什么歌| 脑梗病人吃什么营养恢复最好| 剖腹产后可以吃什么水果| 梦见自行车是什么意思| 梦到鳄鱼是什么意思| 文殊菩萨保佑什么| geya是什么牌子的手表| 为什么突然长癣了| 流星雨是什么意思| 声带白斑是什么病| 良字少一点是什么字| 古灵精怪是什么意思| 中秋节适合吃什么菜| 什么叫天干| 天蝎座喜欢什么样的女生| 子字五行属什么| 咸池是什么意思| 补是什么偏旁| 四叶草寓意是什么| 百度

禁毒知识:毒品的分类


Directory: ../../../ffmpeg/
File: src/libavcodec/ftr.c
Date: 2025-08-04 00:43:16
Exec Total Coverage
Lines: 0 103 0.0%
Functions: 0 4 0.0%
Branches: 0 64 0.0%

Line Branch Exec Source
1 /*
2 * This file is part of FFmpeg.
3 *
4 * FFmpeg is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2.1 of the License, or (at your option) any later version.
8 *
9 * FFmpeg is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Lesser General Public License for more details.
13 *
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with FFmpeg; if not, write to the Free Software
16 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
17 */
18
19 #include "adts_header.h"
20 #include "avcodec.h"
21 #include "codec_internal.h"
22 #include "get_bits.h"
23 #include "decode.h"
24
25 typedef struct FTRContext {
26 AVCodecContext *aac_avctx[64]; // wrapper context for AAC
27 int nb_context;
28 AVPacket *packet;
29 AVFrame *frame;
30 } FTRContext;
31
32 static av_cold int ftr_init(AVCodecContext *avctx)
33 {
34 FTRContext *s = avctx->priv_data;
35 const AVCodec *codec;
36 int ret;
37
38 if (avctx->ch_layout.nb_channels > 64 ||
39 avctx->ch_layout.nb_channels <= 0)
40 return AVERROR(EINVAL);
41
42 s->packet = av_packet_alloc();
43 if (!s->packet)
44 return AVERROR(ENOMEM);
45
46 s->frame = av_frame_alloc();
47 if (!s->frame)
48 return AVERROR(ENOMEM);
49
50 s->nb_context = avctx->ch_layout.nb_channels;
51
52 codec = avcodec_find_decoder(AV_CODEC_ID_AAC);
53 if (!codec)
54 return AVERROR_DECODER_NOT_FOUND;
55
56 for (int i = 0; i < s->nb_context; i++) {
57 s->aac_avctx[i] = avcodec_alloc_context3(codec);
58 if (!s->aac_avctx[i])
59 return AVERROR(ENOMEM);
60 ret = avcodec_open2(s->aac_avctx[i], codec, NULL);
61 if (ret < 0)
62 return ret;
63 }
64
65 avctx->sample_fmt = s->aac_avctx[0]->sample_fmt;
66 if (!av_sample_fmt_is_planar(avctx->sample_fmt))
67 return AVERROR(EINVAL);
68
69 return 0;
70 }
71
72 static int ftr_decode_frame(AVCodecContext *avctx, AVFrame *frame,
73 int *got_frame, AVPacket *avpkt)
74 {
75 FTRContext *s = avctx->priv_data;
76 GetBitContext gb;
77 int ret, ch_offset = 0;
78
79 ret = init_get_bits8(&gb, avpkt->data, avpkt->size);
80 if (ret < 0)
81 return ret;
82
83 frame->nb_samples = 0;
84
85 for (int i = 0; i < s->nb_context; i++) {
86 AVCodecContext *codec_avctx = s->aac_avctx[i];
87 GetBitContext gb2 = gb;
88 AACADTSHeaderInfo hdr_info;
89 int size;
90
91 if (get_bits_left(&gb) < 64)
92 return AVERROR_INVALIDDATA;
93
94 memset(&hdr_info, 0, sizeof(hdr_info));
95
96 size = ff_adts_header_parse(&gb2, &hdr_info);
97 if (size <= 0 || size * 8 > get_bits_left(&gb))
98 return AVERROR_INVALIDDATA;
99
100 if (size > s->packet->size) {
101 ret = av_grow_packet(s->packet, size - s->packet->size);
102 if (ret < 0)
103 return ret;
104 }
105
106 ret = av_packet_make_writable(s->packet);
107 if (ret < 0)
108 return ret;
109
110 memcpy(s->packet->data, avpkt->data + (get_bits_count(&gb) >> 3), size);
111 s->packet->size = size;
112
113 if (size > 12) {
114 uint8_t *buf = s->packet->data;
115
116 if (buf[3] & 0x20) {
117 int tmp = buf[8];
118 buf[ 9] = ~buf[9];
119 buf[11] = ~buf[11];
120 buf[12] = ~buf[12];
121 buf[ 8] = ~buf[10];
122 buf[10] = ~tmp;
123 }
124 }
125
126 ret = avcodec_send_packet(codec_avctx, s->packet);
127 if (ret < 0) {
128 av_log(avctx, AV_LOG_ERROR, "Error submitting a packet for decoding\n");
129 return ret;
130 }
131
132 ret = avcodec_receive_frame(codec_avctx, s->frame);
133 if (ret < 0)
134 return ret;
135
136 if (!avctx->sample_rate) {
137 avctx->sample_rate = codec_avctx->sample_rate;
138 } else {
139 if (avctx->sample_rate != codec_avctx->sample_rate)
140 return AVERROR_INVALIDDATA;
141 }
142
143 if (!frame->nb_samples) {
144 frame->nb_samples = s->frame->nb_samples;
145 if ((ret = ff_get_buffer(avctx, frame, 0)) < 0)
146 return ret;
147 } else {
148 if (frame->nb_samples != s->frame->nb_samples)
149 return AVERROR_INVALIDDATA;
150 }
151
152 skip_bits_long(&gb, size * 8);
153
154 if (ch_offset + s->frame->ch_layout.nb_channels > avctx->ch_layout.nb_channels)
155 return AVERROR_INVALIDDATA;
156
157 if (avctx->sample_fmt != codec_avctx->sample_fmt)
158 return AVERROR_INVALIDDATA;
159
160 for (int ch = 0; ch < s->frame->ch_layout.nb_channels; ch++)
161 memcpy(frame->extended_data[ch_offset + ch],
162 s->frame->extended_data[ch],
163 av_get_bytes_per_sample(codec_avctx->sample_fmt) * s->frame->nb_samples);
164
165 ch_offset += s->frame->ch_layout.nb_channels;
166
167 if (ch_offset >= avctx->ch_layout.nb_channels)
168 break;
169 }
170
171 *got_frame = 1;
172
173 return get_bits_count(&gb) >> 3;
174 }
175
176 static void ftr_flush(AVCodecContext *avctx)
177 {
178 FTRContext *s = avctx->priv_data;
179
180 for (int i = 0; i < s->nb_context; i++)
181 avcodec_flush_buffers(s->aac_avctx[i]);
182 }
183
184 static av_cold int ftr_close(AVCodecContext *avctx)
185 {
186 FTRContext *s = avctx->priv_data;
187
188 for (int i = 0; i < s->nb_context; i++)
189 avcodec_free_context(&s->aac_avctx[i]);
190 av_packet_free(&s->packet);
191 av_frame_free(&s->frame);
192
193 return 0;
194 }
195
196 const FFCodec ff_ftr_decoder = {
197 .p.name = "ftr",
198 .p.long_name = NULL_IF_CONFIG_SMALL("FTR Voice"),
199 .p.type = AVMEDIA_TYPE_AUDIO,
200 .p.id = AV_CODEC_ID_FTR,
201 .init = ftr_init,
202 FF_CODEC_DECODE_CB(ftr_decode_frame),
203 .close = ftr_close,
204 .flush = ftr_flush,
205 .priv_data_size = sizeof(FTRContext),
206 .p.capabilities = AV_CODEC_CAP_DR1,
207 .caps_internal = FF_CODEC_CAP_INIT_CLEANUP,
208 };
209

ebay什么意思 狗不理是什么意思 胚胎停育有什么症状 mr是什么意思 查贫血挂什么科
m代表什么单位 儿童喝蜂蜜水有什么好处和坏处 嗜睡是什么原因 女性睾酮低意味着什么 飞蛾吃什么东西
荷尔蒙什么意思 社保是什么 44是什么意思 尿血是什么原因女性 上皮细胞什么意思
11月28日是什么星座 副业做什么比较好 女人盗汗吃什么好得快 女人梦见龙是什么征兆 舌头麻木是什么原因
验孕棒什么时候测比较准hcv8jop2ns4r.cn 直肠炎吃什么药hcv9jop6ns7r.cn 中东是什么意思hcv9jop5ns5r.cn 查肝功能挂什么科hcv9jop3ns3r.cn 术前四项检查是什么hcv8jop3ns4r.cn
阴茎硬度不够吃什么好hcv9jop2ns2r.cn 六月十四是什么星座wmyky.com 吃什么营养神经hcv9jop5ns9r.cn 九月24日是什么星座zhiyanzhang.com 半夏微凉是什么意思hcv9jop1ns7r.cn
开日是什么意思hcv9jop1ns7r.cn 鱼吃什么hcv8jop6ns2r.cn 鼻塞打喷嚏是什么原因hcv9jop5ns4r.cn 肚子左边是什么器官ff14chat.com 捞女是什么意思hcv9jop1ns1r.cn
广肚是什么hcv7jop9ns2r.cn 好好好是什么语气hcv9jop6ns4r.cn 喝完酒吃点什么对胃好hcv7jop7ns3r.cn 宜夫痣是什么意思hcv9jop5ns6r.cn 舌头裂痕是什么原因hcv9jop2ns5r.cn
百度