Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
qq_25606643
ijkplayer
提交
3a8e8e61
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,发现更多精彩内容 >>
提交
3a8e8e61
编写于
12月 15, 2016
作者:
C
ctiao
提交者:
Xinzheng Zhang
12月 16, 2016
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
android: support setSpeed for pre-M(api<23) versions
Signed-off-by:
N
Xinzheng Zhang
<
zhangxzheng@gmail.com
>
上级
89baebdc
变更
8
隐藏空白更改
内联
并排
Showing
8 changed file
with
132 addition
and
11 deletion
+132
-11
android/ijkplayer/ijkplayer-java/src/main/java/tv/danmaku/ijk/media/player/IjkMediaPlayer.java
...main/java/tv/danmaku/ijk/media/player/IjkMediaPlayer.java
+0
-2
ijkmedia/ijkj4a/j4a/class/android/media/AudioTrack.c
ijkmedia/ijkj4a/j4a/class/android/media/AudioTrack.c
+92
-0
ijkmedia/ijkj4a/j4a/class/android/media/AudioTrack.h
ijkmedia/ijkj4a/j4a/class/android/media/AudioTrack.h
+16
-0
ijkmedia/ijkj4a/j4au/class/android/media/AudioTrack.util.c
ijkmedia/ijkj4a/j4au/class/android/media/AudioTrack.util.c
+12
-1
ijkmedia/ijkj4a/java/android/media/AudioTrack.java
ijkmedia/ijkj4a/java/android/media/AudioTrack.java
+7
-1
ijkmedia/ijksdl/android/android_audiotrack.c
ijkmedia/ijksdl/android/android_audiotrack.c
+2
-4
ijkmedia/ijksdl/android/android_audiotrack.h
ijkmedia/ijksdl/android/android_audiotrack.h
+2
-0
ijkmedia/ijksdl/android/ijksdl_aout_android_audiotrack.c
ijkmedia/ijksdl/android/ijksdl_aout_android_audiotrack.c
+1
-3
未找到文件。
android/ijkplayer/ijkplayer-java/src/main/java/tv/danmaku/ijk/media/player/IjkMediaPlayer.java
浏览文件 @
3a8e8e61
...
...
@@ -715,12 +715,10 @@ public final class IjkMediaPlayer extends AbstractMediaPlayer {
private
native
int
_getLoopCount
();
@TargetApi
(
Build
.
VERSION_CODES
.
M
)
public
void
setSpeed
(
float
speed
)
{
_setPropertyFloat
(
FFP_PROP_FLOAT_PLAYBACK_RATE
,
speed
);
}
@TargetApi
(
Build
.
VERSION_CODES
.
M
)
public
float
getSpeed
(
float
speed
)
{
return
_getPropertyFloat
(
FFP_PROP_FLOAT_PLAYBACK_RATE
,
.
0
f
);
}
...
...
ijkmedia/ijkj4a/j4a/class/android/media/AudioTrack.c
浏览文件 @
3a8e8e61
...
...
@@ -39,6 +39,10 @@ typedef struct J4AC_android_media_AudioTrack {
jmethodID
method_getAudioSessionId
;
jmethodID
method_getPlaybackParams
;
jmethodID
method_setPlaybackParams
;
jmethodID
method_getStreamType
;
jmethodID
method_getSampleRate
;
jmethodID
method_getPlaybackRate
;
jmethodID
method_setPlaybackRate
;
}
J4AC_android_media_AudioTrack
;
static
J4AC_android_media_AudioTrack
class_J4AC_android_media_AudioTrack
;
...
...
@@ -283,6 +287,66 @@ void J4AC_android_media_AudioTrack__setPlaybackParams__catchAll(JNIEnv *env, job
J4A_ExceptionCheck__catchAll
(
env
);
}
jint
J4AC_android_media_AudioTrack__getStreamType
(
JNIEnv
*
env
,
jobject
thiz
)
{
return
(
*
env
)
->
CallIntMethod
(
env
,
thiz
,
class_J4AC_android_media_AudioTrack
.
method_getStreamType
);
}
jint
J4AC_android_media_AudioTrack__getStreamType__catchAll
(
JNIEnv
*
env
,
jobject
thiz
)
{
jint
ret_value
=
J4AC_android_media_AudioTrack__getStreamType
(
env
,
thiz
);
if
(
J4A_ExceptionCheck__catchAll
(
env
))
{
return
0
;
}
return
ret_value
;
}
jint
J4AC_android_media_AudioTrack__getSampleRate
(
JNIEnv
*
env
,
jobject
thiz
)
{
return
(
*
env
)
->
CallIntMethod
(
env
,
thiz
,
class_J4AC_android_media_AudioTrack
.
method_getSampleRate
);
}
jint
J4AC_android_media_AudioTrack__getSampleRate__catchAll
(
JNIEnv
*
env
,
jobject
thiz
)
{
jint
ret_value
=
J4AC_android_media_AudioTrack__getSampleRate
(
env
,
thiz
);
if
(
J4A_ExceptionCheck__catchAll
(
env
))
{
return
0
;
}
return
ret_value
;
}
jint
J4AC_android_media_AudioTrack__getPlaybackRate
(
JNIEnv
*
env
,
jobject
thiz
)
{
return
(
*
env
)
->
CallIntMethod
(
env
,
thiz
,
class_J4AC_android_media_AudioTrack
.
method_getPlaybackRate
);
}
jint
J4AC_android_media_AudioTrack__getPlaybackRate__catchAll
(
JNIEnv
*
env
,
jobject
thiz
)
{
jint
ret_value
=
J4AC_android_media_AudioTrack__getPlaybackRate
(
env
,
thiz
);
if
(
J4A_ExceptionCheck__catchAll
(
env
))
{
return
0
;
}
return
ret_value
;
}
jint
J4AC_android_media_AudioTrack__setPlaybackRate
(
JNIEnv
*
env
,
jobject
thiz
,
jint
sampleRateInHz
)
{
return
(
*
env
)
->
CallIntMethod
(
env
,
thiz
,
class_J4AC_android_media_AudioTrack
.
method_setPlaybackRate
,
sampleRateInHz
);
}
jint
J4AC_android_media_AudioTrack__setPlaybackRate__catchAll
(
JNIEnv
*
env
,
jobject
thiz
,
jint
sampleRateInHz
)
{
jint
ret_value
=
J4AC_android_media_AudioTrack__setPlaybackRate
(
env
,
thiz
,
sampleRateInHz
);
if
(
J4A_ExceptionCheck__catchAll
(
env
))
{
return
0
;
}
return
ret_value
;
}
int
J4A_loadClass__J4AC_android_media_AudioTrack
(
JNIEnv
*
env
)
{
int
ret
=
-
1
;
...
...
@@ -408,6 +472,34 @@ int J4A_loadClass__J4AC_android_media_AudioTrack(JNIEnv *env)
goto
fail
;
}
class_id
=
class_J4AC_android_media_AudioTrack
.
id
;
name
=
"getStreamType"
;
sign
=
"()I"
;
class_J4AC_android_media_AudioTrack
.
method_getStreamType
=
J4A_GetMethodID__catchAll
(
env
,
class_id
,
name
,
sign
);
if
(
class_J4AC_android_media_AudioTrack
.
method_getStreamType
==
NULL
)
goto
fail
;
class_id
=
class_J4AC_android_media_AudioTrack
.
id
;
name
=
"getSampleRate"
;
sign
=
"()I"
;
class_J4AC_android_media_AudioTrack
.
method_getSampleRate
=
J4A_GetMethodID__catchAll
(
env
,
class_id
,
name
,
sign
);
if
(
class_J4AC_android_media_AudioTrack
.
method_getSampleRate
==
NULL
)
goto
fail
;
class_id
=
class_J4AC_android_media_AudioTrack
.
id
;
name
=
"getPlaybackRate"
;
sign
=
"()I"
;
class_J4AC_android_media_AudioTrack
.
method_getPlaybackRate
=
J4A_GetMethodID__catchAll
(
env
,
class_id
,
name
,
sign
);
if
(
class_J4AC_android_media_AudioTrack
.
method_getPlaybackRate
==
NULL
)
goto
fail
;
class_id
=
class_J4AC_android_media_AudioTrack
.
id
;
name
=
"setPlaybackRate"
;
sign
=
"(I)I"
;
class_J4AC_android_media_AudioTrack
.
method_setPlaybackRate
=
J4A_GetMethodID__catchAll
(
env
,
class_id
,
name
,
sign
);
if
(
class_J4AC_android_media_AudioTrack
.
method_setPlaybackRate
==
NULL
)
goto
fail
;
J4A_ALOGD
(
"J4ALoader: OK: '%s' loaded
\n
"
,
"android.media.AudioTrack"
);
ret
=
0
;
fail:
...
...
ijkmedia/ijkj4a/j4a/class/android/media/AudioTrack.h
浏览文件 @
3a8e8e61
...
...
@@ -56,6 +56,14 @@ jobject J4AC_android_media_AudioTrack__getPlaybackParams__catchAll(JNIEnv *env,
jobject
J4AC_android_media_AudioTrack__getPlaybackParams__asGlobalRef__catchAll
(
JNIEnv
*
env
,
jobject
thiz
);
void
J4AC_android_media_AudioTrack__setPlaybackParams
(
JNIEnv
*
env
,
jobject
thiz
,
jobject
params
);
void
J4AC_android_media_AudioTrack__setPlaybackParams__catchAll
(
JNIEnv
*
env
,
jobject
thiz
,
jobject
params
);
jint
J4AC_android_media_AudioTrack__getStreamType
(
JNIEnv
*
env
,
jobject
thiz
);
jint
J4AC_android_media_AudioTrack__getStreamType__catchAll
(
JNIEnv
*
env
,
jobject
thiz
);
jint
J4AC_android_media_AudioTrack__getSampleRate
(
JNIEnv
*
env
,
jobject
thiz
);
jint
J4AC_android_media_AudioTrack__getSampleRate__catchAll
(
JNIEnv
*
env
,
jobject
thiz
);
jint
J4AC_android_media_AudioTrack__getPlaybackRate
(
JNIEnv
*
env
,
jobject
thiz
);
jint
J4AC_android_media_AudioTrack__getPlaybackRate__catchAll
(
JNIEnv
*
env
,
jobject
thiz
);
jint
J4AC_android_media_AudioTrack__setPlaybackRate
(
JNIEnv
*
env
,
jobject
thiz
,
jint
sampleRateInHz
);
jint
J4AC_android_media_AudioTrack__setPlaybackRate__catchAll
(
JNIEnv
*
env
,
jobject
thiz
,
jint
sampleRateInHz
);
int
J4A_loadClass__J4AC_android_media_AudioTrack
(
JNIEnv
*
env
);
#define J4A_HAVE_SIMPLE__J4AC_android_media_AudioTrack
...
...
@@ -92,6 +100,14 @@ int J4A_loadClass__J4AC_android_media_AudioTrack(JNIEnv *env);
#define J4AC_AudioTrack__getPlaybackParams__catchAll J4AC_android_media_AudioTrack__getPlaybackParams__catchAll
#define J4AC_AudioTrack__setPlaybackParams J4AC_android_media_AudioTrack__setPlaybackParams
#define J4AC_AudioTrack__setPlaybackParams__catchAll J4AC_android_media_AudioTrack__setPlaybackParams__catchAll
#define J4AC_AudioTrack__getStreamType J4AC_android_media_AudioTrack__getStreamType
#define J4AC_AudioTrack__getStreamType__catchAll J4AC_android_media_AudioTrack__getStreamType__catchAll
#define J4AC_AudioTrack__getSampleRate J4AC_android_media_AudioTrack__getSampleRate
#define J4AC_AudioTrack__getSampleRate__catchAll J4AC_android_media_AudioTrack__getSampleRate__catchAll
#define J4AC_AudioTrack__getPlaybackRate J4AC_android_media_AudioTrack__getPlaybackRate
#define J4AC_AudioTrack__getPlaybackRate__catchAll J4AC_android_media_AudioTrack__getPlaybackRate__catchAll
#define J4AC_AudioTrack__setPlaybackRate J4AC_android_media_AudioTrack__setPlaybackRate
#define J4AC_AudioTrack__setPlaybackRate__catchAll J4AC_android_media_AudioTrack__setPlaybackRate__catchAll
#define J4A_loadClass__J4AC_AudioTrack J4A_loadClass__J4AC_android_media_AudioTrack
#endif//J4A__android_media_AudioTrack__H
ijkmedia/ijkj4a/j4au/class/android/media/AudioTrack.util.c
浏览文件 @
3a8e8e61
...
...
@@ -21,10 +21,21 @@
#include "AudioTrack.util.h"
#include "j4a/class/android/media/PlaybackParams.h"
#ifndef STREAM_MUSIC
#define STREAM_MUSIC 3
#endif
void
J4AC_android_media_AudioTrack__setSpeed
(
JNIEnv
*
env
,
jobject
thiz
,
jfloat
speed
)
{
if
(
J4A_GetSystemAndroidApiLevel
(
env
)
<
23
)
if
(
J4A_GetSystemAndroidApiLevel
(
env
)
<
23
)
{
jint
sample_rate
=
J4AC_android_media_AudioTrack__getNativeOutputSampleRate__catchAll
(
env
,
STREAM_MUSIC
);
if
(
J4A_ExceptionCheck__throwAny
(
env
))
{
return
;
}
J4AC_android_media_AudioTrack__setPlaybackRate__catchAll
(
env
,
thiz
,
(
jint
)
(
sample_rate
*
speed
));
return
;
}
jobject
temp
=
NULL
;
jobject
params
=
J4AC_android_media_AudioTrack__getPlaybackParams
(
env
,
thiz
);
...
...
ijkmedia/ijkj4a/java/android/media/AudioTrack.java
浏览文件 @
3a8e8e61
...
...
@@ -8,7 +8,7 @@ public class AudioTrack {
public
static
int
getMinBufferSize
(
int
sampleRateInHz
,
int
channelConfig
,
int
audioFormat
);
public
static
float
getMaxVolume
();
public
static
float
getMinVolume
();
public
static
int
getNativeOutputSampleRate
(
int
streamType
);
public
static
int
getNativeOutputSampleRate
(
int
streamType
);
public
void
play
();
public
void
pause
();
...
...
@@ -25,4 +25,10 @@ public class AudioTrack {
public
PlaybackParams
getPlaybackParams
();
@MinApi
(
23
)
void
setPlaybackParams
(
PlaybackParams
params
);
int
getStreamType
();
int
getSampleRate
();
int
getPlaybackRate
();
int
setPlaybackRate
(
int
sampleRateInHz
);
}
ijkmedia/ijksdl/android/android_audiotrack.c
浏览文件 @
3a8e8e61
...
...
@@ -209,10 +209,8 @@ SDL_Android_AudioTrack *SDL_Android_AudioTrack_new_from_spec(JNIEnv *env, SDL_An
return
NULL
;
}
if
(
J4A_GetSystemAndroidApiLevel
(
env
)
>=
23
)
{
// for fast playback
min_buffer_size
*=
2
;
}
// for fast playback
min_buffer_size
*=
AUDIOTRACK_PLAYBACK_MAXSPEED
;
atrack
->
thiz
=
J4AC_AudioTrack__AudioTrack__asGlobalRef__catchAll
(
env
,
atrack
->
spec
.
stream_type
,
...
...
ijkmedia/ijksdl/android/android_audiotrack.h
浏览文件 @
3a8e8e61
...
...
@@ -29,6 +29,8 @@
#include "../ijksdl_audio.h"
#include "../ijksdl_aout.h"
#define AUDIOTRACK_PLAYBACK_MAXSPEED (2)
typedef
struct
SDL_Android_AudioTrack_Spec
{
enum
StreamType
{
STREAM_VOICE_CALL
=
0
,
...
...
ijkmedia/ijksdl/android/ijksdl_aout_android_audiotrack.c
浏览文件 @
3a8e8e61
...
...
@@ -105,9 +105,7 @@ static int aout_thread_n(JNIEnv *env, SDL_Aout *aout)
}
if
(
opaque
->
speed_changed
)
{
opaque
->
speed_changed
=
0
;
if
(
J4A_GetSystemAndroidApiLevel
(
env
)
>=
23
)
{
SDL_Android_AudioTrack_setSpeed
(
env
,
atrack
,
opaque
->
speed
);
}
SDL_Android_AudioTrack_setSpeed
(
env
,
atrack
,
opaque
->
speed
);
}
SDL_UnlockMutex
(
opaque
->
wakeup_mutex
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录