FFmpeg
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
Macros | Functions | Variables
snowenc.c File Reference
#include "libavutil/intmath.h"
#include "libavutil/log.h"
#include "libavutil/opt.h"
#include "avcodec.h"
#include "internal.h"
#include "dsputil.h"
#include "snow_dwt.h"
#include "snow.h"
#include "rangecoder.h"
#include "mathops.h"
#include "mpegvideo.h"
#include "h263.h"
#include <assert.h>

Go to the source code of this file.

Macros

#define QUANTIZE2   0
 
#define P_LEFT   P[1]
 
#define P_TOP   P[2]
 
#define P_TOPRIGHT   P[3]
 
#define P_MEDIAN   P[4]
 
#define P_MV1   P[9]
 
#define FLAG_QPEL   1
 
#define OFFSET(x)   offsetof(SnowContext, x)
 
#define VE   AV_OPT_FLAG_VIDEO_PARAM | AV_OPT_FLAG_ENCODING_PARAM
 

Functions

static av_cold int encode_init (AVCodecContext *avctx)
 
static int pix_sum (uint8_t *pix, int line_size, int w, int h)
 
static int pix_norm1 (uint8_t *pix, int line_size, int w)
 
static int get_penalty_factor (int lambda, int lambda2, int type)
 
static int encode_q_branch (SnowContext *s, int level, int x, int y)
 
static void encode_q_branch2 (SnowContext *s, int level, int x, int y)
 
static int get_dc (SnowContext *s, int mb_x, int mb_y, int plane_index)
 
static int get_block_bits (SnowContext *s, int x, int y, int w)
 
static int get_block_rd (SnowContext *s, int mb_x, int mb_y, int plane_index, uint8_t(*obmc_edged)[MB_SIZE *2])
 
static int get_4block_rd (SnowContext *s, int mb_x, int mb_y, int plane_index)
 
static int encode_subband_c0run (SnowContext *s, SubBand *b, const IDWTELEM *src, const IDWTELEM *parent, int stride, int orientation)
 
static int encode_subband (SnowContext *s, SubBand *b, const IDWTELEM *src, const IDWTELEM *parent, int stride, int orientation)
 
static av_always_inline int check_block (SnowContext *s, int mb_x, int mb_y, int p[3], int intra, uint8_t(*obmc_edged)[MB_SIZE *2], int *best_rd)
 
static av_always_inline int check_block_inter (SnowContext *s, int mb_x, int mb_y, int p0, int p1, uint8_t(*obmc_edged)[MB_SIZE *2], int *best_rd)
 
static av_always_inline int check_4block_inter (SnowContext *s, int mb_x, int mb_y, int p0, int p1, int ref, int *best_rd)
 
static void iterative_me (SnowContext *s)
 
static void encode_blocks (SnowContext *s, int search)
 
static void quantize (SnowContext *s, SubBand *b, IDWTELEM *dst, DWTELEM *src, int stride, int bias)
 
static void dequantize (SnowContext *s, SubBand *b, IDWTELEM *src, int stride)
 
static void decorrelate (SnowContext *s, SubBand *b, IDWTELEM *src, int stride, int inverse, int use_median)
 
static void correlate (SnowContext *s, SubBand *b, IDWTELEM *src, int stride, int inverse, int use_median)
 
static void encode_qlogs (SnowContext *s)
 
static void encode_header (SnowContext *s)
 
static void update_last_header_values (SnowContext *s)
 
static int qscale2qlog (int qscale)
 
static int ratecontrol_1pass (SnowContext *s, AVFrame *pict)
 
static void calculate_visual_weight (SnowContext *s, Plane *p)
 
static int encode_frame (AVCodecContext *avctx, AVPacket *pkt, const AVFrame *pict, int *got_packet)
 
static av_cold int encode_end (AVCodecContext *avctx)
 

Variables

static const AVOption options []
 
static const AVClass snowenc_class
 
