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