libavcodec/mpegvideo_enc.c File Reference

The simplest mpeg encoder (well, it was the simplest!). More...

#include "avcodec.h"
#include "dsputil.h"
#include "mpegvideo.h"
#include "mpegvideo_common.h"
#include "mjpegenc.h"
#include "msmpeg4.h"
#include "h263.h"
#include "faandct.h"
#include "aandcttab.h"
#include <limits.h>

Go to the source code of this file.

Defines

#define COPY(a)   dst->a= src->a
#define MERGE(field)   dst->field += src->field; src->field=0

Functions

static int encode_picture (MpegEncContext *s, int picture_number)
static int dct_quantize_refine (MpegEncContext *s, DCTELEM *block, int16_t *weight, DCTELEM *orig, int n, int qscale)
static int sse_mb (MpegEncContext *s)
void ff_convert_matrix (DSPContext *dsp, int(*qmat)[64], uint16_t(*qmat16)[2][64], const uint16_t *quant_matrix, int bias, int qmin, int qmax, int intra)
static void update_qscale (MpegEncContext *s)
void ff_write_quant_matrix (PutBitContext *pb, uint16_t *matrix)
static void copy_picture_attributes (MpegEncContext *s, AVFrame *dst, AVFrame *src)
static void update_duplicate_context_after_me (MpegEncContext *dst, MpegEncContext *src)
static void MPV_encode_defaults (MpegEncContext *s)
 sets the given MpegEncContext to defaults for encoding.
av_cold int MPV_encode_init (AVCodecContext *avctx)
av_cold int MPV_encode_end (AVCodecContext *avctx)
static int get_sae (uint8_t *src, int ref, int stride)
static int get_intra_count (MpegEncContext *s, uint8_t *src, uint8_t *ref, int stride)
static int load_input_picture (MpegEncContext *s, AVFrame *pic_arg)
static int skip_check (MpegEncContext *s, Picture *p, Picture *ref)
static int estimate_best_b_count (MpegEncContext *s)
static void select_input_picture (MpegEncContext *s)
int MPV_encode_picture (AVCodecContext *avctx, unsigned char *buf, int buf_size, void *data)
static void dct_single_coeff_elimination (MpegEncContext *s, int n, int threshold)
static void clip_coeffs (MpegEncContext *s, DCTELEM *block, int last_index)
static void get_visual_weight (int16_t *weight, uint8_t *ptr, int stride)
static av_always_inline void encode_mb_internal (MpegEncContext *s, int motion_x, int motion_y, int mb_block_height, int mb_block_count)
static av_always_inline void encode_mb (MpegEncContext *s, int motion_x, int motion_y)
static void copy_context_before_encode (MpegEncContext *d, MpegEncContext *s, int type)
static void copy_context_after_encode (MpegEncContext *d, MpegEncContext *s, int type)
static void encode_mb_hq (MpegEncContext *s, MpegEncContext *backup, MpegEncContext *best, int type, PutBitContext pb[2], PutBitContext pb2[2], PutBitContext tex_pb[2], int *dmin, int *next_block, int motion_x, int motion_y)
static int sse (MpegEncContext *s, uint8_t *src1, uint8_t *src2, int w, int h, int stride)
static int pre_estimate_motion_thread (AVCodecContext *c, void *arg)
static int estimate_motion_thread (AVCodecContext *c, void *arg)
static int mb_var_thread (AVCodecContext *c, void *arg)
static void write_slice_end (MpegEncContext *s)
static int encode_thread (AVCodecContext *c, void *arg)
static void merge_context_after_me (MpegEncContext *dst, MpegEncContext *src)
static void merge_context_after_encode (MpegEncContext *dst, MpegEncContext *src)
static int estimate_qp (MpegEncContext *s, int dry_run)
static void set_frame_distances (MpegEncContext *s)
void denoise_dct_c (MpegEncContext *s, DCTELEM *block)
int dct_quantize_trellis_c (MpegEncContext *s, DCTELEM *block, int n, int qscale, int *overflow)
static void build_basis (uint8_t *perm)
int dct_quantize_c (MpegEncContext *s, DCTELEM *block, int n, int qscale, int *overflow)

Variables

static uint8_t default_mv_penalty [MAX_FCODE+1][MAX_MV *2+1]
static uint8_t default_fcode_tab [MAX_MV *2+1]
static int16_t basis [64][64]
AVCodec h263_encoder
AVCodec h263p_encoder
AVCodec flv_encoder
AVCodec rv10_encoder
AVCodec rv20_encoder
AVCodec mpeg4_encoder
AVCodec msmpeg4v1_encoder
AVCodec msmpeg4v2_encoder
AVCodec msmpeg4v3_encoder
AVCodec wmv1_encoder


Detailed Description

The simplest mpeg encoder (well, it was the simplest!).

Definition in file mpegvideo_enc.c.


Define Documentation

#define COPY (  )     dst->a= src->a

#define MERGE ( field   )     dst->field += src->field; src->field=0

Definition at line 2615 of file mpegvideo_enc.c.

Referenced by merge_context_after_encode(), and merge_context_after_me().


Function Documentation

static void build_basis ( uint8_t *  perm  )  [static]

Definition at line 3243 of file mpegvideo_enc.c.

Referenced by dct_quantize_refine().

static void clip_coeffs ( MpegEncContext s,
DCTELEM block,
int  last_index 
) [inline, static]

Definition at line 1381 of file mpegvideo_enc.c.

Referenced by encode_mb_internal().

static void copy_context_after_encode ( MpegEncContext d,
MpegEncContext s,
int  type 
) [inline, static]

Definition at line 1763 of file mpegvideo_enc.c.

Referenced by encode_mb_hq(), and encode_thread().

static void copy_context_before_encode ( MpegEncContext d,
MpegEncContext s,
int  type 
) [inline, static]

Definition at line 1735 of file mpegvideo_enc.c.

Referenced by encode_mb_hq(), and encode_thread().

static void copy_picture_attributes ( MpegEncContext s,
AVFrame dst,
AVFrame src 
) [static]

Definition at line 149 of file mpegvideo_enc.c.

Referenced by load_input_picture(), and select_input_picture().

int dct_quantize_c ( MpegEncContext s,
DCTELEM block,
int  n,
int  qscale,
int *  overflow 
)

Definition at line 3638 of file mpegvideo_enc.c.

Referenced by dnxhd_encode_init(), encode_mb_internal(), and MPV_encode_init().

static int dct_quantize_refine ( MpegEncContext s,
DCTELEM block,
int16_t *  weight,
DCTELEM orig,
int  n,
int  qscale 
) [static]

Definition at line 3262 of file mpegvideo_enc.c.

Referenced by encode_mb_internal().

int dct_quantize_trellis_c ( MpegEncContext s,
DCTELEM block,
int  n,
int  qscale,
int *  overflow 
)

Definition at line 2944 of file mpegvideo_enc.c.

Referenced by MPV_encode_init().

static void dct_single_coeff_elimination ( MpegEncContext s,
int  n,
int  threshold 
) [inline, static]

Definition at line 1332 of file mpegvideo_enc.c.

Referenced by encode_mb_internal().

void denoise_dct_c ( MpegEncContext s,
DCTELEM block 
)

Definition at line 2920 of file mpegvideo_enc.c.

Referenced by MPV_encode_init().

static av_always_inline void encode_mb ( MpegEncContext s,
int  motion_x,
int  motion_y 
) [static]

Definition at line 1729 of file mpegvideo_enc.c.

static void encode_mb_hq ( MpegEncContext s,
MpegEncContext backup,
MpegEncContext best,
int  type,
PutBitContext  pb[2],
PutBitContext  pb2[2],
PutBitContext  tex_pb[2],
int *  dmin,
int *  next_block,
int  motion_x,
int  motion_y 
) [inline, static]

Definition at line 1802 of file mpegvideo_enc.c.

Referenced by encode_thread().

static av_always_inline void encode_mb_internal ( MpegEncContext s,
int  motion_x,
int  motion_y,
int  mb_block_height,
int  mb_block_count 
) [static]

Definition at line 1435 of file mpegvideo_enc.c.

Referenced by encode_mb().

static int encode_picture ( MpegEncContext s,
int  picture_number 
) [static]

Definition at line 2704 of file mpegvideo_enc.c.

Referenced by MPV_encode_picture().

static int encode_thread ( AVCodecContext c,
void *  arg 
) [static]

