Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
NotesChapter
ijkplayer
提交
a2fbbce9
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,发现更多精彩内容 >>
提交
a2fbbce9
编写于
6月 20, 2013
作者:
Z
Zhang Rui
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
ijkplayer: simplify mp
上级
3dc99e6f
变更
7
展开全部
隐藏空白更改
内联
并排
Showing
7 changed file
with
357 addition
and
299 deletion
+357
-299
ijkmediaplayer/jni/ffplay/ff_error.h
ijkmediaplayer/jni/ffplay/ff_error.h
+3
-3
ijkmediaplayer/jni/ffplay/ff_ffplay.c
ijkmediaplayer/jni/ffplay/ff_ffplay.c
+289
-245
ijkmediaplayer/jni/ffplay/ff_ffplay.h
ijkmediaplayer/jni/ffplay/ff_ffplay.h
+14
-11
ijkmediaplayer/jni/ffplay/ff_ffplay_def.h
ijkmediaplayer/jni/ffplay/ff_ffplay_def.h
+1
-1
ijkmediaplayer/jni/ijkplayer_android/ijkplayer_android.c
ijkmediaplayer/jni/ijkplayer_android/ijkplayer_android.c
+30
-16
ijkmediaplayer/jni/ijkplayer_android/ijkplayer_android.h
ijkmediaplayer/jni/ijkplayer_android/ijkplayer_android.h
+17
-20
ijkmediaplayer/jni/ijkplayer_android/ijkplayer_jni.c
ijkmediaplayer/jni/ijkplayer_android/ijkplayer_jni.c
+3
-3
未找到文件。
ijkmediaplayer/jni/ffplay/
ijk
error.h
→
ijkmediaplayer/jni/ffplay/
ff_
error.h
浏览文件 @
a2fbbce9
/*
*
ijk
error.h
*
ff_
error.h
*
* Copyright (c) 2003 Fabrice Bellard
* Copyright (c) 2013 Zhang Rui <bbcallen@gmail.com>
...
...
@@ -21,8 +21,8 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
#ifndef IJKPLAYER__
IJK
ERROR_H
#define IJKPLAYER__
IJK
ERROR_H
#ifndef IJKPLAYER__
FF_
ERROR_H
#define IJKPLAYER__
FF_
ERROR_H
#define EIJK_FAILED -1
#define EIJK_OUT_OF_MEMORY -2
...
...
ijkmediaplayer/jni/ffplay/ff_ffplay.c
浏览文件 @
a2fbbce9
此差异已折叠。
点击以展开。
ijkmediaplayer/jni/ffplay/ff_ffplay.h
浏览文件 @
a2fbbce9
...
...
@@ -25,21 +25,24 @@
#define IJKPLAYER__FF_FFPLAY_H
#include "ff_ffplay_def.h"
#include "ff_error.h"
void
ijkff_global_init
();
void
ijkff_global_uninit
();
void
ijkff_global_init
();
void
ijkff_global_uninit
();
void
ijkff_destroy_ffplayer
(
FFPlayer
**
pffp
);
FFPlayer
*
ijkff_create_ffplayer
();
void
ijkff_destroy_ffplayer
(
FFPlayer
**
pffp
);
void
ijkff_reset
(
FFPlayer
*
ffp
);
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_l
(
FFPlayer
*
ffp
);
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_l
(
FFPlayer
*
ffp
);
/* all in milliseconds */
int
ijkff_seek_to_l
(
FFPlayer
*
ffp
,
long
msec
);
long
ijkff_get_current_position_l
(
FFPlayer
*
ffp
);
long
ijkff_get_duration_l
(
FFPlayer
*
ffp
);
int
ijkff_seek_to_l
(
FFPlayer
*
ffp
,
long
msec
);
long
ijkff_get_current_position_l
(
FFPlayer
*
ffp
);
long
ijkff_get_duration_l
(
FFPlayer
*
ffp
);
#endif
ijkmediaplayer/jni/ffplay/ff_ffplay_def.h
浏览文件 @
a2fbbce9
...
...
@@ -408,7 +408,7 @@ typedef struct FFPlayer {
#define fftime_to_milliseconds(ts) (ts / (AV_TIME_BASE / 1000))
#define milliseconds_to_fftime(ms) (ms * (AV_TIME_BASE / 1000))
inline
static
void
ijkff_reset
(
FFPlayer
*
ffp
)
inline
static
void
ijkff_reset
_internal
(
FFPlayer
*
ffp
)
{
/* ffp->is closed in stream_close() */
...
...
ijkmediaplayer/jni/ijkplayer_android/ijkplayer_android.c
浏览文件 @
a2fbbce9
...
...
@@ -89,6 +89,14 @@ static void ijkmp_msg_handler(void *opaque, int what, int arg1, int arg2, void*
// FIXME: implement
}
void
ijkmp_setup_internal
(
IjkMediaPlayer
*
mp
)
{
FFPlayer
*
ffp
=
mp
->
ffplayer
;
ffp
->
msg_opaque
=
mp
;
ffp
->
msg_handler
=
ijkmp_msg_handler
;
ijkmsg_queue_start
(
&
mp
->
msg_queue
);
}
IjkMediaPlayer
*
ijkmp_create
()
{
IjkMediaPlayer
*
mp
=
(
IjkMediaPlayer
*
)
malloc
(
sizeof
(
IjkMediaPlayer
));
...
...
@@ -97,28 +105,24 @@ IjkMediaPlayer *ijkmp_create()
}
memset
(
mp
,
0
,
sizeof
(
IjkMediaPlayer
));
mp
->
ffplayer
=
(
FFPlayer
*
)
malloc
(
sizeof
(
FFPlayer
)
);
FFPlayer
*
ffp
=
ijkff_create_ffplayer
(
);
if
(
!
mp
)
{
free
(
mp
);
return
NULL
;
}
memset
(
mp
->
ffplayer
,
0
,
sizeof
(
FFPlayer
));
FFPlayer
*
ffp
=
mp
->
ffplayer
;
ijkff_reset
(
ffp
);
ffp
->
msg_opaque
=
mp
;
ffp
->
msg_handler
=
ijkmp_msg_handler
;
pthread_mutex_init
(
&
mp
->
mutex
,
NULL
);
ijkmsg_queue_init
(
&
mp
->
msg_queue
);
ijkmsg_queue_start
(
&
mp
->
msg_queue
);
ijkmp_inc_ref
(
mp
);
mp
->
ffplayer
=
ffp
;
ijkmp_setup_internal
(
mp
);
return
mp
;
}
void
ijkmp_shutdown
(
IjkMediaPlayer
*
mp
)
void
ijkmp_shutdown
_l
(
IjkMediaPlayer
*
mp
)
{
assert
(
mp
);
...
...
@@ -130,21 +134,31 @@ void ijkmp_shutdown(IjkMediaPlayer *mp)
}
}
void
ijkmp_
reset
(
IjkMediaPlayer
*
mp
)
void
ijkmp_
shutdown
(
IjkMediaPlayer
*
mp
)
{
assert
(
mp
);
return
ijkmp_shutdown_l
(
mp
);
}
pthread_mutex_lock
(
&
mp
->
mutex
);
void
ijkmp_reset_l
(
IjkMediaPlayer
*
mp
)
{
assert
(
mp
);
ijkff_stop_l
(
mp
->
ffplayer
);
/* FIXME: try to avoid dead-lock */
ijkff_wait_stop_l
(
mp
->
ffplayer
);
ijkmp_shutdown_l
(
mp
);
ijkff_reset
(
mp
->
ffplayer
);
free
(
mp
->
data_source
);
mp
->
data_source
=
NULL
;
mp
->
mp_state
=
MP_STATE_IDLE
;
ijkmp_setup_internal
(
mp
);
}
void
ijkmp_reset
(
IjkMediaPlayer
*
mp
)
{
assert
(
mp
);
pthread_mutex_lock
(
&
mp
->
mutex
);
ijkmp_reset_l
(
mp
);
pthread_mutex_unlock
(
&
mp
->
mutex
);
}
...
...
ijkmediaplayer/jni/ijkplayer_android/ijkplayer_android.h
浏览文件 @
a2fbbce9
...
...
@@ -136,31 +136,28 @@ typedef struct IjkMediaPlayer IjkMediaPlayer;
// ref_count is 1 after open
IjkMediaPlayer
*
ijkmp_create
();
void
ijkmp_global_init
();
void
ijkmp_global_uninit
();
// preferred to be called explicity, can be called multiple times
// NOTE: ijkmp_shutdown may block thread
void
ijkmp_shutdown
(
IjkMediaPlayer
*
mp
);
void
ijkmp_shutdown
(
IjkMediaPlayer
*
mp
);
void
ijkmp_inc_ref
(
IjkMediaPlayer
*
mp
);
void
ijkmp_inc_ref
(
IjkMediaPlayer
*
mp
);
// call close at last release, also free memory
// NOTE: ijkmp_dec_ref may block thread
void
ijkmp_dec_ref
(
IjkMediaPlayer
**
pmp
);
int
ijkmp_set_data_source
(
IjkMediaPlayer
*
mp
,
const
char
*
url
);
int
ijkmp_prepare_async
(
IjkMediaPlayer
*
mp
);
int
ijkmp_start
(
IjkMediaPlayer
*
mp
);
int
ijkmp_pause
(
IjkMediaPlayer
*
mp
);
int
ijkmp_stop
(
IjkMediaPlayer
*
mp
);
int
ijkmp_seek_to
(
IjkMediaPlayer
*
mp
,
long
msec
);
bool
ijkmp_is_playing
(
IjkMediaPlayer
*
mp
);
long
ijkmp_get_current_position
(
IjkMediaPlayer
*
mp
);
long
ijkmp_get_duration
(
IjkMediaPlayer
*
mp
);
void
ijkmp_reset
(
IjkMediaPlayer
*
mp
);
void
ijkmp_set_vout
(
IjkMediaPlayer
*
mp
,
SDL_Vout
*
vout
);
SDL_Vout
*
ijkmp_get_vout
(
IjkMediaPlayer
*
mp
);
void
ijkmp_dec_ref
(
IjkMediaPlayer
**
pmp
);
int
ijkmp_set_data_source
(
IjkMediaPlayer
*
mp
,
const
char
*
url
);
int
ijkmp_prepare_async
(
IjkMediaPlayer
*
mp
);
int
ijkmp_start
(
IjkMediaPlayer
*
mp
);
int
ijkmp_pause
(
IjkMediaPlayer
*
mp
);
int
ijkmp_stop
(
IjkMediaPlayer
*
mp
);
int
ijkmp_seek_to
(
IjkMediaPlayer
*
mp
,
long
msec
);
bool
ijkmp_is_playing
(
IjkMediaPlayer
*
mp
);
long
ijkmp_get_current_position
(
IjkMediaPlayer
*
mp
);
long
ijkmp_get_duration
(
IjkMediaPlayer
*
mp
);
void
ijkmp_reset
(
IjkMediaPlayer
*
mp
);
void
ijkmp_set_vout
(
IjkMediaPlayer
*
mp
,
SDL_Vout
*
vout
);
SDL_Vout
*
ijkmp_get_vout
(
IjkMediaPlayer
*
mp
);
#endif
ijkmediaplayer/jni/ijkplayer_android/ijkplayer_jni.c
浏览文件 @
a2fbbce9
...
...
@@ -26,7 +26,7 @@
#include <jni.h>
#include "ijksdl_android/ijksdl_android.h"
#include "ijkutil/ijkutil.h"
#include "ffplay/
ijkerror
.h"
#include "ffplay/
ff_ffplay
.h"
#include "ijkplayer_android.h"
#define JNI_MODULE_PACKAGE "tv/danmaku/ijk/media/player"
...
...
@@ -344,14 +344,14 @@ jint JNI_OnLoad(JavaVM *vm, void *reserved)
(
*
env
)
->
RegisterNatives
(
env
,
g_clazz
.
clazz
,
g_methods
,
NELEM
(
g_methods
));
ijk
mp
_global_init
();
ijk
ff
_global_init
();
return
JNI_VERSION_1_4
;
}
void
JNI_OnUnload
(
JavaVM
*
jvm
,
void
*
reserved
)
{
ijk
mp
_global_uninit
();
ijk
ff
_global_uninit
();
pthread_mutex_destroy
(
&
g_clazz
.
mutex
);
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录