辽国是现在的什么地方| 安德玛是什么牌子| 胆小如鼠是什么生肖| 什么的问题| 狗狗中毒了用什么办法可以解毒| 甲状腺1度肿大是什么意思| 属龙和什么属相相冲| 腱鞘炎是什么引起的| 月子可以吃什么菜| 背痛是什么原因| 元神是什么意思| fmp是什么意思| 嘴唇上火起泡用什么药| 93年的鸡是什么命| sama是什么药| 梦到蜈蚣是什么意思| 心脏大是什么病严重吗| 逆时针是什么方向| 马拉车是什么牌子的包| 端游什么意思| 什么烟好抽| 灌肠是什么| 女生吃避孕药有什么副作用| 毒龙是什么意思啊| 男人为什么喜欢女人| 吃完桃子不能吃什么| 胆囊炎是什么| 空腹吃西红柿有什么危害| hr过高是什么意思| 帆船像什么| 苦瓜对肝脏有什么好处| 什么是气滞| 梅花象征着什么| 割包皮什么意思| 肾结石可以吃什么| 10月6日是什么星座| 皑皑是什么意思| 食伤泄秀是什么意思| 赫五行属性是什么| 吃什么容易流产| 孩子咳嗽吃什么药| 红色的月亮是什么征兆| 吃什么食物能提高免疫力| vogue什么意思| 梦见大山是什么预兆| 什么原因导致尿酸高| 为什么头老是晕晕的| 甲沟炎是什么| 家什是什么意思| 大便里急后重什么意思| 什么样的脚好看| 睡眠不好总做梦是什么原因| 贡米是什么米| 梅花像什么| cr是什么意思| 国防部长是什么级别| 头眩晕看什么科| 有什么有什么的四字词语| 刷酸是什么意思| 皮肤变白是什么原因| mm是什么病| swan什么意思| 吃什么可以缓解痛经| 医院红色手环代表什么| 仁爱是什么意思| 山及念什么| 道家思想的核心是什么| 跳蚤咬了擦什么药最好| 公费医疗什么意思| 成都机场叫什么名字| 菲林是什么| 包装饮用水是什么水| 小腿骨头疼是什么原因| a型rhd阳性是什么意思| 8月15日是什么星座| 腰间盘突出挂什么科室| 黄体酮吃了有什么副作用| 血脂高低看什么指标| 12月9号是什么星座| 月经吃什么水果好| 戒烟为什么会长胖| 梦到伟人有什么兆头| 淋巴细胞低说明什么| 肚子里有积水是什么病| 血压低头晕是什么原因导致的| 矿泉水敷脸有什么作用| 一毛不拔指什么生肖| 血脂是什么| 丁毒豆泡酒能治什么病| 成双成对是什么数字| 鸦雀无声是什么意思| 胰岛素高是什么原因| 西洋参泡水喝有什么好处| 安陵容为什么叫安小鸟| 早孕有什么反应| 骷髅头是什么牌子| 身体出汗多是什么原因| 橙子和橘子有什么区别| 肌肉跳动是什么原因| 1994年五行属什么| 林俊杰的粉丝叫什么| 会阴是什么部位| 经常做噩梦是什么原因| 瑞五行属什么| 生姜放肚脐眼有什么功效| 桂林是什么地貌| 双规是什么意思| 大仙为什么知道你的事| 枸杞配什么壮阳| 灵什么意思| 射手座什么性格| 长期口臭挂什么科| 主任是什么意思| 喝温开水有什么好处| 柠檬酸钠是什么| 想吃肉是身体缺什么| 半夏生是什么意思| 6月初三是什么日子| 荣誉的誉是什么意思| 私处长痘痘是什么原因| 吃什么拉什么完全不能消化怎么办| 开尔文是什么单位| 吃什么补硒最快最好| 胃窦炎吃什么药| 孕妇感冒了可以吃什么药| 老上火是什么原因造成的| 盗墓笔记讲了什么| 子宫后位是什么意思| 衤字旁与什么有关| 甘草有什么功效| o型血吃什么瘦的最快| 冷冻是什么意思| 做梦梦到鱼是什么意思| 疝气吃什么药效果好| 血管炎是什么症状| 只要睡觉就做梦是什么原因| 5月4号是什么星座| 小211是什么意思| 肚子一直响是什么原因| 经常流鼻涕是什么原因| 口腔溃疡吃什么好| 胎位loa是什么位置| 高血压三级是什么意思| 芦荟胶有什么作用| 心肌缺血是什么原因造成的| 尿频尿急尿不尽吃什么药效果最好| 腰椎钙化是什么意思| 什么药补气血效果最好| 金利来皮带属于什么档次| 脍炙人口什么意思| 胆管炎吃什么药| 死有余辜是什么意思| 步步为营是什么意思| 抱恙是什么意思| 瑜五行属什么| 不应期是什么| 水飞蓟是什么| 青龙是什么| 心率高有什么危害| 兆字五行属什么| 肝外胆管扩张什么意思| 蜂蜜水什么时间喝最好| 嘴唇起泡是什么原因| 早搏心律不齐吃什么药| 喝酒头晕是什么原因| 梦见补的牙齿掉了是什么意思| 乳头痛什么原因| 北京晚上有什么好玩的景点| 丙火是什么意思| 经常肚子疼拉肚子是什么原因| 特别想睡觉是什么原因| 华字五行属什么| 海蜇丝是什么做的| 青岛属于什么气候| 阴道口发白是什么原因| 涩是什么意思| 确幸是什么意思| 笑字五行属什么| 肝外胆管扩张什么意思| 桑葚泡水喝有什么好处| 画地为牢什么意思| 肠道功能紊乱吃什么药| 孕妇缺铁吃什么食物好| 阴茎勃起不硬吃什么| 房早有什么危害| dl是什么单位| 做肠镜有什么危害| 偏头疼挂什么科室| 下巴长痘痘什么原因| 仓鼠是什么动物| 精髓是什么意思| 别出心裁是什么生肖| 虚岁29岁属什么生肖| 爱哭的人是什么性格| 腺样体面容是什么意思| 疤痕贴什么时候用最佳| 早上10点是什么时辰| 马虎眼什么意思| 外痔疮是什么样子图片| 蜗牛吃什么食物| 天外有天人外有人是什么意思| 脑供血不足头晕吃什么药| 菊花什么颜色| 香槟是什么| human是什么意思| 定增是什么意思| 喉咙挂什么科室| 打粉是什么意思| lv什么牌子| 晦气是什么意思| 金针菇为什么不能消化| 客厅挂画有什么讲究| 病人出院送什么花| cp是什么意思| lane是什么意思| pd-l1是什么| 得理不饶人什么意思| 政治信仰是什么| os是什么意思| 法令纹深代表什么面相| jnby是什么牌子| 侧颜杀是什么意思| Cr是什么意思医学| 计算机科学与技术是学什么的| 龙舌兰是什么酒| 梦见好多虫子是什么意思| 陕西为什么叫三秦大地| 太阳鱼吃什么食物| miss什么意思| 儿童反复发烧什么原因| hpv59阳性是什么意思| 什么情况下会流前列腺液| 叶公好龙的意思是什么| 阿胶是什么| 病是什么结构| 呵呵哒是什么意思| 皮肤癣是什么原因造成的| 代茶饮是什么意思| 牛欢喜是什么| 儿童中暑吃什么药| 今天生肖冲什么| 二月底是什么星座| 磨豆浆是什么意思| 大便不成形是什么原因造成的| 什么是假性抑郁症| 临床治愈什么意思| 烫伤抹什么管用| 诚五行属什么| uc是什么| 疳积是什么意思| 大便有血是什么原因男性| 血小板分布宽度是什么意思| 榔头是什么意思| 女人吃什么排卵最快| 打蛋器什么牌子好| 假酒喝了有什么症状| helen是什么意思| 土土心念什么| 18罗汉都叫什么名字| 可字五行属什么| 皮下紫癜是什么引起的| 梦见好多肉是什么意思| 什么是补铁的食物| 2.25是什么星座| 百度

