FFmpeg  4.0
Functions
ivi_dsp.h File Reference

DSP functions (inverse transforms, motion compensations, wavelet recomposition) for Indeo Video Interactive codecs. More...

#include <stddef.h>
#include <stdint.h>
#include "ivi.h"

Go to the source code of this file.

Functions

void ff_ivi_recompose53 (const IVIPlaneDesc *plane, uint8_t *dst, const ptrdiff_t dst_pitch)
 5/3 wavelet recomposition filter for Indeo5 More...
 
void ff_ivi_recompose_haar (const IVIPlaneDesc *plane, uint8_t *dst, const ptrdiff_t dst_pitch)
 Haar wavelet recomposition filter for Indeo 4. More...
 
void ff_ivi_inverse_haar_8x8 (const int32_t *in, int16_t *out, ptrdiff_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, ptrdiff_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, ptrdiff_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, ptrdiff_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, ptrdiff_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, ptrdiff_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, ptrdiff_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, ptrdiff_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, ptrdiff_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, ptrdiff_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, ptrdiff_t pitch, const uint8_t *flags)
 inverse 1D row slant transform More...
 
void ff_ivi_col_slant8 (const int32_t *in, int16_t *out, ptrdiff_t pitch, const uint8_t *flags)
 inverse 1D column slant transform More...
 
void ff_ivi_row_slant4 (const int32_t *in, int16_t *out, ptrdiff_t pitch, const uint8_t *flags)
 inverse 1D row slant transform More...
 
void ff_ivi_col_slant4 (const int32_t *in, int16_t *out, ptrdiff_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, ptrdiff_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, ptrdiff_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, ptrdiff_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, ptrdiff_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, ptrdiff_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, ptrdiff_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, ptrdiff_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, ptrdiff_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, ptrdiff_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, ptrdiff_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, ptrdiff_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, ptrdiff_t pitch, int mc_type, int mc_type2)
 4x4 block motion compensation without adding delta for B-frames More...
 

Detailed Description

DSP functions (inverse transforms, motion compensations, wavelet recomposition) for Indeo Video Interactive codecs.

Definition in file ivi_dsp.h.

Function Documentation

◆ ff_ivi_recompose53()

void ff_ivi_recompose53 ( const IVIPlaneDesc plane,
uint8_t dst,
const ptrdiff_t  dst_pitch 
)

5/3 wavelet recomposition filter for Indeo5

Parameters
[in]planepointer to the descriptor of the plane being processed
[out]dstpointer to the destination buffer
[in]dst_pitchpitch of the destination buffer

Definition at line 33 of file ivi_dsp.c.

Referenced by ff_ivi_decode_frame().

◆ ff_ivi_recompose_haar()

void ff_ivi_recompose_haar ( const IVIPlaneDesc plane,
uint8_t dst,
const ptrdiff_t  dst_pitch 
)

Haar wavelet recomposition filter for Indeo 4.

Parameters
[in]planepointer to the descriptor of the plane being processed
[out]dstpointer to the destination buffer
[in]dst_pitchpitch of the destination buffer

Definition at line 190 of file ivi_dsp.c.

Referenced by ff_ivi_decode_frame().

◆ ff_ivi_inverse_haar_8x8()

void ff_ivi_inverse_haar_8x8 ( const int32_t in,
int16_t *  out,
ptrdiff_t  pitch,
const uint8_t flags 
)

two-dimensional inverse Haar 8x8 transform for Indeo 4

Parameters
[in]inpointer to the vector of transform coefficients
[out]outpointer to the output buffer (frame)
[in]pitchpitch to move to the next y line
[in]flagspointer to the array of column flags: != 0 - non_empty column, 0 - empty one (this array must be filled by caller)

Definition at line 270 of file ivi_dsp.c.

◆ ff_ivi_inverse_haar_8x1()

void ff_ivi_inverse_haar_8x1 ( const int32_t in,
int16_t *  out,
uint32_t  pitch,
const uint8_t flags 
)

◆ ff_ivi_inverse_haar_1x8()

