annotate wmv2.h @ 7351:1502ba3beb72 libavcodec

The codebook generator algorithm involves picking three different codebook centroids ("high utility", "low utility" and "closest to the low utility one"). This change avoid the corner case of choosing two times the same centroid.
author vitor
date Wed, 23 Jul 2008 03:54:31 +0000
parents ad0c77d2b6ee
children c4a4495715dd
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
5939
b47573cb7401 split wmv2 encoder and decoder in their own files
aurel
parents:
diff changeset
1 /*
b47573cb7401 split wmv2 encoder and decoder in their own files
aurel
parents:
diff changeset
2 * Copyright (c) 2002 The FFmpeg Project.
b47573cb7401 split wmv2 encoder and decoder in their own files
aurel
parents:
diff changeset
3 *
b47573cb7401 split wmv2 encoder and decoder in their own files
aurel
parents:
diff changeset
4 * This file is part of FFmpeg.
b47573cb7401 split wmv2 encoder and decoder in their own files
aurel
parents:
diff changeset
5 *
b47573cb7401 split wmv2 encoder and decoder in their own files
aurel
parents:
diff changeset
6 * FFmpeg is free software; you can redistribute it and/or
b47573cb7401 split wmv2 encoder and decoder in their own files
aurel
parents:
diff changeset
7 * modify it under the terms of the GNU Lesser General Public
b47573cb7401 split wmv2 encoder and decoder in their own files
aurel
parents:
diff changeset
8 * License as published by the Free Software Foundation; either
b47573cb7401 split wmv2 encoder and decoder in their own files
aurel
parents:
diff changeset
9 * version 2.1 of the License, or (at your option) any later version.
b47573cb7401 split wmv2 encoder and decoder in their own files
aurel
parents:
diff changeset
10 *
b47573cb7401 split wmv2 encoder and decoder in their own files
aurel
parents:
diff changeset
11 * FFmpeg is distributed in the hope that it will be useful,
b47573cb7401 split wmv2 encoder and decoder in their own files
aurel
parents:
diff changeset
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
b47573cb7401 split wmv2 encoder and decoder in their own files
aurel
parents:
diff changeset
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
b47573cb7401 split wmv2 encoder and decoder in their own files
aurel
parents:
diff changeset
14 * Lesser General Public License for more details.
b47573cb7401 split wmv2 encoder and decoder in their own files
aurel
parents:
diff changeset
15 *
b47573cb7401 split wmv2 encoder and decoder in their own files
aurel
parents:
diff changeset
16 * You should have received a copy of the GNU Lesser General Public
b47573cb7401 split wmv2 encoder and decoder in their own files
aurel
parents:
diff changeset
17 * License along with FFmpeg; if not, write to the Free Software
b47573cb7401 split wmv2 encoder and decoder in their own files
aurel
parents:
diff changeset
18 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
b47573cb7401 split wmv2 encoder and decoder in their own files
aurel
parents:
diff changeset
19 */
b47573cb7401 split wmv2 encoder and decoder in their own files
aurel
parents:
diff changeset
20
b47573cb7401 split wmv2 encoder and decoder in their own files
aurel
parents:
diff changeset
21 #ifndef FFMPEG_WMV2_H
b47573cb7401 split wmv2 encoder and decoder in their own files
aurel
parents:
diff changeset
22 #define FFMPEG_WMV2_H
b47573cb7401 split wmv2 encoder and decoder in their own files
aurel
parents:
diff changeset
23
b47573cb7401 split wmv2 encoder and decoder in their own files
aurel
parents:
diff changeset
24 #include "avcodec.h"
b47573cb7401 split wmv2 encoder and decoder in their own files
aurel
parents:
diff changeset
25 #include "dsputil.h"
b47573cb7401 split wmv2 encoder and decoder in their own files
aurel
parents:
diff changeset
26 #include "mpegvideo.h"
b47573cb7401 split wmv2 encoder and decoder in their own files
aurel
parents:
diff changeset
27 #include "intrax8.h"
b47573cb7401 split wmv2 encoder and decoder in their own files
aurel
parents:
diff changeset
28
b47573cb7401 split wmv2 encoder and decoder in their own files
aurel
parents:
diff changeset
29 #define SKIP_TYPE_NONE 0
b47573cb7401 split wmv2 encoder and decoder in their own files
aurel
parents:
diff changeset
30 #define SKIP_TYPE_MPEG 1
b47573cb7401 split wmv2 encoder and decoder in their own files
aurel
parents:
diff changeset
31 #define SKIP_TYPE_ROW 2
b47573cb7401 split wmv2 encoder and decoder in their own files
aurel
parents:
diff changeset
32 #define SKIP_TYPE_COL 3
b47573cb7401 split wmv2 encoder and decoder in their own files
aurel
parents:
diff changeset
33
b47573cb7401 split wmv2 encoder and decoder in their own files
aurel
parents:
diff changeset
34
b47573cb7401 split wmv2 encoder and decoder in their own files
aurel
parents:
diff changeset
35 typedef struct Wmv2Context{
b47573cb7401 split wmv2 encoder and decoder in their own files
aurel
parents:
diff changeset
36 MpegEncContext s;
b47573cb7401 split wmv2 encoder and decoder in their own files
aurel
parents:
diff changeset
37 IntraX8Context x8;
b47573cb7401 split wmv2 encoder and decoder in their own files
aurel
parents:
diff changeset
38 int j_type_bit;
b47573cb7401 split wmv2 encoder and decoder in their own files
aurel
parents:
diff changeset
39 int j_type;
b47573cb7401 split wmv2 encoder and decoder in their own files
aurel
parents:
diff changeset
40 int abt_flag;
b47573cb7401 split wmv2 encoder and decoder in their own files
aurel
parents:
diff changeset
41 int abt_type;
b47573cb7401 split wmv2 encoder and decoder in their own files
aurel
parents:
diff changeset
42 int abt_type_table[6];
b47573cb7401 split wmv2 encoder and decoder in their own files
aurel
parents:
diff changeset
43 int per_mb_abt;
b47573cb7401 split wmv2 encoder and decoder in their own files
aurel
parents:
diff changeset
44 int per_block_abt;
b47573cb7401 split wmv2 encoder and decoder in their own files
aurel
parents:
diff changeset
45 int mspel_bit;
b47573cb7401 split wmv2 encoder and decoder in their own files
aurel
parents:
diff changeset
46 int cbp_table_index;
b47573cb7401 split wmv2 encoder and decoder in their own files
aurel
parents:
diff changeset
47 int top_left_mv_flag;
b47573cb7401 split wmv2 encoder and decoder in their own files
aurel
parents:
diff changeset
48 int per_mb_rl_bit;
b47573cb7401 split wmv2 encoder and decoder in their own files
aurel
parents:
diff changeset
49 int skip_type;
b47573cb7401 split wmv2 encoder and decoder in their own files
aurel
parents:
diff changeset
50 int hshift;
b47573cb7401 split wmv2 encoder and decoder in their own files
aurel
parents:
diff changeset
51
b47573cb7401 split wmv2 encoder and decoder in their own files
aurel
parents:
diff changeset
52 ScanTable abt_scantable[2];
6571
ad0c77d2b6ee Increase alignment for DCT block arrays from 8 to 16
superdump
parents: 5939
diff changeset
53 DECLARE_ALIGNED_16(DCTELEM, abt_block2[6][64]);
5939
b47573cb7401 split wmv2 encoder and decoder in their own files
aurel
parents:
diff changeset
54 }Wmv2Context;
b47573cb7401 split wmv2 encoder and decoder in their own files
aurel
parents:
diff changeset
55
b47573cb7401 split wmv2 encoder and decoder in their own files
aurel
parents:
diff changeset
56 void ff_wmv2_common_init(Wmv2Context * w);
b47573cb7401 split wmv2 encoder and decoder in their own files
aurel
parents:
diff changeset
57
b47573cb7401 split wmv2 encoder and decoder in their own files
aurel
parents:
diff changeset
58 #endif /* FFMPEG_WMV2_H */