Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
小白菜888
Ffmpeg
提交
8fcdd831
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,发现更多精彩内容 >>
提交
8fcdd831
编写于
3月 21, 2006
作者:
M
Michael Niedermayer
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fixing current_sample vs. next_sample mess
Originally committed as revision 5190 to
svn://svn.ffmpeg.org/ffmpeg/trunk
上级
348efc18
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
16 addition
and
10 deletion
+16
-10
libavformat/mov.c
libavformat/mov.c
+16
-10
未找到文件。
libavformat/mov.c
浏览文件 @
8fcdd831
...
...
@@ -1693,6 +1693,7 @@ static int mov_read_packet(AVFormatContext *s, AVPacket *pkt)
int64_t
offset
=
INT64_MAX
;
int64_t
best_dts
=
INT64_MAX
;
int
i
,
a
,
b
,
m
;
int
next_sample
=
-
99
;
int
size
;
int
idx
;
size
=
0x0FFFFFFF
;
...
...
@@ -1708,7 +1709,8 @@ static int mov_read_packet(AVFormatContext *s, AVPacket *pkt)
//size = (sc->sample_size)?sc->sample_size:sc->sample_sizes[sc->current_sample];
size
=
(
sc
->
sample_size
>
1
)
?
sc
->
sample_size
:
sc
->
sample_sizes
[
sc
->
current_sample
];
sc
->
current_sample
++
;
next_sample
=
sc
->
current_sample
+
1
;
sc
->
left_in_chunk
--
;
if
(
sc
->
left_in_chunk
<=
0
)
...
...
@@ -1734,13 +1736,13 @@ again:
int
time
=
msc
->
sample_to_time_time
;
int
duration
=
msc
->
stts_data
[
index
].
duration
;
int
count
=
msc
->
stts_data
[
index
].
count
;
if
(
sample
+
count
<
msc
->
current_sample
)
{
if
(
sample
+
count
<
=
msc
->
current_sample
)
{
sample
+=
count
;
time
+=
count
*
duration
;
index
++
;
duration
=
msc
->
stts_data
[
index
].
duration
;
}
dts
=
time
+
(
msc
->
current_sample
-
1
-
sample
)
*
(
int64_t
)
duration
;
dts
=
time
+
(
msc
->
current_sample
-
sample
)
*
(
int64_t
)
duration
;
dts
=
av_rescale
(
dts
,
AV_TIME_BASE
,
msc
->
time_scale
);
dprintf
(
"stream: %d dts: %"
PRId64
" best_dts: %"
PRId64
" offset: %"
PRId64
"
\n
"
,
i
,
dts
,
best_dts
,
offset
);
if
(
dts
<
best_dts
){
...
...
@@ -1817,10 +1819,11 @@ again:
size
=
(
sc
->
sample_size
>
1
)
?
sc
->
sample_size
:
sc
->
sample_sizes
[
sc
->
current_sample
];
}
sc
->
current_sample
++
;
}
else
if
(
idx
+
1
<
sc
->
sample_to_chunk_sz
){
sc
->
current_sample
+=
sc
->
sample_to_chunk
[
idx
].
count
;
}
next_sample
=
sc
->
current_sample
+
1
;
}
else
if
(
idx
<
sc
->
sample_to_chunk_sz
){
next_sample
=
sc
->
current_sample
+
sc
->
sample_to_chunk
[
idx
].
count
;
}
else
next_sample
=
sc
->
current_sample
;
readchunk:
dprintf
(
"chunk: %"
PRId64
" -> %"
PRId64
" (%i)
\n
"
,
offset
,
offset
+
size
,
size
);
...
...
@@ -1864,19 +1867,19 @@ readchunk:
uint64_t
dts
,
pts
;
unsigned
int
duration
=
sc
->
stts_data
[
sc
->
sample_to_time_index
].
duration
;
count
=
sc
->
stts_data
[
sc
->
sample_to_time_index
].
count
;
if
((
sc
->
sample_to_time_sample
+
count
)
<
sc
->
current_sample
)
{
if
((
sc
->
sample_to_time_sample
+
count
)
<
=
sc
->
current_sample
)
{
sc
->
sample_to_time_sample
+=
count
;
sc
->
sample_to_time_time
+=
count
*
duration
;
sc
->
sample_to_time_index
++
;
duration
=
sc
->
stts_data
[
sc
->
sample_to_time_index
].
duration
;
}
dts
=
sc
->
sample_to_time_time
+
(
sc
->
current_sample
-
1
-
sc
->
sample_to_time_sample
)
*
(
int64_t
)
duration
;
dts
=
sc
->
sample_to_time_time
+
(
sc
->
current_sample
-
sc
->
sample_to_time_sample
)
*
(
int64_t
)
duration
;
/* find the corresponding pts */
if
(
sc
->
sample_to_ctime_index
<
sc
->
ctts_count
)
{
int
duration
=
sc
->
ctts_data
[
sc
->
sample_to_ctime_index
].
duration
;
int
count
=
sc
->
ctts_data
[
sc
->
sample_to_ctime_index
].
count
;
if
((
sc
->
sample_to_ctime_sample
+
count
)
<
sc
->
current_sample
)
{
if
((
sc
->
sample_to_ctime_sample
+
count
)
<
=
sc
->
current_sample
)
{
sc
->
sample_to_ctime_sample
+=
count
;
sc
->
sample_to_ctime_index
++
;
duration
=
sc
->
ctts_data
[
sc
->
sample_to_ctime_index
].
duration
;
...
...
@@ -1901,6 +1904,9 @@ readchunk:
,
duration
);
}
assert
(
next_sample
>=
0
);
sc
->
current_sample
=
next_sample
;
return
0
;
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录