Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergey Sharybin <sergey.vfx@gmail.com>2014-02-28 12:44:01 +0400
committerSergey Sharybin <sergey.vfx@gmail.com>2014-02-28 12:51:03 +0400
commite82b5f61fee64a02fd71be605fea75dad4f7ce22 (patch)
tree3549bf75fc33f4d81eea4085e5eda494f457d440 /intern/audaspace
parent8fa15d105078251dc55909a85dfd9823c3907bce (diff)
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
Diffstat (limited to 'intern/audaspace')
-rw-r--r--intern/audaspace/ffmpeg/AUD_FFMPEGWriter.cpp8
1 files changed, 5 insertions, 3 deletions
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