Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
小白菜888
Ffmpeg
提交
d0271e8a
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,发现更多精彩内容 >>
提交
d0271e8a
编写于
12月 07, 2004
作者:
M
Michael Niedermayer
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
rv20 encoding
Originally committed as revision 3739 to
svn://svn.ffmpeg.org/ffmpeg/trunk
上级
37e85dac
变更
5
显示空白变更内容
内联
并排
Showing
5 changed file
with
64 addition
and
2 deletion
+64
-2
libavcodec/allcodecs.c
libavcodec/allcodecs.c
+1
-0
libavcodec/mpegvideo.c
libavcodec/mpegvideo.c
+25
-0
libavcodec/mpegvideo.h
libavcodec/mpegvideo.h
+1
-0
libavcodec/rv10.c
libavcodec/rv10.c
+29
-0
libavformat/rm.c
libavformat/rm.c
+8
-2
未找到文件。
libavcodec/allcodecs.c
浏览文件 @
d0271e8a
...
@@ -64,6 +64,7 @@ void avcodec_register_all(void)
...
@@ -64,6 +64,7 @@ void avcodec_register_all(void)
register_avcodec
(
&
h263p_encoder
);
register_avcodec
(
&
h263p_encoder
);
register_avcodec
(
&
flv_encoder
);
register_avcodec
(
&
flv_encoder
);
register_avcodec
(
&
rv10_encoder
);
register_avcodec
(
&
rv10_encoder
);
register_avcodec
(
&
rv20_encoder
);
register_avcodec
(
&
mpeg4_encoder
);
register_avcodec
(
&
mpeg4_encoder
);
register_avcodec
(
&
msmpeg4v1_encoder
);
register_avcodec
(
&
msmpeg4v1_encoder
);
register_avcodec
(
&
msmpeg4v2_encoder
);
register_avcodec
(
&
msmpeg4v2_encoder
);
...
...
libavcodec/mpegvideo.c
浏览文件 @
d0271e8a
...
@@ -1120,6 +1120,16 @@ int MPV_encode_init(AVCodecContext *avctx)
...
@@ -1120,6 +1120,16 @@ int MPV_encode_init(AVCodecContext *avctx)
avctx
->
delay
=
0
;
avctx
->
delay
=
0
;
s
->
low_delay
=
1
;
s
->
low_delay
=
1
;
break
;
break
;
case
CODEC_ID_RV20
:
s
->
out_format
=
FMT_H263
;
avctx
->
delay
=
0
;
s
->
low_delay
=
1
;
s
->
modified_quant
=
1
;
s
->
h263_aic
=
1
;
s
->
h263_plus
=
1
;
s
->
loop_filter
=
1
;
s
->
unrestricted_mv
=
s
->
obmc
||
s
->
loop_filter
||
s
->
umvplus
;
break
;
case
CODEC_ID_MPEG4
:
case
CODEC_ID_MPEG4
:
s
->
out_format
=
FMT_H263
;
s
->
out_format
=
FMT_H263
;
s
->
h263_pred
=
1
;
s
->
h263_pred
=
1
;
...
@@ -4150,6 +4160,7 @@ static void encode_mb(MpegEncContext *s, int motion_x, int motion_y)
...
@@ -4150,6 +4160,7 @@ static void encode_mb(MpegEncContext *s, int motion_x, int motion_y)
case
CODEC_ID_H263P
:
case
CODEC_ID_H263P
:
case
CODEC_ID_FLV1
:
case
CODEC_ID_FLV1
:
case
CODEC_ID_RV10
:
case
CODEC_ID_RV10
:
case
CODEC_ID_RV20
:
h263_encode_mb
(
s
,
s
->
block
,
motion_x
,
motion_y
);
break
;
h263_encode_mb
(
s
,
s
->
block
,
motion_x
,
motion_y
);
break
;
#endif
#endif
case
CODEC_ID_MJPEG
:
case
CODEC_ID_MJPEG
:
...
@@ -4175,6 +4186,8 @@ void ff_mpeg_flush(AVCodecContext *avctx){
...
@@ -4175,6 +4186,8 @@ void ff_mpeg_flush(AVCodecContext *avctx){
}
}
s
->
current_picture_ptr
=
s
->
last_picture_ptr
=
s
->
next_picture_ptr
=
NULL
;
s
->
current_picture_ptr
=
s
->
last_picture_ptr
=
s
->
next_picture_ptr
=
NULL
;
s
->
mb_x
=
s
->
mb_y
=
0
;
s
->
parse_context
.
state
=
-
1
;
s
->
parse_context
.
state
=
-
1
;
s
->
parse_context
.
frame_start_found
=
0
;
s
->
parse_context
.
frame_start_found
=
0
;
s
->
parse_context
.
overread
=
0
;
s
->
parse_context
.
overread
=
0
;
...
@@ -5255,6 +5268,8 @@ static void encode_picture(MpegEncContext *s, int picture_number)
...
@@ -5255,6 +5268,8 @@ static void encode_picture(MpegEncContext *s, int picture_number)
mpeg4_encode_picture_header
(
s
,
picture_number
);
mpeg4_encode_picture_header
(
s
,
picture_number
);
else
if
(
s
->
codec_id
==
CODEC_ID_RV10
)
else
if
(
s
->
codec_id
==
CODEC_ID_RV10
)
rv10_encode_picture_header
(
s
,
picture_number
);
rv10_encode_picture_header
(
s
,
picture_number
);
else
if
(
s
->
codec_id
==
CODEC_ID_RV20
)
rv20_encode_picture_header
(
s
,
picture_number
);
else
if
(
s
->
codec_id
==
CODEC_ID_FLV1
)
else
if
(
s
->
codec_id
==
CODEC_ID_FLV1
)
ff_flv_encode_picture_header
(
s
,
picture_number
);
ff_flv_encode_picture_header
(
s
,
picture_number
);
else
else
...
@@ -6379,6 +6394,16 @@ AVCodec rv10_encoder = {
...
@@ -6379,6 +6394,16 @@ AVCodec rv10_encoder = {
MPV_encode_end
,
MPV_encode_end
,
};
};
AVCodec
rv20_encoder
=
{
"rv20"
,
CODEC_TYPE_VIDEO
,
CODEC_ID_RV20
,
sizeof
(
MpegEncContext
),
MPV_encode_init
,
MPV_encode_picture
,
MPV_encode_end
,
};
AVCodec
mpeg4_encoder
=
{
AVCodec
mpeg4_encoder
=
{
"mpeg4"
,
"mpeg4"
,
CODEC_TYPE_VIDEO
,
CODEC_TYPE_VIDEO
,
...
...
libavcodec/mpegvideo.h
浏览文件 @
d0271e8a
...
@@ -932,6 +932,7 @@ int ff_mpeg4_find_frame_end(ParseContext *pc, const uint8_t *buf, int buf_size);
...
@@ -932,6 +932,7 @@ int ff_mpeg4_find_frame_end(ParseContext *pc, const uint8_t *buf, int buf_size);
/* rv10.c */
/* rv10.c */
void
rv10_encode_picture_header
(
MpegEncContext
*
s
,
int
picture_number
);
void
rv10_encode_picture_header
(
MpegEncContext
*
s
,
int
picture_number
);
int
rv_decode_dc
(
MpegEncContext
*
s
,
int
n
);
int
rv_decode_dc
(
MpegEncContext
*
s
,
int
n
);
void
rv20_encode_picture_header
(
MpegEncContext
*
s
,
int
picture_number
);
/* msmpeg4.c */
/* msmpeg4.c */
...
...
libavcodec/rv10.c
浏览文件 @
d0271e8a
...
@@ -258,6 +258,35 @@ void rv10_encode_picture_header(MpegEncContext *s, int picture_number)
...
@@ -258,6 +258,35 @@ void rv10_encode_picture_header(MpegEncContext *s, int picture_number)
put_bits
(
&
s
->
pb
,
3
,
0
);
/* ignored */
put_bits
(
&
s
->
pb
,
3
,
0
);
/* ignored */
}
}
void
rv20_encode_picture_header
(
MpegEncContext
*
s
,
int
picture_number
){
put_bits
(
&
s
->
pb
,
2
,
s
->
pict_type
);
//I 0 vs. 1 ?
put_bits
(
&
s
->
pb
,
1
,
0
);
/* unknown bit */
put_bits
(
&
s
->
pb
,
5
,
s
->
qscale
);
put_bits
(
&
s
->
pb
,
8
,
picture_number
&
0xFF
);
//FIXME wrong, but correct is not known
s
->
mb_x
=
s
->
mb_y
=
0
;
ff_h263_encode_mba
(
s
);
put_bits
(
&
s
->
pb
,
1
,
s
->
no_rounding
);
assert
(
s
->
f_code
==
1
);
assert
(
s
->
unrestricted_mv
==
1
);
// assert(s->h263_aic== (s->pict_type == I_TYPE));
assert
(
s
->
alt_inter_vlc
==
0
);
assert
(
s
->
umvplus
==
0
);
assert
(
s
->
modified_quant
==
1
);
assert
(
s
->
loop_filter
==
1
);
s
->
h263_aic
=
s
->
pict_type
==
I_TYPE
;
if
(
s
->
h263_aic
){
s
->
y_dc_scale_table
=
s
->
c_dc_scale_table
=
ff_aic_dc_scale_table
;
}
else
{
s
->
y_dc_scale_table
=
s
->
c_dc_scale_table
=
ff_mpeg1_dc_scale_table
;
}
}
static
int
get_num
(
GetBitContext
*
gb
)
static
int
get_num
(
GetBitContext
*
gb
)
{
{
int
n
,
n1
;
int
n
,
n1
;
...
...
libavformat/rm.c
浏览文件 @
d0271e8a
...
@@ -230,7 +230,10 @@ static void rv10_write_header(AVFormatContext *ctx,
...
@@ -230,7 +230,10 @@ static void rv10_write_header(AVFormatContext *ctx,
}
else
{
}
else
{
/* video codec info */
/* video codec info */
put_be32
(
s
,
34
);
/* size */
put_be32
(
s
,
34
);
/* size */
if
(
stream
->
enc
->
codec_id
==
CODEC_ID_RV10
)
put_tag
(
s
,
"VIDORV10"
);
put_tag
(
s
,
"VIDORV10"
);
else
put_tag
(
s
,
"VIDORV20"
);
put_be16
(
s
,
stream
->
enc
->
width
);
put_be16
(
s
,
stream
->
enc
->
width
);
put_be16
(
s
,
stream
->
enc
->
height
);
put_be16
(
s
,
stream
->
enc
->
height
);
put_be16
(
s
,
(
int
)
stream
->
frame_rate
);
/* frames per seconds ? */
put_be16
(
s
,
(
int
)
stream
->
frame_rate
);
/* frames per seconds ? */
...
@@ -241,7 +244,10 @@ static void rv10_write_header(AVFormatContext *ctx,
...
@@ -241,7 +244,10 @@ static void rv10_write_header(AVFormatContext *ctx,
/* Seems to be the codec version: only use basic H263. The next
/* Seems to be the codec version: only use basic H263. The next
versions seems to add a diffential DC coding as in
versions seems to add a diffential DC coding as in
MPEG... nothing new under the sun */
MPEG... nothing new under the sun */
if
(
stream
->
enc
->
codec_id
==
CODEC_ID_RV10
)
put_be32
(
s
,
0x10000000
);
put_be32
(
s
,
0x10000000
);
else
put_be32
(
s
,
0x20103001
);
//put_be32(s,0x10003000);
//put_be32(s,0x10003000);
}
}
}
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录