Skip to content

2.12.0 change in extractor handling #7937

@Tolriq

Description

@Tolriq

I'm heavily optimizing my application size via R8 and selection of the supported renderers and extractors to allow R8 to remove unused ones from final dex.

Since 2.12 despite still using :

extractorsFactory = ExtractorsFactory { arrayOf(Mp3Extractor(), FlacExtractor(), OggExtractor(), WavExtractor(), MatroskaExtractor(), Mp4Extractor()) }

and

ProgressiveMediaSource.Factory(dataSourceFactory, extractorsFactory).createMediaSource(MediaItem.Builder().setUri(finalUri).build())

All extractors are kept in final APK.

R8 gives the following reason:

com.google.android.exoplayer2.extractor.ts.TsExtractor
|- is referenced from:
|  int com.google.android.exoplayer2.extractor.ts.TsExtractor.read(com.google.android.exoplayer2.extractor.DefaultExtractorInput,com.google.android.exoplayer2.extractor.PositionHolder)
|- is overriding method:
|  int com.google.android.exoplayer2.extractor.Extractor.read(com.google.android.exoplayer2.extractor.DefaultExtractorInput,com.google.android.exoplayer2.extractor.PositionHolder)
|- is invoked from:
|  void com.google.android.exoplayer2.source.ProgressiveMediaPeriod$ExtractingLoadable.load()
|- is invoked from:
|  void com.google.android.exoplayer2.upstream.Loader$LoadTask.run()
|- is defined in library method overridden by:
|  com.google.android.exoplayer2.upstream.Loader$LoadTask
|- is instantiated in:
|  void com.google.android.exoplayer2.source.ProgressiveMediaPeriod.startLoading()
|- is invoked from:
|  void com.google.android.exoplayer2.source.ProgressiveMediaPeriod.prepare(com.google.android.exoplayer2.source.MediaPeriod$Callback,long)
|- is overriding method:
|  void com.google.android.exoplayer2.source.MediaPeriod.prepare(com.google.android.exoplayer2.source.MediaPeriod$Callback,long)
|- is invoked from:
|  void com.google.android.exoplayer2.ExoPlayerImplInternal.doSomeWork()
|- is invoked from:
|  boolean com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(android.os.Message)
|- is defined in library method overridden by:
|  com.google.android.exoplayer2.ExoPlayerImplInternal
|- is referenced from:
|  void com.google.android.exoplayer2.SimpleExoPlayer.updatePlayWhenReady(boolean,int,int)

Since APK size impact is huge it would be nice to see if this can be fixed.

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions