40 IVI4_FRAMETYPE_INTRA = 0,
49 #define IVI_VLC_BITS 13 50 #define IVI5_IS_PROTECTED 0x20 83 extern const uint8_t ff_ivi_horizontal_scan_8x8[64];
84 extern const uint8_t ff_ivi_direct_scan_4x4[16];
90 typedef void (
InvTransformPtr)(
const int32_t *in, int16_t *out, ptrdiff_t pitch,
const uint8_t *flags);
91 typedef void (DCTransformPtr) (
const int32_t *in, int16_t *out, ptrdiff_t pitch,
int blk_size);
179 DCTransformPtr *dc_transform;
182 int checksum_present;
205 uint16_t chroma_width;
206 uint16_t chroma_height;
208 uint16_t tile_height;
210 uint8_t chroma_bands;
244 uint8_t pic_glob_quant;
247 uint16_t gop_hdr_size;
251 int show_indeo4_info;
252 uint8_t has_b_frames;
256 uint8_t uses_fullpel;
276 return str1->pic_width != str2->pic_width || str1->pic_height != str2->pic_height ||
277 str1->chroma_width != str2->chroma_width || str1->chroma_height != str2->chroma_height ||
278 str1->tile_width != str2->tile_width || str1->tile_height != str2->tile_height ||
279 str1->luma_bands != str2->luma_bands || str1->chroma_bands != str2->chroma_bands;
283 #define IVI_NUM_TILES(stride, tile_size) (((stride) + (tile_size) - 1) / (tile_size)) 286 #define IVI_MBs_PER_TILE(tile_width, tile_height, mb_size) \ 287 ((((tile_width) + (mb_size) - 1) / (mb_size)) * (((tile_height) + (mb_size) - 1) / (mb_size))) 290 #define IVI_TOSIGNED(val) (-(((val) >> 1) ^ -((val) & 1))) 293 static inline int ivi_scale_mv(
int mv,
int mv_scale)
295 return (mv + (mv > 0) + (mv_scale - 1)) >> mv_scale;
338 int ff_ivi_decode_frame(
AVCodecContext *avctx,
void *data,
int *got_frame,
int is_empty
= 1 if this band doesn't contain any data
Definition: ivi.h:157
uint32_t data_size
size of the frame data in bytes from picture header
Definition: ivi.h:220
uint8_t type
macroblock type: 0 - INTRA, 1 - INTER
Definition: ivi.h:114
int num_MBs
number of macroblocks in this tile
Definition: ivi.h:135
This structure describes decoded (raw) audio or video data.
Definition: frame.h:218
macroblock/block huffman table descriptor
Definition: ivi.h:63
void( InvTransformPtr)(const int32_t *in, int16_t *out, ptrdiff_t pitch, const uint8_t *flags)
Declare inverse transform function types.
Definition: ivi.h:90
int inter_scal
signals a sequence of scalable inter frames
Definition: ivi.h:223
struct RVMapDesc RVMapDesc
run-value (RLE) table descriptor
int8_t b_mv_y
second motion vector (y component)
Definition: ivi.h:120
int num_tiles
number of tiles in this band
Definition: ivi.h:175
int dst_buf
buffer index for the currently decoded frame
Definition: ivi.h:233
int16_t * ref_buf
pointer to the reference frame buffer (for motion compensation)
Definition: ivi.h:153
empty frame with no data
Definition: ivi.h:45
uint8_t eob_sym
end of block symbol
Definition: ivi.h:98
int16_t * buf
pointer to the output buffer for this band
Definition: ivi.h:152
IVITile * tiles
array of tile descriptors
Definition: ivi.h:176
int is_halfpel
precision of the motion compensation: 0 - fullpel, 1 - halfpel
Definition: ivi.h:160
int plane
plane number this band belongs to
Definition: ivi.h:145
int bufsize
band buffer size in bytes
Definition: ivi.h:183
int quant_mat
dequant matrix index
Definition: ivi.h:164
empty frame with no data
Definition: ivi.h:46
RVMapDesc * rv_map
ptr to the RLE table for this band
Definition: ivi.h:174
int8_t b_mv_x
second motion vector (x component)
Definition: ivi.h:119
struct IVITile IVITile
information for Indeo tile
ptrdiff_t pitch
pitch associated with the buffers above
Definition: ivi.h:156
const uint8_t * frame_data
input frame data pointer
Definition: ivi.h:222
const uint16_t * inter_base
quantization matrix for inter blocks
Definition: ivi.h:185
const uint8_t * data_ptr
ptr to the first byte of the band data
Definition: ivi.h:150
int inherit_mv
tells if motion vector is inherited from reference macroblock
Definition: ivi.h:161
uint8_t cbp
coded block pattern
Definition: ivi.h:115
int qdelta_present
tells if Qdelta signal is present in the bitstream (Indeo5 only)
Definition: ivi.h:163
uint16_t checksum
frame checksum
Definition: ivi.h:227
struct IVIHuffDesc IVIHuffDesc
huffman codebook descriptor
bitstream reader API header.
uint32_t pic_hdr_size
picture header size in bytes
Definition: ivi.h:225
int ff_ivi_init_tiles(IVIPlaneDesc *planes, int tile_width, int tile_height)
Initialize tile and macroblock descriptors.
Definition: ivi.c:421
intra frame with slightly different bitstream coding
Definition: ivi.h:41
IVIPlaneDesc planes[3]
color planes
Definition: ivi.h:230
Huffman table is used for coding macroblocks.
Definition: ivi.h:75
const uint16_t * intra_base
quantization matrix for intra blocks
Definition: ivi.h:184
int data_size
size of the band data
Definition: ivi.h:151
IVIHuffDesc cust_desc
pointer to the table associated with tab_sel
Definition: ivi.h:69
int blk_size
block size
Definition: ivi.h:159
const uint8_t ff_ivi_vertical_scan_8x8[64]
Common scan patterns (defined in ivi_common.c)
Definition: ivi.c:1221
struct IVIPlaneDesc IVIPlaneDesc
color plane (luma or chroma) information
uint8_t in_q
flag for explicitly stored quantiser delta
Definition: ivi.h:243
bidirectional frame
Definition: ivi.h:43
int ref_buf
inter frame reference buffer index
Definition: ivi.h:234
void ff_ivi_init_static_vlc(void)
Initialize static codes used for macroblock and block decoding.
Definition: ivi.c:179
uint8_t esc_sym
escape symbol
Definition: ivi.h:99
run-value (RLE) table descriptor
Definition: ivi.h:97
int inherit_qdelta
tells if quantiser delta is inherited from reference macroblock
Definition: ivi.h:162
uint8_t num_bands
number of bands this plane subdivided into
Definition: ivi.h:197
droppable P-frame
Definition: ivi.h:44
IVIMbInfo * mbs
array of macroblock descriptors
Definition: ivi.h:136
int16_t * b_ref_buf
pointer to the second reference frame buffer (for motion compensation)
Definition: ivi.h:154
const uint8_t * inter_scale
quantization coefficient for inter blocks
Definition: ivi.h:187
struct IVIHuffTab IVIHuffTab
macroblock/block huffman table descriptor
int8_t q_delta
quant delta
Definition: ivi.h:116
uint32_t frame_size
frame size in bytes
Definition: ivi.h:224
non-droppable P-frame
Definition: ivi.h:42
IVIHuffTab mb_vlc
current macroblock table descriptor
Definition: ivi.h:238
int is_2d_trans
1 indicates that the two-dimensional inverse transform is used
Definition: ivi.h:180
Libavcodec external API header.
int glob_quant
quant base for this band
Definition: ivi.h:165
main external API structure.
Definition: avcodec.h:1518
int aheight
aligned band height
Definition: ivi.h:149
int is_empty
= 1 if this tile doesn't contain any data
Definition: ivi.h:133
int num_corr
number of correction entries
Definition: ivi.h:171
information for Indeo tile
Definition: ivi.h:127
int buf_switch
used to switch between three buffers
Definition: ivi.h:232
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...
Definition: ivi.c:226
IVIBandDesc * bands
array of band descriptors
Definition: ivi.h:198
int rvmap_sel
rvmap table selector
Definition: ivi.h:173
int8_t mv_x
motion vector (x component)
Definition: ivi.h:117
int8_t mv_y
motion vector (y component)
Definition: ivi.h:118
int mb_size
macroblock size
Definition: ivi.h:158
huffman codebook descriptor
Definition: ivi.h:55
IVIMbInfo * ref_mbs
ptr to the macroblock descriptors of the reference tile
Definition: ivi.h:137
IVIHuffTab blk_vlc
current block table descriptor
Definition: ivi.h:239
int band_num
band number
Definition: ivi.h:146
struct IVIMbInfo IVIMbInfo
information for Indeo macroblock (16x16, 8x8 or 4x4)
Definition: get_bits.h:56
const RVMapDesc ff_ivi_rvmap_tabs[9]
Run-value (RLE) tables.
Definition: ivi.c:1251
int ref2_buf
temporal storage for switching buffers
Definition: ivi.h:235
VLC cust_tab
custom Huffman codebook descriptor
Definition: ivi.h:70
int ff_ivi_init_planes(AVCodecContext *avctx, IVIPlaneDesc *planes, const IVIPicConfig *cfg, int is_indeo4)
Initialize planes (prepares descriptors, allocates buffers etc).
Definition: ivi.c:305
const uint8_t * scan
ptr to the scan pattern
Definition: ivi.h:166
uint8_t has_transp
transparency mode status: 1 - enabled
Definition: ivi.h:253
int prev_frame_type
frame type of the previous frame
Definition: ivi.h:219
information for Indeo macroblock (16x16, 8x8 or 4x4)
Definition: ivi.h:110
IVIHuffTab blk_vlc
vlc table for decoding block data
Definition: ivi.h:169
int scan_size
size of the scantable
Definition: ivi.h:167
const uint8_t * intra_scale
quantization coefficient for intra blocks
Definition: ivi.h:186
color plane (luma or chroma) information
Definition: ivi.h:194
uint32_t buf_offs
address in the output buffer for this mb
Definition: ivi.h:113
int b_ref_buf
second reference frame buffer index
Definition: ivi.h:236
struct IVIBandDesc IVIBandDesc
information for Indeo wavelet band
information for Indeo wavelet band
Definition: ivi.h:144
This structure stores compressed data.
Definition: avcodec.h:1407
int ff_ivi_decode_close(AVCodecContext *avctx)
Close Indeo5 decoder and clean up its context.
Definition: ivi.c:1200
int data_size
size of the data in bytes
Definition: ivi.h:134