#include "avcodec.h"
#include "get_bits.h"
#include "libavutil/imgutils.h"
#include "indeo4data.h"
#include "internal.h"
#include "ivi.h"
#include "ivi_dsp.h"
 
Go to the source code of this file.
 | 
| static int  | decode_plane_subdivision (GetBitContext *gb) | 
|   | Decode subdivision of a plane.  More...
  | 
|   | 
| static int  | scale_tile_size (int def_size, int size_factor) | 
|   | 
| static int  | decode_pic_hdr (IVI45DecContext *ctx, AVCodecContext *avctx) | 
|   | Decode Indeo 4 picture header.  More...
  | 
|   | 
| static int  | decode_band_hdr (IVI45DecContext *ctx, IVIBandDesc *arg_band, AVCodecContext *avctx) | 
|   | Decode Indeo 4 band header.  More...
  | 
|   | 
| static int  | decode_mb_info (IVI45DecContext *ctx, IVIBandDesc *band, IVITile *tile, AVCodecContext *avctx) | 
|   | Decode information (block type, cbp, quant delta, motion vector) for all macroblocks in the current tile.  More...
  | 
|   | 
| static void  | switch_buffers (IVI45DecContext *ctx) | 
|   | Rearrange decoding and reference buffers.  More...
  | 
|   | 
| static int  | is_nonnull_frame (IVI45DecContext *ctx) | 
|   | 
| static av_cold int  | decode_init (AVCodecContext *avctx) | 
|   | 
Indeo Video Interactive version 4 decoder
Indeo 4 data is usually transported within .avi or .mov files. Known FOURCCs: 'IV41' 
Definition in file indeo4.c.
 
◆ BITSTREAM_READER_LE
      
        
          | #define BITSTREAM_READER_LE | 
        
      
 
 
◆ IVI4_PIC_SIZE_ESC
      
        
          | #define IVI4_PIC_SIZE_ESC   7 | 
        
      
 
 
◆ decode_plane_subdivision()
Decode subdivision of a plane. 
This is a simplified version that checks for two supported subdivisions:
- 1 wavelet band per plane, size factor 1:1, code pattern: 3
 
- 4 wavelet bands per plane, size factor 1:4, code pattern: 2,3,3,3,3 Anything else is either unsupported or corrupt.
 
- Parameters
 - 
  
    | [in,out] | gb | the GetBit context  | 
  
   
- Returns
 - number of wavelet bands or 0 on error 
 
Definition at line 77 of file indeo4.c.
Referenced by decode_pic_hdr().
 
 
◆ scale_tile_size()
  
  
      
        
          | static int scale_tile_size  | 
          ( | 
          int  | 
          def_size,  | 
         
        
           | 
           | 
          int  | 
          size_factor  | 
         
        
           | 
          ) | 
           |  | 
         
       
   | 
  
inlinestatic   | 
  
 
 
◆ decode_pic_hdr()
Decode Indeo 4 picture header. 
- Parameters
 - 
  
    | [in,out] | ctx | pointer to the decoder context  | 
    | [in] | avctx | pointer to the AVCodecContext  | 
  
   
- Returns
 - result code: 0 = OK, negative number = error 
 
Definition at line 106 of file indeo4.c.
Referenced by decode_init().
 
 
◆ decode_band_hdr()
Decode Indeo 4 band header. 
- Parameters
 - 
  
    | [in,out] | ctx | pointer to the decoder context  | 
    | [in,out] | band | pointer to the band descriptor  | 
    | [in] | avctx | pointer to the AVCodecContext  | 
  
   
- Returns
 - result code: 0 = OK, negative number = error 
 
Definition at line 271 of file indeo4.c.
Referenced by decode_init().
 
 
◆ decode_mb_info()
Decode information (block type, cbp, quant delta, motion vector) for all macroblocks in the current tile. 
- Parameters
 - 
  
    | [in,out] | ctx | pointer to the decoder context  | 
    | [in,out] | band | pointer to the band descriptor  | 
    | [in,out] | tile | pointer to the tile descriptor  | 
    | [in] | avctx | pointer to the AVCodecContext  | 
  
   
- Returns
 - result code: 0 = OK, negative number = error 
 
Definition at line 469 of file indeo4.c.
Referenced by decode_init().
 
 
◆ switch_buffers()
Rearrange decoding and reference buffers. 
- Parameters
 - 
  
    | [in,out] | ctx | pointer to the decoder context  | 
  
   
Definition at line 635 of file indeo4.c.
Referenced by decode_init().
 
 
◆ is_nonnull_frame()
◆ decode_init()
◆ inv_trans
◆ dc_trans
◆ is_2d_trans
◆ transforms
      
        
          | const { ... }  transforms[18] | 
        
      
 
 
◆ ff_indeo4_decoder
Initial value:
Definition at line 706 of file indeo4.c.
 
 
 
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
 
static av_cold int init(AVCodecContext *avctx)
 
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
 
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
 
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.
 
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
 
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.
 
av_cold int ff_ivi_decode_close(AVCodecContext *avctx)
Close Indeo5 decoder and clean up its context.
 
void ff_ivi_col_slant8(const int32_t *in, int16_t *out, ptrdiff_t pitch, const uint8_t *flags)
inverse 1D column slant transform
 
static void decode(AVCodecContext *dec_ctx, AVPacket *pkt, AVFrame *frame, FILE *outfile)
 
void ff_ivi_row_slant8(const int32_t *in, int16_t *out, ptrdiff_t pitch, const uint8_t *flags)
inverse 1D row slant transform
 
void ff_ivi_col_slant4(const int32_t *in, int16_t *out, ptrdiff_t pitch, const uint8_t *flags)
inverse 1D column slant transform
 
#define AV_CODEC_CAP_DR1
Codec uses get_buffer() for allocating buffers and supports custom allocators.
 
#define NULL_IF_CONFIG_SMALL(x)
Return NULL if CONFIG_SMALL is true, otherwise the argument without modification.
 
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
 
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
 
static av_cold int decode_init(AVCodecContext *avctx)
 
void ff_ivi_row_slant4(const int32_t *in, int16_t *out, ptrdiff_t pitch, const uint8_t *flags)
inverse 1D row slant transform
 
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.
 
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.
 
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.
 
int ff_ivi_decode_frame(AVCodecContext *avctx, void *data, int *got_frame, AVPacket *avpkt)
 
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
 
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.
 
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