FFmpeg
|
DSP functions (inverse transforms, motion compensations, wavelet recomposition) for Indeo Video Interactive codecs. More...
Go to the source code of this file.
Functions | |
void | ff_ivi_recompose53 (const IVIPlaneDesc *plane, uint8_t *dst, const int dst_pitch) |
5/3 wavelet recomposition filter for Indeo5 More... | |
void | ff_ivi_recompose_haar (const IVIPlaneDesc *plane, uint8_t *dst, const int dst_pitch) |
Haar wavelet recomposition filter for Indeo 4. More... | |
void | ff_ivi_inverse_haar_8x8 (const int32_t *in, int16_t *out, uint32_t pitch, const uint8_t *flags) |
two-dimensional inverse Haar 8x8 transform for Indeo 4 More... | |
void | ff_ivi_inverse_haar_8x1 (const int32_t *in, int16_t *out, uint32_t pitch, const uint8_t *flags) |
void | ff_ivi_inverse_haar_1x8 (const int32_t *in, int16_t *out, uint32_t pitch, const uint8_t *flags) |
void | ff_ivi_row_haar8 (const int32_t *in, int16_t *out, uint32_t pitch, const uint8_t *flags) |
one-dimensional inverse 8-point Haar transform on rows for Indeo 4 More... | |
void | ff_ivi_col_haar8 (const int32_t *in, int16_t *out, uint32_t pitch, const uint8_t *flags) |
one-dimensional inverse 8-point Haar transform on columns for Indeo 4 More... | |
void | ff_ivi_inverse_haar_4x4 (const int32_t *in, int16_t *out, uint32_t pitch, const uint8_t *flags) |
two-dimensional inverse Haar 4x4 transform for Indeo 4 More... | |
void | ff_ivi_row_haar4 (const int32_t *in, int16_t *out, uint32_t pitch, const uint8_t *flags) |
one-dimensional inverse 4-point Haar transform on rows for Indeo 4 More... | |
void | ff_ivi_col_haar4 (const int32_t *in, int16_t *out, uint32_t pitch, const uint8_t *flags) |
one-dimensional inverse 4-point Haar transform on columns for Indeo 4 More... | |
void | ff_ivi_dc_haar_2d (const int32_t *in, int16_t *out, uint32_t pitch, int blk_size) |
DC-only two-dimensional inverse Haar transform for Indeo 4. More... | |
void | ff_ivi_inverse_slant_8x8 (const int32_t *in, int16_t *out, uint32_t pitch, const uint8_t *flags) |
two-dimensional inverse slant 8x8 transform More... | |
void | ff_ivi_inverse_slant_4x4 (const int32_t *in, int16_t *out, uint32_t pitch, const uint8_t *flags) |
two-dimensional inverse slant 4x4 transform More... | |
void | ff_ivi_dc_slant_2d (const int32_t *in, int16_t *out, uint32_t pitch, int blk_size) |
DC-only two-dimensional inverse slant transform. More... | |
void | ff_ivi_row_slant8 (const int32_t *in, int16_t *out, uint32_t pitch, const uint8_t *flags) |
inverse 1D row slant transform More... | |
void | ff_ivi_col_slant8 (const int32_t *in, int16_t *out, uint32_t pitch, const uint8_t *flags) |
inverse 1D column slant transform More... | |
void | ff_ivi_row_slant4 (const int32_t *in, int16_t *out, uint32_t pitch, const uint8_t *flags) |
inverse 1D row slant transform More... | |
void | ff_ivi_col_slant4 (const int32_t *in, int16_t *out, uint32_t pitch, const uint8_t *flags) |
inverse 1D column slant transform More... | |
void | ff_ivi_dc_row_slant (const int32_t *in, int16_t *out, uint32_t pitch, int blk_size) |
DC-only inverse row slant transform. More... | |
void | ff_ivi_dc_col_slant (const int32_t *in, int16_t *out, uint32_t pitch, int blk_size) |
DC-only inverse column slant transform. More... | |
void | ff_ivi_put_pixels_8x8 (const int32_t *in, int16_t *out, uint32_t pitch, const uint8_t *flags) |
Copy the pixels into the frame buffer. More... | |
void | ff_ivi_put_dc_pixel_8x8 (const int32_t *in, int16_t *out, uint32_t pitch, int blk_size) |
Copy the DC coefficient into the first pixel of the block and zero all others. More... | |
void | ff_ivi_mc_8x8_delta (int16_t *buf, const int16_t *ref_buf, uint32_t pitch, int mc_type) |
8x8 block motion compensation with adding delta More... | |
void | ff_ivi_mc_4x4_delta (int16_t *buf, const int16_t *ref_buf, uint32_t pitch, int mc_type) |
4x4 block motion compensation with adding delta More... | |
void | ff_ivi_mc_8x8_no_delta (int16_t *buf, const int16_t *ref_buf, uint32_t pitch, int mc_type) |
motion compensation without adding delta More... | |
void | ff_ivi_mc_4x4_no_delta (int16_t *buf, const int16_t *ref_buf, uint32_t pitch, int mc_type) |
4x4 block motion compensation without adding delta More... | |
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) |
8x8 block motion compensation with adding delta More... | |
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) |
4x4 block motion compensation with adding delta More... | |
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) |
motion compensation without adding delta for B-frames More... | |
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) |
4x4 block motion compensation without adding delta for B-frames More... | |
DSP functions (inverse transforms, motion compensations, wavelet recomposition) for Indeo Video Interactive codecs.
Definition in file ivi_dsp.h.
void ff_ivi_recompose53 | ( | const IVIPlaneDesc * | plane, |
uint8_t * | dst, | ||
const int | dst_pitch | ||
) |
5/3 wavelet recomposition filter for Indeo5
[in] | plane | pointer to the descriptor of the plane being processed |
[out] | dst | pointer to the destination buffer |
[in] | dst_pitch | pitch of the destination buffer |
Definition at line 33 of file ivi_dsp.c.
Referenced by ff_ivi_decode_frame().
void ff_ivi_recompose_haar | ( | const IVIPlaneDesc * | plane, |
uint8_t * | dst, | ||
const int | dst_pitch | ||
) |
Haar wavelet recomposition filter for Indeo 4.
[in] | plane | pointer to the descriptor of the plane being processed |
[out] | dst | pointer to the destination buffer |
[in] | dst_pitch | pitch of the destination buffer |
Definition at line 190 of file ivi_dsp.c.
Referenced by ff_ivi_decode_frame().
void ff_ivi_inverse_haar_8x8 | ( | const int32_t * | in, |
int16_t * | out, | ||
uint32_t | pitch, | ||
const uint8_t * | flags | ||
) |
two-dimensional inverse Haar 8x8 transform for Indeo 4
[in] | in | pointer to the vector of transform coefficients |
[out] | out | pointer to the output buffer (frame) |
[in] | pitch | pitch to move to the next y line |
[in] | flags | pointer to the array of column flags: != 0 - non_empty column, 0 - empty one (this array must be filled by caller) |
void ff_ivi_inverse_haar_8x1 | ( | const int32_t * | in, |
int16_t * | out, | ||
uint32_t | pitch, | ||
const uint8_t * | flags | ||
) |
void ff_ivi_inverse_haar_1x8 | ( | const int32_t * | in, |
int16_t * | out, | ||
uint32_t | pitch, | ||
const uint8_t * | flags | ||
) |
one-dimensional inverse 8-point Haar transform on rows for Indeo 4
[in] | in | pointer to the vector of transform coefficients |
[out] | out | pointer to the output buffer (frame) |
[in] | pitch | pitch to move to the next y line |
[in] | flags | pointer to the array of column flags: != 0 - non_empty column, 0 - empty one (this array must be filled by caller) |
one-dimensional inverse 8-point Haar transform on columns for Indeo 4
[in] | in | pointer to the vector of transform coefficients |
[out] | out | pointer to the output buffer (frame) |
[in] | pitch | pitch to move to the next y line |
[in] | flags | pointer to the array of column flags: != 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, | ||
const uint8_t * | flags | ||
) |
two-dimensional inverse Haar 4x4 transform for Indeo 4
[in] | in | pointer to the vector of transform coefficients |
[out] | out | pointer to the output buffer (frame) |
[in] | pitch | pitch to move to the next y line |
[in] | flags | pointer to the array of column flags: != 0 - non_empty column, 0 - empty one (this array must be filled by caller) |
one-dimensional inverse 4-point Haar transform on rows for Indeo 4
[in] | in | pointer to the vector of transform coefficients |
[out] | out | pointer to the output buffer (frame) |
[in] | pitch | pitch to move to the next y line |
[in] | flags | pointer to the array of column flags: != 0 - non_empty column, 0 - empty one (this array must be filled by caller) |
one-dimensional inverse 4-point Haar transform on columns for Indeo 4
[in] | in | pointer to the vector of transform coefficients |
[out] | out | pointer to the output buffer (frame) |
[in] | pitch | pitch to move to the next y line |
[in] | flags | pointer to the array of column flags: != 0 - non_empty column, 0 - empty one (this array must be filled by caller) |
DC-only two-dimensional inverse Haar transform for Indeo 4.
Performing the inverse transform in this case is equivalent to spreading DC_coeff >> 3 over the whole block.
[in] | in | pointer to the dc coefficient |
[out] | out | pointer to the output buffer (frame) |
[in] | pitch | pitch to move to the next y line |
[in] | blk_size | transform block size |
void ff_ivi_inverse_slant_8x8 | ( | const int32_t * | in, |
int16_t * | out, | ||
uint32_t | pitch, | ||
const uint8_t * | flags | ||
) |
two-dimensional inverse slant 8x8 transform
[in] | in | pointer to the vector of transform coefficients |
[out] | out | pointer to the output buffer (frame) |
[in] | pitch | pitch to move to the next y line |
[in] | flags | pointer to the array of column flags: != 0 - non_empty column, 0 - empty one (this array must be filled by caller) |
Definition at line 536 of file ivi_dsp.c.
Referenced by decode_gop_header().
void ff_ivi_inverse_slant_4x4 | ( | const int32_t * | in, |
int16_t * | out, | ||
uint32_t | pitch, | ||
const uint8_t * | flags | ||
) |
two-dimensional inverse slant 4x4 transform
[in] | in | pointer to the vector of transform coefficients |
[out] | out | pointer to the output buffer (frame) |
[in] | pitch | pitch to move to the next y line |
[in] | flags | pointer to the array of column flags: != 0 - non_empty column, 0 - empty one (this array must be filled by caller) |
Definition at line 576 of file ivi_dsp.c.
Referenced by decode_gop_header().
DC-only two-dimensional inverse slant transform.
Performing the inverse slant transform in this case is equivalent to spreading (DC_coeff + 1)/2 over the whole block. It works much faster than performing the slant transform on a vector of zeroes.
[in] | in | pointer to the dc coefficient |
[out] | out | pointer to the output buffer (frame) |
[in] | pitch | pitch to move to the next y line |
[in] | blk_size | transform block size |
Definition at line 616 of file ivi_dsp.c.
Referenced by decode_gop_header().
inverse 1D row slant transform
[in] | in | pointer to the vector of transform coefficients |
[out] | out | pointer to the output buffer (frame) |
[in] | pitch | pitch to move to the next y line |
[in] | flags | pointer to the array of column flags (unused here) |
Definition at line 629 of file ivi_dsp.c.
Referenced by decode_gop_header().
inverse 1D column slant transform
[in] | in | pointer to the vector of transform coefficients |
[out] | out | pointer to the output buffer (frame) |
[in] | pitch | pitch to move to the next y line |
[in] | flags | pointer to the array of column flags: != 0 - non_empty column, 0 - empty one (this array must be filled by caller) |
Definition at line 667 of file ivi_dsp.c.
Referenced by decode_gop_header().
inverse 1D column slant transform
[in] | in | pointer to the vector of transform coefficients |
[out] | out | pointer to the output buffer (frame) |
[in] | pitch | pitch to move to the next y line |
[in] | flags | pointer to the array of column flags: != 0 - non_empty column, 0 - empty one (this array must be filled by caller) |
DC-only inverse row slant transform.
Definition at line 649 of file ivi_dsp.c.
Referenced by decode_gop_header().
DC-only inverse column slant transform.
Definition at line 694 of file ivi_dsp.c.
Referenced by decode_gop_header().
void ff_ivi_put_pixels_8x8 | ( | const int32_t * | in, |
int16_t * | out, | ||
uint32_t | pitch, | ||
const uint8_t * | flags | ||
) |
Copy the pixels into the frame buffer.
Definition at line 751 of file ivi_dsp.c.
Referenced by decode_gop_header().
Copy the DC coefficient into the first pixel of the block and zero all others.
Definition at line 761 of file ivi_dsp.c.
Referenced by decode_gop_header().
void ff_ivi_mc_8x8_delta | ( | int16_t * | buf, |
const int16_t * | ref_buf, | ||
uint32_t | pitch, | ||
int | mc_type | ||
) |
8x8 block motion compensation with adding delta
[in,out] | buf | pointer to the block in the current frame buffer containing delta |
[in] | ref_buf | pointer to the corresponding block in the reference frame |
[in] | pitch | pitch for moving to the next y line |
[in] | mc_type | interpolation type |
Referenced by ivi_decode_blocks().
void ff_ivi_mc_4x4_delta | ( | int16_t * | buf, |
const int16_t * | ref_buf, | ||
uint32_t | pitch, | ||
int | mc_type | ||
) |
4x4 block motion compensation with adding delta
[in,out] | buf | pointer to the block in the current frame buffer containing delta |
[in] | ref_buf | pointer to the corresponding block in the reference frame |
[in] | pitch | pitch for moving to the next y line |
[in] | mc_type | interpolation type |
Referenced by ivi_decode_blocks().
void ff_ivi_mc_8x8_no_delta | ( | int16_t * | buf, |
const int16_t * | ref_buf, | ||
uint32_t | pitch, | ||
int | mc_type | ||
) |
motion compensation without adding delta
[in,out] | buf | pointer to the block in the current frame receiving the result |
[in] | ref_buf | pointer to the corresponding block in the reference frame |
[in] | pitch | pitch for moving to the next y line |
[in] | mc_type | interpolation type |
Referenced by ivi_decode_blocks(), and ivi_process_empty_tile().
void ff_ivi_mc_4x4_no_delta | ( | int16_t * | buf, |
const int16_t * | ref_buf, | ||
uint32_t | pitch, | ||
int | mc_type | ||
) |
4x4 block motion compensation without adding delta
[in,out] | buf | pointer to the block in the current frame receiving the result |
[in] | ref_buf | pointer to the corresponding block in the reference frame |
[in] | pitch | pitch for moving to the next y line |
[in] | mc_type | interpolation type |
Referenced by ivi_decode_blocks(), and ivi_process_empty_tile().
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 | ||
) |
8x8 block motion compensation with adding delta
[in,out] | buf | pointer to the block in the current frame buffer containing delta |
[in] | ref_buf | pointer to the corresponding block in the backward reference frame |
[in] | ref_buf2 | pointer to the corresponding block in the forward reference frame |
[in] | pitch | pitch for moving to the next y line |
[in] | mc_type | interpolation type for backward reference |
[in] | mc_type2 | interpolation type for forward reference |
Referenced by ivi_decode_blocks().
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 | ||
) |
4x4 block motion compensation with adding delta
[in,out] | buf | pointer to the block in the current frame buffer containing delta |
[in] | ref_buf | pointer to the corresponding block in the backward reference frame |
[in] | ref_buf2 | pointer to the corresponding block in the forward reference frame |
[in] | pitch | pitch for moving to the next y line |
[in] | mc_type | interpolation type for backward reference |
[in] | mc_type2 | interpolation type for forward reference |
Referenced by ivi_decode_blocks().
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 | ||
) |
motion compensation without adding delta for B-frames
[in,out] | buf | pointer to the block in the current frame receiving the result |
[in] | ref_buf | pointer to the corresponding block in the backward reference frame |
[in] | ref_buf2 | pointer to the corresponding block in the forward reference frame |
[in] | pitch | pitch for moving to the next y line |
[in] | mc_type | interpolation type for backward reference |
[in] | mc_type2 | interpolation type for forward reference |
Referenced by ivi_decode_blocks().
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 | ||
) |
4x4 block motion compensation without adding delta for B-frames
[in,out] | buf | pointer to the block in the current frame receiving the result |
[in] | ref_buf | pointer to the corresponding block in the backward reference frame |
[in] | ref_buf2 | pointer to the corresponding block in the forward reference frame |
[in] | pitch | pitch for moving to the next y line |
[in] | mc_type | interpolation type for backward reference |
[in] | mc_type2 | interpolation type for forward reference |
Referenced by ivi_decode_blocks().