57 for (y = 0; y <
height; y++) {
59 memset(plane, 0, width);
61 for (x = 0; x <
width; x++)
79 for (x = 0; x <
width; x++) {
81 for (y = 0; y <
height; y++)
84 for (y = 0; y <
height; y++)
101 int imode, x, y, code,
offset;
119 if ((height * width) & 1) {
122 if (offset == width) {
124 planep += stride -
width;
130 for (; y < height *
width; y += 2) {
132 *planep++ = code & 1;
134 if (offset == width) {
136 planep += stride -
width;
138 *planep++ = code >> 1;
140 if (offset == width) {
142 planep += stride -
width;
148 if (!(height % 3) && (width % 3)) {
149 for (y = 0; y <
height; y += 3) {
150 for (x = width & 1; x <
width; x += 2) {
156 planep[x + 0] = (code >> 0) & 1;
157 planep[x + 1] = (code >> 1) & 1;
158 planep[x + 0 +
stride] = (code >> 2) & 1;
159 planep[x + 1 +
stride] = (code >> 3) & 1;
160 planep[x + 0 + stride * 2] = (code >> 4) & 1;
161 planep[x + 1 + stride * 2] = (code >> 5) & 1;
163 planep += stride * 3;
168 planep += (height & 1) * stride;
169 for (y = height & 1; y <
height; y += 2) {
170 for (x = width % 3; x <
width; x += 3) {
176 planep[x + 0] = (code >> 0) & 1;
177 planep[x + 1] = (code >> 1) & 1;
178 planep[x + 2] = (code >> 2) & 1;
179 planep[x + 0 +
stride] = (code >> 3) & 1;
180 planep[x + 1 +
stride] = (code >> 4) & 1;
181 planep[x + 2 +
stride] = (code >> 5) & 1;
183 planep += stride * 2;
206 for (x = 1; x <
width; x++)
207 planep[x] ^= planep[x-1];
208 for (y = 1; y <
height; y++) {
210 planep[0] ^= planep[-
stride];
211 for (x = 1; x <
width; x++) {
212 if (planep[x-1] != planep[x-stride]) planep[x] ^= invert;
213 else planep[x] ^= planep[x-1];
218 for (x = 0; x < stride *
height; x++)
219 planep[x] = !planep[x];
221 return (imode << 1) + invert;
296 "Old interlaced mode is not supported\n");
308 "LOOPFILTER shall not be enabled in Simple Profile\n");
330 "FASTUVMC unavailable in Simple Profile\n");
336 "Extended MVs unavailable in Simple Profile\n");
345 "1 for reserved RES_TRANSTAB is forbidden\n");
355 "RANGERED should be set to 0 in Simple Profile\n");
384 "Old WMV3 version detected, some frames may be decoded incorrectly\n");
391 "Profile %i:\nfrmrtq_postproc=%i, bitrtq_postproc=%i\n"
392 "LoopFilter=%i, MultiRes=%i, FastUVMC=%i, Extended MV=%i\n"
393 "Rangered=%i, VSTransform=%i, Overlap=%i, SyncMarker=%i\n"
394 "DQuant=%i, Quantizer mode=%i, Max B-frames=%i\n",
412 "Only 4:2:0 chroma format supported\n");
431 "Advanced Profile level %i:\nfrmrtq_postproc=%i, bitrtq_postproc=%i\n"
432 "LoopFilter=%i, ChromaFormat=%i, Pulldown=%i, Interlace: %i\n"
433 "TFCTRflag=%i, FINTERPflag=%i\n",
454 }
else if (ar == 15) {
478 if (nr > 0 && nr < 8 && dr > 0 && dr < 3) {
555 av_log(avctx,
AV_LOG_ERROR,
"Chroma scaling is not supported, expect wrong picture\n");
560 "BrokenLink=%i, ClosedEntry=%i, PanscanFlag=%i\n"
561 "RefDist=%i, Postproc=%i, FastUVMC=%i, ExtMV=%i\n"
562 "DQuant=%i, VSTransform=%i, Overlap=%i, Qmode=%i\n",
570 #define INIT_LUT(lumscale, lumshift, luty, lutuv, chain) do { \
571 int scale, shift, i; \
574 shift = (255 - lumshift * 2) * 64; \
578 scale = lumscale + 32; \
580 shift = (lumshift - 64) * 64; \
582 shift = lumshift << 6; \
584 for (i = 0; i < 256; i++) { \
585 int iy = chain ? luty[i] : i; \
586 int iu = chain ? lutuv[i] : i; \
587 luty[i] = av_clip_uint8((scale * iy + shift + 32) >> 6); \
588 lutuv[i] = av_clip_uint8((scale * (iu - 128) + 128*64 + 32) >> 6);\
594 #define ROTATE(DEF, L, N, C, A) do { \
595 if (v->s.pict_type == AV_PICTURE_TYPE_BI || v->s.pict_type == AV_PICTURE_TYPE_B) { \
599 memcpy(&tmp, L , sizeof(tmp)); \
600 memcpy(L , N , sizeof(tmp)); \
601 memcpy(N , &tmp, sizeof(tmp)); \
618 if (bfraction_lut_index == 21 || bfraction_lut_index < 0) {
629 int pqindex, lowquant, status;
727 lowquant = (v->
pq > 12) ? 0 : 1;
756 "Imode: %i, Invert: %i\n", status>>1, status&1);
765 "Imode: %i, Invert: %i\n", status>>1, status&1);
799 "Imode: %i, Invert: %i\n", status>>1, status&1);
804 "Imode: %i, Invert: %i\n", status>>1, status&1);
846 int pqindex, lowquant;
848 int mbmodetab, imvtab, icbptab, twomvbptab, fourmvbptab;
862 goto parse_common_info;
950 goto parse_common_info;
1010 "Imode: %i, Invert: %i\n", status>>1, status&1);
1016 "Imode: %i, Invert: %i\n", status>>1, status&1);
1025 "Imode: %i, Invert: %i\n", status>>1, status&1);
1058 "Imode: %i, Invert: %i\n", status>>1, status&1);
1086 lowquant = (v->
pq > 12) ? 0 : 1;
1144 "Imode: %i, Invert: %i\n", status>>1, status&1);
1153 "Imode: %i, Invert: %i\n", status>>1, status&1);
1221 lowquant = (v->
pq > 12) ? 0 : 1;
1230 "Imode: %i, Invert: %i\n", status>>1, status&1);
1260 "Imode: %i, Invert: %i\n", status>>1, status&1);
1265 "Imode: %i, Invert: %i\n", status>>1, status&1);
1286 "Imode: %i, Invert: %i\n", status>>1, status&1);
1291 "Imode: %i, Invert: %i\n", status>>1, status&1);
1341 { 0x0001, 2}, { 0x0005, 3}, { 0x000D, 4}, { 0x0012, 5}, { 0x000E, 6}, { 0x0015, 7},
1342 { 0x0013, 8}, { 0x003F, 8}, { 0x004B, 9}, { 0x011F, 9}, { 0x00B8, 10}, { 0x03E3, 10},
1343 { 0x0172, 11}, { 0x024D, 12}, { 0x03DA, 12}, { 0x02DD, 13}, { 0x1F55, 13}, { 0x05B9, 14},
1344 { 0x3EAE, 14}, { 0x0000, 4}, { 0x0010, 5}, { 0x0008, 7}, { 0x0020, 8}, { 0x0029, 9},
1345 { 0x01F4, 9}, { 0x0233, 10}, { 0x01E0, 11}, { 0x012A, 12}, { 0x03DD, 12}, { 0x050A, 13},
1346 { 0x1F29, 13}, { 0x0A42, 14}, { 0x1272, 15}, { 0x1737, 15}, { 0x0003, 5}, { 0x0011, 7},
1347 { 0x00C4, 8}, { 0x004B, 10}, { 0x00B4, 11}, { 0x07D4, 11}, { 0x0345, 12}, { 0x02D7, 13},
1348 { 0x07BF, 13}, { 0x0938, 14}, { 0x0BBB, 14}, { 0x095E, 15}, { 0x0013, 5}, { 0x0078, 7},
1349 { 0x0069, 9}, { 0x0232, 10}, { 0x0461, 11}, { 0x03EC, 12}, { 0x0520, 13}, { 0x1F2A, 13},
1350 { 0x3E50, 14}, { 0x3E51, 14}, { 0x1486, 15}, { 0x000C, 6}, { 0x0024, 9}, { 0x0094, 11},
1351 { 0x08C0, 12}, { 0x0F09, 14}, { 0x1EF0, 15}, { 0x003D, 6}, { 0x0053, 9}, { 0x01A0, 11},
1352 { 0x02D6, 13}, { 0x0F08, 14}, { 0x0013, 7}, { 0x007C, 9}, { 0x07C1, 11}, { 0x04AC, 14},
1353 { 0x001B, 7}, { 0x00A0, 10}, { 0x0344, 12}, { 0x0F79, 14}, { 0x0079, 7}, { 0x03E1, 10},
1354 { 0x02D4, 13}, { 0x2306, 14}, { 0x0021, 8}, { 0x023C, 10}, { 0x0FAE, 12}, { 0x23DE, 14},
1355 { 0x0035, 8}, { 0x0175, 11}, { 0x07B3, 13}, { 0x00C5, 8}, { 0x0174, 11}, { 0x0785, 13},
1356 { 0x0048, 9}, { 0x01A3, 11}, { 0x049E, 13}, { 0x002C, 9}, { 0x00FA, 10}, { 0x07D6, 11},
1357 { 0x0092, 10}, { 0x05CC, 13}, { 0x1EF1, 15}, { 0x00A3, 10}, { 0x03ED, 12}, { 0x093E, 14},
1358 { 0x01E2, 11}, { 0x1273, 15}, { 0x07C4, 11}, { 0x1487, 15}, { 0x0291, 12}, { 0x0293, 12},
1359 { 0x0F8A, 12}, { 0x0509, 13}, { 0x0508, 13}, { 0x078D, 13}, { 0x07BE, 13}, { 0x078C, 13},
1360 { 0x04AE, 14}, { 0x0BBA, 14}, { 0x2307, 14}, { 0x0B9A, 14}, { 0x1736, 15}, { 0x000E, 4},
1361 { 0x0045, 7}, { 0x01F3, 9}, { 0x047A, 11}, { 0x05DC, 13}, { 0x23DF, 14}, { 0x0019, 5},
1362 { 0x0028, 9}, { 0x0176, 11}, { 0x049D, 13}, { 0x23DD, 14}, { 0x0030, 6}, { 0x00A2, 10},
1363 { 0x02EF, 12}, { 0x05B8, 14}, { 0x003F, 6}, { 0x00A5, 10}, { 0x03DB, 12}, { 0x093F, 14},
1364 { 0x0044, 7}, { 0x07CB, 11}, { 0x095F, 15}, { 0x0063, 7}, { 0x03C3, 12}, { 0x0015, 8},
1365 { 0x08F6, 12}, { 0x0017, 8}, { 0x0498, 13}, { 0x002C, 8}, { 0x07B2, 13}, { 0x002F, 8},
1366 { 0x1F54, 13}, { 0x008D, 8}, { 0x07BD, 13}, { 0x008E, 8}, { 0x1182, 13}, { 0x00FB, 8},
1367 { 0x050B, 13}, { 0x002D, 8}, { 0x07C0, 11}, { 0x0079, 9}, { 0x1F5F, 13}, { 0x007A, 9},
1368 { 0x1F56, 13}, { 0x0231, 10}, { 0x03E4, 10}, { 0x01A1, 11}, { 0x0143, 11}, { 0x01F7, 11},
1369 { 0x016F, 12}, { 0x0292, 12}, { 0x02E7, 12}, { 0x016C, 12}, { 0x016D, 12}, { 0x03DC, 12},
1370 { 0x0F8B, 12}, { 0x0499, 13}, { 0x03D8, 12}, { 0x078E, 13}, { 0x02D5, 13}, { 0x1F5E, 13},
1371 { 0x1F2B, 13}, { 0x078F, 13}, { 0x04AD, 14}, { 0x3EAF, 14}, { 0x23DC, 14}, { 0x004A, 9}
1374 { 0x0000, 3}, { 0x0003, 4}, { 0x000B, 5}, { 0x0014, 6}, { 0x003F, 6}, { 0x005D, 7},
1375 { 0x00A2, 8}, { 0x00AC, 9}, { 0x016E, 9}, { 0x020A, 10}, { 0x02E2, 10}, { 0x0432, 11},
1376 { 0x05C9, 11}, { 0x0827, 12}, { 0x0B54, 12}, { 0x04E6, 13}, { 0x105F, 13}, { 0x172A, 13},
1377 { 0x20B2, 14}, { 0x2D4E, 14}, { 0x39F0, 14}, { 0x4175, 15}, { 0x5A9E, 15}, { 0x0004, 4},
1378 { 0x001E, 5}, { 0x0042, 7}, { 0x00B6, 8}, { 0x0173, 9}, { 0x0395, 10}, { 0x072E, 11},
1379 { 0x0B94, 12}, { 0x16A4, 13}, { 0x20B3, 14}, { 0x2E45, 14}, { 0x0005, 5}, { 0x0040, 7},
1380 { 0x0049, 9}, { 0x028F, 10}, { 0x05CB, 11}, { 0x048A, 13}, { 0x09DD, 14}, { 0x73E2, 15},
1381 { 0x0018, 5}, { 0x0025, 8}, { 0x008A, 10}, { 0x051B, 11}, { 0x0E5F, 12}, { 0x09C9, 14},
1382 { 0x139C, 15}, { 0x0029, 6}, { 0x004F, 9}, { 0x0412, 11}, { 0x048D, 13}, { 0x2E41, 14},
1383 { 0x0038, 6}, { 0x010E, 9}, { 0x05A8, 11}, { 0x105C, 13}, { 0x39F2, 14}, { 0x0058, 7},
1384 { 0x021F, 10}, { 0x0E7E, 12}, { 0x39FF, 14}, { 0x0023, 8}, { 0x02E3, 10}, { 0x04E5, 13},
1385 { 0x2E40, 14}, { 0x00A1, 8}, { 0x05BE, 11}, { 0x09C8, 14}, { 0x0083, 8}, { 0x013A, 11},
1386 { 0x1721, 13}, { 0x0044, 9}, { 0x0276, 12}, { 0x39F6, 14}, { 0x008B, 10}, { 0x04EF, 13},
1387 { 0x5A9B, 15}, { 0x0208, 10}, { 0x1CFE, 13}, { 0x0399, 10}, { 0x1CB4, 13}, { 0x039E, 10},
1388 { 0x39F3, 14}, { 0x05AB, 11}, { 0x73E3, 15}, { 0x0737, 11}, { 0x5A9F, 15}, { 0x082D, 12},
1389 { 0x0E69, 12}, { 0x0E68, 12}, { 0x0433, 11}, { 0x0B7B, 12}, { 0x2DF8, 14}, { 0x2E56, 14},
1390 { 0x2E57, 14}, { 0x39F7, 14}, { 0x51A5, 15}, { 0x0003, 3}, { 0x002A, 6}, { 0x00E4, 8},
1391 { 0x028E, 10}, { 0x0735, 11}, { 0x1058, 13}, { 0x1CFA, 13}, { 0x2DF9, 14}, { 0x4174, 15},
1392 { 0x0009, 4}, { 0x0054, 8}, { 0x0398, 10}, { 0x048B, 13}, { 0x139D, 15}, { 0x000D, 4},
1393 { 0x00AD, 9}, { 0x0826, 12}, { 0x2D4C, 14}, { 0x0011, 5}, { 0x016B, 9}, { 0x0B7F, 12},
1394 { 0x51A4, 15}, { 0x0019, 5}, { 0x021B, 10}, { 0x16FD, 13}, { 0x001D, 5}, { 0x0394, 10},
1395 { 0x28D3, 14}, { 0x002B, 6}, { 0x05BC, 11}, { 0x5A9A, 15}, { 0x002F, 6}, { 0x0247, 12},
1396 { 0x0010, 7}, { 0x0A35, 12}, { 0x003E, 6}, { 0x0B7A, 12}, { 0x0059, 7}, { 0x105E, 13},
1397 { 0x0026, 8}, { 0x09CF, 14}, { 0x0055, 8}, { 0x1CB5, 13}, { 0x0057, 8}, { 0x0E5B, 12},
1398 { 0x00A0, 8}, { 0x1468, 13}, { 0x0170, 9}, { 0x0090, 10}, { 0x01CE, 9}, { 0x021A, 10},
1399 { 0x0218, 10}, { 0x0168, 9}, { 0x021E, 10}, { 0x0244, 12}, { 0x0736, 11}, { 0x0138, 11},
1400 { 0x0519, 11}, { 0x0E5E, 12}, { 0x072C, 11}, { 0x0B55, 12}, { 0x09DC, 14}, { 0x20BB, 14},
1401 { 0x048C, 13}, { 0x1723, 13}, { 0x2E44, 14}, { 0x16A5, 13}, { 0x0518, 11}, { 0x39FE, 14},
1405 { 0x0001, 2}, { 0x0006, 3}, { 0x000F, 4}, { 0x0016, 5}, { 0x0020, 6}, { 0x0018, 7},
1406 { 0x0008, 8}, { 0x009A, 8}, { 0x0056, 9}, { 0x013E, 9}, { 0x00F0, 10}, { 0x03A5, 10},
1407 { 0x0077, 11}, { 0x01EF, 11}, { 0x009A, 12}, { 0x005D, 13}, { 0x0001, 4}, { 0x0011, 5},
1408 { 0x0002, 7}, { 0x000B, 8}, { 0x0012, 9}, { 0x01D6, 9}, { 0x027E, 10}, { 0x0191, 11},
1409 { 0x00EA, 12}, { 0x03DC, 12}, { 0x013B, 13}, { 0x0004, 5}, { 0x0014, 7}, { 0x009E, 8},
1410 { 0x0009, 10}, { 0x01AC, 11}, { 0x01E2, 11}, { 0x03CA, 12}, { 0x005F, 13}, { 0x0017, 5},
1411 { 0x004E, 7}, { 0x005E, 9}, { 0x00F3, 10}, { 0x01AD, 11}, { 0x00EC, 12}, { 0x05F0, 13},
1412 { 0x000E, 6}, { 0x00E1, 8}, { 0x03A4, 10}, { 0x009C, 12}, { 0x013D, 13}, { 0x003B, 6},
1413 { 0x001C, 9}, { 0x0014, 11}, { 0x09BE, 12}, { 0x0006, 7}, { 0x007A, 9}, { 0x0190, 11},
1414 { 0x0137, 13}, { 0x001B, 7}, { 0x0008, 10}, { 0x075C, 11}, { 0x0071, 7}, { 0x00D7, 10},
1415 { 0x09BF, 12}, { 0x0007, 8}, { 0x00AF, 10}, { 0x04CC, 11}, { 0x0034, 8}, { 0x0265, 10},
1416 { 0x009F, 12}, { 0x00E0, 8}, { 0x0016, 11}, { 0x0327, 12}, { 0x0015, 9}, { 0x017D, 11},
1417 { 0x0EBB, 12}, { 0x0014, 9}, { 0x00F6, 10}, { 0x01E4, 11}, { 0x00CB, 10}, { 0x099D, 12},
1418 { 0x00CA, 10}, { 0x02FC, 12}, { 0x017F, 11}, { 0x04CD, 11}, { 0x02FD, 12}, { 0x04FE, 11},
1419 { 0x013A, 13}, { 0x000A, 4}, { 0x0042, 7}, { 0x01D3, 9}, { 0x04DD, 11}, { 0x0012, 5},
1420 { 0x00E8, 8}, { 0x004C, 11}, { 0x0136, 13}, { 0x0039, 6}, { 0x0264, 10}, { 0x0EBA, 12},
1421 { 0x0000, 7}, { 0x00AE, 10}, { 0x099C, 12}, { 0x001F, 7}, { 0x04DE, 11}, { 0x0043, 7},
1422 { 0x04DC, 11}, { 0x0003, 8}, { 0x03CB, 12}, { 0x0006, 8}, { 0x099E, 12}, { 0x002A, 8},
1423 { 0x05F1, 13}, { 0x000F, 8}, { 0x09FE, 12}, { 0x0033, 8}, { 0x09FF, 12}, { 0x0098, 8},
1424 { 0x099F, 12}, { 0x00EA, 8}, { 0x013C, 13}, { 0x002E, 8}, { 0x0192, 11}, { 0x0136, 9},
1425 { 0x006A, 9}, { 0x0015, 11}, { 0x03AF, 10}, { 0x01E3, 11}, { 0x0074, 11}, { 0x00EB, 12},
1426 { 0x02F9, 12}, { 0x005C, 13}, { 0x00ED, 12}, { 0x03DD, 12}, { 0x0326, 12}, { 0x005E, 13},
1430 { 0x0004, 3}, { 0x0014, 5}, { 0x0017, 7}, { 0x007F, 8}, { 0x0154, 9}, { 0x01F2, 10},
1431 { 0x00BF, 11}, { 0x0065, 12}, { 0x0AAA, 12}, { 0x0630, 13}, { 0x1597, 13}, { 0x03B7, 14},
1432 { 0x2B22, 14}, { 0x0BE6, 15}, { 0x000B, 4}, { 0x0037, 7}, { 0x0062, 9}, { 0x0007, 11},
1433 { 0x0166, 12}, { 0x00CE, 13}, { 0x1590, 13}, { 0x05F6, 14}, { 0x0BE7, 15}, { 0x0007, 5},
1434 { 0x006D, 8}, { 0x0003, 11}, { 0x031F, 12}, { 0x05F2, 14}, { 0x0002, 6}, { 0x0061, 9},
1435 { 0x0055, 12}, { 0x01DF, 14}, { 0x001A, 6}, { 0x001E, 10}, { 0x0AC9, 12}, { 0x2B23, 14},
1436 { 0x001E, 6}, { 0x001F, 10}, { 0x0AC3, 12}, { 0x2B2B, 14}, { 0x0006, 7}, { 0x0004, 11},
1437 { 0x02F8, 13}, { 0x0019, 7}, { 0x0006, 11}, { 0x063D, 13}, { 0x0057, 7}, { 0x0182, 11},
1438 { 0x2AA2, 14}, { 0x0004, 8}, { 0x0180, 11}, { 0x059C, 14}, { 0x007D, 8}, { 0x0164, 12},
1439 { 0x076D, 15}, { 0x0002, 9}, { 0x018D, 11}, { 0x1581, 13}, { 0x00AD, 8}, { 0x0060, 12},
1440 { 0x0C67, 14}, { 0x001C, 9}, { 0x00EE, 13}, { 0x0003, 9}, { 0x02CF, 13}, { 0x00D9, 9},
1441 { 0x1580, 13}, { 0x0002, 11}, { 0x0183, 11}, { 0x0057, 12}, { 0x0061, 12}, { 0x0031, 11},
1442 { 0x0066, 12}, { 0x0631, 13}, { 0x0632, 13}, { 0x00AC, 13}, { 0x031D, 12}, { 0x0076, 12},
1443 { 0x003A, 11}, { 0x0165, 12}, { 0x0C66, 14}, { 0x0003, 2}, { 0x0054, 7}, { 0x02AB, 10},
1444 { 0x0016, 13}, { 0x05F7, 14}, { 0x0005, 4}, { 0x00F8, 9}, { 0x0AA9, 12}, { 0x005F, 15},
1445 { 0x0004, 4}, { 0x001C, 10}, { 0x1550, 13}, { 0x0004, 5}, { 0x0077, 11}, { 0x076C, 15},
1446 { 0x000E, 5}, { 0x000A, 12}, { 0x000C, 5}, { 0x0562, 11}, { 0x0004, 6}, { 0x031C, 12},
1447 { 0x0006, 6}, { 0x00C8, 13}, { 0x000D, 6}, { 0x01DA, 13}, { 0x0007, 6}, { 0x00C9, 13},
1448 { 0x0001, 7}, { 0x002E, 14}, { 0x0014, 7}, { 0x1596, 13}, { 0x000A, 7}, { 0x0AC2, 12},
1449 { 0x0016, 7}, { 0x015B, 14}, { 0x0015, 7}, { 0x015A, 14}, { 0x000F, 8}, { 0x005E, 15},
1450 { 0x007E, 8}, { 0x00AB, 8}, { 0x002D, 9}, { 0x00D8, 9}, { 0x000B, 9}, { 0x0014, 10},
1451 { 0x02B3, 10}, { 0x01F3, 10}, { 0x003A, 10}, { 0x0000, 10}, { 0x0058, 10}, { 0x002E, 9},
1452 { 0x005E, 10}, { 0x0563, 11}, { 0x00EC, 12}, { 0x0054, 12}, { 0x0AC1, 12}, { 0x1556, 13},
1453 { 0x02FA, 13}, { 0x0181, 11}, { 0x1557, 13}, { 0x059D, 14}, { 0x2AA3, 14}, { 0x2B2A, 14},
1454 { 0x01DE, 14}, { 0x063C, 13}, { 0x00CF, 13}, { 0x1594, 13}, { 0x000D, 9}
1457 { 0x0002, 2}, { 0x0006, 3}, { 0x000F, 4}, { 0x000D, 5}, { 0x000C, 5}, { 0x0015, 6},
1458 { 0x0013, 6}, { 0x0012, 6}, { 0x0017, 7}, { 0x001F, 8}, { 0x001E, 8}, { 0x001D, 8},
1459 { 0x0025, 9}, { 0x0024, 9}, { 0x0023, 9}, { 0x0021, 9}, { 0x0021, 10}, { 0x0020, 10},
1460 { 0x000F, 10}, { 0x000E, 10}, { 0x0007, 11}, { 0x0006, 11}, { 0x0020, 11}, { 0x0021, 11},
1461 { 0x0050, 12}, { 0x0051, 12}, { 0x0052, 12}, { 0x000E, 4}, { 0x0014, 6}, { 0x0016, 7},
1462 { 0x001C, 8}, { 0x0020, 9}, { 0x001F, 9}, { 0x000D, 10}, { 0x0022, 11}, { 0x0053, 12},
1463 { 0x0055, 12}, { 0x000B, 5}, { 0x0015, 7}, { 0x001E, 9}, { 0x000C, 10}, { 0x0056, 12},
1464 { 0x0011, 6}, { 0x001B, 8}, { 0x001D, 9}, { 0x000B, 10}, { 0x0010, 6}, { 0x0022, 9},
1465 { 0x000A, 10}, { 0x000D, 6}, { 0x001C, 9}, { 0x0008, 10}, { 0x0012, 7}, { 0x001B, 9},
1466 { 0x0054, 12}, { 0x0014, 7}, { 0x001A, 9}, { 0x0057, 12}, { 0x0019, 8}, { 0x0009, 10},
1467 { 0x0018, 8}, { 0x0023, 11}, { 0x0017, 8}, { 0x0019, 9}, { 0x0018, 9}, { 0x0007, 10},
1468 { 0x0058, 12}, { 0x0007, 4}, { 0x000C, 6}, { 0x0016, 8}, { 0x0017, 9}, { 0x0006, 10},
1469 { 0x0005, 11}, { 0x0004, 11}, { 0x0059, 12}, { 0x000F, 6}, { 0x0016, 9}, { 0x0005, 10},
1470 { 0x000E, 6}, { 0x0004, 10}, { 0x0011, 7}, { 0x0024, 11}, { 0x0010, 7}, { 0x0025, 11},
1471 { 0x0013, 7}, { 0x005A, 12}, { 0x0015, 8}, { 0x005B, 12}, { 0x0014, 8}, { 0x0013, 8},
1472 { 0x001A, 8}, { 0x0015, 9}, { 0x0014, 9}, { 0x0013, 9}, { 0x0012, 9}, { 0x0011, 9},
1473 { 0x0026, 11}, { 0x0027, 11}, { 0x005C, 12}, { 0x005D, 12}, { 0x005E, 12}, { 0x005F, 12},
1477 { 0x0002, 2}, { 0x000F, 4}, { 0x0015, 6}, { 0x0017, 7}, { 0x001F, 8}, { 0x0025, 9},
1478 { 0x0024, 9}, { 0x0021, 10}, { 0x0020, 10}, { 0x0007, 11}, { 0x0006, 11}, { 0x0020, 11},
1479 { 0x0006, 3}, { 0x0014, 6}, { 0x001E, 8}, { 0x000F, 10}, { 0x0021, 11}, { 0x0050, 12},
1480 { 0x000E, 4}, { 0x001D, 8}, { 0x000E, 10}, { 0x0051, 12}, { 0x000D, 5}, { 0x0023, 9},
1481 { 0x000D, 10}, { 0x000C, 5}, { 0x0022, 9}, { 0x0052, 12}, { 0x000B, 5}, { 0x000C, 10},
1482 { 0x0053, 12}, { 0x0013, 6}, { 0x000B, 10}, { 0x0054, 12}, { 0x0012, 6}, { 0x000A, 10},
1483 { 0x0011, 6}, { 0x0009, 10}, { 0x0010, 6}, { 0x0008, 10}, { 0x0016, 7}, { 0x0055, 12},
1484 { 0x0015, 7}, { 0x0014, 7}, { 0x001C, 8}, { 0x001B, 8}, { 0x0021, 9}, { 0x0020, 9},
1485 { 0x001F, 9}, { 0x001E, 9}, { 0x001D, 9}, { 0x001C, 9}, { 0x001B, 9}, { 0x001A, 9},
1486 { 0x0022, 11}, { 0x0023, 11}, { 0x0056, 12}, { 0x0057, 12}, { 0x0007, 4}, { 0x0019, 9},
1487 { 0x0005, 11}, { 0x000F, 6}, { 0x0004, 11}, { 0x000E, 6}, { 0x000D, 6}, { 0x000C, 6},
1488 { 0x0013, 7}, { 0x0012, 7}, { 0x0011, 7}, { 0x0010, 7}, { 0x001A, 8}, { 0x0019, 8},
1489 { 0x0018, 8}, { 0x0017, 8}, { 0x0016, 8}, { 0x0015, 8}, { 0x0014, 8}, { 0x0013, 8},
1490 { 0x0018, 9}, { 0x0017, 9}, { 0x0016, 9}, { 0x0015, 9}, { 0x0014, 9}, { 0x0013, 9},
1491 { 0x0012, 9}, { 0x0011, 9}, { 0x0007, 10}, { 0x0006, 10}, { 0x0005, 10}, { 0x0004, 10},
1492 { 0x0024, 11}, { 0x0025, 11}, { 0x0026, 11}, { 0x0027, 11}, { 0x0058, 12}, { 0x0059, 12},
1493 { 0x005A, 12}, { 0x005B, 12}, { 0x005C, 12}, { 0x005D, 12}, { 0x005E, 12}, { 0x005F, 12},
1497 { 0x0000, 2}, { 0x0003, 3}, { 0x000D, 4}, { 0x0005, 4}, { 0x001C, 5}, { 0x0016, 5},
1498 { 0x003F, 6}, { 0x003A, 6}, { 0x002E, 6}, { 0x0022, 6}, { 0x007B, 7}, { 0x0067, 7},
1499 { 0x005F, 7}, { 0x0047, 7}, { 0x0026, 7}, { 0x00EF, 8}, { 0x00CD, 8}, { 0x00C1, 8},
1500 { 0x00A9, 8}, { 0x004F, 8}, { 0x01F2, 9}, { 0x01DD, 9}, { 0x0199, 9}, { 0x0185, 9},
1501 { 0x015D, 9}, { 0x011B, 9}, { 0x03EF, 10}, { 0x03E1, 10}, { 0x03C8, 10}, { 0x0331, 10},
1502 { 0x0303, 10}, { 0x02F1, 10}, { 0x02A0, 10}, { 0x0233, 10}, { 0x0126, 10}, { 0x07C0, 11},
1503 { 0x076F, 11}, { 0x076C, 11}, { 0x0661, 11}, { 0x0604, 11}, { 0x0572, 11}, { 0x0551, 11},
1504 { 0x046A, 11}, { 0x0274, 11}, { 0x0F27, 12}, { 0x0F24, 12}, { 0x0EDB, 12}, { 0x0C8E, 12},
1505 { 0x0C0B, 12}, { 0x0C0A, 12}, { 0x0AE3, 12}, { 0x08D6, 12}, { 0x0490, 12}, { 0x0495, 12},
1506 { 0x1F19, 13}, { 0x1DB5, 13}, { 0x0009, 4}, { 0x0010, 5}, { 0x0029, 6}, { 0x0062, 7},
1507 { 0x00F3, 8}, { 0x00AD, 8}, { 0x01E5, 9}, { 0x0179, 9}, { 0x009C, 9}, { 0x03B1, 10},
1508 { 0x02AE, 10}, { 0x0127, 10}, { 0x076E, 11}, { 0x0570, 11}, { 0x0275, 11}, { 0x0F25, 12},
1509 { 0x0EC0, 12}, { 0x0AA0, 12}, { 0x08D7, 12}, { 0x1E4C, 13}, { 0x0008, 5}, { 0x0063, 7},
1510 { 0x00AF, 8}, { 0x017B, 9}, { 0x03B3, 10}, { 0x07DD, 11}, { 0x0640, 11}, { 0x0F8D, 12},
1511 { 0x0BC1, 12}, { 0x0491, 12}, { 0x0028, 6}, { 0x00C3, 8}, { 0x0151, 9}, { 0x02A1, 10},
1512 { 0x0573, 11}, { 0x0EC3, 12}, { 0x1F35, 13}, { 0x0065, 7}, { 0x01DA, 9}, { 0x02AF, 10},
1513 { 0x0277, 11}, { 0x08C9, 12}, { 0x1781, 13}, { 0x0025, 7}, { 0x0118, 9}, { 0x0646, 11},
1514 { 0x0AA6, 12}, { 0x1780, 13}, { 0x00C9, 8}, { 0x0321, 10}, { 0x0F9B, 12}, { 0x191E, 13},
1515 { 0x0048, 8}, { 0x07CC, 11}, { 0x0AA1, 12}, { 0x0180, 9}, { 0x0465, 11}, { 0x1905, 13},
1516 { 0x03E2, 10}, { 0x0EC1, 12}, { 0x3C9B, 14}, { 0x02F4, 10}, { 0x08C8, 12}, { 0x07C1, 11},
1517 { 0x0928, 13}, { 0x05E1, 11}, { 0x320D, 14}, { 0x0EC2, 12}, { 0x6418, 15}, { 0x1F34, 13},
1518 { 0x0078, 7}, { 0x0155, 9}, { 0x0552, 11}, { 0x191F, 13}, { 0x00FA, 8}, { 0x07DC, 11},
1519 { 0x1907, 13}, { 0x00AC, 8}, { 0x0249, 11}, { 0x13B1, 14}, { 0x01F6, 9}, { 0x0AE2, 12},
1520 { 0x01DC, 9}, { 0x04ED, 12}, { 0x0184, 9}, { 0x1904, 13}, { 0x0156, 9}, { 0x09D9, 13},
1521 { 0x03E7, 10}, { 0x0929, 13}, { 0x03B2, 10}, { 0x3B68, 14}, { 0x02F5, 10}, { 0x13B0, 14},
1522 { 0x0322, 10}, { 0x3B69, 14}, { 0x0234, 10}, { 0x7935, 15}, { 0x07C7, 11}, { 0xC833, 16},
1523 { 0x0660, 11}, { 0x7934, 15}, { 0x024B, 11}, { 0xC832, 16}, { 0x0AA7, 12}, { 0x1F18, 13},
1527 { 0x0002, 2}, { 0x0000, 3}, { 0x001E, 5}, { 0x0004, 5}, { 0x0012, 6}, { 0x0070, 7},
1528 { 0x001A, 7}, { 0x005F, 8}, { 0x0047, 8}, { 0x01D3, 9}, { 0x00B5, 9}, { 0x0057, 9},
1529 { 0x03B5, 10}, { 0x016D, 10}, { 0x0162, 10}, { 0x07CE, 11}, { 0x0719, 11}, { 0x0691, 11},
1530 { 0x02C6, 11}, { 0x0156, 11}, { 0x0F92, 12}, { 0x0D2E, 12}, { 0x0D20, 12}, { 0x059E, 12},
1531 { 0x0468, 12}, { 0x02A6, 12}, { 0x1DA2, 13}, { 0x1C60, 13}, { 0x1A43, 13}, { 0x0B1D, 13},
1532 { 0x08C0, 13}, { 0x055D, 13}, { 0x0003, 3}, { 0x000A, 5}, { 0x0077, 7}, { 0x00E5, 8},
1533 { 0x01D9, 9}, { 0x03E5, 10}, { 0x0166, 10}, { 0x0694, 11}, { 0x0152, 11}, { 0x059F, 12},
1534 { 0x1F3C, 13}, { 0x1A4B, 13}, { 0x055E, 13}, { 0x000C, 4}, { 0x007D, 7}, { 0x0044, 8},
1535 { 0x03E0, 10}, { 0x0769, 11}, { 0x0E31, 12}, { 0x1F26, 13}, { 0x055C, 13}, { 0x001B, 5},
1536 { 0x00E2, 8}, { 0x03A5, 10}, { 0x02C9, 11}, { 0x1F23, 13}, { 0x3B47, 14}, { 0x0007, 5},
1537 { 0x01D8, 9}, { 0x02D8, 11}, { 0x1F27, 13}, { 0x3494, 14}, { 0x0035, 6}, { 0x03E1, 10},
1538 { 0x059C, 12}, { 0x38C3, 14}, { 0x000C, 6}, { 0x0165, 10}, { 0x1D23, 13}, { 0x1638, 14},
1539 { 0x0068, 7}, { 0x0693, 11}, { 0x3A45, 14}, { 0x0020, 7}, { 0x0F90, 12}, { 0x7CF6, 15},
1540 { 0x00E8, 8}, { 0x058F, 12}, { 0x2CEF, 15}, { 0x0045, 8}, { 0x0B3A, 13}, { 0x01F1, 9},
1541 { 0x3B46, 14}, { 0x01A7, 9}, { 0x1676, 14}, { 0x0056, 9}, { 0x692A, 15}, { 0x038D, 10},
1542 { 0xE309, 16}, { 0x00AA, 10}, { 0x1C611, 17}, { 0x02DF, 11}, { 0xB3B9, 17}, { 0x02C8, 11},
1543 { 0x38C20, 18}, { 0x01B0, 11}, { 0x16390, 18}, { 0x0F9F, 12}, { 0x16771, 18}, { 0x0ED0, 12},
1544 { 0x71843, 19}, { 0x0D2A, 12}, { 0xF9E8C, 20}, { 0x0461, 12}, { 0xF9E8E, 20}, { 0x0B67, 13},
1545 { 0x055F, 13}, { 0x003F, 6}, { 0x006D, 9}, { 0x0E90, 12}, { 0x054E, 13}, { 0x0013, 6},
1546 { 0x0119, 10}, { 0x0B66, 13}, { 0x000B, 6}, { 0x0235, 11}, { 0x7CF5, 15}, { 0x0075, 7},
1547 { 0x0D24, 12}, { 0xF9E9, 16}, { 0x002E, 7}, { 0x1F22, 13}, { 0x0021, 7}, { 0x054F, 13},
1548 { 0x0014, 7}, { 0x3A44, 14}, { 0x00E4, 8}, { 0x7CF7, 15}, { 0x005E, 8}, { 0x7185, 15},
1549 { 0x0037, 8}, { 0x2C73, 15}, { 0x01DB, 9}, { 0x59DD, 16}, { 0x01C7, 9}, { 0x692B, 15},
1550 { 0x01A6, 9}, { 0x58E5, 16}, { 0x00B4, 9}, { 0x1F3D0, 17}, { 0x00B0, 9}, { 0xB1C9, 17},
1551 { 0x03E6, 10}, { 0x16770, 18}, { 0x016E, 10}, { 0x3E7A2, 18}, { 0x011B, 10}, { 0xF9E8D, 20},
1552 { 0x00D9, 10}, { 0xF9E8F, 20}, { 0x00A8, 10}, { 0x2C723, 19}, { 0x0749, 11}, { 0xE3084, 20},
1553 { 0x0696, 11}, { 0x58E45, 20}, { 0x02DE, 11}, { 0xB1C88, 21}, { 0x0231, 11}, { 0x1C610A, 21},
1554 { 0x01B1, 11}, { 0x71842D, 23}, { 0x0D2B, 12}, { 0x38C217, 22}, { 0x0D2F, 12}, { 0x163913, 22},
1555 { 0x05B2, 12}, { 0x163912, 22}, { 0x0469, 12}, { 0x71842C, 23}, { 0x1A42, 13}, { 0x08C1, 13},
1561 0, 520, 552, 616, 1128, 1160, 1224, 1740, 1772, 1836, 1900, 2436,
1562 2986, 3050, 3610, 4154, 4218, 4746, 5326, 5390, 5902, 6554, 7658, 8342,
1563 9304, 9988, 10630, 11234, 12174, 13006, 13560, 14232, 14786, 15432, 16350, 17522,
1564 20372, 21818, 22330, 22394, 23166, 23678, 23742, 24820, 25332, 25396, 26460, 26980,
1565 27048, 27592, 27600, 27608, 27616, 27624, 28224, 28258, 28290, 28802, 28834, 28866,
1566 29378, 29412, 29444, 29960, 29994, 30026, 30538, 30572, 30604, 31120, 31154, 31186,
1567 31714, 31746, 31778, 32306, 32340, 32372
1577 static int done = 0;
1579 static VLC_TYPE vlc_table[32372][2];
1597 for (i = 0; i < 3; i++) {
1614 for (i = 0; i < 4; i++) {
1631 for (i = 0; i < 8; i++) {
1644 for (i = 0; i < 4; i++) {
1664 for (i = 0; i < 4; i++) {
1672 for (i = 0; i < 8; i++) {
int color_prim
8 bits, chroma coordinates of the color primaries
static unsigned int show_bits_long(GetBitContext *s, int n)
Show 0-32 bits.
in the bitstream is reported as 00b
const uint8_t ff_vc1_imode_codes[7]
const uint8_t ff_vc1_icbpcy_p_bits[8][63]
#define VC1_TTBLK_VLC_BITS
const struct AVCodec * codec
const uint8_t ff_vc1_mv_pmode_table[2][5]
MV P mode - the 5th element is only used for mode 1.
uint8_t bfraction_lut_index
Index for BFRACTION value (see Table 40, reproduced into ff_vc1_bfraction_lut[])
const uint8_t ff_vc1_mv_diff_bits[4][73]
#define AVERROR_INVALIDDATA
Invalid data found when processing input.
#define VC1_ICBPCY_VLC_BITS
const uint8_t ff_vc1_pquant_table[3][32]
uint8_t lumscale2
for interlaced field P picture
int k_x
Number of bits for MVs (depends on MV range)
ptrdiff_t const GLvoid * data
int reffield
if numref = 0 (1 reference) then reffield decides which
const uint8_t ff_vc1_norm2_codes[4]
const uint8_t ff_vc1_2ref_mvdata_bits[8][126]
const uint8_t ff_wmv2_scantableB[64]
const uint8_t ff_vc1_if_1mv_mbmode_codes[8][6]
int mv_type_is_raw
mv type mb plane is not coded
Explicitly specified at frame level.
uint8_t dmvrange
Frame decoding info for interlaced picture.
static unsigned int get_bits(GetBitContext *s, int n)
Read 1-25 bits.
#define AV_LOG_WARNING
Something somehow does not look correct.
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.
#define INIT_VLC_STATIC(vlc, bits, a, b, c, d, e, f, g, static_size)
int max_b_frames
maximum number of B-frames between non-B-frames Note: The output will be delayed by max_b_frames+1 re...
int tt_index
Index for Transform Type tables (to decode TTMB)
#define VC1_2REF_MVDATA_VLC_BITS
int extended_mv
Ext MV in P/B (not in Simple)
int broadcast
TFF/RFF present.
int transfer_char
8 bits, Opto-electronic transfer characteristics
const uint8_t ff_vc1_4mv_block_pattern_bits[4][16]
uint8_t rangeredfrm
Frame decoding info for S/M profiles only.
AVRational sample_aspect_ratio
sample aspect ratio (0 if unknown) That is the width of a pixel divided by the height of the pixel...
const uint8_t ff_vc1_cbpcy_p_bits[4][64]
const int ff_vc1_fps_nr[7]
int intcompfield
which of the two fields to be intensity compensated
int fastuvmc
Rounding of qpel vector to hpel ? (not in Simple)
VLC ff_vc1_2ref_mvdata_vlc[8]
static int bitplane_decoding(uint8_t *data, int *raw_flag, VC1Context *v)
Decode a bitplane's bits.
int frmrtq_postproc
3 bits,
const uint8_t ff_vc1_adv_progressive_4x8_zz[32]
static int vop_dquant_decoding(VC1Context *v)
VOP Dquant decoding.
Macro definitions for various function/variable attributes.
int hrd_param_flag
Presence of Hypothetical Reference Decoder parameters.
const uint8_t ff_vc1_1ref_mvdata_bits[4][72]
#define VC1_4MV_BLOCK_PATTERN_VLC_BITS
const uint8_t ff_vc1_ttmb_bits[3][16]
#define av_assert0(cond)
assert() equivalent, that is always enabled.
int refdist
distance of the current picture from reference
uint8_t * acpred_plane
AC prediction flags bitplane.
int res_transtab
reserved, always 0
int matrix_coef
8 bits, Color primaries->YCbCr transform matrix
const uint8_t ff_vc1_2mv_block_pattern_codes[4][4]
int first_pic_header_flag
const uint8_t ff_vc1_2mv_block_pattern_bits[4][4]
int panscanflag
NUMPANSCANWIN, TOPLEFT{X,Y}, BOTRIGHT{X,Y} present.
av_cold int ff_vc1_init_common(VC1Context *v)
Init VC-1 specific tables and VC1Context members.
void(* vc1_inv_trans_8x8)(int16_t *b)
const AVRational ff_vc1_pixel_aspect[16]
VLC ff_vc1_cbpcy_p_vlc[4]
int interlace
Progressive/interlaced (RPTFTM syntax element)
const uint16_t ff_vc1_icbpcy_p_codes[8][63]
int y_ac_table_index
Luma index from AC2FRM element.
int c_ac_table_index
AC coding set indexes.
const int ff_vc1_ac_sizes[AC_MODES]
int ttfrm
Transform type info present at frame level.
int16_t bfraction
Relative position % anchors=> how to scale MVs.
const uint8_t ff_vc1_if_mmv_mbmode_bits[8][8]
int profile
Sequence header data for all Profiles TODO: choose between ints, uint8_ts and monobit flags...
int refdist_flag
REFDIST syntax element present in II, IP, PI or PP field picture headers.
int ff_set_sar(AVCodecContext *avctx, AVRational sar)
Check that the provided sample aspect ratio is valid and set it on the codec context.
uint8_t * forward_mb_plane
bitplane for "forward" MBs
uint8_t last_luty[2][256]
int mb_height
number of MBs horizontally & vertically
const uint8_t ff_vc1_imode_bits[7]
int ff_vc1_decode_sequence_header(AVCodecContext *avctx, VC1Context *v, GetBitContext *gb)
Decode Simple/Main Profiles sequence header.
int av_reduce(int *dst_num, int *dst_den, int64_t num, int64_t den, int64_t max)
Reduce a fraction.
const uint8_t ff_vc1_subblkpat_bits[3][15]
VLC ff_vc1_4mv_block_pattern_vlc[4]
Non-uniform quant used for all frames.
uint8_t * over_flags_plane
Overflags bitplane.
uint8_t last_lutuv[2][256]
lookup tables used for intensity compensation
int psf
Progressive Segmented Frame.
uint8_t ttmbf
Transform type flag.
static void rotate_luts(VC1Context *v)
int k_y
Number of bits for MVs (depends on MV range)
static const uint16_t vlc_offs[]
Implicitly specified at frame level.
#define ROTATE(DEF, L, N, C, A)
static void decode_colskip(uint8_t *plane, int width, int height, int stride, GetBitContext *gb)
Decode columns by checking if they are skipped.
int dmb_is_raw
direct mb plane is raw
#define VC1_CBPCY_P_VLC_BITS
#define AV_LOG_ERROR
Something went wrong and cannot losslessly be recovered.
int res_y411
reserved, old interlaced mode
int overlap
overlapped transforms in use
in the bitstream is reported as 11b
#define init_vlc(vlc, nb_bits, nb_codes,bits, bits_wrap, bits_size,codes, codes_wrap, codes_size,flags)
void(* vc1_inv_trans_8x8_dc)(uint8_t *dest, ptrdiff_t stride, int16_t *block)
int qs_last
if qpel has been used in the previous (tr.) picture
void(* vc1_inv_trans_8x4)(uint8_t *dest, ptrdiff_t stride, int16_t *block)
#define AV_LOG_DEBUG
Stuff which is only useful for libav* developers.
#define VC1_BFRACTION_VLC_BITS
int quarter_sample
1->qpel, 0->half pel ME/MC
int resync_marker
could this stream contain resync markers
static const uint8_t offset[127][2]
const int ff_vc1_ttfrm_to_tt[4]
const uint8_t ff_wmv2_scantableA[64]
uint8_t broken_link
Broken link flag (BROKEN_LINK syntax element)
const uint8_t * zz_8x4
Zigzag scan table for TT_8x4 coding mode.
int postprocflag
Per-frame processing suggestion flag present.
int res_rtm_flag
reserved, set to 1
#define VC1_IF_1MV_MBMODE_VLC_BITS
void ff_simple_idct44_add(uint8_t *dest, ptrdiff_t line_size, int16_t *block)
static void decode_rowskip(uint8_t *plane, int width, int height, int stride, GetBitContext *gb)
Decode rows by checking if they are skipped.
int ff_vc1_parse_frame_header_adv(VC1Context *v, GetBitContext *gb)
const uint16_t ff_vc1_norm6_codes[64]
int cur_field_type
0: top, 1: bottom
const uint8_t * zz_4x8
Zigzag scan table for TT_4x8 coding mode.
enum AVPictureType pict_type
Picture type of the frame.
const uint16_t ff_vc1_cbpcy_p_codes[4][64]
const int ff_vc1_fps_dr[2]
int tfcntrflag
TFCNTR present.
int field_mode
1 for interlaced field pictures
int width
picture width / height.
#define VC1_SUBBLKPAT_VLC_BITS
uint8_t * mbskip_table
used to avoid copy if macroblock skipped (for black regions for example) and used for B-frame encodin...
uint8_t mv_mode
Frame decoding info for all profiles.
Picture * current_picture_ptr
pointer to the current picture
int ff_vc1_parse_frame_header(VC1Context *v, GetBitContext *gb)
uint8_t lumscale
Luma compensation parameters.
const uint32_t ff_vc1_1ref_mvdata_codes[4][72]
static av_always_inline int get_vlc2(GetBitContext *s, VLC_TYPE(*table)[2], int bits, int max_depth)
Parse a vlc code.
void(* vc1_inv_trans_4x4)(uint8_t *dest, ptrdiff_t stride, int16_t *block)
uint8_t closed_entry
Closed entry point flag (CLOSED_ENTRY syntax element)
int ticks_per_frame
For some codecs, the time base is closer to the field rate than the frame rate.
void(* vc1_inv_trans_8x4_dc)(uint8_t *dest, ptrdiff_t stride, int16_t *block)
VLC * cbpcy_vlc
CBPCY VLC table.
const uint8_t ff_vc1_norm6_bits[64]
static int decode210(GetBitContext *gb)
uint8_t aux_lutuv[2][256]
lookup tables used for intensity compensation
int rangered
RANGEREDFRM (range reduction) syntax element present at frame level.
void(* vc1_inv_trans_4x8)(uint8_t *dest, ptrdiff_t stride, int16_t *block)
int finterpflag
INTERPFRM present.
void(* vc1_inv_trans_4x8_dc)(uint8_t *dest, ptrdiff_t stride, int16_t *block)
#define AV_LOG_INFO
Standard information.
static int decode_sequence_header_adv(VC1Context *v, GetBitContext *gb)
int chromaformat
2 bits, 2=4:2:0, only defined
int res_sprite
Simple/Main Profile sequence header.
Libavcodec external API header.
const uint8_t ff_vc1_ttblk_codes[3][8]
void(* vc1_inv_trans_4x4_dc)(uint8_t *dest, ptrdiff_t stride, int16_t *block)
const uint8_t ff_vc1_4mv_block_pattern_codes[4][16]
const uint8_t ff_vc1_intfr_non4mv_mbmode_codes[4][9]
int multires
frame-level RESPIC syntax element present
static int read_bfraction(VC1Context *v, GetBitContext *gb)
main external API structure.
int height
picture size. must be a multiple of 16
int extended_dmv
Additional extended dmv range at P/B-frame-level.
void ff_simple_idct84_add(uint8_t *dest, ptrdiff_t line_size, int16_t *block)
static unsigned int get_bits1(GetBitContext *s)
static void skip_bits1(GetBitContext *s)
int fmb_is_raw
forward mb plane is raw
const uint16_t ff_vc1_ttmb_codes[3][16]
static void skip_bits(GetBitContext *s, int n)
Rational number (pair of numerator and denominator).
const uint16_t ff_vc1_intfr_4mv_mbmode_codes[4][15]
#define VC1_2MV_BLOCK_PATTERN_VLC_BITS
uint8_t respic
Frame-level flag for resized images.
#define INIT_LUT(lumscale, lumshift, luty, lutuv, chain)
int skip_is_raw
skip mb plane is not coded
VLC ff_vc1_if_mmv_mbmode_vlc[8]
int quantizer_mode
2 bits, quantizer mode used for sequence, see QUANT_*
uint8_t next_lutuv[2][256]
lookup tables used for intensity compensation
int ref_field_type[2]
forward and backward reference field type (top or bottom)
uint8_t * direct_mb_plane
bitplane for "direct" MBs
uint8_t mvrange
Ranges:0 -> [-64n 63.f] x [-32, 31.f]1 -> [-128, 127.f] x [-64, 63.f]2 -> [-512, 511.f] x [-128, 127.f]3 -> [-1024, 1023.f] x [-256, 255.f].
int max_b_frames
max number of B-frames for encoding
int pict_type
AV_PICTURE_TYPE_I, AV_PICTURE_TYPE_P, AV_PICTURE_TYPE_B, ...
uint8_t * mv_type_mb_plane
bitplane for mv_type == (4MV)
int vstransform
variable-size [48]x[48] transform type + info
VLC ff_vc1_if_1mv_mbmode_vlc[8]
int numref
number of past field pictures used as reference
void avpriv_report_missing_feature(void *avc, const char *msg,...) av_printf_format(2
Log a generic warning message about a missing feature.
VLC ff_vc1_mv_diff_vlc[4]
const uint8_t ff_vc1_intfr_4mv_mbmode_bits[4][15]
const uint8_t ff_vc1_intfr_non4mv_mbmode_bits[4][9]
in the bitstream is reported as 10b
const uint8_t ff_vc1_bfraction_bits[23]
struct AVCodecContext * avctx
GLint GLenum GLboolean GLsizei stride
const uint8_t ff_vc1_bfraction_codes[23]
int pqindex
raw pqindex used in coding set selection
#define VC1_1REF_MVDATA_VLC_BITS
int hrd_num_leaky_buckets
#define VC1_IF_MMV_MBMODE_VLC_BITS
common internal api header.
int mb_stride
mb_width+1 used for some arrays to allow simple addressing of left & top MBs without sig11 ...
VLC ff_vc1_2mv_block_pattern_vlc[4]
#define VC1_TTMB_VLC_BITS
static int get_unary(GetBitContext *gb, int stop, int len)
Get unary code of limited length.
#define VC1_IMODE_VLC_BITS
enum FrameCodingMode fcm
Frame decoding info for Advanced profile.
#define INIT_VLC_USE_NEW_STATIC
void ff_simple_idct_add_8(uint8_t *dest, ptrdiff_t line_size, int16_t *block)
uint8_t dquantfrm
pquant parameters
uint8_t next_luty[2][256]
int res_fasttx
reserved, always 1
enum AVDiscard skip_loop_filter
Skip loop filtering for selected frames.
#define VC1_MV_DIFF_VLC_BITS
#define VC1_NORM2_VLC_BITS
VLC ff_vc1_ac_coeff_table[8]
const uint8_t ff_vc1_adv_progressive_8x4_zz[32]
int ff_vc1_decode_entry_point(AVCodecContext *avctx, VC1Context *v, GetBitContext *gb)
#define VC1_INTFR_4MV_MBMODE_VLC_BITS
static const uint32_t vc1_ac_tables[AC_MODES][186][2]
uint8_t pquantizer
Uniform (over sequence) quantizer in use.
const uint8_t ff_vc1_ttblk_bits[3][8]
uint8_t(* curr_luty)[256]
static int decode012(GetBitContext *gb)
VLC_TYPE(* table)[2]
code, bits
VLC ff_vc1_1ref_mvdata_vlc[4]
int bitrtq_postproc
5 bits, quantized framerate-based postprocessing strength
int parse_only
Context is used within parser.
const uint8_t ff_vc1_subblkpat_codes[3][15]
int level
Advanced Profile.
#define VC1_NORM6_VLC_BITS
int brfd
reference frame distance (forward or backward)
void ff_simple_idct48_add(uint8_t *dest, ptrdiff_t line_size, int16_t *block)
int dquant
How qscale varies with MBs, 2 bits (not in Simple)
uint8_t mv_mode2
Secondary MV coding mode (B-frames)
const uint8_t ff_vc1_if_1mv_mbmode_bits[8][6]
const uint8_t ff_vc1_norm2_bits[4]
const uint8_t ff_vc1_if_mmv_mbmode_codes[8][8]
const uint8_t ff_vc1_mv_pmode_table2[2][4]
#define VC1_INTFR_NON4MV_MBMODE_VLC_BITS
av_cold void ff_vc1dsp_init(VC1DSPContext *dsp)
VLC ff_vc1_intfr_non4mv_mbmode_vlc[4]
VLC ff_vc1_intfr_4mv_mbmode_vlc[4]
VLC ff_vc1_subblkpat_vlc[3]
uint8_t halfpq
Uniform quant over image and qp+.5.
uint8_t((* curr_lutuv)[256]
const uint32_t ff_vc1_2ref_mvdata_codes[8][126]
const uint16_t ff_vc1_mv_diff_codes[4][73]
void ff_simple_idct_8(int16_t *block)
const int16_t ff_vc1_bfraction_lut[23]
uint8_t altpq
Current/alternate frame quantizer scale.