1 /* 2 * Copyright (C) 2018 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 package com.android.tv.tuner.modules; 17 18 import com.android.tv.tuner.cc.CaptionTrackRenderer; 19 import com.android.tv.tuner.cc.CaptionTrackRendererFactory; 20 import com.android.tv.tuner.cc.CaptionWindowLayout; 21 import com.android.tv.tuner.cc.CaptionWindowLayoutFactory; 22 import com.android.tv.tuner.exoplayer.ExoPlayerSampleExtractor; 23 import com.android.tv.tuner.exoplayer.ExoPlayerSampleExtractorFactory; 24 import com.android.tv.tuner.exoplayer.FileSampleExtractor; 25 import com.android.tv.tuner.exoplayer.FileSampleExtractorFactory; 26 import com.android.tv.tuner.exoplayer.MpegTsRendererBuilder; 27 import com.android.tv.tuner.exoplayer.MpegTsRendererBuilderFactory; 28 import com.android.tv.tuner.exoplayer.MpegTsSampleExtractor; 29 import com.android.tv.tuner.exoplayer.MpegTsSampleExtractorFactory; 30 import com.android.tv.tuner.exoplayer.buffer.RecordingSampleBuffer; 31 import com.android.tv.tuner.exoplayer.buffer.RecordingSampleBufferFactory; 32 import com.android.tv.tuner.exoplayer.buffer.SampleChunkIoHelper; 33 import com.android.tv.tuner.exoplayer.buffer.SampleChunkIoHelperFactory; 34 import com.android.tv.tuner.source.TunerSourceModule; 35 import com.android.tv.tuner.tvinput.TunerRecordingSessionFactoryImpl; 36 import com.android.tv.tuner.tvinput.TunerRecordingSessionWorker; 37 import com.android.tv.tuner.tvinput.TunerRecordingSessionWorkerFactory; 38 import com.android.tv.tuner.tvinput.TunerSessionExoV2Factory; 39 import com.android.tv.tuner.tvinput.TunerSessionOverlay; 40 import com.android.tv.tuner.tvinput.TunerSessionOverlayFactory; 41 import com.android.tv.tuner.tvinput.TunerSessionV1Factory; 42 import com.android.tv.tuner.tvinput.TunerSessionWorker; 43 import com.android.tv.tuner.tvinput.TunerSessionWorkerExoV2; 44 import com.android.tv.tuner.tvinput.TunerSessionWorkerExoV2Factory; 45 import com.android.tv.tuner.tvinput.TunerSessionWorkerFactory; 46 import com.android.tv.tuner.tvinput.factory.TunerRecordingSessionFactory; 47 import com.android.tv.tuner.tvinput.factory.TunerSessionFactory; 48 49 import dagger.Binds; 50 import dagger.Module; 51 import dagger.Provides; 52 53 import com.android.tv.common.flags.TunerFlags; 54 55 /** Dagger module for TV Tuners. */ 56 @Module(includes = {TunerSingletonsModule.class, TunerSourceModule.class}) 57 public abstract class TunerModule { 58 59 @Provides tunerSessionFactory( TunerFlags tunerFlags, TunerSessionV1Factory tunerSessionFactory, TunerSessionExoV2Factory tunerSessionExoV2Factory)60 static TunerSessionFactory tunerSessionFactory( 61 TunerFlags tunerFlags, 62 TunerSessionV1Factory tunerSessionFactory, 63 TunerSessionExoV2Factory tunerSessionExoV2Factory) { 64 return tunerFlags.useExoplayerV2() ? tunerSessionExoV2Factory : tunerSessionFactory; 65 } 66 67 @Binds tunerRecordingSessionWorkerFactory( TunerRecordingSessionWorkerFactory tunerRecordingSessionWorkerFactory)68 abstract TunerRecordingSessionWorker.Factory tunerRecordingSessionWorkerFactory( 69 TunerRecordingSessionWorkerFactory tunerRecordingSessionWorkerFactory); 70 71 @Binds tunerSessionWorkerFactory( TunerSessionWorkerFactory tunerSessionWorkerFactory)72 abstract TunerSessionWorker.Factory tunerSessionWorkerFactory( 73 TunerSessionWorkerFactory tunerSessionWorkerFactory); 74 75 @Binds tunerSessionOverlayFactory( TunerSessionOverlayFactory tunerSessionOverlayFactory)76 abstract TunerSessionOverlay.Factory tunerSessionOverlayFactory( 77 TunerSessionOverlayFactory tunerSessionOverlayFactory); 78 79 @Binds captionTrackRendererFactory( CaptionTrackRendererFactory captionTrackRendererFactory)80 abstract CaptionTrackRenderer.Factory captionTrackRendererFactory( 81 CaptionTrackRendererFactory captionTrackRendererFactory); 82 83 @Binds captionWindowLayoutFactory( CaptionWindowLayoutFactory captionWindowLayoutFactory)84 abstract CaptionWindowLayout.Factory captionWindowLayoutFactory( 85 CaptionWindowLayoutFactory captionWindowLayoutFactory); 86 87 @Binds tunerSessionWorkerExoV2Factory( TunerSessionWorkerExoV2Factory tunerSessionWorkerExoV2Factory)88 abstract TunerSessionWorkerExoV2.Factory tunerSessionWorkerExoV2Factory( 89 TunerSessionWorkerExoV2Factory tunerSessionWorkerExoV2Factory); 90 91 @Binds tunerRecordingSessionFactory( TunerRecordingSessionFactoryImpl impl)92 abstract TunerRecordingSessionFactory tunerRecordingSessionFactory( 93 TunerRecordingSessionFactoryImpl impl); 94 95 @Binds mpegTsRendererBuilderFactory( MpegTsRendererBuilderFactory mpegTsRendererBuilderFactory)96 abstract MpegTsRendererBuilder.Factory mpegTsRendererBuilderFactory( 97 MpegTsRendererBuilderFactory mpegTsRendererBuilderFactory); 98 99 @Binds mpegTsSampleExtractorFactory( MpegTsSampleExtractorFactory mpegTsSampleExtractorFactory)100 abstract MpegTsSampleExtractor.Factory mpegTsSampleExtractorFactory( 101 MpegTsSampleExtractorFactory mpegTsSampleExtractorFactory); 102 103 @Binds fileSampleExtractorFactory( FileSampleExtractorFactory fileSampleExtractorFactory)104 abstract FileSampleExtractor.Factory fileSampleExtractorFactory( 105 FileSampleExtractorFactory fileSampleExtractorFactory); 106 107 @Binds recordingSampleBufferFactory( RecordingSampleBufferFactory recordingSampleBufferFactory)108 abstract RecordingSampleBuffer.Factory recordingSampleBufferFactory( 109 RecordingSampleBufferFactory recordingSampleBufferFactory); 110 111 @Binds exoPlayerSampleExtractorFactory( ExoPlayerSampleExtractorFactory exoPlayerSampleExtractorFactory)112 abstract ExoPlayerSampleExtractor.Factory exoPlayerSampleExtractorFactory( 113 ExoPlayerSampleExtractorFactory exoPlayerSampleExtractorFactory); 114 115 @Binds sampleChunkIoHelperFactory( SampleChunkIoHelperFactory sampleChunkIoHelperFactory)116 abstract SampleChunkIoHelper.Factory sampleChunkIoHelperFactory( 117 SampleChunkIoHelperFactory sampleChunkIoHelperFactory); 118 } 119