FFmpeg
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
Data Structures | Macros | Functions | Variables
snow.h File Reference
#include "libavutil/motion_vector.h"
#include "hpeldsp.h"
#include "me_cmp.h"
#include "qpeldsp.h"
#include "snow_dwt.h"
#include "rangecoder.h"
#include "mathops.h"
#include "mpegvideo.h"
#include "h264qpel.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 FF_MPV_OFFSET(x)   (offsetof(MpegEncContext, x) + offsetof(SnowContext, m))
 
#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 ME_CACHE_SIZE   1024
 
#define QEXPSHIFT   (7-FRAC_BITS+8)
 

Functions

static av_always_inline void snow_interleave_line_header (int *i, int width, IDWTELEM *low, IDWTELEM *high)
 
static av_always_inline void snow_interleave_line_footer (int *i, IDWTELEM *low, IDWTELEM *high)
 
static av_always_inline void snow_horizontal_compose_lift_lead_out (int i, IDWTELEM *dst, IDWTELEM *src, IDWTELEM *ref, int width, int w, int lift_high, int mul, int add, int shift)
 
static av_always_inline void snow_horizontal_compose_liftS_lead_out (int i, IDWTELEM *dst, IDWTELEM *src, IDWTELEM *ref, int width, int w)
 
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_frame_start (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)
 
int ff_snow_get_buffer (SnowContext *s, AVFrame *frame)
 
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)
 
static void init_ref (MotionEstContext *c, uint8_t *src[3], uint8_t *ref[3], uint8_t *ref2[3], int x, int y, int ref_index)
 
static void put_symbol (RangeCoder *c, uint8_t *state, int v, int is_signed)
 
static int get_symbol (RangeCoder *c, uint8_t *state, int is_signed)
 
static void put_symbol2 (RangeCoder *c, uint8_t *state, int v, int log2)
 
static int get_symbol2 (RangeCoder *c, uint8_t *state, int log2)
 
static void unpack_coeffs (SnowContext *s, SubBand *b, SubBand *parent, int orientation)
 

Variables

static const BlockNode null_block
 
const uint8_t *const ff_obmc_tab [4]
 
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

#define FF_MPV_OFFSET (   x)    (offsetof(MpegEncContext, x) + offsetof(SnowContext, m))

Definition at line 35 of file snow.h.

#define MID_STATE   128

Definition at line 39 of file snow.h.

Referenced by decode_header(), encode_header(), and ff_snow_reset_contexts().

#define MAX_PLANES   4

Definition at line 41 of file snow.h.

#define QSHIFT   5
#define QROOT   (1<<QSHIFT)
#define LOSSLESS_QLOG   -128
#define FRAC_BITS   4

Definition at line 45 of file snow.h.

Referenced by add_yblock(), and predict_slice().

#define MAX_REF_FRAMES   8

Definition at line 46 of file snow.h.

Referenced by decode_header(), encode_init(), ff_snow_common_end(), and mca().

#define LOG2_OBMC_MAX   8

Definition at line 48 of file snow.h.

Referenced by add_yblock(), ff_snow_inner_add_yblock(), get_block_rd(), and get_dc().

#define OBMC_MAX   (1<<(LOG2_OBMC_MAX))

Definition at line 49 of file snow.h.

#define BLOCK_INTRA   1
#define BLOCK_OPT   2

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

Definition at line 58 of file snow.h.

Referenced by iterative_me().

#define LOG2_MB_SIZE   4

Definition at line 72 of file snow.h.

Referenced by encode_q_branch(), and ff_snow_alloc_blocks().

#define MB_SIZE   (1<<LOG2_MB_SIZE)

Definition at line 73 of file snow.h.

Referenced by add_yblock(), and predict_slice().

#define ENCODER_EXTRA_BITS   4

Definition at line 74 of file snow.h.

Referenced by encode_frame(), and quantize().

#define HTAPS_MAX   8
#define QBIAS_SHIFT   3

Definition at line 163 of file snow.h.

Referenced by decode_subband_slice_buffered(), dequantize(), and dequantize_slice_buffered().

#define ME_CACHE_SIZE   1024

Definition at line 171 of file snow.h.

