减肥期间可以吃什么零食| 变态反应科是看什么病的| 夏天吹空调感冒吃什么药| 治股癣用什么药最好| 虾吃什么食物| 拔罐颜色深浅代表什么| havva是什么牌子| 瑄字五行属什么| 埋头苦干是什么生肖| 天性使然什么意思| 10月3号是什么星座| 无垢是什么意思| 营养过剩是什么意思| 天天都需要你爱是什么歌| 555是什么烟| 去三亚需要什么证件| 狐臭挂什么科室的号| 骨加后念什么| 随心所欲的欲什么意思| 方解石玉是什么玉| 夫妻分床睡意味着什么| 奶茶有什么危害| 吃黑木耳有什么好处| 上梁是什么意思| 小孩子手脚脱皮是什么原因| 今天农历什么日子| 亲额头代表什么意思| 梦到和男朋友分手是什么征兆| 植物油是什么| 淋巴结肿大是什么原因引起的| 下午右眼跳是什么预兆| 7月14日是什么日子| 失格是什么意思| 血管痉挛吃什么药| 肾虚会导致什么| 呼吸道感染一般用什么消炎药| 梦见皮带断了什么预兆| 大佬什么意思| 什么什么如生| 地球是什么形状的| 为什么夏天吃姜好| gmp认证是什么意思| 什么是有机| 38是什么生肖| 妈妈的姐姐叫什么| 一什么草坪| 咬指甲是什么心理疾病| 黄油可以做什么美食| 随性什么意思| 什么什么不动| 嘴唇淡紫色是什么原因| 慢性支气管炎吃什么药| 大嘴巴是什么意思| 男孩长虎牙预示什么| 梦见自己孩子死了是什么意思| u是什么元素| 10月11是什么星座| lg手机是什么牌子| 小孩子经常流鼻血是什么原因| 骨折吃什么钙片| 急性中耳炎吃什么药| 秋葵与什么食物相克| 正襟危坐什么意思| 总胆红素偏高说明什么| 叶酸有什么作用| 结石排出来是什么感觉| 断背山讲的是什么故事| 空囊是什么原因造成的| 千焦是什么单位| 心肌缺血吃什么中药| 绿色通道是什么意思| 92年的属什么| 演宋江的演员叫什么| 诺如病毒是什么症状| 沉的右边念什么| 饮水思源是什么意思| 沉甸甸的爱是什么意思| 翰字五行属什么| 咖喱是什么东西| 陋习什么意思| 助理研究员是什么职称| 餐后血糖高吃什么药| 公举是什么意思啊| 成佛是什么意思| 黄芪泡水喝有什么功效| 鹅喜欢吃什么食物| 王八羔子是什么意思| 济公是什么生肖| 三朵花代表什么意思| 麦芒是什么| 脂肪肝是什么| 血压偏低吃什么| 黑客帝国4什么时候上映| 吃什么水果补肝养肝最有效| 学子是什么意思| 白带有血是什么原因| 操刀是什么意思| 小孩子为什么会得抽动症| 梦见出国了是什么意思| 西洋参长什么样子图片| 桑叶有什么功效和作用| 老是头疼是什么原因| 黔鱼是什么鱼| 主意正是什么意思| 化疗期间吃什么最好| 邹的左边读什么| 犯了痔疮为什么老放屁| 玉皇大帝和王母娘娘是什么关系| 梦见上班迟到什么意思| 榕字五行属什么| 鼻窦粘膜增厚什么意思| 撸铁什么意思| 茹什么饮什么| 肚脐右边按压疼是什么原因| 十一月什么星座| 艾地苯醌片治什么病| 网球肘吃什么药| 鸡蛋壳薄是什么原因| 甲状腺彩超能查出什么| 谷草转氨酶偏高是什么原因| 回甘是什么意思| 什么是植物神经紊乱| 隐疾是什么意思| 美国白宫是干什么的| 婴儿胎毛什么时候剃最好| 水泡型脚气用什么药好| 什么牌子的蜂胶最好| b2b是什么| 什么是痔疮| 清宫和无痛人流有什么区别| 老人头晕挂什么科| 神经纤维由什么组成| 1983属什么生肖| 泡茶用什么杯子最好| 鸽子怕什么怎么赶走| 摸鱼是什么意思| 春节是什么时候| 6月24日什么星座| 尿酸高什么水果不能吃| 惊艳是什么意思| 什么吃辣椒抓耳挠腮| 网球大满贯什么意思| 狮子座是什么星座| 就请你给我多一点点时间是什么歌| 婆媳关系为什么难相处| hpv感染有什么表现| 有时候会感到莫名的难过是什么歌| 梦见大蒜是什么意思| 氮肥是什么肥| 痃癖是什么病| 珊瑚绒是什么面料| mary是什么意思| 扫把和什么是一套的| 意难平是什么意思| 配伍是什么意思| 满字是什么结构| 眼色是什么意思| 伤官女是什么意思| 儿童肥胖挂什么科| 白加黑是什么药| 滑膜增厚是什么意思| 充气娃娃什么感觉| 什么人适合吃蛋白质粉| 什么是甘油| 三花聚顶是什么修为| 冒失是什么意思| 喝啤酒头疼是什么原因| 鳄鱼的天敌是什么动物| 白色t恤配什么裤子| 白茶属于什么茶类| 调停是什么意思| 感冒拉肚子吃什么药| cg是什么| 绿色加蓝色是什么颜色| 谷维素是治疗什么的| 孕妇什么时候做nt| 吃什么水果可以减肥| 过敏性鼻炎用什么药效果好| 咸鸭蛋不能和什么一起吃| 血压太低会有什么危险| 宫颈活检是什么意思| 上火吃什么水果好| 人生感悟是什么意思| 秦始皇的原名叫什么| 胸闷气短吃什么药效果好| 什么算高危性行为| 腰穿是什么意思| 太阳里面有什么| loc是什么意思| 老人头发由白变黑是什么原因| 小暑是什么| 得过且过是什么意思| 植物神经紊乱中医叫什么病| 大腿前侧肌肉叫什么| 水豚吃什么| 奇货可居是什么意思| 60年属什么| 女人吃什么对卵巢和子宫好| 海松茸是什么| 女人左眼跳是什么预兆| 1975年五行属什么| 江西有什么好玩的地方| 光阴荏苒是什么意思| 巨蟹女和什么星座最配| 为什么做梦会说梦话| 双星座是什么意思| 5公里25分钟什么水平| rs是什么意思| 经期喝咖啡有什么影响| 排卵期出血是什么样的| 喜欢白色的人是什么性格| 什么是红眼病| 什么手机电池最耐用| 家财万贯是什么动物| 伶字五行属什么| hz是什么意思| 暗网是什么意思| 桃和什么不能一起吃| 高密度脂蛋白是什么意思| 什么是风湿病| 灵芝孢子粉有什么用| 小土豆是什么意思| 为什么拉屎是绿色的| 嗓子痒咳嗽吃什么药| 今天是什么生肖| 肠憩室是什么意思| 看皮肤挂什么科| 鼻炎吃什么药| 豆腐吃多了有什么坏处| 处暑什么意思| 29周岁属什么生肖| 上挂是什么意思| 酋长是什么意思| nt 是什么检查| 增大淋巴结是什么意思| 鹦鹉喜欢吃什么东西| 细菌计数高是什么原因| 羊肉炖什么好吃又营养| 谷丙转氨酶什么意思| 为什么前壁容易生男孩| 扫地僧是什么意思| 什么是思维导图| 3.7号是什么星座| 50pcs是什么意思| 手术后吃什么补品好| 阴历六月十五是什么日子| 奢靡是什么意思| hcg是什么激素| 擎天柱是什么车| 混合痔是什么意思| loves是什么意思| 宫颈机能不全是什么意思| 宫殿是什么意思| 今年闰六月有什么说法| 脚拇指外翻是什么原因造成的| 痛风发作期吃什么药| 花枝是什么食材| 81年属鸡的是什么命| xr是什么| 什么药可以降肌酐| 跟着好人学好人下句是什么| 定海神针什么意思| y代表什么意思| 称心如意是什么意思| 百度

