media icon indicating copy to clipboard operation
media copied to clipboard

Can't get rid of extractors with R8 optimization.

Open melihakalan opened this issue 2 months ago • 7 comments

Even though I never use ExoPlayer's default constructors at anywhere, my r8 optimized app bundle still includes many unused extractors.

Image
        if (mVideoPlayerExtractorsFactory == null)
            mVideoPlayerExtractorsFactory = () -> new Extractor[]{new Mp4Extractor(SubtitleParser.Factory.UNSUPPORTED),
                    new FragmentedMp4Extractor(SubtitleParser.Factory.UNSUPPORTED)};

        mExoVideoPlayer = new ExoPlayer.Builder(MainActivity.this,
                new DefaultRenderersFactory(MainActivity.this).setEnableDecoderFallback(true),
                new DefaultMediaSourceFactory(mVideoPlayerOkHttpDataSourceFactory, mVideoPlayerExtractorsFactory))
                .setLoadControl(new DefaultLoadControl.Builder().setBufferDurationsMs(
                        DefaultLoadControl.DEFAULT_MIN_BUFFER_MS,
                        DefaultLoadControl.DEFAULT_MAX_BUFFER_MS,
                        1000,
                        2000).build())
                .setSeekForwardIncrementMs(10000)
                .setSeekBackIncrementMs(10000)
                .build();

Can you help me on what I'm missing?

melihakalan avatar Oct 24 '25 22:10 melihakalan

See https://developer.android.com/topic/performance/app-optimization/test-and-troubleshoot-the-optimization specially -whyareyoukeeping to have the answers for your build.

Tolriq avatar Oct 25 '25 11:10 Tolriq

See https://developer.android.com/topic/performance/app-optimization/test-and-troubleshoot-the-optimization specially -whyareyoukeeping to have the answers for your build.

Thank you, I am performing some tests and I found that example for MKV. I never use it anywhere in the app. However, one of its constructors seem to be referenced internally. It follows up to my onDestroy method. Do you know how I can totally get rid of these unused extractors?

Nothing is keeping androidx.media3.extractor.ExtractorsFactory androidx.media3.extractor.mkv.MatroskaExtractor.newFactory(androidx.media3.extractor.text.SubtitleParser$Factory)
Nothing is keeping void androidx.media3.extractor.mkv.MatroskaExtractor.<init>()
Nothing is keeping void androidx.media3.extractor.mkv.MatroskaExtractor.<init>(int)
Nothing is keeping void androidx.media3.extractor.mkv.MatroskaExtractor.<init>(androidx.media3.extractor.text.SubtitleParser$Factory)

HERE:

void androidx.media3.extractor.mkv.MatroskaExtractor.<init>(androidx.media3.extractor.text.SubtitleParser$Factory,int)
|- is invoked from:
|  void androidx.media3.extractor.DefaultExtractorsFactory.addExtractorsForFileType(int,java.util.ArrayList)
|- is invoked from:
|  androidx.media3.extractor.Extractor[] androidx.media3.extractor.DefaultExtractorsFactory.createExtractors(android.net.Uri,java.util.Map)
|- is overriding method:
|  androidx.media3.extractor.Extractor[] androidx.media3.extractor.ExtractorsFactory.createExtractors(android.net.Uri,java.util.Map)
|- is invoked from:
|  void androidx.media3.exoplayer.source.BundledExtractorsAdapter.init(androidx.media3.datasource.DataSource,android.net.Uri,java.util.Map,long,long,androidx.media3.exoplayer.source.ProgressiveMediaPeriod)
|- is invoked from:
|  void androidx.media3.exoplayer.source.ProgressiveMediaPeriod$ExtractingLoadable.load()
|- is overriding method:
|  void androidx.media3.exoplayer.upstream.Loader$Loadable.load()
|- is invoked from:
|  void androidx.media3.exoplayer.upstream.Loader$LoadTask.run()
|- is defined in library method overridden by:
|  androidx.media3.exoplayer.upstream.Loader$LoadTask
|- is referenced from:
|  androidx.media3.exoplayer.upstream.Loader$LoadTask androidx.media3.exoplayer.upstream.Loader.currentTask
|- is referenced from:
|  void androidx.media3.exoplayer.source.ProgressiveMediaPeriod.maybeThrowPrepareError()
|- is overriding method:
|  void androidx.media3.exoplayer.source.MediaPeriod.maybeThrowPrepareError()
|- is invoked from:
|  void androidx.media3.exoplayer.ExoPlayerImplInternal.doSomeWork()
|- is invoked from:
|  boolean androidx.media3.exoplayer.ExoPlayerImplInternal.handleMessage(android.os.Message)
|- is defined in library method overridden by:
|  androidx.media3.exoplayer.ExoPlayerImplInternal
|- is referenced from:
|  void androidx.media3.exoplayer.ExoPlayerImpl.release()
|- is invoked from:
|  void app.MediaPlayerActivity.onDestroy()
|- is defined in library method overridden by:
|  app.MediaPlayerActivity
|- is referenced from xml:
|  AndroidManifest.xml

melihakalan avatar Oct 27 '25 21:10 melihakalan

It means that you are still using the default DefaultExtractorsFactory in the ExoPlayer builder that reference all of them. Pass a custom RenderersFactory that only loads the one you want to use and keep.

Tolriq avatar Oct 28 '25 08:10 Tolriq

It means that you are still using the default DefaultExtractorsFactory in the ExoPlayer builder that reference all of them. Pass a custom RenderersFactory that only loads the one you want to use and keep.

Oh I always explicitly select extractors when I create ExoPlayer (never use DefaultExtractorsFactory) but there are cases which I just use default renderers.

As it's documented on android.com, I understood that selecting extractors is enough to rip the rest of them. I did not know its relation with renderers, thank you, will try that.

melihakalan avatar Oct 28 '25 08:10 melihakalan

