1033ea548eec7ec220082ea6b199bf6e77f67a40dWonsik Kim/* 2033ea548eec7ec220082ea6b199bf6e77f67a40dWonsik Kim * Copyright (C) 2018 The Android Open Source Project 3033ea548eec7ec220082ea6b199bf6e77f67a40dWonsik Kim * 4033ea548eec7ec220082ea6b199bf6e77f67a40dWonsik Kim * Licensed under the Apache License, Version 2.0 (the "License"); 5033ea548eec7ec220082ea6b199bf6e77f67a40dWonsik Kim * you may not use this file except in compliance with the License. 6033ea548eec7ec220082ea6b199bf6e77f67a40dWonsik Kim * You may obtain a copy of the License at 7033ea548eec7ec220082ea6b199bf6e77f67a40dWonsik Kim * 8033ea548eec7ec220082ea6b199bf6e77f67a40dWonsik Kim * http://www.apache.org/licenses/LICENSE-2.0 9033ea548eec7ec220082ea6b199bf6e77f67a40dWonsik Kim * 10033ea548eec7ec220082ea6b199bf6e77f67a40dWonsik Kim * Unless required by applicable law or agreed to in writing, software 11033ea548eec7ec220082ea6b199bf6e77f67a40dWonsik Kim * distributed under the License is distributed on an "AS IS" BASIS, 12033ea548eec7ec220082ea6b199bf6e77f67a40dWonsik Kim * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13033ea548eec7ec220082ea6b199bf6e77f67a40dWonsik Kim * See the License for the specific language governing permissions and 14033ea548eec7ec220082ea6b199bf6e77f67a40dWonsik Kim * limitations under the License. 15033ea548eec7ec220082ea6b199bf6e77f67a40dWonsik Kim */ 16033ea548eec7ec220082ea6b199bf6e77f67a40dWonsik Kim 1772dc0b6eea5a305d58537dcd2ee28e23c72b6e44Lajos Molnar#ifndef ANDROID_C2_SOFT_AAC_ENC_H_ 1872dc0b6eea5a305d58537dcd2ee28e23c72b6e44Lajos Molnar#define ANDROID_C2_SOFT_AAC_ENC_H_ 19033ea548eec7ec220082ea6b199bf6e77f67a40dWonsik Kim 20033ea548eec7ec220082ea6b199bf6e77f67a40dWonsik Kim#include <SimpleC2Component.h> 21033ea548eec7ec220082ea6b199bf6e77f67a40dWonsik Kim 22033ea548eec7ec220082ea6b199bf6e77f67a40dWonsik Kim#include "aacenc_lib.h" 23033ea548eec7ec220082ea6b199bf6e77f67a40dWonsik Kim 24033ea548eec7ec220082ea6b199bf6e77f67a40dWonsik Kimnamespace android { 25033ea548eec7ec220082ea6b199bf6e77f67a40dWonsik Kim 26033ea548eec7ec220082ea6b199bf6e77f67a40dWonsik Kimclass C2SoftAacEnc : public SimpleC2Component { 27033ea548eec7ec220082ea6b199bf6e77f67a40dWonsik Kimpublic: 289fca24013957d2dfe99b4291f9f9297f720c7fa8Wonsik Kim class IntfImpl; 299fca24013957d2dfe99b4291f9f9297f720c7fa8Wonsik Kim 309fca24013957d2dfe99b4291f9f9297f720c7fa8Wonsik Kim C2SoftAacEnc(const char *name, c2_node_id_t id, const std::shared_ptr<IntfImpl> &intfImpl); 31033ea548eec7ec220082ea6b199bf6e77f67a40dWonsik Kim virtual ~C2SoftAacEnc(); 32033ea548eec7ec220082ea6b199bf6e77f67a40dWonsik Kim 33033ea548eec7ec220082ea6b199bf6e77f67a40dWonsik Kim // From SimpleC2Component 34033ea548eec7ec220082ea6b199bf6e77f67a40dWonsik Kim c2_status_t onInit() override; 35033ea548eec7ec220082ea6b199bf6e77f67a40dWonsik Kim c2_status_t onStop() override; 36033ea548eec7ec220082ea6b199bf6e77f67a40dWonsik Kim void onReset() override; 37033ea548eec7ec220082ea6b199bf6e77f67a40dWonsik Kim void onRelease() override; 38033ea548eec7ec220082ea6b199bf6e77f67a40dWonsik Kim c2_status_t onFlush_sm() override; 39033ea548eec7ec220082ea6b199bf6e77f67a40dWonsik Kim void process( 40033ea548eec7ec220082ea6b199bf6e77f67a40dWonsik Kim const std::unique_ptr<C2Work> &work, 41033ea548eec7ec220082ea6b199bf6e77f67a40dWonsik Kim const std::shared_ptr<C2BlockPool> &pool) override; 42033ea548eec7ec220082ea6b199bf6e77f67a40dWonsik Kim c2_status_t drain( 43033ea548eec7ec220082ea6b199bf6e77f67a40dWonsik Kim uint32_t drainMode, 44033ea548eec7ec220082ea6b199bf6e77f67a40dWonsik Kim const std::shared_ptr<C2BlockPool> &pool) override; 45033ea548eec7ec220082ea6b199bf6e77f67a40dWonsik Kim 46033ea548eec7ec220082ea6b199bf6e77f67a40dWonsik Kimprivate: 479fca24013957d2dfe99b4291f9f9297f720c7fa8Wonsik Kim std::shared_ptr<IntfImpl> mIntf; 489fca24013957d2dfe99b4291f9f9297f720c7fa8Wonsik Kim 49033ea548eec7ec220082ea6b199bf6e77f67a40dWonsik Kim HANDLE_AACENCODER mAACEncoder; 50033ea548eec7ec220082ea6b199bf6e77f67a40dWonsik Kim 51033ea548eec7ec220082ea6b199bf6e77f67a40dWonsik Kim int32_t mSBRMode; 52033ea548eec7ec220082ea6b199bf6e77f67a40dWonsik Kim int32_t mSBRRatio; 53033ea548eec7ec220082ea6b199bf6e77f67a40dWonsik Kim AUDIO_OBJECT_TYPE mAACProfile; 54033ea548eec7ec220082ea6b199bf6e77f67a40dWonsik Kim UINT mNumBytesPerInputFrame; 55033ea548eec7ec220082ea6b199bf6e77f67a40dWonsik Kim UINT mOutBufferSize; 56033ea548eec7ec220082ea6b199bf6e77f67a40dWonsik Kim 57033ea548eec7ec220082ea6b199bf6e77f67a40dWonsik Kim bool mSentCodecSpecificData; 58033ea548eec7ec220082ea6b199bf6e77f67a40dWonsik Kim size_t mInputSize; 59033ea548eec7ec220082ea6b199bf6e77f67a40dWonsik Kim c2_cntr64_t mInputTimeUs; 60033ea548eec7ec220082ea6b199bf6e77f67a40dWonsik Kim 61033ea548eec7ec220082ea6b199bf6e77f67a40dWonsik Kim bool mSignalledError; 62033ea548eec7ec220082ea6b199bf6e77f67a40dWonsik Kim 63033ea548eec7ec220082ea6b199bf6e77f67a40dWonsik Kim status_t initEncoder(); 64033ea548eec7ec220082ea6b199bf6e77f67a40dWonsik Kim 65033ea548eec7ec220082ea6b199bf6e77f67a40dWonsik Kim status_t setAudioParams(); 66033ea548eec7ec220082ea6b199bf6e77f67a40dWonsik Kim 67d087ee640c4664516a25cec687a76b31bb62b2e1Lajos Molnar C2_DO_NOT_COPY(C2SoftAacEnc); 68033ea548eec7ec220082ea6b199bf6e77f67a40dWonsik Kim}; 69033ea548eec7ec220082ea6b199bf6e77f67a40dWonsik Kim 70033ea548eec7ec220082ea6b199bf6e77f67a40dWonsik Kim} // namespace android 71033ea548eec7ec220082ea6b199bf6e77f67a40dWonsik Kim 7272dc0b6eea5a305d58537dcd2ee28e23c72b6e44Lajos Molnar#endif // ANDROID_C2_SOFT_AAC_ENC_H_ 73