|
|
|
@ -29,6 +29,7 @@ |
|
|
|
|
#ifndef AVCODEC_IVI_DSP_H |
|
|
|
|
#define AVCODEC_IVI_DSP_H |
|
|
|
|
|
|
|
|
|
#include <stddef.h> |
|
|
|
|
#include <stdint.h> |
|
|
|
|
|
|
|
|
|
#include "ivi.h" |
|
|
|
@ -41,7 +42,7 @@ |
|
|
|
|
* @param[in] dst_pitch pitch of the destination buffer |
|
|
|
|
*/ |
|
|
|
|
void ff_ivi_recompose53(const IVIPlaneDesc *plane, uint8_t *dst, |
|
|
|
|
const int dst_pitch); |
|
|
|
|
const ptrdiff_t dst_pitch); |
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Haar wavelet recomposition filter for Indeo 4 |
|
|
|
@ -51,7 +52,7 @@ void ff_ivi_recompose53(const IVIPlaneDesc *plane, uint8_t *dst, |
|
|
|
|
* @param[in] dst_pitch pitch of the destination buffer |
|
|
|
|
*/ |
|
|
|
|
void ff_ivi_recompose_haar(const IVIPlaneDesc *plane, uint8_t *dst, |
|
|
|
|
const int dst_pitch); |
|
|
|
|
const ptrdiff_t dst_pitch); |
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* two-dimensional inverse Haar 8x8 transform for Indeo 4 |
|
|
|
@ -63,7 +64,7 @@ void ff_ivi_recompose_haar(const IVIPlaneDesc *plane, uint8_t *dst, |
|
|
|
|
* != 0 - non_empty column, 0 - empty one |
|
|
|
|
* (this array must be filled by caller) |
|
|
|
|
*/ |
|
|
|
|
void ff_ivi_inverse_haar_8x8(const int32_t *in, int16_t *out, uint32_t pitch, |
|
|
|
|
void ff_ivi_inverse_haar_8x8(const int32_t *in, int16_t *out, ptrdiff_t pitch, |
|
|
|
|
const uint8_t *flags); |
|
|
|
|
void ff_ivi_inverse_haar_8x1(const int32_t *in, int16_t *out, uint32_t pitch, |
|
|
|
|
const uint8_t *flags); |
|
|
|
@ -80,7 +81,7 @@ void ff_ivi_inverse_haar_1x8(const int32_t *in, int16_t *out, uint32_t pitch, |
|
|
|
|
* != 0 - non_empty column, 0 - empty one |
|
|
|
|
* (this array must be filled by caller) |
|
|
|
|
*/ |
|
|
|
|
void ff_ivi_row_haar8(const int32_t *in, int16_t *out, uint32_t pitch, |
|
|
|
|
void ff_ivi_row_haar8(const int32_t *in, int16_t *out, ptrdiff_t pitch, |
|
|
|
|
const uint8_t *flags); |
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
@ -93,7 +94,7 @@ void ff_ivi_row_haar8(const int32_t *in, int16_t *out, uint32_t pitch, |
|
|
|
|
* != 0 - non_empty column, 0 - empty one |
|
|
|
|
* (this array must be filled by caller) |
|
|
|
|
*/ |
|
|
|
|
void ff_ivi_col_haar8(const int32_t *in, int16_t *out, uint32_t pitch, |
|
|
|
|
void ff_ivi_col_haar8(const int32_t *in, int16_t *out, ptrdiff_t pitch, |
|
|
|
|
const uint8_t *flags); |
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
@ -106,7 +107,7 @@ void ff_ivi_col_haar8(const int32_t *in, int16_t *out, uint32_t pitch, |
|
|
|
|
* != 0 - non_empty column, 0 - empty one |
|
|
|
|
* (this array must be filled by caller) |
|
|
|
|
*/ |
|
|
|
|
void ff_ivi_inverse_haar_4x4(const int32_t *in, int16_t *out, uint32_t pitch, |
|
|
|
|
void ff_ivi_inverse_haar_4x4(const int32_t *in, int16_t *out, ptrdiff_t pitch, |
|
|
|
|
const uint8_t *flags); |
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
@ -119,7 +120,7 @@ void ff_ivi_inverse_haar_4x4(const int32_t *in, int16_t *out, uint32_t pitch, |
|
|
|
|
* != 0 - non_empty column, 0 - empty one |
|
|
|
|
* (this array must be filled by caller) |
|
|
|
|
*/ |
|
|
|
|
void ff_ivi_row_haar4(const int32_t *in, int16_t *out, uint32_t pitch, |
|
|
|
|
void ff_ivi_row_haar4(const int32_t *in, int16_t *out, ptrdiff_t pitch, |
|
|
|
|
const uint8_t *flags); |
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
@ -132,7 +133,7 @@ void ff_ivi_row_haar4(const int32_t *in, int16_t *out, uint32_t pitch, |
|
|
|
|
* != 0 - non_empty column, 0 - empty one |
|
|
|
|
* (this array must be filled by caller) |
|
|
|
|
*/ |
|
|
|
|
void ff_ivi_col_haar4(const int32_t *in, int16_t *out, uint32_t pitch, |
|
|
|
|
void ff_ivi_col_haar4(const int32_t *in, int16_t *out, ptrdiff_t pitch, |
|
|
|
|
const uint8_t *flags); |
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
@ -145,7 +146,7 @@ void ff_ivi_col_haar4(const int32_t *in, int16_t *out, uint32_t pitch, |
|
|
|
|
* @param[in] pitch pitch to move to the next y line |
|
|
|
|
* @param[in] blk_size transform block size |
|
|
|
|
*/ |
|
|
|
|
void ff_ivi_dc_haar_2d(const int32_t *in, int16_t *out, uint32_t pitch, |
|
|
|
|
void ff_ivi_dc_haar_2d(const int32_t *in, int16_t *out, ptrdiff_t pitch, |
|
|
|
|
int blk_size); |
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
@ -158,7 +159,7 @@ void ff_ivi_dc_haar_2d(const int32_t *in, int16_t *out, uint32_t pitch, |
|
|
|
|
* != 0 - non_empty column, 0 - empty one |
|
|
|
|
* (this array must be filled by caller) |
|
|
|
|
*/ |
|
|
|
|
void ff_ivi_inverse_slant_8x8(const int32_t *in, int16_t *out, uint32_t pitch, |
|
|
|
|
void ff_ivi_inverse_slant_8x8(const int32_t *in, int16_t *out, ptrdiff_t pitch, |
|
|
|
|
const uint8_t *flags); |
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
@ -171,7 +172,7 @@ void ff_ivi_inverse_slant_8x8(const int32_t *in, int16_t *out, uint32_t pitch, |
|
|
|
|
* != 0 - non_empty column, 0 - empty one |
|
|
|
|
* (this array must be filled by caller) |
|
|
|
|
*/ |
|
|
|
|
void ff_ivi_inverse_slant_4x4(const int32_t *in, int16_t *out, uint32_t pitch, |
|
|
|
|
void ff_ivi_inverse_slant_4x4(const int32_t *in, int16_t *out, ptrdiff_t pitch, |
|
|
|
|
const uint8_t *flags); |
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
@ -185,7 +186,7 @@ void ff_ivi_inverse_slant_4x4(const int32_t *in, int16_t *out, uint32_t pitch, |
|
|
|
|
* @param[in] pitch pitch to move to the next y line |
|
|
|
|
* @param[in] blk_size transform block size |
|
|
|
|
*/ |
|
|
|
|
void ff_ivi_dc_slant_2d(const int32_t *in, int16_t *out, uint32_t pitch, int blk_size); |
|
|
|
|
void ff_ivi_dc_slant_2d(const int32_t *in, int16_t *out, ptrdiff_t pitch, int blk_size); |
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* inverse 1D row slant transform |
|
|
|
@ -195,7 +196,7 @@ void ff_ivi_dc_slant_2d(const int32_t *in, int16_t *out, uint32_t pitch, int blk |
|
|
|
|
* @param[in] pitch pitch to move to the next y line |
|
|
|
|
* @param[in] flags pointer to the array of column flags (unused here) |
|
|
|
|
*/ |
|
|
|
|
void ff_ivi_row_slant8(const int32_t *in, int16_t *out, uint32_t pitch, |
|
|
|
|
void ff_ivi_row_slant8(const int32_t *in, int16_t *out, ptrdiff_t pitch, |
|
|
|
|
const uint8_t *flags); |
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
@ -208,7 +209,7 @@ void ff_ivi_row_slant8(const int32_t *in, int16_t *out, uint32_t pitch, |
|
|
|
|
* != 0 - non_empty column, 0 - empty one |
|
|
|
|
* (this array must be filled by caller) |
|
|
|
|
*/ |
|
|
|
|
void ff_ivi_col_slant8(const int32_t *in, int16_t *out, uint32_t pitch, |
|
|
|
|
void ff_ivi_col_slant8(const int32_t *in, int16_t *out, ptrdiff_t pitch, |
|
|
|
|
const uint8_t *flags); |
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
@ -219,7 +220,7 @@ void ff_ivi_col_slant8(const int32_t *in, int16_t *out, uint32_t pitch, |
|
|
|
|
* @param[in] pitch pitch to move to the next y line |
|
|
|
|
* @param[in] flags pointer to the array of column flags (unused here) |
|
|
|
|
*/ |
|
|
|
|
void ff_ivi_row_slant4(const int32_t *in, int16_t *out, uint32_t pitch, |
|
|
|
|
void ff_ivi_row_slant4(const int32_t *in, int16_t *out, ptrdiff_t pitch, |
|
|
|
|
const uint8_t *flags); |
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
@ -232,29 +233,29 @@ void ff_ivi_row_slant4(const int32_t *in, int16_t *out, uint32_t pitch, |
|
|
|
|
* != 0 - non_empty column, 0 - empty one |
|
|
|
|
* (this array must be filled by caller) |
|
|
|
|
*/ |
|
|
|
|
void ff_ivi_col_slant4(const int32_t *in, int16_t *out, uint32_t pitch, |
|
|
|
|
void ff_ivi_col_slant4(const int32_t *in, int16_t *out, ptrdiff_t pitch, |
|
|
|
|
const uint8_t *flags); |
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* DC-only inverse row slant transform |
|
|
|
|
*/ |
|
|
|
|
void ff_ivi_dc_row_slant(const int32_t *in, int16_t *out, uint32_t pitch, int blk_size); |
|
|
|
|
void ff_ivi_dc_row_slant(const int32_t *in, int16_t *out, ptrdiff_t pitch, int blk_size); |
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* DC-only inverse column slant transform |
|
|
|
|
*/ |
|
|
|
|
void ff_ivi_dc_col_slant(const int32_t *in, int16_t *out, uint32_t pitch, int blk_size); |
|
|
|
|
void ff_ivi_dc_col_slant(const int32_t *in, int16_t *out, ptrdiff_t pitch, int blk_size); |
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Copy the pixels into the frame buffer. |
|
|
|
|
*/ |
|
|
|
|
void ff_ivi_put_pixels_8x8(const int32_t *in, int16_t *out, uint32_t pitch, const uint8_t *flags); |
|
|
|
|
void ff_ivi_put_pixels_8x8(const int32_t *in, int16_t *out, ptrdiff_t pitch, const uint8_t *flags); |
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Copy the DC coefficient into the first pixel of the block and |
|
|
|
|
* zero all others. |
|
|
|
|
*/ |
|
|
|
|
void ff_ivi_put_dc_pixel_8x8(const int32_t *in, int16_t *out, uint32_t pitch, int blk_size); |
|
|
|
|
void ff_ivi_put_dc_pixel_8x8(const int32_t *in, int16_t *out, ptrdiff_t pitch, int blk_size); |
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 8x8 block motion compensation with adding delta |
|
|
|
@ -264,7 +265,7 @@ void ff_ivi_put_dc_pixel_8x8(const int32_t *in, int16_t *out, uint32_t pitch, in |
|
|
|
|
* @param[in] pitch pitch for moving to the next y line |
|
|
|
|
* @param[in] mc_type interpolation type |
|
|
|
|
*/ |
|
|
|
|
void ff_ivi_mc_8x8_delta(int16_t *buf, const int16_t *ref_buf, uint32_t pitch, int mc_type); |
|
|
|
|
void ff_ivi_mc_8x8_delta(int16_t *buf, const int16_t *ref_buf, ptrdiff_t pitch, int mc_type); |
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 4x4 block motion compensation with adding delta |
|
|
|
@ -274,7 +275,7 @@ void ff_ivi_mc_8x8_delta(int16_t *buf, const int16_t *ref_buf, uint32_t pitch, i |
|
|
|
|
* @param[in] pitch pitch for moving to the next y line |
|
|
|
|
* @param[in] mc_type interpolation type |
|
|
|
|
*/ |
|
|
|
|
void ff_ivi_mc_4x4_delta(int16_t *buf, const int16_t *ref_buf, uint32_t pitch, int mc_type); |
|
|
|
|
void ff_ivi_mc_4x4_delta(int16_t *buf, const int16_t *ref_buf, ptrdiff_t pitch, int mc_type); |
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* motion compensation without adding delta |
|
|
|
@ -284,7 +285,7 @@ void ff_ivi_mc_4x4_delta(int16_t *buf, const int16_t *ref_buf, uint32_t pitch, i |
|
|
|
|
* @param[in] pitch pitch for moving to the next y line |
|
|
|
|
* @param[in] mc_type interpolation type |
|
|
|
|
*/ |
|
|
|
|
void ff_ivi_mc_8x8_no_delta(int16_t *buf, const int16_t *ref_buf, uint32_t pitch, int mc_type); |
|
|
|
|
void ff_ivi_mc_8x8_no_delta(int16_t *buf, const int16_t *ref_buf, ptrdiff_t pitch, int mc_type); |
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 4x4 block motion compensation without adding delta |
|
|
|
@ -294,7 +295,7 @@ void ff_ivi_mc_8x8_no_delta(int16_t *buf, const int16_t *ref_buf, uint32_t pitch |
|
|
|
|
* @param[in] pitch pitch for moving to the next y line |
|
|
|
|
* @param[in] mc_type interpolation type |
|
|
|
|
*/ |
|
|
|
|
void ff_ivi_mc_4x4_no_delta(int16_t *buf, const int16_t *ref_buf, uint32_t pitch, int mc_type); |
|
|
|
|
void ff_ivi_mc_4x4_no_delta(int16_t *buf, const int16_t *ref_buf, ptrdiff_t pitch, int mc_type); |
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 8x8 block motion compensation with adding delta |
|
|
|
@ -306,7 +307,7 @@ void ff_ivi_mc_4x4_no_delta(int16_t *buf, const int16_t *ref_buf, uint32_t pitch |
|
|
|
|
* @param[in] mc_type interpolation type for backward reference |
|
|
|
|
* @param[in] mc_type2 interpolation type for forward reference |
|
|
|
|
*/ |
|
|
|
|
void ff_ivi_mc_avg_8x8_delta(int16_t *buf, const int16_t *ref_buf, const int16_t *ref_buf2, uint32_t pitch, int mc_type, int mc_type2); |
|
|
|
|
void ff_ivi_mc_avg_8x8_delta(int16_t *buf, const int16_t *ref_buf, const int16_t *ref_buf2, ptrdiff_t pitch, int mc_type, int mc_type2); |
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 4x4 block motion compensation with adding delta |
|
|
|
@ -318,7 +319,7 @@ void ff_ivi_mc_avg_8x8_delta(int16_t *buf, const int16_t *ref_buf, const int16_t |
|
|
|
|
* @param[in] mc_type interpolation type for backward reference |
|
|
|
|
* @param[in] mc_type2 interpolation type for forward reference |
|
|
|
|
*/ |
|
|
|
|
void ff_ivi_mc_avg_4x4_delta(int16_t *buf, const int16_t *ref_buf, const int16_t *ref_buf2, uint32_t pitch, int mc_type, int mc_type2); |
|
|
|
|
void ff_ivi_mc_avg_4x4_delta(int16_t *buf, const int16_t *ref_buf, const int16_t *ref_buf2, ptrdiff_t pitch, int mc_type, int mc_type2); |
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* motion compensation without adding delta for B-frames |
|
|
|
@ -330,7 +331,7 @@ void ff_ivi_mc_avg_4x4_delta(int16_t *buf, const int16_t *ref_buf, const int16_t |
|
|
|
|
* @param[in] mc_type interpolation type for backward reference |
|
|
|
|
* @param[in] mc_type2 interpolation type for forward reference |
|
|
|
|
*/ |
|
|
|
|
void ff_ivi_mc_avg_8x8_no_delta(int16_t *buf, const int16_t *ref_buf, const int16_t *ref_buf2, uint32_t pitch, int mc_type, int mc_type2); |
|
|
|
|
void ff_ivi_mc_avg_8x8_no_delta(int16_t *buf, const int16_t *ref_buf, const int16_t *ref_buf2, ptrdiff_t pitch, int mc_type, int mc_type2); |
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 4x4 block motion compensation without adding delta for B-frames |
|
|
|
@ -342,6 +343,6 @@ void ff_ivi_mc_avg_8x8_no_delta(int16_t *buf, const int16_t *ref_buf, const int1 |
|
|
|
|
* @param[in] mc_type interpolation type for backward reference |
|
|
|
|
* @param[in] mc_type2 interpolation type for forward reference |
|
|
|
|
*/ |
|
|
|
|
void ff_ivi_mc_avg_4x4_no_delta(int16_t *buf, const int16_t *ref_buf, const int16_t *ref_buf2, uint32_t pitch, int mc_type, int mc_type2); |
|
|
|
|
void ff_ivi_mc_avg_4x4_no_delta(int16_t *buf, const int16_t *ref_buf, const int16_t *ref_buf2, ptrdiff_t pitch, int mc_type, int mc_type2); |
|
|
|
|
|
|
|
|
|
#endif /* AVCODEC_IVI_DSP_H */ |
|
|
|
|