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