videoeditorengine/mp3aacManipLib/AACGain/inc/tool.h
author Mikael Laine <mikael.laine@ixonos.com>
Fri, 29 Jan 2010 14:08:33 +0200
changeset 0 951a5db380a0
permissions -rw-r--r--
Committing the Video Editor package under the Eclipse Public License

/*
* Copyright (c) 2010 Ixonos Plc.
* All rights reserved.
* This component and the accompanying materials are made available
* under the terms of the "Eclipse Public License v1.0"
* which accompanies this distribution, and is available
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
*
* Initial Contributors:
* Nokia Corporation - Initial contribution
*
* Contributors:
* Ixonos Plc
*
* Description:
*
*/


/**************************************************************************
  tool.h - Interface to AAC core structures.
 
  Author(s): Juha Ojanpera
  Copyright (c) 2000-2004 by Nokia Research Center, Speech and Audio Systems.
  *************************************************************************/

#ifndef    AACTOOL_H_
#define AACTOOL_H_

/*-- Project Headers. --*/
#include "nok_bits.h"
#include "dec_huf.h"
#include "aacdef.h"

/*
   Purpose:     LTP parameters for MPEG AAC.
   Explanation: - */
class CLTP_Info : public CBase
{

public:

    static CLTP_Info* NewL();
    ~CLTP_Info();

    /*-- Max. sfb's used for this channel. --*/
    int16 max_sfb;

    /*-- Codebook index. --*/
    uint8 cbIdx;

    /*-- Boolean flag to indicate the presence of LTP. --*/
    int16 ltp_present;

    /*-- LTP lag. --*/
    int16* delay;

    /*-- Prediction status for each sfb. --*/
    uint32 sfbflags[2];

private:

    CLTP_Info();
    void ConstructL();

};

/*
   Purpose:     Structure interface for AAC decoding tools.
   Explanation: - */
class CToolInfo : public CBase
{
public:

    static CToolInfo* NewL();
    ~CToolInfo();
    CLTP_Info *ltp;
    int16* quant;
 
private:

    void ConstructL();
    CToolInfo();

};

/*
   Purpose:     Structure interface for coupling channel.
   Explanation: - */
class CCInfo : public CBase
{

public:
    static CCInfo* NewL();
    ~CCInfo();

    CToolInfo* tool;
    CWindowInfo* winInfo;

private:
    CCInfo();
    void ConstructL();
  
};

/*
   Purpose:     Information about the audio channel.
   Explanation: - */
class TEleList
{
public:
  int16 num_ele;
  int16 ele_is_cpe[1 << LEN_TAG];
  int16 ele_tag[1 << LEN_TAG];

};

/*
   Purpose:     Mixing information for downmixing multichannel input
                into two-channel output.
   Explanation: - */
class TMIXdown
{
public:
  int16 present;
  int16 ele_tag;
  int16 pseudo_enab;

};


/*
   Purpose:     Program configuration element.
   Explanation: - */
class TProgConfig
{
public:
  int16 tag;
  int16 profile;
  int16 sample_rate_idx;

  BOOL pce_present;

  TEleList front;
  TEleList side;
  TEleList back;
  TEleList lfe;
  TEleList data;
  TEleList coupling;

  TMIXdown mono_mix;
  TMIXdown stereo_mix;
  TMIXdown matrix_mix;

  int16 num_comment_bytes;

};

#endif    /*-- AACTOOL_H_ --*/