Mercurial > libavcodec.hg
annotate msmpeg4.h @ 11352:6e0af2cfdcfe libavcodec
Do MC and IDCT in coding (hilbert) order
This increases the slice size to 64 pixels, due to having to decode an
entire chroma superblock row per slice.
This can be up to 6% slower depending on clip and CPU, but is necessary
for future optimizations that gain significantly more than was lost.
author | conrad |
---|---|
date | Wed, 03 Mar 2010 23:27:40 +0000 |
parents | c4898c0739be |
children | 7dd2a45249a9 |
rev | line source |
---|---|
4967
6d45158e0249
disable reference to msmpeg4 and wmv2 code when those codecs are not compiled in
aurel
parents:
diff
changeset
|
1 /* |
6d45158e0249
disable reference to msmpeg4 and wmv2 code when those codecs are not compiled in
aurel
parents:
diff
changeset
|
2 * MSMPEG4 backend for ffmpeg encoder and decoder |
6d45158e0249
disable reference to msmpeg4 and wmv2 code when those codecs are not compiled in
aurel
parents:
diff
changeset
|
3 * copyright (c) 2007 Aurelien Jacobs <aurel@gnuage.org> |
6d45158e0249
disable reference to msmpeg4 and wmv2 code when those codecs are not compiled in
aurel
parents:
diff
changeset
|
4 * |
6d45158e0249
disable reference to msmpeg4 and wmv2 code when those codecs are not compiled in
aurel
parents:
diff
changeset
|
5 * This file is part of FFmpeg. |
6d45158e0249
disable reference to msmpeg4 and wmv2 code when those codecs are not compiled in
aurel
parents:
diff
changeset
|
6 * |
6d45158e0249
disable reference to msmpeg4 and wmv2 code when those codecs are not compiled in
aurel
parents:
diff
changeset
|
7 * FFmpeg is free software; you can redistribute it and/or |
6d45158e0249
disable reference to msmpeg4 and wmv2 code when those codecs are not compiled in
aurel
parents:
diff
changeset
|
8 * modify it under the terms of the GNU Lesser General Public |
6d45158e0249
disable reference to msmpeg4 and wmv2 code when those codecs are not compiled in
aurel
parents:
diff
changeset
|
9 * License as published by the Free Software Foundation; either |
6d45158e0249
disable reference to msmpeg4 and wmv2 code when those codecs are not compiled in
aurel
parents:
diff
changeset
|
10 * version 2.1 of the License, or (at your option) any later version. |
6d45158e0249
disable reference to msmpeg4 and wmv2 code when those codecs are not compiled in
aurel
parents:
diff
changeset
|
11 * |
6d45158e0249
disable reference to msmpeg4 and wmv2 code when those codecs are not compiled in
aurel
parents:
diff
changeset
|
12 * FFmpeg is distributed in the hope that it will be useful, |
6d45158e0249
disable reference to msmpeg4 and wmv2 code when those codecs are not compiled in
aurel
parents:
diff
changeset
|
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
6d45158e0249
disable reference to msmpeg4 and wmv2 code when those codecs are not compiled in
aurel
parents:
diff
changeset
|
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
6d45158e0249
disable reference to msmpeg4 and wmv2 code when those codecs are not compiled in
aurel
parents:
diff
changeset
|
15 * Lesser General Public License for more details. |
6d45158e0249
disable reference to msmpeg4 and wmv2 code when those codecs are not compiled in
aurel
parents:
diff
changeset
|
16 * |
6d45158e0249
disable reference to msmpeg4 and wmv2 code when those codecs are not compiled in
aurel
parents:
diff
changeset
|
17 * You should have received a copy of the GNU Lesser General Public |
6d45158e0249
disable reference to msmpeg4 and wmv2 code when those codecs are not compiled in
aurel
parents:
diff
changeset
|
18 * License along with FFmpeg; if not, write to the Free Software |
6d45158e0249
disable reference to msmpeg4 and wmv2 code when those codecs are not compiled in
aurel
parents:
diff
changeset
|
19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA |
6d45158e0249
disable reference to msmpeg4 and wmv2 code when those codecs are not compiled in
aurel
parents:
diff
changeset
|
20 */ |
6d45158e0249
disable reference to msmpeg4 and wmv2 code when those codecs are not compiled in
aurel
parents:
diff
changeset
|
21 |
6d45158e0249
disable reference to msmpeg4 and wmv2 code when those codecs are not compiled in
aurel
parents:
diff
changeset
|
22 /** |
8718
e9d9d946f213
Use full internal pathname in doxygen @file directives.
diego
parents:
8596
diff
changeset
|
23 * @file libavcodec/msmpeg4.h |
4967
6d45158e0249
disable reference to msmpeg4 and wmv2 code when those codecs are not compiled in
aurel
parents:
diff
changeset
|
24 */ |
6d45158e0249
disable reference to msmpeg4 and wmv2 code when those codecs are not compiled in
aurel
parents:
diff
changeset
|
25 |
7760 | 26 #ifndef AVCODEC_MSMPEG4_H |
27 #define AVCODEC_MSMPEG4_H | |
4967
6d45158e0249
disable reference to msmpeg4 and wmv2 code when those codecs are not compiled in
aurel
parents:
diff
changeset
|
28 |
6d45158e0249
disable reference to msmpeg4 and wmv2 code when those codecs are not compiled in
aurel
parents:
diff
changeset
|
29 #include "config.h" |
5884 | 30 #include "avcodec.h" |
31 #include "dsputil.h" | |
32 #include "mpegvideo.h" | |
33 | |
34 #define INTER_INTRA_VLC_BITS 3 | |
35 #define MB_NON_INTRA_VLC_BITS 9 | |
36 #define MB_INTRA_VLC_BITS 9 | |
37 | |
38 extern VLC ff_mb_non_intra_vlc[4]; | |
39 extern VLC ff_inter_intra_vlc; | |
40 | |
41 void ff_msmpeg4_code012(PutBitContext *pb, int n); | |
42 void ff_msmpeg4_encode_block(MpegEncContext * s, DCTELEM * block, int n); | |
43 void ff_msmpeg4_handle_slices(MpegEncContext *s); | |
44 void ff_msmpeg4_encode_motion(MpegEncContext * s, int mx, int my); | |
45 int ff_msmpeg4_coded_block_pred(MpegEncContext * s, int n, | |
46 uint8_t **coded_block_ptr); | |
47 int ff_msmpeg4_decode_motion(MpegEncContext * s, int *mx_ptr, int *my_ptr); | |
48 int ff_msmpeg4_decode_block(MpegEncContext * s, DCTELEM * block, | |
49 int n, int coded, const uint8_t *scan_table); | |
50 int ff_wmv2_decode_mb(MpegEncContext *s, DCTELEM block[6][64]); | |
4967
6d45158e0249
disable reference to msmpeg4 and wmv2 code when those codecs are not compiled in
aurel
parents:
diff
changeset
|
51 |
8596
68e959302527
replace all occurrence of ENABLE_ by the corresponding CONFIG_, HAVE_ or ARCH_
aurel
parents:
8458
diff
changeset
|
52 #define CONFIG_MSMPEG4_DECODER (CONFIG_MSMPEG4V1_DECODER || \ |
68e959302527
replace all occurrence of ENABLE_ by the corresponding CONFIG_, HAVE_ or ARCH_
aurel
parents:
8458
diff
changeset
|
53 CONFIG_MSMPEG4V2_DECODER || \ |
68e959302527
replace all occurrence of ENABLE_ by the corresponding CONFIG_, HAVE_ or ARCH_
aurel
parents:
8458
diff
changeset
|
54 CONFIG_MSMPEG4V3_DECODER || \ |
68e959302527
replace all occurrence of ENABLE_ by the corresponding CONFIG_, HAVE_ or ARCH_
aurel
parents:
8458
diff
changeset
|
55 CONFIG_WMV2_DECODER || \ |
9995
3141f69e3905
Do not check for both CONFIG_VC1_DECODER and CONFIG_WMV3_DECODER,
diego
parents:
8718
diff
changeset
|
56 CONFIG_VC1_DECODER) |
8596
68e959302527
replace all occurrence of ENABLE_ by the corresponding CONFIG_, HAVE_ or ARCH_
aurel
parents:
8458
diff
changeset
|
57 #define CONFIG_MSMPEG4_ENCODER (CONFIG_MSMPEG4V1_ENCODER || \ |
68e959302527
replace all occurrence of ENABLE_ by the corresponding CONFIG_, HAVE_ or ARCH_
aurel
parents:
8458
diff
changeset
|
58 CONFIG_MSMPEG4V2_ENCODER || \ |
68e959302527
replace all occurrence of ENABLE_ by the corresponding CONFIG_, HAVE_ or ARCH_
aurel
parents:
8458
diff
changeset
|
59 CONFIG_MSMPEG4V3_ENCODER || \ |
68e959302527
replace all occurrence of ENABLE_ by the corresponding CONFIG_, HAVE_ or ARCH_
aurel
parents:
8458
diff
changeset
|
60 CONFIG_WMV2_ENCODER) |
4967
6d45158e0249
disable reference to msmpeg4 and wmv2 code when those codecs are not compiled in
aurel
parents:
diff
changeset
|
61 |
7760 | 62 #endif /* AVCODEC_MSMPEG4_H */ |