aboutsummaryrefslogtreecommitdiffstats
path: root/libavcodec/dsputil.h
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2002-09-14 19:00:09 +0000
committerMichael Niedermayer <michaelni@gmx.at>2002-09-14 19:00:09 +0000
commitb7c27ee601009168f874e9367286ae6a815d13b9 (patch)
tree2be234c55419e661abdfe28562f4035d6f01d4cb /libavcodec/dsputil.h
parenta172cae62e34b9cd2ce5200c8e8196f5c4454644 (diff)
downloadffmpeg-b7c27ee601009168f874e9367286ae6a815d13b9.tar.gz
alignment info
Originally committed as revision 947 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'libavcodec/dsputil.h')
-rw-r--r--libavcodec/dsputil.h36
1 files changed, 23 insertions, 13 deletions
diff --git a/libavcodec/dsputil.h b/libavcodec/dsputil.h
index 0ec9d5cccb..1bc3a469ac 100644
--- a/libavcodec/dsputil.h
+++ b/libavcodec/dsputil.h
@@ -50,17 +50,26 @@ extern UINT8 cropTbl[256 + 2 * MAX_NEG_CROP];
void dsputil_init(void);
-/* pixel ops : interface with DCT */
+/* minimum alignment rules ;)
+if u notice errors in the align stuff, need more alignment for some asm code for some cpu
+or need to use a function with less aligned data then send a mail to the ffmpeg-dev list, ...
+
+!warning these alignments might not match reallity, (missing attribute((align)) stuff somewhere possible)
+i (michael) didnt check them, these are just the alignents which i think could be reached easily ...
-extern void (*ff_idct)(DCTELEM *block);
-extern void (*ff_idct_put)(UINT8 *dest, int line_size, DCTELEM *block);
-extern void (*ff_idct_add)(UINT8 *dest, int line_size, DCTELEM *block);
-extern void (*get_pixels)(DCTELEM *block, const UINT8 *pixels, int line_size);
-extern void (*diff_pixels)(DCTELEM *block, const UINT8 *s1, const UINT8 *s2, int stride);
-extern void (*put_pixels_clamped)(const DCTELEM *block, UINT8 *pixels, int line_size);
-extern void (*add_pixels_clamped)(const DCTELEM *block, UINT8 *pixels, int line_size);
-extern void (*gmc1)(UINT8 *dst, UINT8 *src, int srcStride, int h, int x16, int y16, int rounder);
-extern void (*clear_blocks)(DCTELEM *blocks);
+!future video codecs might need functions with less strict alignment
+*/
+
+/* pixel ops : interface with DCT */
+extern void (*ff_idct)(DCTELEM *block/*align 16*/);
+extern void (*ff_idct_put)(UINT8 *dest/*align 8*/, int line_size, DCTELEM *block/*align 16*/);
+extern void (*ff_idct_add)(UINT8 *dest/*align 8*/, int line_size, DCTELEM *block/*align 16*/);
+extern void (*get_pixels)(DCTELEM *block/*align 16*/, const UINT8 *pixels/*align 8*/, int line_size);
+extern void (*diff_pixels)(DCTELEM *block/*align 16*/, const UINT8 *s1/*align 8*/, const UINT8 *s2/*align 8*/, int stride);
+extern void (*put_pixels_clamped)(const DCTELEM *block/*align 16*/, UINT8 *pixels/*align 8*/, int line_size);
+extern void (*add_pixels_clamped)(const DCTELEM *block/*align 16*/, UINT8 *pixels/*align 8*/, int line_size);
+extern void (*gmc1)(UINT8 *dst/*align 8*/, UINT8 *src/*align 1*/, int srcStride, int h, int x16, int y16, int rounder);
+extern void (*clear_blocks)(DCTELEM *blocks/*align 16*/);
extern int (*pix_sum)(UINT8 * pix, int line_size);
extern int (*pix_norm1)(UINT8 * pix, int line_size);
@@ -73,8 +82,9 @@ void add_pixels_clamped_c(const DCTELEM *block, UINT8 *pixels, int line_size);
void clear_blocks_c(DCTELEM *blocks);
/* add and put pixel (decoding) */
-typedef void (*op_pixels_func)(UINT8 *block, const UINT8 *pixels, int line_size, int h);
-typedef void (*qpel_mc_func)(UINT8 *dst, UINT8 *src, int stride);
+// blocksizes for op_pixels_func are 8x4,8x8 16x8 16x16
+typedef void (*op_pixels_func)(UINT8 *block/*align width (8 or 16)*/, const UINT8 *pixels/*align 1*/, int line_size, int h);
+typedef void (*qpel_mc_func)(UINT8 *dst/*align width (8 or 16)*/, UINT8 *src/*align 1*/, int stride);
extern op_pixels_func put_pixels_tab[2][4];
extern op_pixels_func avg_pixels_tab[2][4];
@@ -93,7 +103,7 @@ static void a(uint8_t *block, const uint8_t *pixels, int line_size, int h){\
/* motion estimation */
-typedef int (*op_pixels_abs_func)(UINT8 *blk1, UINT8 *blk2, int line_size);
+typedef int (*op_pixels_abs_func)(UINT8 *blk1/*align width (8 or 16)*/, UINT8 *blk2/*align 1*/, int line_size);
extern op_pixels_abs_func pix_abs16x16;
extern op_pixels_abs_func pix_abs16x16_x2;