Merge commit '5ec6d152e26c570c0a16ec72c1f354db95708179'
authorMichael Niedermayer <michaelni@gmx.at>
Thu, 26 Jun 2014 23:31:42 +0000 (01:31 +0200)
committerMichael Niedermayer <michaelni@gmx.at>
Fri, 27 Jun 2014 00:05:22 +0000 (02:05 +0200)
* commit '5ec6d152e26c570c0a16ec72c1f354db95708179':
  indeo4: B-frames decoding

Conflicts:
libavcodec/ivi_common.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
1  2 
libavcodec/indeo4.c
libavcodec/indeo5.c
libavcodec/ivi_common.c
libavcodec/ivi_common.h
libavcodec/ivi_dsp.c
libavcodec/ivi_dsp.h

Simple merge
Simple merge
@@@ -82,11 -86,33 +86,30 @@@ static int ivi_mc(IVIBandDesc *band, iv
      int min_size = band->pitch * (band->blk_size - 1) + band->blk_size;
      int ref_size = (mc_type > 1) * band->pitch + (mc_type & 1);
  
-     av_assert0(offs >= 0 && ref_offs >= 0 && band->ref_buf);
-     av_assert0(buf_size - min_size >= offs);
-     av_assert0(buf_size - min_size - ref_size >= ref_offs);
+     if (mc_type != -1) {
 -        if (offs < 0 || ref_offs < 0 || !band->ref_buf)
 -            return AVERROR_INVALIDDATA;
 -        if (buf_size - min_size < offs)
 -            return AVERROR_INVALIDDATA;
 -        if (buf_size - min_size - ref_size < ref_offs)
 -            return AVERROR_INVALIDDATA;
++        av_assert0(offs >= 0 && ref_offs >= 0 && band->ref_buf);
++        av_assert0(buf_size - min_size >= offs);
++        av_assert0(buf_size - min_size - ref_size >= ref_offs);
+     }
  
-     mc(band->buf + offs, band->ref_buf + ref_offs, band->pitch, mc_type);
+     if (mc_type2 == -1) {
+         mc(band->buf + offs, band->ref_buf + ref_offs, band->pitch, mc_type);
+     } else {
+         int ref_offs2 = offs + mv_y2 * band->pitch + mv_x2;
+         int ref_size2 = (mc_type2 > 1) * band->pitch + (mc_type2 & 1);
+         if (offs < 0 || ref_offs2 < 0 || !band->b_ref_buf)
+             return AVERROR_INVALIDDATA;
+         if (buf_size - min_size - ref_size2 < ref_offs2)
+             return AVERROR_INVALIDDATA;
+         if (mc_type == -1)
+             mc(band->buf + offs, band->b_ref_buf + ref_offs2,
+                band->pitch, mc_type2);
+         else
+             mc_avg(band->buf + offs, band->ref_buf + ref_offs,
+                    band->b_ref_buf + ref_offs2, band->pitch,
+                    mc_type, mc_type2);
+     }
  
      return 0;
  }
@@@ -261,7 -264,6 +265,7 @@@ typedef struct IVI45DecContext 
      int             (*is_nonnull_frame)(struct IVI45DecContext *ctx);
  
      int gop_invalid;
-     int buf_invalid[3];
++    int buf_invalid[4];
  
      int is_indeo4;
  
Simple merge
Simple merge