📄 mpegvideo.h
字号:
int mjpeg_data_only_frames; ///< frames only with SOI, SOS and EOI markers /* MSMPEG4 specific */ int mv_table_index; int rl_table_index; int rl_chroma_table_index; int dc_table_index; int use_skip_mb_code; int slice_height; ///< in macroblocks int first_slice_line; ///< used in mpeg4 too to handle resync markers int flipflop_rounding; 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 fake_picture_number; ///< picture number at the bitstream frame rate 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 /* 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 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 */ /* These are explained on avcodec.h */ int rtp_mode; int rtp_payload_size; void (*rtp_callback)(void *data, int size, int packet_number); 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)[6][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)(struct MpegEncContext *s, DCTELEM *block/*align 16*/, int n, int qscale); void (*dct_unquantize_mpeg2)(struct MpegEncContext *s, DCTELEM *block/*align 16*/, int n, int qscale); void (*dct_unquantize_h263)(struct MpegEncContext *s, DCTELEM *block/*align 16*/, int n, int qscale); void (*dct_unquantize)(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);} MpegEncContext;int DCT_common_init(MpegEncContext *s);int MPV_common_init(MpegEncContext *s);void MPV_common_end(MpegEncContext *s);void MPV_decode_mb(MpegEncContext *s, DCTELEM block[6][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);#ifdef HAVE_MMXvoid MPV_common_init_mmx(MpegEncContext *s);#endif#ifdef ARCH_ALPHAvoid MPV_common_init_axp(MpegEncContext *s);#endif#ifdef HAVE_MLIBvoid MPV_common_init_mlib(MpegEncContext *s);#endif#ifdef HAVE_MMIvoid MPV_common_init_mmi(MpegEncContext *s);#endif#ifdef ARCH_ARMV4Lvoid MPV_common_init_armv4l(MpegEncContext *s);#endif#ifdef ARCH_POWERPCvoid MPV_common_init_ppc(MpegEncContext *s);#endifextern void (*draw_edges)(uint8_t *buf, int wrap, int width, int height, int w);void ff_copy_bits(PutBitContext *pb, uint8_t *src, int length);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);#define END_NOT_FOUND -100int ff_combine_frame( MpegEncContext *s, int next, uint8_t **buf, int *buf_size);void ff_mpeg_flush(AVCodecContext *avctx);void ff_print_debug_info(MpegEncContext *s, Picture *pict);void ff_write_quant_matrix(PutBitContext *pb, int16_t *matrix);int ff_find_unused_picture(MpegEncContext *s, int shared);void ff_denoise_dct(MpegEncContext *s, DCTELEM *block);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);extern enum PixelFormat ff_yuv420p_list[2];void ff_init_block_index(MpegEncContext *s);static inline void ff_update_block_index(MpegEncContext *s){ 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]+= 16; s->dest[1]+= 8; s->dest[2]+= 8;}static inline int get_bits_diff(MpegEncContext *s){ const int bits= get_bit_count(&s->pb); const int last= s->last_bits; s->last_bits = bits; return bits - last;}/* 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_b_mvs(MpegEncContext * s, int16_t (*mv_table)[2], int f_code, int type);void ff_init_me(MpegEncContext *s);int ff_pre_estimate_p_frame_motion(MpegEncContext * s, int mb_x, int mb_y);/* mpeg12.c */extern const int16_t ff_mpeg1_default_intra_matrix[64];extern const int16_t ff_mpeg1_default_non_intra_matrix[64];extern uint8_t ff_mpeg1_dc_scale_table[128];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);/** RLTable. */typedef struct RLTable { int n; ///< number of entries of table_vlc minus 1 int last; ///< number of values for last = 0 const uint16_t (*table_vlc)[2]; const int8_t *table_run; const int8_t *table_level; uint8_t *index_run[2]; ///< encoding only int8_t *max_level[2]; ///< encoding & decoding int8_t *max_run[2]; ///< encoding & decoding VLC vlc; ///< decoding only deprected FIXME remove RL_VLC_ELEM *rl_vlc[32]; ///< decoding only } RLTable;void init_rl(RLTable *rl);void init_vlc_rl(RLTable *rl);static inline int get_rl_index(const RLTable *rl, int last, int run, int level){ int index; index = rl->index_run[last][run]; if (index >= rl->n) return rl->n; if (level > rl->max_level[last][run]) return rl->n; return index + level - 1;}extern uint8_t ff_mpeg4_y_dc_scale_table[32];extern uint8_t ff_mpeg4_c_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];int ff_h263_decode_init(AVCodecContext *avctx);int ff_h263_decode_frame(AVCodecContext *avctx, void *data, int *data_size, 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);int h263_encode_gob_header(MpegEncContext * s, int mb_line);int16_t *h263_pred_motion(MpegEncContext * s, int block, int *px, int *py);void mpeg4_pred_ac(MpegEncContext * s, DCTELEM *block, int n, int dir);void ff_set_mpeg4_time(MpegEncContext * s, int picture_number);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);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 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);int ff_mpeg4_set_direct_mv(MpegEncContext *s, int mx, int my);inline int ff_h263_round_chroma(int x);/* rv10.c */void rv10_encode_picture_header(MpegEncContext *s, int picture_number);int rv_decode_dc(MpegEncContext *s, int n);/* 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);/* mjpeg.c */int mjpeg_init(MpegEncContext *s);void mjpeg_close(MpegEncContext *s);void mjpeg_encode_mb(MpegEncContext *s, DCTELEM block[6][64]);void mjpeg_picture_header(MpegEncContext *s);void mjpeg_picture_trailer(MpegEncContext *s);/* rate control */int ff_rate_control_init(MpegEncContext *s);float ff_rate_estimate_qscale(MpegEncContext *s);void ff_write_pass1_stats(MpegEncContext *s);void ff_rate_control_uninit(MpegEncContext *s);double ff_eval(char *s, double *const_value, const char **const_name, double (**func1)(void *, double), const char **func1_name, double (**func2)(void *, double, double), char **func2_name, void *opaque);#endif /* AVCODEC_MPEGVIDEO_H */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -