鸭子炖汤和什么一起炖最有营养| 手指缝里长水泡还痒是什么原因| 包皮垢是什么| 在屋顶唱着你的歌是什么歌| 二甲双胍为什么晚上吃| 骶椎腰化什么意思| 子宫内膜厚有什么影响| 什么口罩| 377是什么| 予是什么意思| 爬山带什么食物比较好| 任性什么意思| ibs是什么单位| 梦到下雪是什么征兆| 五月11号是什么星座| 子女宫是什么意思| 阿胶什么时候吃效果最好| 蛤蚧是什么动物| 恢复伤口的鱼叫什么鱼| 生源地是什么意思| 12月7号是什么星座| 朱砂是什么材质| 2017年什么年| 胆固醇高有什么危害| 解大便时有鲜血流出是什么原因| 积滞是什么意思| 今天有什么新闻| 额是什么意思| 万能受血者是什么血型| 夏天喝什么解渴| 数字是什么意思| 杂酱面用什么面| 中国文联是什么级别| 没有料酒可以用什么代替| 肩胛骨缝疼挂什么科| 直男什么意思| 马跟什么生肖最配| 脾阳不足吃什么中成药| 又拉肚子又呕吐是什么原因| 什么茶降尿酸| 低血糖和贫血有什么区别| 叶仙是什么植物| 多此一举是什么生肖| 脉冲什么意思| 地黄泡水喝有什么好处| 脸部过敏红痒抹什么药| 口多是什么字| 子宫出血什么原因| 吃什么补阴虚最好| 些几 是什么意思| 睾丸炎用什么药| 胎监不过关是什么原因| 上海有什么好玩的地方旅游景点| diff是什么意思| 威士忌是用什么酿造的| 六十六大寿有什么讲究| 什么样的女人水多| rv医学上是什么意思| 经期吃榴莲有什么好处| 咳嗽咳到吐是什么原因| 旖旎什么意思| 以色列是什么人种| 肾盂肾炎吃什么药| 对方忙线中什么意思| 冰柜什么牌子好| nf是什么意思| 为什么牙缝里的东西很臭| 白蚁长什么样| 桑叶泡水喝有什么功效和作用| 1972年出生属什么生肖| 脚心长痣代表什么| 芙蓉是什么| 欠佳是什么意思| 做脑部检查挂什么科| 心绞痛用什么药最好| 老是吐口水是什么原因| 寻麻疹是什么| 眼睛疲劳用什么眼药水好| 五月底是什么星座| 胰腺在人体什么部位| 小资情调是什么意思| 大佐相当于中国的什么军衔| 周杰伦什么病| 肾疼是什么原因| 烂大街是什么意思| 烟雾病是什么病| 毛主席什么时候去世| 啐了一口是什么意思| 头晕为什么做眼震检查| 解除是什么意思| 高招是什么意思| 94什么意思| 2020年什么年| trp是什么氨基酸| 丝状疣用什么药膏最好| 先天性巨结肠有什么症状| 相是什么意思| 人事代理什么意思| 咽喉炎吃什么药| 后背疼痛挂什么科| 咳嗽肺疼是什么原因| 喉咙痛是什么原因引起的| 什么是坐骨神经疼有什么症状| 白羊男和什么星座最配| 舌苔黄厚是什么原因| 有龙则灵的灵是什么意思| 嫂夫人什么意思| 氯高是什么原因| 糖尿病吃什么主食| 桃皮绒是什么面料| 高压是什么意思| 一什么篮子| 吃完饭胃疼是什么原因| 什么是白带| 胃酸过多什么原因| 尿液发臭是什么原因| 胃痛吃什么| 剑桥英语和新概念英语有什么区别| 小孩长白头发是什么原因| 不过是什么意思| 烤肉用什么油| 抨击是什么意思| 当归和党参有什么区别| 杰五行属性是什么| 3.28是什么星座| 头疼是什么原因引起的| 69年属鸡是什么命| 跳蚤咬了擦什么药| 身上长疮是什么原因引起的| 拉肚子是什么原因引起的怎么办| 所以我求求你别让我离开你是什么歌| 上午右眼皮跳什么预兆| 天才是指什么生肖| 八仙桌是什么生肖| 零和博弈什么意思| dpoy什么意思| 乙肝五项15阳性是什么意思| 什么情况下需要做心脏支架| 中午喜鹊叫有什么预兆| 老是放屁是什么原因| 2.6号是什么星座| 小孩c反应蛋白高说明什么| 什么是社会考生| 四面楚歌是什么意思| 兰花什么时候开花| today什么意思| 农历正月是什么星座| 血压的低压高是什么原因| 什么口什么舌| 忍者神龟是什么意思| 兰姓是什么民族| 日语一个一个是什么意思| 给老人过生日送什么礼物好| 舟字五行属什么| 蛋清加蜂蜜敷脸有什么好处| 炒菜勾芡用什么淀粉| 儿童用什么洗发水好| 癸水是什么意思| 爿是什么意思| 舒克是什么职业| 没有奶水怎么办吃什么能下奶| 石膏的主要成分是什么| 地动山摇是什么生肖| 天长地久是什么生肖| 微波炉蒸鸡蛋羹几分钟用什么火| 湿热泄泻是什么意思| 学信网上的报告编号是什么| 勾心斗角什么意思| 羊蝎子是什么肉| 三尖瓣轻度反流是什么意思| 胸片是什么| 尿酸高吃什么可以降下去| 1989年是什么年| 戒色是什么意思| b是什么| 这是什么电影| 胃热吃什么| 缺铁性贫血严重会导致什么后果| a型血和ab型血生的孩子是什么血型| 期货平仓是什么意思| 丞五行属什么| 为什么睡觉会张嘴| 刘备和刘表什么关系| 既往史是什么意思| 算理是什么意思| 驼鸟吃什么食物| 拔罐黑紫色说明什么| 边缘化是什么意思| 台球杆什么牌子的好| 卫生局是什么单位| 三个犬念什么| 大牙什么时候换| 百香果吃了有什么好处| 吃什么掉秤快| 谷草谷丙是什么| 长沙有什么玩的| 补肾壮阳吃什么| 棕色搭配什么颜色好看| 99什么意思| 西昌火把节是什么时候| 什么动什么动| 银行支行行长什么级别| 男性湿热吃什么药最好| 早上起来后背疼是什么原因| 甲状腺去医院挂什么科| 势利眼的人有什么特征| 来月经腰酸腰痛什么原因造成的| 造化是什么意思| 状物是什么意思| 睡眠浅是什么原因| 子宫肌瘤术后吃什么好| 吃什么油对心脑血管好| 发烧不能吃什么| 诸位是什么意思| 傻狍子为什么叫傻狍子| 手会抖是什么原因| 绿意盎然是什么意思| 灰指甲用什么药最有效| 愿力是什么意思| 花仙子是什么意思| 女人依赖男人说明什么| 脚底板疼用什么药| 什么叫国学| 总胆红素偏高什么意思| 七一什么节| 儿童内分泌科检查什么| 紫癜病是什么病| 终其一生下一句是什么| pbc是什么意思| 吃什么对痔疮好得快| 被利用的信任是什么歌| 产妇适合吃什么水果| 汉菜不能和什么一起吃| 子宫肌瘤吃什么药| 雌激素是什么东西| 什么症状要查心肌酶| 甲功四项是什么检查项目| 牙齿发麻是什么原因| 枸杞泡水喝有什么好处| 艾叶泡水喝有什么功效| 唐氏筛查临界风险是什么意思| 紫苏有什么作用| 潜水什么意思| 间歇是什么意思| plover是什么牌子| 2017属什么生肖| 腔梗灶是什么意思| 什么是贡菜| 果实属于什么器官| 什么的阳光| 海绵肾是什么意思| 逼长什么样| 梨花压海棠是什么意思| 新生儿一直哭闹是什么原因| 双瞳电影到底讲了什么| 什么是题材股| 肋软骨炎吃什么药最好| 碱性磷酸酶偏低是什么意思| 吃什么补血小板效果最好| 大小眼是什么原因| 快速补血吃什么| 发生火灾时的正确做法是什么| 什么情况要打破伤风针| 泳帽的作用是什么| 百度

