36 #define RV_GET_MAJOR_VER(x)  ((x) >> 28) 
   37 #define RV_GET_MINOR_VER(x) (((x) >> 20) & 0xFF) 
   38 #define RV_GET_MICRO_VER(x) (((x) >> 12) & 0xFF) 
   40 #define DC_VLC_BITS 14 //FIXME find a better solution 
   48     0x3e7f, 0x0f00, 0x0f01, 0x0f02, 0x0f03, 0x0f04, 0x0f05, 0x0f06,
 
   49     0x0f07, 0x0f08, 0x0f09, 0x0f0a, 0x0f0b, 0x0f0c, 0x0f0d, 0x0f0e,
 
   50     0x0f0f, 0x0f10, 0x0f11, 0x0f12, 0x0f13, 0x0f14, 0x0f15, 0x0f16,
 
   51     0x0f17, 0x0f18, 0x0f19, 0x0f1a, 0x0f1b, 0x0f1c, 0x0f1d, 0x0f1e,
 
   52     0x0f1f, 0x0f20, 0x0f21, 0x0f22, 0x0f23, 0x0f24, 0x0f25, 0x0f26,
 
   53     0x0f27, 0x0f28, 0x0f29, 0x0f2a, 0x0f2b, 0x0f2c, 0x0f2d, 0x0f2e,
 
   54     0x0f2f, 0x0f30, 0x0f31, 0x0f32, 0x0f33, 0x0f34, 0x0f35, 0x0f36,
 
   55     0x0f37, 0x0f38, 0x0f39, 0x0f3a, 0x0f3b, 0x0f3c, 0x0f3d, 0x0f3e,
 
   56     0x0f3f, 0x0380, 0x0381, 0x0382, 0x0383, 0x0384, 0x0385, 0x0386,
 
   57     0x0387, 0x0388, 0x0389, 0x038a, 0x038b, 0x038c, 0x038d, 0x038e,
 
   58     0x038f, 0x0390, 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396,
 
   59     0x0397, 0x0398, 0x0399, 0x039a, 0x039b, 0x039c, 0x039d, 0x039e,
 
   60     0x039f, 0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6,
 
   61     0x00c7, 0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce,
 
   62     0x00cf, 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056,
 
   63     0x0057, 0x0020, 0x0021, 0x0022, 0x0023, 0x000c, 0x000d, 0x0004,
 
   64     0x0000, 0x0005, 0x000e, 0x000f, 0x0024, 0x0025, 0x0026, 0x0027,
 
   65     0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
 
   66     0x00d0, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x00d7,
 
   67     0x00d8, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x00dd, 0x00de, 0x00df,
 
   68     0x03a0, 0x03a1, 0x03a2, 0x03a3, 0x03a4, 0x03a5, 0x03a6, 0x03a7,
 
   69     0x03a8, 0x03a9, 0x03aa, 0x03ab, 0x03ac, 0x03ad, 0x03ae, 0x03af,
 
   70     0x03b0, 0x03b1, 0x03b2, 0x03b3, 0x03b4, 0x03b5, 0x03b6, 0x03b7,
 
   71     0x03b8, 0x03b9, 0x03ba, 0x03bb, 0x03bc, 0x03bd, 0x03be, 0x03bf,
 
   72     0x0f40, 0x0f41, 0x0f42, 0x0f43, 0x0f44, 0x0f45, 0x0f46, 0x0f47,
 
   73     0x0f48, 0x0f49, 0x0f4a, 0x0f4b, 0x0f4c, 0x0f4d, 0x0f4e, 0x0f4f,
 
   74     0x0f50, 0x0f51, 0x0f52, 0x0f53, 0x0f54, 0x0f55, 0x0f56, 0x0f57,
 
   75     0x0f58, 0x0f59, 0x0f5a, 0x0f5b, 0x0f5c, 0x0f5d, 0x0f5e, 0x0f5f,
 
   76     0x0f60, 0x0f61, 0x0f62, 0x0f63, 0x0f64, 0x0f65, 0x0f66, 0x0f67,
 
   77     0x0f68, 0x0f69, 0x0f6a, 0x0f6b, 0x0f6c, 0x0f6d, 0x0f6e, 0x0f6f,
 
   78     0x0f70, 0x0f71, 0x0f72, 0x0f73, 0x0f74, 0x0f75, 0x0f76, 0x0f77,
 
   79     0x0f78, 0x0f79, 0x0f7a, 0x0f7b, 0x0f7c, 0x0f7d, 0x0f7e, 0x0f7f,
 
   83     14, 12, 12, 12, 12, 12, 12, 12,
 
   84     12, 12, 12, 12, 12, 12, 12, 12,
 
   85     12, 12, 12, 12, 12, 12, 12, 12,
 
   86     12, 12, 12, 12, 12, 12, 12, 12,
 
   87     12, 12, 12, 12, 12, 12, 12, 12,
 
   88     12, 12, 12, 12, 12, 12, 12, 12,
 
   89     12, 12, 12, 12, 12, 12, 12, 12,
 
   90     12, 12, 12, 12, 12, 12, 12, 12,
 
   91     12, 10, 10, 10, 10, 10, 10, 10,
 
   92     10, 10, 10, 10, 10, 10, 10, 10,
 
   93     10, 10, 10, 10, 10, 10, 10, 10,
 
   94     10, 10, 10, 10, 10, 10, 10, 10,
 
   95     10,  8,  8,  8,  8,  8,  8,  8,
 
   96      8,  8,  8,  8,  8,  8,  8,  8,
 
   97      8,  7,  7,  7,  7,  7,  7,  7,
 
   98      7,  6,  6,  6,  6,  5,  5,  4,
 
   99      2,  4,  5,  5,  6,  6,  6,  6,
 
  100      7,  7,  7,  7,  7,  7,  7,  7,
 
  101      8,  8,  8,  8,  8,  8,  8,  8,
 
  102      8,  8,  8,  8,  8,  8,  8,  8,
 
  103     10, 10, 10, 10, 10, 10, 10, 10,
 
  104     10, 10, 10, 10, 10, 10, 10, 10,
 
  105     10, 10, 10, 10, 10, 10, 10, 10,
 
  106     10, 10, 10, 10, 10, 10, 10, 10,
 
  107     12, 12, 12, 12, 12, 12, 12, 12,
 
  108     12, 12, 12, 12, 12, 12, 12, 12,
 
  109     12, 12, 12, 12, 12, 12, 12, 12,
 
  110     12, 12, 12, 12, 12, 12, 12, 12,
 
  111     12, 12, 12, 12, 12, 12, 12, 12,
 
  112     12, 12, 12, 12, 12, 12, 12, 12,
 
  113     12, 12, 12, 12, 12, 12, 12, 12,
 
  114     12, 12, 12, 12, 12, 12, 12, 12,
 
  118     0xfe7f, 0x3f00, 0x3f01, 0x3f02, 0x3f03, 0x3f04, 0x3f05, 0x3f06,
 
  119     0x3f07, 0x3f08, 0x3f09, 0x3f0a, 0x3f0b, 0x3f0c, 0x3f0d, 0x3f0e,
 
  120     0x3f0f, 0x3f10, 0x3f11, 0x3f12, 0x3f13, 0x3f14, 0x3f15, 0x3f16,
 
  121     0x3f17, 0x3f18, 0x3f19, 0x3f1a, 0x3f1b, 0x3f1c, 0x3f1d, 0x3f1e,
 
  122     0x3f1f, 0x3f20, 0x3f21, 0x3f22, 0x3f23, 0x3f24, 0x3f25, 0x3f26,
 
  123     0x3f27, 0x3f28, 0x3f29, 0x3f2a, 0x3f2b, 0x3f2c, 0x3f2d, 0x3f2e,
 
  124     0x3f2f, 0x3f30, 0x3f31, 0x3f32, 0x3f33, 0x3f34, 0x3f35, 0x3f36,
 
  125     0x3f37, 0x3f38, 0x3f39, 0x3f3a, 0x3f3b, 0x3f3c, 0x3f3d, 0x3f3e,
 
  126     0x3f3f, 0x0f80, 0x0f81, 0x0f82, 0x0f83, 0x0f84, 0x0f85, 0x0f86,
 
  127     0x0f87, 0x0f88, 0x0f89, 0x0f8a, 0x0f8b, 0x0f8c, 0x0f8d, 0x0f8e,
 
  128     0x0f8f, 0x0f90, 0x0f91, 0x0f92, 0x0f93, 0x0f94, 0x0f95, 0x0f96,
 
  129     0x0f97, 0x0f98, 0x0f99, 0x0f9a, 0x0f9b, 0x0f9c, 0x0f9d, 0x0f9e,
 
  130     0x0f9f, 0x03c0, 0x03c1, 0x03c2, 0x03c3, 0x03c4, 0x03c5, 0x03c6,
 
  131     0x03c7, 0x03c8, 0x03c9, 0x03ca, 0x03cb, 0x03cc, 0x03cd, 0x03ce,
 
  132     0x03cf, 0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6,
 
  133     0x00e7, 0x0030, 0x0031, 0x0032, 0x0033, 0x0008, 0x0009, 0x0002,
 
  134     0x0000, 0x0003, 0x000a, 0x000b, 0x0034, 0x0035, 0x0036, 0x0037,
 
  135     0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef,
 
  136     0x03d0, 0x03d1, 0x03d2, 0x03d3, 0x03d4, 0x03d5, 0x03d6, 0x03d7,
 
  137     0x03d8, 0x03d9, 0x03da, 0x03db, 0x03dc, 0x03dd, 0x03de, 0x03df,
 
  138     0x0fa0, 0x0fa1, 0x0fa2, 0x0fa3, 0x0fa4, 0x0fa5, 0x0fa6, 0x0fa7,
 
  139     0x0fa8, 0x0fa9, 0x0faa, 0x0fab, 0x0fac, 0x0fad, 0x0fae, 0x0faf,
 
  140     0x0fb0, 0x0fb1, 0x0fb2, 0x0fb3, 0x0fb4, 0x0fb5, 0x0fb6, 0x0fb7,
 
  141     0x0fb8, 0x0fb9, 0x0fba, 0x0fbb, 0x0fbc, 0x0fbd, 0x0fbe, 0x0fbf,
 
  142     0x3f40, 0x3f41, 0x3f42, 0x3f43, 0x3f44, 0x3f45, 0x3f46, 0x3f47,
 
  143     0x3f48, 0x3f49, 0x3f4a, 0x3f4b, 0x3f4c, 0x3f4d, 0x3f4e, 0x3f4f,
 
  144     0x3f50, 0x3f51, 0x3f52, 0x3f53, 0x3f54, 0x3f55, 0x3f56, 0x3f57,
 
  145     0x3f58, 0x3f59, 0x3f5a, 0x3f5b, 0x3f5c, 0x3f5d, 0x3f5e, 0x3f5f,
 
  146     0x3f60, 0x3f61, 0x3f62, 0x3f63, 0x3f64, 0x3f65, 0x3f66, 0x3f67,
 
  147     0x3f68, 0x3f69, 0x3f6a, 0x3f6b, 0x3f6c, 0x3f6d, 0x3f6e, 0x3f6f,
 
  148     0x3f70, 0x3f71, 0x3f72, 0x3f73, 0x3f74, 0x3f75, 0x3f76, 0x3f77,
 
  149     0x3f78, 0x3f79, 0x3f7a, 0x3f7b, 0x3f7c, 0x3f7d, 0x3f7e, 0x3f7f,
 
  153     16, 14, 14, 14, 14, 14, 14, 14,
 
  154     14, 14, 14, 14, 14, 14, 14, 14,
 
  155     14, 14, 14, 14, 14, 14, 14, 14,
 
  156     14, 14, 14, 14, 14, 14, 14, 14,
 
  157     14, 14, 14, 14, 14, 14, 14, 14,
 
  158     14, 14, 14, 14, 14, 14, 14, 14,
 
  159     14, 14, 14, 14, 14, 14, 14, 14,
 
  160     14, 14, 14, 14, 14, 14, 14, 14,
 
  161     14, 12, 12, 12, 12, 12, 12, 12,
 
  162     12, 12, 12, 12, 12, 12, 12, 12,
 
  163     12, 12, 12, 12, 12, 12, 12, 12,
 
  164     12, 12, 12, 12, 12, 12, 12, 12,
 
  165     12, 10, 10, 10, 10, 10, 10, 10,
 
  166     10, 10, 10, 10, 10, 10, 10, 10,
 
  167     10,  8,  8,  8,  8,  8,  8,  8,
 
  168      8,  6,  6,  6,  6,  4,  4,  3,
 
  169      2,  3,  4,  4,  6,  6,  6,  6,
 
  170      8,  8,  8,  8,  8,  8,  8,  8,
 
  171     10, 10, 10, 10, 10, 10, 10, 10,
 
  172     10, 10, 10, 10, 10, 10, 10, 10,
 
  173     12, 12, 12, 12, 12, 12, 12, 12,
 
  174     12, 12, 12, 12, 12, 12, 12, 12,
 
  175     12, 12, 12, 12, 12, 12, 12, 12,
 
  176     12, 12, 12, 12, 12, 12, 12, 12,
 
  177     14, 14, 14, 14, 14, 14, 14, 14,
 
  178     14, 14, 14, 14, 14, 14, 14, 14,
 
  179     14, 14, 14, 14, 14, 14, 14, 14,
 
  180     14, 14, 14, 14, 14, 14, 14, 14,
 
  181     14, 14, 14, 14, 14, 14, 14, 14,
 
  182     14, 14, 14, 14, 14, 14, 14, 14,
 
  183     14, 14, 14, 14, 14, 14, 14, 14,
 
  184     14, 14, 14, 14, 14, 14, 14, 14,
 
  202             } 