AVCodec ff_snow_encoder
 

Macro Definition Documentation

#define QUANTIZE2   0

Definition at line 40 of file snowenc.c.

Referenced by encode_frame().

#define P_LEFT   P[1]

Definition at line 315 of file snowenc.c.

Referenced by encode_q_branch().

#define P_TOP   P[2]

Definition at line 316 of file snowenc.c.

Referenced by encode_q_branch().

#define P_TOPRIGHT   P[3]

Definition at line 317 of file snowenc.c.

Referenced by encode_q_branch().

#define P_MEDIAN   P[4]

Definition at line 318 of file snowenc.c.

Referenced by encode_q_branch().

#define P_MV1   P[9]

Definition at line 319 of file snowenc.c.

#define FLAG_QPEL   1

Definition at line 320 of file snowenc.c.

#define OFFSET (   x)    offsetof(SnowContext, x)

Definition at line 1964 of file snowenc.c.

Definition at line 1965 of file snowenc.c.

Function Documentation

static av_cold int encode_init ( AVCodecContext avctx)
static

Definition at line 157 of file snowenc.c.

static int pix_sum ( uint8_t pix,
int  line_size,
int  w,
int  h 
)
static

Definition at line 258 of file snowenc.c.

Referenced by encode_q_branch().

static int pix_norm1 ( uint8_t pix,
int  line_size,
int  w 
)
static

Definition at line 274 of file snowenc.c.

Referenced by encode_q_branch().

static int get_penalty_factor ( int  lambda,
int  lambda2,
int  type 
)
inlinestatic

Definition at line 290 of file snowenc.c.

Referenced by encode_q_branch(), get_4block_rd(), and get_block_rd().

static int encode_q_branch ( SnowContext s,
int  level,
int  x,
int  y 
)
static

Definition at line 322 of file snowenc.c.

Referenced by encode_blocks(), and iterative_me().

static void encode_q_branch2 ( SnowContext s,
int  level,
int  x,
int  y 
)
static

Definition at line 546 of file snowenc.c.

Referenced by encode_blocks().

static int get_dc ( SnowContext s,
int  mb_x,
int  mb_y,
int  plane_index 
)
static

Definition at line 600 of file snowenc.c.

Referenced by iterative_me().

static int get_block_bits ( SnowContext s,
int  x,
int  y,
int  w 
)
inlinestatic

Definition at line 658 of file snowenc.c.

Referenced by get_4block_rd(), and get_block_rd().

static int get_block_rd ( SnowContext s,
int  mb_x,
int  mb_y,
int  plane_index,
uint8_t(*)  obmc_edged[MB_SIZE *2] 
)
static

Definition at line 696 of file snowenc.c.

Referenced by check_block().

static int get_4block_rd ( SnowContext s,
int  mb_x,
int  mb_y,
int  plane_index 
)
static

Definition at line 797 of file snowenc.c.

Referenced by check_4block_inter(), and iterative_me().

static int encode_subband_c0run ( SnowContext s,
SubBand b,
const IDWTELEM src,
const IDWTELEM parent,
int  stride,
int  orientation 
)
static

Definition at line 866 of file snowenc.c.

Referenced by encode_subband().

static int encode_subband ( SnowContext s,
SubBand b,
const IDWTELEM src,
const IDWTELEM parent,
int  stride,
int  orientation 
)
static

Definition at line 986 of file snowenc.c.

Referenced by encode_frame().

static av_always_inline int check_block ( SnowContext s,
int  mb_x,
int  mb_y,
int  p[3],
int  intra,
uint8_t(*)  obmc_edged[MB_SIZE *2],
int *  best_rd 
)
static

Definition at line 993 of file snowenc.c.

Referenced by check_block_inter(), and iterative_me().

static av_always_inline int check_block_inter ( SnowContext s,
int  mb_x,
int  mb_y,
int  p0,
int  p1,
uint8_t(*)  obmc_edged[MB_SIZE *2],
int *  best_rd 
)
static

