annotate svq1enc_cb.h @ 12530:63edd10ad4bc libavcodec tip

Try to fix crashes introduced by r25218 r25218 made assumptions about the existence of past reference frames that weren't necessarily true.
author darkshikari
date Tue, 28 Sep 2010 09:06:22 +0000
parents 7dd2a45249a9
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
5233
eca08bfad00f split SVQ1 decoder and encoder in their own files
aurel
parents:
diff changeset
1 /*
eca08bfad00f split SVQ1 decoder and encoder in their own files
aurel
parents:
diff changeset
2 * SVQ1 Encoder
eca08bfad00f split SVQ1 decoder and encoder in their own files
aurel
parents:
diff changeset
3 * Copyright (C) 2004 Mike Melanson <melanson@pcisys.net>
eca08bfad00f split SVQ1 decoder and encoder in their own files
aurel
parents:
diff changeset
4 *
eca08bfad00f split SVQ1 decoder and encoder in their own files
aurel
parents:
diff changeset
5 * This file is part of FFmpeg.
eca08bfad00f split SVQ1 decoder and encoder in their own files
aurel
parents:
diff changeset
6 *
eca08bfad00f split SVQ1 decoder and encoder in their own files
aurel
parents:
diff changeset
7 * FFmpeg is free software; you can redistribute it and/or
eca08bfad00f split SVQ1 decoder and encoder in their own files
aurel
parents:
diff changeset
8 * modify it under the terms of the GNU Lesser General Public
eca08bfad00f split SVQ1 decoder and encoder in their own files
aurel
parents:
diff changeset
9 * License as published by the Free Software Foundation; either
eca08bfad00f split SVQ1 decoder and encoder in their own files
aurel
parents:
diff changeset
10 * version 2.1 of the License, or (at your option) any later version.
eca08bfad00f split SVQ1 decoder and encoder in their own files
aurel
parents:
diff changeset
11 *
eca08bfad00f split SVQ1 decoder and encoder in their own files
aurel
parents:
diff changeset
12 * FFmpeg is distributed in the hope that it will be useful,
eca08bfad00f split SVQ1 decoder and encoder in their own files
aurel
parents:
diff changeset
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
eca08bfad00f split SVQ1 decoder and encoder in their own files
aurel
parents:
diff changeset
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
eca08bfad00f split SVQ1 decoder and encoder in their own files
aurel
parents:
diff changeset
15 * Lesser General Public License for more details.
eca08bfad00f split SVQ1 decoder and encoder in their own files
aurel
parents:
diff changeset
16 *
eca08bfad00f split SVQ1 decoder and encoder in their own files
aurel
parents:
diff changeset
17 * You should have received a copy of the GNU Lesser General Public
eca08bfad00f split SVQ1 decoder and encoder in their own files
aurel
parents:
diff changeset
18 * License along with FFmpeg; if not, write to the Free Software
eca08bfad00f split SVQ1 decoder and encoder in their own files
aurel
parents:
diff changeset
19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
eca08bfad00f split SVQ1 decoder and encoder in their own files
aurel
parents:
diff changeset
20 */
eca08bfad00f split SVQ1 decoder and encoder in their own files
aurel
parents:
diff changeset
21
eca08bfad00f split SVQ1 decoder and encoder in their own files
aurel
parents:
diff changeset
22 /**
11644
7dd2a45249a9 Remove explicit filename from Doxygen @file commands.
diego
parents: 8718
diff changeset
23 * @file
5233
eca08bfad00f split SVQ1 decoder and encoder in their own files
aurel
parents:
diff changeset
24 * svq1 code books.
eca08bfad00f split SVQ1 decoder and encoder in their own files
aurel
parents:
diff changeset
25 */
eca08bfad00f split SVQ1 decoder and encoder in their own files
aurel
parents:
diff changeset
26
7760
c4a4495715dd Globally rename the header inclusion guard names.
stefano
parents: 5830
diff changeset
27 #ifndef AVCODEC_SVQ1ENC_CB_H
c4a4495715dd Globally rename the header inclusion guard names.
stefano
parents: 5830
diff changeset
28 #define AVCODEC_SVQ1ENC_CB_H
5233
eca08bfad00f split SVQ1 decoder and encoder in their own files
aurel
parents:
diff changeset
29
eca08bfad00f split SVQ1 decoder and encoder in their own files
aurel
parents:
diff changeset
30 #include <stdint.h>
eca08bfad00f split SVQ1 decoder and encoder in their own files
aurel
parents:
diff changeset
31
eca08bfad00f split SVQ1 decoder and encoder in their own files
aurel
parents:
diff changeset
32 static const int8_t svq1_inter_codebook_sum[4][16*6] = {
eca08bfad00f split SVQ1 decoder and encoder in their own files
aurel
parents:
diff changeset
33 {
eca08bfad00f split SVQ1 decoder and encoder in their own files
aurel
parents:
diff changeset
34 -1, 1, -2, 0, 1, -1, -1, -1, -2, -1, 1, -1, -1, 0, -1, -1,
eca08bfad00f split SVQ1 decoder and encoder in their own files
aurel
parents:
diff changeset
35 0, -1, -1, -1, -1, 0, -1, 0, 0, 0, -3, 1, -1, 0, 1, -1,
eca08bfad00f split SVQ1 decoder and encoder in their own files
aurel
parents:
diff changeset
36 1, -1, 2, 2, 1, 1, 2, 0, 0, 0, -1, 1, 1, 0, 0, 0,
eca08bfad00f split SVQ1 decoder and encoder in their own files
aurel
parents:
diff changeset
37 1, -1, 0, 1, -1, 1, 1, 0, 1, 0, -1, 1, 1, 0, 0, 0,
eca08bfad00f split SVQ1 decoder and encoder in their own files
aurel
parents:
diff changeset
38 -2, 0, 0, -2, 0, 0, -2, 0, -2, -1, -2, -1, 0, 0, -1, 0,
eca08bfad00f split SVQ1 decoder and encoder in their own files
aurel
parents:
diff changeset
39 1, 0, 1, -1, 2, 2, 1, 2, 2, 1, 0, 1, 1, 0, 1, 1,
eca08bfad00f split SVQ1 decoder and encoder in their own files
aurel
parents:
diff changeset
40 },{
eca08bfad00f split SVQ1 decoder and encoder in their own files
aurel
parents:
diff changeset
41 -2, 1, -1, -1, 1, 0, 1, -1, -1, -1, 1, -1, 0, -1, 0, -1,
eca08bfad00f split SVQ1 decoder and encoder in their own files
aurel
parents:
diff changeset
42 0, 0, 0, -2, 0, 1, 0, -1, -1, 0, 2, -3, 1, -2, 3, -1,
eca08bfad00f split SVQ1 decoder and encoder in their own files
aurel
parents:
diff changeset
43 2, 0, 2, 1, 1, -1, 1, 1, 0, 0, 1, 1, 2, -2, 1, 0,
eca08bfad00f split SVQ1 decoder and encoder in their own files
aurel
parents:
diff changeset
44 -2, -1, 2, -2, -2, 0, -3, 0, -1, 0, -1, 0, -1, 0, -2, -3,
eca08bfad00f split SVQ1 decoder and encoder in their own files
aurel
parents:
diff changeset
45 1, -2, -2, -1, 1, -1, -1, 1, -1, 1, 1, 0, -2, 0, 1, 1,
eca08bfad00f split SVQ1 decoder and encoder in their own files
aurel
parents:
diff changeset
46 1, 1, 2, 1, 0, 0, -1, 0, 0, 1, 0, 1, -1, 1, 0, 2,
eca08bfad00f split SVQ1 decoder and encoder in their own files
aurel
parents:
diff changeset
47 },{
eca08bfad00f split SVQ1 decoder and encoder in their own files
aurel
parents:
diff changeset
48 0, 0, 0, -3, 1, 1, 1, -3, 0, -1, 0, -3, 1, -3, 0, -2,
eca08bfad00f split SVQ1 decoder and encoder in their own files
aurel
parents:
diff changeset
49 1, 2, -1, -3, 0, -3, 1, -1, 0, -1, 0, 0, 1, 2, 1, 1,
eca08bfad00f split SVQ1 decoder and encoder in their own files
aurel
parents:
diff changeset
50 -1, 2, -3, 3, 1, 0, -5, 1, 0, -1, -3, 1, 0, 2, 0, -3,
eca08bfad00f split SVQ1 decoder and encoder in their own files
aurel
parents:
diff changeset
51 4, 2, 0, -2, 1, -2, 3, -2, 1, 1, 0, -1, 2, 5, 3, 1,
eca08bfad00f split SVQ1 decoder and encoder in their own files
aurel
parents:
diff changeset
52 -1, 0, 2, -3, -2, 0, 0, -2, 2, -3, -1, -1, 2, 1, 0, -2,
eca08bfad00f split SVQ1 decoder and encoder in their own files
aurel
parents:
diff changeset
53 3, -1, 1, -1, 2, 4, 0, 1, 0, 1, 0, -1, -3, -2, -1, 0,
eca08bfad00f split SVQ1 decoder and encoder in their own files
aurel
parents:
diff changeset
54 },{
eca08bfad00f split SVQ1 decoder and encoder in their own files
aurel
parents:
diff changeset
55 0, 2, -1, -1, 2, -4, -2, 3, 0, -1, -5, 1, 0, 1, 0, 6,
eca08bfad00f split SVQ1 decoder and encoder in their own files
aurel
parents:
diff changeset
56 -2, 2, 0, 1, 1, -1, -1, -2, 1, -2, -1, 0, 2, -2, -2, -1,
eca08bfad00f split SVQ1 decoder and encoder in their own files
aurel
parents:
diff changeset
57 -4, 2, -1, -3, -1, -2, 2, -1, 2, -1, 2, 0, 3, -3, -3, 0,
eca08bfad00f split SVQ1 decoder and encoder in their own files
aurel
parents:
diff changeset
58 -3, 0, 0, -2, 4, -4, 0, -1, 4, 0, -2, -2, 3, -2, 0, 4,
eca08bfad00f split SVQ1 decoder and encoder in their own files
aurel
parents:
diff changeset
59 5, 0, 1, 0, -3, 3, 3, 2, 0, 0, 1, 2, -5, -2, -3, 0,
eca08bfad00f split SVQ1 decoder and encoder in their own files
aurel
parents:
diff changeset
60 -3, 2, -2, 2, -2, 4, 7, -3, 4, 2, 3, 2, -1, 0, -3, 1,
eca08bfad00f split SVQ1 decoder and encoder in their own files
aurel
parents:
diff changeset
61 }
eca08bfad00f split SVQ1 decoder and encoder in their own files
aurel
parents:
diff changeset
62 };
eca08bfad00f split SVQ1 decoder and encoder in their own files
aurel
parents:
diff changeset
63
eca08bfad00f split SVQ1 decoder and encoder in their own files
aurel
parents:
diff changeset
64 static const int8_t svq1_intra_codebook_sum[4][16*6] = {
eca08bfad00f split SVQ1 decoder and encoder in their own files
aurel
parents:
diff changeset
65 {
eca08bfad00f split SVQ1 decoder and encoder in their own files
aurel
parents:
diff changeset
66 0, 0, 0, -1, -1, -1, -1, -2, 0, -1, -1, 0, -1, 0, 1, 0,
eca08bfad00f split SVQ1 decoder and encoder in their own files
aurel
parents:
diff changeset
67 1, 0, -1, 1, 0, 0, -1, 1, -1, 0, 0, 0, -1, 1, 0, 0,
eca08bfad00f split SVQ1 decoder and encoder in their own files
aurel
parents:
diff changeset
68 -1, 0, 0, 1, -1, 1, 0, -1, -1, 0, 1, 1, 0, 0, -1, 1,
eca08bfad00f split SVQ1 decoder and encoder in their own files
aurel
parents:
diff changeset
69 0, 1, 0, 0, 1, -1, 0, 0, 0, -1, 1, 0, 1, 0, -2, 1,
eca08bfad00f split SVQ1 decoder and encoder in their own files
aurel
parents:
diff changeset
70 0, -1, 1, 0, 0, 0, 1, 0, -1, 0, 0, 0, -1, 0, 0, 0,
eca08bfad00f split SVQ1 decoder and encoder in their own files
aurel
parents:
diff changeset
71 0, 1, 1, 0, 0, -1, 0, 1, 0, 0, 0, 0, -1, 1, 1, -1,
eca08bfad00f split SVQ1 decoder and encoder in their own files
aurel
parents:
diff changeset
72 },{
eca08bfad00f split SVQ1 decoder and encoder in their own files
aurel
parents:
diff changeset
73 -1, -2, 0, -1, 1, 0, -1, 0, -1, -4, -1, -2, -1, -2, 1, -2,
eca08bfad00f split SVQ1 decoder and encoder in their own files
aurel
parents:
diff changeset
74 0, 0, 4, -2, -1, 1, 1, 0, 2, 1, 1, 0, 2, 0, 0, 0,
eca08bfad00f split SVQ1 decoder and encoder in their own files
aurel
parents:
diff changeset
75 1, 1, 0, -1, -1, -1, 1, 0, -1, -3, -3, 1, -1, 1, -2, -1,
eca08bfad00f split SVQ1 decoder and encoder in their own files
aurel
parents:
diff changeset
76 1, -1, 0, 1, 2, 1, -1, -1, 1, 1, 1, 2, 1, 0, 1, -2,
eca08bfad00f split SVQ1 decoder and encoder in their own files
aurel
parents:
diff changeset
77 -2, 0, -1, -2, -2, 0, -1, -1, -1, 0, 1, 0, -1, -1, 0, -1,
eca08bfad00f split SVQ1 decoder and encoder in their own files
aurel
parents:
diff changeset
78 0, 2, 1, 2, 2, 1, -1, 1, 0, 2, 0, -1, 1, 0, 0, 0,
eca08bfad00f split SVQ1 decoder and encoder in their own files
aurel
parents:
diff changeset
79 },{
eca08bfad00f split SVQ1 decoder and encoder in their own files
aurel
parents:
diff changeset
80 -2, 0, -1, -1, 1, 1, -2, 0, -2, 0, 1, -2, -2, 1, -1, -1,
eca08bfad00f split SVQ1 decoder and encoder in their own files
aurel
parents:
diff changeset
81 3, -2, 0, -3, -4, -3, 2, 1, 0, 3, -2, 2, 3, 2, 2, -1,
eca08bfad00f split SVQ1 decoder and encoder in their own files
aurel
parents:
diff changeset
82 -3, 1, 0, 1, 0, 0, 0, 1, -2, 1, -2, -2, -1, -2, -2, 2,
eca08bfad00f split SVQ1 decoder and encoder in their own files
aurel
parents:
diff changeset
83 0, -4, 0, 2, -1, 0, 2, 2, 2, 1, 0, -1, -1, 1, -3, 2,
eca08bfad00f split SVQ1 decoder and encoder in their own files
aurel
parents:
diff changeset
84 2, 1, 0, 3, 1, -1, 1, 3, 1, 0, 1, 1, 2, -1, 1, -1,
eca08bfad00f split SVQ1 decoder and encoder in their own files
aurel
parents:
diff changeset
85 -2, -1, 0, -1, 1, -1, 1, -2, -2, -1, -1, -3, 1, -4, -3, 1,
eca08bfad00f split SVQ1 decoder and encoder in their own files
aurel
parents:
diff changeset
86 },{
eca08bfad00f split SVQ1 decoder and encoder in their own files
aurel
parents:
diff changeset
87 -2, 0, -2, 3, -1, -1, 0, 2, 2, -1, -3, 2, 1, 0, -2, -1,
eca08bfad00f split SVQ1 decoder and encoder in their own files
aurel
parents:
diff changeset
88 -3, -2, -2, 1, 2, -3, 0, 1, -5, -2, -3, 0, -2, -1, 2, 0,
eca08bfad00f split SVQ1 decoder and encoder in their own files
aurel
parents:
diff changeset
89 -1, -1, 0, -2, 1, 3, -7, -2, -2, -1, 2, -1, 0, 3, 1, 3,
eca08bfad00f split SVQ1 decoder and encoder in their own files
aurel
parents:
diff changeset
90 1, 0, 0, 1, 2, 3, 1, 2, 0, -2, -2, 1, 1, 2, 2, 3,
eca08bfad00f split SVQ1 decoder and encoder in their own files
aurel
parents:
diff changeset
91 4, 1, -1, 2, -2, 4, 0, 0, 0, 4, 2, 0, -2, -2, 2, -4,
eca08bfad00f split SVQ1 decoder and encoder in their own files
aurel
parents:
diff changeset
92 -1, 5, -2, -2, -3, 2, -3, -1, 3, -3, 0, 4, 3, 0, 1, -2,
eca08bfad00f split SVQ1 decoder and encoder in their own files
aurel
parents:
diff changeset
93 }
eca08bfad00f split SVQ1 decoder and encoder in their own files
aurel
parents:
diff changeset
94 };
eca08bfad00f split SVQ1 decoder and encoder in their own files
aurel
parents:
diff changeset
95
7760
c4a4495715dd Globally rename the header inclusion guard names.
stefano
parents: 5830
diff changeset
96 #endif /* AVCODEC_SVQ1ENC_CB_H */