1/*
2 * Copyright (C) 2014 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 *      http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16#pragma once
17#include "aacdecoder_lib.h"
18
19typedef enum
20{
21    DRC_PRES_MODE_WRAP_DESIRED_TARGET         = 0x0000,
22    DRC_PRES_MODE_WRAP_DESIRED_ATT_FACTOR     = 0x0001,
23    DRC_PRES_MODE_WRAP_DESIRED_BOOST_FACTOR   = 0x0002,
24    DRC_PRES_MODE_WRAP_DESIRED_HEAVY          = 0x0003,
25    DRC_PRES_MODE_WRAP_ENCODER_TARGET         = 0x0004
26} DRC_PRES_MODE_WRAP_PARAM;
27
28
29class CDrcPresModeWrapper {
30public:
31    CDrcPresModeWrapper();
32    ~CDrcPresModeWrapper();
33    void setDecoderHandle(const HANDLE_AACDECODER handle);
34    void setParam(const DRC_PRES_MODE_WRAP_PARAM param, const int value);
35    void submitStreamData(CStreamInfo*);
36    void update();
37
38protected:
39    HANDLE_AACDECODER mHandleDecoder;
40    int mDesTarget;
41    int mDesAttFactor;
42    int mDesBoostFactor;
43    int mDesHeavy;
44
45    int mEncoderTarget;
46
47    int mLastTarget;
48    int mLastAttFactor;
49    int mLastBoostFactor;
50    int mLastHeavy;
51
52    SCHAR mStreamPRL;
53    SCHAR mStreamDRCPresMode;
54    INT mStreamNrAACChan;
55    INT mStreamNrOutChan;
56
57    bool mIsDownmix;
58    bool mIsMonoDownmix;
59    bool mIsStereoDownmix;
60
61    bool mDataUpdate;
62};
63