diff --git a/intern/ffmpeg/ffmpeg_compat.h b/intern/ffmpeg/ffmpeg_compat.h index bb2c4f2d0a4..9dbbb46ce40 100644 --- a/intern/ffmpeg/ffmpeg_compat.h +++ b/intern/ffmpeg/ffmpeg_compat.h @@ -72,6 +72,10 @@ #define FFMPEG_SWSCALE_COLOR_SPACE_SUPPORT #endif +#if ((LIBAVUTIL_VERSION_MAJOR > 51) || (LIBAVUTIL_VERSION_MAJOR == 51) && (LIBAVUTIL_VERSION_MINOR >= 32)) +#define FFMPEG_FFV1_ALPHA_SUPPORTED +#endif + #ifndef FFMPEG_HAVE_AVIO #define AVIO_FLAG_WRITE URL_WRONLY #define avio_open url_fopen diff --git a/source/blender/blenkernel/intern/writeffmpeg.c b/source/blender/blenkernel/intern/writeffmpeg.c index 2291ea5a249..d47ba1274b1 100644 --- a/source/blender/blenkernel/intern/writeffmpeg.c +++ b/source/blender/blenkernel/intern/writeffmpeg.c @@ -512,12 +512,16 @@ static AVStream* alloc_video_stream(RenderData *rd, int codec_id, AVFormatContex } if (codec_id == CODEC_ID_FFV1) { +#ifdef FFMPEG_FFV1_ALPHA_SUPPORTED if (rd->im_format.planes == R_IMF_PLANES_RGBA) { c->pix_fmt = PIX_FMT_RGB32; } else { c->pix_fmt = PIX_FMT_BGR0; } +#else + c->pix_fmt = PIX_FMT_RGB32; +#endif } if (codec_id == CODEC_ID_QTRLE ) { @@ -1435,7 +1439,15 @@ int ffmpeg_alpha_channel_supported(RenderData *rd) { int codec = rd->ffcodecdata.codec; - return ELEM(codec, CODEC_ID_QTRLE, CODEC_ID_FFV1); + if (codec == CODEC_ID_QTRLE) + return TRUE; + +#ifdef FFMPEG_FFV1_ALPHA_SUPPORTED + if (codec == CODEC_ID_FFV1) + return TRUE; +#endif + + return FALSE; } #endif