Ejemplo n.º 1
0
        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);
            }
        }