annotate svq1.h @ 6611:79c5af90afde libavcodec

Avoid reverse addressing, not sure if this is faster or slower but people maybe are confused by it. The code needs to be optimized anyway.
author michael
date Wed, 16 Apr 2008 14:59:23 +0000
parents 057c243a4e3b
children c4a4495715dd
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 decoder
eca08bfad00f split SVQ1 decoder and encoder in their own files
aurel
parents:
diff changeset
3 * ported to MPlayer by Arpi <arpi@thot.banki.hu>
eca08bfad00f split SVQ1 decoder and encoder in their own files
aurel
parents:
diff changeset
4 * ported to libavcodec by Nick Kurshev <nickols_k@mail.ru>
eca08bfad00f split SVQ1 decoder and encoder in their own files
aurel
parents:
diff changeset
5 *
eca08bfad00f split SVQ1 decoder and encoder in their own files
aurel
parents:
diff changeset
6 * Copyright (C) 2002 the xine project
eca08bfad00f split SVQ1 decoder and encoder in their own files
aurel
parents:
diff changeset
7 * Copyright (C) 2002 the ffmpeg project
eca08bfad00f split SVQ1 decoder and encoder in their own files
aurel
parents:
diff changeset
8 *
eca08bfad00f split SVQ1 decoder and encoder in their own files
aurel
parents:
diff changeset
9 * SVQ1 Encoder (c) 2004 Mike Melanson <melanson@pcisys.net>
eca08bfad00f split SVQ1 decoder and encoder in their own files
aurel
parents:
diff changeset
10 *
eca08bfad00f split SVQ1 decoder and encoder in their own files
aurel
parents:
diff changeset
11 * This file is part of FFmpeg.
eca08bfad00f split SVQ1 decoder and encoder in their own files
aurel
parents:
diff changeset
12 *
eca08bfad00f split SVQ1 decoder and encoder in their own files
aurel
parents:
diff changeset
13 * FFmpeg is free software; you can redistribute it and/or
eca08bfad00f split SVQ1 decoder and encoder in their own files
aurel
parents:
diff changeset
14 * 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
15 * License as published by the Free Software Foundation; either
eca08bfad00f split SVQ1 decoder and encoder in their own files
aurel
parents:
diff changeset
16 * 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
17 *
eca08bfad00f split SVQ1 decoder and encoder in their own files
aurel
parents:
diff changeset
18 * 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
19 * but WITHOUT ANY WARRANTY; without even the implied warranty of
eca08bfad00f split SVQ1 decoder and encoder in their own files
aurel
parents:
diff changeset
20 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
eca08bfad00f split SVQ1 decoder and encoder in their own files
aurel
parents:
diff changeset
21 * Lesser General Public License for more details.
eca08bfad00f split SVQ1 decoder and encoder in their own files
aurel
parents:
diff changeset
22 *
eca08bfad00f split SVQ1 decoder and encoder in their own files
aurel
parents:
diff changeset
23 * 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
24 * 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
25 * 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
26 */
eca08bfad00f split SVQ1 decoder and encoder in their own files
aurel
parents:
diff changeset
27
eca08bfad00f split SVQ1 decoder and encoder in their own files
aurel
parents:
diff changeset
28 /**
eca08bfad00f split SVQ1 decoder and encoder in their own files
aurel
parents:
diff changeset
29 * @file svq1.h
eca08bfad00f split SVQ1 decoder and encoder in their own files
aurel
parents:
diff changeset
30 * Sorenson Vector Quantizer #1 (SVQ1) video codec.
eca08bfad00f split SVQ1 decoder and encoder in their own files
aurel
parents:
diff changeset
31 * For more information of the SVQ1 algorithm, visit:
eca08bfad00f split SVQ1 decoder and encoder in their own files
aurel
parents:
diff changeset
32 * http://www.pcisys.net/~melanson/codecs/
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
5830
1d83e9c34641 Add FFMPEG_ prefix to all multiple inclusion guards.
diego
parents: 5233
diff changeset
35 #ifndef FFMPEG_SVQ1_H
1d83e9c34641 Add FFMPEG_ prefix to all multiple inclusion guards.
diego
parents: 5233
diff changeset
36 #define FFMPEG_SVQ1_H
5233
eca08bfad00f split SVQ1 decoder and encoder in their own files
aurel
parents:
diff changeset
37
eca08bfad00f split SVQ1 decoder and encoder in their own files
aurel
parents:
diff changeset
38 #include <stdint.h>
eca08bfad00f split SVQ1 decoder and encoder in their own files
aurel
parents:
diff changeset
39
eca08bfad00f split SVQ1 decoder and encoder in their own files
aurel
parents:
diff changeset
40 #define SVQ1_BLOCK_SKIP 0
eca08bfad00f split SVQ1 decoder and encoder in their own files
aurel
parents:
diff changeset
41 #define SVQ1_BLOCK_INTER 1
eca08bfad00f split SVQ1 decoder and encoder in their own files
aurel
parents:
diff changeset
42 #define SVQ1_BLOCK_INTER_4V 2
eca08bfad00f split SVQ1 decoder and encoder in their own files
aurel
parents:
diff changeset
43 #define SVQ1_BLOCK_INTRA 3
eca08bfad00f split SVQ1 decoder and encoder in their own files
aurel
parents:
diff changeset
44
eca08bfad00f split SVQ1 decoder and encoder in their own files
aurel
parents:
diff changeset
45 typedef struct {
eca08bfad00f split SVQ1 decoder and encoder in their own files
aurel
parents:
diff changeset
46 int width;
eca08bfad00f split SVQ1 decoder and encoder in their own files
aurel
parents:
diff changeset
47 int height;
eca08bfad00f split SVQ1 decoder and encoder in their own files
aurel
parents:
diff changeset
48 } svq1_frame_size_t;
eca08bfad00f split SVQ1 decoder and encoder in their own files
aurel
parents:
diff changeset
49
eca08bfad00f split SVQ1 decoder and encoder in their own files
aurel
parents:
diff changeset
50 extern const int8_t* const ff_svq1_inter_codebooks[6];
eca08bfad00f split SVQ1 decoder and encoder in their own files
aurel
parents:
diff changeset
51 extern const int8_t* const ff_svq1_intra_codebooks[6];
eca08bfad00f split SVQ1 decoder and encoder in their own files
aurel
parents:
diff changeset
52
eca08bfad00f split SVQ1 decoder and encoder in their own files
aurel
parents:
diff changeset
53 extern const uint8_t ff_svq1_block_type_vlc[4][2];
eca08bfad00f split SVQ1 decoder and encoder in their own files
aurel
parents:
diff changeset
54 extern const uint8_t ff_svq1_intra_multistage_vlc[6][8][2];
eca08bfad00f split SVQ1 decoder and encoder in their own files
aurel
parents:
diff changeset
55 extern const uint8_t ff_svq1_inter_multistage_vlc[6][8][2];
eca08bfad00f split SVQ1 decoder and encoder in their own files
aurel
parents:
diff changeset
56 extern const uint16_t ff_svq1_intra_mean_vlc[256][2];
eca08bfad00f split SVQ1 decoder and encoder in their own files
aurel
parents:
diff changeset
57 extern const uint16_t ff_svq1_inter_mean_vlc[512][2];
eca08bfad00f split SVQ1 decoder and encoder in their own files
aurel
parents:
diff changeset
58
6130
057c243a4e3b Mark the ff_svq1_frame_size_table as constant.
benoit
parents: 5830
diff changeset
59 extern const svq1_frame_size_t ff_svq1_frame_size_table[8];
5233
eca08bfad00f split SVQ1 decoder and encoder in their own files
aurel
parents:
diff changeset
60
5830
1d83e9c34641 Add FFMPEG_ prefix to all multiple inclusion guards.
diego
parents: 5233
diff changeset
61 #endif /* FFMPEG_SVQ1_H */