It means that you are still using the default DefaultExtractorsFactory in the ExoPlayer builder that reference all of them. Pass a custom RenderersFactory that only loads the one you want to use and keep.

Now I'm digging in my MediaPlayerActivity which is referenced in previous -whyareyoukeeping output. However, I think I am confused a bit now. This is what I get from documentation of ExoPlayer builder with RenderersFactory and MediaSourceFactory:

Image

And this is how I build my ExoPlayer instance in this activity:

        RenderersFactory renderersFactory = (eventHandler, videoRendererEventListener, audioRendererEventListener, textRendererOutput, metadataRendererOutput) ->
                new Renderer[]{
                        new MediaCodecAudioRenderer(MediaPlayerActivity.this, MediaCodecSelector.DEFAULT, true, eventHandler, audioRendererEventListener, new DefaultAudioSink.Builder(MediaPlayerActivity.this).build()),
                        new MediaCodecVideoRenderer(MediaPlayerActivity.this, MediaCodecSelector.DEFAULT, 0, true, eventHandler, videoRendererEventListener, 0)
                };
        ExtractorsFactory extractorsFactory = () -> new Extractor[]{new Mp4Extractor(SubtitleParser.Factory.UNSUPPORTED)};
        ProgressiveMediaSource.Factory mediaSourceFactory = new ProgressiveMediaSource.Factory(new FileDataSource.Factory(), extractorsFactory);

        mExoPlayer = new ExoPlayer.Builder(MediaPlayerActivity.this, renderersFactory, mediaSourceFactory)
                .setSeekForwardIncrementMs(10000)
                .setSeekBackIncrementMs(10000)
                .build();

from what I read, I understand that those Extractors is tied to DefaultMediaSourceFactory, which I do not use at anywhere. At this point I'm confused about how unused extractors are being bundled with the app with this builder?

melihakalan avatar Oct 28 '25 10:10 melihakalan

Well I concluded that if not any external libraries in my app using exoplayer internally with default extractors (I analyzed and did not find any), there's issue with exoplayer and R8 or it is just explained wrong in "APK Shrinking" documentation, because, R8 does not rip off unused extractors even if you never use DefaultMediaSourceFactory without selecting extractors or DefaultExtractorsFactory with it anywhere in your code.

Hope you have some time to look into it.

Media3: 1.5.1 AGP: 8.13 R8 full mode

melihakalan avatar Oct 29 '25 15:10 melihakalan

I tried modifying the ExoPlayer demo app to only depend on Mp3Extractor by making changes very similar to the code in https://github.com/androidx/media/issues/2863#issue-3551226416.

Roughly:

