diff options
Diffstat (limited to 'media/java/android/media/MediaCodec.java')
| -rw-r--r-- | media/java/android/media/MediaCodec.java | 24 |
1 files changed, 20 insertions, 4 deletions
diff --git a/media/java/android/media/MediaCodec.java b/media/java/android/media/MediaCodec.java index d22cfda..f4a5bc3 100644 --- a/media/java/android/media/MediaCodec.java +++ b/media/java/android/media/MediaCodec.java @@ -681,12 +681,20 @@ final public class MediaCodec { */ @NonNull public static Surface createPersistentInputSurface() { - // TODO implement this - return new PersistentSurface(); + return native_createPersistentInputSurface(); } static class PersistentSurface extends Surface { - PersistentSurface() {} + @SuppressWarnings("unused") + PersistentSurface() {} // used by native + + @Override + public void release() { + native_releasePersistentInputSurface(this); + super.release(); + } + + private long mPersistentObject; }; /** @@ -700,9 +708,17 @@ final public class MediaCodec { * {@link #createPersistentInputSurface}. */ public void usePersistentInputSurface(@NonNull Surface surface) { - throw new IllegalArgumentException("not implemented"); + if (!(surface instanceof PersistentSurface)) { + throw new IllegalArgumentException("not a PersistentSurface"); + } + native_usePersistentInputSurface(surface); } + @NonNull + private static native final PersistentSurface native_createPersistentInputSurface(); + private static native final void native_releasePersistentInputSurface(@NonNull Surface surface); + private native final void native_usePersistentInputSurface(@NonNull Surface surface); + private native final void native_setCallback(@Nullable Callback cb); private native final void native_configure( |
