History

avcodec/msmpeg4dec: Avoid lookups when decoding motion vector

Up until now, the decoder uses VLCs to determine whether this is an escape element or an index in two separate tables giving the x and y components of the motion vector. Given that both these components fit into an int16_t and therefore into a VLCElem's symbol one can simply use a symbol table to avoid the latter lookups. This necessitated to combine the two tables for x and y components. While just at it, also switch to ff_vlc_init_tables_from_lengths(). This will allow to get rid of the code tables (about 4KiB) once the encoder has been ported, too.

Andreas Rheinhardt committed 1 year ago

Commit 3d9a5811 parent 82a856e4 files · +536 −25Browse files

Unified · Split

4 files
  1. libavcodec/msmpeg4data.c +509 −1
  2. libavcodec/msmpeg4data.h +6 −1
  3. libavcodec/msmpeg4dec.c +20 −22
  4. libavcodec/msmpeg4enc.c +1 −1
libavcodec/msmpeg4data.c+509−1
@@ -481,6 +481,515 @@ RLTable ff_rl_table[NB_RL_TABLES] = { · 480 unmodified lines
481 481
482/* motion vector table 0 */482/* motion vector table 0 */
483 483
484#define E(mvx, mvy) ((mvx << 8) | mvy)
485#define ESCAPE 0
486
487const uint16_t ff_msmp4_mv_table0[MSMPEG4_MV_TABLES_NB_ELEMS] = {
488 ESCAPE, E(31, 39), E(38, 31), E(24, 32), E(23, 30), E(34, 20),
489 E(33, 22), E(21, 29), E(28, 34), E(33, 24), E(49, 32), E(27, 41),
490 E(32, 2), E(40, 33), E(34, 39), E(37, 25), E(29, 26), E(38, 28),
491 E(43, 31), E(37, 33), E(31, 35), E(32, 35), E(25, 29), E(26, 28),
492 E(32, 42), E(33, 23), E(42, 31), E(35, 36), E(27, 31), E(36, 30),
493 E(21, 32), E(23, 32), E(43, 32), E(36, 32), E(39, 29), E(38, 30),
494 E(36, 34), E(34, 36), E(19, 30), E(20, 38), E(41, 41), E(26, 44),
495 E(41, 53), E(42, 11), E(42, 20), E(42, 25), E(26, 45), E(26, 46),
496 E(26, 47), E(26, 48), E( 1, 39), E(26, 52), E(37, 46), E(37, 49),
497 E(37, 63), E(23, 55), E(34, 44), E(42, 38), E(27, 13), E(43, 13),
498 E(34, 57), E(27, 22), E(31, 51), E(24, 16), E(33, 12), E(16, 28),
499 E( 3, 35), E(31, 57), E(24, 25), E(31, 33), E(33, 33), E(34, 32),
500 E(31, 34), E(34, 31), E(33, 20), E(24, 26), E( 4, 28), E(44, 28),
501 E(44, 29), E(11, 32), E(44, 31), E(31, 62), E(13, 34), E(13, 35),
502 E(44, 35), E(45, 19), E(13, 49), E(25, 48), E(22, 39), E(38, 40),
503 E(26, 18), E(38, 43), E(38, 46), E(39, 11), E(32, 6), E(30, 48),
504 E(39, 19), E(30, 49), E(22, 41), E(32, 10), E(26, 23), E(30, 58),
505 E(47, 17), E(47, 21), E(47, 23), E(19, 34), E(47, 30), E(30, 60),
506 E(31, 0), E(35, 44), E( 8, 34), E(23, 26), E(47, 37), E(47, 46),
507 E(27, 43), E(35, 49), E(47, 59), E(31, 4), E(48, 34), E(35, 59),
508 E(19, 37), E(36, 22), E(49, 25), E(49, 28), E(33, 46), E(31, 6),
509 E(39, 40), E(27, 59), E(39, 42), E(49, 36), E(49, 61), E(50, 28),
510 E(50, 30), E(50, 31), E(39, 43), E(31, 10), E(51, 22), E(51, 23),
511 E(39, 47), E(28, 20), E(33, 52), E(33, 55), E(21, 36), E(40, 25),
512 E(31, 16), E(52, 1), E(53, 11), E(40, 27), E(53, 29), E( 9, 5),
513 E(33, 63), E(31, 18), E(53, 41), E(54, 31), E(54, 34), E(54, 38),
514 E(55, 1), E(55, 5), E(34, 13), E(15, 28), E(56, 31), E(25, 17),
515 E(56, 38), E(21, 39), E(21, 41), E(40, 36), E(40, 37), E(25, 22),
516 E(40, 39), E(58, 33), E(36, 43), E( 5, 43), E(41, 15), E(41, 17),
517 E(12, 49), E(60, 30), E(41, 21), E(41, 22), E(37, 20), E(22, 10),
518 E(61, 17), E(18, 25), E(29, 54), E(29, 57), E(30, 3), E(61, 34),
519 E(30, 8), E(61, 36), E(62, 25), E(62, 31), E(30, 14), E(30, 15),
520 E(63, 19), E(18, 29), E(13, 25), E(30, 18), E(45, 30), E( 1, 63),
521 E(34, 16), E(31, 42), E(22, 28), E(35, 13), E(15, 33), E(46, 33),
522 E(46, 35), E(35, 19), E(31, 46), E(28, 43), E(29, 17), E(29, 19),
523 E(23, 36), E(41, 39), E(27, 24), E(14, 31), E(53, 32), E(53, 33),
524 E(27, 26), E(24, 28), E(32, 62), E(57, 33), E(32, 63), E(17, 33),
525 E(42, 39), E(37, 19), E(29, 49), E(33, 17), E( 1, 31), E(25, 43),
526 E(32, 13), E(32, 15), E(63, 29), E(26, 25), E(40, 35), E(23, 34),
527 E(27, 25), E(22, 33), E(24, 29), E(22, 31), E(39, 39), E(43, 35),
528 E(27, 36), E(37, 24), E( 6, 32), E(42, 30), E(24, 33), E(40, 31),
529 E(28, 39), E(32, 1), E(32, 41), E(41, 32), E(36, 31), E(28, 32),
530 E(35, 31), E(29, 31), E(38, 32), E(23, 31), E(27, 30), E(32, 59),
531 E(32, 22), E(32, 21), E(30, 39), E(35, 25), E(26, 34), E(34, 38),
532 E(30, 28), E(44, 33), E(36, 23), E(47, 33), E(26, 27), E(30, 44),
533 E(31, 60), E(41, 30), E(39, 36), E(33, 19), E(33, 29), E(32, 36),
534 E(22, 34), E(45, 31), E(36, 24), E(32, 16), E(45, 35), E(19, 32),
535 E(36, 27), E(32, 4), E(43, 33), E(60, 32), E(37, 31), E(35, 33),
536 E(35, 32), E(34, 29), E(33, 28), E(25, 33), E(25, 34), E(21, 33),
537 E(36, 35), E(37, 32), E(29, 39), E(31, 24), E(30, 41), E(31, 3),
538 E(41, 35), E(22, 32), E(32, 39), E(32, 30), E(33, 32), E(32, 29),
539 E(33, 35), E(31, 28), E(28, 30), E(26, 33), E(31, 49), E(39, 41),
540 E(20, 28), E(20, 29), E(44, 34), E(23, 38), E(33, 7), E(34, 61),
541 E(29, 29), E(31, 38), E(35, 11), E(33, 50), E(33, 13), E(28, 41),
542 E(41, 19), E(23, 47), E(41, 25), E(41, 26), E(29, 15), E(25, 42),
543 E(26, 41), E(49, 29), E(29, 45), E(24, 27), E(37, 17), E(49, 35),
544 E(34, 33), E(30, 35), E(50, 32), E(51, 29), E(51, 32), E(26, 24),
545 E(39, 13), E(25, 26), E(26, 26), E(15, 31), E(39, 24), E(18, 33),
546 E(42, 28), E(17, 30), E( 4, 31), E(31, 11), E(32, 45), E(32, 46),
547 E(60, 33), E( 1, 33), E(42, 35), E(32, 57), E( 0, 32), E(12, 32),
548 E(19, 35), E(35, 45), E(22, 38), E(30, 21), E( 5, 33), E( 5, 31),
549 E(17, 31), E(29, 21), E(22, 35), E(31, 5), E(31, 17), E(43, 29),
550 E(37, 38), E(27, 38), E(32, 18), E(32, 58), E(32, 19), E(33, 43),
551 E(29, 41), E(33, 41), E(31, 37), E(30, 37), E(41, 33), E( 7, 32),
552 E(28, 31), E(34, 27), E(30, 27), E(37, 28), E(26, 36), E(34, 30),
553 E(31, 29), E(33, 30), E(27, 32), E(38, 29), E(30, 25), E(36, 28),
554 E(37, 36), E(21, 34), E(23, 39), E(19, 53), E(34, 41), E(36, 33),
555 E(32, 28), E(25, 32), E(29, 32), E(29, 33), E(33, 27), E(29, 27),
556 E(43, 30), E(35, 41), E(29, 43), E(26, 39), E(22, 29), E(32, 7),
557 E(19, 29), E(32, 17), E(25, 28), E(31, 19), E(41, 28), E(49, 31),
558 E(28, 25), E(34, 19), E(28, 40), E(39, 26), E(34, 21), E(19, 33),
559 E(37, 39), E(38, 23), E(29, 40), E(21, 30), E(36, 39), E(42, 34),
560 E(27, 28), E(59, 33), E(38, 33), E(35, 28), E(33, 34), E(30, 32),
561 E(30, 36), E(23, 35), E(33, 21), E(35, 23), E(31, 21), E(30, 26),
562 E(41, 31), E(39, 32), E(32, 27), E(26, 30), E(31, 22), E(37, 37),
563 E(38, 27), E(39, 27), E(32, 43), E(23, 29), E(32, 60), E(27, 39),
564 E(25, 35), E(61, 32), E(30, 33), E(30, 34), E(34, 28), E(33, 36),
565 E(37, 27), E(20, 22), E(20, 27), E(41, 20), E(13, 29), E( 2, 33),
566 E( 5, 41), E( 5, 42), E( 1, 35), E(32, 24), E(34, 24), E( 5, 62),
567 E(32, 50), E( 6, 29), E(32, 53), E(35, 50), E(20, 35), E(35, 55),
568 E(27, 42), E(35, 61), E(35, 63), E(36, 4), E(36, 7), E(13, 42),
569 E(36, 21), E(41, 46), E(41, 47), E(33, 37), E(28, 33), E(41, 49),
570 E( 3, 27), E(30, 46), E(42, 17), E(27, 55), E(20, 41), E(30, 50),
571 E(27, 63), E(28, 4), E(30, 56), E(21, 18), E(33, 8), E(33, 10),
572 E(14, 18), E(24, 51), E(30, 63), E(42, 36), E(24, 55), E(33, 18),
573 E(25, 5), E(42, 55), E(43, 9), E(14, 29), E(43, 17), E(43, 21),
574 E(14, 30), E(43, 27), E( 7, 1), E(36, 59), E(37, 7), E(37, 11),
575 E(37, 12), E(37, 15), E( 7, 5), E(14, 42), E(25, 24), E(43, 41),
576 E(43, 43), E(44, 7), E(15, 27), E(37, 22), E( 7, 25), E( 7, 31),
577 E( 3, 30), E( 1, 37), E( 8, 22), E(15, 39), E(15, 53), E( 8, 29),
578 E(44, 36), E(44, 37), E(44, 48), E(45, 0), E(45, 5), E(45, 13),
579 E(45, 17), E( 8, 31), E( 8, 32), E(45, 26), E(21, 46), E(45, 28),
580 E(28, 44), E(28, 45), E(28, 46), E(21, 53), E(28, 49), E(28, 51),
581 E(22, 3), E(37, 41), E(46, 3), E(46, 22), E(37, 42), E( 8, 33),
582 E(29, 5), E(37, 45), E(29, 7), E(22, 22), E(46, 40), E(37, 53),
583 E(22, 24), E(29, 14), E(47, 25), E(47, 27), E(38, 10), E(38, 12),
584 E(16, 34), E(38, 16), E(38, 17), E(33, 53), E(38, 20), E(22, 26),
585 E(47, 39), E(47, 45), E(29, 18), E(25, 45), E(16, 35), E( 0, 33),
586 E(48, 31), E( 1, 49), E(34, 4), E(48, 39), E(48, 42), E(34, 11),
587 E(25, 51), E(26, 5), E(26, 13), E(49, 26), E(49, 27), E(26, 17),
588 E( 1, 52), E(49, 30), E( 4, 0), E(26, 22), E( 4, 12), E(49, 34),
589 E( 1, 62), E( 9, 36), E(49, 38), E(49, 41), E(49, 47), E(10, 30),
590 E(49, 63), E(17, 38), E(38, 41), E(17, 43), E(17, 59), E(50, 33),
591 E(38, 45), E(50, 37), E(50, 38), E(22, 40), E(38, 47), E(51, 24),
592 E(38, 48), E(38, 49), E(51, 30), E(39, 1), E(39, 10), E(18, 22),
593 E(22, 49), E(39, 15), E(51, 39), E(22, 59), E(52, 31), E(52, 32),
594 E(52, 33), E(39, 18), E(53, 13), E(53, 15), E(10, 31), E(23, 21),
595 E(18, 27), E(29, 44), E(10, 42), E(53, 39), E(29, 46), E(54, 17),
596 E(11, 26), E(54, 32), E(11, 30), E(11, 31), E(55, 0), E( 1, 30),
597 E(18, 34), E(55, 9), E(55, 12), E(55, 13), E(55, 25), E(55, 31),
598 E(55, 32), E(29, 55), E(34, 43), E(18, 35), E(29, 61), E(56, 33),
599 E(56, 35), E(34, 46), E(57, 25), E(34, 47), E(34, 48), E(29, 62),
600 E(29, 63), E(57, 38), E(57, 61), E(35, 1), E(35, 2), E(35, 5),
601 E(35, 7), E(35, 9), E(39, 46), E(35, 10), E(59, 34), E(59, 35),
602 E(18, 36), E(59, 55), E(39, 51), E(30, 7), E(18, 40), E(40, 23),
603 E(60, 34), E(60, 37), E(61, 5), E(30, 13), E(18, 42), E(61, 18),
604 E(61, 25), E(19, 27), E(19, 28), E(41, 11), E(17, 37), E(26, 42),
605 E(20, 39), E(45, 37), E(46, 31), E(32, 49), E(37, 21), E(22, 27),
606 E(47, 29), E(29, 47), E(31, 53), E(27, 40), E(29, 51), E(30, 16),
607 E(21, 26), E(33, 1), E(35, 40), E(18, 30), E(25, 41), E(33, 44),
608 E(50, 34), E(51, 25), E(42, 27), E( 2, 31), E(15, 35), E(51, 35),
609 E(53, 31), E(33, 15), E(25, 49), E(29, 1), E(55, 35), E(37, 40),
610 E(38, 5), E(33, 58), E(38, 21), E(59, 29), E(38, 22), E(33, 59),
611 E(39, 45), E(13, 31), E(32, 9), E(40, 26), E(61, 9), E(61, 29),
612 E(32, 11), E( 9, 32), E(44, 30), E( 3, 3), E(31, 13), E(29, 20),
613 E(25, 18), E(24, 35), E(48, 32), E(16, 32), E(28, 24), E(49, 33),
614 E(22, 30), E(34, 40), E(31, 47), E(38, 39), E(39, 37), E(44, 32),
615 E(11, 33), E(35, 24), E(30, 23), E(33, 45), E(33, 47), E(36, 25),
616 E(31, 59), E(40, 34), E(25, 27), E(27, 27), E(38, 26), E(31, 40),
617 E(36, 37), E(28, 27), E(32, 31), E(31, 31), E(34, 35), E(32, 37),
618 E(34, 34), E(24, 31), E(39, 34), E(34, 37), E(27, 33), E(28, 35),
619 E(31, 61), E(36, 26), E(25, 39), E(45, 33), E(25, 31), E(35, 34),
620 E( 3, 31), E(34, 22), E(38, 37), E(39, 25), E(40, 30), E(38, 25),
621 E( 1, 32), E(25, 30), E(39, 35), E(30, 38), E(37, 29), E(32, 40),
622 E(28, 28), E(29, 38), E(32, 5), E(37, 34), E(31, 27), E(35, 27),
623 E(27, 29), E(23, 27), E(28, 23), E(33, 42), E(46, 32), E(15, 32),
624 E(13, 33), E(24, 36), E(41, 37), E(24, 37), E(34, 17), E(34, 18),
625 E(30, 22), E(26, 40), E(24, 38), E(14, 32), E(60, 31), E(21, 35),
626 E(29, 24), E(39, 17), E(23, 25), E(35, 17), E(37, 23), E(30, 24),
627 E(32, 61), E(19, 31), E(24, 34), E(25, 25), E(26, 38), E(45, 32),
628 E(38, 35), E(36, 29), E( 3, 32), E(26, 29), E(36, 36), E(30, 31),
629 E(59, 32), E(28, 36), E(63, 32), E(26, 32), E(38, 34), E(63, 33),
630 E(31, 20), E(27, 11), E(20, 32), E(24, 30), E(33, 3), E(37, 35),
631 E(28, 38), E(39, 30), E(32, 3), E(31, 26), E(39, 31), E(35, 29),
632 E(31, 30), E(32, 38), E(23, 33), E(23, 3), E( 9, 29), E(25, 40),
633 E( 9, 31), E(29, 53), E(20, 30), E(30, 17), E(30, 20), E(42, 37),
634 E(18, 31), E(28, 42), E(25, 47), E(28, 47), E(28, 54), E(21, 38),
635 E(29, 9), E(43, 34), E(29, 13), E(43, 37), E(26, 21), E(44, 25),
636 E(44, 27), E(21, 43), E(38, 42), E(35, 30), E(21, 45), E(24, 40),
637 E(45, 25), E(45, 27), E(35, 46), E(39, 22), E(22, 25), E(35, 53),
638 E(36, 20), E(34, 2), E(34, 14), E(45, 39), E(34, 15), E(29, 22),
639 E(31, 44), E(46, 34), E(25, 21), E(46, 38), E(16, 33), E(17, 27),
640 E(31, 48), E(20, 34), E(32, 52), E(47, 35), E(47, 47), E(47, 49),
641 E(32, 54), E(49, 2), E(49, 13), E(49, 23), E(31, 52), E( 1, 29),
642 E(27, 45), E(28, 22), E(39, 49), E(39, 54), E(21, 21), E(36, 40),
643 E(23, 42), E(51, 31), E( 2, 30), E(40, 29), E(51, 34), E(32, 0),
644 E(53, 25), E(24, 23), E(30, 51), E(24, 24), E(30, 59), E(21, 28),
645 E(40, 38), E(57, 29), E(57, 31), E(31, 2), E(41, 13), E(58, 31),
646 E(32, 8), E(12, 31), E( 4, 33), E(32, 12), E(34, 45), E(59, 41),
647 E(31, 7), E(32, 14), E(13, 30), E( 9, 25), E(35, 18), E(26, 43),
648 E(35, 20), E(37, 43), E(61, 35), E(37, 44), E(63, 1), E(26, 49),
649 E(29, 42), E(41, 42), E(45, 34), E(33, 51), E(34, 42), E(47, 31),
650 E(41, 36), E(22, 36), E(42, 29), E(35, 21), E(35, 22), E(23, 37),
651 E(32, 44), E(35, 43), E(43, 25), E(32, 47), E( 7, 33), E(31, 45),
652 E(41, 27), E(20, 31), E(31, 58), E(16, 31), E(13, 32), E(63, 31),
653 E(25, 38), E(30, 43), E(33, 61), E(31, 43), E(41, 29), E(34, 23),
654 E(39, 28), E(47, 32), E(40, 28), E(58, 32), E(59, 31), E(41, 34),
655 E(33, 5), E( 3, 33), E(17, 32), E(61, 33), E(42, 33), E(21, 31),
656 E(26, 35), E(35, 26), E(29, 36), E(26, 31), E(33, 38), E(30, 30),
657 E(31, 32), E(33, 31), E(37, 30), E(31, 23), E(30, 42), E(26, 37),
658 E(33, 26), E(27, 35), E(31, 36), E(27, 34), E(35, 37), E(29, 23),
659 E(36, 38), E(61, 31), E(33, 40), E(37, 26), E(62, 32), E(35, 38),
660 E(57, 32), E(31, 41), E(34, 26), E(34, 25), E(40, 32), E(35, 35),
661 E(29, 34), E(32, 25), E(29, 30), E(28, 26), E(38, 18), E(23, 41),
662 E(32, 20), E(29, 28), E(29, 25), E(28, 37), E(42, 32), E(33, 39),
663 E(32, 26), E(31, 25), E(30, 40), E(35, 47), E(30, 45), E(30, 54),
664 E(31, 1), E(32, 23), E(33, 25), E(42, 26), E(47, 34), E(39, 38),
665 E(38, 14), E(40, 22), E(40, 24), E(51, 33), E(55, 34), E(56, 32),
666 E(18, 32), E(21, 37), E(39, 21), E(39, 23), E(33, 49), E(17, 35),
667 E(41, 23), E(23, 28), E(24, 39), E(43, 39), E(25, 23), E(31, 55),
668 E(20, 33), E(25, 37), E(38, 38), E(25, 36), E(27, 37), E(29, 37),
669 E( 4, 32), E(39, 33), E( 5, 32), E(28, 29), E(38, 24), E(17, 29),
670 E(35, 39), E( 2, 32), E(38, 36), E(30, 29), E(29, 35), E(32, 34),
671 E(32, 33), E(32, 32),
672};
673
674const uint8_t ff_msmp4_mv_table0_lens[MSMPEG4_MV_TABLES_NB_ELEMS] = {
675 8, 12, 12, 13, 15, 15, 15, 15, 12, 15, 15, 15, 15, 14, 14, 14, 14, 14,
676 14, 11, 9, 8, 13, 14, 14, 14, 14, 13, 11, 12, 12, 12, 12, 10, 13, 13,
677 12, 12, 16, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
678 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 6, 6, 7,
679 8, 8, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
680 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
681 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
682 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
683 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
684 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
685 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 16, 16,
686 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
687 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 15,
688 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 14, 14, 14, 14, 13, 12, 11, 10,
689 9, 9, 11, 13, 13, 14, 14, 13, 13, 13, 13, 13, 12, 16, 16, 15, 15, 15,
690 15, 15, 15, 15, 9, 10, 15, 15, 15, 15, 15, 15, 14, 14, 14, 13, 11, 9,
691 8, 10, 11, 12, 14, 14, 13, 10, 13, 14, 14, 14, 14, 13, 11, 7, 5, 8,
692 9, 11, 12, 13, 16, 16, 16, 16, 16, 16, 16, 16, 11, 12, 16, 16, 16, 16,
693 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 8, 10, 16, 16, 16, 16,
694 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
695 16, 16, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
696 14, 14, 11, 12, 13, 13, 11, 12, 13, 14, 14, 9, 9, 8, 10, 13, 13, 13,
697 14, 16, 17, 17, 15, 11, 10, 10, 8, 9, 11, 13, 15, 15, 15, 15, 15, 15,
698 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
699 14, 14, 12, 12, 8, 7, 11, 14, 14, 14, 14, 13, 13, 10, 10, 13, 14, 14,
700 14, 14, 14, 14, 14, 14, 13, 12, 8, 9, 11, 11, 14, 17, 17, 17, 17, 17,
701 17, 17, 17, 13, 13, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
702 17, 17, 17, 11, 11, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
703 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
704 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
705 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
706 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
707 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
708 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
709 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
710 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
711 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
712 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
713 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 16, 16, 16,
714 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
715 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
716 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 15, 15, 15, 15, 15,
717 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 14, 14, 14, 14, 14, 14, 14,
718 14, 14, 4, 5, 10, 10, 9, 13, 13, 12, 11, 12, 14, 14, 14, 14, 11, 10,
719 14, 14, 14, 14, 14, 14, 13, 13, 13, 12, 12, 13, 13, 13, 13, 12, 11, 12,
720 12, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
721 15, 15, 15, 15, 15, 14, 14, 14, 14, 14, 14, 14, 13, 12, 12, 13, 13, 8,
722 12, 13, 13, 11, 12, 15, 16, 16, 14, 14, 14, 12, 13, 13, 12, 12, 11, 10,
723 8, 11, 13, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
724 16, 16, 16, 16, 16, 16, 16, 16, 16, 10, 16, 16, 16, 16, 16, 16, 16, 16,
725 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
726 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
727 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
728 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 15, 15, 15, 15,
729 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
730 15, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 13,
731 13, 13, 12, 12, 12, 9, 4, 5, 12, 13, 14, 14, 12, 12, 10, 12, 12, 14,
732 14, 14, 14, 14, 14, 13, 13, 13, 12, 12, 12, 10, 10, 10, 10, 14, 16, 16,
733 15, 13, 13, 13, 12, 12, 11, 11, 13, 15, 15, 15, 15, 12, 11, 15, 15, 15,
734 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
735 15, 14, 14, 14, 13, 12, 12, 11, 12, 12, 14, 14, 13, 13, 13, 10, 10, 6,
736 4, 1,
737};
738
739/* motion vector table 1 */
740
741const uint16_t ff_msmp4_mv_table1[MSMPEG4_MV_TABLES_NB_ELEMS] = {
742 E(32, 32), E(42, 39), E(35, 53), E( 3, 28), E(51, 39), E(35, 57),
743 E(16, 46), E(35, 10), E(30, 52), E(63, 27), E(57, 35), E(39, 42),
744 E(39, 45), E(25, 59), E(35, 15), E(51, 34), E(31, 9), E(48, 34),
745 E( 2, 33), E( 6, 31), E(34, 49), E(30, 43), E(28, 42), E(33, 51),
746 E(39, 27), E(33, 42), E(37, 25), E(60, 34), E(38, 60), E( 9, 38),
747 E(38, 33), E(51, 32), E(30, 22), E(33, 23), E(32, 24), E(32, 26),
748 E(32, 29), E(40, 29), E(27, 23), E(46, 29), E(31, 14), E( 9, 30),
749 E(35, 45), E(29, 49), E(31, 11), E(47, 32), E(32, 48), E(39, 35),
750 E(37, 31), E(25, 34), E(30, 25), E(24, 30), E(35, 25), E(61, 32),
751 E(39, 24), E(16, 24), E(36, 23), E(50, 32), E(32, 45), E(19, 33),
752 E(59, 33), E(29, 25), E(30, 36), E(63, 33), E(45, 39), E(31, 12),
753 E(60, 29), E(14, 24), E(34, 0), E(42, 20), E(24, 16), E( 0, 28),
754 E(37, 43), E(18, 35), E(61, 28), E(57, 1), E(30, 30), E(31, 33),
755 E(31, 35), E(26, 32), E(37, 49), E(28, 4), E(53, 21), E(20, 42),
756 E(46, 39), E(14, 29), E(47, 3), E(38, 44), E(38, 21), E(38, 53),
757 E( 9, 55), E(34, 11), E(39, 5), E(43, 3), E(17, 39), E(39, 53),
758 E(59, 28), E( 5, 25), E(27, 19), E( 0, 34), E(55, 31), E(46, 28),
759 E(19, 35), E(37, 41), E(62, 30), E(34, 44), E(30, 18), E(16, 29),
760 E(19, 34), E(49, 35), E(30, 41), E(25, 27), E(43, 32), E( 4, 32),
761 E(34, 25), E(27, 25), E(33, 19), E(32, 41), E(25, 29), E(62, 31),
762 E(24, 35), E(32, 38), E(30, 32), E(34, 33), E(34, 29), E(41, 36),
763 E(12, 28), E(27, 21), E(41, 25), E(39, 26), E(30, 24), E(37, 21),
764 E(14, 31), E( 5, 30), E(13, 34), E(35, 19), E(55, 34), E(30, 44),
765 E(40, 36), E(40, 38), E(42, 25), E(31, 19), E(27, 36), E(30, 42),
766 E(37, 27), E(31, 17), E(21, 33), E(45, 31), E(32, 44), E(39, 28),
767 E(20, 33), E(46, 33), E(47, 31), E(35, 23), E(19, 31), E(33, 30),
768 E(28, 32), E(36, 32), E(33, 32), E(34, 40), E( 8, 31), E(20, 28),
769 E(35, 39), E(43, 33), E(25, 23), E(45, 37), E(35, 3), E(33, 55),
770 E(35, 29), E(36, 41), E(54, 30), E(38, 22), E(27, 41), E(37, 24),
771 E(62, 33), E(40, 26), E(15, 35), E(59, 35), E(49, 30), E( 1, 33),
772 E(40, 33), E(32, 0), E(29, 37), E(32, 2), E( 3, 32), E(42, 32),
773 E(49, 31), E(21, 34), E(21, 30), E(14, 32), E( 5, 31), E(28, 36),
774 E(31, 21), E(51, 33), E(31, 55), E(29, 51), E(31, 38), E(62, 32),
775 E(34, 47), E(34, 48), E(39, 38), E(24, 24), E(32, 30), E(29, 32),
776 E(30, 34), E(35, 34), E(29, 15), E(25, 21), E(26, 36), E(33, 61),
777 E(31, 26), E(32, 34), E(30, 33), E(27, 31), E(23, 35), E(29, 50),
778 E(21, 25), E(31, 47), E(36, 37), E(35, 41), E(58, 31), E(29, 23),
779 E(29, 41), E(21, 29), E(20, 30), E(33, 24), E(32, 22), E(42, 35),
780 E(29, 46), E(10, 30), E(61, 29), E(33, 10), E(49, 34), E(35, 42),
781 E(34, 45), E( 3, 29), E(38, 42), E(39, 22), E(29, 3), E( 7, 33),
782 E(41, 27), E( 1, 34), E(30, 31), E(13, 32), E(28, 25), E(12, 32),
783 E(40, 28), E(25, 35), E(31, 61), E(28, 31), E(29, 34), E(34, 35),
784 E(28, 33), E(26, 33), E(35, 1), E( 4, 34), E(31, 58), E(33, 2),
785 E(39, 37), E(21, 31), E(60, 33), E(23, 28), E(15, 34), E(38, 30),
786 E(37, 33), E(34, 34), E(31, 28), E(23, 36), E(11, 35), E(37, 23),
787 E(28, 23), E(35, 13), E(30, 58), E(30, 3), E(24, 26), E( 1, 63),
788 E(43, 25), E(56, 31), E( 8, 34), E(32, 14), E(44, 33), E(32, 35),
789 E(26, 31), E(31, 5), E(33, 49), E(31, 20), E(36, 33), E(32, 1),
790 E(27, 33), E(31, 34), E(31, 30), E(28, 39), E(37, 36), E(43, 31),
791 E(31, 59), E(34, 39), E(31, 27), E(34, 61), E(42, 38), E(24, 39),
792 E(45, 25), E(30, 61), E(20, 29), E(23, 37), E( 8, 30), E(38, 41),
793 E(22, 26), E(33, 48), E(17, 28), E(52, 33), E(34, 50), E(29, 21),
794 E(32, 9), E(30, 23), E(49, 33), E(43, 35), E(28, 24), E(39, 39),
795 E(33, 21), E(33, 34), E(32, 28), E(30, 29), E(25, 37), E(32, 11),
796 E(48, 33), E( 2, 30), E(15, 31), E(20, 31), E(22, 35), E(53, 30),
797 E(43, 37), E(44, 29), E(29, 30), E( 1, 29), E(27, 40), E(31, 6),
798 E(41, 39), E(43, 28), E(41, 28), E(30, 19), E(31, 8), E(36, 22),
799 E(30, 45), E(25, 28), E(31, 51), E(28, 40), E(32, 25), E(21, 35),
800 E(24, 29), E(25, 25), E(15, 33), E(20, 32), E(40, 30), E(39, 34),
801 E(31, 46), E(17, 35), E(22, 32), E(39, 31), E(33, 28), E(29, 29),
802 E(21, 32), E(37, 37), E(43, 30), E(18, 30), E(32, 8), E(37, 32),
803 E(31, 32), E(31, 22), E(31, 40), E(57, 32), E(38, 29), E(33, 37),
804 E(35, 35), E(33, 63), E( 5, 34), E(55, 35), E(31, 10), E(33, 58),
805 E(30, 17), E(40, 37), E(23, 39), E(15, 30), E(29, 18), E(34, 54),
806 E(34, 14), E(59, 29), E(34, 16), E(30, 59), E(11, 30), E(13, 35),
807 E(38, 23), E( 5, 35), E(24, 28), E(33, 15), E(37, 30), E(25, 31),
808 E(36, 40), E(13, 33), E(33, 45), E(31, 49), E(32, 16), E(42, 31),
809 E(25, 33), E(32, 36), E(39, 25), E(11, 32), E(33, 5), E(61, 31),
810 E(63, 32), E(31, 4), E( 0, 30), E(30, 47), E(32, 62), E(37, 29),
811 E(31, 2), E(42, 36), E( 5, 29), E(30, 55), E(29, 20), E(29, 35),
812 E(34, 12), E(10, 31), E(44, 35), E(30, 14), E(63, 29), E(35, 18),
813 E(12, 34), E( 3, 34), E(33, 47), E(32, 51), E(39, 36), E(37, 39),
814 E(32, 53), E(32, 10), E(29, 24), E(17, 29), E(32, 20), E(29, 39),
815 E(33, 27), E(31, 36), E(32, 27), E(31, 3), E(30, 39), E(44, 32),
816 E(31, 37), E( 5, 33), E(44, 30), E(46, 31), E(32, 40), E(36, 25),
817 E(35, 40), E(26, 38), E(37, 38), E(33, 38), E(25, 32), E( 2, 32),
818 E(58, 33), E(26, 24), E(15, 29), E(31, 1), E(31, 25), E(17, 26),
819 E(25, 22), E(34, 2), E(43, 27), E(39, 23), E(34, 8), E(56, 30),
820 E(29, 55), E(23, 38), E(30, 60), E(12, 31), E(30, 4), E(10, 34),
821 E(35, 49), E( 9, 34), E(24, 27), E(58, 34), E(10, 33), E(12, 30),
822 E(54, 31), E(32, 56), E(34, 23), E(38, 27), E( 8, 32), E(22, 31),
823 E(34, 24), E(36, 36), E(17, 32), E(38, 36), E(33, 25), E(32, 33),
824 E(32, 31), E(58, 32), E(38, 28), E(38, 37), E(38, 26), E(22, 29),
825 E(29, 43), E(32, 61), E(25, 36), E(16, 33), E(35, 24), E(32, 55),
826 E(35, 43), E(33, 9), E(43, 29), E(18, 34), E(46, 34), E(38, 24),
827 E(35, 26), E(32, 6), E(60, 31), E( 1, 32), E(23, 33), E(30, 35),
828 E(27, 32), E(33, 26), E(41, 31), E(35, 38), E(33, 54), E(37, 42),
829 E(20, 35), E(41, 38), E(35, 46), E(29, 44), E(18, 26), E(61, 27),
830 E(30, 9), E(40, 39), E(24, 25), E(39, 21), E(39, 32), E(53, 29),
831 E(62, 28), E(26, 42), E(29, 13), E(33, 0), E(34, 5), E(53, 34),
832 E(49, 37), E(21, 28), E(27, 24), E(11, 29), E(63, 63), E(50, 33),
833 E(33, 18), E(18, 33), E(53, 33), E(60, 30), E(13, 31), E(32, 50),
834 E(36, 24), E(24, 34), E(27, 34), E(32, 58), E(38, 35), E(35, 28),
835 E(16, 32), E(33, 60), E(51, 30), E(32, 4), E(36, 39), E(43, 34),
836 E(45, 30), E(27, 39), E(45, 33), E(42, 33), E(30, 38), E(32, 17),
837 E(31, 43), E(20, 26), E(26, 22), E(23, 27), E( 7, 29), E(13, 25),
838 E( 6, 33), E(47, 25), E(29, 61), E(30, 0), E( 9, 35), E(51, 25),
839 E(22, 36), E(34, 15), E(21, 27), E(25, 40), E(33, 53), E(32, 37),
840 E(56, 33), E(57, 3), E(30, 10), E(38, 16), E(51, 37), E(51, 38),
841 E(38, 18), E(63, 30), E(28, 46), E(40, 27), E(35, 9), E(33, 6),
842 E(42, 28), E(29, 22), E(24, 38), E(30, 2), E(25, 26), E(31, 63),
843 E(52, 32), E(31, 57), E(29, 26), E(35, 31), E(32, 5), E(41, 32),
844 E(35, 21), E(38, 39), E( 4, 31), E(30, 40), E(17, 31), E( 9, 33),
845 E(22, 28), E(34, 18), E( 4, 30), E(17, 34), E(28, 22), E(55, 33),
846 E(42, 29), E(40, 34), E(46, 32), E(38, 34), E(48, 32), E(63, 31),
847 E(23, 31), E(39, 33), E(33, 3), E( 3, 31), E(18, 29), E(33, 62),
848 E(33, 8), E(24, 42), E(58, 28), E(58, 29), E(34, 3), E(49, 25),
849 E(29, 16), E(43, 26), E( 4, 29), E( 1, 35), E( 4, 28), E(42, 27),
850 E(35, 51), E(35, 61), E(30, 48), E(17, 37), E( 5, 9), E(56, 34),
851 E(25, 41), E(17, 30), E(20, 34), E(47, 35), E(34, 21), E(33, 13),
852 E(16, 34), E(40, 35), E(32, 19), E(28, 35), E(33, 36), E(36, 30),
853 E(25, 39), E(16, 30), E(42, 30), E(19, 32), E(30, 46), E(53, 32),
854 E(32, 23), E(29, 42), E(10, 32), E(11, 31), E(14, 33), E(34, 38),
855 E(32, 39), E(41, 29), E(26, 26), E(61, 7), E(25, 49), E(22, 33),
856 E(28, 38), E(36, 38), E(45, 32), E(34, 27), E(28, 30), E(34, 28),
857 E(33, 59), E(37, 45), E(36, 20), E(55, 29), E(28, 21), E(35, 5),
858 E(29, 5), E(50, 29), E(48, 28), E(52, 34), E( 2, 29), E(42, 24),
859 E(34, 10), E(40, 24), E(46, 35), E(46, 36), E(43, 38), E(33, 11),
860 E( 4, 33), E(33, 40), E(32, 18), E(36, 34), E(27, 35), E(35, 22),
861 E(35, 55), E(29, 11), E(29, 38), E(41, 33), E(29, 28), E( 7, 32),
862 E(44, 31), E(26, 25), E(39, 29), E(32, 3), E(16, 31), E(31, 53),
863 E(26, 27), E(34, 43), E(38, 25), E(29, 40), E(41, 35), E(35, 27),
864 E(36, 29), E(38, 31), E(29, 27), E(32, 43), E(27, 29), E(30, 37),
865 E(24, 32), ESCAPE, E(32, 63), E(24, 31), E(42, 34), E(48, 36),
866 E(20, 38), E(29, 53), E(31, 54), E(61, 33), E(41, 26), E( 7, 30),
867 E(30, 49), E(35, 20), E(19, 27), E(14, 30), E(21, 39), E( 8, 33),
868 E(39, 41), E(39, 49), E(40, 22), E(46, 38), E(55, 38), E(34, 4),
869 E( 6, 30), E(30, 8), E(34, 9), E(37, 3), E(25, 24), E(37, 22),
870 E(33, 50), E(22, 37), E(44, 36), E(52, 31), E(17, 27), E(35, 2),
871 E(31, 50), E(30, 21), E(24, 36), E(35, 33), E(22, 38), E(61, 30),
872 E(32, 12), E( 9, 31), E(45, 34), E(34, 20), E(31, 15), E(19, 29),
873 E( 9, 32), E(31, 62), E(18, 32), E(33, 17), E(33, 1), E(37, 34),
874 E(32, 15), E(22, 30), E(26, 30), E(59, 31), E(29, 9), E(36, 42),
875 E(46, 30), E(31, 13), E(35, 17), E(54, 32), E(29, 19), E(57, 31),
876 E(30, 20), E(50, 31), E( 3, 30), E(31, 7), E(63, 1), E(34, 17),
877 E(47, 34), E(41, 37), E(35, 63), E(40, 25), E(25, 30), E(37, 28),
878 E( 1, 31), E(26, 28), E(22, 34), E(35, 37), E(34, 32), E(60, 32),
879 E(27, 30), E(37, 19), E(28, 44), E(30, 1), E(50, 28), E(14, 28),
880 E(28, 48), E(55, 30), E( 6, 34), E(23, 41), E(19, 41), E(14, 38),
881 E(30, 12), E( 3, 27), E(30, 15), E(28, 0), E(28, 16), E(61, 34),
882 E(61, 35), E(47, 38), E(45, 28), E(48, 29), E(40, 40), E(40, 42),
883 E(34, 51), E(34, 52), E(25, 45), E(30, 54), E(29, 59), E(35, 59),
884 E( 4, 42), E(51, 31), E(18, 31), E(31, 44), E(14, 34), E(37, 26),
885 E(36, 35), E(37, 35), E(30, 26), E(31, 41), E(31, 39), E(23, 32),
886 E(23, 29), E(38, 40), E(31, 16), E(24, 37), E(32, 52), E(31, 48),
887 E(50, 30), E(28, 34), E(32, 21), E(33, 20), E(31, 18), E(49, 32),
888 E(34, 37), E(33, 29), E(31, 29), E(40, 31), E( 3, 33), E(28, 27),
889 E(26, 35), E(28, 28), E(33, 39), E(34, 26), E(26, 44), E(53, 37),
890 E(50, 26), E(26, 46), E(41, 24), E(27, 15), E(59, 39), E(27, 22),
891 E(29, 31), E(38, 46), E(39, 19), E( 3, 35), E(50, 38), E(43, 17),
892 E(47, 37), E(23, 23), E(33, 52), E(55, 55), E(35, 50), E(21, 37),
893 E(23, 26), E(35, 11), E(61, 37), E(33, 12), E(46, 24), E(52, 30),
894 E(35, 16), E(34, 13), E(24, 22), E(30, 13), E(43, 36), E(16, 35),
895 E(37, 40), E(21, 41), E( 2, 34), E(54, 33), E(27, 38), E( 9, 29),
896 E(33, 7), E(23, 25), E(19, 30), E(32, 54), E(29, 45), E(29, 47),
897 E(33, 46), E(28, 41), E(27, 27), E(32, 49), E(39, 30), E(33, 31),
898 E(59, 32), E(32, 42), E(33, 22), E(47, 29), E(49, 29), E(32, 59),
899 E(40, 32), E(31, 24), E(27, 37), E(23, 34), E(28, 37), E(36, 26),
900 E(32, 7), E(38, 32), E(29, 33), E(15, 32), E(30, 16), E(47, 30),
901 E(33, 14), E(27, 26), E(25, 38), E(54, 34), E(44, 34), E(45, 29),
902 E(50, 34), E(58, 30), E(51, 29), E(48, 30), E(33, 57), E(59, 30),
903 E( 6, 32), E(34, 22), E(27, 28), E(31, 45), E(30, 27), E(24, 33),
904 E(26, 29), E(33, 4), E(24, 41), E(45, 26), E(23, 30), E( 2, 31),
905 E(28, 29), E(35, 36), E(30, 28), E(34, 53), E(30, 51), E(55, 5),
906 E(55, 21), E( 1, 30), E(29, 2), E(29, 63), E(26, 41), E(28, 20),
907 E(25, 1), E(31, 56), E(36, 21), E(22, 24), E(17, 25), E(30, 5),
908 E(52, 28), E( 2, 35), E(44, 26), E(44, 28), E(57, 30), E(26, 18),
909 E(62, 29), E(41, 23), E(39, 40), E(57, 34), E(26, 20), E(46, 42),
910 E(49, 39), E(11, 34), E(16, 28), E(19, 61), E( 5, 38), E(34, 46),
911 E(57, 33), E(13, 29), E(26, 39), E(33, 44), E(13, 30), E(48, 31),
912 E(30, 50), E(11, 33), E( 7, 31), E(56, 32), E(34, 19), E(33, 43),
913 E(32, 46), E(34, 41), E(41, 30), E(36, 28), E(34, 31), E(33, 33),
914 E(33, 35), E(26, 34), E(28, 26), E(32, 13), E(41, 34), E( 0, 32),
915 E(32, 57), E(35, 30), E(35, 32), E(55, 32), E(26, 40), E( 0, 31),
916 E(26, 37), E(35, 47), E( 1, 1), E(51, 35), E(33, 16), E(53, 31),
917 E(31, 0), E(45, 35), E(12, 33), E(29, 1), E(29, 17), E(36, 27),
918 E( 5, 32), E(38, 38), E(59, 27), E(38, 62), E(39, 9), E(58, 36),
919 E(34, 42), E(31, 42), E(36, 31), E(47, 33), E(32, 47), E(17, 33),
920 E(31, 60), E(31, 23), E(33, 41), E(34, 30), E(34, 36), E(32, 60),
921 E(29, 36), E(38, 17), E(25, 9), E(49, 49), E(50, 24), E(22, 25),
922 E(28, 54), E(59, 34), E( 9, 39), E(59, 37), E( 7, 3), E(28, 1),
923 E(55, 25), E(17, 38), E( 4, 38), E(35, 44), E(50, 35), E(21, 36),
924 E(29, 12), E(44, 60), E(47, 36), E(18, 38), E(24, 40), E(19, 25),
925 E(25, 43), E(31, 31),
926};
927
928const uint8_t ff_msmp4_mv_table1_lens[MSMPEG4_MV_TABLES_NB_ELEMS] = {
929 2, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 14, 14, 14,
930 14, 14, 14, 14, 14, 14, 13, 13, 13, 14, 15, 15, 11, 13, 13, 12, 11, 10,
931 8, 14, 14, 14, 14, 14, 14, 14, 14, 13, 13, 12, 10, 12, 12, 12, 12, 10,
932 14, 15, 15, 13, 13, 13, 12, 12, 11, 13, 15, 15, 15, 15, 15, 15, 15, 15,
933 15, 15, 15, 15, 9, 6, 9, 10, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
934 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 14, 14, 14, 14, 14, 14, 14, 14,
935 14, 14, 13, 13, 11, 11, 12, 13, 13, 11, 12, 13, 13, 10, 7, 8, 10, 14,
936 15, 15, 14, 14, 12, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 13, 13, 13,
937 13, 13, 12, 13, 13, 13, 13, 13, 13, 13, 13, 8, 9, 9, 5, 13, 14, 14,
938 12, 12, 14, 14, 14, 14, 10, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 13,
939 12, 12, 12, 11, 10, 11, 13, 13, 13, 13, 12, 12, 12, 13, 14, 14, 11, 12,
940 14, 14, 14, 14, 7, 8, 9, 10, 14, 14, 13, 12, 11, 7, 8, 10, 13, 14,
941 14, 13, 13, 13, 13, 13, 13, 13, 13, 12, 11, 13, 14, 14, 14, 14, 14, 14,
942 14, 14, 14, 14, 14, 14, 14, 14, 8, 13, 13, 13, 13, 12, 12, 10, 10, 10,
943 10, 11, 14, 14, 13, 13, 13, 12, 13, 14, 14, 11, 10, 9, 10, 14, 14, 14,
944 14, 14, 14, 14, 14, 14, 14, 14, 14, 13, 13, 8, 11, 12, 13, 13, 10, 10,
945 10, 8, 8, 13, 13, 12, 12, 12, 10, 14, 14, 14, 14, 14, 14, 14, 14, 14,
946 14, 14, 14, 14, 14, 13, 13, 13, 13, 13, 13, 13, 12, 8, 9, 10, 13, 13,
947 13, 13, 13, 13, 14, 14, 14, 14, 10, 14, 14, 14, 14, 14, 14, 14, 14, 14,
948 14, 13, 13, 13, 9, 13, 13, 13, 13, 12, 12, 12, 13, 13, 11, 10, 10, 10,
949 11, 13, 13, 13, 13, 9, 4, 12, 12, 12, 12, 10, 10, 13, 14, 14, 14, 14,
950 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 13, 13, 11, 10,
951 13, 13, 13, 13, 12, 12, 10, 9, 13, 13, 12, 11, 11, 13, 14, 14, 12, 11,
952 12, 14, 14, 14, 14, 10, 14, 14, 14, 14, 14, 14, 14, 14, 13, 13, 13, 13,
953 13, 13, 13, 13, 12, 12, 10, 10, 9, 11, 12, 12, 10, 12, 13, 13, 11, 13,
954 13, 13, 13, 11, 9, 11, 13, 14, 14, 12, 10, 14, 14, 14, 14, 14, 14, 14,
955 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 13, 13, 13, 13, 12,
956 12, 12, 12, 12, 10, 5, 4, 12, 12, 13, 13, 13, 13, 10, 13, 13, 13, 13,
957 13, 13, 13, 13, 13, 13, 12, 12, 12, 11, 11, 10, 9, 11, 11, 12, 14, 14,
958 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 9, 14, 14, 14, 14, 14, 14, 14,
959 14, 14, 14, 14, 14, 13, 13, 13, 13, 13, 13, 13, 13, 12, 11, 12, 12, 11,
960 12, 13, 13, 10, 13, 13, 13, 13, 12, 12, 11, 12, 12, 14, 14, 14, 14, 14,
961 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 9, 14, 14, 14, 14, 14, 14,
962 14, 14, 14, 14, 14, 14, 13, 13, 13, 13, 13, 13, 13, 13, 12, 8, 10, 10,
963 13, 13, 12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 12, 12, 11, 12, 12,
964 11, 10, 11, 11, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
965 14, 14, 14, 14, 14, 14, 13, 13, 13, 13, 13, 13, 13, 13, 12, 11, 10, 10,
966 13, 13, 12, 12, 13, 13, 10, 13, 13, 13, 13, 11, 9, 12, 13, 14, 14, 12,
967 12, 12, 12, 11, 10, 10, 12, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
968 14, 14, 14, 14, 14, 13, 13, 12, 12, 10, 11, 13, 14, 14, 12, 11, 11, 12,
969 13, 13, 11, 9, 13, 13, 13, 13, 13, 13, 12, 11, 11, 10, 11, 11, 11, 11,
970 10, 4, 11, 11, 12, 14, 14, 14, 14, 11, 14, 14, 14, 14, 14, 14, 14, 14,
971 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
972 13, 13, 13, 8, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 12, 12, 12, 11,
973 12, 12, 11, 11, 14, 14, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
974 13, 13, 14, 14, 11, 12, 12, 12, 12, 11, 6, 10, 11, 14, 14, 14, 14, 14,
975 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
976 14, 14, 14, 14, 14, 14, 14, 13, 13, 13, 13, 13, 11, 11, 11, 11, 10, 10,
977 12, 13, 13, 13, 13, 13, 13, 10, 10, 13, 13, 12, 11, 8, 8, 11, 11, 12,
978 12, 11, 10, 11, 14, 14, 14, 14, 14, 14, 14, 14, 8, 14, 14, 14, 14, 14,
979 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
980 14, 14, 14, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 12, 12, 11, 5,
981 10, 11, 12, 13, 13, 10, 10, 11, 12, 12, 12, 12, 11, 9, 8, 12, 13, 13,
982 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 12, 12, 12, 12, 11, 11,
983 12, 13, 14, 14, 12, 12, 11, 11, 10, 14, 14, 14, 14, 14, 14, 14, 14, 14,
984 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
985 14, 14, 14, 14, 14, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 12,
986 12, 12, 12, 11, 7, 5, 8, 11, 12, 12, 12, 12, 11, 9, 7, 13, 13, 13,
987 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 12, 10, 12, 14, 14, 14, 14,
988 12, 12, 9, 12, 12, 12, 12, 11, 11, 8, 10, 10, 11, 14, 14, 14, 14, 14,
989 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
990 14, 4,
991};
992
484static const uint16_t table0_mv_code[1100] = {993static const uint16_t table0_mv_code[1100] = {
485 0x0001, 0x0003, 0x0005, 0x0007, 0x0003, 0x0008, 0x000c, 0x0001,994 0x0001, 0x0003, 0x0005, 0x0007, 0x0003, 0x0008, 0x000c, 0x0001,
486 0x0002, 0x001b, 0x0006, 0x000b, 0x0015, 0x0002, 0x000e, 0x000f,995 0x0002, 0x001b, 0x0006, 0x000b, 0x0015, 0x0002, 0x000e, 0x000f,
@@ -1045,7 +1554,6 @@ static const uint8_t table0_mvy[1099] = { · 558 unmodified lines
1045 25, 27, 28,1554 25, 27, 28,
1046};1555};
1047 1556
1048/* motion vector table 1 */
1049static const uint16_t table1_mv_code[1100] = {1557static const uint16_t table1_mv_code[1100] = {
1050 0x0000, 0x0007, 0x0009, 0x000f, 0x000a, 0x0011, 0x001a, 0x001c,1558 0x0000, 0x0007, 0x0009, 0x000f, 0x000a, 0x0011, 0x001a, 0x001c,
1051 0x0011, 0x0031, 0x0025, 0x002d, 0x002f, 0x006f, 0x0075, 0x0041,1559 0x0011, 0x0031, 0x0025, 0x002d, 0x002f, 0x006f, 0x0075, 0x0041,
libavcodec/msmpeg4data.h+6−1
@@ -58,7 +58,12 @@ extern const uint8_t ff_wmv1_y_dc_scale_table[32]; · 57 unmodified lines
58extern const uint8_t ff_wmv1_c_dc_scale_table[32];58extern const uint8_t ff_wmv1_c_dc_scale_table[32];
59extern const uint8_t ff_old_ff_y_dc_scale_table[32];59extern const uint8_t ff_old_ff_y_dc_scale_table[32];
60 60
61#define MSMPEG4_MV_TABLES_NB_ELEMS 109961#define MSMPEG4_MV_TABLES_NB_ELEMS 1100
62/// The entries are of the form (8 << mvx) | mvy. Escape value is zero.
63extern const uint16_t ff_msmp4_mv_table0[MSMPEG4_MV_TABLES_NB_ELEMS];
64extern const uint8_t ff_msmp4_mv_table0_lens[MSMPEG4_MV_TABLES_NB_ELEMS];
65extern const uint16_t ff_msmp4_mv_table1[MSMPEG4_MV_TABLES_NB_ELEMS];
66extern const uint8_t ff_msmp4_mv_table1_lens[MSMPEG4_MV_TABLES_NB_ELEMS];
62extern MVTable ff_mv_tables[2];67extern MVTable ff_mv_tables[2];
63 68
64extern const uint8_t ff_v2_mb_type[8][2];69extern const uint8_t ff_v2_mb_type[8][2];
libavcodec/msmpeg4dec.c+20−22
@@ -46,6 +46,8 @@ · 45 unmodified lines
46 46
47#define DEFAULT_INTER_INDEX 347#define DEFAULT_INTER_INDEX 3
48 48
49static const VLCElem *mv_tables[2];
50
49static inline int msmpeg4v1_pred_dc(MpegEncContext * s, int n,51static inline int msmpeg4v1_pred_dc(MpegEncContext * s, int n,
50 int32_t **dc_val_ptr)52 int32_t **dc_val_ptr)
51{53{
@@ -300,7 +302,6 @@ static av_cold void msmpeg4_decode_init_static(void) · 248 unmodified lines
300{302{
301 static VLCElem vlc_buf[3714 + 2694 + 1636 + 2648 + 1532 + 2488];303 static VLCElem vlc_buf[3714 + 2694 + 1636 + 2648 + 1532 + 2488];
302 VLCInitState state = VLC_INIT_STATE(vlc_buf);304 VLCInitState state = VLC_INIT_STATE(vlc_buf);
303 MVTable *mv;
304 305
305 INIT_FIRST_VLC_RL(ff_rl_table[0], 642);306 INIT_FIRST_VLC_RL(ff_rl_table[0], 642);
306 INIT_FIRST_VLC_RL(ff_rl_table[1], 1104);307 INIT_FIRST_VLC_RL(ff_rl_table[1], 1104);
@@ -326,18 +327,16 @@ static av_cold void msmpeg4_decode_init_static(void) · 19 unmodified lines
326 &ff_v2_mb_type[0][1], 2, 1,327 &ff_v2_mb_type[0][1], 2, 1,
327 &ff_v2_mb_type[0][0], 2, 1, 0);328 &ff_v2_mb_type[0][0], 2, 1, 0);
328 329
329 mv = &ff_mv_tables[0];330 mv_tables[0] = ff_vlc_init_tables_from_lengths(&state, MV_VLC_BITS,
330 mv->vlc = ff_vlc_init_tables_sparse(&state, MV_VLC_BITS,331 MSMPEG4_MV_TABLES_NB_ELEMS,
331 MSMPEG4_MV_TABLES_NB_ELEMS + 1,332 ff_msmp4_mv_table0_lens, 1,
332 mv->table_mv_bits, 1, 1,333 ff_msmp4_mv_table0, 2, 2,
333 mv->table_mv_code, 2, 2,334 0, 0);
334 NULL, 0, 0, 0);335 mv_tables[1] = ff_vlc_init_tables_from_lengths(&state, MV_VLC_BITS,
335 mv = &ff_mv_tables[1];336 MSMPEG4_MV_TABLES_NB_ELEMS,
336 mv->vlc = ff_vlc_init_tables_sparse(&state, MV_VLC_BITS,337 ff_msmp4_mv_table1_lens, 1,
337 MSMPEG4_MV_TABLES_NB_ELEMS + 1,338 ff_msmp4_mv_table1, 2, 2,
338 mv->table_mv_bits, 1, 1,339 0, 0);
339 mv->table_mv_code, 2, 2,
340 NULL, 0, 0, 0);
341 340
342 for (unsigned i = 0; i < 4; i++) {341 for (unsigned i = 0; i < 4; i++) {
343 ff_mb_non_intra_vlc[i] =342 ff_mb_non_intra_vlc[i] =
@@ -817,18 +816,17 @@ int ff_msmpeg4_decode_block(MpegEncContext * s, int16_t * block, · 473 unmodified lines
817 816
818void ff_msmpeg4_decode_motion(MpegEncContext *s, int *mx_ptr, int *my_ptr)817void ff_msmpeg4_decode_motion(MpegEncContext *s, int *mx_ptr, int *my_ptr)
819{818{
820 const MVTable *mv;819 const VLCElem *const mv_vlc = mv_tables[s->mv_table_index];
821 int code, mx, my;820 int sym, mx, my;
822
823 mv = &ff_mv_tables[s->mv_table_index];
824 821
825 code = get_vlc2(&s->gb, mv->vlc, MV_VLC_BITS, 2);822 sym = get_vlc2(&s->gb, mv_vlc, MV_VLC_BITS, 2);
826 if (code == MSMPEG4_MV_TABLES_NB_ELEMS) {823 if (sym) {
824 mx = sym >> 8;
825 my = sym & 0xFF;
826 } else {
827 /* Escape */
827 mx = get_bits(&s->gb, 6);828 mx = get_bits(&s->gb, 6);
828 my = get_bits(&s->gb, 6);829 my = get_bits(&s->gb, 6);
829 } else {
830 mx = mv->table_mvx[code];
831 my = mv->table_mvy[code];
832 }830 }
833 831
834 mx += *mx_ptr - 32;832 mx += *mx_ptr - 32;
libavcodec/msmpeg4enc.c+1−1
@@ -67,7 +67,7 @@ static av_cold void init_mv_table(const MVTable *tab, uint32_t mv_vector_table[4 · 66 unmodified lines
67 mv_vector_table[i] = (escape_code << 20) | (i << 8) | escape_length;67 mv_vector_table[i] = (escape_code << 20) | (i << 8) | escape_length;
68 }68 }
69 69
70 for (i = 0; i < MSMPEG4_MV_TABLES_NB_ELEMS; i++) {70 for (i = 0; i < MSMPEG4_MV_TABLES_NB_ELEMS - 1; i++) {
71 x = tab->table_mvx[i];71 x = tab->table_mvx[i];
72 y = tab->table_mvy[i];72 y = tab->table_mvy[i];
73 mv_vector_table[(x << 6) | y] = (tab->table_mv_code[i] << 8) | tab->table_mv_bits[i];73 mv_vector_table[(x << 6) | y] = (tab->table_mv_code[i] << 8) | tab->table_mv_bits[i];

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t