Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
小白菜888
Ffmpeg
提交
b7a22d84
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,发现更多精彩内容 >>
提交
b7a22d84
编写于
1月 21, 2003
作者:
M
Michael Niedermayer
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
cleanup
Originally committed as revision 1487 to
svn://svn.ffmpeg.org/ffmpeg/trunk
上级
68f593b4
变更
5
隐藏空白更改
内联
并排
Showing
5 changed file
with
45 addition
and
25 deletion
+45
-25
libavcodec/avcodec.h
libavcodec/avcodec.h
+1
-0
libavcodec/h263dec.c
libavcodec/h263dec.c
+3
-25
libavcodec/mem.c
libavcodec/mem.c
+11
-0
libavcodec/mpegvideo.c
libavcodec/mpegvideo.c
+29
-0
libavcodec/mpegvideo.h
libavcodec/mpegvideo.h
+1
-0
未找到文件。
libavcodec/avcodec.h
浏览文件 @
b7a22d84
...
...
@@ -1236,6 +1236,7 @@ void *av_mallocz(unsigned int size);
void
av_free
(
void
*
ptr
);
void
__av_freep
(
void
**
ptr
);
#define av_freep(p) __av_freep((void **)(p))
void
*
av_fast_realloc
(
void
*
ptr
,
int
*
size
,
int
min_size
);
/* for static data only */
/* call av_free_static to release all staticaly allocated tables */
void
av_free_static
(
void
);
...
...
libavcodec/h263dec.c
浏览文件 @
b7a22d84
...
...
@@ -401,41 +401,19 @@ uint64_t time= rdtsc();
if
(
buf_size
==
0
)
{
return
0
;
}
if
(
s
->
flags
&
CODEC_FLAG_TRUNCATED
){
int
next
;
ParseContext
*
pc
=
&
s
->
parse_context
;
pc
->
last_index
=
pc
->
index
;
if
(
s
->
codec_id
==
CODEC_ID_MPEG4
){
next
=
mpeg4_find_frame_end
(
s
,
buf
,
buf_size
);
}
else
{
fprintf
(
stderr
,
"this codec doesnt support truncated bitstreams
\n
"
);
return
-
1
;
}
if
(
next
==-
1
){
if
(
buf_size
+
FF_INPUT_BUFFER_PADDING_SIZE
+
pc
->
index
>
pc
->
buffer_size
){
pc
->
buffer_size
=
buf_size
+
pc
->
index
+
10
*
1024
;
pc
->
buffer
=
realloc
(
pc
->
buffer
,
pc
->
buffer_size
);
}
memcpy
(
&
pc
->
buffer
[
pc
->
index
],
buf
,
buf_size
);
pc
->
index
+=
buf_size
;
if
(
ff_combine_frame
(
s
,
next
,
&
buf
,
&
buf_size
)
<
0
)
return
buf_size
;
}
if
(
pc
->
index
){
if
(
next
+
FF_INPUT_BUFFER_PADDING_SIZE
+
pc
->
index
>
pc
->
buffer_size
){
pc
->
buffer_size
=
next
+
pc
->
index
+
10
*
1024
;
pc
->
buffer
=
realloc
(
pc
->
buffer
,
pc
->
buffer_size
);
}
memcpy
(
&
pc
->
buffer
[
pc
->
index
],
buf
,
next
+
FF_INPUT_BUFFER_PADDING_SIZE
);
pc
->
index
=
0
;
buf
=
pc
->
buffer
;
buf_size
=
pc
->
last_index
+
next
;
}
}
retry:
...
...
libavcodec/mem.c
浏览文件 @
b7a22d84
...
...
@@ -71,6 +71,17 @@ void *av_malloc(unsigned int size)
return
ptr
;
}
/**
* realloc which does nothing if the block is large enogh
*/
void
*
av_fast_realloc
(
void
*
ptr
,
int
*
size
,
int
min_size
){
if
(
min_size
<
*
size
)
return
ptr
;
*
size
=
min_size
+
10
*
1024
;
return
realloc
(
ptr
,
*
size
);
}
/* NOTE: ptr = NULL is explicetly allowed */
void
av_free
(
void
*
ptr
)
{
...
...
libavcodec/mpegvideo.c
浏览文件 @
b7a22d84
...
...
@@ -2627,6 +2627,35 @@ static void encode_mb(MpegEncContext *s, int motion_x, int motion_y)
#endif
}
/**
* combines the (truncated) bitstream to a complete frame
* @returns -1 if no complete frame could be created
*/
int
ff_combine_frame
(
MpegEncContext
*
s
,
int
next
,
uint8_t
**
buf
,
int
*
buf_size
){
ParseContext
*
pc
=
&
s
->
parse_context
;
pc
->
last_index
=
pc
->
index
;
if
(
next
==-
1
){
pc
->
buffer
=
av_fast_realloc
(
pc
->
buffer
,
&
pc
->
buffer_size
,
(
*
buf_size
)
+
pc
->
index
+
FF_INPUT_BUFFER_PADDING_SIZE
);
memcpy
(
&
pc
->
buffer
[
pc
->
index
],
*
buf
,
*
buf_size
);
pc
->
index
+=
*
buf_size
;
return
-
1
;
}
if
(
pc
->
index
){
pc
->
buffer
=
av_fast_realloc
(
pc
->
buffer
,
&
pc
->
buffer_size
,
next
+
pc
->
index
+
FF_INPUT_BUFFER_PADDING_SIZE
);
memcpy
(
&
pc
->
buffer
[
pc
->
index
],
*
buf
,
next
+
FF_INPUT_BUFFER_PADDING_SIZE
);
pc
->
index
=
0
;
*
buf
=
pc
->
buffer
;
*
buf_size
=
pc
->
last_index
+
next
;
}
return
0
;
}
void
ff_copy_bits
(
PutBitContext
*
pb
,
UINT8
*
src
,
int
length
)
{
int
bytes
=
length
>>
4
;
...
...
libavcodec/mpegvideo.h
浏览文件 @
b7a22d84
...
...
@@ -604,6 +604,7 @@ void ff_draw_horiz_band(MpegEncContext *s);
void
ff_emulated_edge_mc
(
MpegEncContext
*
s
,
UINT8
*
src
,
int
linesize
,
int
block_w
,
int
block_h
,
int
src_x
,
int
src_y
,
int
w
,
int
h
);
char
ff_get_pict_type_char
(
int
pict_type
);
int
ff_combine_frame
(
MpegEncContext
*
s
,
int
next
,
uint8_t
**
buf
,
int
*
buf_size
);
extern
enum
PixelFormat
ff_yuv420p_list
[
2
];
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录