Skip to content

Commit 109f7d2

Browse files
committed
Merge branch 'v1.0.x' of https://github.com/tencentyun/iot-ijkplayer into v1.0.x
2 parents 4e12400 + 0ae751e commit 109f7d2

File tree

6 files changed

+32
-0
lines changed

6 files changed

+32
-0
lines changed

android/ijkplayer/ijkplayer-java/src/main/java/tv/danmaku/ijk/media/player/AbstractMediaPlayer.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,11 @@ protected final boolean notifyOnInfoSEI(int what, int extra, String seicontent)
114114
return mOnInfoListener != null && mOnInfoListener.onInfoSEI(this, what, extra, seicontent);
115115
}
116116

117+
protected final void notifyOnInfoAudioPcmData(byte[] arrPcm, int length) {
118+
if (mOnInfoListener != null)
119+
mOnInfoListener.onInfoAudioPcmData(this, arrPcm, length);
120+
}
121+
117122
protected final void notifyOnTimedText(IjkTimedText text) {
118123
if (mOnTimedTextListener != null)
119124
mOnTimedTextListener.onTimedText(this, text);

android/ijkplayer/ijkplayer-java/src/main/java/tv/danmaku/ijk/media/player/IMediaPlayer.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -175,6 +175,7 @@ interface OnErrorListener {
175175
interface OnInfoListener {
176176
boolean onInfo(IMediaPlayer mp, int what, int extra);
177177
boolean onInfoSEI(IMediaPlayer mp, int what, int extra, String sei_content);
178+
void onInfoAudioPcmData(IMediaPlayer mp, byte[] arrPcm, int length);
178179
}
179180

180181
interface OnTimedTextListener {

android/ijkplayer/ijkplayer-java/src/main/java/tv/danmaku/ijk/media/player/IjkMediaPlayer.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,7 @@ public final class IjkMediaPlayer extends AbstractMediaPlayer {
7676
private static final int MEDIA_SEEK_COMPLETE = 4;
7777
private static final int MEDIA_SET_VIDEO_SIZE = 5;
7878
private static final int MEDIA_SET_VIDEO_SEI = 7; // arg1 = width, arg2 = height, obj = SEI Content
79+
private static final int MEDIA_AUDIO_PCM_DATA = 8; // obj = PCM data, arg1 = PCM size
7980
private static final int MEDIA_TIMED_TEXT = 99;
8081
private static final int MEDIA_ERROR = 100;
8182
private static final int MEDIA_INFO = 200;
@@ -1047,6 +1048,12 @@ public void handleMessage(Message msg) {
10471048
player.notifyOnInfoSEI(msg.arg1, msg.arg2, (String)msg.obj);
10481049
}
10491050
break;
1051+
1052+
case MEDIA_AUDIO_PCM_DATA:
1053+
if (msg.obj != null) {
1054+
player.notifyOnInfoAudioPcmData((byte[])msg.obj, msg.arg1);
1055+
}
1056+
break;
10501057
case MEDIA_NOP: // interface test message - ignore
10511058
break;
10521059

android/ijkplayer/ijkplayer-java/src/main/java/tv/danmaku/ijk/media/player/MediaPlayerProxy.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -307,6 +307,11 @@ public boolean onInfo(IMediaPlayer mp, int what, int extra) {
307307
public boolean onInfoSEI(IMediaPlayer mp, int what, int extra, String seicontent) {
308308
return finalListener.onInfoSEI(MediaPlayerProxy.this, what, extra, seicontent);
309309
}
310+
311+
@Override
312+
public void onInfoAudioPcmData(IMediaPlayer mp, byte[] arrPcm, int length) {
313+
finalListener.onInfoAudioPcmData(MediaPlayerProxy.this, arrPcm, length);
314+
}
310315
});
311316
} else {
312317
mBackEndMediaPlayer.setOnInfoListener(null);

ijkmedia/ijkplayer/android/ijkplayer_android_def.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ enum media_event_type {
3838
MEDIA_SET_VIDEO_SIZE = 5, // arg1 = width, arg2 = height
3939
MEDIA_GET_IMG_STATE = 6, // arg1 = timestamp, arg2 = result code, obj = file name
4040
MEDIA_SET_VIDEO_SEI = 7, // arg1 = width, arg2 = height, obj = SEI Content
41+
MEDIA_AUDIO_PCM_DATA = 8, // obj = PCM data, arg1 = PCM size
4142
MEDIA_TIMED_TEXT = 99, // not supported yet
4243
MEDIA_ERROR = 100, // arg1, arg2
4344
MEDIA_INFO = 200, // arg1, arg2

ijkmedia/ijkplayer/android/ijkplayer_jni.c

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1034,6 +1034,19 @@ static void message_loop_n(JNIEnv *env, IjkMediaPlayer *mp)
10341034
J4A_DeleteLocalRef__p(env, &text);
10351035
}
10361036
break;
1037+
case FFP_MSG_PCM_DATA:
1038+
MPTRACE("FFP_MSG_PCM_DATA:\n",);
1039+
if (msg.obj) {
1040+
// 创建一个 byte[] 数组 长度msg.arg1
1041+
jbyteArray byteArray = (*env)->NewByteArray(env, msg.arg1);
1042+
if (byteArray != NULL) {
1043+
// 将数据拷贝到 byte[] 数组中
1044+
(*env)->SetByteArrayRegion(env, byteArray, 0, msg.arg1, (jbyte *)msg.obj);
1045+
post_event2(env, weak_thiz, MEDIA_AUDIO_PCM_DATA, msg.arg1, 0, byteArray);
1046+
J4A_DeleteLocalRef__p(env, &byteArray);
1047+
}
1048+
}
1049+
break;
10371050
case FFP_MSG_VIDEO_SIZE_CHANGED:
10381051
MPTRACE("FFP_MSG_VIDEO_SIZE_CHANGED: %d, %d\n", msg.arg1, msg.arg2);
10391052
post_event(env, weak_thiz, MEDIA_SET_VIDEO_SIZE, msg.arg1, msg.arg2);

0 commit comments

Comments
 (0)