[Bf-blender-cvs] [33113506701] master: Fix T87932: Failure to build movie strip proxy

Sebastian Parborg noreply at git.blender.org
Fri May 28 18:36:05 CEST 2021


Commit: 33113506701fac51b8b4dc8f51975200f885e50a
Author: Sebastian Parborg
Date:   Fri May 28 18:35:26 2021 +0200
Branches: master
https://developer.blender.org/rB33113506701fac51b8b4dc8f51975200f885e50a

Fix T87932: Failure to build movie strip proxy

We didn't initialize the scaled proxy frame properly.
This would lead to issues in ffmpeg 4.4 as they are more strict that the API is properly used.

Now we initialize the size and format of the frame.

===================================================================

M	source/blender/imbuf/intern/indexer.c

===================================================================

diff --git a/source/blender/imbuf/intern/indexer.c b/source/blender/imbuf/intern/indexer.c
index 11ce77e3091..26f332bd575 100644
--- a/source/blender/imbuf/intern/indexer.c
+++ b/source/blender/imbuf/intern/indexer.c
@@ -466,13 +466,6 @@ struct proxy_output_ctx {
   struct anim *anim;
 };
 
-// work around stupid swscaler 16 bytes alignment bug...
-
-static int round_up(int x, int mod)
-{
-  return x + ((mod - (x % mod)) % mod);
-}
-
 static struct proxy_output_ctx *alloc_proxy_output_ffmpeg(
     struct anim *anim, AVStream *st, int proxy_size, int width, int height, int quality)
 {
@@ -595,15 +588,19 @@ static struct proxy_output_ctx *alloc_proxy_output_ffmpeg(
   if (st->codecpar->width != width || st->codecpar->height != height ||
       st->codecpar->format != rv->c->pix_fmt) {
     rv->frame = av_frame_alloc();
-    av_image_fill_arrays(
-        rv->frame->data,
-        rv->frame->linesize,
-        MEM_mallocN(av_image_get_buffer_size(rv->c->pix_fmt, round_up(width, 16), height, 1),
-                    "alloc proxy output frame"),
-        rv->c->pix_fmt,
-        round_up(width, 16),
-        height,
-        1);
+
+    av_image_fill_arrays(rv->frame->data,
+                         rv->frame->linesize,
+                         MEM_mallocN(av_image_get_buffer_size(rv->c->pix_fmt, width, height, 1),
+                                     "alloc proxy output frame"),
+                         rv->c->pix_fmt,
+                         width,
+                         height,
+                         1);
+
+    rv->frame->format = rv->c->pix_fmt;
+    rv->frame->width = width;
+    rv->frame->height = height;
 
     rv->sws_ctx = sws_getContext(st->codecpar->width,
                                  rv->orig_height,



More information about the Bf-blender-cvs mailing list