From e82b5f61fee64a02fd71be605fea75dad4f7ce22 Mon Sep 17 00:00:00 2001 From: Sergey Sharybin Date: Fri, 28 Feb 2014 14:44:01 +0600 Subject: Attempt to fix mixdown when building without sndfile This case was handled specially in writeffmpeg.c and seems it makes audio export happy in all cases now. TODO: libav-10 doesn't work with AC3 codec yet because this bloody library ONLY supports FLTP format and FFmpeg ONLY supports FLT. This is not fun guy, it really isn't! Where's your conscience?? CC: nexyon --- intern/audaspace/ffmpeg/AUD_FFMPEGWriter.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'intern/audaspace') diff --git a/intern/audaspace/ffmpeg/AUD_FFMPEGWriter.cpp b/intern/audaspace/ffmpeg/AUD_FFMPEGWriter.cpp index 859227a5006..dcacf71a2d3 100644 --- a/intern/audaspace/ffmpeg/AUD_FFMPEGWriter.cpp +++ b/intern/audaspace/ffmpeg/AUD_FFMPEGWriter.cpp @@ -175,8 +175,10 @@ AUD_FFMPEGWriter::AUD_FFMPEGWriter(std::string filename, AUD_DeviceSpecs specs, m_output_buffer.resize(FF_MIN_BUFFER_SIZE); int samplesize = AUD_MAX(AUD_SAMPLE_SIZE(m_specs), AUD_DEVICE_SAMPLE_SIZE(m_specs)); - if(m_codecCtx->frame_size <= 1) - m_input_size = 0; + if(m_codecCtx->frame_size <= 1) { + m_input_size = FF_MIN_BUFFER_SIZE * 8 / m_codecCtx->bits_per_coded_sample / m_codecCtx->channels; + m_input_buffer.resize(m_input_size * samplesize); + } else { m_input_buffer.resize(m_codecCtx->frame_size * samplesize); @@ -190,7 +192,7 @@ AUD_FFMPEGWriter::AUD_FFMPEGWriter(std::string filename, AUD_DeviceSpecs specs, avcodec_get_frame_defaults(m_frame); m_frame->linesize[0] = m_input_size * samplesize; m_frame->format = m_codecCtx->sample_fmt; - m_frame->nb_samples = m_codecCtx->frame_size; + m_frame->nb_samples = m_input_size; # ifdef FFMPEG_HAVE_AVFRAME_SAMPLE_RATE m_frame->sample_rate = m_codecCtx->sample_rate; # endif -- cgit v1.2.3