FFmpeg
Macros | Functions
mpegutils.h File Reference
#include <stdint.h>
#include "libavutil/frame.h"
#include "avcodec.h"

Go to the source code of this file.

Macros

#define PICT_TOP_FIELD   1
 
#define PICT_BOTTOM_FIELD   2
 
#define PICT_FRAME   3
 
#define MAX_MB_BYTES   (30 * 16 * 16 * 3 / 8 + 120)
 
#define MAX_FCODE   7
 
#define MB_TYPE_INTRA4x4   (1 << 0)
 
#define MB_TYPE_INTRA16x16   (1 << 1)
 
#define MB_TYPE_INTRA_PCM   (1 << 2)
 
#define MB_TYPE_16x16   (1 << 3)
 
#define MB_TYPE_16x8   (1 << 4)
 
#define MB_TYPE_8x16   (1 << 5)
 
#define MB_TYPE_8x8   (1 << 6)
 
#define MB_TYPE_INTERLACED   (1 << 7)
 
#define MB_TYPE_DIRECT2   (1 << 8)
 
#define MB_TYPE_CBP   (1 << 10)
 
#define MB_TYPE_QUANT   (1 << 11)
 
#define MB_TYPE_FORWARD_MV   (1 << 12)
 
#define MB_TYPE_BACKWARD_MV   (1 << 13)
 
#define MB_TYPE_BIDIR_MV   (MB_TYPE_FORWARD_MV | MB_TYPE_BACKWARD_MV)
 
#define MB_TYPE_P0L0   (1 << 12)
 
#define MB_TYPE_P1L0   (1 << 13)
 
#define MB_TYPE_P0L1   (1 << 14)
 
#define MB_TYPE_P1L1   (1 << 15)
 
#define MB_TYPE_L0   (MB_TYPE_P0L0 | MB_TYPE_P1L0)
 
#define MB_TYPE_L1   (MB_TYPE_P0L1 | MB_TYPE_P1L1)
 
#define MB_TYPE_L0L1   (MB_TYPE_L0 | MB_TYPE_L1)
 
#define MB_TYPE_GMC   (1 << 16)
 
#define MB_TYPE_SKIP   (1 << 17)
 
#define MB_TYPE_ACPRED   (1 << 18)
 
#define MB_TYPE_INTRA   MB_TYPE_INTRA4x4
 
#define MB_TYPE_CODEC_SPECIFIC   (1 << 9)
 
#define IS_INTRA4x4(a)   ((a) & MB_TYPE_INTRA4x4)
 
#define IS_INTRA16x16(a)   ((a) & MB_TYPE_INTRA16x16)
 
#define IS_PCM(a)   ((a) & MB_TYPE_INTRA_PCM)
 
#define IS_INTRA(a)   ((a) & 7)
 
#define IS_INTER(a)
 
#define IS_SKIP(a)   ((a) & MB_TYPE_SKIP)
 
#define IS_INTRA_PCM(a)   ((a) & MB_TYPE_INTRA_PCM)
 
#define IS_INTERLACED(a)   ((a) & MB_TYPE_INTERLACED)
 
#define IS_DIRECT(a)   ((a) & MB_TYPE_DIRECT2)
 
#define IS_GMC(a)   ((a) & MB_TYPE_GMC)
 
#define IS_16X16(a)   ((a) & MB_TYPE_16x16)
 
#define IS_16X8(a)   ((a) & MB_TYPE_16x8)
 
#define IS_8X16(a)   ((a) & MB_TYPE_8x16)
 
#define IS_8X8(a)   ((a) & MB_TYPE_8x8)
 
#define IS_ACPRED(a)   ((a) & MB_TYPE_ACPRED)
 
#define IS_QUANT(a)   ((a) & MB_TYPE_QUANT)
 
#define HAS_CBP(a)   ((a) & MB_TYPE_CBP)
 
#define HAS_FORWARD_MV(a)   ((a) & MB_TYPE_FORWARD_MV)
 
#define HAS_BACKWARD_MV(a)   ((a) & MB_TYPE_BACKWARD_MV)
 
#define HAS_MV(a, dir)   ((a) & (MB_TYPE_FORWARD_MV << (dir)))
 
#define MB_TYPE_MV_2_MV_DIR(a)   (((a) >> 12) & (MV_DIR_FORWARD | MV_DIR_BACKWARD))
 

Functions

void ff_draw_horiz_band (AVCodecContext *avctx, const AVFrame *cur, const AVFrame *last, int y, int h, int picture_structure, int first_field, int low_delay)
 Draw a horizontal band if supported. More...
 
void ff_print_debug_info2 (AVCodecContext *avctx, AVFrame *pict, const uint32_t *mbtype_table, const int8_t *qscale_table, int16_t(*const motion_val[2])[2], int mb_width, int mb_height, int mb_stride, int quarter_sample)
 Print debugging info for the given picture. More...
 

Macro Definition Documentation

◆ PICT_TOP_FIELD

#define PICT_TOP_FIELD   1