教育部:严厉打击自主招生中论文买卖和造假等


Directory: ../../../ffmpeg/
File: src/libavcodec/bsf/truehd_core.c
Date: 2025-08-04 00:43:16
Exec Total Coverage
Lines: 71 86 82.6%
Functions: 1 2 50.0%
Branches: 31 40 77.5%

Line Branch Exec Source
1 /*
2 * Copyright (c) 2018 Paul B Mahol
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 #include "bsf.h"
22 #include "bsf_internal.h"
23 #include "get_bits.h"
24 #include "mlp_parse.h"
25 #include "mlp.h"
26
27 typedef struct AccessUnit {
28 uint8_t bits[4];
29 uint16_t offset;
30 uint16_t optional;
31 } AccessUnit;
32
33 typedef struct TrueHDCoreContext {
34 MLPHeaderInfo hdr;
35 } TrueHDCoreContext;
36
37 257 static int truehd_core_filter(AVBSFContext *ctx, AVPacket *pkt)
38 {
39 257 TrueHDCoreContext *s = ctx->priv_data;
40 GetBitContext gbc;
41 AccessUnit units[MAX_SUBSTREAMS];
42 257 int ret, i, last_offset = 0;
43 int in_size, out_size;
44 257 int have_header = 0;
45 257 int substream_bytes = 0;
46 int end;
47
48 257 ret = ff_bsf_get_packet_ref(ctx, pkt);
49
2/2
✓ Branch 0 taken 129 times.
✓ Branch 1 taken 128 times.
257 if (ret < 0)
50 129 return ret;
51
52
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 128 times.
128 if (pkt->size < 4) {
53 ret = AVERROR_INVALIDDATA;
54 goto fail;
55 }
56
57 128 in_size = (AV_RB16(pkt->data) & 0xFFF) * 2;
58
2/4
✓ Branch 0 taken 128 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 128 times.
128 if (in_size < 4 || in_size > pkt->size) {
59 ret = AVERROR_INVALIDDATA;
60 goto fail;
61 }
62
63 128 ret = init_get_bits8(&gbc, pkt->data + 4, pkt->size - 4);
64
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 128 times.
128 if (ret < 0)
65 goto fail;
66
67
2/2
✓ Branch 1 taken 1 times.
✓ Branch 2 taken 127 times.
128 if (show_bits_long(&gbc, 32) == 0xf8726fba) {
68
1/2
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
1 if ((ret = ff_mlp_read_major_sync(ctx, &s->hdr, &gbc)) < 0)
69 goto fail;
70 1 have_header = 1;
71 }
72
73
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 128 times.
128 if (s->hdr.num_substreams > MAX_SUBSTREAMS) {
74 ret = AVERROR_INVALIDDATA;
75 goto fail;
76 }
77
78
2/2
✓ Branch 0 taken 512 times.
✓ Branch 1 taken 128 times.
640 for (i = 0; i < s->hdr.num_substreams; i++) {
79
2/2
✓ Branch 0 taken 2048 times.
✓ Branch 1 taken 512 times.
2560 for (int j = 0; j < 4; j++)
80 2048 units[i].bits[j] = get_bits1(&gbc);
81
82 512 units[i].offset = get_bits(&gbc, 12);
83
2/2
✓ Branch 0 taken 384 times.
✓ Branch 1 taken 128 times.
512 if (i < 3) {
84 384 last_offset = units[i].offset * 2;
85 384 substream_bytes += 2;
86 }
87
88
2/2
✓ Branch 0 taken 4 times.
✓ Branch 1 taken 508 times.
512 if (units[i].bits[0]) {
89 4 units[i].optional = get_bits(&gbc, 16);
90
2/2
✓ Branch 0 taken 3 times.
✓ Branch 1 taken 1 times.
4 if (i < 3)
91 3 substream_bytes += 2;
92 }
93 }
94 128 end = get_bits_count(&gbc) >> 3;
95
96 128 out_size = end + 4 + last_offset;
97
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 128 times.
128 if (out_size < in_size) {
98 128 int bpos = 0, reduce = end - have_header * 28 - substream_bytes;
99 128 uint16_t parity_nibble, dts = AV_RB16(pkt->data + 2);
100 uint16_t auheader;
101 uint8_t header[28];
102
103 av_assert1(reduce >= 0 && reduce % 2 == 0);
104
105
2/2
✓ Branch 0 taken 1 times.
✓ Branch 1 taken 127 times.
128 if (have_header) {
106 1 memcpy(header, pkt->data + 4, 28);
107 1 header[16] = (header[16] & 0x0c) | (FFMIN(s->hdr.num_substreams, 3) << 4);
108 1 header[17] &= 0x7f;
109 1 header[25] &= 0xfe;
110 1 AV_WL16(header + 26, ff_mlp_checksum16(header, 26));
111 }
112
113 128 pkt->data += reduce;
114 128 out_size -= reduce;
115 128 pkt->size = out_size;
116
117 128 ret = av_packet_make_writable(pkt);
118
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 128 times.
128 if (ret < 0)
119 goto fail;
120
121 128 AV_WB16(pkt->data + 2, dts);
122 128 parity_nibble = dts;
123 128 parity_nibble ^= out_size / 2;
124
125
2/2
✓ Branch 0 taken 384 times.
✓ Branch 1 taken 128 times.
512 for (i = 0; i < FFMIN(s->hdr.num_substreams, 3); i++) {
126 384 uint16_t substr_hdr = 0;
127
128 384 substr_hdr |= (units[i].bits[0] << 15);
129 384 substr_hdr |= (units[i].bits[1] << 14);
130 384 substr_hdr |= (units[i].bits[2] << 13);
131 384 substr_hdr |= (units[i].bits[3] << 12);
132 384 substr_hdr |= units[i].offset;
133
134 384 AV_WB16(pkt->data + have_header * 28 + 4 + bpos, substr_hdr);
135
136 384 parity_nibble ^= substr_hdr;
137 384 bpos += 2;
138
139
2/2
✓ Branch 0 taken 3 times.
✓ Branch 1 taken 381 times.
384 if (units[i].bits[0]) {
140 3 AV_WB16(pkt->data + have_header * 28 + 4 + bpos, units[i].optional);
141
142 3 parity_nibble ^= units[i].optional;
143 3 bpos += 2;
144 }
145 }
146
147 128 parity_nibble ^= parity_nibble >> 8;
148 128 parity_nibble ^= parity_nibble >> 4;
149 128 parity_nibble &= 0xF;
150
151 128 auheader = (parity_nibble ^ 0xF) << 12;
152 128 auheader |= (out_size / 2) & 0x0fff;
153 128 AV_WB16(pkt->data, auheader);
154
155
2/2
✓ Branch 0 taken 1 times.
✓ Branch 1 taken 127 times.
128 if (have_header)
156 1 memcpy(pkt->data + 4, header, 28);
157 }
158
159 fail:
160
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 128 times.
128 if (ret < 0)
161 av_packet_unref(pkt);
162
163 128 return ret;
164 }
165
166 static void truehd_core_flush(AVBSFContext *ctx)
167 {
168 TrueHDCoreContext *s = ctx->priv_data;
169 memset(&s->hdr, 0, sizeof(s->hdr));
170 }
171
172 static const enum AVCodecID codec_ids[] = {
173 AV_CODEC_ID_TRUEHD, AV_CODEC_ID_NONE,
174 };
175
176 const FFBitStreamFilter ff_truehd_core_bsf = {
177 .p.name = "truehd_core",
178 .p.codec_ids = codec_ids,
179 .priv_data_size = sizeof(TrueHDCoreContext),
180 .filter = truehd_core_filter,
181 .flush = truehd_core_flush,
182 };
183

心肺气虚吃什么中成药 省军区司令员是什么级别 大云是什么 性功能障碍挂什么科 洗面奶和洁面乳有什么区别
血糖高初期有什么症状 属猴的什么命 番茄和西红柿有什么区别 断生是什么意思啊 为什么耳鸣
性功能下降是什么原因 1972年属鼠的是什么命 依托是什么意思 天道好轮回什么意思 hiit是什么意思
蜂蜜什么时候喝最好 痤疮是由什么引起的 纯钛对人体有什么好处 如意丹的作用是什么 舌苔黑是什么病
rose是什么意思gangsutong.com 三伏天吃什么好hcv9jop5ns0r.cn 唯有读书高的前一句是什么hcv9jop3ns8r.cn 为什么文化大革命hcv8jop3ns2r.cn 姜字五行属什么hcv8jop5ns6r.cn
木危读什么youbangsi.com 膝盖缝里面疼什么原因hcv8jop7ns2r.cn 脚腕肿是什么原因hcv9jop4ns7r.cn 掉睫毛是什么原因hcv8jop1ns3r.cn 什么蚌相争hcv9jop3ns0r.cn
家财万贯是什么生肖hcv9jop6ns7r.cn 呼吸音粗是什么原因bjcbxg.com 队友是什么意思hcv7jop5ns2r.cn 导管子是什么意思hcv8jop8ns7r.cn 天地始交是什么意思hcv9jop7ns0r.cn
鼻子痒是什么原因hcv9jop6ns9r.cn 低血压平时要注意什么hcv8jop0ns1r.cn 鱼胶是什么东西hcv9jop4ns2r.cn 三点水一个前读什么hcv8jop8ns0r.cn 过生日送男朋友什么礼物好hcv9jop7ns2r.cn
百度