X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavcodec%2Fmpegvideo.h;h=d0f4bfdc6cd9384b337262f99795496ab84edceb;hb=581810f5024dbb9df8e794dc0f5beac30d3a5fd4;hp=e072aa7c338306e69b04d3e13368e59727df7c76;hpb=adbfc605f6bbe87b292c82cd1f5d4d974fa6b73c;p=ffmpeg diff --git a/libavcodec/mpegvideo.h b/libavcodec/mpegvideo.h index e072aa7c338..d0f4bfdc6cd 100644 --- a/libavcodec/mpegvideo.h +++ b/libavcodec/mpegvideo.h @@ -28,6 +28,7 @@ #ifndef AVCODEC_MPEGVIDEO_H #define AVCODEC_MPEGVIDEO_H +#include "avcodec.h" #include "dsputil.h" #include "get_bits.h" #include "put_bits.h" @@ -82,12 +83,13 @@ struct MpegEncContext; * Picture. */ typedef struct Picture{ - FF_COMMON_FRAME + struct AVFrame f; /** * halfpel luma planes. */ uint8_t *interpolated[3]; + int8_t *qscale_table_base; int16_t (*motion_val_base[2])[2]; uint32_t *mb_type_base; #define MB_TYPE_INTRA MB_TYPE_INTRA4x4 //default mb_type if there is just one type @@ -197,6 +199,7 @@ typedef struct MotionEstContext{ * MpegEncContext. */ typedef struct MpegEncContext { + AVClass *class; struct AVCodecContext *avctx; /* the following parameters must be initialized before encoding */ int width, height;///< picture size. must be a multiple of 16 @@ -232,7 +235,6 @@ typedef struct MpegEncContext { int picture_number; //FIXME remove, unclear definition int picture_in_gop_number; ///< 0-> first pic in gop, ... int b_frames_since_non_b; ///< used for encoding, relative to not yet reordered input - int64_t user_specified_pts;///< last non zero pts from AVFrame which was passed into avcodec_encode_video() int mb_width, mb_height; ///< number of MBs horizontally & vertically int mb_stride; ///< mb_width+1 used for some arrays to allow simple addressing of left & top MBs without sig11 int b8_stride; ///< 2*mb_width+1 used for some 8x8 block arrays to allow simple addressing @@ -259,6 +261,8 @@ typedef struct MpegEncContext { /* WARNING: changes above this line require updates to hardcoded * offsets used in asm. */ + int64_t user_specified_pts;///< last non zero pts from AVFrame which was passed into avcodec_encode_video() + /** bit output */ PutBitContext pb; @@ -295,7 +299,7 @@ typedef struct MpegEncContext { Picture *current_picture_ptr; ///< pointer to the current picture int picture_count; ///< number of allocated pictures (MAX_PICTURE_COUNT * avctx->thread_count) int picture_range_start, picture_range_end; ///< the part of picture that this context can allocate in - uint8_t *visualization_buffer[3]; //< temporary buffer vor MV visualization + uint8_t *visualization_buffer[3]; ///< temporary buffer vor MV visualization int last_dc[3]; ///< last DC values for MPEG1 int16_t *dc_val_base; int16_t *dc_val[3]; ///< used for mpeg4 DC prediction, all 3 arrays must be continuous @@ -315,8 +319,7 @@ typedef struct MpegEncContext { uint8_t *mbintra_table; ///< used to avoid setting {ac, dc, cbp}-pred stuff to zero on inter MB decoding uint8_t *cbp_table; ///< used to store cbp, ac_pred for partitioned decoding uint8_t *pred_dir_table; ///< used to store pred_dir for partitioned decoding - uint8_t *allocated_edge_emu_buffer; - uint8_t *edge_emu_buffer; ///< points into the middle of allocated_edge_emu_buffer + uint8_t *edge_emu_buffer; ///< temporary buffer for if MVs point to out-of-frame data uint8_t *rd_scratchpad; ///< scratchpad for rate distortion mb decision uint8_t *obmc_scratchpad; uint8_t *b_scratchpad; ///< scratchpad used for writing into write only buffers @@ -640,6 +643,8 @@ typedef struct MpegEncContext { int interlaced_dct; int first_slice; int first_field; ///< is 1 for the first field of a field picture 0 otherwise + int drop_frame_timecode; ///< timecode is in drop frame format. + int scan_offset; ///< reserve space for SVCD scan offset user data. /* RTP specific */ int rtp_mode;