faac源码分析之解码参数配置

FAAC定义了一个结构体用来定义解码器的工作解码参数,该结构体的定义如下所示:

typedef struct faacEncConfiguration
{
    /* config version */
    int version;
    /* library version */
    char *name;
    /* copyright string */
    char *copyright;
    /* MPEG version, 2 or 4 */
    unsigned int mpegVersion;
    /* AAC object type */
    unsigned int aacObjectType;
    /* Allow mid/side coding */
    unsigned int allowMidside;
    /* Use one of the channels as LFE channel */
	/* LFE(low-frequencyeffects) */
    unsigned int useLfe;
    /* Use Temporal Noise Shaping */
    unsigned int useTns;
    /* bitrate / channel of AAC file */
    unsigned long bitRate;
    /* AAC file frequency bandwidth */
    unsigned int bandWidth;
    /* Quantizer quality */
	/* 默认100,值越大音质越高 */
    unsigned long quantqual;
    /* Bitstream output format (0 = Raw; 1 = ADTS) */
    unsigned int outputFormat;
    /* psychoacoustic model list */
    psymodellist_t *psymodellist;
    /* selected index in psymodellist */
    unsigned int psymodelidx;
    /*
	PCM Sample Input Format
	0 FAAC_INPUT_NULL	 invalid, signifies a misconfigured config
	1 FAAC_INPUT_16BIT native endian 16bit
	2 FAAC_INPUT_24BIT native endian 24bit in 24 bits(not implemented)
	3 FAAC_INPUT_32BIT native endian 24bit in 32 bits (DEFAULT)
	4 FAAC_INPUT_FLOAT 32bit floating point
    */
    unsigned int inputFormat;
    /* block type enforcing
     * (SHORTCTL_NORMAL/SHORTCTL_NOSHORT/SHORTCTL_NOLONG)
     */
    int shortctl;
	/*
		Channel Remapping
		Default			0, 1, 2, 3 ... 63  (64 is MAX_CHANNELS in coder.h)
		WAVE 4.0		2, 0, 1, 3
		WAVE 5.0		2, 0, 1, 3, 4
		WAVE 5.1		2, 0, 1, 4, 5, 3
		AIFF 5.1		2, 0, 3, 1, 4, 5
	*/
	int channel_map[64];
} faacEncConfiguration, *faacEncConfigurationPtr;

主要的参数配置如下所示:

# 2-MPEG2 4-MPEG4
mpegVersion=4
# 1-MAIN 2-LOW 3-SSR 4-LTP
aacObjectType=2
# 0-NO 1-YES
allowMidside=0
# 0-NO 1-YES
useLfe=0
# 0-NO 1-YES
useTns=0
bitRate=48000
bandWidth=64000
# Default=100 LOWER<100 HIGHER>100
quantqua=100
# 0=RAW 1=ADTS
outputFormat=1

函数faacEncGetCurrentConfiguration用于获取解码器的参数配置,而faacEncSetConfiguration用于将配置好的解码参数设定到解码器上去。

时间: 2024-08-13 13:56:21

faac源码分析之解码参数配置的相关文章

memcached源码分析-----memcached启动参数详解以及关键配置的默认值

转载请注明出处: http://blog.csdn.net/luotuo44/article/details/42672913 本文开启本系列博文的代码分析.本系列博文研究是memcached版本是1.4.21. 本文将给出memcached启动时各个参数的详细解释以及一些关键配置的默认值.以便在分析memcached源码的时候好随时查看.当然也方便使用memcached时可以随时查看各个参数的含义.<如何阅读memcached源码>说到memcached有很多全局变量(也就是关键配置),这些

springmvc源码分析之请求参数、类型转换、数据绑定

前言 通过前面的分析,我们知道了请求过来,怎么找到相应的handlerMethod.本篇对请求参数的转换进行讲解. 概述 在进行分析之前,我们回到DispatcherServlet的doDispatch方法去看一下,请求过来后真正执行业务控制器的入口是从HandlerAdapter的handle方法.我们熟悉一下几个类,HandlerAdapter.RequestMappingHandlerAdapter. HandlerAdapter接口我们关注supports方法.handle方法.supp

