FFmpeg
Data Structures | Macros | Functions | Variables
snow.h File Reference
#include "libavutil/motion_vector.h"
#include "avcodec.h"
#include "hpeldsp.h"
#include "snow_dwt.h"
#include "rangecoder.h"
#include "mathops.h"
#include "h264qpel.h"
#include "videodsp.h"

Go to the source code of this file.

Data Structures

struct  BlockNode
 
struct  x_and_coeff
 
struct  SubBand
 
struct  Plane
 
struct  SnowContext
 

Macros

#define SNOW_MAX_PLANES   4
 
#define MID_STATE   128
 
#define MAX_PLANES   4
 
#define QSHIFT   5
 
#define QROOT   (1<<QSHIFT)
 
#define LOSSLESS_QLOG   -128
 
#define FRAC_BITS   4
 
#define MAX_REF_FRAMES   8
 
#define LOG2_OBMC_MAX   8
 
#define OBMC_MAX   (1<<(LOG2_OBMC_MAX))
 
#define BLOCK_INTRA   1
 Intra block, inter otherwise. More...
 
#define BLOCK_OPT   2
 Block needs no checks in this round of iterative motion estiation. More...
 
#define LOG2_MB_SIZE   4
 
#define MB_SIZE   (1<<LOG2_MB_SIZE)
 
#define ENCODER_EXTRA_BITS   4
 
#define HTAPS_MAX   8
 
#define QBIAS_SHIFT   3
 
#define QEXPSHIFT   (7-FRAC_BITS+8)
 

Functions

int ff_snow_common_init (AVCodecContext *avctx)
 
int ff_snow_common_init_after_header (AVCodecContext *avctx)
 
void ff_snow_common_end (SnowContext *s)
 
void ff_snow_release_buffer (AVCodecContext *avctx)
 
void ff_snow_reset_contexts (SnowContext *s)
 
int ff_snow_alloc_blocks (SnowContext *s)
 
int ff_snow_frames_prepare (SnowContext *s)
 
void ff_snow_pred_block (SnowContext *s, uint8_t *dst, uint8_t *tmp, ptrdiff_t stride, int sx, int sy, int b_w, int b_h, const BlockNode *block, int plane_index, int w, int h)
 
static void pred_mv (SnowContext *s, int *mx, int *my, int ref, const BlockNode *left, const BlockNode *top, const BlockNode *tr)
 
static av_always_inline int same_block (BlockNode *a, BlockNode *b)
 
static av_always_inline void add_yblock (SnowContext *s, int sliced, slice_buffer *sb, IDWTELEM *dst, uint8_t *dst8, const uint8_t *obmc, int src_x, int src_y, int b_w, int b_h, int w, int h, int dst_stride, int src_stride, int obmc_stride, int b_x, int b_y, int add, int offset_dst, int plane_index)
 
static av_always_inline void predict_slice (SnowContext *s, IDWTELEM *buf, int plane_index, int add, int mb_y)
 
static av_always_inline void predict_plane (SnowContext *s, IDWTELEM *buf, int plane_index, int add)
 
static void set_blocks (SnowContext *s, int level, int x, int y, int l, int cb, int cr, int mx, int my, int ref, int type)
 

Variables

static const BlockNode null_block
 
const uint8_t *const ff_obmc_tab [4]
 
const uint8_t ff_qexp [QROOT]
 
int ff_scale_mv_ref [MAX_REF_FRAMES][MAX_REF_FRAMES]
 
const int8_t ff_quant3bA [256]
 

Macro Definition Documentation

◆ SNOW_MAX_PLANES

#define SNOW_MAX_PLANES   4

Definition at line 37 of file snow.h.

◆ MID_STATE

#define MID_STATE   128

Definition at line 39 of file snow.h.

◆ MAX_PLANES

#define MAX_PLANES   4

Definition at line 41 of file snow.h.

◆ QSHIFT

#define QSHIFT   5

Definition at line 42 of file snow.h.

◆ QROOT

#define QROOT   (1<<QSHIFT)

Definition at line 43 of file snow.h.

◆ LOSSLESS_QLOG

#define LOSSLESS_QLOG   -128

Definition at line 44 of file snow.h.

◆ FRAC_BITS

#define FRAC_BITS   4

Definition at line 45 of file snow.h.

◆ MAX_REF_FRAMES

#define MAX_REF_FRAMES   8

Definition at line 46 of file snow.h.

◆ LOG2_OBMC_MAX

#define LOG2_OBMC_MAX   8

Definition at line 48 of file snow.h.

◆ OBMC_MAX

#define OBMC_MAX   (1<<(LOG2_OBMC_MAX))

Definition at line 49 of file snow.h.

◆ BLOCK_INTRA

#define BLOCK_INTRA   1

Intra block, inter otherwise.

Definition at line 57 of file snow.h.

◆ BLOCK_OPT

#define BLOCK_OPT   2

Block needs no checks in this round of iterative motion estiation.

Definition at line 58 of file snow.h.

◆ LOG2_MB_SIZE

#define LOG2_MB_SIZE   4

Definition at line 72 of file snow.h.

◆ MB_SIZE

#define MB_SIZE   (1<<LOG2_MB_SIZE)