京新能源小客车补助标准调整:不超车辆售价六成


Directory: ../../../ffmpeg/
File: src/libavformat/redspark.c
Date: 2025-08-04 11:35:17
Exec Total Coverage
Lines: 61 70 87.1%
Functions: 3 3 100.0%
Branches: 18 28 64.3%

Line Branch Exec Source
1 /*
2 * RedSpark demuxer
3 * Copyright (c) 2013 James Almer
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 "libavcodec/bytestream.h"
23 #include "libavutil/intreadwrite.h"
24 #include "avformat.h"
25 #include "avio.h"
26 #include "demux.h"
27 #include "internal.h"
28
29 #define HEADER_SIZE 4096
30 #define rol(value, bits) (((value) << (bits)) | ((value) >> (32 - (bits))))
31
32 typedef struct RedSparkContext {
33 int samples_count;
34 } RedSparkContext;
35
36 7252 static int redspark_probe(const AVProbeData *p)
37 {
38 uint32_t key, data;
39 uint8_t header[8];
40
41 /* Decrypt first 8 bytes of the header */
42 7252 data = AV_RB32(p->buf);
43 7252 key = data ^ 0x52656453;
44 7252 data ^= key;
45 7252 AV_WB32(header, data);
46 7252 key = rol(key, 11);
47
48 7252 key += rol(key, 3);
49 7252 data = AV_RB32(p->buf + 4) ^ key;
50 7252 AV_WB32(header + 4, data);
51
52
2/2
✓ Branch 0 taken 1 times.
✓ Branch 1 taken 7251 times.
7252 if (AV_RB64(header) == AV_RB64("RedSpark"))
53 1 return AVPROBE_SCORE_MAX;
54
55 7251 return 0;
56 }
57
58 1 static int redspark_read_header(AVFormatContext *s)
59 {
60 1 AVIOContext *pb = s->pb;
61 1 RedSparkContext *redspark = s->priv_data;
62 AVCodecParameters *par;
63 GetByteContext gbc;
64 1 int i, coef_off, ret = 0;
65 uint32_t key, data;
66 uint8_t header[HEADER_SIZE];
67 AVStream *st;
68
69 1 st = avformat_new_stream(s, NULL);
70
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
1 if (!st)
71 return AVERROR(ENOMEM);
72 1 par = st->codecpar;
73
74 /* Decrypt header */
75 1 data = avio_rb32(pb);
76 1 key = data ^ 0x52656453;
77 1 data ^= key;
78 1 AV_WB32(header, data);
79 1 key = rol(key, 11);
80
81
2/2
✓ Branch 0 taken 1023 times.
✓ Branch 1 taken 1 times.
1024 for (i = 4; i < HEADER_SIZE; i += 4) {
82 1023 key += rol(key, 3);
83 1023 data = avio_rb32(pb) ^ key;
84 1023 AV_WB32(header + i, data);
85 }
86
87 1 par->codec_id = AV_CODEC_ID_ADPCM_THP;
88 1 par->codec_type = AVMEDIA_TYPE_AUDIO;
89
90 1 bytestream2_init(&gbc, header, HEADER_SIZE);
91 1 bytestream2_seek(&gbc, 0x3c, SEEK_SET);
92 1 par->sample_rate = bytestream2_get_be32u(&gbc);
93
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 if (par->sample_rate <= 0 || par->sample_rate > 96000) {
94 av_log(s, AV_LOG_ERROR, "Invalid sample rate: %d\n", par->sample_rate);
95 return AVERROR_INVALIDDATA;
96 }
97
98 1 st->duration = bytestream2_get_be32u(&gbc) * 14;
99 1 redspark->samples_count = 0;
100 1 bytestream2_skipu(&gbc, 10);
101 1 par->ch_layout.nb_channels = bytestream2_get_byteu(&gbc);
102
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
1 if (!par->ch_layout.nb_channels) {
103 return AVERROR_INVALIDDATA;
104 }
105
106 1 coef_off = 0x54 + par->ch_layout.nb_channels * 8;
107
1/2
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
1 if (bytestream2_get_byteu(&gbc)) // Loop flag
108 coef_off += 16;
109
110
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
1 if (coef_off + par->ch_layout.nb_channels * (32 + 14) > HEADER_SIZE) {
111 return AVERROR_INVALIDDATA;
112 }
113
114
1/2
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
1 if (ff_alloc_extradata(par, 32 * par->ch_layout.nb_channels)) {
115 return AVERROR_INVALIDDATA;
116 }
117
118 /* Get the ADPCM table */
119 1 bytestream2_seek(&gbc, coef_off, SEEK_SET);
120
2/2
✓ Branch 0 taken 2 times.
✓ Branch 1 taken 1 times.
3 for (i = 0; i < par->ch_layout.nb_channels; i++) {
121
1/2
✗ Branch 1 not taken.
✓ Branch 2 taken 2 times.
2 if (bytestream2_get_bufferu(&gbc, par->extradata + i * 32, 32) != 32) {
122 return AVERROR_INVALIDDATA;
123 }
124 2 bytestream2_skipu(&gbc, 14);
125 }
126
127 1 avpriv_set_pts_info(st, 64, 1, par->sample_rate);
128
129 1 return ret;
130 }
131
132 1761 static int redspark_read_packet(AVFormatContext *s, AVPacket *pkt)
133 {
134 1761 AVCodecParameters *par = s->streams[0]->codecpar;
135 1761 RedSparkContext *redspark = s->priv_data;
136 1761 uint32_t size = 8 * par->ch_layout.nb_channels;
137 int ret;
138
139
2/4
✓ Branch 1 taken 1761 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1761 times.
1761 if (avio_feof(s->pb) || redspark->samples_count == s->streams[0]->duration)
140 return AVERROR_EOF;
141
142 1761 ret = av_get_packet(s->pb, pkt, size);
143
2/2
✓ Branch 0 taken 1 times.
✓ Branch 1 taken 1760 times.
1761 if (ret != size) {
144 1 return AVERROR(EIO);
145 }
146
147 1760 pkt->duration = 14;
148 1760 redspark->samples_count += pkt->duration;
149 1760 pkt->stream_index = 0;
150
151 1760 return ret;
152 }
153
154 const FFInputFormat ff_redspark_demuxer = {
155 .p.name = "redspark",
156 .p.long_name = NULL_IF_CONFIG_SMALL("RedSpark"),
157 .p.extensions = "rsd",
158 .priv_data_size = sizeof(RedSparkContext),
159 .read_probe = redspark_probe,
160 .read_header = redspark_read_header,
161 .read_packet = redspark_read_packet,
162 };
163

