mirror of
https://github.com/WinampDesktop/winamp.git
synced 2024-09-24 15:54:12 +00:00
979 lines
40 KiB
C
979 lines
40 KiB
C
|
/************************* 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_ */
|