Revision: 14240
          
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=14240
Author:   campbellbarton
Date:     2008-03-25 21:30:33 +0100 (Tue, 25 Mar 2008)

Log Message:
-----------
check for null data when using ffmpegs swscale (for corrupt/partially corrupt 
videos)

Modified Paths:
--------------
    trunk/blender/source/blender/imbuf/intern/anim.c

Modified: trunk/blender/source/blender/imbuf/intern/anim.c
===================================================================
--- trunk/blender/source/blender/imbuf/intern/anim.c    2008-03-25 19:27:49 UTC 
(rev 14239)
+++ trunk/blender/source/blender/imbuf/intern/anim.c    2008-03-25 20:30:33 UTC 
(rev 14240)
@@ -784,25 +784,28 @@
                                                0, 0, 0 };
                                        int i;
                                        unsigned char* r;
-
-                                       sws_scale(anim->img_convert_ctx,
-                                                 anim->pFrame->data,
-                                                 anim->pFrame->linesize,
-                                                 0,
-                                                 anim->pCodecCtx->height,
-                                                 dst2,
-                                                 dstStride2);
-                               
-                                       /* workaround: sws_scale 
-                                          sets alpha = 0... */
-                               
-                                       r = (unsigned char*) ibuf->rect;
-
-                                       for (i = 0; i < ibuf->x * ibuf->y;i++){
-                                               r[3] = 0xff;
-                                               r+=4;
+                                       
+                                       /* This means the data wasnt read 
properly, this check stops crashing */
+                                       if (anim->pFrame->data[0]!=0 || 
anim->pFrame->data[1]!=0 || anim->pFrame->data[2]!=0 || 
anim->pFrame->data[3]!=0) {
+                                               
+                                               sws_scale(anim->img_convert_ctx,
+                                                         anim->pFrame->data,
+                                                         
anim->pFrame->linesize,
+                                                         0,
+                                                         
anim->pCodecCtx->height,
+                                                         dst2,
+                                                         dstStride2);
+                                       
+                                               /* workaround: sws_scale 
+                                                  sets alpha = 0... */
+                                       
+                                               r = (unsigned char*) ibuf->rect;
+       
+                                               for (i = 0; i < ibuf->x * 
ibuf->y;i++){
+                                                       r[3] = 0xff;
+                                                       r+=4;
+                                               }
                                        }
-
                                        av_free_packet(&packet);
                                        break;
                                }


_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to