void ff_ivi_inverse_haar_1x8 ( const int32_t in,
int16_t *  out,
uint32_t  pitch,
const uint8_t flags 
)

◆ ff_ivi_row_haar8()

void ff_ivi_row_haar8 ( const int32_t in,
int16_t *  out,
ptrdiff_t  pitch,
const uint8_t flags 
)

one-dimensional inverse 8-point Haar transform on rows for Indeo 4

Parameters
[in]inpointer to the vector of transform coefficients
[out]outpointer to the output buffer (frame)
[in]pitchpitch to move to the next y line
[in]flagspointer to the array of column flags: != 0 - non_empty column, 0 - empty one (this array must be filled by caller)

Definition at line 325 of file ivi_dsp.c.

◆ ff_ivi_col_haar8()

void ff_ivi_col_haar8 ( const int32_t in,
int16_t *  out,
ptrdiff_t  pitch,
const uint8_t flags 
)

one-dimensional inverse 8-point Haar transform on columns for Indeo 4

Parameters
[in]inpointer to the vector of transform coefficients
[out]outpointer to the output buffer (frame)
[in]pitchpitch to move to the next y line
[in]flagspointer to the array of column flags: != 0 - non_empty column, 0 - empty one (this array must be filled by caller)

Definition at line 350 of file ivi_dsp.c.

◆ ff_ivi_inverse_haar_4x4()

void ff_ivi_inverse_haar_4x4 ( const int32_t in,
int16_t *  out,
ptrdiff_t  pitch,
const uint8_t flags 
)

two-dimensional inverse Haar 4x4 transform for Indeo 4

Parameters
[in]inpointer to the vector of transform coefficients
[out]outpointer to the output buffer (frame)
[in]pitchpitch to move to the next y line
[in]flagspointer to the array of column flags: != 0 - non_empty column, 0 - empty one (this array must be filled by caller)

Definition at line 379 of file ivi_dsp.c.

◆ ff_ivi_row_haar4()

void ff_ivi_row_haar4 ( const int32_t in,
int16_t *  out,
ptrdiff_t  pitch,
const uint8_t flags 
)

one-dimensional inverse 4-point Haar transform on rows for Indeo 4

Parameters
[in]inpointer to the vector of transform coefficients
[out]outpointer to the output buffer (frame)
[in]pitchpitch to move to the next y line
[in]flagspointer to the array of column flags: != 0 - non_empty column, 0 - empty one (this array must be filled by caller)

Definition at line 426 of file ivi_dsp.c.

◆ ff_ivi_col_haar4()

void ff_ivi_col_haar4 ( const int32_t in,
int16_t *  out,
ptrdiff_t  pitch,
const uint8_t flags 
)

one-dimensional inverse 4-point Haar transform on columns for Indeo 4

Parameters
[in]inpointer to the vector of transform coefficients
[out]outpointer to the output buffer (frame)
[in]pitchpitch to move to the next y line
[in]flagspointer to the array of column flags: != 0 - non_empty column, 0 - empty one (this array must be filled by caller)

Definition at line 448 of file ivi_dsp.c.

◆ ff_ivi_dc_haar_2d()

void ff_ivi_dc_haar_2d ( const int32_t in,
int16_t *  out,
ptrdiff_t  pitch,
int  blk_size 
)

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.

Parameters
[in]inpointer to the dc coefficient
[out]outpointer to the output buffer (frame)
[in]pitchpitch to move to the next y line
[in]blk_sizetransform block size

Definition at line 472 of file ivi_dsp.c.

◆ ff_ivi_inverse_slant_8x8()

void ff_ivi_inverse_slant_8x8 ( const int32_t in,
int16_t *  out,
ptrdiff_t  pitch,
const uint8_t flags 
)

two-dimensional inverse slant 8x8 transform

Parameters
[in]inpointer to the vector of transform coefficients
[out]outpointer to the output buffer (frame)
[in]pitchpitch to move to the next y line
[in]flagspointer 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().

◆ ff_ivi_inverse_slant_4x4()

