• accelerate.h,accelerate.cc

    加速操作,对语音信号处理以实现快速播放。

    Accelerate类继承自父类TimeStretch,大多数功能由TimeStretch实现。

    ReturnCodes Process(const int16_t* input,
    size_t input_length,
    bool fast_accelerate,
    AudioMultiVector* output,
    size_t* length_change_samples);

    从|input|中读入长度为|input_length|的样本点;输出到算法缓冲区|output|中;改动的样本点数为|length_change_samples|;当fast_accelerate设置为True时,将删除更多的样本点,这有可能会导致删除多个音高周期。函数返回枚举值RetureCodes,表明操作的状态。

    附:ReturnCodes定义:

      enum ReturnCodes {
    kSuccess = 0,
    kSuccessLowEnergy = 1,
    kNoStretch = 2,
    kError = -1
    };
  • audio_multi_vector.h,audio_multi_vector.cc

    算法缓冲区AudioMultiVector的实现:

    std::vector<AudioVector*> channels_;  // AudioMultiVector

    方法:

    // 创建一个有N个声道且空的AudioMultiVector,声道数N必须大于0
    explicit AudioMultiVector(size_t N); // 需要附加的数据append_this,附加数据长度length
    // 在每个声道后增加append_this数据,length必须可以整除声道数N,操作完成后每个声道增加length/N个样本点
    virtual void PushBackInterleaved(const int16_t* append_this, size_t length); // 在每个声道后附加append_this数据,操作完成后每个声道增加length个样本点
    virtual void PushBack(const AudioMultiVector& append_this); // 取append_this的index到最后,附加到AudioMultiVector
    // 注意:append_this和this的声道数一致
    virtual void PushBackFromIndex(const AudioMultiVector& append_this,
    size_t index); // 从每个声道删除最前面的length个样本点
    virtual void PopFront(size_t length); // 从每个声道删除最后面的length个样本点
    virtual void PopBack(size_t length);
    ...

    类似于标准库中的Vector顺序容器。

  • audio_vector.h,audio_vector.cc

    AudioVector保存上述AudioMultiVector的每一个通道的数据。

  • background_noise.h,background_noise.cc

    产生背景噪声。经VAD之后,如果没有语音,则产生背景噪声。

  • buffer_level_filter.h,buffer_level_filter.cc

    计算抖动缓冲延迟bufferBufferFilt?

  • comfort_noise.h,comfort_noise.cc

    CNG(舒适背景噪声)生成接口类。

  • cross_correlation.h,cross_correlation.cc

    计算两个序列的互相关系数。互相关系数有很多,到底是计算哪个互相关系数?

  • decision_logic_fax.h,decision_logic_fax.cc

    播放模式kPlayoutFaxkPlayoutOff的决策逻辑。

    播放模式kPlayoutFaxkPlayoutOff具体是什么?

  • decision_logic_normal.h,decison_logic_normal.cc

    播放模式kPlayoutOnkPlayoutStreaming的决策逻辑。

  • decision_logic.h,decision_logic.cc

    包含决策逻辑的基类DecisionLogic,所有子类必须实现:

      virtual Operations GetDecisionSpecialized(const SyncBuffer& sync_buffer,
    const Expand& expand,
    size_t decoder_frame_length,
    const Packet* next_packet,
    Modes prev_mode,
    bool play_dtmf,
    bool* reset_decoder,
    size_t generated_noise_samples) = 0;

    返回接下来的操作。

  • decoder_database.h,decoder_database.cc

    decoders_:

    typedef std::map<uint8_t, DecoderInfo> DecoderMap;
    DecoderMap decoders_; // 键值对decoders_用来存储decoder的信息

    DecoderInfo是定义在decoder_database.h中结构体,用于保存音频格式,解码器名称等信息。

  • delay_manager.h,delay_manager.cc

    delay_peak_detector.h,delay_peak_detector.cc

    统计IAT的峰值,这在计算网络延时时需要用到。

  • dsp_helper.h,dsp_helper.cc

    DSP辅助类,包含各种信号处理函数。

  • dtmf_buffer.h,dtmf_buffer.cc

    DTMF(RFC 4733)辅助类,包括提供保存DTMF事件缓冲区。

    DTMF:双音多频信号DTMF,电话系统中电话机和交换机之间的一种用户信令。

  • dtmf_tone_generator.h,dtmf_tone_generator.cc

    DTMF信号生成器。

  • expand.h,expand.cc

    抖动隐藏的一种操作:EXPAND,丢包补偿(PLC)

  • merge.h,merge.cc

    抖动隐藏的一种操作:MERGE,融合

  • nack_tracker.h,nack_tracker.cc

    包含NackTracker类,追踪丢失的数据包,并且估计给定数据包播放时间的估计值。

  • neteq_decoder_enum.h,neteq_decoder_enum.cc

    NetEQ解码器的枚举值

  • neteq_impl.h,neteq_impl.cc

    NetEQ接口,包含最外层主要实现函数,比如输入RTP包和输出音频。

  • neteq.cc

    NetEQ主函数入口,实例化NetEqImpl对象。

  • normal.h,normal.cc

    DSP的正常播放操作。适用于没有任何数据包丢失,不需要伸缩音频信号,也不需要特殊操作的情况。

  • packet_buffer.h,packet_buffer.cc

    存储从网络中获得的RTP数据包,这些数据包还没有通过解码器解码。

    typedef std::list<Packet> PacketList;
  • packet.h,packet.cc

    作为PacketBuffer的一个元素。

  • post_decode_vad.h,post_decode_vad.cc

    解码后,进行VAD?

  • preemptive_expand.h,preemptive_expand.cc

    减速播放操作。大多数操作由父类TimeStretch实现。

      ReturnCodes Process(const int16_t *pw16_decoded,
    size_t len,
    size_t old_data_len,
    AudioMultiVector* output,
    size_t* length_change_samples);

    pw16_decoded读入,样本数len,通过time-stretching增加的样本数为length_change_samples

  • random.vector.h,random_vector.cc

    生成随机样本。

    void Generate(size_t length, int16_t* output);

    生成length个样本,输出到output中去。

  • red_playload_splitter.h,red_playload_splitter.cc

    RED负载分割成小块。

  • rtcp.h,rtcp.cc

    处理RTCP的统计信息。

  • statistics_caculator.h,statistics_caculator.cc

    NetEQ中的各种网络统计信息,包括通过EXPAND产生的样本数,丢弃的数据包等。

  • sync_buffer.h,sync_buffer.cc

    提供语音缓冲区实现类SyncBuffer

  • tick_timer.h,tick_timer.cc

    时间计数器。提供包括秒表,倒计时等功能。

  • time_stretch.h,time_stretch.cc

    加速Accelerate和减速PreemptiveExpand操作的基类,并实现大部分功能。

  • timestamp_scaler.h,timestamp_scaler.cc

    提供类TimestampScaler,用于内部时间戳和外部时间戳的转换。内部时间戳使用采样率作为单位,而外部时间戳(RTP自身携带的时间戳)使用固有的时钟频率。