else if (code == 0x7d) {
 
  204             } 
else if (code == 0x7e) {
 
  209             } 
else if (code == 0x7f) {
 
  223             } 
else if (code == 0x1fd) {
 
  225             } 
else if (code == 0x1fe) {
 
  242     int mb_count, pb_frame, marker, mb_xy;
 
  283     if (
show_bits(&s->
gb, 12) == 0 || (mb_xy && mb_xy < s->mb_num)) {
 
  302     int seq, mb_pos, i, 
ret;
 
  347         int rpr_bits = 
av_log2(rpr_max) + 1;
 
  366                    "attempting to change resolution to %dx%d\n", new_w, new_h);
 
  398     seq |= s->
time & ~0x7FFF;
 
  399     if (seq - s->
time >  0x4000)
 
  401     if (seq - s->
time < -0x4000)
 
  404     if (seq != s->
time) {
 
  417                    "messed up order, possible from seeking? skipping current b frame\n");
 
  418 #define ERROR_SKIP_FRAME -123 
  451     int major_ver, minor_ver, micro_ver, 
ret;
 
  481         s->
obmc         = micro_ver == 2;
 
  484         if (minor_ver >= 2) {
 
  531                               const uint8_t *
buf, 
int buf_size, 
int buf_size2)
 
  535     int mb_count, mb_pos, left, start_mb_x, active_bits_size, 
ret;
 
  537     active_bits_size = buf_size * 8;
 
  556     if (mb_count > left) {
 
  588     start_mb_x     = s->
mb_x;
 
  635             active_bits_size = buf_size2 * 8;
 
  637                    8 * buf_size, active_bits_size);
 
  665     return active_bits_size;
 
  677                              void *
data, 
int *got_frame,
 
  681     int buf_size       = avpkt->
size;
 
  686     const uint8_t *slices_hdr = NULL;
 
  698         slice_count = (*buf++) + 1;
 
  701         if (!slice_count || buf_size <= 8 * slice_count) {
 
  706         slices_hdr = buf + 4;
 
  707         buf       += 8 * slice_count;
 
  708         buf_size  -= 8 * slice_count;
 
  712     for (i = 0; i < slice_count; i++) {
 
  716         if (offset >= buf_size)
 
  719         if (i + 1 == slice_count)
 
  724         if (i + 2 >= slice_count)
 
  725             size2 = buf_size - 
offset;
 
  729         if (size <= 0 || size2 <= 0 ||
 
  730             offset + 
FFMAX(size, size2) > buf_size)