From 77cb7a7c898674f004aa272aad87384e6ec6a95f Mon Sep 17 00:00:00 2001 From: Zhang Rui Date: Thu, 17 Dec 2015 17:36:24 +0800 Subject: [PATCH] android/sample: show av-cache --- .../ijk/media/player/IjkMediaPlayer.java | 37 +++++++++++++++++++ .../widget/media/InfoHudViewHolder.java | 8 ++++ .../src/main/res/values/strings.xml | 2 + 3 files changed, 47 insertions(+) diff --git a/android/ijkplayer/ijkplayer-java/src/main/java/tv/danmaku/ijk/media/player/IjkMediaPlayer.java b/android/ijkplayer/ijkplayer-java/src/main/java/tv/danmaku/ijk/media/player/IjkMediaPlayer.java index c5721e64..9adc3003 100644 --- a/android/ijkplayer/ijkplayer-java/src/main/java/tv/danmaku/ijk/media/player/IjkMediaPlayer.java +++ b/android/ijkplayer/ijkplayer-java/src/main/java/tv/danmaku/ijk/media/player/IjkMediaPlayer.java @@ -108,6 +108,19 @@ public final class IjkMediaPlayer extends AbstractMediaPlayer { public static final int FFP_PROP_INT64_SELECTED_VIDEO_STREAM = 20001; public static final int FFP_PROP_INT64_SELECTED_AUDIO_STREAM = 20002; + + public static final int FFP_PROP_INT64_VIDEO_DECODER = 20003; + public static final int FFP_PROP_INT64_AUDIO_DECODER = 20004; + public static final int FFP_PROPV_DECODER_UNKNOWN = 0; + public static final int FFP_PROPV_DECODER_AVCODEC = 1; + public static final int FFP_PROPV_DECODER_MEDIACODEC = 2; + public static final int FFP_PROPV_DECODER_VIDEOTOOLBOX = 3; + public static final int FFP_PROP_INT64_VIDEO_CACHED_DURATION = 20005; + public static final int FFP_PROP_INT64_AUDIO_CACHED_DURATION = 20006; + public static final int FFP_PROP_INT64_VIDEO_CACHED_BYTES = 20007; + public static final int FFP_PROP_INT64_AUDIO_CACHED_BYTES = 20008; + public static final int FFP_PROP_INT64_VIDEO_CACHED_PACKETS = 20009; + public static final int FFP_PROP_INT64_AUDIO_CACHED_PACKETS = 20010; //---------------------------------------- @AccessedByNative @@ -703,6 +716,30 @@ public final class IjkMediaPlayer extends AbstractMediaPlayer { return _getPropertyFloat(PROP_FLOAT_VIDEO_DECODE_FRAMES_PER_SECOND, 0.0f); } + public long getVideoCachedDuration() { + return _getPropertyLong(FFP_PROP_INT64_VIDEO_CACHED_DURATION, 0); + } + + public long getAudioCachedDuration() { + return _getPropertyLong(FFP_PROP_INT64_AUDIO_CACHED_DURATION, 0); + } + + public long getVideoCachedBytes() { + return _getPropertyLong(FFP_PROP_INT64_VIDEO_CACHED_BYTES, 0); + } + + public long getAudioCachedBytes() { + return _getPropertyLong(FFP_PROP_INT64_AUDIO_CACHED_BYTES, 0); + } + + public long getVideoCachedPackets() { + return _getPropertyLong(FFP_PROP_INT64_VIDEO_CACHED_PACKETS, 0); + } + + public long getAudioCachedPackets() { + return _getPropertyLong(FFP_PROP_INT64_AUDIO_CACHED_PACKETS, 0); + } + private native float _getPropertyFloat(int property, float defaultValue); private native void _setPropertyFloat(int property, float value); private native long _getPropertyLong(int property, long defaultValue); diff --git a/android/ijkplayer/ijkplayer-sample/src/main/java/tv/danmaku/ijk/media/sample/widget/media/InfoHudViewHolder.java b/android/ijkplayer/ijkplayer-sample/src/main/java/tv/danmaku/ijk/media/sample/widget/media/InfoHudViewHolder.java index e7d37807..ea2c3387 100644 --- a/android/ijkplayer/ijkplayer-sample/src/main/java/tv/danmaku/ijk/media/sample/widget/media/InfoHudViewHolder.java +++ b/android/ijkplayer/ijkplayer-sample/src/main/java/tv/danmaku/ijk/media/sample/widget/media/InfoHudViewHolder.java @@ -80,6 +80,14 @@ public class InfoHudViewHolder { setRowValue(R.string.fps_decode, String.format(Locale.US, "%.2f", fpsDecode)); setRowValue(R.string.fps_output, String.format(Locale.US, "%.2f", fpsOutput)); + long videoCachedDuration = mp.getVideoCachedDuration(); + long audioCachedDuration = mp.getAudioCachedDuration(); + long videoCachedBytes = mp.getVideoCachedBytes(); + long audioCachedBytes = mp.getAudioCachedBytes(); + + setRowValue(R.string.v_cache, String.format(Locale.US, "%d ms, %d B", videoCachedDuration, videoCachedBytes)); + setRowValue(R.string.a_cache, String.format(Locale.US, "%d ms, %d B", audioCachedDuration, audioCachedBytes)); + mHandler.removeMessages(MSG_UPDATE_HUD); mHandler.sendEmptyMessageDelayed(MSG_UPDATE_HUD, 500); } diff --git a/android/ijkplayer/ijkplayer-sample/src/main/res/values/strings.xml b/android/ijkplayer/ijkplayer-sample/src/main/res/values/strings.xml index 8f446e1e..37878aa4 100644 --- a/android/ijkplayer/ijkplayer-sample/src/main/res/values/strings.xml +++ b/android/ijkplayer/ijkplayer-sample/src/main/res/values/strings.xml @@ -16,6 +16,8 @@ Info fps (output) fps (decode) + v-cache + a-cache Media Information Player -- GitLab