Definition at line 31 of file mpegutils.h.

◆ PICT_BOTTOM_FIELD

#define PICT_BOTTOM_FIELD   2

Definition at line 32 of file mpegutils.h.

◆ PICT_FRAME

#define PICT_FRAME   3

Definition at line 33 of file mpegutils.h.

◆ MAX_MB_BYTES

#define MAX_MB_BYTES   (30 * 16 * 16 * 3 / 8 + 120)

Definition at line 35 of file mpegutils.h.

◆ MAX_FCODE

#define MAX_FCODE   7

Definition at line 36 of file mpegutils.h.

◆ MB_TYPE_INTRA4x4

#define MB_TYPE_INTRA4x4   (1 << 0)

Definition at line 39 of file mpegutils.h.

◆ MB_TYPE_INTRA16x16

#define MB_TYPE_INTRA16x16   (1 << 1)

Definition at line 40 of file mpegutils.h.

◆ MB_TYPE_INTRA_PCM

#define MB_TYPE_INTRA_PCM   (1 << 2)

Definition at line 41 of file mpegutils.h.

◆ MB_TYPE_16x16

#define MB_TYPE_16x16   (1 << 3)

Definition at line 42 of file mpegutils.h.

◆ MB_TYPE_16x8

#define MB_TYPE_16x8   (1 << 4)

Definition at line 43 of file mpegutils.h.

◆ MB_TYPE_8x16

#define MB_TYPE_8x16   (1 << 5)

Definition at line 44 of file mpegutils.h.

◆ MB_TYPE_8x8

#define MB_TYPE_8x8   (1 << 6)

Definition at line 45 of file mpegutils.h.

◆ MB_TYPE_INTERLACED

#define MB_TYPE_INTERLACED   (1 << 7)

Definition at line 46 of file mpegutils.h.

◆ MB_TYPE_DIRECT2

#define MB_TYPE_DIRECT2   (1 << 8)

Definition at line 47 of file mpegutils.h.

◆ MB_TYPE_CBP

#define MB_TYPE_CBP   (1 << 10)

Definition at line 48 of file mpegutils.h.

◆ MB_TYPE_QUANT

#define MB_TYPE_QUANT   (1 << 11)

Definition at line 49 of file mpegutils.h.

◆ MB_TYPE_FORWARD_MV

#define MB_TYPE_FORWARD_MV   (1 << 12)

Definition at line 50 of file mpegutils.h.

◆ MB_TYPE_BACKWARD_MV

#define MB_TYPE_BACKWARD_MV   (1 << 13)

Definition at line 51 of file mpegutils.h.

◆ MB_TYPE_BIDIR_MV

#define MB_TYPE_BIDIR_MV   (MB_TYPE_FORWARD_MV | MB_TYPE_BACKWARD_MV)

Definition at line 52 of file mpegutils.h.

◆ MB_TYPE_P0L0

#define MB_TYPE_P0L0   (1 << 12)

Definition at line 54 of file mpegutils.h.

◆ MB_TYPE_P1L0

#define MB_TYPE_P1L0   (1 << 13)

Definition at line 55 of file mpegutils.h.

◆ MB_TYPE_P0L1

#define MB_TYPE_P0L1   (1 << 14)

Definition at line 56 of file mpegutils.h.

◆ MB_TYPE_P1L1

#define MB_TYPE_P1L1   (1 << 15)

Definition at line 57 of file mpegutils.h.

◆ MB_TYPE_L0

#define MB_TYPE_L0   (MB_TYPE_P0L0 | MB_TYPE_P1L0)

Definition at line 58 of file mpegutils.h.

◆ MB_TYPE_L1

#define MB_TYPE_L1   (MB_TYPE_P0L1 | MB_TYPE_P1L1)

Definition at line 59 of file mpegutils.h.

◆ MB_TYPE_L0L1

#define MB_TYPE_L0L1   (MB_TYPE_L0 | MB_TYPE_L1)

Definition at line 60 of file mpegutils.h.

◆ MB_TYPE_GMC

#define MB_TYPE_GMC   (1 << 16)

Definition at line 61 of file mpegutils.h.

◆ MB_TYPE_SKIP

#define MB_TYPE_SKIP   (1 << 17)

Definition at line 62 of file mpegutils.h.

◆ MB_TYPE_ACPRED

#define MB_TYPE_ACPRED   (1 << 18)

Definition at line 63 of file mpegutils.h.

◆ MB_TYPE_INTRA

#define MB_TYPE_INTRA   MB_TYPE_INTRA4x4

Definition at line 65 of file mpegutils.h.

◆ MB_TYPE_CODEC_SPECIFIC

#define MB_TYPE_CODEC_SPECIFIC   (1 << 9)

Definition at line 68 of file mpegutils.h.

◆ IS_INTRA4x4

#define IS_INTRA4x4 (   a)    ((a) & MB_TYPE_INTRA4x4)

Definition at line 70 of file mpegutils.h.

◆ IS_INTRA16x16

