16ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko/* 26ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko * Copyright (C) 2017 The Android Open Source Project 36ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko * 46ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko * Licensed under the Apache License, Version 2.0 (the "License"); 56ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko * you may not use this file except in compliance with the License. 66ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko * You may obtain a copy of the License at 76ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko * 86ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko * http://www.apache.org/licenses/LICENSE-2.0 96ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko * 106ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko * Unless required by applicable law or agreed to in writing, software 116ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko * distributed under the License is distributed on an "AS IS" BASIS, 126ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 136ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko * See the License for the specific language governing permissions and 146ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko * limitations under the License. 156ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko */ 166ebde20b03db4c0d57f67acaac11832b610b966bNick Chalkopackage com.android.tv.tuner.exoplayer; 176ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko 186ebde20b03db4c0d57f67acaac11832b610b966bNick Chalkoimport com.google.android.exoplayer2.extractor.DefaultExtractorsFactory; 196ebde20b03db4c0d57f67acaac11832b610b966bNick Chalkoimport com.google.android.exoplayer2.extractor.Extractor; 206ebde20b03db4c0d57f67acaac11832b610b966bNick Chalkoimport com.google.android.exoplayer2.extractor.ExtractorsFactory; 216ebde20b03db4c0d57f67acaac11832b610b966bNick Chalkoimport com.google.android.exoplayer2.extractor.TimestampAdjuster; 226ebde20b03db4c0d57f67acaac11832b610b966bNick Chalkoimport com.google.android.exoplayer2.extractor.ts.DefaultTsPayloadReaderFactory; 236ebde20b03db4c0d57f67acaac11832b610b966bNick Chalkoimport com.google.android.exoplayer2.extractor.ts.TsExtractor; 246ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko 256ebde20b03db4c0d57f67acaac11832b610b966bNick Chalkoimport java.util.ArrayList; 266ebde20b03db4c0d57f67acaac11832b610b966bNick Chalkoimport java.util.List; 276ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko 286ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko/** 296ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko * Extractor factory, mainly aim at create TsExtractor with FLAG_ALLOW_NON_IDR_KEYFRAMES flags for 306ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko * H.264 stream 316ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko */ 326ebde20b03db4c0d57f67acaac11832b610b966bNick Chalkopublic final class ExoPlayerExtractorsFactory implements ExtractorsFactory { 336ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko @Override 346ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko public Extractor[] createExtractors() { 356ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko // Only create TsExtractor since we only target MPEG2TS stream. 366ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko Extractor[] extractors = { 376ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko new TsExtractor(new TimestampAdjuster(0), new DefaultTsPayloadReaderFactory( 386ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko DefaultTsPayloadReaderFactory.FLAG_ALLOW_NON_IDR_KEYFRAMES), false) }; 396ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko return extractors; 406ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko } 416ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko} 42