ExoPlayer exoplayer =
    new ExoPlayer.Builder(
        this,
        new DefaultMediaSourceFactory(this, () -> new Extractor[] { new Mp3Extractor() })
    .build();

This uses the ExoPlayer.Builder(Context, MediaSource.Factory) and DefaultMediaSourceFactory(Context, ExtractorsFactory) constructors (the same as you do above), both of which are important to ensure proguard can remove the "internal" references to DefaultExtractorsFactory in the constructors of these types with fewer params.

When I then ask if MatroskaExtractor is kept, proguard says no [1]:

Nothing is keeping androidx.media3.extractor.mkv.MatroskaExtractor

Looking at the proguard logs in https://github.com/androidx/media/issues/2863#issuecomment-3453454959, please can you dig into this part:

|- is invoked from:
|  androidx.media3.extractor.Extractor[] androidx.media3.extractor.DefaultExtractorsFactory.createExtractors(android.net.Uri,java.util.Map)
|- is overriding method:
|  androidx.media3.extractor.Extractor[] androidx.media3.extractor.ExtractorsFactory.createExtractors(android.net.Uri,java.util.Map)

Specifically, please can you run it again but ask -whyareyoukeeping class androidx.media3.extractor.DefaultExtractorsFactory { * }? That might take you one step closer to finding a bit of your app that is somehow still referencing DefaultExtractorsFactory.


[1] Expand for full logs
Nothing is keeping androidx.media3.extractor.mkv.MatroskaExtractor
Nothing is keeping androidx.media3.extractor.ExtractorsFactory androidx.media3.extractor.mkv.MatroskaExtractor.newFactory(androidx.media3.extractor.text.SubtitleParser$Factory)
Nothing is keeping void androidx.media3.extractor.mkv.MatroskaExtractor.<init>()
Nothing is keeping void androidx.media3.extractor.mkv.MatroskaExtractor.<init>(int)
Nothing is keeping void androidx.media3.extractor.mkv.MatroskaExtractor.<init>(androidx.media3.extractor.text.SubtitleParser$Factory)
Nothing is keeping void androidx.media3.extractor.mkv.MatroskaExtractor.<init>(androidx.media3.extractor.text.SubtitleParser$Factory,int)
Nothing is keeping void androidx.media3.extractor.mkv.MatroskaExtractor.<init>(androidx.media3.extractor.mkv.EbmlReader,int,androidx.media3.extractor.text.SubtitleParser$Factory)
Nothing is keeping void androidx.media3.extractor.mkv.MatroskaExtractor.assertInTrackEntry(int)
Nothing is keeping void androidx.media3.extractor.mkv.MatroskaExtractor.assertInCues(int)
Nothing is keeping void androidx.media3.extractor.mkv.MatroskaExtractor.commitSampleToOutput(androidx.media3.extractor.mkv.MatroskaExtractor$Track,long,int,int,int)
Nothing is keeping void androidx.media3.extractor.mkv.MatroskaExtractor.readScratch(androidx.media3.extractor.ExtractorInput,int)
Nothing is keeping int androidx.media3.extractor.mkv.MatroskaExtractor.writeSampleData(androidx.media3.extractor.ExtractorInput,androidx.media3.extractor.mkv.MatroskaExtractor$Track,int,boolean)
Nothing is keeping int androidx.media3.extractor.mkv.MatroskaExtractor.finishWriteSampleData()
Nothing is keeping void androidx.media3.extractor.mkv.MatroskaExtractor.resetWriteSampleData()
Nothing is keeping void androidx.media3.extractor.mkv.MatroskaExtractor.writeSubtitleSampleData(androidx.media3.extractor.ExtractorInput,byte[],int)
Nothing is keeping void androidx.media3.extractor.mkv.MatroskaExtractor.setSubtitleEndTime(java.lang.String,long,byte[])
Nothing is keeping byte[] androidx.media3.extractor.mkv.MatroskaExtractor.formatSubtitleTimecode(long,java.lang.String,long)
Nothing is keeping void androidx.media3.extractor.mkv.MatroskaExtractor.writeToTarget(androidx.media3.extractor.ExtractorInput,byte[],int,int)
Nothing is keeping int androidx.media3.extractor.mkv.MatroskaExtractor.writeToOutput(androidx.media3.extractor.ExtractorInput,androidx.media3.extractor.TrackOutput,int)
Nothing is keeping boolean androidx.media3.extractor.mkv.MatroskaExtractor.maybeSeekForCues(androidx.media3.extractor.PositionHolder,long)
Nothing is keeping long androidx.media3.extractor.mkv.MatroskaExtractor.scaleTimecodeToUs(long)
Nothing is keeping boolean androidx.media3.extractor.mkv.MatroskaExtractor.isCodecSupported(java.lang.String)
Nothing is keeping int[] androidx.media3.extractor.mkv.MatroskaExtractor.ensureArrayCapacity(int[],int)
Nothing is keeping void androidx.media3.extractor.mkv.MatroskaExtractor.assertInitialized()
Nothing is keeping void androidx.media3.extractor.mkv.MatroskaExtractor.maybeEndTracks()
Nothing is keeping androidx.media3.extractor.Extractor[] androidx.media3.extractor.mkv.MatroskaExtractor.lambda$static$1()
Nothing is keeping androidx.media3.extractor.Extractor[] androidx.media3.extractor.mkv.MatroskaExtractor.lambda$newFactory$0(androidx.media3.extractor.text.SubtitleParser$Factory)
Nothing is keeping byte[] androidx.media3.extractor.mkv.MatroskaExtractor.access$700()
Nothing is keeping java.util.Map androidx.media3.extractor.mkv.MatroskaExtractor.access$800()
Nothing is keeping java.util.UUID androidx.media3.extractor.mkv.MatroskaExtractor.access$1200()
Nothing is keeping void androidx.media3.extractor.mkv.MatroskaExtractor.<clinit>()
Nothing is keeping boolean androidx.media3.extractor.mkv.MatroskaExtractor.sniff(androidx.media3.extractor.ExtractorInput)
Nothing is keeping void androidx.media3.extractor.mkv.MatroskaExtractor.init(androidx.media3.extractor.ExtractorOutput)
Nothing is keeping void androidx.media3.extractor.mkv.MatroskaExtractor.seek(long,long)
Nothing is keeping void androidx.media3.extractor.mkv.MatroskaExtractor.release()
Nothing is keeping int androidx.media3.extractor.mkv.MatroskaExtractor.read(androidx.media3.extractor.ExtractorInput,androidx.media3.extractor.PositionHolder)
Nothing is keeping int androidx.media3.extractor.mkv.MatroskaExtractor.getElementType(int)
Nothing is keeping boolean androidx.media3.extractor.mkv.MatroskaExtractor.isLevel1Element(int)
Nothing is keeping void androidx.media3.extractor.mkv.MatroskaExtractor.startMasterElement(int,long,long)
Nothing is keeping void androidx.media3.extractor.mkv.MatroskaExtractor.endMasterElement(int)
Nothing is keeping void androidx.media3.extractor.mkv.MatroskaExtractor.integerElement(int,long)
Nothing is keeping void androidx.media3.extractor.mkv.MatroskaExtractor.floatElement(int,double)
Nothing is keeping void androidx.media3.extractor.mkv.MatroskaExtractor.stringElement(int,java.lang.String)
Nothing is keeping void androidx.media3.extractor.mkv.MatroskaExtractor.binaryElement(int,int,androidx.media3.extractor.ExtractorInput)
Nothing is keeping void androidx.media3.extractor.mkv.MatroskaExtractor.handleBlockAddIDExtraData(androidx.media3.extractor.mkv.MatroskaExtractor$Track,androidx.media3.extractor.ExtractorInput,int)
Nothing is keeping void androidx.media3.extractor.mkv.MatroskaExtractor.handleBlockAdditionalData(androidx.media3.extractor.mkv.MatroskaExtractor$Track,int,androidx.media3.extractor.ExtractorInput,int)
Nothing is keeping androidx.media3.extractor.mkv.MatroskaExtractor$Track androidx.media3.extractor.mkv.MatroskaExtractor.getCurrentTrack(int)
Nothing is keeping java.lang.Class java.lang.Object.getClass()
Nothing is keeping int java.lang.Object.hashCode()
Nothing is keeping boolean java.lang.Object.equals(java.lang.Object)
Nothing is keeping java.lang.Object java.lang.Object.clone()
Nothing is keeping java.lang.String java.lang.Object.toString()
Nothing is keeping void java.lang.Object.notify()
Nothing is keeping void java.lang.Object.notifyAll()
Nothing is keeping void java.lang.Object.wait(long)
Nothing is keeping void java.lang.Object.wait(long,int)
Nothing is keeping void java.lang.Object.wait()
Nothing is keeping void java.lang.Object.finalize()
Nothing is keeping int androidx.media3.extractor.mkv.MatroskaExtractor.FLAG_DISABLE_SEEK_FOR_CUES
Nothing is keeping int androidx.media3.extractor.mkv.MatroskaExtractor.FLAG_EMIT_RAW_SUBTITLE_DATA
Nothing is keeping androidx.media3.extractor.ExtractorsFactory androidx.media3.extractor.mkv.MatroskaExtractor.FACTORY
Nothing is keeping java.lang.String androidx.media3.extractor.mkv.MatroskaExtractor.TAG
Nothing is keeping int androidx.media3.extractor.mkv.MatroskaExtractor.UNSET_ENTRY_ID
Nothing is keeping int androidx.media3.extractor.mkv.MatroskaExtractor.BLOCK_STATE_START
Nothing is keeping int androidx.media3.extractor.mkv.MatroskaExtractor.BLOCK_STATE_HEADER
Nothing is keeping int androidx.media3.extractor.mkv.MatroskaExtractor.BLOCK_STATE_DATA
Nothing is keeping java.lang.String androidx.media3.extractor.mkv.MatroskaExtractor.DOC_TYPE_MATROSKA
Nothing is keeping java.lang.String androidx.media3.extractor.mkv.MatroskaExtractor.DOC_TYPE_WEBM
Nothing is keeping java.lang.String androidx.media3.extractor.mkv.MatroskaExtractor.CODEC_ID_VP8
Nothing is keeping java.lang.String androidx.media3.extractor.mkv.MatroskaExtractor.CODEC_ID_VP9
Nothing is keeping java.lang.String androidx.media3.extractor.mkv.MatroskaExtractor.CODEC_ID_AV1
Nothing is keeping java.lang.String androidx.media3.extractor.mkv.MatroskaExtractor.CODEC_ID_MPEG2
Nothing is keeping java.lang.String androidx.media3.extractor.mkv.MatroskaExtractor.CODEC_ID_MPEG4_SP
Nothing is keeping java.lang.String androidx.media3.extractor.mkv.MatroskaExtractor.CODEC_ID_MPEG4_ASP
Nothing is keeping java.lang.String androidx.media3.extractor.mkv.MatroskaExtractor.CODEC_ID_MPEG4_AP
Nothing is keeping java.lang.String androidx.media3.extractor.mkv.MatroskaExtractor.CODEC_ID_H264
Nothing is keeping java.lang.String androidx.media3.extractor.mkv.MatroskaExtractor.CODEC_ID_H265
Nothing is keeping java.lang.String androidx.media3.extractor.mkv.MatroskaExtractor.CODEC_ID_FOURCC
Nothing is keeping java.lang.String androidx.media3.extractor.mkv.MatroskaExtractor.CODEC_ID_THEORA
Nothing is keeping java.lang.String androidx.media3.extractor.mkv.MatroskaExtractor.CODEC_ID_VORBIS
Nothing is keeping java.lang.String androidx.media3.extractor.mkv.MatroskaExtractor.CODEC_ID_OPUS
Nothing is keeping java.lang.String androidx.media3.extractor.mkv.MatroskaExtractor.CODEC_ID_AAC
Nothing is keeping java.lang.String androidx.media3.extractor.mkv.MatroskaExtractor.CODEC_ID_MP2
Nothing is keeping java.lang.String androidx.media3.extractor.mkv.MatroskaExtractor.CODEC_ID_MP3
Nothing is keeping java.lang.String androidx.media3.extractor.mkv.MatroskaExtractor.CODEC_ID_AC3
Nothing is keeping java.lang.String androidx.media3.extractor.mkv.MatroskaExtractor.CODEC_ID_E_AC3
Nothing is keeping java.lang.String androidx.media3.extractor.mkv.MatroskaExtractor.CODEC_ID_TRUEHD
Nothing is keeping java.lang.String androidx.media3.extractor.mkv.MatroskaExtractor.CODEC_ID_DTS
Nothing is keeping java.lang.String androidx.media3.extractor.mkv.MatroskaExtractor.CODEC_ID_DTS_EXPRESS
Nothing is keeping java.lang.String androidx.media3.extractor.mkv.MatroskaExtractor.CODEC_ID_DTS_LOSSLESS
Nothing is keeping java.lang.String androidx.media3.extractor.mkv.MatroskaExtractor.CODEC_ID_FLAC
Nothing is keeping java.lang.String androidx.media3.extractor.mkv.MatroskaExtractor.CODEC_ID_ACM
Nothing is keeping java.lang.String androidx.media3.extractor.mkv.MatroskaExtractor.CODEC_ID_PCM_INT_LIT
Nothing is keeping java.lang.String androidx.media3.extractor.mkv.MatroskaExtractor.CODEC_ID_PCM_INT_BIG
Nothing is keeping java.lang.String androidx.media3.extractor.mkv.MatroskaExtractor.CODEC_ID_PCM_FLOAT
Nothing is keeping java.lang.String androidx.media3.extractor.mkv.MatroskaExtractor.CODEC_ID_SUBRIP
Nothing is keeping java.lang.String androidx.media3.extractor.mkv.MatroskaExtractor.CODEC_ID_ASS
Nothing is keeping java.lang.String androidx.media3.extractor.mkv.MatroskaExtractor.CODEC_ID_SSA
Nothing is keeping java.lang.String androidx.media3.extractor.mkv.MatroskaExtractor.CODEC_ID_VTT
Nothing is keeping java.lang.String androidx.media3.extractor.mkv.MatroskaExtractor.CODEC_ID_VOBSUB
Nothing is keeping java.lang.String androidx.media3.extractor.mkv.MatroskaExtractor.CODEC_ID_PGS
Nothing is keeping java.lang.String androidx.media3.extractor.mkv.MatroskaExtractor.CODEC_ID_DVBSUB
Nothing is keeping int androidx.media3.extractor.mkv.MatroskaExtractor.VORBIS_MAX_INPUT_SIZE
Nothing is keeping int androidx.media3.extractor.mkv.MatroskaExtractor.OPUS_MAX_INPUT_SIZE
Nothing is keeping int androidx.media3.extractor.mkv.MatroskaExtractor.ENCRYPTION_IV_SIZE
Nothing is keeping int androidx.media3.extractor.mkv.MatroskaExtractor.ID_EBML
Nothing is keeping int androidx.media3.extractor.mkv.MatroskaExtractor.ID_EBML_READ_VERSION
Nothing is keeping int androidx.media3.extractor.mkv.MatroskaExtractor.ID_DOC_TYPE
Nothing is keeping int androidx.media3.extractor.mkv.MatroskaExtractor.ID_DOC_TYPE_READ_VERSION
Nothing is keeping int androidx.media3.extractor.mkv.MatroskaExtractor.ID_SEGMENT
Nothing is keeping int androidx.media3.extractor.mkv.MatroskaExtractor.ID_SEGMENT_INFO
Nothing is keeping int androidx.media3.extractor.mkv.MatroskaExtractor.ID_SEEK_HEAD
Nothing is keeping int androidx.media3.extractor.mkv.MatroskaExtractor.ID_SEEK
Nothing is keeping int androidx.media3.extractor.mkv.MatroskaExtractor.ID_SEEK_ID
Nothing is keeping int androidx.media3.extractor.mkv.MatroskaExtractor.ID_SEEK_POSITION
Nothing is keeping int androidx.media3.extractor.mkv.MatroskaExtractor.ID_INFO
Nothing is keeping int androidx.media3.extractor.mkv.MatroskaExtractor.ID_TIMECODE_SCALE
Nothing is keeping int androidx.media3.extractor.mkv.MatroskaExtractor.ID_DURATION
Nothing is keeping int androidx.media3.extractor.mkv.MatroskaExtractor.ID_CLUSTER
Nothing is keeping int androidx.media3.extractor.mkv.MatroskaExtractor.ID_TIME_CODE
Nothing is keeping int androidx.media3.extractor.mkv.MatroskaExtractor.ID_SIMPLE_BLOCK
Nothing is keeping int androidx.media3.extractor.mkv.MatroskaExtractor.ID_BLOCK_GROUP
Nothing is keeping int androidx.media3.extractor.mkv.MatroskaExtractor.ID_BLOCK
Nothing is keeping int androidx.media3.extractor.mkv.MatroskaExtractor.ID_BLOCK_DURATION
Nothing is keeping int androidx.media3.extractor.mkv.MatroskaExtractor.ID_BLOCK_ADDITIONS
Nothing is keeping int androidx.media3.extractor.mkv.MatroskaExtractor.ID_BLOCK_MORE
Nothing is keeping int androidx.media3.extractor.mkv.MatroskaExtractor.ID_BLOCK_ADD_ID
Nothing is keeping int androidx.media3.extractor.mkv.MatroskaExtractor.ID_BLOCK_ADDITIONAL
Nothing is keeping int androidx.media3.extractor.mkv.MatroskaExtractor.ID_REFERENCE_BLOCK
Nothing is keeping int androidx.media3.extractor.mkv.MatroskaExtractor.ID_TRACKS
Nothing is keeping int androidx.media3.extractor.mkv.MatroskaExtractor.ID_TRACK_ENTRY
Nothing is keeping int androidx.media3.extractor.mkv.MatroskaExtractor.ID_TRACK_NUMBER
Nothing is keeping int androidx.media3.extractor.mkv.MatroskaExtractor.ID_TRACK_TYPE
Nothing is keeping int androidx.media3.extractor.mkv.MatroskaExtractor.ID_FLAG_DEFAULT
Nothing is keeping int androidx.media3.extractor.mkv.MatroskaExtractor.ID_FLAG_FORCED
Nothing is keeping int androidx.media3.extractor.mkv.MatroskaExtractor.ID_DEFAULT_DURATION
Nothing is keeping int androidx.media3.extractor.mkv.MatroskaExtractor.ID_MAX_BLOCK_ADDITION_ID
Nothing is keeping int androidx.media3.extractor.mkv.MatroskaExtractor.ID_BLOCK_ADDITION_MAPPING
Nothing is keeping int androidx.media3.extractor.mkv.MatroskaExtractor.ID_BLOCK_ADD_ID_TYPE
Nothing is keeping int androidx.media3.extractor.mkv.MatroskaExtractor.ID_BLOCK_ADD_ID_EXTRA_DATA
Nothing is keeping int androidx.media3.extractor.mkv.MatroskaExtractor.ID_NAME
Nothing is keeping int androidx.media3.extractor.mkv.MatroskaExtractor.ID_CODEC_ID
Nothing is keeping int androidx.media3.extractor.mkv.MatroskaExtractor.ID_CODEC_PRIVATE
Nothing is keeping int androidx.media3.extractor.mkv.MatroskaExtractor.ID_CODEC_DELAY
Nothing is keeping int androidx.media3.extractor.mkv.MatroskaExtractor.ID_SEEK_PRE_ROLL
Nothing is keeping int androidx.media3.extractor.mkv.MatroskaExtractor.ID_DISCARD_PADDING
Nothing is keeping int androidx.media3.extractor.mkv.MatroskaExtractor.ID_VIDEO
Nothing is keeping int androidx.media3.extractor.mkv.MatroskaExtractor.ID_PIXEL_WIDTH
Nothing is keeping int androidx.media3.extractor.mkv.MatroskaExtractor.ID_PIXEL_HEIGHT
Nothing is keeping int androidx.media3.extractor.mkv.MatroskaExtractor.ID_DISPLAY_WIDTH
Nothing is keeping int androidx.media3.extractor.mkv.MatroskaExtractor.ID_DISPLAY_HEIGHT
Nothing is keeping int androidx.media3.extractor.mkv.MatroskaExtractor.ID_DISPLAY_UNIT
Nothing is keeping int androidx.media3.extractor.mkv.MatroskaExtractor.ID_AUDIO
Nothing is keeping int androidx.media3.extractor.mkv.MatroskaExtractor.ID_CHANNELS
Nothing is keeping int androidx.media3.extractor.mkv.MatroskaExtractor.ID_AUDIO_BIT_DEPTH
Nothing is keeping int androidx.media3.extractor.mkv.MatroskaExtractor.ID_SAMPLING_FREQUENCY
Nothing is keeping int androidx.media3.extractor.mkv.MatroskaExtractor.ID_CONTENT_ENCODINGS
Nothing is keeping int androidx.media3.extractor.mkv.MatroskaExtractor.ID_CONTENT_ENCODING
Nothing is keeping int androidx.media3.extractor.mkv.MatroskaExtractor.ID_CONTENT_ENCODING_ORDER
Nothing is keeping int androidx.media3.extractor.mkv.MatroskaExtractor.ID_CONTENT_ENCODING_SCOPE
Nothing is keeping int androidx.media3.extractor.mkv.MatroskaExtractor.ID_CONTENT_COMPRESSION
Nothing is keeping int androidx.media3.extractor.mkv.MatroskaExtractor.ID_CONTENT_COMPRESSION_ALGORITHM
Nothing is keeping int androidx.media3.extractor.mkv.MatroskaExtractor.ID_CONTENT_COMPRESSION_SETTINGS
Nothing is keeping int androidx.media3.extractor.mkv.MatroskaExtractor.ID_CONTENT_ENCRYPTION
Nothing is keeping int androidx.media3.extractor.mkv.MatroskaExtractor.ID_CONTENT_ENCRYPTION_ALGORITHM
Nothing is keeping int androidx.media3.extractor.mkv.MatroskaExtractor.ID_CONTENT_ENCRYPTION_KEY_ID
Nothing is keeping int androidx.media3.extractor.mkv.MatroskaExtractor.ID_CONTENT_ENCRYPTION_AES_SETTINGS
Nothing is keeping int androidx.media3.extractor.mkv.MatroskaExtractor.ID_CONTENT_ENCRYPTION_AES_SETTINGS_CIPHER_MODE
Nothing is keeping int androidx.media3.extractor.mkv.MatroskaExtractor.ID_CUES
Nothing is keeping int androidx.media3.extractor.mkv.MatroskaExtractor.ID_CUE_POINT
Nothing is keeping int androidx.media3.extractor.mkv.MatroskaExtractor.ID_CUE_TIME
Nothing is keeping int androidx.media3.extractor.mkv.MatroskaExtractor.ID_CUE_TRACK
Nothing is keeping int androidx.media3.extractor.mkv.MatroskaExtractor.ID_CUE_TRACK_POSITIONS
Nothing is keeping int androidx.media3.extractor.mkv.MatroskaExtractor.ID_CUE_CLUSTER_POSITION
Nothing is keeping int androidx.media3.extractor.mkv.MatroskaExtractor.ID_CUE_RELATIVE_POSITION
Nothing is keeping int androidx.media3.extractor.mkv.MatroskaExtractor.ID_LANGUAGE
Nothing is keeping int androidx.media3.extractor.mkv.MatroskaExtractor.ID_PROJECTION
Nothing is keeping int androidx.media3.extractor.mkv.MatroskaExtractor.ID_PROJECTION_TYPE
Nothing is keeping int androidx.media3.extractor.mkv.MatroskaExtractor.ID_PROJECTION_PRIVATE
Nothing is keeping int androidx.media3.extractor.mkv.MatroskaExtractor.ID_PROJECTION_POSE_YAW
Nothing is keeping int androidx.media3.extractor.mkv.MatroskaExtractor.ID_PROJECTION_POSE_PITCH
Nothing is keeping int androidx.media3.extractor.mkv.MatroskaExtractor.ID_PROJECTION_POSE_ROLL
Nothing is keeping int androidx.media3.extractor.mkv.MatroskaExtractor.ID_STEREO_MODE
Nothing is keeping int androidx.media3.extractor.mkv.MatroskaExtractor.ID_COLOUR
Nothing is keeping int androidx.media3.extractor.mkv.MatroskaExtractor.ID_COLOUR_RANGE
Nothing is keeping int androidx.media3.extractor.mkv.MatroskaExtractor.ID_COLOUR_BITS_PER_CHANNEL
Nothing is keeping int androidx.media3.extractor.mkv.MatroskaExtractor.ID_COLOUR_TRANSFER
Nothing is keeping int androidx.media3.extractor.mkv.MatroskaExtractor.ID_COLOUR_PRIMARIES
Nothing is keeping int androidx.media3.extractor.mkv.MatroskaExtractor.ID_MAX_CLL
Nothing is keeping int androidx.media3.extractor.mkv.MatroskaExtractor.ID_MAX_FALL
Nothing is keeping int androidx.media3.extractor.mkv.MatroskaExtractor.ID_MASTERING_METADATA
Nothing is keeping int androidx.media3.extractor.mkv.MatroskaExtractor.ID_PRIMARY_R_CHROMATICITY_X
Nothing is keeping int androidx.media3.extractor.mkv.MatroskaExtractor.ID_PRIMARY_R_CHROMATICITY_Y
Nothing is keeping int androidx.media3.extractor.mkv.MatroskaExtractor.ID_PRIMARY_G_CHROMATICITY_X
Nothing is keeping int androidx.media3.extractor.mkv.MatroskaExtractor.ID_PRIMARY_G_CHROMATICITY_Y
Nothing is keeping int androidx.media3.extractor.mkv.MatroskaExtractor.ID_PRIMARY_B_CHROMATICITY_X
Nothing is keeping int androidx.media3.extractor.mkv.MatroskaExtractor.ID_PRIMARY_B_CHROMATICITY_Y
Nothing is keeping int androidx.media3.extractor.mkv.MatroskaExtractor.ID_WHITE_POINT_CHROMATICITY_X
Nothing is keeping int androidx.media3.extractor.mkv.MatroskaExtractor.ID_WHITE_POINT_CHROMATICITY_Y
Nothing is keeping int androidx.media3.extractor.mkv.MatroskaExtractor.ID_LUMNINANCE_MAX
Nothing is keeping int androidx.media3.extractor.mkv.MatroskaExtractor.ID_LUMNINANCE_MIN
Nothing is keeping int androidx.media3.extractor.mkv.MatroskaExtractor.BLOCK_ADDITIONAL_ID_VP9_ITU_T_35
Nothing is keeping int androidx.media3.extractor.mkv.MatroskaExtractor.BLOCK_ADD_ID_TYPE_DVCC
Nothing is keeping int androidx.media3.extractor.mkv.MatroskaExtractor.BLOCK_ADD_ID_TYPE_DVVC
Nothing is keeping int androidx.media3.extractor.mkv.MatroskaExtractor.LACING_NONE
Nothing is keeping int androidx.media3.extractor.mkv.MatroskaExtractor.LACING_XIPH
Nothing is keeping int androidx.media3.extractor.mkv.MatroskaExtractor.LACING_FIXED_SIZE
Nothing is keeping int androidx.media3.extractor.mkv.MatroskaExtractor.LACING_EBML
Nothing is keeping int androidx.media3.extractor.mkv.MatroskaExtractor.FOURCC_COMPRESSION_DIVX
Nothing is keeping int androidx.media3.extractor.mkv.MatroskaExtractor.FOURCC_COMPRESSION_H263
Nothing is keeping int androidx.media3.extractor.mkv.MatroskaExtractor.FOURCC_COMPRESSION_VC1
Nothing is keeping int androidx.media3.extractor.mkv.MatroskaExtractor.MAX_CHUNKS_TO_SCAN_FOR_THUMBNAIL
Nothing is keeping long androidx.media3.extractor.mkv.MatroskaExtractor.MAX_DURATION_US_TO_SCAN_FOR_THUMBNAIL
Nothing is keeping byte[] androidx.media3.extractor.mkv.MatroskaExtractor.SUBRIP_PREFIX
Nothing is keeping int androidx.media3.extractor.mkv.MatroskaExtractor.SUBRIP_PREFIX_END_TIMECODE_OFFSET
Nothing is keeping long androidx.media3.extractor.mkv.MatroskaExtractor.SUBRIP_TIMECODE_LAST_VALUE_SCALING_FACTOR
Nothing is keeping java.lang.String androidx.media3.extractor.mkv.MatroskaExtractor.SUBRIP_TIMECODE_FORMAT
Nothing is keeping byte[] androidx.media3.extractor.mkv.MatroskaExtractor.SSA_DIALOGUE_FORMAT
Nothing is keeping byte[] androidx.media3.extractor.mkv.MatroskaExtractor.SSA_PREFIX
Nothing is keeping int androidx.media3.extractor.mkv.MatroskaExtractor.SSA_PREFIX_END_TIMECODE_OFFSET
Nothing is keeping long androidx.media3.extractor.mkv.MatroskaExtractor.SSA_TIMECODE_LAST_VALUE_SCALING_FACTOR
Nothing is keeping java.lang.String androidx.media3.extractor.mkv.MatroskaExtractor.SSA_TIMECODE_FORMAT
Nothing is keeping byte[] androidx.media3.extractor.mkv.MatroskaExtractor.VTT_PREFIX
Nothing is keeping int androidx.media3.extractor.mkv.MatroskaExtractor.VTT_PREFIX_END_TIMECODE_OFFSET
Nothing is keeping long androidx.media3.extractor.mkv.MatroskaExtractor.VTT_TIMECODE_LAST_VALUE_SCALING_FACTOR
Nothing is keeping java.lang.String androidx.media3.extractor.mkv.MatroskaExtractor.VTT_TIMECODE_FORMAT
Nothing is keeping int androidx.media3.extractor.mkv.MatroskaExtractor.WAVE_FORMAT_SIZE
Nothing is keeping int androidx.media3.extractor.mkv.MatroskaExtractor.WAVE_FORMAT_EXTENSIBLE
Nothing is keeping int androidx.media3.extractor.mkv.MatroskaExtractor.WAVE_FORMAT_PCM
Nothing is keeping java.util.UUID androidx.media3.extractor.mkv.MatroskaExtractor.WAVE_SUBFORMAT_PCM
Nothing is keeping java.util.Map androidx.media3.extractor.mkv.MatroskaExtractor.TRACK_NAME_TO_ROTATION_DEGREES
Nothing is keeping androidx.media3.extractor.mkv.EbmlReader androidx.media3.extractor.mkv.MatroskaExtractor.reader
Nothing is keeping androidx.media3.extractor.mkv.VarintReader androidx.media3.extractor.mkv.MatroskaExtractor.varintReader
Nothing is keeping android.util.SparseArray androidx.media3.extractor.mkv.MatroskaExtractor.tracks
Nothing is keeping boolean androidx.media3.extractor.mkv.MatroskaExtractor.seekForCuesEnabled
Nothing is keeping boolean androidx.media3.extractor.mkv.MatroskaExtractor.parseSubtitlesDuringExtraction
Nothing is keeping androidx.media3.extractor.text.SubtitleParser$Factory androidx.media3.extractor.mkv.MatroskaExtractor.subtitleParserFactory
Nothing is keeping androidx.media3.common.util.ParsableByteArray androidx.media3.extractor.mkv.MatroskaExtractor.nalStartCode
Nothing is keeping androidx.media3.common.util.ParsableByteArray androidx.media3.extractor.mkv.MatroskaExtractor.nalLength
Nothing is keeping androidx.media3.common.util.ParsableByteArray androidx.media3.extractor.mkv.MatroskaExtractor.scratch
Nothing is keeping androidx.media3.common.util.ParsableByteArray androidx.media3.extractor.mkv.MatroskaExtractor.vorbisNumPageSamples
Nothing is keeping androidx.media3.common.util.ParsableByteArray androidx.media3.extractor.mkv.MatroskaExtractor.seekEntryIdBytes
Nothing is keeping androidx.media3.common.util.ParsableByteArray androidx.media3.extractor.mkv.MatroskaExtractor.sampleStrippedBytes
Nothing is keeping androidx.media3.common.util.ParsableByteArray androidx.media3.extractor.mkv.MatroskaExtractor.subtitleSample
Nothing is keeping androidx.media3.common.util.ParsableByteArray androidx.media3.extractor.mkv.MatroskaExtractor.encryptionInitializationVector
Nothing is keeping androidx.media3.common.util.ParsableByteArray androidx.media3.extractor.mkv.MatroskaExtractor.encryptionSubsampleData
Nothing is keeping androidx.media3.common.util.ParsableByteArray androidx.media3.extractor.mkv.MatroskaExtractor.supplementalData
Nothing is keeping java.nio.ByteBuffer androidx.media3.extractor.mkv.MatroskaExtractor.encryptionSubsampleDataBuffer
Nothing is keeping long androidx.media3.extractor.mkv.MatroskaExtractor.segmentContentSize
Nothing is keeping long androidx.media3.extractor.mkv.MatroskaExtractor.segmentContentPosition
Nothing is keeping long androidx.media3.extractor.mkv.MatroskaExtractor.timecodeScale
Nothing is keeping long androidx.media3.extractor.mkv.MatroskaExtractor.durationTimecode
Nothing is keeping long androidx.media3.extractor.mkv.MatroskaExtractor.durationUs
Nothing is keeping boolean androidx.media3.extractor.mkv.MatroskaExtractor.isWebm
Nothing is keeping boolean androidx.media3.extractor.mkv.MatroskaExtractor.pendingEndTracks
Nothing is keeping androidx.media3.extractor.mkv.MatroskaExtractor$Track androidx.media3.extractor.mkv.MatroskaExtractor.currentTrack
Nothing is keeping boolean androidx.media3.extractor.mkv.MatroskaExtractor.sentSeekMap
Nothing is keeping int androidx.media3.extractor.mkv.MatroskaExtractor.seekEntryId
Nothing is keeping long androidx.media3.extractor.mkv.MatroskaExtractor.seekEntryPosition
Nothing is keeping android.util.SparseArray androidx.media3.extractor.mkv.MatroskaExtractor.perTrackCues
Nothing is keeping boolean androidx.media3.extractor.mkv.MatroskaExtractor.inCuesElement
Nothing is keeping long androidx.media3.extractor.mkv.MatroskaExtractor.currentCueTimeUs
Nothing is keeping int androidx.media3.extractor.mkv.MatroskaExtractor.currentCueTrackNumber
Nothing is keeping long androidx.media3.extractor.mkv.MatroskaExtractor.currentCueClusterPosition
Nothing is keeping long androidx.media3.extractor.mkv.MatroskaExtractor.currentCueRelativePosition
Nothing is keeping int androidx.media3.extractor.mkv.MatroskaExtractor.primarySeekTrackNumber
Nothing is keeping boolean androidx.media3.extractor.mkv.MatroskaExtractor.seekForCues
Nothing is keeping long androidx.media3.extractor.mkv.MatroskaExtractor.cuesContentPosition
Nothing is keeping long androidx.media3.extractor.mkv.MatroskaExtractor.seekPositionAfterBuildingCues
Nothing is keeping long androidx.media3.extractor.mkv.MatroskaExtractor.clusterTimecodeUs
Nothing is keeping boolean androidx.media3.extractor.mkv.MatroskaExtractor.haveOutputSample
Nothing is keeping int androidx.media3.extractor.mkv.MatroskaExtractor.blockState
Nothing is keeping long androidx.media3.extractor.mkv.MatroskaExtractor.blockTimeUs
Nothing is keeping long androidx.media3.extractor.mkv.MatroskaExtractor.blockDurationUs
Nothing is keeping int androidx.media3.extractor.mkv.MatroskaExtractor.blockSampleIndex
Nothing is keeping int androidx.media3.extractor.mkv.MatroskaExtractor.blockSampleCount
Nothing is keeping int[] androidx.media3.extractor.mkv.MatroskaExtractor.blockSampleSizes
Nothing is keeping int androidx.media3.extractor.mkv.MatroskaExtractor.blockTrackNumber
Nothing is keeping int androidx.media3.extractor.mkv.MatroskaExtractor.blockTrackNumberLength
Nothing is keeping int androidx.media3.extractor.mkv.MatroskaExtractor.blockFlags
Nothing is keeping int androidx.media3.extractor.mkv.MatroskaExtractor.blockAdditionalId
Nothing is keeping boolean androidx.media3.extractor.mkv.MatroskaExtractor.blockHasReferenceBlock
Nothing is keeping long androidx.media3.extractor.mkv.MatroskaExtractor.blockGroupDiscardPaddingNs
Nothing is keeping int androidx.media3.extractor.mkv.MatroskaExtractor.sampleBytesRead
Nothing is keeping int androidx.media3.extractor.mkv.MatroskaExtractor.sampleBytesWritten
Nothing is keeping int androidx.media3.extractor.mkv.MatroskaExtractor.sampleCurrentNalBytesRemaining
Nothing is keeping boolean androidx.media3.extractor.mkv.MatroskaExtractor.sampleEncodingHandled
Nothing is keeping boolean androidx.media3.extractor.mkv.MatroskaExtractor.sampleSignalByteRead
Nothing is keeping boolean androidx.media3.extractor.mkv.MatroskaExtractor.samplePartitionCountRead
Nothing is keeping int androidx.media3.extractor.mkv.MatroskaExtractor.samplePartitionCount
Nothing is keeping byte androidx.media3.extractor.mkv.MatroskaExtractor.sampleSignalByte
Nothing is keeping boolean androidx.media3.extractor.mkv.MatroskaExtractor.sampleInitializationVectorRead
Nothing is keeping androidx.media3.extractor.ExtractorOutput androidx.media3.extractor.mkv.MatroskaExtractor.extractorOutput

icbaker avatar Nov 06 '25 12:11 icbaker