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

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

?? plc.h

?? 傳真通信V27 V29 V17 T38解調與解碼
?? H
字號:
/* * SpanDSP - a series of DSP components for telephony * * plc.h * * Written by 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 version 2, as * published by the Free Software Foundation. * * 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. * * $Id: plc.h,v 1.15 2007/04/08 08:16:18 steveu Exp $ *//*! \file */#if !defined(_SPANDSP_PLC_H_)#define _SPANDSP_PLC_H_/*! \page plc_page Packet loss concealment\section plc_page_sec_1 What does it do?The packet loss concealment module provides a synthetic fill-in signal, to minimisethe audible effect of lost packets in VoIP applications. It is not tied to anyparticular 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, that 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.The PLC code implements an algorithm similar to the one described in Appendix 1 of G.711.However, the G.711 algorithm is optimised for 10ms packets. Few people use such smallpackets. 20ms is a much more common value, and longer packets are also quite common. Thealgorithm has been adjusted with this in mind. Also, the G.711 approach causes analgorithmic delay, and requires significant buffer manipulation when there is no packetloss. The algorithm used here avoids this. It causes no delay, and achieves comparablequality with normal speech.Note that both this algorithm, and the one in G.711 are optimised for speech. For most kindsof music a much slower decay on bursts of lost packets give better results.\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 synthetic 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!*//*! 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)/*!    The generic packet loss concealer context.*/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;#if defined(__cplusplus)extern "C"{#endif/*! Process a block of received audio samples for PLC.    \brief Process a block of received audio samples for PLC.    \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);/*! Initialise a packet loss concealer context.    \brief Initialise a PLC context.    \param s The packet loss concealer context.    \return A pointer to the the packet loss concealer context. */plc_state_t *plc_init(plc_state_t *s);/*! Free a packet loss concealer context.    \param s The packet loss concealer context.    \return 0 for OK. */int plc_release(plc_state_t *s);#if defined(__cplusplus)}#endif#endif/*- End of file ------------------------------------------------------------*/

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
美女免费视频一区二区| 美女mm1313爽爽久久久蜜臀| 欧美老肥妇做.爰bbww视频| 精品一区二区三区在线观看国产| 亚洲人吸女人奶水| 久久久欧美精品sm网站| 欧美日韩高清不卡| 色综合中文字幕| 日韩精品免费专区| 国产精品久久久久aaaa| 精品久久人人做人人爽| 日韩一区二区三区精品视频| 欧美日韩性生活| 91麻豆免费观看| 色综合色狠狠天天综合色| www.欧美.com| 成人app网站| 美女视频网站黄色亚洲| 图片区小说区国产精品视频| 亚洲午夜三级在线| 日本一区二区三级电影在线观看 | 欧美亚洲一区二区在线观看| 国产精品一区二区久激情瑜伽| 美日韩黄色大片| 日本不卡高清视频| 激情综合网最新| 国产一区二区三区四| 狠狠色狠狠色合久久伊人| 久久成人综合网| 国产呦萝稀缺另类资源| 婷婷六月综合网| 免费一级片91| 91在线国产观看| 日韩精品中文字幕一区| 中文字幕av一区二区三区免费看| 一区二区在线观看不卡| 久久国产精品99精品国产 | 国产视频一区二区在线| 亚洲美女区一区| 久久精品久久99精品久久| 不卡一区二区中文字幕| 欧美欧美欧美欧美| 中文字幕一区视频| 奇米888四色在线精品| av综合在线播放| 欧美成人三级电影在线| 亚洲精品国产一区二区精华液 | 欧美精品一区二区三区在线播放| 中文字幕一区二区三| 蜜桃视频免费观看一区| 一本一本大道香蕉久在线精品| 欧美精品一区二区三区四区| 亚洲国产日产av| 9久草视频在线视频精品| 日韩视频一区二区三区在线播放 | 色偷偷久久人人79超碰人人澡| 国产精品免费观看视频| 婷婷综合久久一区二区三区| 不卡影院免费观看| 久久色中文字幕| 蜜桃久久精品一区二区| 欧美亚洲国产一区在线观看网站| 国产蜜臀av在线一区二区三区| 日本特黄久久久高潮| 在线观看日韩国产| 亚洲欧美激情小说另类| 国产91丝袜在线18| www国产精品av| 免费精品视频在线| 欧美一区二区三区思思人| 亚洲品质自拍视频网站| 不卡欧美aaaaa| 国产午夜精品一区二区三区嫩草 | 国产91在线观看| 国产亚洲午夜高清国产拍精品 | 国产精品99久久久久久宅男| 日韩视频免费直播| 久久97超碰国产精品超碰| 欧美成人精品福利| 精品一区二区在线播放| 久久久久综合网| 国产精品88888| 国产欧美日韩久久| 不卡av在线免费观看| 欧美激情一区二区三区四区 | 中文字幕一区免费在线观看| 成人免费视频免费观看| 亚洲国产成人自拍| 99麻豆久久久国产精品免费 | 亚洲男女毛片无遮挡| 色婷婷亚洲综合| 美女一区二区久久| 日韩精品一区二区三区四区| 美女视频黄免费的久久| 国产欧美日产一区| 91在线porny国产在线看| 亚洲影视在线观看| 日韩一区二区在线看片| 国产呦精品一区二区三区网站| 国产欧美视频一区二区| 色综合天天综合网国产成人综合天| 亚洲欧美韩国综合色| 欧美人狂配大交3d怪物一区| 久久aⅴ国产欧美74aaa| 久久久久久久久久久99999| 99在线精品免费| 日韩av在线发布| 中文字幕av免费专区久久| 在线免费观看日本一区| 免费成人在线网站| 最新国产の精品合集bt伙计| 欧美性猛片aaaaaaa做受| 紧缚奴在线一区二区三区| 曰韩精品一区二区| 91精品国产综合久久久久久久| 国产福利一区二区三区视频| 一区二区三区欧美亚洲| 2019国产精品| 欧美日本不卡视频| 99视频在线观看一区三区| 麻豆精品国产91久久久久久| 亚洲日本一区二区| 久久在线免费观看| 欧美日韩一区不卡| 99久久精品情趣| 精品一区二区三区不卡| 午夜精品福利一区二区蜜股av| 国产亚洲va综合人人澡精品| 欧美一区二区精美| 在线观看一区二区视频| 成人av网站在线| 国产自产v一区二区三区c| 亚洲午夜激情av| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆| 欧美高清一级片在线| 日本黄色一区二区| 成人av网站在线观看免费| 久久99久久精品欧美| 日韩av高清在线观看| 亚洲一区二区欧美| 一区二区三区中文在线| 亚洲欧美中日韩| 国产精品午夜在线观看| 国产欧美精品一区| 国产欧美一区二区精品秋霞影院| 欧美videofree性高清杂交| 6080国产精品一区二区| 91精品福利视频| 在线观看亚洲a| 91国内精品野花午夜精品| 一本一本大道香蕉久在线精品 | 蜜乳av一区二区| 免费xxxx性欧美18vr| 男女男精品视频网| 免费在线看一区| 另类综合日韩欧美亚洲| 日本中文一区二区三区| 舔着乳尖日韩一区| 日日夜夜精品免费视频| 秋霞电影网一区二区| 免费观看一级欧美片| 国内精品伊人久久久久影院对白| 青青草91视频| 国产在线视频一区二区三区| 国产一区二区久久| jlzzjlzz亚洲日本少妇| 色综合咪咪久久| 欧美精品aⅴ在线视频| 日韩三级视频在线观看| 久久久久免费观看| 中文字幕在线一区| 亚洲狠狠丁香婷婷综合久久久| 夜夜揉揉日日人人青青一国产精品| 亚洲成在线观看| 精品一区二区在线视频| 成人免费视频网站在线观看| 日本韩国一区二区| 日韩欧美一级二级三级久久久| 精品日韩在线一区| 中文字幕乱码亚洲精品一区| 亚洲女女做受ⅹxx高潮| 人人狠狠综合久久亚洲| 国产精品一区二区在线播放 | 9191国产精品| 久久久久久久综合色一本| 国产精品国产三级国产aⅴ原创 | 久久久久久麻豆| 一区二区欧美国产| 国内精品写真在线观看| 97精品久久久午夜一区二区三区| 欧美日韩久久一区二区| 国产亚洲人成网站| 亚洲成人动漫在线观看| 国产不卡高清在线观看视频| 欧美午夜不卡视频| 国产欧美一区在线| 免费在线欧美视频| 91国产成人在线| 国产性色一区二区| 青青草国产成人99久久|