Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
qq_25606643
ijkplayer
提交
a2273fc0
I
ijkplayer
项目概览
qq_25606643
/
ijkplayer
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
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,体验更适合开发者的 AI 搜索 >>
提交
a2273fc0
编写于
3月 21, 2017
作者:
R
raymondzheng
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
ijkplayer: modify androidio
上级
aa925e58
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
30 addition
and
27 deletion
+30
-27
ijkmedia/ijkplayer/android/ijkplayer_jni.c
ijkmedia/ijkplayer/android/ijkplayer_jni.c
+5
-12
ijkmedia/ijkplayer/ijkavformat/ijkioandroidio.c
ijkmedia/ijkplayer/ijkavformat/ijkioandroidio.c
+25
-15
未找到文件。
ijkmedia/ijkplayer/android/ijkplayer_jni.c
浏览文件 @
a2273fc0
...
...
@@ -223,25 +223,18 @@ LABEL_RETURN:
}
static
void
IjkMediaPlayer_set
DataSource
AndroidIOCallback
(
JNIEnv
*
env
,
jobject
thiz
,
jobject
callback
)
{
IjkMediaPlayer_setAndroidIOCallback
(
JNIEnv
*
env
,
jobject
thiz
,
jobject
callback
)
{
MPTRACE
(
"%s
\n
"
,
__func__
);
int
retval
=
0
;
char
uri
[
128
];
int64_t
nativeAndroidIO
=
0
;
IjkMediaPlayer
*
mp
=
jni_get_media_player
(
env
,
thiz
);
JNI_CHECK_GOTO
(
callback
,
env
,
"java/lang/IllegalArgumentException"
,
"mpjni: set
DataSourceIjk
IOCallback: null fd"
,
LABEL_RETURN
);
JNI_CHECK_GOTO
(
mp
,
env
,
"java/lang/IllegalStateException"
,
"mpjni: set
DataSourceIjk
IOCallback: null mp"
,
LABEL_RETURN
);
JNI_CHECK_GOTO
(
callback
,
env
,
"java/lang/IllegalArgumentException"
,
"mpjni: set
Android
IOCallback: null fd"
,
LABEL_RETURN
);
JNI_CHECK_GOTO
(
mp
,
env
,
"java/lang/IllegalStateException"
,
"mpjni: set
Android
IOCallback: null mp"
,
LABEL_RETURN
);
nativeAndroidIO
=
jni_set_ijkio_androidio
(
env
,
thiz
,
callback
);
JNI_CHECK_GOTO
(
nativeAndroidIO
,
env
,
"java/lang/IllegalStateException"
,
"mpjni: jni_set_ijkio_androidio: NewGlobalRef"
,
LABEL_RETURN
);
ALOGV
(
"setDataSourceAndroidIOCallback: %"
PRId64
"
\n
"
,
nativeAndroidIO
);
snprintf
(
uri
,
sizeof
(
uri
),
"ijkio:androidio:%"
PRId64
,
nativeAndroidIO
);
retval
=
ijkmp_set_data_source
(
mp
,
uri
);
IJK_CHECK_MPRET_GOTO
(
retval
,
env
,
LABEL_RETURN
);
ijkmp_set_option_int
(
mp
,
FFP_OPT_CATEGORY_FORMAT
,
"androidio-inject-callback"
,
nativeAndroidIO
);
LABEL_RETURN:
ijkmp_dec_ref_p
(
&
mp
);
...
...
@@ -1082,7 +1075,7 @@ static JNINativeMethod g_methods[] = {
},
{
"_setDataSourceFd"
,
"(I)V"
,
(
void
*
)
IjkMediaPlayer_setDataSourceFd
},
{
"_setDataSource"
,
"(Ltv/danmaku/ijk/media/player/misc/IMediaDataSource;)V"
,
(
void
*
)
IjkMediaPlayer_setDataSourceCallback
},
{
"_set
DataSourceAndroidIO"
,
"(Ltv/danmaku/ijk/media/player/misc/IAndroidIO;)V"
,
(
void
*
)
IjkMediaPlayer_setDataSource
AndroidIOCallback
},
{
"_set
AndroidIOCallback"
,
"(Ltv/danmaku/ijk/media/player/misc/IAndroidIO;)V"
,
(
void
*
)
IjkMediaPlayer_set
AndroidIOCallback
},
{
"_setVideoSurface"
,
"(Landroid/view/Surface;)V"
,
(
void
*
)
IjkMediaPlayer_setVideoSurface
},
{
"_prepareAsync"
,
"()V"
,
(
void
*
)
IjkMediaPlayer_prepareAsync
},
...
...
ijkmedia/ijkplayer/ijkavformat/ijkioandroidio.c
浏览文件 @
a2273fc0
...
...
@@ -34,7 +34,7 @@
#include <assert.h>
typedef
struct
IjkIOAndroidioContext
{
jobject
ijkio_
http
;
jobject
ijkio_
androidio
;
jbyteArray
jbuffer
;
int
jbuffer_capacity
;
URLContext
*
inner
;
...
...
@@ -43,7 +43,7 @@ typedef struct IjkIOAndroidioContext {
static
int
ijkio_androidio_open
(
IjkURLContext
*
h
,
const
char
*
url
,
int
flags
,
IjkAVDictionary
**
options
)
{
IjkIOAndroidioContext
*
c
=
h
->
priv_data
;
JNIEnv
*
env
=
NULL
;
jobject
ijkio_
http
=
NULL
;
jobject
ijkio_
androidio
=
NULL
;
char
*
final
=
NULL
;
if
(
!
c
)
...
...
@@ -51,8 +51,15 @@ static int ijkio_androidio_open(IjkURLContext *h, const char *url, int flags, Ij
av_strstart
(
url
,
"androidio:"
,
&
url
);
ijkio_http
=
(
jobject
)
(
intptr_t
)
strtoll
(
url
,
&
final
,
10
);
if
(
!
ijkio_http
)
IjkAVDictionaryEntry
*
t
=
NULL
;
t
=
ijk_av_dict_get
(
*
options
,
"androidio-inject-callback"
,
NULL
,
IJK_AV_DICT_IGNORE_SUFFIX
);
if
(
t
)
{
ijkio_androidio
=
(
jobject
)
(
intptr_t
)
strtoll
(
t
->
value
,
&
final
,
10
);
}
else
{
return
-
1
;
}
if
(
!
ijkio_androidio
)
return
AVERROR
(
EINVAL
);
if
(
JNI_OK
!=
SDL_JNI_SetupThreadEnv
(
&
env
))
{
...
...
@@ -60,15 +67,18 @@ static int ijkio_androidio_open(IjkURLContext *h, const char *url, int flags, Ij
return
AVERROR
(
EINVAL
);
}
jint
ret
=
J4AC_IAndroidIO__open
(
env
,
ijkio_http
);
jstring
urlString
=
NULL
;
urlString
=
(
*
env
)
->
NewStringUTF
(
env
,
url
);
jint
ret
=
J4AC_IAndroidIO__open
(
env
,
ijkio_androidio
,
urlString
);
if
(
J4A_ExceptionCheck__catchAll
(
env
))
{
return
AVERROR
(
EINVAL
);
}
else
if
(
ret
<
0
)
{
return
ret
;
}
c
->
ijkio_
http
=
(
*
env
)
->
NewGlobalRef
(
env
,
ijkio_http
);
if
(
J4A_ExceptionCheck__catchAll
(
env
)
||
!
c
->
ijkio_
http
)
{
c
->
ijkio_
androidio
=
(
*
env
)
->
NewGlobalRef
(
env
,
ijkio_androidio
);
if
(
J4A_ExceptionCheck__catchAll
(
env
)
||
!
c
->
ijkio_
androidio
)
{
return
AVERROR
(
ENOMEM
);
}
...
...
@@ -104,7 +114,7 @@ static int ijkio_androidio_read(IjkURLContext *h, unsigned char *buf, int size)
jbyteArray
jbuffer
=
NULL
;
jint
ret
=
0
;
if
(
!
c
||
!
c
->
ijkio_
http
)
if
(
!
c
||
!
c
->
ijkio_
androidio
)
return
AVERROR
(
EINVAL
);
if
(
JNI_OK
!=
SDL_JNI_SetupThreadEnv
(
&
env
))
{
...
...
@@ -116,7 +126,7 @@ static int ijkio_androidio_read(IjkURLContext *h, unsigned char *buf, int size)
if
(
!
jbuffer
)
return
AVERROR
(
ENOMEM
);
ret
=
J4AC_IAndroidIO__read
(
env
,
c
->
ijkio_
http
,
jbuffer
,
size
);
ret
=
J4AC_IAndroidIO__read
(
env
,
c
->
ijkio_
androidio
,
jbuffer
,
size
);
if
(
J4A_ExceptionCheck__catchAll
(
env
))
return
AVERROR
(
EIO
);
else
if
(
ret
<
0
)
...
...
@@ -136,7 +146,7 @@ static int64_t ijkio_androidio_seek(IjkURLContext *h, int64_t offset, int whence
int64_t
ret
;
JNIEnv
*
env
=
NULL
;
if
(
!
c
||
!
c
->
ijkio_
http
)
if
(
!
c
||
!
c
->
ijkio_
androidio
)
return
AVERROR
(
EINVAL
);
if
(
JNI_OK
!=
SDL_JNI_SetupThreadEnv
(
&
env
))
{
...
...
@@ -144,7 +154,7 @@ static int64_t ijkio_androidio_seek(IjkURLContext *h, int64_t offset, int whence
return
AVERROR
(
EINVAL
);
}
ret
=
J4AC_IAndroidIO__seek
(
env
,
c
->
ijkio_
http
,
offset
,
whence
);
ret
=
J4AC_IAndroidIO__seek
(
env
,
c
->
ijkio_
androidio
,
offset
,
whence
);
if
(
J4A_ExceptionCheck__catchAll
(
env
))
return
AVERROR
(
EIO
);
...
...
@@ -155,7 +165,7 @@ static int ijkio_androidio_close(IjkURLContext *h) {
IjkIOAndroidioContext
*
c
=
h
->
priv_data
;
JNIEnv
*
env
=
NULL
;
if
(
!
c
||
!
c
->
ijkio_
http
)
if
(
!
c
||
!
c
->
ijkio_
androidio
)
return
AVERROR
(
EINVAL
);
if
(
JNI_OK
!=
SDL_JNI_SetupThreadEnv
(
&
env
))
{
...
...
@@ -165,9 +175,9 @@ static int ijkio_androidio_close(IjkURLContext *h) {
J4A_DeleteGlobalRef__p
(
env
,
&
c
->
jbuffer
);
if
(
c
->
ijkio_
http
)
{
J4AC_IAndroidIO__close__catchAll
(
env
,
c
->
ijkio_
http
);
J4A_DeleteGlobalRef__p
(
env
,
&
c
->
ijkio_
http
);
if
(
c
->
ijkio_
androidio
)
{
J4AC_IAndroidIO__close__catchAll
(
env
,
c
->
ijkio_
androidio
);
J4A_DeleteGlobalRef__p
(
env
,
&
c
->
ijkio_
androidio
);
}
return
0
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录