Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
小白菜888
Ffmpeg
提交
dbb45a3b
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,发现更多精彩内容 >>
提交
dbb45a3b
编写于
7月 16, 2006
作者:
M
Michael Niedermayer
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
log prediction order search method
Originally committed as revision 5763 to
svn://svn.ffmpeg.org/ffmpeg/trunk
上级
26053bdc
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
24 addition
and
1 deletion
+24
-1
libavcodec/flacenc.c
libavcodec/flacenc.c
+24
-1
未找到文件。
libavcodec/flacenc.c
浏览文件 @
dbb45a3b
...
...
@@ -43,6 +43,7 @@
#define ORDER_METHOD_4LEVEL 2
#define ORDER_METHOD_8LEVEL 3
#define ORDER_METHOD_SEARCH 4
#define ORDER_METHOD_LOG 5
#define FLAC_STREAMINFO_SIZE 34
...
...
@@ -291,7 +292,7 @@ static int flac_encode_init(AVCodecContext *avctx)
s
->
options
.
min_prediction_order
,
s
->
options
.
max_prediction_order
);
if
(
avctx
->
prediction_order_method
>=
0
)
{
if
(
avctx
->
prediction_order_method
>
ORDER_METHOD_
SEARCH
)
{
if
(
avctx
->
prediction_order_method
>
ORDER_METHOD_
LOG
)
{
av_log
(
avctx
,
AV_LOG_ERROR
,
"invalid prediction order method: %d
\n
"
,
avctx
->
prediction_order_method
);
return
-
1
;
...
...
@@ -309,6 +310,8 @@ static int flac_encode_init(AVCodecContext *avctx)
"8-level"
);
break
;
case
ORDER_METHOD_SEARCH
:
av_log
(
avctx
,
AV_LOG_DEBUG
,
" order method: %s
\n
"
,
"full search"
);
break
;
case
ORDER_METHOD_LOG
:
av_log
(
avctx
,
AV_LOG_DEBUG
,
" order method: %s
\n
"
,
"log search"
);
break
;
}
if
(
avctx
->
min_partition_order
>=
0
)
{
...
...
@@ -951,6 +954,26 @@ static int encode_residual(FlacEncodeContext *ctx, int ch)
}
}
opt_order
++
;
}
else
if
(
omethod
==
ORDER_METHOD_LOG
)
{
uint32_t
bits
[
MAX_LPC_ORDER
];
int
step
;
opt_order
=
min_order
-
1
+
(
max_order
-
min_order
)
/
3
;
memset
(
bits
,
-
1
,
sizeof
(
bits
));
for
(
step
=
16
;
step
;
step
>>=
1
){
int
last
=
opt_order
;
for
(
i
=
last
-
step
;
i
<=
last
+
step
;
i
+=
step
){
if
(
i
<
min_order
-
1
||
i
>=
max_order
||
bits
[
i
]
<
UINT32_MAX
)
continue
;
encode_residual_lpc
(
res
,
smp
,
n
,
i
+
1
,
coefs
[
i
],
shift
[
i
]);
bits
[
i
]
=
calc_rice_params_lpc
(
&
sub
->
rc
,
min_porder
,
max_porder
,
res
,
n
,
i
+
1
,
sub
->
obits
,
precision
);
if
(
bits
[
i
]
<
bits
[
opt_order
])
opt_order
=
i
;
}
}
opt_order
++
;
}
sub
->
order
=
opt_order
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录