Hi all, <div><br></div><div>I realized that when I am writing my own code to upsample a piece of audio from 8000Hz to 22050Hz, I always get some alias effects: the sound got buzzy (with some zee, zee in the background) and looking at the spectrogram we can see the frequency mirrors around 8K Hz, which is a classical alias effects. </div>

<div><br></div><div>If I use ffmpeg binaries, I don&#39;t have this problem. But I do need to use Libav to achieve that. You guys can download the original raw waveform and the converted raw waveform from (<a href="http://dl.dropbox.com/u/4363247/ffmpeg/before.raw">http://dl.dropbox.com/u/4363247/ffmpeg/before.raw</a> and <a href="http://dl.dropbox.com/u/4363247/ffmpeg/after.raw">http://dl.dropbox.com/u/4363247/ffmpeg/after.raw</a>)</div>

<div><br></div><div>There are two APIs to resample the audio but both produce these alias effects. Please let me know if I am missing anything. </div><div><br></div><div><div>    newsize = (long) size * 22050 / 8000.0;</div>

<div>    ReSampleContext* context = av_audio_resample_init(1, 1, // out channels, in channels</div><div>                                     22050, 8000,</div><div>                                     SAMPLE_FMT_S16, SAMPLE_FMT_S16,</div>

<div>                                     16, 0, 0, 0.8);</div><div>    int audio_resample_rc = audio_resample(context, (short*)converted_samples, (short*)samples, size / 2);</div><div>    if (context)</div><div>        audio_resample_close(context);</div>

</div><div><br></div><div>and </div><div><br></div><div><div>        int out_rate = 22050;</div><div>        audio_cntx = av_resample_init( out_rate,    // out rate</div><div>            RATE,   // in rate</div><div>            16, // filter length</div>

<div>            0,  // phase count</div><div>            0,  // linear FIR filter</div><div>            0.8 );  // cutoff frequency</div><div>        assert( audio_cntx &amp;&amp; &quot;Failed to create resampling context!&quot; );</div>

<div><br></div><div>        int samples_consumed = 0;</div><div>        int samples_output = av_resample( audio_cntx,</div><div>            (short*)out_buffer,</div><div>            (short*)in_buffer,</div><div>            &amp;samples_consumed,</div>

<div>            bytes_read / 2,</div><div>            40000 * 4 / 2,</div><div>            0 );</div><div>        av_resample_close( audio_cntx );</div></div><div><br></div><div>Jieyun</div>