#define IS_INTRA16x16 (   a)    ((a) & MB_TYPE_INTRA16x16)

Definition at line 71 of file mpegutils.h.

◆ IS_PCM

#define IS_PCM (   a)    ((a) & MB_TYPE_INTRA_PCM)

Definition at line 72 of file mpegutils.h.

◆ IS_INTRA

#define IS_INTRA (   a)    ((a) & 7)

Definition at line 73 of file mpegutils.h.

◆ IS_INTER

#define IS_INTER (   a)
Value:

Definition at line 74 of file mpegutils.h.

◆ IS_SKIP

#define IS_SKIP (   a)    ((a) & MB_TYPE_SKIP)

Definition at line 76 of file mpegutils.h.

◆ IS_INTRA_PCM

#define IS_INTRA_PCM (   a)    ((a) & MB_TYPE_INTRA_PCM)

Definition at line 77 of file mpegutils.h.

◆ IS_INTERLACED

#define IS_INTERLACED (   a)    ((a) & MB_TYPE_INTERLACED)

Definition at line 78 of file mpegutils.h.

◆ IS_DIRECT

#define IS_DIRECT (   a)    ((a) & MB_TYPE_DIRECT2)

Definition at line 79 of file mpegutils.h.

◆ IS_GMC

#define IS_GMC (   a)    ((a) & MB_TYPE_GMC)

Definition at line 80 of file mpegutils.h.

◆ IS_16X16

#define IS_16X16 (   a)    ((a) & MB_TYPE_16x16)

Definition at line 81 of file mpegutils.h.

◆ IS_16X8

#define IS_16X8 (   a)    ((a) & MB_TYPE_16x8)

Definition at line 82 of file mpegutils.h.

◆ IS_8X16

#define IS_8X16 (   a)    ((a) & MB_TYPE_8x16)

Definition at line 83 of file mpegutils.h.

◆ IS_8X8

#define IS_8X8 (   a)    ((a) & MB_TYPE_8x8)

Definition at line 84 of file mpegutils.h.

◆ IS_ACPRED

#define IS_ACPRED (   a)    ((a) & MB_TYPE_ACPRED)

Definition at line 85 of file mpegutils.h.

◆ IS_QUANT

#define IS_QUANT (   a)    ((a) & MB_TYPE_QUANT)

Definition at line 86 of file mpegutils.h.

◆ HAS_CBP

#define HAS_CBP (   a)    ((a) & MB_TYPE_CBP)

Definition at line 88 of file mpegutils.h.

◆ HAS_FORWARD_MV

#define HAS_FORWARD_MV (   a)    ((a) & MB_TYPE_FORWARD_MV)

Definition at line 89 of file mpegutils.h.

◆ HAS_BACKWARD_MV

#define HAS_BACKWARD_MV (   a)    ((a) & MB_TYPE_BACKWARD_MV)

Definition at line 90 of file mpegutils.h.

◆ HAS_MV

#define HAS_MV (   a,
  dir 
)    ((a) & (MB_TYPE_FORWARD_MV << (dir)))

Definition at line 92 of file mpegutils.h.

◆ MB_TYPE_MV_2_MV_DIR

#define MB_TYPE_MV_2_MV_DIR (   a)    (((a) >> 12) & (MV_DIR_FORWARD | MV_DIR_BACKWARD))

Definition at line 94 of file mpegutils.h.

Function Documentation

◆ ff_draw_horiz_band()

void ff_draw_horiz_band ( AVCodecContext avctx,
const AVFrame cur,
const AVFrame last,
int  y,
int  h,
int  picture_structure,
int  first_field,
int  low_delay 
)

Draw a horizontal band if supported.

Parameters
his the normal height, this will be reduced automatically if needed

Definition at line 54 of file mpegutils.c.

Referenced by ff_intrax8_decode_picture(), ff_mpeg_draw_horiz_band(), and svq3_decode_frame().

◆ ff_print_debug_info2()

void ff_print_debug_info2 ( AVCodecContext avctx,
AVFrame pict,
const uint32_t *  mbtype_table,
const int8_t *  qscale_table,
int16_t(*[2])  motion_val[2],
int  mb_width,
int  mb_height,
int  mb_stride,
int  quarter_sample 
)

Print debugging info for the given picture.

Definition at line 155 of file mpegutils.c.

Referenced by ff_print_debug_info(), and finalize_frame().

MB_TYPE_16x8
#define MB_TYPE_16x8
Definition: mpegutils.h:43
MB_TYPE_16x16
#define MB_TYPE_16x16
Definition: mpegutils.h:42
MB_TYPE_8x16
#define MB_TYPE_8x16
Definition: mpegutils.h:44
MB_TYPE_8x8
#define MB_TYPE_8x8
Definition: mpegutils.h:45
a
The reader does not expect b to be semantically here and if the code is changed by maybe adding a a division or other the signedness will almost certainly be mistaken To avoid this confusion a new type was SUINT is the C unsigned type but it holds a signed int to use the same example SUINT a
Definition: undefined.txt:41