annotate svq1.c @ 9770:e883c3dab3ec libavcodec

Pad the decompression buffer and use av_memcpy_backptr for the mszh decompression.
author reimar
date Sun, 31 May 2009 10:42:26 +0000
parents e9d9d946f213
children f20726a6d538
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
536
6fac683d9997 Change licence to LGPL since there are no objections from side of original author
nickols_k
parents: 530
diff changeset
1 /*
5214
470601203f44 Group all copyright and author notices together.
diego
parents: 5127
diff changeset
2 * SVQ1 decoder
470601203f44 Group all copyright and author notices together.
diego
parents: 5127
diff changeset
3 * ported to MPlayer by Arpi <arpi@thot.banki.hu>
470601203f44 Group all copyright and author notices together.
diego
parents: 5127
diff changeset
4 * ported to libavcodec by Nick Kurshev <nickols_k@mail.ru>
2967
ef2149182f1c COSMETICS: Remove all trailing whitespace.
diego
parents: 2860
diff changeset
5 *
536
6fac683d9997 Change licence to LGPL since there are no objections from side of original author
nickols_k
parents: 530
diff changeset
6 * Copyright (C) 2002 the xine project
6fac683d9997 Change licence to LGPL since there are no objections from side of original author
nickols_k
parents: 530
diff changeset
7 * Copyright (C) 2002 the ffmpeg project
2967
ef2149182f1c COSMETICS: Remove all trailing whitespace.
diego
parents: 2860
diff changeset
8 *
5214
470601203f44 Group all copyright and author notices together.
diego
parents: 5127
diff changeset
9 * SVQ1 Encoder (c) 2004 Mike Melanson <melanson@pcisys.net>
470601203f44 Group all copyright and author notices together.
diego
parents: 5127
diff changeset
10 *
3947
c8c591fe26f8 Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents: 3777
diff changeset
11 * This file is part of FFmpeg.
c8c591fe26f8 Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents: 3777
diff changeset
12 *
c8c591fe26f8 Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents: 3777
diff changeset
13 * FFmpeg is free software; you can redistribute it and/or
536
6fac683d9997 Change licence to LGPL since there are no objections from side of original author
nickols_k
parents: 530
diff changeset
14 * modify it under the terms of the GNU Lesser General Public
6fac683d9997 Change licence to LGPL since there are no objections from side of original author
nickols_k
parents: 530
diff changeset
15 * License as published by the Free Software Foundation; either
3947
c8c591fe26f8 Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents: 3777
diff changeset
16 * version 2.1 of the License, or (at your option) any later version.
536
6fac683d9997 Change licence to LGPL since there are no objections from side of original author
nickols_k
parents: 530
diff changeset
17 *
3947
c8c591fe26f8 Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents: 3777
diff changeset
18 * FFmpeg is distributed in the hope that it will be useful,
521
9c66b5183ab3 new codec: Sorenson v1
nickols_k
parents:
diff changeset
19 * but WITHOUT ANY WARRANTY; without even the implied warranty of
536
6fac683d9997 Change licence to LGPL since there are no objections from side of original author
nickols_k
parents: 530
diff changeset
20 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
6fac683d9997 Change licence to LGPL since there are no objections from side of original author
nickols_k
parents: 530
diff changeset
21 * Lesser General Public License for more details.
6fac683d9997 Change licence to LGPL since there are no objections from side of original author
nickols_k
parents: 530
diff changeset
22 *
6fac683d9997 Change licence to LGPL since there are no objections from side of original author
nickols_k
parents: 530
diff changeset
23 * You should have received a copy of the GNU Lesser General Public
3947
c8c591fe26f8 Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents: 3777
diff changeset
24 * License along with FFmpeg; if not, write to the Free Software
3036
0b546eab515d Update licensing information: The FSF changed postal address.
diego
parents: 2979
diff changeset
25 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
521
9c66b5183ab3 new codec: Sorenson v1
nickols_k
parents:
diff changeset
26 */
1106
1e39f273ecd6 per file doxy
michaelni
parents: 1064
diff changeset
27
1e39f273ecd6 per file doxy
michaelni
parents: 1064
diff changeset
28 /**
8718
e9d9d946f213 Use full internal pathname in doxygen @file directives.
diego
parents: 8508
diff changeset
29 * @file libavcodec/svq1.c
2005
28d3f73aa254 first pass at a Sorenson Video 1 (SVQ1) encoder
melanson
parents: 1892
diff changeset
30 * Sorenson Vector Quantizer #1 (SVQ1) video codec.
28d3f73aa254 first pass at a Sorenson Video 1 (SVQ1) encoder
melanson
parents: 1892
diff changeset
31 * For more information of the SVQ1 algorithm, visit:
28d3f73aa254 first pass at a Sorenson Video 1 (SVQ1) encoder
melanson
parents: 1892
diff changeset
32 * http://www.pcisys.net/~melanson/codecs/
1106
1e39f273ecd6 per file doxy
michaelni
parents: 1064
diff changeset
33 */
1e39f273ecd6 per file doxy
michaelni
parents: 1064
diff changeset
34
5233
eca08bfad00f split SVQ1 decoder and encoder in their own files
aurel
parents: 5214
diff changeset
35 #include "svq1.h"
579
ba17f7dbe745 moved codebooks to svq1_cb.h
al3x
parents: 561
diff changeset
36 #include "svq1_cb.h"
1283
00dcdda701ca rework SVQ1 decoder to use more intuitive VLC tables as well as ffmpeg's
tmmm
parents: 1282
diff changeset
37 #include "svq1_vlc.h"
521
9c66b5183ab3 new codec: Sorenson v1
nickols_k
parents:
diff changeset
38
9c66b5183ab3 new codec: Sorenson v1
nickols_k
parents:
diff changeset
39 /* standard video sizes */
8508
8bb3aa9813b5 Avoid POSIX-reserved _t namespace.
diego
parents: 6130
diff changeset
40 const struct svq1_frame_size ff_svq1_frame_size_table[8] = {
521
9c66b5183ab3 new codec: Sorenson v1
nickols_k
parents:
diff changeset
41 { 160, 120 }, { 128, 96 }, { 176, 144 }, { 352, 288 },
9c66b5183ab3 new codec: Sorenson v1
nickols_k
parents:
diff changeset
42 { 704, 576 }, { 240, 180 }, { 320, 240 }, { -1, -1 }
9c66b5183ab3 new codec: Sorenson v1
nickols_k
parents:
diff changeset
43 };