void loadVideo(PlayerSurfaceHolder playerSurfaceHolder, DrmSessionCreator drmSessionCreator, Uri uri, Options options, ExoPlayerForwarder forwarder, MediaCodecSelector mediaCodecSelector) { this.options = options; DefaultBandwidthMeter bandwidthMeter = bandwidthMeterCreator.create(options.maxInitialBitrate()); compositeTrackSelector = trackSelectorCreator.create(options, bandwidthMeter); exoPlayer = exoPlayerCreator.create( drmSessionCreator, forwarder.drmSessionEventListener(), mediaCodecSelector, compositeTrackSelector.trackSelector() ); rendererTypeRequester = rendererTypeRequesterCreator.createfrom(exoPlayer); exoPlayer.addListener(forwarder.exoPlayerEventListener()); exoPlayer.addAnalyticsListener(forwarder.analyticsListener()); exoPlayer.addVideoListener(forwarder.videoListener()); setMovieAudioAttributes(exoPlayer); MediaSource mediaSource = mediaSourceFactory.create( options, uri, forwarder.mediaSourceEventListener(), bandwidthMeter ); attachToSurface(playerSurfaceHolder); exoPlayer.prepare(mediaSource, RESET_POSITION, DO_NOT_RESET_STATE); }