• <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 楊粼波 閱讀(5376) 評論(0)  編輯 收藏 引用

            7777精品伊人久久久大香线蕉| 一本久久久久久久| 国产精品伊人久久伊人电影| 国产成人香蕉久久久久| 国产亚洲精午夜久久久久久| 97久久精品人人澡人人爽| 99久久亚洲综合精品成人| 欧美精品一区二区精品久久| 久久久久国色AV免费看图片| 久久精品国产精品亚洲精品| 91精品国产高清久久久久久国产嫩草 | 欧美精品一区二区久久| 久久天天躁狠狠躁夜夜不卡 | 亚洲中文字幕伊人久久无码| 久久成人国产精品免费软件| 精品一区二区久久| 九九久久自然熟的香蕉图片| 久久精品国产99久久香蕉| 久久丫精品国产亚洲av| 免费精品久久天干天干| 久久久久无码精品| 亚洲成av人片不卡无码久久| 99久久婷婷国产综合精品草原| 国产精品对白刺激久久久| 一本一本久久A久久综合精品 | 国产毛片久久久久久国产毛片 | 国产精品美女久久久| 国产精品无码久久久久久| 亚洲AV无码久久精品色欲| 无码人妻少妇久久中文字幕蜜桃| 伊人久久大香线蕉无码麻豆| 亚洲国产香蕉人人爽成AV片久久| 欧美久久亚洲精品| 久久久久亚洲AV无码专区体验| av无码久久久久不卡免费网站| 久久国产精品久久国产精品| 94久久国产乱子伦精品免费 | 国产韩国精品一区二区三区久久| 久久久久国产| 久久久久久狠狠丁香| 国产A级毛片久久久精品毛片|