[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [31909] trunk/lib/windows/ffmpeg: Fix [ #23791] Crash rendering to some format

Nathan Letwory nathan at letworyinteractive.com
Mon Sep 13 13:25:48 CEST 2010


Revision: 31909
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=31909
Author:   jesterking
Date:     2010-09-13 13:25:48 +0200 (Mon, 13 Sep 2010)

Log Message:
-----------
Fix [#23791] Crash rendering to some format
Reported by L Harch

Apparently the FFMPEG libs were the problem here. Updating to a version from April 22nd, 2010. I chose this version, since it's also the last day a win64 build of the development packages is available, so we'll have the same revision in use for both 32bit Windows and 64bit Windows.

This revision probably will fix a lot of open bugs, I'll be reviewing those FFMPEG issues after this commit and mark them in the tracker if I can't reproduce them anymore on win32 nor win64.

Modified Paths:
--------------
    trunk/lib/windows/ffmpeg/Readme.txt
    trunk/lib/windows/ffmpeg/include/libavcodec/avcodec.h
    trunk/lib/windows/ffmpeg/include/libavcodec/opt.h
    trunk/lib/windows/ffmpeg/include/libavcodec/vdpau.h
    trunk/lib/windows/ffmpeg/include/libavdevice/avdevice.h
    trunk/lib/windows/ffmpeg/include/libavformat/avformat.h
    trunk/lib/windows/ffmpeg/include/libavformat/avio.h
    trunk/lib/windows/ffmpeg/include/libavutil/adler32.h
    trunk/lib/windows/ffmpeg/include/libavutil/avstring.h
    trunk/lib/windows/ffmpeg/include/libavutil/avutil.h
    trunk/lib/windows/ffmpeg/include/libavutil/common.h
    trunk/lib/windows/ffmpeg/include/libavutil/crc.h
    trunk/lib/windows/ffmpeg/include/libavutil/fifo.h
    trunk/lib/windows/ffmpeg/include/libavutil/intfloat_readwrite.h
    trunk/lib/windows/ffmpeg/include/libavutil/mathematics.h
    trunk/lib/windows/ffmpeg/include/libavutil/mem.h
    trunk/lib/windows/ffmpeg/include/libavutil/pixfmt.h
    trunk/lib/windows/ffmpeg/include/libavutil/rational.h
    trunk/lib/windows/ffmpeg/include/libswscale/swscale.h
    trunk/lib/windows/ffmpeg/include/msvc/inttypes.h
    trunk/lib/windows/ffmpeg/include/msvc/stdint.h
    trunk/lib/windows/ffmpeg/lib/avcodec-52.dll
    trunk/lib/windows/ffmpeg/lib/avcodec-52.lib
    trunk/lib/windows/ffmpeg/lib/avdevice-52.dll
    trunk/lib/windows/ffmpeg/lib/avdevice-52.lib
    trunk/lib/windows/ffmpeg/lib/avformat-52.dll
    trunk/lib/windows/ffmpeg/lib/avformat-52.lib
    trunk/lib/windows/ffmpeg/lib/avutil-50.dll
    trunk/lib/windows/ffmpeg/lib/avutil-50.lib
    trunk/lib/windows/ffmpeg/lib/swscale-0.dll
    trunk/lib/windows/ffmpeg/lib/swscale-0.lib

Added Paths:
-----------
    trunk/lib/windows/ffmpeg/include/libavcodec/avfft.h
    trunk/lib/windows/ffmpeg/include/libavcodec/dxva2.h
    trunk/lib/windows/ffmpeg/include/libavcodec/vaapi.h
    trunk/lib/windows/ffmpeg/include/libavutil/attributes.h
    trunk/lib/windows/ffmpeg/include/libavutil/avconfig.h
    trunk/lib/windows/ffmpeg/include/libavutil/error.h
    trunk/lib/windows/ffmpeg/include/libavutil/pixdesc.h

Removed Paths:
-------------
    trunk/lib/windows/ffmpeg/ffmpeg_accel_bgra32.patch
    trunk/lib/windows/ffmpeg/ffmpeg_work_around_ac3_sse2_crash.patch
    trunk/lib/windows/ffmpeg/ffmpeg_work_around_dv_crash.patch
    trunk/lib/windows/ffmpeg/include/postproc/
    trunk/lib/windows/ffmpeg/lib/libfaac-0.dll
    trunk/lib/windows/ffmpeg/lib/libfaad-2.dll
    trunk/lib/windows/ffmpeg/lib/libmp3lame-0.dll
    trunk/lib/windows/ffmpeg/lib/libx264-67.dll
    trunk/lib/windows/ffmpeg/lib/xvidcore.dll

Modified: trunk/lib/windows/ffmpeg/Readme.txt
===================================================================
--- trunk/lib/windows/ffmpeg/Readme.txt	2010-09-13 11:14:12 UTC (rev 31908)
+++ trunk/lib/windows/ffmpeg/Readme.txt	2010-09-13 11:25:48 UTC (rev 31909)
@@ -1,13 +1,10 @@
-This directory contains r29545 from http://ffmpeg.arrozcru.org/autobuilds/
+This directory contains r22941 from http://ffmpeg.arrozcru.org/autobuilds/ (April 22nd, 2010)
 
-See http://ffmpeg.arrozcru.org/autobuilds/logs/2009-08-23-OK for build log
-
 Some quick mods:
 
 1. rename the .lib files according to .dll naming (include version number)
 2. put stdint.h and inttypes.h in subfolder msvc to prevent conflicts with mingw
-3. add to libavutil\common.h after line 133
-	#define FFALIGN(x, a) (((x)+(a)-1)&~((a)-1)
+3. add to libavutil\common.h after line 53
 	#define inline __inline
 4. modify stdint.h to make it compatible with MSVC C++ headers:
 Add signed to int8_t, int16_t, int32_t, int64_t:
@@ -15,8 +12,3 @@
    typedef signed __int16    int16_t;
    typedef signed __int32    int32_t;
    typedef signed __int64    int64_t;
-
-Known issues:
-* importing DV files may crash if there are bad blocks
-* AC3 may crash
-

Deleted: trunk/lib/windows/ffmpeg/ffmpeg_accel_bgra32.patch
===================================================================
--- trunk/lib/windows/ffmpeg/ffmpeg_accel_bgra32.patch	2010-09-13 11:14:12 UTC (rev 31908)
+++ trunk/lib/windows/ffmpeg/ffmpeg_accel_bgra32.patch	2010-09-13 11:25:48 UTC (rev 31909)
@@ -1,78 +0,0 @@
-Index: yuv2rgb.c
-===================================================================
---- yuv2rgb.c	(r\x82vision 28967)
-+++ yuv2rgb.c	(copie de travail)
-@@ -432,6 +432,7 @@
- #if (HAVE_MMX2 || HAVE_MMX) && CONFIG_GPL
-     if (c->flags & SWS_CPU_CAPS_MMX2) {
-         switch (c->dstFormat) {
-+        case PIX_FMT_BGR32:  return yuv420_bgr32_MMX2;
-         case PIX_FMT_RGB32:  return yuv420_rgb32_MMX2;
-         case PIX_FMT_BGR24:  return yuv420_rgb24_MMX2;
-         case PIX_FMT_RGB565: return yuv420_rgb16_MMX2;
-@@ -440,6 +441,7 @@
-     }
-     if (c->flags & SWS_CPU_CAPS_MMX) {
-         switch (c->dstFormat) {
-+        case PIX_FMT_BGR32:  return yuv420_bgr32_MMX;
-         case PIX_FMT_RGB32:  return yuv420_rgb32_MMX;
-         case PIX_FMT_BGR24:  return yuv420_rgb24_MMX;
-         case PIX_FMT_RGB565: return yuv420_rgb16_MMX;
-Index: yuv2rgb_template.c
-===================================================================
---- yuv2rgb_template.c	(r\x82vision 28967)
-+++ yuv2rgb_template.c	(copie de travail)
-@@ -451,3 +451,53 @@
- 
-     YUV2RGB_ENDLOOP(4)
- }
-+
-+static inline int RENAME(yuv420_bgr32)(SwsContext *c, uint8_t* src[], int srcStride[], int srcSliceY,
-+                                       int srcSliceH, uint8_t* dst[], int dstStride[]){
-+    int y, h_size;
-+
-+    YUV422_UNSHIFT
-+    YUV2RGB_LOOP(4)
-+
-+        YUV2RGB_INIT
-+        YUV2RGB
-+        "pxor      %%mm3, %%mm3;"   /* zero mm3 */
-+
-+        "movq      %%mm1, %%mm6;"   /* R7 R6 R5 R4 R3 R2 R1 R0 */
-+        "movq      %%mm0, %%mm7;"   /* B7 B6 B5 B4 B3 B2 B1 B0 */
-+
-+        "movq      %%mm1, %%mm4;"   /* R7 R6 R5 R4 R3 R2 R1 R0 */
-+        "movq      %%mm0, %%mm5;"   /* B7 B6 B5 B4 B3 B2 B1 B0 */
-+
-+        "punpcklbw %%mm2, %%mm6;"   /* G3 R3 G2 R2 G1 R1 G0 R0 */
-+        "punpcklbw %%mm3, %%mm7;"   /* 00 B3 00 B2 00 B1 00 B0 */
-+
-+        "punpcklwd %%mm7, %%mm6;"   /* 00 B1 R1 G1 00 B0 R0 G0 */
-+        MOVNTQ "   %%mm6, (%1);"    /* Store ABGR1 ABGR0 */
-+
-+        "movq      %%mm1, %%mm6;"   /* R7 R6 R5 R4 R3 R2 R1 R0 */
-+        "punpcklbw %%mm2, %%mm6;"   /* G3 R3 G2 R2 G1 R1 G0 R0 */
-+
-+        "punpckhwd %%mm7, %%mm6;"   /* 00 B3 G3 R3 00 B2 R3 G2 */
-+        MOVNTQ "   %%mm6, 8 (%1);"  /* Store ABGR3 ABGR2 */
-+
-+        "punpckhbw %%mm2, %%mm4;"   /* G7 R7 G6 R6 G5 R5 G4 R4 */
-+        "punpckhbw %%mm3, %%mm5;"   /* 00 B7 00 B6 00 B5 00 B4 */
-+
-+        "punpcklwd %%mm5, %%mm4;"   /* 00 B5 R5 G5 00 B4 R4 G4 */
-+        MOVNTQ "   %%mm4, 16 (%1);" /* Store ABGR5 ABGR4 */
-+
-+        "movq      %%mm1, %%mm4;"   /* R7 R6 R5 R4 R3 R2 R1 R0 */
-+        "punpckhbw %%mm2, %%mm4;"   /* G7 R7 G6 R6 G5 R5 G4 R4 */
-+
-+        "punpckhwd %%mm5, %%mm4;"   /* 00 B7 G7 R7 00 B6 R6 G6 */
-+        MOVNTQ "   %%mm4, 24 (%1);" /* Store ABGR7 ABGR6 */
-+
-+        "movd 4 (%2, %0), %%mm0;"   /* Load 4 Cb 00 00 00 00 u3 u2 u1 u0 */
-+        "movd 4 (%3, %0), %%mm1;"   /* Load 4 Cr 00 00 00 00 v3 v2 v1 v0 */
-+
-+        "pxor         %%mm4, %%mm4;" /* zero mm4 */
-+        "movq 8 (%5, %0, 2), %%mm6;" /* Load 8 Y Y7 Y6 Y5 Y4 Y3 Y2 Y1 Y0 */
-+
-+	YUV2RGB_ENDLOOP(4)
-+}

Deleted: trunk/lib/windows/ffmpeg/ffmpeg_work_around_ac3_sse2_crash.patch
===================================================================
--- trunk/lib/windows/ffmpeg/ffmpeg_work_around_ac3_sse2_crash.patch	2010-09-13 11:14:12 UTC (rev 31908)
+++ trunk/lib/windows/ffmpeg/ffmpeg_work_around_ac3_sse2_crash.patch	2010-09-13 11:25:48 UTC (rev 31909)
@@ -1,18 +0,0 @@
-Index: libavcodec/x86/dsputil_mmx.c
-===================================================================
---- libavcodec/x86/dsputil_mmx.c	(revision 20545)
-+++ libavcodec/x86/dsputil_mmx.c	(working copy)
-@@ -3000,7 +3000,12 @@
-         if(mm_flags & FF_MM_SSE2){
-             c->int32_to_float_fmul_scalar = int32_to_float_fmul_scalar_sse2;
-             c->float_to_int16 = float_to_int16_sse2;
--            c->float_to_int16_interleave = float_to_int16_interleave_sse2;
-+	    /*  
-+		Blender quick fix: segfaults with AC3-files. Please remove,
-+		if you find out why. Probably alignment issue? (Peter Schlaile)
-+
-+		c->float_to_int16_interleave = float_to_int16_interleave_sse2; 
-+	    */
-             c->add_int16 = add_int16_sse2;
-             c->sub_int16 = sub_int16_sse2;
-             c->scalarproduct_int16 = scalarproduct_int16_sse2;

Deleted: trunk/lib/windows/ffmpeg/ffmpeg_work_around_dv_crash.patch
===================================================================
--- trunk/lib/windows/ffmpeg/ffmpeg_work_around_dv_crash.patch	2010-09-13 11:14:12 UTC (rev 31908)
+++ trunk/lib/windows/ffmpeg/ffmpeg_work_around_dv_crash.patch	2010-09-13 11:25:48 UTC (rev 31909)
@@ -1,40 +0,0 @@
-Index: libavformat/dv.c
-===================================================================
---- libavformat/dv.c	(revision 20714)
-+++ libavformat/dv.c	(working copy)
-@@ -380,9 +380,12 @@
- 
- void dv_offset_reset(DVDemuxContext *c, int64_t frame_offset)
- {
-+    // FIXME: sys may be wrong if last dv_read_packet() failed (buffer is junk)
-+    const DVprofile* sys = dv_codec_profile(c->vst->codec);
-+
-     c->frames= frame_offset;
-     if (c->ach)
--        c->abytes= av_rescale_q(c->frames, c->sys->time_base,
-+        c->abytes= av_rescale_q(c->frames, sys->time_base,
-                                 (AVRational){8, c->ast[0]->codec->bit_rate});
-     c->audio_pkt[0].size = c->audio_pkt[1].size = 0;
-     c->audio_pkt[2].size = c->audio_pkt[3].size = 0;
-@@ -460,9 +463,20 @@
-     RawDVContext *r   = s->priv_data;
-     DVDemuxContext *c = r->dv_demux;
-     int64_t offset    = dv_frame_offset(s, c, timestamp, flags);
-+    // FIXME: sys may be wrong if last dv_read_packet() failed (buffer is junk)
-+    const DVprofile* sys = dv_codec_profile(c->vst->codec);
- 
--    dv_offset_reset(c, offset / c->sys->frame_size);
-+    if (!c->sys) {
-+        av_log(s, AV_LOG_ERROR, 
-+	       "dv_read_seek: c->sys == NULL, "
-+	       "frame_size=%d, offset=%lld, "
-+	       "restoring c->sys using c->vst->codec.\n", 
-+	       sys->frame_size, offset);
-+	c->sys = sys;
-+    }
- 
-+    dv_offset_reset(c, offset / sys->frame_size);
-+
-     offset = url_fseek(s->pb, offset, SEEK_SET);
-     return (offset < 0) ? offset : 0;
- }

Modified: trunk/lib/windows/ffmpeg/include/libavcodec/avcodec.h
===================================================================
--- trunk/lib/windows/ffmpeg/include/libavcodec/avcodec.h	2010-09-13 11:14:12 UTC (rev 31908)
+++ trunk/lib/windows/ffmpeg/include/libavcodec/avcodec.h	2010-09-13 11:25:48 UTC (rev 31909)
@@ -22,7 +22,7 @@
 #define AVCODEC_AVCODEC_H
 
 /**
- * @file libavcodec/avcodec.h
+ * @file
  * external API header
  */
 
@@ -30,7 +30,7 @@
 #include "libavutil/avutil.h"
 
 #define LIBAVCODEC_VERSION_MAJOR 52
-#define LIBAVCODEC_VERSION_MINOR 32
+#define LIBAVCODEC_VERSION_MINOR 66
 #define LIBAVCODEC_VERSION_MICRO  0
 
 #define LIBAVCODEC_VERSION_INT  AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \
@@ -125,7 +125,9 @@
     CODEC_ID_QDRAW,
     CODEC_ID_VIXL,
     CODEC_ID_QPEG,
+#if LIBAVCODEC_VERSION_MAJOR < 53
     CODEC_ID_XVID,
+#endif
     CODEC_ID_PNG,
     CODEC_ID_PPM,
     CODEC_ID_PBM,
@@ -198,6 +200,16 @@
     CODEC_ID_V210,
     CODEC_ID_DPX,
     CODEC_ID_MAD,
+    CODEC_ID_FRWU,
+    CODEC_ID_FLASHSV2,
+    CODEC_ID_CDGRAPHICS,
+    CODEC_ID_R210,
+    CODEC_ID_ANM,
+    CODEC_ID_BINKVIDEO,
+    CODEC_ID_IFF_ILBM,
+    CODEC_ID_IFF_BYTERUN1,
+    CODEC_ID_KGV1,
+    CODEC_ID_YOP,
 
     /* various PCM "codecs" */
     CODEC_ID_PCM_S16LE= 0x10000,
@@ -224,6 +236,7 @@
     CODEC_ID_PCM_F32LE,
     CODEC_ID_PCM_F64BE,
     CODEC_ID_PCM_F64LE,
+    CODEC_ID_PCM_BLURAY,
 
     /* various ADPCM codecs */
     CODEC_ID_ADPCM_IMA_QT= 0x11000,
@@ -319,6 +332,9 @@
     CODEC_ID_TWINVQ,
     CODEC_ID_TRUEHD,
     CODEC_ID_MP4ALS,
+    CODEC_ID_ATRAC1,
+    CODEC_ID_BINKAUDIO_RDFT,
+    CODEC_ID_BINKAUDIO_DCT,
 
     /* subtitle codecs */
     CODEC_ID_DVD_SUBTITLE= 0x17000,
@@ -327,6 +343,8 @@
     CODEC_ID_XSUB,
     CODEC_ID_SSA,
     CODEC_ID_MOV_TEXT,
+    CODEC_ID_HDMV_PGS_SUBTITLE,
+    CODEC_ID_DVB_TELETEXT,
 
     /* other specific kind of codecs (generally used for attachments) */
     CODEC_ID_TTF= 0x18000,
@@ -337,16 +355,18 @@
                                 * stream (only used by libavformat) */
 };
 
-enum CodecType {
-    CODEC_TYPE_UNKNOWN = -1,
-    CODEC_TYPE_VIDEO,
-    CODEC_TYPE_AUDIO,
-    CODEC_TYPE_DATA,
-    CODEC_TYPE_SUBTITLE,
-    CODEC_TYPE_ATTACHMENT,
-    CODEC_TYPE_NB
-};
+#if LIBAVCODEC_VERSION_MAJOR < 53
+#define CodecType AVMediaType
 
+#define CODEC_TYPE_UNKNOWN    AVMEDIA_TYPE_UNKNOWN
+#define CODEC_TYPE_VIDEO      AVMEDIA_TYPE_VIDEO
+#define CODEC_TYPE_AUDIO      AVMEDIA_TYPE_AUDIO
+#define CODEC_TYPE_DATA       AVMEDIA_TYPE_DATA
+#define CODEC_TYPE_SUBTITLE   AVMEDIA_TYPE_SUBTITLE
+#define CODEC_TYPE_ATTACHMENT AVMEDIA_TYPE_ATTACHMENT
+#define CODEC_TYPE_NB         AVMEDIA_TYPE_NB
+#endif
+
 /**

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list