/*
* Copyright (C) 2011 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/**
*************************************************************************
* @file M4_Common.h
* @brief Common data structure between shells
* @note
*************************************************************************
*/
#ifndef __M4_COMMON_H__
#define __M4_COMMON_H__
#include "M4OSA_Types.h"
/**
************************************************************************
* structure _parameterSet
* @brief This structure defines the structure of parameters for the avc
* decoder specific info
* @note
************************************************************************
*/
typedef struct _parameterSet
{
M4OSA_UInt16 m_length; /* Number of items*/
M4OSA_UInt8* m_pParameterSetUnit; /* Array of items*/
} ParameterSet ;
/**
************************************************************************
* structure _avcSpecificInfo
* @brief This structure defines the structure of specific info for the avc decoder
* @note
************************************************************************
*/
typedef struct _avcSpecificInfo
{
M4OSA_UInt8 m_nalUnitLength; /* length in bytes of the NALUnitLength
field in a AVC sample */
M4OSA_UInt8 m_numOfSequenceParameterSets; /* Number of sequence parameter sets*/
M4OSA_UInt8 m_numOfPictureParameterSets; /* Number of picture parameter sets*/
ParameterSet *m_pSequenceParameterSet; /* Sequence parameter sets array*/
ParameterSet *m_pPictureParameterSet; /* Picture parameter sets array*/
} AvcSpecificInfo ;
/**
************************************************************************
* structure M4_SynthesisAudioInfo
* @brief This structure contains specific pointers used for synthesis audio format
************************************************************************
*/
typedef struct _synthesisAudioInfo
{
M4OSA_Void* m_pInputBuf;
M4OSA_Void* m_pInputInfo;
M4OSA_UInt16 m_uiNbSubFramePerStep;
M4OSA_UInt32 m_uiUsedBytes;
} M4_SynthesisAudioInfo;
/*
************************************************************************
* enum M4_AACDownsamplingMode
* @brief This enum states modes for Down sampling
************************************************************************
*/
typedef enum
{
AAC_kDS_OFF = 0, /**< No Down sampling */
AAC_kDS_BY_2 = 1, /**< Down sampling by 2
Profile = AAC :
output sampling rate = aac_samp_freq/2
Profile = HE_AAC and input is AAC:
Output sampling rate = aac_samp_freq.(No downsamping).
Profile = HE_AAC and input is HE_AAC:
Output sampling rate = aac_samp_freq (Downsampling
occurs in SBR tool).
case profile = HE_AAC_v2 :
Not Supported */
AAC_kDS_BY_3 = 2, /**< Down sampling by 3 - only for AAC profile */
AAC_kDS_BY_4 = 3, /**< Down sampling by 4 - only for AAC profile */
AAC_kDS_BY_8 = 4 /**< Down sampling by 8 - only for AAC profile */
} M4_AACDownsamplingMode;
/*
************************************************************************
* enum M4_AACOutputMode
* @brief This enum defines the output mode
************************************************************************
*/
typedef enum
{
AAC_kMono = 0, /**< Output is Mono */
AAC_kStereo = 1 /**< Output is Stereo */
} M4_AACOutputMode;
/*
************************************************************************
* enum M4_AACDecProfile
* @brief This enum defines the AAC decoder profile
************************************************************************
*/
typedef enum
{
AAC_kAAC = 0, /**< AAC profile (only AAC LC object are supported) */
AAC_kHE_AAC = 1, /**< HE AAC or AAC+ profile (SBR in LP Mode) */
AAC_kHE_AAC_v2 = 2 /**< HE AAC v2 or Enhanced AAC+ profile (SBR Tool in HQ Mode) */
} M4_AACDecProfile;
/**
************************************************************************
* structure M4_AacDecoderConfig
* @brief This structure defines specific settings according to
* the user requirements
************************************************************************
*/
typedef struct
{
M4_AACDecProfile m_AACDecoderProfile;
M4_AACDownsamplingMode m_DownSamplingMode;
M4_AACOutputMode m_OutputMode;
} M4_AacDecoderConfig;
/**
************************************************************************
* structure M4READER_AudioSbrUserdata
* @brief This structure defines the user's data needed to decode the
* AACplus stream
* @note The field m_pFirstAU is used in case of local files and
* the field m_bIsSbrEnabled is used in streaming case.
************************************************************************
*/
typedef struct
{
M4OSA_Void* m_pFirstAU; /**< The first AU from where SBR data are
extracted (local file case)*/
M4OSA_Bool m_bIsSbrEnabled; /**< A boolean that indicates if the stream is
AACplus (streaming case)*/
M4_AacDecoderConfig* m_pAacDecoderUserConfig;/**< Decoder specific user setting */
} M4READER_AudioSbrUserdata;
#endif /* __M4_COMMON_H__*/