public void StoreFrameFromDecoder(AudioDecoder decoder, Resampler resampler = null) { AVFrame * inputFrame = null; AudioSampleBuffer buffer = null; AudioSampleBuffer resampledBuffer = null; try { Util.InitInputFrame(&inputFrame); if (decoder.GetNextAudioFrame(inputFrame)) { buffer = new AudioSampleBuffer(inputFrame); if (resampler != null) { resampler.Resample(buffer, out resampledBuffer, inputFrame->nb_samples); AddSamples(resampledBuffer, inputFrame->nb_samples); } else { AddSamples(buffer, inputFrame->nb_samples); } } } finally { if (buffer != null) { buffer.Dispose(); } if (resampledBuffer != null) { resampledBuffer.Dispose(); } ffmpeg.av_frame_free(&inputFrame); } }