四川成都 阳春三月 大熊猫进入“繁育季”


Directory: ../../../ffmpeg/
File: src/libavcodec/dolby_e_parse.c
Date: 2025-08-04 11:35:17
Exec Total Coverage
Lines: 63 101 62.4%
Functions: 4 4 100.0%
Branches: 25 60 41.7%

Line Branch Exec Source
1 /*
2 * Copyright (C) 2017 foo86
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 "libavutil/avassert.h"
22 #include "get_bits.h"
23 #include "put_bits.h"
24 #include "dolby_e.h"
25
26 static const uint8_t nb_programs_tab[MAX_PROG_CONF + 1] = {
27 2, 3, 2, 3, 4, 5, 4, 5, 6, 7, 8, 1, 2, 3, 3, 4, 5, 6, 1, 2, 3, 4, 1, 1
28 };
29
30 static const uint8_t nb_channels_tab[MAX_PROG_CONF + 1] = {
31 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 6, 6, 6, 6, 6, 6, 6, 4, 4, 4, 4, 8, 8
32 };
33
34 static const uint16_t sample_rate_tab[16] = {
35 0, 42965, 43008, 44800, 53706, 53760
36 };
37
38 1284 static int skip_input(DBEContext *s, int nb_words)
39 {
40
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 1284 times.
1284 if (nb_words > s->input_size) {
41 return AVERROR_INVALIDDATA;
42 }
43
44 1284 s->input += nb_words * s->word_bytes;
45 1284 s->input_size -= nb_words;
46 1284 return 0;
47 }
48
49 642 static int parse_key(DBEContext *s)
50 {
51
1/2
✓ Branch 0 taken 642 times.
✗ Branch 1 not taken.
642 if (s->key_present) {
52 642 const uint8_t *key = s->input;
53 642 int ret = skip_input(s, 1);
54
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 642 times.
642 if (ret < 0)
55 return ret;
56 642 return AV_RB24(key) >> 24 - s->word_bits;
57 }
58 return 0;
59 }
60
61 4380 int ff_dolby_e_convert_input(DBEContext *s, int nb_words, int key)
62 {
63 4380 const uint8_t *src = s->input;
64 4380 uint8_t *dst = s->buffer;
65 PutBitContext pb;
66 int i;
67
68
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 4380 times.
4380 av_assert0(nb_words <= 1024u);
69
70
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 4380 times.
4380 if (nb_words > s->input_size) {
71 if (s->avctx)
72 av_log(s->avctx, AV_LOG_ERROR, "Packet too short\n");
73 return AVERROR_INVALIDDATA;
74 }
75
76
1/4
✓ Branch 0 taken 4380 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
4380 switch (s->word_bits) {
77 4380 case 16:
78
2/2
✓ Branch 0 taken 946764 times.
✓ Branch 1 taken 4380 times.
951144 for (i = 0; i < nb_words; i++, src += 2, dst += 2)
79 946764 AV_WB16(dst, AV_RB16(src) ^ key);
80 4380 break;
81 case 20:
82 init_put_bits(&pb, s->buffer, sizeof(s->buffer));
83 for (i = 0; i < nb_words; i++, src += 3)
84 put_bits(&pb, 20, AV_RB24(src) >> 4 ^ key);
85 flush_put_bits(&pb);
86 break;
87 case 24:
88 for (i = 0; i < nb_words; i++, src += 3, dst += 3)
89 AV_WB24(dst, AV_RB24(src) ^ key);
90 break;
91 default:
92 av_unreachable("ff_dolby_e_parse_header() only sets 16, 20, 24 and errors out otherwise");
93 }
94
95 4380 return init_get_bits(&s->gb, s->buffer, nb_words * s->word_bits);
96 }
97
98 643 int ff_dolby_e_parse_header(DBEContext *s, const uint8_t *buf, int buf_size)
99 {
100 643 DolbyEHeaderInfo *const header = &s->metadata;
101 int hdr, ret, key, mtd_size;
102
103
2/2
✓ Branch 0 taken 1 times.
✓ Branch 1 taken 642 times.
643 if (buf_size < 3)
104 1 return AVERROR_INVALIDDATA;
105
106 642 hdr = AV_RB24(buf);
107
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 642 times.
642 if ((hdr & 0xfffffe) == 0x7888e) {
108 s->word_bits = 24;
109
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 642 times.
642 } else if ((hdr & 0xffffe0) == 0x788e0) {
110 s->word_bits = 20;
111
1/2
✓ Branch 0 taken 642 times.
✗ Branch 1 not taken.
642 } else if ((hdr & 0xfffe00) == 0x78e00) {
112 642 s->word_bits = 16;
113 } else {
114 if (s->avctx)
115 av_log(s->avctx, AV_LOG_ERROR, "Invalid frame header\n");
116 return AVERROR_INVALIDDATA;
117 }
118
119 642 s->word_bytes = s->word_bits + 7 >> 3;
120 642 s->input = buf + s->word_bytes;
121 642 s->input_size = buf_size / s->word_bytes - 1;
122 642 s->key_present = hdr >> 24 - s->word_bits & 1;
123
124
1/2
✗ Branch 1 not taken.
✓ Branch 2 taken 642 times.
642 if ((key = parse_key(s)) < 0)
125 return key;
126
1/2
✗ Branch 1 not taken.
✓ Branch 2 taken 642 times.
642 if ((ret = ff_dolby_e_convert_input(s, 1, key)) < 0)
127 return ret;
128
129 642 skip_bits(&s->gb, 4);
130 642 mtd_size = get_bits(&s->gb, 10);
131
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 642 times.
642 if (!mtd_size) {
132 if (s->avctx)
133 av_log(s->avctx, AV_LOG_ERROR, "Invalid metadata size\n");
134 return AVERROR_INVALIDDATA;
135 }
136
137
1/2
✗ Branch 1 not taken.
✓ Branch 2 taken 642 times.
642 if ((ret = ff_dolby_e_convert_input(s, mtd_size, key)) < 0)
138 return ret;
139
140 642 skip_bits(&s->gb, 14);
141 642 header->prog_conf = get_bits(&s->gb, 6);
142
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 642 times.
642 if (header->prog_conf > MAX_PROG_CONF) {
143 if (s->avctx)
144 av_log(s->avctx, AV_LOG_ERROR, "Invalid program configuration\n");
145 return AVERROR_INVALIDDATA;
146 }
147
148 642 header->nb_channels = nb_channels_tab[header->prog_conf];
149 642 header->nb_programs = nb_programs_tab[header->prog_conf];
150
151 642 header->fr_code = get_bits(&s->gb, 4);
152 642 header->fr_code_orig = get_bits(&s->gb, 4);
153
1/2
✓ Branch 0 taken 642 times.
✗ Branch 1 not taken.
642 if (!(header->sample_rate = sample_rate_tab[header->fr_code]) ||
154
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 642 times.
642 !sample_rate_tab[header->fr_code_orig]) {
155 if (s->avctx)
156 av_log(s->avctx, AV_LOG_ERROR, "Invalid frame rate code\n");
157 return AVERROR_INVALIDDATA;
158 }
159
160 642 skip_bits_long(&s->gb, 88);
161
2/2
✓ Branch 0 taken 3852 times.
✓ Branch 1 taken 642 times.
4494 for (int i = 0; i < header->nb_channels; i++)
162 3852 header->ch_size[i] = get_bits(&s->gb, 10);
163 642 header->mtd_ext_size = get_bits(&s->gb, 8);
164 642 header->meter_size = get_bits(&s->gb, 8);
165
166 642 skip_bits_long(&s->gb, 10 * header->nb_programs);
167
2/2
✓ Branch 0 taken 3852 times.
✓ Branch 1 taken 642 times.
4494 for (int i = 0; i < header->nb_channels; i++) {
168 3852 header->rev_id[i] = get_bits(&s->gb, 4);
169 3852 skip_bits1(&s->gb);
170 3852 header->begin_gain[i] = get_bits(&s->gb, 10);
171 3852 header->end_gain[i] = get_bits(&s->gb, 10);
172 }
173
174
1/2
✗ Branch 1 not taken.
✓ Branch 2 taken 642 times.
642 if (get_bits_left(&s->gb) < 0) {
175 if (s->avctx)
176 av_log(s->avctx, AV_LOG_ERROR, "Read past end of metadata\n");
177 return AVERROR_INVALIDDATA;
178 }
179
180 642 return skip_input(s, mtd_size + 1);
181 }
182

玉的五行属性是什么 冲服是什么意思 飞机为什么不能说一路顺风 反酸烧心吃什么药 深千尺是什么意思
移车打什么电话 湖北九头鸟是什么意思 无名指为什么叫无名指 长史相当于现在什么官 运单号是什么
飞蚊症是什么原因引起的 24D是什么激素 颈椎曲度变直有什么症状 94年的属什么 不堪入目是什么意思
脑供血不足是什么症状 鼻炎是什么 o型血是什么血 肝硬化失代偿期是什么意思 永加一个日念什么
肾在什么位置图片shenchushe.com 女人腿肿是什么原因引起的hcv9jop7ns0r.cn 生目念什么bjcbxg.com 一天什么时候最热hcv9jop4ns0r.cn 邪不压正什么意思beikeqingting.com
媱字五行属什么wuhaiwuya.com 睡觉后脑勺出汗多是什么原因hcv8jop8ns8r.cn 销魂是什么意思hcv7jop6ns0r.cn 什么人容易得圆锥角膜hcv9jop0ns2r.cn 漠河什么时候可以看到极光hcv8jop1ns3r.cn
五行属性是什么hcv9jop4ns7r.cn 天王星代表什么hcv8jop4ns4r.cn 江诗丹顿属于什么档次hcv9jop6ns7r.cn 肌炎有什么症状hcv7jop5ns1r.cn 湿气重可以吃什么水果imcecn.com
草木皆兵什么意思hcv8jop6ns2r.cn 时点是什么意思hcv8jop7ns2r.cn 安逸是什么意思hcv7jop9ns2r.cn 字读什么onlinewuye.com 农历正月十五吃什么hcv8jop7ns7r.cn
百度