[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