Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
NotesChapter
ijkplayer
提交
a9241eeb
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,发现更多精彩内容 >>
提交
a9241eeb
编写于
6月 17, 2013
作者:
Z
Zhang Rui
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
ijkplayer: add ijkff_seek_to
上级
8189163c
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
23 addition
and
16 deletion
+23
-16
ijkmediaplayer/jni/ijkplayer/ff_ffplay.c
ijkmediaplayer/jni/ijkplayer/ff_ffplay.c
+11
-6
ijkmediaplayer/jni/ijkplayer/ff_ffplay.h
ijkmediaplayer/jni/ijkplayer/ff_ffplay.h
+3
-3
ijkmediaplayer/jni/ijkplayer/ijkplayer.c
ijkmediaplayer/jni/ijkplayer/ijkplayer.c
+9
-7
未找到文件。
ijkmediaplayer/jni/ijkplayer/ff_ffplay.c
浏览文件 @
a9241eeb
...
...
@@ -2480,7 +2480,7 @@ void ijkff_destroy_ffplayer(FFPlayer **pffp)
*
pffp
=
NULL
;
}
int
ijkff_
stream_open
_l
(
FFPlayer
*
ffp
,
const
char
*
file_name
)
int
ijkff_
prepare_async
_l
(
FFPlayer
*
ffp
,
const
char
*
file_name
)
{
assert
(
ffp
);
assert
(
!
ffp
->
is
);
...
...
@@ -2488,7 +2488,7 @@ int ijkff_stream_open_l(FFPlayer *ffp, const char *file_name)
VideoState
*
is
=
stream_open
(
ffp
,
file_name
,
NULL
);
if
(
!
is
)
{
av_log
(
NULL
,
AV_LOG_WARNING
,
"ijkff_
stream_open
_l: stream_open failed OOM"
);
av_log
(
NULL
,
AV_LOG_WARNING
,
"ijkff_
prepare_async
_l: stream_open failed OOM"
);
return
EIJK_OUT_OF_MEMORY
;
}
...
...
@@ -2538,7 +2538,7 @@ int ijkff_stop_l(FFPlayer *ffp)
return
0
;
}
int
ijkff_wait_stop
(
FFPlayer
*
ffp
)
int
ijkff_wait_stop
_l
(
FFPlayer
*
ffp
)
{
assert
(
ffp
);
VideoState
*
is
=
ffp
->
is
;
...
...
@@ -2557,11 +2557,16 @@ int ijkff_seek_to_l(FFPlayer *ffp, long msec)
if
(
!
is
)
return
EIJK_NULL_IS_PTR
;
int64_t
seek_pos
=
milliseconds_to_fftime
(
msec
);
int64_t
start_time
=
is
->
ic
->
start_time
;
if
(
start_time
>
0
)
seek_pos
+=
start_time
;
// FIXME: thread-safe
// FIXME: seek by bytes
// FIXME: seek out of range
// FIXME: seekable
stream_seek
(
ffp
,
milliseconds_to_fftime
(
msec
)
,
0
,
0
);
stream_seek
(
is
,
seek_pos
,
0
,
0
);
return
0
;
}
...
...
@@ -2580,7 +2585,7 @@ long ijkff_get_current_position_l(FFPlayer *ffp)
if
(
pos
<
0
||
pos
<
start_time
)
return
0
;
int64_t
adjust_post
=
pos
-
start_time
;
int64_t
adjust_post
=
pos
-
start_time
>
0
?
start_time
:
0
;
return
fftime_to_milliseconds
(
adjust_post
);
}
...
...
@@ -2596,6 +2601,6 @@ long ijkff_get_duration_l(FFPlayer *ffp)
if
(
duration
<
0
||
duration
<
start_time
)
return
0
;
int64_t
adjust_duration
=
duration
-
start_time
;
int64_t
adjust_duration
=
duration
-
start_time
>
0
?
start_time
:
0
;
return
fftime_to_milliseconds
(
adjust_duration
);
}
ijkmediaplayer/jni/ijkplayer/ff_ffplay.h
浏览文件 @
a9241eeb
...
...
@@ -31,14 +31,14 @@ void ijkff_global_uninit();
void
ijkff_destroy_ffplayer
(
FFPlayer
**
pffp
);
int
ijkff_
stream_open
_l
(
FFPlayer
*
ffp
,
const
char
*
file_name
);
int
ijkff_
prepare_async
_l
(
FFPlayer
*
ffp
,
const
char
*
file_name
);
int
ijkff_start_l
(
FFPlayer
*
ffp
);
int
ijkff_pause_l
(
FFPlayer
*
ffp
);
int
ijkff_stop_l
(
FFPlayer
*
ffp
);
int
ijkff_wait_stop
(
FFPlayer
*
ffp
);
int
ijkff_wait_stop
_l
(
FFPlayer
*
ffp
);
/* all in milliseconds */
int
ijkff_seek_to_l
(
IjkMediaPlayer
*
m
p
,
long
msec
);
int
ijkff_seek_to_l
(
FFPlayer
*
ff
p
,
long
msec
);
long
ijkff_get_current_position_l
(
FFPlayer
*
ffp
);
long
ijkff_get_duration_l
(
FFPlayer
*
ffp
);
...
...
ijkmediaplayer/jni/ijkplayer/ijkplayer.c
浏览文件 @
a9241eeb
...
...
@@ -106,13 +106,18 @@ void ijkmp_reset(IjkMediaPlayer *mp)
{
assert
(
mp
);
ijkmp_stop
(
mp
);
pthread_mutex_lock
(
&
mp
->
mutex
);
ijkff_stop_l
(
mp
->
ffplayer
);
/* FIXME: try to avoid dead-lock */
ijkff_wait_stop_l
(
mp
->
ffplayer
);
ijkff_reset
(
mp
->
ffplayer
);
free
(
mp
->
data_source
);
mp
->
data_source
=
NULL
;
mp
->
mp_state
=
MP_STATE_IDLE
;
pthread_mutex_unlock
(
&
mp
->
mutex
);
}
void
ijkmp_inc_ref
(
IjkMediaPlayer
*
mp
)
...
...
@@ -189,7 +194,7 @@ static int ijkmp_prepare_async_l(IjkMediaPlayer *mp)
assert
(
mp
->
data_source
);
mp
->
mp_state
=
MP_STATE_ASYNC_PREPARING
;
int
retval
=
ijkff_
stream_open
_l
(
mp
->
ffplayer
,
mp
->
data_source
);
int
retval
=
ijkff_
prepare_async
_l
(
mp
->
ffplayer
,
mp
->
data_source
);
if
(
retval
<
0
)
{
mp
->
mp_state
=
MP_STATE_ERROR
;
return
retval
;
...
...
@@ -300,6 +305,7 @@ static int ijkmp_stop_l(IjkMediaPlayer *mp)
return
retval
;
}
// FIXME: change to MP_STATE_STOPPED in read_thread() */
mp
->
mp_state
=
MP_STATE_STOPPED
;
return
0
;
}
...
...
@@ -310,10 +316,6 @@ int ijkmp_stop(IjkMediaPlayer *mp)
pthread_mutex_lock
(
&
mp
->
mutex
);
int
retval
=
ijkmp_stop_l
(
mp
);
pthread_mutex_unlock
(
&
mp
->
mutex
);
if
(
retval
==
0
)
ijkff_wait_stop
(
mp
->
ffplayer
);
return
retval
;
}
...
...
@@ -343,7 +345,7 @@ int ijkmp_seek_to_l(IjkMediaPlayer *mp, long msec)
MPST_CHECK_NOT_RET
(
mp
->
mp_state
,
MP_STATE_ERROR
);
MPST_CHECK_NOT_RET
(
mp
->
mp_state
,
MP_STATE_END
);
int
retval
=
ijk
mp
_seek_to_l
(
mp
->
ffplayer
,
msec
);
int
retval
=
ijk
ff
_seek_to_l
(
mp
->
ffplayer
,
msec
);
if
(
retval
<
0
)
{
return
retval
;
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录