Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Blame | Last modification | View Log | RSS feed

  1. /*
  2.  * LucasArts Smush video decoder
  3.  * Copyright (c) 2006 Cyril Zorin
  4.  *
  5.  * This file is part of FFmpeg.
  6.  *
  7.  * FFmpeg is free software; you can redistribute it and/or
  8.  * modify it under the terms of the GNU Lesser General Public
  9.  * License as published by the Free Software Foundation; either
  10.  * version 2.1 of the License, or (at your option) any later version.
  11.  *
  12.  * FFmpeg is distributed in the hope that it will be useful,
  13.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  14.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  15.  * Lesser General Public License for more details.
  16.  *
  17.  * You should have received a copy of the GNU Lesser General Public
  18.  * License along with FFmpeg; if not, write to the Free Software
  19.  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
  20.  */
  21.  
  22. #ifndef AVCODEC_SANM_DATA_H
  23. #define AVCODEC_SANM_DATA_H
  24.  
  25. #include <stdint.h>
  26.  
  27. #define GLYPH_COORD_VECT_SIZE 16
  28.  
  29. static const int8_t glyph4_x[GLYPH_COORD_VECT_SIZE] =
  30.     { 0, 1, 2, 3, 3, 3, 3, 2, 1, 0, 0, 0, 1, 2, 2, 1 };
  31. static const int8_t glyph4_y[GLYPH_COORD_VECT_SIZE] =
  32.     { 0, 0, 0, 0, 1, 2, 3, 3, 3, 3, 2, 1, 1, 1, 2, 2 };
  33. static const int8_t glyph8_x[GLYPH_COORD_VECT_SIZE] =
  34.     { 0, 2, 5, 7, 7, 7, 7, 7, 7, 5, 2, 0, 0, 0, 0, 0 };
  35. static const int8_t glyph8_y[GLYPH_COORD_VECT_SIZE] =
  36.     { 0, 0, 0, 0, 1, 3, 4, 6, 7, 7, 7, 7, 6, 4, 3, 1 };
  37.  
  38. static const int8_t motion_vectors[256][2] =
  39. {
  40.     {  0,   0}, { -1, -43}, {  6, -43}, { -9, -42}, { 13, -41},
  41.     {-16, -40}, { 19, -39}, {-23, -36}, { 26, -34}, { -2, -33},
  42.     {  4, -33}, {-29, -32}, { -9, -32}, { 11, -31}, {-16, -29},
  43.     { 32, -29}, { 18, -28}, {-34, -26}, {-22, -25}, { -1, -25},
  44.     {  3, -25}, { -7, -24}, {  8, -24}, { 24, -23}, { 36, -23},
  45.     {-12, -22}, { 13, -21}, {-38, -20}, {  0, -20}, {-27, -19},
  46.     { -4, -19}, {  4, -19}, {-17, -18}, { -8, -17}, {  8, -17},
  47.     { 18, -17}, { 28, -17}, { 39, -17}, {-12, -15}, { 12, -15},
  48.     {-21, -14}, { -1, -14}, {  1, -14}, {-41, -13}, { -5, -13},
  49.     {  5, -13}, { 21, -13}, {-31, -12}, {-15, -11}, { -8, -11},
  50.     {  8, -11}, { 15, -11}, { -2, -10}, {  1, -10}, { 31, -10},
  51.     {-23,  -9}, {-11,  -9}, { -5,  -9}, {  4,  -9}, { 11,  -9},
  52.     { 42,  -9}, {  6,  -8}, { 24,  -8}, {-18,  -7}, { -7,  -7},
  53.     { -3,  -7}, { -1,  -7}, {  2,  -7}, { 18,  -7}, {-43,  -6},
  54.     {-13,  -6}, { -4,  -6}, {  4,  -6}, {  8,  -6}, {-33,  -5},
  55.     { -9,  -5}, { -2,  -5}, {  0,  -5}, {  2,  -5}, {  5,  -5},
  56.     { 13,  -5}, {-25,  -4}, { -6,  -4}, { -3,  -4}, {  3,  -4},
  57.     {  9,  -4}, {-19,  -3}, { -7,  -3}, { -4,  -3}, { -2,  -3},
  58.     { -1,  -3}, {  0,  -3}, {  1,  -3}, {  2,  -3}, {  4,  -3},
  59.     {  6,  -3}, { 33,  -3}, {-14,  -2}, {-10,  -2}, { -5,  -2},
  60.     { -3,  -2}, { -2,  -2}, { -1,  -2}, {  0,  -2}, {  1,  -2},
  61.     {  2,  -2}, {  3,  -2}, {  5,  -2}, {  7,  -2}, { 14,  -2},
  62.     { 19,  -2}, { 25,  -2}, { 43,  -2}, { -7,  -1}, { -3,  -1},
  63.     { -2,  -1}, { -1,  -1}, {  0,  -1}, {  1,  -1}, {  2,  -1},
  64.     {  3,  -1}, { 10,  -1}, { -5,   0}, { -3,   0}, { -2,   0},
  65.     { -1,   0}, {  1,   0}, {  2,   0}, {  3,   0}, {  5,   0},
  66.     {  7,   0}, {-10,   1}, { -7,   1}, { -3,   1}, { -2,   1},
  67.     { -1,   1}, {  0,   1}, {  1,   1}, {  2,   1}, {  3,   1},
  68.     {-43,   2}, {-25,   2}, {-19,   2}, {-14,   2}, { -5,   2},
  69.     { -3,   2}, { -2,   2}, { -1,   2}, {  0,   2}, {  1,   2},
  70.     {  2,   2}, {  3,   2}, {  5,   2}, {  7,   2}, { 10,   2},
  71.     { 14,   2}, {-33,   3}, { -6,   3}, { -4,   3}, { -2,   3},
  72.     { -1,   3}, {  0,   3}, {  1,   3}, {  2,   3}, {  4,   3},
  73.     { 19,   3}, { -9,   4}, { -3,   4}, {  3,   4}, {  7,   4},
  74.     { 25,   4}, {-13,   5}, { -5,   5}, { -2,   5}, {  0,   5},
  75.     {  2,   5}, {  5,   5}, {  9,   5}, { 33,   5}, { -8,   6},
  76.     { -4,   6}, {  4,   6}, { 13,   6}, { 43,   6}, {-18,   7},
  77.     { -2,   7}, {  0,   7}, {  2,   7}, {  7,   7}, { 18,   7},
  78.     {-24,   8}, { -6,   8}, {-42,   9}, {-11,   9}, { -4,   9},
  79.     {  5,   9}, { 11,   9}, { 23,   9}, {-31,  10}, { -1,  10},
  80.     {  2,  10}, {-15,  11}, { -8,  11}, {  8,  11}, { 15,  11},
  81.     { 31,  12}, {-21,  13}, { -5,  13}, {  5,  13}, { 41,  13},
  82.     { -1,  14}, {  1,  14}, { 21,  14}, {-12,  15}, { 12,  15},
  83.     {-39,  17}, {-28,  17}, {-18,  17}, { -8,  17}, {  8,  17},
  84.     { 17,  18}, { -4,  19}, {  0,  19}, {  4,  19}, { 27,  19},
  85.     { 38,  20}, {-13,  21}, { 12,  22}, {-36,  23}, {-24,  23},
  86.     { -8,  24}, {  7,  24}, { -3,  25}, {  1,  25}, { 22,  25},
  87.     { 34,  26}, {-18,  28}, {-32,  29}, { 16,  29}, {-11,  31},
  88.     {  9,  32}, { 29,  32}, { -4,  33}, {  2,  33}, {-26,  34},
  89.     { 23,  36}, {-19,  39}, { 16,  40}, {-13,  41}, {  9,  42},
  90.     { -6,  43}, {  1,  43}, {  0,   0}, {  0,   0}, {  0,   0},
  91. };
  92.  
  93. static const int8_t c37_mv[] = {
  94.     0,   0,   1,   0,   2,   0,   3,   0,   5,   0,
  95.     8,   0,  13,   0,  21,   0,  -1,   0,  -2,   0,
  96.    -3,   0,  -5,   0,  -8,   0, -13,   0, -17,   0,
  97.   -21,   0,   0,   1,   1,   1,   2,   1,   3,   1,
  98.     5,   1,   8,   1,  13,   1,  21,   1,  -1,   1,
  99.    -2,   1,  -3,   1,  -5,   1,  -8,   1, -13,   1,
  100.   -17,   1, -21,   1,   0,   2,   1,   2,   2,   2,
  101.     3,   2,   5,   2,   8,   2,  13,   2,  21,   2,
  102.    -1,   2,  -2,   2,  -3,   2,  -5,   2,  -8,   2,
  103.   -13,   2, -17,   2, -21,   2,   0,   3,   1,   3,
  104.     2,   3,   3,   3,   5,   3,   8,   3,  13,   3,
  105.    21,   3,  -1,   3,  -2,   3,  -3,   3,  -5,   3,
  106.    -8,   3, -13,   3, -17,   3, -21,   3,   0,   5,
  107.     1,   5,   2,   5,   3,   5,   5,   5,   8,   5,
  108.    13,   5,  21,   5,  -1,   5,  -2,   5,  -3,   5,
  109.    -5,   5,  -8,   5, -13,   5, -17,   5, -21,   5,
  110.     0,   8,   1,   8,   2,   8,   3,   8,   5,   8,
  111.     8,   8,  13,   8,  21,   8,  -1,   8,  -2,   8,
  112.    -3,   8,  -5,   8,  -8,   8, -13,   8, -17,   8,
  113.   -21,   8,   0,  13,   1,  13,   2,  13,   3,  13,
  114.     5,  13,   8,  13,  13,  13,  21,  13,  -1,  13,
  115.    -2,  13,  -3,  13,  -5,  13,  -8,  13, -13,  13,
  116.   -17,  13, -21,  13,   0,  21,   1,  21,   2,  21,
  117.     3,  21,   5,  21,   8,  21,  13,  21,  21,  21,
  118.    -1,  21,  -2,  21,  -3,  21,  -5,  21,  -8,  21,
  119.   -13,  21, -17,  21, -21,  21,   0,  -1,   1,  -1,
  120.     2,  -1,   3,  -1,   5,  -1,   8,  -1,  13,  -1,
  121.    21,  -1,  -1,  -1,  -2,  -1,  -3,  -1,  -5,  -1,
  122.    -8,  -1, -13,  -1, -17,  -1, -21,  -1,   0,  -2,
  123.     1,  -2,   2,  -2,   3,  -2,   5,  -2,   8,  -2,
  124.    13,  -2,  21,  -2,  -1,  -2,  -2,  -2,  -3,  -2,
  125.    -5,  -2,  -8,  -2, -13,  -2, -17,  -2, -21,  -2,
  126.     0,  -3,   1,  -3,   2,  -3,   3,  -3,   5,  -3,
  127.     8,  -3,  13,  -3,  21,  -3,  -1,  -3,  -2,  -3,
  128.    -3,  -3,  -5,  -3,  -8,  -3, -13,  -3, -17,  -3,
  129.   -21,  -3,   0,  -5,   1,  -5,   2,  -5,   3,  -5,
  130.     5,  -5,   8,  -5,  13,  -5,  21,  -5,  -1,  -5,
  131.    -2,  -5,  -3,  -5,  -5,  -5,  -8,  -5, -13,  -5,
  132.   -17,  -5, -21,  -5,   0,  -8,   1,  -8,   2,  -8,
  133.     3,  -8,   5,  -8,   8,  -8,  13,  -8,  21,  -8,
  134.    -1,  -8,  -2,  -8,  -3,  -8,  -5,  -8,  -8,  -8,
  135.   -13,  -8, -17,  -8, -21,  -8,   0, -13,   1, -13,
  136.     2, -13,   3, -13,   5, -13,   8, -13,  13, -13,
  137.    21, -13,  -1, -13,  -2, -13,  -3, -13,  -5, -13,
  138.    -8, -13, -13, -13, -17, -13, -21, -13,   0, -17,
  139.     1, -17,   2, -17,   3, -17,   5, -17,   8, -17,
  140.    13, -17,  21, -17,  -1, -17,  -2, -17,  -3, -17,
  141.    -5, -17,  -8, -17, -13, -17, -17, -17, -21, -17,
  142.     0, -21,   1, -21,   2, -21,   3, -21,   5, -21,
  143.     8, -21,  13, -21,  21, -21,  -1, -21,  -2, -21,
  144.    -3, -21,  -5, -21,  -8, -21, -13, -21, -17, -21,
  145.     0,   0,  -8, -29,   8, -29, -18, -25,  17, -25,
  146.     0, -23,  -6, -22,   6, -22, -13, -19,  12, -19,
  147.     0, -18,  25, -18, -25, -17,  -5, -17,   5, -17,
  148.   -10, -15,  10, -15,   0, -14,  -4, -13,   4, -13,
  149.    19, -13, -19, -12,  -8, -11,  -2, -11,   0, -11,
  150.     2, -11,   8, -11, -15, -10,  -4, -10,   4, -10,
  151.    15, -10,  -6,  -9,  -1,  -9,   1,  -9,   6,  -9,
  152.   -29,  -8, -11,  -8,  -8,  -8,  -3,  -8,   3,  -8,
  153.     8,  -8,  11,  -8,  29,  -8,  -5,  -7,  -2,  -7,
  154.     0,  -7,   2,  -7,   5,  -7, -22,  -6,  -9,  -6,
  155.    -6,  -6,  -3,  -6,  -1,  -6,   1,  -6,   3,  -6,
  156.     6,  -6,   9,  -6,  22,  -6, -17,  -5,  -7,  -5,
  157.    -4,  -5,  -2,  -5,   0,  -5,   2,  -5,   4,  -5,
  158.     7,  -5,  17,  -5, -13,  -4, -10,  -4,  -5,  -4,
  159.    -3,  -4,  -1,  -4,   0,  -4,   1,  -4,   3,  -4,
  160.     5,  -4,  10,  -4,  13,  -4,  -8,  -3,  -6,  -3,
  161.    -4,  -3,  -3,  -3,  -2,  -3,  -1,  -3,   0,  -3,
  162.     1,  -3,   2,  -3,   4,  -3,   6,  -3,   8,  -3,
  163.   -11,  -2,  -7,  -2,  -5,  -2,  -3,  -2,  -2,  -2,
  164.    -1,  -2,   0,  -2,   1,  -2,   2,  -2,   3,  -2,
  165.     5,  -2,   7,  -2,  11,  -2,  -9,  -1,  -6,  -1,
  166.    -4,  -1,  -3,  -1,  -2,  -1,  -1,  -1,   0,  -1,
  167.     1,  -1,   2,  -1,   3,  -1,   4,  -1,   6,  -1,
  168.     9,  -1, -31,   0, -23,   0, -18,   0, -14,   0,
  169.   -11,   0,  -7,   0,  -5,   0,  -4,   0,  -3,   0,
  170.    -2,   0,  -1,   0,   0, -31,   1,   0,   2,   0,
  171.     3,   0,   4,   0,   5,   0,   7,   0,  11,   0,
  172.    14,   0,  18,   0,  23,   0,  31,   0,  -9,   1,
  173.    -6,   1,  -4,   1,  -3,   1,  -2,   1,  -1,   1,
  174.     0,   1,   1,   1,   2,   1,   3,   1,   4,   1,
  175.     6,   1,   9,   1, -11,   2,  -7,   2,  -5,   2,
  176.    -3,   2,  -2,   2,  -1,   2,   0,   2,   1,   2,
  177.     2,   2,   3,   2,   5,   2,   7,   2,  11,   2,
  178.    -8,   3,  -6,   3,  -4,   3,  -2,   3,  -1,   3,
  179.     0,   3,   1,   3,   2,   3,   3,   3,   4,   3,
  180.     6,   3,   8,   3, -13,   4, -10,   4,  -5,   4,
  181.    -3,   4,  -1,   4,   0,   4,   1,   4,   3,   4,
  182.     5,   4,  10,   4,  13,   4, -17,   5,  -7,   5,
  183.    -4,   5,  -2,   5,   0,   5,   2,   5,   4,   5,
  184.     7,   5,  17,   5, -22,   6,  -9,   6,  -6,   6,
  185.    -3,   6,  -1,   6,   1,   6,   3,   6,   6,   6,
  186.     9,   6,  22,   6,  -5,   7,  -2,   7,   0,   7,
  187.     2,   7,   5,   7, -29,   8, -11,   8,  -8,   8,
  188.    -3,   8,   3,   8,   8,   8,  11,   8,  29,   8,
  189.    -6,   9,  -1,   9,   1,   9,   6,   9, -15,  10,
  190.    -4,  10,   4,  10,  15,  10,  -8,  11,  -2,  11,
  191.     0,  11,   2,  11,   8,  11,  19,  12, -19,  13,
  192.    -4,  13,   4,  13,   0,  14, -10,  15,  10,  15,
  193.    -5,  17,   5,  17,  25,  17, -25,  18,   0,  18,
  194.   -12,  19,  13,  19,  -6,  22,   6,  22,   0,  23,
  195.   -17,  25,  18,  25,  -8,  29,   8,  29,   0,  31,
  196.     0,   0,  -6, -22,   6, -22, -13, -19,  12, -19,
  197.     0, -18,  -5, -17,   5, -17, -10, -15,  10, -15,
  198.     0, -14,  -4, -13,   4, -13,  19, -13, -19, -12,
  199.    -8, -11,  -2, -11,   0, -11,   2, -11,   8, -11,
  200.   -15, -10,  -4, -10,   4, -10,  15, -10,  -6,  -9,
  201.    -1,  -9,   1,  -9,   6,  -9, -11,  -8,  -8,  -8,
  202.    -3,  -8,   0,  -8,   3,  -8,   8,  -8,  11,  -8,
  203.    -5,  -7,  -2,  -7,   0,  -7,   2,  -7,   5,  -7,
  204.   -22,  -6,  -9,  -6,  -6,  -6,  -3,  -6,  -1,  -6,
  205.     1,  -6,   3,  -6,   6,  -6,   9,  -6,  22,  -6,
  206.   -17,  -5,  -7,  -5,  -4,  -5,  -2,  -5,  -1,  -5,
  207.     0,  -5,   1,  -5,   2,  -5,   4,  -5,   7,  -5,
  208.    17,  -5, -13,  -4, -10,  -4,  -5,  -4,  -3,  -4,
  209.    -2,  -4,  -1,  -4,   0,  -4,   1,  -4,   2,  -4,
  210.     3,  -4,   5,  -4,  10,  -4,  13,  -4,  -8,  -3,
  211.    -6,  -3,  -4,  -3,  -3,  -3,  -2,  -3,  -1,  -3,
  212.     0,  -3,   1,  -3,   2,  -3,   3,  -3,   4,  -3,
  213.     6,  -3,   8,  -3, -11,  -2,  -7,  -2,  -5,  -2,
  214.    -4,  -2,  -3,  -2,  -2,  -2,  -1,  -2,   0,  -2,
  215.     1,  -2,   2,  -2,   3,  -2,   4,  -2,   5,  -2,
  216.     7,  -2,  11,  -2,  -9,  -1,  -6,  -1,  -5,  -1,
  217.    -4,  -1,  -3,  -1,  -2,  -1,  -1,  -1,   0,  -1,
  218.     1,  -1,   2,  -1,   3,  -1,   4,  -1,   5,  -1,
  219.     6,  -1,   9,  -1, -23,   0, -18,   0, -14,   0,
  220.   -11,   0,  -7,   0,  -5,   0,  -4,   0,  -3,   0,
  221.    -2,   0,  -1,   0,   0, -23,   1,   0,   2,   0,
  222.     3,   0,   4,   0,   5,   0,   7,   0,  11,   0,
  223.    14,   0,  18,   0,  23,   0,  -9,   1,  -6,   1,
  224.    -5,   1,  -4,   1,  -3,   1,  -2,   1,  -1,   1,
  225.     0,   1,   1,   1,   2,   1,   3,   1,   4,   1,
  226.     5,   1,   6,   1,   9,   1, -11,   2,  -7,   2,
  227.    -5,   2,  -4,   2,  -3,   2,  -2,   2,  -1,   2,
  228.     0,   2,   1,   2,   2,   2,   3,   2,   4,   2,
  229.     5,   2,   7,   2,  11,   2,  -8,   3,  -6,   3,
  230.    -4,   3,  -3,   3,  -2,   3,  -1,   3,   0,   3,
  231.     1,   3,   2,   3,   3,   3,   4,   3,   6,   3,
  232.     8,   3, -13,   4, -10,   4,  -5,   4,  -3,   4,
  233.    -2,   4,  -1,   4,   0,   4,   1,   4,   2,   4,
  234.     3,   4,   5,   4,  10,   4,  13,   4, -17,   5,
  235.    -7,   5,  -4,   5,  -2,   5,  -1,   5,   0,   5,
  236.     1,   5,   2,   5,   4,   5,   7,   5,  17,   5,
  237.   -22,   6,  -9,   6,  -6,   6,  -3,   6,  -1,   6,
  238.     1,   6,   3,   6,   6,   6,   9,   6,  22,   6,
  239.    -5,   7,  -2,   7,   0,   7,   2,   7,   5,   7,
  240.   -11,   8,  -8,   8,  -3,   8,   0,   8,   3,   8,
  241.     8,   8,  11,   8,  -6,   9,  -1,   9,   1,   9,
  242.     6,   9, -15,  10,  -4,  10,   4,  10,  15,  10,
  243.    -8,  11,  -2,  11,   0,  11,   2,  11,   8,  11,
  244.    19,  12, -19,  13,  -4,  13,   4,  13,   0,  14,
  245.   -10,  15,  10,  15,  -5,  17,   5,  17,   0,  18,
  246.   -12,  19,  13,  19,  -6,  22,   6,  22,   0,  23,
  247. };
  248. #endif /* AVCODEC_SANM_DATA_H */
  249.