Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
NotesChapter
ijkplayer
提交
5da75245
I
ijkplayer
项目概览
NotesChapter
/
ijkplayer
与 Fork 源项目一致
从无法访问的项目Fork
通知
5
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
I
ijkplayer
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
5da75245
编写于
6月 27, 2013
作者:
Z
Zhang Rui
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
ffplay: start only after prepared
上级
d716cf67
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
23 addition
and
11 deletion
+23
-11
ijkmediaplayer/jni/ijkplayer/ff_ffplay.c
ijkmediaplayer/jni/ijkplayer/ff_ffplay.c
+19
-11
ijkmediaplayer/jni/ijkplayer/ff_ffplay_def.h
ijkmediaplayer/jni/ijkplayer/ff_ffplay_def.h
+4
-0
未找到文件。
ijkmediaplayer/jni/ijkplayer/ff_ffplay.c
浏览文件 @
5da75245
...
...
@@ -1565,7 +1565,6 @@ static int read_thread(void *arg)
AVDictionary
**
opts
;
int
orig_nb_streams
;
SDL_mutex
*
wait_mutex
=
SDL_CreateMutex
();
bool
prepared
=
false
;
int
last_error
=
0
;
memset
(
st_index
,
-
1
,
sizeof
(
st_index
));
...
...
@@ -1687,13 +1686,16 @@ static int read_thread(void *arg)
if
(
ffp
->
infinite_buffer
<
0
&&
is
->
realtime
)
ffp
->
infinite_buffer
=
1
;
prepared
=
true
;
ffp
->
prepared
=
true
;
ffp_notify_msg
(
ffp
,
FFP_MSG_PREPARED
,
0
,
0
);
if
(
is
->
video_st
&&
is
->
video_st
->
codec
)
{
AVCodecContext
*
avctx
=
is
->
video_st
->
codec
;
ffp_notify_msg
(
ffp
,
FFP_MSG_VIDEO_SIZE_CHANGED
,
avctx
->
width
,
avctx
->
height
);
ffp_notify_msg
(
ffp
,
FFP_MSG_SAR_CHANGED
,
avctx
->
sample_aspect_ratio
.
num
,
avctx
->
sample_aspect_ratio
.
den
);
}
if
(
ffp
->
start_on_prepared
)
{
ffp_start_l
(
ffp
);
}
for
(;;)
{
if
(
is
->
abort_request
)
...
...
@@ -1861,7 +1863,7 @@ fail:
avformat_close_input
(
&
is
->
ic
);
}
if
(
!
prepared
||
!
is
->
abort_request
)
{
if
(
!
ffp
->
prepared
||
!
is
->
abort_request
)
{
ffp
->
last_error
=
last_error
;
ffp_notify_msg
(
ffp
,
FFP_MSG_ERROR
,
last_error
,
0
);
}
...
...
@@ -2112,16 +2114,20 @@ int ffp_start_l(FFPlayer *ffp)
if
(
!
is
)
return
EIJK_NULL_IS_PTR
;
if
(
is
->
paused
)
{
is
->
frame_timer
+=
av_gettime
()
/
1000000
.
0
+
is
->
video_current_pts_drift
-
is
->
video_current_pts
;
if
(
is
->
read_pause_return
!=
AVERROR
(
ENOSYS
))
{
is
->
video_current_pts
=
is
->
video_current_pts_drift
+
av_gettime
()
/
1000000
.
0
;
ffp
->
start_on_prepared
=
true
;
if
(
ffp
->
prepared
)
{
if
(
is
->
paused
)
{
is
->
frame_timer
+=
av_gettime
()
/
1000000
.
0
+
is
->
video_current_pts_drift
-
is
->
video_current_pts
;
if
(
is
->
read_pause_return
!=
AVERROR
(
ENOSYS
))
{
is
->
video_current_pts
=
is
->
video_current_pts_drift
+
av_gettime
()
/
1000000
.
0
;
}
is
->
video_current_pts_drift
=
is
->
video_current_pts
-
av_gettime
()
/
1000000
.
0
;
}
is
->
video_current_pts_drift
=
is
->
video_current_pts
-
av_gettime
()
/
1000000
.
0
;
update_external_clock_pts
(
is
,
get_external_clock
(
is
));
is
->
paused
=
0
;
SDL_AoutPauseAudio
(
ffp
->
aout
,
is
->
paused
);
}
update_external_clock_pts
(
is
,
get_external_clock
(
is
));
is
->
paused
=
0
;
SDL_AoutPauseAudio
(
ffp
->
aout
,
is
->
paused
);
return
0
;
}
...
...
@@ -2134,6 +2140,8 @@ int ffp_pause_l(FFPlayer *ffp)
update_external_clock_pts
(
is
,
get_external_clock
(
is
));
is
->
paused
=
1
;
SDL_AoutPauseAudio
(
ffp
->
aout
,
is
->
paused
);
ffp
->
start_on_prepared
=
false
;
return
0
;
}
...
...
ijkmediaplayer/jni/ijkplayer/ff_ffplay_def.h
浏览文件 @
5da75245
...
...
@@ -400,6 +400,8 @@ typedef struct FFPlayer {
enum
AVPixelFormat
pic_format
;
int
last_error
;
int
prepared
;
int
start_on_prepared
;
MessageQueue
msg_queue
;
}
FFPlayer
;
...
...
@@ -472,6 +474,8 @@ inline static void ffp_reset_internal(FFPlayer *ffp)
ffp
->
pic_format
=
AV_PIX_FMT_BGR32
;
ffp
->
last_error
=
0
;
ffp
->
prepared
=
0
;
ffp
->
start_on_prepared
=
0
;
msg_queue_flush
(
&
ffp
->
msg_queue
);
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录