为什么一洗澡月经就没了 精华液是什么 脚肿了是什么原因引起的 水飞蓟是什么 夏天是什么时候
钙化结节是什么意思 什么什么自若 雪花鱼是什么鱼 胃痛吃什么 白藜芦醇是什么东西
舌战群儒是什么意思 透析病人吃什么水果好 梦见已故长辈什么预兆 什么水果补肾 高丽参适合什么人吃
99年发生了什么事情 腿酸是什么原因引起的 两肺纹理增粗是什么意思 尿频尿急小腹胀痛吃什么药 八路军为什么叫八路军
比肩什么意思hcv9jop6ns5r.cn 螨虫长什么样子hcv9jop1ns8r.cn 旅长是什么级别hcv9jop3ns3r.cn 男人肾虚吃什么补得快hcv8jop8ns5r.cn 车前草治什么病hcv8jop8ns7r.cn
所什么无什么hcv8jop6ns0r.cn 去医院看膝盖挂什么科bfb118.com 减肥有什么好方法hcv9jop5ns9r.cn 查乙肝挂什么科hcv8jop5ns1r.cn 什么情况下需要会诊hcv9jop1ns1r.cn
透明质酸钠是什么东西hcv8jop1ns7r.cn 梁伟文 为什么叫林夕hcv9jop4ns8r.cn 晕车吃什么hcv8jop8ns7r.cn 鸡肉炖什么好吃beikeqingting.com 盐酸安罗替尼胶囊主要治疗什么hcv8jop3ns8r.cn
梦见下雪是什么意思liaochangning.com fu什么意思hcv8jop4ns4r.cn 畸胎瘤是什么hcv9jop0ns3r.cn 鱼腥草有什么用处aiwuzhiyu.com 什么都能吃hcv7jop5ns3r.cn
百度