The simplest mpeg encoder (well, it was the simplest!). More...
#include "libavutil/intmath.h"
#include "libavutil/mathematics.h"
#include "libavutil/opt.h"
#include "avcodec.h"
#include "dsputil.h"
#include "mpegvideo.h"
#include "mpegvideo_common.h"
#include "h263.h"
#include "mjpegenc.h"
#include "msmpeg4.h"
#include "faandct.h"
#include "thread.h"
#include "aandcttab.h"
#include "flv.h"
#include "mpeg4video.h"
#include "internal.h"
#include <limits.h>
Go to the source code of this file.
The simplest mpeg encoder (well, it was the simplest!).
Definition in file mpegvideo_enc.c.
#define COPY | ( | a | ) | dst->a= src->a |
#define MERGE | ( | field | ) | dst->field += src->field; src->field=0 |
Definition at line 2976 of file mpegvideo_enc.c.
Referenced by merge_context_after_encode(), and merge_context_after_me().
#define OFFSET | ( | x | ) | offsetof(MpegEncContext, x) |
Definition at line 4081 of file mpegvideo_enc.c.
Definition at line 4082 of file mpegvideo_enc.c.
static void build_basis | ( | uint8_t * | perm | ) | [static] |
Definition at line 3609 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 1672 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 2126 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 2098 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 193 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 4001 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 3628 of file mpegvideo_enc.c.
Referenced by encode_mb_internal().
static int dct_quantize_trellis_c | ( | MpegEncContext * | s, |
DCTELEM * | block, | ||
int | n, | ||
int | qscale, | ||
int * | overflow | ||
) | [static] |
Definition at line 3310 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 1616 of file mpegvideo_enc.c.
Referenced by encode_mb_internal().
static void denoise_dct_c | ( | MpegEncContext * | s, |
DCTELEM * | block | ||
) | [static] |
Definition at line 3286 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 2092 of file mpegvideo_enc.c.
Referenced by encode_mb_hq(), and encode_thread().
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 2165 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 1730 of file mpegvideo_enc.c.
Referenced by encode_mb().
static int encode_picture | ( | MpegEncContext * | s, |
int | picture_number | ||
) | [static] |
Definition at line 3067 of file mpegvideo_enc.c.
Referenced by MPV_encode_picture().
static int encode_thread | ( | AVCodecContext * | c, |
void * | arg | ||
) | [static] |
Definition at line 2348 of file mpegvideo_enc.c.
Referenced by encode_picture().
static int estimate_best_b_count | ( | MpegEncContext * | s | ) | [static] |
Definition at line 1108 of file mpegvideo_enc.c.
Referenced by select_input_picture().
static int estimate_motion_thread | ( | AVCodecContext * | c, |
void * | arg | ||
) | [static] |
Definition at line 2279 of file mpegvideo_enc.c.
Referenced by encode_picture().
static int estimate_qp | ( | MpegEncContext * | s, |
int | dry_run | ||
) | [static] |
Definition at line 3015 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 65 of file mpegvideo_enc.c.
Referenced by dnxhd_init_qmat(), encode_picture(), and MPV_encode_init().
void ff_init_qscale_tab | ( | MpegEncContext * | s | ) |
init s->current_picture.qscale_table from s->lambda_table
Definition at line 180 of file mpegvideo_enc.c.
Referenced by estimate_qp(), and ff_clean_h263_qscales().
void ff_write_quant_matrix | ( | PutBitContext * | pb, |
uint16_t * | matrix | ||
) |
Definition at line 164 of file mpegvideo_enc.c.
Referenced by mpeg1_encode_sequence_header(), and mpeg4_encode_vol_header().
static int get_intra_count | ( | MpegEncContext * | s, |
uint8_t * | src, | ||
uint8_t * | ref, | ||
int | stride | ||
) | [static] |
Definition at line 922 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 908 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 1706 of file mpegvideo_enc.c.
Referenced by encode_mb_internal().
static int load_input_picture | ( | MpegEncContext * | s, |
AVFrame * | pic_arg | ||
) | [static] |
Definition at line 946 of file mpegvideo_enc.c.
Referenced by MPV_encode_picture().
static int mb_var_thread | ( | AVCodecContext * | c, |
void * | arg | ||
) | [static] |
Definition at line 2306 of file mpegvideo_enc.c.
Referenced by encode_picture().
static void merge_context_after_encode | ( | MpegEncContext * | dst, |
MpegEncContext * | src | ||
) | [static] |
Definition at line 2983 of file mpegvideo_enc.c.
Referenced by encode_picture().
static void merge_context_after_me | ( | MpegEncContext * | dst, |
MpegEncContext * | src | ||
) | [static] |
Definition at line 2977 of file mpegvideo_enc.c.
Referenced by encode_picture().
static void MPV_encode_defaults | ( | MpegEncContext * | s | ) | [static] |
Set the given MpegEncContext to defaults for encoding.
the changed fields will not depend upon the prior state of the MpegEncContext.
Definition at line 264 of file mpegvideo_enc.c.
Referenced by MPV_encode_init().
av_cold int MPV_encode_end | ( | AVCodecContext * | avctx | ) |
Definition at line 892 of file mpegvideo_enc.c.
Referenced by mpeg12_class().
av_cold int MPV_encode_init | ( | AVCodecContext * | avctx | ) |
Definition at line 277 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 1434 of file mpegvideo_enc.c.
Referenced by mpeg12_class().
static int pre_estimate_motion_thread | ( | AVCodecContext * | c, |
void * | arg | ||
) | [static] |
Definition at line 2260 of file mpegvideo_enc.c.
Referenced by encode_picture().
static int select_input_picture | ( | MpegEncContext * | s | ) | [static] |
Definition at line 1233 of file mpegvideo_enc.c.
Referenced by MPV_encode_picture().
static void set_frame_distances | ( | MpegEncContext * | s | ) | [static] |
Definition at line 3053 of file mpegvideo_enc.c.
Referenced by encode_picture().
static int skip_check | ( | MpegEncContext * | s, |
Picture * | p, | ||
Picture * | ref | ||
) | [static] |
Definition at line 1071 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 2216 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 2237 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 241 of file mpegvideo_enc.c.
Referenced by encode_picture().
static void update_qscale | ( | MpegEncContext * | s | ) | [inline, static] |
Definition at line 154 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 2330 of file mpegvideo_enc.c.
Referenced by encode_thread().
int16_t basis[64][64] [static] |
Definition at line 3607 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 63 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 62 of file mpegvideo_enc.c.
Referenced by MPV_encode_defaults().
{ .name = "h263", .type = AVMEDIA_TYPE_VIDEO, .id = CODEC_ID_H263, .priv_data_size = sizeof(MpegEncContext), .init = MPV_encode_init, .encode = MPV_encode_picture, .close = MPV_encode_end, .pix_fmts= (const enum PixelFormat[]){PIX_FMT_YUV420P, PIX_FMT_NONE}, .long_name= NULL_IF_CONFIG_SMALL("H.263 / H.263-1996"), .priv_class = &h263_class, }
Definition at line 4096 of file mpegvideo_enc.c.
{ .name = "h263p", .type = AVMEDIA_TYPE_VIDEO, .id = CODEC_ID_H263P, .priv_data_size = sizeof(MpegEncContext), .init = MPV_encode_init, .encode = MPV_encode_picture, .close = MPV_encode_end, .capabilities = CODEC_CAP_SLICE_THREADS, .pix_fmts= (const enum PixelFormat[]){PIX_FMT_YUV420P, PIX_FMT_NONE}, .long_name= NULL_IF_CONFIG_SMALL("H.263+ / H.263-1998 / H.263 version 2"), .priv_class = &h263p_class, }
Definition at line 4123 of file mpegvideo_enc.c.
{ .name = "msmpeg4v2", .type = AVMEDIA_TYPE_VIDEO, .id = CODEC_ID_MSMPEG4V2, .priv_data_size = sizeof(MpegEncContext), .init = MPV_encode_init, .encode = MPV_encode_picture, .close = MPV_encode_end, .pix_fmts= (const 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 4137 of file mpegvideo_enc.c.
{ .name = "msmpeg4", .type = AVMEDIA_TYPE_VIDEO, .id = CODEC_ID_MSMPEG4V3, .priv_data_size = sizeof(MpegEncContext), .init = MPV_encode_init, .encode = MPV_encode_picture, .close = MPV_encode_end, .pix_fmts= (const 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 4149 of file mpegvideo_enc.c.
{ .name = "wmv1", .type = AVMEDIA_TYPE_VIDEO, .id = CODEC_ID_WMV1, .priv_data_size = sizeof(MpegEncContext), .init = MPV_encode_init, .encode = MPV_encode_picture, .close = MPV_encode_end, .pix_fmts= (const enum PixelFormat[]){PIX_FMT_YUV420P, PIX_FMT_NONE}, .long_name= NULL_IF_CONFIG_SMALL("Windows Media Video 7"), }
Definition at line 4161 of file mpegvideo_enc.c.
const AVClass h263_class [static] |
{ .class_name = "H.263 encoder", .item_name = av_default_item_name, .option = h263_options, .version = LIBAVUTIL_VERSION_INT, }
Definition at line 4089 of file mpegvideo_enc.c.
const AVOption h263_options[] [static] |
{ { "obmc", "use overlapped block motion compensation.", OFFSET(obmc), AV_OPT_TYPE_INT, { 0 }, 0, 1, VE }, { "structured_slices","Write slice start position at every GOB header instead of just GOB number.", OFFSET(h263_slice_structured), AV_OPT_TYPE_INT, { 0 }, 0, 1, VE}, { NULL }, }
Definition at line 4083 of file mpegvideo_enc.c.
const AVClass h263p_class [static] |
{ .class_name = "H.263p encoder", .item_name = av_default_item_name, .option = h263p_options, .version = LIBAVUTIL_VERSION_INT, }
Definition at line 4116 of file mpegvideo_enc.c.
const AVOption h263p_options[] [static] |
{ { "umv", "Use unlimited motion vectors.", OFFSET(umvplus), AV_OPT_TYPE_INT, { 0 }, 0, 1, VE }, { "aiv", "Use alternative inter VLC.", OFFSET(alt_inter_vlc), AV_OPT_TYPE_INT, { 0 }, 0, 1, VE }, { "obmc", "use overlapped block motion compensation.", OFFSET(obmc), AV_OPT_TYPE_INT, { 0 }, 0, 1, VE }, { "structured_slices", "Write slice start position at every GOB header instead of just GOB number.", OFFSET(h263_slice_structured), AV_OPT_TYPE_INT, { 0 }, 0, 1, VE}, { NULL }, }
Definition at line 4109 of file mpegvideo_enc.c.