17c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/*
27c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * Copyright (C) 2011 The Android Open Source Project
37c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi *
47c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * Licensed under the Apache License, Version 2.0 (the "License");
57c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * you may not use this file except in compliance with the License.
67c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * You may obtain a copy of the License at
77c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi *
87c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi *      http://www.apache.org/licenses/LICENSE-2.0
97c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi *
107c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * Unless required by applicable law or agreed to in writing, software
117c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * distributed under the License is distributed on an "AS IS" BASIS,
127c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
137c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * See the License for the specific language governing permissions and
147c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * limitations under the License.
157c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi */
167c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/**
177c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ******************************************************************************
187c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @file    M4ENCODER_AudioCommon.h
197c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @brief    VES audio encoders shell interface.
207c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @note    This file defines the types internally used by the VES to abstract audio encoders
217c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ******************************************************************************
227c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi*/
237c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#ifndef __M4ENCODER_AUDIOCOMMON_H__
247c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#define __M4ENCODER_AUDIOCOMMON_H__
257c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
267c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#ifdef __cplusplus
277c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargiextern "C" {
287c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#endif /* __cplusplus */
297c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
307c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#include "M4OSA_OptionID.h"     /* for M4OSA_OPTION_ID_CREATE() */
310a389ab70db304fb840e33f33781ecc0503eae3chongteng#include "M4OSA_CoreID.h"
327c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
337c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#define M4ENCODER_AUDIO_NB_CHANNELS_MAX 2
347c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* WARNING: this value must be equal to the number of samples grabbed */
357c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi//#define M4ENCODER_AUDIO_PCM_SAMPLE_NUMBER 960    /* imposed by the AAC encoder. */
367c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#define M4ENCODER_AUDIO_PCM_SAMPLE_NUMBER 1024    /* imposed by the AAC encoder. */
377c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
387c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
397c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/**
407c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ******************************************************************************
417c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * enumeration    M4ENCODER_Audio_OptionID
427c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @brief        This enum defines the core AAC shell encoder options
437c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ******************************************************************************
447c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi*/
457c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargitypedef enum
467c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi{
477c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi /* Maximum generated AU size */
480a389ab70db304fb840e33f33781ecc0503eae3chongteng    M4ENCODER_Audio_maxAUsize     = M4OSA_OPTION_ID_CREATE(M4_READ,M4ENCODER_AUDIO, 0x01)
497c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
507c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi} M4ENCODER_Audio_OptionID;
517c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
527c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
537c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi /**
547c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ******************************************************************************
557c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * enum        M4ENCODER_SamplingFrequency
567c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @brief    Thie enum defines the audio sampling frequency.
577c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ******************************************************************************
587c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi*/
597c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargitypedef enum
607c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi{
617c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4ENCODER_k8000Hz = 8000,
627c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4ENCODER_k11025Hz = 11025,
637c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4ENCODER_k12000Hz = 12000,
647c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4ENCODER_k16000Hz = 16000,
657c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4ENCODER_k22050Hz = 22050,
667c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4ENCODER_k24000Hz = 24000,
677c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4ENCODER_k32000Hz = 32000,
687c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4ENCODER_k44100Hz = 44100,
697c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4ENCODER_k48000Hz = 48000
707c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi} M4ENCODER_SamplingFrequency;
717c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
727c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
737c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/**
747c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ******************************************************************************
757c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * enum        M4ENCODER_AudioFormat
767c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @brief    This enum defines the audio compression formats.
777c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ******************************************************************************
787c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi*/
797c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargitypedef enum
807c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi{
817c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4ENCODER_kAMRNB = 0,
827c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4ENCODER_kAAC,
837c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4ENCODER_kAudioNULL,    /**< No compression */
847c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4ENCODER_kMP3,
857c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4ENCODER_kAudio_NB        /* number of encoders, keep it as last enum entry */
867c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
877c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi} M4ENCODER_AudioFormat;
887c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
897c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/**
907c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ******************************************************************************
917c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * enum        M4ENCODER_ChannelNumber
927c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @brief    Thie enum defines the number of audio channels.
937c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ******************************************************************************
947c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi*/
957c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargitypedef enum
967c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi{
977c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4ENCODER_kMono  = 0,
987c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4ENCODER_kStereo,
997c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4ENCODER_kStereoNoInterleave
1007c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi} M4ENCODER_ChannelNumber;
1017c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
1027c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/**
1037c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ******************************************************************************
1047c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * enum        M4ENCODER_AudioBitrate
1057c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @brief    Thie enum defines the avalaible bitrates.
1067c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ******************************************************************************
1077c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi*/
1087c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargitypedef enum
1097c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi{
1107c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4ENCODER_kAudio_4_75_KBPS    = 4750,
1117c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4ENCODER_kAudio_5_15_KBPS    = 5150,
1127c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4ENCODER_kAudio_5_9_KBPS    = 5900,
1137c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4ENCODER_kAudio_6_7_KBPS    = 6700,
1147c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4ENCODER_kAudio_7_4_KBPS    = 7400,
1157c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4ENCODER_kAudio_7_95_KBPS    = 7950,
1167c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4ENCODER_kAudio_8_KBPS        = 8000,
1177c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4ENCODER_kAudio_10_2_KBPS    = 10200,
1187c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4ENCODER_kAudio_12_2_KBPS    = 12200,
1197c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4ENCODER_kAudio_16_KBPS    = 16000,
1207c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4ENCODER_kAudio_24_KBPS    = 24000,
1217c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4ENCODER_kAudio_32_KBPS    = 32000,
1227c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4ENCODER_kAudio_40_KBPS    = 40000,
1237c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4ENCODER_kAudio_48_KBPS    = 48000,
1247c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4ENCODER_kAudio_56_KBPS    = 56000,
1257c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4ENCODER_kAudio_64_KBPS    = 64000,
1267c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4ENCODER_kAudio_80_KBPS    = 80000,
1277c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4ENCODER_kAudio_96_KBPS    = 96000,
1287c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4ENCODER_kAudio_112_KBPS    = 112000,
1297c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4ENCODER_kAudio_128_KBPS    = 128000,
1307c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4ENCODER_kAudio_144_KBPS    = 144000,
1317c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4ENCODER_kAudio_160_KBPS    = 160000,
1327c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4ENCODER_kAudio_192_KBPS    = 192000,
1337c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4ENCODER_kAudio_224_KBPS    = 224000,
1347c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4ENCODER_kAudio_256_KBPS    = 256000,
1357c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4ENCODER_kAudio_320_KBPS    = 320000
1367c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi} M4ENCODER_AudioBitrate;
1377c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
1387c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
1397c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/**
1407c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ******************************************************************************
1417c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * enum            M4ENCODER_AacRegulation
1427c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @brief        The current mode of the bitrate regulation.
1437c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ******************************************************************************
1447c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi*/
1457c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargitypedef enum
1467c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi{
1477c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4ENCODER_kAacRegulNone = 0,    /**< no bitrate regulation */
1487c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4ENCODER_kAacBitReservoir        /**< better quality, but more CPU consumed */
1497c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi} M4ENCODER_AacRegulation;
1507c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
1517c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/**
1527c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ******************************************************************************
1537c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * enum        M4ENCODER_AmrSID
1547c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @brief    This enum defines the SID of the AMR encoder.
1557c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ******************************************************************************
1567c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi*/
1577c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargitypedef enum
1587c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi{
1597c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4ENCODER_kAmrNoSID = 0     /**< no SID */
1607c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi} M4ENCODER_AmrSID;
1617c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
1627c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/**
1637c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ******************************************************************************
1647c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * struct    M4ENCODER_AacParams
1657c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @brief    This structure defines all the settings specific to the AAC encoder.
1667c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ******************************************************************************
1677c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi*/
1687c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargitypedef struct
1697c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi{
1707c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4ENCODER_AacRegulation    Regulation;
1717c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4OSA_Bool                bHighSpeed;
1727c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4OSA_Bool                bTNS;
1737c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4OSA_Bool                bPNS;
1747c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4OSA_Bool                bIS;
1757c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4OSA_Bool                bMS;
1767c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi} M4ENCODER_AacParams;
1777c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
1787c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/**
1797c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ******************************************************************************
1807c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * struct    M4ENCODER_AudioParams
1817c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @brief    This structure defines all the settings avalaible when encoding audio.
1827c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ******************************************************************************
1837c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi*/
1847c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargitypedef struct s_M4ENCODER_AudioParams
1857c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi{
1867c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4ENCODER_SamplingFrequency    Frequency;    /**< the sampling frequency */
1877c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4ENCODER_ChannelNumber        ChannelNum;    /**< the numbe of channels (mono, stereo, ..) */
1887c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4ENCODER_AudioBitrate        Bitrate;    /**<  bitrate, see enum  */
1897c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4ENCODER_AudioFormat        Format;        /**<  audio compression format, AMR, AAC ...  */
1907c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    union {
1917c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4ENCODER_AacParams        AacParam;
1927c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4ENCODER_AmrSID        AmrSID;
1937c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    } SpecifParam;                            /**< the audio encoder specific parameters */
1947c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi} M4ENCODER_AudioParams;
1957c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
1967c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/**
1977c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ******************************************************************************
1987c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * struct    M4ENCODER_AudioDecSpecificInfo
1997c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @brief    This structure describes the decoder specific info buffer.
2007c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ******************************************************************************
2017c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi*/
2027c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargitypedef struct
2037c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi{
2047c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4OSA_MemAddr8    pInfo;        /**< the buffer adress */
2057c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4OSA_UInt32    infoSize;    /**< the buffer size in bytes */
2067c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi} M4ENCODER_AudioDecSpecificInfo;
2077c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
2087c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/**
2097c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ******************************************************************************
2107c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * struct    M4ENCODER_AudioBuffer
2117c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @brief    This structure defines the data buffer.
2127c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ******************************************************************************
2137c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi*/
2147c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargitypedef struct
2157c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi{
2167c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /**< the table of buffers (unused buffers are set to NULL) */
2177c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4OSA_MemAddr8    pTableBuffer[M4ENCODER_AUDIO_NB_CHANNELS_MAX];
2187c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /**< the table of the size of corresponding buffer at same index */
2197c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4OSA_UInt32    pTableBufferSize[M4ENCODER_AUDIO_NB_CHANNELS_MAX];
2207c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi} M4ENCODER_AudioBuffer;
2217c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
2227c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargitypedef M4OSA_ERR (M4AE_init)        (M4OSA_Context* hContext, M4OSA_Void* pUserData);
2237c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargitypedef M4OSA_ERR (M4AE_cleanUp)    (M4OSA_Context pContext);
2247c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargitypedef M4OSA_ERR (M4AE_open)        (M4OSA_Context pContext, M4ENCODER_AudioParams *params,
2257c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                        M4ENCODER_AudioDecSpecificInfo *decSpecInfo,
2267c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                        M4OSA_Context grabberContext);
2277c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargitypedef M4OSA_ERR (M4AE_close)        (M4OSA_Context pContext);
2287c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargitypedef M4OSA_ERR (M4AE_step)         (M4OSA_Context pContext, M4ENCODER_AudioBuffer *inBuffer,
2297c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                        M4ENCODER_AudioBuffer *outBuffer);
2307c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargitypedef M4OSA_ERR (M4AE_getOption)    (M4OSA_Context pContext, M4OSA_OptionID    option,
2317c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                        M4OSA_DataOption *valuePtr);
2327c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/**
2337c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ******************************************************************************
2347c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * struct    M4ENCODER_AudioGlobalInterface
2357c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @brief    Defines all the functions required for an audio encoder shell.
2367c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ******************************************************************************
2377c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi*/
2387c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargitypedef struct _M4ENCODER_AudioGlobalInterface
2397c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi{
2407c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4AE_init*        pFctInit;
2417c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4AE_cleanUp*    pFctCleanUp;
2427c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4AE_open*        pFctOpen;
2437c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4AE_close*        pFctClose;
2447c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4AE_step*        pFctStep;
2457c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4AE_getOption*    pFctGetOption;
2467c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi} M4ENCODER_AudioGlobalInterface;
2477c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
2487c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
2497c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#ifdef __cplusplus
2507c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi}
2517c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#endif /* __cplusplus */
2527c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
2537c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#endif /*__M4ENCODER_AUDIOCOMMON_H__*/
2547c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
255