Definition at line 1985 of file mpegvideo_enc.c.

Referenced by encode_picture().

static int estimate_best_b_count ( MpegEncContext s  )  [static]

Definition at line 906 of file mpegvideo_enc.c.

Referenced by select_input_picture().

static int estimate_motion_thread ( AVCodecContext c,
void *  arg 
) [static]

Definition at line 1916 of file mpegvideo_enc.c.

Referenced by encode_picture().

static int estimate_qp ( MpegEncContext s,
int  dry_run 
) [static]

Definition at line 2654 of file mpegvideo_enc.c.

Referenced by encode_picture().

void ff_convert_matrix ( DSPContext dsp,
int(*)  qmat[64],
uint16_t(*)  qmat16[2][64],
const uint16_t *  quant_matrix,
int  bias,
int  qmin,
int  qmax,
int  intra 
)

Definition at line 56 of file mpegvideo_enc.c.

Referenced by dnxhd_init_qmat(), encode_picture(), and MPV_encode_init().

void ff_write_quant_matrix ( PutBitContext pb,
uint16_t *  matrix 
)

Definition at line 137 of file mpegvideo_enc.c.

Referenced by mpeg1_encode_sequence_header().

static int get_intra_count ( MpegEncContext s,
uint8_t *  src,
uint8_t *  ref,
int  stride 
) [static]

Definition at line 746 of file mpegvideo_enc.c.

Referenced by select_input_picture().

static int get_sae ( uint8_t *  src,
int  ref,
int  stride 
) [static]

Definition at line 733 of file mpegvideo_enc.c.

Referenced by get_intra_count().

static void get_visual_weight ( int16_t *  weight,
uint8_t *  ptr,
int  stride 
) [static]

Definition at line 1412 of file mpegvideo_enc.c.

Referenced by encode_mb_internal().

static int load_input_picture ( MpegEncContext s,
AVFrame pic_arg 
) [static]

Definition at line 767 of file mpegvideo_enc.c.

Referenced by MPV_encode_picture().

static int mb_var_thread ( AVCodecContext c,
void *  arg 
) [static]

Definition at line 1943 of file mpegvideo_enc.c.

Referenced by encode_picture().

static void merge_context_after_encode ( MpegEncContext dst,
MpegEncContext src 
) [static]

Definition at line 2622 of file mpegvideo_enc.c.

Referenced by encode_picture().

static void merge_context_after_me ( MpegEncContext dst,
MpegEncContext src 
) [static]

Definition at line 2616 of file mpegvideo_enc.c.

Referenced by encode_picture().

static void MPV_encode_defaults ( MpegEncContext s  )  [static]

sets the given MpegEncContext to defaults for encoding.

the changed fields will not depend upon the prior state of the MpegEncContext.

Definition at line 209 of file mpegvideo_enc.c.

Referenced by MPV_encode_init().

av_cold int MPV_encode_end ( AVCodecContext avctx  ) 

Definition at line 718 of file mpegvideo_enc.c.

av_cold int MPV_encode_init ( AVCodecContext avctx  ) 

Definition at line 221 of file mpegvideo_enc.c.

Referenced by encode_init(), and wmv2_encode_init().

int MPV_encode_picture ( AVCodecContext avctx,
unsigned char *  buf,
int  buf_size,
void *  data 
)

Definition at line 1183 of file mpegvideo_enc.c.

static int pre_estimate_motion_thread ( AVCodecContext c,
void *  arg 
) [static]

Definition at line 1897 of file mpegvideo_enc.c.

Referenced by encode_picture().

static void select_input_picture ( MpegEncContext s  )  [static]

Definition at line 1015 of file mpegvideo_enc.c.

Referenced by MPV_encode_picture().

static void set_frame_distances ( MpegEncContext s  )  [static]

Definition at line 2690 of file mpegvideo_enc.c.

Referenced by encode_picture().

static int skip_check ( MpegEncContext s,
Picture p,
Picture ref 
) [static]

Definition at line 873 of file mpegvideo_enc.c.

Referenced by select_input_picture().

static int sse ( MpegEncContext s,
uint8_t *  src1,
uint8_t *  src2,
int  w,
int  h,
int  stride 
) [static]

