aboutsummaryrefslogtreecommitdiffstats
path: root/libs/android-transcoder/src/main/java/net/ypresto/androidtranscoder/compat/MediaCodecBufferCompatWrapper.java
diff options
context:
space:
mode:
Diffstat (limited to 'libs/android-transcoder/src/main/java/net/ypresto/androidtranscoder/compat/MediaCodecBufferCompatWrapper.java')
-rw-r--r--libs/android-transcoder/src/main/java/net/ypresto/androidtranscoder/compat/MediaCodecBufferCompatWrapper.java42
1 files changed, 42 insertions, 0 deletions
diff --git a/libs/android-transcoder/src/main/java/net/ypresto/androidtranscoder/compat/MediaCodecBufferCompatWrapper.java b/libs/android-transcoder/src/main/java/net/ypresto/androidtranscoder/compat/MediaCodecBufferCompatWrapper.java
new file mode 100644
index 000000000..e36db4b72
--- /dev/null
+++ b/libs/android-transcoder/src/main/java/net/ypresto/androidtranscoder/compat/MediaCodecBufferCompatWrapper.java
@@ -0,0 +1,42 @@
+package net.ypresto.androidtranscoder.compat;
+
+import android.media.MediaCodec;
+import android.os.Build;
+
+import java.nio.ByteBuffer;
+
+/**
+ * A Wrapper to MediaCodec that facilitates the use of API-dependent get{Input/Output}Buffer methods,
+ * in order to prevent: http://stackoverflow.com/q/30646885
+ */
+public class MediaCodecBufferCompatWrapper {
+
+ final MediaCodec mMediaCodec;
+ final ByteBuffer[] mInputBuffers;
+ final ByteBuffer[] mOutputBuffers;
+
+ public MediaCodecBufferCompatWrapper(MediaCodec mediaCodec) {
+ mMediaCodec = mediaCodec;
+
+ if (Build.VERSION.SDK_INT < 21) {
+ mInputBuffers = mediaCodec.getInputBuffers();
+ mOutputBuffers = mediaCodec.getOutputBuffers();
+ } else {
+ mInputBuffers = mOutputBuffers = null;
+ }
+ }
+
+ public ByteBuffer getInputBuffer(final int index) {
+ if (Build.VERSION.SDK_INT >= 21) {
+ return mMediaCodec.getInputBuffer(index);
+ }
+ return mInputBuffers[index];
+ }
+
+ public ByteBuffer getOutputBuffer(final int index) {
+ if (Build.VERSION.SDK_INT >= 21) {
+ return mMediaCodec.getOutputBuffer(index);
+ }
+ return mOutputBuffers[index];
+ }
+}