[cvs] / xvidcore / src / utils / mbfunctions.h Repository:
ViewVC logotype

Annotation of /xvidcore/src/utils/mbfunctions.h

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.16 - (view) (download)

1 : edgomez 1.11 /*****************************************************************************
2 : Isibaar 1.1 *
3 : edgomez 1.11 * XVID MPEG-4 VIDEO CODEC
4 :     * - Motion estimation fuctions header file -
5 : Isibaar 1.1 *
6 : edgomez 1.14 * Copyright(C) 2002 Michael Militzer <isibaar@xvid.org>
7 : Isibaar 1.1 *
8 : edgomez 1.15 * This file is part of XviD, a free MPEG-4 video encoder/decoder
9 : Isibaar 1.1 *
10 : edgomez 1.15 * XviD is free software; you can redistribute it and/or modify it
11 :     * under the terms of the GNU General Public License as published by
12 : edgomez 1.11 * the Free Software Foundation; either version 2 of the License, or
13 :     * (at your option) any later version.
14 :     *
15 :     * This program is distributed in the hope that it will be useful,
16 :     * but WITHOUT ANY WARRANTY; without even the implied warranty of
17 :     * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 :     * GNU General Public License for more details.
19 :     *
20 :     * You should have received a copy of the GNU General Public License
21 :     * along with this program; if not, write to the Free Software
22 :     * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
23 :     *
24 : edgomez 1.15 * Under section 8 of the GNU General Public License, the copyright
25 :     * holders of XVID explicitly forbid distribution in the following
26 :     * countries:
27 :     *
28 :     * - Japan
29 :     * - United States of America
30 :     *
31 :     * Linking XviD statically or dynamically with other modules is making a
32 :     * combined work based on XviD. Thus, the terms and conditions of the
33 :     * GNU General Public License cover the whole combination.
34 :     *
35 :     * As a special exception, the copyright holders of XviD give you
36 :     * permission to link XviD with independent modules that communicate with
37 :     * XviD solely through the VFW1.1 and DShow interfaces, regardless of the
38 :     * license terms of these independent modules, and to copy and distribute
39 :     * the resulting combined work under terms of your choice, provided that
40 :     * every copy of the combined work is accompanied by a complete copy of
41 :     * the source code of XviD (the version of XviD used to produce the
42 :     * combined work), being distributed under the terms of the GNU General
43 :     * Public License plus this exception. An independent module is a module
44 :     * which is not derived from or based on XviD.
45 :     *
46 :     * Note that people who make modified versions of XviD are not obligated
47 :     * to grant this special exception for their modified versions; it is
48 :     * their choice whether to do so. The GNU General Public License gives
49 :     * permission to release a modified version without this exception; this
50 :     * exception also makes it possible to release a modified version which
51 :     * carries forward this exception.
52 :     *
53 : suxen_drol 1.16 * $Id: mbfunctions.h,v 1.15 2002/11/17 00:51:10 edgomez Exp $
54 : edgomez 1.11 *
55 :     ****************************************************************************/
56 : Isibaar 1.1
57 : edgomez 1.11 #ifndef _MBFUNCTIONS_H
58 :     #define _MBFUNCTIONS_H
59 : Isibaar 1.1
60 :     #include "../encoder.h"
61 :     #include "../bitstream/bitstream.h"
62 :    
63 : edgomez 1.11 /*****************************************************************************
64 :     * Prototypes
65 :     ****************************************************************************/
66 : Isibaar 1.1
67 :    
68 : edgomez 1.11 /* MotionEstimation */
69 : Isibaar 1.1
70 : edgomez 1.6 bool MotionEstimation(MBParam * const pParam,
71 :     FRAMEINFO * const current,
72 :     FRAMEINFO * const reference,
73 :     const IMAGE * const pRefH,
74 :     const IMAGE * const pRefV,
75 :     const IMAGE * const pRefHV,
76 :     const uint32_t iLimit);
77 : Isibaar 1.1
78 :    
79 : edgomez 1.11
80 : chl 1.7
81 :    
82 : edgomez 1.11 /* MBMotionCompensation */
83 : chl 1.7
84 : edgomez 1.6 void MBMotionCompensation(MACROBLOCK * const pMB,
85 :     const uint32_t j,
86 :     const uint32_t i,
87 :     const IMAGE * const pRef,
88 :     const IMAGE * const pRefH,
89 :     const IMAGE * const pRefV,
90 :     const IMAGE * const pRefHV,
91 :     IMAGE * const pCurrent,
92 :     int16_t dct_codes[6 * 64],
93 :     const uint32_t width,
94 :     const uint32_t height,
95 :     const uint32_t edged_width,
96 :     const uint32_t rounding);
97 : Isibaar 1.1
98 :    
99 : edgomez 1.11 /* MBTransQuant.c */
100 : Isibaar 1.1
101 : edgomez 1.6 void MBTransQuantIntra(const MBParam * pParam,
102 :     FRAMEINFO * frame,
103 :     MACROBLOCK * pMB,
104 : edgomez 1.11 const uint32_t x_pos, /* <-- The x position of the MB to be searched */
105 :     const uint32_t y_pos, /* <-- The y position of the MB to be searched */
106 :     int16_t data[6 * 64], /* <-> the data of the MB to be coded */
107 :     int16_t qcoeff[6 * 64]); /* <-> the quantized DCT coefficients */
108 :    
109 : edgomez 1.6
110 :    
111 : chl 1.9 void MBTransQuantIntra2(const MBParam * pParam,
112 : edgomez 1.11 FRAMEINFO * frame,
113 :     MACROBLOCK * pMB,
114 :     const uint32_t x_pos, /* <-- The x position of the MB to be searched */
115 :     const uint32_t y_pos, /* <-- The y position of the MB to be searched */
116 :     int16_t data[6 * 64], /* <-> the data of the MB to be coded */
117 :     int16_t qcoeff[6 * 64]); /* <-> the quantized DCT coefficients */
118 :    
119 : chl 1.9
120 :    
121 :     uint8_t MBTransQuantInter(const MBParam * pParam,
122 :     FRAMEINFO * frame,
123 :     MACROBLOCK * pMB,
124 :     const uint32_t x_pos,
125 :     const uint32_t y_pos,
126 :     int16_t data[6 * 64],
127 :     int16_t qcoeff[6 * 64]);
128 :    
129 :    
130 :     uint8_t MBTransQuantInter2(const MBParam * pParam,
131 : edgomez 1.11 FRAMEINFO * frame,
132 :     MACROBLOCK * pMB,
133 :     const uint32_t x_pos,
134 :     const uint32_t y_pos,
135 :     int16_t data[6 * 64],
136 :     int16_t qcoeff[6 * 64]);
137 : chl 1.9
138 :     uint8_t MBTransQuantInterBVOP(const MBParam * pParam,
139 : edgomez 1.11 FRAMEINFO * frame,
140 :     MACROBLOCK * pMB,
141 :     int16_t data[6 * 64],
142 :     int16_t qcoeff[6 * 64]);
143 : edgomez 1.6
144 : chl 1.9 void MBTrans(const MBParam * pParam,
145 : edgomez 1.11 FRAMEINFO * frame,
146 :     MACROBLOCK * pMB,
147 :     const uint32_t x_pos,
148 :     const uint32_t y_pos,
149 :     int16_t data[6 * 64]);
150 : chl 1.9
151 :     void MBfDCT(const MBParam * pParam,
152 :     FRAMEINFO * frame,
153 :     MACROBLOCK * pMB,
154 :     int16_t data[6 * 64]);
155 :    
156 : edgomez 1.11 uint8_t MBQuantInter(const MBParam * pParam,
157 :     const int iQuant,
158 :     int16_t data[6 * 64],
159 :     int16_t qcoeff[6 * 64]);
160 : chl 1.9
161 :     void MBQuantDeQuantIntra(const MBParam * pParam,
162 :     FRAMEINFO * frame,
163 :     MACROBLOCK *pMB,
164 :     int16_t qcoeff[6 * 64],
165 :     int16_t data[6*64]);
166 :    
167 : edgomez 1.11 void MBQuantIntra(const MBParam * pParam,
168 :     FRAMEINFO * frame,
169 :     MACROBLOCK *pMB,
170 : chl 1.13 int16_t data[6*64],
171 :     int16_t qcoeff[6 * 64]);
172 : edgomez 1.6
173 : chl 1.9 void MBDeQuantIntra(const MBParam * pParam,
174 :     const int iQuant,
175 :     int16_t qcoeff[6 * 64],
176 :     int16_t data[6*64]);
177 :    
178 :     void MBDeQuantInter(const MBParam * pParam,
179 :     const int iQuant,
180 :     int16_t data[6 * 64],
181 :     int16_t qcoeff[6 * 64],
182 :     const uint8_t cbp);
183 :    
184 :    
185 : edgomez 1.12 void MBiDCT(int16_t data[6 * 64],
186 : edgomez 1.11 const uint8_t cbp);
187 : h 1.2
188 :    
189 : edgomez 1.11 void MBTransAdd(const MBParam * pParam,
190 :     FRAMEINFO * frame,
191 :     MACROBLOCK * pMB,
192 :     const uint32_t x_pos,
193 :     const uint32_t y_pos,
194 :     int16_t data[6 * 64],
195 :     const uint8_t cbp);
196 : h 1.2
197 : Isibaar 1.1
198 :    
199 : edgomez 1.11 /* interlacing */
200 : Isibaar 1.1
201 : edgomez 1.11 uint32_t MBDecideFieldDCT(int16_t data[6 * 64]); /* <- decide whether to use field-based DCT for interlacing */
202 : chl 1.8
203 : edgomez 1.11 void MBFrameToField(int16_t data[6 * 64]); /* de-interlace vertical Y blocks */
204 : chl 1.8
205 : edgomez 1.6
206 : edgomez 1.11 /* MBCoding.c */
207 : edgomez 1.6
208 : edgomez 1.11 void MBSkip(Bitstream * bs); /* just the bitstream. Since MB is skipped, no info is needed */
209 : edgomez 1.6
210 :    
211 : edgomez 1.11 void MBCoding(const FRAMEINFO * frame, /* <-- the parameter for coding of the bitstream */
212 :     MACROBLOCK * pMB, /* <-- Info of the MB to be coded */
213 :     int16_t qcoeff[6 * 64], /* <-- the quantized DCT coefficients */
214 :     Bitstream * bs, /* <-> the bitstream */
215 :     Statistics * pStat); /* <-> statistical data collected for current frame */
216 : Isibaar 1.1
217 :     #endif

No admin address has been configured
ViewVC Help
Powered by ViewVC 1.0.4