精华内容
下载资源
问答
  • FFmpeg解码内存G711A

    千次阅读 2019-08-21 09:49:22
    我的需求是解码一帧帧的音频G711A的数据,所以我是从内存中取一帧完整的G711A音频数据去做解码动作,解码后的PCM数据我再另做处理(存成PCM文件或者重采样再编码)。 源码构成 源码主要的构成,主要是初始化解码器和...

    背景

    最近从FFmpeg中学习了音频解码相关的知识,刚好做了音频G711A解码的工作,特此记录分享。

    功能描述

    我的需求是解码一帧帧的音频G711A的数据,所以我是从内存中取一帧完整的G711A音频数据去做解码动作,解码后的PCM数据我再另做处理(存成PCM文件或者重采样再编码)。

    源码构成

    源码主要的构成,主要是初始化解码器和解码两个接口。

    class DecodeAudio
    {
    public:
    	DecodeAudio();
    	~DecodeAudio();
    
    	int audioInit(AVCodecID codec_id, AVSampleFormat sample_fmt, int sample_rate, int channels);
    	AVFrame* decode(char *data, int datalen);
    	void audioUnit(void);
    
    private:
    	AVCodec         *pCodecAudioDec;
    	AVCodecContext  *pCodecCtxAudio;
    	AVFrame         *pFrameAudio;
    	AVPacket        *pPacketAudio;
    };
    

    接口介绍

    解码初始化:

    int DecodeAudio::audioInit(AVCodecID codec_id, AVSampleFormat sample_fmt, int sample_rate, int channels)
    {
    	pCodecAudioDec = avcodec_find_decoder(codec_id);
    	if (!pCodecAudioDec) {
    		printf("Codec not found audio codec id\n");
    		return -1;
    	}
    
    	pCodecCtxAudio = avcodec_alloc_context3(pCodecAudioDec);
    	if (!pCodecCtxAudio) {
    		printf("Could not allocate audio codec context\n");
    		return -1;
    	}
    	pCodecCtxAudio->sample_fmt = sample_fmt;
    	pCodecCtxAudio->sample_rate = sample_rate;
    	pCodecCtxAudio->channels = channels;
    
    	if (avcodec_open2(pCodecCtxAudio, pCodecAudioDec, NULL) < 0) {
    		printf("Could not open codec\n");
    		return -1;
    	}
    
    	pPacketAudio = av_packet_alloc();
    	if (NULL == pPacketAudio)
    		return -1;
    
    	pFrameAudio = av_frame_alloc();
    	if (NULL == pFrameAudio)
    		return -1;
    
    	return 0;
    }
    

    注意:解码G711A的话AVCodecID 是 AV_CODEC_ID_PCM_ALAW !

    解码初始化的流程很简单,主要是:查找解码器、创建解码上下文、打开解码器等。

    解码上下文需要设置的参数:
    sample_fmt:采样格式
    sample_rate:采样频率
    channels:采样通道数

    解码:

    解码接口输入是一帧完整的音频编码数据:

    AVFrame* DecodeAudio::decode(char *data, int datalen)
    {
    	int ret = 0;
    
    	pPacketAudio->size = datalen;
    	pPacketAudio->data = (uint8_t *)av_malloc(pPacketAudio->size);
    	memcpy(pPacketAudio->data, data, datalen);
    
    	ret = av_packet_from_data(pPacketAudio, pPacketAudio->data, pPacketAudio->size);
    	if (ret <0)
    	{
    		printf("av_packet_from_data error \n");
    		av_free(pPacketAudio->data);
    		return NULL;
    	}
    
    	ret = avcodec_send_packet(pCodecCtxAudio, pPacketAudio);
    	av_packet_unref(pPacketAudio);
    	if (ret < 0) {
    		printf("avcodec_send_packet error \n");
    		return NULL;
    	}
    
    	ret = avcodec_receive_frame(pCodecCtxAudio, pFrameAudio);
    	if (ret < 0) {
    		printf("avcodec_receive_frame error \n");
    		return NULL;
    	}
    
    	return pFrameAudio;
    }
    

    解码主要内容:
    av_packet_from_data:产生要解码的AVPacket数据;
    avcodec_send_packet:输入待解码码流;
    avcodec_receive_frame:输出解码数据。

    解码出来的audioframe->data[0]就是一帧原始的pcm音频数据,可以直接存成文件,数据长度为audioframe->linesize[0]。

    接口调用

    DecodeAudio *pdecodeaudio = NULL;
    pdecodeaudio = new DecodeAudio;
    pdecodeaudio->audioInit(AV_CODEC_ID_PCM_ALAW, AV_SAMPLE_FMT_S16, 8000, 1) < 0);
    //g711data为一帧的G711A音频数据
    AVFrame *audioframe = pdecodeaudio->decode(g711data, g711len);
    //解码出来的audioframe->data[0]就是一帧原始的pcm音频数据,可以直接存成文件,数据长度为audioframe->linesize[0]
    delete pdecodeaudio;
    

    下载

    源码下载:https://download.csdn.net/download/qq_22633333/11584405

    展开全文
  • 在台式电脑上安装2个内存条,之前是4G的后来加安装了8G内存,本应该有12G但是在电脑上却显示只有3.45G内存为可用, 以下是处理方式: 1、确定两条内存都是可以用 2、在cmd 中输入msconfig 点击enter就可以入系统...

    在台式电脑上安装2个内存条,之前是4G的后来加安装了8G内存,本应该有12G但是在电脑上却显示只有3.45G内存为可用,

    以下是处理方式:

    1、确定两条内存都是可以用

    2、在cmd 中输入msconfig 点击enter就可以入系统配置


    然后点击引导 选择高级选项


    勾选最大内存底下的数据可以自己设置


    重启电脑。



    展开全文
  • Oracle11g sga内存

    千次阅读 2020-08-28 11:30:39
    Oracle11g sga内存 一、设置内存 设置oracle内存和MEMORY_MAX_TARGET, memory_target有关 MEMORY_MAX_TARGET, memory_target的设置不能超过 /dev/shm 的大小: 注意:如果不确定大小请看第三条 Linux下Oracle用户 ...

    Oracle11g sga内存
    一、设置内存
    设置oracle内存和MEMORY_MAX_TARGET, memory_target有关
    MEMORY_MAX_TARGET, memory_target的设置不能超过 /dev/shm 的大小:
    注意:如果不确定大小请看第三条

    Linux下Oracle用户

    Sqlplus / as sysdba

    SHOW PARAMETERS memory_target //查看语句
    SHOW PARAMETERS MEMORY_MAX_TARGET //查看语句

    show sga //查看SGA的具体大小信息。
    show parameter sga_max_size //查看SGA最大值
    show parameter db_cache //查看数据缓存
    show parameter java_pool_size
    show parameter large_pool_size
    SHOW PARAMETERS SHARED_POOL_SIZE //查看共享内存

    设置MEMORY_MAX_TARGET 和memory_target的大小
    注意:此时的大小根据自己拥有的内存配置,不要直接粘贴
    Alter system set MEMORY_MAX_TARGET=3000m scope=spfile;
    Alter system set memory_target=3000m scope=spfile;
    设置sga和pga的大小
    Alter system set sga_target=2000m scope=spfile;
    Alter system set pga_aggregate_target=1000m scope=spfile;

    Linux下Oracle用户

    Sqlplus / as sysdba

    重启

    1. sql>shutdown immediate
    2. sql>startup
    3. 查看共享内存
      查看共享段的内存大小
      select pool,sum(bytes)/1024/1023 || ‘MB’ from v$sgastat where pool is not null group by pool;

    ======================================================================================================================================================

    二、单独设置共享段内存
    以上操作完成后不需要在单独设置共享段得内存大小,系统会自己分配,如果需要设置请往下看
    查看设置共享内存的最优大小
    select ‘shared pool’ component,
    shared_pool_size_for_estimate estd_sp_size,
    estd_lc_time_saved_factor parse_time_factor,
    case when current_parse_time_elapsed_s + adjustment_s < 0
    then 0
    else current_parse_time_elapsed_s + adjustment_s
    end response_time
    from ( select a.shared_pool_size_for_estimate,
    a.estd_lc_time_saved_factor,
    a.estd_lc_time_saved,
    e.value/100 current_parse_time_elapsed_s,
    c.estd_lc_time_saved - a.estd_lc_time_saved adjustment_s
    from vsharedpooladvicea,(selectfromvshared_pool_advice a, (select * from vsysstat where name =‘parse time elapsed’) e,
    (select estd_lc_time_saved
    from v$shared_pool_advice
    where shared_pool_size_factor = 1) c
    );

    取第一行的大小为最优数据
    ALTER SYSTEM SET SHARED_POOL_SIZE=1000M SCOPE=spfile; //共享内存240
    三、错误ORA-00845
    MEMORY_MAX_TARGET, memory_target的设置不能超过 /dev/shm 的大小:
    如果本地内存过小会遇到错误ORA-00845: MEMORY_TARGET not supported on this system,建议先看自己的内存大小,设置的值一定不要超过自己的内存大小

    Su – root

    df -h | grep shm //查看本地为2.0G 可以执行语句增加

    cat /etc/fstab | grep tmpfs

    mount -o remount,size=7G /dev/shm //执行后为7G
    df -h | grep shm
    如下所示使用百分之二十六,建议不超过百分之七十

    展开全文
  • ORACLE 11g 自动内存管理

    千次阅读 2014-09-16 17:18:49
    在oracle 11g中,使用一个参数memory_target就能够实现SGA和PGA组件依据工作负荷进行自动内存分配。oracle推荐使用自动内存管理简化内存分配。 oracle 11g依然支持手工内存分配: 1:oracle 11g使用memory_target...

    Overview

    在oracle 11g中,使用一个参数memory_target就能够实现SGA和PGA组件依据工作负荷进行自动内存分配。oracle推荐使用自动内存管理简化内存分配。
    oracle 11g依然支持手工内存分配:
    1:oracle 11g使用memory_target来支持内存自动分配。
    2:使用sga_target和pga_target参数来设置SGA和PGA,数据库会在这两个组件中自我优化。
    3:你也可以手工设置SGA中的各个组件。比如db_cache_size,shared_pool_size等组件。
    oracle 11g中新的内存初始化参数:
    有两个新的关键的内存初始化参数memory_target(动态参数,设置分配给实例的内存数)和memory_max_size(静态参数,这个参数是可选的,设置实例能够分配的最大内存,设置的是memory_target的上限值)。

    注意:虽然memory_target是一个动态参数,但是当数据库运行时,你不能从非自动内存管理交换到自动内存管理。必须重启数据库将参数应用到实例启动过程才行。

    When you upgrade to Oracle Database 11g using the DBUA (Database Upgrade Assistant), by default, the memory_target parameter is set to zero, meaning automatic memory management is disabled by default. However, when you create a new database using the DBCA (Database Creation Assistant), you can specify automatic memory management. You specify your choice in the Initialization Parameters page by clicking the Memory tab on that page. Following are two options offered on that page:

    • The Typical option lets you configure memory for a new database with minimal input and is ideal for most environments. Just enter a value in the Memory Size field and check the Use Automatic Memory Management option in the Typical section of the page to institute automatic memory management for the new database.
    • The Custom option provides you more control over the allocation of memory to the database. You can select the Automatic option to allocate specific amounts of memory to the SGA and PGA components of database memory. You can select the Manual option to set specific memory allocations for SGA subcomponents such as the buffer pool and the shared pool.

    参数配置策略
    MEMORY_TARGET 设置为非零值时:

    1. If you also set the sga_target and the pga_aggregate_target parameters, the database will consider them the minimum values for the SGA and PGA allocations of memory. The memory_target parameter can take a value anywhere between the sum of SGA and PGA to the high value set by the memory_max_target parameter.
    2. 如果设置了 SGA_TARGET 但未设置PGA_AGGREGATE_TARGET,则仍会自动优化这两个参数。PGA_AGGREGATE_TARGET 将初始化为以下值:(MEMORY_TARGET -SGA_TARGET)。
    3. 如 果设置了 PGA_AGGREGATE_TARGET 但未设置 SGA_TARGET,则仍会自动优化这两个参数。SGA_TARGET 将初始化为值 min(MEMORY_TARGET -PGA_AGGREGATE_TARGET, SGA_MAX_SIZE(如果用户已设置)),系统将自动优化子组件。
    4. 如果未设置任何参数,则无需最小值或默认值即可自动优化这两个参数。 有这样一个策略:在初始化过程中,将服务器的总内存按固定比率分配给SGA 和 PGA。该策略将在启动时分配 60% 的内存给SGA,40% 的内存给 PGA。
    5. If you set the memory_target parameter in the initialization parameter file but leave out the memory_max_size parameter, the database sets the memory_max_size parameter’s value to that of the memory_target_size parameter.

     

    如果未设置 MEMORY_TARGET,或者将其显式设置为 0(11g 中的默认值为 0)时:

    1. If you set neither the pga_aggregate_target nor the sga_target parameters, SGA is not automatically tuned, but the PGA is.
    2. If only the sga_target parameter is set, the database automatically tunes only the subcomponents of the SGA. PGA is auto-tuned whether you set it or not.
    3. If you set the memory_max_target parameter in an initialization parameter file (init.ora) but not the memory_target parameter, the database will set the memory_target parameter’s size to its default value of zero. That is,automatic memory management will be disabled.

    Monitoring Automatic Memory Management

    Use the V$MEMORY_DYNAMIC_COMPONENTS view to monitor the current sizes of all dynamically tuned memory components, as shown here:

    SQL> select component, current_size, user_specified_size
       2  from v$memory_dynamic_components
       3* where current_size!=0;
    COMPONENT              CURRENT_SIZE      USER_SPECIFIED_SIZE
    -------------------    --------------    -------------------
    shared pool            109051904         0
    large pool             4194304           0
    java pool              12582912          0
    SGA Target             134217728         0
    DEFAULT buffer cache   4194304           0
    PGA Target             130023424         0
    6 rows selected.
    As you can see, the query also shows the current total size of the SGA and the PGA components. The V$MEMORY_RESIZE_OPS view contains a circular buffer of the 800 most recent completed memory resizing operations. You can find the current memory resize operations that are in progress by querying the V$MEMORY_ CURRENT_RESIZE_OPS view.

    ORA-00845

    SQL> startup
    ORA-00845: MEMORY_TARGET not supported on this system
    这是因为/dev/shm没有设置正确的值,确保这个值至少等于sga_max_size参数值。
    [oracle@node1 dbs]$ df -h
    Filesystem            Size  Used Avail Use% Mounted on
    /dev/mapper/VolGroup00-LogVol00
                           14G  9.4G  3.2G  75% /
    /dev/sda1              99M   14M   81M  15% /boot
    none                  2.0G  702M  1.4G  35% /dev/shm
    可以看到该值为2G。
    可以通过/etc/fstab来更改该值:
    默认情况下该文件相关内容如下:
    [oracle@node1 dbs]$ cat /etc/fstab |grep shm
    none                    /dev/shm                tmpfs   defaults       0 0
    可以将该值修改为如下:
    none                    /dev/shm                tmpfs   defaults,size=2G        0 0
    然后重启系统即可解决问题。



    展开全文
  • 很多电脑号称4G内存,其实只有3972M。当装了win7 32位系统时,系统只给2960M内存分配了地址,以1G=1024M计算时,2960M=2.89G。当装了win7 64位系统时,3972M内存全部可用,以1G=1024M计算时,3972M=3.88G
  • 10G数据,1G内存排序问题

    千次阅读 2019-04-16 15:42:40
    将数据切分成n段,保证每段数据的大小在内存中放得下,然后将n个段的数据放到n个节点上进行并行计算,对计算的结果做多路归并,或者维护一个大小为n的小根堆,第一次从n个数据段中取第一个数据放入堆中,然后拿出...
  • 楼主买了个1核1G的云服务器,准备搭建一个私服用一用,谁知竟然启动报错。 查看运行状态 说的很清楚,说我的内存不足。 ubuntu@10-9-17-59:~/Develop/Nexus/nexus-3.15.2-01/bin$ ./nexus status Java HotSpot(TM) ...
  • Weblogic11g内存调优

    千次阅读 2018-04-10 16:10:35
    weblogic设置内存主要需要修改两个地方,如下:  1、安装目录/home/weblogic/Oracle/Middleware/wlserver_10.3/common下找到commEnv.cmd  打开该配置文件,看到类似 -Xms512m ,-Xmx1024m , -XX:...
  • 众所周知,我们的手机使用时间一长,各种后台存储...那么到底有哪些好的方法,才能解决彻底清除手机中无用的缓存,小编在这里分享几个iPhone手机清理内存的大招,只需短短几分钟,帮你手机内存大升级,多出10个G的内...
  • Java内存映射,上G大文件轻松处理

    千次阅读 多人点赞 2019-08-14 16:12:12
    内存映射文件(Memory-mapped File),指的是将一段虚拟内存逐字节映射于一个文件,使得应用程序处理文件如同访问主内存(但在真正使用到这些数据前却不会消耗物理内存,也不会有读写磁盘的操作),这要比直接文件读写...
  • 1G和超出1G的物理内存如何映射

    千次阅读 2013-11-20 15:36:04
     因为“内核直接映射空间”最多只能从 3G 到 4G,只能直接映射 1G 物理内存,对于大于 1G 的物理内存,无能为力。  实际上,“内核直接映射空间”也达不到 1G, 还得留点线性空间给“内核动态映射空间” 呢。  ...
  • window10企业版安装大概占用内存33G
  • 如图,我的电脑有两个内存条一共4g内存,但是任务管理器显示,只有1.6g可用,我的系统是win864位的,华硕笔记本参数如图2,有那位同仁解决过此类问题啊?![图片]...
  • 16G内存显示15.9G可用的解法

    万次阅读 2016-12-12 20:31:00
    技嘉B85主板,I5--4460,独显,16G内存,装完win7 64位系统显示16G内存显示15.9G可用,解法如下 进入BIOS设置中,将集显关闭,内存即可恢复到16G
  • [img=http://img.my.csdn.net/uploads/201303/30/1364657656_2313.jpg][/img] 笔记本为硬件保留内存1.6G怎么释放?4G内存只有2.4G可用
  • 朋友送来一个电脑,说慢的不行,配置是 双核 1G内存 120G硬盘 拿过来一看,感觉很旧,朋友说朋友的朋友(某人)买的,花了几百块,卖的人说是透的.但是后感觉就是上当了,打开一看.windowsXP的启动界面,到登录的时候,变成98...
  • 1G 内存如何优化mysql

    千次阅读 2016-01-13 09:59:32
    同时在线访问量继续增大 对于1G 内存的服务器明显感觉到吃力 严重时甚至每天都会死机 或者时不时的服务器卡一下 这个问题曾经困扰了我  半个多月 MySQL 使用是很具伸缩性的算法,因此你通常能用很少的内存运行或...
  • 女:对,就是那个70G的,这个内存是我本本上内存的很多倍,应该够用了吧。 男:呃......这个不能加起来的,不是这样算的。 女:为什么不能加,你过来看,人家上面就是这么写的。 男:........
  • oracle 11G自动内存管理

    2015-07-14 22:08:16
    oracle11G以后引入自动内存管理 因为我们只需要设置memory_target即可, 甚至我们不需要在设置如下参数,11g如下参数一般默认都为0 sga_target  shared_pool_size    db_cache_size = db_block...
  • oracle11g 自动内存管理

    千次阅读 2017-05-08 17:18:30
    11g开始,能自动管理sga,pga,称为amm MEMORY_MAX_TARGE:这个参数指定了 MEMORY_TARGET这个参数能够设置的最大值,memory_target这个参数指定了系统级别的可用内存,可以根据需要减少或增加sga,pga的大小。在一个...
  • oracle 11G数据库实例增加内存

    千次阅读 2019-03-01 10:31:45
    后思考,可能是orcl实例的内存资源有限,造成资源跑满,所以进行尝试更改系统内存资源操作。 1、服务器环境 winserver 2012 ;oracle 11G 2、具体更改步骤: 登陆服务器,找到sqlplus----执行如下命令 用户名:...
  • Oracle 10G 如何使用超过1.7G内存

    千次阅读 2009-10-19 16:54:00
    Oracle 10G 如何使用超过1.7G内存2009-07-08 12:52:46 如果你的(){tagshow(event, ORACLE);}" href="javascript:;" target="_self">ORACLE 版本是32位的,如果不做一些配置你是无论如何使用不到1.7G以上内存的。前
  • 按组合键win+r,调出运行窗口,输入msconfig,选择引导→选中当前的系统→高级选项→取消勾选 然后再次勾选 最大内存→保存确定重启计算机,就可以看到最大内存
  • oracle11g自动内存管理

    千次阅读 2012-06-05 23:15:23
    Oracle一直不停的在为Orace数据库的自动化管理努力着,11G中的自动内存管理是Oracle数据库中又一新的里程碑,通过新参数MEMORY_TARGET 来代替PGA和SGA的配置,ORACLE在运行过程中会自动调节PGA和SGA的大小,跟10G中...
  • 服务器配置:CPU : Intel 5420内存 : 4G硬盘 : 320G服务器分区: / : 10G /boot : 1G ext2 /usr : 50G  /var : 20G  /tmp : 10G /home :185G Swap : 4G
  • 现在更新的手机要么是6G运行内存(RAM),要么8G,仅仅差2个G的运行内存就要多出几百块钱,有人可能会说运行内存越大速度越快,这是肯定的,运行内存顾名思义就是在APP运行时的内存,我们手机的APP在运行的时候...
  • Oracle 内存管理模式: AMM(Automatic Memory Management) 该模式对Oracle使用的总内存(SGA+PGA)进行统一自动管理 该模式是完全托管模式,当库不重要或缺少专门的维护DBA的时候可以使用 该模式与HugePage大页...
  • Oracle 11g设置内存自动管理: ALTER SYSTEM SET MEMORY_TARGET = 1024M SCOPE=SPFILE; ALTER SYSTEM SET memory_max_target = 1500M SCOPE=SPFILE; ALTER SYSTEM SET SGA_TARGET = 0 SCOPE=SPFILE; A...
  • 帮朋友清理电脑时,发现的系统所占容量高达98G,吓我一跳。用这个方法,删了很多cache文件,一下清出了58G的空间(原因是:看视频download的cache文件过多) ......
  • ORACLE11G内存管理参数

    千次阅读 2013-06-04 03:52:27
    今天,对ORACLE11G的几个内存参数看了一下,记录如下,大家可以参考: 1、首先,在ORACLE11G的INIT.ORA里,有“__”开头的参数,也就是以两个下划线开头的参数,这种参数应该是系统自动调整的结果,第一次启动系统...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 32,894
精华内容 13,157
关键字:

内存g