11abddd9f6225298066094e20a6c29061b6af4590Nick Chalko/*
21abddd9f6225298066094e20a6c29061b6af4590Nick Chalko * Copyright (C) 2015 The Android Open Source Project
31abddd9f6225298066094e20a6c29061b6af4590Nick Chalko *
41abddd9f6225298066094e20a6c29061b6af4590Nick Chalko * Licensed under the Apache License, Version 2.0 (the "License");
51abddd9f6225298066094e20a6c29061b6af4590Nick Chalko * you may not use this file except in compliance with the License.
61abddd9f6225298066094e20a6c29061b6af4590Nick Chalko * You may obtain a copy of the License at
71abddd9f6225298066094e20a6c29061b6af4590Nick Chalko *
81abddd9f6225298066094e20a6c29061b6af4590Nick Chalko *      http://www.apache.org/licenses/LICENSE-2.0
91abddd9f6225298066094e20a6c29061b6af4590Nick Chalko *
101abddd9f6225298066094e20a6c29061b6af4590Nick Chalko * Unless required by applicable law or agreed to in writing, software
111abddd9f6225298066094e20a6c29061b6af4590Nick Chalko * distributed under the License is distributed on an "AS IS" BASIS,
121abddd9f6225298066094e20a6c29061b6af4590Nick Chalko * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
131abddd9f6225298066094e20a6c29061b6af4590Nick Chalko * See the License for the specific language governing permissions and
141abddd9f6225298066094e20a6c29061b6af4590Nick Chalko * limitations under the License.
151abddd9f6225298066094e20a6c29061b6af4590Nick Chalko */
161abddd9f6225298066094e20a6c29061b6af4590Nick Chalko
171abddd9f6225298066094e20a6c29061b6af4590Nick Chalkopackage com.android.usbtuner.exoplayer.ac3;
181abddd9f6225298066094e20a6c29061b6af4590Nick Chalko
191abddd9f6225298066094e20a6c29061b6af4590Nick Chalkoimport java.nio.ByteBuffer;
201abddd9f6225298066094e20a6c29061b6af4590Nick Chalko
211abddd9f6225298066094e20a6c29061b6af4590Nick Chalko/**
221abddd9f6225298066094e20a6c29061b6af4590Nick Chalko * Decoder for {@link Ac3TrackRenderer}.
231abddd9f6225298066094e20a6c29061b6af4590Nick Chalko */
241abddd9f6225298066094e20a6c29061b6af4590Nick Chalkopublic abstract class Ac3Decoder {
251abddd9f6225298066094e20a6c29061b6af4590Nick Chalko    /**
261abddd9f6225298066094e20a6c29061b6af4590Nick Chalko     * Interface definition for AC3 decoder.
271abddd9f6225298066094e20a6c29061b6af4590Nick Chalko     */
281abddd9f6225298066094e20a6c29061b6af4590Nick Chalko    public interface DecodeListener {
291abddd9f6225298066094e20a6c29061b6af4590Nick Chalko        void decodeDone(ByteBuffer resultBuffer, long presentationTimeUs);
301abddd9f6225298066094e20a6c29061b6af4590Nick Chalko    }
311abddd9f6225298066094e20a6c29061b6af4590Nick Chalko
321abddd9f6225298066094e20a6c29061b6af4590Nick Chalko    /**
331abddd9f6225298066094e20a6c29061b6af4590Nick Chalko     * Creates {@link AC3Decoder} instance that handles AC3 stream decoder.
341abddd9f6225298066094e20a6c29061b6af4590Nick Chalko     */
351abddd9f6225298066094e20a6c29061b6af4590Nick Chalko    public static Ac3Decoder createAc3Decoder(boolean isSoftware) {
361abddd9f6225298066094e20a6c29061b6af4590Nick Chalko        // TODO: Support framework/software-based AC3 decoder if available.
371abddd9f6225298066094e20a6c29061b6af4590Nick Chalko        return new Ac3PassthroughDecoder();
381abddd9f6225298066094e20a6c29061b6af4590Nick Chalko    }
391abddd9f6225298066094e20a6c29061b6af4590Nick Chalko
401abddd9f6225298066094e20a6c29061b6af4590Nick Chalko    public abstract void startDecoder(DecodeListener listener);
411abddd9f6225298066094e20a6c29061b6af4590Nick Chalko
421abddd9f6225298066094e20a6c29061b6af4590Nick Chalko    public abstract void decode(ByteBuffer inputBuffer, long presentationTimeUs);
431abddd9f6225298066094e20a6c29061b6af4590Nick Chalko}
44