class android.media.ImageReader$SurfaceImage extends android.media.Image
  minor version: 0
  major version: 59
  flags: flags: (0x0020) ACC_SUPER
  this_class: android.media.ImageReader$SurfaceImage
  super_class: android.media.Image
{
  private long mNativeBuffer;
    descriptor: J
    flags: (0x0002) ACC_PRIVATE

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

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

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

  private android.media.ImageReader$SurfaceImage$SurfacePlane[] mPlanes;
    descriptor: [Landroid/media/ImageReader$SurfaceImage$SurfacePlane;
    flags: (0x0002) ACC_PRIVATE

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

  private java.util.concurrent.atomic.AtomicBoolean mIsDetached;
    descriptor: Ljava/util/concurrent/atomic/AtomicBoolean;
    flags: (0x0002) ACC_PRIVATE

  final android.media.ImageReader this$0;
    descriptor: Landroid/media/ImageReader;
    flags: (0x1010) ACC_FINAL, ACC_SYNTHETIC

  public void <init>(android.media.ImageReader, int);
    descriptor: (Landroid/media/ImageReader;I)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // android.media.ImageReader$SurfaceImage this
        start local 2 // int format
         0: .line 806
            aload 0 /* this */
            aload 1
            putfield android.media.ImageReader$SurfaceImage.this$0:Landroid/media/ImageReader;
            aload 0 /* this */
            invokespecial android.media.Image.<init>:()V
         1: .line 1020
            aload 0 /* this */
            iconst_0
            putfield android.media.ImageReader$SurfaceImage.mFormat:I
         2: .line 1022
            aload 0 /* this */
            new java.util.concurrent.atomic.AtomicBoolean
            dup
            iconst_0
            invokespecial java.util.concurrent.atomic.AtomicBoolean.<init>:(Z)V
            putfield android.media.ImageReader$SurfaceImage.mIsDetached:Ljava/util/concurrent/atomic/AtomicBoolean;
         3: .line 807
            aload 0 /* this */
            iload 2 /* format */
            putfield android.media.ImageReader$SurfaceImage.mFormat:I
         4: .line 808
            return
        end local 2 // int format
        end local 0 // android.media.ImageReader$SurfaceImage this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    5     0    this  Landroid/media/ImageReader$SurfaceImage;
            0    5     2  format  I
    MethodParameters:
        Name  Flags
      this$0  final
      format  

  public void close();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // android.media.ImageReader$SurfaceImage this
         0: .line 812
            aload 0 /* this */
            getfield android.media.ImageReader$SurfaceImage.this$0:Landroid/media/ImageReader;
            aload 0 /* this */
            invokevirtual android.media.ImageReader.releaseImage:(Landroid/media/Image;)V
         1: .line 813
            return
        end local 0 // android.media.ImageReader$SurfaceImage this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Landroid/media/ImageReader$SurfaceImage;

  public android.media.ImageReader getReader();
    descriptor: ()Landroid/media/ImageReader;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // android.media.ImageReader$SurfaceImage this
         0: .line 816
            aload 0 /* this */
            getfield android.media.ImageReader$SurfaceImage.this$0:Landroid/media/ImageReader;
            areturn
        end local 0 // android.media.ImageReader$SurfaceImage this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Landroid/media/ImageReader$SurfaceImage;

  public int getFormat();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=1
        start local 0 // android.media.ImageReader$SurfaceImage this
         0: .line 821
            aload 0 /* this */
            invokevirtual android.media.ImageReader$SurfaceImage.throwISEIfImageIsInvalid:()V
         1: .line 822
            aload 0 /* this */
            getfield android.media.ImageReader$SurfaceImage.this$0:Landroid/media/ImageReader;
            invokevirtual android.media.ImageReader.getImageFormat:()I
            istore 1 /* readerFormat */
        start local 1 // int readerFormat
         2: .line 824
            aload 0 /* this */
            iload 1 /* readerFormat */
            bipush 34
            if_icmpne 3
            iload 1 /* readerFormat */
            goto 4
         3: .line 825
      StackMap locals: android.media.ImageReader$SurfaceImage int
      StackMap stack: android.media.ImageReader$SurfaceImage
            aload 0 /* this */
            iload 1 /* readerFormat */
            invokevirtual android.media.ImageReader$SurfaceImage.nativeGetFormat:(I)I
         4: .line 824
      StackMap locals: android.media.ImageReader$SurfaceImage int
      StackMap stack: android.media.ImageReader$SurfaceImage int
            putfield android.media.ImageReader$SurfaceImage.mFormat:I
         5: .line 826
            aload 0 /* this */
            getfield android.media.ImageReader$SurfaceImage.mFormat:I
            ireturn
        end local 1 // int readerFormat
        end local 0 // android.media.ImageReader$SurfaceImage this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    6     0          this  Landroid/media/ImageReader$SurfaceImage;
            2    6     1  readerFormat  I

  public int getWidth();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=2, args_size=1
        start local 0 // android.media.ImageReader$SurfaceImage this
         0: .line 831
            aload 0 /* this */
            invokevirtual android.media.ImageReader$SurfaceImage.throwISEIfImageIsInvalid:()V
         1: .line 833
            aload 0 /* this */
            invokevirtual android.media.ImageReader$SurfaceImage.getFormat:()I
            lookupswitch { // 3
                   36: 2
                  256: 2
                  257: 2
              default: 4
          }
         2: .line 837
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield android.media.ImageReader$SurfaceImage.this$0:Landroid/media/ImageReader;
            invokevirtual android.media.ImageReader.getWidth:()I
            istore 1 /* width */
        start local 1 // int width
         3: .line 838
            goto 5
        end local 1 // int width
         4: .line 840
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual android.media.ImageReader$SurfaceImage.nativeGetWidth:()I
            istore 1 /* width */
        start local 1 // int width
         5: .line 842
      StackMap locals: int
      StackMap stack:
            iload 1 /* width */
            ireturn
        end local 1 // int width
        end local 0 // android.media.ImageReader$SurfaceImage this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    6     0   this  Landroid/media/ImageReader$SurfaceImage;
            3    4     1  width  I
            5    6     1  width  I

  public int getHeight();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=2, args_size=1
        start local 0 // android.media.ImageReader$SurfaceImage this
         0: .line 847
            aload 0 /* this */
            invokevirtual android.media.ImageReader$SurfaceImage.throwISEIfImageIsInvalid:()V
         1: .line 849
            aload 0 /* this */
            invokevirtual android.media.ImageReader$SurfaceImage.getFormat:()I
            lookupswitch { // 3
                   36: 2
                  256: 2
                  257: 2
              default: 4
          }
         2: .line 853
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield android.media.ImageReader$SurfaceImage.this$0:Landroid/media/ImageReader;
            invokevirtual android.media.ImageReader.getHeight:()I
            istore 1 /* height */
        start local 1 // int height
         3: .line 854
            goto 5
        end local 1 // int height
         4: .line 856
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual android.media.ImageReader$SurfaceImage.nativeGetHeight:()I
            istore 1 /* height */
        start local 1 // int height
         5: .line 858
      StackMap locals: int
      StackMap stack:
            iload 1 /* height */
            ireturn
        end local 1 // int height
        end local 0 // android.media.ImageReader$SurfaceImage this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    6     0    this  Landroid/media/ImageReader$SurfaceImage;
            3    4     1  height  I
            5    6     1  height  I

  public long getTimestamp();
    descriptor: ()J
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // android.media.ImageReader$SurfaceImage this
         0: .line 863
            aload 0 /* this */
            invokevirtual android.media.ImageReader$SurfaceImage.throwISEIfImageIsInvalid:()V
         1: .line 864
            aload 0 /* this */
            getfield android.media.ImageReader$SurfaceImage.mTimestamp:J
            lreturn
        end local 0 // android.media.ImageReader$SurfaceImage this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Landroid/media/ImageReader$SurfaceImage;

  public int getTransform();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // android.media.ImageReader$SurfaceImage this
         0: .line 869
            aload 0 /* this */
            invokevirtual android.media.ImageReader$SurfaceImage.throwISEIfImageIsInvalid:()V
         1: .line 870
            aload 0 /* this */
            getfield android.media.ImageReader$SurfaceImage.mTransform:I
            ireturn
        end local 0 // android.media.ImageReader$SurfaceImage this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Landroid/media/ImageReader$SurfaceImage;

  public int getScalingMode();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // android.media.ImageReader$SurfaceImage this
         0: .line 875
            aload 0 /* this */
            invokevirtual android.media.ImageReader$SurfaceImage.throwISEIfImageIsInvalid:()V
         1: .line 876
            aload 0 /* this */
            getfield android.media.ImageReader$SurfaceImage.mScalingMode:I
            ireturn
        end local 0 // android.media.ImageReader$SurfaceImage this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Landroid/media/ImageReader$SurfaceImage;

  public android.hardware.HardwareBuffer getHardwareBuffer();
    descriptor: ()Landroid/hardware/HardwareBuffer;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // android.media.ImageReader$SurfaceImage this
         0: .line 881
            aload 0 /* this */
            invokevirtual android.media.ImageReader$SurfaceImage.throwISEIfImageIsInvalid:()V
         1: .line 882
            aload 0 /* this */
            invokevirtual android.media.ImageReader$SurfaceImage.nativeGetHardwareBuffer:()Landroid/hardware/HardwareBuffer;
            areturn
        end local 0 // android.media.ImageReader$SurfaceImage this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Landroid/media/ImageReader$SurfaceImage;

  public void setTimestamp(long);
    descriptor: (J)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // android.media.ImageReader$SurfaceImage this
        start local 1 // long timestampNs
         0: .line 887
            aload 0 /* this */
            invokevirtual android.media.ImageReader$SurfaceImage.throwISEIfImageIsInvalid:()V
         1: .line 888
            aload 0 /* this */
            lload 1 /* timestampNs */
            putfield android.media.ImageReader$SurfaceImage.mTimestamp:J
         2: .line 889
            return
        end local 1 // long timestampNs
        end local 0 // android.media.ImageReader$SurfaceImage this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    3     0         this  Landroid/media/ImageReader$SurfaceImage;
            0    3     1  timestampNs  J
    MethodParameters:
             Name  Flags
      timestampNs  

  public android.media.Image$Plane[] getPlanes();
    descriptor: ()[Landroid/media/Image$Plane;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=1, args_size=1
        start local 0 // android.media.ImageReader$SurfaceImage this
         0: .line 893
            aload 0 /* this */
            invokevirtual android.media.ImageReader$SurfaceImage.throwISEIfImageIsInvalid:()V
         1: .line 895
            aload 0 /* this */
            getfield android.media.ImageReader$SurfaceImage.mPlanes:[Landroid/media/ImageReader$SurfaceImage$SurfacePlane;
            ifnonnull 3
         2: .line 896
            aload 0 /* this */
            aload 0 /* this */
            aload 0 /* this */
            getfield android.media.ImageReader$SurfaceImage.this$0:Landroid/media/ImageReader;
            getfield android.media.ImageReader.mNumPlanes:I
            aload 0 /* this */
            getfield android.media.ImageReader$SurfaceImage.this$0:Landroid/media/ImageReader;
            getfield android.media.ImageReader.mFormat:I
            invokevirtual android.media.ImageReader$SurfaceImage.nativeCreatePlanes:(II)[Landroid/media/ImageReader$SurfaceImage$SurfacePlane;
            putfield android.media.ImageReader$SurfaceImage.mPlanes:[Landroid/media/ImageReader$SurfaceImage$SurfacePlane;
         3: .line 899
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield android.media.ImageReader$SurfaceImage.mPlanes:[Landroid/media/ImageReader$SurfaceImage$SurfacePlane;
            invokevirtual android.media.ImageReader$SurfaceImage$SurfacePlane[].clone:()Ljava/lang/Object;
            checkcast android.media.Image$Plane[]
            areturn
        end local 0 // android.media.ImageReader$SurfaceImage this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Landroid/media/ImageReader$SurfaceImage;

  protected final void finalize();
    descriptor: ()V
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL
    Code:
      stack=1, locals=2, args_size=1
        start local 0 // android.media.ImageReader$SurfaceImage this
         0: .line 905
            aload 0 /* this */
            invokevirtual android.media.ImageReader$SurfaceImage.close:()V
         1: .line 906
            goto 5
      StackMap locals:
      StackMap stack: java.lang.Throwable
         2: astore 1
         3: .line 907
            aload 0 /* this */
            invokespecial java.lang.Object.finalize:()V
         4: .line 908
            aload 1
            athrow
         5: .line 907
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokespecial java.lang.Object.finalize:()V
         6: .line 909
            return
        end local 0 // android.media.ImageReader$SurfaceImage this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    7     0  this  Landroid/media/ImageReader$SurfaceImage;
      Exception table:
        from    to  target  type
           0     2       2  any
    Exceptions:
      throws java.lang.Throwable

  boolean isAttachable();
    descriptor: ()Z
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // android.media.ImageReader$SurfaceImage this
         0: .line 913
            aload 0 /* this */
            invokevirtual android.media.ImageReader$SurfaceImage.throwISEIfImageIsInvalid:()V
         1: .line 914
            aload 0 /* this */
            getfield android.media.ImageReader$SurfaceImage.mIsDetached:Ljava/util/concurrent/atomic/AtomicBoolean;
            invokevirtual java.util.concurrent.atomic.AtomicBoolean.get:()Z
            ireturn
        end local 0 // android.media.ImageReader$SurfaceImage this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Landroid/media/ImageReader$SurfaceImage;

  android.media.ImageReader getOwner();
    descriptor: ()Landroid/media/ImageReader;
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // android.media.ImageReader$SurfaceImage this
         0: .line 919
            aload 0 /* this */
            invokevirtual android.media.ImageReader$SurfaceImage.throwISEIfImageIsInvalid:()V
         1: .line 920
            aload 0 /* this */
            getfield android.media.ImageReader$SurfaceImage.this$0:Landroid/media/ImageReader;
            areturn
        end local 0 // android.media.ImageReader$SurfaceImage this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Landroid/media/ImageReader$SurfaceImage;

  long getNativeContext();
    descriptor: ()J
    flags: (0x0000) 
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // android.media.ImageReader$SurfaceImage this
         0: .line 925
            aload 0 /* this */
            invokevirtual android.media.ImageReader$SurfaceImage.throwISEIfImageIsInvalid:()V
         1: .line 926
            aload 0 /* this */
            getfield android.media.ImageReader$SurfaceImage.mNativeBuffer:J
            lreturn
        end local 0 // android.media.ImageReader$SurfaceImage this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Landroid/media/ImageReader$SurfaceImage;

  private void setDetached(boolean);
    descriptor: (Z)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // android.media.ImageReader$SurfaceImage this
        start local 1 // boolean detached
         0: .line 930
            aload 0 /* this */
            invokevirtual android.media.ImageReader$SurfaceImage.throwISEIfImageIsInvalid:()V
         1: .line 931
            aload 0 /* this */
            getfield android.media.ImageReader$SurfaceImage.mIsDetached:Ljava/util/concurrent/atomic/AtomicBoolean;
            iload 1 /* detached */
            invokevirtual java.util.concurrent.atomic.AtomicBoolean.getAndSet:(Z)Z
            pop
         2: .line 932
            return
        end local 1 // boolean detached
        end local 0 // android.media.ImageReader$SurfaceImage this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    3     0      this  Landroid/media/ImageReader$SurfaceImage;
            0    3     1  detached  Z
    MethodParameters:
          Name  Flags
      detached  

  private void clearSurfacePlanes();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=2, args_size=1
        start local 0 // android.media.ImageReader$SurfaceImage this
         0: .line 936
            aload 0 /* this */
            getfield android.media.ImageReader$SurfaceImage.mIsImageValid:Z
            ifeq 8
            aload 0 /* this */
            getfield android.media.ImageReader$SurfaceImage.mPlanes:[Landroid/media/ImageReader$SurfaceImage$SurfacePlane;
            ifnull 8
         1: .line 937
            iconst_0
            istore 1 /* i */
        start local 1 // int i
         2: goto 7
         3: .line 938
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            getfield android.media.ImageReader$SurfaceImage.mPlanes:[Landroid/media/ImageReader$SurfaceImage$SurfacePlane;
            iload 1 /* i */
            aaload
            ifnull 6
         4: .line 939
            aload 0 /* this */
            getfield android.media.ImageReader$SurfaceImage.mPlanes:[Landroid/media/ImageReader$SurfaceImage$SurfacePlane;
            iload 1 /* i */
            aaload
            invokevirtual android.media.ImageReader$SurfaceImage$SurfacePlane.clearBuffer:()V
         5: .line 940
            aload 0 /* this */
            getfield android.media.ImageReader$SurfaceImage.mPlanes:[Landroid/media/ImageReader$SurfaceImage$SurfacePlane;
            iload 1 /* i */
            aconst_null
            aastore
         6: .line 937
      StackMap locals:
      StackMap stack:
            iinc 1 /* i */ 1
      StackMap locals:
      StackMap stack:
         7: iload 1 /* i */
            aload 0 /* this */
            getfield android.media.ImageReader$SurfaceImage.mPlanes:[Landroid/media/ImageReader$SurfaceImage$SurfacePlane;
            arraylength
            if_icmplt 3
        end local 1 // int i
         8: .line 944
      StackMap locals:
      StackMap stack:
            return
        end local 0 // android.media.ImageReader$SurfaceImage this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    9     0  this  Landroid/media/ImageReader$SurfaceImage;
            2    8     1     i  I

  private synchronized native android.media.ImageReader$SurfaceImage$SurfacePlane[] nativeCreatePlanes(int, int);
    descriptor: (II)[Landroid/media/ImageReader$SurfaceImage$SurfacePlane;
    flags: (0x0122) ACC_PRIVATE, ACC_SYNCHRONIZED, ACC_NATIVE
    MethodParameters:
              Name  Flags
      numPlanes     
      readerFormat  

  private synchronized native int nativeGetWidth();
    descriptor: ()I
    flags: (0x0122) ACC_PRIVATE, ACC_SYNCHRONIZED, ACC_NATIVE

  private synchronized native int nativeGetHeight();
    descriptor: ()I
    flags: (0x0122) ACC_PRIVATE, ACC_SYNCHRONIZED, ACC_NATIVE

  private synchronized native int nativeGetFormat(int);
    descriptor: (I)I
    flags: (0x0122) ACC_PRIVATE, ACC_SYNCHRONIZED, ACC_NATIVE
    MethodParameters:
              Name  Flags
      readerFormat  

  private synchronized native android.hardware.HardwareBuffer nativeGetHardwareBuffer();
    descriptor: ()Landroid/hardware/HardwareBuffer;
    flags: (0x0122) ACC_PRIVATE, ACC_SYNCHRONIZED, ACC_NATIVE

  java.lang.Object getOwner();
    descriptor: ()Ljava/lang/Object;
    flags: (0x1040) ACC_BRIDGE, ACC_SYNTHETIC
    Code:
      stack=1, locals=1, args_size=1
         0: .line 1
            aload 0
            invokevirtual android.media.ImageReader$SurfaceImage.getOwner:()Landroid/media/ImageReader;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  static android.media.ImageReader access$1(android.media.ImageReader$SurfaceImage);
    descriptor: (Landroid/media/ImageReader$SurfaceImage;)Landroid/media/ImageReader;
    flags: (0x1008) ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=1, locals=1, args_size=1
         0: .line 805
            aload 0
            getfield android.media.ImageReader$SurfaceImage.this$0:Landroid/media/ImageReader;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature
}
SourceFile: "ImageReader.java"
NestHost: android.media.ImageReader
InnerClasses:
  public abstract Plane = android.media.Image$Plane of android.media.Image
  private SurfaceImage = android.media.ImageReader$SurfaceImage of android.media.ImageReader
  private SurfacePlane = android.media.ImageReader$SurfaceImage$SurfacePlane of android.media.ImageReader$SurfaceImage