NetEQ主要文件简介的更多相关文章

  1. Django框架-目录文件简介

    Rhel6.5 Django1.10 Python3.5 Django框架-目录文件简介 1.介绍Django Django:一个可以使Web开发工作愉快并且高效的Web开发框架. 使用Django, ...

  2. Android资源文件简介

    Android资源文件简介 1. Android应用资源的作用 (1) Android项目中文件分类 在Android工程中, 文件主要分为下面几类 : 界面布局文件, Java src源文件, 资源 ...

  3. properties文件简介及其常用Java操作

    一.properties文件简介 java中的properties文件是一种配置文件,主要用于表达配置信息,文件类型为*.properties,格式为文本文件,文件的内容是格式是"键=值&q ...

  4. [安卓]AndroidManifest.xml文件简介及结构

    1.AndroidManifest.xml文件简介: 每个应用程序在它的根目录中都必须要有一个AndroidManifest.xml(名字须精确一致)文件.这个清单把应用程序的基本信息提交给Andro ...

  5. (转)IOS之Info.plist文件简介

    原文:IOS之Info.plist文件简介 http://www.apkbus.com/android-130240-1-1.html (出处: Android开发论坛 - 安卓开发论坛 - Andr ...

  6. Git .gitignore文件简介及使用

    Git .gitignore文件简介及使用 By:授客 QQ:1033553122 .gitignore 这个文件的作用就是告诉Git哪些文件不需要添加到版本管理中.实际项目中,很多文件都是不需要版本 ...

  7. mysql数据库文件简介和应用

    存放目录: 用 whereis my.cnf 查看mysql配置文件的目录,查看my.cnf的datadir参数可找到mysql数据库文件的存放目录. 本机存放的目录为/var/lib/mysql,进 ...

  8. PYC文件简介

    PYC文件简介¶ 不说废话,这里说的pyc文件就是 Python 程序编译后得到的字节码文件 (py->pyc). 基本格式¶ pyc文件一般由3个部分组成: 最开始4个字节是一个Maigc i ...

  9. YAML文件简介

    编程免不了要写配置文件,怎么写配置也是一门学问. YAML 是专门用来写配置文件的语言,非常简洁和强大,远比 JSON 格式方便. 本文介绍 YAML 的语法,以 JS-YAML 的实现为例.你可以去 ...