Definition at line 1853 of file mpegvideo_enc.c.

Referenced by block_sse(), encode_thread(), main(), and sse_mb().

static int sse_mb ( MpegEncContext s  )  [static]

Definition at line 1874 of file mpegvideo_enc.c.

Referenced by encode_mb_hq().

static void update_duplicate_context_after_me ( MpegEncContext dst,
MpegEncContext src 
) [static]

Definition at line 188 of file mpegvideo_enc.c.

Referenced by encode_picture().

static void update_qscale ( MpegEncContext s  )  [inline, static]

Definition at line 130 of file mpegvideo_enc.c.

Referenced by encode_mb_internal(), encode_picture(), and estimate_qp().

static void write_slice_end ( MpegEncContext s  )  [static]

Definition at line 1967 of file mpegvideo_enc.c.

Referenced by encode_thread().


Variable Documentation

int16_t basis[64][64] [static]

Definition at line 3241 of file mpegvideo_enc.c.

Referenced by add_8x8basis_TMPL(), and try_8x8basis_TMPL().

uint8_t default_fcode_tab[MAX_MV *2+1] [static]

Definition at line 54 of file mpegvideo_enc.c.

Referenced by MPV_encode_defaults().

uint8_t default_mv_penalty[MAX_FCODE+1][MAX_MV *2+1] [static]

Definition at line 53 of file mpegvideo_enc.c.

Referenced by MPV_encode_defaults().

Initial value:

Definition at line 3742 of file mpegvideo_enc.c.

Initial value:

Definition at line 3718 of file mpegvideo_enc.c.

Initial value:

 {
    "h263p",
    CODEC_TYPE_VIDEO,
    CODEC_ID_H263P,
    sizeof(MpegEncContext),
    MPV_encode_init,
    MPV_encode_picture,
    MPV_encode_end,
    .pix_fmts= (enum PixelFormat[]){PIX_FMT_YUV420P, PIX_FMT_NONE},
    .long_name= NULL_IF_CONFIG_SMALL("H.263+ / H.263-1998 / H.263 version 2"),
}

Definition at line 3730 of file mpegvideo_enc.c.

Initial value:

Definition at line 3778 of file mpegvideo_enc.c.

Initial value:

 {
    "msmpeg4v1",
    CODEC_TYPE_VIDEO,
    CODEC_ID_MSMPEG4V1,
    sizeof(MpegEncContext),
    MPV_encode_init,
    MPV_encode_picture,
    MPV_encode_end,
    .pix_fmts= (enum PixelFormat[]){PIX_FMT_YUV420P, PIX_FMT_NONE},
    .long_name= NULL_IF_CONFIG_SMALL("MPEG-4 part 2 Microsoft variant version 1"),
}

Definition at line 3791 of file mpegvideo_enc.c.

Initial value:

 {
    "msmpeg4v2",
    CODEC_TYPE_VIDEO,
    CODEC_ID_MSMPEG4V2,
    sizeof(MpegEncContext),
    MPV_encode_init,
    MPV_encode_picture,
    MPV_encode_end,
    .pix_fmts= (enum PixelFormat[]){PIX_FMT_YUV420P, PIX_FMT_NONE},
    .long_name= NULL_IF_CONFIG_SMALL("MPEG-4 part 2 Microsoft variant version 2"),
}

Definition at line 3803 of file mpegvideo_enc.c.

Initial value:

 {
    "msmpeg4",
    CODEC_TYPE_VIDEO,
    CODEC_ID_MSMPEG4V3,
    sizeof(MpegEncContext),
    MPV_encode_init,
    MPV_encode_picture,
    MPV_encode_end,
    .pix_fmts= (enum PixelFormat[]){PIX_FMT_YUV420P, PIX_FMT_NONE},
    .long_name= NULL_IF_CONFIG_SMALL("MPEG-4 part 2 Microsoft variant version 3"),
}

Definition at line 3815 of file mpegvideo_enc.c.

Initial value:

Definition at line 3754 of file mpegvideo_enc.c.

Initial value:

Definition at line 3766 of file mpegvideo_enc.c.

Initial value:

Definition at line 3827 of file mpegvideo_enc.c.


Generated on Fri Oct 26 02:35:44 2012 for FFmpeg by  doxygen 1.5.8