void ff_ivi_inverse_slant_4x4 ( const int32_t in,
int16_t *  out,
ptrdiff_t  pitch,
const uint8_t flags 
)

two-dimensional inverse slant 4x4 transform

Parameters
[in]inpointer to the vector of transform coefficients
[out]outpointer to the output buffer (frame)
[in]pitchpitch to move to the next y line
[in]flagspointer 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().

◆ ff_ivi_dc_slant_2d()

void ff_ivi_dc_slant_2d ( const int32_t in,
int16_t *  out,
ptrdiff_t  pitch,
int  blk_size 
)

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.

Parameters
[in]inpointer to the dc coefficient
[out]outpointer to the output buffer (frame)
[in]pitchpitch to move to the next y line
[in]blk_sizetransform block size

Definition at line 616 of file ivi_dsp.c.

Referenced by decode_gop_header().

◆ ff_ivi_row_slant8()

void ff_ivi_row_slant8 ( const int32_t in,
int16_t *  out,
ptrdiff_t  pitch,
const uint8_t flags 
)

inverse 1D row slant transform

Parameters
[in]inpointer to the vector of transform coefficients
[out]outpointer to the output buffer (frame)
[in]pitchpitch to move to the next y line
[in]flagspointer to the array of column flags (unused here)

Definition at line 629 of file ivi_dsp.c.

Referenced by decode_gop_header().

◆ ff_ivi_col_slant8()

void ff_ivi_col_slant8 ( const int32_t in,
int16_t *  out,
ptrdiff_t  pitch,
const uint8_t flags 
)

inverse 1D column slant transform

Parameters
[in]inpointer to the vector of transform coefficients
[out]outpointer to the output buffer (frame)
[in]pitchpitch to move to the next y line
[in]flagspointer 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().

◆ ff_ivi_row_slant4()

void ff_ivi_row_slant4 ( const int32_t in,
int16_t *  out,
ptrdiff_t  pitch,
const uint8_t flags 
)

inverse 1D row slant transform

Parameters
[in]inpointer to the vector of transform coefficients
[out]outpointer to the output buffer (frame)
[in]pitchpitch to move to the next y line
[in]flagspointer to the array of column flags (unused here)

Definition at line 708 of file ivi_dsp.c.

◆ ff_ivi_col_slant4()

void ff_ivi_col_slant4 ( const int32_t in,
int16_t *  out,
ptrdiff_t  pitch,
const uint8_t flags 
)

inverse 1D column slant transform

Parameters
[in]inpointer to the vector of transform coefficients
[out]outpointer to the output buffer (frame)
[in]pitchpitch to move to the next y line
[in]flagspointer to the array of column flags: != 0 - non_empty column, 0 - empty one (this array must be filled by caller)

Definition at line 728 of file ivi_dsp.c.

◆ ff_ivi_dc_row_slant()

void ff_ivi_dc_row_slant ( const int32_t in,
int16_t *  out,
ptrdiff_t  pitch,
int  blk_size 
)

DC-only inverse row slant transform.

Definition at line 649 of file ivi_dsp.c.

Referenced by decode_gop_header().

◆ ff_ivi_dc_col_slant()

void ff_ivi_dc_col_slant ( const int32_t in,
int16_t *  out,
ptrdiff_t  pitch,
int  blk_size 
)

DC-only inverse column slant transform.

Definition at line 694 of file ivi_dsp.c.

Referenced by decode_gop_header().

◆ ff_ivi_put_pixels_8x8()

