FFmpeg
mpegvideo.h
Go to the documentation of this file.
1 /*
2  * Generic DCT based hybrid video encoder
3  * Copyright (c) 2000, 2001, 2002 Fabrice Bellard
4  * Copyright (c) 2002-2004 Michael Niedermayer
5  *
6  * This file is part of FFmpeg.
7  *
8  * FFmpeg is free software; you can redistribute it and/or
9  * modify it under the terms of the GNU Lesser General Public
10  * License as published by the Free Software Foundation; either
11  * version 2.1 of the License, or (at your option) any later version.
12  *
13  * FFmpeg is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16  * Lesser General Public License for more details.
17  *
18  * You should have received a copy of the GNU Lesser General Public
19  * License along with FFmpeg; if not, write to the Free Software
20  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
21  */
22 
23 /**
24  * @file
25  * mpegvideo header.
26  */
27 
28 #ifndef AVCODEC_MPEGVIDEO_H
29 #define AVCODEC_MPEGVIDEO_H
30 
31 #include <float.h>
32 
33 #include "avcodec.h"
34 #include "blockdsp.h"
35 #include "error_resilience.h"
36 #include "fdctdsp.h"
37 #include "get_bits.h"
38 #include "h264chroma.h"
39 #include "h263dsp.h"
40 #include "hpeldsp.h"
41 #include "idctdsp.h"
42 #include "internal.h"
43 #include "me_cmp.h"
44 #include "motion_est.h"
45 #include "mpegpicture.h"
46 #include "mpegvideodsp.h"
47 #include "mpegvideoencdsp.h"
48 #include "mpegvideodata.h"
49 #include "pixblockdsp.h"
50 #include "put_bits.h"
51 #include "ratecontrol.h"
52 #if FF_API_FLAG_TRUNCATED
53 #include "parser.h"
54 #endif
55 #include "mpegutils.h"
56 #include "mpeg12data.h"
57 #include "qpeldsp.h"
58 #include "thread.h"
59 #include "videodsp.h"
60 
61 #include "libavutil/opt.h"
62 #include "libavutil/timecode.h"
63 
64 #define MAX_THREADS 32
65 
66 #define MAX_B_FRAMES 16
67 
68 /**
69  * MpegEncContext.
70  */
71 typedef struct MpegEncContext {
72  AVClass *class;
73 
75  int ac_pred;
76  int block_last_index[12]; ///< last non zero coefficient in block
77  int h263_aic; ///< Advanced INTRA Coding (AIC)
78 
79  /* scantables */
80  ScanTable inter_scantable; ///< if inter == intra then intra should be used to reduce the cache usage
84 
85  /* WARNING: changes above this line require updates to hardcoded
86  * offsets used in ASM. */
87 
89  /* the following parameters must be initialized before encoding */
90  int width, height;///< picture size. must be a multiple of 16
91  int gop_size;
92  int intra_only; ///< if true, only intra pictures are generated
93  int64_t bit_rate; ///< wanted bit rate
94  enum OutputFormat out_format; ///< output format
95  int h263_pred; ///< use MPEG-4/H.263 ac/dc predictions
96  int pb_frame; ///< PB-frame mode (0 = none, 1 = base, 2 = improved)
97 
98 /* the following codec id fields are deprecated in favor of codec_id */
99  int h263_plus; ///< H.263+ headers
100  int h263_flv; ///< use flv H.263 header
101 
102  enum AVCodecID codec_id; /* see AV_CODEC_ID_xxx */
103  int fixed_qscale; ///< fixed qscale if non zero
104  int encoding; ///< true if we are encoding (vs decoding)
105  int max_b_frames; ///< max number of B-frames for encoding
108  int strict_std_compliance; ///< strictly follow the std (MPEG-4, ...)
109  int workaround_bugs; ///< workaround bugs in encoders which cannot be detected automatically
110  int codec_tag; ///< internal codec_tag upper case converted from avctx codec_tag
111  /* the following fields are managed internally by the encoder */
112 
113  /* sequence parameters */
115  int input_picture_number; ///< used to set pic->display_picture_number, should not be used for/by anything else
116  int coded_picture_number; ///< used to set pic->coded_picture_number, should not be used for/by anything else
117  int picture_number; //FIXME remove, unclear definition
118  int picture_in_gop_number; ///< 0-> first pic in gop, ...
119  int mb_width, mb_height; ///< number of MBs horizontally & vertically
120  int mb_stride; ///< mb_width+1 used for some arrays to allow simple addressing of left & top MBs without sig11
121  int b8_stride; ///< 2*mb_width+1 used for some 8x8 block arrays to allow simple addressing
122  int h_edge_pos, v_edge_pos;///< horizontal / vertical position of the right/bottom edge (pixel replication)
123  int mb_num; ///< number of MBs of a picture
124  ptrdiff_t linesize; ///< line size, in bytes, may be different from width
125  ptrdiff_t uvlinesize; ///< line size, for chroma in bytes, may be different from width
126  Picture *picture; ///< main picture buffer
127  Picture **input_picture; ///< next pictures on display order for encoding
128  Picture **reordered_input_picture; ///< pointer to the next pictures in coded order for encoding
129 
130  int64_t user_specified_pts; ///< last non-zero pts from AVFrame which was passed into avcodec_send_frame()
131  /**
132  * pts difference between the first and second input frame, used for
133  * calculating dts of the first frame when there's a delay */
134  int64_t dts_delta;
135  /**
136  * reordered pts to be used as dts for the next output frame when there's
137  * a delay */
138  int64_t reordered_pts;
139 
140  /** bit output */
142 
143  int start_mb_y; ///< start mb_y of this thread (so current thread should process start_mb_y <= row < end_mb_y)
144  int end_mb_y; ///< end mb_y of this thread (so current thread should process start_mb_y <= row < end_mb_y)
146  int slice_context_count; ///< number of used thread_contexts
147 
148  /**
149  * copy of the previous picture structure.
150  * note, linesize & data, might not match the previous picture (for field pictures)
151  */
153 
154  /**
155  * copy of the next picture structure.
156  * note, linesize & data, might not match the next picture (for field pictures)
157  */
159 
160  /**
161  * copy of the source picture structure for encoding.
162  * note, linesize & data, might not match the source picture (for field pictures)
163  */
165 
166  /**
167  * copy of the current picture structure.
168  * note, linesize & data, might not match the current picture (for field pictures)
169  */
170  Picture current_picture; ///< buffer to store the decompressed current picture
171 
172  Picture *last_picture_ptr; ///< pointer to the previous picture.
173  Picture *next_picture_ptr; ///< pointer to the next picture (for bidir pred)
174  Picture *current_picture_ptr; ///< pointer to the current picture
175  int last_dc[3]; ///< last DC values for MPEG-1
176  int16_t *dc_val_base;
177  int16_t *dc_val[3]; ///< used for MPEG-4 DC prediction, all 3 arrays must be continuous
178  const uint8_t *y_dc_scale_table; ///< qscale -> y_dc_scale table
179  const uint8_t *c_dc_scale_table; ///< qscale -> c_dc_scale table
180  const uint8_t *chroma_qscale_table; ///< qscale -> chroma_qscale (H.263)
182  uint8_t *coded_block; ///< used for coded block pattern prediction (msmpeg4v3, wmv1)
183  int16_t (*ac_val_base)[16];
184  int16_t (*ac_val[3])[16]; ///< used for MPEG-4 AC prediction, all 3 arrays must be continuous
185  int mb_skipped; ///< MUST BE SET only during DECODING
186  uint8_t *mbskip_table; /**< used to avoid copy if macroblock skipped (for black regions for example)
187  and used for B-frame encoding & decoding (contains skip table of next P-frame) */
188  uint8_t *mbintra_table; ///< used to avoid setting {ac, dc, cbp}-pred stuff to zero on inter MB decoding
189  uint8_t *cbp_table; ///< used to store cbp, ac_pred for partitioned decoding
190  uint8_t *pred_dir_table; ///< used to store pred_dir for partitioned decoding
191 
193 
194  int qscale; ///< QP
195  int chroma_qscale; ///< chroma QP
196  unsigned int lambda; ///< Lagrange multiplier used in rate distortion
197  unsigned int lambda2; ///< (lambda*lambda) >> FF_LAMBDA_SHIFT
199  int adaptive_quant; ///< use adaptive quantization
200  int dquant; ///< qscale difference to prev qscale
201  int closed_gop; ///< MPEG1/2 GOP is closed
202  int pict_type; ///< AV_PICTURE_TYPE_I, AV_PICTURE_TYPE_P, AV_PICTURE_TYPE_B, ...
204  int last_pict_type; //FIXME removes
205  int last_non_b_pict_type; ///< used for MPEG-4 gmc B-frames & ratecontrol
209  int last_lambda_for[5]; ///< last lambda for a specific pict type
210  int skipdct; ///< skip dct and code zero residual
211 
212  /* motion compensation */
213  int unrestricted_mv; ///< mv can point outside of the coded picture
214  int h263_long_vectors; ///< use horrible H.263v1 long vector mode
215 
228  int f_code; ///< forward MV resolution
229  int b_code; ///< backward MV resolution for B-frames (MPEG-4)
230  int16_t (*p_mv_table_base)[2];
231  int16_t (*b_forw_mv_table_base)[2];
232  int16_t (*b_back_mv_table_base)[2];
235  int16_t (*b_direct_mv_table_base)[2];
236  int16_t (*p_field_mv_table_base[2][2])[2];
237  int16_t (*b_field_mv_table_base[2][2][2])[2];
238  int16_t (*p_mv_table)[2]; ///< MV table (1MV per MB) P-frame encoding
239  int16_t (*b_forw_mv_table)[2]; ///< MV table (1MV per MB) forward mode B-frame encoding
240  int16_t (*b_back_mv_table)[2]; ///< MV table (1MV per MB) backward mode B-frame encoding
241  int16_t (*b_bidir_forw_mv_table)[2]; ///< MV table (1MV per MB) bidir mode B-frame encoding
242  int16_t (*b_bidir_back_mv_table)[2]; ///< MV table (1MV per MB) bidir mode B-frame encoding
243  int16_t (*b_direct_mv_table)[2]; ///< MV table (1MV per MB) direct mode B-frame encoding
244  int16_t (*p_field_mv_table[2][2])[2]; ///< MV table (2MV per MB) interlaced P-frame encoding
245  int16_t (*b_field_mv_table[2][2][2])[2];///< MV table (4MV per MB) interlaced B-frame encoding
246  uint8_t (*p_field_select_table[2]);
247  uint8_t (*b_field_select_table[2][2]);
248  int motion_est; ///< ME algorithm
250  int me_pre; ///< prepass for motion estimation
251  int mv_dir;
252 #define MV_DIR_FORWARD 1
253 #define MV_DIR_BACKWARD 2
254 #define MV_DIRECT 4 ///< bidirectional mode where the difference equals the MV of the last P/S/I-Frame (MPEG-4)
255  int mv_type;
256 #define MV_TYPE_16X16 0 ///< 1 vector for the whole mb
257 #define MV_TYPE_8X8 1 ///< 4 vectors (H.263, MPEG-4 4MV)
258 #define MV_TYPE_16X8 2 ///< 2 vectors, one per 16x8 block
259 #define MV_TYPE_FIELD 3 ///< 2 vectors, one per field
260 #define MV_TYPE_DMV 4 ///< 2 vectors, special mpeg2 Dual Prime Vectors
261  /**motion vectors for a macroblock
262  first coordinate : 0 = forward 1 = backward
263  second " : depend on type
264  third " : 0 = x, 1 = y
265  */
266  int mv[2][4][2];
267  int field_select[2][2];
268  int last_mv[2][2][2]; ///< last MV, used for MV prediction in MPEG-1 & B-frame MPEG-4
269  const uint8_t *fcode_tab; ///< smallest fcode needed for each MV
270  int16_t direct_scale_mv[2][64]; ///< precomputed to avoid divisions in ff_mpeg4_set_direct_mv
271 
273 
274  int no_rounding; /**< apply no rounding to motion compensation (MPEG-4, msmpeg4, ...)
275  for B-frames rounding mode is always 0 */
276 
277  /* macroblock layer */
278  int mb_x, mb_y;
280  int mb_intra;
281  uint16_t *mb_type; ///< Table for candidate MB types for encoding (defines in mpegutils.h)
282 
283  int block_index[6]; ///< index to current MB in block based arrays with edges
284  int block_wrap[6];
285  uint8_t *dest[3];
286 
287  int *mb_index2xy; ///< mb_index -> mb_x + mb_y*mb_stride
288 
289  /** matrix transmitted in the bitstream */
290  uint16_t intra_matrix[64];
291  uint16_t chroma_intra_matrix[64];
292  uint16_t inter_matrix[64];
293  uint16_t chroma_inter_matrix[64];
294  int force_duplicated_matrix; ///< Force duplication of mjpeg matrices, useful for rtp streaming
295 
296  int intra_quant_bias; ///< bias for the quantizer
297  int inter_quant_bias; ///< bias for the quantizer
298  int min_qcoeff; ///< minimum encodable coefficient
299  int max_qcoeff; ///< maximum encodable coefficient
300  int ac_esc_length; ///< num of bits needed to encode the longest esc
308 #define UNI_AC_ENC_INDEX(run,level) ((run)*128 + (level))
309 
310  int coded_score[12];
311 
312  /** precomputed matrix (combine qscale and DCT renorm) */
316  /** identical to the above but for MMX & these are not permutated, second 64 entries are bias*/
317  uint16_t (*q_intra_matrix16)[2][64];
318  uint16_t (*q_chroma_intra_matrix16)[2][64];
319  uint16_t (*q_inter_matrix16)[2][64];
320 
321  /* noise reduction */
323  int dct_count[2];
324  uint16_t (*dct_offset)[64];
325 
326  /* bit rate control */
327  int64_t total_bits;
328  int frame_bits; ///< bits used for the current frame
329  int stuffing_bits; ///< bits used for stuffing
330  int next_lambda; ///< next lambda used for retrying to encode a frame
331  RateControlContext rc_context; ///< contains stuff only accessed in ratecontrol.c
332 
333  /* statistics, used for 2-pass encoding */
334  int mv_bits;
338  int i_count;
339  int f_count;
340  int b_count;
342  int misc_bits; ///< cbp, mb_type
343  int last_bits; ///< temp var used for calculating the above vars
344 
345  /* error concealment / resync */
346  int resync_mb_x; ///< x position of last resync marker
347  int resync_mb_y; ///< y position of last resync marker
348  GetBitContext last_resync_gb; ///< used to search for the next resync marker
349  int mb_num_left; ///< number of MBs left in this video packet (for partitioned Slices only)
350  int next_p_frame_damaged; ///< set if the next p frame is damaged, to avoid showing trashed B-frames
351 
352 #if FF_API_FLAG_TRUNCATED
354 #endif
355 
356  /* H.263 specific */
358  int obmc; ///< overlapped block motion compensation
359  int mb_info; ///< interval for outputting info about mb offsets as side data
361  uint8_t *mb_info_ptr;
363  int ehc_mode;
364 
365  /* H.263+ specific */
366  int umvplus; ///< == H.263+ && unrestricted_mv
367  int h263_aic_dir; ///< AIC direction: 0 = left, 1 = top
369  int alt_inter_vlc; ///< alternative inter vlc
373 
374  /* MPEG-4 specific */
377  ///< number of bits to represent the fractional part of time (encoder only)
380  int time_base; ///< time in seconds of last I,P,S Frame
381  int64_t time; ///< time of current frame
383  uint16_t pp_time; ///< time distance between the last 2 p,s,i frames
384  uint16_t pb_time; ///< time distance between the last b and p,s,i frame
385  uint16_t pp_field_time;
386  uint16_t pb_field_time; ///< like above, just for interlaced
388  int sprite_offset[2][2]; ///< sprite offset[isChroma][isMVY]
389  int sprite_delta[2][2]; ///< sprite_delta [isY][isMVY]
390  int mcsel;
392  int quarter_sample; ///< 1->qpel, 0->half pel ME/MC
393  int aspect_ratio_info; //FIXME remove
395  int data_partitioning; ///< data partitioning flag from header
396  int partitioned_frame; ///< is current frame partitioned
397  int low_delay; ///< no reordering needed / has no B-frames
398  int vo_type;
399  PutBitContext tex_pb; ///< used for data partitioned VOPs
400  PutBitContext pb2; ///< used for data partitioned VOPs
402  int padding_bug_score; ///< used to detect the VERY common padding bug in MPEG-4
403 
404  /* divx specific, used to workaround (many) bugs in divx5 */
406  uint8_t *bitstream_buffer; //Divx 5.01 puts several frames in a single one, this is used to reorder them
409 
410  /* RV10 specific */
411  int rv10_version; ///< RV10 version: 0 or 3
413 
414  /* MJPEG specific */
416  int esc_pos;
417  int pred;
418  int huffman;
419 
420  /* MSMPEG4 specific */
426  int slice_height; ///< in macroblocks
427  int first_slice_line; ///< used in MPEG-4 too to handle resync markers
429  int msmpeg4_version; ///< 0=not msmpeg4, 1=mp41, 2=mp42, 3=mp43/divx3 4=wmv1/7 5=wmv2/8
433  /** [mb_intra][isChroma][level][run][last] */
434  int (*ac_stats)[2][MAX_LEVEL+1][MAX_RUN+1][2];
436  int mspel;
437 
438  /* SpeedHQ specific */
440 
441  /* decompression specific */
443 
444  /* MPEG-1 specific */
445  int gop_picture_number; ///< index of the first picture of a GOP based on fake_pic_num & MPEG-1 specific
446  int last_mv_dir; ///< last mv_dir, used for B-frame encoding
447  uint8_t *vbv_delay_ptr; ///< pointer to vbv_delay in the bitstream
448 
449  /* MPEG-2-specific - I wished not to have to support this mess. */
451  int mpeg_f_code[2][2];
452  int a53_cc;
453 
454  // picture structure defines are loaded from mpegutils.h
456 
457  int64_t timecode_frame_start; ///< GOP timecode frame start number, in non drop frame format
468 #define VIDEO_FORMAT_COMPONENT 0
469 #define VIDEO_FORMAT_PAL 1
470 #define VIDEO_FORMAT_NTSC 2
471 #define VIDEO_FORMAT_SECAM 3
472 #define VIDEO_FORMAT_MAC 4
473 #define VIDEO_FORMAT_UNSPECIFIED 5
477 #define CHROMA_420 1
478 #define CHROMA_422 2
479 #define CHROMA_444 3
480  int chroma_x_shift;//depend on pix_format, that depend on chroma_format
482 
484  int full_pel[2];
486  int first_field; ///< is 1 for the first field of a field picture 0 otherwise
487  int drop_frame_timecode; ///< timecode is in drop frame format.
488  int scan_offset; ///< reserve space for SVCD scan offset user data.
489 
490  /* RTP specific */
491  int rtp_mode;
493 
494  char *tc_opt_str; ///< timecode option string
495  AVTimecode tc; ///< timecode context
496 
497  uint8_t *ptr_lastgob;
498  int swap_uv; //vcr2 codec is an MPEG-2 variant with U and V swapped
499  int pack_pblocks; //xvmc needs to keep blocks without gaps.
500  int16_t (*pblocks[12])[64];
501 
502  int16_t (*block)[64]; ///< points to one of the following blocks
503  int16_t (*blocks)[12][64]; // for HQ mode we need to keep the best block
504  int (*decode_mb)(struct MpegEncContext *s, int16_t block[12][64]); // used by some codecs to avoid a switch()
505 
506  int32_t (*block32)[12][64];
507  int dpcm_direction; // 0 = DCT, 1 = DPCM top to bottom scan, -1 = DPCM bottom to top scan
508  int16_t (*dpcm_macroblock)[3][256];
509 
510 #define SLICE_OK 0
511 #define SLICE_ERROR -1
512 #define SLICE_END -2 ///<end marker found
513 #define SLICE_NOEND -3 ///<no end marker or error found but mb count exceeded
514 
516  int16_t *block/*align 16*/, int n, int qscale);
518  int16_t *block/*align 16*/, int n, int qscale);
520  int16_t *block/*align 16*/, int n, int qscale);
522  int16_t *block/*align 16*/, int n, int qscale);
524  int16_t *block/*align 16*/, int n, int qscale);
526  int16_t *block/*align 16*/, int n, int qscale);
527  void (*dct_unquantize_intra)(struct MpegEncContext *s, // unquantizer to use (MPEG-4 can use both)
528  int16_t *block/*align 16*/, int n, int qscale);
529  void (*dct_unquantize_inter)(struct MpegEncContext *s, // unquantizer to use (MPEG-4 can use both)
530  int16_t *block/*align 16*/, int n, int qscale);
531  int (*dct_quantize)(struct MpegEncContext *s, int16_t *block/*align 16*/, int n, int qscale, int *overflow);
532  int (*fast_dct_quantize)(struct MpegEncContext *s, int16_t *block/*align 16*/, int n, int qscale, int *overflow);
533  void (*denoise_dct)(struct MpegEncContext *s, int16_t *block);
534 
535  int mpv_flags; ///< flags set by private options
537 
538  /**
539  * ratecontrol qmin qmax limiting method
540  * 0-> clipping, 1-> use a nice continuous function to limit qscale within qmin/qmax.
541  */
542  float rc_qsquish;
543  float rc_qmod_amp;
548  int lmin, lmax;
550 
551  char *rc_eq;
552 
553  /* temp buffers for rate control */
554  float *cplx_tab, *bits_tab;
555 
556  /* flag to indicate a reinitialization is required, e.g. after
557  * a frame size change */
559 
561 
563 
564  /* temporary frames used by b_frame_strategy = 2 */
568 
569  /* frame skip options for encoding */
574 
577 
580 
581 /* mpegvideo_enc common options */
582 #define FF_MPV_FLAG_SKIP_RD 0x0001
583 #define FF_MPV_FLAG_STRICT_GOP 0x0002
584 #define FF_MPV_FLAG_QP_RD 0x0004
585 #define FF_MPV_FLAG_CBP_RD 0x0008
586 #define FF_MPV_FLAG_NAQ 0x0010
587 #define FF_MPV_FLAG_MV0 0x0020
588 
589 #define FF_MPV_OPT_CMP_FUNC \
590 { "sad", "Sum of absolute differences, fast", 0, AV_OPT_TYPE_CONST, {.i64 = FF_CMP_SAD }, INT_MIN, INT_MAX, FF_MPV_OPT_FLAGS, "cmp_func" }, \
591 { "sse", "Sum of squared errors", 0, AV_OPT_TYPE_CONST, {.i64 = FF_CMP_SSE }, INT_MIN, INT_MAX, FF_MPV_OPT_FLAGS, "cmp_func" }, \
592 { "satd", "Sum of absolute Hadamard transformed differences", 0, AV_OPT_TYPE_CONST, {.i64 = FF_CMP_SATD }, INT_MIN, INT_MAX, FF_MPV_OPT_FLAGS, "cmp_func" }, \
593 { "dct", "Sum of absolute DCT transformed differences", 0, AV_OPT_TYPE_CONST, {.i64 = FF_CMP_DCT }, INT_MIN, INT_MAX, FF_MPV_OPT_FLAGS, "cmp_func" }, \
594 { "psnr", "Sum of squared quantization errors, low quality", 0, AV_OPT_TYPE_CONST, {.i64 = FF_CMP_PSNR }, INT_MIN, INT_MAX, FF_MPV_OPT_FLAGS, "cmp_func" }, \
595 { "bit", "Number of bits needed for the block", 0, AV_OPT_TYPE_CONST, {.i64 = FF_CMP_BIT }, INT_MIN, INT_MAX, FF_MPV_OPT_FLAGS, "cmp_func" }, \
596 { "rd", "Rate distortion optimal, slow", 0, AV_OPT_TYPE_CONST, {.i64 = FF_CMP_RD }, INT_MIN, INT_MAX, FF_MPV_OPT_FLAGS, "cmp_func" }, \
597 { "zero", "Zero", 0, AV_OPT_TYPE_CONST, {.i64 = FF_CMP_ZERO }, INT_MIN, INT_MAX, FF_MPV_OPT_FLAGS, "cmp_func" }, \
598 { "vsad", "Sum of absolute vertical differences", 0, AV_OPT_TYPE_CONST, {.i64 = FF_CMP_VSAD }, INT_MIN, INT_MAX, FF_MPV_OPT_FLAGS, "cmp_func" }, \
599 { "vsse", "Sum of squared vertical differences", 0, AV_OPT_TYPE_CONST, {.i64 = FF_CMP_VSSE }, INT_MIN, INT_MAX, FF_MPV_OPT_FLAGS, "cmp_func" }, \
600 { "nsse", "Noise preserving sum of squared differences", 0, AV_OPT_TYPE_CONST, {.i64 = FF_CMP_NSSE }, INT_MIN, INT_MAX, FF_MPV_OPT_FLAGS, "cmp_func" }, \
601 { "dct264", NULL, 0, AV_OPT_TYPE_CONST, {.i64 = FF_CMP_DCT264 }, INT_MIN, INT_MAX, FF_MPV_OPT_FLAGS, "cmp_func" }, \
602 { "dctmax", NULL, 0, AV_OPT_TYPE_CONST, {.i64 = FF_CMP_DCTMAX }, INT_MIN, INT_MAX, FF_MPV_OPT_FLAGS, "cmp_func" }, \
603 { "chroma", NULL, 0, AV_OPT_TYPE_CONST, {.i64 = FF_CMP_CHROMA }, INT_MIN, INT_MAX, FF_MPV_OPT_FLAGS, "cmp_func" }, \
604 { "msad", "Sum of absolute differences, median predicted", 0, AV_OPT_TYPE_CONST, {.i64 = FF_CMP_MEDIAN_SAD }, INT_MIN, INT_MAX, FF_MPV_OPT_FLAGS, "cmp_func" }
605 
606 #ifndef FF_MPV_OFFSET
607 #define FF_MPV_OFFSET(x) offsetof(MpegEncContext, x)
608 #endif
609 #define FF_MPV_OPT_FLAGS (AV_OPT_FLAG_VIDEO_PARAM | AV_OPT_FLAG_ENCODING_PARAM)
610 #define FF_MPV_COMMON_OPTS \
611 FF_MPV_OPT_CMP_FUNC, \
612 { "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" },\
613 { "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" },\
614 { "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" },\
615 { "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" },\
616 { "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" },\
617 { "naq", "normalize adaptive quantization", 0, AV_OPT_TYPE_CONST, { .i64 = FF_MPV_FLAG_NAQ }, 0, 0, FF_MPV_OPT_FLAGS, "mpv_flags" },\
618 { "mv0", "always try a mb with mv=<0,0>", 0, AV_OPT_TYPE_CONST, { .i64 = FF_MPV_FLAG_MV0 }, 0, 0, FF_MPV_OPT_FLAGS, "mpv_flags" },\
619 { "luma_elim_threshold", "single coefficient elimination threshold for luminance (negative values also consider dc coefficient)",\
620  FF_MPV_OFFSET(luma_elim_threshold), AV_OPT_TYPE_INT, { .i64 = 0 }, INT_MIN, INT_MAX, FF_MPV_OPT_FLAGS },\
621 { "chroma_elim_threshold", "single coefficient elimination threshold for chrominance (negative values also consider dc coefficient)",\
622  FF_MPV_OFFSET(chroma_elim_threshold), AV_OPT_TYPE_INT, { .i64 = 0 }, INT_MIN, INT_MAX, FF_MPV_OPT_FLAGS },\
623 { "quantizer_noise_shaping", NULL, FF_MPV_OFFSET(quantizer_noise_shaping), AV_OPT_TYPE_INT, { .i64 = 0 }, 0, INT_MAX, FF_MPV_OPT_FLAGS },\
624 { "error_rate", "Simulate errors in the bitstream to test error concealment.", \
625  FF_MPV_OFFSET(error_rate), AV_OPT_TYPE_INT, { .i64 = 0 }, 0, INT_MAX, FF_MPV_OPT_FLAGS },\
626 {"qsquish", "how to keep quantizer between qmin and qmax (0 = clip, 1 = use differentiable function)", \
627  FF_MPV_OFFSET(rc_qsquish), AV_OPT_TYPE_FLOAT, {.dbl = 0 }, 0, 99, FF_MPV_OPT_FLAGS}, \
628 {"rc_qmod_amp", "experimental quantizer modulation", FF_MPV_OFFSET(rc_qmod_amp), AV_OPT_TYPE_FLOAT, {.dbl = 0 }, -FLT_MAX, FLT_MAX, FF_MPV_OPT_FLAGS}, \
629 {"rc_qmod_freq", "experimental quantizer modulation", FF_MPV_OFFSET(rc_qmod_freq), AV_OPT_TYPE_INT, {.i64 = 0 }, INT_MIN, INT_MAX, FF_MPV_OPT_FLAGS}, \
630 {"rc_eq", "Set rate control equation. When computing the expression, besides the standard functions " \
631  "defined in the section 'Expression Evaluation', the following functions are available: " \
632  "bits2qp(bits), qp2bits(qp). Also the following constants are available: iTex pTex tex mv " \
633  "fCode iCount mcVar var isI isP isB avgQP qComp avgIITex avgPITex avgPPTex avgBPTex avgTex.", \
634  FF_MPV_OFFSET(rc_eq), AV_OPT_TYPE_STRING, .flags = FF_MPV_OPT_FLAGS }, \
635 {"rc_init_cplx", "initial complexity for 1-pass encoding", FF_MPV_OFFSET(rc_initial_cplx), AV_OPT_TYPE_FLOAT, {.dbl = 0 }, -FLT_MAX, FLT_MAX, FF_MPV_OPT_FLAGS}, \
636 {"rc_buf_aggressivity", "currently useless", FF_MPV_OFFSET(rc_buffer_aggressivity), AV_OPT_TYPE_FLOAT, {.dbl = 1.0 }, -FLT_MAX, FLT_MAX, FF_MPV_OPT_FLAGS}, \
637 {"border_mask", "increase the quantizer for macroblocks close to borders", FF_MPV_OFFSET(border_masking), AV_OPT_TYPE_FLOAT, {.dbl = 0 }, -FLT_MAX, FLT_MAX, FF_MPV_OPT_FLAGS}, \
638 {"lmin", "minimum Lagrange factor (VBR)", FF_MPV_OFFSET(lmin), AV_OPT_TYPE_INT, {.i64 = 2*FF_QP2LAMBDA }, 0, INT_MAX, FF_MPV_OPT_FLAGS }, \
639 {"lmax", "maximum Lagrange factor (VBR)", FF_MPV_OFFSET(lmax), AV_OPT_TYPE_INT, {.i64 = 31*FF_QP2LAMBDA }, 0, INT_MAX, FF_MPV_OPT_FLAGS }, \
640 {"ibias", "intra quant bias", FF_MPV_OFFSET(intra_quant_bias), AV_OPT_TYPE_INT, {.i64 = FF_DEFAULT_QUANT_BIAS }, INT_MIN, INT_MAX, FF_MPV_OPT_FLAGS }, \
641 {"pbias", "inter quant bias", FF_MPV_OFFSET(inter_quant_bias), AV_OPT_TYPE_INT, {.i64 = FF_DEFAULT_QUANT_BIAS }, INT_MIN, INT_MAX, FF_MPV_OPT_FLAGS }, \
642 {"motion_est", "motion estimation algorithm", FF_MPV_OFFSET(motion_est), AV_OPT_TYPE_INT, {.i64 = FF_ME_EPZS }, FF_ME_ZERO, FF_ME_XONE, FF_MPV_OPT_FLAGS, "motion_est" }, \
643 { "zero", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = FF_ME_ZERO }, 0, 0, FF_MPV_OPT_FLAGS, "motion_est" }, \
644 { "epzs", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = FF_ME_EPZS }, 0, 0, FF_MPV_OPT_FLAGS, "motion_est" }, \
645 { "xone", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = FF_ME_XONE }, 0, 0, FF_MPV_OPT_FLAGS, "motion_est" }, \
646 {"skip_threshold", "Frame skip threshold", FF_MPV_OFFSET(frame_skip_threshold), AV_OPT_TYPE_INT, {.i64 = 0 }, INT_MIN, INT_MAX, FF_MPV_OPT_FLAGS }, \
647 {"skip_factor", "Frame skip factor", FF_MPV_OFFSET(frame_skip_factor), AV_OPT_TYPE_INT, {.i64 = 0 }, INT_MIN, INT_MAX, FF_MPV_OPT_FLAGS }, \
648 {"skip_exp", "Frame skip exponent", FF_MPV_OFFSET(frame_skip_exp), AV_OPT_TYPE_INT, {.i64 = 0 }, INT_MIN, INT_MAX, FF_MPV_OPT_FLAGS }, \
649 {"skip_cmp", "Frame skip compare function", FF_MPV_OFFSET(frame_skip_cmp), AV_OPT_TYPE_INT, {.i64 = FF_CMP_DCTMAX }, INT_MIN, INT_MAX, FF_MPV_OPT_FLAGS, "cmp_func" }, \
650 {"sc_threshold", "Scene change threshold", FF_MPV_OFFSET(scenechange_threshold), AV_OPT_TYPE_INT, {.i64 = 0 }, INT_MIN, INT_MAX, FF_MPV_OPT_FLAGS }, \
651 {"noise_reduction", "Noise reduction", FF_MPV_OFFSET(noise_reduction), AV_OPT_TYPE_INT, {.i64 = 0 }, INT_MIN, INT_MAX, FF_MPV_OPT_FLAGS }, \
652 {"ps", "RTP payload size in bytes", FF_MPV_OFFSET(rtp_payload_size), AV_OPT_TYPE_INT, {.i64 = 0 }, INT_MIN, INT_MAX, FF_MPV_OPT_FLAGS }, \
653 {"mepc", "Motion estimation bitrate penalty compensation (1.0 = 256)", FF_MPV_OFFSET(me_penalty_compensation), AV_OPT_TYPE_INT, {.i64 = 256 }, INT_MIN, INT_MAX, FF_MPV_OPT_FLAGS }, \
654 {"mepre", "pre motion estimation", FF_MPV_OFFSET(me_pre), AV_OPT_TYPE_INT, {.i64 = 0 }, INT_MIN, INT_MAX, FF_MPV_OPT_FLAGS }, \
655 {"intra_penalty", "Penalty for intra blocks in block decision", FF_MPV_OFFSET(intra_penalty), AV_OPT_TYPE_INT, {.i64 = 0 }, 0, INT_MAX/2, FF_MPV_OPT_FLAGS }, \
656 
657 #define FF_MPV_COMMON_BFRAME_OPTS \
658 {"b_strategy", "Strategy to choose between I/P/B-frames", FF_MPV_OFFSET(b_frame_strategy), AV_OPT_TYPE_INT, {.i64 = 0 }, 0, 2, FF_MPV_OPT_FLAGS }, \
659 {"b_sensitivity", "Adjust sensitivity of b_frame_strategy 1", FF_MPV_OFFSET(b_sensitivity), AV_OPT_TYPE_INT, {.i64 = 40 }, 1, INT_MAX, FF_MPV_OPT_FLAGS }, \
660 {"brd_scale", "Downscale frames for dynamic B-frame decision", FF_MPV_OFFSET(brd_scale), AV_OPT_TYPE_INT, {.i64 = 0 }, 0, 3, FF_MPV_OPT_FLAGS },
661 
662 #if FF_API_MPEGVIDEO_OPTS
663 #define FF_MPV_DEPRECATED_MPEG_QUANT_OPT \
664  { "mpeg_quant", "Deprecated, does nothing", FF_MPV_OFFSET(mpeg_quant), AV_OPT_TYPE_INT, {.i64 = 0 }, 0, 0, FF_MPV_OPT_FLAGS | AV_OPT_FLAG_DEPRECATED },
665 #define FF_MPV_DEPRECATED_A53_CC_OPT \
666  { "a53cc", "Deprecated, does nothing", FF_MPV_OFFSET(a53_cc), AV_OPT_TYPE_BOOL, { .i64 = 1 }, 0, 1, FF_MPV_OPT_FLAGS | AV_OPT_FLAG_DEPRECATED },
667 #define FF_MPV_DEPRECATED_MATRIX_OPT \
668  { "force_duplicated_matrix", "Deprecated, does nothing", FF_MPV_OFFSET(force_duplicated_matrix), AV_OPT_TYPE_BOOL, {.i64 = 0 }, 0, 1, FF_MPV_OPT_FLAGS | AV_OPT_FLAG_DEPRECATED },
669 #define FF_MPV_DEPRECATED_BFRAME_OPTS \
670  { "b_strategy", "Deprecated, does nothing", FF_MPV_OFFSET(b_frame_strategy), AV_OPT_TYPE_INT, { .i64 = 0 }, 0, 2, FF_MPV_OPT_FLAGS | AV_OPT_FLAG_DEPRECATED }, \
671  { "b_sensitivity", "Deprecated, does nothing", FF_MPV_OFFSET(b_sensitivity), AV_OPT_TYPE_INT, { .i64 = 40 }, 1, INT_MAX, FF_MPV_OPT_FLAGS | AV_OPT_FLAG_DEPRECATED }, \
672  { "brd_scale", "Deprecated, does nothing", FF_MPV_OFFSET(brd_scale), AV_OPT_TYPE_INT, { .i64 = 0 }, 0, 3, FF_MPV_OPT_FLAGS | AV_OPT_FLAG_DEPRECATED },
673 #endif
674 
675 extern const AVClass ff_mpv_enc_class;
676 
677 /**
678  * Set the given MpegEncContext to common defaults (same for encoding
679  * and decoding). The changed fields will not depend upon the prior
680  * state of the MpegEncContext.
681  */
683 
685 
693 
696 
698 void ff_mpv_reconstruct_mb(MpegEncContext *s, int16_t block[12][64]);
700 
703 
706 
709  const AVFrame *frame, int *got_packet);
710 int ff_mpv_reallocate_putbitbuffer(MpegEncContext *s, size_t threshold, size_t size_increase);
711 
713 void ff_mpeg_draw_horiz_band(MpegEncContext *s, int y, int h);
715 
717 
718 int ff_mpv_export_qp_table(MpegEncContext *s, AVFrame *f, Picture *p, int qp_type);
719 
720 void ff_write_quant_matrix(PutBitContext *pb, uint16_t *matrix);
721 
724 void ff_set_qscale(MpegEncContext * s, int qscale);
725 
728 void ff_convert_matrix(MpegEncContext *s, int (*qmat)[64], uint16_t (*qmat16)[2][64],
729  const uint16_t *quant_matrix, int bias, int qmin, int qmax, int intra);
730 int ff_dct_quantize_c(MpegEncContext *s, int16_t *block, int n, int qscale, int *overflow);
731 void ff_block_permute(int16_t *block, uint8_t *permutation,
732  const uint8_t *scantable, int last);
734 
736  uint8_t *dest_y, uint8_t *dest_cb,
737  uint8_t *dest_cr, int dir,
738  uint8_t **ref_picture,
739  op_pixels_func (*pix_op)[4],
740  qpel_mc_func (*qpix_op)[16]);
741 
743  const int bytes_per_pixel = 1 + (s->avctx->bits_per_raw_sample > 8);
744  const int block_size= (8*bytes_per_pixel) >> s->avctx->lowres;
745 
746  s->block_index[0]+=2;
747  s->block_index[1]+=2;
748  s->block_index[2]+=2;
749  s->block_index[3]+=2;
750  s->block_index[4]++;
751  s->block_index[5]++;
752  s->dest[0]+= 2*block_size;
753  s->dest[1]+= (2 >> s->chroma_x_shift) * block_size;
754  s->dest[2]+= (2 >> s->chroma_x_shift) * block_size;
755 }
756 
757 static inline int get_bits_diff(MpegEncContext *s){
758  const int bits= put_bits_count(&s->pb);
759  const int last= s->last_bits;
760 
761  s->last_bits = bits;
762 
763  return bits - last;
764 }
765 
766 static inline int mpeg_get_qscale(MpegEncContext *s)
767 {
768  int qscale = get_bits(&s->gb, 5);
769  if (s->q_scale_type)
771  else
772  return qscale << 1;
773 }
774 
775 #endif /* AVCODEC_MPEGVIDEO_H */
MpegEncContext::i_count
int i_count
Definition: mpegvideo.h:338
MpegEncContext::h264chroma
H264ChromaContext h264chroma
Definition: mpegvideo.h:218
ratecontrol.h
MpegEncContext::picture
Picture * picture
main picture buffer
Definition: mpegvideo.h:126
MpegEncContext::mb_skipped
int mb_skipped
MUST BE SET only during DECODING.
Definition: mpegvideo.h:185
MpegEncContext::mb_type
uint16_t * mb_type
Table for candidate MB types for encoding (defines in mpegutils.h)
Definition: mpegvideo.h:281
MpegEncContext::h263_flv
int h263_flv
use flv H.263 header
Definition: mpegvideo.h:100
MpegEncContext::q_intra_matrix16
uint16_t(* q_intra_matrix16)[2][64]
identical to the above but for MMX & these are not permutated, second 64 entries are bias
Definition: mpegvideo.h:317
MpegEncContext::rtp_payload_size
int rtp_payload_size
Definition: mpegvideo.h:492
ff_mpeg_flush
void ff_mpeg_flush(AVCodecContext *avctx)
Definition: mpegvideo.c:2304
MpegEncContext::b_field_select_table
uint8_t *[2][2] b_field_select_table
Definition: mpegvideo.h:247
MpegEncContext::progressive_sequence
int progressive_sequence
Definition: mpegvideo.h:450
MpegEncContext::swap_uv
int swap_uv
Definition: mpegvideo.h:498
MpegEncContext::luma_elim_threshold
int luma_elim_threshold
Definition: mpegvideo.h:106
MpegEncContext::data_partitioning
int data_partitioning
data partitioning flag from header
Definition: mpegvideo.h:395
MpegEncContext::stuffing_bits
int stuffing_bits
bits used for stuffing
Definition: mpegvideo.h:329
ff_mpeg_update_thread_context
int ff_mpeg_update_thread_context(AVCodecContext *dst, const AVCodecContext *src)
Definition: mpegvideo.c:524
MpegEncContext::dct_unquantize_mpeg1_intra
void(* dct_unquantize_mpeg1_intra)(struct MpegEncContext *s, int16_t *block, int n, int qscale)
Definition: mpegvideo.h:515
MpegEncContext::lambda
unsigned int lambda
Lagrange multiplier used in rate distortion.
Definition: mpegvideo.h:196
MpegEncContext::a53_cc
int a53_cc
Definition: mpegvideo.h:452
blockdsp.h
opt.h
MpegEncContext::scan_offset
int scan_offset
reserve space for SVCD scan offset user data.
Definition: mpegvideo.h:488
MpegEncContext::quantizer_noise_shaping
int quantizer_noise_shaping
Definition: mpegvideo.h:536
MpegEncContext::b_code
int b_code
backward MV resolution for B-frames (MPEG-4)
Definition: mpegvideo.h:229
ff_mpv_export_qp_table
int ff_mpv_export_qp_table(MpegEncContext *s, AVFrame *f, Picture *p, int qp_type)
Definition: mpegvideo.c:1424
MpegEncContext::rc_initial_cplx
float rc_initial_cplx
Definition: mpegvideo.h:545
MpegEncContext::frame_rate_index
int frame_rate_index
Definition: mpegvideo.h:207
MpegEncContext::gb
GetBitContext gb
Definition: mpegvideo.h:442
MpegEncContext::inter_intra_pred
int inter_intra_pred
Definition: mpegvideo.h:435
MpegEncContext::top_field_first
int top_field_first
Definition: mpegvideo.h:460
MpegEncContext::input_picture_number
int input_picture_number
used to set pic->display_picture_number, should not be used for/by anything else
Definition: mpegvideo.h:115
MpegEncContext::dct_unquantize_h263_inter
void(* dct_unquantize_h263_inter)(struct MpegEncContext *s, int16_t *block, int n, int qscale)
Definition: mpegvideo.h:525
MpegEncContext::total_bits
int64_t total_bits
Definition: mpegvideo.h:327
MpegEncContext::pp_time
uint16_t pp_time
time distance between the last 2 p,s,i frames
Definition: mpegvideo.h:383
MpegEncContext::rc_context
RateControlContext rc_context
contains stuff only accessed in ratecontrol.c
Definition: mpegvideo.h:331
MpegEncContext::intra_quant_bias
int intra_quant_bias
bias for the quantizer
Definition: mpegvideo.h:296
MpegEncContext::max_b_frames
int max_b_frames
max number of B-frames for encoding
Definition: mpegvideo.h:105
MpegEncContext::block_index
int block_index[6]
index to current MB in block based arrays with edges
Definition: mpegvideo.h:283
mpeg_get_qscale
static int mpeg_get_qscale(MpegEncContext *s)
Definition: mpegvideo.h:766
MpegEncContext::frame_skip_exp
int frame_skip_exp
Definition: mpegvideo.h:572
MpegEncContext::force_duplicated_matrix
int force_duplicated_matrix
Force duplication of mjpeg matrices, useful for rtp streaming.
Definition: mpegvideo.h:294
MotionEstContext
Motion estimation context.
Definition: motion_est.h:47
MpegEncContext::coded_picture_number
int coded_picture_number
used to set pic->coded_picture_number, should not be used for/by anything else
Definition: mpegvideo.h:116
ff_block_permute
void ff_block_permute(int16_t *block, uint8_t *permutation, const uint8_t *scantable, int last)
Permute an 8x8 block according to permutation.
Definition: mpegvideo_enc.c:4482
MAX_RUN
#define MAX_RUN
Definition: rl.h:35
MpegEncContext::slice_height
int slice_height
in macroblocks
Definition: mpegvideo.h:426
MpegEncContext::current_picture
Picture current_picture
copy of the current picture structure.
Definition: mpegvideo.h:170
MpegEncContext::bits_tab
float * bits_tab
Definition: mpegvideo.h:554
MpegEncContext::partitioned_frame
int partitioned_frame
is current frame partitioned
Definition: mpegvideo.h:396
MpegEncContext::y_dc_scale
int y_dc_scale
Definition: mpegvideo.h:74
MpegEncContext::tc
AVTimecode tc
timecode context
Definition: mpegvideo.h:495
MpegEncContext::dct_offset
uint16_t(* dct_offset)[64]
Definition: mpegvideo.h:324
AVFrame
This structure describes decoded (raw) audio or video data.
Definition: frame.h:303
MpegEncContext::mb_num
int mb_num
number of MBs of a picture
Definition: mpegvideo.h:123
MpegEncContext::ac_val_base
int16_t(* ac_val_base)[16]
Definition: mpegvideo.h:183
MpegEncContext::dct_unquantize_mpeg2_intra
void(* dct_unquantize_mpeg2_intra)(struct MpegEncContext *s, int16_t *block, int n, int qscale)
Definition: mpegvideo.h:519
MpegEncContext::workaround_bugs
int workaround_bugs
workaround bugs in encoders which cannot be detected automatically
Definition: mpegvideo.h:109
MpegEncContext::huffman
int huffman
Definition: mpegvideo.h:418
MpegEncContext::reordered_pts
int64_t reordered_pts
reordered pts to be used as dts for the next output frame when there's a delay
Definition: mpegvideo.h:138
MpegEncContext::h263dsp
H263DSPContext h263dsp
Definition: mpegvideo.h:227
internal.h
MpegEncContext::f_count
int f_count
Definition: mpegvideo.h:339
MpegEncContext::inter_quant_bias
int inter_quant_bias
bias for the quantizer
Definition: mpegvideo.h:297
MpegEncContext::mb_width
int mb_width
Definition: mpegvideo.h:119
h263dsp.h
MpegEncContext::drop_frame_timecode
int drop_frame_timecode
timecode is in drop frame format.
Definition: mpegvideo.h:487
MpegEncContext::fcode_tab
const uint8_t * fcode_tab
smallest fcode needed for each MV
Definition: mpegvideo.h:269
MpegEncContext::next_picture
Picture next_picture
copy of the next picture structure.
Definition: mpegvideo.h:158
MpegEncContext::last_dc
int last_dc[3]
last DC values for MPEG-1
Definition: mpegvideo.h:175
MpegEncContext::intra_chroma_ac_vlc_length
uint8_t * intra_chroma_ac_vlc_length
Definition: mpegvideo.h:303
MpegEncContext::chroma_qscale
int chroma_qscale
chroma QP
Definition: mpegvideo.h:195
MpegEncContext::repeat_first_field
int repeat_first_field
Definition: mpegvideo.h:474
MpegEncContext::mv_table_index
int mv_table_index
Definition: mpegvideo.h:421
MpegEncContext::vbv_delay
int vbv_delay
Definition: mpegvideo.h:203
MpegEncContext::input_picture
Picture ** input_picture
next pictures on display order for encoding
Definition: mpegvideo.h:127
ff_mpeg2_non_linear_qscale
const uint8_t ff_mpeg2_non_linear_qscale[32]
Definition: mpegvideodata.c:26
MpegEncContext::ac_val
int16_t(*[3] ac_val)[16]
used for MPEG-4 AC prediction, all 3 arrays must be continuous
Definition: mpegvideo.h:184
MpegEncContext::gob_index
int gob_index
Definition: mpegvideo.h:357
MpegEncContext::fdsp
FDCTDSPContext fdsp
Definition: mpegvideo.h:217
ERContext
Definition: error_resilience.h:53
MpegEncContext::unrestricted_mv
int unrestricted_mv
mv can point outside of the coded picture
Definition: mpegvideo.h:213
float.h
MpegEncContext::dest
uint8_t * dest[3]
Definition: mpegvideo.h:285
MpegEncContext::avctx
struct AVCodecContext * avctx
Definition: mpegvideo.h:88
MpegEncContext::last_non_b_time
int64_t last_non_b_time
Definition: mpegvideo.h:382
MpegEncContext::ac_stats
int(* ac_stats)[2][MAX_LEVEL+1][MAX_RUN+1][2]
[mb_intra][isChroma][level][run][last]
Definition: mpegvideo.h:434
Picture
Picture.
Definition: mpegpicture.h:45
MpegEncContext::next_picture_ptr
Picture * next_picture_ptr
pointer to the next picture (for bidir pred)
Definition: mpegvideo.h:173
MpegEncContext::pb
PutBitContext pb
bit output
Definition: mpegvideo.h:141
MpegEncContext::mcsel
int mcsel
Definition: mpegvideo.h:390
MpegEncContext::vo_type
int vo_type
Definition: mpegvideo.h:398
MpegEncContext::mb_num_left
int mb_num_left
number of MBs left in this video packet (for partitioned Slices only)
Definition: mpegvideo.h:349
BlockDSPContext
Definition: blockdsp.h:34
MpegEncContext::height
int height
picture size. must be a multiple of 16
Definition: mpegvideo.h:90
mpegutils.h
MpegEncContext::fast_dct_quantize
int(* fast_dct_quantize)(struct MpegEncContext *s, int16_t *block, int n, int qscale, int *overflow)
Definition: mpegvideo.h:532
MpegEncContext::dts_delta
int64_t dts_delta
pts difference between the first and second input frame, used for calculating dts of the first frame ...
Definition: mpegvideo.h:134
MpegEncContext::dct_unquantize_h263_intra
void(* dct_unquantize_h263_intra)(struct MpegEncContext *s, int16_t *block, int n, int qscale)
Definition: mpegvideo.h:523
MpegEncContext::frame_skip_cmp
int frame_skip_cmp
Definition: mpegvideo.h:573
thread.h
MpegEncContext::last_resync_gb
GetBitContext last_resync_gb
used to search for the next resync marker
Definition: mpegvideo.h:348
MpegEncContext::mv
int mv[2][4][2]
motion vectors for a macroblock first coordinate : 0 = forward 1 = backward second " : depend...
Definition: mpegvideo.h:266
ScratchpadContext
Definition: mpegpicture.h:35
MpegEncContext::use_skip_mb_code
int use_skip_mb_code
Definition: mpegvideo.h:425
MpegVideoDSPContext
Definition: mpegvideodsp.h:28
MpegEncContext::out_format
enum OutputFormat out_format
output format
Definition: mpegvideo.h:94
MpegEncContext::esc_pos
int esc_pos
Definition: mpegvideo.h:416
MpegEncContext::border_masking
float border_masking
Definition: mpegvideo.h:547
MpegEncContext::time_base
int time_base
time in seconds of last I,P,S Frame
Definition: mpegvideo.h:380
MpegEncContext::mpeg_f_code
int mpeg_f_code[2][2]
Definition: mpegvideo.h:451
MpegEncContext::intra_scantable
ScanTable intra_scantable
Definition: mpegvideo.h:81
get_bits
static unsigned int get_bits(GetBitContext *s, int n)
Read 1-25 bits.
Definition: get_bits.h:380
FDCTDSPContext
Definition: fdctdsp.h:26
ParseContext
Definition: parser.h:28
MpegEncContext::mb_height
int mb_height
number of MBs horizontally & vertically
Definition: mpegvideo.h:119
MpegEncContext::pict_type
int pict_type
AV_PICTURE_TYPE_I, AV_PICTURE_TYPE_P, AV_PICTURE_TYPE_B, ...
Definition: mpegvideo.h:202
MpegEncContext::h263_pred
int h263_pred
use MPEG-4/H.263 ac/dc predictions
Definition: mpegvideo.h:95
MpegEncContext::mbintra_table
uint8_t * mbintra_table
used to avoid setting {ac, dc, cbp}-pred stuff to zero on inter MB decoding
Definition: mpegvideo.h:188
MpegEncContext::mpv_flags
int mpv_flags
flags set by private options
Definition: mpegvideo.h:535
MpegEncContext::chroma_y_shift
int chroma_y_shift
Definition: mpegvideo.h:481
MpegEncContext::intra_penalty
int intra_penalty
Definition: mpegvideo.h:578
MpegEncContext::picture_structure
int picture_structure
Definition: mpegvideo.h:455
MpegEncContext::intra_only
int intra_only
if true, only intra pictures are generated
Definition: mpegvideo.h:92
timecode.h
MpegEncContext::vdsp
VideoDSPContext vdsp
Definition: mpegvideo.h:226
MpegEncContext::padding_bug_score
int padding_bug_score
used to detect the VERY common padding bug in MPEG-4
Definition: mpegvideo.h:402
GetBitContext
Definition: get_bits.h:62
ff_convert_matrix
void ff_convert_matrix(MpegEncContext *s, int(*qmat)[64], uint16_t(*qmat16)[2][64], const uint16_t *quant_matrix, int bias, int qmin, int qmax, int intra)
Definition: mpegvideo_enc.c:106
MpegEncContext::linesize
ptrdiff_t linesize
line size, in bytes, may be different from width
Definition: mpegvideo.h:124
MpegEncContext::bdsp
BlockDSPContext bdsp
Definition: mpegvideo.h:216
MpegEncContext::umvplus
int umvplus
== H.263+ && unrestricted_mv
Definition: mpegvideo.h:366
MpegEncContext::ptr_lastgob
uint8_t * ptr_lastgob
Definition: mpegvideo.h:497
MpegEncContext::width
int width
Definition: mpegvideo.h:90
ff_mpv_common_init_x86
void ff_mpv_common_init_x86(MpegEncContext *s)
Definition: mpegvideo.c:454
motion_est.h
MpegEncContext::p_field_mv_table_base
int16_t(*[2][2] p_field_mv_table_base)[2]
Definition: mpegvideo.h:236
MpegEncContext::b_bidir_forw_mv_table_base
int16_t(* b_bidir_forw_mv_table_base)[2]
Definition: mpegvideo.h:233
ff_mpv_idct_init
void ff_mpv_idct_init(MpegEncContext *s)
Definition: mpegvideo.c:331
MpegEncContext::gop_size
int gop_size
Definition: mpegvideo.h:91
MpegEncContext::frame_pred_frame_dct
int frame_pred_frame_dct
Definition: mpegvideo.h:459
MpegEncContext::q_intra_matrix
int(* q_intra_matrix)[64]
precomputed matrix (combine qscale and DCT renorm)
Definition: mpegvideo.h:313
MpegEncContext::i_tex_bits
int i_tex_bits
Definition: mpegvideo.h:336
MpegEncContext::pblocks
int16_t(*[12] pblocks)[64]
Definition: mpegvideo.h:500
RateControlContext
rate control context.
Definition: ratecontrol.h:63
pkt
AVPacket * pkt
Definition: movenc.c:59
H263DSPContext
Definition: h263dsp.h:26
MpegEncContext::pb_frame
int pb_frame
PB-frame mode (0 = none, 1 = base, 2 = improved)
Definition: mpegvideo.h:96
MpegEncContext::slice_start
int slice_start
Definition: mpegvideo.h:439
ff_set_qscale
void ff_set_qscale(MpegEncContext *s, int qscale)
set qscale and update qscale dependent variables.
Definition: mpegvideo.c:2337
MpegEncContext::coded_block
uint8_t * coded_block
used for coded block pattern prediction (msmpeg4v3, wmv1)
Definition: mpegvideo.h:182
MpegEncContext::pp_field_time
uint16_t pp_field_time
Definition: mpegvideo.h:385
s
#define s(width, name)
Definition: cbs_vp9.c:257
MpegEncContext::mpvencdsp
MpegvideoEncDSPContext mpvencdsp
Definition: mpegvideo.h:223
MpegEncContext::last_time_base
int last_time_base
Definition: mpegvideo.h:379
ff_mpv_encode_init
int ff_mpv_encode_init(AVCodecContext *avctx)
Definition: mpegvideo_enc.c:310
MpegEncContext::tc_opt_str
char * tc_opt_str
timecode option string
Definition: mpegvideo.h:494
MpegEncContext::me_penalty_compensation
int me_penalty_compensation
Definition: mpegvideo.h:249
MpegEncContext::mv_dir
int mv_dir
Definition: mpegvideo.h:251
MpegEncContext::h_edge_pos
int h_edge_pos
Definition: mpegvideo.h:122
MpegEncContext::b_back_mv_table
int16_t(* b_back_mv_table)[2]
MV table (1MV per MB) backward mode B-frame encoding.
Definition: mpegvideo.h:240
MpegEncContext::mb_skip_run
int mb_skip_run
Definition: mpegvideo.h:279
ff_mpv_common_defaults
void ff_mpv_common_defaults(MpegEncContext *s)
Set the given MpegEncContext to common defaults (same for encoding and decoding).
Definition: mpegvideo.c:676
MpegEncContext::b_sensitivity
int b_sensitivity
Definition: mpegvideo.h:567
MpegEncContext::bit_rate
int64_t bit_rate
wanted bit rate
Definition: mpegvideo.h:93
bits
uint8_t bits
Definition: vp3data.h:141
OutputFormat
OutputFormat
Definition: mpegutils.h:122
ff_mpv_encode_picture
int ff_mpv_encode_picture(AVCodecContext *avctx, AVPacket *pkt, const AVFrame *frame, int *got_packet)
Definition: mpegvideo_enc.c:1712
MpegEncContext::max_qcoeff
int max_qcoeff
maximum encodable coefficient
Definition: mpegvideo.h:299
MpegEncContext::loop_filter
int loop_filter
Definition: mpegvideo.h:371
MpegEncContext::user_specified_pts
int64_t user_specified_pts
last non-zero pts from AVFrame which was passed into avcodec_send_frame()
Definition: mpegvideo.h:130
MpegEncContext::sprite_delta
int sprite_delta[2][2]
sprite_delta [isY][isMVY]
Definition: mpegvideo.h:389
get_bits.h
MpegEncContext::frame_bits
int frame_bits
bits used for the current frame
Definition: mpegvideo.h:328
MpegEncContext::denoise_dct
void(* denoise_dct)(struct MpegEncContext *s, int16_t *block)
Definition: mpegvideo.h:533
MpegEncContext::inter_ac_vlc_length
uint8_t * inter_ac_vlc_length
Definition: mpegvideo.h:305
MpegEncContext::b_count
int b_count
Definition: mpegvideo.h:340
MpegEncContext::divx_packed
int divx_packed
Definition: mpegvideo.h:405
MpegEncContext::aspect_ratio_info
int aspect_ratio_info
Definition: mpegvideo.h:393
MpegEncContext::b_field_mv_table_base
int16_t(*[2][2][2] b_field_mv_table_base)[2]
Definition: mpegvideo.h:237
MpegEncContext::brd_scale
int brd_scale
Definition: mpegvideo.h:463
MpegEncContext::dct_quantize
int(* dct_quantize)(struct MpegEncContext *s, int16_t *block, int n, int qscale, int *overflow)
Definition: mpegvideo.h:531
f
#define f(width, name)
Definition: cbs_vp9.c:255
PutBitContext
Definition: put_bits.h:49
MpegEncContext::mb_stride
int mb_stride
mb_width+1 used for some arrays to allow simple addressing of left & top MBs without sig11
Definition: mpegvideo.h:120
MpegEncContext::bitstream_buffer_size
int bitstream_buffer_size
Definition: mpegvideo.h:407
MpegEncContext::low_delay
int low_delay
no reordering needed / has no B-frames
Definition: mpegvideo.h:397
MpegEncContext::b_direct_mv_table
int16_t(* b_direct_mv_table)[2]
MV table (1MV per MB) direct mode B-frame encoding.
Definition: mpegvideo.h:243
PixblockDSPContext
Definition: pixblockdsp.h:28
ff_mpv_frame_end
void ff_mpv_frame_end(MpegEncContext *s)
Definition: mpegvideo.c:1409
MpegEncContext::inter_ac_vlc_last_length
uint8_t * inter_ac_vlc_last_length
Definition: mpegvideo.h:306
ff_mpv_reconstruct_mb
void ff_mpv_reconstruct_mb(MpegEncContext *s, int16_t block[12][64])
Definition: mpegvideo.c:2252
MECmpContext
Definition: me_cmp.h:53
MpegEncContext::prev_mb_info
int prev_mb_info
Definition: mpegvideo.h:360
MpegEncContext::pb2
PutBitContext pb2
used for data partitioned VOPs
Definition: mpegvideo.h:400
MpegEncContext::field_select
int field_select[2][2]
Definition: mpegvideo.h:267
AVClass
Describe the class of an AVClass context structure.
Definition: log.h:66
MpegEncContext::chroma_420_type
int chroma_420_type
Definition: mpegvideo.h:475
ff_mpv_common_end
void ff_mpv_common_end(MpegEncContext *s)
Definition: mpegvideo.c:1113
MpegEncContext::mb_y
int mb_y
Definition: mpegvideo.h:278
MpegEncContext::h263_long_vectors
int h263_long_vectors
use horrible H.263v1 long vector mode
Definition: mpegvideo.h:214
MpegEncContext::dct_error_sum
int(* dct_error_sum)[64]
Definition: mpegvideo.h:322
MpegEncContext::f_code
int f_code
forward MV resolution
Definition: mpegvideo.h:228
MpegEncContext::header_bits
int header_bits
Definition: mpegvideo.h:335
MpegEncContext::h263_aic
int h263_aic
Advanced INTRA Coding (AIC)
Definition: mpegvideo.h:77
MpegEncContext::parse_context
ParseContext parse_context
Definition: mpegvideo.h:353
AVRational
Rational number (pair of numerator and denominator).
Definition: rational.h:58
MpegEncContext::esc3_run_length
int esc3_run_length
Definition: mpegvideo.h:432
MpegEncContext::intra_chroma_ac_vlc_last_length
uint8_t * intra_chroma_ac_vlc_last_length
Definition: mpegvideo.h:304
MpegEncContext::p_mv_table
int16_t(* p_mv_table)[2]
MV table (1MV per MB) P-frame encoding.
Definition: mpegvideo.h:238
ff_dct_quantize_c
int ff_dct_quantize_c(MpegEncContext *s, int16_t *block, int n, int qscale, int *overflow)
Definition: mpegvideo_enc.c:4507
MpegEncContext::y_dc_scale_table
const uint8_t * y_dc_scale_table
qscale -> y_dc_scale table
Definition: mpegvideo.h:178
MpegEncContext::inter_matrix
uint16_t inter_matrix[64]
Definition: mpegvideo.h:292
MpegEncContext::mecc
MECmpContext mecc
Definition: mpegvideo.h:221
MpegEncContext::hdsp
HpelDSPContext hdsp
Definition: mpegvideo.h:219
src
#define src
Definition: vp8dsp.c:255
MpegEncContext::decode_mb
int(* decode_mb)(struct MpegEncContext *s, int16_t block[12][64])
Definition: mpegvideo.h:504
MpegEncContext::concealment_motion_vectors
int concealment_motion_vectors
Definition: mpegvideo.h:461
MpegEncContext::mb_info_ptr
uint8_t * mb_info_ptr
Definition: mpegvideo.h:361
MpegEncContext::mv_bits
int mv_bits
Definition: mpegvideo.h:334
MpegEncContext::rc_buffer_aggressivity
float rc_buffer_aggressivity
Definition: mpegvideo.h:546
ff_update_duplicate_context
int ff_update_duplicate_context(MpegEncContext *dst, MpegEncContext *src)
Definition: mpegvideo.c:499
MpegEncContext::b8_stride
int b8_stride
2*mb_width+1 used for some 8x8 block arrays to allow simple addressing
Definition: mpegvideo.h:121
qpeldsp.h
MpegEncContext::next_p_frame_damaged
int next_p_frame_damaged
set if the next p frame is damaged, to avoid showing trashed B-frames
Definition: mpegvideo.h:350
MpegEncContext::dct_unquantize_mpeg1_inter
void(* dct_unquantize_mpeg1_inter)(struct MpegEncContext *s, int16_t *block, int n, int qscale)
Definition: mpegvideo.h:517
MpegEncContext::last_picture_ptr
Picture * last_picture_ptr
pointer to the previous picture.
Definition: mpegvideo.h:172
MpegEncContext::closed_gop
int closed_gop
MPEG1/2 GOP is closed.
Definition: mpegvideo.h:201
MpegEncContext::pdsp
PixblockDSPContext pdsp
Definition: mpegvideo.h:224
MpegEncContext::me
MotionEstContext me
Definition: mpegvideo.h:272
MpegEncContext::slice_context_count
int slice_context_count
number of used thread_contexts
Definition: mpegvideo.h:146
MpegEncContext::scenechange_threshold
int scenechange_threshold
Definition: mpegvideo.h:575
op_pixels_func
void(* op_pixels_func)(uint8_t *block, const uint8_t *pixels, ptrdiff_t line_size, int h)
Definition: hpeldsp.h:38
MpegEncContext::pb_time
uint16_t pb_time
time distance between the last b and p,s,i frame
Definition: mpegvideo.h:384
MpegEncContext::q_inter_matrix16
uint16_t(* q_inter_matrix16)[2][64]
Definition: mpegvideo.h:319
MpegEncContext::quant_precision
int quant_precision
Definition: mpegvideo.h:391
qpel_mc_func
void(* qpel_mc_func)(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
Definition: qpeldsp.h:65
MpegEncContext::blocks
int16_t(* blocks)[12][64]
Definition: mpegvideo.h:503
AVCodecID
AVCodecID
Identify the syntax and semantics of the bitstream.
Definition: codec_id.h:47
MpegEncContext::idsp
IDCTDSPContext idsp
Definition: mpegvideo.h:220
MpegEncContext::c_dc_scale
int c_dc_scale
Definition: mpegvideo.h:74
MpegEncContext::b_bidir_forw_mv_table
int16_t(* b_bidir_forw_mv_table)[2]
MV table (1MV per MB) bidir mode B-frame encoding.
Definition: mpegvideo.h:241
MpegEncContext::strict_std_compliance
int strict_std_compliance
strictly follow the std (MPEG-4, ...)
Definition: mpegvideo.h:108
HpelDSPContext
Half-pel DSP context.
Definition: hpeldsp.h:45
MpegEncContext::pb_field_time
uint16_t pb_field_time
like above, just for interlaced
Definition: mpegvideo.h:386
MpegEncContext::coded_block_base
uint8_t * coded_block_base
Definition: mpegvideo.h:181
MAX_LEVEL
#define MAX_LEVEL
Definition: rl.h:36
MpegEncContext::me_pre
int me_pre
prepass for motion estimation
Definition: mpegvideo.h:250
MpegEncContext::timecode_frame_start
int64_t timecode_frame_start
GOP timecode frame start number, in non drop frame format.
Definition: mpegvideo.h:457
MpegEncContext::q_chroma_intra_matrix16
uint16_t(* q_chroma_intra_matrix16)[2][64]
Definition: mpegvideo.h:318
mpegvideodsp.h
MpegEncContext::mb_intra
int mb_intra
Definition: mpegvideo.h:280
MpegEncContext::mdsp
MpegVideoDSPContext mdsp
Definition: mpegvideo.h:222
MpegEncContext::min_qcoeff
int min_qcoeff
minimum encodable coefficient
Definition: mpegvideo.h:298
MpegEncContext::chroma_qscale_table
const uint8_t * chroma_qscale_table
qscale -> chroma_qscale (H.263)
Definition: mpegvideo.h:180
MpegEncContext::last_mb_info
int last_mb_info
Definition: mpegvideo.h:360
ff_mpv_common_init_axp
void ff_mpv_common_init_axp(MpegEncContext *s)
Definition: mpegvideo_alpha.c:106
MpegEncContext::qscale
int qscale
QP.
Definition: mpegvideo.h:194
MpegEncContext::first_slice_line
int first_slice_line
used in MPEG-4 too to handle resync markers
Definition: mpegvideo.h:427
MpegEncContext::frame_skip_factor
int frame_skip_factor
Definition: mpegvideo.h:571
MpegEncContext::intra_matrix
uint16_t intra_matrix[64]
matrix transmitted in the bitstream
Definition: mpegvideo.h:290
MpegEncContext::lambda2
unsigned int lambda2
(lambda*lambda) >> FF_LAMBDA_SHIFT
Definition: mpegvideo.h:197
MpegEncContext::adaptive_quant
int adaptive_quant
use adaptive quantization
Definition: mpegvideo.h:199
MpegEncContext::v_edge_pos
int v_edge_pos
horizontal / vertical position of the right/bottom edge (pixel replication)
Definition: mpegvideo.h:122
MpegEncContext::dct_count
int dct_count[2]
Definition: mpegvideo.h:323
ff_mpv_motion
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])
Definition: mpegvideo_motion.c:974
MpegEncContext::tmp_frames
AVFrame * tmp_frames[MAX_B_FRAMES+2]
Definition: mpegvideo.h:565
MpegEncContext::b_frame_strategy
int b_frame_strategy
Definition: mpegvideo.h:566
MpegEncContext::qdsp
QpelDSPContext qdsp
Definition: mpegvideo.h:225
MpegEncContext::b_forw_mv_table
int16_t(* b_forw_mv_table)[2]
MV table (1MV per MB) forward mode B-frame encoding.
Definition: mpegvideo.h:239
MpegEncContext::sprite_warping_accuracy
int sprite_warping_accuracy
Definition: mpegvideo.h:394
h264chroma.h
MpegEncContext::intra_h_scantable
ScanTable intra_h_scantable
Definition: mpegvideo.h:82
MpegEncContext::interlaced_dct
int interlaced_dct
Definition: mpegvideo.h:485
MpegEncContext::error_rate
int error_rate
Definition: mpegvideo.h:562
MpegEncContext::encoding
int encoding
true if we are encoding (vs decoding)
Definition: mpegvideo.h:104
MpegEncContext::mbskip_table
uint8_t * mbskip_table
used to avoid copy if macroblock skipped (for black regions for example) and used for B-frame encodin...
Definition: mpegvideo.h:186
MAX_THREADS
#define MAX_THREADS
Definition: mpegvideo.h:64
MpegEncContext::dc_val
int16_t * dc_val[3]
used for MPEG-4 DC prediction, all 3 arrays must be continuous
Definition: mpegvideo.h:177
MpegEncContext::quarter_sample
int quarter_sample
1->qpel, 0->half pel ME/MC
Definition: mpegvideo.h:392
MpegEncContext::context_initialized
int context_initialized
Definition: mpegvideo.h:114
MpegEncContext::p_mv_table_base
int16_t(* p_mv_table_base)[2]
Definition: mpegvideo.h:230
MpegEncContext::dct_precision
int dct_precision
number of bits to represent the fractional part of time (encoder only)
Definition: mpegvideo.h:376
MpegEncContext::q_chroma_intra_matrix
int(* q_chroma_intra_matrix)[64]
Definition: mpegvideo.h:314
MpegEncContext::b_direct_mv_table_base
int16_t(* b_direct_mv_table_base)[2]
Definition: mpegvideo.h:235
mpegpicture.h
mpegvideodata.h
MpegEncContext::rl_chroma_table_index
int rl_chroma_table_index
Definition: mpegvideo.h:423
MpegEncContext::picture_in_gop_number
int picture_in_gop_number
0-> first pic in gop, ...
Definition: mpegvideo.h:118
MpegEncContext::pred
int pred
Definition: mpegvideo.h:417
MpegEncContext::context_reinit
int context_reinit
Definition: mpegvideo.h:558
MpegEncContext::p_field_select_table
uint8_t *[2] p_field_select_table
Definition: mpegvideo.h:246
MpegEncContext::intra_ac_vlc_last_length
uint8_t * intra_ac_vlc_last_length
Definition: mpegvideo.h:302
ff_mpv_common_init
int ff_mpv_common_init(MpegEncContext *s)
init common structure for both encoder and decoder.
Definition: mpegvideo.c:913
ff_init_block_index
void ff_init_block_index(MpegEncContext *s)
Definition: mpegvideo.c:2271
MpegEncContext::full_pel
int full_pel[2]
Definition: mpegvideo.h:484
ff_update_block_index
static void ff_update_block_index(MpegEncContext *s)
Definition: mpegvideo.h:742
ff_mpeg_draw_horiz_band
void ff_mpeg_draw_horiz_band(MpegEncContext *s, int y, int h)
Definition: mpegvideo.c:2264
MpegEncContext::block_last_index
int block_last_index[12]
last non zero coefficient in block
Definition: mpegvideo.h:76
MpegEncContext::real_sprite_warping_points
int real_sprite_warping_points
Definition: mpegvideo.h:387
MpegEncContext::chroma_elim_threshold
int chroma_elim_threshold
Definition: mpegvideo.h:107
MpegEncContext::dc_val_base
int16_t * dc_val_base
Definition: mpegvideo.h:176
MpegEncContext::current_picture_ptr
Picture * current_picture_ptr
pointer to the current picture
Definition: mpegvideo.h:174
MpegvideoEncDSPContext
Definition: mpegvideoencdsp.h:32
MpegEncContext::last_mv
int last_mv[2][2][2]
last MV, used for MV prediction in MPEG-1 & B-frame MPEG-4
Definition: mpegvideo.h:268
MpegEncContext::uvlinesize
ptrdiff_t uvlinesize
line size, for chroma in bytes, may be different from width
Definition: mpegvideo.h:125
ff_dct_encode_init_x86
void ff_dct_encode_init_x86(MpegEncContext *s)
Definition: mpegvideoenc.c:214
MpegEncContext::progressive_frame
int progressive_frame
Definition: mpegvideo.h:483
MpegEncContext::allocated_bitstream_buffer_size
unsigned int allocated_bitstream_buffer_size
Definition: mpegvideo.h:408
MpegEncContext::chroma_inter_matrix
uint16_t chroma_inter_matrix[64]
Definition: mpegvideo.h:293
ff_print_debug_info
void ff_print_debug_info(MpegEncContext *s, Picture *p, AVFrame *pict)
Definition: mpegvideo.c:1417
put_bits_count
static int put_bits_count(PutBitContext *s)
Definition: put_bits.h:79
MpegEncContext::mjpeg_ctx
struct MJpegContext * mjpeg_ctx
Definition: mpegvideo.h:415
ff_mpv_reallocate_putbitbuffer
int ff_mpv_reallocate_putbitbuffer(MpegEncContext *s, size_t threshold, size_t size_increase)
Definition: mpegvideo_enc.c:2745
MpegEncContext::esc3_level_length
int esc3_level_length
Definition: mpegvideo.h:431
MpegEncContext::obmc
int obmc
overlapped block motion compensation
Definition: mpegvideo.h:358
ff_mpv_common_init_neon
void ff_mpv_common_init_neon(MpegEncContext *s)
Definition: mpegvideo.c:127
MpegEncContext::tex_pb
PutBitContext tex_pb
used for data partitioned VOPs
Definition: mpegvideo.h:399
MpegEncContext::mb_x
int mb_x
Definition: mpegvideo.h:278
qmat16
static const int32_t qmat16[MAT_SIZE]
Definition: hq_hqadata.c:342
ff_mpv_common_init_ppc
void ff_mpv_common_init_ppc(MpegEncContext *s)
Definition: mpegvideo_altivec.c:119
ff_mpv_encode_end
int ff_mpv_encode_end(AVCodecContext *avctx)
Definition: mpegvideo_enc.c:964
MpegEncContext::thread_context
struct MpegEncContext * thread_context[MAX_THREADS]
Definition: mpegvideo.h:145
MpegEncContext::b_bidir_back_mv_table
int16_t(* b_bidir_back_mv_table)[2]
MV table (1MV per MB) bidir mode B-frame encoding.
Definition: mpegvideo.h:242
MpegEncContext::sc
ScratchpadContext sc
Definition: mpegvideo.h:192
MpegEncContext::pack_pblocks
int pack_pblocks
Definition: mpegvideo.h:499
fdctdsp.h
MpegEncContext::dc_table_index
int dc_table_index
Definition: mpegvideo.h:424
MpegEncContext::rc_qmod_amp
float rc_qmod_amp
Definition: mpegvideo.h:543
MpegEncContext::intra_vlc_format
int intra_vlc_format
Definition: mpegvideo.h:464
parser.h
ff_mpv_frame_start
int ff_mpv_frame_start(MpegEncContext *s, AVCodecContext *avctx)
generic function called after decoding the header and before a frame is decoded.
Definition: mpegvideo.c:1185
MpegEncContext::skipdct
int skipdct
skip dct and code zero residual
Definition: mpegvideo.h:210
MpegEncContext::er
ERContext er
Definition: mpegvideo.h:560
MpegEncContext::last_lambda_for
int last_lambda_for[5]
last lambda for a specific pict type
Definition: mpegvideo.h:209
MpegEncContext::vbv_delay_ptr
uint8_t * vbv_delay_ptr
pointer to vbv_delay in the bitstream
Definition: mpegvideo.h:447
MpegEncContext::b_forw_mv_table_base
int16_t(* b_forw_mv_table_base)[2]
Definition: mpegvideo.h:231
MpegEncContext::picture_number
int picture_number
Definition: mpegvideo.h:117
MpegEncContext::dct_unquantize_inter
void(* dct_unquantize_inter)(struct MpegEncContext *s, int16_t *block, int n, int qscale)
Definition: mpegvideo.h:529
ff_mpv_encode_init_x86
void ff_mpv_encode_init_x86(MpegEncContext *s)
idctdsp.h
MpegEncContext::motion_est
int motion_est
ME algorithm.
Definition: mpegvideo.h:248
MpegEncContext::h263_slice_structured
int h263_slice_structured
Definition: mpegvideo.h:368
avcodec.h
ff_clean_intra_table_entries
void ff_clean_intra_table_entries(MpegEncContext *s)
Clean dc, ac, coded_block for the current non-intra MB.
Definition: mpegvideo.c:1908
MpegEncContext::fixed_qscale
int fixed_qscale
fixed qscale if non zero
Definition: mpegvideo.h:103
get_bits_diff
static int get_bits_diff(MpegEncContext *s)
Definition: mpegvideo.h:757
MpegEncContext::last_non_b_pict_type
int last_non_b_pict_type
used for MPEG-4 gmc B-frames & ratecontrol
Definition: mpegvideo.h:205
MpegEncContext::block32
int32_t(* block32)[12][64]
Definition: mpegvideo.h:506
frame
these buffered frames must be flushed immediately if a new input produces new the filter must not call request_frame to get more It must just process the frame or queue it The task of requesting more frames is left to the filter s request_frame method or the application If a filter has several the filter must be ready for frames arriving randomly on any input any filter with several inputs will most likely require some kind of queuing mechanism It is perfectly acceptable to have a limited queue and to drop frames when the inputs are too unbalanced request_frame For filters that do not use the this method is called when a frame is wanted on an output For a it should directly call filter_frame on the corresponding output For a if there are queued frames already one of these frames should be pushed If the filter should request a frame on one of its repeatedly until at least one frame has been pushed Return or at least make progress towards producing a frame
Definition: filter_design.txt:264
MpegEncContext::sprite_offset
int sprite_offset[2][2]
sprite offset[isChroma][isMVY]
Definition: mpegvideo.h:388
MpegEncContext::mspel
int mspel
Definition: mpegvideo.h:436
IDCTDSPContext
Definition: idctdsp.h:53
MpegEncContext::rv10_version
int rv10_version
RV10 version: 0 or 3.
Definition: mpegvideo.h:411
me_cmp.h
mpeg12data.h
ff_mpv_common_init_mips
void ff_mpv_common_init_mips(MpegEncContext *s)
Definition: mpegvideo_init_mips.c:26
MpegEncContext::p_field_mv_table
int16_t(*[2][2] p_field_mv_table)[2]
MV table (2MV per MB) interlaced P-frame encoding.
Definition: mpegvideo.h:244
MpegEncContext::block
int16_t(* block)[64]
points to one of the following blocks
Definition: mpegvideo.h:502
MpegEncContext::dquant
int dquant
qscale difference to prev qscale
Definition: mpegvideo.h:200
MpegEncContext::chroma_x_shift
int chroma_x_shift
Definition: mpegvideo.h:480
ff_dct_encode_init
int ff_dct_encode_init(MpegEncContext *s)
Definition: mpegvideo_enc.c:291
QpelDSPContext
quarterpel DSP context
Definition: qpeldsp.h:72
AVCodecContext
main external API structure.
Definition: avcodec.h:383
MpegEncContext::intra_dc_precision
int intra_dc_precision
Definition: mpegvideo.h:458
ff_mpv_decode_init
void ff_mpv_decode_init(MpegEncContext *s, AVCodecContext *avctx)
Initialize the given MpegEncContext for decoding.
Definition: mpegvideo.c:699
MpegEncContext::per_mb_rl_table
int per_mb_rl_table
Definition: mpegvideo.h:430
MpegEncContext::seq_disp_ext
int seq_disp_ext
Definition: mpegvideo.h:466
MpegEncContext::skip_count
int skip_count
Definition: mpegvideo.h:341
MpegEncContext::flipflop_rounding
int flipflop_rounding
Definition: mpegvideo.h:428
MpegEncContext::ac_esc_length
int ac_esc_length
num of bits needed to encode the longest esc
Definition: mpegvideo.h:300
MpegEncContext::ehc_mode
int ehc_mode
Definition: mpegvideo.h:363
MpegEncContext::last_bits
int last_bits
temp var used for calculating the above vars
Definition: mpegvideo.h:343
MpegEncContext::dpcm_macroblock
int16_t(* dpcm_macroblock)[3][256]
Definition: mpegvideo.h:508
MpegEncContext::modified_quant
int modified_quant
Definition: mpegvideo.h:370
MpegEncContext::lmin
int lmin
Definition: mpegvideo.h:548
error_resilience.h
MpegEncContext::gop_picture_number
int gop_picture_number
index of the first picture of a GOP based on fake_pic_num & MPEG-1 specific
Definition: mpegvideo.h:445
MpegEncContext::rv10_first_dc_coded
int rv10_first_dc_coded[3]
Definition: mpegvideo.h:412
MpegEncContext::rc_eq
char * rc_eq
Definition: mpegvideo.h:551
mpegvideoencdsp.h
MpegEncContext::vbv_ignore_qmax
int vbv_ignore_qmax
Definition: mpegvideo.h:549
MpegEncContext::lmax
int lmax
Definition: mpegvideo.h:548
MpegEncContext::time
int64_t time
time of current frame
Definition: mpegvideo.h:381
MJpegContext
Holds JPEG frame data and Huffman table data.
Definition: mjpegenc.h:59
MpegEncContext::last_picture
Picture last_picture
copy of the previous picture structure.
Definition: mpegvideo.h:152
MpegEncContext::pred_dir_table
uint8_t * pred_dir_table
used to store pred_dir for partitioned decoding
Definition: mpegvideo.h:190
MpegEncContext::dct_unquantize_intra
void(* dct_unquantize_intra)(struct MpegEncContext *s, int16_t *block, int n, int qscale)
Definition: mpegvideo.h:527
MpegEncContext::resync_mb_x
int resync_mb_x
x position of last resync marker
Definition: mpegvideo.h:346
MpegEncContext::mpeg2_frame_rate_ext
AVRational mpeg2_frame_rate_ext
Definition: mpegvideo.h:208
VideoDSPContext
Definition: videodsp.h:41
MpegEncContext::no_rounding
int no_rounding
apply no rounding to motion compensation (MPEG-4, msmpeg4, ...) for B-frames rounding mode is always ...
Definition: mpegvideo.h:274
MpegEncContext::h263_aic_dir
int h263_aic_dir
AIC direction: 0 = left, 1 = top.
Definition: mpegvideo.h:367
MpegEncContext::dpcm_direction
int dpcm_direction
Definition: mpegvideo.h:507
MpegEncContext::dct_unquantize_mpeg2_inter
void(* dct_unquantize_mpeg2_inter)(struct MpegEncContext *s, int16_t *block, int n, int qscale)
Definition: mpegvideo.h:521
MpegEncContext::mpeg_quant
int mpeg_quant
Definition: mpegvideo.h:401
MpegEncContext::mb_info_size
int mb_info_size
Definition: mpegvideo.h:362
MpegEncContext::noise_reduction
int noise_reduction
Definition: mpegvideo.h:576
overflow
Undefined Behavior In the C some operations are like signed integer overflow
Definition: undefined.txt:3
MpegEncContext::inter_scantable
ScanTable inter_scantable
if inter == intra then intra should be used to reduce the cache usage
Definition: mpegvideo.h:80
MpegEncContext::luma_dc_vlc_length
uint8_t * luma_dc_vlc_length
Definition: mpegvideo.h:307
MpegEncContext::droppable
int droppable
Definition: mpegvideo.h:206
MpegEncContext::frame_skip_threshold
int frame_skip_threshold
Definition: mpegvideo.h:570
ScanTable
Scantable.
Definition: idctdsp.h:31
MpegEncContext::cbp_table
uint8_t * cbp_table
used to store cbp, ac_pred for partitioned decoding
Definition: mpegvideo.h:189
ff_mpv_common_init_arm
void ff_mpv_common_init_arm(MpegEncContext *s)
Definition: mpegvideo_arm.c:44
MpegEncContext::first_field
int first_field
is 1 for the first field of a field picture 0 otherwise
Definition: mpegvideo.h:486
MpegEncContext::q_scale_type
int q_scale_type
Definition: mpegvideo.h:462
H264ChromaContext
Definition: h264chroma.h:27
MpegEncContext::new_picture
Picture new_picture
copy of the source picture structure for encoding.
Definition: mpegvideo.h:164
AVPacket
This structure stores compressed data.
Definition: packet.h:350
ff_mpv_common_frame_size_change
int ff_mpv_common_frame_size_change(MpegEncContext *s)
Definition: mpegvideo.c:1057
MpegEncContext::last_mv_dir
int last_mv_dir
last mv_dir, used for B-frame encoding
Definition: mpegvideo.h:446
MpegEncContext::q_inter_matrix
int(* q_inter_matrix)[64]
Definition: mpegvideo.h:315
MAX_B_FRAMES
#define MAX_B_FRAMES
Definition: mpegvideo.h:66
videodsp.h
MpegEncContext::mb_info
int mb_info
interval for outputting info about mb offsets as side data
Definition: mpegvideo.h:359
MpegEncContext::next_lambda
int next_lambda
next lambda used for retrying to encode a frame
Definition: mpegvideo.h:330
MpegEncContext::reordered_input_picture
Picture ** reordered_input_picture
pointer to the next pictures in coded order for encoding
Definition: mpegvideo.h:128
int32_t
int32_t
Definition: audioconvert.c:56
MpegEncContext::coded_score
int coded_score[12]
Definition: mpegvideo.h:310
MpegEncContext::last_pict_type
int last_pict_type
Definition: mpegvideo.h:204
hpeldsp.h
MpegEncContext::msmpeg4_version
int msmpeg4_version
0=not msmpeg4, 1=mp41, 2=mp42, 3=mp43/divx3 4=wmv1/7 5=wmv2/8
Definition: mpegvideo.h:429
ff_write_quant_matrix
void ff_write_quant_matrix(PutBitContext *pb, uint16_t *matrix)
Definition: mpegvideo_enc.c:218
block
The exact code depends on how similar the blocks are and how related they are to the block
Definition: filter_design.txt:207
ff_mpv_enc_class
const AVClass ff_mpv_enc_class
Definition: mpegvideo_enc.c:99
MpegEncContext::misc_bits
int misc_bits
cbp, mb_type
Definition: mpegvideo.h:342
MpegEncContext::video_format
int video_format
Definition: mpegvideo.h:467
MpegEncContext::resync_mb_y
int resync_mb_y
y position of last resync marker
Definition: mpegvideo.h:347
h
h
Definition: vp9dsp_template.c:2038
MpegEncContext::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)
Definition: mpegvideo.h:144
MpegEncContext::mb_index2xy
int * mb_index2xy
mb_index -> mb_x + mb_y*mb_stride
Definition: mpegvideo.h:287
MpegEncContext::rc_qsquish
float rc_qsquish
ratecontrol qmin qmax limiting method 0-> clipping, 1-> use a nice continuous function to limit qscal...
Definition: mpegvideo.h:542
MpegEncContext::h263_plus
int h263_plus
H.263+ headers.
Definition: mpegvideo.h:99
MpegEncContext::start_mb_y
int start_mb_y
start mb_y of this thread (so current thread should process start_mb_y <= row < end_mb_y)
Definition: mpegvideo.h:143
MpegEncContext::block_wrap
int block_wrap[6]
Definition: mpegvideo.h:284
MpegEncContext::b_back_mv_table_base
int16_t(* b_back_mv_table_base)[2]
Definition: mpegvideo.h:232
AVTimecode
Definition: timecode.h:41
MpegEncContext::alternate_scan
int alternate_scan
Definition: mpegvideo.h:465
MpegEncContext::cplx_tab
float * cplx_tab
Definition: mpegvideo.h:554
int
int
Definition: ffmpeg_filter.c:156
put_bits.h
MpegEncContext::custom_pcf
int custom_pcf
Definition: mpegvideo.h:372
MpegEncContext::direct_scale_mv
int16_t direct_scale_mv[2][64]
precomputed to avoid divisions in ff_mpeg4_set_direct_mv
Definition: mpegvideo.h:270
MpegEncContext::c_dc_scale_table
const uint8_t * c_dc_scale_table
qscale -> c_dc_scale table
Definition: mpegvideo.h:179
MpegEncContext
MpegEncContext.
Definition: mpegvideo.h:71
MpegEncContext::bitstream_buffer
uint8_t * bitstream_buffer
Definition: mpegvideo.h:406
MpegEncContext::codec_id
enum AVCodecID codec_id
Definition: mpegvideo.h:102
MpegEncContext::b_bidir_back_mv_table_base
int16_t(* b_bidir_back_mv_table_base)[2]
Definition: mpegvideo.h:234
MpegEncContext::alt_inter_vlc
int alt_inter_vlc
alternative inter vlc
Definition: mpegvideo.h:369
MpegEncContext::intra_ac_vlc_length
uint8_t * intra_ac_vlc_length
Definition: mpegvideo.h:301
ff_mpv_report_decode_progress
void ff_mpv_report_decode_progress(MpegEncContext *s)
Definition: mpegvideo.c:2351
MpegEncContext::p_tex_bits
int p_tex_bits
Definition: mpegvideo.h:337
MpegEncContext::b_field_mv_table
int16_t(*[2][2][2] b_field_mv_table)[2]
MV table (4MV per MB) interlaced B-frame encoding.
Definition: mpegvideo.h:245
MpegEncContext::intra_v_scantable
ScanTable intra_v_scantable
Definition: mpegvideo.h:83
pixblockdsp.h
MpegEncContext::chroma_intra_matrix
uint16_t chroma_intra_matrix[64]
Definition: mpegvideo.h:291
MpegEncContext::lambda_table
int * lambda_table
Definition: mpegvideo.h:198
MpegEncContext::rtp_mode
int rtp_mode
Definition: mpegvideo.h:491
MpegEncContext::rl_table_index
int rl_table_index
Definition: mpegvideo.h:422
MpegEncContext::chroma_format
int chroma_format
Definition: mpegvideo.h:476
MpegEncContext::time_increment_bits
int time_increment_bits
Definition: mpegvideo.h:378
MpegEncContext::studio_profile
int studio_profile
Definition: mpegvideo.h:375
MpegEncContext::rc_qmod_freq
int rc_qmod_freq
Definition: mpegvideo.h:544
MpegEncContext::ac_pred
int ac_pred
Definition: mpegvideo.h:75
MpegEncContext::codec_tag
int codec_tag
internal codec_tag upper case converted from avctx codec_tag
Definition: mpegvideo.h:110