#include "idctdsp.h"
#include "me_cmp.h"
#include "motion_est.h"
+#include "mpegpicture.h"
#include "mpegvideodsp.h"
#include "mpegvideoencdsp.h"
#include "pixblockdsp.h"
#include "put_bits.h"
#include "ratecontrol.h"
#include "parser.h"
+#include "mpegutils.h"
#include "mpeg12data.h"
#include "qpeldsp.h"
#include "thread.h"
#define FRAME_SKIPPED 100 ///< return value for header parsers if frame is not coded
-enum OutputFormat {
- FMT_MPEG1,
- FMT_H261,
- FMT_H263,
- FMT_MJPEG,
-};
-
#define MAX_FCODE 7
#define MAX_THREADS 32
-#define MAX_PICTURE_COUNT 36
#define MAX_B_FRAMES 16
#define INPLACE_OFFSET 16
-#define EDGE_WIDTH 16
-
/* Start codes. */
#define SEQ_END_CODE 0x000001b7
#define SEQ_START_CODE 0x000001b3
#define EXT_START_CODE 0x000001b5
#define USER_START_CODE 0x000001b2
-/**
- * Picture.
- */
-typedef struct Picture{
- struct AVFrame *f;
- ThreadFrame tf;
-
- AVBufferRef *qscale_table_buf;
- int8_t *qscale_table;
-
- AVBufferRef *motion_val_buf[2];
- int16_t (*motion_val[2])[2];
-
- AVBufferRef *mb_type_buf;
- uint32_t *mb_type; ///< types and macros are defined in mpegutils.h
-
- AVBufferRef *mbskip_table_buf;
- uint8_t *mbskip_table;
-
- AVBufferRef *ref_index_buf[2];
- int8_t *ref_index[2];
-
- AVBufferRef *mb_var_buf;
- uint16_t *mb_var; ///< Table for MB variances
-
- AVBufferRef *mc_mb_var_buf;
- uint16_t *mc_mb_var; ///< Table for motion compensated MB variances
-
- int alloc_mb_width; ///< mb_width used to allocate tables
- int alloc_mb_height; ///< mb_height used to allocate tables
-
- AVBufferRef *mb_mean_buf;
- uint8_t *mb_mean; ///< Table for MB luminance
-
- AVBufferRef *hwaccel_priv_buf;
- /**
- * hardware accelerator private data
- */
- void *hwaccel_picture_private;
-
- int field_picture; ///< whether or not the picture was encoded in separate fields
-
- int64_t mb_var_sum; ///< sum of MB variance for current frame
- int64_t mc_mb_var_sum; ///< motion compensated MB variance for current frame
-
- int b_frame_score;
- int needs_realloc; ///< Picture needs to be reallocated (eg due to a frame size change)
-
- int reference;
- int shared;
-
- uint64_t error[AV_NUM_DATA_POINTERS];
-} Picture;
-
/**
* 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 *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
+
+ ScratchpadContext sc;
int qscale; ///< QP
int chroma_qscale; ///< chroma QP
void ff_write_quant_matrix(PutBitContext *pb, uint16_t *matrix);
-int ff_find_unused_picture(AVCodecContext *avctx, Picture *picture, int shared);
int ff_update_duplicate_context(MpegEncContext *dst, MpegEncContext *src);
int ff_mpeg_update_thread_context(AVCodecContext *dst, const AVCodecContext *src);
void ff_set_qscale(MpegEncContext * s, int qscale);
op_pixels_func (*pix_op)[4],
qpel_mc_func (*qpix_op)[16]);
-/**
- * Allocate a Picture.
- * The pixels are allocated/set by calling get_buffer() if shared = 0.
- */
-int ff_alloc_picture(MpegEncContext *s, Picture *pic, int shared);
-
/**
* permute block according to permuatation.
* @param last last non zero element in scantable order
int ff_rv_decode_dc(MpegEncContext *s, int n);
void ff_rv20_encode_picture_header(MpegEncContext *s, int picture_number);
-int ff_mpeg_ref_picture(AVCodecContext *avctx, Picture *dst, Picture *src);
-void ff_mpeg_unref_picture(AVCodecContext *avctx, Picture *picture);
-void ff_free_picture_tables(Picture *pic);
-
-
#endif /* AVCODEC_MPEGVIDEO_H */