public final class android.media.MediaCodecInfo$EncoderCapabilities
  minor version: 0
  major version: 59
  flags: flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
  this_class: android.media.MediaCodecInfo$EncoderCapabilities
  super_class: java.lang.Object
{
  public static final int BITRATE_MODE_CQ;
    descriptor: I
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: 0

  public static final int BITRATE_MODE_VBR;
    descriptor: I
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: 1

  public static final int BITRATE_MODE_CBR;
    descriptor: I
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: 2

  private static final android.media.MediaCodecInfo$Feature[] bitrates;
    descriptor: [Landroid/media/MediaCodecInfo$Feature;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private android.util.Range<java.lang.Integer> mQualityRange;
    descriptor: Landroid/util/Range;
    flags: (0x0002) ACC_PRIVATE
    Signature: Landroid/util/Range<Ljava/lang/Integer;>;

  private android.util.Range<java.lang.Integer> mComplexityRange;
    descriptor: Landroid/util/Range;
    flags: (0x0002) ACC_PRIVATE
    Signature: Landroid/util/Range<Ljava/lang/Integer;>;

  private android.media.MediaCodecInfo$CodecCapabilities mParent;
    descriptor: Landroid/media/MediaCodecInfo$CodecCapabilities;
    flags: (0x0002) ACC_PRIVATE

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

  private java.lang.Integer mDefaultComplexity;
    descriptor: Ljava/lang/Integer;
    flags: (0x0002) ACC_PRIVATE

  private java.lang.Integer mDefaultQuality;
    descriptor: Ljava/lang/Integer;
    flags: (0x0002) ACC_PRIVATE

  private java.lang.String mQualityScale;
    descriptor: Ljava/lang/String;
    flags: (0x0002) ACC_PRIVATE

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=8, locals=0, args_size=0
         0: .line 2677
            iconst_3
            anewarray android.media.MediaCodecInfo$Feature
            dup
            iconst_0
         1: .line 2678
            new android.media.MediaCodecInfo$Feature
            dup
            ldc "VBR"
            iconst_1
            iconst_1
            invokespecial android.media.MediaCodecInfo$Feature.<init>:(Ljava/lang/String;IZ)V
            aastore
            dup
            iconst_1
         2: .line 2679
            new android.media.MediaCodecInfo$Feature
            dup
            ldc "CBR"
            iconst_2
            iconst_0
            invokespecial android.media.MediaCodecInfo$Feature.<init>:(Ljava/lang/String;IZ)V
            aastore
            dup
            iconst_2
         3: .line 2680
            new android.media.MediaCodecInfo$Feature
            dup
            ldc "CQ"
            iconst_0
            iconst_0
            invokespecial android.media.MediaCodecInfo$Feature.<init>:(Ljava/lang/String;IZ)V
            aastore
         4: .line 2677
            putstatic android.media.MediaCodecInfo$EncoderCapabilities.bitrates:[Landroid/media/MediaCodecInfo$Feature;
         5: .line 2681
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public android.util.Range<java.lang.Integer> getQualityRange();
    descriptor: ()Landroid/util/Range;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // android.media.MediaCodecInfo$EncoderCapabilities this
         0: .line 2655
            aload 0 /* this */
            getfield android.media.MediaCodecInfo$EncoderCapabilities.mQualityRange:Landroid/util/Range;
            areturn
        end local 0 // android.media.MediaCodecInfo$EncoderCapabilities this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Landroid/media/MediaCodecInfo$EncoderCapabilities;
    Signature: ()Landroid/util/Range<Ljava/lang/Integer;>;

  public android.util.Range<java.lang.Integer> getComplexityRange();
    descriptor: ()Landroid/util/Range;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // android.media.MediaCodecInfo$EncoderCapabilities this
         0: .line 2667
            aload 0 /* this */
            getfield android.media.MediaCodecInfo$EncoderCapabilities.mComplexityRange:Landroid/util/Range;
            areturn
        end local 0 // android.media.MediaCodecInfo$EncoderCapabilities this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Landroid/media/MediaCodecInfo$EncoderCapabilities;
    Signature: ()Landroid/util/Range<Ljava/lang/Integer;>;

  private static int parseBitrateMode(java.lang.String);
    descriptor: (Ljava/lang/String;)I
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=5, args_size=1
        start local 0 // java.lang.String mode
         0: .line 2684
            getstatic android.media.MediaCodecInfo$EncoderCapabilities.bitrates:[Landroid/media/MediaCodecInfo$Feature;
            dup
            astore 4
            arraylength
            istore 3
            iconst_0
            istore 2
            goto 5
      StackMap locals: java.lang.String top int int android.media.MediaCodecInfo$Feature[]
      StackMap stack:
         1: aload 4
            iload 2
            aaload
            astore 1 /* feat */
        start local 1 // android.media.MediaCodecInfo$Feature feat
         2: .line 2685
            aload 1 /* feat */
            getfield android.media.MediaCodecInfo$Feature.mName:Ljava/lang/String;
            aload 0 /* mode */
            invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
            ifeq 4
         3: .line 2686
            aload 1 /* feat */
            getfield android.media.MediaCodecInfo$Feature.mValue:I
            ireturn
        end local 1 // android.media.MediaCodecInfo$Feature feat
         4: .line 2684
      StackMap locals:
      StackMap stack:
            iinc 2 1
      StackMap locals:
      StackMap stack:
         5: iload 2
            iload 3
            if_icmplt 1
         6: .line 2689
            iconst_0
            ireturn
        end local 0 // java.lang.String mode
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    7     0  mode  Ljava/lang/String;
            2    4     1  feat  Landroid/media/MediaCodecInfo$Feature;
    MethodParameters:
      Name  Flags
      mode  

  public boolean isBitrateModeSupported(int);
    descriptor: (I)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=6, args_size=2
        start local 0 // android.media.MediaCodecInfo$EncoderCapabilities this
        start local 1 // int mode
         0: .line 2696
            getstatic android.media.MediaCodecInfo$EncoderCapabilities.bitrates:[Landroid/media/MediaCodecInfo$Feature;
            dup
            astore 5
            arraylength
            istore 4
            iconst_0
            istore 3
            goto 6
      StackMap locals: android.media.MediaCodecInfo$EncoderCapabilities int top int int android.media.MediaCodecInfo$Feature[]
      StackMap stack:
         1: aload 5
            iload 3
            aaload
            astore 2 /* feat */
        start local 2 // android.media.MediaCodecInfo$Feature feat
         2: .line 2697
            iload 1 /* mode */
            aload 2 /* feat */
            getfield android.media.MediaCodecInfo$Feature.mValue:I
            if_icmpne 5
         3: .line 2698
            aload 0 /* this */
            getfield android.media.MediaCodecInfo$EncoderCapabilities.mBitControl:I
            iconst_1
            iload 1 /* mode */
            ishl
            iand
            ifeq 4
            iconst_1
            ireturn
      StackMap locals: android.media.MediaCodecInfo$EncoderCapabilities int android.media.MediaCodecInfo$Feature int int android.media.MediaCodecInfo$Feature[]
      StackMap stack:
         4: iconst_0
            ireturn
        end local 2 // android.media.MediaCodecInfo$Feature feat
         5: .line 2696
      StackMap locals: android.media.MediaCodecInfo$EncoderCapabilities int top int int android.media.MediaCodecInfo$Feature[]
      StackMap stack:
            iinc 3 1
      StackMap locals:
      StackMap stack:
         6: iload 3
            iload 4
            if_icmplt 1
         7: .line 2701
            iconst_0
            ireturn
        end local 1 // int mode
        end local 0 // android.media.MediaCodecInfo$EncoderCapabilities this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    8     0  this  Landroid/media/MediaCodecInfo$EncoderCapabilities;
            0    8     1  mode  I
            2    5     2  feat  Landroid/media/MediaCodecInfo$Feature;
    MethodParameters:
      Name  Flags
      mode  

  private void <init>();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // android.media.MediaCodecInfo$EncoderCapabilities this
         0: .line 2709
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
            return
        end local 0 // android.media.MediaCodecInfo$EncoderCapabilities this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Landroid/media/MediaCodecInfo$EncoderCapabilities;

  public static android.media.MediaCodecInfo$EncoderCapabilities create(android.media.MediaFormat, android.media.MediaCodecInfo$CodecCapabilities);
    descriptor: (Landroid/media/MediaFormat;Landroid/media/MediaCodecInfo$CodecCapabilities;)Landroid/media/MediaCodecInfo$EncoderCapabilities;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // android.media.MediaFormat info
        start local 1 // android.media.MediaCodecInfo$CodecCapabilities parent
         0: .line 2714
            new android.media.MediaCodecInfo$EncoderCapabilities
            dup
            invokespecial android.media.MediaCodecInfo$EncoderCapabilities.<init>:()V
            astore 2 /* caps */
        start local 2 // android.media.MediaCodecInfo$EncoderCapabilities caps
         1: .line 2715
            aload 2 /* caps */
            aload 0 /* info */
            aload 1 /* parent */
            invokevirtual android.media.MediaCodecInfo$EncoderCapabilities.init:(Landroid/media/MediaFormat;Landroid/media/MediaCodecInfo$CodecCapabilities;)V
         2: .line 2716
            aload 2 /* caps */
            areturn
        end local 2 // android.media.MediaCodecInfo$EncoderCapabilities caps
        end local 1 // android.media.MediaCodecInfo$CodecCapabilities parent
        end local 0 // android.media.MediaFormat info
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    3     0    info  Landroid/media/MediaFormat;
            0    3     1  parent  Landroid/media/MediaCodecInfo$CodecCapabilities;
            1    3     2    caps  Landroid/media/MediaCodecInfo$EncoderCapabilities;
    MethodParameters:
        Name  Flags
      info    
      parent  

  private void init(android.media.MediaFormat, android.media.MediaCodecInfo$CodecCapabilities);
    descriptor: (Landroid/media/MediaFormat;Landroid/media/MediaCodecInfo$CodecCapabilities;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // android.media.MediaCodecInfo$EncoderCapabilities this
        start local 1 // android.media.MediaFormat info
        start local 2 // android.media.MediaCodecInfo$CodecCapabilities parent
         0: .line 2721
            aload 0 /* this */
            aload 2 /* parent */
            putfield android.media.MediaCodecInfo$EncoderCapabilities.mParent:Landroid/media/MediaCodecInfo$CodecCapabilities;
         1: .line 2722
            aload 0 /* this */
            iconst_0
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            iconst_0
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokestatic android.util.Range.create:(Ljava/lang/Comparable;Ljava/lang/Comparable;)Landroid/util/Range;
            putfield android.media.MediaCodecInfo$EncoderCapabilities.mComplexityRange:Landroid/util/Range;
         2: .line 2723
            aload 0 /* this */
            iconst_0
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            iconst_0
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokestatic android.util.Range.create:(Ljava/lang/Comparable;Ljava/lang/Comparable;)Landroid/util/Range;
            putfield android.media.MediaCodecInfo$EncoderCapabilities.mQualityRange:Landroid/util/Range;
         3: .line 2724
            aload 0 /* this */
            iconst_2
            putfield android.media.MediaCodecInfo$EncoderCapabilities.mBitControl:I
         4: .line 2726
            aload 0 /* this */
            invokevirtual android.media.MediaCodecInfo$EncoderCapabilities.applyLevelLimits:()V
         5: .line 2727
            aload 0 /* this */
            aload 1 /* info */
            invokevirtual android.media.MediaCodecInfo$EncoderCapabilities.parseFromInfo:(Landroid/media/MediaFormat;)V
         6: .line 2728
            return
        end local 2 // android.media.MediaCodecInfo$CodecCapabilities parent
        end local 1 // android.media.MediaFormat info
        end local 0 // android.media.MediaCodecInfo$EncoderCapabilities this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    7     0    this  Landroid/media/MediaCodecInfo$EncoderCapabilities;
            0    7     1    info  Landroid/media/MediaFormat;
            0    7     2  parent  Landroid/media/MediaCodecInfo$CodecCapabilities;
    MethodParameters:
        Name  Flags
      info    
      parent  

  private void applyLevelLimits();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=2, args_size=1
        start local 0 // android.media.MediaCodecInfo$EncoderCapabilities this
         0: .line 2731
            aload 0 /* this */
            getfield android.media.MediaCodecInfo$EncoderCapabilities.mParent:Landroid/media/MediaCodecInfo$CodecCapabilities;
            invokevirtual android.media.MediaCodecInfo$CodecCapabilities.getMimeType:()Ljava/lang/String;
            astore 1 /* mime */
        start local 1 // java.lang.String mime
         1: .line 2732
            aload 1 /* mime */
            ldc "audio/flac"
            invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
            ifeq 5
         2: .line 2733
            aload 0 /* this */
            iconst_0
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            bipush 8
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokestatic android.util.Range.create:(Ljava/lang/Comparable;Ljava/lang/Comparable;)Landroid/util/Range;
            putfield android.media.MediaCodecInfo$EncoderCapabilities.mComplexityRange:Landroid/util/Range;
         3: .line 2734
            aload 0 /* this */
            iconst_1
            putfield android.media.MediaCodecInfo$EncoderCapabilities.mBitControl:I
         4: .line 2735
            goto 11
      StackMap locals: java.lang.String
      StackMap stack:
         5: aload 1 /* mime */
            ldc "audio/3gpp"
            invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
            ifne 10
         6: .line 2736
            aload 1 /* mime */
            ldc "audio/amr-wb"
            invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
            ifne 10
         7: .line 2737
            aload 1 /* mime */
            ldc "audio/g711-alaw"
            invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
            ifne 10
         8: .line 2738
            aload 1 /* mime */
            ldc "audio/g711-mlaw"
            invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
            ifne 10
         9: .line 2739
            aload 1 /* mime */
            ldc "audio/gsm"
            invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
            ifeq 11
        10: .line 2740
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_4
            putfield android.media.MediaCodecInfo$EncoderCapabilities.mBitControl:I
        11: .line 2742
      StackMap locals:
      StackMap stack:
            return
        end local 1 // java.lang.String mime
        end local 0 // android.media.MediaCodecInfo$EncoderCapabilities this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   12     0  this  Landroid/media/MediaCodecInfo$EncoderCapabilities;
            1   12     1  mime  Ljava/lang/String;

  private void parseFromInfo(android.media.MediaFormat);
    descriptor: (Landroid/media/MediaFormat;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=7, args_size=2
        start local 0 // android.media.MediaCodecInfo$EncoderCapabilities this
        start local 1 // android.media.MediaFormat info
         0: .line 2750
            aload 1 /* info */
            invokevirtual android.media.MediaFormat.getMap:()Ljava/util/Map;
            astore 2 /* map */
        start local 2 // java.util.Map map
         1: .line 2752
            aload 1 /* info */
            ldc "complexity-range"
            invokevirtual android.media.MediaFormat.containsKey:(Ljava/lang/String;)Z
            ifeq 5
         2: .line 2753
            aload 0 /* this */
         3: .line 2754
            aload 1 /* info */
            ldc "complexity-range"
            invokevirtual android.media.MediaFormat.getString:(Ljava/lang/String;)Ljava/lang/String;
            aload 0 /* this */
            getfield android.media.MediaCodecInfo$EncoderCapabilities.mComplexityRange:Landroid/util/Range;
            invokestatic android.media.Utils.parseIntRange:(Ljava/lang/Object;Landroid/util/Range;)Landroid/util/Range;
         4: .line 2753
            putfield android.media.MediaCodecInfo$EncoderCapabilities.mComplexityRange:Landroid/util/Range;
         5: .line 2757
      StackMap locals: java.util.Map
      StackMap stack:
            aload 1 /* info */
            ldc "quality-range"
            invokevirtual android.media.MediaFormat.containsKey:(Ljava/lang/String;)Z
            ifeq 9
         6: .line 2758
            aload 0 /* this */
         7: .line 2759
            aload 1 /* info */
            ldc "quality-range"
            invokevirtual android.media.MediaFormat.getString:(Ljava/lang/String;)Ljava/lang/String;
            aload 0 /* this */
            getfield android.media.MediaCodecInfo$EncoderCapabilities.mQualityRange:Landroid/util/Range;
            invokestatic android.media.Utils.parseIntRange:(Ljava/lang/Object;Landroid/util/Range;)Landroid/util/Range;
         8: .line 2758
            putfield android.media.MediaCodecInfo$EncoderCapabilities.mQualityRange:Landroid/util/Range;
         9: .line 2761
      StackMap locals:
      StackMap stack:
            aload 1 /* info */
            ldc "feature-bitrate-modes"
            invokevirtual android.media.MediaFormat.containsKey:(Ljava/lang/String;)Z
            ifeq 15
        10: .line 2762
            aload 1 /* info */
            ldc "feature-bitrate-modes"
            invokevirtual android.media.MediaFormat.getString:(Ljava/lang/String;)Ljava/lang/String;
            ldc ","
            invokevirtual java.lang.String.split:(Ljava/lang/String;)[Ljava/lang/String;
            dup
            astore 6
            arraylength
            istore 5
            iconst_0
            istore 4
            goto 14
      StackMap locals: android.media.MediaCodecInfo$EncoderCapabilities android.media.MediaFormat java.util.Map top int int java.lang.String[]
      StackMap stack:
        11: aload 6
            iload 4
            aaload
            astore 3 /* mode */
        start local 3 // java.lang.String mode
        12: .line 2763
            aload 0 /* this */
            dup
            getfield android.media.MediaCodecInfo$EncoderCapabilities.mBitControl:I
            iconst_1
            aload 3 /* mode */
            invokestatic android.media.MediaCodecInfo$EncoderCapabilities.parseBitrateMode:(Ljava/lang/String;)I
            ishl
            ior
            putfield android.media.MediaCodecInfo$EncoderCapabilities.mBitControl:I
        end local 3 // java.lang.String mode
        13: .line 2762
            iinc 4 1
      StackMap locals:
      StackMap stack:
        14: iload 4
            iload 5
            if_icmplt 11
        15: .line 2768
      StackMap locals: android.media.MediaCodecInfo$EncoderCapabilities android.media.MediaFormat java.util.Map
      StackMap stack:
            aload 0 /* this */
            aload 2 /* map */
            ldc "complexity-default"
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.String
            invokestatic java.lang.Integer.parseInt:(Ljava/lang/String;)I
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            putfield android.media.MediaCodecInfo$EncoderCapabilities.mDefaultComplexity:Ljava/lang/Integer;
        16: .line 2769
            goto 18
      StackMap locals:
      StackMap stack: java.lang.NumberFormatException
        17: pop
        18: .line 2772
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 2 /* map */
            ldc "quality-default"
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.String
            invokestatic java.lang.Integer.parseInt:(Ljava/lang/String;)I
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            putfield android.media.MediaCodecInfo$EncoderCapabilities.mDefaultQuality:Ljava/lang/Integer;
        19: .line 2773
            goto 21
      StackMap locals:
      StackMap stack: java.lang.NumberFormatException
        20: pop
        21: .line 2775
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 2 /* map */
            ldc "quality-scale"
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.String
            putfield android.media.MediaCodecInfo$EncoderCapabilities.mQualityScale:Ljava/lang/String;
        22: .line 2776
            return
        end local 2 // java.util.Map map
        end local 1 // android.media.MediaFormat info
        end local 0 // android.media.MediaCodecInfo$EncoderCapabilities this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   23     0  this  Landroid/media/MediaCodecInfo$EncoderCapabilities;
            0   23     1  info  Landroid/media/MediaFormat;
            1   23     2   map  Ljava/util/Map<Ljava/lang/String;Ljava/lang/Object;>;
           12   13     3  mode  Ljava/lang/String;
      Exception table:
        from    to  target  type
          15    16      17  Class java.lang.NumberFormatException
          18    19      20  Class java.lang.NumberFormatException
    MethodParameters:
      Name  Flags
      info  

  private boolean supports(java.lang.Integer, java.lang.Integer, java.lang.Integer);
    descriptor: (Ljava/lang/Integer;Ljava/lang/Integer;Ljava/lang/Integer;)Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=9, args_size=4
        start local 0 // android.media.MediaCodecInfo$EncoderCapabilities this
        start local 1 // java.lang.Integer complexity
        start local 2 // java.lang.Integer quality
        start local 3 // java.lang.Integer profile
         0: .line 2780
            iconst_1
            istore 4 /* ok */
        start local 4 // boolean ok
         1: .line 2781
            iload 4 /* ok */
            ifeq 3
            aload 1 /* complexity */
            ifnull 3
         2: .line 2782
            aload 0 /* this */
            getfield android.media.MediaCodecInfo$EncoderCapabilities.mComplexityRange:Landroid/util/Range;
            aload 1 /* complexity */
            invokevirtual android.util.Range.contains:(Ljava/lang/Comparable;)Z
            istore 4 /* ok */
         3: .line 2784
      StackMap locals: int
      StackMap stack:
            iload 4 /* ok */
            ifeq 5
            aload 2 /* quality */
            ifnull 5
         4: .line 2785
            aload 0 /* this */
            getfield android.media.MediaCodecInfo$EncoderCapabilities.mQualityRange:Landroid/util/Range;
            aload 2 /* quality */
            invokevirtual android.util.Range.contains:(Ljava/lang/Comparable;)Z
            istore 4 /* ok */
         5: .line 2787
      StackMap locals:
      StackMap stack:
            iload 4 /* ok */
            ifeq 16
            aload 3 /* profile */
            ifnull 16
         6: .line 2788
            aload 0 /* this */
            getfield android.media.MediaCodecInfo$EncoderCapabilities.mParent:Landroid/media/MediaCodecInfo$CodecCapabilities;
            getfield android.media.MediaCodecInfo$CodecCapabilities.profileLevels:[Landroid/media/MediaCodecInfo$CodecProfileLevel;
            dup
            astore 8
            arraylength
            istore 7
            iconst_0
            istore 6
            goto 12
      StackMap locals: android.media.MediaCodecInfo$EncoderCapabilities java.lang.Integer java.lang.Integer java.lang.Integer int top int int android.media.MediaCodecInfo$CodecProfileLevel[]
      StackMap stack:
         7: aload 8
            iload 6
            aaload
            astore 5 /* pl */
        start local 5 // android.media.MediaCodecInfo$CodecProfileLevel pl
         8: .line 2789
            aload 5 /* pl */
            getfield android.media.MediaCodecInfo$CodecProfileLevel.profile:I
            aload 3 /* profile */
            invokevirtual java.lang.Integer.intValue:()I
            if_icmpne 11
         9: .line 2790
            aconst_null
            astore 3 /* profile */
        10: .line 2791
            goto 13
        end local 5 // android.media.MediaCodecInfo$CodecProfileLevel pl
        11: .line 2788
      StackMap locals:
      StackMap stack:
            iinc 6 1
      StackMap locals:
      StackMap stack:
        12: iload 6
            iload 7
            if_icmplt 7
        13: .line 2794
      StackMap locals: android.media.MediaCodecInfo$EncoderCapabilities java.lang.Integer java.lang.Integer java.lang.Integer int
      StackMap stack:
            aload 3 /* profile */
            ifnonnull 14
            iconst_1
            goto 15
      StackMap locals:
      StackMap stack:
        14: iconst_0
      StackMap locals:
      StackMap stack: int
        15: istore 4 /* ok */
        16: .line 2796
      StackMap locals:
      StackMap stack:
            iload 4 /* ok */
            ireturn
        end local 4 // boolean ok
        end local 3 // java.lang.Integer profile
        end local 2 // java.lang.Integer quality
        end local 1 // java.lang.Integer complexity
        end local 0 // android.media.MediaCodecInfo$EncoderCapabilities this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   17     0        this  Landroid/media/MediaCodecInfo$EncoderCapabilities;
            0   17     1  complexity  Ljava/lang/Integer;
            0   17     2     quality  Ljava/lang/Integer;
            0   17     3     profile  Ljava/lang/Integer;
            1   17     4          ok  Z
            8   11     5          pl  Landroid/media/MediaCodecInfo$CodecProfileLevel;
    MethodParameters:
            Name  Flags
      complexity  
      quality     
      profile     

  public void getDefaultFormat(android.media.MediaFormat);
    descriptor: (Landroid/media/MediaFormat;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=6, args_size=2
        start local 0 // android.media.MediaCodecInfo$EncoderCapabilities this
        start local 1 // android.media.MediaFormat format
         0: .line 2802
            aload 0 /* this */
            getfield android.media.MediaCodecInfo$EncoderCapabilities.mQualityRange:Landroid/util/Range;
            invokevirtual android.util.Range.getUpper:()Ljava/lang/Comparable;
            checkcast java.lang.Integer
            aload 0 /* this */
            getfield android.media.MediaCodecInfo$EncoderCapabilities.mQualityRange:Landroid/util/Range;
            invokevirtual android.util.Range.getLower:()Ljava/lang/Comparable;
            invokevirtual java.lang.Integer.equals:(Ljava/lang/Object;)Z
            ifne 3
         1: .line 2803
            aload 0 /* this */
            getfield android.media.MediaCodecInfo$EncoderCapabilities.mDefaultQuality:Ljava/lang/Integer;
            ifnull 3
         2: .line 2804
            aload 1 /* format */
            ldc "quality"
            aload 0 /* this */
            getfield android.media.MediaCodecInfo$EncoderCapabilities.mDefaultQuality:Ljava/lang/Integer;
            invokevirtual java.lang.Integer.intValue:()I
            invokevirtual android.media.MediaFormat.setInteger:(Ljava/lang/String;I)V
         3: .line 2806
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield android.media.MediaCodecInfo$EncoderCapabilities.mComplexityRange:Landroid/util/Range;
            invokevirtual android.util.Range.getUpper:()Ljava/lang/Comparable;
            checkcast java.lang.Integer
            aload 0 /* this */
            getfield android.media.MediaCodecInfo$EncoderCapabilities.mComplexityRange:Landroid/util/Range;
            invokevirtual android.util.Range.getLower:()Ljava/lang/Comparable;
            invokevirtual java.lang.Integer.equals:(Ljava/lang/Object;)Z
            ifne 6
         4: .line 2807
            aload 0 /* this */
            getfield android.media.MediaCodecInfo$EncoderCapabilities.mDefaultComplexity:Ljava/lang/Integer;
            ifnull 6
         5: .line 2808
            aload 1 /* format */
            ldc "complexity"
            aload 0 /* this */
            getfield android.media.MediaCodecInfo$EncoderCapabilities.mDefaultComplexity:Ljava/lang/Integer;
            invokevirtual java.lang.Integer.intValue:()I
            invokevirtual android.media.MediaFormat.setInteger:(Ljava/lang/String;I)V
         6: .line 2811
      StackMap locals:
      StackMap stack:
            getstatic android.media.MediaCodecInfo$EncoderCapabilities.bitrates:[Landroid/media/MediaCodecInfo$Feature;
            dup
            astore 5
            arraylength
            istore 4
            iconst_0
            istore 3
            goto 12
      StackMap locals: android.media.MediaCodecInfo$EncoderCapabilities android.media.MediaFormat top int int android.media.MediaCodecInfo$Feature[]
      StackMap stack:
         7: aload 5
            iload 3
            aaload
            astore 2 /* feat */
        start local 2 // android.media.MediaCodecInfo$Feature feat
         8: .line 2812
            aload 0 /* this */
            getfield android.media.MediaCodecInfo$EncoderCapabilities.mBitControl:I
            iconst_1
            aload 2 /* feat */
            getfield android.media.MediaCodecInfo$Feature.mValue:I
            ishl
            iand
            ifeq 11
         9: .line 2813
            aload 1 /* format */
            ldc "bitrate-mode"
            aload 2 /* feat */
            getfield android.media.MediaCodecInfo$Feature.mValue:I
            invokevirtual android.media.MediaFormat.setInteger:(Ljava/lang/String;I)V
        10: .line 2814
            goto 13
        end local 2 // android.media.MediaCodecInfo$Feature feat
        11: .line 2811
      StackMap locals:
      StackMap stack:
            iinc 3 1
      StackMap locals:
      StackMap stack:
        12: iload 3
            iload 4
            if_icmplt 7
        13: .line 2817
      StackMap locals: android.media.MediaCodecInfo$EncoderCapabilities android.media.MediaFormat
      StackMap stack:
            return
        end local 1 // android.media.MediaFormat format
        end local 0 // android.media.MediaCodecInfo$EncoderCapabilities this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   14     0    this  Landroid/media/MediaCodecInfo$EncoderCapabilities;
            0   14     1  format  Landroid/media/MediaFormat;
            8   11     2    feat  Landroid/media/MediaCodecInfo$Feature;
    MethodParameters:
        Name  Flags
      format  

  public boolean supportsFormat(android.media.MediaFormat);
    descriptor: (Landroid/media/MediaFormat;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=8, args_size=2
        start local 0 // android.media.MediaCodecInfo$EncoderCapabilities this
        start local 1 // android.media.MediaFormat format
         0: .line 2821
            aload 1 /* format */
            invokevirtual android.media.MediaFormat.getMap:()Ljava/util/Map;
            astore 2 /* map */
        start local 2 // java.util.Map map
         1: .line 2822
            aload 0 /* this */
            getfield android.media.MediaCodecInfo$EncoderCapabilities.mParent:Landroid/media/MediaCodecInfo$CodecCapabilities;
            invokevirtual android.media.MediaCodecInfo$CodecCapabilities.getMimeType:()Ljava/lang/String;
            astore 3 /* mime */
        start local 3 // java.lang.String mime
         2: .line 2824
            aload 2 /* map */
            ldc "bitrate-mode"
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.Integer
            astore 4 /* mode */
        start local 4 // java.lang.Integer mode
         3: .line 2825
            aload 4 /* mode */
            ifnull 5
            aload 0 /* this */
            aload 4 /* mode */
            invokevirtual java.lang.Integer.intValue:()I
            invokevirtual android.media.MediaCodecInfo$EncoderCapabilities.isBitrateModeSupported:(I)Z
            ifne 5
         4: .line 2826
            iconst_0
            ireturn
         5: .line 2829
      StackMap locals: java.util.Map java.lang.String java.lang.Integer
      StackMap stack:
            aload 2 /* map */
            ldc "complexity"
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.Integer
            astore 5 /* complexity */
        start local 5 // java.lang.Integer complexity
         6: .line 2830
            ldc "audio/flac"
            aload 3 /* mime */
            invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
            ifeq 16
         7: .line 2832
            aload 2 /* map */
            ldc "flac-compression-level"
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.Integer
         8: .line 2831
            astore 6 /* flacComplexity */
        start local 6 // java.lang.Integer flacComplexity
         9: .line 2833
            aload 5 /* complexity */
            ifnonnull 12
        10: .line 2834
            aload 6 /* flacComplexity */
            astore 5 /* complexity */
        11: .line 2835
            goto 16
      StackMap locals: java.lang.Integer java.lang.Integer
      StackMap stack:
        12: aload 6 /* flacComplexity */
            ifnull 16
            aload 5 /* complexity */
            aload 6 /* flacComplexity */
            invokevirtual java.lang.Integer.equals:(Ljava/lang/Object;)Z
            ifne 16
        13: .line 2836
            new java.lang.IllegalArgumentException
            dup
        14: .line 2837
            ldc "conflicting values for complexity and flac-compression-level"
        15: .line 2836
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
        end local 6 // java.lang.Integer flacComplexity
        16: .line 2843
      StackMap locals:
      StackMap stack:
            aload 2 /* map */
            ldc "profile"
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.Integer
            astore 6 /* profile */
        start local 6 // java.lang.Integer profile
        17: .line 2844
            ldc "audio/mp4a-latm"
            aload 3 /* mime */
            invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
            ifeq 26
        18: .line 2845
            aload 2 /* map */
            ldc "aac-profile"
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.Integer
            astore 7 /* aacProfile */
        start local 7 // java.lang.Integer aacProfile
        19: .line 2846
            aload 6 /* profile */
            ifnonnull 22
        20: .line 2847
            aload 7 /* aacProfile */
            astore 6 /* profile */
        21: .line 2848
            goto 26
      StackMap locals: java.lang.Integer java.lang.Integer
      StackMap stack:
        22: aload 7 /* aacProfile */
            ifnull 26
            aload 7 /* aacProfile */
            aload 6 /* profile */
            invokevirtual java.lang.Integer.equals:(Ljava/lang/Object;)Z
            ifne 26
        23: .line 2849
            new java.lang.IllegalArgumentException
            dup
        24: .line 2850
            ldc "conflicting values for profile and aac-profile"
        25: .line 2849
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
        end local 7 // java.lang.Integer aacProfile
        26: .line 2854
      StackMap locals:
      StackMap stack:
            aload 2 /* map */
            ldc "quality"
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.Integer
            astore 7 /* quality */
        start local 7 // java.lang.Integer quality
        27: .line 2856
            aload 0 /* this */
            aload 5 /* complexity */
            aload 7 /* quality */
            aload 6 /* profile */
            invokevirtual android.media.MediaCodecInfo$EncoderCapabilities.supports:(Ljava/lang/Integer;Ljava/lang/Integer;Ljava/lang/Integer;)Z
            ireturn
        end local 7 // java.lang.Integer quality
        end local 6 // java.lang.Integer profile
        end local 5 // java.lang.Integer complexity
        end local 4 // java.lang.Integer mode
        end local 3 // java.lang.String mime
        end local 2 // java.util.Map map
        end local 1 // android.media.MediaFormat format
        end local 0 // android.media.MediaCodecInfo$EncoderCapabilities this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   28     0            this  Landroid/media/MediaCodecInfo$EncoderCapabilities;
            0   28     1          format  Landroid/media/MediaFormat;
            1   28     2             map  Ljava/util/Map<Ljava/lang/String;Ljava/lang/Object;>;
            2   28     3            mime  Ljava/lang/String;
            3   28     4            mode  Ljava/lang/Integer;
            6   28     5      complexity  Ljava/lang/Integer;
            9   16     6  flacComplexity  Ljava/lang/Integer;
           17   28     6         profile  Ljava/lang/Integer;
           19   26     7      aacProfile  Ljava/lang/Integer;
           27   28     7         quality  Ljava/lang/Integer;
    MethodParameters:
        Name  Flags
      format  
}
SourceFile: "MediaCodecInfo.java"
NestHost: android.media.MediaCodecInfo
InnerClasses:
  public final CodecCapabilities = android.media.MediaCodecInfo$CodecCapabilities of android.media.MediaCodecInfo
  public final CodecProfileLevel = android.media.MediaCodecInfo$CodecProfileLevel of android.media.MediaCodecInfo
  public final EncoderCapabilities = android.media.MediaCodecInfo$EncoderCapabilities of android.media.MediaCodecInfo
  private Feature = android.media.MediaCodecInfo$Feature of android.media.MediaCodecInfo