Definition at line 1034 of file snowenc.c.

Referenced by iterative_me().

static av_always_inline int check_4block_inter ( SnowContext s,
int  mb_x,
int  mb_y,
int  p0,
int  p1,
int  ref,
int *  best_rd 
)
static

Definition at line 1039 of file snowenc.c.

Referenced by iterative_me().

static void iterative_me ( SnowContext s)
static

Definition at line 1085 of file snowenc.c.

Referenced by encode_blocks().

static void encode_blocks ( SnowContext s,
int  search 
)
static

Definition at line 1309 of file snowenc.c.

Referenced by encode_frame().

static void quantize ( SnowContext s,
SubBand b,
IDWTELEM dst,
DWTELEM src,
int  stride,
int  bias 
)
static

Definition at line 1331 of file snowenc.c.

Referenced by encode_frame().

static void dequantize ( SnowContext s,
SubBand b,
IDWTELEM src,
int  stride 
)
static

Definition at line 1392 of file snowenc.c.

Referenced by encode_frame().

static void decorrelate ( SnowContext s,
SubBand b,
IDWTELEM src,
int  stride,
int  inverse,
int  use_median 
)
static

Definition at line 1414 of file snowenc.c.

Referenced by encode_frame(), and ratecontrol_1pass().

static void correlate ( SnowContext s,
SubBand b,
IDWTELEM src,
int  stride,
int  inverse,
int  use_median 
)
static

Definition at line 1438 of file snowenc.c.

Referenced by encode_frame().

static void encode_qlogs ( SnowContext s)
static

Definition at line 1462 of file snowenc.c.

Referenced by encode_header().

static void encode_header ( SnowContext s)
static

Definition at line 1475 of file snowenc.c.

Referenced by encode_frame().

static void update_last_header_values ( SnowContext s)
static

Definition at line 1546 of file snowenc.c.

Referenced by encode_frame().

static int qscale2qlog ( int  qscale)
static

< 64 > 60

Definition at line 1566 of file snowenc.c.

Referenced by encode_frame(), and ratecontrol_1pass().

static int ratecontrol_1pass ( SnowContext s,
AVFrame pict 
)
static

Definition at line 1571 of file snowenc.c.

Referenced by encode_frame().

static void calculate_visual_weight ( SnowContext s,
Plane p 
)
static

Definition at line 1623 of file snowenc.c.

Referenced by encode_frame().

static int encode_frame ( AVCodecContext avctx,
AVPacket pkt,
const AVFrame pict,
int *  got_packet 
)
static

Definition at line 1649 of file snowenc.c.

static av_cold int encode_end ( AVCodecContext avctx)
static

Definition at line 1953 of file snowenc.c.

Variable Documentation

const AVOption options[]
static
Initial value:
= {
{ "memc_only", "Only do ME/MC (I frames -> ref, P frame -> ME+MC).", OFFSET(memc_only), AV_OPT_TYPE_INT, { .i64 = 0 }, 0, 1, VE },
{ "no_bitstream", "Skip final bitstream writeout.", OFFSET(no_bitstream), AV_OPT_TYPE_INT, { .i64 = 0 }, 0, 1, VE },
{ NULL },
}

Definition at line 1966 of file snowenc.c.

const AVClass snowenc_class
static
Initial value:
= {
.class_name = "snow encoder",
.item_name = av_default_item_name,
.option = options,
}

Definition at line 1972 of file snowenc.c.

AVCodec ff_snow_encoder
Initial value:
= {
.name = "snow",
.priv_data_size = sizeof(SnowContext),
.encode2 = encode_frame,
.pix_fmts = (const enum AVPixelFormat[]){
},
.long_name = NULL_IF_CONFIG_SMALL("Snow"),
.priv_class = &snowenc_class,
}

Definition at line 1979 of file snowenc.c.