ivi_common.h File Reference

This file contains structures and macros shared by both Indeo4 and Indeo5 decoders. More...

#include "avcodec.h"
#include "get_bits.h"
#include <stdint.h>
Include dependency graph for ivi_common.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  IVIHuffDesc
 huffman codebook descriptor More...
 
struct  IVIHuffTab
 macroblock/block huffman table descriptor More...
 
struct  RVMapDesc
 run-value (RLE) table descriptor More...
 
struct  IVIMbInfo
 information for Indeo macroblock (16x16, 8x8 or 4x4) More...
 
struct  IVITile
 information for Indeo tile More...
 
struct  IVIBandDesc
 information for Indeo wavelet band More...
 
struct  IVIPlaneDesc
 color plane (luma or chroma) information More...
 
struct  IVIPicConfig
 
struct  IVI45DecContext
 

Macros

#define IVI_VLC_BITS   13
 max number of bits of the ivi's huffman codes More...
 
#define IVI4_STREAM_ANALYSER   0
 
#define IVI5_IS_PROTECTED   0x20
 
#define IVI_NUM_TILES(stride, tile_size)   (((stride) + (tile_size) - 1) / (tile_size))
 calculate number of tiles in a stride More...
 
#define IVI_MBs_PER_TILE(tile_width, tile_height, mb_size)   ((((tile_width) + (mb_size) - 1) / (mb_size)) * (((tile_height) + (mb_size) - 1) / (mb_size)))
 calculate number of macroblocks in a tile More...
 
#define IVI_TOSIGNED(val)   (-(((val) >> 1) ^ -((val) & 1)))
 convert unsigned values into signed ones (the sign is in the LSB) More...
 

Typedefs

typedef struct IVIHuffDesc IVIHuffDesc
 huffman codebook descriptor More...
 
typedef struct IVIHuffTab IVIHuffTab
 macroblock/block huffman table descriptor More...
 
typedef voidInvTransformPtr) (const int32_t *in, int16_t *out, uint32_t pitch, const uint8_t *flags)
 Declare inverse transform function types. More...
 
typedef voidDCTransformPtr) (const int32_t *in, int16_t *out, uint32_t pitch, int blk_size)
 
typedef struct RVMapDesc RVMapDesc
 run-value (RLE) table descriptor More...
 
typedef struct IVIMbInfo IVIMbInfo
 information for Indeo macroblock (16x16, 8x8 or 4x4) More...
 
typedef struct IVITile IVITile
 information for Indeo tile More...
 
typedef struct IVIBandDesc IVIBandDesc
 information for Indeo wavelet band More...
 
typedef struct IVIPlaneDesc IVIPlaneDesc
 color plane (luma or chroma) information More...
 
typedef struct IVIPicConfig IVIPicConfig
 
typedef struct IVI45DecContext IVI45DecContext
 

Enumerations

enum  { IVI_MB_HUFF = 0, IVI_BLK_HUFF = 1 }
 

Functions

static int ivi_pic_config_cmp (IVIPicConfig *str1, IVIPicConfig *str2)
 compare some properties of two pictures More...
 
static int ivi_scale_mv (int mv, int mv_scale)
 scale motion vector More...
 
void ff_ivi_init_static_vlc (void)
 Initialize static codes used for macroblock and block decoding. More...
 
int ff_ivi_dec_huff_desc (GetBitContext *gb, int desc_coded, int which_tab, IVIHuffTab *huff_tab, AVCodecContext *avctx)
 Decode a huffman codebook descriptor from the bitstream and select specified huffman table. More...
 
int ff_ivi_init_planes (IVIPlaneDesc *planes, const IVIPicConfig *cfg)
 Initialize planes (prepares descriptors, allocates buffers etc). More...
 
int ff_ivi_init_tiles (IVIPlaneDesc *planes, int tile_width, int tile_height)
 Initialize tile and macroblock descriptors. More...
 
int ff_ivi_decode_frame (AVCodecContext *avctx, void *data, int *got_frame, AVPacket *avpkt)
 
int ff_ivi_decode_close (AVCodecContext *avctx)
 Close Indeo5 decoder and clean up its context. More...
 

Variables

const uint8_t ff_ivi_vertical_scan_8x8 [64]
 Common scan patterns (defined in ivi_common.c) More...
 
const uint8_t ff_ivi_horizontal_scan_8x8 [64]
 
const uint8_t ff_ivi_direct_scan_4x4 [16]
 
const RVMapDesc ff_ivi_rvmap_tabs [9]
 Run-value (RLE) tables. More...
 

Detailed Description

This file contains structures and macros shared by both Indeo4 and Indeo5 decoders.

Definition in file ivi_common.h.

Macro Definition Documentation

#define IVI4_STREAM_ANALYSER   0

Definition at line 37 of file ivi_common.h.

#define IVI5_IS_PROTECTED   0x20

Definition at line 38 of file ivi_common.h.

Referenced by decode_gop_header(), and ff_ivi_decode_frame().

#define IVI_MBs_PER_TILE (   tile_width,
  tile_height,
  mb_size 
)    ((((tile_width) + (mb_size) - 1) / (mb_size)) * (((tile_height) + (mb_size) - 1) / (mb_size)))

calculate number of macroblocks in a tile

Definition at line 267 of file ivi_common.h.

Referenced by decode_mb_info(), ff_ivi_init_tiles(), and ivi_process_empty_tile().

#define IVI_NUM_TILES (   stride,
  tile_size 
)    (((stride) + (tile_size) - 1) / (tile_size))

