|
|
|
@ -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); |
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
@ -76,7 +77,7 @@ void ff_ivi_inverse_haar_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_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); |
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
@ -89,7 +90,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); |
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
@ -102,7 +103,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); |
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
@ -115,7 +116,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); |
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
@ -128,7 +129,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); |
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
@ -141,7 +142,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); |
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
@ -154,7 +155,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); |
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
@ -167,7 +168,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); |
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
@ -181,7 +182,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 |
|
|
|
@ -191,7 +192,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); |
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
@ -204,7 +205,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); |
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
@ -215,7 +216,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); |
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
@ -228,29 +229,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 |
|
|
|
@ -260,7 +261,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 |
|
|
|
@ -270,7 +271,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 |
|
|
|
@ -280,7 +281,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 |
|
|
|
@ -290,7 +291,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 |
|
|
|
@ -302,7 +303,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 |
|
|
|
@ -314,7 +315,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 |
|
|
|
@ -326,7 +327,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 |
|
|
|
@ -338,6 +339,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 */ |
|
|
|
|