Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
小白菜888
Ffmpeg
提交
7ebfc0ea
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,发现更多精彩内容 >>
提交
7ebfc0ea
编写于
12月 14, 2003
作者:
M
Michael Niedermayer
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
error concealment regression test
Originally committed as revision 2606 to
svn://svn.ffmpeg.org/ffmpeg/trunk
上级
d55f7b65
变更
6
隐藏空白更改
内联
并排
Showing
6 changed file
with
45 addition
and
1 deletion
+45
-1
ffmpeg.c
ffmpeg.c
+8
-0
libavcodec/avcodec.h
libavcodec/avcodec.h
+8
-1
libavcodec/mpegvideo.c
libavcodec/mpegvideo.c
+12
-0
tests/ffmpeg.regression.ref
tests/ffmpeg.regression.ref
+3
-0
tests/regression.sh
tests/regression.sh
+11
-0
tests/rotozoom.regression.ref
tests/rotozoom.regression.ref
+3
-0
未找到文件。
ffmpeg.c
浏览文件 @
7ebfc0ea
...
@@ -125,6 +125,7 @@ static int dct_algo = 0;
...
@@ -125,6 +125,7 @@ static int dct_algo = 0;
static
int
idct_algo
=
0
;
static
int
idct_algo
=
0
;
static
int
use_part
=
0
;
static
int
use_part
=
0
;
static
int
packet_size
=
0
;
static
int
packet_size
=
0
;
static
int
error_rate
=
0
;
static
int
strict
=
0
;
static
int
strict
=
0
;
static
int
debug
=
0
;
static
int
debug
=
0
;
extern
int
loop_input
;
/* currently a hack */
extern
int
loop_input
;
/* currently a hack */
...
@@ -1855,6 +1856,11 @@ static void opt_packet_size(const char *arg)
...
@@ -1855,6 +1856,11 @@ static void opt_packet_size(const char *arg)
packet_size
=
atoi
(
arg
);
packet_size
=
atoi
(
arg
);
}
}
static
void
opt_error_rate
(
const
char
*
arg
)
{
error_rate
=
atoi
(
arg
);
}
static
void
opt_strict
(
const
char
*
arg
)
static
void
opt_strict
(
const
char
*
arg
)
{
{
strict
=
atoi
(
arg
);
strict
=
atoi
(
arg
);
...
@@ -2339,6 +2345,7 @@ static void opt_output_file(const char *filename)
...
@@ -2339,6 +2345,7 @@ static void opt_output_file(const char *filename)
video_enc
->
dct_algo
=
dct_algo
;
video_enc
->
dct_algo
=
dct_algo
;
video_enc
->
idct_algo
=
idct_algo
;
video_enc
->
idct_algo
=
idct_algo
;
video_enc
->
strict_std_compliance
=
strict
;
video_enc
->
strict_std_compliance
=
strict
;
video_enc
->
error_rate
=
error_rate
;
if
(
packet_size
){
if
(
packet_size
){
video_enc
->
rtp_mode
=
1
;
video_enc
->
rtp_mode
=
1
;
video_enc
->
rtp_payload_size
=
packet_size
;
video_enc
->
rtp_payload_size
=
packet_size
;
...
@@ -2889,6 +2896,7 @@ const OptionDef options[] = {
...
@@ -2889,6 +2896,7 @@ const OptionDef options[] = {
{
"part"
,
OPT_BOOL
|
OPT_EXPERT
|
OPT_VIDEO
,
{(
void
*
)
&
use_part
},
"use data partitioning (MPEG4)"
},
{
"part"
,
OPT_BOOL
|
OPT_EXPERT
|
OPT_VIDEO
,
{(
void
*
)
&
use_part
},
"use data partitioning (MPEG4)"
},
{
"bug"
,
HAS_ARG
|
OPT_EXPERT
|
OPT_VIDEO
,
{(
void
*
)
opt_workaround_bugs
},
"workaround not auto detected encoder bugs"
,
"param"
},
{
"bug"
,
HAS_ARG
|
OPT_EXPERT
|
OPT_VIDEO
,
{(
void
*
)
opt_workaround_bugs
},
"workaround not auto detected encoder bugs"
,
"param"
},
{
"ps"
,
HAS_ARG
|
OPT_EXPERT
,
{(
void
*
)
opt_packet_size
},
"set packet size in bits"
,
"size"
},
{
"ps"
,
HAS_ARG
|
OPT_EXPERT
,
{(
void
*
)
opt_packet_size
},
"set packet size in bits"
,
"size"
},
{
"error"
,
HAS_ARG
|
OPT_EXPERT
,
{(
void
*
)
opt_error_rate
},
"error rate"
,
"rate"
},
{
"strict"
,
HAS_ARG
|
OPT_EXPERT
|
OPT_VIDEO
,
{(
void
*
)
opt_strict
},
"how strictly to follow the standarts"
,
"strictness"
},
{
"strict"
,
HAS_ARG
|
OPT_EXPERT
|
OPT_VIDEO
,
{(
void
*
)
opt_strict
},
"how strictly to follow the standarts"
,
"strictness"
},
{
"sameq"
,
OPT_BOOL
|
OPT_VIDEO
,
{(
void
*
)
&
same_quality
},
{
"sameq"
,
OPT_BOOL
|
OPT_VIDEO
,
{(
void
*
)
&
same_quality
},
"use same video quality as source (implies VBR)"
},
"use same video quality as source (implies VBR)"
},
...
...
libavcodec/avcodec.h
浏览文件 @
7ebfc0ea
...
@@ -17,7 +17,7 @@ extern "C" {
...
@@ -17,7 +17,7 @@ extern "C" {
#define FFMPEG_VERSION_INT 0x000408
#define FFMPEG_VERSION_INT 0x000408
#define FFMPEG_VERSION "0.4.8"
#define FFMPEG_VERSION "0.4.8"
#define LIBAVCODEC_BUILD 469
5
#define LIBAVCODEC_BUILD 469
6
#define LIBAVCODEC_VERSION_INT FFMPEG_VERSION_INT
#define LIBAVCODEC_VERSION_INT FFMPEG_VERSION_INT
#define LIBAVCODEC_VERSION FFMPEG_VERSION
#define LIBAVCODEC_VERSION FFMPEG_VERSION
...
@@ -1461,6 +1461,13 @@ typedef struct AVCodecContext {
...
@@ -1461,6 +1461,13 @@ typedef struct AVCodecContext {
* - decoding: set by user.
* - decoding: set by user.
*/
*/
int
flags2
;
int
flags2
;
/**
* simulates errors in the bitstream to test error concealment.
* - encoding: set by user.
* - decoding: unused.
*/
int
error_rate
;
}
AVCodecContext
;
}
AVCodecContext
;
...
...
libavcodec/mpegvideo.c
浏览文件 @
7ebfc0ea
...
@@ -4002,6 +4002,18 @@ static void encode_picture(MpegEncContext *s, int picture_number)
...
@@ -4002,6 +4002,18 @@ static void encode_picture(MpegEncContext *s, int picture_number)
assert
((
get_bit_count
(
&
s
->
pb
)
&
7
)
==
0
);
assert
((
get_bit_count
(
&
s
->
pb
)
&
7
)
==
0
);
current_packet_size
=
pbBufPtr
(
&
s
->
pb
)
-
s
->
ptr_lastgob
;
current_packet_size
=
pbBufPtr
(
&
s
->
pb
)
-
s
->
ptr_lastgob
;
if
(
s
->
avctx
->
error_rate
&&
s
->
resync_mb_x
+
s
->
resync_mb_y
>
0
){
int
r
=
get_bit_count
(
&
s
->
pb
)
/
8
+
s
->
picture_number
+
s
->
codec_id
+
s
->
mb_x
+
s
->
mb_y
;
int
d
=
100
/
s
->
avctx
->
error_rate
;
if
(
r
%
d
==
0
){
current_packet_size
=
0
;
#ifndef ALT_BITSTREAM_WRITER
s
->
pb
.
buf_ptr
=
s
->
ptr_lastgob
;
#endif
assert
(
pbBufPtr
(
&
s
->
pb
)
==
s
->
ptr_lastgob
);
}
}
if
(
s
->
avctx
->
rtp_callback
)
if
(
s
->
avctx
->
rtp_callback
)
s
->
avctx
->
rtp_callback
(
s
->
ptr_lastgob
,
current_packet_size
,
0
);
s
->
avctx
->
rtp_callback
(
s
->
ptr_lastgob
,
current_packet_size
,
0
);
...
...
tests/ffmpeg.regression.ref
浏览文件 @
7ebfc0ea
...
@@ -38,6 +38,9 @@ stddev: 10.18 bytes:7145472
...
@@ -38,6 +38,9 @@ stddev: 10.18 bytes:7145472
b3f1425e266569d5d726b88eadc13dd4 *./data/a-mpeg4-adv.avi
b3f1425e266569d5d726b88eadc13dd4 *./data/a-mpeg4-adv.avi
fb61365b22c947adbaeab74478579020 *./data/out.yuv
fb61365b22c947adbaeab74478579020 *./data/out.yuv
stddev: 7.31 bytes:7602176
stddev: 7.31 bytes:7602176
25ec5ab399fd4db0c8aaea78cb692611 *./data/a-error-mpeg4-adv.avi
bd441fc1e2fb9a3c0bdc9c5f1ed25ef0 *./data/out.yuv
stddev: 13.57 bytes:7602176
328ebd044362116e274739e23c482ee7 *./data/a-mpeg1b.mpg
328ebd044362116e274739e23c482ee7 *./data/a-mpeg1b.mpg
41b3baa7d8c17202e6577947ac37cad0 *./data/out.yuv
41b3baa7d8c17202e6577947ac37cad0 *./data/out.yuv
stddev: 6.32 bytes:6842368
stddev: 6.32 bytes:6842368
...
...
tests/regression.sh
浏览文件 @
7ebfc0ea
...
@@ -53,6 +53,7 @@ else
...
@@ -53,6 +53,7 @@ else
do_asv2
=
y
do_asv2
=
y
do_flv
=
y
do_flv
=
y
do_ffv1
=
y
do_ffv1
=
y
do_error
=
y
fi
fi
...
@@ -243,6 +244,16 @@ do_ffmpeg $file -y -qscale 9 -4mv -hq -part -ps 200 -aic -f pgmyuv -i $raw_src -
...
@@ -243,6 +244,16 @@ do_ffmpeg $file -y -qscale 9 -4mv -hq -part -ps 200 -aic -f pgmyuv -i $raw_src -
do_ffmpeg
$raw_dst
-y
-i
$file
-f
rawvideo
$raw_dst
do_ffmpeg
$raw_dst
-y
-i
$file
-f
rawvideo
$raw_dst
fi
fi
###################################
if
[
-n
"
$do_error
"
]
;
then
# damaged mpeg4
file
=
${
outfile
}
error-mpeg4-adv.avi
do_ffmpeg
$file
-y
-qscale
7
-4mv
-mbd
2
-part
-ps
250
-error
10
-aic
-f
pgmyuv
-i
$raw_src
-an
-vcodec
mpeg4
$file
# damaged mpeg4 decoding
do_ffmpeg
$raw_dst
-y
-i
$file
-f
rawvideo
$raw_dst
fi
###################################
###################################
if
[
-n
"
$do_mpeg1b
"
]
;
then
if
[
-n
"
$do_mpeg1b
"
]
;
then
# mpeg1
# mpeg1
...
...
tests/rotozoom.regression.ref
浏览文件 @
7ebfc0ea
...
@@ -38,6 +38,9 @@ stddev: 4.20 bytes:7145472
...
@@ -38,6 +38,9 @@ stddev: 4.20 bytes:7145472
742ffadf3c309d2c4ac888a6a0905bf9 *./data/a-mpeg4-adv.avi
742ffadf3c309d2c4ac888a6a0905bf9 *./data/a-mpeg4-adv.avi
b02f71e91e9368ce94814ab3d74f91ba *./data/out.yuv
b02f71e91e9368ce94814ab3d74f91ba *./data/out.yuv
stddev: 4.97 bytes:7602176
stddev: 4.97 bytes:7602176
f2888ab759ac28aba85a16d3d54b80d0 *./data/a-error-mpeg4-adv.avi
93ab926aad2e658a5bb00c25b7cefdab *./data/out.yuv
stddev: 5.22 bytes:7602176
671802a2c5078e69f7f422765ea87f2a *./data/a-mpeg1b.mpg
671802a2c5078e69f7f422765ea87f2a *./data/a-mpeg1b.mpg
71e80b8ff8da567f1bbff000cd925627 *./data/out.yuv
71e80b8ff8da567f1bbff000cd925627 *./data/out.yuv
stddev: 4.07 bytes:6842368
stddev: 4.07 bytes:6842368
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录