[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [52368] trunk/blender/source/blender: Improved FFmpeg error reports when audio stream failed to be allocated
Sergey Sharybin
sergey.vfx at gmail.com
Mon Nov 19 18:22:42 CET 2012
Revision: 52368
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=52368
Author: nazgul
Date: 2012-11-19 17:22:40 +0000 (Mon, 19 Nov 2012)
Log Message:
-----------
Improved FFmpeg error reports when audio stream failed to be allocated
Also fixed crash using --debug-ffmpeg caused by BLI_vsnprintf modifies
va_list -- need to create copy of list if this list is gonna to be reused.
Modified Paths:
--------------
trunk/blender/source/blender/blenkernel/intern/writeffmpeg.c
trunk/blender/source/blender/imbuf/intern/util.c
Modified: trunk/blender/source/blender/blenkernel/intern/writeffmpeg.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/writeffmpeg.c 2012-11-19 17:15:33 UTC (rev 52367)
+++ trunk/blender/source/blender/blenkernel/intern/writeffmpeg.c 2012-11-19 17:22:40 UTC (rev 52368)
@@ -599,12 +599,14 @@
/* Prepare an audio stream for the output file */
-static AVStream *alloc_audio_stream(RenderData *rd, int codec_id, AVFormatContext *of)
+static AVStream *alloc_audio_stream(RenderData *rd, int codec_id, AVFormatContext *of, char *error, int error_size)
{
AVStream *st;
AVCodecContext *c;
AVCodec *codec;
+ error[0] = '\0';
+
st = av_new_stream(of, 1);
if (!st) return NULL;
@@ -626,6 +628,7 @@
if (avcodec_open(c, codec) < 0) {
//XXX error("Couldn't initialize audio codec");
+ BLI_strncpy(error, IMB_ffmpeg_last_error(), error_size);
return NULL;
}
@@ -801,9 +804,12 @@
}
if (ffmpeg_audio_codec != CODEC_ID_NONE) {
- audio_stream = alloc_audio_stream(rd, fmt->audio_codec, of);
+ audio_stream = alloc_audio_stream(rd, fmt->audio_codec, of, error, sizeof(error));
if (!audio_stream) {
- BKE_report(reports, RPT_ERROR, "Error initializing audio stream");
+ if (error[0])
+ BKE_report(reports, RPT_ERROR, error);
+ else
+ BKE_report(reports, RPT_ERROR, "Error initializing audio stream");
av_dict_free(&opts);
return 0;
}
Modified: trunk/blender/source/blender/imbuf/intern/util.c
===================================================================
--- trunk/blender/source/blender/imbuf/intern/util.c 2012-11-19 17:15:33 UTC (rev 52367)
+++ trunk/blender/source/blender/imbuf/intern/util.c 2012-11-19 17:22:40 UTC (rev 52368)
@@ -228,6 +228,10 @@
#ifdef WITH_FFMPEG
+#ifdef _MS_VER
+#define va_copy(dst, src) ((dst) = (src))
+#endif
+
/* BLI_vsnprintf in ffmpeg_log_callback() causes invalid warning */
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wmissing-format-attribute"
@@ -237,8 +241,13 @@
static void ffmpeg_log_callback(void *ptr, int level, const char *format, va_list arg)
{
if (ELEM(level, AV_LOG_FATAL, AV_LOG_ERROR)) {
- size_t n = BLI_vsnprintf(ffmpeg_last_error, sizeof(ffmpeg_last_error), format, arg);
+ size_t n;
+ va_list arg2;
+ va_copy(arg2, arg);
+
+ n = BLI_vsnprintf(ffmpeg_last_error, sizeof(ffmpeg_last_error), format, arg2);
+
/* strip trailing \n */
ffmpeg_last_error[n - 1] = '\0';
}
More information about the Bf-blender-cvs
mailing list