Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
小白菜888
Ffmpeg
提交
df99755b
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,发现更多精彩内容 >>
提交
df99755b
编写于
3月 11, 2003
作者:
M
Michael Niedermayer
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fixing parsing of opendml avis
Originally committed as revision 1662 to
svn://svn.ffmpeg.org/ffmpeg/trunk
上级
a77146ab
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
41 addition
and
28 deletion
+41
-28
libavformat/avidec.c
libavformat/avidec.c
+41
-28
未找到文件。
libavformat/avidec.c
浏览文件 @
df99755b
...
...
@@ -222,38 +222,51 @@ static int avi_read_packet(AVFormatContext *s, AVPacket *pkt)
{
AVIContext
*
avi
=
s
->
priv_data
;
ByteIOContext
*
pb
=
&
s
->
pb
;
int
n
,
d1
,
d2
,
size
;
find_next:
if
(
url_feof
(
pb
)
||
url_ftell
(
pb
)
>=
avi
->
movi_end
)
return
-
1
;
d1
=
get_byte
(
pb
);
if
(
d1
<
'0'
||
d1
>
'9'
)
goto
find_next
;
d2
=
get_byte
(
pb
);
if
(
d2
<
'0'
||
d2
>
'9'
)
goto
find_next
;
n
=
(
d1
-
'0'
)
*
10
+
(
d2
-
'0'
);
if
(
n
<
0
||
n
>=
s
->
nb_streams
)
goto
find_next
;
int
n
,
d
[
8
],
size
,
i
;
d1
=
get_byte
(
pb
);
d2
=
get_byte
(
pb
);
if
((
d1
!=
'd'
&&
d2
!=
'c'
)
&&
(
d1
!=
'w'
&&
d2
!=
'b'
))
goto
find_next
;
size
=
get_le32
(
pb
);
av_new_packet
(
pkt
,
size
);
pkt
->
stream_index
=
n
;
memset
(
d
,
-
1
,
sizeof
(
int
)
*
8
);
get_buffer
(
pb
,
pkt
->
data
,
pkt
->
size
);
for
(
i
=
url_ftell
(
pb
);
(
!
url_feof
(
pb
))
&&
i
<
avi
->
movi_end
;
i
++
){
int
j
;
if
(
size
&
1
)
get_byte
(
pb
);
for
(
j
=
0
;
j
<
7
;
j
++
)
d
[
j
]
=
d
[
j
+
1
];
d
[
7
]
=
get_byte
(
pb
);
size
=
d
[
4
]
+
(
d
[
5
]
<<
8
)
+
(
d
[
6
]
<<
16
)
+
(
d
[
7
]
<<
24
);
//parse ix##
n
=
(
d
[
2
]
-
'0'
)
*
10
+
(
d
[
3
]
-
'0'
);
if
(
d
[
2
]
>=
'0'
&&
d
[
2
]
<=
'9'
&&
d
[
3
]
>=
'0'
&&
d
[
3
]
<=
'9'
&&
d
[
0
]
==
'i'
&&
d
[
1
]
==
'x'
&&
n
<
s
->
nb_streams
&&
i
+
size
<=
avi
->
movi_end
){
url_fskip
(
pb
,
size
);
}
//parse ##dc/##wb
n
=
(
d
[
0
]
-
'0'
)
*
10
+
(
d
[
1
]
-
'0'
);
if
(
d
[
0
]
>=
'0'
&&
d
[
0
]
<=
'9'
&&
d
[
1
]
>=
'0'
&&
d
[
1
]
<=
'9'
&&
((
d
[
2
]
==
'd'
&&
d
[
3
]
==
'c'
)
||
(
d
[
2
]
==
'w'
&&
d
[
3
]
==
'b'
))
&&
n
<
s
->
nb_streams
&&
i
+
size
<=
avi
->
movi_end
){
av_new_packet
(
pkt
,
size
);
pkt
->
stream_index
=
n
;
return
0
;
get_buffer
(
pb
,
pkt
->
data
,
pkt
->
size
);
if
(
size
&
1
)
get_byte
(
pb
);
return
0
;
}
}
return
-
1
;
}
static
int
avi_read_close
(
AVFormatContext
*
s
)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录