Referenced by check_4block_inter(), and check_block().

#define QEXPSHIFT   (7-FRAC_BITS+8)

Function Documentation

static av_always_inline void snow_interleave_line_header ( int *  i,
int  width,
IDWTELEM low,
IDWTELEM high 
)
static

Definition at line 201 of file snow.h.

static av_always_inline void snow_interleave_line_footer ( int *  i,
IDWTELEM low,
IDWTELEM high 
)
static

Definition at line 210 of file snow.h.

static av_always_inline void snow_horizontal_compose_lift_lead_out ( int  i,
IDWTELEM dst,
IDWTELEM src,
IDWTELEM ref,
int  width,
int  w,
int  lift_high,
int  mul,
int  add,
int  shift 
)
static

Definition at line 217 of file snow.h.

static av_always_inline void snow_horizontal_compose_liftS_lead_out ( int  i,
IDWTELEM dst,
IDWTELEM src,
IDWTELEM ref,
int  width,
int  w 
)
static

Definition at line 227 of file snow.h.

int ff_snow_common_init ( AVCodecContext avctx)

Referenced by decode_init(), and encode_init().

int ff_snow_common_init_after_header ( AVCodecContext avctx)

Definition at line 514 of file snow.c.

Referenced by decode_frame(), and encode_frame().

void ff_snow_common_end ( SnowContext s)

Definition at line 693 of file snow.c.

Referenced by decode_end(), and encode_end().

void ff_snow_release_buffer ( AVCodecContext avctx)

Definition at line 640 of file snow.c.

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

void ff_snow_reset_contexts ( SnowContext s)

Definition at line 96 of file snow.c.

Referenced by decode_header(), and encode_header().

int ff_snow_alloc_blocks ( SnowContext s)

Definition at line 110 of file snow.c.

Referenced by decode_frame(), and encode_init().

int ff_snow_frame_start ( SnowContext s)

Definition at line 655 of file snow.c.

Referenced by decode_frame(), and encode_frame().

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 327 of file snow.c.

Referenced by add_yblock(), and get_block_rd().

int ff_snow_get_buffer ( SnowContext s,
AVFrame frame 
)

Definition at line 69 of file snow.c.

Referenced by encode_init(), and ff_snow_frame_start().

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 253 of file snow.h.

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

Definition at line 269 of file snow.h.

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

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 279 of file snow.h.

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

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

Definition at line 403 of file snow.h.

Referenced by predict_plane().

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

Definition at line 454 of file snow.h.

Referenced by decode_frame(), and encode_frame().

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 461 of file snow.h.

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

static void init_ref ( MotionEstContext c,
uint8_t src[3],
uint8_t ref[3],
uint8_t ref2[3],
int  x,
int  y,
int  ref_index 
)
inlinestatic

Definition at line 486 of file snow.h.

static void put_symbol ( RangeCoder c,
uint8_t state,
int  v,
int  is_signed 
)
inlinestatic

Definition at line 508 of file snow.h.

static int get_symbol ( RangeCoder c,
uint8_t state,
int  is_signed 
)
inlinestatic

Definition at line 539 of file snow.h.

static void put_symbol2 ( RangeCoder c,
uint8_t state,
int  v,
int  log2 
)
inlinestatic

Definition at line 561 of file snow.h.

Referenced by encode_subband_c0run().

static int get_symbol2 ( RangeCoder c,
uint8_t state,
int  log2 
)
inlinestatic

Definition at line 581 of file snow.h.

Referenced by unpack_coeffs().

static void unpack_coeffs ( SnowContext s,
SubBand b,
SubBand parent,
int  orientation 
)
inlinestatic

Definition at line 601 of file snow.h.

Referenced by decode_frame().

Variable Documentation

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().

const uint8_t* const ff_obmc_tab[4]
uint8_t ff_qexp[QROOT]
int ff_scale_mv_ref[MAX_REF_FRAMES][MAX_REF_FRAMES]

Definition at line 129 of file snowdata.h.

Referenced by mca(), and pred_mv().

const int8_t ff_quant3bA[256]

Definition at line 104 of file snowdata.h.

Referenced by encode_subband_c0run(), and unpack_coeffs().