annotate svq1.h @ 9379:d31c367da415 libavcodec

Make sure mpeg2 has its height rounded up to 32 as that is needed for interlaced stuff. This might have been exploitable when emu edge was not set though note this bug has been introduced just a few days ago.
author michael
date Fri, 10 Apr 2009 00:09:07 +0000
parents e9d9d946f213
children f20726a6d538
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 /**
8718
e9d9d946f213 Use full internal pathname in doxygen @file directives.
diego
parents: 8508
diff changeset
29 * @file libavcodec/svq1.h
5233
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
7760
c4a4495715dd Globally rename the header inclusion guard names.
stefano
parents: 6130
diff changeset
35 #ifndef AVCODEC_SVQ1_H
c4a4495715dd Globally rename the header inclusion guard names.
stefano
parents: 6130
diff changeset
36 #define AVCODEC_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
8508
8bb3aa9813b5 Avoid POSIX-reserved _t namespace.
diego
parents: 8080
diff changeset
45 struct svq1_frame_size {
5233
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;
8508
8bb3aa9813b5 Avoid POSIX-reserved _t namespace.
diego
parents: 8080
diff changeset
48 };
5233
eca08bfad00f split SVQ1 decoder and encoder in their own files
aurel
parents:
diff changeset
49
8080
847bcb16028a Add the function declaration of ff_svq1_packet_checksum to svq1.h and include
diego
parents: 7760
diff changeset
50 uint16_t ff_svq1_packet_checksum (const uint8_t *data, const int length,
847bcb16028a Add the function declaration of ff_svq1_packet_checksum to svq1.h and include
diego
parents: 7760
diff changeset
51 int value);
847bcb16028a Add the function declaration of ff_svq1_packet_checksum to svq1.h and include
diego
parents: 7760
diff changeset
52
5233
eca08bfad00f split SVQ1 decoder and encoder in their own files
aurel
parents:
diff changeset
53 extern const int8_t* const ff_svq1_inter_codebooks[6];
eca08bfad00f split SVQ1 decoder and encoder in their own files
aurel
parents:
diff changeset
54 extern const int8_t* const ff_svq1_intra_codebooks[6];
eca08bfad00f split SVQ1 decoder and encoder in their own files
aurel
parents:
diff changeset
55
eca08bfad00f split SVQ1 decoder and encoder in their own files
aurel
parents:
diff changeset
56 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
57 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
58 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
59 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
60 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
61
8508
8bb3aa9813b5 Avoid POSIX-reserved _t namespace.
diego
parents: 8080
diff changeset
62 extern const struct svq1_frame_size ff_svq1_frame_size_table[8];
5233
eca08bfad00f split SVQ1 decoder and encoder in their own files
aurel
parents:
diff changeset
63
7760
c4a4495715dd Globally rename the header inclusion guard names.
stefano
parents: 6130
diff changeset
64 #endif /* AVCODEC_SVQ1_H */