libavcodec/ivi_dsp.c File Reference

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

#include "avcodec.h"
#include "dsputil.h"
#include "dwt.h"
#include "ivi_common.h"
#include "ivi_dsp.h"

Go to the source code of this file.

Defines

#define IVI_SLANT_BFLY(s1, s2, o1, o2, t)
 butterfly operation for the inverse slant transform
#define IVI_IREFLECT(s1, s2, o1, o2, t)
 This is a reflection a,b = 1/2, 5/4 for the inverse slant transform.
#define IVI_SLANT_PART4(s1, s2, o1, o2, t)
 This is a reflection a,b = 1/2, 7/8 for the inverse slant transform.
#define IVI_INV_SLANT8(s1, s4, s8, s5, s2, s6, s3, s7, d1, d2, d3, d4, d5, d6, d7, d8, t0, t1, t2, t3, t4, t5, t6, t7, t8)
 inverse slant8 transform
#define IVI_INV_SLANT4(s1, s4, s2, s3, d1, d2, d3, d4, t0, t1, t2, t3, t4)
 inverse slant4 transform
#define COMPENSATE(x)   (x)
#define COMPENSATE(x)   ((x + 1)>>1)
#define COMPENSATE(x)   (x)
#define COMPENSATE(x)   ((x + 1)>>1)
#define COMPENSATE(x)   ((x + 1)>>1)
#define COMPENSATE(x)   ((x + 1)>>1)
#define IVI_MC_TEMPLATE(size, suffix, OP)
#define OP_PUT(a, b)   (a) = (b)
#define OP_ADD(a, b)   (a) += (b)

Functions

void ff_ivi_recompose53 (const IVIPlaneDesc *plane, uint8_t *dst, const int dst_pitch, const int num_bands)
 5/3 wavelet recomposition filter for Indeo5
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
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
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.
void ff_ivi_row_slant8 (const int32_t *in, int16_t *out, uint32_t pitch, const uint8_t *flags)
 inverse 1D row slant transform
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.
void ff_ivi_col_slant8 (const int32_t *in, int16_t *out, uint32_t pitch, const uint8_t *flags)
 inverse 1D column slant transform
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.
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.
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.


Detailed Description

DSP functions (inverse transforms, motion compensation, wavelet recompostions) for Indeo Video Interactive codecs.

Definition in file ivi_dsp.c.


Define Documentation

#define COMPENSATE (  )     ((x + 1)>>1)

#define COMPENSATE (  )     ((x + 1)>>1)

#define COMPENSATE (  )     ((x + 1)>>1)

#define COMPENSATE (  )     (x)

#define COMPENSATE (  )     ((x + 1)>>1)

#define COMPENSATE (  )     (x)

#define IVI_INV_SLANT4 ( s1,
s4,
s2,
s3,
d1,
d2,
d3,
d4,
t0,
t1,
t2,
t3,
t4   ) 

Value:

{\
    IVI_SLANT_BFLY(s1, s2, t1, t2, t0); IVI_IREFLECT  (s4, s3, t4, t3, t0);\
\
    IVI_SLANT_BFLY(t1, t4, t1, t4, t0); IVI_SLANT_BFLY(t2, t3, t2, t3, t0);\
    d1 = COMPENSATE(t1);\
    d2 = COMPENSATE(t2);\
    d3 = COMPENSATE(t3);\
    d4 = COMPENSATE(t4);}
inverse slant4 transform

Definition at line 222 of file ivi_dsp.c.

Referenced by ff_ivi_inverse_slant_4x4().

#define IVI_INV_SLANT8 ( s1,
s4,
s8,
s5,
s2,
s6,
s3,
s7,
d1,
d2,
d3,
d4,
d5,
d6,
d7,
d8,
t0,
t1,
t2,
t3,
t4,
t5,
t6,
t7,
t8   ) 

Value:

inverse slant8 transform

Definition at line 202 of file ivi_dsp.c.

Referenced by ff_ivi_col_slant8(), ff_ivi_inverse_slant_8x8(), and ff_ivi_row_slant8().

#define IVI_IREFLECT ( s1,
s2,
o1,
o2,
t   ) 

Value:

t  = ((s1 + s2*2 + 2) >> 2) + s1;\
    o2 = ((s1*2 - s2 + 2) >> 2) - s2;\
    o1 = t;\
This is a reflection a,b = 1/2, 5/4 for the inverse slant transform.

Definition at line 188 of file ivi_dsp.c.

#define IVI_MC_TEMPLATE ( size,
suffix,
OP   ) 

Definition at line 426 of file ivi_dsp.c.

#define IVI_SLANT_BFLY ( s1,
s2,
o1,
o2,
t   ) 

Value:

t  = s1 - s2;\
    o1 = s1 + s2;\
    o2 = t;\
butterfly operation for the inverse slant transform

Definition at line 182 of file ivi_dsp.c.

#define IVI_SLANT_PART4 ( s1,
s2,
o1,
o2,
t   ) 

Value:

t  = s2 + ((s1*4  - s2 + 4) >> 3);\
    o2 = s1 + ((-s1 - s2*4 + 4) >> 3);\
    o1 = t;\
This is a reflection a,b = 1/2, 7/8 for the inverse slant transform.

Definition at line 194 of file ivi_dsp.c.

#define OP_ADD ( a,
 )     (a) += (b)

Definition at line 462 of file ivi_dsp.c.

#define OP_PUT ( a,
 )     (a) = (b)

Definition at line 461 of file ivi_dsp.c.


Function Documentation

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

inverse 1D column slant transform

Parameters:
[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 362 of file ivi_dsp.c.

Referenced by decode_gop_header().

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.

Definition at line 389 of file ivi_dsp.c.

Referenced by decode_gop_header().

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.

Definition at line 344 of file ivi_dsp.c.

Referenced by decode_gop_header().

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.

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] 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 311 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

Parameters:
[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 271 of file ivi_dsp.c.

Referenced by decode_gop_header().

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

Parameters:
[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 231 of file ivi_dsp.c.

Referenced by decode_gop_header().

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.

Definition at line 413 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 403 of file ivi_dsp.c.

Referenced by decode_gop_header().

void ff_ivi_recompose53 ( const IVIPlaneDesc plane,
uint8_t *  dst,
const int  dst_pitch,
const int  num_bands 
)

5/3 wavelet recomposition filter for Indeo5

Parameters:
[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
[in] num_bands number of wavelet bands to be processed

Definition at line 35 of file ivi_dsp.c.

Referenced by decode_frame().

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

inverse 1D row slant transform

Parameters:
[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 324 of file ivi_dsp.c.

Referenced by decode_gop_header().


Generated on Fri Oct 26 02:39:45 2012 for FFmpeg by  doxygen 1.5.8