public void WriteFrameToEncoder(AudioEncoder encoder) { AVFrame *outputFrame = null; Util.InitOutputFrame(&outputFrame, encoder, GetBufferSize()); try { byte *[] outputDataArray = outputFrame->data; fixed(byte **dataPtr = &outputDataArray[0]) { if (ffmpeg.av_audio_fifo_read(audioFifo, (void **)dataPtr, outputFrame->nb_samples) < outputFrame->nb_samples) { throw new FFmpegException(ffmpeg.AVERROR_UNKNOWN, "Failed to read data from fifo buffer."); } } encoder.WriteNextAudioFrame(outputFrame); } finally { ffmpeg.av_frame_free(&outputFrame); } }