📄 mpegvideo.h
字号:
int msmpeg4_version; ///< 0=not msmpeg4, 1=mp41, 2=mp42, 3=mp43/divx3 4=wmv1/7 5=wmv2/8 int per_mb_rl_table; int esc3_level_length; int esc3_run_length; /** [mb_intra][isChroma][level][run][last] */ int (*ac_stats)[2][MAX_LEVEL+1][MAX_RUN+1][2]; int inter_intra_pred; int mspel; /* decompression specific */ GetBitContext gb; /* Mpeg1 specific */ int gop_picture_number; ///< index of the first picture of a GOP based on fake_pic_num & mpeg1 specific int last_mv_dir; ///< last mv_dir, used for b frame encoding int broken_link; ///< no_output_of_prior_pics_flag uint8_t *vbv_delay_ptr; ///< pointer to vbv_delay in the bitstream /* MPEG2 specific - I wish I had not to support this mess. */ int progressive_sequence; int mpeg_f_code[2][2]; int picture_structure;/* picture type */#define PICT_TOP_FIELD 1#define PICT_BOTTOM_FIELD 2#define PICT_FRAME 3 int intra_dc_precision; int frame_pred_frame_dct; int top_field_first; int concealment_motion_vectors; int q_scale_type; int intra_vlc_format; int alternate_scan; int repeat_first_field; int chroma_420_type; int chroma_format;#define CHROMA_420 1#define CHROMA_422 2#define CHROMA_444 3 int chroma_x_shift;//depend on pix_format, that depend on chroma_format int chroma_y_shift; int progressive_frame; int full_pel[2]; int interlaced_dct; int first_slice; int first_field; ///< is 1 for the first field of a field picture 0 otherwise /* RTP specific */ int rtp_mode; uint8_t *ptr_lastgob; int swap_uv;//vcr2 codec is mpeg2 varint with UV swaped short * pblocks[12]; DCTELEM (*block)[64]; ///< points to one of the following blocks DCTELEM (*blocks)[8][64]; // for HQ mode we need to keep the best block int (*decode_mb)(struct MpegEncContext *s, DCTELEM block[6][64]); // used by some codecs to avoid a switch()#define SLICE_OK 0#define SLICE_ERROR -1#define SLICE_END -2 ///<end marker found#define SLICE_NOEND -3 ///<no end marker or error found but mb count exceeded void (*dct_unquantize_mpeg1_intra)(struct MpegEncContext *s, DCTELEM *block/*align 16*/, int n, int qscale); void (*dct_unquantize_mpeg1_inter)(struct MpegEncContext *s, DCTELEM *block/*align 16*/, int n, int qscale); void (*dct_unquantize_mpeg2_intra)(struct MpegEncContext *s, DCTELEM *block/*align 16*/, int n, int qscale); void (*dct_unquantize_mpeg2_inter)(struct MpegEncContext *s, DCTELEM *block/*align 16*/, int n, int qscale); void (*dct_unquantize_h263_intra)(struct MpegEncContext *s, DCTELEM *block/*align 16*/, int n, int qscale); void (*dct_unquantize_h263_inter)(struct MpegEncContext *s, DCTELEM *block/*align 16*/, int n, int qscale); void (*dct_unquantize_h261_intra)(struct MpegEncContext *s, DCTELEM *block/*align 16*/, int n, int qscale); void (*dct_unquantize_h261_inter)(struct MpegEncContext *s, DCTELEM *block/*align 16*/, int n, int qscale); void (*dct_unquantize_intra)(struct MpegEncContext *s, // unquantizer to use (mpeg4 can use both) DCTELEM *block/*align 16*/, int n, int qscale); void (*dct_unquantize_inter)(struct MpegEncContext *s, // unquantizer to use (mpeg4 can use both) DCTELEM *block/*align 16*/, int n, int qscale); int (*dct_quantize)(struct MpegEncContext *s, DCTELEM *block/*align 16*/, int n, int qscale, int *overflow); int (*fast_dct_quantize)(struct MpegEncContext *s, DCTELEM *block/*align 16*/, int n, int qscale, int *overflow); void (*denoise_dct)(struct MpegEncContext *s, DCTELEM *block);} MpegEncContext;void MPV_decode_defaults(MpegEncContext *s);int MPV_common_init(MpegEncContext *s);void MPV_common_end(MpegEncContext *s);void MPV_decode_mb(MpegEncContext *s, DCTELEM block[12][64]);int MPV_frame_start(MpegEncContext *s, AVCodecContext *avctx);void MPV_frame_end(MpegEncContext *s);int MPV_encode_init(AVCodecContext *avctx);int MPV_encode_end(AVCodecContext *avctx);int MPV_encode_picture(AVCodecContext *avctx, unsigned char *buf, int buf_size, void *data);void MPV_common_init_mmx(MpegEncContext *s);void MPV_common_init_axp(MpegEncContext *s);void MPV_common_init_mlib(MpegEncContext *s);void MPV_common_init_mmi(MpegEncContext *s);void MPV_common_init_armv4l(MpegEncContext *s);void MPV_common_init_altivec(MpegEncContext *s);extern void (*draw_edges)(uint8_t *buf, int wrap, int width, int height, int w);void ff_clean_intra_table_entries(MpegEncContext *s);void ff_init_scantable(uint8_t *, ScanTable *st, const uint8_t *src_scantable);void ff_draw_horiz_band(MpegEncContext *s, int y, int h);void ff_emulated_edge_mc(uint8_t *buf, uint8_t *src, int linesize, int block_w, int block_h, int src_x, int src_y, int w, int h);void ff_mpeg_flush(AVCodecContext *avctx);void ff_print_debug_info(MpegEncContext *s, AVFrame *pict);void ff_write_quant_matrix(PutBitContext *pb, uint16_t *matrix);int ff_find_unused_picture(MpegEncContext *s, int shared);void ff_denoise_dct(MpegEncContext *s, DCTELEM *block);void ff_update_duplicate_context(MpegEncContext *dst, MpegEncContext *src);const uint8_t *ff_find_start_code(const uint8_t *p, const uint8_t *end, uint32_t *state);void ff_er_frame_start(MpegEncContext *s);void ff_er_frame_end(MpegEncContext *s);void ff_er_add_slice(MpegEncContext *s, int startx, int starty, int endx, int endy, int status);int ff_dct_common_init(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);void ff_init_block_index(MpegEncContext *s);static inline void ff_update_block_index(MpegEncContext *s){ const int block_size= 8>>s->avctx->lowres; s->block_index[0]+=2; s->block_index[1]+=2; s->block_index[2]+=2; s->block_index[3]+=2; s->block_index[4]++; s->block_index[5]++; s->dest[0]+= 2*block_size; s->dest[1]+= block_size; s->dest[2]+= block_size;}static inline int get_bits_diff(MpegEncContext *s){ const int bits= put_bits_count(&s->pb); const int last= s->last_bits; s->last_bits = bits; return bits - last;}static inline int ff_h263_round_chroma(int x){ static const uint8_t h263_chroma_roundtab[16] = { // 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, }; return h263_chroma_roundtab[x & 0xf] + (x >> 3);}/* motion_est.c */void ff_estimate_p_frame_motion(MpegEncContext * s, int mb_x, int mb_y);void ff_estimate_b_frame_motion(MpegEncContext * s, int mb_x, int mb_y);int ff_get_best_fcode(MpegEncContext * s, int16_t (*mv_table)[2], int type);void ff_fix_long_p_mvs(MpegEncContext * s);void ff_fix_long_mvs(MpegEncContext * s, uint8_t *field_select_table, int field_select, int16_t (*mv_table)[2], int f_code, int type, int truncate);void ff_init_me(MpegEncContext *s);int ff_pre_estimate_p_frame_motion(MpegEncContext * s, int mb_x, int mb_y);int ff_epzs_motion_search(MpegEncContext * s, int *mx_ptr, int *my_ptr, int P[10][2], int src_index, int ref_index, int16_t (*last_mv)[2], int ref_mv_scale, int size, int h);int ff_get_mb_score(MpegEncContext * s, int mx, int my, int src_index, int ref_index, int size, int h, int add_rate);/* mpeg12.c */extern const uint16_t ff_mpeg1_default_intra_matrix[64];extern const uint16_t ff_mpeg1_default_non_intra_matrix[64];extern const uint8_t ff_mpeg1_dc_scale_table[128];extern const AVRational ff_frame_rate_tab[];void mpeg1_encode_picture_header(MpegEncContext *s, int picture_number);void mpeg1_encode_mb(MpegEncContext *s, DCTELEM block[6][64], int motion_x, int motion_y);void ff_mpeg1_encode_init(MpegEncContext *s);void ff_mpeg1_encode_slice_header(MpegEncContext *s);void ff_mpeg1_clean_buffers(MpegEncContext *s);int ff_mpeg1_find_frame_end(ParseContext *pc, const uint8_t *buf, int buf_size);#include "rl.h"extern const uint8_t ff_mpeg4_y_dc_scale_table[32];extern const uint8_t ff_mpeg4_c_dc_scale_table[32];extern const uint8_t ff_aic_dc_scale_table[32];extern const int16_t ff_mpeg4_default_intra_matrix[64];extern const int16_t ff_mpeg4_default_non_intra_matrix[64];extern const uint8_t ff_h263_chroma_qscale_table[32];extern const uint8_t ff_h263_loop_filter_strength[32];/* h261.c */void ff_h261_loop_filter(MpegEncContext *s);void ff_h261_reorder_mb_index(MpegEncContext* s);void ff_h261_encode_mb(MpegEncContext *s, DCTELEM block[6][64], int motion_x, int motion_y);void ff_h261_encode_picture_header(MpegEncContext * s, int picture_number);void ff_h261_encode_init(MpegEncContext *s);int ff_h261_get_picture_format(int width, int height);/* h263.c, h263dec.c */int ff_h263_decode_init(AVCodecContext *avctx);int ff_h263_decode_frame(AVCodecContext *avctx, void *data, int *data_size, const uint8_t *buf, int buf_size);int ff_h263_decode_end(AVCodecContext *avctx);void h263_encode_mb(MpegEncContext *s, DCTELEM block[6][64], int motion_x, int motion_y);void mpeg4_encode_mb(MpegEncContext *s, DCTELEM block[6][64], int motion_x, int motion_y);void h263_encode_picture_header(MpegEncContext *s, int picture_number);void ff_flv_encode_picture_header(MpegEncContext *s, int picture_number);void h263_encode_gob_header(MpegEncContext * s, int mb_line);int16_t *h263_pred_motion(MpegEncContext * s, int block, int dir, int *px, int *py);void mpeg4_pred_ac(MpegEncContext * s, DCTELEM *block, int n, int dir);void ff_set_mpeg4_time(MpegEncContext * s);void mpeg4_encode_picture_header(MpegEncContext *s, int picture_number);void h263_encode_init(MpegEncContext *s);void h263_decode_init_vlc(MpegEncContext *s);int h263_decode_picture_header(MpegEncContext *s);int ff_h263_decode_gob_header(MpegEncContext *s);int ff_mpeg4_decode_picture_header(MpegEncContext * s, GetBitContext *gb);void ff_h263_update_motion_val(MpegEncContext * s);void ff_h263_loop_filter(MpegEncContext * s);void ff_set_qscale(MpegEncContext * s, int qscale);int ff_h263_decode_mba(MpegEncContext *s);void ff_h263_encode_mba(MpegEncContext *s);int intel_h263_decode_picture_header(MpegEncContext *s);int flv_h263_decode_picture_header(MpegEncContext *s);int ff_h263_decode_mb(MpegEncContext *s, DCTELEM block[6][64]);int ff_mpeg4_decode_mb(MpegEncContext *s, DCTELEM block[6][64]);int h263_get_picture_format(int width, int height);void ff_mpeg4_encode_video_packet_header(MpegEncContext *s);void ff_mpeg4_clean_buffers(MpegEncContext *s);void ff_mpeg4_stuffing(PutBitContext * pbc);void ff_mpeg4_init_partitions(MpegEncContext *s);void ff_mpeg4_merge_partitions(MpegEncContext *s);void ff_clean_mpeg4_qscales(MpegEncContext *s);void ff_clean_h263_qscales(MpegEncContext *s);int ff_mpeg4_decode_partitions(MpegEncContext *s);int ff_mpeg4_get_video_packet_prefix_length(MpegEncContext *s);int ff_h263_resync(MpegEncContext *s);int ff_h263_get_gob_height(MpegEncContext *s);void ff_mpeg4_init_direct_mv(MpegEncContext *s);int ff_mpeg4_set_direct_mv(MpegEncContext *s, int mx, int my);void ff_h263_encode_motion(MpegEncContext * s, int val, int f_code);/* rv10.c */void rv10_encode_picture_header(MpegEncContext *s, int picture_number);int rv_decode_dc(MpegEncContext *s, int n);void rv20_encode_picture_header(MpegEncContext *s, int picture_number);/* msmpeg4.c */void msmpeg4_encode_picture_header(MpegEncContext * s, int picture_number);void msmpeg4_encode_ext_header(MpegEncContext * s);void msmpeg4_encode_mb(MpegEncContext * s, DCTELEM block[6][64], int motion_x, int motion_y);int msmpeg4_decode_picture_header(MpegEncContext * s);int msmpeg4_decode_ext_header(MpegEncContext * s, int buf_size);int ff_msmpeg4_decode_init(MpegEncContext *s);void ff_msmpeg4_encode_init(MpegEncContext *s);int ff_wmv2_decode_picture_header(MpegEncContext * s);int ff_wmv2_decode_secondary_picture_header(MpegEncContext * s);void ff_wmv2_add_mb(MpegEncContext *s, DCTELEM block[6][64], uint8_t *dest_y, uint8_t *dest_cb, uint8_t *dest_cr);void ff_mspel_motion(MpegEncContext *s, uint8_t *dest_y, uint8_t *dest_cb, uint8_t *dest_cr, uint8_t **ref_picture, op_pixels_func (*pix_op)[4], int motion_x, int motion_y, int h);int ff_wmv2_encode_picture_header(MpegEncContext * s, int picture_number);void ff_wmv2_encode_mb(MpegEncContext * s, DCTELEM block[6][64], int motion_x, int motion_y);#endif /* FFMPEG_MPEGVIDEO_H */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -