Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
小白菜888
Ffmpeg
提交
b3d755ec
F
Ffmpeg
项目概览
小白菜888
/
Ffmpeg
通知
3
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
F
Ffmpeg
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
b3d755ec
编写于
7月 23, 2010
作者:
D
David Conrad
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Split renorm of vp56 arith decoder to its own function
Originally committed as revision 24466 to
svn://svn.ffmpeg.org/ffmpeg/trunk
上级
24675b80
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
17 addition
and
13 deletion
+17
-13
libavcodec/vp56.h
libavcodec/vp56.h
+17
-13
未找到文件。
libavcodec/vp56.h
浏览文件 @
b3d755ec
...
...
@@ -191,16 +191,30 @@ static inline void vp56_init_range_decoder(VP56RangeCoder *c,
c
->
code_word
=
bytestream_get_be16
(
&
c
->
buffer
);
}
static
av_always_inline
void
vp56_rac_renorm
(
VP56RangeCoder
*
c
,
unsigned
int
code_word
)
{
int
shift
=
ff_h264_norm_shift
[
c
->
high
]
-
1
;
int
bits
=
c
->
bits
;
c
->
high
<<=
shift
;
code_word
<<=
shift
;
bits
+=
shift
;
if
(
bits
>=
0
&&
c
->
buffer
<
c
->
end
)
{
code_word
|=
*
c
->
buffer
++
<<
bits
;
bits
-=
8
;
}
c
->
bits
=
bits
;
c
->
code_word
=
code_word
;
}
static
inline
int
vp56_rac_get_prob
(
VP56RangeCoder
*
c
,
uint8_t
prob
)
{
/* Don't put c->high in a local variable; if we do that, gcc gets
* the stupids and turns the code below into a branch again. */
int
bits
=
c
->
bits
;
unsigned
int
code_word
=
c
->
code_word
;
unsigned
int
low
=
1
+
(((
c
->
high
-
1
)
*
prob
)
>>
8
);
unsigned
int
low_shift
=
low
<<
8
;
int
bit
=
code_word
>=
low_shift
;
int
shift
;
/* Incantation to convince GCC to turn these into conditional moves
* instead of branches -- faster, as this branch is basically
...
...
@@ -208,17 +222,7 @@ static inline int vp56_rac_get_prob(VP56RangeCoder *c, uint8_t prob)
c
->
high
=
bit
?
c
->
high
-
low
:
low
;
code_word
=
bit
?
code_word
-
low_shift
:
code_word
;
/* normalize */
shift
=
ff_h264_norm_shift
[
c
->
high
]
-
1
;
c
->
high
<<=
shift
;
code_word
<<=
shift
;
bits
+=
shift
;
if
(
bits
>=
0
&&
c
->
buffer
<
c
->
end
)
{
code_word
|=
*
c
->
buffer
++
<<
bits
;
bits
-=
8
;
}
c
->
bits
=
bits
;
c
->
code_word
=
code_word
;
vp56_rac_renorm
(
c
,
code_word
);
return
bit
;
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录