class android.media.ImageUtils
minor version: 0
major version: 59
flags: flags: (0x0020) ACC_SUPER
this_class: android.media.ImageUtils
super_class: java.lang.Object
{
void <init>();
descriptor: ()V
flags: (0x0000)
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
invokespecial java.lang.Object.<init>:()V
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Landroid/media/ImageUtils;
public static int getNumPlanesForFormat(int);
descriptor: (I)I
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=7, locals=1, args_size=1
start local 0 0: iload 0
lookupswitch { // 20
1: 3
2: 3
3: 3
4: 3
16: 2
17: 1
20: 3
32: 3
34: 4
35: 1
36: 3
37: 3
38: 3
256: 3
257: 3
4098: 3
538982489: 3
540422489: 3
842094169: 1
1144402265: 3
default: 5
}
1: StackMap locals:
StackMap stack:
iconst_3
ireturn
2: StackMap locals:
StackMap stack:
iconst_2
ireturn
3: StackMap locals:
StackMap stack:
iconst_1
ireturn
4: StackMap locals:
StackMap stack:
iconst_0
ireturn
5: StackMap locals:
StackMap stack:
new java.lang.UnsupportedOperationException
dup
6: ldc "Invalid format specified %d"
iconst_1
anewarray java.lang.Object
dup
iconst_0
iload 0
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
aastore
invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
7: invokespecial java.lang.UnsupportedOperationException.<init>:(Ljava/lang/String;)V
athrow
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 8 0 format I
MethodParameters:
Name Flags
format
public static void imageCopy(android.media.Image, android.media.Image);
descriptor: (Landroid/media/Image;Landroid/media/Image;)V
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=5, locals=18, args_size=2
start local 0 start local 1 0: aload 0
ifnull 1
aload 1
ifnonnull 2
1: StackMap locals:
StackMap stack:
new java.lang.IllegalArgumentException
dup
ldc "Images should be non-null"
invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
athrow
2: StackMap locals:
StackMap stack:
aload 0
invokevirtual android.media.Image.getFormat:()I
aload 1
invokevirtual android.media.Image.getFormat:()I
if_icmpeq 4
3: new java.lang.IllegalArgumentException
dup
ldc "Src and dst images should have the same format"
invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
athrow
4: StackMap locals:
StackMap stack:
aload 0
invokevirtual android.media.Image.getFormat:()I
bipush 34
if_icmpeq 6
5: aload 1
invokevirtual android.media.Image.getFormat:()I
bipush 34
if_icmpne 7
6: StackMap locals:
StackMap stack:
new java.lang.IllegalArgumentException
dup
ldc "PRIVATE format images are not copyable"
invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
athrow
7: StackMap locals:
StackMap stack:
aload 0
invokevirtual android.media.Image.getFormat:()I
bipush 36
if_icmpne 11
8: new java.lang.IllegalArgumentException
dup
9: ldc "Copy of RAW_OPAQUE format has not been implemented"
10: invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
athrow
11: StackMap locals:
StackMap stack:
aload 0
invokevirtual android.media.Image.getFormat:()I
sipush 4098
if_icmpne 15
12: new java.lang.IllegalArgumentException
dup
13: ldc "Copy of RAW_DEPTH format has not been implemented"
14: invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
athrow
15: StackMap locals:
StackMap stack:
aload 1
invokevirtual android.media.Image.getOwner:()Ljava/lang/Object;
instanceof android.media.ImageWriter
ifne 17
16: new java.lang.IllegalArgumentException
dup
ldc "Destination image is not from ImageWriter. Only the images from ImageWriter are writable"
invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
athrow
17: StackMap locals:
StackMap stack:
new android.util.Size
dup
aload 0
invokevirtual android.media.Image.getWidth:()I
aload 0
invokevirtual android.media.Image.getHeight:()I
invokespecial android.util.Size.<init>:(II)V
astore 2
start local 2 18: new android.util.Size
dup
aload 1
invokevirtual android.media.Image.getWidth:()I
aload 1
invokevirtual android.media.Image.getHeight:()I
invokespecial android.util.Size.<init>:(II)V
astore 3
start local 3 19: aload 2
aload 3
invokevirtual android.util.Size.equals:(Ljava/lang/Object;)Z
ifne 23
20: new java.lang.IllegalArgumentException
dup
new java.lang.StringBuilder
dup
ldc "source image size "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 2
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
ldc " is different"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
21: ldc " with "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
ldc "destination image size "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 3
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
22: invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
athrow
23: StackMap locals: android.util.Size android.util.Size
StackMap stack:
aload 0
invokevirtual android.media.Image.getPlanes:()[Landroid/media/Image$Plane;
astore 4
start local 4 24: aload 1
invokevirtual android.media.Image.getPlanes:()[Landroid/media/Image$Plane;
astore 5
start local 5 25: aconst_null
astore 6
start local 6 26: aconst_null
astore 7
start local 7 27: iconst_0
istore 8
start local 8 28: goto 65
29: StackMap locals: android.media.Image android.media.Image android.util.Size android.util.Size android.media.Image$Plane[] android.media.Image$Plane[] java.nio.ByteBuffer java.nio.ByteBuffer int
StackMap stack:
aload 4
iload 8
aaload
invokevirtual android.media.Image$Plane.getRowStride:()I
istore 9
start local 9 30: aload 5
iload 8
aaload
invokevirtual android.media.Image$Plane.getRowStride:()I
istore 10
start local 10 31: aload 4
iload 8
aaload
invokevirtual android.media.Image$Plane.getBuffer:()Ljava/nio/ByteBuffer;
astore 6
32: aload 5
iload 8
aaload
invokevirtual android.media.Image$Plane.getBuffer:()Ljava/nio/ByteBuffer;
astore 7
33: aload 6
invokevirtual java.nio.ByteBuffer.isDirect:()Z
ifeq 34
aload 7
invokevirtual java.nio.ByteBuffer.isDirect:()Z
ifne 35
34: StackMap locals: int int
StackMap stack:
new java.lang.IllegalArgumentException
dup
ldc "Source and destination ByteBuffers must be direct byteBuffer!"
invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
athrow
35: StackMap locals:
StackMap stack:
aload 4
iload 8
aaload
invokevirtual android.media.Image$Plane.getPixelStride:()I
aload 5
iload 8
aaload
invokevirtual android.media.Image$Plane.getPixelStride:()I
if_icmpeq 41
36: new java.lang.IllegalArgumentException
dup
new java.lang.StringBuilder
dup
ldc "Source plane image pixel stride "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
37: aload 4
iload 8
aaload
invokevirtual android.media.Image$Plane.getPixelStride:()I
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
38: ldc " must be same as destination image pixel stride "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
39: aload 5
iload 8
aaload
invokevirtual android.media.Image$Plane.getPixelStride:()I
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
40: invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
athrow
41: StackMap locals:
StackMap stack:
aload 6
invokevirtual java.nio.ByteBuffer.position:()I
istore 11
start local 11 42: aload 6
invokevirtual java.nio.ByteBuffer.rewind:()Ljava/nio/Buffer;
pop
43: aload 7
invokevirtual java.nio.ByteBuffer.rewind:()Ljava/nio/Buffer;
pop
44: iload 9
iload 10
if_icmpne 47
45: aload 7
aload 6
invokevirtual java.nio.ByteBuffer.put:(Ljava/nio/ByteBuffer;)Ljava/nio/ByteBuffer;
pop
46: goto 62
47: StackMap locals: int
StackMap stack:
aload 6
invokevirtual java.nio.ByteBuffer.position:()I
istore 12
start local 12 48: aload 7
invokevirtual java.nio.ByteBuffer.position:()I
istore 13
start local 13 49: aload 0
iload 8
invokestatic android.media.ImageUtils.getEffectivePlaneSizeForImage:(Landroid/media/Image;I)Landroid/util/Size;
astore 14
start local 14 50: aload 14
invokevirtual android.util.Size.getWidth:()I
aload 4
iload 8
aaload
invokevirtual android.media.Image$Plane.getPixelStride:()I
imul
istore 15
start local 15 51: iconst_0
istore 16
start local 16 52: goto 61
53: StackMap locals: android.media.Image android.media.Image android.util.Size android.util.Size android.media.Image$Plane[] android.media.Image$Plane[] java.nio.ByteBuffer java.nio.ByteBuffer int int int int int int android.util.Size int int
StackMap stack:
iload 16
aload 14
invokevirtual android.util.Size.getHeight:()I
iconst_1
isub
if_icmpne 57
54: aload 6
invokevirtual java.nio.ByteBuffer.remaining:()I
iload 12
isub
istore 17
start local 17 55: iload 15
iload 17
if_icmple 57
56: iload 17
istore 15
end local 17 57: StackMap locals:
StackMap stack:
aload 6
iload 12
aload 7
iload 13
iload 15
invokestatic android.media.ImageUtils.directByteBufferCopy:(Ljava/nio/ByteBuffer;ILjava/nio/ByteBuffer;II)V
58: iload 12
iload 9
iadd
istore 12
59: iload 13
iload 10
iadd
istore 13
60: iinc 16 1
StackMap locals:
StackMap stack:
61: iload 16
aload 14
invokevirtual android.util.Size.getHeight:()I
if_icmplt 53
end local 16 end local 15 end local 14 end local 13 end local 12 62: StackMap locals: android.media.Image android.media.Image android.util.Size android.util.Size android.media.Image$Plane[] android.media.Image$Plane[] java.nio.ByteBuffer java.nio.ByteBuffer int int int int
StackMap stack:
aload 6
iload 11
invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/Buffer;
pop
63: aload 7
invokevirtual java.nio.ByteBuffer.rewind:()Ljava/nio/Buffer;
pop
end local 11 end local 10 end local 9 64: iinc 8 1
StackMap locals:
StackMap stack:
65: iload 8
aload 4
arraylength
if_icmplt 29
end local 8 66: return
end local 7 end local 6 end local 5 end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 67 0 src Landroid/media/Image;
0 67 1 dst Landroid/media/Image;
18 67 2 srcSize Landroid/util/Size;
19 67 3 dstSize Landroid/util/Size;
24 67 4 srcPlanes [Landroid/media/Image$Plane;
25 67 5 dstPlanes [Landroid/media/Image$Plane;
26 67 6 srcBuffer Ljava/nio/ByteBuffer;
27 67 7 dstBuffer Ljava/nio/ByteBuffer;
28 66 8 i I
30 64 9 srcRowStride I
31 64 10 dstRowStride I
42 64 11 srcPos I
48 62 12 srcOffset I
49 62 13 dstOffset I
50 62 14 effectivePlaneSize Landroid/util/Size;
51 62 15 srcByteCount I
52 62 16 row I
55 57 17 remainingBytes I
MethodParameters:
Name Flags
src
dst
public static int getEstimatedNativeAllocBytes(int, int, int, int);
descriptor: (IIII)I
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=7, locals=6, args_size=4
start local 0 start local 1 start local 2 start local 3 0: iload 2
lookupswitch { // 20
1: 13
2: 13
3: 11
4: 9
16: 9
17: 7
20: 9
32: 9
34: 7
35: 7
36: 9
37: 5
38: 7
256: 1
257: 1
4098: 9
538982489: 3
540422489: 9
842094169: 7
1144402265: 9
default: 15
}
1: StackMap locals:
StackMap stack:
ldc 0.3
dstore 4
start local 4 2: goto 18
end local 4 3: StackMap locals:
StackMap stack:
dconst_1
dstore 4
start local 4 4: goto 18
end local 4 5: StackMap locals:
StackMap stack:
ldc 1.25
dstore 4
start local 4 6: goto 18
end local 4 7: StackMap locals:
StackMap stack:
ldc 1.5
dstore 4
start local 4 8: goto 18
end local 4 9: StackMap locals:
StackMap stack:
ldc 2.0
dstore 4
start local 4 10: goto 18
end local 4 11: StackMap locals:
StackMap stack:
ldc 3.0
dstore 4
start local 4 12: goto 18
end local 4 13: StackMap locals:
StackMap stack:
ldc 4.0
dstore 4
start local 4 14: goto 18
end local 4 15: StackMap locals:
StackMap stack:
new java.lang.UnsupportedOperationException
dup
16: ldc "Invalid format specified %d"
iconst_1
anewarray java.lang.Object
dup
iconst_0
iload 2
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
aastore
invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
17: invokespecial java.lang.UnsupportedOperationException.<init>:(Ljava/lang/String;)V
athrow
start local 4 18: StackMap locals: double
StackMap stack:
iload 0
iload 1
imul
i2d
dload 4
dmul
iload 3
i2d
dmul
d2i
ireturn
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 19 0 width I
0 19 1 height I
0 19 2 format I
0 19 3 numImages I
2 3 4 estimatedBytePerPixel D
4 5 4 estimatedBytePerPixel D
6 7 4 estimatedBytePerPixel D
8 9 4 estimatedBytePerPixel D
10 11 4 estimatedBytePerPixel D
12 13 4 estimatedBytePerPixel D
14 15 4 estimatedBytePerPixel D
18 19 4 estimatedBytePerPixel D
MethodParameters:
Name Flags
width
height
format
numImages
private static android.util.Size getEffectivePlaneSizeForImage(android.media.Image, int);
descriptor: (Landroid/media/Image;I)Landroid/util/Size;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=7, locals=2, args_size=2
start local 0 start local 1 0: aload 0
invokevirtual android.media.Image.getFormat:()I
lookupswitch { // 17
1: 7
2: 7
3: 7
4: 7
16: 4
17: 1
20: 7
32: 7
34: 8
35: 1
37: 7
38: 7
256: 7
4098: 7
538982489: 7
540422489: 7
842094169: 1
default: 9
}
1: StackMap locals:
StackMap stack:
iload 1
ifne 3
2: new android.util.Size
dup
aload 0
invokevirtual android.media.Image.getWidth:()I
aload 0
invokevirtual android.media.Image.getHeight:()I
invokespecial android.util.Size.<init>:(II)V
areturn
3: StackMap locals:
StackMap stack:
new android.util.Size
dup
aload 0
invokevirtual android.media.Image.getWidth:()I
iconst_2
idiv
aload 0
invokevirtual android.media.Image.getHeight:()I
iconst_2
idiv
invokespecial android.util.Size.<init>:(II)V
areturn
4: StackMap locals:
StackMap stack:
iload 1
ifne 6
5: new android.util.Size
dup
aload 0
invokevirtual android.media.Image.getWidth:()I
aload 0
invokevirtual android.media.Image.getHeight:()I
invokespecial android.util.Size.<init>:(II)V
areturn
6: StackMap locals:
StackMap stack:
new android.util.Size
dup
aload 0
invokevirtual android.media.Image.getWidth:()I
aload 0
invokevirtual android.media.Image.getHeight:()I
iconst_2
idiv
invokespecial android.util.Size.<init>:(II)V
areturn
7: StackMap locals:
StackMap stack:
new android.util.Size
dup
aload 0
invokevirtual android.media.Image.getWidth:()I
aload 0
invokevirtual android.media.Image.getHeight:()I
invokespecial android.util.Size.<init>:(II)V
areturn
8: StackMap locals:
StackMap stack:
new android.util.Size
dup
iconst_0
iconst_0
invokespecial android.util.Size.<init>:(II)V
areturn
9: StackMap locals:
StackMap stack:
new java.lang.UnsupportedOperationException
dup
10: ldc "Invalid image format %d"
iconst_1
anewarray java.lang.Object
dup
iconst_0
aload 0
invokevirtual android.media.Image.getFormat:()I
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
aastore
invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
11: invokespecial java.lang.UnsupportedOperationException.<init>:(Ljava/lang/String;)V
athrow
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 12 0 image Landroid/media/Image;
0 12 1 planeIdx I
MethodParameters:
Name Flags
image
planeIdx
private static void directByteBufferCopy(java.nio.ByteBuffer, int, java.nio.ByteBuffer, int, int);
descriptor: (Ljava/nio/ByteBuffer;ILjava/nio/ByteBuffer;II)V
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=3, locals=5, args_size=5
0: new java.lang.Error
dup
ldc "Unresolved compilation problem: \n\tMemory cannot be resolved\n"
invokespecial java.lang.Error.<init>:(Ljava/lang/String;)V
athrow
LocalVariableTable:
Start End Slot Name Signature
MethodParameters:
Name Flags
srcBuffer
srcOffset
dstBuffer
dstOffset
srcByteCount
}
SourceFile: "ImageUtils.java"
InnerClasses:
public abstract Plane = android.media.Image$Plane of android.media.Image