源码分析之FastJson全局配置日期格式导致@JSONField(format = &quot;yyyy-MM-dd&quot;)注解失效

出现的问题 我全局配置的时间格式是:yyyy-MM-dd HH:mm:ss @JSONField注解配置的时间格式是:yyyy-MM-dd 最终的返回结果是:yyyy-MM-dd HH:mm:ss 问题:为啥不是以注解定义的时间格式为主呢? 先说答案,后面再分析: FastJson的全局配置日期格式会导致@JSONField注解失效 使用建议: 1.若全局配置了日期格式,就不要使用@JSONField注解 2.若想使用@JSONField注解,就不要全局配置日期格式 一.FastJson全局配置

PHP源码分析之session.auto_start配置分析

作者:zhanhailiang 日期:2014-10-20 应用分析 日常开发中,php.ini配置session.auto_start=0默认关闭会话时如果想开启会话需要调用session_start: <?php   session_start(); //... 内核分析 通过查到源码,可知session_start定义如下: 1881 /* {{{ proto bool session_start(void) 1882 Begin session - reinitializes freez

dubbo源码分析7——dubbo的配置解析_与spring的整合

dubbo的配置其实就是建立在spring的命名空间的配置机制之上的.在dubbo的jar包的META-INF目录下会有spring.handlers这个文件,用来配置spring的命名空间和解析类的对应关系.打开spring.handlers文件,可知dubbo的命名空间配置的处理类为com.alibaba.dubbo.config.spring.schema.DubboNamespaceHandler,代码: public void init() { registerBeanDefiniti

FAAC源码分析之faacEncEncode

FAAC编码代码流程图 通用的AAC编码系统框图(偷来的图) 对比可以发现,其实FAAC的编码和一般的AAC编码大致一致,主要包括心理声学模型处理部分和量化处理两部分,还包括一些优化处理的过程.实现的源码+注释: int FAACAPI faacEncEncode(faacEncHandle hEncoder, int32_t *inputBuffer, unsigned int samplesInput, unsigned char *outputBuffer, unsigned int bu

《kernel源码分析(一)配置和编译过程》

1.内核的配置和编译 cp arch/arm/configs/xx_defconfig .config make menuconfig make uImage 2.了解内核的配置过程和编译过程 在内核的配置过程中,会生成文件.config. 以网卡DM9000为例: 在.config中可以找到”CONFIG_DM9000=y“,这表示这个模块会被编译进内核.“CONFIG_DM9000=m”,这表示模块会被编译成.ko文件,可以动态的加载到内核. 在内核顶层目录对CONFIG_DM9000进行查

[Abp 源码分析]四、模块配置

0.简要介绍 在 Abp 框架当中通过各种 Configuration 来实现模块的配置,Abp 本身提供的很多基础设施功能的一些在运行时的行为是通过很多不同的 Configuration 来开放给用户进行一些自定义配置的. 比如说缓存模块,我要配置缓存的过期时间,Abp 默认是 1 个小时,但是我也可以自己来定义,直接赋值或者从配置项来读取都是由具体使用者来控制的,所以 Abp 通过各种 Configuration 类来控制一些运行时参数. 这些 Abp 本身基础设施的配置类都是存放在 \Ab

IPVS(也叫LVS)的源码分析之persistent参数

最近在用 LVS做 LB,发现一个问题客户端总是出现session丢失问题,采用常用配置,均衡策略使用wlc, 看了一下wlc的策略相同的客户端都有可能轮训到不同的后台机器,在后台服务器上并没有对session进行复制,那样的却会导致客户端访问不同的服务器而导致在session丢失. 本简单的以为通过调整均衡策略就可以确保对同一客户端映射到相同的服务器,均衡策略参考(点击打开链接),而策略里面只有Source Hashing Scheduling 看起来可以达到这个目的,但是这个策略并不是推荐的