package com.android.tv.tuner.exoplayer;
import android.content.Context;
import android.media.MediaCodec;
import android.os.Handler;
import android.util.Log;
import com.google.android.exoplayer.DecoderInfo;
import com.google.android.exoplayer.ExoPlaybackException;
import com.google.android.exoplayer.MediaCodecSelector;
import com.google.android.exoplayer.MediaCodecUtil;
import com.google.android.exoplayer.MediaCodecVideoTrackRenderer;
import com.google.android.exoplayer.MediaFormatHolder;
import com.google.android.exoplayer.MediaSoftwareCodecUtil;
import com.google.android.exoplayer.SampleSource;
import com.android.tv.common.feature.CommonFeatures;
import java.lang.reflect.Field;
/**
* MPEG-2 TS video track renderer
*/
public class MpegTsVideoTrackRenderer extends MediaCodecVideoTrackRenderer {
private static final String TAG = "MpegTsVideoTrackRender";
private static final int VIDEO_PLAYBACK_DEADLINE_IN_MS = 5000;
// If DROPPED_FRAMES_NOTIFICATION_THRESHOLD frames are consecutively dropped, it'll be notified.
private static final int DROPPED_FRAMES_NOTIFICATION_THRESHOLD = 10;
private static final int MIN_HD_HEIGHT = 720;
private static final String MIMETYPE_MPEG2 = "video/mpeg2";
private static Field sRenderedFirstFrameField;
private final boolean mIsSwCodecEnabled;
private boolean mCodecIsSwPreferred;
private boolean mSetRenderedFirstFrame;
static {
// Remove the reflection below once b/31223646 is resolved.
try {
sRenderedFirstFrameField = MediaCodecVideoTrackRenderer.class.getDeclaredField(