diff options
Diffstat (limited to 'src/com/android/tv/tuner/tvinput/TunerTvInputService.java')
-rw-r--r-- | src/com/android/tv/tuner/tvinput/TunerTvInputService.java | 30 |
1 files changed, 29 insertions, 1 deletions
diff --git a/src/com/android/tv/tuner/tvinput/TunerTvInputService.java b/src/com/android/tv/tuner/tvinput/TunerTvInputService.java index 6594e089..684ebdbd 100644 --- a/src/com/android/tv/tuner/tvinput/TunerTvInputService.java +++ b/src/com/android/tv/tuner/tvinput/TunerTvInputService.java @@ -28,6 +28,9 @@ import com.google.android.exoplayer.audio.AudioCapabilities; import com.google.android.exoplayer.audio.AudioCapabilitiesReceiver; import com.android.tv.TvApplication; import com.android.tv.common.feature.CommonFeatures; +import com.android.tv.tuner.exoplayer.buffer.BufferManager; +import com.android.tv.tuner.exoplayer.buffer.TrickplayStorageManager; +import com.android.tv.tuner.util.SystemPropertiesProxy; import java.util.Collections; import java.util.Set; @@ -42,6 +45,9 @@ public class TunerTvInputService extends TvInputService private static final String TAG = "TunerTvInputService"; private static final boolean DEBUG = false; + private static final String MAX_BUFFER_SIZE_KEY = "tv.tuner.buffersize_mbytes"; + private static final int MAX_BUFFER_SIZE_DEF = 2 * 1024; // 2GB + private static final int MIN_BUFFER_SIZE_DEF = 256; // 256MB private static final int DVR_STORAGE_CLEANUP_JOB_ID = 100; // WeakContainer for {@link TvInputSessionImpl} @@ -49,6 +55,7 @@ public class TunerTvInputService extends TvInputService private ChannelDataManager mChannelDataManager; private AudioCapabilitiesReceiver mAudioCapabilitiesReceiver; private AudioCapabilities mAudioCapabilities; + private BufferManager mBufferManager; @Override public void onCreate() { @@ -58,6 +65,7 @@ public class TunerTvInputService extends TvInputService mChannelDataManager = new ChannelDataManager(getApplicationContext()); mAudioCapabilitiesReceiver = new AudioCapabilitiesReceiver(getApplicationContext(), this); mAudioCapabilitiesReceiver.register(); + mBufferManager = createBufferManager(); if (CommonFeatures.DVR.isEnabled(this)) { JobScheduler jobScheduler = (JobScheduler) getSystemService(Context.JOB_SCHEDULER_SERVICE); @@ -71,6 +79,11 @@ public class TunerTvInputService extends TvInputService jobScheduler.schedule(job); } } + if (mBufferManager == null) { + Log.i(TAG, "Trickplay is disabled"); + } else { + Log.i(TAG, "Trickplay is enabled"); + } } @Override @@ -79,6 +92,9 @@ public class TunerTvInputService extends TvInputService super.onDestroy(); mChannelDataManager.release(); mAudioCapabilitiesReceiver.unregister(); + if (mBufferManager != null) { + mBufferManager.close(); + } } @Override @@ -90,7 +106,8 @@ public class TunerTvInputService extends TvInputService public Session onCreateSession(String inputId) { if (DEBUG) Log.d(TAG, "onCreateSession"); try { - final TunerSession session = new TunerSession(this, mChannelDataManager); + final TunerSession session = new TunerSession( + this, mChannelDataManager, mBufferManager); mTunerSessions.add(session); session.setAudioCapabilities(mAudioCapabilities); session.setOverlayViewEnabled(true); @@ -112,6 +129,17 @@ public class TunerTvInputService extends TvInputService } } + private BufferManager createBufferManager() { + int maxBufferSizeMb = + SystemPropertiesProxy.getInt(MAX_BUFFER_SIZE_KEY, MAX_BUFFER_SIZE_DEF); + if (maxBufferSizeMb >= MIN_BUFFER_SIZE_DEF) { + return new BufferManager( + new TrickplayStorageManager(getApplicationContext(), getCacheDir(), + 1024L * 1024 * maxBufferSizeMb)); + } + return null; + } + public static String getInputId(Context context) { return TvContract.buildInputId(new ComponentName(context, TunerTvInputService.class)); } |