avidec: avoid infinite loop due to negative ast->sample_size
[ffmpeg.git] / libavcodec / vp9dsp.h
index 2637127..33dfc09 100644 (file)
@@ -24,6 +24,7 @@
 #ifndef AVCODEC_VP9DSP_H
 #define AVCODEC_VP9DSP_H
 
+#include <stddef.h>
 #include <stdint.h>
 
 #include "vp9.h"
@@ -31,6 +32,9 @@
 typedef void (*vp9_mc_func)(uint8_t *dst, ptrdiff_t dst_stride,
                             const uint8_t *ref, ptrdiff_t ref_stride,
                             int h, int mx, int my);
+typedef void (*vp9_scaled_mc_func)(uint8_t *dst, ptrdiff_t dst_stride,
+                                   const uint8_t *ref, ptrdiff_t ref_stride,
+                                   int h, int mx, int my, int dx, int dy);
 
 typedef struct VP9DSPContext {
     /*
@@ -103,11 +107,17 @@ typedef struct VP9DSPContext {
      * dimension 2: filter type (0: smooth, 1: regular, 2: sharp, 3: bilin)
      * dimension 3: averaging type (0: put, 1: avg)
      * dimension 4: x subpel interpolation (0: none, 1: 8tap/bilin)
-     * dimension 5: y subpel interpolation (1: none, 1: 8tap/bilin)
+     * dimension 5: y subpel interpolation (0: none, 1: 8tap/bilin)
      *
      * dst/stride are aligned by hsize
      */
     vp9_mc_func mc[5][4][2][2][2];
+
+    /*
+     * for scalable MC, first 3 dimensions identical to above, the other two
+     * don't exist since it changes per stepsize.
+     */
+    vp9_scaled_mc_func smc[5][4][2];
 } VP9DSPContext;
 
 void ff_vp9dsp_init(VP9DSPContext *dsp);