• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            牽著老婆滿街逛

            嚴以律己,寬以待人. 三思而后行.
            GMail/GTalk: yanglinbo#google.com;
            MSN/Email: tx7do#yahoo.com.cn;
            QQ: 3 0 3 3 9 6 9 2 0 .

            SPEEX重采樣分析(一)

            轉載自:http://blog.csdn.net/ahyswang/article/details/7675390

            簡介

            • 算法速度快
            • SIMD(SSE)指令支持
            • 低內存
            • 高質量

            該算法是基于最原始的重采樣算法:

               Smith, Julius O. Digital Audio ResamplingHome Page
               Center for Computer Research in Music and Acoustics (CCRMA), 
               Stanford University, 2007.
               Web published at http://www-ccrma.stanford.edu/~jos/resample/.

             

            這里使用cubic   interpolation代替linear interpolation。減少CPU時間,能更好使用SIDM算法。

             

            接口

            speex_resampler_init

            功能

            創建實例

            函數

            SpeexResamplerState *speex_resampler_init(spx_uint32_t nb_channels,                                           spx_uint32_t in_rate,

            spx_uint32_t out_rate,                                             int quality,                                          

            int *err);

            參數

            nb_channels [in] 通道數

            in_rate     [in] 輸入音頻的采樣率

            out_rate    [in] 輸出音頻的采樣率

            quality     [in] 重采樣質量

            err         [out] 錯誤碼

            返回值

            成功返回實例句柄,失敗返回NULL

            簡介

             

             

             

             

            speex_resampler_init_frac

            功能

            根據input/output比例來創建實例

            函數

            SpeexResamplerState *speex_resampler_init_frac(spx_uint32_t nb_channels,                                                spx_uint32_t ratio_num,    

            spx_uint32_t ratio_den,                                                 spx_uint32_t in_rate,                                                      spx_uint32_t out_rate,                                                  int quality,

            int *err);

            參數

            nb_channels    [in]通道數

            ratio_num      [in]比例分子                  

            ratio_den      [in]比例分母       

            in_rate        [in]輸入的采樣率 

            out_rate       [in]輸出的采樣率

            quality        [in]重采樣質量

            err            [out]錯誤碼

            返回值

            成功返回實例句柄,失敗返回NULL

            簡介

             

             

             

            speex_resampler_destroy

            功能

            銷毀實例

            函數

            void speex_resampler_destroy(SpeexResamplerState *st);

            參數

            St [in] 實例句柄

            返回值

            void

            簡介

            釋放資源

             

             

             

            speex_resampler_process_float

            功能

            重采樣浮點序列

            函數

            int speex_resampler_process_float(SpeexResamplerState *st,                                  

            spx_uint32_t channel_index,                                   const float *in,                                              spx_uint32_t *in_len,

            float *out,                                                   spx_uint32_t *out_len);    

            參數

            St                [in]句柄

            channel_index     [in]通道號

            in                [in]輸入緩存

            in_len           [in]輸入長度(返回處理的采樣數)

            out               [in]輸出緩存

            out_len           [in]輸出長度(返回寫入的采樣數)

            返回值

            錯誤碼

            簡介

            輸入和輸出緩存不能重疊,外部準備緩存

             

             

             

            speex_resampler_process_interleaved_float

            功能

            重采樣交叉的多通道浮點數據(例如:雙通道PCM)

            函數

            int speex_resampler_process_interleaved_float(SpeexResamplerState *st,                                                 

            const float *in,

            spx_uint32_t *in_len,

            float *out,

            spx_uint32_t *out_len);

            參數

            St                [in]句柄

            in                [in]輸入緩存

            in_len           [in]輸入長度(返回處理的采樣數)

            out               [in]輸出緩存

            out_len           [in]輸出長度(返回寫入的采樣數)

            返回值

            錯誤碼

            簡介

             

             

             

             

            注:以上是主要的接口函數

             

            示例

            下面把16K的音頻轉換為8k的音頻

                st = speex_resampler_init(1, 16000, 8000, 10, &err);

             

                do{

                   readlen = fread(in, sizeof(short), 1024, fin);

                   if (readlen > 0)

                   {

                       inlen = readlen;

                       outlen = 1024;

                       ret = speex_resampler_process_int(st, 0, in, &inlen, out, &outlen);

                       if (ret == RESAMPLER_ERR_SUCCESS)

                       {

                          fwrite(out, sizeof(short), outlen, fout);

                       }

                   }

                  

                }while(readlen == 1024);

               

                speex_resampler_destroy(st);

             

            posted on 2013-02-05 12:06 楊粼波 閱讀(5375) 評論(0)  編輯 收藏 引用

            国产精品久久久久久影院| 久久久久亚洲AV无码专区首JN | a高清免费毛片久久| 色综合久久中文色婷婷| 少妇久久久久久被弄到高潮 | 中文无码久久精品| 91精品国产高清91久久久久久| 99久久精品国产一区二区蜜芽| 欧美国产成人久久精品| 亚洲va久久久噜噜噜久久男同 | 久久综合久久综合亚洲| 久久久久亚洲AV片无码下载蜜桃| 日本免费一区二区久久人人澡| 亚洲国产成人久久笫一页| 91精品国产91久久久久福利| 久久中文字幕人妻丝袜| 热re99久久精品国产99热| 婷婷久久久亚洲欧洲日产国码AV | 久久精品aⅴ无码中文字字幕不卡 久久精品aⅴ无码中文字字幕重口 | 国产69精品久久久久APP下载 | 亚洲国产另类久久久精品| 伊人丁香狠狠色综合久久| 久久精品国产亚洲AV影院| 91精品免费久久久久久久久| 97精品伊人久久久大香线蕉| 久久精品无码一区二区三区日韩| 精品免费久久久久久久| 国产成人精品综合久久久| 久久亚洲精品国产亚洲老地址| 亚洲国产精品久久久久| 久久Av无码精品人妻系列| 97精品依人久久久大香线蕉97| 香蕉久久夜色精品国产2020| 亚洲v国产v天堂a无码久久| 久久精品综合一区二区三区| 国产综合久久久久久鬼色| 久久婷婷五月综合97色| 中文字幕无码久久久| 久久亚洲AV成人无码| 亚洲国产精品高清久久久| 久久久国产精品网站|