28 #ifndef AVCODEC_MPEGVIDEO_H
29 #define AVCODEC_MPEGVIDEO_H
45 #include "libavutil/opt.h"
46 #include "libavutil/timecode.h"
48 #define FRAME_SKIPPED 100
57 #define MPEG_BUF_SIZE (16 * 1024)
59 #define QMAT_SHIFT_MMX 16
65 #define MAX_THREADS 32
66 #define MAX_PICTURE_COUNT 36
68 #define ME_MAP_SIZE 64
69 #define ME_MAP_SHIFT 3
70 #define ME_MAP_MV_BITS 11
72 #define MAX_MB_BYTES (30*16*16*3/8 + 120)
74 #define INPLACE_OFFSET 16
77 #define SEQ_END_CODE 0x000001b7
78 #define SEQ_START_CODE 0x000001b3
79 #define GOP_START_CODE 0x000001b8
80 #define PICTURE_START_CODE 0x00000100
81 #define SLICE_MIN_START_CODE 0x00000101
82 #define SLICE_MAX_START_CODE 0x000001af
83 #define EXT_START_CODE 0x000001b5
84 #define USER_START_CODE 0x000001b2
90 #define DELAYED_PIC_REF 4
134 #define MB_TYPE_INTRA MB_TYPE_INTRA4x4 //default mb_type if there is just one type
135 #define IS_INTRA4x4(a) ((a)&MB_TYPE_INTRA4x4)
136 #define IS_INTRA16x16(a) ((a)&MB_TYPE_INTRA16x16)
137 #define IS_PCM(a) ((a)&MB_TYPE_INTRA_PCM)
138 #define IS_INTRA(a) ((a)&7)
139 #define IS_INTER(a) ((a)&(MB_TYPE_16x16|MB_TYPE_16x8|MB_TYPE_8x16|MB_TYPE_8x8))
140 #define IS_SKIP(a) ((a)&MB_TYPE_SKIP)
141 #define IS_INTRA_PCM(a) ((a)&MB_TYPE_INTRA_PCM)
142 #define IS_INTERLACED(a) ((a)&MB_TYPE_INTERLACED)
143 #define IS_DIRECT(a) ((a)&MB_TYPE_DIRECT2)
144 #define IS_GMC(a) ((a)&MB_TYPE_GMC)
145 #define IS_16X16(a) ((a)&MB_TYPE_16x16)
146 #define IS_16X8(a) ((a)&MB_TYPE_16x8)
147 #define IS_8X16(a) ((a)&MB_TYPE_8x16)
148 #define IS_8X8(a) ((a)&MB_TYPE_8x8)
149 #define IS_SUB_8X8(a) ((a)&MB_TYPE_16x16) //note reused
150 #define IS_SUB_8X4(a) ((a)&MB_TYPE_16x8) //note reused
151 #define IS_SUB_4X8(a) ((a)&MB_TYPE_8x16) //note reused
152 #define IS_SUB_4X4(a) ((a)&MB_TYPE_8x8) //note reused
153 #define IS_ACPRED(a) ((a)&MB_TYPE_ACPRED)
154 #define IS_QUANT(a) ((a)&MB_TYPE_QUANT)
155 #define IS_DIR(a, part, list) ((a) & (MB_TYPE_P0L0<<((part)+2*(list))))
156 #define USES_LIST(a, list) ((a) & ((MB_TYPE_P0L0|MB_TYPE_P1L0)<<(2*(list))))
157 #define HAS_CBP(a) ((a)&MB_TYPE_CBP)
237 int *mx_ptr,
int *my_ptr,
int dmin,
238 int src_index,
int ref_index,
421 #define MV_DIR_FORWARD 1
422 #define MV_DIR_BACKWARD 2
425 #define MV_TYPE_16X16 0
426 #define MV_TYPE_8X8 1
427 #define MV_TYPE_16X8 2
428 #define MV_TYPE_FIELD 3
429 #define MV_TYPE_DMV 4
451 #define CANDIDATE_MB_TYPE_INTRA 0x01
452 #define CANDIDATE_MB_TYPE_INTER 0x02
453 #define CANDIDATE_MB_TYPE_INTER4V 0x04
454 #define CANDIDATE_MB_TYPE_SKIPPED 0x08
457 #define CANDIDATE_MB_TYPE_DIRECT 0x10
458 #define CANDIDATE_MB_TYPE_FORWARD 0x20
459 #define CANDIDATE_MB_TYPE_BACKWARD 0x40
460 #define CANDIDATE_MB_TYPE_BIDIR 0x80
462 #define CANDIDATE_MB_TYPE_INTER_I 0x100
463 #define CANDIDATE_MB_TYPE_FORWARD_I 0x200
464 #define CANDIDATE_MB_TYPE_BACKWARD_I 0x400
465 #define CANDIDATE_MB_TYPE_BIDIR_I 0x800
467 #define CANDIDATE_MB_TYPE_DIRECT0 0x1000
480 #define QUANT_BIAS_SHIFT 8
491 #define UNI_AC_ENC_INDEX(run,level) ((run)*128 + (level))
667 #define PICT_TOP_FIELD 1
668 #define PICT_BOTTOM_FIELD 2
709 #define SLICE_ERROR -1
711 #define SLICE_NOEND -3
750 #define REBASE_PICTURE(pic, new_ctx, old_ctx) \
751 ((pic && pic >= old_ctx->picture && \
752 pic < old_ctx->picture + MAX_PICTURE_COUNT) ? \
753 &new_ctx->picture[pic - old_ctx->picture] : NULL)
756 #define FF_MPV_FLAG_SKIP_RD 0x0001
757 #define FF_MPV_FLAG_STRICT_GOP 0x0002
758 #define FF_MPV_FLAG_QP_RD 0x0004
759 #define FF_MPV_FLAG_CBP_RD 0x0008
761 #define FF_MPV_OFFSET(x) offsetof(MpegEncContext, x)
762 #define FF_MPV_OPT_FLAGS (AV_OPT_FLAG_VIDEO_PARAM | AV_OPT_FLAG_ENCODING_PARAM)
763 #define FF_MPV_COMMON_OPTS \
764 { "mpv_flags", "Flags common for all mpegvideo-based encoders.", FF_MPV_OFFSET(mpv_flags), AV_OPT_TYPE_FLAGS, { .i64 = 0 }, INT_MIN, INT_MAX, FF_MPV_OPT_FLAGS, "mpv_flags" },\
765 { "skip_rd", "RD optimal MB level residual skipping", 0, AV_OPT_TYPE_CONST, { .i64 = FF_MPV_FLAG_SKIP_RD }, 0, 0, FF_MPV_OPT_FLAGS, "mpv_flags" },\
766 { "strict_gop", "Strictly enforce gop size", 0, AV_OPT_TYPE_CONST, { .i64 = FF_MPV_FLAG_STRICT_GOP }, 0, 0, FF_MPV_OPT_FLAGS, "mpv_flags" },\
767 { "qp_rd", "Use rate distortion optimization for qp selection", 0, AV_OPT_TYPE_CONST, { .i64 = FF_MPV_FLAG_QP_RD }, 0, 0, FF_MPV_OPT_FLAGS, "mpv_flags" },\
768 { "cbp_rd", "use rate distortion optimization for CBP", 0, AV_OPT_TYPE_CONST, { .i64 = FF_MPV_FLAG_CBP_RD }, 0, 0, FF_MPV_OPT_FLAGS, "mpv_flags" },\
769 { "luma_elim_threshold", "single coefficient elimination threshold for luminance (negative values also consider dc coefficient)",\
770 FF_MPV_OFFSET(luma_elim_threshold), AV_OPT_TYPE_INT, { .i64 = 0 }, INT_MIN, INT_MAX, FF_MPV_OPT_FLAGS },\
771 { "chroma_elim_threshold", "single coefficient elimination threshold for chrominance (negative values also consider dc coefficient)",\
772 FF_MPV_OFFSET(chroma_elim_threshold), AV_OPT_TYPE_INT, { .i64 = 0 }, INT_MIN, INT_MAX, FF_MPV_OPT_FLAGS },\
773 { "quantizer_noise_shaping", NULL, FF_MPV_OFFSET(quantizer_noise_shaping), AV_OPT_TYPE_INT, { .i64 = 0 }, 0, INT_MAX, FF_MPV_OPT_FLAGS },
777 #define FF_MPV_GENERIC_CLASS(name) \
778 static const AVClass name ## _class = {\
779 .class_name = #name " encoder",\
780 .item_name = av_default_item_name,\
781 .option = ff_mpv_generic_options,\
782 .version = LIBAVUTIL_VERSION_INT,\
840 const uint16_t *quant_matrix,
int bias,
int qmin,
int qmax,
int intra);
875 s->
dest[0]+= 2*block_size;
876 s->
dest[1]+= block_size;
877 s->
dest[2]+= block_size;
890 static const uint8_t h263_chroma_roundtab[16] = {
892 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1,
894 return h263_chroma_roundtab[x & 0xf] + (x >> 3);
905 int16_t (*mv_table)[2],
int f_code,
int type,
int truncate);
909 int P[10][2],
int src_index,
int ref_index, int16_t (*
last_mv)[2],
910 int ref_mv_scale,
int size,
int h);
912 int ref_index,
int size,
int h,
int add_rate);
920 int16_t
block[6][64],
921 int motion_x,
int motion_y);
939 int16_t
block[6][64],
940 int motion_x,
int motion_y);
951 int motion_x,
int motion_y,
int h);
954 int16_t
block[6][64],
955 int motion_x,
int motion_y);
int bitstream_buffer_size
uint8_t * scratchpad
data area for the ME algo, so that the ME does not need to malloc/free
av_cold void ff_mpeg1_encode_init(MpegEncContext *s)
int chroma_elim_threshold
int rv10_first_dc_coded[3]
int frame_bits
bits used for the current frame
int ff_mpeg_ref_picture(MpegEncContext *s, Picture *dst, Picture *src)
RateControlContext rc_context
contains stuff only accessed in ratecontrol.c
int16_t(* b_bidir_back_mv_table_base)[2]
void ff_init_block_index(MpegEncContext *s)
void ff_estimate_b_frame_motion(MpegEncContext *s, int mb_x, int mb_y)
ScanTable intra_v_scantable
void(* dct_unquantize_inter)(struct MpegEncContext *s, int16_t *block, int n, int qscale)
void ff_release_unused_pictures(MpegEncContext *s, int remove_current)
int time_increment_bits
number of bits to represent the fractional part of time
This structure describes decoded (raw) audio or video data.
int skip
set if ME is skipped for the current MB
int ff_alloc_picture(MpegEncContext *s, Picture *pic, int shared)
Allocate a Picture.
int16_t(* p_mv_table)[2]
MV table (1MV per MB) p-frame encoding.
uint8_t * rd_scratchpad
scratchpad for rate distortion mb decision
uint8_t * fcode_tab
smallest fcode needed for each MV
int start_mb_y
start mb_y of this thread (so current thread should process start_mb_y <= row < end_mb_y) ...
void ff_estimate_p_frame_motion(MpegEncContext *s, int mb_x, int mb_y)
const uint8_t * y_dc_scale_table
qscale -> y_dc_scale table
uint8_t * mb_mean
Table for MB luminance.
int vol_control_parameters
does the stream contain the low_delay flag, used to workaround buggy encoders
int sprite_warping_accuracy
int last_mv[2][2][2]
last MV, used for MV prediction in MPEG1 & B-frame MPEG4
int pre_pass
= 1 for the pre pass
av_cold int ff_dct_common_init(MpegEncContext *s)
av_cold int ff_MPV_common_init(MpegEncContext *s)
init common structure for both encoder and decoder.
void ff_MPV_report_decode_progress(MpegEncContext *s)
uint8_t * coded_block_base
int end_mb_y
end mb_y of this thread (so current thread should process start_mb_y <= row < end_mb_y) ...
uint16_t * mb_var
Table for MB variances.
uint16_t(* q_chroma_intra_matrix16)[2][64]
void ff_block_permute(int16_t *block, uint8_t *permutation, const uint8_t *scantable, int last)
Permute an 8x8 block.
uint16_t chroma_intra_matrix[64]
int broken_link
no_output_of_prior_pics_flag
void ff_MPV_motion(MpegEncContext *s, uint8_t *dest_y, uint8_t *dest_cb, uint8_t *dest_cr, int dir, uint8_t **ref_picture, op_pixels_func(*pix_op)[4], qpel_mc_func(*qpix_op)[16])
uint8_t * current_mv_penalty
int16_t(*[3] ac_val)[16]
used for mpeg4 AC prediction, all 3 arrays must be continuous
int v_edge_pos
horizontal / vertical position of the right/bottom edge (pixel replication)
int ff_MPV_encode_end(AVCodecContext *avctx)
int mjpeg_hsample[3]
horizontal sampling factors, default = {2, 1, 1}
uint16_t chroma_inter_matrix[64]
int msmpeg4_version
0=not msmpeg4, 1=mp41, 2=mp42, 3=mp43/divx3 4=wmv1/7 5=wmv2/8
int needs_realloc
Picture needs to be reallocated (eg due to a frame size change)
uint8_t * bitstream_buffer
void ff_MPV_common_init_ppc(MpegEncContext *s)
int obmc
overlapped block motion compensation
int ff_msmpeg4_decode_init(AVCodecContext *avctx)
int field_picture
whether or not the picture was encoded in separate fields
void ff_msmpeg4_encode_mb(MpegEncContext *s, int16_t block[6][64], int motion_x, int motion_y)
int scan_offset
reserve space for SVCD scan offset user data.
const uint8_t ff_h263_loop_filter_strength[32]
int16_t(*[2][2] p_field_mv_table)[2]
MV table (2MV per MB) interlaced p-frame encoding.
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)
int16_t(* p_mv_table_base)[2]
int min_qcoeff
minimum encodable coefficient
int real_sprite_warping_points
uint32_t * score_map
map to store the scores
int num_sprite_warping_points
int mpv_flags
flags set by private options
int mmco_reset
h264 MMCO_RESET set this 1. Reordering code must not mix pictures before and after MMCO_RESET...
uint8_t * intra_ac_vlc_length
int padding_bug_score
used to detect the VERY common padding bug in MPEG4
int mb_num
number of MBs of a picture
int t_frame
time distance of first I -> B, used for interlaced b frames
uint16_t sprite_traj[4][2]
sprite trajectory points
int time_base
time in seconds of last I,P,S Frame
int h263_aic
Advanded INTRA Coding (AIC)
int16_t(* b_back_mv_table)[2]
MV table (1MV per MB) backward mode b-frame encoding.
int encoding
true if we are encoding (vs decoding)
void(* dct_unquantize_h263_intra)(struct MpegEncContext *s, int16_t *block, int n, int qscale)
void(* dct_unquantize_intra)(struct MpegEncContext *s, int16_t *block, int n, int qscale)
av_cold void ff_MPV_common_init_axp(MpegEncContext *s)
int16_t(* b_back_mv_table_base)[2]
void ff_clean_intra_table_entries(MpegEncContext *s)
Clean dc, ac, coded_block for the current non-intra MB.
void(* dct_unquantize_h263_inter)(struct MpegEncContext *s, int16_t *block, int n, int qscale)
int skipdct
skip dct and code zero residual
int intra_dc_threshold
QP above whch the ac VLC should be used for intra dc.
int ref_poc[2][2][32]
h264 POCs of the frames/fields used as reference (FIXME need per slice)
int alloc_mb_width
mb_width used to allocate tables
int sprite_shift[2]
sprite shift [isChroma]
int picture_in_gop_number
0-> first pic in gop, ...
int long_ref
1->long term reference 0->short term reference
void ff_mpeg_draw_horiz_band(MpegEncContext *s, int y, int h)
int alt_inter_vlc
alternative inter vlc
int mb_num_left
number of MBs left in this video packet (for partitioned Slices only)
int64_t time
time of current frame
const AVOption ff_mpv_generic_options[]
AVRational mpeg2_frame_rate_ext
int ff_MPV_common_frame_size_change(MpegEncContext *s)
op_pixels_func(* hpel_put)[4]
int ref_count[2][2]
number of entries in ref_poc (FIXME need per slice)
Picture ** input_picture
next pictures on display order for encoding
void(* denoise_dct)(struct MpegEncContext *s, int16_t *block)
PutBitContext pb2
used for data partitioned VOPs
enum OutputFormat out_format
output format
void ff_denoise_dct(MpegEncContext *s, int16_t *block)
static int first_field(const struct video_data *s, int fd)
uint16_t(* dct_offset)[64]
void ff_dct_encode_init_x86(MpegEncContext *s)
uint8_t * pred_dir_table
used to store pred_dir for partitioned decoding
Multithreading support functions.
Motion estimation context.
qpel_mc_func(* qpel_put)[16]
int misc_bits
cbp, mb_type
int no_rounding
apply no rounding to motion compensation (MPEG4, msmpeg4, ...) for b-frames rounding mode is always 0...
int(* q_chroma_intra_matrix)[64]
int resync_marker
could this stream contain resync markers
Picture current_picture
copy of the current picture structure.
GetBitContext last_resync_gb
used to search for the next resync marker
int cplx_estimation_trash_b
int16_t(* b_bidir_forw_mv_table)[2]
MV table (1MV per MB) bidir mode b-frame encoding.
uint8_t(* mv_penalty)[MAX_MV *2+1]
amount of bits needed to encode a MV
int showed_packed_warning
flag for having shown the warning about divxs invalid b frames
void ff_rv10_encode_picture_header(MpegEncContext *s, int picture_number)
bitstream reader API header.
uint16_t pp_time
time distance between the last 2 p,s,i frames
AVBufferRef * mb_type_buf
uint8_t * b_scratchpad
scratchpad used for writing into write only buffers
int flags2
AVCodecContext.flags2.
op_pixels_func(* hpel_avg)[4]
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 mb_height
number of MBs horizontally & vertically
int lowres
low resolution decoding, 1-> 1/2 size, 2->1/4 size
enum AVPixelFormat ff_pixfmt_list_420[]
void ff_MPV_frame_end(MpegEncContext *s)
int codec_tag
internal codec_tag upper case converted from avctx codec_tag
int max_qcoeff
maximum encodable coefficient
int16_t(*[2][2] p_field_mv_table_base)[2]
int ff_wmv2_decode_picture_header(MpegEncContext *s)
int dquant
qscale difference to prev qscale
int gop_picture_number
index of the first picture of a GOP based on fake_pic_num & mpeg1 specific
static void ff_update_block_index(MpegEncContext *s)
void ff_set_qscale(MpegEncContext *s, int qscale)
set qscale and update qscale dependent variables.
int sprite_offset[2][2]
sprite offset[isChroma][isMVY]
AVBufferRef * mb_mean_buf
int(* q_inter_matrix)[64]
void(* dct_unquantize_h261_intra)(struct MpegEncContext *s, int16_t *block, int n, int qscale)
int ff_MPV_encode_init(AVCodecContext *avctx)
static int get_bits_diff(MpegEncContext *s)
int(* q_intra_matrix)[64]
precomputed matrix (combine qscale and DCT renorm)
int intra_only
if true, only intra pictures are generated
int16_t * dc_val[3]
used for mpeg4 DC prediction, all 3 arrays must be continuous
int h263_plus
h263 plus headers
int slice_context_count
number of used thread_contexts
int last_non_b_pict_type
used for mpeg4 gmc b-frames & ratecontrol
AVCodecID
Identify the syntax and semantics of the bitstream.
int ff_wmv2_encode_picture_header(MpegEncContext *s, int picture_number)
int ff_get_mb_score(MpegEncContext *s, int mx, int my, int src_index, int ref_index, int size, int h, int add_rate)
int stream_codec_tag
internal stream_codec_tag upper case converted from avctx stream_codec_tag
int last_dc[3]
last DC values for MPEG1
int16_t direct_scale_mv[2][64]
precomputed to avoid divisions in ff_mpeg4_set_direct_mv
uint8_t * inter_ac_vlc_last_length
static int ff_h263_round_chroma(int x)
int rl_chroma_table_index
int mb_skipped
MUST BE SET only during DECODING.
int strict_std_compliance
strictly follow the std (MPEG4, ...)
int partitioned_frame
is current frame partitioned
int cplx_estimation_trash_p
int unrestricted_mv
mv can point outside of the coded picture
int last_lambda_for[5]
last lambda for a specific pict type
uint8_t * edge_emu_buffer
temporary buffer for if MVs point to out-of-frame data
void(* dct_unquantize_mpeg2_inter)(struct MpegEncContext *s, int16_t *block, int n, int qscale)
int ff_wmv2_decode_secondary_picture_header(MpegEncContext *s)
void(* dct_unquantize_mpeg1_intra)(struct MpegEncContext *s, int16_t *block, int n, int qscale)
int h263_slice_structured
void ff_msmpeg4_encode_picture_header(MpegEncContext *s, int picture_number)
int quarter_sample
1->qpel, 0->half pel ME/MC
uint16_t * mb_type
Table for candidate MB types for encoding.
int low_delay
no reordering needed / has no b-frames
void ff_mpeg_unref_picture(MpegEncContext *s, Picture *pic)
Deallocate a picture.
int(* decode_mb)(struct MpegEncContext *s, int16_t block[6][64])
uint8_t *[2][2] b_field_select_table
Libavcodec external API header.
AVPixelFormat
Pixel format.
static int put_bits_count(PutBitContext *s)
void ff_mpeg_flush(AVCodecContext *avctx)
int resync_mb_x
x position of last resync marker
int coded_picture_number
used to set pic->coded_picture_number, should not be used for/by anything else
AVBufferRef * hwaccel_priv_buf
uint8_t * intra_ac_vlc_last_length
int sprite_delta[2][2]
sprite_delta [isY][isMVY]
AVBufferRef * motion_val_buf[2]
void(* op_pixels_func)(uint8_t *block, const uint8_t *pixels, ptrdiff_t line_size, int h)
int ff_mpv_export_qp_table(MpegEncContext *s, AVFrame *f, Picture *p, int qp_type)
void ff_mpeg_er_frame_start(MpegEncContext *s)
uint16_t(* q_inter_matrix16)[2][64]
uint8_t * vbv_delay_ptr
pointer to vbv_delay in the bitstream
int fixed_qscale
fixed qscale if non zero
int next_p_frame_damaged
set if the next p frame is damaged, to avoid showing trashed b frames
int me_method
ME algorithm.
int umvplus
== H263+ && unrestricted_mv
Picture new_picture
copy of the source picture structure for encoding.
int intra_quant_bias
bias for the quantizer
uint8_t * mbskip_table
used to avoid copy if macroblock skipped (for black regions for example) and used for b-frame encodin...
int16_t(*[2] motion_val)[2]
Picture * current_picture_ptr
pointer to the current picture
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)
unsigned int allocated_bitstream_buffer_size
void * hwaccel_picture_private
hardware accelerator private data
void ff_msmpeg4_encode_init(MpegEncContext *s)
int16_t(* ac_val_base)[16]
uint16_t(* q_intra_matrix16)[2][64]
identical to the above but for MMX & these are not permutated, second 64 entries are bias ...
int16_t(*[2][2][2] b_field_mv_table_base)[2]
int frame_num
h264 frame_num (raw frame_num from slice header)
int(* ac_stats)[2][MAX_LEVEL+1][MAX_RUN+1][2]
[mb_intra][isChroma][level][run][last]
int ff_msmpeg4_decode_ext_header(MpegEncContext *s, int buf_size)
int16_t(* b_forw_mv_table_base)[2]
int16_t(*[12] pblocks)[64]
void ff_wmv2_encode_mb(MpegEncContext *s, int16_t block[6][64], int motion_x, int motion_y)
int block_last_index[12]
last non zero coefficient in block
int pb_frame
PB frame mode (0 = none, 1 = base, 2 = improved)
int ff_mpv_frame_size_alloc(MpegEncContext *s, int linesize)
const uint8_t ff_aic_dc_scale_table[32]
uint8_t * mbintra_table
used to avoid setting {ac, dc, cbp}-pred stuff to zero on inter MB decoding
int ff_MPV_frame_start(MpegEncContext *s, AVCodecContext *avctx)
generic function for encode/decode called after coding/decoding the header and before a frame is code...
void ff_draw_horiz_band(AVCodecContext *avctx, DSPContext *dsp, Picture *cur, Picture *last, int y, int h, int picture_structure, int first_field, int draw_edges, int low_delay, int v_edge_pos, int h_edge_pos)
int ac_esc_length
num of bits needed to encode the longest esc
int ff_mpeg_update_thread_context(AVCodecContext *dst, const AVCodecContext *src)
int sprite_brightness_change
void ff_write_quant_matrix(PutBitContext *pb, uint16_t *matrix)
int block_index[6]
index to current MB in block based arrays with edges
int penalty_factor
an estimate of the bits required to code a given mv value, e.g.
int ff_dct_quantize_c(MpegEncContext *s, int16_t *block, int n, int qscale, int *overflow)
int * mb_index2xy
mb_index -> mb_x + mb_y*mb_stride
struct MJpegContext * mjpeg_ctx
int first_field
is 1 for the first field of a field picture 0 otherwise
int mjpeg_vsample[3]
vertical sampling factors, default = {2, 1, 1}
int first_slice_line
used in mpeg4 too to handle resync markers
void ff_wmv2_add_mb(MpegEncContext *s, int16_t block[6][64], uint8_t *dest_y, uint8_t *dest_cb, uint8_t *dest_cr)
uint16_t * mc_mb_var
Table for motion compensated MB variances.
AVBufferRef * qscale_table_buf
int16_t(* b_bidir_forw_mv_table_base)[2]
int mbaff
h264 1 -> MBAFF frame 0-> not MBAFF
void ff_print_debug_info2(AVCodecContext *avctx, Picture *p, AVFrame *pict, uint8_t *mbskip_table, int *low_delay, int mb_width, int mb_height, int mb_stride, int quarter_sample)
Print debugging info for the given picture.
const uint8_t *const ff_mpeg2_dc_scale_table[4]
uint16_t inter_matrix[64]
uint8_t * luma_dc_vlc_length
int sync
has been decoded after a keyframe
int alloc_mb_height
mb_height used to allocate tables
int cplx_estimation_trash_i
int concealment_motion_vectors
struct MpegEncContext * thread_context[MAX_THREADS]
unsigned int lambda2
(lambda*lambda) >> FF_LAMBDA_SHIFT
int h263_flv
use flv h263 header
char * tc_opt_str
timecode option string
ptrdiff_t linesize
line size, in bytes, may be different from width
typedef void(RENAME(mix_any_func_type))
void ff_MPV_common_init_x86(MpegEncContext *s)
main external API structure.
ScanTable intra_scantable
void(* qpel_mc_func)(uint8_t *dst, uint8_t *src, ptrdiff_t stride)
uint8_t * coded_block
used for coded block pattern prediction (msmpeg4v3, wmv1)
int height
picture size. must be a multiple of 16
int ff_dct_encode_init(MpegEncContext *s)
int64_t dts_delta
pts difference between the first and second input frame, used for calculating dts of the first frame ...
const uint8_t ff_mpeg1_dc_scale_table[128]
int64_t user_specified_pts
last non-zero pts from AVFrame which was passed into avcodec_encode_video2()
void ff_print_debug_info(MpegEncContext *s, Picture *p, AVFrame *pict)
void ff_fix_long_p_mvs(MpegEncContext *s)
Picture * picture
main picture buffer
int data_partitioning
data partitioning flag from header
uint8_t * inter_ac_vlc_length
void ff_MPV_decode_mb(MpegEncContext *s, int16_t block[12][64])
Describe the class of an AVClass context structure.
int stuffing_bits
bits used for stuffing
ScanTable intra_h_scantable
int16_t(*[2][2][2] b_field_mv_table)[2]
MV table (4MV per MB) interlaced b-frame encoding.
uint8_t * cbp_table
used to store cbp, ac_pred for partitioned decoding
int closed_gop
MPEG1/2 GOP is closed.
rational number numerator/denominator
int input_picture_number
used to set pic->display_picture_number, should not be used for/by anything else
int slice_height
in macroblocks
ptrdiff_t uvlinesize
line size, for chroma in bytes, may be different from width
int mb_info
interval for outputting info about mb offsets as side data
DSPContext dsp
pointers for accelerated dsp functions
void ff_mpeg1_encode_picture_header(MpegEncContext *s, int picture_number)
int f_code
forward MV resolution
int ff_pre_estimate_p_frame_motion(MpegEncContext *s, int mb_x, int mb_y)
int max_b_frames
max number of b-frames for encoding
int pict_type
AV_PICTURE_TYPE_I, AV_PICTURE_TYPE_P, AV_PICTURE_TYPE_B, ...
int bit_rate
wanted bit rate
int last_mv_dir
last mv_dir, used for b frame encoding
int field_poc[2]
h264 top/bottom POC
int h263_pred
use mpeg4/h263 ac/dc predictions
int16_t(* b_bidir_back_mv_table)[2]
MV table (1MV per MB) bidir mode b-frame encoding.
int ff_init_me(MpegEncContext *s)
uint8_t *[2] p_field_select_table
int16_t(* b_direct_mv_table)[2]
MV table (1MV per MB) direct mode b-frame encoding.
uint16_t pb_field_time
like above, just for interlaced
const uint8_t * c_dc_scale_table
qscale -> c_dc_scale table
qpel_mc_func(* qpel_avg)[16]
int mv[2][4][2]
motion vectors for a macroblock first coordinate : 0 = forward 1 = backward second " : depend...
int16_t(* b_forw_mv_table)[2]
MV table (1MV per MB) forward mode b-frame encoding.
int b8_stride
2*mb_width+1 used for some 8x8 block arrays to allow simple addressing
Picture * next_picture_ptr
pointer to the next picture (for bidir pred)
struct AVCodecContext * avctx
PutBitContext pb
bit output
A reference to a data buffer.
av_cold void ff_MPV_common_init_bfin(MpegEncContext *s)
void ff_mpeg1_encode_mb(MpegEncContext *s, int16_t block[6][64], int motion_x, int motion_y)
int quantizer_noise_shaping
int direct_basis_mv[4][2]
int mb_stride
mb_width+1 used for some arrays to allow simple addressing of left & top MBs without sig11 ...
AVBufferRef * mbskip_table_buf
void ff_MPV_common_defaults(MpegEncContext *s)
Set the given MpegEncContext to common defaults (same for encoding and decoding). ...
const uint8_t ff_h263_chroma_qscale_table[32]
int b4_stride
4*mb_width+1 used for some 4x4 block arrays to allow simple addressing
int adaptive_quant
use adaptive quantization
void ff_msmpeg4_encode_ext_header(MpegEncContext *s)
Picture last_picture
copy of the previous picture structure.
uint8_t * obmc_scratchpad
int ff_rv_decode_dc(MpegEncContext *s, int n)
Picture * last_picture_ptr
pointer to the previous picture.
int co_located_mv[4][2]
mv from last P-frame for direct mode ME
int64_t reordered_pts
reordered pts to be used as dts for the next output frame when there's a delay
const uint8_t * chroma_qscale_table
qscale -> chroma_qscale (h263)
uint32_t * map
map to avoid duplicate evaluations
int ff_update_duplicate_context(MpegEncContext *dst, MpegEncContext *src)
Core video DSP helper functions.
void(* dct_unquantize_mpeg1_inter)(struct MpegEncContext *s, int16_t *block, int n, int qscale)
H264ChromaContext h264chroma
int16_t(* blocks)[12][64]
void ff_mpeg1_encode_slice_header(MpegEncContext *s)
int last_bits
temp var used for calculating the above vars
void ff_MPV_common_end(MpegEncContext *s)
int drop_frame_timecode
timecode is in drop frame format.
int ff_get_best_fcode(MpegEncContext *s, int16_t(*mv_table)[2], int type)
int resync_mb_y
y position of last resync marker
int ff_MPV_lowest_referenced_row(MpegEncContext *s, int dir)
find the lowest MB row referenced in the MVs
int16_t(* block)[64]
points to one of the following blocks
ParseContext parse_context
int pic_id
h264 pic_num (short -> no wrap version of pic_num, pic_num & max_pic_num; long -> long_pic_num) ...
void ff_rv20_encode_picture_header(MpegEncContext *s, int picture_number)
void(* dct_unquantize_h261_inter)(struct MpegEncContext *s, int16_t *block, int n, int qscale)
PutBitContext tex_pb
used for data partitioned VOPs
Picture next_picture
copy of the next picture structure.
AVBufferRef * mc_mb_var_buf
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)
Picture ** reordered_input_picture
pointer to the next pictures in codedorder for encoding
int chroma_qscale
chroma QP
void(* dct_unquantize_mpeg2_intra)(struct MpegEncContext *s, int16_t *block, int n, int qscale)
int mb_var_sum
sum of MB variance for current frame
int(* fast_dct_quantize)(struct MpegEncContext *s, int16_t *block, int n, int qscale, int *overflow)
int flags
AVCodecContext.flags (HQ, MV4, ...)
int mc_mb_var_sum
motion compensated MB variance for current frame
uint16_t intra_matrix[64]
matrix transmitted in the bitstream
int rv10_version
RV10 version: 0 or 3.
int workaround_bugs
workaround bugs in encoders which cannot be detected automatically
ScanTable inter_scantable
if inter == intra then intra should be used to reduce tha cache usage
int ff_msmpeg4_decode_picture_header(MpegEncContext *s)
int h263_long_vectors
use horrible h263v1 long vector mode
int inter_quant_bias
bias for the quantizer
static int ref_picture(H264Context *h, Picture *dst, Picture *src)
av_cold void ff_MPV_common_init_arm(MpegEncContext *s)
int ff_find_unused_picture(MpegEncContext *s, int shared)
int(* dct_quantize)(struct MpegEncContext *s, int16_t *block, int n, int qscale, int *overflow)
int16_t(* b_direct_mv_table_base)[2]
int b_code
backward MV resolution for B Frames (mpeg4)
int h263_aic_dir
AIC direction: 0 = left, 1 = top.
AVTimecode tc
timecode context
This structure stores compressed data.
int(* sub_motion_search)(struct MpegEncContext *s, int *mx_ptr, int *my_ptr, int dmin, int src_index, int ref_index, int size, int h)
int ff_MPV_encode_picture(AVCodecContext *avctx, AVPacket *pkt, AVFrame *frame, int *got_packet)
unsigned int lambda
lagrange multipler used in rate distortion
void * opaque
private data for the user
void ff_MPV_decode_defaults(MpegEncContext *s)
Set the given MpegEncContext to defaults for decoding.
uint16_t pb_time
time distance between the last b and p,s,i frame
AVBufferRef * ref_index_buf[2]
int next_lambda
next lambda used for retrying to encode a frame