diff --git a/libavcodec/snow.c b/libavcodec/snow.c
index 1edd387d676d8f467b4cf949c513578227cf1236..58560e9570f78a81f5a24b63e55f96cabf2a961e 100644
--- a/libavcodec/snow.c
+++ b/libavcodec/snow.c
@@ -2520,11 +2520,11 @@ static void pred_block(SnowContext *s, uint8_t *dst, uint8_t *src, uint8_t *tmp,
             ff_emulated_edge_mc(tmp + MB_SIZE, src, stride, b_w+5, b_h+5, sx, sy, w, h);
             src= tmp + MB_SIZE;
         }
-        assert(b_w == b_h || 2*b_w == b_h || b_w == 2*b_h);
-        assert(!(b_w&(b_w-1)));
+//        assert(b_w == b_h || 2*b_w == b_h || b_w == 2*b_h);
+//        assert(!(b_w&(b_w-1)));
         assert(b_w>1 && b_h>1);
         assert(tab_index>=0 && tab_index<4 || b_w==32);
-        if((dx&3) || (dy&3))
+        if((dx&3) || (dy&3) || !(b_w == b_h || 2*b_w == b_h || b_w == 2*b_h) || (b_w&(b_w-1)))
             mc_block(dst, src, tmp, stride, b_w, b_h, dx, dy);
         else if(b_w==32){
             int y;