void ff_ivi_put_pixels_8x8 ( const int32_t in,
int16_t *  out,
ptrdiff_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().

◆ ff_ivi_put_dc_pixel_8x8()

void ff_ivi_put_dc_pixel_8x8 ( const int32_t in,
int16_t *  out,
ptrdiff_t  pitch,
int  blk_size 
)

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().

◆ ff_ivi_mc_8x8_delta()

void ff_ivi_mc_8x8_delta ( int16_t *  buf,
const int16_t *  ref_buf,
ptrdiff_t  pitch,
int  mc_type 
)

8x8 block motion compensation with adding delta

Parameters
[in,out]bufpointer to the block in the current frame buffer containing delta
[in]ref_bufpointer to the corresponding block in the reference frame
[in]pitchpitch for moving to the next y line
[in]mc_typeinterpolation type

Referenced by ivi_decode_blocks().

◆ ff_ivi_mc_4x4_delta()

void ff_ivi_mc_4x4_delta ( int16_t *  buf,
const int16_t *  ref_buf,
ptrdiff_t  pitch,
int  mc_type 
)

4x4 block motion compensation with adding delta

Parameters
[in,out]bufpointer to the block in the current frame buffer containing delta
[in]ref_bufpointer to the corresponding block in the reference frame
[in]pitchpitch for moving to the next y line
[in]mc_typeinterpolation type

Referenced by ivi_decode_blocks().

◆ ff_ivi_mc_8x8_no_delta()

void ff_ivi_mc_8x8_no_delta ( int16_t *  buf,
const int16_t *  ref_buf,
ptrdiff_t  pitch,
int  mc_type 
)

motion compensation without adding delta

Parameters
[in,out]bufpointer to the block in the current frame receiving the result
[in]ref_bufpointer to the corresponding block in the reference frame
[in]pitchpitch for moving to the next y line
[in]mc_typeinterpolation type

Referenced by ivi_decode_blocks(), and ivi_process_empty_tile().

◆ ff_ivi_mc_4x4_no_delta()

void ff_ivi_mc_4x4_no_delta ( int16_t *  buf,
const int16_t *  ref_buf,
ptrdiff_t  pitch,
int  mc_type 
)

4x4 block motion compensation without adding delta

Parameters
[in,out]bufpointer to the block in the current frame receiving the result
[in]ref_bufpointer to the corresponding block in the reference frame
[in]pitchpitch for moving to the next y line
[in]mc_typeinterpolation type

Referenced by ivi_decode_blocks(), and ivi_process_empty_tile().

◆ ff_ivi_mc_avg_8x8_delta()

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 
)

8x8 block motion compensation with adding delta

Parameters
[in,out]bufpointer to the block in the current frame buffer containing delta
[in]ref_bufpointer to the corresponding block in the backward reference frame
[in]ref_buf2pointer to the corresponding block in the forward reference frame
[in]pitchpitch for moving to the next y line
[in]mc_typeinterpolation type for backward reference
[in]mc_type2interpolation type for forward reference

Referenced by ivi_decode_blocks().

◆ ff_ivi_mc_avg_4x4_delta()

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 
)

4x4 block motion compensation with adding delta

Parameters
[in,out]bufpointer to the block in the current frame buffer containing delta
[in]ref_bufpointer to the corresponding block in the backward reference frame
[in]ref_buf2pointer to the corresponding block in the forward reference frame
[in]pitchpitch for moving to the next y line
[in]mc_typeinterpolation type for backward reference
[in]mc_type2interpolation type for forward reference

Referenced by ivi_decode_blocks().

◆ ff_ivi_mc_avg_8x8_no_delta()

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 
)

motion compensation without adding delta for B-frames

Parameters
[in,out]bufpointer to the block in the current frame receiving the result
[in]ref_bufpointer to the corresponding block in the backward reference frame
[in]ref_buf2pointer to the corresponding block in the forward reference frame
[in]pitchpitch for moving to the next y line
[in]mc_typeinterpolation type for backward reference
[in]mc_type2interpolation type for forward reference

Referenced by ivi_decode_blocks().

◆ ff_ivi_mc_avg_4x4_no_delta()

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 
)

4x4 block motion compensation without adding delta for B-frames

Parameters
[in,out]bufpointer to the block in the current frame receiving the result
[in]ref_bufpointer to the corresponding block in the backward reference frame
[in]ref_buf2pointer to the corresponding block in the forward reference frame
[in]pitchpitch for moving to the next y line
[in]mc_typeinterpolation type for backward reference
[in]mc_type2interpolation type for forward reference

Referenced by ivi_decode_blocks().