]> git.sesse.net Git - ffmpeg/blobdiff - libavcodec/hpeldsp.h
decode: flush the internal bsfs instead of constantly reinitalizing them
[ffmpeg] / libavcodec / hpeldsp.h
index 837a11b577ab80173f5b5f6d94c1f000d63fc704..62dee6813de5c632a2440a39f58f5b147ac76d5c 100644 (file)
@@ -35,9 +35,9 @@
 // blocksizes for hpel_pixels_func are 8x4,8x8 16x8 16x16
 // h for hpel_pixels_func is limited to {width/2, width} but never larger
 // than 16 and never smaller than 4
-typedef void (*hpel_pixels_func)(uint8_t *block /*align width (8 or 16)*/,
-                                 const uint8_t *pixels /*align 1*/,
-                                 ptrdiff_t line_size, int h);
+typedef void (*op_pixels_func)(uint8_t *block /*align width (8 or 16)*/,
+                               const uint8_t *pixels /*align 1*/,
+                               ptrdiff_t line_size, int h);
 
 /**
  * Half-pel DSP context.
@@ -53,7 +53,7 @@ typedef struct HpelDSPContext {
      * @param line_size number of bytes in a horizontal line of block
      * @param h height
      */
-    hpel_pixels_func put_pixels_tab[4][4];
+    op_pixels_func put_pixels_tab[4][4];
 
     /**
      * Halfpel motion compensation with rounding (a+b+1)>>1.
@@ -65,19 +65,21 @@ typedef struct HpelDSPContext {
      * @param line_size number of bytes in a horizontal line of block
      * @param h height
      */
-    hpel_pixels_func avg_pixels_tab[4][4];
+    op_pixels_func avg_pixels_tab[4][4];
 
     /**
      * Halfpel motion compensation with no rounding (a+b)>>1.
-     * this is an array[2][4] of motion compensation functions for 2
+     * this is an array[4][4] of motion compensation functions for 2
      * horizontal blocksizes (8,16) and the 4 halfpel positions<br>
      * *pixels_tab[ 0->16xH 1->8xH ][ xhalfpel + 2*yhalfpel ]
      * @param block destination where the result is stored
      * @param pixels source
      * @param line_size number of bytes in a horizontal line of block
      * @param h height
+     * @note The size is kept at [4][4] to match the above pixel_tabs and avoid
+     *       out of bounds reads in the motion estimation code.
      */
-    hpel_pixels_func put_no_rnd_pixels_tab[2][4];
+    op_pixels_func put_no_rnd_pixels_tab[4][4];
 
     /**
      * Halfpel motion compensation with no rounding (a+b)>>1.
@@ -89,11 +91,12 @@ typedef struct HpelDSPContext {
      * @param line_size number of bytes in a horizontal line of block
      * @param h height
      */
-    hpel_pixels_func avg_no_rnd_pixels_tab[4];
+    op_pixels_func avg_no_rnd_pixels_tab[4];
 } HpelDSPContext;
 
 void ff_hpeldsp_init(HpelDSPContext *c, int flags);
 
+void ff_hpeldsp_init_aarch64(HpelDSPContext *c, int flags);
 void ff_hpeldsp_init_arm(HpelDSPContext *c, int flags);
 void ff_hpeldsp_init_ppc(HpelDSPContext *c, int flags);
 void ff_hpeldsp_init_x86(HpelDSPContext *c, int flags);