#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 "bytestream.h"
#include <limits.h>
#include "sp5x.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 |
#define | OFFSET(x) offsetof(MpegEncContext, x) |
#define | VE AV_OPT_FLAG_VIDEO_PARAM | AV_OPT_FLAG_ENCODING_PARAM |
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) |
static void | denoise_dct_c (MpegEncContext *s, DCTELEM *block) |
static int | dct_quantize_trellis_c (MpegEncContext *s, DCTELEM *block, int n, int qscale, int *overflow) |
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) |
void | ff_init_qscale_tab (MpegEncContext *s) |
init s->current_picture.qscale_table from s->lambda_table | |
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) |
Set the given MpegEncContext to defaults for encoding. | |
av_cold int | ff_MPV_encode_init (AVCodecContext *avctx) |
av_cold int | ff_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 int | select_input_picture (MpegEncContext *s) |
int | ff_MPV_encode_picture (AVCodecContext *avctx, AVPacket *pkt, AVFrame *pic_arg, int *got_packet) |
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 void | write_mb_info (MpegEncContext *s) |
static void | update_mb_info (MpegEncContext *s, int startcode) |
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) |
static void | build_basis (uint8_t *perm) |
int | ff_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] |
const AVOption | ff_mpv_generic_options [] |
static int16_t | basis [64][64] |
static const AVOption | h263_options [] |
static const AVClass | h263_class |
AVCodec | ff_h263_encoder |
static const AVOption | h263p_options [] |
static const AVClass | h263p_class |
AVCodec | ff_h263p_encoder |
AVCodec | ff_msmpeg4v2_encoder |
AVCodec | ff_msmpeg4v3_encoder |
AVCodec | ff_wmv1_encoder |
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 3064 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 4191 of file mpegvideo_enc.c.
#define VE AV_OPT_FLAG_VIDEO_PARAM | AV_OPT_FLAG_ENCODING_PARAM |
Definition at line 4192 of file mpegvideo_enc.c.
static void build_basis | ( | uint8_t * | perm | ) | [static] |
static void clip_coeffs | ( | MpegEncContext * | s, | |
DCTELEM * | block, | |||
int | last_index | |||
) | [inline, static] |
static void copy_context_after_encode | ( | MpegEncContext * | d, | |
MpegEncContext * | s, | |||
int | type | |||
) | [inline, static] |
static void copy_context_before_encode | ( | MpegEncContext * | d, | |
MpegEncContext * | s, | |||
int | type | |||
) | [inline, static] |
static void copy_picture_attributes | ( | MpegEncContext * | s, | |
AVFrame * | dst, | |||
AVFrame * | src | |||
) | [static] |
Definition at line 188 of file mpegvideo_enc.c.
Referenced by load_input_picture(), and select_input_picture().
static int dct_quantize_refine | ( | MpegEncContext * | s, | |
DCTELEM * | block, | |||
int16_t * | weight, | |||
DCTELEM * | orig, | |||
int | n, | |||
int | qscale | |||
) | [static] |
static int dct_quantize_trellis_c | ( | MpegEncContext * | s, | |
DCTELEM * | block, | |||
int | n, | |||
int | qscale, | |||
int * | overflow | |||
) | [static] |
static void dct_single_coeff_elimination | ( | MpegEncContext * | s, | |
int | n, | |||
int | threshold | |||
) | [inline, static] |
static void denoise_dct_c | ( | MpegEncContext * | s, | |
DCTELEM * | block | |||
) | [static] |
static av_always_inline void encode_mb | ( | MpegEncContext * | s, | |
int | motion_x, | |||
int | motion_y | |||
) | [static] |
Definition at line 2129 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] |
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] |
static int encode_picture | ( | MpegEncContext * | s, | |
int | picture_number | |||
) | [static] |
static int encode_thread | ( | AVCodecContext * | c, | |
void * | arg | |||
) | [static] |
static int estimate_best_b_count | ( | MpegEncContext * | s | ) | [static] |
static int estimate_motion_thread | ( | AVCodecContext * | c, | |
void * | arg | |||
) | [static] |
static int estimate_qp | ( | MpegEncContext * | s, | |
int | dry_run | |||
) | [static] |
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 72 of file mpegvideo_enc.c.
Referenced by dnxhd_init_qmat(), encode_picture(), and ff_MPV_encode_init().
int ff_dct_quantize_c | ( | MpegEncContext * | s, | |
DCTELEM * | block, | |||
int | n, | |||
int | qscale, | |||
int * | overflow | |||
) |
Definition at line 4111 of file mpegvideo_enc.c.
Referenced by dnxhd_encode_init(), encode_mb_internal(), and ff_MPV_encode_init().
void ff_init_qscale_tab | ( | MpegEncContext * | s | ) |
init s->current_picture.qscale_table from s->lambda_table
Definition at line 175 of file mpegvideo_enc.c.
Referenced by estimate_qp(), and ff_clean_h263_qscales().
av_cold int ff_MPV_encode_end | ( | AVCodecContext * | avctx | ) |
av_cold int ff_MPV_encode_init | ( | AVCodecContext * | avctx | ) |
Definition at line 272 of file mpegvideo_enc.c.
Referenced by encode_init(), and wmv2_encode_init().
int ff_MPV_encode_picture | ( | AVCodecContext * | avctx, | |
AVPacket * | pkt, | |||
AVFrame * | pic_arg, | |||
int * | got_packet | |||
) |
Definition at line 1446 of file mpegvideo_enc.c.
Referenced by amv_encode_picture(), and mpeg12_class().
void ff_write_quant_matrix | ( | PutBitContext * | pb, | |
uint16_t * | matrix | |||
) |
Definition at line 159 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] |
static int get_sae | ( | uint8_t * | src, | |
int | ref, | |||
int | stride | |||
) | [static] |
static int load_input_picture | ( | MpegEncContext * | s, | |
AVFrame * | pic_arg | |||
) | [static] |
static int mb_var_thread | ( | AVCodecContext * | c, | |
void * | arg | |||
) | [static] |
static void merge_context_after_encode | ( | MpegEncContext * | dst, | |
MpegEncContext * | src | |||
) | [static] |
static void merge_context_after_me | ( | MpegEncContext * | dst, | |
MpegEncContext * | src | |||
) | [static] |
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 259 of file mpegvideo_enc.c.
Referenced by ff_MPV_encode_init().
static int pre_estimate_motion_thread | ( | AVCodecContext * | c, | |
void * | arg | |||
) | [static] |
static int select_input_picture | ( | MpegEncContext * | s | ) | [static] |
static void set_frame_distances | ( | MpegEncContext * | s | ) | [static] |
static int skip_check | ( | MpegEncContext * | s, | |
Picture * | p, | |||
Picture * | ref | |||
) | [static] |
static int sse | ( | MpegEncContext * | s, | |
uint8_t * | src1, | |||
uint8_t * | src2, | |||
int | w, | |||
int | h, | |||
int | stride | |||
) | [static] |
Definition at line 2253 of file mpegvideo_enc.c.
Referenced by block_sse(), encode_thread(), main(), run_psnr(), sse_mb(), and swri_audio_convert_init_x86().
static int sse_mb | ( | MpegEncContext * | s | ) | [static] |
static void update_duplicate_context_after_me | ( | MpegEncContext * | dst, | |
MpegEncContext * | src | |||
) | [static] |
static void update_mb_info | ( | MpegEncContext * | s, | |
int | startcode | |||
) | [static] |
static void update_qscale | ( | MpegEncContext * | s | ) | [inline, static] |
Definition at line 149 of file mpegvideo_enc.c.
Referenced by encode_mb_internal(), encode_picture(), and estimate_qp().
static void write_mb_info | ( | MpegEncContext * | s | ) | [static] |
static void write_slice_end | ( | MpegEncContext * | s | ) | [static] |
Definition at line 3717 of file mpegvideo_enc.c.
Referenced by add_8x8basis_TMPL(), and try_8x8basis_TMPL().
uint8_t default_fcode_tab[MAX_MV *2+1] [static] |
uint8_t default_mv_penalty[MAX_FCODE+1][MAX_MV *2+1] [static] |
Initial value:
{ .name = "h263", .type = AVMEDIA_TYPE_VIDEO, .id = CODEC_ID_H263, .priv_data_size = sizeof(MpegEncContext), .init = ff_MPV_encode_init, .encode2 = ff_MPV_encode_picture, .close = ff_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 4208 of file mpegvideo_enc.c.
Initial value:
{ .name = "h263p", .type = AVMEDIA_TYPE_VIDEO, .id = CODEC_ID_H263P, .priv_data_size = sizeof(MpegEncContext), .init = ff_MPV_encode_init, .encode2 = ff_MPV_encode_picture, .close = ff_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 4236 of file mpegvideo_enc.c.
const AVOption ff_mpv_generic_options[] |
Initial value:
{ .name = "msmpeg4v2", .type = AVMEDIA_TYPE_VIDEO, .id = CODEC_ID_MSMPEG4V2, .priv_data_size = sizeof(MpegEncContext), .init = ff_MPV_encode_init, .encode2 = ff_MPV_encode_picture, .close = ff_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"), .priv_class = &msmpeg4v2_class, }
Definition at line 4252 of file mpegvideo_enc.c.
Initial value:
{ .name = "msmpeg4", .type = AVMEDIA_TYPE_VIDEO, .id = CODEC_ID_MSMPEG4V3, .priv_data_size = sizeof(MpegEncContext), .init = ff_MPV_encode_init, .encode2 = ff_MPV_encode_picture, .close = ff_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"), .priv_class = &msmpeg4v3_class, }
Definition at line 4267 of file mpegvideo_enc.c.
Initial value:
{ .name = "wmv1", .type = AVMEDIA_TYPE_VIDEO, .id = CODEC_ID_WMV1, .priv_data_size = sizeof(MpegEncContext), .init = ff_MPV_encode_init, .encode2 = ff_MPV_encode_picture, .close = ff_MPV_encode_end, .pix_fmts = (const enum PixelFormat[]){ PIX_FMT_YUV420P, PIX_FMT_NONE }, .long_name = NULL_IF_CONFIG_SMALL("Windows Media Video 7"), .priv_class = &wmv1_class, }
Definition at line 4282 of file mpegvideo_enc.c.
const AVClass h263_class [static] |
Initial value:
{ .class_name = "H.263 encoder", .item_name = av_default_item_name, .option = h263_options, .version = LIBAVUTIL_VERSION_INT, }
Definition at line 4201 of file mpegvideo_enc.c.
const AVOption h263_options[] [static] |
Initial value:
{ { "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}, { "mb_info", "emit macroblock info for RFC 2190 packetization, the parameter value is the maximum payload size", OFFSET(mb_info), AV_OPT_TYPE_INT, { 0 }, 0, INT_MAX, VE }, FF_MPV_COMMON_OPTS { NULL }, }
Definition at line 4193 of file mpegvideo_enc.c.
const AVClass h263p_class [static] |
Initial value:
{ .class_name = "H.263p encoder", .item_name = av_default_item_name, .option = h263p_options, .version = LIBAVUTIL_VERSION_INT, }
Definition at line 4229 of file mpegvideo_enc.c.
const AVOption h263p_options[] [static] |
Initial value:
{ { "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}, FF_MPV_COMMON_OPTS { NULL }, }
Definition at line 4221 of file mpegvideo_enc.c.