|
FFmpeg
|
#include "config_components.h"#include <assert.h>#include <stdint.h>#include "libavutil/emms.h"#include "libavutil/internal.h"#include "libavutil/intmath.h"#include "libavutil/mathematics.h"#include "libavutil/mem.h"#include "libavutil/mem_internal.h"#include "libavutil/opt.h"#include "libavutil/thread.h"#include "avcodec.h"#include "encode.h"#include "idctdsp.h"#include "mpeg12data.h"#include "mpeg12enc.h"#include "mpegvideo.h"#include "mpegvideodata.h"#include "mpegvideoenc.h"#include "h261enc.h"#include "h263.h"#include "h263data.h"#include "h263enc.h"#include "mjpegenc_common.h"#include "mathops.h"#include "mpegutils.h"#include "mpegvideo_unquantize.h"#include "mjpegenc.h"#include "speedhqenc.h"#include "msmpeg4enc.h"#include "pixblockdsp.h"#include "qpeldsp.h"#include "faandct.h"#include "aandcttab.h"#include "mpeg4video.h"#include "mpeg4videodata.h"#include "mpeg4videoenc.h"#include "internal.h"#include "bytestream.h"#include "rv10enc.h"#include "libavutil/refstruct.h"#include <limits.h>#include "sp5x.h"Go to the source code of this file.
Data Structures | |
| struct | MBBackup |
Macros | |
| #define | QUANT_BIAS_SHIFT 8 |
| #define | QMAT_SHIFT_MMX 16 |
| #define | QMAT_SHIFT 21 |
| #define | COPY(a) dst->a = src->a |
| #define | ALLOCZ_ARRAYS(p, mult, numb) ((p) = av_calloc(numb, mult * sizeof(*(p)))) |
| #define | INTERLACED_DCT(s) |
| #define | COPY_CONTEXT(BEFORE, AFTER, DST_TYPE, SRC_TYPE) |
| #define | ADD(field) dst->field += src->field; |
| #define | MERGE(field) dst->field += src->field; src->field=0 |
Functions | |
| static int | encode_picture (MPVMainEncContext *const s, const AVPacket *pkt) |
| static int | dct_quantize_refine (MPVEncContext *const s, int16_t *block, int16_t *weight, int16_t *orig, int n, int qscale) |
| static int | sse_mb (MPVEncContext *const s) |
| static int | dct_quantize_c (MPVEncContext *const s, int16_t *block, int n, int qscale, int *overflow) |
| static int | dct_quantize_trellis_c (MPVEncContext *const s, int16_t *block, int n, int qscale, int *overflow) |
| void | ff_convert_matrix (MPVEncContext *const s, 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 (MPVMainEncContext *const m) |
| void | ff_write_quant_matrix (PutBitContext *pb, uint16_t *matrix) |
| static void | init_qscale_tab (MPVEncContext *const s) |
| init s->c.cur_pic.qscale_table from s->lambda_table More... | |
| static void | update_duplicate_context_after_me (MPVEncContext *const dst, const MPVEncContext *const src) |
| static av_cold void | mpv_encode_init_static (void) |
| static av_cold void | mpv_encode_defaults (MPVMainEncContext *const m) |
| Set the given MPVEncContext to defaults for encoding. More... | |
| av_cold void | ff_dct_encode_init (MPVEncContext *const s) |
| static av_cold void | init_unquantize (MPVEncContext *const s2, AVCodecContext *avctx) |
| static av_cold int | me_cmp_init (MPVMainEncContext *const m, AVCodecContext *avctx) |
| static av_cold int | init_matrices (MPVMainEncContext *const m, AVCodecContext *avctx) |
| static av_cold int | init_buffers (MPVMainEncContext *const m) |
| static av_cold int | init_slice_buffers (MPVMainEncContext *const m) |
| av_cold int | ff_mpv_encode_init (AVCodecContext *avctx) |
| av_cold int | ff_mpv_encode_end (AVCodecContext *avctx) |
| static void | put_dct (MPVEncContext *const s, int16_t *block, int i, uint8_t *dest, int line_size, int qscale) |
| static void | add_dequant_dct (MPVEncContext *const s, int16_t *block, int i, uint8_t *dest, int line_size, int qscale) |
| static void | mpv_reconstruct_mb (MPVEncContext *const s, int16_t block[12][64]) |
| Performs dequantization and IDCT (if necessary) More... | |
| static int | get_sae (const uint8_t *src, int ref, int stride) |
| static int | get_intra_count (MPVEncContext *const s, const uint8_t *src, const uint8_t *ref, int stride) |
| static int | prepare_picture (MPVEncContext *const s, AVFrame *f, const AVFrame *props_frame) |
| Allocates new buffers for an AVFrame and copies the properties from another AVFrame. More... | |
| static int | load_input_picture (MPVMainEncContext *const m, const AVFrame *pic_arg) |
| static int | skip_check (MPVMainEncContext *const m, const MPVPicture *p, const MPVPicture *ref) |
| static int | encode_frame (AVCodecContext *c, const AVFrame *frame, AVPacket *pkt) |
| static int | estimate_best_b_count (MPVMainEncContext *const m) |
| static int | set_bframe_chain_length (MPVMainEncContext *const m) |
| Determines whether an input picture is discarded or not and if not determines the length of the next chain of B frames and moves these pictures (including the P frame) into reordered_input_picture. More... | |
| static int | select_input_picture (MPVMainEncContext *const m) |
| static void | frame_end (MPVMainEncContext *const m) |
| static void | update_noise_reduction (MPVMainEncContext *const m) |
| static void | frame_start (MPVMainEncContext *const m) |
| int | ff_mpv_encode_picture (AVCodecContext *avctx, AVPacket *pkt, const AVFrame *pic_arg, int *got_packet) |
| static void | dct_single_coeff_elimination (MPVEncContext *const s, int n, int threshold) |
| static void | clip_coeffs (const MPVEncContext *const s, int16_t block[], int last_index) |
| static void | get_visual_weight (int16_t *weight, const uint8_t *ptr, int stride) |
| static av_always_inline void | encode_mb_internal (MPVEncContext *const s, int motion_x, int motion_y, int mb_block_height, int mb_block_width, int mb_block_count, int chroma_x_shift, int chroma_y_shift, int chroma_format) |
| static void | encode_mb (MPVEncContext *const s, int motion_x, int motion_y) |
| static void | encode_mb_hq (MPVEncContext *const s, MBBackup *const backup, MBBackup *const best, PutBitContext pb[2], PutBitContext pb2[2], PutBitContext tex_pb[2], int *dmin, int *next_block, int motion_x, int motion_y) |
| static int | sse (const MPVEncContext *const s, const uint8_t *src1, const 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 (MPVEncContext *const s) |
| static void | write_mb_info (MPVEncContext *const s) |
| static void | update_mb_info (MPVEncContext *const s, int startcode) |
| int | ff_mpv_reallocate_putbitbuffer (MPVEncContext *const s, size_t threshold, size_t size_increase) |
| static int | encode_thread (AVCodecContext *c, void *arg) |
| static void | merge_context_after_me (MPVEncContext *const dst, MPVEncContext *const src) |
| static void | merge_context_after_encode (MPVEncContext *const dst, MPVEncContext *const src) |
| static int | estimate_qp (MPVMainEncContext *const m, int dry_run) |
| static void | set_frame_distances (MPVEncContext *const s) |
| static void | denoise_dct (MPVEncContext *const s, int16_t block[]) |
| static void | build_basis (uint8_t *perm) |
| void | ff_block_permute (int16_t *block, const uint8_t *permutation, const uint8_t *scantable, int last) |
| Permute an 8x8 block according to permutation. More... | |
Variables | |
| static uint8_t | default_fcode_tab [MAX_MV *2+1] |
| static const AVOption | mpv_generic_options [] |
| const AVClass | ff_mpv_enc_class |
| static int16_t | basis [64][64] |
The simplest mpeg encoder (well, it was the simplest!).
Definition in file mpegvideo_enc.c.
| #define QUANT_BIAS_SHIFT 8 |
Definition at line 80 of file mpegvideo_enc.c.
| #define QMAT_SHIFT_MMX 16 |
Definition at line 82 of file mpegvideo_enc.c.
| #define QMAT_SHIFT 21 |
Definition at line 83 of file mpegvideo_enc.c.
Definition at line 372 of file mpegvideo_enc.c.
| #define INTERLACED_DCT | ( | s | ) |
| #define COPY_CONTEXT | ( | BEFORE, | |
| AFTER, | |||
| DST_TYPE, | |||
| SRC_TYPE | |||
| ) |
Definition at line 2656 of file mpegvideo_enc.c.
Definition at line 3622 of file mpegvideo_enc.c.
|
static |
Definition at line 3712 of file mpegvideo_enc.c.
Referenced by ff_mpv_encode_picture().
|
static |
Definition at line 4296 of file mpegvideo_enc.c.
Referenced by encode_mb_internal().
|
static |
Definition at line 2797 of file mpegvideo_enc.c.
Referenced by encode_mb_hq().
|
static |
Definition at line 4648 of file mpegvideo_enc.c.
Referenced by encode_mb_internal(), and ff_dct_encode_init().
|
static |
Definition at line 3963 of file mpegvideo_enc.c.
Referenced by ff_dct_encode_init().
| void ff_convert_matrix | ( | MPVEncContext *const | s, |
| int(*) | qmat[64], | ||
| uint16_t(*) | qmat16[2][64], | ||
| const uint16_t * | quant_matrix, | ||
| int | bias, | ||
| int | qmin, | ||
| int | qmax, | ||
| int | intra | ||
| ) |
Definition at line 108 of file mpegvideo_enc.c.
Referenced by dnxhd_init_qmat(), encode_picture(), and init_matrices().
|
inlinestatic |
Definition at line 195 of file mpegvideo_enc.c.
Referenced by encode_picture(), and estimate_qp().
| void ff_write_quant_matrix | ( | PutBitContext * | pb, |
| uint16_t * | matrix | ||
| ) |
Definition at line 225 of file mpegvideo_enc.c.
Referenced by mpeg4_encode_vol_header().
|
static |
init s->c.cur_pic.qscale_table from s->lambda_table
Definition at line 241 of file mpegvideo_enc.c.
Referenced by estimate_qp().
|
static |
Definition at line 253 of file mpegvideo_enc.c.
Referenced by encode_picture().
|
static |
Definition at line 269 of file mpegvideo_enc.c.
Referenced by mpv_encode_defaults().
|
static |
Set the given MPVEncContext to defaults for encoding.
Definition at line 278 of file mpegvideo_enc.c.
Referenced by ff_mpv_encode_init().
| av_cold void ff_dct_encode_init | ( | MPVEncContext *const | s | ) |
Definition at line 298 of file mpegvideo_enc.c.
Referenced by dnxhd_encode_init(), and ff_mpv_encode_init().
|
static |
Definition at line 310 of file mpegvideo_enc.c.
Referenced by ff_mpv_encode_init().
|
static |
Definition at line 330 of file mpegvideo_enc.c.
Referenced by ff_mpv_encode_init().
|
static |
Definition at line 373 of file mpegvideo_enc.c.
Referenced by ff_mpv_encode_init().
|
static |
Definition at line 441 of file mpegvideo_enc.c.
Referenced by ff_mpv_encode_init().
|
static |
The number is supposed to match/exceed the cache-line size.
Definition at line 499 of file mpegvideo_enc.c.
Referenced by ff_mpv_encode_init().
| av_cold int ff_mpv_encode_init | ( | AVCodecContext * | avctx | ) |
Definition at line 553 of file mpegvideo_enc.c.
Referenced by encode_init(), h261_encode_init(), mjpeg_encode_init(), speedhq_encode_init(), and wmv2_encode_init().
| av_cold int ff_mpv_encode_end | ( | AVCodecContext * | avctx | ) |
Definition at line 1116 of file mpegvideo_enc.c.
Referenced by mjpeg_encode_close().
|
inlinestatic |
Definition at line 1152 of file mpegvideo_enc.c.
Referenced by mpv_reconstruct_mb().
|
inlinestatic |
Definition at line 1159 of file mpegvideo_enc.c.
Referenced by mpv_reconstruct_mb().
|
static |
Performs dequantization and IDCT (if necessary)
Definition at line 1172 of file mpegvideo_enc.c.
Referenced by encode_mb_hq(), and encode_thread().
|
static |
Definition at line 1240 of file mpegvideo_enc.c.
Referenced by get_intra_count().
|
static |
Definition at line 1254 of file mpegvideo_enc.c.
Referenced by set_bframe_chain_length().
|
static |
Allocates new buffers for an AVFrame and copies the properties from another AVFrame.
Definition at line 1281 of file mpegvideo_enc.c.
Referenced by load_input_picture(), and select_input_picture().
|
static |
Definition at line 1313 of file mpegvideo_enc.c.
Referenced by ff_mpv_encode_picture().
|
static |
Definition at line 1454 of file mpegvideo_enc.c.
Referenced by set_bframe_chain_length().
|
static |
Definition at line 1496 of file mpegvideo_enc.c.
Referenced by estimate_best_b_count().
|
static |
Definition at line 1517 of file mpegvideo_enc.c.
Referenced by set_bframe_chain_length().
|
static |
Determines whether an input picture is discarded or not and if not determines the length of the next chain of B frames and moves these pictures (including the P frame) into reordered_input_picture.
input_picture[0] is always NULL when exiting this function, even on error; reordered_input_picture[0] is always NULL when exiting this function on error.
Definition at line 1670 of file mpegvideo_enc.c.
Referenced by select_input_picture().
|
static |
Definition at line 1801 of file mpegvideo_enc.c.
Referenced by ff_mpv_encode_picture().
|
static |
Definition at line 1859 of file mpegvideo_enc.c.
Referenced by ff_mpv_encode_picture().
|
static |
Definition at line 1897 of file mpegvideo_enc.c.
Referenced by frame_start().
|
static |
Definition at line 1919 of file mpegvideo_enc.c.
Referenced by av_timecode_init(), cavs_decode_frame(), decode_dds1(), decode_dsw1(), decode_tsw1(), ff_mpv_encode_picture(), get_duration(), and scale_internal().
| int ff_mpv_encode_picture | ( | AVCodecContext * | avctx, |
| AVPacket * | pkt, | ||
| const AVFrame * | pic_arg, | ||
| int * | got_packet | ||
| ) |
Definition at line 1936 of file mpegvideo_enc.c.
|
inlinestatic |
Definition at line 2166 of file mpegvideo_enc.c.
Referenced by encode_mb_internal().
|
inlinestatic |
Definition at line 2222 of file mpegvideo_enc.c.
Referenced by encode_mb_internal().
|
static |
Definition at line 2256 of file mpegvideo_enc.c.
Referenced by encode_mb_internal().
|
static |
Definition at line 2280 of file mpegvideo_enc.c.
Referenced by encode_mb().
|
static |
Definition at line 2627 of file mpegvideo_enc.c.
Referenced by encode_mb_hq(), and encode_thread().
|
static |
Definition at line 2724 of file mpegvideo_enc.c.
Referenced by encode_thread().
|
static |
Definition at line 2775 of file mpegvideo_enc.c.
Referenced by block_sse(), calc_squared_error(), calc_squared_error_and_weight(), encode_thread(), ff_ac3dsp_set_downmix_x86(), ff_libwebp_get_frame(), ff_set_cmp(), ff_showcqt_init_x86(), ff_vp9dsp_init_16bpp_x86(), ff_vp9dsp_init_x86(), main(), run_psnr(), sse_16width_msa(), sse_4width_msa(), sse_8width_msa(), sse_mb(), and X264_frame().
|
static |
Definition at line 2823 of file mpegvideo_enc.c.
Referenced by encode_picture().
|
static |
Definition at line 2841 of file mpegvideo_enc.c.
Referenced by encode_picture().
|
static |
Definition at line 2866 of file mpegvideo_enc.c.
Referenced by encode_picture().
|
static |
Definition at line 2888 of file mpegvideo_enc.c.
Referenced by encode_thread().
|
static |
Definition at line 2908 of file mpegvideo_enc.c.
Referenced by update_mb_info().
|
static |
Definition at line 2928 of file mpegvideo_enc.c.
Referenced by encode_thread().
| int ff_mpv_reallocate_putbitbuffer | ( | MPVEncContext *const | s, |
| size_t | threshold, | ||
| size_t | size_increase | ||
| ) |
Definition at line 2951 of file mpegvideo_enc.c.
Referenced by encode_thread(), and ff_mjpeg_encode_stuffing().
|
static |
Definition at line 2985 of file mpegvideo_enc.c.
Referenced by encode_picture().
|
static |
Definition at line 3623 of file mpegvideo_enc.c.
Referenced by encode_picture().
|
static |
Definition at line 3630 of file mpegvideo_enc.c.
Referenced by encode_picture().
|
static |
Definition at line 3658 of file mpegvideo_enc.c.
Referenced by encode_picture().
|
static |
Definition at line 3697 of file mpegvideo_enc.c.
Referenced by encode_picture().
|
inlinestatic |
Definition at line 3953 of file mpegvideo_enc.c.
Referenced by dct_quantize_c(), and dct_quantize_trellis_c().
|
static |
Definition at line 4277 of file mpegvideo_enc.c.
Referenced by dct_quantize_refine().
| void ff_block_permute | ( | int16_t * | block, |
| const uint8_t * | permutation, | ||
| const uint8_t * | scantable, | ||
| int | last | ||
| ) |
Permute an 8x8 block according to permutation.
| block | the block which will be permuted according to the given permutation vector |
| permutation | the permutation vector |
| last | the last non zero coefficient in scantable order, used to speed the permutation up |
| scantable | the used scantable, this is only used to speed the permutation up, the block is not (inverse) permutated to scantable order! |
Definition at line 4623 of file mpegvideo_enc.c.
Referenced by dct_quantize_c(), dnxhd_10bit_dct_quantize(), and dnxhd_10bit_dct_quantize_444().
|
static |
Definition at line 93 of file mpegvideo_enc.c.
Referenced by mpv_encode_defaults(), and mpv_encode_init_static().
|
static |
Definition at line 95 of file mpegvideo_enc.c.
| const AVClass ff_mpv_enc_class |
Definition at line 101 of file mpegvideo_enc.c.
|
static |
Definition at line 4275 of file mpegvideo_enc.c.
Referenced by add_8x8basis_c(), build_basis(), check_add_8x8basis(), dct_quantize_refine(), ff_tx_gen_split_radix_parity_revtab(), parity_revtab_generator(), and try_8x8basis_c().
1.8.17