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