calculate number of tiles in a stride

Definition at line 264 of file ivi_common.h.

Referenced by ff_ivi_init_tiles().

#define IVI_TOSIGNED (   val)    (-(((val) >> 1) ^ -((val) & 1)))

convert unsigned values into signed ones (the sign is in the LSB)

Definition at line 271 of file ivi_common.h.

Referenced by decode_mb_info(), and ivi_decode_blocks().

#define IVI_VLC_BITS   13

max number of bits of the ivi's huffman codes

Definition at line 36 of file ivi_common.h.

Referenced by decode_mb_info(), ivi_create_huff_from_desc(), and ivi_decode_blocks().

Typedef Documentation

typedef void( DCTransformPtr) (const int32_t *in, int16_t *out, uint32_t pitch, int blk_size)

Definition at line 79 of file ivi_common.h.

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

Declare inverse transform function types.

Definition at line 78 of file ivi_common.h.

typedef struct IVIBandDesc IVIBandDesc

information for Indeo wavelet band

typedef struct IVIHuffDesc IVIHuffDesc

huffman codebook descriptor

typedef struct IVIHuffTab IVIHuffTab

macroblock/block huffman table descriptor

typedef struct IVIMbInfo IVIMbInfo

information for Indeo macroblock (16x16, 8x8 or 4x4)

typedef struct IVIPicConfig IVIPicConfig
typedef struct IVIPlaneDesc IVIPlaneDesc

color plane (luma or chroma) information

typedef struct IVITile IVITile

information for Indeo tile

typedef struct RVMapDesc RVMapDesc

run-value (RLE) table descriptor

Enumeration Type Documentation

anonymous enum
Enumerator
IVI_MB_HUFF 
IVI_BLK_HUFF 

Huffman table is used for coding macroblocks.

Definition at line 61 of file ivi_common.h.

Function Documentation

int ff_ivi_dec_huff_desc ( GetBitContext gb,
int  desc_coded,
int  which_tab,
IVIHuffTab huff_tab,
AVCodecContext avctx 
)

Decode a huffman codebook descriptor from the bitstream and select specified huffman table.

Parameters
[in,out]gbthe GetBit context
[in]desc_codedflag signalling if table descriptor was coded
[in]which_tabcodebook purpose (IVI_MB_HUFF or IVI_BLK_HUFF)
[out]huff_tabpointer to the descriptor of the selected table
[in]avctxAVCodecContext pointer
Returns
zero on success, negative value otherwise

Definition at line 147 of file ivi_common.c.

Referenced by decode_band_hdr(), decode_pic_hdr(), and ivi_scale_mv().

int ff_ivi_decode_close ( AVCodecContext avctx)

Close Indeo5 decoder and clean up its context.

Definition at line 931 of file ivi_common.c.

Referenced by ivi_scale_mv().

int ff_ivi_decode_frame ( AVCodecContext avctx,
void data,
int *  got_frame,
AVPacket avpkt 
)

Definition at line 844 of file ivi_common.c.

Referenced by ivi_scale_mv().

int ff_ivi_init_planes ( IVIPlaneDesc planes,
const IVIPicConfig cfg 
)

Initialize planes (prepares descriptors, allocates buffers etc).

Parameters
[in,out]planespointer to the array of the plane descriptors
[in]cfgpointer to the ivi_pic_config structure describing picture layout
Returns
result code: 0 - OK

Definition at line 222 of file ivi_common.c.

Referenced by decode_gop_header(), decode_init(), decode_pic_hdr(), and ivi_scale_mv().

void ff_ivi_init_static_vlc ( void  )

Initialize static codes used for macroblock and block decoding.

Definition at line 103 of file ivi_common.c.

Referenced by decode_init(), and ivi_scale_mv().

int ff_ivi_init_tiles ( IVIPlaneDesc planes,
int  tile_width,
int  tile_height 
)

Initialize tile and macroblock descriptors.

Parameters
[in,out]planespointer to the array of the plane descriptors
[in]tile_widthtile width
[in]tile_heighttile height
Returns
result code: 0 - OK

Definition at line 286 of file ivi_common.c.

Referenced by decode_gop_header(), decode_pic_hdr(), and ivi_scale_mv().

static int ivi_pic_config_cmp ( IVIPicConfig str1,
IVIPicConfig str2 
)
inlinestatic

compare some properties of two pictures

Definition at line 255 of file ivi_common.h.

Referenced by decode_gop_header(), and decode_pic_hdr().

static int ivi_scale_mv ( int  mv,
int  mv_scale 
)
inlinestatic

scale motion vector

Definition at line 274 of file ivi_common.h.

Referenced by decode_mb_info(), and ivi_process_empty_tile().

Variable Documentation

const uint8_t ff_ivi_direct_scan_4x4[16]

Definition at line 1015 of file ivi_common.c.

Referenced by decode_gop_header().

const uint8_t ff_ivi_horizontal_scan_8x8[64]

Definition at line 1004 of file ivi_common.c.

Referenced by decode_gop_header().

const RVMapDesc ff_ivi_rvmap_tabs[9]

Run-value (RLE) tables.

Definition at line 1023 of file ivi_common.c.

Referenced by decode_init().

const uint8_t ff_ivi_vertical_scan_8x8[64]

Common scan patterns (defined in ivi_common.c)

Common scan patterns (defined in ivi_common.c)

Definition at line 993 of file ivi_common.c.

Referenced by decode_gop_header().