From 43e0e8defa71bd3086b8547c848f7686e019e51b Mon Sep 17 00:00:00 2001 From: Bastien Montagne Date: Tue, 8 May 2018 15:27:10 +0200 Subject: [PATCH 1/2] Fix (unreported) bloody modifiers messing with ID user count in copy. User count of IDs is handled by higher-level, generic function, low-level copydata functions *MUST NOT* touch them anymore, ever! --- source/blender/modifiers/intern/MOD_dynamicpaint.c | 9 --------- .../modifiers/intern/MOD_meshsequencecache.c | 3 --- source/blender/modifiers/intern/MOD_uvproject.c | 14 +------------- 3 files changed, 1 insertion(+), 25 deletions(-) diff --git a/source/blender/modifiers/intern/MOD_dynamicpaint.c b/source/blender/modifiers/intern/MOD_dynamicpaint.c index 9a497acbde1..e7cec312948 100644 --- a/source/blender/modifiers/intern/MOD_dynamicpaint.c +++ b/source/blender/modifiers/intern/MOD_dynamicpaint.c @@ -60,15 +60,6 @@ static void copyData(const ModifierData *md, ModifierData *target) DynamicPaintModifierData *tpmd = (DynamicPaintModifierData *)target; dynamicPaint_Modifier_copy(pmd, tpmd); - - if (tpmd->canvas) { - for (DynamicPaintSurface *surface = tpmd->canvas->surfaces.first; surface; surface = surface->next) { - id_us_plus((ID *)surface->init_texture); - } - } - if (tpmd->brush) { - id_us_plus((ID *)tpmd->brush->mat); - } } static void freeData(ModifierData *md) diff --git a/source/blender/modifiers/intern/MOD_meshsequencecache.c b/source/blender/modifiers/intern/MOD_meshsequencecache.c index e0da66a1734..af3039c50da 100644 --- a/source/blender/modifiers/intern/MOD_meshsequencecache.c +++ b/source/blender/modifiers/intern/MOD_meshsequencecache.c @@ -65,9 +65,6 @@ static void copyData(const ModifierData *md, ModifierData *target) modifier_copyData_generic(md, target); - if (tmcmd->cache_file) { - id_us_plus(&tmcmd->cache_file->id); - } tmcmd->reader = NULL; } diff --git a/source/blender/modifiers/intern/MOD_uvproject.c b/source/blender/modifiers/intern/MOD_uvproject.c index c0e3b488c2e..6006cd92ec9 100644 --- a/source/blender/modifiers/intern/MOD_uvproject.c +++ b/source/blender/modifiers/intern/MOD_uvproject.c @@ -67,18 +67,6 @@ static void initData(ModifierData *md) umd->scalex = umd->scaley = 1.0f; } -static void copyData(const ModifierData *md, ModifierData *target) -{ -#if 0 - const UVProjectModifierData *umd = (const UVProjectModifierData *) md; -#endif - UVProjectModifierData *tumd = (UVProjectModifierData *) target; - - modifier_copyData_generic(md, target); - - id_us_plus((ID *)tumd->image); -} - static CustomDataMask requiredDataMask(Object *UNUSED(ob), ModifierData *UNUSED(md)) { CustomDataMask dataMask = 0; @@ -370,7 +358,7 @@ ModifierTypeInfo modifierType_UVProject = { eModifierTypeFlag_SupportsEditmode | eModifierTypeFlag_EnableInEditmode, - /* copyData */ copyData, + /* copyData */ modifier_copyData_generic, /* deformVerts */ NULL, /* deformMatrices */ NULL, /* deformVertsEM */ NULL, From 4e4a93bc454d93ec8523f44b73a42977e2868ecc Mon Sep 17 00:00:00 2001 From: Bastien Montagne Date: Tue, 8 May 2018 16:00:52 +0200 Subject: [PATCH 2/2] Fix building with latest versions of ffmpeg. Some years-old deprecated stuff has now been removed. Correct solution is probably to use valid defines etc. in own code, but this is more FFMEPG maintainer task (since it also may change how old FFMPEG we do support...). --- intern/ffmpeg/ffmpeg_compat.h | 39 +++++++++++++++++++ .../blender/blenkernel/intern/writeffmpeg.c | 3 +- 2 files changed, 41 insertions(+), 1 deletion(-) diff --git a/intern/ffmpeg/ffmpeg_compat.h b/intern/ffmpeg/ffmpeg_compat.h index 1eb6c3ba2dc..bc65f19ef59 100644 --- a/intern/ffmpeg/ffmpeg_compat.h +++ b/intern/ffmpeg/ffmpeg_compat.h @@ -119,6 +119,45 @@ int av_sample_fmt_is_planar(enum AVSampleFormat sample_fmt) #endif +/* XXX TODO Probably fix to correct modern flags in code? Not sure how old FFMPEG we want to support though, + * so for now this will do. */ + +#ifndef FF_MIN_BUFFER_SIZE +# ifdef AV_INPUT_BUFFER_MIN_SIZE +# define FF_MIN_BUFFER_SIZE AV_INPUT_BUFFER_MIN_SIZE +# endif +#endif + +#ifndef FF_INPUT_BUFFER_PADDING_SIZE +# ifdef AV_INPUT_BUFFER_PADDING_SIZE +# define FF_INPUT_BUFFER_PADDING_SIZE AV_INPUT_BUFFER_PADDING_SIZE +# endif +#endif + +#ifndef CODEC_FLAG_GLOBAL_HEADER +# ifdef AV_CODEC_FLAG_GLOBAL_HEADER +# define CODEC_FLAG_GLOBAL_HEADER AV_CODEC_FLAG_GLOBAL_HEADER +# endif +#endif + +#ifndef CODEC_FLAG_GLOBAL_HEADER +# ifdef AV_CODEC_FLAG_GLOBAL_HEADER +# define CODEC_FLAG_GLOBAL_HEADER AV_CODEC_FLAG_GLOBAL_HEADER +# endif +#endif + +#ifndef CODEC_FLAG_INTERLACED_DCT +# ifdef AV_CODEC_FLAG_INTERLACED_DCT +# define CODEC_FLAG_INTERLACED_DCT AV_CODEC_FLAG_INTERLACED_DCT +# endif +#endif + +#ifndef CODEC_FLAG_INTERLACED_ME +# ifdef AV_CODEC_FLAG_INTERLACED_ME +# define CODEC_FLAG_INTERLACED_ME AV_CODEC_FLAG_INTERLACED_ME +# endif +#endif + /* FFmpeg upstream 1.0 is the first who added AV_ prefix. */ #if LIBAVCODEC_VERSION_INT < AV_VERSION_INT(54, 59, 100) # define AV_CODEC_ID_NONE CODEC_ID_NONE diff --git a/source/blender/blenkernel/intern/writeffmpeg.c b/source/blender/blenkernel/intern/writeffmpeg.c index d7fcd896e11..fc719634ff5 100644 --- a/source/blender/blenkernel/intern/writeffmpeg.c +++ b/source/blender/blenkernel/intern/writeffmpeg.c @@ -619,7 +619,8 @@ static AVStream *alloc_video_stream(FFMpegContext *context, RenderData *rd, int c->rc_buffer_aggressivity = 1.0; #endif - c->me_method = ME_EPZS; + /* Deprecated and not doing anything since July 2015, deleted in recent ffmpeg */ + //c->me_method = ME_EPZS; codec = avcodec_find_encoder(c->codec_id); if (!codec)