73     0x00, 0xD5, 0x7F, 0xAA, 0xFE, 0x2B, 0x81, 0x54,
 
   74     0x29, 0xFC, 0x56, 0x83, 0xD7, 0x02, 0xA8, 0x7D,
 
   75     0x52, 0x87, 0x2D, 0xF8, 0xAC, 0x79, 0xD3, 0x06,
 
   76     0x7B, 0xAE, 0x04, 0xD1, 0x85, 0x50, 0xFA, 0x2F,
 
   77     0xA4, 0x71, 0xDB, 0x0E, 0x5A, 0x8F, 0x25, 0xF0,
 
   78     0x8D, 0x58, 0xF2, 0x27, 0x73, 0xA6, 0x0C, 0xD9,
 
   79     0xF6, 0x23, 0x89, 0x5C, 0x08, 0xDD, 0x77, 0xA2,
 
   80     0xDF, 0x0A, 0xA0, 0x75, 0x21, 0xF4, 0x5E, 0x8B,
 
   81     0x9D, 0x48, 0xE2, 0x37, 0x63, 0xB6, 0x1C, 0xC9,
 
   82     0xB4, 0x61, 0xCB, 0x1E, 0x4A, 0x9F, 0x35, 0xE0,
 
   83     0xCF, 0x1A, 0xB0, 0x65, 0x31, 0xE4, 0x4E, 0x9B,
 
   84     0xE6, 0x33, 0x99, 0x4C, 0x18, 0xCD, 0x67, 0xB2,
 
   85     0x39, 0xEC, 0x46, 0x93, 0xC7, 0x12, 0xB8, 0x6D,
 
   86     0x10, 0xC5, 0x6F, 0xBA, 0xEE, 0x3B, 0x91, 0x44,
 
   87     0x6B, 0xBE, 0x14, 0xC1, 0x95, 0x40, 0xEA, 0x3F,
 
   88     0x42, 0x97, 0x3D, 0xE8, 0xBC, 0x69, 0xC3, 0x16,
 
   89     0xEF, 0x3A, 0x90, 0x45, 0x11, 0xC4, 0x6E, 0xBB,
 
   90     0xC6, 0x13, 0xB9, 0x6C, 0x38, 0xED, 0x47, 0x92,
 
   91     0xBD, 0x68, 0xC2, 0x17, 0x43, 0x96, 0x3C, 0xE9,
 
   92     0x94, 0x41, 0xEB, 0x3E, 0x6A, 0xBF, 0x15, 0xC0,
 
   93     0x4B, 0x9E, 0x34, 0xE1, 0xB5, 0x60, 0xCA, 0x1F,
 
   94     0x62, 0xB7, 0x1D, 0xC8, 0x9C, 0x49, 0xE3, 0x36,
 
   95     0x19, 0xCC, 0x66, 0xB3, 0xE7, 0x32, 0x98, 0x4D,
 
   96     0x30, 0xE5, 0x4F, 0x9A, 0xCE, 0x1B, 0xB1, 0x64,
 
   97     0x72, 0xA7, 0x0D, 0xD8, 0x8C, 0x59, 0xF3, 0x26,
 
   98     0x5B, 0x8E, 0x24, 0xF1, 0xA5, 0x70, 0xDA, 0x0F,
 
   99     0x20, 0xF5, 0x5F, 0x8A, 0xDE, 0x0B, 0xA1, 0x74,
 
  100     0x09, 0xDC, 0x76, 0xA3, 0xF7, 0x22, 0x88, 0x5D,
 
  101     0xD6, 0x03, 0xA9, 0x7C, 0x28, 0xFD, 0x57, 0x82,
 
  102     0xFF, 0x2A, 0x80, 0x55, 0x01, 0xD4, 0x7E, 0xAB,
 
  103     0x84, 0x51, 0xFB, 0x2E, 0x7A, 0xAF, 0x05, 0xD0,
 
  104     0xAD, 0x78, 0xD2, 0x07, 0x53, 0x86, 0x2C, 0xF9
 
  107 #define SVQ1_PROCESS_VECTOR()                                           \ 
  108     for (; level > 0; i++) {                                            \ 
  116         if (!get_bits1(bitbuf))                                         \ 
  119         list[n++] = list[i];                                            \ 
  120         list[n++] = list[i] + (((level & 1) ? pitch : 1) << ((level >> 1) + 1));\ 
  123 #define SVQ1_ADD_CODEBOOK()                                             \ 
  125     for (j = 0; j < stages; j++) {                                      \ 
  126         n3  = codebook[entries[j]] ^ 0x80808080;                        \ 
  127         n1 += (n3 & 0xFF00FF00) >> 8;                                   \ 
  128         n2 +=  n3 & 0x00FF00FF;                                         \ 
  132     if (n1 & 0xFF00FF00) {                                              \ 
  133         n3  = (n1 >> 15  & 0x00010001 | 0x01000100) - 0x00010001;       \ 
  135         n1 |= (~n1 >> 15 & 0x00010001 | 0x01000100) - 0x00010001;       \ 
  136         n1 &= n3 & 0x00FF00FF;                                          \ 
  139     if (n2 & 0xFF00FF00) {                                              \ 
  140         n3  = (n2 >> 15  & 0x00010001 | 0x01000100) - 0x00010001;       \ 
  142         n2 |= (~n2 >> 15 & 0x00010001 | 0x01000100) - 0x00010001;       \ 
  143         n2 &= n3 & 0x00FF00FF;                                          \ 
  146 #define SVQ1_CALC_CODEBOOK_ENTRIES(cbook)                               \ 
  147     codebook = (const uint32_t *)cbook[level];                          \ 
  149         bit_cache = get_bits(bitbuf, 4 * stages);                       \ 
  151     for (j = 0; j < stages; j++) {                                      \ 
  152         entries[j] = (((bit_cache >> (4 * (stages - j - 1))) & 0xF) +   \ 
  153                       16 * j) << (level + 1);                           \ 
  155     mean -= stages * 128;                                               \ 
  156     n4    = (mean << 16) + mean; 
  164     const uint32_t *codebook;
 
  170     uint32_t n1, n2, n3, n4;
 
  176     for (
i = 0, m = 1, n = 1, 
level = 5; 
i < n; 
i++) {
 
  180         dst    = (uint32_t *)
list[
i];
 
  188             for (y = 0; y < 
height; y++)
 
  189                 memset(&dst[y * (pitch / 4)], 0, 
width);
 
  193         if ((stages > 0 && 
level >= 4)) {
 
  195                     "Error (svq1_decode_block_intra): invalid vector: stages=%i level=%i\n",
 
  204             for (y = 0; y < 
height; y++)
 
  205                 memset(&dst[y * (pitch / 4)], mean, 
width);
 
  209             for (y = 0; y < 
height; y++) {
 
  210                 for (x = 0; x < 
width / 4; x++, codebook++) {
 
  215                     dst[x] = n1 << 8 | n2;
 
  231     const uint32_t *codebook;
 
  237     uint32_t n1, n2, n3, n4;
 
  243     for (
i = 0, m = 1, n = 1, 
level = 5; 
i < n; 
i++) {
 
  247         dst    = (uint32_t *)
list[
i];
 
  257         if ((stages > 0 && 
level >= 4)) {
 
  259                     "Error (svq1_decode_block_non_intra): invalid vector: stages=%i level=%i\n",
 
  269         for (y = 0; y < 
height; y++) {
 
  270             for (x = 0; x < 
width / 4; x++, codebook++) {
 
  273                 n1 = n4 + ((n3 & 0xFF00FF00) >> 8);
 
  274                 n2 = n4 +  (n3 & 0x00FF00FF);
 
  277                 dst[x] = n1 << 8 | n2;
 
  291     for (
i = 0; 
i < 2; 
i++) {
 
  312                             ptrdiff_t pitch, 
int x, 
int y)
 
  318     src = &previous[x + y * pitch];
 
  321     for (
i = 0; 
i < 16; 
i++) {
 
  322         memcpy(dst, 
src, 16);
 
  330                                    ptrdiff_t pitch, svq1_pmv *motion, 
int x, 
int y,
 
  345         pmv[1] = &motion[x / 8 + 2];
 
  346         pmv[2] = &motion[x / 8 + 4];
 
  354     motion[x / 8 + 2].x =
 
  355     motion[x / 8 + 3].x = 
mv.x;
 
  357     motion[x / 8 + 2].y =
 
  358     motion[x / 8 + 3].y = 
mv.y;
 
  360     mv.x = av_clip(
mv.x, -2 * x, 2 * (
width  - x - 16));
 
  361     mv.y = av_clip(
mv.y, -2 * y, 2 * (
height - y - 16));
 
  363     src = &previous[(x + (
mv.x >> 1)) + (y + (
mv.y >> 1)) * pitch];
 
  373                                       ptrdiff_t pitch, svq1_pmv *motion, 
int x, 
int y,
 
  388         pmv[1] = &motion[(x / 8) + 2];
 
  389         pmv[2] = &motion[(x / 8) + 4];
 
  402         pmv[1] = &motion[(x / 8) + 3];
 
  410     pmv[2] = &motion[(x / 8) + 1];
 
  417     pmv[2] = &motion[(x / 8) + 2];
 
  418     pmv[3] = &motion[(x / 8) + 3];
 
  425     for (
i = 0; 
i < 4; 
i++) {
 
  426         int mvx = pmv[
i]->x + (
i  & 1) * 16;
 
  427         int mvy = pmv[
i]->y + (
i >> 1) * 16;
 
  430         mvx = av_clip(mvx, -2 * x, 2 * (
width  - x - 8));
 
  431         mvy = av_clip(mvy, -2 * y, 2 * (
height - y - 8));
 
  433         src = &previous[(x + (mvx >> 1)) + (y + (mvy >> 1)) * pitch];
 
  440             current += 8 * (pitch - 1);
 
  451                                    ptrdiff_t pitch, svq1_pmv *motion, 
int x, 
int y,
 
  464         motion[x / 8 + 2].x =
 
  465         motion[x / 8 + 2].y =
 
  466         motion[x / 8 + 3].x =
 
  467         motion[x / 8 + 3].y = 0;
 
  470     switch (block_type) {
 
  480             ff_dlog(avctx, 
"Error in svq1_motion_inter_block %i\n", 
result);
 
  491             ff_dlog(avctx, 
"Error in svq1_motion_inter_4v_block %i\n", 
result);
 
  513     for (
i = 1; 
i <= 
out[0]; 
i++) {
 
  548         if (
s->frame_code == 0x50 || 
s->frame_code == 0x60) {
 
  553             ff_dlog(avctx, 
"%s checksum (%02x) for packet data\n",
 
  554                     (csum == 0) ? 
"correct" : 
"incorrect", csum);
 
  557         if ((
s->frame_code ^ 0x10) >= 0x50) {
 
  563                    "embedded message:\n%s\n", ((
char *)msg) + 1);
 
  571         frame_size_code = 
get_bits(bitbuf, 3);
 
  573         if (frame_size_code == 7) {
 
  617     int buf_size       = avpkt->
size;
 
  633     if ((
s->frame_code & ~0x70) || !(
s->frame_code & 0x60))
 
  637     if (
s->frame_code != 0x20) {
 
  640         if (buf_size < 9 * 4) {
 
  646                               &
s->pkt_swapped_allocated,
 
  651         memcpy(
s->pkt_swapped, buf, buf_size);
 
  652         buf = 
s->pkt_swapped;
 
  656         src = (uint32_t *)(
s->pkt_swapped + 4);
 
  658         for (
i = 0; 
i < 4; 
i++)
 
  664         ff_dlog(avctx, 
"Error in svq1_decode_frame_header %i\n", 
result);
 
  687     for (
i = 0; 
i < 3; 
i++) {
 
  699         current = cur->
data[
i];
 
  703             for (y = 0; y < 
height; y += 16) {
 
  704                 for (x = 0; x < 
width; x += 16) {
 
  709                                "Error in svq1_decode_block %i (keyframe)\n",
 
  714                 current += 16 * linesize;
 
  720                 s->prev->width != 
s->width || 
s->prev->height != 
s->height) {
 
  726             memset(pmv, 0, ((
width / 8) + 3) * 
sizeof(svq1_pmv));
 
  728             for (y = 0; y < 
height; y += 16) {
 
  729                 for (x = 0; x < 
width; x += 16) {
 
  736                                 "Error in svq1_decode_delta_block %i\n",
 
  745                 current += 16 * linesize;
 
  775     s->width            = avctx->
width  + 3 & ~3;
 
  776     s->height           = avctx->
height + 3 & ~3;
 
  789     for (
i = 0; 
i < 6; 
i++) {
 
  790         static const uint8_t sizes[2][6] = { { 14, 10, 14, 18, 16, 18 },
 
  791                                              { 10, 10, 14, 14, 14, 16 } };
 
  826     s->pkt_swapped_allocated = 0;