summaryrefslogtreecommitdiff
path: root/src/libffmpeg/libavcodec/dsputil.h
diff options
context:
space:
mode:
authorMike Melanson <mike@multimedia.cx>2004-03-14 21:14:07 +0000
committerMike Melanson <mike@multimedia.cx>2004-03-14 21:14:07 +0000
commit0d90aec0fd7428a77b5c4c536ab65635669bc42d (patch)
tree9eb56c6c1176bf6a6f3ae65199a3f43aa8c2aa2d /src/libffmpeg/libavcodec/dsputil.h
parentb4d3aa3dcce07b90098e33c37b563e797378d0f1 (diff)
downloadxine-lib-0d90aec0fd7428a77b5c4c536ab65635669bc42d.tar.gz
xine-lib-0d90aec0fd7428a77b5c4c536ab65635669bc42d.tar.bz2
sync to ffmpeg build 4707
CVS patchset: 6253 CVS date: 2004/03/14 21:14:07
Diffstat (limited to 'src/libffmpeg/libavcodec/dsputil.h')
-rw-r--r--src/libffmpeg/libavcodec/dsputil.h68
1 files changed, 61 insertions, 7 deletions
diff --git a/src/libffmpeg/libavcodec/dsputil.h b/src/libffmpeg/libavcodec/dsputil.h
index d8346d509..35e965db0 100644
--- a/src/libffmpeg/libavcodec/dsputil.h
+++ b/src/libffmpeg/libavcodec/dsputil.h
@@ -63,6 +63,19 @@ extern const uint8_t ff_zigzag248_direct[64];
extern uint32_t squareTbl[512];
extern uint8_t cropTbl[256 + 2 * MAX_NEG_CROP];
+/* VP3 DSP functions */
+void vp3_dsp_init_c(void);
+void vp3_idct_put_c(int16_t *input_data, int16_t *dequant_matrix,
+ int coeff_count, uint8_t *dest, int stride);
+void vp3_idct_add_c(int16_t *input_data, int16_t *dequant_matrix,
+ int coeff_count, uint8_t *dest, int stride);
+
+void vp3_dsp_init_mmx(void);
+void vp3_idct_put_mmx(int16_t *input_data, int16_t *dequant_matrix,
+ int coeff_count, uint8_t *dest, int stride);
+void vp3_idct_add_mmx(int16_t *input_data, int16_t *dequant_matrix,
+ int coeff_count, uint8_t *dest, int stride);
+
/* minimum alignment rules ;)
if u notice errors in the align stuff, need more alignment for some asm code for some cpu
@@ -207,6 +220,8 @@ typedef struct DSPContext {
*/
op_pixels_func avg_no_rnd_pixels_tab[2][4];
+ void (*put_no_rnd_pixels_l2[2])(uint8_t *block/*align width (8 or 16)*/, const uint8_t *a/*align 1*/, const uint8_t *b/*align 1*/, int line_size, int h);
+
/**
* Thirdpel motion compensation with rounding (a+b+1)>>1.
* this is an array[12] of motion compensation funcions for the 9 thirdpel positions<br>
@@ -288,6 +303,45 @@ typedef struct DSPContext {
#define FF_SIMPLE_IDCT_PERM 3
#define FF_TRANSPOSE_IDCT_PERM 4
+ int (*try_8x8basis)(int16_t rem[64], int16_t weight[64], int16_t basis[64], int scale);
+ void (*add_8x8basis)(int16_t rem[64], int16_t basis[64], int scale);
+#define BASIS_SHIFT 16
+#define RECON_SHIFT 6
+
+ /**
+ * This function handles any initialization for the VP3 DSP functions.
+ */
+ void (*vp3_dsp_init)(void);
+
+ /**
+ * This function is responsible for taking a block of zigzag'd,
+ * quantized DCT coefficients, reconstructing the original block of
+ * samples, and placing it into the output.
+ * @param input_data 64 zigzag'd, quantized DCT coefficients
+ * @param dequant_matrix 64 zigzag'd quantizer coefficients
+ * @param coeff_count index of the last coefficient
+ * @param dest the final output location where the transformed samples
+ * are to be placed
+ * @param stride the width in 8-bit samples of a line on this plane
+ */
+ void (*vp3_idct_put)(int16_t *input_data, int16_t *dequant_matrix,
+ int coeff_count, uint8_t *dest, int stride);
+
+ /**
+ * This function is responsible for taking a block of zigzag'd,
+ * quantized DCT coefficients, reconstructing the original block of
+ * samples, and adding the transformed samples to an existing block of
+ * samples in the output.
+ * @param input_data 64 zigzag'd, quantized DCT coefficients
+ * @param dequant_matrix 64 zigzag'd quantizer coefficients
+ * @param coeff_count index of the last coefficient
+ * @param dest the final output location where the transformed samples
+ * are to be placed
+ * @param stride the width in 8-bit samples of a line on this plane
+ */
+ void (*vp3_idct_add)(int16_t *input_data, int16_t *dequant_matrix,
+ int coeff_count, uint8_t *dest, int stride);
+
} DSPContext;
void dsputil_static_init(void);
@@ -457,17 +511,17 @@ typedef struct FFTContext {
void (*fft_calc)(struct FFTContext *s, FFTComplex *z);
} FFTContext;
-int fft_init(FFTContext *s, int nbits, int inverse);
-void fft_permute(FFTContext *s, FFTComplex *z);
-void fft_calc_c(FFTContext *s, FFTComplex *z);
-void fft_calc_sse(FFTContext *s, FFTComplex *z);
-void fft_calc_altivec(FFTContext *s, FFTComplex *z);
+int ff_fft_init(FFTContext *s, int nbits, int inverse);
+void ff_fft_permute(FFTContext *s, FFTComplex *z);
+void ff_fft_calc_c(FFTContext *s, FFTComplex *z);
+void ff_fft_calc_sse(FFTContext *s, FFTComplex *z);
+void ff_fft_calc_altivec(FFTContext *s, FFTComplex *z);
-static inline void fft_calc(FFTContext *s, FFTComplex *z)
+static inline void ff_fft_calc(FFTContext *s, FFTComplex *z)
{
s->fft_calc(s, z);
}
-void fft_end(FFTContext *s);
+void ff_fft_end(FFTContext *s);
/* MDCT computation */