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