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

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

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

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

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

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

  private android.media.MediaCas mMediaCas;
    descriptor: Landroid/media/MediaCas;
    flags: (0x0002) ACC_PRIVATE

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

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

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // android.media.MediaExtractor this
         0: .line 79
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 80
            aload 0 /* this */
            invokevirtual android.media.MediaExtractor.native_setup:()V
         2: .line 81
            return
        end local 0 // android.media.MediaExtractor this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Landroid/media/MediaExtractor;

  public final native void setDataSource(android.media.MediaDataSource);
    descriptor: (Landroid/media/MediaDataSource;)V
    flags: (0x0111) ACC_PUBLIC, ACC_FINAL, ACC_NATIVE
    Exceptions:
      throws java.io.IOException
    MethodParameters:
            Name  Flags
      dataSource  

  public final void setDataSource(android.content.Context, android.net.Uri, java.util.Map<java.lang.String, java.lang.String>);
    descriptor: (Landroid/content/Context;Landroid/net/Uri;Ljava/util/Map;)V
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=6, locals=8, args_size=4
        start local 0 // android.media.MediaExtractor this
        start local 1 // android.content.Context context
        start local 2 // android.net.Uri uri
        start local 3 // java.util.Map headers
         0: .line 109
            aload 2 /* uri */
            invokevirtual android.net.Uri.getScheme:()Ljava/lang/String;
            astore 4 /* scheme */
        start local 4 // java.lang.String scheme
         1: .line 110
            aload 4 /* scheme */
            ifnull 2
            aload 4 /* scheme */
            ldc "file"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 4
         2: .line 111
      StackMap locals: java.lang.String
      StackMap stack:
            aload 0 /* this */
            aload 2 /* uri */
            invokevirtual android.net.Uri.getPath:()Ljava/lang/String;
            invokevirtual android.media.MediaExtractor.setDataSource:(Ljava/lang/String;)V
         3: .line 112
            return
         4: .line 115
      StackMap locals:
      StackMap stack:
            aconst_null
            astore 5 /* fd */
        start local 5 // android.content.res.AssetFileDescriptor fd
         5: .line 117
            aload 1 /* context */
            invokevirtual android.content.Context.getContentResolver:()Landroid/content/ContentResolver;
            astore 6 /* resolver */
        start local 6 // android.content.ContentResolver resolver
         6: .line 118
            aload 6 /* resolver */
            aload 2 /* uri */
            ldc "r"
            invokevirtual android.content.ContentResolver.openAssetFileDescriptor:(Landroid/net/Uri;Ljava/lang/String;)Landroid/content/res/AssetFileDescriptor;
            astore 5 /* fd */
         7: .line 119
            aload 5 /* fd */
            ifnonnull 11
         8: .line 137
            aload 5 /* fd */
            ifnull 10
         9: .line 138
            aload 5 /* fd */
            invokevirtual android.content.res.AssetFileDescriptor.close:()V
        10: .line 120
      StackMap locals: android.content.res.AssetFileDescriptor android.content.ContentResolver
      StackMap stack:
            return
        11: .line 125
      StackMap locals:
      StackMap stack:
            aload 5 /* fd */
            invokevirtual android.content.res.AssetFileDescriptor.getDeclaredLength:()J
            lconst_0
            lcmp
            ifge 14
        12: .line 126
            aload 0 /* this */
            aload 5 /* fd */
            invokevirtual android.content.res.AssetFileDescriptor.getFileDescriptor:()Ljava/io/FileDescriptor;
            invokevirtual android.media.MediaExtractor.setDataSource:(Ljava/io/FileDescriptor;)V
        13: .line 127
            goto 19
        14: .line 128
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
        15: .line 129
            aload 5 /* fd */
            invokevirtual android.content.res.AssetFileDescriptor.getFileDescriptor:()Ljava/io/FileDescriptor;
        16: .line 130
            aload 5 /* fd */
            invokevirtual android.content.res.AssetFileDescriptor.getStartOffset:()J
        17: .line 131
            aload 5 /* fd */
            invokevirtual android.content.res.AssetFileDescriptor.getDeclaredLength:()J
        18: .line 128
            invokevirtual android.media.MediaExtractor.setDataSource:(Ljava/io/FileDescriptor;JJ)V
        19: .line 137
      StackMap locals:
      StackMap stack:
            aload 5 /* fd */
            ifnull 21
        20: .line 138
            aload 5 /* fd */
            invokevirtual android.content.res.AssetFileDescriptor.close:()V
        21: .line 133
      StackMap locals:
      StackMap stack:
            return
        end local 6 // android.content.ContentResolver resolver
        22: .line 134
      StackMap locals: android.media.MediaExtractor android.content.Context android.net.Uri java.util.Map java.lang.String android.content.res.AssetFileDescriptor
      StackMap stack: java.lang.SecurityException
            pop
        23: .line 137
            aload 5 /* fd */
            ifnull 32
        24: .line 138
            aload 5 /* fd */
            invokevirtual android.content.res.AssetFileDescriptor.close:()V
            goto 32
        25: .line 135
      StackMap locals:
      StackMap stack: java.io.IOException
            pop
        26: .line 137
            aload 5 /* fd */
            ifnull 32
        27: .line 138
            aload 5 /* fd */
            invokevirtual android.content.res.AssetFileDescriptor.close:()V
            goto 32
        28: .line 136
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 7
        29: .line 137
            aload 5 /* fd */
            ifnull 31
        30: .line 138
            aload 5 /* fd */
            invokevirtual android.content.res.AssetFileDescriptor.close:()V
        31: .line 140
      StackMap locals: android.media.MediaExtractor android.content.Context android.net.Uri java.util.Map java.lang.String android.content.res.AssetFileDescriptor top java.lang.Throwable
      StackMap stack:
            aload 7
            athrow
        32: .line 142
      StackMap locals: android.media.MediaExtractor android.content.Context android.net.Uri java.util.Map java.lang.String android.content.res.AssetFileDescriptor
      StackMap stack:
            aload 0 /* this */
            aload 2 /* uri */
            invokevirtual android.net.Uri.toString:()Ljava/lang/String;
            aload 3 /* headers */
            invokevirtual android.media.MediaExtractor.setDataSource:(Ljava/lang/String;Ljava/util/Map;)V
        33: .line 143
            return
        end local 5 // android.content.res.AssetFileDescriptor fd
        end local 4 // java.lang.String scheme
        end local 3 // java.util.Map headers
        end local 2 // android.net.Uri uri
        end local 1 // android.content.Context context
        end local 0 // android.media.MediaExtractor this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   34     0      this  Landroid/media/MediaExtractor;
            0   34     1   context  Landroid/content/Context;
            0   34     2       uri  Landroid/net/Uri;
            0   34     3   headers  Ljava/util/Map<Ljava/lang/String;Ljava/lang/String;>;
            1   34     4    scheme  Ljava/lang/String;
            5   34     5        fd  Landroid/content/res/AssetFileDescriptor;
            6   22     6  resolver  Landroid/content/ContentResolver;
      Exception table:
        from    to  target  type
           5     8      22  Class java.lang.SecurityException
          11    19      22  Class java.lang.SecurityException
           5     8      25  Class java.io.IOException
          11    19      25  Class java.io.IOException
           5     8      28  any
          11    19      28  any
          22    23      28  any
          25    26      28  any
    Exceptions:
      throws java.io.IOException
    Signature: (Landroid/content/Context;Landroid/net/Uri;Ljava/util/Map<Ljava/lang/String;Ljava/lang/String;>;)V
    MethodParameters:
         Name  Flags
      context  
      uri      
      headers  

  public final void setDataSource(java.lang.String, java.util.Map<java.lang.String, java.lang.String>);
    descriptor: (Ljava/lang/String;Ljava/util/Map;)V
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=5, locals=8, args_size=3
        start local 0 // android.media.MediaExtractor this
        start local 1 // java.lang.String path
        start local 2 // java.util.Map headers
         0: .line 159
            aconst_null
            astore 3 /* keys */
        start local 3 // java.lang.String[] keys
         1: .line 160
            aconst_null
            astore 4 /* values */
        start local 4 // java.lang.String[] values
         2: .line 162
            aload 2 /* headers */
            ifnull 12
         3: .line 163
            aload 2 /* headers */
            invokeinterface java.util.Map.size:()I
            anewarray java.lang.String
            astore 3 /* keys */
         4: .line 164
            aload 2 /* headers */
            invokeinterface java.util.Map.size:()I
            anewarray java.lang.String
            astore 4 /* values */
         5: .line 166
            iconst_0
            istore 5 /* i */
        start local 5 // int i
         6: .line 167
            aload 2 /* headers */
            invokeinterface java.util.Map.entrySet:()Ljava/util/Set;
            invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
            astore 7
            goto 11
      StackMap locals: android.media.MediaExtractor java.lang.String java.util.Map java.lang.String[] java.lang.String[] int top java.util.Iterator
      StackMap stack:
         7: aload 7
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.util.Map$Entry
            astore 6 /* entry */
        start local 6 // java.util.Map$Entry entry
         8: .line 168
            aload 3 /* keys */
            iload 5 /* i */
            aload 6 /* entry */
            invokeinterface java.util.Map$Entry.getKey:()Ljava/lang/Object;
            checkcast java.lang.String
            aastore
         9: .line 169
            aload 4 /* values */
            iload 5 /* i */
            aload 6 /* entry */
            invokeinterface java.util.Map$Entry.getValue:()Ljava/lang/Object;
            checkcast java.lang.String
            aastore
        10: .line 170
            iinc 5 /* i */ 1
        end local 6 // java.util.Map$Entry entry
        11: .line 167
      StackMap locals:
      StackMap stack:
            aload 7
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 7
        end local 5 // int i
        12: .line 174
      StackMap locals: android.media.MediaExtractor java.lang.String java.util.Map java.lang.String[] java.lang.String[]
      StackMap stack:
            aload 0 /* this */
        13: .line 175
            aload 1 /* path */
            invokestatic android.media.MediaHTTPService.createHttpServiceBinderIfNecessary:(Ljava/lang/String;)Landroid/os/IBinder;
        14: .line 176
            aload 1 /* path */
        15: .line 177
            aload 3 /* keys */
        16: .line 178
            aload 4 /* values */
        17: .line 174
            invokevirtual android.media.MediaExtractor.nativeSetDataSource:(Landroid/os/IBinder;Ljava/lang/String;[Ljava/lang/String;[Ljava/lang/String;)V
        18: .line 179
            return
        end local 4 // java.lang.String[] values
        end local 3 // java.lang.String[] keys
        end local 2 // java.util.Map headers
        end local 1 // java.lang.String path
        end local 0 // android.media.MediaExtractor this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   19     0     this  Landroid/media/MediaExtractor;
            0   19     1     path  Ljava/lang/String;
            0   19     2  headers  Ljava/util/Map<Ljava/lang/String;Ljava/lang/String;>;
            1   19     3     keys  [Ljava/lang/String;
            2   19     4   values  [Ljava/lang/String;
            6   12     5        i  I
            8   11     6    entry  Ljava/util/Map$Entry<Ljava/lang/String;Ljava/lang/String;>;
    Exceptions:
      throws java.io.IOException
    Signature: (Ljava/lang/String;Ljava/util/Map<Ljava/lang/String;Ljava/lang/String;>;)V
    MethodParameters:
         Name  Flags
      path     
      headers  

  private final native void nativeSetDataSource(android.os.IBinder, java.lang.String, java.lang.String[], java.lang.String[]);
    descriptor: (Landroid/os/IBinder;Ljava/lang/String;[Ljava/lang/String;[Ljava/lang/String;)V
    flags: (0x0112) ACC_PRIVATE, ACC_FINAL, ACC_NATIVE
    Exceptions:
      throws java.io.IOException
    MethodParameters:
                   Name  Flags
      httpServiceBinder  
      path               
      keys               
      values             

  public final void setDataSource(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=5, locals=2, args_size=2
        start local 0 // android.media.MediaExtractor this
        start local 1 // java.lang.String path
         0: .line 203
            aload 0 /* this */
         1: .line 204
            aload 1 /* path */
            invokestatic android.media.MediaHTTPService.createHttpServiceBinderIfNecessary:(Ljava/lang/String;)Landroid/os/IBinder;
         2: .line 205
            aload 1 /* path */
         3: .line 206
            aconst_null
         4: .line 207
            aconst_null
         5: .line 203
            invokevirtual android.media.MediaExtractor.nativeSetDataSource:(Landroid/os/IBinder;Ljava/lang/String;[Ljava/lang/String;[Ljava/lang/String;)V
         6: .line 208
            return
        end local 1 // java.lang.String path
        end local 0 // android.media.MediaExtractor this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    7     0  this  Landroid/media/MediaExtractor;
            0    7     1  path  Ljava/lang/String;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      path  

  public final void setDataSource(android.content.res.AssetFileDescriptor);
    descriptor: (Landroid/content/res/AssetFileDescriptor;)V
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=6, locals=2, args_size=2
        start local 0 // android.media.MediaExtractor this
        start local 1 // android.content.res.AssetFileDescriptor afd
         0: .line 219
            aload 1 /* afd */
            invokestatic com.android.internal.util.Preconditions.checkNotNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 223
            aload 1 /* afd */
            invokevirtual android.content.res.AssetFileDescriptor.getDeclaredLength:()J
            lconst_0
            lcmp
            ifge 4
         2: .line 224
            aload 0 /* this */
            aload 1 /* afd */
            invokevirtual android.content.res.AssetFileDescriptor.getFileDescriptor:()Ljava/io/FileDescriptor;
            invokevirtual android.media.MediaExtractor.setDataSource:(Ljava/io/FileDescriptor;)V
         3: .line 225
            goto 5
         4: .line 226
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* afd */
            invokevirtual android.content.res.AssetFileDescriptor.getFileDescriptor:()Ljava/io/FileDescriptor;
            aload 1 /* afd */
            invokevirtual android.content.res.AssetFileDescriptor.getStartOffset:()J
            aload 1 /* afd */
            invokevirtual android.content.res.AssetFileDescriptor.getDeclaredLength:()J
            invokevirtual android.media.MediaExtractor.setDataSource:(Ljava/io/FileDescriptor;JJ)V
         5: .line 228
      StackMap locals:
      StackMap stack:
            return
        end local 1 // android.content.res.AssetFileDescriptor afd
        end local 0 // android.media.MediaExtractor this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    6     0  this  Landroid/media/MediaExtractor;
            0    6     1   afd  Landroid/content/res/AssetFileDescriptor;
    Exceptions:
      throws java.io.IOException, java.lang.IllegalArgumentException, java.lang.IllegalStateException
    MethodParameters:
      Name  Flags
      afd   

  public final void setDataSource(java.io.FileDescriptor);
    descriptor: (Ljava/io/FileDescriptor;)V
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=6, locals=2, args_size=2
        start local 0 // android.media.MediaExtractor this
        start local 1 // java.io.FileDescriptor fd
         0: .line 237
            aload 0 /* this */
            aload 1 /* fd */
            lconst_0
            ldc 576460752303423487
            invokevirtual android.media.MediaExtractor.setDataSource:(Ljava/io/FileDescriptor;JJ)V
         1: .line 238
            return
        end local 1 // java.io.FileDescriptor fd
        end local 0 // android.media.MediaExtractor this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Landroid/media/MediaExtractor;
            0    2     1    fd  Ljava/io/FileDescriptor;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      fd    

  public final native void setDataSource(java.io.FileDescriptor, long, long);
    descriptor: (Ljava/io/FileDescriptor;JJ)V
    flags: (0x0111) ACC_PUBLIC, ACC_FINAL, ACC_NATIVE
    Exceptions:
      throws java.io.IOException
    MethodParameters:
        Name  Flags
      fd      
      offset  
      length  

  public final void setMediaCas(android.media.MediaCas);
    descriptor: (Landroid/media/MediaCas;)V
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // android.media.MediaExtractor this
        start local 1 // android.media.MediaCas mediaCas
         0: .line 263
            aload 0 /* this */
            aload 1 /* mediaCas */
            putfield android.media.MediaExtractor.mMediaCas:Landroid/media/MediaCas;
         1: .line 264
            aload 0 /* this */
            aload 1 /* mediaCas */
            invokevirtual android.media.MediaCas.getBinder:()Landroid/os/IHwBinder;
            invokevirtual android.media.MediaExtractor.nativeSetMediaCas:(Landroid/os/IHwBinder;)V
         2: .line 265
            return
        end local 1 // android.media.MediaCas mediaCas
        end local 0 // android.media.MediaExtractor this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    3     0      this  Landroid/media/MediaExtractor;
            0    3     1  mediaCas  Landroid/media/MediaCas;
    MethodParameters:
          Name  Flags
      mediaCas  

  private final native void nativeSetMediaCas(android.os.IHwBinder);
    descriptor: (Landroid/os/IHwBinder;)V
    flags: (0x0112) ACC_PRIVATE, ACC_FINAL, ACC_NATIVE
    MethodParameters:
           Name  Flags
      casBinder  

  private java.util.ArrayList<java.lang.Byte> toByteArray(byte[]);
    descriptor: ([B)Ljava/util/ArrayList;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=4, args_size=2
        start local 0 // android.media.MediaExtractor this
        start local 1 // byte[] data
         0: .line 305
            new java.util.ArrayList
            dup
            aload 1 /* data */
            arraylength
            invokespecial java.util.ArrayList.<init>:(I)V
            astore 2 /* byteArray */
        start local 2 // java.util.ArrayList byteArray
         1: .line 306
            iconst_0
            istore 3 /* i */
        start local 3 // int i
         2: goto 5
         3: .line 307
      StackMap locals: java.util.ArrayList int
      StackMap stack:
            aload 2 /* byteArray */
            iload 3 /* i */
            aload 1 /* data */
            iload 3 /* i */
            baload
            invokestatic java.lang.Byte.valueOf:(B)Ljava/lang/Byte;
            invokevirtual java.util.ArrayList.add:(ILjava/lang/Object;)V
         4: .line 306
            iinc 3 /* i */ 1
      StackMap locals:
      StackMap stack:
         5: iload 3 /* i */
            aload 1 /* data */
            arraylength
            if_icmplt 3
        end local 3 // int i
         6: .line 309
            aload 2 /* byteArray */
            areturn
        end local 2 // java.util.ArrayList byteArray
        end local 1 // byte[] data
        end local 0 // android.media.MediaExtractor this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    7     0       this  Landroid/media/MediaExtractor;
            0    7     1       data  [B
            1    7     2  byteArray  Ljava/util/ArrayList<Ljava/lang/Byte;>;
            2    6     3          i  I
    Signature: ([B)Ljava/util/ArrayList<Ljava/lang/Byte;>;
    MethodParameters:
      Name  Flags
      data  

  public android.media.MediaExtractor$CasInfo getCasInfo(int);
    descriptor: (I)Landroid/media/MediaExtractor$CasInfo;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=7, args_size=2
        start local 0 // android.media.MediaExtractor this
        start local 1 // int index
         0: .line 320
            aload 0 /* this */
            iload 1 /* index */
            invokevirtual android.media.MediaExtractor.getTrackFormatNative:(I)Ljava/util/Map;
            astore 2 /* formatMap */
        start local 2 // java.util.Map formatMap
         1: .line 321
            aload 2 /* formatMap */
            ldc "ca-system-id"
            invokeinterface java.util.Map.containsKey:(Ljava/lang/Object;)Z
            ifeq 11
         2: .line 322
            aload 2 /* formatMap */
            ldc "ca-system-id"
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.Integer
            invokevirtual java.lang.Integer.intValue:()I
            istore 3 /* systemId */
        start local 3 // int systemId
         3: .line 323
            aconst_null
            astore 4 /* session */
        start local 4 // android.media.MediaCas$Session session
         4: .line 324
            aload 0 /* this */
            getfield android.media.MediaExtractor.mMediaCas:Landroid/media/MediaCas;
            ifnull 10
            aload 2 /* formatMap */
            ldc "ca-session-id"
            invokeinterface java.util.Map.containsKey:(Ljava/lang/Object;)Z
            ifeq 10
         5: .line 325
            aload 2 /* formatMap */
            ldc "ca-session-id"
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.nio.ByteBuffer
            astore 5 /* buf */
        start local 5 // java.nio.ByteBuffer buf
         6: .line 326
            aload 5 /* buf */
            invokevirtual java.nio.ByteBuffer.rewind:()Ljava/nio/Buffer;
            pop
         7: .line 327
            aload 5 /* buf */
            invokevirtual java.nio.ByteBuffer.remaining:()I
            newarray 8
            astore 6 /* sessionId */
        start local 6 // byte[] sessionId
         8: .line 328
            aload 5 /* buf */
            aload 6 /* sessionId */
            invokevirtual java.nio.ByteBuffer.get:([B)Ljava/nio/ByteBuffer;
            pop
         9: .line 329
            aload 0 /* this */
            getfield android.media.MediaExtractor.mMediaCas:Landroid/media/MediaCas;
            aload 0 /* this */
            aload 6 /* sessionId */
            invokevirtual android.media.MediaExtractor.toByteArray:([B)Ljava/util/ArrayList;
            invokevirtual android.media.MediaCas.createFromSessionId:(Ljava/util/ArrayList;)Landroid/media/MediaCas$Session;
            astore 4 /* session */
        end local 6 // byte[] sessionId
        end local 5 // java.nio.ByteBuffer buf
        10: .line 331
      StackMap locals: java.util.Map int android.media.MediaCas$Session
      StackMap stack:
            new android.media.MediaExtractor$CasInfo
            dup
            iload 3 /* systemId */
            aload 4 /* session */
            invokespecial android.media.MediaExtractor$CasInfo.<init>:(ILandroid/media/MediaCas$Session;)V
            areturn
        end local 4 // android.media.MediaCas$Session session
        end local 3 // int systemId
        11: .line 333
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
        end local 2 // java.util.Map formatMap
        end local 1 // int index
        end local 0 // android.media.MediaExtractor this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   12     0       this  Landroid/media/MediaExtractor;
            0   12     1      index  I
            1   12     2  formatMap  Ljava/util/Map<Ljava/lang/String;Ljava/lang/Object;>;
            3   11     3   systemId  I
            4   11     4    session  Landroid/media/MediaCas$Session;
            6   10     5        buf  Ljava/nio/ByteBuffer;
            8   10     6  sessionId  [B
    MethodParameters:
       Name  Flags
      index  

  protected void finalize();
    descriptor: ()V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // android.media.MediaExtractor this
         0: .line 338
            aload 0 /* this */
            invokevirtual android.media.MediaExtractor.native_finalize:()V
         1: .line 339
            return
        end local 0 // android.media.MediaExtractor this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Landroid/media/MediaExtractor;

  public final native void release();
    descriptor: ()V
    flags: (0x0111) ACC_PUBLIC, ACC_FINAL, ACC_NATIVE

  public final native int getTrackCount();
    descriptor: ()I
    flags: (0x0111) ACC_PUBLIC, ACC_FINAL, ACC_NATIVE

  public android.media.DrmInitData getDrmInitData();
    descriptor: ()Landroid/media/DrmInitData;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=8, args_size=1
        start local 0 // android.media.MediaExtractor this
         0: .line 361
            aload 0 /* this */
            invokevirtual android.media.MediaExtractor.getFileFormatNative:()Ljava/util/Map;
            astore 1 /* formatMap */
        start local 1 // java.util.Map formatMap
         1: .line 362
            aload 1 /* formatMap */
            ifnonnull 3
         2: .line 363
            aconst_null
            areturn
         3: .line 365
      StackMap locals: java.util.Map
      StackMap stack:
            aload 1 /* formatMap */
            ldc "pssh"
            invokeinterface java.util.Map.containsKey:(Ljava/lang/Object;)Z
            ifeq 14
         4: .line 366
            aload 0 /* this */
            invokevirtual android.media.MediaExtractor.getPsshInfo:()Ljava/util/Map;
            astore 2 /* psshMap */
        start local 2 // java.util.Map psshMap
         5: .line 368
            new java.util.HashMap
            dup
            invokespecial java.util.HashMap.<init>:()V
         6: .line 367
            astore 3 /* initDataMap */
        start local 3 // java.util.Map initDataMap
         7: .line 369
            aload 2 /* psshMap */
            invokeinterface java.util.Map.entrySet:()Ljava/util/Set;
            invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
            astore 5
            goto 12
      StackMap locals: android.media.MediaExtractor java.util.Map java.util.Map java.util.Map top java.util.Iterator
      StackMap stack:
         8: aload 5
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.util.Map$Entry
            astore 4 /* e */
        start local 4 // java.util.Map$Entry e
         9: .line 370
            aload 4 /* e */
            invokeinterface java.util.Map$Entry.getKey:()Ljava/lang/Object;
            checkcast java.util.UUID
            astore 6 /* uuid */
        start local 6 // java.util.UUID uuid
        10: .line 371
            aload 4 /* e */
            invokeinterface java.util.Map$Entry.getValue:()Ljava/lang/Object;
            checkcast byte[]
            astore 7 /* data */
        start local 7 // byte[] data
        11: .line 372
            aload 3 /* initDataMap */
            aload 6 /* uuid */
            new android.media.DrmInitData$SchemeInitData
            dup
            ldc "cenc"
            aload 7 /* data */
            invokespecial android.media.DrmInitData$SchemeInitData.<init>:(Ljava/lang/String;[B)V
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        end local 7 // byte[] data
        end local 6 // java.util.UUID uuid
        end local 4 // java.util.Map$Entry e
        12: .line 369
      StackMap locals:
      StackMap stack:
            aload 5
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 8
        13: .line 374
            new android.media.MediaExtractor$1
            dup
            aload 0 /* this */
            aload 3 /* initDataMap */
            invokespecial android.media.MediaExtractor$1.<init>:(Landroid/media/MediaExtractor;Ljava/util/Map;)V
            areturn
        end local 3 // java.util.Map initDataMap
        end local 2 // java.util.Map psshMap
        14: .line 380
      StackMap locals: android.media.MediaExtractor java.util.Map
      StackMap stack:
            aload 0 /* this */
            invokevirtual android.media.MediaExtractor.getTrackCount:()I
            istore 2 /* numTracks */
        start local 2 // int numTracks
        15: .line 381
            iconst_0
            istore 3 /* i */
        start local 3 // int i
        16: goto 26
        17: .line 382
      StackMap locals: int int
      StackMap stack:
            aload 0 /* this */
            iload 3 /* i */
            invokevirtual android.media.MediaExtractor.getTrackFormatNative:(I)Ljava/util/Map;
            astore 4 /* trackFormatMap */
        start local 4 // java.util.Map trackFormatMap
        18: .line 383
            aload 4 /* trackFormatMap */
            ldc "crypto-key"
            invokeinterface java.util.Map.containsKey:(Ljava/lang/Object;)Z
            ifne 20
        19: .line 384
            goto 25
        20: .line 386
      StackMap locals: java.util.Map
      StackMap stack:
            aload 4 /* trackFormatMap */
            ldc "crypto-key"
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.nio.ByteBuffer
            astore 5 /* buf */
        start local 5 // java.nio.ByteBuffer buf
        21: .line 387
            aload 5 /* buf */
            invokevirtual java.nio.ByteBuffer.rewind:()Ljava/nio/Buffer;
            pop
        22: .line 388
            aload 5 /* buf */
            invokevirtual java.nio.ByteBuffer.remaining:()I
            newarray 8
            astore 6 /* data */
        start local 6 // byte[] data
        23: .line 389
            aload 5 /* buf */
            aload 6 /* data */
            invokevirtual java.nio.ByteBuffer.get:([B)Ljava/nio/ByteBuffer;
            pop
        24: .line 390
            new android.media.MediaExtractor$2
            dup
            aload 0 /* this */
            aload 6 /* data */
            invokespecial android.media.MediaExtractor$2.<init>:(Landroid/media/MediaExtractor;[B)V
            areturn
        end local 6 // byte[] data
        end local 5 // java.nio.ByteBuffer buf
        end local 4 // java.util.Map trackFormatMap
        25: .line 381
      StackMap locals:
      StackMap stack:
            iinc 3 /* i */ 1
      StackMap locals:
      StackMap stack:
        26: iload 3 /* i */
            iload 2 /* numTracks */
            if_icmplt 17
        end local 3 // int i
        end local 2 // int numTracks
        27: .line 397
            aconst_null
            areturn
        end local 1 // java.util.Map formatMap
        end local 0 // android.media.MediaExtractor this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   28     0            this  Landroid/media/MediaExtractor;
            1   28     1       formatMap  Ljava/util/Map<Ljava/lang/String;Ljava/lang/Object;>;
            5   14     2         psshMap  Ljava/util/Map<Ljava/util/UUID;[B>;
            7   14     3     initDataMap  Ljava/util/Map<Ljava/util/UUID;Landroid/media/DrmInitData$SchemeInitData;>;
            9   12     4               e  Ljava/util/Map$Entry<Ljava/util/UUID;[B>;
           10   12     6            uuid  Ljava/util/UUID;
           11   12     7            data  [B
           15   27     2       numTracks  I
           16   27     3               i  I
           18   25     4  trackFormatMap  Ljava/util/Map<Ljava/lang/String;Ljava/lang/Object;>;
           21   25     5             buf  Ljava/nio/ByteBuffer;
           23   25     6            data  [B

  public java.util.List<android.media.AudioPresentation> getAudioPresentations(int);
    descriptor: (I)Ljava/util/List;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // android.media.MediaExtractor this
        start local 1 // int trackIndex
         0: .line 408
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            areturn
        end local 1 // int trackIndex
        end local 0 // android.media.MediaExtractor this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    1     0        this  Landroid/media/MediaExtractor;
            0    1     1  trackIndex  I
    Signature: (I)Ljava/util/List<Landroid/media/AudioPresentation;>;
    MethodParameters:
            Name  Flags
      trackIndex  

  public java.util.Map<java.util.UUID, byte[]> getPsshInfo();
    descriptor: ()Ljava/util/Map;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=11, args_size=1
        start local 0 // android.media.MediaExtractor this
         0: .line 419
            aconst_null
            astore 1 /* psshMap */
        start local 1 // java.util.Map psshMap
         1: .line 420
            aload 0 /* this */
            invokevirtual android.media.MediaExtractor.getFileFormatNative:()Ljava/util/Map;
            astore 2 /* formatMap */
        start local 2 // java.util.Map formatMap
         2: .line 421
            aload 2 /* formatMap */
            ifnull 19
            aload 2 /* formatMap */
            ldc "pssh"
            invokeinterface java.util.Map.containsKey:(Ljava/lang/Object;)Z
            ifeq 19
         3: .line 422
            aload 2 /* formatMap */
            ldc "pssh"
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.nio.ByteBuffer
            astore 3 /* rawpssh */
        start local 3 // java.nio.ByteBuffer rawpssh
         4: .line 423
            aload 3 /* rawpssh */
            invokestatic java.nio.ByteOrder.nativeOrder:()Ljava/nio/ByteOrder;
            invokevirtual java.nio.ByteBuffer.order:(Ljava/nio/ByteOrder;)Ljava/nio/ByteBuffer;
            pop
         5: .line 424
            aload 3 /* rawpssh */
            invokevirtual java.nio.ByteBuffer.rewind:()Ljava/nio/Buffer;
            pop
         6: .line 425
            aload 2 /* formatMap */
            ldc "pssh"
            invokeinterface java.util.Map.remove:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         7: .line 427
            new java.util.HashMap
            dup
            invokespecial java.util.HashMap.<init>:()V
            astore 1 /* psshMap */
         8: .line 428
            goto 18
         9: .line 429
      StackMap locals: java.util.Map java.util.Map java.nio.ByteBuffer
      StackMap stack:
            aload 3 /* rawpssh */
            getstatic java.nio.ByteOrder.BIG_ENDIAN:Ljava/nio/ByteOrder;
            invokevirtual java.nio.ByteBuffer.order:(Ljava/nio/ByteOrder;)Ljava/nio/ByteBuffer;
            pop
        10: .line 430
            aload 3 /* rawpssh */
            invokevirtual java.nio.ByteBuffer.getLong:()J
            lstore 4 /* msb */
        start local 4 // long msb
        11: .line 431
            aload 3 /* rawpssh */
            invokevirtual java.nio.ByteBuffer.getLong:()J
            lstore 6 /* lsb */
        start local 6 // long lsb
        12: .line 432
            new java.util.UUID
            dup
            lload 4 /* msb */
            lload 6 /* lsb */
            invokespecial java.util.UUID.<init>:(JJ)V
            astore 8 /* uuid */
        start local 8 // java.util.UUID uuid
        13: .line 433
            aload 3 /* rawpssh */
            invokestatic java.nio.ByteOrder.nativeOrder:()Ljava/nio/ByteOrder;
            invokevirtual java.nio.ByteBuffer.order:(Ljava/nio/ByteOrder;)Ljava/nio/ByteBuffer;
            pop
        14: .line 434
            aload 3 /* rawpssh */
            invokevirtual java.nio.ByteBuffer.getInt:()I
            istore 9 /* datalen */
        start local 9 // int datalen
        15: .line 435
            iload 9 /* datalen */
            newarray 8
            astore 10 /* psshdata */
        start local 10 // byte[] psshdata
        16: .line 436
            aload 3 /* rawpssh */
            aload 10 /* psshdata */
            invokevirtual java.nio.ByteBuffer.get:([B)Ljava/nio/ByteBuffer;
            pop
        17: .line 437
            aload 1 /* psshMap */
            aload 8 /* uuid */
            aload 10 /* psshdata */
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        end local 10 // byte[] psshdata
        end local 9 // int datalen
        end local 8 // java.util.UUID uuid
        end local 6 // long lsb
        end local 4 // long msb
        18: .line 428
      StackMap locals:
      StackMap stack:
            aload 3 /* rawpssh */
            invokevirtual java.nio.ByteBuffer.remaining:()I
            ifgt 9
        end local 3 // java.nio.ByteBuffer rawpssh
        19: .line 440
      StackMap locals:
      StackMap stack:
            aload 1 /* psshMap */
            areturn
        end local 2 // java.util.Map formatMap
        end local 1 // java.util.Map psshMap
        end local 0 // android.media.MediaExtractor this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   20     0       this  Landroid/media/MediaExtractor;
            1   20     1    psshMap  Ljava/util/Map<Ljava/util/UUID;[B>;
            2   20     2  formatMap  Ljava/util/Map<Ljava/lang/String;Ljava/lang/Object;>;
            4   19     3    rawpssh  Ljava/nio/ByteBuffer;
           11   18     4        msb  J
           12   18     6        lsb  J
           13   18     8       uuid  Ljava/util/UUID;
           15   18     9    datalen  I
           16   18    10   psshdata  [B
    Signature: ()Ljava/util/Map<Ljava/util/UUID;[B>;

  private native java.util.Map<java.lang.String, java.lang.Object> getFileFormatNative();
    descriptor: ()Ljava/util/Map;
    flags: (0x0102) ACC_PRIVATE, ACC_NATIVE
    Signature: ()Ljava/util/Map<Ljava/lang/String;Ljava/lang/Object;>;

  public android.media.MediaFormat getTrackFormat(int);
    descriptor: (I)Landroid/media/MediaFormat;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // android.media.MediaExtractor this
        start local 1 // int index
         0: .line 558
            new android.media.MediaFormat
            dup
            aload 0 /* this */
            iload 1 /* index */
            invokevirtual android.media.MediaExtractor.getTrackFormatNative:(I)Ljava/util/Map;
            invokespecial android.media.MediaFormat.<init>:(Ljava/util/Map;)V
            areturn
        end local 1 // int index
        end local 0 // android.media.MediaExtractor this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    1     0   this  Landroid/media/MediaExtractor;
            0    1     1  index  I
    MethodParameters:
       Name  Flags
      index  

  private native java.util.Map<java.lang.String, java.lang.Object> getTrackFormatNative(int);
    descriptor: (I)Ljava/util/Map;
    flags: (0x0102) ACC_PRIVATE, ACC_NATIVE
    Signature: (I)Ljava/util/Map<Ljava/lang/String;Ljava/lang/Object;>;
    MethodParameters:
       Name  Flags
      index  

  public native void selectTrack(int);
    descriptor: (I)V
    flags: (0x0101) ACC_PUBLIC, ACC_NATIVE
    MethodParameters:
       Name  Flags
      index  

  public native void unselectTrack(int);
    descriptor: (I)V
    flags: (0x0101) ACC_PUBLIC, ACC_NATIVE
    MethodParameters:
       Name  Flags
      index  

  public native void seekTo(long, int);
    descriptor: (JI)V
    flags: (0x0101) ACC_PUBLIC, ACC_NATIVE
    MethodParameters:
        Name  Flags
      timeUs  
      mode    

  public native boolean advance();
    descriptor: ()Z
    flags: (0x0101) ACC_PUBLIC, ACC_NATIVE

  public native int readSampleData(java.nio.ByteBuffer, int);
    descriptor: (Ljava/nio/ByteBuffer;I)I
    flags: (0x0101) ACC_PUBLIC, ACC_NATIVE
    MethodParameters:
         Name  Flags
      byteBuf  
      offset   

  public native int getSampleTrackIndex();
    descriptor: ()I
    flags: (0x0101) ACC_PUBLIC, ACC_NATIVE

  public native long getSampleTime();
    descriptor: ()J
    flags: (0x0101) ACC_PUBLIC, ACC_NATIVE

  public native long getSampleSize();
    descriptor: ()J
    flags: (0x0101) ACC_PUBLIC, ACC_NATIVE

  public native int getSampleFlags();
    descriptor: ()I
    flags: (0x0101) ACC_PUBLIC, ACC_NATIVE

  public native boolean getSampleCryptoInfo(android.media.MediaCodec$CryptoInfo);
    descriptor: (Landroid/media/MediaCodec$CryptoInfo;)Z
    flags: (0x0101) ACC_PUBLIC, ACC_NATIVE
    MethodParameters:
      Name  Flags
      info  

  public native long getCachedDuration();
    descriptor: ()J
    flags: (0x0101) ACC_PUBLIC, ACC_NATIVE

  public native boolean hasCacheReachedEndOfStream();
    descriptor: ()Z
    flags: (0x0101) ACC_PUBLIC, ACC_NATIVE

  public android.os.PersistableBundle getMetrics();
    descriptor: ()Landroid/os/PersistableBundle;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=2, args_size=1
        start local 0 // android.media.MediaExtractor this
         0: .line 728
            aload 0 /* this */
            invokevirtual android.media.MediaExtractor.native_getMetrics:()Landroid/os/PersistableBundle;
            astore 1 /* bundle */
        start local 1 // android.os.PersistableBundle bundle
         1: .line 729
            aload 1 /* bundle */
            areturn
        end local 1 // android.os.PersistableBundle bundle
        end local 0 // android.media.MediaExtractor this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    2     0    this  Landroid/media/MediaExtractor;
            1    2     1  bundle  Landroid/os/PersistableBundle;

  private native android.os.PersistableBundle native_getMetrics();
    descriptor: ()Landroid/os/PersistableBundle;
    flags: (0x0102) ACC_PRIVATE, ACC_NATIVE

  private static final native void native_init();
    descriptor: ()V
    flags: (0x011a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL, ACC_NATIVE

  private final native void native_setup();
    descriptor: ()V
    flags: (0x0112) ACC_PRIVATE, ACC_FINAL, ACC_NATIVE

  private final native void native_finalize();
    descriptor: ()V
    flags: (0x0112) ACC_PRIVATE, ACC_FINAL, ACC_NATIVE
}
SourceFile: "MediaExtractor.java"
NestMembers:
  android.media.MediaExtractor$1  android.media.MediaExtractor$2  android.media.MediaExtractor$CasInfo  android.media.MediaExtractor$MetricsConstants  android.media.MediaExtractor$SampleFlag  android.media.MediaExtractor$SeekMode
InnerClasses:
  public final SchemeInitData = android.media.DrmInitData$SchemeInitData of android.media.DrmInitData
  public final Session = android.media.MediaCas$Session of android.media.MediaCas
  public final CryptoInfo = android.media.MediaCodec$CryptoInfo of android.media.MediaCodec
  android.media.MediaExtractor$1
  android.media.MediaExtractor$2
  public final CasInfo = android.media.MediaExtractor$CasInfo of android.media.MediaExtractor
  public final MetricsConstants = android.media.MediaExtractor$MetricsConstants of android.media.MediaExtractor
  public abstract SampleFlag = android.media.MediaExtractor$SampleFlag of android.media.MediaExtractor
  public abstract SeekMode = android.media.MediaExtractor$SeekMode of android.media.MediaExtractor
  public abstract Entry = java.util.Map$Entry of java.util.Map