123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978 |
- /************************* Fast MPEG AAC Audio Encoder **********************
- (C) Copyright Fraunhofer IIS (2004-2010)
- All Rights Reserved
- $Id: mp4FastAAClib.h,v 1.8 2013/10/29 00:56:15 dromagod Exp $
- Initial author: M. Schug / A. Groeschel
- contents/description: Fast MPEG AAC Encoder Interface Library Functions
- This software and/or program is protected by copyright law and international
- treaties. Any reproduction or distribution of this software and/or program,
- or any portion of it, may result in severe civil and criminal penalties, and
- will be prosecuted to the maximum extent possible under law.
- ******************************************************************************/
- #ifndef _mp4FastAAClib_h_
- #define _mp4FastAAClib_h_
- #ifdef __cplusplus
- extern "C"
- {
- #endif
- /* ------------------------ structure alignment ---------------------------*/
- #if defined(WIN32) || defined(WIN64)
- #pragma pack(push, 1)
- #endif
- /*-------------------------- defines --------------------------------------*/
- /*
- * calling convention
- */
- #ifndef MPEG4ENCAPI
- #if defined(WIN32) || defined(WIN64)
- #define MPEG4ENCAPI __stdcall
- #else
- #define MPEG4ENCAPI
- #endif
- #endif
- /*-------------------- enum definitions -----------------------------------*/
- typedef enum
- {
- AUD_OBJ_TYP_LC = 2, /* AAC LC */
- AUD_OBJ_TYP_LTP = 4, /* AAC LTP */
- AUD_OBJ_TYP_HEAAC = 5, /* AAC LC + SBR */
- AUD_OBJ_TYP_ER_LC = 17, /* ER AAC LC */
- AUD_OBJ_TYP_ER_LTP = 19, /* ER AAC LTP */
- AUD_OBJ_TYP_ER_SCAL = 20, /* ER AAC LC scalable */
- AUD_OBJ_TYP_PS = 29, /* AAC LC + SBR + PS */
- AUD_OBJ_TYP_MP2_LC = 129, /* virtual AOT MP2 Low Complexity Profile */
- AUD_OBJ_TYP_MP2_SBR = 132, /* virtual AOT MP2 Low Complexity Profile with SBR */
- AUD_OBJ_TYP_SBR_DS = 133, /* virtual AOT for downsampled SBR */
- AUD_OBJ_TYP_ER_SCAL_SBR = 148, /* ER AAC LC scalable + SBR */
- AUD_OBJ_TYP_ER_SCAL_SBR_PS = 157, /* ER AAC LC scalable + SBR + PS */
- AUD_OBJ_TYP_MPS = 30
- } AUD_OBJ_TYP;
- typedef enum {
- MP4_QUAL_FAST=0,
- MP4_QUAL_MEDIUM,
- MP4_QUAL_HIGH,
- MP4_QUAL_HIGHEST /* Always resample to preferred sample rate */
- } MPEG4ENC_QUALITY;
- typedef enum {
- MP4_TT_RAW = 0,
- MP4_TT_ADIF = 1,
- MP4_TT_ADTS = 2,
- MP4_TT_ADTSCRC = 3,
- MP4_TT_LOAS = 4,
- MP4_TT_LOAS_NOSMC = 5,
- MP4_TT_LATM = 6,
- MP4_TT_LATM_NOSMC = 7,
- /* MP4_TT_LOAS_CRC = 8, */
- /* MP4_TT_LATM_CRC = 9, */
- ___mp4_tt_dummy
- } MPEG4ENC_TRANSPORT_TYPE;
- typedef enum {
- /* These are the standard MPEG Channel mappings */
- MP4_CH_MODE_INVALID = 0,
- MP4_CH_MODE_MONO, /* 1 channel mono */
- MP4_CH_MODE_STEREO, /* 2 channel stereo */
- MP4_CH_MODE_3, /* 3 channel audio ( center + left/right front speaker ) */
- MP4_CH_MODE_4, /* 4 channel audio ( center + left/right front + rear surround speaker ) */
- MP4_CH_MODE_5, /* 5 channel audio ( center + left/right front + left/right surround speaker ) */
- MP4_CH_MODE_5_1, /* 5.1 channel audio ( center + left/right front + left/right surround speaker + LFE ) */
- MP4_CH_MODE_7_1, /* 7.1 channel audio ( center + left/right front
- + left/right outside front + left/right surround speaker + LFE ) */
- /* Channel mappings 8 to 15 are reserved */
- MP4_CH_MODE_6_1 = 11, /* 6.1 channel audio ( center + front left/right + surround left/right + rear surround center + LFE ) */
- MP4_CH_MODE_7_1_REAR_SURROUND = 12, /* 7.1 channel audio ( center + front left/right + surround left/right + rear surround left/right + LFE ) */
- MP4_CH_MODE_7_1_TOP_FRONT = 14, /* 7.1 channel audio ( center + front left/right + surround left/right + LFE + + TOP front left/right ) */
- /* Some non standard channel mappings */
- MP4_CH_MODE_DUAL_MONO = 16, /* 2 independent channels */
- MP4_CH_MODE_4TIMES1, /* 4 independent channels */
- MP4_CH_MODE_6TIMES1, /* 6 independent channels */
- MP4_CH_MODE_8TIMES1, /* 8 independent channels */
- MP4_CH_MODE_12TIMES1, /* 12 independent channels */
- MP4_CH_MODE_16TIMES1,
- MP4_CH_MODE_2TIMES2, /* 2 stereo channel pairs */
- MP4_CH_MODE_3TIMES2, /* 3 stereo channel pairs */
- MP4_CH_MODE_4TIMES2, /* 4 stereo channel pairs */
- MP4_CH_MODE_6TIMES2, /* 6 stereo channel pairs */
- MP4_CH_MODE_7_1_SIDE_CHANNEL = 32, /* 7.1 channel audio ( center + left/right front
- + left/right side channels + left/right surround speakers + LFE ) */
- MP4_CH_MODE_7_1_FRONT_CENTER, /* 7.1 channel audio ( center + left/right front
- + left/right frontal center speakers + left/right surround speakers + LFE ) */
- /* Channel mapping for parametric stereo
- (only works with AUD_OBJ_TYP_HEAAC, AUD_OBJ_TYP_PS) */
- MP4_CH_MODE_PARAMETRIC_STEREO = 64, /* 2 channel stereo input, transmit 1 channel mono + SBR + PS */
- MP4_CH_MODE_MPEGS_5x5 = 128, /* 6 channel input, transmit 1/2 channel(s) (+ SBR) + MPEGS Payload */
- #ifdef SUPPORT_UPMIX
- MP4_CH_MODE_MPEGS_SXPRO_UPMIX, /* 2 channel input, sxPro Upmix, transmit 2 channel(s) (+ SBR) + MPEGS Payload */
- #endif
- #ifdef SUPPORT_MPS_7_X_7
- MP4_CH_MODE_MPEGS_7x7_REAR_SURROUND, /* 8 channel input (5.1 + left/right side speakers), transmit 2 channel(s) (+ SBR) + MPEGS Payload */
- /* 7.1 front center channel mapping is not yet supported! */
- MP4_CH_MODE_MPEGS_7x7_FRONT_CENTER, /* 8 channel input (5.1 + left/right frontal center speakers), transmit 2 channel(s) (+ SBR) + MPEGS Payload */
- #ifdef SUPPORT_MPS_7_5_7
- MP4_CH_MODE_MPEGS_757_FRONT_CENTER, /* 8 channel input (5.1 + left/right frontal center speakers), transmit 5 channel(s) (+ SBR) + MPEGS Payload */
- MP4_CH_MODE_MPEGS_757_REAR_SURROUND, /* 8 channel input (5.1 + left/right side speakers), transmit 5 channel(s) (+ SBR) + MPEGS Payload */
- #endif /* SUPPORT_MPS_7_5_7 */
- #endif /* SUPPORT_MPS_7_X_7 */
- /* The following channel mappings are not yet supported! */
- MP4_CH_MODE_MPEGS_5x5_BLIND,
- MP4_CH_MODE_MPEGS_ARBITRARY_DOWNMIX_MONO, /* 7 channel input, transmit 1 channel (+ SBR) + MPEGS Payload */
- MP4_CH_MODE_MPEGS_ARBITRARY_DOWNMIX_STEREO /* 8 channel input, transmit 2 channel(s) (+ SBR) + MPEGS Payload */
- } MPEG4ENC_CH_MODE;
- typedef enum {
- MP4_MPEGS_DOWNMIX_DEFAULT = 0,
- /* The following config (FORCE_STEREO) is not yet supported! */
- MP4_MPEGS_DOWNMIX_FORCE_STEREO,
- MP4_MPEGS_DOWNMIX_MATRIX_COMPAT,
- /* The following configs are not yet supported! */
- MP4_MPEGS_DOWNMIX_ARBITRARY_MONO,
- MP4_MPEGS_DOWNMIX_ARBITRARY_STEREO
- #ifdef SUPPORT_MPS_7_5_7
- , MP4_MPEGS_DOWNMIX_51
- #endif /* SUPPORT_MPS_7_5_7 */
- } MPEG4ENC_MPEGS_DOWNMIX_CONFIG;
- typedef enum {
- MPEG4ENC_NO_ERROR = 0,
- MPEG4ENC_UNKNOWN_ERROR,
- MPEG4ENC_PARAM_ERROR,
- MPEG4ENC_NOTIMPLEMENTED_ERROR,
- MPEG4ENC_MEMORY_ERROR,
- MPEG4ENC_INIT_ERROR,
- MPEG4ENC_FATAL_ERROR,
- MPEG4ENC_STACK_ALIGNMENT_ERROR,
- MPEG4ENC_METADATA_ERROR,
- MPEG4ENC_AOT_NOT_SUPPORTED = 64,
- MPEG4ENC_CHMODE_NOT_SUPPORTED,
- MPEG4ENC_BRMODE_NOT_SUPPORTED,
- MPEG4ENC_WARNING_MIN = 128,
- MPEG4ENC_WARNING_STACK_ALIGNMENT = MPEG4ENC_WARNING_MIN,
- MPEG4ENC_WARNING_METADATA,
- MPEG4ENC_WARNING_NOSYNC_TRIGGERED
- } MPEG4ENC_ERROR;
- typedef enum {
- MP4_SBRSIG_IMPLICIT = 0, /* implicit signaling (signaling 1) */
- MP4_SBRSIG_EXPL_BC = 1, /* explicit backward compatible signaling (signaling 2.B.) */
- MP4_SBRSIG_EXPL_HIER = 2 /* explicit hierarchical signaling (signaling 2.A.) */
- } MPEG4ENC_SIGNALING_MODE;
- typedef enum {
- MP4_MPEGS_PAYLOAD_EMBED = 0, /* in case of MPEG-4 transportation, embed payload into AAC payload */
- MP4_MPEGS_NO_PAYLOAD_EMBED = 1, /* in case of MPEG-4 transportation, do *not* embed payload into AAC payload, but transport payload in extra stream */
- MP4_MPEGS_PAYLOAD_EMBED_ASCEXT = 2 /* M16117 */
- } MPEG4ENC_MPEGS_PAYLOAD_MODE;
- typedef enum {
- MP4_BR_MODE_CBR = 0,
- MP4_BR_MODE_VBR_1 = 1,
- MP4_BR_MODE_VBR_2 = 2,
- MP4_BR_MODE_VBR_3 = 3,
- MP4_BR_MODE_VBR_4 = 4,
- MP4_BR_MODE_VBR_5 = 5,
- MP4_BR_MODE_VBR_6 = 6,
- MP4_BR_MODE_SFR = 7, /* Superframing */
- MP4_BR_MODE_DABPLUS = 8, /* Superframing + DAB+ constraints */
- MP4_BR_MODE_DRMPLUS = 9, /* Superframing + DRM+ constraints */
- MP4_BR_MODE_DMB = 10
- } MPEG4ENC_BITRATE_MODE;
- typedef enum{
- MP4_GRANULE_960 = 960,
- MP4_GRANULE_1024 = 1024
- } MPEG4ENC_GRANULE_LEN;
- typedef enum {
- MP4_METADATA_NONE = 0, /* do not embed any metadata */
- MP4_METADATA_MPEG, /* embed MPEG defined metadata only */
- MP4_METADATA_MPEG_ETSI /* embed all metadata */
- } MPEG4ENC_METADATA_MODE;
- typedef enum {
- MP4_METADATA_DRC_NONE = 0,
- MP4_METADATA_DRC_FILMSTANDARD,
- MP4_METADATA_DRC_FILMLIGHT,
- MP4_METADATA_DRC_MUSICSTANDARD,
- MP4_METADATA_DRC_MUSICLIGHT,
- MP4_METADATA_DRC_SPEECH,
- #ifdef SUPPORT_METADATA_DRC_MOBILE
- MP4_METADATA_DRC_MOBILE,
- #endif
- MP4_METADATA_DRC_EMBED_EXTERN = -1,
- MP4_METADATA_DRC_NOT_PRESENT = -2
- } MPEG4ENC_METADATA_DRC_PROFILE;
- typedef enum {
- MPEG4ENC_METADATA_DMX_GAIN_0_dB = 0,
- MPEG4ENC_METADATA_DMX_GAIN_1_5_dB = 1,
- MPEG4ENC_METADATA_DMX_GAIN_3_dB = 2,
- MPEG4ENC_METADATA_DMX_GAIN_4_5_dB = 3,
- MPEG4ENC_METADATA_DMX_GAIN_6_dB = 4,
- MPEG4ENC_METADATA_DMX_GAIN_7_5_dB = 5,
- MPEG4ENC_METADATA_DMX_GAIN_9_dB = 6,
- MPEG4ENC_METADATA_DMX_GAIN_INF = 7,
- } MPEG4ENC_METADATA_DMX_GAIN;
- typedef enum {
- MP4_METADATA_DSUR_NOT_INDICATED = 0, /* Dolby Surround mode not indicated */
- MP4_METADATA_DSUR_NOT_USED = 1, /* 2-ch audio part is not Dolby surround encoded */
- MP4_METADATA_DSUR_IS_USED = 2 /* 2-ch audio part is Dolby surround encoded */
- } MPEG4ENC_METADATA_DSUR_IND;
- typedef enum { /* see ETSI TS 101 154 V1.11.1, section C.5.2.2.3 and C.5.3 */
- MP4_METADATA_DRCPRESENTATION_NOT_INDICATED = 0,
- MP4_METADATA_DRCPRESENTATION_MODE_1 = 1,
- MP4_METADATA_DRCPRESENTATION_MODE_2 = 2
- } MPEG4ENC_METADATA_DRCPRESENTATION;
- typedef enum {
- MP4_MAX_ASC_SIZE = 64,
- MP4_MAX_SMC_SIZE = 256,
- MAX_DRC_BANDS = (1<<4),
- MP4_MAX_NUM_STREAMS = 2
- } MPEG4ENC_DEFINES;
- typedef enum {
- MPEG4ENC_SYNCFRAME_STARTUP = 0,
- MPEG4ENC_SYNCFRAME_SWITCH,
- MPEG4ENC_SYNCFRAME_DASH
- } MPEG4ENC_SYNCFRAME_TYPES;
- typedef enum {
- MP4_MPSDMXGAIN_INVALID = -1,
- MP4_MPSDMXGAIN_0_dB = 0,
- MP4_MPSDMXGAIN_1_5_dB = 1,
- MP4_MPSDMXGAIN_3_dB = 2,
- MP4_MPSDMXGAIN_4_5_dB = 3,
- MP4_MPSDMXGAIN_6_dB = 4,
- MP4_MPSDMXGAIN_7_5_dB = 5,
- MP4_MPSDMXGAIN_9_dB = 6,
- MP4_MPSDMXGAIN_12_dB = 7
- } MPEG4ENC_MPS_DMX_GAIN;
- #ifdef SUPPORT_UPMIX
- typedef enum {
- MP4_SXPRO_DEFAULT = 0,
- MP4_SXPRO_DRY,
- MP4_SXPRO_VIBRANT
- } MP4_SXPRO_UPMIX_WORKMODE;
- typedef enum {
- MP4_SXPRO_LFE_OFF = 0,
- MP4_SXPRO_LFE_ON
- } MP4_SXPRO_UPMIX_LFE;
- #endif
- /*-------------------- structure definitions ------------------------------*/
- typedef struct {
- AUD_OBJ_TYP aot;
- int nBitRate;
- MPEG4ENC_BITRATE_MODE bitrateMode;
- MPEG4ENC_QUALITY quality;
- MPEG4ENC_CH_MODE chMode;
- int nSampleRateIn;
- MPEG4ENC_TRANSPORT_TYPE transportFormat;
- MPEG4ENC_SIGNALING_MODE sbrSignaling;
- MPEG4ENC_GRANULE_LEN nGranuleLength;
- MPEG4ENC_METADATA_MODE metadataMode;
- } MPEG4ENC_SETUP;
- typedef enum{
- MP4_THREADING_MODE_SINGLE = 1,
- MP4_THREADING_MODE_MULTIPLE_BLOCKING,
- MP4_THREADING_MODE_MULTIPLE_NOBLOCKING
- } MPEG4ENC_THREADING_MODE;
- typedef MPEG4ENC_SETUP *HANDLE_MPEG4ENC_SETUP;
- struct MPEG4ENC_ENCODER;
- typedef struct MPEG4ENC_ENCODER * HANDLE_MPEG4ENC_ENCODER;
- typedef struct
- {
- int nOutputStreams; /* number of output streams */
- int nAccessUnitsPerStream[MP4_MAX_NUM_STREAMS]; /* number of AUs in bitstream buffer */
- int *pnAccessUnitOffset[MP4_MAX_NUM_STREAMS]; /* offset of AUs per stream, i.e. pnAccessUnitOffset[stream][numberAuPerStream] */
- int *pByteCnt[MP4_MAX_NUM_STREAMS]; /* lenght of each single AU in bitstream buffer */
- int *pIsSync[MP4_MAX_NUM_STREAMS]; /* flag, signaling if AU is self contained i.e. does not contain backward dependencies */
- } MPEG4ENC_AUINFO;
- typedef struct {
- int nAscSizeBits;
- unsigned char ascBuffer[MP4_MAX_ASC_SIZE];
- } MPEG4ENC_ASCBUF;
- typedef struct {
- int nSmcSizeBits;
- unsigned char smcBuffer[MP4_MAX_ASC_SIZE];
- } MPEG4ENC_SMCBUF;
- typedef struct
- {
- float fBandWidth; /* audio bandwidth in Hz */
- int nDelay; /* encoder delay in units of sample frames */
- int nDelayCore; /* encoder delay in units of sample frames */
- int nCbBufSizeMin; /* minimum size of output buffer (bytes) */
- int nSyncFrameDelay;
- int nBitRate[MP4_MAX_NUM_STREAMS];
- int nMaxBitRate[MP4_MAX_NUM_STREAMS];
- int nBitResMax[MP4_MAX_NUM_STREAMS];
- int nSamplingRate[MP4_MAX_NUM_STREAMS];
- int nSamplesFrame[MP4_MAX_NUM_STREAMS];
- unsigned int nAncBytesPerFrame;
- int aot;
- int nValidAsc;
- MPEG4ENC_ASCBUF ascBuf[MP4_MAX_NUM_STREAMS];
- MPEG4ENC_SMCBUF smcBuf;
- int nProfLev;
- char pVersion[50];
- char pBuildDate[50];
- } MPEG4ENC_INFO;
- typedef struct MPEG4ENC_METADATA
- {
- MPEG4ENC_METADATA_DRC_PROFILE drc_profile; /* MPEG DRC compression profile */
- MPEG4ENC_METADATA_DRC_PROFILE comp_profile; /* ETSI heavy compression profile */
- float drc_TargetRefLevel; /* used to define expected level to */
- float comp_TargetRefLevel; /* adjust limiter to avoid overload */
- float drc_ext; /* external feed DRC compression value */
- float comp_ext; /* external feed heavy compression value */
- int prog_ref_level_present; /* flag, if prog_ref_level is present */
- float prog_ref_level; /* Programme Reference Level = Dialogue Level: */
- /* -31.75dB .. 0 dB ; stepsize: 0.25dB */
- int PCE_mixdown_idx_present; /* flag, if dmx-idx should be written in programme config element */
- int ETSI_DmxLvl_present; /* flag, if dmx-lvl should be written in ETSI-ancData */
- MPEG4ENC_METADATA_DMX_GAIN centerMixLevel; /* center downmix level */
- MPEG4ENC_METADATA_DMX_GAIN surroundMixLevel; /* surround downmix level */
- MPEG4ENC_METADATA_DSUR_IND dolbySurroundMode; /* Indication for Dolby Surround Encoding Mode */
- MPEG4ENC_METADATA_DRCPRESENTATION drcPresentationMode; /* DRC presentation mode (ETSI) */
- /* preprocessing */
- int dcFilter; /* flag specifying if DC filtering is applied to input */
- int lfeLowpassFilter; /* flag specifying if 120 Hz low-pass filter is applied to LFE channel */
- int surPhase90; /* flag specifying if 90 degree phase shift is applied to surround channels */
- int surAtt3dB; /* flag specifying if 3 dB attenuation is applied to surround channels */
- } MPEG4ENC_METADATA;
- typedef struct MPEG4ENC_EXTMETADATA
- {
- #if 1 /* ENABLE_ISO14496_3_2009_AMD4 */
- /* not fully supported yet */
- /* extended ancillary data */
- int pseudoSurroundEnable; /* flag */
- int extAncDataEnable; /* flag */
- int extDownmixLevelEnable; /* flag */
- int extDownmixLevel_A; /* downmix level index A (0...7, according to table) */
- int extDownmixLevel_B; /* downmix level index B (0...7, according to table) */
- int dmxGainEnable; /* flag */
- float dmxGain5; /* gain factor for downmix to 5 channels */
- float dmxGain2; /* gain factor for downmix to 2 channels */
- int lfeDmxEnable; /* flag */
- int lfeDmxLevel; /* downmix level index for LFE (0..15, according to table) */
- #endif
- } MPEG4ENC_EXTMETADATA;
- typedef struct MPEG4ENC_METADATA *HANDLE_MPEG4ENC_METADATA;
- typedef struct MPEG4ENC_EXTMETADATA *HANDLE_MPEG4ENC_EXTMETADATA;
- /*-------------------- function prototypes --------------------------------*/
- /*---------------------------------------------------------------------------
- functionname: MPEG4ENC_Configure
- description : fills encoder handle structure with default values
- to be called before MPEG4ENC_Open
- returns: MPEG4ENC_NO_ERROR on success, an appropriate error code else
- ---------------------------------------------------------------------------*/
- MPEG4ENC_ERROR MPEG4ENCAPI
- MPEG4ENC_Configure (
- HANDLE_MPEG4ENC_ENCODER *phMp4Enc, /* adress of encoder handle */
- const HANDLE_MPEG4ENC_SETUP hSetup /* handle to filled setup stucture */
- );
- /*---------------------------------------------------------------------------
- functionname:MPEG4ENC_GetVersionInfo
- description: get Version Number information about the encoding process
- returns: MPEG4ENC_ERROR (error code)
- ---------------------------------------------------------------------------*/
- MPEG4ENC_ERROR MPEG4ENCAPI
- MPEG4ENC_GetVersionInfo(char *const pVersionInfo,
- const int bufSize);
- /*---------------------------------------------------------------------------
- functionname: MPEG4ENC_Open
- description: allocate and initialize a new encoder instance
- samplesFirst holds the desired number of input
- samples (of all channels) for the first frame
- returns: MPEG4ENC_NO_ERROR on success, an appropriate error code else
- ---------------------------------------------------------------------------*/
- MPEG4ENC_ERROR MPEG4ENCAPI
- MPEG4ENC_Open(
- HANDLE_MPEG4ENC_ENCODER *phMp4Enc, /* pointer to encoder handle, initialized on return */
- unsigned int* const pSamplesFirst /* number of samples needed to encode the first frame */
- );
- /*---------------------------------------------------------------------------
- functionname: MPEG4ENC_Close
- description: deallocate an encoder instance
- returns: MPEG4ENC_NO_ERROR on success, an appropriate error code else
- ---------------------------------------------------------------------------*/
- MPEG4ENC_ERROR MPEG4ENCAPI
- MPEG4ENC_Close (
- HANDLE_MPEG4ENC_ENCODER* phMp4Enc /* pointer to an encoder handle */
- );
- /*---------------------------------------------------------------------------
- functionname: MPEG4ENC_Encode
- description: encode the passed samples
- modifies: pSamplesConsumed: number of used samples
- pSamplesNext: number of samples needed to encode
- the next frame
- pOutputBytes: number of valid bytes in pOutput
- returns: MPEG4ENC_NO_ERROR on success, an appropriate error code else
- ---------------------------------------------------------------------------*/
- MPEG4ENC_ERROR MPEG4ENCAPI
- MPEG4ENC_Encode(
- HANDLE_MPEG4ENC_ENCODER const hMp4Enc, /* an encoder handle */
- const float* const pSamples, /* pointer to audio samples, interleaved*/
- const int nSamples, /* number of samples
- must be a multiple of number of input channels */
- int* pSamplesConsumed, /* number of used input samples,
- will be a multiple of number of input channels */
- unsigned int* const pSamplesNext, /* number of desired samples for a complete frame */
- unsigned char* const pOutput, /* pointer to bitstream buffer */
- const int nOutputBufSize, /* the size of the output buffer;
- must be large enough to receive all data */
- int* const pOutputBytes, /* number of bytes in bitstream buffer */
- MPEG4ENC_AUINFO **ppAuInfo /* */
- );
- /*---------------------------------------------------------------------------
- functionname: MPEG4ENC_SRInfo
- description : returns the sample rate range and
- to be called before MPEG4ENC_Open
- returns: MPEG4ENC_NO_ERROR on success,
- MPEG4ENC_INIT_ERROR if the bitrate, channel, aot configuration
- is not supported
- ---------------------------------------------------------------------------*/
- MPEG4ENC_ERROR MPEG4ENCAPI
- MPEG4ENC_SRInfo (
- const int bitRate, /* the targeted bit rate */
- const MPEG4ENC_BITRATE_MODE bitrateMode, /* the bitrateMode */
- const MPEG4ENC_CH_MODE chMode, /* the number of channels to encode */
- const AUD_OBJ_TYP aot, /* the audio object type */
- const MPEG4ENC_QUALITY quality, /* encoder quality */
- int *const sampleRateMin, /* lowest supported */
- int *const sampleRateMax, /* highest supported */
- int *const sampleRatePref /* preferred
- sampling frequency for the given
- bitrate, channel, aot configuration */
- );
- /*---------------------------------------------------------------------------
- functionname: MPEG4ENC_GetInfo
- description: get information about the encoding process
- returns: MPEG4ENC_NO_ERROR on success, an appropriate error code else
- ---------------------------------------------------------------------------*/
- MPEG4ENC_ERROR MPEG4ENCAPI
- MPEG4ENC_GetInfo(const HANDLE_MPEG4ENC_ENCODER hMp4Enc,
- MPEG4ENC_INFO * const pInfo);
- /*-----------------------------------------------------------------------------
- functionname: MPEG4ENC_SetAncDataRate
- description: Sets bitrate for ancillary data
- returns: MPEG4ENC_NO_ERROR on success, an appropriate error code else
- ------------------------------------------------------------------------------*/
- MPEG4ENC_ERROR MPEG4ENCAPI
- MPEG4ENC_SetAncDataRate(
- HANDLE_MPEG4ENC_ENCODER hMp4Enc,
- int nAncDataRate
- );
- /*-----------------------------------------------------------------------------
- functionname: MPEG4ENC_SetAncData
- description: Passes ancillary data to encoder
- returns: MPEG4ENC_NO_ERROR on success, an appropriate error code else
- ------------------------------------------------------------------------------*/
- MPEG4ENC_ERROR MPEG4ENCAPI
- MPEG4ENC_SetAncData(
- HANDLE_MPEG4ENC_ENCODER const hMp4Enc, /* an encoder handle */
- unsigned char* pAncBytes, /* ancillary data buffer */
- unsigned int* pNumAncBytes /* ancillary data bytes left */
- );
- /*-----------------------------------------------------------------------------
- functionname: MPEG4ENC_SetOffsets
- description: changes mapping of input audio channels to AAC channels
- returns: MPEG4ENC_NO_ERROR on success, an appropriate error code else
- ------------------------------------------------------------------------------*/
- MPEG4ENC_ERROR MPEG4ENCAPI
- MPEG4ENC_SetOffsets(
- const HANDLE_MPEG4ENC_ENCODER hMp4Enc,
- const unsigned int nChannels,
- const unsigned int *const channelOffset
- );
- /*-----------------------------------------------------------------------------
- functionname: MPEG4ENC_SetSbrTransmissionConfig
- description: changes signaling interval of SBR header, additional CRC bits
- for SBR data
- returns: MPEG4ENC_NO_ERROR on success, an appropriate error code else
- ------------------------------------------------------------------------------*/
- MPEG4ENC_ERROR MPEG4ENCAPI
- MPEG4ENC_SetSbrTransmissionConfig(
- const HANDLE_MPEG4ENC_ENCODER hMp4Enc,
- const int bUseCRC,
- const float sendHeaderTimeInterval
- );
- /*-----------------------------------------------------------------------------
- functionname: MPEG4ENC_SetInbandPceTimeInterval
- description: set update interval for explicit in band PCE transmission
- sendPceTimeInterval > 0 -> regular time interval in seconds
- sendPceTimeInterval == 0 -> send no PCE (MPEG-2 only)
- sendPceTimeInterval < 0 -> send PCE only the 1st frame
- returns: MPEG4ENC_NO_ERROR on success, an appropriate error code else
- ------------------------------------------------------------------------------*/
- MPEG4ENC_ERROR MPEG4ENCAPI
- MPEG4ENC_SetInbandPceTimeInterval(const HANDLE_MPEG4ENC_ENCODER hMp4Enc,
- const float sendPceTimeInterval);
- /*-----------------------------------------------------------------------------
- functionname: MPEG4ENC_SetAdtsPceTimeInterval
- description: set update interval for explicit channel signaling via PCE in
- case of ADTS transport stream, MPEG-2/4 AAC and
- channel_configuration == 0
- sendPceTimeInterval > 0 -> regular time interval in seconds
- sendPceTimeInterval == 0 -> send no PCE (MPEG-2 only)
- sendPceTimeInterval < 0 -> send PCE only the 1st frame
- returns: MPEG4ENC_NO_ERROR on success, an appropriate error code else
- ------------------------------------------------------------------------------*/
- MPEG4ENC_ERROR MPEG4ENCAPI
- MPEG4ENC_SetAdtsPceTimeInterval(
- const HANDLE_MPEG4ENC_ENCODER hMp4Enc,
- const float sendPceTimeInterval
- );
- /*-----------------------------------------------------------------------------
- functionname: MPEG4ENC_MpsSetSscTimeInterval
- description: set update interval for transmission of SpatialSpecificConfig
- (SSC) in case of encoding using MPEG Surround
- sendSscTimeInterval > 0 -> regular time interval in seconds
- sendSscTimeInterval == 0 -> send SSC every (MPEGS) frame
- sendSscTimeInterval < 0 -> send SSC only the 1st frame
- - in combination with MPEGS only
- - MPEGS payload mode has to be MP4_MPEGS_PAYLOAD_EMBED, because
- otherwise the SSC is transmitted in a seperate ESD, which has
- to be handled by the user
- returns: MPEG4ENC_NO_ERROR on success, an appropriate error code else
- ------------------------------------------------------------------------------*/
- MPEG4ENC_ERROR MPEG4ENCAPI
- MPEG4ENC_MpsSetSscTimeInterval(
- const HANDLE_MPEG4ENC_ENCODER hMp4Enc,
- const float sendSscTimeInterval
- );
- /*-----------------------------------------------------------------------------
- functionname: MPEG4ENC_MpsSetDownmixConfig
- description: set MPEG Surround Downmix Configuration
- returns: MPEG4ENC_NO_ERROR on success, an appropriate error code else
- ------------------------------------------------------------------------------*/
- MPEG4ENC_ERROR MPEG4ENCAPI
- MPEG4ENC_MpsSetDownmixConfig(
- const HANDLE_MPEG4ENC_ENCODER hMp4Enc,
- const MPEG4ENC_MPEGS_DOWNMIX_CONFIG mpegsDownmixCfg
- );
- /*-----------------------------------------------------------------------------
- functionname: MPEG4ENC_MpsSetPayloadMode
- description: set MPEG Surround Payload Transmission Mode
- returns: MPEG4ENC_NO_ERROR on success, an appropriate error code else
- ------------------------------------------------------------------------------*/
- MPEG4ENC_ERROR MPEG4ENCAPI
- MPEG4ENC_MpsSetPayloadMode(
- const HANDLE_MPEG4ENC_ENCODER hMp4Enc,
- const MPEG4ENC_MPEGS_PAYLOAD_MODE mpegsPayloadMode
- );
- /*-----------------------------------------------------------------------------
- functionname: MPEG4ENC_SetThreadingMode (deprecated)
- description: sets threading mode to single threaded, multiple threaded
- returns: MPEG4ENC_NO_ERROR on success, an appropriate error code else
- Please note that this function is deprecated and should not be used any more.
- ------------------------------------------------------------------------------*/
- MPEG4ENC_ERROR MPEG4ENCAPI
- MPEG4ENC_SetThreadingMode(const HANDLE_MPEG4ENC_ENCODER hMp4Enc,
- const MPEG4ENC_THREADING_MODE threadingMode);
- /*-----------------------------------------------------------------------------
- functionname: MPEG4ENC_GetError
- description: get error text
- returns: pointer to an error text
- ------------------------------------------------------------------------------*/
- char* MPEG4ENCAPI
- MPEG4ENC_GetError(MPEG4ENC_ERROR error);
- /*-----------------------------------------------------------------------------
- functionname: MPEG4ENC_SetBandwidth
- description: set bandwidth by user, returns with actual used bandwidth
- returns: MPEG4ENC_NO_ERROR on success, an appropriate error code else
- ------------------------------------------------------------------------------*/
- MPEG4ENC_ERROR MPEG4ENCAPI
- MPEG4ENC_SetBandwidth(const HANDLE_MPEG4ENC_ENCODER hMp4Enc,
- const float proposedBandwidth,
- float* usedBandwidth);
- /*-----------------------------------------------------------------------------
- functionname: MPEG4ENC_SetStereoPrePro
- description: set bandwidth by user, returns with actual used bandwidth
- returns: MPEG4ENC_NO_ERROR on success, an appropriate error code else
- ------------------------------------------------------------------------------*/
- MPEG4ENC_ERROR MPEG4ENCAPI
- MPEG4ENC_SetStereoPrePro(const HANDLE_MPEG4ENC_ENCODER hMp4Enc,
- const int enableStereoPrePro);
- /*-----------------------------------------------------------------------------
- functionname: MPEG4ENC_SetLatmSmcTimeInterval
- description: set update interval for appearance of stream mux config in
- case of LOAS/LATM transport stream
- sendSmcTimeInterval > 0 -> regular time interval (every n-th frame, default: 8)
- sendSmcTimeInterval == 0 -> send no inband StreamMuxConfig
- sendSmcTimeInterval < 0 -> send StreamMuxConfig only the 1st frame
- returns: MPEG4ENC_NO_ERROR on success, an appropriate error code else
- ------------------------------------------------------------------------------*/
- MPEG4ENC_ERROR MPEG4ENCAPI
- MPEG4ENC_SetLatmSmcTimeInterval(
- const HANDLE_MPEG4ENC_ENCODER hMp4Enc,
- const int sendSmcTimeInterval
- );
- /*-----------------------------------------------------------------------------
- functionname: MPEG4ENC_SetLatmNrOfSubframes
- description: set the nr of subframes per latm frame in
- case of LOAS/LATM transport stream
- nrOfSubframes < 1 -> reserved
- nrOfSubframes >= 1 -> use 'nrOfSubframes'
- optional, default is 1
- returns: MPEG4ENC_NO_ERROR on success, an appropriate error code else
- ------------------------------------------------------------------------------*/
- MPEG4ENC_ERROR MPEG4ENCAPI
- MPEG4ENC_SetLatmNrOfSubframes(
- const HANDLE_MPEG4ENC_ENCODER hMp4Enc,
- const int nrOfSubframes
- );
- /*-----------------------------------------------------------------------------
- functionname: MPEG4ENC_GetLatmSmc
- description: returns pointer to and size of LATM stream mux config
- returns: MPEG4ENC_NO_ERROR on success, an appropriate error code else
- ------------------------------------------------------------------------------*/
- MPEG4ENC_ERROR MPEG4ENCAPI
- MPEG4ENC_GetLatmSmc(
- const HANDLE_MPEG4ENC_ENCODER hMp4Enc,
- unsigned char** buffer,
- int* nBits
- );
- /*---------------------------------------------------------------------------
- functionname: MPEG4ENC_Submit_Metadata
- description: submit metadata
- returns: MPEG4ENC_ERROR (error code)
- ---------------------------------------------------------------------------*/
- MPEG4ENC_ERROR MPEG4ENCAPI
- MPEG4ENC_Submit_Metadata(
- const HANDLE_MPEG4ENC_ENCODER hMpeg4Enc, /* an encoder handle */
- const HANDLE_MPEG4ENC_METADATA pMetadata /* pointer to metadata */
- );
-
-
- /*---------------------------------------------------------------------------
- functionname: MPEG4ENC_Submit_ExtMetadata
- description: submit metadata
- returns: MPEG4ENC_ERROR (error code)
- ---------------------------------------------------------------------------*/
- MPEG4ENC_ERROR MPEG4ENCAPI
- MPEG4ENC_Submit_ExtMetadata(
- const HANDLE_MPEG4ENC_ENCODER hMpeg4Enc, /* an encoder handle */
- const HANDLE_MPEG4ENC_EXTMETADATA pExtMetadata /* pointer to extended metadata */
- );
- /*---------------------------------------------------------------------------
- functionname: MPEG4ENC_BRInfo
- description : Provides the compatible bitrate range
- returns: MPEG4ENC_ERROR (error code)
- ---------------------------------------------------------------------------*/
- MPEG4ENC_ERROR MPEG4ENCAPI
- MPEG4ENC_BRInfo (
- const AUD_OBJ_TYP aot,
- const MPEG4ENC_CH_MODE chMode,
- const int samplingRate,
- int* brMin,
- int* brMax);
- /*---------------------------------------------------------------------------
- functionname: MPEG4ENC_SetSbrSpeechConfig
- description : Sets SBR Speech config flag
- returns: MPEG4ENC_ERROR (error code)
- ---------------------------------------------------------------------------*/
- MPEG4ENC_ERROR MPEG4ENCAPI
- MPEG4ENC_SetSbrSpeechConfig(
- const HANDLE_MPEG4ENC_ENCODER hMp4Enc,
- unsigned int flag
- );
- /*---------------------------------------------------------------------------
- functionname: MPEG4ENC_SetSbrTimeDiffCoding
- description : Sets SBR time differential coding (TDC);
- flag==0: Do not use TDC
- flag==1: Use TDC
- returns: MPEG4ENC_ERROR (error code)
- ---------------------------------------------------------------------------*/
- MPEG4ENC_ERROR MPEG4ENCAPI
- MPEG4ENC_SetSbrTimeDiffCoding(
- const HANDLE_MPEG4ENC_ENCODER hMp4Enc,
- unsigned int flag
- );
- /*---------------------------------------------------------------------------
- functionname: MPEG4ENC_SetUseIntensityStereo
- description : Sets intensity stereo coding (IS);
- flag==1: Use IS (default)
- flag==0: Do not use IS
- returns: MPEG4ENC_ERROR (error code)
- ---------------------------------------------------------------------------*/
- MPEG4ENC_ERROR MPEG4ENCAPI
- MPEG4ENC_SetUseIntensityStereo(
- const HANDLE_MPEG4ENC_ENCODER hMp4Enc,
- unsigned int flag
- );
- /*-----------------------------------------------------------------------------
- functionname: MPEG4ENC_SendChCfgZero
- description: will always use channel config zero + pce although a standard
- channel config could be signalled
- returns: MPEG4ENC_NO_ERROR on success, an appropriate error code else
- ------------------------------------------------------------------------------*/
- MPEG4ENC_ERROR MPEG4ENCAPI
- MPEG4ENC_SendChCfgZero(
- const HANDLE_MPEG4ENC_ENCODER hMp4Enc
- );
- /*-----------------------------------------------------------------------------
- functionname: MPEG4ENC_SetSyncFrame
- description: will generate a synchaable frame
- returns: MPEG4ENC_NO_ERROR on success, an appropriate error code else
- ------------------------------------------------------------------------------*/
- MPEG4ENC_ERROR MPEG4ENCAPI
- MPEG4ENC_SetSyncFrame(
- const HANDLE_MPEG4ENC_ENCODER hMp4Enc
- );
- /*-----------------------------------------------------------------------------
- functionname: MPEG4ENC_SetSyncFrameWithType
- description: will generate a synchaable frame
- returns: MPEG4ENC_NO_ERROR on success, an appropriate error code else
- ------------------------------------------------------------------------------*/
- MPEG4ENC_ERROR MPEG4ENCAPI
- MPEG4ENC_SetSyncFrameWithType(
- const HANDLE_MPEG4ENC_ENCODER hMp4Enc,
- const MPEG4ENC_SYNCFRAME_TYPES syncType
- );
- /*---------------------------------------------------------------------------
- functionname: MPEG4ENC_InitDASH
- description : Configure encoder for DASH mode
- returns: MPEG4ENC_ERROR (error code)
- ---------------------------------------------------------------------------*/
- MPEG4ENC_ERROR MPEG4ENCAPI
- MPEG4ENC_InitDASH(
- const HANDLE_MPEG4ENC_ENCODER hMp4Enc
- );
- /*---------------------------------------------------------------------------
- functionname: MPEG4ENC_SetTransportType
- description : Reconfigure Transport Format
- returns: MPEG4ENC_ERROR (error code)
- ---------------------------------------------------------------------------*/
- MPEG4ENC_ERROR MPEG4ENCAPI
- MPEG4ENC_SetTransportType(
- const HANDLE_MPEG4ENC_ENCODER hMp4Enc,
- const MPEG4ENC_TRANSPORT_TYPE transportType
- );
- /*---------------------------------------------------------------------------
- functionname: MPEG4ENC_SetMPEG4Flag
- description : Reconfigure MPEG-2/4 compliance
- returns: MPEG4ENC_ERROR (error code)
- ---------------------------------------------------------------------------*/
- MPEG4ENC_ERROR MPEG4ENCAPI
- MPEG4ENC_SetMPEG4Flag(
- const HANDLE_MPEG4ENC_ENCODER hMp4Enc,
- const int mpeg4Flag
- );
- #ifdef SUPPORT_UPMIX
- /*---------------------------------------------------------------------------
- functionname: MPEG4ENC_SetSXProUpmixParameter
- description : Sets SXPro parameters;
- umxMode: Upmix workmode
- umxLFE: Upmix LFE on/off
- returns: MPEG4ENC_ERROR (error code)
- ---------------------------------------------------------------------------*/
- MPEG4ENC_ERROR MPEG4ENCAPI
- MPEG4ENC_SetSXProUpmixParameter(
- const HANDLE_MPEG4ENC_ENCODER hMp4Enc,
- const MP4_SXPRO_UPMIX_WORKMODE umxMode,
- const MP4_SXPRO_UPMIX_LFE umxLFE
- );
- #endif
- /*---------------------------------------------------------------------------*/
- #if defined(WIN32) || defined(WIN64)
- #pragma pack(pop)
- #endif
- /*-------------------------------------------------------------------------*/
- #ifdef __cplusplus
- }
- #endif
- #endif /* _mp4FastAAClib_h_ */
|