0
0
mirror of https://github.com/mediathekview/zapp.git synced 2024-09-19 20:02:17 +02:00

List stream qualities WIP

This commit is contained in:
Christine Emrich 2017-07-19 12:25:32 +02:00
parent 6ab6f817cb
commit 935b42c88f
3 changed files with 78 additions and 4 deletions

View File

@ -34,7 +34,6 @@ import com.google.android.exoplayer2.trackselection.AdaptiveTrackSelection;
import com.google.android.exoplayer2.trackselection.DefaultTrackSelector;
import com.google.android.exoplayer2.trackselection.TrackSelection;
import com.google.android.exoplayer2.trackselection.TrackSelectionArray;
import com.google.android.exoplayer2.trackselection.TrackSelector;
import com.google.android.exoplayer2.ui.SimpleExoPlayerView;
import com.google.android.exoplayer2.upstream.DataSource;
import com.google.android.exoplayer2.upstream.DefaultBandwidthMeter;
@ -52,7 +51,8 @@ import de.christinecoenen.code.zapp.model.json.SortableJsonChannelList;
import de.christinecoenen.code.zapp.utils.ColorHelper;
import de.christinecoenen.code.zapp.utils.MultiWindowHelper;
import de.christinecoenen.code.zapp.utils.ShortcutHelper;
import de.christinecoenen.code.zapp.utils.VideoErrorHandler;
import de.christinecoenen.code.zapp.utils.video.TrackHelper;
import de.christinecoenen.code.zapp.utils.video.VideoErrorHandler;
import de.christinecoenen.code.zapp.utils.view.ClickableViewPager;
import de.christinecoenen.code.zapp.utils.view.FullscreenActivity;
import de.christinecoenen.code.zapp.views.ProgramInfoViewBase;
@ -93,6 +93,8 @@ public class ChannelDetailActivity extends FullscreenActivity implements
private final Handler playHandler = new Handler();
private final VideoErrorHandler videoErrorHandler = new VideoErrorHandler(this);
private SimpleExoPlayer player;
private DefaultTrackSelector trackSelector;
private TrackHelper trackHelper;
private DataSource.Factory dataSourceFactory;
private ChannelDetailAdapter channelDetailAdapter;
private ChannelModel currentChannel;
@ -165,13 +167,14 @@ public class ChannelDetailActivity extends FullscreenActivity implements
// player
DefaultBandwidthMeter bandwidthMeter = new DefaultBandwidthMeter();
TrackSelection.Factory videoTrackSelectionFactory = new AdaptiveTrackSelection.Factory(bandwidthMeter);
TrackSelector trackSelector = new DefaultTrackSelector(videoTrackSelectionFactory);
trackSelector = new DefaultTrackSelector(videoTrackSelectionFactory);
dataSourceFactory = new DefaultDataSourceFactory(this,
Util.getUserAgent(this, getString(R.string.app_name)), bandwidthMeter);
player = ExoPlayerFactory.newSimpleInstance(this, trackSelector);
player.addListener(this);
player.addListener(videoErrorHandler);
videoView.setPlayer(player);
trackHelper = new TrackHelper(player, trackSelector);
// pager
channelDetailAdapter = new ChannelDetailAdapter(
@ -300,6 +303,8 @@ public class ChannelDetailActivity extends FullscreenActivity implements
Log.d(TAG, "media player rendering start");
progressView.setVisibility(View.GONE);
channelDetailAdapter.getCurrentFragment().onVideoStart();
trackHelper.printTrackInfo();
}
}

View File

@ -0,0 +1,69 @@
package de.christinecoenen.code.zapp.utils.video;
import android.util.Log;
import com.google.android.exoplayer2.C;
import com.google.android.exoplayer2.Format;
import com.google.android.exoplayer2.RendererCapabilities;
import com.google.android.exoplayer2.SimpleExoPlayer;
import com.google.android.exoplayer2.source.TrackGroup;
import com.google.android.exoplayer2.source.TrackGroupArray;
import com.google.android.exoplayer2.trackselection.DefaultTrackSelector;
import com.google.android.exoplayer2.trackselection.FixedTrackSelection;
import com.google.android.exoplayer2.trackselection.MappingTrackSelector;
public class TrackHelper {
private static final String TAG = TrackHelper.class.getSimpleName();
private final SimpleExoPlayer player;
private final DefaultTrackSelector trackSelector;
public TrackHelper(SimpleExoPlayer player, DefaultTrackSelector trackSelector) {
this.player = player;
this.trackSelector = trackSelector;
}
public void printTrackInfo() {
MappingTrackSelector.MappedTrackInfo mappedTrackInfo = trackSelector.getCurrentMappedTrackInfo();
if (mappedTrackInfo == null) {
Log.d(TAG, "no track info available");
return;
}
for (int rendererIndex = 0; rendererIndex < mappedTrackInfo.length; rendererIndex++) {
TrackGroupArray trackGroups = mappedTrackInfo.getTrackGroups(rendererIndex);
int trackType = player.getRendererType(rendererIndex);
// only use video renderers
if (trackType == C.TRACK_TYPE_VIDEO) {
Log.d(TAG, "renderer index: " + rendererIndex);
for (int groupIndex = 0; groupIndex < trackGroups.length; groupIndex++) {
TrackGroup trackGroup = trackGroups.get(groupIndex);
Log.d(TAG, "track group: " + groupIndex);
for (int trackIndex = 0; trackIndex < trackGroup.length; trackIndex++) {
Format format = trackGroup.getFormat(trackIndex);
int support = mappedTrackInfo.getTrackFormatSupport(rendererIndex, groupIndex, trackIndex);
if (support == RendererCapabilities.FORMAT_HANDLED) {
Log.d(TAG, Format.toLogString(format));
}
}
}
}
}
}
private void switchToFixedTrack(DefaultTrackSelector trackSelector, int rendererIndex, int groupIndex, int trackIndex) {
MappingTrackSelector.MappedTrackInfo mappedTrackInfo = trackSelector.getCurrentMappedTrackInfo();
TrackGroupArray trackGroups = mappedTrackInfo.getTrackGroups(rendererIndex);
MappingTrackSelector.SelectionOverride override = new MappingTrackSelector.SelectionOverride(new FixedTrackSelection.Factory(), groupIndex, trackIndex);
trackSelector.setSelectionOverride(rendererIndex, trackGroups, override);
}
}

View File

@ -1,4 +1,4 @@
package de.christinecoenen.code.zapp.utils;
package de.christinecoenen.code.zapp.utils.video;
import android.util.Log;