Mercurial > libavcodec.hg
annotate msmpeg4data.h @ 6017:e1404acccac3 libavcodec
Actually return with an error condition if we're being asked to deal with too
many reference frames. Also check max num ref frames against our internal
ref buffer sizes.
Part of fix for roundup issue 281
author | heydowns |
---|---|
date | Fri, 14 Dec 2007 05:48:27 +0000 |
parents | 1d83e9c34641 |
children | bd1a8a378368 |
rev | line source |
---|---|
3699
c537a97eec66
Add official LGPL license headers to the files that were missing them.
diego
parents:
2967
diff
changeset
|
1 /* |
c537a97eec66
Add official LGPL license headers to the files that were missing them.
diego
parents:
2967
diff
changeset
|
2 * MSMPEG4 backend for ffmpeg encoder and decoder |
c537a97eec66
Add official LGPL license headers to the files that were missing them.
diego
parents:
2967
diff
changeset
|
3 * copyright (c) 2001 Fabrice Bellard |
c537a97eec66
Add official LGPL license headers to the files that were missing them.
diego
parents:
2967
diff
changeset
|
4 * copyright (c) 2002-2004 Michael Niedermayer <michaelni@gmx.at> |
c537a97eec66
Add official LGPL license headers to the files that were missing them.
diego
parents:
2967
diff
changeset
|
5 * |
5214 | 6 * msmpeg4v1 & v2 stuff by Michael Niedermayer <michaelni@gmx.at> |
7 * | |
3947
c8c591fe26f8
Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents:
3699
diff
changeset
|
8 * This file is part of FFmpeg. |
c8c591fe26f8
Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents:
3699
diff
changeset
|
9 * |
c8c591fe26f8
Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents:
3699
diff
changeset
|
10 * FFmpeg is free software; you can redistribute it and/or |
3699
c537a97eec66
Add official LGPL license headers to the files that were missing them.
diego
parents:
2967
diff
changeset
|
11 * modify it under the terms of the GNU Lesser General Public |
c537a97eec66
Add official LGPL license headers to the files that were missing them.
diego
parents:
2967
diff
changeset
|
12 * 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:
3699
diff
changeset
|
13 * version 2.1 of the License, or (at your option) any later version. |
3699
c537a97eec66
Add official LGPL license headers to the files that were missing them.
diego
parents:
2967
diff
changeset
|
14 * |
3947
c8c591fe26f8
Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents:
3699
diff
changeset
|
15 * FFmpeg is distributed in the hope that it will be useful, |
3699
c537a97eec66
Add official LGPL license headers to the files that were missing them.
diego
parents:
2967
diff
changeset
|
16 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
c537a97eec66
Add official LGPL license headers to the files that were missing them.
diego
parents:
2967
diff
changeset
|
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
c537a97eec66
Add official LGPL license headers to the files that were missing them.
diego
parents:
2967
diff
changeset
|
18 * Lesser General Public License for more details. |
c537a97eec66
Add official LGPL license headers to the files that were missing them.
diego
parents:
2967
diff
changeset
|
19 * |
c537a97eec66
Add official LGPL license headers to the files that were missing them.
diego
parents:
2967
diff
changeset
|
20 * 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:
3699
diff
changeset
|
21 * License along with FFmpeg; if not, write to the Free Software |
3699
c537a97eec66
Add official LGPL license headers to the files that were missing them.
diego
parents:
2967
diff
changeset
|
22 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA |
c537a97eec66
Add official LGPL license headers to the files that were missing them.
diego
parents:
2967
diff
changeset
|
23 */ |
c537a97eec66
Add official LGPL license headers to the files that were missing them.
diego
parents:
2967
diff
changeset
|
24 |
1106 | 25 /** |
26 * @file msmpeg4data.h | |
2967 | 27 * MSMPEG4 data tables. |
0 | 28 */ |
29 | |
5830
1d83e9c34641
Add FFMPEG_ prefix to all multiple inclusion guards.
diego
parents:
5543
diff
changeset
|
30 #ifndef FFMPEG_MSMPEG4DATA_H |
1d83e9c34641
Add FFMPEG_ prefix to all multiple inclusion guards.
diego
parents:
5543
diff
changeset
|
31 #define FFMPEG_MSMPEG4DATA_H |
0 | 32 |
4964
9fb6d2125500
split msmpeg4 data to easily share some of it with vc1.c
aurel
parents:
4887
diff
changeset
|
33 #include "common.h" |
9fb6d2125500
split msmpeg4 data to easily share some of it with vc1.c
aurel
parents:
4887
diff
changeset
|
34 #include "bitstream.h" |
5543
56bc8fbd9aee
Move msmpeg4 tables from a header file to msmpegdata.c.
diego
parents:
5214
diff
changeset
|
35 #include "rl.h" |
56bc8fbd9aee
Move msmpeg4 tables from a header file to msmpegdata.c.
diego
parents:
5214
diff
changeset
|
36 |
56bc8fbd9aee
Move msmpeg4 tables from a header file to msmpegdata.c.
diego
parents:
5214
diff
changeset
|
37 /* motion vector table */ |
56bc8fbd9aee
Move msmpeg4 tables from a header file to msmpegdata.c.
diego
parents:
5214
diff
changeset
|
38 typedef struct MVTable { |
56bc8fbd9aee
Move msmpeg4 tables from a header file to msmpegdata.c.
diego
parents:
5214
diff
changeset
|
39 int n; |
56bc8fbd9aee
Move msmpeg4 tables from a header file to msmpegdata.c.
diego
parents:
5214
diff
changeset
|
40 const uint16_t *table_mv_code; |
56bc8fbd9aee
Move msmpeg4 tables from a header file to msmpegdata.c.
diego
parents:
5214
diff
changeset
|
41 const uint8_t *table_mv_bits; |
56bc8fbd9aee
Move msmpeg4 tables from a header file to msmpegdata.c.
diego
parents:
5214
diff
changeset
|
42 const uint8_t *table_mvx; |
56bc8fbd9aee
Move msmpeg4 tables from a header file to msmpegdata.c.
diego
parents:
5214
diff
changeset
|
43 const uint8_t *table_mvy; |
56bc8fbd9aee
Move msmpeg4 tables from a header file to msmpegdata.c.
diego
parents:
5214
diff
changeset
|
44 uint16_t *table_mv_index; /* encoding: convert mv to index in table_mv */ |
56bc8fbd9aee
Move msmpeg4 tables from a header file to msmpegdata.c.
diego
parents:
5214
diff
changeset
|
45 VLC vlc; /* decoding: vlc */ |
56bc8fbd9aee
Move msmpeg4 tables from a header file to msmpegdata.c.
diego
parents:
5214
diff
changeset
|
46 } MVTable; |
0 | 47 |
4964
9fb6d2125500
split msmpeg4 data to easily share some of it with vc1.c
aurel
parents:
4887
diff
changeset
|
48 extern VLC ff_msmp4_mb_i_vlc; |
9fb6d2125500
split msmpeg4 data to easily share some of it with vc1.c
aurel
parents:
4887
diff
changeset
|
49 extern VLC ff_msmp4_dc_luma_vlc[2]; |
9fb6d2125500
split msmpeg4 data to easily share some of it with vc1.c
aurel
parents:
4887
diff
changeset
|
50 extern VLC ff_msmp4_dc_chroma_vlc[2]; |
0 | 51 |
4964
9fb6d2125500
split msmpeg4 data to easily share some of it with vc1.c
aurel
parents:
4887
diff
changeset
|
52 /* intra picture macro block coded block pattern */ |
9fb6d2125500
split msmpeg4 data to easily share some of it with vc1.c
aurel
parents:
4887
diff
changeset
|
53 extern const uint16_t ff_msmp4_mb_i_table[64][2]; |
0 | 54 |
5543
56bc8fbd9aee
Move msmpeg4 tables from a header file to msmpegdata.c.
diego
parents:
5214
diff
changeset
|
55 extern const uint8_t cbpy_tab[16][2]; |
56bc8fbd9aee
Move msmpeg4 tables from a header file to msmpegdata.c.
diego
parents:
5214
diff
changeset
|
56 |
56bc8fbd9aee
Move msmpeg4 tables from a header file to msmpegdata.c.
diego
parents:
5214
diff
changeset
|
57 extern const uint8_t DCtab_lum[13][2]; |
56bc8fbd9aee
Move msmpeg4 tables from a header file to msmpegdata.c.
diego
parents:
5214
diff
changeset
|
58 extern const uint8_t DCtab_chrom[13][2]; |
56bc8fbd9aee
Move msmpeg4 tables from a header file to msmpegdata.c.
diego
parents:
5214
diff
changeset
|
59 |
56bc8fbd9aee
Move msmpeg4 tables from a header file to msmpegdata.c.
diego
parents:
5214
diff
changeset
|
60 extern const uint8_t mvtab[33][2]; |
56bc8fbd9aee
Move msmpeg4 tables from a header file to msmpegdata.c.
diego
parents:
5214
diff
changeset
|
61 |
56bc8fbd9aee
Move msmpeg4 tables from a header file to msmpegdata.c.
diego
parents:
5214
diff
changeset
|
62 extern const uint8_t intra_MCBPC_code[9]; |
56bc8fbd9aee
Move msmpeg4 tables from a header file to msmpegdata.c.
diego
parents:
5214
diff
changeset
|
63 extern const uint8_t intra_MCBPC_bits[9]; |
56bc8fbd9aee
Move msmpeg4 tables from a header file to msmpegdata.c.
diego
parents:
5214
diff
changeset
|
64 |
56bc8fbd9aee
Move msmpeg4 tables from a header file to msmpegdata.c.
diego
parents:
5214
diff
changeset
|
65 extern const uint8_t inter_MCBPC_code[28]; |
56bc8fbd9aee
Move msmpeg4 tables from a header file to msmpegdata.c.
diego
parents:
5214
diff
changeset
|
66 extern const uint8_t inter_MCBPC_bits[28]; |
56bc8fbd9aee
Move msmpeg4 tables from a header file to msmpegdata.c.
diego
parents:
5214
diff
changeset
|
67 |
56bc8fbd9aee
Move msmpeg4 tables from a header file to msmpegdata.c.
diego
parents:
5214
diff
changeset
|
68 #define WMV1_SCANTABLE_COUNT 4 |
56bc8fbd9aee
Move msmpeg4 tables from a header file to msmpegdata.c.
diego
parents:
5214
diff
changeset
|
69 |
56bc8fbd9aee
Move msmpeg4 tables from a header file to msmpegdata.c.
diego
parents:
5214
diff
changeset
|
70 extern const uint8_t *wmv1_scantable[WMV1_SCANTABLE_COUNT+1]; |
56bc8fbd9aee
Move msmpeg4 tables from a header file to msmpegdata.c.
diego
parents:
5214
diff
changeset
|
71 |
56bc8fbd9aee
Move msmpeg4 tables from a header file to msmpegdata.c.
diego
parents:
5214
diff
changeset
|
72 #define NB_RL_TABLES 6 |
56bc8fbd9aee
Move msmpeg4 tables from a header file to msmpegdata.c.
diego
parents:
5214
diff
changeset
|
73 |
56bc8fbd9aee
Move msmpeg4 tables from a header file to msmpegdata.c.
diego
parents:
5214
diff
changeset
|
74 extern RLTable rl_table[NB_RL_TABLES]; |
56bc8fbd9aee
Move msmpeg4 tables from a header file to msmpegdata.c.
diego
parents:
5214
diff
changeset
|
75 |
56bc8fbd9aee
Move msmpeg4 tables from a header file to msmpegdata.c.
diego
parents:
5214
diff
changeset
|
76 extern const uint8_t wmv1_y_dc_scale_table[32]; |
56bc8fbd9aee
Move msmpeg4 tables from a header file to msmpegdata.c.
diego
parents:
5214
diff
changeset
|
77 extern const uint8_t wmv1_c_dc_scale_table[32]; |
56bc8fbd9aee
Move msmpeg4 tables from a header file to msmpegdata.c.
diego
parents:
5214
diff
changeset
|
78 extern const uint8_t old_ff_y_dc_scale_table[32]; |
56bc8fbd9aee
Move msmpeg4 tables from a header file to msmpegdata.c.
diego
parents:
5214
diff
changeset
|
79 extern const uint8_t old_ff_c_dc_scale_table[32]; |
56bc8fbd9aee
Move msmpeg4 tables from a header file to msmpegdata.c.
diego
parents:
5214
diff
changeset
|
80 |
56bc8fbd9aee
Move msmpeg4 tables from a header file to msmpegdata.c.
diego
parents:
5214
diff
changeset
|
81 extern MVTable mv_tables[2]; |
56bc8fbd9aee
Move msmpeg4 tables from a header file to msmpegdata.c.
diego
parents:
5214
diff
changeset
|
82 |
56bc8fbd9aee
Move msmpeg4 tables from a header file to msmpegdata.c.
diego
parents:
5214
diff
changeset
|
83 extern const uint8_t v2_mb_type[8][2]; |
56bc8fbd9aee
Move msmpeg4 tables from a header file to msmpegdata.c.
diego
parents:
5214
diff
changeset
|
84 extern const uint8_t v2_intra_cbpc[4][2]; |
56bc8fbd9aee
Move msmpeg4 tables from a header file to msmpegdata.c.
diego
parents:
5214
diff
changeset
|
85 |
56bc8fbd9aee
Move msmpeg4 tables from a header file to msmpegdata.c.
diego
parents:
5214
diff
changeset
|
86 extern const uint32_t table_mb_non_intra[128][2]; |
56bc8fbd9aee
Move msmpeg4 tables from a header file to msmpegdata.c.
diego
parents:
5214
diff
changeset
|
87 extern const uint8_t table_inter_intra[4][2]; |
56bc8fbd9aee
Move msmpeg4 tables from a header file to msmpegdata.c.
diego
parents:
5214
diff
changeset
|
88 |
56bc8fbd9aee
Move msmpeg4 tables from a header file to msmpegdata.c.
diego
parents:
5214
diff
changeset
|
89 extern const uint32_t ff_table0_dc_lum[120][2]; |
56bc8fbd9aee
Move msmpeg4 tables from a header file to msmpegdata.c.
diego
parents:
5214
diff
changeset
|
90 extern const uint32_t ff_table1_dc_lum[120][2]; |
56bc8fbd9aee
Move msmpeg4 tables from a header file to msmpegdata.c.
diego
parents:
5214
diff
changeset
|
91 extern const uint32_t ff_table0_dc_chroma[120][2]; |
56bc8fbd9aee
Move msmpeg4 tables from a header file to msmpegdata.c.
diego
parents:
5214
diff
changeset
|
92 extern const uint32_t ff_table1_dc_chroma[120][2]; |
56bc8fbd9aee
Move msmpeg4 tables from a header file to msmpegdata.c.
diego
parents:
5214
diff
changeset
|
93 |
56bc8fbd9aee
Move msmpeg4 tables from a header file to msmpegdata.c.
diego
parents:
5214
diff
changeset
|
94 #define WMV2_INTER_CBP_TABLE_COUNT 4 |
56bc8fbd9aee
Move msmpeg4 tables from a header file to msmpegdata.c.
diego
parents:
5214
diff
changeset
|
95 extern const uint32_t (*wmv2_inter_table[WMV2_INTER_CBP_TABLE_COUNT])[2]; |
56bc8fbd9aee
Move msmpeg4 tables from a header file to msmpegdata.c.
diego
parents:
5214
diff
changeset
|
96 |
56bc8fbd9aee
Move msmpeg4 tables from a header file to msmpegdata.c.
diego
parents:
5214
diff
changeset
|
97 extern const uint8_t wmv2_scantableA[64]; |
56bc8fbd9aee
Move msmpeg4 tables from a header file to msmpegdata.c.
diego
parents:
5214
diff
changeset
|
98 extern const uint8_t wmv2_scantableB[64]; |
56bc8fbd9aee
Move msmpeg4 tables from a header file to msmpegdata.c.
diego
parents:
5214
diff
changeset
|
99 |
5830
1d83e9c34641
Add FFMPEG_ prefix to all multiple inclusion guards.
diego
parents:
5543
diff
changeset
|
100 #endif /* FFMPEG_MSMPEG4DATA_H */ |