public class android.media.ImageWriter implements java.lang.AutoCloseable
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: android.media.ImageWriter
  super_class: java.lang.Object
{
  private final java.lang.Object mListenerLock;
    descriptor: Ljava/lang/Object;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private android.media.ImageWriter$OnImageReleasedListener mListener;
    descriptor: Landroid/media/ImageWriter$OnImageReleasedListener;
    flags: (0x0002) ACC_PRIVATE

  private android.media.ImageWriter$ListenerHandler mListenerHandler;
    descriptor: Landroid/media/ImageWriter$ListenerHandler;
    flags: (0x0002) ACC_PRIVATE

  private long mNativeContext;
    descriptor: J
    flags: (0x0002) ACC_PRIVATE

  private int mWriterFormat;
    descriptor: I
    flags: (0x0002) ACC_PRIVATE

  private final int mMaxImages;
    descriptor: I
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private java.util.List<android.media.Image> mDequeuedImages;
    descriptor: Ljava/util/List;
    flags: (0x0002) ACC_PRIVATE
    Signature: Ljava/util/List<Landroid/media/Image;>;

  private int mEstimatedNativeAllocBytes;
    descriptor: I
    flags: (0x0002) ACC_PRIVATE

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 905
            ldc "media_jni"
            invokestatic java.lang.System.loadLibrary:(Ljava/lang/String;)V
         1: .line 906
            invokestatic android.media.ImageWriter.nativeClassInit:()V
         2: .line 907
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public static android.media.ImageWriter newInstance(android.view.Surface, int);
    descriptor: (Landroid/view/Surface;I)Landroid/media/ImageWriter;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=2, args_size=2
        start local 0 // android.view.Surface surface
        start local 1 // int maxImages
         0: .line 128
            new android.media.ImageWriter
            dup
            aload 0 /* surface */
            iload 1 /* maxImages */
            iconst_0
            invokespecial android.media.ImageWriter.<init>:(Landroid/view/Surface;II)V
            areturn
        end local 1 // int maxImages
        end local 0 // android.view.Surface surface
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    1     0    surface  Landroid/view/Surface;
            0    1     1  maxImages  I
    MethodParameters:
           Name  Flags
      surface    
      maxImages  

  public static android.media.ImageWriter newInstance(android.view.Surface, int, int);
    descriptor: (Landroid/view/Surface;II)Landroid/media/ImageWriter;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=3, args_size=3
        start local 0 // android.view.Surface surface
        start local 1 // int maxImages
        start local 2 // int format
         0: .line 174
            iload 2 /* format */
            invokestatic android.graphics.ImageFormat.isPublicFormat:(I)Z
            ifne 2
            iload 2 /* format */
            invokestatic android.graphics.PixelFormat.isPublicFormat:(I)Z
            ifne 2
         1: .line 175
            new java.lang.IllegalArgumentException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Invalid format is specified: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            iload 2 /* format */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 177
      StackMap locals:
      StackMap stack:
            new android.media.ImageWriter
            dup
            aload 0 /* surface */
            iload 1 /* maxImages */
            iload 2 /* format */
            invokespecial android.media.ImageWriter.<init>:(Landroid/view/Surface;II)V
            areturn
        end local 2 // int format
        end local 1 // int maxImages
        end local 0 // android.view.Surface surface
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    3     0    surface  Landroid/view/Surface;
            0    3     1  maxImages  I
            0    3     2     format  I
    MethodParameters:
           Name  Flags
      surface    
      maxImages  
      format     

  protected void <init>(android.view.Surface, int, int);
    descriptor: (Landroid/view/Surface;II)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=3, locals=4, args_size=4
        start local 0 // android.media.ImageWriter this
         0: .line 30
            new java.lang.Error
            dup
            ldc "Unresolved compilation problems: \n\tThe import dalvik.system cannot be resolved\n\tThe import java.nio.NioUtils cannot be resolved\n\tVMRuntime cannot be resolved\n\tVMRuntime cannot be resolved\n\tNioUtils cannot be resolved\n"
            invokespecial java.lang.Error.<init>:(Ljava/lang/String;)V
            athrow
        end local 0 // android.media.ImageWriter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Landroid/media/ImageWriter;
    MethodParameters:
           Name  Flags
      surface    
      maxImages  
      format     

  public int getMaxImages();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // android.media.ImageWriter this
         0: .line 235
            aload 0 /* this */
            getfield android.media.ImageWriter.mMaxImages:I
            ireturn
        end local 0 // android.media.ImageWriter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Landroid/media/ImageWriter;

  public android.media.Image dequeueInputImage();
    descriptor: ()Landroid/media/Image;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=2, args_size=1
        start local 0 // android.media.ImageWriter this
         0: .line 286
            aload 0 /* this */
            getfield android.media.ImageWriter.mDequeuedImages:Ljava/util/List;
            invokeinterface java.util.List.size:()I
            aload 0 /* this */
            getfield android.media.ImageWriter.mMaxImages:I
            if_icmplt 2
         1: .line 287
            new java.lang.IllegalStateException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Already dequeued max number of Images "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            getfield android.media.ImageWriter.mMaxImages:I
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 289
      StackMap locals:
      StackMap stack:
            new android.media.ImageWriter$WriterSurfaceImage
            dup
            aload 0 /* this */
            invokespecial android.media.ImageWriter$WriterSurfaceImage.<init>:(Landroid/media/ImageWriter;)V
            astore 1 /* newImage */
        start local 1 // android.media.ImageWriter$WriterSurfaceImage newImage
         3: .line 290
            aload 0 /* this */
            aload 0 /* this */
            getfield android.media.ImageWriter.mNativeContext:J
            aload 1 /* newImage */
            invokevirtual android.media.ImageWriter.nativeDequeueInputImage:(JLandroid/media/Image;)V
         4: .line 291
            aload 0 /* this */
            getfield android.media.ImageWriter.mDequeuedImages:Ljava/util/List;
            aload 1 /* newImage */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
         5: .line 292
            aload 1 /* newImage */
            iconst_1
            putfield android.media.ImageWriter$WriterSurfaceImage.mIsImageValid:Z
         6: .line 293
            aload 1 /* newImage */
            areturn
        end local 1 // android.media.ImageWriter$WriterSurfaceImage newImage
        end local 0 // android.media.ImageWriter this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    7     0      this  Landroid/media/ImageWriter;
            3    7     1  newImage  Landroid/media/ImageWriter$WriterSurfaceImage;

  public void queueInputImage(android.media.Image);
    descriptor: (Landroid/media/Image;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=12, locals=5, args_size=2
        start local 0 // android.media.ImageWriter this
        start local 1 // android.media.Image image
         0: .line 349
            aload 1 /* image */
            ifnonnull 2
         1: .line 350
            new java.lang.IllegalArgumentException
            dup
            ldc "image shouldn't be null"
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 352
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* image */
            invokevirtual android.media.ImageWriter.isImageOwnedByMe:(Landroid/media/Image;)Z
            istore 2 /* ownedByMe */
        start local 2 // boolean ownedByMe
         3: .line 353
            iload 2 /* ownedByMe */
            ifeq 5
            aload 1 /* image */
            checkcast android.media.ImageWriter$WriterSurfaceImage
            getfield android.media.ImageWriter$WriterSurfaceImage.mIsImageValid:Z
            ifne 5
         4: .line 354
            new java.lang.IllegalStateException
            dup
            ldc "Image from ImageWriter is invalid"
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
         5: .line 358
      StackMap locals: int
      StackMap stack:
            iload 2 /* ownedByMe */
            ifne 13
         6: .line 359
            aload 1 /* image */
            invokevirtual android.media.Image.getOwner:()Ljava/lang/Object;
            instanceof android.media.ImageReader
            ifne 8
         7: .line 360
            new java.lang.IllegalArgumentException
            dup
            ldc "Only images from ImageReader can be queued to ImageWriter, other image source is not supported yet!"
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         8: .line 364
      StackMap locals:
      StackMap stack:
            aload 1 /* image */
            invokevirtual android.media.Image.getOwner:()Ljava/lang/Object;
            checkcast android.media.ImageReader
            astore 3 /* prevOwner */
        start local 3 // android.media.ImageReader prevOwner
         9: .line 366
            aload 3 /* prevOwner */
            aload 1 /* image */
            invokevirtual android.media.ImageReader.detachImage:(Landroid/media/Image;)V
        10: .line 367
            aload 0 /* this */
            aload 1 /* image */
            invokevirtual android.media.ImageWriter.attachAndQueueInputImage:(Landroid/media/Image;)V
        11: .line 371
            aload 1 /* image */
            invokevirtual android.media.Image.close:()V
        12: .line 372
            return
        end local 3 // android.media.ImageReader prevOwner
        13: .line 375
      StackMap locals:
      StackMap stack:
            aload 1 /* image */
            invokevirtual android.media.Image.getCropRect:()Landroid/graphics/Rect;
            astore 3 /* crop */
        start local 3 // android.graphics.Rect crop
        14: .line 376
            aload 0 /* this */
            aload 0 /* this */
            getfield android.media.ImageWriter.mNativeContext:J
            aload 1 /* image */
            aload 1 /* image */
            invokevirtual android.media.Image.getTimestamp:()J
            aload 3 /* crop */
            getfield android.graphics.Rect.left:I
            aload 3 /* crop */
            getfield android.graphics.Rect.top:I
        15: .line 377
            aload 3 /* crop */
            getfield android.graphics.Rect.right:I
            aload 3 /* crop */
            getfield android.graphics.Rect.bottom:I
            aload 1 /* image */
            invokevirtual android.media.Image.getTransform:()I
            aload 1 /* image */
            invokevirtual android.media.Image.getScalingMode:()I
        16: .line 376
            invokevirtual android.media.ImageWriter.nativeQueueInputImage:(JLandroid/media/Image;JIIIIII)V
        17: .line 386
            iload 2 /* ownedByMe */
            ifeq 22
        18: .line 387
            aload 0 /* this */
            getfield android.media.ImageWriter.mDequeuedImages:Ljava/util/List;
            aload 1 /* image */
            invokeinterface java.util.List.remove:(Ljava/lang/Object;)Z
            pop
        19: .line 389
            aload 1 /* image */
            checkcast android.media.ImageWriter$WriterSurfaceImage
            astore 4 /* wi */
        start local 4 // android.media.ImageWriter$WriterSurfaceImage wi
        20: .line 390
            aload 4 /* wi */
            invokevirtual android.media.ImageWriter$WriterSurfaceImage.clearSurfacePlanes:()V
        21: .line 391
            aload 4 /* wi */
            iconst_0
            putfield android.media.ImageWriter$WriterSurfaceImage.mIsImageValid:Z
        end local 4 // android.media.ImageWriter$WriterSurfaceImage wi
        22: .line 393
      StackMap locals: android.graphics.Rect
      StackMap stack:
            return
        end local 3 // android.graphics.Rect crop
        end local 2 // boolean ownedByMe
        end local 1 // android.media.Image image
        end local 0 // android.media.ImageWriter this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   23     0       this  Landroid/media/ImageWriter;
            0   23     1      image  Landroid/media/Image;
            3   23     2  ownedByMe  Z
            9   13     3  prevOwner  Landroid/media/ImageReader;
           14   23     3       crop  Landroid/graphics/Rect;
           20   22     4         wi  Landroid/media/ImageWriter$WriterSurfaceImage;
    MethodParameters:
       Name  Flags
      image  

  public int getFormat();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // android.media.ImageWriter this
         0: .line 407
            aload 0 /* this */
            getfield android.media.ImageWriter.mWriterFormat:I
            ireturn
        end local 0 // android.media.ImageWriter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Landroid/media/ImageWriter;

  public void setOnImageReleasedListener(android.media.ImageWriter$OnImageReleasedListener, android.os.Handler);
    descriptor: (Landroid/media/ImageWriter$OnImageReleasedListener;Landroid/os/Handler;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=5, args_size=3
        start local 0 // android.media.ImageWriter this
        start local 1 // android.media.ImageWriter$OnImageReleasedListener listener
        start local 2 // android.os.Handler handler
         0: .line 457
            aload 0 /* this */
            getfield android.media.ImageWriter.mListenerLock:Ljava/lang/Object;
            dup
            astore 3
            monitorenter
         1: .line 458
            aload 1 /* listener */
            ifnull 13
         2: .line 459
            aload 2 /* handler */
            ifnull 3
            aload 2 /* handler */
            invokevirtual android.os.Handler.getLooper:()Landroid/os/Looper;
            goto 4
      StackMap locals: java.lang.Object
      StackMap stack:
         3: invokestatic android.os.Looper.myLooper:()Landroid/os/Looper;
      StackMap locals:
      StackMap stack: android.os.Looper
         4: astore 4 /* looper */
        start local 4 // android.os.Looper looper
         5: .line 460
            aload 4 /* looper */
            ifnonnull 9
         6: .line 461
            new java.lang.IllegalArgumentException
            dup
         7: .line 462
            ldc "handler is null but the current thread is not a looper"
         8: .line 461
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         9: .line 464
      StackMap locals: android.os.Looper
      StackMap stack:
            aload 0 /* this */
            getfield android.media.ImageWriter.mListenerHandler:Landroid/media/ImageWriter$ListenerHandler;
            ifnull 10
            aload 0 /* this */
            getfield android.media.ImageWriter.mListenerHandler:Landroid/media/ImageWriter$ListenerHandler;
            invokevirtual android.media.ImageWriter$ListenerHandler.getLooper:()Landroid/os/Looper;
            aload 4 /* looper */
            if_acmpeq 11
        10: .line 465
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            new android.media.ImageWriter$ListenerHandler
            dup
            aload 0 /* this */
            aload 4 /* looper */
            invokespecial android.media.ImageWriter$ListenerHandler.<init>:(Landroid/media/ImageWriter;Landroid/os/Looper;)V
            putfield android.media.ImageWriter.mListenerHandler:Landroid/media/ImageWriter$ListenerHandler;
        11: .line 467
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* listener */
            putfield android.media.ImageWriter.mListener:Landroid/media/ImageWriter$OnImageReleasedListener;
        end local 4 // android.os.Looper looper
        12: .line 468
            goto 15
        13: .line 469
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aconst_null
            putfield android.media.ImageWriter.mListener:Landroid/media/ImageWriter$OnImageReleasedListener;
        14: .line 470
            aload 0 /* this */
            aconst_null
            putfield android.media.ImageWriter.mListenerHandler:Landroid/media/ImageWriter$ListenerHandler;
        15: .line 457
      StackMap locals:
      StackMap stack:
            aload 3
            monitorexit
        16: goto 19
      StackMap locals:
      StackMap stack: java.lang.Throwable
        17: aload 3
            monitorexit
        18: athrow
        19: .line 473
      StackMap locals:
      StackMap stack:
            return
        end local 2 // android.os.Handler handler
        end local 1 // android.media.ImageWriter$OnImageReleasedListener listener
        end local 0 // android.media.ImageWriter this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   20     0      this  Landroid/media/ImageWriter;
            0   20     1  listener  Landroid/media/ImageWriter$OnImageReleasedListener;
            0   20     2   handler  Landroid/os/Handler;
            5   12     4    looper  Landroid/os/Looper;
      Exception table:
        from    to  target  type
           1    16      17  any
          17    18      17  any
    MethodParameters:
          Name  Flags
      listener  
      handler   

  public void close();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // android.media.ImageWriter this
         0: .line 498
            new java.lang.Error
            dup
            ldc "Unresolved compilation problem: \n\tVMRuntime cannot be resolved\n"
            invokespecial java.lang.Error.<init>:(Ljava/lang/String;)V
            athrow
        end local 0 // android.media.ImageWriter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Landroid/media/ImageWriter;

  protected void finalize();
    descriptor: ()V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=2, args_size=1
        start local 0 // android.media.ImageWriter this
         0: .line 506
            aload 0 /* this */
            invokevirtual android.media.ImageWriter.close:()V
         1: .line 507
            goto 5
      StackMap locals:
      StackMap stack: java.lang.Throwable
         2: astore 1
         3: .line 508
            aload 0 /* this */
            invokespecial java.lang.Object.finalize:()V
         4: .line 509
            aload 1
            athrow
         5: .line 508
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokespecial java.lang.Object.finalize:()V
         6: .line 510
            return
        end local 0 // android.media.ImageWriter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    7     0  this  Landroid/media/ImageWriter;
      Exception table:
        from    to  target  type
           0     2       2  any
    Exceptions:
      throws java.lang.Throwable

  private void attachAndQueueInputImage(android.media.Image);
    descriptor: (Landroid/media/Image;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=14, locals=3, args_size=2
        start local 0 // android.media.ImageWriter this
        start local 1 // android.media.Image image
         0: .line 540
            aload 1 /* image */
            ifnonnull 2
         1: .line 541
            new java.lang.IllegalArgumentException
            dup
            ldc "image shouldn't be null"
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 543
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* image */
            invokevirtual android.media.ImageWriter.isImageOwnedByMe:(Landroid/media/Image;)Z
            ifeq 6
         3: .line 544
            new java.lang.IllegalArgumentException
            dup
         4: .line 545
            ldc "Can not attach an image that is owned ImageWriter already"
         5: .line 544
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         6: .line 553
      StackMap locals:
      StackMap stack:
            aload 1 /* image */
            invokevirtual android.media.Image.isAttachable:()Z
            ifne 8
         7: .line 554
            new java.lang.IllegalStateException
            dup
            ldc "Image was not detached from last owner, or image  is not detachable"
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
         8: .line 561
      StackMap locals:
      StackMap stack:
            aload 1 /* image */
            invokevirtual android.media.Image.getCropRect:()Landroid/graphics/Rect;
            astore 2 /* crop */
        start local 2 // android.graphics.Rect crop
         9: .line 562
            aload 0 /* this */
            aload 0 /* this */
            getfield android.media.ImageWriter.mNativeContext:J
            aload 1 /* image */
            invokevirtual android.media.Image.getNativeContext:()J
            aload 1 /* image */
            invokevirtual android.media.Image.getFormat:()I
        10: .line 563
            aload 1 /* image */
            invokevirtual android.media.Image.getTimestamp:()J
            aload 2 /* crop */
            getfield android.graphics.Rect.left:I
            aload 2 /* crop */
            getfield android.graphics.Rect.top:I
            aload 2 /* crop */
            getfield android.graphics.Rect.right:I
            aload 2 /* crop */
            getfield android.graphics.Rect.bottom:I
        11: .line 564
            aload 1 /* image */
            invokevirtual android.media.Image.getTransform:()I
            aload 1 /* image */
            invokevirtual android.media.Image.getScalingMode:()I
        12: .line 562
            invokevirtual android.media.ImageWriter.nativeAttachAndQueueImage:(JJIJIIIIII)I
            pop
        13: .line 565
            return
        end local 2 // android.graphics.Rect crop
        end local 1 // android.media.Image image
        end local 0 // android.media.ImageWriter this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0   14     0   this  Landroid/media/ImageWriter;
            0   14     1  image  Landroid/media/Image;
            9   14     2   crop  Landroid/graphics/Rect;
    MethodParameters:
       Name  Flags
      image  

  private static void postEventFromNative(java.lang.Object);
    descriptor: (Ljava/lang/Object;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=5, args_size=1
        start local 0 // java.lang.Object selfRef
         0: .line 595
            aload 0 /* selfRef */
            checkcast java.lang.ref.WeakReference
            astore 1 /* weakSelf */
        start local 1 // java.lang.ref.WeakReference weakSelf
         1: .line 596
            aload 1 /* weakSelf */
            invokevirtual java.lang.ref.WeakReference.get:()Ljava/lang/Object;
            checkcast android.media.ImageWriter
            astore 2 /* iw */
        start local 2 // android.media.ImageWriter iw
         2: .line 597
            aload 2 /* iw */
            ifnonnull 4
         3: .line 598
            return
         4: .line 602
      StackMap locals: java.lang.ref.WeakReference android.media.ImageWriter
      StackMap stack:
            aload 2 /* iw */
            getfield android.media.ImageWriter.mListenerLock:Ljava/lang/Object;
            dup
            astore 4
            monitorenter
         5: .line 603
            aload 2 /* iw */
            getfield android.media.ImageWriter.mListenerHandler:Landroid/media/ImageWriter$ListenerHandler;
            astore 3 /* handler */
        start local 3 // android.os.Handler handler
         6: .line 602
            aload 4
            monitorexit
         7: goto 10
        end local 3 // android.os.Handler handler
      StackMap locals: java.lang.Object java.lang.ref.WeakReference android.media.ImageWriter top java.lang.Object
      StackMap stack: java.lang.Throwable
         8: aload 4
            monitorexit
         9: athrow
        start local 3 // android.os.Handler handler
        10: .line 605
      StackMap locals: java.lang.Object java.lang.ref.WeakReference android.media.ImageWriter android.os.Handler
      StackMap stack:
            aload 3 /* handler */
            ifnull 12
        11: .line 606
            aload 3 /* handler */
            iconst_0
            invokevirtual android.os.Handler.sendEmptyMessage:(I)Z
            pop
        12: .line 608
      StackMap locals:
      StackMap stack:
            return
        end local 3 // android.os.Handler handler
        end local 2 // android.media.ImageWriter iw
        end local 1 // java.lang.ref.WeakReference weakSelf
        end local 0 // java.lang.Object selfRef
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   13     0   selfRef  Ljava/lang/Object;
            1   13     1  weakSelf  Ljava/lang/ref/WeakReference<Landroid/media/ImageWriter;>;
            2   13     2        iw  Landroid/media/ImageWriter;
            6    8     3   handler  Landroid/os/Handler;
           10   13     3   handler  Landroid/os/Handler;
      Exception table:
        from    to  target  type
           5     7       8  any
           8     9       8  any
    MethodParameters:
         Name  Flags
      selfRef  

  private void abortImage(android.media.Image);
    descriptor: (Landroid/media/Image;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=3, args_size=2
        start local 0 // android.media.ImageWriter this
        start local 1 // android.media.Image image
         0: .line 629
            aload 1 /* image */
            ifnonnull 2
         1: .line 630
            new java.lang.IllegalArgumentException
            dup
            ldc "image shouldn't be null"
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 633
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield android.media.ImageWriter.mDequeuedImages:Ljava/util/List;
            aload 1 /* image */
            invokeinterface java.util.List.contains:(Ljava/lang/Object;)Z
            ifne 4
         3: .line 634
            new java.lang.IllegalStateException
            dup
            ldc "It is illegal to abort some image that is not dequeued yet"
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
         4: .line 638
      StackMap locals:
      StackMap stack:
            aload 1 /* image */
            checkcast android.media.ImageWriter$WriterSurfaceImage
            astore 2 /* wi */
        start local 2 // android.media.ImageWriter$WriterSurfaceImage wi
         5: .line 639
            aload 2 /* wi */
            getfield android.media.ImageWriter$WriterSurfaceImage.mIsImageValid:Z
            ifne 7
         6: .line 640
            return
         7: .line 649
      StackMap locals: android.media.ImageWriter$WriterSurfaceImage
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            getfield android.media.ImageWriter.mNativeContext:J
            aload 1 /* image */
            invokevirtual android.media.ImageWriter.cancelImage:(JLandroid/media/Image;)V
         8: .line 650
            aload 0 /* this */
            getfield android.media.ImageWriter.mDequeuedImages:Ljava/util/List;
            aload 1 /* image */
            invokeinterface java.util.List.remove:(Ljava/lang/Object;)Z
            pop
         9: .line 651
            aload 2 /* wi */
            invokevirtual android.media.ImageWriter$WriterSurfaceImage.clearSurfacePlanes:()V
        10: .line 652
            aload 2 /* wi */
            iconst_0
            putfield android.media.ImageWriter$WriterSurfaceImage.mIsImageValid:Z
        11: .line 653
            return
        end local 2 // android.media.ImageWriter$WriterSurfaceImage wi
        end local 1 // android.media.Image image
        end local 0 // android.media.ImageWriter this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0   12     0   this  Landroid/media/ImageWriter;
            0   12     1  image  Landroid/media/Image;
            5   12     2     wi  Landroid/media/ImageWriter$WriterSurfaceImage;
    MethodParameters:
       Name  Flags
      image  

  private boolean isImageOwnedByMe(android.media.Image);
    descriptor: (Landroid/media/Image;)Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // android.media.ImageWriter this
        start local 1 // android.media.Image image
         0: .line 656
            aload 1 /* image */
            instanceof android.media.ImageWriter$WriterSurfaceImage
            ifne 2
         1: .line 657
            iconst_0
            ireturn
         2: .line 659
      StackMap locals:
      StackMap stack:
            aload 1 /* image */
            checkcast android.media.ImageWriter$WriterSurfaceImage
            astore 2 /* wi */
        start local 2 // android.media.ImageWriter$WriterSurfaceImage wi
         3: .line 660
            aload 2 /* wi */
            invokevirtual android.media.ImageWriter$WriterSurfaceImage.getOwner:()Landroid/media/ImageWriter;
            aload 0 /* this */
            if_acmpeq 5
         4: .line 661
            iconst_0
            ireturn
         5: .line 664
      StackMap locals: android.media.ImageWriter$WriterSurfaceImage
      StackMap stack:
            iconst_1
            ireturn
        end local 2 // android.media.ImageWriter$WriterSurfaceImage wi
        end local 1 // android.media.Image image
        end local 0 // android.media.ImageWriter this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    6     0   this  Landroid/media/ImageWriter;
            0    6     1  image  Landroid/media/Image;
            3    6     2     wi  Landroid/media/ImageWriter$WriterSurfaceImage;
    MethodParameters:
       Name  Flags
      image  

  private synchronized native long nativeInit(java.lang.Object, android.view.Surface, int, int);
    descriptor: (Ljava/lang/Object;Landroid/view/Surface;II)J
    flags: (0x0122) ACC_PRIVATE, ACC_SYNCHRONIZED, ACC_NATIVE
    MethodParameters:
          Name  Flags
      weakSelf  
      surface   
      maxImgs   
      format    

  private synchronized native void nativeClose(long);
    descriptor: (J)V
    flags: (0x0122) ACC_PRIVATE, ACC_SYNCHRONIZED, ACC_NATIVE
    MethodParameters:
           Name  Flags
      nativeCtx  

  private synchronized native void nativeDequeueInputImage(long, android.media.Image);
    descriptor: (JLandroid/media/Image;)V
    flags: (0x0122) ACC_PRIVATE, ACC_SYNCHRONIZED, ACC_NATIVE
    MethodParameters:
           Name  Flags
      nativeCtx  
      wi         

  private synchronized native void nativeQueueInputImage(long, android.media.Image, long, int, int, int, int, int, int);
    descriptor: (JLandroid/media/Image;JIIIIII)V
    flags: (0x0122) ACC_PRIVATE, ACC_SYNCHRONIZED, ACC_NATIVE
    MethodParameters:
             Name  Flags
      nativeCtx    
      image        
      timestampNs  
      left         
      top          
      right        
      bottom       
      transform    
      scalingMode  

  private synchronized native int nativeAttachAndQueueImage(long, long, int, long, int, int, int, int, int, int);
    descriptor: (JJIJIIIIII)I
    flags: (0x0122) ACC_PRIVATE, ACC_SYNCHRONIZED, ACC_NATIVE
    MethodParameters:
                   Name  Flags
      nativeCtx          
      imageNativeBuffer  
      imageFormat        
      timestampNs        
      left               
      top                
      right              
      bottom             
      transform          
      scalingMode        

  private synchronized native void cancelImage(long, android.media.Image);
    descriptor: (JLandroid/media/Image;)V
    flags: (0x0122) ACC_PRIVATE, ACC_SYNCHRONIZED, ACC_NATIVE
    MethodParameters:
           Name  Flags
      nativeCtx  
      image      

  private static native void nativeClassInit();
    descriptor: ()V
    flags: (0x010a) ACC_PRIVATE, ACC_STATIC, ACC_NATIVE
}
SourceFile: "ImageWriter.java"
NestMembers:
  android.media.ImageWriter$ListenerHandler  android.media.ImageWriter$OnImageReleasedListener  android.media.ImageWriter$WriterSurfaceImage  android.media.ImageWriter$WriterSurfaceImage$SurfacePlane
InnerClasses:
  private final ListenerHandler = android.media.ImageWriter$ListenerHandler of android.media.ImageWriter
  public abstract OnImageReleasedListener = android.media.ImageWriter$OnImageReleasedListener of android.media.ImageWriter
  private WriterSurfaceImage = android.media.ImageWriter$WriterSurfaceImage of android.media.ImageWriter