什么鱼适合做酸菜鱼| nda是什么意思| 欣五行属什么| 全身冰凉是什么原因| 妇科病吃什么药| 汪星是什么意思| 中医说的湿气重是什么意思| choice是什么意思| 波菜不能和什么一起吃| 左眼角有痣代表什么| 硫磺有什么作用| 朝鲜和韩国什么时候分开的| 青少年腰疼是什么原因引起的| 右手手背有痣代表什么| 尿路感染看什么科室| 钙化点是什么意思| 移植后宫缩是什么感觉| 钾高是什么原因引起的| 慢阻肺吃什么药| 流星是什么| tt是什么意思| 晚上做梦梦到蛇是什么意思| 壁虎是什么类动物| 蔓越莓有什么功效和作用| 污秽是什么意思| 金蟾折桂什么意思| 小月子吃什么水果| 女人代谢慢吃什么效果最快| 顽固不化是什么意思| 盐冻虾是什么意思| 上颚疼痛吃什么药| 手指是什么生肖| 99年属什么的| 小苏打可以用什么代替| 佳偶天成是什么意思| 手臂突然疼痛什么原因| 红枣泡水喝有什么功效| 人类免疫缺陷病毒抗体是什么意思| 怀孕不能吃什么水果| 拜阿司匹林和阿司匹林有什么区别| 盆腔磁共振平扫能查出什么| 怀孕的脉搏和正常脉搏有什么区别| 去医院检查是否怀孕挂什么科| 什么奶茶最贵| 香茅是什么| 做梦梦到小孩子是什么意思| 淋巴结为什么会肿大| 感冒了不能吃什么食物| 慢性结肠炎是什么症状| 口臭为什么| 无什么于事| 心悸是什么意思啊| 6.29是什么星座| 减肥什么时候喝牛奶| 婴儿泡奶粉用什么水好| 黄体是什么| 海棠依旧什么意思| 宋美龄为什么没有孩子| 低血压头晕吃什么药| 腰椎间盘突出吃什么药| 黑豆有什么功效| 音叉是什么| 闰月鞋买什么颜色| 雌激素是什么意思| 菁字五行属什么| 荔枝有什么作用与功效| jp是什么意思| 2003年的羊是什么命| 血漏是什么病| 银梳子梳头有什么好处| 神经元特异性烯醇化酶偏高是什么意思| 七月二十九是什么星座| 肝的反射区在什么部位| 鹤是什么生肖| 不约而至是什么意思| 给孕妇送什么礼物好| 什么的肩膀| 杀马特是什么| 鲫鱼吃什么食物| h是什么牌子的衣服| 风吹动窗吹动夜声响是什么歌| 阴道炎有什么症状| 广西北海有什么好玩的地方| ipv是什么| 吃什么补锌| 麦冬和什么相克| rbp是什么意思| 吃降压药有什么副作用| 什么是创业板股票| 阴超是检查什么的| 齐活儿是什么意思| 化疗前吃什么补充营养| 肝阴虚吃什么中成药| 司空见惯是说司空见惯了什么| 一日清闲一日仙是什么生肖| 入赘是什么意思| 碳14和碳13有什么区别| super star是什么意思| 蚊子咬了用什么药膏| 早饭吃什么| 血脂六项包括什么| 蛞蝓是什么意思| 下午6点半是什么时辰| 男人阴虱用什么药| 2月23号是什么星座| 拔完智齿能吃什么| 浪琴手表什么档次| 2034年是什么年| 桃和什么不能一起吃| 喉咙肿瘤有什么症状| 227是什么意思| 老是叹气是什么原因| 房间放什么可以驱蜈蚣| 梦见自己掉牙是什么意思| 鸡炖什么好吃又有营养| 泡腾片是干什么用的| 前庭神经炎挂什么科| 吃什么止咳| 什么的青蛙| 苹果像什么| 北京市副市长是什么级别| 飞蚊症是什么原因造成的能治愈吗| 蜱虫用什么药可以消灭| 关节痛去医院挂什么科| 狗狗什么时候打疫苗| 梦见别人怀孕了是什么意思| 倾倒是什么意思| 什么鸟不能飞| 益母草能治什么病| 今年是什么年庚| 为什么叫梅雨季节| 慢性浅表性胃炎吃什么药好得快| 月经期同房有什么危害| 急性肠胃炎是什么原因引起的| 喝什么茶叶减肥效果最好| 细胞结构包括什么| 上皮细胞一个加号什么意思| 尿糖2个加号是什么意思| hpv感染吃什么药| 护照免签是什么意思| 雪莲果什么季节成熟| 鼻炎是什么原因引起的| 李自成为什么会失败| 挫伤用什么药| 吕布为什么叫三姓家奴| 狗屎运是什么意思| c2m模式是什么意思| 肝腹水有什么症状| 什么叫上升星座| 五花八门是指什么生肖| 检查肝肾功能挂什么科| 杨颖原名叫什么| mrd是什么| 舌头发白是什么原因| 猪拉稀用什么药最快| 仿制药是什么意思| 牙龈流血是什么原因| 胃火旺吃什么好| 尿液检查白细胞高是什么原因| 女人什么年龄性最旺| 胎儿左侧侧脑室增宽的原因是什么| 南无阿弥陀佛什么意思| 灵犀是什么意思| 余光是什么意思| 什么鱼红烧好吃| 便秘吃什么好| 脸上起红疙瘩是什么原因| 糖尿病是什么| 男命食神代表什么| 放疗和化疗有什么区别| 血蛋白低会有什么影响| 2月19日什么星座| 在什么什么后面| 主动脉夹层什么意思| 抓包是什么意思| 耐克是什么牌子| ca代表什么病| 负利率是什么意思| 尿频尿急吃什么药效果最好| 胶原蛋白的成分是什么| 属虎的是什么命| 益母草长什么样| 职业年金什么时候领取| c3是什么驾驶证| 血竭是什么东西| 庚午日是什么意思| 怀孕吃核桃对宝宝有什么好处| 致什么意思| 谦虚什么意思| 透骨草长什么样| 户别是什么| 便秘是什么引起的| 干碟是什么| 庞统和诸葛亮什么关系| 眼睛飞蚊症吃什么药| lp0是什么意思| 蒲公英茶有什么功效| 干咳吃什么药| 黄梅时节是什么季节| 口腔溃疡缺乏什么维生素| 什么叫台风| 艾滋病初期有什么症状| 迪拜为什么那么有钱| 777什么意思| 请辞是什么意思| 血管堵塞吃什么药好| 什么是混合磨玻璃结节| 涵字五行属什么| 孕反一般什么时候开始| 眼睛模糊用什么药好| 运钞车押运员是什么人| 生产是什么意思| 手抖是什么病的症状| 今夕何夕什么意思| 蜂王浆是什么| 敏感肌是什么| 酸奶有什么好处| 是谁送你来到我身边是什么歌| 梦到装修房子是什么征兆| 人头马是什么酒| 血脂高吃什么药好| 新疆是什么族| ebv病毒是什么| 荥在中医读什么| 小黄人是什么意思| 耳鸣吃什么中成药| 什么是初心| 乳房有硬块是什么原因| 脑梗吃什么食物好| 主动脉硬化什么意思| 辞职是什么意思| 少年什么意思| 皮笑肉不笑是什么生肖| 龙肉指的是什么肉| 黑发晶五行属什么| 六零年属什么生肖| 水瓶后面是什么星座| 胃胀吃什么药效果好| 什么牌子的麦克风好用| 男人蛋蛋疼是什么原因| 小孩子手脚脱皮是什么原因| 女人气血不足吃什么补| 超七水晶是什么| 肾动脉狭窄有什么症状| 脸浮肿是什么原因引起的| 尿路感染吃什么药效果最好| 人生于世上有几个知己是什么歌| 婴儿吃什么奶粉好呢| 活泼的反义词是什么| 想睡睡不着是什么原因| 为什么洗头发时会掉很多头发| 包皮长挂什么科| 菊花代表什么| 突然想吐是什么原因| 老人脚肿是什么征兆| 产厄是什么意思| 孩子容易出汗是什么原因| 五马分尸是什么意思| 251是什么意思| 张学友和张家辉什么关系| 健康证需要检查什么项目| 中年人喝什么奶粉好| 意象是什么意思| 空是什么生肖| 百度

颈动脉斑块挂什么科


Directory: ../../../ffmpeg/
File: src/libavcodec/mdec.c
Date: 2025-08-04 00:43:16
Exec Total Coverage
Lines: 106 112 94.6%
Functions: 6 6 100.0%
Branches: 30 36 83.3%

Line Branch Exec Source
1 /*
2 * Sony PlayStation MDEC (Motion DECoder)
3 * Copyright (c) 2003 Michael Niedermayer
4 *
5 * based upon code from Sebastian Jedruszkiewicz <elf@frogger.rules.pl>
6 *
7 * This file is part of FFmpeg.
8 *
9 * FFmpeg is free software; you can redistribute it and/or
10 * modify it under the terms of the GNU Lesser General Public
11 * License as published by the Free Software Foundation; either
12 * version 2.1 of the License, or (at your option) any later version.
13 *
14 * FFmpeg is distributed in the hope that it will be useful,
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17 * Lesser General Public License for more details.
18 *
19 * You should have received a copy of the GNU Lesser General Public
20 * License along with FFmpeg; if not, write to the Free Software
21 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
22 */
23
24 /**
25 * @file
26 * Sony PlayStation MDEC (Motion DECoder)
27 * This is very similar to intra-only MPEG-1.
28 */
29
30 #include "libavutil/mem.h"
31 #include "libavutil/mem_internal.h"
32
33 #include "avcodec.h"
34 #include "blockdsp.h"
35 #include "bswapdsp.h"
36 #include "codec_internal.h"
37 #include "idctdsp.h"
38 #include "mpeg12data.h"
39 #include "mpeg12dec.h"
40 #include "thread.h"
41
42 typedef struct MDECContext {
43 AVCodecContext *avctx;
44 BlockDSPContext bdsp;
45 BswapDSPContext bbdsp;
46 IDCTDSPContext idsp;
47 GetBitContext gb;
48 uint8_t permutated_scantable[64];
49 int version;
50 int qscale;
51 int last_dc[3];
52 int mb_width;
53 int mb_height;
54 int mb_x, mb_y;
55 DECLARE_ALIGNED(32, int16_t, block)[6][64];
56 DECLARE_ALIGNED(16, uint16_t, quant_matrix)[64];
57 uint8_t *bitstream_buffer;
58 unsigned int bitstream_buffer_size;
59 } MDECContext;
60
61 //very similar to MPEG-1
62 285689 static inline int mdec_decode_block_intra(MDECContext *a, int16_t *block, int n)
63 {
64 int level, diff, i, j, run;
65 int component;
66 285689 const uint8_t *const scantable = a->permutated_scantable;
67 285689 const uint16_t *quant_matrix = a->quant_matrix;
68 285689 const int qscale = a->qscale;
69
70 /* DC coefficient */
71
2/2
✓ Branch 0 taken 214889 times.
✓ Branch 1 taken 70800 times.
285689 if (a->version <= 2) {
72 214889 block[0] = 2 * get_sbits(&a->gb, 10) + 1024;
73 } else {
74 70800 component = (n <= 3 ? 0 : n - 4 + 1);
75 70800 diff = decode_dc(&a->gb, component);
76 70800 a->last_dc[component] += diff;
77 70800 block[0] = a->last_dc[component] * (1 << 3);
78 }
79
80 285689 i = 0;
81 {
82 285689 OPEN_READER(re, &a->gb);
83 /* now quantify & encode AC coefficients */
84 for (;;) {
85 4638889 UPDATE_CACHE(re, &a->gb);
86
2/2
✓ Branch 1 taken 250831 times.
✓ Branch 2 taken 2211458 times.
2462289 GET_RL_VLC(level, run, re, &a->gb, ff_mpeg1_rl_vlc, TEX_VLC_BITS, 2, 0);
87
88
2/2
✓ Branch 0 taken 285688 times.
✓ Branch 1 taken 2176601 times.
2462289 if (level == 127) {
89 285688 break;
90
2/2
✓ Branch 0 taken 2133703 times.
✓ Branch 1 taken 42898 times.
2176601 } else if (level != 0) {
91 2133703 i += run;
92
2/2
✓ Branch 0 taken 1 times.
✓ Branch 1 taken 2133702 times.
2133703 if (i > 63) {
93 1 av_log(a->avctx, AV_LOG_ERROR,
94 "ac-tex damaged at %d %d\n", a->mb_x, a->mb_y);
95 1 return AVERROR_INVALIDDATA;
96 }
97 2133702 j = scantable[i];
98 2133702 level = (level * qscale * quant_matrix[j]) >> 3;
99 2133702 level = (level ^ SHOW_SBITS(re, &a->gb, 1)) - SHOW_SBITS(re, &a->gb, 1);
100 2133702 LAST_SKIP_BITS(re, &a->gb, 1);
101 } else {
102 /* escape */
103 42898 run = SHOW_UBITS(re, &a->gb, 6) + 1;
104 42898 SKIP_BITS(re, &a->gb, 6);
105 42898 level = SHOW_SBITS(re, &a->gb, 10);
106 42898 LAST_SKIP_BITS(re, &a->gb, 10);
107 42898 i += run;
108
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 42898 times.
42898 if (i > 63) {
109 av_log(a->avctx, AV_LOG_ERROR,
110 "ac-tex damaged at %d %d\n", a->mb_x, a->mb_y);
111 return AVERROR_INVALIDDATA;
112 }
113 42898 j = scantable[i];
114
2/2
✓ Branch 0 taken 24818 times.
✓ Branch 1 taken 18080 times.
42898 if (level < 0) {
115 24818 level = -level;
116 24818 level = (level * (unsigned)qscale * quant_matrix[j]) >> 3;
117 24818 level = (level - 1) | 1;
118 24818 level = -level;
119 } else {
120 18080 level = (level * (unsigned)qscale * quant_matrix[j]) >> 3;
121 18080 level = (level - 1) | 1;
122 }
123 }
124
125 2176600 block[j] = level;
126 }
127 285688 CLOSE_READER(re, &a->gb);
128 }
129 285688 return 0;
130 }
131
132 47615 static inline int decode_mb(MDECContext *a, int16_t block[6][64])
133 {
134 int i, ret;
135 static const int block_index[6] = { 5, 4, 0, 1, 2, 3 };
136
137 47615 a->bdsp.clear_blocks(block[0]);
138
139
2/2
✓ Branch 0 taken 285689 times.
✓ Branch 1 taken 47614 times.
333303 for (i = 0; i < 6; i++) {
140
2/2
✓ Branch 0 taken 1 times.
✓ Branch 1 taken 285688 times.
285689 if ((ret = mdec_decode_block_intra(a, block[block_index[i]],
141 285689 block_index[i])) < 0)
142 1 return ret;
143
1/2
✗ Branch 1 not taken.
✓ Branch 2 taken 285688 times.
285688 if (get_bits_left(&a->gb) < 0)
144 return AVERROR_INVALIDDATA;
145 }
146 47614 return 0;
147 }
148
149 47614 static inline void idct_put(MDECContext *a, AVFrame *frame, int mb_x, int mb_y)
150 {
151 47614 int16_t (*block)[64] = a->block;
152 47614 int linesize = frame->linesize[0];
153
154 47614 uint8_t *dest_y = frame->data[0] + (mb_y * 16* linesize ) + mb_x * 16;
155 47614 uint8_t *dest_cb = frame->data[1] + (mb_y * 8 * frame->linesize[1]) + mb_x * 8;
156 47614 uint8_t *dest_cr = frame->data[2] + (mb_y * 8 * frame->linesize[2]) + mb_x * 8;
157
158 47614 a->idsp.idct_put(dest_y, linesize, block[0]);
159 47614 a->idsp.idct_put(dest_y + 8, linesize, block[1]);
160 47614 a->idsp.idct_put(dest_y + 8 * linesize, linesize, block[2]);
161 47614 a->idsp.idct_put(dest_y + 8 * linesize + 8, linesize, block[3]);
162
163
1/2
✓ Branch 0 taken 47614 times.
✗ Branch 1 not taken.
47614 if (!(a->avctx->flags & AV_CODEC_FLAG_GRAY)) {
164 47614 a->idsp.idct_put(dest_cb, frame->linesize[1], block[4]);
165 47614 a->idsp.idct_put(dest_cr, frame->linesize[2], block[5]);
166 }
167 47614 }
168
169 194 static int decode_frame(AVCodecContext *avctx, AVFrame *frame,
170 int *got_frame, AVPacket *avpkt)
171 {
172 194 MDECContext * const a = avctx->priv_data;
173 194 const uint8_t *buf = avpkt->data;
174 194 int buf_size = avpkt->size;
175 int ret;
176
177
1/2
✗ Branch 1 not taken.
✓ Branch 2 taken 194 times.
194 if ((ret = ff_thread_get_buffer(avctx, frame, 0)) < 0)
178 return ret;
179
180 194 av_fast_padded_malloc(&a->bitstream_buffer, &a->bitstream_buffer_size, buf_size);
181
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 194 times.
194 if (!a->bitstream_buffer)
182 return AVERROR(ENOMEM);
183 194 a->bbdsp.bswap16_buf((uint16_t *)a->bitstream_buffer, (uint16_t *)buf, (buf_size + 1) / 2);
184
1/2
✗ Branch 1 not taken.
✓ Branch 2 taken 194 times.
194 if ((ret = init_get_bits8(&a->gb, a->bitstream_buffer, buf_size)) < 0)
185 return ret;
186
187 /* skip over 4 preamble bytes in stream (typically 0xXX 0xXX 0x00 0x38) */
188 194 skip_bits(&a->gb, 32);
189
190 194 a->qscale = get_bits(&a->gb, 16);
191 194 a->version = get_bits(&a->gb, 16);
192
193 194 a->last_dc[0] = a->last_dc[1] = a->last_dc[2] = 128;
194
195
2/2
✓ Branch 0 taken 3739 times.
✓ Branch 1 taken 193 times.
3932 for (a->mb_x = 0; a->mb_x < a->mb_width; a->mb_x++) {
196
2/2
✓ Branch 0 taken 47615 times.
✓ Branch 1 taken 3738 times.
51353 for (a->mb_y = 0; a->mb_y < a->mb_height; a->mb_y++) {
197
2/2
✓ Branch 1 taken 1 times.
✓ Branch 2 taken 47614 times.
47615 if ((ret = decode_mb(a, a->block)) < 0)
198 1 return ret;
199
200 47614 idct_put(a, frame, a->mb_x, a->mb_y);
201 }
202 }
203
204 193 *got_frame = 1;
205
206 193 return (get_bits_count(&a->gb) + 31) / 32 * 4;
207 }
208
209 7 static av_cold int decode_init(AVCodecContext *avctx)
210 {
211 7 MDECContext * const a = avctx->priv_data;
212 int i;
213
214 7 a->mb_width = (avctx->coded_width + 15) / 16;
215 7 a->mb_height = (avctx->coded_height + 15) / 16;
216
217 7 a->avctx = avctx;
218
219 7 ff_blockdsp_init(&a->bdsp);
220 7 ff_bswapdsp_init(&a->bbdsp);
221 7 ff_idctdsp_init(&a->idsp, avctx);
222 7 ff_mpeg12_init_vlcs();
223 7 ff_permute_scantable(a->permutated_scantable, ff_zigzag_direct,
224 7 a->idsp.idct_permutation);
225
226 7 avctx->pix_fmt = AV_PIX_FMT_YUVJ420P;
227 7 avctx->color_range = AVCOL_RANGE_JPEG;
228
229 /* init q matrix */
230
2/2
✓ Branch 0 taken 448 times.
✓ Branch 1 taken 7 times.
455 for (i = 0; i < 64; i++) {
231 448 int j = a->idsp.idct_permutation[i];
232
233 448 a->quant_matrix[j] = ff_mpeg1_default_intra_matrix[i];
234 }
235
236 7 return 0;
237 }
238
239 7 static av_cold int decode_end(AVCodecContext *avctx)
240 {
241 7 MDECContext * const a = avctx->priv_data;
242
243 7 av_freep(&a->bitstream_buffer);
244 7 a->bitstream_buffer_size = 0;
245
246 7 return 0;
247 }
248
249 const FFCodec ff_mdec_decoder = {
250 .p.name = "mdec",
251 CODEC_LONG_NAME("Sony PlayStation MDEC (Motion DECoder)"),
252 .p.type = AVMEDIA_TYPE_VIDEO,
253 .p.id = AV_CODEC_ID_MDEC,
254 .priv_data_size = sizeof(MDECContext),
255 .init = decode_init,
256 .close = decode_end,
257 FF_CODEC_DECODE_CB(decode_frame),
258 .p.capabilities = AV_CODEC_CAP_DR1 | AV_CODEC_CAP_FRAME_THREADS,
259 };
260