Definition at line 73 of file snow.h.

◆ ENCODER_EXTRA_BITS

#define ENCODER_EXTRA_BITS   4

Definition at line 74 of file snow.h.

◆ HTAPS_MAX

#define HTAPS_MAX   8

Definition at line 75 of file snow.h.

◆ QBIAS_SHIFT

#define QBIAS_SHIFT   3

Definition at line 156 of file snow.h.

◆ QEXPSHIFT

#define QEXPSHIFT   (7-FRAC_BITS+8)

Definition at line 429 of file snow.h.

Function Documentation

◆ ff_snow_common_init()

int ff_snow_common_init ( AVCodecContext avctx)

Definition at line 394 of file snow.c.

Referenced by encode_init().

◆ ff_snow_common_init_after_header()

int ff_snow_common_init_after_header ( AVCodecContext avctx)

Definition at line 449 of file snow.c.

Referenced by decode_frame(), and encode_frame().

◆ ff_snow_common_end()

void ff_snow_common_end ( SnowContext s)

Definition at line 553 of file snow.c.

Referenced by decode_end(), and encode_end().

◆ ff_snow_release_buffer()

void ff_snow_release_buffer ( AVCodecContext avctx)

Definition at line 513 of file snow.c.

Referenced by decode_frame(), encode_frame(), and ff_snow_frames_prepare().

◆ ff_snow_reset_contexts()

void ff_snow_reset_contexts ( SnowContext s)

Definition at line 62 of file snow.c.

Referenced by decode_header(), and encode_header().

◆ ff_snow_alloc_blocks()

int ff_snow_alloc_blocks ( SnowContext s)

Definition at line 76 of file snow.c.

Referenced by decode_frame(), and encode_init().

◆ ff_snow_frames_prepare()

int ff_snow_frames_prepare ( SnowContext s)

Definition at line 522 of file snow.c.

Referenced by decode_frame(), and encode_frame().

◆ ff_snow_pred_block()

void ff_snow_pred_block ( SnowContext s,
uint8_t *  dst,
uint8_t *  tmp,
ptrdiff_t  stride,
int  sx,
int  sy,
int  b_w,
int  b_h,
const BlockNode block,
int  plane_index,
int  w,
int  h 
)

Definition at line 284 of file snow.c.

Referenced by add_yblock(), and get_block_rd().

◆ pred_mv()

static void pred_mv ( SnowContext s,
int mx,
int my,
int  ref,
const BlockNode left,
const BlockNode top,
const BlockNode tr 
)
inlinestatic

Definition at line 194 of file snow.h.

◆ same_block()

static av_always_inline int same_block ( BlockNode a,
BlockNode b 
)
static

Definition at line 210 of file snow.h.

Referenced by add_yblock(), encode_q_branch2(), get_4block_rd(), and iterative_me().

◆ add_yblock()

static av_always_inline void add_yblock ( SnowContext s,
int  sliced,
slice_buffer *  sb,
IDWTELEM dst,
uint8_t *  dst8,
const uint8_t *  obmc,
int  src_x,
int  src_y,
int  b_w,
int  b_h,
int  w,
int  h,
int  dst_stride,
int  src_stride,
int  obmc_stride,
int  b_x,
int  b_y,
int  add,
int  offset_dst,
int  plane_index 
)
static

Definition at line 220 of file snow.h.

Referenced by get_4block_rd(), get_dc(), predict_slice(), and predict_slice_buffered().

◆ predict_slice()

static av_always_inline void predict_slice ( SnowContext s,
IDWTELEM buf,
int  plane_index,
int  add,
int  mb_y 
)
static

Definition at line 344 of file snow.h.

Referenced by predict_plane().

◆ predict_plane()

static av_always_inline void predict_plane ( SnowContext s,
IDWTELEM buf,
int  plane_index,
int  add 
)
static

Definition at line 395 of file snow.h.

Referenced by decode_frame(), and encode_frame().

◆ set_blocks()

static void set_blocks ( SnowContext s,
int  level,
int  x,
int  y,
int  l,
int  cb,
int  cr,
int  mx,
int  my,
int  ref,
int  type 
)
inlinestatic

Definition at line 402 of file snow.h.

Referenced by decode_q_branch(), encode_q_branch(), and encode_q_branch2().

Variable Documentation

◆ null_block

const BlockNode null_block
static
Initial value:
= {
.color= {128,128,128},
.mx= 0,
.my= 0,
.ref= 0,
.type= 0,
.level= 0,
}

Definition at line 63 of file snow.h.

Referenced by decode_q_branch(), encode_q_branch(), encode_q_branch2(), and get_block_bits().

◆ ff_obmc_tab

const uint8_t* const ff_obmc_tab[4]

◆ ff_qexp

const uint8_t ff_qexp[QROOT]

◆ ff_scale_mv_ref

int ff_scale_mv_ref[MAX_REF_FRAMES][MAX_REF_FRAMES]

Definition at line 135 of file snowdata.h.

Referenced by mca(), and pred_mv().

◆ ff_quant3bA

const int8_t ff_quant3bA[256]

Definition at line 104 of file snowdata.h.

Referenced by encode_subband_c0run(), and unpack_coeffs().