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