重庆为什么这么热 iq什么意思 治胃病吃什么药 8点是什么时辰 孩子肠胃炎吃什么药
台州为什么念第一声 烫伤用什么药好 三凹征是什么 肚子肥胖是什么原因引起的 梦见两只狗是什么征兆
刀模是什么 什么是吸附性义齿 痣长在什么地方不好 尿频尿急小腹胀痛吃什么药 热疹用什么药
糖尿病早餐吃什么好 眼珠子疼是什么原因 鲁迅是什么样的人 热射病是什么原因引起的 倾情是什么意思
制动是什么hcv9jop0ns0r.cn 90岁叫什么baiqunet.com 未可以加什么偏旁hcv9jop3ns1r.cn 便秘是什么症状gysmod.com 嘴唇发紫什么原因hcv8jop6ns4r.cn
吃素对身体有什么好处kuyehao.com 胰腺是什么病jiuxinfghf.com 夫妻肺片里面都有什么huizhijixie.com 心情烦躁吃什么药hcv9jop0ns1r.cn 小孩出冷汗是什么原因xianpinbao.com
肺炎不能吃什么hcv9jop1ns9r.cn 卡路里什么意思hcv7jop9ns6r.cn 游离甲状腺素偏低是什么意思hcv8jop2ns9r.cn 丹参的功效与作用是什么hcv9jop1ns6r.cn 男狗配什么属相最好hcv9jop7ns5r.cn
馒头吃多了有什么坏处hcv8jop4ns9r.cn 头孢和什么不能一起吃hcv8jop5ns1r.cn 牙龈为什么会肿痛hcv8jop4ns3r.cn 胃癌低分化是什么意思hcv8jop2ns2r.cn 子宫肌瘤有什么危害hcv8jop0ns2r.cn
百度