|
|
@@ -224,9 +224,6 @@ typedef struct MpegEncContext { |
|
|
|
int stream_codec_tag; ///< internal stream_codec_tag upper case converted from avctx stream_codec_tag |
|
|
|
/* the following fields are managed internally by the encoder */ |
|
|
|
|
|
|
|
/** bit output */ |
|
|
|
PutBitContext pb; |
|
|
|
|
|
|
|
/* sequence parameters */ |
|
|
|
int context_initialized; |
|
|
|
int input_picture_number; ///< used to set pic->display_picture_number, should not be used for/by anything else |
|
|
@@ -247,6 +244,23 @@ typedef struct MpegEncContext { |
|
|
|
Picture **input_picture; ///< next pictures on display order for encoding |
|
|
|
Picture **reordered_input_picture; ///< pointer to the next pictures in codedorder for encoding |
|
|
|
|
|
|
|
int y_dc_scale, c_dc_scale; |
|
|
|
int ac_pred; |
|
|
|
int block_last_index[12]; ///< last non zero coefficient in block |
|
|
|
int h263_aic; ///< Advanded INTRA Coding (AIC) |
|
|
|
|
|
|
|
/* scantables */ |
|
|
|
ScanTable inter_scantable; ///< if inter == intra then intra should be used to reduce tha cache usage |
|
|
|
ScanTable intra_scantable; |
|
|
|
ScanTable intra_h_scantable; |
|
|
|
ScanTable intra_v_scantable; |
|
|
|
|
|
|
|
/* WARNING: changes above this line require updates to hardcoded |
|
|
|
* offsets used in asm. */ |
|
|
|
|
|
|
|
/** bit output */ |
|
|
|
PutBitContext pb; |
|
|
|
|
|
|
|
int start_mb_y; ///< start mb_y of this thread (so current thread should process start_mb_y <= row < end_mb_y) |
|
|
|
int end_mb_y; ///< end mb_y of this thread (so current thread should process start_mb_y <= row < end_mb_y) |
|
|
|
struct MpegEncContext *thread_context[MAX_THREADS]; |
|
|
@@ -283,7 +297,6 @@ typedef struct MpegEncContext { |
|
|
|
int16_t *dc_val_base; |
|
|
|
int16_t *dc_val[3]; ///< used for mpeg4 DC prediction, all 3 arrays must be continuous |
|
|
|
int16_t dc_cache[4*5]; |
|
|
|
int y_dc_scale, c_dc_scale; |
|
|
|
const uint8_t *y_dc_scale_table; ///< qscale -> y_dc_scale table |
|
|
|
const uint8_t *c_dc_scale_table; ///< qscale -> c_dc_scale table |
|
|
|
const uint8_t *chroma_qscale_table; ///< qscale -> chroma_qscale (h263) |
|
|
@@ -291,7 +304,6 @@ typedef struct MpegEncContext { |
|
|
|
uint8_t *coded_block; ///< used for coded block pattern prediction (msmpeg4v3, wmv1) |
|
|
|
int16_t (*ac_val_base)[16]; |
|
|
|
int16_t (*ac_val[3])[16]; ///< used for for mpeg4 AC prediction, all 3 arrays must be continuous |
|
|
|
int ac_pred; |
|
|
|
uint8_t *prev_pict_types; ///< previous picture types in bitstream order, used for mb skip |
|
|
|
#define PREV_PICT_TYPES_BUFFER_SIZE 256 |
|
|
|
int mb_skipped; ///< MUST BE SET only during DECODING |
|
|
@@ -434,12 +446,6 @@ typedef struct MpegEncContext { |
|
|
|
/** identical to the above but for MMX & these are not permutated, second 64 entries are bias*/ |
|
|
|
uint16_t (*q_intra_matrix16)[2][64]; |
|
|
|
uint16_t (*q_inter_matrix16)[2][64]; |
|
|
|
int block_last_index[12]; ///< last non zero coefficient in block |
|
|
|
/* scantables */ |
|
|
|
ScanTable intra_scantable; |
|
|
|
ScanTable intra_h_scantable; |
|
|
|
ScanTable intra_v_scantable; |
|
|
|
ScanTable inter_scantable; ///< if inter == intra then intra should be used to reduce tha cache usage |
|
|
|
|
|
|
|
/* noise reduction */ |
|
|
|
int (*dct_error_sum)[64]; |
|
|
@@ -495,7 +501,6 @@ typedef struct MpegEncContext { |
|
|
|
|
|
|
|
/* H.263+ specific */ |
|
|
|
int umvplus; ///< == H263+ && unrestricted_mv |
|
|
|
int h263_aic; ///< Advanded INTRA Coding (AIC) |
|
|
|
int h263_aic_dir; ///< AIC direction: 0 = left, 1 = top |
|
|
|
int h263_slice_structured; |
|
|
|
int alt_inter_vlc; ///< alternative inter vlc |
|
|
|