[svn] / branches / release-0_9_1-fixes / xvidcore / src / bitstream / vlc_codes.h Repository:
ViewVC logotype

Diff of /branches/release-0_9_1-fixes/xvidcore/src/bitstream/vlc_codes.h

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 464, Tue Sep 10 21:28:17 2002 UTC revision 764, Sun Jan 5 16:54:36 2003 UTC
# Line 1  Line 1 
1  /*****************************************************************************  /*****************************************************************************
2   *   *
3   *  XVID MPEG-4 VIDEO CODEC   *  XVID MPEG-4 VIDEO CODEC
4   *  - Vector Length Coding tables -   *  - Variable Length Coding tables -
5   *   *
6   *  Copyright(C) 2002 Michael Militzer   *  Copyright(C) 2002 Michael Militzer <isibaar@xvid.org>
7   *   *
8     *  This file is part of XviD, a free MPEG-4 video encoder/decoder
9   *   *
10   *  This program is an implementation of a part of one or more MPEG-4   *  XviD is free software; you can redistribute it and/or modify it
11   *  Video tools as specified in ISO/IEC 14496-2 standard.  Those intending   *  under the terms of the GNU General Public License as published by
  *  to use this software module in hardware or software products are  
  *  advised that its use may infringe existing patents or copyrights, and  
  *  any such use would be at such party's own risk.  The original  
  *  developer of this software module and his/her company, and subsequent  
  *  editors and their companies, will have no liability for use of this  
  *  software or modifications or derivatives thereof.  
  *  
  *  This program is free software; you can redistribute it and/or modify  
  *  it under the terms of the GNU General Public License as published by  
12   *  the Free Software Foundation; either version 2 of the License, or   *  the Free Software Foundation; either version 2 of the License, or
13   *  (at your option) any later version.   *  (at your option) any later version.
14   *   *
# Line 29  Line 21 
21   *  along with this program; if not, write to the Free Software   *  along with this program; if not, write to the Free Software
22   *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA   *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
23   *   *
24   * $Id: vlc_codes.h,v 1.10 2002-09-10 21:28:17 edgomez Exp $   *  Under section 8 of the GNU General Public License, the copyright
25     *  holders of XVID explicitly forbid distribution in the following
26     *  countries:
27     *
28     *    - Japan
29     *    - United States of America
30     *
31     *  Linking XviD statically or dynamically with other modules is making a
32     *  combined work based on XviD.  Thus, the terms and conditions of the
33     *  GNU General Public License cover the whole combination.
34     *
35     *  As a special exception, the copyright holders of XviD give you
36     *  permission to link XviD with independent modules that communicate with
37     *  XviD solely through the VFW1.1 and DShow interfaces, regardless of the
38     *  license terms of these independent modules, and to copy and distribute
39     *  the resulting combined work under terms of your choice, provided that
40     *  every copy of the combined work is accompanied by a complete copy of
41     *  the source code of XviD (the version of XviD used to produce the
42     *  combined work), being distributed under the terms of the GNU General
43     *  Public License plus this exception.  An independent module is a module
44     *  which is not derived from or based on XviD.
45     *
46     *  Note that people who make modified versions of XviD are not obligated
47     *  to grant this special exception for their modified versions; it is
48     *  their choice whether to do so.  The GNU General Public License gives
49     *  permission to release a modified version without this exception; this
50     *  exception also makes it possible to release a modified version which
51     *  carries forward this exception.
52     *
53     * $Id: vlc_codes.h,v 1.13 2003-01-05 16:54:36 edgomez Exp $
54   *   *
55   ****************************************************************************/   ****************************************************************************/
56    
# Line 40  Line 61 
61  #include "mbcoding.h"  #include "mbcoding.h"
62    
63  #define VLC_ERROR       (-1)  #define VLC_ERROR       (-1)
64  #define ESCAPE 7167  
65    #define ESCAPE  3
66    #define ESCAPE1 6
67    #define ESCAPE2 14
68    #define ESCAPE3 15
69    
70  /*****************************************************************************  /*****************************************************************************
71   * The Vector Length Coding structure   * The Vector Length Coding structure
# Line 49  Line 74 
74  typedef struct  typedef struct
75  {  {
76          uint32_t code;          uint32_t code;
77          int8_t len;          uint8_t len;
78  }  }
79  VLC;  VLC;
80    
81  static VLC *DCT3D[2];  typedef struct
82    {
83            uint8_t last;
84            uint8_t run;
85            int8_t level;
86    }
87    EVENT;
88    
89    typedef struct
90    {
91            uint8_t len;
92            EVENT event;
93    }
94    REVERSE_EVENT;
95    
96    typedef struct
97    {
98            VLC vlc;
99            EVENT event;
100    }
101    VLC_TABLE;
102    
103    
104  /*****************************************************************************  /*****************************************************************************
105   * common tables between encoder/decoder   * common tables between encoder/decoder
106   ****************************************************************************/   ****************************************************************************/
107    
108  /* constants taken from momusys/vm_common/inlcude/max_level.h */  static VLC_TABLE const coeff_tab[2][102] =
 static char const max_level[4][64] = {  
         /* intra, last = 0 */  
109          {          {
110           27, 10, 5, 4, 3, 3, 3, 3,          /* intra = 0 */
          2, 2, 1, 1, 1, 1, 1, 0,  
          0, 0, 0, 0, 0, 0, 0, 0,  
          0, 0, 0, 0, 0, 0, 0, 0,  
          0, 0, 0, 0, 0, 0, 0, 0,  
          0, 0, 0, 0, 0, 0, 0, 0,  
          0, 0, 0, 0, 0, 0, 0, 0,  
          0, 0, 0, 0, 0, 0, 0, 0  
          },  
   
         /* intra, last = 1 */  
111          {          {
112           8, 3, 2, 2, 2, 2, 2, 1,                  {{ 2,  2}, {0, 0, 1}},
113           1, 1, 1, 1, 1, 1, 1, 1,                  {{15,  4}, {0, 0, 2}},
114           1, 1, 1, 1, 1, 0, 0, 0,                  {{21,  6}, {0, 0, 3}},
115           0, 0, 0, 0, 0, 0, 0, 0,                  {{23,  7}, {0, 0, 4}},
116           0, 0, 0, 0, 0, 0, 0, 0,                  {{31,  8}, {0, 0, 5}},
117           0, 0, 0, 0, 0, 0, 0, 0,                  {{37,  9}, {0, 0, 6}},
118           0, 0, 0, 0, 0, 0, 0, 0,                  {{36,  9}, {0, 0, 7}},
119           0, 0, 0, 0, 0, 0, 0, 0                  {{33, 10}, {0, 0, 8}},
120                    {{32, 10}, {0, 0, 9}},
121                    {{ 7, 11}, {0, 0, 10}},
122                    {{ 6, 11}, {0, 0, 11}},
123                    {{32, 11}, {0, 0, 12}},
124                    {{ 6,  3}, {0, 1, 1}},
125                    {{20,  6}, {0, 1, 2}},
126                    {{30,  8}, {0, 1, 3}},
127                    {{15, 10}, {0, 1, 4}},
128                    {{33, 11}, {0, 1, 5}},
129                    {{80, 12}, {0, 1, 6}},
130                    {{14,  4}, {0, 2, 1}},
131                    {{29,  8}, {0, 2, 2}},
132                    {{14, 10}, {0, 2, 3}},
133                    {{81, 12}, {0, 2, 4}},
134                    {{13,  5}, {0, 3, 1}},
135                    {{35,  9}, {0, 3, 2}},
136                    {{13, 10}, {0, 3, 3}},
137                    {{12,  5}, {0, 4, 1}},
138                    {{34,  9}, {0, 4, 2}},
139                    {{82, 12}, {0, 4, 3}},
140                    {{11,  5}, {0, 5, 1}},
141                    {{12, 10}, {0, 5, 2}},
142                    {{83, 12}, {0, 5, 3}},
143                    {{19,  6}, {0, 6, 1}},
144                    {{11, 10}, {0, 6, 2}},
145                    {{84, 12}, {0, 6, 3}},
146                    {{18,  6}, {0, 7, 1}},
147                    {{10, 10}, {0, 7, 2}},
148                    {{17,  6}, {0, 8, 1}},
149                    {{ 9, 10}, {0, 8, 2}},
150                    {{16,  6}, {0, 9, 1}},
151                    {{ 8, 10}, {0, 9, 2}},
152                    {{22,  7}, {0, 10, 1}},
153                    {{85, 12}, {0, 10, 2}},
154                    {{21,  7}, {0, 11, 1}},
155                    {{20,  7}, {0, 12, 1}},
156                    {{28,  8}, {0, 13, 1}},
157                    {{27,  8}, {0, 14, 1}},
158                    {{33,  9}, {0, 15, 1}},
159                    {{32,  9}, {0, 16, 1}},
160                    {{31,  9}, {0, 17, 1}},
161                    {{30,  9}, {0, 18, 1}},
162                    {{29,  9}, {0, 19, 1}},
163                    {{28,  9}, {0, 20, 1}},
164                    {{27,  9}, {0, 21, 1}},
165                    {{26,  9}, {0, 22, 1}},
166                    {{34, 11}, {0, 23, 1}},
167                    {{35, 11}, {0, 24, 1}},
168                    {{86, 12}, {0, 25, 1}},
169                    {{87, 12}, {0, 26, 1}},
170                    {{ 7,  4}, {1, 0, 1}},
171                    {{25,  9}, {1, 0, 2}},
172                    {{ 5, 11}, {1, 0, 3}},
173                    {{15,  6}, {1, 1, 1}},
174                    {{ 4, 11}, {1, 1, 2}},
175                    {{14,  6}, {1, 2, 1}},
176                    {{13,  6}, {1, 3, 1}},
177                    {{12,  6}, {1, 4, 1}},
178                    {{19,  7}, {1, 5, 1}},
179                    {{18,  7}, {1, 6, 1}},
180                    {{17,  7}, {1, 7, 1}},
181                    {{16,  7}, {1, 8, 1}},
182                    {{26,  8}, {1, 9, 1}},
183                    {{25,  8}, {1, 10, 1}},
184                    {{24,  8}, {1, 11, 1}},
185                    {{23,  8}, {1, 12, 1}},
186                    {{22,  8}, {1, 13, 1}},
187                    {{21,  8}, {1, 14, 1}},
188                    {{20,  8}, {1, 15, 1}},
189                    {{19,  8}, {1, 16, 1}},
190                    {{24,  9}, {1, 17, 1}},
191                    {{23,  9}, {1, 18, 1}},
192                    {{22,  9}, {1, 19, 1}},
193                    {{21,  9}, {1, 20, 1}},
194                    {{20,  9}, {1, 21, 1}},
195                    {{19,  9}, {1, 22, 1}},
196                    {{18,  9}, {1, 23, 1}},
197                    {{17,  9}, {1, 24, 1}},
198                    {{ 7, 10}, {1, 25, 1}},
199                    {{ 6, 10}, {1, 26, 1}},
200                    {{ 5, 10}, {1, 27, 1}},
201                    {{ 4, 10}, {1, 28, 1}},
202                    {{36, 11}, {1, 29, 1}},
203                    {{37, 11}, {1, 30, 1}},
204                    {{38, 11}, {1, 31, 1}},
205                    {{39, 11}, {1, 32, 1}},
206                    {{88, 12}, {1, 33, 1}},
207                    {{89, 12}, {1, 34, 1}},
208                    {{90, 12}, {1, 35, 1}},
209                    {{91, 12}, {1, 36, 1}},
210                    {{92, 12}, {1, 37, 1}},
211                    {{93, 12}, {1, 38, 1}},
212                    {{94, 12}, {1, 39, 1}},
213                    {{95, 12}, {1, 40, 1}}
214           },           },
215            /* intra = 1 */
216            {
217                    {{ 2,  2}, {0, 0, 1}},
218                    {{15,  4}, {0, 0, 3}},
219                    {{21,  6}, {0, 0, 6}},
220                    {{23,  7}, {0, 0, 9}},
221                    {{31,  8}, {0, 0, 10}},
222                    {{37,  9}, {0, 0, 13}},
223                    {{36,  9}, {0, 0, 14}},
224                    {{33, 10}, {0, 0, 17}},
225                    {{32, 10}, {0, 0, 18}},
226                    {{ 7, 11}, {0, 0, 21}},
227                    {{ 6, 11}, {0, 0, 22}},
228                    {{32, 11}, {0, 0, 23}},
229                    {{ 6,  3}, {0, 0, 2}},
230                    {{20,  6}, {0, 1, 2}},
231                    {{30,  8}, {0, 0, 11}},
232                    {{15, 10}, {0, 0, 19}},
233                    {{33, 11}, {0, 0, 24}},
234                    {{80, 12}, {0, 0, 25}},
235                    {{14,  4}, {0, 1, 1}},
236                    {{29,  8}, {0, 0, 12}},
237                    {{14, 10}, {0, 0, 20}},
238                    {{81, 12}, {0, 0, 26}},
239                    {{13,  5}, {0, 0, 4}},
240                    {{35,  9}, {0, 0, 15}},
241                    {{13, 10}, {0, 1, 7}},
242                    {{12,  5}, {0, 0, 5}},
243                    {{34,  9}, {0, 4, 2}},
244                    {{82, 12}, {0, 0, 27}},
245                    {{11,  5}, {0, 2, 1}},
246                    {{12, 10}, {0, 2, 4}},
247                    {{83, 12}, {0, 1, 9}},
248                    {{19,  6}, {0, 0, 7}},
249                    {{11, 10}, {0, 3, 4}},
250                    {{84, 12}, {0, 6, 3}},
251                    {{18,  6}, {0, 0, 8}},
252                    {{10, 10}, {0, 4, 3}},
253                    {{17,  6}, {0, 3, 1}},
254                    {{ 9, 10}, {0, 8, 2}},
255                    {{16,  6}, {0, 4, 1}},
256                    {{ 8, 10}, {0, 5, 3}},
257                    {{22,  7}, {0, 1, 3}},
258                    {{85, 12}, {0, 1, 10}},
259                    {{21,  7}, {0, 2, 2}},
260                    {{20,  7}, {0, 7, 1}},
261                    {{28,  8}, {0, 1, 4}},
262                    {{27,  8}, {0, 3, 2}},
263                    {{33,  9}, {0, 0, 16}},
264                    {{32,  9}, {0, 1, 5}},
265                    {{31,  9}, {0, 1, 6}},
266                    {{30,  9}, {0, 2, 3}},
267                    {{29,  9}, {0, 3, 3}},
268                    {{28,  9}, {0, 5, 2}},
269                    {{27,  9}, {0, 6, 2}},
270                    {{26,  9}, {0, 7, 2}},
271                    {{34, 11}, {0, 1, 8}},
272                    {{35, 11}, {0, 9, 2}},
273                    {{86, 12}, {0, 2, 5}},
274                    {{87, 12}, {0, 7, 3}},
275                    {{ 7,  4}, {1, 0, 1}},
276                    {{25,  9}, {0, 11, 1}},
277                    {{ 5, 11}, {1, 0, 6}},
278                    {{15,  6}, {1, 1, 1}},
279                    {{ 4, 11}, {1, 0, 7}},
280                    {{14,  6}, {1, 2, 1}},
281                    {{13,  6}, {0, 5, 1}},
282                    {{12,  6}, {1, 0, 2}},
283                    {{19,  7}, {1, 5, 1}},
284                    {{18,  7}, {0, 6, 1}},
285                    {{17,  7}, {1, 3, 1}},
286                    {{16,  7}, {1, 4, 1}},
287                    {{26,  8}, {1, 9, 1}},
288                    {{25,  8}, {0, 8, 1}},
289                    {{24,  8}, {0, 9, 1}},
290                    {{23,  8}, {0, 10, 1}},
291                    {{22,  8}, {1, 0, 3}},
292                    {{21,  8}, {1, 6, 1}},
293                    {{20,  8}, {1, 7, 1}},
294                    {{19,  8}, {1, 8, 1}},
295                    {{24,  9}, {0, 12, 1}},
296                    {{23,  9}, {1, 0, 4}},
297                    {{22,  9}, {1, 1, 2}},
298                    {{21,  9}, {1, 10, 1}},
299                    {{20,  9}, {1, 11, 1}},
300                    {{19,  9}, {1, 12, 1}},
301                    {{18,  9}, {1, 13, 1}},
302                    {{17,  9}, {1, 14, 1}},
303                    {{ 7, 10}, {0, 13, 1}},
304                    {{ 6, 10}, {1, 0, 5}},
305                    {{ 5, 10}, {1, 1, 3}},
306                    {{ 4, 10}, {1, 2, 2}},
307                    {{36, 11}, {1, 3, 2}},
308                    {{37, 11}, {1, 4, 2}},
309                    {{38, 11}, {1, 15, 1}},
310                    {{39, 11}, {1, 16, 1}},
311                    {{88, 12}, {0, 14, 1}},
312                    {{89, 12}, {1, 0, 8}},
313                    {{90, 12}, {1, 5, 2}},
314                    {{91, 12}, {1, 6, 2}},
315                    {{92, 12}, {1, 17, 1}},
316                    {{93, 12}, {1, 18, 1}},
317                    {{94, 12}, {1, 19, 1}},
318                    {{95, 12}, {1, 20, 1}}
319            }
320    };
321    
322          /* inter, last = 0 */  /* constants taken from momusys/vm_common/inlcude/max_level.h */
323    static uint8_t const max_level[2][2][64] = {
324            {
325                    /* intra = 0, last = 0 */
326          {          {
327           12, 6, 4, 3, 3, 3, 3, 2,           12, 6, 4, 3, 3, 3, 3, 2,
328           2, 2, 2, 1, 1, 1, 1, 1,           2, 2, 2, 1, 1, 1, 1, 1,
# Line 97  Line 333 
333           0, 0, 0, 0, 0, 0, 0, 0,           0, 0, 0, 0, 0, 0, 0, 0,
334           0, 0, 0, 0, 0, 0, 0, 0           0, 0, 0, 0, 0, 0, 0, 0
335           },           },
336                    /* intra = 0, last = 1 */
         /* inter, last = 1 */  
337          {          {
338           3, 2, 1, 1, 1, 1, 1, 1,           3, 2, 1, 1, 1, 1, 1, 1,
339           1, 1, 1, 1, 1, 1, 1, 1,           1, 1, 1, 1, 1, 1, 1, 1,
# Line 109  Line 344 
344           0, 0, 0, 0, 0, 0, 0, 0,           0, 0, 0, 0, 0, 0, 0, 0,
345           0, 0, 0, 0, 0, 0, 0, 0           0, 0, 0, 0, 0, 0, 0, 0
346           }           }
347  };          },
   
 static char const max_run[4][256] = {  
         /* intra, last = 0 */  
348          {          {
349           0, 14, 9, 7, 3, 2, 1, 1,                  /* intra = 1, last = 0 */
350           1, 1, 1, 0, 0, 0, 0, 0,                  {
351           0, 0, 0, 0, 0, 0, 0, 0,                          27, 10, 5, 4, 3, 3, 3, 3,
352           0, 0, 0, 0, 0, 0, 0, 0,                          2, 2, 1, 1, 1, 1, 1, 0,
          0, 0, 0, 0, 0, 0, 0, 0,  
          0, 0, 0, 0, 0, 0, 0, 0,  
          0, 0, 0, 0, 0, 0, 0, 0,  
          0, 0, 0, 0, 0, 0, 0, 0,  
          0, 0, 0, 0, 0, 0, 0, 0,  
          0, 0, 0, 0, 0, 0, 0, 0,  
          0, 0, 0, 0, 0, 0, 0, 0,  
          0, 0, 0, 0, 0, 0, 0, 0,  
          0, 0, 0, 0, 0, 0, 0, 0,  
          0, 0, 0, 0, 0, 0, 0, 0,  
          0, 0, 0, 0, 0, 0, 0, 0,  
          0, 0, 0, 0, 0, 0, 0, 0,  
          0, 0, 0, 0, 0, 0, 0, 0,  
          0, 0, 0, 0, 0, 0, 0, 0,  
          0, 0, 0, 0, 0, 0, 0, 0,  
          0, 0, 0, 0, 0, 0, 0, 0,  
          0, 0, 0, 0, 0, 0, 0, 0,  
          0, 0, 0, 0, 0, 0, 0, 0,  
          0, 0, 0, 0, 0, 0, 0, 0,  
          0, 0, 0, 0, 0, 0, 0, 0,  
          0, 0, 0, 0, 0, 0, 0, 0,  
          0, 0, 0, 0, 0, 0, 0, 0,  
353           0, 0, 0, 0, 0, 0, 0, 0,           0, 0, 0, 0, 0, 0, 0, 0,
354           0, 0, 0, 0, 0, 0, 0, 0,           0, 0, 0, 0, 0, 0, 0, 0,
355           0, 0, 0, 0, 0, 0, 0, 0,           0, 0, 0, 0, 0, 0, 0, 0,
# Line 147  Line 357 
357           0, 0, 0, 0, 0, 0, 0, 0,           0, 0, 0, 0, 0, 0, 0, 0,
358           0, 0, 0, 0, 0, 0, 0, 0           0, 0, 0, 0, 0, 0, 0, 0
359           },           },
360                    /* intra = 1, last = 1 */
         /* intra, last = 1 */  
361          {          {
362           0, 20, 6, 1, 0, 0, 0, 0,                          8, 3, 2, 2, 2, 2, 2, 1,
363           0, 0, 0, 0, 0, 0, 0, 0,                          1, 1, 1, 1, 1, 1, 1, 1,
364           0, 0, 0, 0, 0, 0, 0, 0,                          1, 1, 1, 1, 1, 0, 0, 0,
          0, 0, 0, 0, 0, 0, 0, 0,  
          0, 0, 0, 0, 0, 0, 0, 0,  
          0, 0, 0, 0, 0, 0, 0, 0,  
          0, 0, 0, 0, 0, 0, 0, 0,  
          0, 0, 0, 0, 0, 0, 0, 0,  
          0, 0, 0, 0, 0, 0, 0, 0,  
          0, 0, 0, 0, 0, 0, 0, 0,  
          0, 0, 0, 0, 0, 0, 0, 0,  
          0, 0, 0, 0, 0, 0, 0, 0,  
          0, 0, 0, 0, 0, 0, 0, 0,  
          0, 0, 0, 0, 0, 0, 0, 0,  
          0, 0, 0, 0, 0, 0, 0, 0,  
          0, 0, 0, 0, 0, 0, 0, 0,  
          0, 0, 0, 0, 0, 0, 0, 0,  
          0, 0, 0, 0, 0, 0, 0, 0,  
          0, 0, 0, 0, 0, 0, 0, 0,  
          0, 0, 0, 0, 0, 0, 0, 0,  
          0, 0, 0, 0, 0, 0, 0, 0,  
          0, 0, 0, 0, 0, 0, 0, 0,  
          0, 0, 0, 0, 0, 0, 0, 0,  
          0, 0, 0, 0, 0, 0, 0, 0,  
          0, 0, 0, 0, 0, 0, 0, 0,  
          0, 0, 0, 0, 0, 0, 0, 0,  
          0, 0, 0, 0, 0, 0, 0, 0,  
365           0, 0, 0, 0, 0, 0, 0, 0,           0, 0, 0, 0, 0, 0, 0, 0,
366           0, 0, 0, 0, 0, 0, 0, 0,           0, 0, 0, 0, 0, 0, 0, 0,
367           0, 0, 0, 0, 0, 0, 0, 0,           0, 0, 0, 0, 0, 0, 0, 0,
368           0, 0, 0, 0, 0, 0, 0, 0,           0, 0, 0, 0, 0, 0, 0, 0,
369           0, 0, 0, 0, 0, 0, 0, 0           0, 0, 0, 0, 0, 0, 0, 0
370           },                  }
371            }
372    };
373    
374          /* inter, last = 0 */  static uint8_t const max_run[2][2][64] = {
375            {
376                    /* intra = 0, last = 0 */
377          {          {
378           0, 26, 10, 6, 2, 1, 1, 0,           0, 26, 10, 6, 2, 1, 1, 0,
379           0, 0, 0, 0, 0, 0, 0, 0,           0, 0, 0, 0, 0, 0, 0, 0,
# Line 194  Line 383 
383           0, 0, 0, 0, 0, 0, 0, 0,           0, 0, 0, 0, 0, 0, 0, 0,
384           0, 0, 0, 0, 0, 0, 0, 0,           0, 0, 0, 0, 0, 0, 0, 0,
385           0, 0, 0, 0, 0, 0, 0, 0,           0, 0, 0, 0, 0, 0, 0, 0,
          0, 0, 0, 0, 0, 0, 0, 0,  
          0, 0, 0, 0, 0, 0, 0, 0,  
          0, 0, 0, 0, 0, 0, 0, 0,  
          0, 0, 0, 0, 0, 0, 0, 0,  
          0, 0, 0, 0, 0, 0, 0, 0,  
          0, 0, 0, 0, 0, 0, 0, 0,  
          0, 0, 0, 0, 0, 0, 0, 0,  
          0, 0, 0, 0, 0, 0, 0, 0,  
          0, 0, 0, 0, 0, 0, 0, 0,  
          0, 0, 0, 0, 0, 0, 0, 0,  
          0, 0, 0, 0, 0, 0, 0, 0,  
          0, 0, 0, 0, 0, 0, 0, 0,  
          0, 0, 0, 0, 0, 0, 0, 0,  
          0, 0, 0, 0, 0, 0, 0, 0,  
          0, 0, 0, 0, 0, 0, 0, 0,  
          0, 0, 0, 0, 0, 0, 0, 0,  
          0, 0, 0, 0, 0, 0, 0, 0,  
          0, 0, 0, 0, 0, 0, 0, 0,  
          0, 0, 0, 0, 0, 0, 0, 0,  
          0, 0, 0, 0, 0, 0, 0, 0,  
          0, 0, 0, 0, 0, 0, 0, 0,  
          0, 0, 0, 0, 0, 0, 0, 0,  
          0, 0, 0, 0, 0, 0, 0, 0,  
          0, 0, 0, 0, 0, 0, 0, 0  
386           },           },
387                    /* intra = 0, last = 1 */
         /* inter, last = 1 */  
388          {          {
389           0, 40, 1, 0, 0, 0, 0, 0,           0, 40, 1, 0, 0, 0, 0, 0,
390           0, 0, 0, 0, 0, 0, 0, 0,           0, 0, 0, 0, 0, 0, 0, 0,
# Line 230  Line 394 
394           0, 0, 0, 0, 0, 0, 0, 0,           0, 0, 0, 0, 0, 0, 0, 0,
395           0, 0, 0, 0, 0, 0, 0, 0,           0, 0, 0, 0, 0, 0, 0, 0,
396           0, 0, 0, 0, 0, 0, 0, 0,           0, 0, 0, 0, 0, 0, 0, 0,
397                    }
398            },
399            {
400                    /* intra = 1, last = 0 */
401                    {
402                            0, 14, 9, 7, 3, 2, 1, 1,
403                            1, 1, 1, 0, 0, 0, 0, 0,
404           0, 0, 0, 0, 0, 0, 0, 0,           0, 0, 0, 0, 0, 0, 0, 0,
405           0, 0, 0, 0, 0, 0, 0, 0,           0, 0, 0, 0, 0, 0, 0, 0,
406           0, 0, 0, 0, 0, 0, 0, 0,           0, 0, 0, 0, 0, 0, 0, 0,
407           0, 0, 0, 0, 0, 0, 0, 0,           0, 0, 0, 0, 0, 0, 0, 0,
408           0, 0, 0, 0, 0, 0, 0, 0,           0, 0, 0, 0, 0, 0, 0, 0,
409           0, 0, 0, 0, 0, 0, 0, 0,           0, 0, 0, 0, 0, 0, 0, 0,
410                    },
411                    /* intra = 1, last = 1 */
412                    {
413                            0, 20, 6, 1, 0, 0, 0, 0,
414           0, 0, 0, 0, 0, 0, 0, 0,           0, 0, 0, 0, 0, 0, 0, 0,
415           0, 0, 0, 0, 0, 0, 0, 0,           0, 0, 0, 0, 0, 0, 0, 0,
416           0, 0, 0, 0, 0, 0, 0, 0,           0, 0, 0, 0, 0, 0, 0, 0,
# Line 243  Line 418 
418           0, 0, 0, 0, 0, 0, 0, 0,           0, 0, 0, 0, 0, 0, 0, 0,
419           0, 0, 0, 0, 0, 0, 0, 0,           0, 0, 0, 0, 0, 0, 0, 0,
420           0, 0, 0, 0, 0, 0, 0, 0,           0, 0, 0, 0, 0, 0, 0, 0,
421           0, 0, 0, 0, 0, 0, 0, 0,                  }
          0, 0, 0, 0, 0, 0, 0, 0,  
          0, 0, 0, 0, 0, 0, 0, 0,  
          0, 0, 0, 0, 0, 0, 0, 0,  
          0, 0, 0, 0, 0, 0, 0, 0,  
          0, 0, 0, 0, 0, 0, 0, 0,  
          0, 0, 0, 0, 0, 0, 0, 0,  
          0, 0, 0, 0, 0, 0, 0, 0,  
          0, 0, 0, 0, 0, 0, 0, 0,  
          0, 0, 0, 0, 0, 0, 0, 0,  
          0, 0, 0, 0, 0, 0, 0, 0  
422           }           }
423  };  };
424    
# Line 262  Line 427 
427   * encoder tables                                                 *   * encoder tables                                                 *
428   ******************************************************************/   ******************************************************************/
429    
 /* DCT coefficients. Four tables, two for last = 0, two for last = 1.  
    the sign bit must be added afterwards. */  
   
 /* first part of coeffs for last = 0. Indexed by [run][level-1] */  
   
 static VLC const coeff_tab0[2][12] = {  
         /* run = 0  */  
         {  
                 {0x02, 2},  {0x0f, 4},  {0x15, 6},  {0x17, 7},  
                 {0x1f, 8},  {0x25, 9},  {0x24, 9},  {0x21, 10},  
                 {0x20, 10}, {0x07, 11}, {0x06, 11}, {0x20, 11}  
         },  
   
         /* run = 1 */  
         {  
                 {0x06, 3},  {0x14, 6},  {0x1e, 8}, {0x0f, 10},  
                 {0x21, 11}, {0x50, 12}, {0x00, 0}, {0x00, 0},  
                 {0x00, 0},  {0x00, 0},  {0x00, 0}, {0x00, 0}  
         }  
 };  
   
 /* rest of coeffs for last = 0. indexing by [run-2][level-1] */  
   
 static VLC const coeff_tab1[25][4] = {  
         /* First row is run=2, then each row is run 2 + index */  
         {{0x0e, 4}, {0x1d, 8}, {0x0e, 10}, {0x51, 12}},  
         {{0x0d, 5}, {0x23, 9},  {0x0d, 10}, {0x00, 0}},  
         {{0x0c, 5}, {0x22, 9},  {0x52, 12}, {0x00, 0}},  
         {{0x0b, 5}, {0x0c, 10}, {0x53, 12}, {0x00, 0}},  
         {{0x13, 6}, {0x0b, 10}, {0x54, 12}, {0x00, 0}},  
         {{0x12, 6}, {0x0a, 10}, {0x00, 0},  {0x00, 0}},  
         {{0x11, 6}, {0x09, 10}, {0x00, 0},  {0x00, 0}},  
         {{0x10, 6}, {0x08, 10}, {0x00, 0},  {0x00, 0}},  
         {{0x16, 7}, {0x55, 12}, {0x00, 0},  {0x00, 0}},  
         {{0x15, 7}, {0x00, 0},  {0x00, 0},  {0x00, 0}},  
         {{0x14, 7}, {0x00, 0},  {0x00, 0},  {0x00, 0}},  
         {{0x1c, 8}, {0x00, 0},  {0x00, 0},  {0x00, 0}},  
         {{0x1b, 8}, {0x00, 0},  {0x00, 0},  {0x00, 0}},  
         {{0x21, 9}, {0x00, 0},  {0x00, 0},  {0x00, 0}},  
         {{0x20, 9}, {0x00, 0},  {0x00, 0},  {0x00, 0}},  
         {{0x1f, 9}, {0x00, 0},  {0x00, 0},  {0x00, 0}},  
         {{0x1e, 9}, {0x00, 0},  {0x00, 0},  {0x00, 0}},  
         {{0x1d, 9}, {0x00, 0},  {0x00, 0},  {0x00, 0}},  
         {{0x1c, 9}, {0x00, 0},  {0x00, 0},  {0x00, 0}},  
         {{0x1b, 9}, {0x00, 0},  {0x00, 0},  {0x00, 0}},  
         {{0x1a, 9}, {0x00, 0},  {0x00, 0},  {0x00, 0}},  
         {{0x22, 11}, {0x00, 0}, {0x00, 0},  {0x00, 0}},  
         {{0x23, 11}, {0x00, 0}, {0x00, 0},  {0x00, 0}},  
         {{0x56, 12}, {0x00, 0}, {0x00, 0},  {0x00, 0}},  
         {{0x57, 12}, {0x00, 0}, {0x00, 0},  {0x00, 0}}  
   
 };  
   
 /* first coeffs of last = 1. indexing by [run][level-1] */  
   
 static VLC const coeff_tab2[2][3] = {  
         /*  run = 0 */  
         {{0x07, 4}, {0x19, 9},  {0x05, 11}},  
         /* run = 1 */  
         {{0x0f, 6}, {0x04, 11}, {0x00, 0}}  
 };  
   
 /* rest of coeffs for last = 1. indexing by [run-2] */  
   
 static VLC const coeff_tab3[40][1] = {  
         {{0x0e, 6}},  {{0x0d, 6}},  {{0x0c, 6}},  {{0x13, 7}},  
         {{0x12, 7}},  {{0x11, 7}},  {{0x10, 7}},  {{0x1a, 8}},  
         {{0x19, 8}},  {{0x18, 8}},  {{0x17, 8}},  {{0x16, 8}},  
         {{0x15, 8}},  {{0x14, 8}},  {{0x13, 8}},  {{0x18, 9}},  
         {{0x17, 9}},  {{0x16, 9}},  {{0x15, 9}},  {{0x14, 9}},  
         {{0x13, 9}},  {{0x12, 9}},  {{0x11, 9}},  {{0x07, 10}},  
         {{0x06, 10}}, {{0x05, 10}}, {{0x04, 10}}, {{0x24, 11}},  
         {{0x25, 11}}, {{0x26, 11}}, {{0x27, 11}}, {{0x58, 12}},  
         {{0x59, 12}}, {{0x5a, 12}}, {{0x5b, 12}}, {{0x5c, 12}},  
         {{0x5d, 12}}, {{0x5e, 12}}, {{0x5f, 12}}, {{0x00, 0}}  
 };  
   
 /*  
  * New tables for Intra luminance coefficients. Same codewords,  
  * different meaning  
  */  
   
 /* Coeffs for last = 0, run = 0. Indexed by [level-1] */  
   
 static VLC const coeff_tab4[27] = {  
         /* run = 0 */  
         {0x02, 2},  {0x06, 3},  {0x0f, 4},  
         {0x0d, 5},  {0x0c, 5},  {0x15, 6},  
         {0x13, 6},  {0x12, 6},  {0x17, 7},  
         {0x1f, 8},  {0x1e, 8},  {0x1d, 8},  
         {0x25, 9},  {0x24, 9},  {0x23, 9},  
         {0x21, 9},  {0x21, 10}, {0x20, 10},  
         {0x0f, 10}, {0x0e, 10}, {0x07, 11},  
         {0x06, 11}, {0x20, 11}, {0x21, 11},  
         {0x50, 12}, {0x51, 12}, {0x52, 12}  
 };  
   
 /* Coeffs for last = 0, run = 1. Indexed by [level-1] */  
   
 static VLC const coeff_tab5[10] = {  
         {0x0e, 4}, {0x14, 6},  {0x16, 7},  {0x1c, 8},  {0x20, 9},  
         {0x1f, 9}, {0x0d, 10}, {0x22, 11}, {0x53, 12}, {0x55, 12}  
 };  
   
 /* Coeffs for last = 0, run = 2 -> 9. Indexed by [run-2][level-1] */  
   
 static VLC coeff_tab6[8][5] = {  
         /* run = 2 */  
         {{0x0b, 5}, {0x15, 7}, {0x1e, 9}, {0x0c, 10}, {0x56, 12}},  
   
         /* run = 3 */  
         {{0x11, 6}, {0x1b, 8}, {0x1d, 9}, {0x0b, 10}, {0x00, 0}},  
   
         /* run = 4 */  
         {{0x10, 6}, {0x22, 9}, {0x0a, 10}, {0x00, 0}, {0x00, 0}},  
   
         /* run = 5 */  
         {{0x0d, 6}, {0x1c, 9}, {0x08, 10}, {0x00, 0}, {0x00, 0}},  
   
         /* run = 6 */  
         {{0x12, 7}, {0x1b, 9}, {0x54, 12}, {0x00, 0}, {0x00, 0}},  
   
         /* run = 7 */  
         {{0x14, 7}, {0x1a, 9}, {0x57, 12}, {0x00, 0}, {0x00, 0}},  
   
         /* run = 8 */  
         {{0x19, 8}, {0x09, 10}, {0x00, 0}, {0x00, 0}, {0x00, 0}},  
   
         /* run = 9 */  
         {{0x18, 8}, {0x23, 11}, {0x00, 0}, {0x00, 0}, {0x00, 0}}  
 };  
   
 /* Coeffs for last = 0, run = 10 -> 14. Indexed by [run-10] */  
   
 static VLC const coeff_tab7[5][1] = {  
         {{0x17, 8}},  
         {{0x19, 9}},  
         {{0x18, 9}},  
         {{0x07, 10}},  
         {{0x58, 12}}  
 };  
   
 /* Coeffs for last = 1, run = 0. Indexed by [level-1] */  
   
 static VLC const coeff_tab8[8] = {  
         {0x07, 4},  {0x0c, 6},  {0x16, 8},  {0x17, 9},  
         {0x06, 10}, {0x05, 11}, {0x04, 11}, {0x59, 12}  
 };  
   
 /* Coeffs for last = 1, run = 1 -> 6. Indexed by [run-1][level-1] */  
   
 static VLC const coeff_tab9[6][3] = {  
         /* run = 1 */  
         {{0x0f, 6}, {0x16, 9}, {0x05, 10}},  
   
         /* run = 2 */  
         {{0x0e, 6}, {0x04, 10}, {0x00, 0}},  
   
         /* run = 3 */  
         {{0x11, 7}, {0x24, 11}, {0x00, 0}},  
   
         /* run = 4 */  
         {{0x10, 7}, {0x25, 11}, {0x00, 0}},  
   
         /* run = 5 */  
         {{0x13, 7}, {0x5a, 12}, {0x00, 0}},  
   
         /* run = 6 */  
         {{0x15, 8}, {0x5b, 12}, {0x00, 0}}  
 };  
   
 /* Coeffs for last = 1, run = 7 -> 20. Indexed by [run-7] */  
   
 static VLC const coeff_tab10[14][1] = {  
         {{0x14, 8}},  
         {{0x13, 8}},  
         {{0x1a, 8}},  
         {{0x15, 9}},  
         {{0x14, 9}},  
         {{0x13, 9}},  
         {{0x12, 9}},  
         {{0x11, 9}},  
         {{0x26, 11}},  
         {{0x27, 11}},  
         {{0x5c, 12}},  
         {{0x5d, 12}},  
         {{0x5e, 12}},  
         {{0x5f, 12}}  
 };  
   
   
 static VLC const *coeff_intra_last0[15] = {  
         coeff_tab4,  
         coeff_tab5,  
         coeff_tab6[0],  
         coeff_tab6[1],  
         coeff_tab6[2],  
         coeff_tab6[3],  
         coeff_tab6[4],  
         coeff_tab6[5],  
         coeff_tab6[6],  
         coeff_tab6[7],  
         coeff_tab7[0],  
         coeff_tab7[1],  
         coeff_tab7[2],  
         coeff_tab7[3],  
         coeff_tab7[4]  
 };  
   
 static VLC const *coeff_intra_last1[21] = {  
         coeff_tab8,  
         coeff_tab9[0],  
         coeff_tab9[1],  
         coeff_tab9[2],  
         coeff_tab9[3],  
         coeff_tab9[4],  
         coeff_tab9[5],  
         coeff_tab10[0],  
         coeff_tab10[1],  
         coeff_tab10[2],  
         coeff_tab10[3],  
         coeff_tab10[4],  
         coeff_tab10[5],  
         coeff_tab10[6],  
         coeff_tab10[7],  
         coeff_tab10[8],  
         coeff_tab10[9],  
         coeff_tab10[10],  
         coeff_tab10[11],  
         coeff_tab10[12],  
         coeff_tab10[13],  
 };  
   
 static VLC const *coeff_inter_last0[27] = {  
         coeff_tab0[0],  
         coeff_tab0[1],  
         coeff_tab1[0],  
         coeff_tab1[1],  
         coeff_tab1[2],  
         coeff_tab1[3],  
         coeff_tab1[4],  
         coeff_tab1[5],  
         coeff_tab1[6],  
         coeff_tab1[7],  
         coeff_tab1[8],  
         coeff_tab1[9],  
         coeff_tab1[10],  
         coeff_tab1[11],  
         coeff_tab1[12],  
         coeff_tab1[13],  
         coeff_tab1[14],  
         coeff_tab1[15],  
         coeff_tab1[16],  
         coeff_tab1[17],  
         coeff_tab1[18],  
         coeff_tab1[19],  
         coeff_tab1[20],  
         coeff_tab1[21],  
         coeff_tab1[22],  
         coeff_tab1[23],  
         coeff_tab1[24],  
 };  
   
 static VLC const *coeff_inter_last1[42] = {  
         coeff_tab2[0],  
         coeff_tab2[1],  
         coeff_tab3[0],  
         coeff_tab3[1],  
         coeff_tab3[2],  
         coeff_tab3[3],  
         coeff_tab3[4],  
         coeff_tab3[5],  
         coeff_tab3[6],  
         coeff_tab3[7],  
         coeff_tab3[8],  
         coeff_tab3[9],  
         coeff_tab3[10],  
         coeff_tab3[11],  
         coeff_tab3[12],  
         coeff_tab3[13],  
         coeff_tab3[14],  
         coeff_tab3[15],  
         coeff_tab3[16],  
         coeff_tab3[17],  
         coeff_tab3[18],  
         coeff_tab3[19],  
         coeff_tab3[20],  
         coeff_tab3[21],  
         coeff_tab3[22],  
         coeff_tab3[23],  
         coeff_tab3[24],  
         coeff_tab3[25],  
         coeff_tab3[26],  
         coeff_tab3[27],  
         coeff_tab3[28],  
         coeff_tab3[29],  
         coeff_tab3[30],  
         coeff_tab3[31],  
         coeff_tab3[32],  
         coeff_tab3[33],  
         coeff_tab3[34],  
         coeff_tab3[35],  
         coeff_tab3[36],  
         coeff_tab3[37],  
         coeff_tab3[38],  
         coeff_tab3[39],  
 };  
   
 static VLC const **coeff_vlc[4] = {  
         coeff_intra_last0,  
         coeff_intra_last1,  
         coeff_inter_last0,  
         coeff_inter_last1,  
 };  
   
