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++)
102 int imode, x, y, code,
offset;
120 if ((height * width) & 1) {
123 if (offset == width) {
125 planep += stride -
width;
131 for (; y < height *
width; y += 2) {
133 *planep++ = code & 1;
135 if (offset == width) {
137 planep += stride -
width;
139 *planep++ = code >> 1;
141 if (offset == width) {
143 planep += stride -
width;
149 if (!(height % 3) && (width % 3)) {
150 for (y = 0; y <
height; y += 3) {
151 for (x = width & 1; x <
width; x += 2) {
157 planep[x + 0] = (code >> 0) & 1;
158 planep[x + 1] = (code >> 1) & 1;
159 planep[x + 0 +
stride] = (code >> 2) & 1;
160 planep[x + 1 +
stride] = (code >> 3) & 1;
161 planep[x + 0 + stride * 2] = (code >> 4) & 1;
162 planep[x + 1 + stride * 2] = (code >> 5) & 1;
164 planep += stride * 3;
169 planep += (height & 1) * stride;
170 for (y = height & 1; y <
height; y += 2) {
171 for (x = width % 3; x <
width; x += 3) {
177 planep[x + 0] = (code >> 0) & 1;
178 planep[x + 1] = (code >> 1) & 1;
179 planep[x + 2] = (code >> 2) & 1;
180 planep[x + 0 +
stride] = (code >> 3) & 1;
181 planep[x + 1 +
stride] = (code >> 4) & 1;
182 planep[x + 2 +
stride] = (code >> 5) & 1;
184 planep += stride * 2;
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];
219 for (x = 0; x < stride *
height; x++)
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");
385 "Old WMV3 version detected, some frames may be decoded incorrectly\n");
392 "Profile %i:\nfrmrtq_postproc=%i, bitrtq_postproc=%i\n"
393 "LoopFilter=%i, MultiRes=%i, FastUVMC=%i, Extended MV=%i\n"
394 "Rangered=%i, VSTransform=%i, Overlap=%i, SyncMarker=%i\n"
395 "DQuant=%i, Quantizer mode=%i, Max B frames=%i\n",
413 "Only 4:2:0 chroma format supported\n");
432 "Advanced Profile level %i:\nfrmrtq_postproc=%i, bitrtq_postproc=%i\n"
433 "LoopFilter=%i, ChromaFormat=%i, Pulldown=%i, Interlace: %i\n"
434 "TFCTRflag=%i, FINTERPflag=%i\n",
455 }
else if (ar == 15) {
479 if (nr > 0 && nr < 8 && dr > 0 && dr < 3) {
556 av_log(avctx,
AV_LOG_ERROR,
"Chroma scaling is not supported, expect wrong picture\n");
561 "BrokenLink=%i, ClosedEntry=%i, PanscanFlag=%i\n"
562 "RefDist=%i, Postproc=%i, FastUVMC=%i, ExtMV=%i\n"
563 "DQuant=%i, VSTransform=%i, Overlap=%i, Qmode=%i\n",
571 #define INIT_LUT(lumscale, lumshift, luty, lutuv, chain) do { \
572 int scale, shift, i; \
575 shift = (255 - lumshift * 2) * 64; \
579 scale = lumscale + 32; \
581 shift = (lumshift - 64) * 64; \
583 shift = lumshift << 6; \
585 for (i = 0; i < 256; i++) { \
586 int iy = chain ? luty[i] : i; \
587 int iu = chain ? lutuv[i] : i; \
588 luty[i] = av_clip_uint8((scale * iy + shift + 32) >> 6); \
589 lutuv[i] = av_clip_uint8((scale * (iu - 128) + 128*64 + 32) >> 6);\
595 #define ROTATE(DEF, L, N, C, A) do { \
596 if (v->s.pict_type == AV_PICTURE_TYPE_BI || v->s.pict_type == AV_PICTURE_TYPE_B) { \
600 memcpy(&tmp, L , sizeof(tmp)); \
601 memcpy(L , N , sizeof(tmp)); \
602 memcpy(N , &tmp, sizeof(tmp)); \
619 if (bfraction_lut_index == 21 || bfraction_lut_index < 0) {
630 int pqindex, lowquant, status;
728 lowquant = (v->
pq > 12) ? 0 : 1;
757 "Imode: %i, Invert: %i\n", status>>1, status&1);
766 "Imode: %i, Invert: %i\n", status>>1, status&1);
800 "Imode: %i, Invert: %i\n", status>>1, status&1);
805 "Imode: %i, Invert: %i\n", status>>1, status&1);
847 int pqindex, lowquant;
849 int mbmodetab, imvtab, icbptab, twomvbptab, fourmvbptab;
863 goto parse_common_info;
951 goto parse_common_info;
1011 "Imode: %i, Invert: %i\n", status>>1, status&1);
1017 "Imode: %i, Invert: %i\n", status>>1, status&1);
1026 "Imode: %i, Invert: %i\n", status>>1, status&1);
1059 "Imode: %i, Invert: %i\n", status>>1, status&1);
1087 lowquant = (v->
pq > 12) ? 0 : 1;
1145 "Imode: %i, Invert: %i\n", status>>1, status&1);
1154 "Imode: %i, Invert: %i\n", status>>1, status&1);
1222 lowquant = (v->
pq > 12) ? 0 : 1;
1231 "Imode: %i, Invert: %i\n", status>>1, status&1);
1261 "Imode: %i, Invert: %i\n", status>>1, status&1);
1266 "Imode: %i, Invert: %i\n", status>>1, status&1);
1287 "Imode: %i, Invert: %i\n", status>>1, status&1);
1292 "Imode: %i, Invert: %i\n", status>>1, status&1);
1342 { 0x0001, 2}, { 0x0005, 3}, { 0x000D, 4}, { 0x0012, 5}, { 0x000E, 6}, { 0x0015, 7},
1343 { 0x0013, 8}, { 0x003F, 8}, { 0x004B, 9}, { 0x011F, 9}, { 0x00B8, 10}, { 0x03E3, 10},
1344 { 0x0172, 11}, { 0x024D, 12}, { 0x03DA, 12}, { 0x02DD, 13}, { 0x1F55, 13}, { 0x05B9, 14},
1345 { 0x3EAE, 14}, { 0x0000, 4}, { 0x0010, 5}, { 0x0008, 7}, { 0x0020, 8}, { 0x0029, 9},
1346 { 0x01F4, 9}, { 0x0233, 10}, { 0x01E0, 11}, { 0x012A, 12}, { 0x03DD, 12}, { 0x050A, 13},
1347 { 0x1F29, 13}, { 0x0A42, 14}, { 0x1272, 15}, { 0x1737, 15}, { 0x0003, 5}, { 0x0011, 7},
1348 { 0x00C4, 8}, { 0x004B, 10}, { 0x00B4, 11}, { 0x07D4, 11}, { 0x0345, 12}, { 0x02D7, 13},
1349 { 0x07BF, 13}, { 0x0938, 14}, { 0x0BBB, 14}, { 0x095E, 15}, { 0x0013, 5}, { 0x0078, 7},
1350 { 0x0069, 9}, { 0x0232, 10}, { 0x0461, 11}, { 0x03EC, 12}, { 0x0520, 13}, { 0x1F2A, 13},
1351 { 0x3E50, 14}, { 0x3E51, 14}, { 0x1486, 15}, { 0x000C, 6}, { 0x0024, 9}, { 0x0094, 11},
1352 { 0x08C0, 12}, { 0x0F09, 14}, { 0x1EF0, 15}, { 0x003D, 6}, { 0x0053, 9}, { 0x01A0, 11},
1353 { 0x02D6, 13}, { 0x0F08, 14}, { 0x0013, 7}, { 0x007C, 9}, { 0x07C1, 11}, { 0x04AC, 14},
1354 { 0x001B, 7}, { 0x00A0, 10}, { 0x0344, 12}, { 0x0F79, 14}, { 0x0079, 7}, { 0x03E1, 10},
1355 { 0x02D4, 13}, { 0x2306, 14}, { 0x0021, 8}, { 0x023C, 10}, { 0x0FAE, 12}, { 0x23DE, 14},
1356 { 0x0035, 8}, { 0x0175, 11}, { 0x07B3, 13}, { 0x00C5, 8}, { 0x0174, 11}, { 0x0785, 13},
1357 { 0x0048, 9}, { 0x01A3, 11}, { 0x049E, 13}, { 0x002C, 9}, { 0x00FA, 10}, { 0x07D6, 11},
1358 { 0x0092, 10}, { 0x05CC, 13}, { 0x1EF1, 15}, { 0x00A3, 10}, { 0x03ED, 12}, { 0x093E, 14},
1359 { 0x01E2, 11}, { 0x1273, 15}, { 0x07C4, 11}, { 0x1487, 15}, { 0x0291, 12}, { 0x0293, 12},
1360 { 0x0F8A, 12}, { 0x0509, 13}, { 0x0508, 13}, { 0x078D, 13}, { 0x07BE, 13}, { 0x078C, 13},
1361 { 0x04AE, 14}, { 0x0BBA, 14}, { 0x2307, 14}, { 0x0B9A, 14}, { 0x1736, 15}, { 0x000E, 4},
1362 { 0x0045, 7}, { 0x01F3, 9}, { 0x047A, 11}, { 0x05DC, 13}, { 0x23DF, 14}, { 0x0019, 5},
1363 { 0x0028, 9}, { 0x0176, 11}, { 0x049D, 13}, { 0x23DD, 14}, { 0x0030, 6}, { 0x00A2, 10},
1364 { 0x02EF, 12}, { 0x05B8, 14}, { 0x003F, 6}, { 0x00A5, 10}, { 0x03DB, 12}, { 0x093F, 14},
1365 { 0x0044, 7}, { 0x07CB, 11}, { 0x095F, 15}, { 0x0063, 7}, { 0x03C3, 12}, { 0x0015, 8},
1366 { 0x08F6, 12}, { 0x0017, 8}, { 0x0498, 13}, { 0x002C, 8}, { 0x07B2, 13}, { 0x002F, 8},
1367 { 0x1F54, 13}, { 0x008D, 8}, { 0x07BD, 13}, { 0x008E, 8}, { 0x1182, 13}, { 0x00FB, 8},
1368 { 0x050B, 13}, { 0x002D, 8}, { 0x07C0, 11}, { 0x0079, 9}, { 0x1F5F, 13}, { 0x007A, 9},
1369 { 0x1F56, 13}, { 0x0231, 10}, { 0x03E4, 10}, { 0x01A1, 11}, { 0x0143, 11}, { 0x01F7, 11},
1370 { 0x016F, 12}, { 0x0292, 12}, { 0x02E7, 12}, { 0x016C, 12}, { 0x016D, 12}, { 0x03DC, 12},
1371 { 0x0F8B, 12}, { 0x0499, 13}, { 0x03D8, 12}, { 0x078E, 13}, { 0x02D5, 13}, { 0x1F5E, 13},
1372 { 0x1F2B, 13}, { 0x078F, 13}, { 0x04AD, 14}, { 0x3EAF, 14}, { 0x23DC, 14}, { 0x004A, 9}
1375 { 0x0000, 3}, { 0x0003, 4}, { 0x000B, 5}, { 0x0014, 6}, { 0x003F, 6}, { 0x005D, 7},
1376 { 0x00A2, 8}, { 0x00AC, 9}, { 0x016E, 9}, { 0x020A, 10}, { 0x02E2, 10}, { 0x0432, 11},
1377 { 0x05C9, 11}, { 0x0827, 12}, { 0x0B54, 12}, { 0x04E6, 13}, { 0x105F, 13}, { 0x172A, 13},
1378 { 0x20B2, 14}, { 0x2D4E, 14}, { 0x39F0, 14}, { 0x4175, 15}, { 0x5A9E, 15}, { 0x0004, 4},
1379 { 0x001E, 5}, { 0x0042, 7}, { 0x00B6, 8}, { 0x0173, 9}, { 0x0395, 10}, { 0x072E, 11},
1380 { 0x0B94, 12}, { 0x16A4, 13}, { 0x20B3, 14}, { 0x2E45, 14}, { 0x0005, 5}, { 0x0040, 7},
1381 { 0x0049, 9}, { 0x028F, 10}, { 0x05CB, 11}, { 0x048A, 13}, { 0x09DD, 14}, { 0x73E2, 15},
1382 { 0x0018, 5}, { 0x0025, 8}, { 0x008A, 10}, { 0x051B, 11}, { 0x0E5F, 12}, { 0x09C9, 14},
1383 { 0x139C, 15}, { 0x0029, 6}, { 0x004F, 9}, { 0x0412, 11}, { 0x048D, 13}, { 0x2E41, 14},
1384 { 0x0038, 6}, { 0x010E, 9}, { 0x05A8, 11}, { 0x105C, 13}, { 0x39F2, 14}, { 0x0058, 7},
1385 { 0x021F, 10}, { 0x0E7E, 12}, { 0x39FF, 14}, { 0x0023, 8}, { 0x02E3, 10}, { 0x04E5, 13},
1386 { 0x2E40, 14}, { 0x00A1, 8}, { 0x05BE, 11}, { 0x09C8, 14}, { 0x0083, 8}, { 0x013A, 11},
1387 { 0x1721, 13}, { 0x0044, 9}, { 0x0276, 12}, { 0x39F6, 14}, { 0x008B, 10}, { 0x04EF, 13},
1388 { 0x5A9B, 15}, { 0x0208, 10}, { 0x1CFE, 13}, { 0x0399, 10}, { 0x1CB4, 13}, { 0x039E, 10},
1389 { 0x39F3, 14}, { 0x05AB, 11}, { 0x73E3, 15}, { 0x0737, 11}, { 0x5A9F, 15}, { 0x082D, 12},
1390 { 0x0E69, 12}, { 0x0E68, 12}, { 0x0433, 11}, { 0x0B7B, 12}, { 0x2DF8, 14}, { 0x2E56, 14},
1391 { 0x2E57, 14}, { 0x39F7, 14}, { 0x51A5, 15}, { 0x0003, 3}, { 0x002A, 6}, { 0x00E4, 8},
1392 { 0x028E, 10}, { 0x0735, 11}, { 0x1058, 13}, { 0x1CFA, 13}, { 0x2DF9, 14}, { 0x4174, 15},
1393 { 0x0009, 4}, { 0x0054, 8}, { 0x0398, 10}, { 0x048B, 13}, { 0x139D, 15}, { 0x000D, 4},
1394 { 0x00AD, 9}, { 0x0826, 12}, { 0x2D4C, 14}, { 0x0011, 5}, { 0x016B, 9}, { 0x0B7F, 12},
1395 { 0x51A4, 15}, { 0x0019, 5}, { 0x021B, 10}, { 0x16FD, 13}, { 0x001D, 5}, { 0x0394, 10},
1396 { 0x28D3, 14}, { 0x002B, 6}, { 0x05BC, 11}, { 0x5A9A, 15}, { 0x002F, 6}, { 0x0247, 12},
1397 { 0x0010, 7}, { 0x0A35, 12}, { 0x003E, 6}, { 0x0B7A, 12}, { 0x0059, 7}, { 0x105E, 13},
1398 { 0x0026, 8}, { 0x09CF, 14}, { 0x0055, 8}, { 0x1CB5, 13}, { 0x0057, 8}, { 0x0E5B, 12},
1399 { 0x00A0, 8}, { 0x1468, 13}, { 0x0170, 9}, { 0x0090, 10}, { 0x01CE, 9}, { 0x021A, 10},
1400 { 0x0218, 10}, { 0x0168, 9}, { 0x021E, 10}, { 0x0244, 12}, { 0x0736, 11}, { 0x0138, 11},
1401 { 0x0519, 11}, { 0x0E5E, 12}, { 0x072C, 11}, { 0x0B55, 12}, { 0x09DC, 14}, { 0x20BB, 14},
1402 { 0x048C, 13}, { 0x1723, 13}, { 0x2E44, 14}, { 0x16A5, 13}, { 0x0518, 11}, { 0x39FE, 14},
1406 { 0x0001, 2}, { 0x0006, 3}, { 0x000F, 4}, { 0x0016, 5}, { 0x0020, 6}, { 0x0018, 7},
1407 { 0x0008, 8}, { 0x009A, 8}, { 0x0056, 9}, { 0x013E, 9}, { 0x00F0, 10}, { 0x03A5, 10},
1408 { 0x0077, 11}, { 0x01EF, 11}, { 0x009A, 12}, { 0x005D, 13}, { 0x0001, 4}, { 0x0011, 5},
1409 { 0x0002, 7}, { 0x000B, 8}, { 0x0012, 9}, { 0x01D6, 9}, { 0x027E, 10}, { 0x0191, 11},
1410 { 0x00EA, 12}, { 0x03DC, 12}, { 0x013B, 13}, { 0x0004, 5}, { 0x0014, 7}, { 0x009E, 8},
1411 { 0x0009, 10}, { 0x01AC, 11}, { 0x01E2, 11}, { 0x03CA, 12}, { 0x005F, 13}, { 0x0017, 5},
1412 { 0x004E, 7}, { 0x005E, 9}, { 0x00F3, 10}, { 0x01AD, 11}, { 0x00EC, 12}, { 0x05F0, 13},
1413 { 0x000E, 6}, { 0x00E1, 8}, { 0x03A4, 10}, { 0x009C, 12}, { 0x013D, 13}, { 0x003B, 6},
1414 { 0x001C, 9}, { 0x0014, 11}, { 0x09BE, 12}, { 0x0006, 7}, { 0x007A, 9}, { 0x0190, 11},
1415 { 0x0137, 13}, { 0x001B, 7}, { 0x0008, 10}, { 0x075C, 11}, { 0x0071, 7}, { 0x00D7, 10},
1416 { 0x09BF, 12}, { 0x0007, 8}, { 0x00AF, 10}, { 0x04CC, 11}, { 0x0034, 8}, { 0x0265, 10},
1417 { 0x009F, 12}, { 0x00E0, 8}, { 0x0016, 11}, { 0x0327, 12}, { 0x0015, 9}, { 0x017D, 11},
1418 { 0x0EBB, 12}, { 0x0014, 9}, { 0x00F6, 10}, { 0x01E4, 11}, { 0x00CB, 10}, { 0x099D, 12},
1419 { 0x00CA, 10}, { 0x02FC, 12}, { 0x017F, 11}, { 0x04CD, 11}, { 0x02FD, 12}, { 0x04FE, 11},
1420 { 0x013A, 13}, { 0x000A, 4}, { 0x0042, 7}, { 0x01D3, 9}, { 0x04DD, 11}, { 0x0012, 5},
1421 { 0x00E8, 8}, { 0x004C, 11}, { 0x0136, 13}, { 0x0039, 6}, { 0x0264, 10}, { 0x0EBA, 12},
1422 { 0x0000, 7}, { 0x00AE, 10}, { 0x099C, 12}, { 0x001F, 7}, { 0x04DE, 11}, { 0x0043, 7},
1423 { 0x04DC, 11}, { 0x0003, 8}, { 0x03CB, 12}, { 0x0006, 8}, { 0x099E, 12}, { 0x002A, 8},
1424 { 0x05F1, 13}, { 0x000F, 8}, { 0x09FE, 12}, { 0x0033, 8}, { 0x09FF, 12}, { 0x0098, 8},
1425 { 0x099F, 12}, { 0x00EA, 8}, { 0x013C, 13}, { 0x002E, 8}, { 0x0192, 11}, { 0x0136, 9},
1426 { 0x006A, 9}, { 0x0015, 11}, { 0x03AF, 10}, { 0x01E3, 11}, { 0x0074, 11}, { 0x00EB, 12},
1427 { 0x02F9, 12}, { 0x005C, 13}, { 0x00ED, 12}, { 0x03DD, 12}, { 0x0326, 12}, { 0x005E, 13},
1431 { 0x0004, 3}, { 0x0014, 5}, { 0x0017, 7}, { 0x007F, 8}, { 0x0154, 9}, { 0x01F2, 10},
1432 { 0x00BF, 11}, { 0x0065, 12}, { 0x0AAA, 12}, { 0x0630, 13}, { 0x1597, 13}, { 0x03B7, 14},
1433 { 0x2B22, 14}, { 0x0BE6, 15}, { 0x000B, 4}, { 0x0037, 7}, { 0x0062, 9}, { 0x0007, 11},
1434 { 0x0166, 12}, { 0x00CE, 13}, { 0x1590, 13}, { 0x05F6, 14}, { 0x0BE7, 15}, { 0x0007, 5},
1435 { 0x006D, 8}, { 0x0003, 11}, { 0x031F, 12}, { 0x05F2, 14}, { 0x0002, 6}, { 0x0061, 9},
1436 { 0x0055, 12}, { 0x01DF, 14}, { 0x001A, 6}, { 0x001E, 10}, { 0x0AC9, 12}, { 0x2B23, 14},
1437 { 0x001E, 6}, { 0x001F, 10}, { 0x0AC3, 12}, { 0x2B2B, 14}, { 0x0006, 7}, { 0x0004, 11},
1438 { 0x02F8, 13}, { 0x0019, 7}, { 0x0006, 11}, { 0x063D, 13}, { 0x0057, 7}, { 0x0182, 11},
1439 { 0x2AA2, 14}, { 0x0004, 8}, { 0x0180, 11}, { 0x059C, 14}, { 0x007D, 8}, { 0x0164, 12},
1440 { 0x076D, 15}, { 0x0002, 9}, { 0x018D, 11}, { 0x1581, 13}, { 0x00AD, 8}, { 0x0060, 12},
1441 { 0x0C67, 14}, { 0x001C, 9}, { 0x00EE, 13}, { 0x0003, 9}, { 0x02CF, 13}, { 0x00D9, 9},
1442 { 0x1580, 13}, { 0x0002, 11}, { 0x0183, 11}, { 0x0057, 12}, { 0x0061, 12}, { 0x0031, 11},
1443 { 0x0066, 12}, { 0x0631, 13}, { 0x0632, 13}, { 0x00AC, 13}, { 0x031D, 12}, { 0x0076, 12},
1444 { 0x003A, 11}, { 0x0165, 12}, { 0x0C66, 14}, { 0x0003, 2}, { 0x0054, 7}, { 0x02AB, 10},
1445 { 0x0016, 13}, { 0x05F7, 14}, { 0x0005, 4}, { 0x00F8, 9}, { 0x0AA9, 12}, { 0x005F, 15},
1446 { 0x0004, 4}, { 0x001C, 10}, { 0x1550, 13}, { 0x0004, 5}, { 0x0077, 11}, { 0x076C, 15},
1447 { 0x000E, 5}, { 0x000A, 12}, { 0x000C, 5}, { 0x0562, 11}, { 0x0004, 6}, { 0x031C, 12},
1448 { 0x0006, 6}, { 0x00C8, 13}, { 0x000D, 6}, { 0x01DA, 13}, { 0x0007, 6}, { 0x00C9, 13},
1449 { 0x0001, 7}, { 0x002E, 14}, { 0x0014, 7}, { 0x1596, 13}, { 0x000A, 7}, { 0x0AC2, 12},
1450 { 0x0016, 7}, { 0x015B, 14}, { 0x0015, 7}, { 0x015A, 14}, { 0x000F, 8}, { 0x005E, 15},
1451 { 0x007E, 8}, { 0x00AB, 8}, { 0x002D, 9}, { 0x00D8, 9}, { 0x000B, 9}, { 0x0014, 10},
1452 { 0x02B3, 10}, { 0x01F3, 10}, { 0x003A, 10}, { 0x0000, 10}, { 0x0058, 10}, { 0x002E, 9},
1453 { 0x005E, 10}, { 0x0563, 11}, { 0x00EC, 12}, { 0x0054, 12}, { 0x0AC1, 12}, { 0x1556, 13},
1454 { 0x02FA, 13}, { 0x0181, 11}, { 0x1557, 13}, { 0x059D, 14}, { 0x2AA3, 14}, { 0x2B2A, 14},
1455 { 0x01DE, 14}, { 0x063C, 13}, { 0x00CF, 13}, { 0x1594, 13}, { 0x000D, 9}
1458 { 0x0002, 2}, { 0x0006, 3}, { 0x000F, 4}, { 0x000D, 5}, { 0x000C, 5}, { 0x0015, 6},
1459 { 0x0013, 6}, { 0x0012, 6}, { 0x0017, 7}, { 0x001F, 8}, { 0x001E, 8}, { 0x001D, 8},
1460 { 0x0025, 9}, { 0x0024, 9}, { 0x0023, 9}, { 0x0021, 9}, { 0x0021, 10}, { 0x0020, 10},
1461 { 0x000F, 10}, { 0x000E, 10}, { 0x0007, 11}, { 0x0006, 11}, { 0x0020, 11}, { 0x0021, 11},
1462 { 0x0050, 12}, { 0x0051, 12}, { 0x0052, 12}, { 0x000E, 4}, { 0x0014, 6}, { 0x0016, 7},
1463 { 0x001C, 8}, { 0x0020, 9}, { 0x001F, 9}, { 0x000D, 10}, { 0x0022, 11}, { 0x0053, 12},
1464 { 0x0055, 12}, { 0x000B, 5}, { 0x0015, 7}, { 0x001E, 9}, { 0x000C, 10}, { 0x0056, 12},
1465 { 0x0011, 6}, { 0x001B, 8}, { 0x001D, 9}, { 0x000B, 10}, { 0x0010, 6}, { 0x0022, 9},
1466 { 0x000A, 10}, { 0x000D, 6}, { 0x001C, 9}, { 0x0008, 10}, { 0x0012, 7}, { 0x001B, 9},
1467 { 0x0054, 12}, { 0x0014, 7}, { 0x001A, 9}, { 0x0057, 12}, { 0x0019, 8}, { 0x0009, 10},
1468 { 0x0018, 8}, { 0x0023, 11}, { 0x0017, 8}, { 0x0019, 9}, { 0x0018, 9}, { 0x0007, 10},
1469 { 0x0058, 12}, { 0x0007, 4}, { 0x000C, 6}, { 0x0016, 8}, { 0x0017, 9}, { 0x0006, 10},
1470 { 0x0005, 11}, { 0x0004, 11}, { 0x0059, 12}, { 0x000F, 6}, { 0x0016, 9}, { 0x0005, 10},
1471 { 0x000E, 6}, { 0x0004, 10}, { 0x0011, 7}, { 0x0024, 11}, { 0x0010, 7}, { 0x0025, 11},
1472 { 0x0013, 7}, { 0x005A, 12}, { 0x0015, 8}, { 0x005B, 12}, { 0x0014, 8}, { 0x0013, 8},
1473 { 0x001A, 8}, { 0x0015, 9}, { 0x0014, 9}, { 0x0013, 9}, { 0x0012, 9}, { 0x0011, 9},
1474 { 0x0026, 11}, { 0x0027, 11}, { 0x005C, 12}, { 0x005D, 12}, { 0x005E, 12}, { 0x005F, 12},
1478 { 0x0002, 2}, { 0x000F, 4}, { 0x0015, 6}, { 0x0017, 7}, { 0x001F, 8}, { 0x0025, 9},
1479 { 0x0024, 9}, { 0x0021, 10}, { 0x0020, 10}, { 0x0007, 11}, { 0x0006, 11}, { 0x0020, 11},
1480 { 0x0006, 3}, { 0x0014, 6}, { 0x001E, 8}, { 0x000F, 10}, { 0x0021, 11}, { 0x0050, 12},
1481 { 0x000E, 4}, { 0x001D, 8}, { 0x000E, 10}, { 0x0051, 12}, { 0x000D, 5}, { 0x0023, 9},
1482 { 0x000D, 10}, { 0x000C, 5}, { 0x0022, 9}, { 0x0052, 12}, { 0x000B, 5}, { 0x000C, 10},
1483 { 0x0053, 12}, { 0x0013, 6}, { 0x000B, 10}, { 0x0054, 12}, { 0x0012, 6}, { 0x000A, 10},
1484 { 0x0011, 6}, { 0x0009, 10}, { 0x0010, 6}, { 0x0008, 10}, { 0x0016, 7}, { 0x0055, 12},
1485 { 0x0015, 7}, { 0x0014, 7}, { 0x001C, 8}, { 0x001B, 8}, { 0x0021, 9}, { 0x0020, 9},
1486 { 0x001F, 9}, { 0x001E, 9}, { 0x001D, 9}, { 0x001C, 9}, { 0x001B, 9}, { 0x001A, 9},
1487 { 0x0022, 11}, { 0x0023, 11}, { 0x0056, 12}, { 0x0057, 12}, { 0x0007, 4}, { 0x0019, 9},
1488 { 0x0005, 11}, { 0x000F, 6}, { 0x0004, 11}, { 0x000E, 6}, { 0x000D, 6}, { 0x000C, 6},
1489 { 0x0013, 7}, { 0x0012, 7}, { 0x0011, 7}, { 0x0010, 7}, { 0x001A, 8}, { 0x0019, 8},
1490 { 0x0018, 8}, { 0x0017, 8}, { 0x0016, 8}, { 0x0015, 8}, { 0x0014, 8}, { 0x0013, 8},
1491 { 0x0018, 9}, { 0x0017, 9}, { 0x0016, 9}, { 0x0015, 9}, { 0x0014, 9}, { 0x0013, 9},
1492 { 0x0012, 9}, { 0x0011, 9}, { 0x0007, 10}, { 0x0006, 10}, { 0x0005, 10}, { 0x0004, 10},
1493 { 0x0024, 11}, { 0x0025, 11}, { 0x0026, 11}, { 0x0027, 11}, { 0x0058, 12}, { 0x0059, 12},
1494 { 0x005A, 12}, { 0x005B, 12}, { 0x005C, 12}, { 0x005D, 12}, { 0x005E, 12}, { 0x005F, 12},
1498 { 0x0000, 2}, { 0x0003, 3}, { 0x000D, 4}, { 0x0005, 4}, { 0x001C, 5}, { 0x0016, 5},
1499 { 0x003F, 6}, { 0x003A, 6}, { 0x002E, 6}, { 0x0022, 6}, { 0x007B, 7}, { 0x0067, 7},
1500 { 0x005F, 7}, { 0x0047, 7}, { 0x0026, 7}, { 0x00EF, 8}, { 0x00CD, 8}, { 0x00C1, 8},
1501 { 0x00A9, 8}, { 0x004F, 8}, { 0x01F2, 9}, { 0x01DD, 9}, { 0x0199, 9}, { 0x0185, 9},
1502 { 0x015D, 9}, { 0x011B, 9}, { 0x03EF, 10}, { 0x03E1, 10}, { 0x03C8, 10}, { 0x0331, 10},
1503 { 0x0303, 10}, { 0x02F1, 10}, { 0x02A0, 10}, { 0x0233, 10}, { 0x0126, 10}, { 0x07C0, 11},
1504 { 0x076F, 11}, { 0x076C, 11}, { 0x0661, 11}, { 0x0604, 11}, { 0x0572, 11}, { 0x0551, 11},
1505 { 0x046A, 11}, { 0x0274, 11}, { 0x0F27, 12}, { 0x0F24, 12}, { 0x0EDB, 12}, { 0x0C8E, 12},
1506 { 0x0C0B, 12}, { 0x0C0A, 12}, { 0x0AE3, 12}, { 0x08D6, 12}, { 0x0490, 12}, { 0x0495, 12},
1507 { 0x1F19, 13}, { 0x1DB5, 13}, { 0x0009, 4}, { 0x0010, 5}, { 0x0029, 6}, { 0x0062, 7},
1508 { 0x00F3, 8}, { 0x00AD, 8}, { 0x01E5, 9}, { 0x0179, 9}, { 0x009C, 9}, { 0x03B1, 10},
1509 { 0x02AE, 10}, { 0x0127, 10}, { 0x076E, 11}, { 0x0570, 11}, { 0x0275, 11}, { 0x0F25, 12},
1510 { 0x0EC0, 12}, { 0x0AA0, 12}, { 0x08D7, 12}, { 0x1E4C, 13}, { 0x0008, 5}, { 0x0063, 7},
1511 { 0x00AF, 8}, { 0x017B, 9}, { 0x03B3, 10}, { 0x07DD, 11}, { 0x0640, 11}, { 0x0F8D, 12},
1512 { 0x0BC1, 12}, { 0x0491, 12}, { 0x0028, 6}, { 0x00C3, 8}, { 0x0151, 9}, { 0x02A1, 10},
1513 { 0x0573, 11}, { 0x0EC3, 12}, { 0x1F35, 13}, { 0x0065, 7}, { 0x01DA, 9}, { 0x02AF, 10},
1514 { 0x0277, 11}, { 0x08C9, 12}, { 0x1781, 13}, { 0x0025, 7}, { 0x0118, 9}, { 0x0646, 11},
1515 { 0x0AA6, 12}, { 0x1780, 13}, { 0x00C9, 8}, { 0x0321, 10}, { 0x0F9B, 12}, { 0x191E, 13},
1516 { 0x0048, 8}, { 0x07CC, 11}, { 0x0AA1, 12}, { 0x0180, 9}, { 0x0465, 11}, { 0x1905, 13},
1517 { 0x03E2, 10}, { 0x0EC1, 12}, { 0x3C9B, 14}, { 0x02F4, 10}, { 0x08C8, 12}, { 0x07C1, 11},
1518 { 0x0928, 13}, { 0x05E1, 11}, { 0x320D, 14}, { 0x0EC2, 12}, { 0x6418, 15}, { 0x1F34, 13},
1519 { 0x0078, 7}, { 0x0155, 9}, { 0x0552, 11}, { 0x191F, 13}, { 0x00FA, 8}, { 0x07DC, 11},
1520 { 0x1907, 13}, { 0x00AC, 8}, { 0x0249, 11}, { 0x13B1, 14}, { 0x01F6, 9}, { 0x0AE2, 12},
1521 { 0x01DC, 9}, { 0x04ED, 12}, { 0x0184, 9}, { 0x1904, 13}, { 0x0156, 9}, { 0x09D9, 13},
1522 { 0x03E7, 10}, { 0x0929, 13}, { 0x03B2, 10}, { 0x3B68, 14}, { 0x02F5, 10}, { 0x13B0, 14},
1523 { 0x0322, 10}, { 0x3B69, 14}, { 0x0234, 10}, { 0x7935, 15}, { 0x07C7, 11}, { 0xC833, 16},
1524 { 0x0660, 11}, { 0x7934, 15}, { 0x024B, 11}, { 0xC832, 16}, { 0x0AA7, 12}, { 0x1F18, 13},
1528 { 0x0002, 2}, { 0x0000, 3}, { 0x001E, 5}, { 0x0004, 5}, { 0x0012, 6}, { 0x0070, 7},
1529 { 0x001A, 7}, { 0x005F, 8}, { 0x0047, 8}, { 0x01D3, 9}, { 0x00B5, 9}, { 0x0057, 9},
1530 { 0x03B5, 10}, { 0x016D, 10}, { 0x0162, 10}, { 0x07CE, 11}, { 0x0719, 11}, { 0x0691, 11},
1531 { 0x02C6, 11}, { 0x0156, 11}, { 0x0F92, 12}, { 0x0D2E, 12}, { 0x0D20, 12}, { 0x059E, 12},
1532 { 0x0468, 12}, { 0x02A6, 12}, { 0x1DA2, 13}, { 0x1C60, 13}, { 0x1A43, 13}, { 0x0B1D, 13},
1533 { 0x08C0, 13}, { 0x055D, 13}, { 0x0003, 3}, { 0x000A, 5}, { 0x0077, 7}, { 0x00E5, 8},
1534 { 0x01D9, 9}, { 0x03E5, 10}, { 0x0166, 10}, { 0x0694, 11}, { 0x0152, 11}, { 0x059F, 12},
1535 { 0x1F3C, 13}, { 0x1A4B, 13}, { 0x055E, 13}, { 0x000C, 4}, { 0x007D, 7}, { 0x0044, 8},
1536 { 0x03E0, 10}, { 0x0769, 11}, { 0x0E31, 12}, { 0x1F26, 13}, { 0x055C, 13}, { 0x001B, 5},
1537 { 0x00E2, 8}, { 0x03A5, 10}, { 0x02C9, 11}, { 0x1F23, 13}, { 0x3B47, 14}, { 0x0007, 5},
1538 { 0x01D8, 9}, { 0x02D8, 11}, { 0x1F27, 13}, { 0x3494, 14}, { 0x0035, 6}, { 0x03E1, 10},
1539 { 0x059C, 12}, { 0x38C3, 14}, { 0x000C, 6}, { 0x0165, 10}, { 0x1D23, 13}, { 0x1638, 14},
1540 { 0x0068, 7}, { 0x0693, 11}, { 0x3A45, 14}, { 0x0020, 7}, { 0x0F90, 12}, { 0x7CF6, 15},
1541 { 0x00E8, 8}, { 0x058F, 12}, { 0x2CEF, 15}, { 0x0045, 8}, { 0x0B3A, 13}, { 0x01F1, 9},
1542 { 0x3B46, 14}, { 0x01A7, 9}, { 0x1676, 14}, { 0x0056, 9}, { 0x692A, 15}, { 0x038D, 10},
1543 { 0xE309, 16}, { 0x00AA, 10}, { 0x1C611, 17}, { 0x02DF, 11}, { 0xB3B9, 17}, { 0x02C8, 11},
1544 { 0x38C20, 18}, { 0x01B0, 11}, { 0x16390, 18}, { 0x0F9F, 12}, { 0x16771, 18}, { 0x0ED0, 12},
1545 { 0x71843, 19}, { 0x0D2A, 12}, { 0xF9E8C, 20}, { 0x0461, 12}, { 0xF9E8E, 20}, { 0x0B67, 13},
1546 { 0x055F, 13}, { 0x003F, 6}, { 0x006D, 9}, { 0x0E90, 12}, { 0x054E, 13}, { 0x0013, 6},
1547 { 0x0119, 10}, { 0x0B66, 13}, { 0x000B, 6}, { 0x0235, 11}, { 0x7CF5, 15}, { 0x0075, 7},
1548 { 0x0D24, 12}, { 0xF9E9, 16}, { 0x002E, 7}, { 0x1F22, 13}, { 0x0021, 7}, { 0x054F, 13},
1549 { 0x0014, 7}, { 0x3A44, 14}, { 0x00E4, 8}, { 0x7CF7, 15}, { 0x005E, 8}, { 0x7185, 15},
1550 { 0x0037, 8}, { 0x2C73, 15}, { 0x01DB, 9}, { 0x59DD, 16}, { 0x01C7, 9}, { 0x692B, 15},
1551 { 0x01A6, 9}, { 0x58E5, 16}, { 0x00B4, 9}, { 0x1F3D0, 17}, { 0x00B0, 9}, { 0xB1C9, 17},
1552 { 0x03E6, 10}, { 0x16770, 18}, { 0x016E, 10}, { 0x3E7A2, 18}, { 0x011B, 10}, { 0xF9E8D, 20},
1553 { 0x00D9, 10}, { 0xF9E8F, 20}, { 0x00A8, 10}, { 0x2C723, 19}, { 0x0749, 11}, { 0xE3084, 20},
1554 { 0x0696, 11}, { 0x58E45, 20}, { 0x02DE, 11}, { 0xB1C88, 21}, { 0x0231, 11}, { 0x1C610A, 21},
1555 { 0x01B1, 11}, { 0x71842D, 23}, { 0x0D2B, 12}, { 0x38C217, 22}, { 0x0D2F, 12}, { 0x163913, 22},
1556 { 0x05B2, 12}, { 0x163912, 22}, { 0x0469, 12}, { 0x71842C, 23}, { 0x1A42, 13}, { 0x08C1, 13},
1562 0, 520, 552, 616, 1128, 1160, 1224, 1740, 1772, 1836, 1900, 2436,
1563 2986, 3050, 3610, 4154, 4218, 4746, 5326, 5390, 5902, 6554, 7658, 8342,
1564 9304, 9988, 10630, 11234, 12174, 13006, 13560, 14232, 14786, 15432, 16350, 17522,
1565 20372, 21818, 22330, 22394, 23166, 23678, 23742, 24820, 25332, 25396, 26460, 26980,
1566 27048, 27592, 27600, 27608, 27616, 27624, 28224, 28258, 28290, 28802, 28834, 28866,
1567 29378, 29412, 29444, 29960, 29994, 30026, 30538, 30572, 30604, 31120, 31154, 31186,
1568 31714, 31746, 31778, 32306, 32340, 32372
1578 static int done = 0;
1580 static VLC_TYPE vlc_table[32372][2];
1598 for (i = 0; i < 3; i++) {
1615 for (i = 0; i < 4; i++) {
1632 for (i = 0; i < 8; i++) {
1645 for (i = 0; i < 4; i++) {
1665 for (i = 0; i < 4; i++) {
1673 for (i = 0; i < 8; i++) {
int color_prim
8bits, 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)
void(* vc1_inv_trans_8x4)(uint8_t *dest, int line_size, int16_t *block)
ptrdiff_t const GLvoid * data
int reffield
if numref = 0 (1 reference) then reffield decides which
const uint8_t ff_vc1_norm2_codes[4]
void ff_simple_idct84_add(uint8_t *dest, int line_size, int16_t *block)
const uint8_t ff_vc1_2ref_mvdata_bits[8][126]
void(* vc1_inv_trans_4x8)(uint8_t *dest, int line_size, int16_t *block)
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.
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
8bits, 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
3bits,
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
8bits, 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.
#define INIT_VLC_STATIC(vlc, bits, a, b, c, d, e, f, g, static_size)
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]
void(* vc1_inv_trans_8x4_dc)(uint8_t *dest, int line_size, int16_t *block)
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.
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
void(* vc1_inv_trans_8x8_dc)(uint8_t *dest, int line_size, int16_t *block)
#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
int qs_last
if qpel has been used in the previous (tr.) picture
void(* vc1_inv_trans_4x4)(uint8_t *dest, int line_size, 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]
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
void(* vc1_inv_trans_4x4_dc)(uint8_t *dest, int line_size, int16_t *block)
const uint8_t ff_wmv2_scantableB[64]
#define VC1_IF_1MV_MBMODE_VLC_BITS
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)
int av_reduce(int *dst_num, int *dst_den, int64_t num, int64_t den, int64_t max)
Reduce a fraction.
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
void ff_simple_idct48_add(uint8_t *dest, int line_size, int16_t *block)
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.
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.
#define INIT_VLC_USE_NEW_STATIC
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.
int finterpflag
INTERPFRM present.
#define AV_LOG_INFO
Standard information.
static int decode_sequence_header_adv(VC1Context *v, GetBitContext *gb)
int chromaformat
2bits, 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]
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.
const uint8_t ff_wmv2_scantableA[64]
int height
picture size. must be a multiple of 16
#define init_vlc(vlc, nb_bits, nb_codes,bits, bits_wrap, bits_size,codes, codes_wrap, codes_size,flags)
int extended_dmv
Additional extended dmv range at P/B frame-level.
static unsigned int get_bits1(GetBitContext *s)
BYTE int const BYTE int int int height
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 numerator/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
2bits, 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.
void ff_simple_idct_add_8(uint8_t *dest, int line_size, int16_t *block)
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.
uint8_t dquantfrm
pquant parameters
uint8_t next_luty[2][256]
void ff_simple_idct44_add(uint8_t *dest, int line_size, int16_t *block)
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
5bits, 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)
int dquant
How qscale varies with MBs, 2bits (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]
void(* vc1_inv_trans_4x8_dc)(uint8_t *dest, int line_size, int16_t *block)
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.