summaryrefslogtreecommitdiff
blob: 3bae020a02aebedae97c227e589f3b40f78cbfa1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
--- blender-2.60a.orig/intern/audaspace/ffmpeg/AUD_FFMPEGWriter.cpp	2011-10-24 20:09:01.000000000 +0200
+++ blender-2.60a/intern/audaspace/ffmpeg/AUD_FFMPEGWriter.cpp	2011-11-13 12:34:01.000000000 +0100
@@ -40,6 +40,8 @@
 #include <libavcodec/avcodec.h>
 #include <libavformat/avformat.h>
 #include <libavformat/avio.h>
+#include <libavutil/mathematics.h>
+#include <libavutil/avstring.h>
 #include "ffmpeg_compat.h"
 }
 
@@ -57,10 +58,15 @@
 {
 	static const char* formats[] = { NULL, "ac3", "flac", "matroska", "mp2", "mp3", "ogg", "wav" };
 
-	if(avformat_alloc_output_context2(&m_formatCtx, NULL, formats[format], filename.c_str()))
-		AUD_THROW(AUD_ERROR_FFMPEG, context_error);
+	m_formatCtx = avformat_alloc_context();
+        if (!m_formatCtx) AUD_THROW(AUD_ERROR_FFMPEG, context_error);
 
-	m_outputFmt = m_formatCtx->oformat;
+	av_strlcpy(m_formatCtx->filename, filename.c_str(), sizeof(m_formatCtx->filename));
+	m_outputFmt = m_formatCtx->oformat = av_guess_format(formats[format], filename.c_str(), NULL);
+	if (!m_outputFmt) {
+            avformat_free_context(m_formatCtx);
+            AUD_THROW(AUD_ERROR_FFMPEG, context_error);
+        }
 
 	switch(codec)
 	{