430  /*  /*
431   * MCBPC Indexing by cbpc in first two bits, mode in last two.   * MCBPC Indexing by cbpc in first two bits, mode in last two.
432   * CBPC as in table 4/H.263, MB type (mode): 3 = 01, 4 = 10.   * CBPC as in table 4/H.263, MB type (mode): 3 = 01, 4 = 10.
# Line 1019  Line 869 
869          {-13, 10}, {-13, 10}, {-13, 10}, {-13, 10}          {-13, 10}, {-13, 10}, {-13, 10}, {-13, 10}
870  };  };
871    
   
 static VLC const DCT3Dtab0[] = {  
         {4225, 7}, {4209, 7}, {4193, 7}, {4177, 7}, {193, 7}, {177, 7},  
         {161, 7}, {4, 7}, {4161, 6}, {4161, 6}, {4145, 6}, {4145, 6},  
         {4129, 6}, {4129, 6}, {4113, 6}, {4113, 6}, {145, 6}, {145, 6},  
         {129, 6}, {129, 6}, {113, 6}, {113, 6}, {97, 6}, {97, 6},  
         {18, 6}, {18, 6}, {3, 6}, {3, 6}, {81, 5}, {81, 5},  
         {81, 5}, {81, 5}, {65, 5}, {65, 5}, {65, 5}, {65, 5},  
         {49, 5}, {49, 5}, {49, 5}, {49, 5}, {4097, 4}, {4097, 4},  
         {4097, 4}, {4097, 4}, {4097, 4}, {4097, 4}, {4097, 4}, {4097, 4},  
         {1, 2}, {1, 2}, {1, 2}, {1, 2}, {1, 2}, {1, 2},  
         {1, 2}, {1, 2}, {1, 2}, {1, 2}, {1, 2}, {1, 2},  
         {1, 2}, {1, 2}, {1, 2}, {1, 2}, {1, 2}, {1, 2},  
         {1, 2}, {1, 2}, {1, 2}, {1, 2}, {1, 2}, {1, 2},  
         {1, 2}, {1, 2}, {1, 2}, {1, 2}, {1, 2}, {1, 2},  
         {1, 2}, {1, 2}, {17, 3}, {17, 3}, {17, 3}, {17, 3},  
         {17, 3}, {17, 3}, {17, 3}, {17, 3}, {17, 3}, {17, 3},  
         {17, 3}, {17, 3}, {17, 3}, {17, 3}, {17, 3}, {17, 3},  
         {33, 4}, {33, 4}, {33, 4}, {33, 4}, {33, 4}, {33, 4},  
         {33, 4}, {33, 4}, {2, 4}, {2, 4}, {2, 4}, {2, 4},  
         {2, 4}, {2, 4}, {2, 4}, {2, 4}  
 };  
   
   
 static VLC const DCT3Dtab1[] = {  
         {9, 10}, {8, 10}, {4481, 9}, {4481, 9}, {4465, 9}, {4465, 9},  
         {4449, 9}, {4449, 9}, {4433, 9}, {4433, 9}, {4417, 9}, {4417, 9},  
         {4401, 9}, {4401, 9}, {4385, 9}, {4385, 9}, {4369, 9}, {4369, 9},  
         {4098, 9}, {4098, 9}, {353, 9}, {353, 9}, {337, 9}, {337, 9},  
         {321, 9}, {321, 9}, {305, 9}, {305, 9}, {289, 9}, {289, 9},  
         {273, 9}, {273, 9}, {257, 9}, {257, 9}, {241, 9}, {241, 9},  
         {66, 9}, {66, 9}, {50, 9}, {50, 9}, {7, 9}, {7, 9},  
         {6, 9}, {6, 9}, {4353, 8}, {4353, 8}, {4353, 8}, {4353, 8},  
         {4337, 8}, {4337, 8}, {4337, 8}, {4337, 8}, {4321, 8}, {4321, 8},  
         {4321, 8}, {4321, 8}, {4305, 8}, {4305, 8}, {4305, 8}, {4305, 8},  
         {4289, 8}, {4289, 8}, {4289, 8}, {4289, 8}, {4273, 8}, {4273, 8},  
         {4273, 8}, {4273, 8}, {4257, 8}, {4257, 8}, {4257, 8}, {4257, 8},  
         {4241, 8}, {4241, 8}, {4241, 8}, {4241, 8}, {225, 8}, {225, 8},  
         {225, 8}, {225, 8}, {209, 8}, {209, 8}, {209, 8}, {209, 8},  
         {34, 8}, {34, 8}, {34, 8}, {34, 8}, {19, 8}, {19, 8},  
         {19, 8}, {19, 8}, {5, 8}, {5, 8}, {5, 8}, {5, 8}  
 };  
   
 static VLC const DCT3Dtab2[] = {  
         {4114, 11}, {4114, 11}, {4099, 11}, {4099, 11}, {11, 11}, {11, 11},  
         {10, 11}, {10, 11}, {4545, 10}, {4545, 10}, {4545, 10}, {4545, 10},  
         {4529, 10}, {4529, 10}, {4529, 10}, {4529, 10}, {4513, 10}, {4513, 10},  
         {4513, 10}, {4513, 10}, {4497, 10}, {4497, 10}, {4497, 10}, {4497, 10},  
         {146, 10}, {146, 10}, {146, 10}, {146, 10}, {130, 10}, {130, 10},  
         {130, 10}, {130, 10}, {114, 10}, {114, 10}, {114, 10}, {114, 10},  
         {98, 10}, {98, 10}, {98, 10}, {98, 10}, {82, 10}, {82, 10},  
         {82, 10}, {82, 10}, {51, 10}, {51, 10}, {51, 10}, {51, 10},  
         {35, 10}, {35, 10}, {35, 10}, {35, 10}, {20, 10}, {20, 10},  
         {20, 10}, {20, 10}, {12, 11}, {12, 11}, {21, 11}, {21, 11},  
         {369, 11}, {369, 11}, {385, 11}, {385, 11}, {4561, 11}, {4561, 11},  
         {4577, 11}, {4577, 11}, {4593, 11}, {4593, 11}, {4609, 11}, {4609, 11},  
         {22, 12}, {36, 12}, {67, 12}, {83, 12}, {99, 12}, {162, 12},  
         {401, 12}, {417, 12}, {4625, 12}, {4641, 12}, {4657, 12}, {4673, 12},  
         {4689, 12}, {4705, 12}, {4721, 12}, {4737, 12}, {7167, 7},  
         {7167, 7}, {7167, 7}, {7167, 7}, {7167, 7}, {7167, 7}, {7167, 7},  
         {7167, 7}, {7167, 7}, {7167, 7}, {7167, 7}, {7167, 7}, {7167, 7},  
         {7167, 7}, {7167, 7}, {7167, 7}, {7167, 7}, {7167, 7}, {7167, 7},  
         {7167, 7}, {7167, 7}, {7167, 7}, {7167, 7}, {7167, 7}, {7167, 7},  
         {7167, 7}, {7167, 7}, {7167, 7}, {7167, 7}, {7167, 7}, {7167, 7},  
         {7167, 7}  
 };  
   
   
 /* New tables for Intra luminance blocks */  
   
 static VLC const DCT3Dtab3[] = {  
         {0x10401, 7}, {0x10301, 7}, {0x00601, 7}, {0x10501, 7},  
         {0x00701, 7}, {0x00202, 7}, {0x00103, 7}, {0x00009, 7},  
         {0x10002, 6}, {0x10002, 6}, {0x00501, 6}, {0x00501, 6},  
         {0x10201, 6}, {0x10201, 6}, {0x10101, 6}, {0x10101, 6},  
         {0x00401, 6}, {0x00401, 6}, {0x00301, 6}, {0x00301, 6},  
         {0x00008, 6}, {0x00008, 6}, {0x00007, 6}, {0x00007, 6},  
         {0x00102, 6}, {0x00102, 6}, {0x00006, 6}, {0x00006, 6},  
         {0x00201, 5}, {0x00201, 5}, {0x00201, 5}, {0x00201, 5},  
         {0x00005, 5}, {0x00005, 5}, {0x00005, 5}, {0x00005, 5},  
         {0x00004, 5}, {0x00004, 5}, {0x00004, 5}, {0x00004, 5},  
         {0x10001, 4}, {0x10001, 4}, {0x10001, 4}, {0x10001, 4},  
         {0x10001, 4}, {0x10001, 4}, {0x10001, 4}, {0x10001, 4},  
         {0x00001, 2}, {0x00001, 2}, {0x00001, 2}, {0x00001, 2},  
         {0x00001, 2}, {0x00001, 2}, {0x00001, 2}, {0x00001, 2},  
         {0x00001, 2}, {0x00001, 2}, {0x00001, 2}, {0x00001, 2},  
         {0x00001, 2}, {0x00001, 2}, {0x00001, 2}, {0x00001, 2},  
         {0x00001, 2}, {0x00001, 2}, {0x00001, 2}, {0x00001, 2},  
         {0x00001, 2}, {0x00001, 2}, {0x00001, 2}, {0x00001, 2},  
         {0x00001, 2}, {0x00001, 2}, {0x00001, 2}, {0x00001, 2},  
         {0x00001, 2}, {0x00001, 2}, {0x00001, 2}, {0x00001, 2},  
         {0x00002, 3}, {0x00002, 3}, {0x00002, 3}, {0x00002, 3},  
         {0x00002, 3}, {0x00002, 3}, {0x00002, 3}, {0x00002, 3},  
         {0x00002, 3}, {0x00002, 3}, {0x00002, 3}, {0x00002, 3},  
         {0x00002, 3}, {0x00002, 3}, {0x00002, 3}, {0x00002, 3},  
         {0x00101, 4}, {0x00101, 4}, {0x00101, 4}, {0x00101, 4},  
         {0x00101, 4}, {0x00101, 4}, {0x00101, 4}, {0x00101, 4},  
         {0x00003, 4}, {0x00003, 4}, {0x00003, 4}, {0x00003, 4},  
         {0x00003, 4}, {0x00003, 4}, {0x00003, 4}, {0x00003, 4}  
 };  
   
   
 static VLC const DCT3Dtab4[] = {  
         {0x00012, 10}, {0x00011, 10}, {0x10e01, 9}, {0x10e01, 9},  
         {0x10d01, 9}, {0x10d01, 9}, {0x10c01, 9}, {0x10c01, 9},  
         {0x10b01, 9}, {0x10b01, 9}, {0x10a01, 9}, {0x10a01, 9},  
         {0x10102, 9}, {0x10102, 9}, {0x10004, 9}, {0x10004, 9},  
         {0x00c01, 9}, {0x00c01, 9}, {0x00b01, 9}, {0x00b01, 9},  
         {0x00702, 9}, {0x00702, 9}, {0x00602, 9}, {0x00602, 9},  
         {0x00502, 9}, {0x00502, 9}, {0x00303, 9}, {0x00303, 9},  
         {0x00203, 9}, {0x00203, 9}, {0x00106, 9}, {0x00106, 9},  
         {0x00105, 9}, {0x00105, 9}, {0x00010, 9}, {0x00010, 9},  
         {0x00402, 9}, {0x00402, 9}, {0x0000f, 9}, {0x0000f, 9},  
         {0x0000e, 9}, {0x0000e, 9}, {0x0000d, 9}, {0x0000d, 9},  
         {0x10801, 8}, {0x10801, 8}, {0x10801, 8}, {0x10801, 8},  
         {0x10701, 8}, {0x10701, 8}, {0x10701, 8}, {0x10701, 8},  
         {0x10601, 8}, {0x10601, 8}, {0x10601, 8}, {0x10601, 8},  
         {0x10003, 8}, {0x10003, 8}, {0x10003, 8}, {0x10003, 8},  
         {0x00a01, 8}, {0x00a01, 8}, {0x00a01, 8}, {0x00a01, 8},  
         {0x00901, 8}, {0x00901, 8}, {0x00901, 8}, {0x00901, 8},  
         {0x00801, 8}, {0x00801, 8}, {0x00801, 8}, {0x00801, 8},  
         {0x10901, 8}, {0x10901, 8}, {0x10901, 8}, {0x10901, 8},  
         {0x00302, 8}, {0x00302, 8}, {0x00302, 8}, {0x00302, 8},  
         {0x00104, 8}, {0x00104, 8}, {0x00104, 8}, {0x00104, 8},  
         {0x0000c, 8}, {0x0000c, 8}, {0x0000c, 8}, {0x0000c, 8},  
         {0x0000b, 8}, {0x0000b, 8}, {0x0000b, 8}, {0x0000b, 8},  
         {0x0000a, 8}, {0x0000a, 8}, {0x0000a, 8}, {0x0000a, 8}  
 };  
   
 static VLC const DCT3Dtab5[] = {  
         {0x10007, 11}, {0x10007, 11}, {0x10006, 11}, {0x10006, 11},  
         {0x00016, 11}, {0x00016, 11}, {0x00015, 11}, {0x00015, 11},  
         {0x10202, 10}, {0x10202, 10}, {0x10202, 10}, {0x10202, 10},  
         {0x10103, 10}, {0x10103, 10}, {0x10103, 10}, {0x10103, 10},  
         {0x10005, 10}, {0x10005, 10}, {0x10005, 10}, {0x10005, 10},  
         {0x00d01, 10}, {0x00d01, 10}, {0x00d01, 10}, {0x00d01, 10},  
         {0x00503, 10}, {0x00503, 10}, {0x00503, 10}, {0x00503, 10},  
         {0x00802, 10}, {0x00802, 10}, {0x00802, 10}, {0x00802, 10},  
         {0x00403, 10}, {0x00403, 10}, {0x00403, 10}, {0x00403, 10},  
         {0x00304, 10}, {0x00304, 10}, {0x00304, 10}, {0x00304, 10},  
         {0x00204, 10}, {0x00204, 10}, {0x00204, 10}, {0x00204, 10},  
         {0x00107, 10}, {0x00107, 10}, {0x00107, 10}, {0x00107, 10},  
         {0x00014, 10}, {0x00014, 10}, {0x00014, 10}, {0x00014, 10},  
         {0x00013, 10}, {0x00013, 10}, {0x00013, 10}, {0x00013, 10},  
         {0x00017, 11}, {0x00017, 11}, {0x00018, 11}, {0x00018, 11},  
         {0x00108, 11}, {0x00108, 11}, {0x00902, 11}, {0x00902, 11},  
         {0x10302, 11}, {0x10302, 11}, {0x10402, 11}, {0x10402, 11},  
         {0x10f01, 11}, {0x10f01, 11}, {0x11001, 11}, {0x11001, 11},  
         {0x00019, 12}, {0x0001a, 12}, {0x0001b, 12}, {0x00109, 12},  
         {0x00603, 12}, {0x0010a, 12}, {0x00205, 12}, {0x00703, 12},  
         {0x00e01, 12}, {0x10008, 12}, {0x10502, 12}, {0x10602, 12},  
         {0x11101, 12}, {0x11201, 12}, {0x11301, 12}, {0x11401, 12},  
         {0x01bff, 7}, {0x01bff, 7}, {0x01bff, 7}, {0x01bff, 7},  
         {0x01bff, 7}, {0x01bff, 7}, {0x01bff, 7}, {0x01bff, 7},  
         {0x01bff, 7}, {0x01bff, 7}, {0x01bff, 7}, {0x01bff, 7},  
         {0x01bff, 7}, {0x01bff, 7}, {0x01bff, 7}, {0x01bff, 7},  
         {0x01bff, 7}, {0x01bff, 7}, {0x01bff, 7}, {0x01bff, 7},  
         {0x01bff, 7}, {0x01bff, 7}, {0x01bff, 7}, {0x01bff, 7},  
         {0x01bff, 7}, {0x01bff, 7}, {0x01bff, 7}, {0x01bff, 7},  
         {0x01bff, 7}, {0x01bff, 7}, {0x01bff, 7}, {0x01bff, 7}  
 };  
   
