28 #define UNCHECKED_BITSTREAM_READER 1 
   74 #define MB_TYPE_ZERO_MV   0x20000000 
  115         val  = (val - 1) << shift;
 
  127 #define MAX_INDEX (64 - 1) 
  128 #define check_scantable_index(ctx, x)                                         \ 
  130         if ((x) > MAX_INDEX) {                                                \ 
  131             av_log(ctx->avctx, AV_LOG_ERROR, "ac-tex damaged at %d %d\n",     \ 
  132                    ctx->mb_x, ctx->mb_y);                                     \ 
  133             return AVERROR_INVALIDDATA;                                       \ 
  144     const int qscale             = s->
qscale;
 
  152             level = (3 * qscale * quant_matrix[0]) >> 5;
 
  153             level = (level - 1) | 1;
 
  172                 level = ((level * 2 + 1) * qscale * quant_matrix[j]) >> 5;
 
  173                 level = (level - 1) | 1;
 
  187                 } 
else if (level == 0) {
 
  197                     level = ((level * 2 + 1) * qscale * quant_matrix[j]) >> 5;
 
  198                     level = (level - 1) | 1;
 
  201                     level = ((level * 2 + 1) * qscale * quant_matrix[j]) >> 5;
 
  202                     level = (level - 1) | 1;
 
  233     const int qscale         = s->
qscale;
 
  241             level = (3 * qscale) >> 1;
 
  242             level = (level - 1) | 1;
 
  262                 level = ((level * 2 + 1) * qscale) >> 1;
 
  263                 level = (level - 1) | 1;
 
  277                 } 
else if (level == 0) {
 
  287                     level = ((level * 2 + 1) * qscale) >> 1;
 
  288                     level = (level - 1) | 1;
 
  291                     level = ((level * 2 + 1) * qscale) >> 1;
 
  292                     level = (level - 1) | 1;
 
  318     const uint16_t *quant_matrix;
 
  319     const int qscale = s->
qscale;
 
  335             level = (3 * qscale * quant_matrix[0]) >> 5;
 
  356                 level = ((level * 2 + 1) * qscale * quant_matrix[j]) >> 5;
 
  373                     level = ((-level * 2 + 1) * qscale * quant_matrix[j]) >> 5;
 
  376                     level = ((level * 2 + 1) * qscale * quant_matrix[j]) >> 5;
 
  390     block[63] ^= (mismatch & 1);
 
  409     const int qscale         = s->
qscale;
 
  416         level = (3 * qscale) >> 1;
 
  435             level = ((level * 2 + 1) * qscale) >> 1;
 
  452                 level = ((-level * 2 + 1) * qscale) >> 1;
 
  455                 level = ((level * 2 + 1) * qscale) >> 1;
 
  482     const uint16_t *quant_matrix;
 
  483     const int qscale = s->
qscale;
 
  492         component    = (n & 1) + 1;
 
  502     mismatch = block[0] ^ 1;
 
  519             } 
