亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? plc.h

?? Astercon2 開源軟交換 2.2.0
?? H
字號:
/*! \file * \brief SpanDSP - a series of DSP components for telephony * * plc.h * * \author Steve Underwood <steveu@coppice.org> * * Copyright (C) 2004 Steve Underwood * * All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * * This version may be optionally licenced under the GNU LGPL licence. * * A license has been granted to Digium (via disclaimer) for the use of * this code. */#if !defined(_PLC_H_)#define _PLC_H_#ifdef SOLARIS#include <sys/int_types.h>#else#if defined(__OpenBSD__) || defined( __FreeBSD__)#include <inttypes.h>#else#include <stdint.h>#endif#endif/*! \page plc_page Packet loss concealment\section plc_page_sec_1 What does it do?The packet loss concealment module provides a suitable synthetic fill-in signal,to minimise the audible effect of lost packets in VoIP applications. It is nottied to any particular codec, and could be used with almost any codec which does notspecify its own procedure for packet loss concealment.Where a codec specific concealment procedure exists, the algorithm is usually builtaround knowledge of the characteristics of the particular codec. It will, therefore,generally give better results for that particular codec than this generic concealer will.\section plc_page_sec_2 How does it work?While good packets are being received, the plc_rx() routine keeps a record of the trailingsection of the known speech signal. If a packet is missed, plc_fillin() is called to producea synthetic replacement for the real speech signal. The average mean difference function(AMDF) is applied to the last known good signal, to determine its effective pitch.Based on this, the last pitch period of signal is saved. Essentially, this cycle of speechwill be repeated over and over until the real speech resumes. However, several refinementsare needed to obtain smooth pleasant sounding results.- The two ends of the stored cycle of speech will not always fit together smoothly. This can  cause roughness, or even clicks, at the joins between cycles. To soften this, the  1/4 pitch period of real speech preceeding the cycle to be repeated is blended with the last  1/4 pitch period of the cycle to be repeated, using an overlap-add (OLA) technique (i.e.  in total, the last 5/4 pitch periods of real speech are used).- The start of the synthetic speech will not always fit together smoothly with the tail of  real speech passed on before the erasure was identified. Ideally, we would like to modify  the last 1/4 pitch period of the real speech, to blend it into the synthetic speech. However,  it is too late for that. We could have delayed the real speech a little, but that would  require more buffer manipulation, and hurt the efficiency of the no-lost-packets case  (which we hope is the dominant case). Instead we use a degenerate form of OLA to modify  the start of the synthetic data. The last 1/4 pitch period of real speech is time reversed,  and OLA is used to blend it with the first 1/4 pitch period of synthetic speech. The result  seems quite acceptable.- As we progress into the erasure, the chances of the synthetic signal being anything like  correct steadily fall. Therefore, the volume of the synthesized signal is made to decay  linearly, such that after 50ms of missing audio it is reduced to silence.- When real speech resumes, an extra 1/4 pitch period of sythetic speech is blended with the  start of the real speech. If the erasure is small, this smoothes the transition. If the erasure  is long, and the synthetic signal has faded to zero, the blending softens the start up of the  real signal, avoiding a kind of "click" or "pop" effect that might occur with a sudden onset.\section plc_page_sec_3 How do I use it?Before audio is processed, call plc_init() to create an instance of the packet lossconcealer. For each received audio packet that is acceptable (i.e. not including those beingdropped for being too late) call plc_rx() to record the content of the packet. Note this maymodify the packet a little after a period of packet loss, to blend real synthetic data smoothly.When a real packet is not available in time, call plc_fillin() to create a sythetic substitute.That's it!*/#define SAMPLE_RATE     8000/*! Minimum allowed pitch (66 Hz) */#define PLC_PITCH_MIN           120/*! Maximum allowed pitch (200 Hz) */#define PLC_PITCH_MAX           40/*! Maximum pitch OLA window */#define PLC_PITCH_OVERLAP_MAX   (PLC_PITCH_MIN >> 2)/*! The length over which the AMDF function looks for similarity (20 ms) */#define CORRELATION_SPAN        160/*! History buffer length. The buffer much also be at leat 1.25 times    PLC_PITCH_MIN, but that is much smaller than the buffer needs to be for    the pitch assessment. */#define PLC_HISTORY_LEN         (CORRELATION_SPAN + PLC_PITCH_MIN)typedef struct{    /*! Consecutive erased samples */    int missing_samples;    /*! Current offset into pitch period */    int pitch_offset;    /*! Pitch estimate */    int pitch;    /*! Buffer for a cycle of speech */    float pitchbuf[PLC_PITCH_MIN];    /*! History buffer */    int16_t history[PLC_HISTORY_LEN];    /*! Current pointer into the history buffer */    int buf_ptr;} plc_state_t;#ifdef __cplusplusextern "C" {#endif/*! Process a block of received audio samples.    \brief Process a block of received audio samples.    \param s The packet loss concealer context.    \param amp The audio sample buffer.    \param len The number of samples in the buffer.    \return The number of samples in the buffer. */int plc_rx(plc_state_t *s, int16_t amp[], int len);/*! Fill-in a block of missing audio samples.    \brief Fill-in a block of missing audio samples.    \param s The packet loss concealer context.    \param amp The audio sample buffer.    \param len The number of samples to be synthesised.    \return The number of samples synthesized. */int plc_fillin(plc_state_t *s, int16_t amp[], int len);/*! Process a block of received V.29 modem audio samples.    \brief Process a block of received V.29 modem audio samples.    \param s The packet loss concealer context.    \return A pointer to the he packet loss concealer context. */plc_state_t *plc_init(plc_state_t *s);#ifdef __cplusplus}#endif#endif/*- End of file ------------------------------------------------------------*/

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品天美传媒沈樵| 亚洲视频一区二区在线观看| 国产一区视频在线看| 欧美国产亚洲另类动漫| 色8久久精品久久久久久蜜| 日韩电影一区二区三区| 中文字幕免费一区| 欧美三级乱人伦电影| 国产麻豆日韩欧美久久| 亚洲欧美乱综合| 欧美变态tickle挠乳网站| 床上的激情91.| 天堂一区二区在线| 国产日韩欧美在线一区| 欧美日韩不卡一区| 成人国产精品免费| 日韩黄色片在线观看| 久久奇米777| 欧美日韩中文国产| 国产高清一区日本| 亚洲v日本v欧美v久久精品| 久久久www成人免费无遮挡大片| 色婷婷亚洲精品| 国产精品一区二区无线| 亚洲18女电影在线观看| 国产精品久久久久久久岛一牛影视 | 亚洲在线观看免费视频| 久久综合给合久久狠狠狠97色69| 欧洲色大大久久| 国产成人自拍网| 懂色一区二区三区免费观看| 亚洲国产一区二区a毛片| 国产精品毛片大码女人| 91一区二区在线| 成人精品国产一区二区4080| 韩国av一区二区三区| 香港成人在线视频| 亚洲天天做日日做天天谢日日欢 | 亚洲成av人片在线| 国产精品高清亚洲| 久久日韩精品一区二区五区| 欧美久久久久久久久| 在线观看视频一区| 91原创在线视频| k8久久久一区二区三区| 国产成人综合视频| 精品在线你懂的| 日本怡春院一区二区| 亚洲电影在线播放| 亚洲一二三区不卡| 亚洲精品第一国产综合野| 国产精品网站导航| 国产丝袜在线精品| 国产日韩高清在线| 国产日韩欧美精品一区| 中文欧美字幕免费| 国产精品午夜春色av| 国产精品网站一区| 一区二区三区波多野结衣在线观看| 国产精品理论在线观看| 国产精品不卡在线| 最好看的中文字幕久久| 国产欧美一区二区精品忘忧草 | 精品国产乱码久久久久久蜜臀 | 久久网这里都是精品| 2020国产精品自拍| 久久精品无码一区二区三区| 日韩你懂的电影在线观看| 91麻豆精品国产91久久久久久| 91精品国产乱码久久蜜臀| 制服丝袜一区二区三区| 精品国产制服丝袜高跟| 久久久五月婷婷| 国产精品卡一卡二卡三| 亚洲女同一区二区| 亚洲一区二区三区四区在线免费观看| 一区二区欧美在线观看| 一区二区三区四区不卡在线| 日本女优在线视频一区二区| 国产一区二区三区久久久| 成人综合婷婷国产精品久久免费| 97久久精品人人爽人人爽蜜臀| 色噜噜久久综合| 在线综合视频播放| 亚洲精品一区二区精华| 国产精品国产三级国产普通话蜜臀 | 午夜精品久久久久久久99水蜜桃| 日韩中文字幕麻豆| 激情久久五月天| 99精品视频在线免费观看| 色婷婷久久99综合精品jk白丝| 欧美日韩国产成人在线免费| 精品免费一区二区三区| 国产精品免费aⅴ片在线观看| 国产精品麻豆99久久久久久| 午夜在线电影亚洲一区| 国产成人精品影院| 日本道免费精品一区二区三区| 亚洲欧美区自拍先锋| 日本不卡一二三| 99久久婷婷国产综合精品| 欧美日韩精品欧美日韩精品| 久久影视一区二区| 视频一区免费在线观看| 成人网男人的天堂| 欧美男同性恋视频网站| 国产精品欧美一级免费| 日韩精品乱码免费| 91社区在线播放| 精品久久久久久久久久久久久久久| 久久嫩草精品久久久精品一| 亚洲午夜在线观看视频在线| 成人激情电影免费在线观看| 欧美嫩在线观看| 亚洲女爱视频在线| 久久精品国产免费| 在线免费视频一区二区| 精品国产免费一区二区三区香蕉| 亚洲视频1区2区| 国产乱码一区二区三区| 欧美日韩在线免费视频| 国产欧美一区二区三区在线老狼| 日韩影院免费视频| 91麻豆蜜桃一区二区三区| 久久精品免费在线观看| 日本欧美韩国一区三区| 欧洲av在线精品| 国产精品乱码一区二三区小蝌蚪| 蜜桃一区二区三区四区| 91国偷自产一区二区三区成为亚洲经典 | 亚洲制服丝袜在线| 成人午夜在线播放| 国产日韩av一区二区| 国产麻豆精品theporn| 欧美videossexotv100| 蜜桃av一区二区在线观看| 91精品国产综合久久婷婷香蕉 | 国产高清久久久| 久久久久久亚洲综合影院红桃| 国产在线一区观看| 26uuu成人网一区二区三区| 美女视频一区在线观看| 欧美电视剧在线看免费| 久久国产乱子精品免费女| 精品对白一区国产伦| 国产精品羞羞答答xxdd| 国产精品免费aⅴ片在线观看| 不卡一区二区在线| 亚洲人妖av一区二区| 欧美综合亚洲图片综合区| 亚洲3atv精品一区二区三区| 日韩午夜激情免费电影| 韩国三级电影一区二区| 国产精品视频一区二区三区不卡| 成人福利视频在线看| 一区二区三区视频在线看| 在线播放欧美女士性生活| 久久激五月天综合精品| 欧美激情一区在线观看| 色综合天天性综合| 天堂精品中文字幕在线| 精品国产乱码久久久久久夜甘婷婷| 国产+成+人+亚洲欧洲自线| 亚洲日本va午夜在线电影| 欧美日本乱大交xxxxx| 卡一卡二国产精品| 国产精品午夜在线| 欧美在线|欧美| 日韩不卡一区二区三区| 国产亚洲精品福利| 色综合 综合色| 美日韩一区二区| 国产精品久久久久9999吃药| 欧美日韩中文字幕一区二区| 久久精品国产精品亚洲综合| 国产精品护士白丝一区av| 欧美日韩精品一区二区天天拍小说 | 久久成人精品无人区| 国产精品久久网站| 3d动漫精品啪啪| 波多野结衣亚洲| 日韩激情一二三区| 国产精品久久久久影院亚瑟| 欧美情侣在线播放| 成人黄色电影在线| 日韩avvvv在线播放| 国产精品久久久久9999吃药| 91精品国产手机| 97精品久久久久中文字幕| 美女视频网站黄色亚洲| 亚洲人精品午夜| 亚洲精品一区二区在线观看| 欧美三级电影精品| 风间由美一区二区三区在线观看 | 国产一区美女在线| 亚洲一区二区三区精品在线| 国产偷国产偷亚洲高清人白洁| 欧美日韩黄视频| 99re在线精品| 国产精品自拍网站|