872  static short const dc_threshold[] = {  static short const dc_threshold[] = {
873          26708,   29545,   25120,   28265,   29281,    8313,   29557,   29541,          21514, 26984,  8307, 28531, 29798, 24951, 25970, 26912,
874          18208,   21838,   18208,   19536,   29472,   26223,   30580,   29281,           8307, 25956, 26994, 25974,  8292, 29286, 28015, 29728,
875           8293,   25956,   26994,   25974,    8292,   29286,   28015,   22560,          25960, 18208, 21838, 18208, 19536, 22560, 26998,  8260,
876          18774,    8260,   20557,   18245,    8244,   26664,   29812,   14960,          28515, 25956,  8291, 12328, 14638, 12334, 11817, 22794,
877          12079,   30583,   11895,   30328,   25705,   28462,   26482,   29472,          30063,  8306, 28531, 29798, 24951, 25970, 25632, 29545,
878          30063,   25458,   29541,    8233,   29505,    8299,   28518,    8306,          29300, 25193, 29813, 29295, 26656, 29537, 29728,  8303,
879          26740,    8293,   28531,   29301,   25955,    8307,   28532,   31008,          26983, 25974, 24864, 25443, 29541,  8307, 28532, 26912,
880          30063,    8306,   26980,   29811,   26994,   30050,   28532,    2674          29556, 29472, 30063, 25458,  8293, 28515, 25956,  2606
 };  
   
   
 static VLC const ERRtab[] = {  
         {VLC_ERROR, 0}, {VLC_ERROR, 0}, {VLC_ERROR, 0},  
         {VLC_ERROR, 0}, {VLC_ERROR, 0}, {VLC_ERROR, 0},  
         {VLC_ERROR, 0}, {VLC_ERROR, 0}, {VLC_ERROR, 0},  
         {VLC_ERROR, 0}, {VLC_ERROR, 0}, {VLC_ERROR, 0},  
         {VLC_ERROR, 0}, {VLC_ERROR, 0}, {VLC_ERROR, 0}  
881  };  };
882    
883  static VLC const dc_lum_tab[] = {  static VLC const dc_lum_tab[] = {

Legend:
Removed from v.464  
changed lines
  Added in v.764

No admin address has been configured
ViewVC Help
Powered by ViewVC 1.0.4