else if (level != 0) {
 
  524                 level = (level * qscale * quant_matrix[j]) >> 4;
 
  540                     level = (-level * qscale * quant_matrix[j]) >> 4;
 
  543                     level = (level * qscale * quant_matrix[j]) >> 4;
 
  552     block[63] ^= mismatch & 1;
 
  572     const uint16_t *quant_matrix;
 
  573     const int qscale = s->
qscale;
 
  581         component    = (n & 1) + 1;
 
  604             if (level >= 64 || i > 63) {
 
  606             } 
else if (level != 0) {
 
  609                 level = (level * qscale * quant_matrix[j]) >> 4;
 
  623                     level = (-level * qscale * quant_matrix[j]) >> 4;
 
  626                     level = (level * qscale * quant_matrix[j]) >> 4;
 
  660     int i, j, k, cbp, 
val, mb_type, motion_type;
 
  688             if ((s->
mv[0][0][0] | s->
mv[0][0][1] | s->
mv[1][0][0] | s->
mv[1][0][1]) == 0)
 
  701                        "Invalid mb type in I-frame at %d %d\n",
 
  714                    "Invalid mb type in P-frame at %d %d\n", s->
mb_x, s->
mb_y);
 
  723                    "Invalid mb type in B-frame at %d %d\n", s->
mb_x, s->
mb_y);
 
  767         if ((CONFIG_MPEG1_XVMC_HWACCEL || CONFIG_MPEG2_XVMC_HWACCEL) && s->
pack_pblocks)
 
  772                 for (i = 0; i < 6; i++)
 
  775                 for (i = 0; i < mb_block_count; i++)
 
  780             for (i = 0; i < 6; i++) {
 
  836             s->
mv_dir = (mb_type >> 13) & 3;
 
  838             switch (motion_type) {
 
  843                     for (i = 0; i < 2; i++) {
 
  866                     for (i = 0; i < 2; i++) {
 
  869                             for (j = 0; j < 2; j++) {
 
  871                                 for (k = 0; k < 2; k++) {
 
  875                                     s->
mv[i][j][k]      = 
val;
 
  886                     for (i = 0; i < 2; i++) {
 
  888                             for (j = 0; j < 2; j++) {
 
  893                                 s->
mv[i][j][0]      = 
val;
 
  898                                 s->
mv[i][j][1]      = 
val;
 
  906                     for (i = 0; i < 2; i++) {
 
  909                             for (k = 0; k < 2; k++) {
 
  914                                 s->
mv[i][0][k]      = 
val;
 
  926                 for (i = 0; i < 2; i++) {
 
  928                         int dmx, dmy, mx, my, m;
 
  937                                                  s->
last_mv[i][0][1] >> my_shift);
 
  941                         s->
last_mv[i][0][1] = my * (1 << my_shift);
 
  942                         s->
last_mv[i][1][1] = my * (1 << my_shift);
 
  956                             s->
mv[i][2][0] = ((mx * m + (mx > 0)) >> 1) + dmx;
 
  957                             s->
mv[i][2][1] = ((my * m + (my > 0)) >> 1) + dmy - 1;
 
  959                             s->
mv[i][3][0] = ((mx * m + (mx > 0)) >> 1) + dmx;
 
  960                             s->
mv[i][3][1] = ((my * m + (my > 0)) >> 1) + dmy + 1;
 
  964                             s->
mv[i][2][0] = ((mx + (mx > 0)) >> 1) + dmx;
 
  965                             s->
mv[i][2][1] = ((my + (my > 0)) >> 1) + dmy;
 
  976                        "00 motion_type at %d %d\n", s->
mb_x, s->
mb_y);
 
  986             if (mb_block_count > 6) {
 
  987                 cbp *= 1 << mb_block_count - 6;
 
  993                        "invalid cbp %d at %d %d\n", cbp, s->
mb_x, s->
mb_y);
 
  998             if ((CONFIG_MPEG1_XVMC_HWACCEL || CONFIG_MPEG2_XVMC_HWACCEL) && s->
pack_pblocks)
 
 1003                     for (i = 0; i < 6; i++) {
 
 1011                     cbp <<= 12 - mb_block_count;
 
 1013                     for (i = 0; i < mb_block_count; i++) {
 
 1014                         if (cbp & (1 << 11)) {
 
 1025                     for (i = 0; i < 6; i++) {
 
 1033                     for (i = 0; i < 6; i++) {
 
 1045             for (i = 0; i < 12; i++)
 
 1085 static int mpeg_decode_update_thread_context(
AVCodecContext *avctx,
 
 1092     if (avctx == avctx_from               ||
 
 1093         !ctx_from->mpeg_enc_ctx_allocated ||
 
 1094         !
s1->context_initialized)
 
 1114     uint16_t temp_matrix[64];
 
 1117     memcpy(temp_matrix, matrix, 64 * 
sizeof(uint16_t));
 
 1119     for (i = 0; i < 64; i++)
 
 1120         matrix[new_perm[i]] = temp_matrix[old_perm[i]];
 
 1124 #if CONFIG_MPEG1_NVDEC_HWACCEL 
 1127 #if CONFIG_MPEG1_XVMC_HWACCEL 
 1130 #if CONFIG_MPEG1_VDPAU_HWACCEL 
 1138 #if CONFIG_MPEG2_NVDEC_HWACCEL 
 1141 #if CONFIG_MPEG2_XVMC_HWACCEL 
 1144 #if CONFIG_MPEG2_VDPAU_HWACCEL 
 1147 #if CONFIG_MPEG2_DXVA2_HWACCEL 
 1150 #if CONFIG_MPEG2_D3D11VA_HWACCEL 
 1154 #if CONFIG_MPEG2_VAAPI_HWACCEL 
 1157 #if CONFIG_MPEG2_VIDEOTOOLBOX_HWACCEL 
 1185                                 mpeg1_hwaccel_pixfmt_list_420 :
 
 1250                 ff_dlog(avctx, 
"aspect A %d/%d\n",
 
 1270     if ((
s1->mpeg_enc_ctx_allocated == 0)                   ||
 
 1278         if (
s1->mpeg_enc_ctx_allocated) {
 
 1283             s1->mpeg_enc_ctx_allocated = 0;
 
 1344         s1->mpeg_enc_ctx_allocated = 1;
 
 1354     int ref, f_code, vbv_delay;
 
 1389                "vbv_delay %d, ref %d type:%d\n", vbv_delay, ref, s->
pict_type);
 
 1399     int horiz_size_ext, vert_size_ext;
 
 1415     s->
width  |= (horiz_size_ext << 12);
 
 1416     s->
height |= (vert_size_ext  << 12);
 
 1418     s->
bit_rate += (bit_rate_ext << 18) * 400LL;
 
 1434                "profile: %d, level: %d ps: %d cf:%d vbv buffer: %d, bitrate:%"PRId64
"\n",
 
 1442     int color_description, 
w, 
h;
 
 1446     if (color_description) {
 
 1482     for (i = 0; i < nofco; i++) {
 
 1491                "pde (%"PRId16
",%"PRId16
") (%"PRId16
",%"PRId16
") (%"PRId16
",%"PRId16
")\n",
 
 1498                        uint16_t matrix1[64], 
int intra)
 
 1502     for (i = 0; i < 64; i++) {
 
 1509         if (intra && i == 0 && v != 8) {
 
 1545                "Missing picture start code, guessing missing values\n");
 
 1671                        "hardware accelerator failed to decode first field\n");
 
 1676         for (i = 0; i < 4; i++) {
 
 1692 #define DECODE_SLICE_ERROR -1 
 1693 #define DECODE_SLICE_OK     0 
 1761         const uint8_t *buf_end, *buf_start = *buf - 4; 
 
 1764         if (buf_end < *buf + buf_size)
 
 1781                    "qp:%d fc:%2d%2d%2d%2d %s %s %s %s %s dc:%d pstruct:%d fdct:%d cmv:%d qtype:%d ivlc:%d rff:%d %s\n",
 
 1801         if ((CONFIG_MPEG1_XVMC_HWACCEL || CONFIG_MPEG2_XVMC_HWACCEL) && s->
pack_pblocks)
 
 1812             int motion_x, motion_y, dir, i;
 
 1814             for (i = 0; i < 2; i++) {
 
 1815                 for (dir = 0; dir < 2; dir++) {
 
 1818                         motion_x = motion_y = 0;
 
 1821                         motion_x = s->
mv[dir][0][0];
 
 1822                         motion_y = s->
mv[dir][0][1];
 
 1824                         motion_x = s->
mv[dir][i][0];
 
 1825                         motion_y = s->
mv[dir][i][1];
 
 1856             s->
mb_y += 1 << field_pic;
 
 1868                 if (left >= 32 && !is_d10) {
 
 1920                     } 
else if (code == 35) {
 
 1937                            "skipped MB in I-frame at %d %d\n", s->
mb_x, s->
mb_y);
 
 1943                 for (i = 0; i < 12; i++)
 
 1952                     s->
mv[0][0][0]        = s->
mv[0][0][1]      = 0;
 
 1993         ff_dlog(c, 
"ret:%d resync:%d/%d mb:%d/%d ts:%d/%d ec:%d\n",
 
 2016             mb_y += (*buf&0xE0)<<2;
 
 2020         if (mb_y < 0 || mb_y >= s->
end_mb_y)
 
 2041                    "hardware accelerator failed to decode picture\n");
 
 2092     if (width == 0 || height == 0) {
 
 2094                "Invalid horizontal or vertical size value.\n");
 
 2122         for (i = 0; i < 64; i++) {
 
 2132         for (i = 0; i < 64; i++) {
 
 2194     for (i = 0; i < 64; i++) {
 
 2224                               const uint8_t *p, 
int buf_size)
 
 2228     if (buf_size >= 6 &&
 
 2229         p[0] == 
'G' && p[1] == 
'A' && p[2] == 
'9' && p[3] == 
'4' &&
 
 2230         p[4] == 3 && (p[5] & 0x40)) {
 
 2232         int cc_count = p[5] & 0x1f;
 
 2233         if (cc_count > 0 && buf_size >= 7 + cc_count * 3) {
 
 2245     } 
else if (buf_size >= 2 &&
 
 2246                p[0] == 0x03 && (p[1]&0x7f) == 0x01) {
 
 2263                 for (i = 0; i < cc_count && get_bits_left(&gb) >= 26; i++) {
 
 2272                         cap[0] = cap[1] = cap[2] = 0x00;
 
 2274                         field = (field == 2 ? 1 : 0);
 
 2276                         cap[0] = 0x04 | field;
 
 2286     } 
else if (buf_size >= 11 &&
 
 2287                p[0] == 
'C' && p[1] == 
'C' && p[2] == 0x01 && p[3] == 0xf8) {
 
 2317         for (i = 5; i + 6 <= buf_size && ((p[i] & 0xfe) == 0xfe); i += 6)
 
 2327                 uint8_t field1 = !!(p[4] & 0x80);
 
 2330                 for (i = 0; i < cc_count; i++) {
 
 2331                     cap[0] = (p[0] == 0xff && field1) ? 0xfc : 0xfd;
 
 2334                     cap[3] = (p[3] == 0xff && !field1) ? 0xfc : 0xfd;
 
 2349                                   const uint8_t *p, 
int buf_size)
 
 2352     const uint8_t *buf_end = p + buf_size;
 
 2357     for(i=0; !(!p[i-2] && !p[i-1] && p[i]==1) && i<buf_size; i++){
 
 2366             if (!memcmp(p+i, 
"\0TMPGEXS\0", 9)){
 
 2371     if (buf_end - p >= 5 &&
 
 2372         p[0] == 
'D' && p[1] == 
'T' && p[2] == 
'G' && p[3] == 
'1') {
 
 2380             if (buf_end - p < 1)
 
 2383             s1->
afd     = p[0] & 0x0f;
 
 2385     } 
else if (buf_end - p >= 6 &&
 
 2386                p[0] == 
'J' && p[1] == 
'P' && p[2] == 
'3' && p[3] == 
'D' &&
 
 2389         const uint8_t S3D_video_format_type = p[5] & 0x7F;
 
 2391         if (S3D_video_format_type == 0x03 ||
 
 2392             S3D_video_format_type == 0x04 ||
 
 2393             S3D_video_format_type == 0x08 ||
 
 2394             S3D_video_format_type == 0x23) {
 
 2398             switch (S3D_video_format_type) {
 
 2428     tc = s-> timecode_frame_start = 
get_bits(&s->
gb, 25);
 
 2430 #if FF_API_PRIVATE_OPT 
 2446                "GOP (%s) closed_gop=%d broken_link=%d\n",
 
 2452                          int *got_output, 
const uint8_t *
buf, 
int buf_size)
 
 2457     const uint8_t *buf_end = buf + buf_size;
 
 2458     int ret, input_size;
 
 2459     int last_code = 0, skip_frame = 0;
 
 2460     int picture_start_code_seen = 0;
 
 2466         if (start_code > 0x1ff) {
 
 2498         input_size = buf_end - buf_ptr;
 
 2502                    start_code, buf_ptr - buf, input_size);
 
 2505         switch (start_code) {
 
 2507             if (last_code == 0) {
 
 2513                        "ignoring SEQ_START_CODE after %X\n", last_code);
 
 2526             picture_start_code_seen = 1;
 
 2553                            "mpeg_decode_postinit() failure\n");
 
 2564                        "ignoring pic after %X\n", last_code);
 
 2574                 if (last_code == 0) {
 
 2578                            "ignoring seq ext after %X\n", last_code);
 
 2597                            "ignoring pic cod ext after %X\n", last_code);
 
 2608             if (last_code == 0) {
 
 2614                        "ignoring GOP_START_CODE after %X\n", last_code);
 
 2625                            "interlaced frame in progressive sequence, ignoring\n");
 
 2631                            "picture_structure %d invalid, ignoring\n",
 
 2654                     mb_y += (*buf_ptr&0xE0)<<2;
 
 2660                 if (buf_end - buf_ptr < 2) {
 
 2667                            "slice below image (%d >= %d)\n", mb_y, s2->
mb_height);
 
 2678                                    "Skipping B slice due to open GOP\n");
 
 2691                                "Skipping P slice due to !sync\n");
 
 2708                     if (mb_y < avctx->skip_top ||
 
 2728                            "current_picture not initialized\n");
 
 2739                     if (threshold <= mb_y) {
 
 2782     int buf_size = avpkt->
size;
 
 2806                              (
const uint8_t **) &buf, &buf_size) < 0)
 
 2833     ret = 
decode_chunks(avctx, picture, got_output, buf, buf_size);
 
 2834     if (ret<0 || *got_output) {
 
 2872     .
name                  = 
"mpeg1video",
 
 2888 #if CONFIG_MPEG1_NVDEC_HWACCEL 
 2891 #if CONFIG_MPEG1_VDPAU_HWACCEL 
 2894 #if CONFIG_MPEG1_VIDEOTOOLBOX_HWACCEL 
 2897 #if CONFIG_MPEG1_XVMC_HWACCEL 
 2905     .
name           = 
"mpeg2video",
 
 2921 #if CONFIG_MPEG2_DXVA2_HWACCEL 
 2924 #if CONFIG_MPEG2_D3D11VA_HWACCEL 
 2927 #if CONFIG_MPEG2_D3D11VA2_HWACCEL 
 2930 #if CONFIG_MPEG2_NVDEC_HWACCEL 
 2933 #if CONFIG_MPEG2_VAAPI_HWACCEL 
 2936 #if CONFIG_MPEG2_VDPAU_HWACCEL 
 2939 #if CONFIG_MPEG2_VIDEOTOOLBOX_HWACCEL 
 2942 #if CONFIG_MPEG2_XVMC_HWACCEL 
 2951     .
name           = 
"mpegvideo",
 
static const uint32_t btype2mb_type[11]
const uint16_t ff_mpeg1_default_non_intra_matrix[64]
static unsigned int show_bits_long(GetBitContext *s, int n)
Show 0-32 bits. 
#define AV_EF_AGGRESSIVE
consider things that a sane encoder should not do as an error 
const struct AVCodec * codec
const char const char void * val
discard all frames except keyframes 
void ff_init_block_index(MpegEncContext *s)
int64_t timecode_frame_start
GOP timecode frame start number, in non drop frame format. 
int(* start_frame)(AVCodecContext *avctx, const uint8_t *buf, uint32_t buf_size)
Called at the beginning of each frame or field picture. 
#define AVERROR_INVALIDDATA
Invalid data found when processing input. 
#define SLICE_FLAG_ALLOW_FIELD
allow draw_horiz_band() with field slices (MPEG-2 field pics) 
static int shift(int a, int b)
AVRational av_div_q(AVRational b, AVRational c)
Divide one rational by another. 
MPEG-2/4 4:2:0, H.264 default for 4:2:0. 
This structure describes decoded (raw) audio or video data. 
static void quant_matrix_rebuild(uint16_t *matrix, const uint8_t *old_perm, const uint8_t *new_perm)
#define HWACCEL_D3D11VA2(codec)
ptrdiff_t const GLvoid * data
int start_mb_y
start mb_y of this thread (so current thread should process start_mb_y <= row < end_mb_y) ...
#define MV_TYPE_FIELD
2 vectors, one per field 
#define HWACCEL_NVDEC(codec)
int last_mv[2][2][2]
last MV, used for MV prediction in MPEG-1 & B-frame MPEG-4 
int coded_width
Bitstream width / height, may be different from width/height e.g. 
static void mpeg_decode_sequence_display_extension(Mpeg1Context *s1)
planar YUV 4:4:4, 24bpp, (1 Cr & Cb sample per 1x1 Y samples) 
static unsigned int get_bits(GetBitContext *s, int n)
Read 1-25 bits. 
#define AV_LOG_WARNING
Something somehow does not look correct. 
av_cold void ff_mpeg12_init_vlcs(void)
int64_t bit_rate
the average bitrate 
int ff_set_dimensions(AVCodecContext *s, int width, int height)
Check that the provided frame dimensions are valid and set them on the codec context. 
hardware decoding through Videotoolbox 
int end_mb_y
end mb_y of this thread (so current thread should process start_mb_y <= row < end_mb_y) ...
static av_cold int init(AVCodecContext *avctx)
uint16_t chroma_intra_matrix[64]
const uint8_t ff_reverse[256]
int v_edge_pos
horizontal / vertical position of the right/bottom edge (pixel replication) 
uint16_t chroma_inter_matrix[64]
void ff_er_frame_end(ERContext *s)
static int mpeg2_fast_decode_block_non_intra(MpegEncContext *s, int16_t *block, int n)
Note: this function can read out of range and crash for corrupt streams. 
enum AVColorRange color_range
MPEG vs JPEG YUV range. 
static int check_marker(void *logctx, GetBitContext *s, const char *msg)
int repeat_pict
When decoding, this signals how much the picture must be delayed. 
Views are next to each other, but when upscaling apply a checkerboard pattern. 
#define AV_EF_COMPLIANT
consider all spec non compliances as errors 
void(* clear_blocks)(int16_t *blocks)
static void mpeg_decode_picture_coding_extension(Mpeg1Context *s1)
void ff_mpeg1_clean_buffers(MpegEncContext *s)
AVRational sample_aspect_ratio
sample aspect ratio (0 if unknown) That is the width of a pixel divided by the height of the pixel...
AVCodec ff_mpeg1video_decoder
char * av_timecode_make_mpeg_tc_string(char *buf, uint32_t tc25bit)
Get the timecode string from the 25-bit timecode format (MPEG GOP format). 
enum AVPixelFormat pix_fmt
Pixel format, see AV_PIX_FMT_xxx. 
static av_cold int mpeg_decode_init(AVCodecContext *avctx)
#define AV_EF_BITSTREAM
detect bitstream specification deviations 
void * av_mallocz(size_t size)
Allocate a memory block with alignment suitable for all memory accesses (including vectors if availab...
Views are next to each other. 
#define HWACCEL_D3D11VA(codec)
static void mpeg_decode_gop(AVCodecContext *avctx, const uint8_t *buf, int buf_size)
#define SLICE_MIN_START_CODE
const struct AVHWAccel * hwaccel
Hardware accelerator in use. 
static int get_dmv(MpegEncContext *s)
static int get_sbits(GetBitContext *s, int n)
static void decode(AVCodecContext *dec_ctx, AVPacket *pkt, AVFrame *frame, FILE *outfile)
int encoding
true if we are encoding (vs decoding) 
Macro definitions for various function/variable attributes. 
enum AVDiscard skip_frame
Skip decoding for selected frames. 
#define AV_CODEC_CAP_DELAY
Encoder or decoder requires flushing with NULL input at the end in order to give the complete and cor...
#define USES_LIST(a, list)
#define av_assert0(cond)
assert() equivalent, that is always enabled. 
void ff_mpeg_draw_horiz_band(MpegEncContext *s, int y, int h)
static const uint32_t ptype2mb_type[7]
#define SLICE_MAX_START_CODE
#define av_assert2(cond)
assert() equivalent, that does lie in speed critical code. 
Stereo 3D type: this structure describes how two videos are packed within a single video surface...
enum OutputFormat out_format
output format 
#define FF_DEBUG_PICT_INFO
static av_cold int end(AVCodecContext *avctx)
const float ff_mpeg1_aspect[16]
Multithreading support functions. 
#define AV_CODEC_FLAG_LOW_DELAY
Force low delay. 
int av_frame_ref(AVFrame *dst, const AVFrame *src)
Set up a new reference to the data described by the source frame. 
static int load_matrix(MpegEncContext *s, uint16_t matrix0[64], uint16_t matrix1[64], int intra)
uint8_t * extradata
some codecs need / can use extradata like Huffman tables. 
static enum AVPixelFormat mpeg_get_pixelformat(AVCodecContext *avctx)
static int mpeg1_fast_decode_block_inter(MpegEncContext *s, int16_t *block, int n)
Note: this function can read out of range and crash for corrupt streams. 
uint64_t_TMPL AV_WL64 unsigned int_TMPL AV_WL32 unsigned int_TMPL AV_WL24 unsigned int_TMPL AV_WL16 uint64_t_TMPL AV_WB64 unsigned int_TMPL AV_RB32
Picture current_picture
copy of the current picture structure. 
The data is the AVPanScan struct defined in libavcodec. 
void ff_xvmc_init_block(MpegEncContext *s)
Initialize the block field of the MpegEncContext pointer passed as parameter after making sure that t...
Structure to hold side data for an AVFrame. 
int av_image_check_sar(unsigned int w, unsigned int h, AVRational sar)
Check if the given sample aspect ratio of an image is valid. 
#define PICT_BOTTOM_FIELD
#define HWACCEL_DXVA2(codec)
static int get_bits_count(const GetBitContext *s)
void ff_xvmc_pack_pblocks(MpegEncContext *s, int cbp)
Fill individual block pointers, so there are no gaps in the data_block array in case not all blocks i...
av_cold void ff_mpv_idct_init(MpegEncContext *s)
int mb_height
number of MBs horizontally & vertically 
int lowres
low resolution decoding, 1-> 1/2 size, 2->1/4 size 
Video is not stereoscopic (and metadata has to be there). 
int av_reduce(int *dst_num, int *dst_den, int64_t num, int64_t den, int64_t max)
Reduce a fraction. 
int codec_tag
internal codec_tag upper case converted from avctx codec_tag 
void ff_thread_finish_setup(AVCodecContext *avctx)
If the codec defines update_thread_context(), call this when they are ready for the next thread to st...
#define AV_CODEC_FLAG_GRAY
Only decode/encode grayscale. 
Active Format Description data consisting of a single byte as specified in ETSI TS 101 154 using AVAc...
enum AVChromaLocation chroma_sample_location
This defines the location of chroma samples. 
const uint8_t * avpriv_find_start_code(const uint8_t *p, const uint8_t *end, uint32_t *state)
static void setup_hwaccel_for_pixfmt(AVCodecContext *avctx)
Libavcodec version macros. 
static int get_bits_left(GetBitContext *gb)
int slice_context_count
number of used thread_contexts 
#define UPDATE_CACHE(name, gb)
#define AV_LOG_ERROR
Something went wrong and cannot losslessly be recovered. 
int has_b_frames
Size of the frame reordering buffer in the decoder. 
int last_dc[3]
last DC values for MPEG-1 
void ff_er_add_slice(ERContext *s, int startx, int starty, int endx, int endy, int status)
Add a slice. 
#define PTRDIFF_SPECIFIER
int mb_skipped
MUST BE SET only during DECODING. 
int ff_combine_frame(ParseContext *pc, int next, const uint8_t **buf, int *buf_size)
Combine the (truncated) bitstream to a complete frame. 
static void mpeg_decode_sequence_extension(Mpeg1Context *s1)
#define NULL_IF_CONFIG_SMALL(x)
Return NULL if CONFIG_SMALL is true, otherwise the argument without modification. ...
static int mpeg1_decode_block_inter(MpegEncContext *s, int16_t *block, int n)
int active_thread_type
Which multithreading methods are in use by the codec. 
AVCodec ff_mpegvideo_decoder
#define AV_LOG_DEBUG
Stuff which is only useful for libav* developers. 
ATSC A53 Part 4 Closed Captions. 
int flags
AV_CODEC_FLAG_*. 
const char * name
Name of the codec implementation. 
static int mpeg_decode_motion(MpegEncContext *s, int fcode, int pred)
int width
width and height in 1/16 pel 
int low_delay
no reordering needed / has no B-frames 
static void mpeg_decode_user_data(AVCodecContext *avctx, const uint8_t *p, int buf_size)
The GOP timecode in 25 bit timecode format. 
#define CLOSE_READER(name, gb)
void ff_mpv_common_end(MpegEncContext *s)
static int decode_dc(GetBitContext *gb, int component)
attribute_deprecated int64_t timecode_frame_start
#define DECODE_SLICE_ERROR
#define GET_RL_VLC(level, run, name, gb, table, bits,max_depth, need_update)
planar YUV 4:2:2, 16bpp, (1 Cr & Cb sample per 2x1 Y samples) 
void ff_mpeg_flush(AVCodecContext *avctx)
XVideo Motion Acceleration via common packet passing. 
#define SKIP_BITS(name, gb, num)
#define ONLY_IF_THREADS_ENABLED(x)
Define a function with only the non-default version specified. 
int resync_mb_x
x position of last resync marker 
int rc_buffer_size
decoder bitstream buffer size 
AVStereo3D * av_stereo3d_create_side_data(AVFrame *frame)
Allocate a complete AVFrameSideData and add it to the frame. 
common internal API header 
static int mpeg_field_start(MpegEncContext *s, const uint8_t *buf, int buf_size)
const AVProfile ff_mpeg2_video_profiles[]
#define AV_CODEC_CAP_DRAW_HORIZ_BAND
Decoder can use draw_horiz_band callback. 
static int mpeg2_decode_block_non_intra(MpegEncContext *s, int16_t *block, int n)
int ff_mpv_export_qp_table(MpegEncContext *s, AVFrame *f, Picture *p, int qp_type)
enum AVPictureType pict_type
Picture type of the frame. 
int err_recognition
Error recognition; may misdetect some more or less valid parts as errors. 
#define FF_THREAD_FRAME
Decode more than one frame at once. 
static int vcr2_init_sequence(AVCodecContext *avctx)
uint8_t * mbskip_table
used to avoid copy if macroblock skipped (for black regions for example) and used for B-frame encodin...
int idct_algo
IDCT algorithm, see FF_IDCT_* below. 
int16_t(*[2] motion_val)[2]
Picture * current_picture_ptr
pointer to the current picture 
void ff_mpeg_er_frame_start(MpegEncContext *s)
static int mpeg_decode_a53_cc(AVCodecContext *avctx, const uint8_t *p, int buf_size)
ITU-R 601, SMPTE 274M 296M S314M(DV 4:1:1), mpeg2 4:2:2. 
#define MB_BTYPE_VLC_BITS
enum AVColorPrimaries color_primaries
Chromaticity coordinates of the source primaries. 
static unsigned int show_bits(GetBitContext *s, int n)
Show 1-25 bits. 
#define FF_THREAD_SLICE
Decode more than one part of a single frame at once. 
#define LAST_SKIP_BITS(name, gb, num)
static av_cold int mpeg_decode_end(AVCodecContext *avctx)
static av_always_inline int get_vlc2(GetBitContext *s, VLC_TYPE(*table)[2], int bits, int max_depth)
Parse a vlc code. 
static void mpeg_decode_quant_matrix_extension(MpegEncContext *s)
int16_t(*[12] pblocks)[64]
int block_last_index[12]
last non zero coefficient in block 
#define AV_EF_EXPLODE
abort decoding on minor error detection 
uint8_t idct_permutation[64]
IDCT input permutation. 
int ticks_per_frame
For some codecs, the time base is closer to the field rate than the frame rate. 
int mpeg_enc_ctx_allocated
#define check_scantable_index(ctx, x)
#define MB_TYPE_INTERLACED
HW acceleration through CUDA. 
int ff_mpeg_update_thread_context(AVCodecContext *dst, const AVCodecContext *src)
preferred ID for MPEG-1/2 video decoding 
RL_VLC_ELEM * rl_vlc[32]
decoding only 
#define SHOW_UBITS(name, gb, num)
void ff_mpv_decode_defaults(MpegEncContext *s)
Set the given MpegEncContext to defaults for decoding. 
int thread_count
thread count is used to decide how many independent tasks should be passed to execute() ...
static int mpeg1_decode_sequence(AVCodecContext *avctx, const uint8_t *buf, int buf_size)
static const float pred[4]
int first_field
is 1 for the first field of a field picture 0 otherwise 
#define AV_CODEC_CAP_SLICE_THREADS
Codec supports slice-based (or partition-based) multithreading. 
#define MV_TYPE_16X16
1 vector for the whole mb 
static int mpeg2_decode_block_intra(MpegEncContext *s, int16_t *block, int n)
enum AVStereo3DType type
How views are packed within the video. 
uint16_t inter_matrix[64]
static enum AVPixelFormat mpeg2_hwaccel_pixfmt_list_420[]
int concealment_motion_vectors
struct MpegEncContext * thread_context[MAX_THREADS]
Libavcodec external API header. 
Views are on top of each other. 
AVRational frame_rate_ext
static int mpeg2_fast_decode_block_intra(MpegEncContext *s, int16_t *block, int n)
Note: this function can read out of range and crash for corrupt streams. 
int linesize[AV_NUM_DATA_POINTERS]
For video, size in bytes of each picture line. 
#define AV_CODEC_FLAG2_FAST
Allow non spec compliant speedup tricks. 
#define MB_PTYPE_VLC_BITS
main external API structure. 
ScanTable intra_scantable
int height
picture size. must be a multiple of 16 
unsigned int codec_tag
fourcc (LSB first, so "ABCD" -> ('D'<<24) + ('C'<<16) + ('B'<<8) + 'A'). 
#define OPEN_READER(name, gb)
#define MV_TYPE_16X8
2 vectors, one per 16x8 block 
static int mpeg_decode_slice(MpegEncContext *s, int mb_y, const uint8_t **buf, int buf_size)
Decode a slice. 
void ff_print_debug_info(MpegEncContext *s, Picture *p, AVFrame *pict)
static unsigned int get_bits1(GetBitContext *s)
static void skip_bits1(GetBitContext *s)
int slice_flags
slice flags 
#define FF_CODEC_PROPERTY_CLOSED_CAPTIONS
static void skip_bits(GetBitContext *s, int n)
static const AVProfile profiles[]
AVFrameSideData * av_frame_new_side_data(AVFrame *frame, enum AVFrameSideDataType type, int size)
Add a new side data to a frame. 
int closed_gop
MPEG1/2 GOP is closed. 
unsigned int avpriv_toupper4(unsigned int x)
enum AVColorSpace colorspace
YUV colorspace type. 
Rational number (pair of numerator and denominator). 
enum AVColorTransferCharacteristic color_trc
Color Transfer Characteristic. 
#define HWACCEL_XVMC(codec)
HW acceleration through VDPAU, Picture.data[3] contains a VdpVideoSurface. 
static enum AVPixelFormat mpeg12_pixfmt_list_422[]
static int init_get_bits(GetBitContext *s, const uint8_t *buffer, int bit_size)
Initialize GetBitContext. 
#define GET_CACHE(name, gb)
const uint16_t ff_mpeg1_default_intra_matrix[256]
int ff_mpeg1_find_frame_end(ParseContext *pc, const uint8_t *buf, int buf_size, AVCodecParserContext *s)
Find the end of the current frame in the bitstream. 
const uint8_t ff_zigzag_direct[64]
enum AVPixelFormat ff_thread_get_format(AVCodecContext *avctx, const enum AVPixelFormat *fmt)
Wrapper around get_format() for frame-multithreaded codecs. 
int ff_mpv_frame_start(MpegEncContext *s, AVCodecContext *avctx)
generic function called after decoding the header and before a frame is decoded. 
HW decoding through DXVA2, Picture.data[3] contains a LPDIRECT3DSURFACE9 pointer. ...
static int mpeg_decode_frame(AVCodecContext *avctx, void *data, int *got_output, AVPacket *avpkt)
static int decode_chunks(AVCodecContext *avctx, AVFrame *picture, int *got_output, const uint8_t *buf, int buf_size)
int pict_type
AV_PICTURE_TYPE_I, AV_PICTURE_TYPE_P, AV_PICTURE_TYPE_B, ... 
static enum AVPixelFormat pix_fmts[]
av_cold void ff_mpeg12_common_init(MpegEncContext *s)
#define AV_CODEC_CAP_TRUNCATED
static av_const int sign_extend(int val, unsigned bits)
#define HWACCEL_VAAPI(codec)
void av_frame_unref(AVFrame *frame)
Unreference all the buffers referenced by frame and reset the frame fields. 
int skip_bottom
Number of macroblock rows at the bottom which are skipped. 
#define flags(name, subs,...)
uint8_t * data[AV_NUM_DATA_POINTERS]
pointer to the picture/channel planes. 
AVRational av_d2q(double d, int max)
Convert a double precision floating point number to a rational. 
int mv[2][4][2]
motion vectors for a macroblock first coordinate : 0 = forward 1 = backward second "         : depend...
#define FF_QSCALE_TYPE_MPEG2
int b8_stride
2*mb_width+1 used for some 8x8 block arrays to allow simple addressing 
Hardware surfaces for Direct3D11. 
the normal 219*2^(n-8) "MPEG" YUV ranges 
Picture * next_picture_ptr
pointer to the next picture (for bidir pred) 
struct AVCodecContext * avctx
#define SHOW_SBITS(name, gb, num)
static int av_cmp_q(AVRational a, AVRational b)
Compare two rationals. 
int ff_mpeg1_decode_block_intra(GetBitContext *gb, const uint16_t *quant_matrix, uint8_t *const scantable, int last_dc[3], int16_t *block, int index, int qscale)
discard all non reference 
const AVRational ff_mpeg2_aspect[16]
static enum AVPixelFormat mpeg1_hwaccel_pixfmt_list_420[]
planar YUV 4:2:0, 12bpp, (1 Cr & Cb sample per 2x2 Y samples) 
#define FF_DISABLE_DEPRECATION_WARNINGS
common internal api header. 
int mb_stride
mb_width+1 used for some arrays to allow simple addressing of left & top MBs without sig11 ...
void ff_mpv_decode_init(MpegEncContext *s, AVCodecContext *avctx)
static int ref[MAX_W *MAX_W]
#define FF_CODEC_CAP_SKIP_FRAME_FILL_PARAM
The decoder extracts and fills its parameters even if the frame is skipped due to the skip_frame sett...
AVCodec ff_mpeg2video_decoder
static int mpeg_decode_mb(MpegEncContext *s, int16_t block[12][64])
const uint8_t * buffer_end
static void flush(AVCodecContext *avctx)
Picture * last_picture_ptr
pointer to the previous picture. 
static int mpeg1_decode_picture(AVCodecContext *avctx, const uint8_t *buf, int buf_size)
unsigned properties
Properties of the stream that gets decoded. 
const uint8_t ff_alternate_vertical_scan[64]
int ff_update_duplicate_context(MpegEncContext *dst, MpegEncContext *src)
static int slice_end(AVCodecContext *avctx, AVFrame *pict)
Handle slice ends. 
int16_t position[3][2]
position of the top left corner in 1/16 pel for up to 3 fields/frames 
av_cold int ff_mpv_common_init(MpegEncContext *s)
init common structure for both encoder and decoder. 
static int mpeg_decode_postinit(AVCodecContext *avctx)
static av_always_inline int diff(const uint32_t a, const uint32_t b)
av_cold void ff_init_scantable(uint8_t *permutation, ScanTable *st, const uint8_t *src_scantable)
#define FF_DEBUG_STARTCODE
int(* execute)(struct AVCodecContext *c, int(*func)(struct AVCodecContext *c2, void *arg), void *arg2, int *ret, int count, int size)
The codec may call this to execute several independent things. 
#define FF_ENABLE_DEPRECATION_WARNINGS
void ff_mpv_frame_end(MpegEncContext *s)
#define MV_TYPE_DMV
2 vectors, special mpeg2 Dual Prime Vectors 
void ff_mpv_reconstruct_mb(MpegEncContext *s, int16_t block[12][64])
int resync_mb_y
y position of last resync marker 
int16_t(* block)[64]
points to one of the following blocks 
ParseContext parse_context
VLC_TYPE(* table)[2]
code, bits 
int64_t bit_rate
wanted bit rate 
int key_frame
1 -> keyframe, 0-> not 
static const uint8_t * align_get_bits(GetBitContext *s)
int flags2
AV_CODEC_FLAG2_*. 
MpegEncContext mpeg_enc_ctx
uint8_t pi<< 24) CONV_FUNC_GROUP(AV_SAMPLE_FMT_FLT, float, AV_SAMPLE_FMT_U8, uint8_t,(*(constuint8_t *) pi-0x80)*(1.0f/(1<< 7))) CONV_FUNC_GROUP(AV_SAMPLE_FMT_DBL, double, AV_SAMPLE_FMT_U8, uint8_t,(*(constuint8_t *) pi-0x80)*(1.0/(1<< 7))) CONV_FUNC_GROUP(AV_SAMPLE_FMT_U8, uint8_t, AV_SAMPLE_FMT_S16, int16_t,(*(constint16_t *) pi >>8)+0x80) CONV_FUNC_GROUP(AV_SAMPLE_FMT_FLT, float, AV_SAMPLE_FMT_S16, int16_t,*(constint16_t *) pi *(1.0f/(1<< 15))) CONV_FUNC_GROUP(AV_SAMPLE_FMT_DBL, double, AV_SAMPLE_FMT_S16, int16_t,*(constint16_t *) pi *(1.0/(1<< 15))) CONV_FUNC_GROUP(AV_SAMPLE_FMT_U8, uint8_t, AV_SAMPLE_FMT_S32, int32_t,(*(constint32_t *) pi >>24)+0x80) CONV_FUNC_GROUP(AV_SAMPLE_FMT_FLT, float, AV_SAMPLE_FMT_S32, int32_t,*(constint32_t *) pi *(1.0f/(1U<< 31))) CONV_FUNC_GROUP(AV_SAMPLE_FMT_DBL, double, AV_SAMPLE_FMT_S32, int32_t,*(constint32_t *) pi *(1.0/(1U<< 31))) CONV_FUNC_GROUP(AV_SAMPLE_FMT_U8, uint8_t, AV_SAMPLE_FMT_FLT, float, av_clip_uint8(lrintf(*(constfloat *) pi *(1<< 7))+0x80)) CONV_FUNC_GROUP(AV_SAMPLE_FMT_S16, int16_t, AV_SAMPLE_FMT_FLT, float, av_clip_int16(lrintf(*(constfloat *) pi *(1<< 15)))) CONV_FUNC_GROUP(AV_SAMPLE_FMT_S32, int32_t, AV_SAMPLE_FMT_FLT, float, av_clipl_int32(llrintf(*(constfloat *) pi *(1U<< 31)))) CONV_FUNC_GROUP(AV_SAMPLE_FMT_U8, uint8_t, AV_SAMPLE_FMT_DBL, double, av_clip_uint8(lrint(*(constdouble *) pi *(1<< 7))+0x80)) CONV_FUNC_GROUP(AV_SAMPLE_FMT_S16, int16_t, AV_SAMPLE_FMT_DBL, double, av_clip_int16(lrint(*(constdouble *) pi *(1<< 15)))) CONV_FUNC_GROUP(AV_SAMPLE_FMT_S32, int32_t, AV_SAMPLE_FMT_DBL, double, av_clipl_int32(llrint(*(constdouble *) pi *(1U<< 31))))#defineSET_CONV_FUNC_GROUP(ofmt, ifmt) staticvoidset_generic_function(AudioConvert *ac){}voidff_audio_convert_free(AudioConvert **ac){if(!*ac) return;ff_dither_free(&(*ac) ->dc);av_freep(ac);}AudioConvert *ff_audio_convert_alloc(AVAudioResampleContext *avr, enumAVSampleFormatout_fmt, enumAVSampleFormatin_fmt, intchannels, intsample_rate, intapply_map){AudioConvert *ac;intin_planar, out_planar;ac=av_mallocz(sizeof(*ac));if(!ac) returnNULL;ac->avr=avr;ac->out_fmt=out_fmt;ac->in_fmt=in_fmt;ac->channels=channels;ac->apply_map=apply_map;if(avr->dither_method!=AV_RESAMPLE_DITHER_NONE &&av_get_packed_sample_fmt(out_fmt)==AV_SAMPLE_FMT_S16 &&av_get_bytes_per_sample(in_fmt)>2){ac->dc=ff_dither_alloc(avr, out_fmt, in_fmt, channels, sample_rate, apply_map);if(!ac->dc){av_free(ac);returnNULL;}returnac;}in_planar=ff_sample_fmt_is_planar(in_fmt, channels);out_planar=ff_sample_fmt_is_planar(out_fmt, channels);if(in_planar==out_planar){ac->func_type=CONV_FUNC_TYPE_FLAT;ac->planes=in_planar?ac->channels:1;}elseif(in_planar) ac->func_type=CONV_FUNC_TYPE_INTERLEAVE;elseac->func_type=CONV_FUNC_TYPE_DEINTERLEAVE;set_generic_function(ac);if(ARCH_AARCH64) ff_audio_convert_init_aarch64(ac);if(ARCH_ARM) ff_audio_convert_init_arm(ac);if(ARCH_X86) ff_audio_convert_init_x86(ac);returnac;}intff_audio_convert(AudioConvert *ac, AudioData *out, AudioData *in){intuse_generic=1;intlen=in->nb_samples;intp;if(ac->dc){av_log(ac->avr, AV_LOG_TRACE,"%dsamples-audio_convert:%sto%s(dithered)\n", len, av_get_sample_fmt_name(ac->in_fmt), av_get_sample_fmt_name(ac->out_fmt));returnff_convert_dither(ac-> dc
AVRational av_mul_q(AVRational b, AVRational c)
Multiply two rationals. 
#define AV_CODEC_FLAG_TRUNCATED
Input bitstream might be truncated at a random location instead of only at frame boundaries. 
#define AV_CODEC_FLAG2_SHOW_ALL
Show all frames before the first keyframe. 
uint16_t intra_matrix[64]
matrix transmitted in the bitstream 
uint32_t * mb_type
types and macros are defined in mpegutils.h 
#define HWACCEL_VDPAU(codec)
ScanTable inter_scantable
if inter == intra then intra should be used to reduce the cache usage 
#define PICTURE_START_CODE
static int skip_1stop_8data_bits(GetBitContext *gb)
HW decoding through Direct3D11 via old API, Picture.data[3] contains a ID3D11VideoDecoderOutputView p...
MPEG-1 4:2:0, JPEG 4:2:0, H.263 4:2:0. 
static int mpeg_get_qscale(MpegEncContext *s)
int(* decode_slice)(AVCodecContext *avctx, const uint8_t *buf, uint32_t buf_size)
Callback for each slice. 
static int slice_decode_thread(AVCodecContext *c, void *arg)
int(* end_frame)(AVCodecContext *avctx)
Called at the end of each frame or field picture. 
static enum AVPixelFormat mpeg12_pixfmt_list_444[]
uint64_t_TMPL AV_WL64 unsigned int_TMPL AV_RL32
AVPixelFormat
Pixel format. 
This structure stores compressed data. 
void ff_mpv_report_decode_progress(MpegEncContext *s)
#define AV_CODEC_CAP_DR1
Codec uses get_buffer() for allocating buffers and supports custom allocators. 
static void mpeg_decode_picture_display_extension(Mpeg1Context *s1)
#define AV_TIMECODE_STR_SIZE
int64_t rc_max_rate
maximum bitrate 
const AVRational ff_mpeg12_frame_rate_tab[]