随机推荐

  1. Netty4实战 - TCP粘包&拆包解决方案

    Netty是目前业界最流行的NIO框架之一,它的健壮性.高性能.可定制和可扩展性在同类框架中都是首屈一指.它已经得到了成百上千的商业项目的验证,例如Hadoop的RPC框架Avro就使用了Netty作 ...

  2. OpenCV使用CMake和MinGW的编译安装

    官方教程:https://wiki.qt.io/How_to_setup_Qt_and_openCV_on_Windows 软件环境: Qt:5.11 CMake-3.14.4 OpenCV-4.1. ...

  3. C语言输入单字符避免回车的四种方法

    在scanf()中使用'\n'屏蔽回车符号. scanf("%d\n", &n); scanf("%c", &c); 2.在scanf()格式串 ...

  4. CentOS7安装Kubernetes1.16.3

    一.概述 手工搭建 Kubernetes 集群是一件很繁琐的事情,为了简化这些操作,就产生了很多安装配置工具,如 Kubeadm ,Kubespray,RKE 等组件,我最终选择了官方的 Kubead ...

  5. ServerSocketChannel简述

    一.前言 前篇文章中了解了SocketChannel:提供了连接到套接字通道,从某种层面而言,NIO中提供了类似于java.net包中对于网络操作的api的功能.既然已经有连接到Socket套接字的通 ...

  6. docker镜像上传阿里云仓库

    推送至阿里云镜像:1.首先在阿里云上选择容器镜像服务,创建命名空间以及镜像仓库2. docker login --username=zhangshitongsky@163.com registry.c ...

  7. ASP.NET Core MVC的Razor视图中,使用Html.Raw方法输出原生的html

    我们在ASP.NET Core MVC项目中,有一个Razor视图文件Index.cshtml,如下: @{ Layout = null; } <!DOCTYPE html> <ht ...

  8. 【转载】socket通信-C#实现tcp收发字符串文本数据

    在日常碰到的项目中,有些场景需要发送文本数据,也就是字符串,比如简单的聊天文字,JSON字符串等场景.那么如何如何使用SharpSocket来收发此类数据呢?其中要掌握的关键点是什么呢? 点击查看原博 ...

  9. Matplotlib中figure、subplot、axes、axis的区别

    参考链接:https://blog.csdn.net/JasonZhu_csdn/article/details/85860963 画图板/画布: 这是一个基础载体,类似实际的画图板,用pyplot. ...

  10. drf之视图类与路由

    视图 Django REST framwork 提供的视图的主要作用: 控制序列化器的执行(检验.保存.转换数据) 控制数据库查询的执行 2个视图基类 APIView rest_framework.v ...