[svn] / branches / dev-api-4 / xvidcore / src / utils / mbfunctions.h Repository:
ViewVC logotype

Annotation of /branches/dev-api-4/xvidcore/src/utils/mbfunctions.h

Parent Directory Parent Directory | Revision Log Revision Log


Revision 686 - (view) (download)
Original Path: trunk/xvidcore/src/utils/mbfunctions.h

1 : edgomez 420 /*****************************************************************************
2 : Isibaar 3 *
3 : edgomez 420 * XVID MPEG-4 VIDEO CODEC
4 :     * - Motion estimation fuctions header file -
5 : Isibaar 3 *
6 : edgomez 603 * Copyright(C) 2002 Michael Militzer <isibaar@xvid.org>
7 : Isibaar 3 *
8 : edgomez 654 * This file is part of XviD, a free MPEG-4 video encoder/decoder
9 : Isibaar 3 *
10 : edgomez 654 * 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 420 * 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 654 * Under section 8 of the GNU General Public License, the copyright
25 :     * holders of XVID explicitly forbid distribution in the following
26 :     * countries:
27 : edgomez 420 *
28 : edgomez 654 * - 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 686 * $Id: mbfunctions.h,v 1.16 2002-11-28 07:27:37 suxen_drol Exp $
54 : edgomez 654 *
55 : edgomez 420 ****************************************************************************/
56 : Isibaar 3
57 : edgomez 420 #ifndef _MBFUNCTIONS_H
58 :     #define _MBFUNCTIONS_H
59 : Isibaar 3
60 :     #include "../encoder.h"
61 :     #include "../bitstream/bitstream.h"
62 :    
63 : edgomez 420 /*****************************************************************************
64 :     * Prototypes
65 :     ****************************************************************************/
66 : Isibaar 3
67 :    
68 : edgomez 420 /* MotionEstimation */
69 : Isibaar 3
70 : edgomez 195 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 3
78 :    
79 : chl 259
80 :    
81 :    
82 : edgomez 420 /* MBMotionCompensation */
83 :    
84 : edgomez 195 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 3
98 :    
99 : edgomez 420 /* MBTransQuant.c */
100 : Isibaar 3
101 : edgomez 195 void MBTransQuantIntra(const MBParam * pParam,
102 :     FRAMEINFO * frame,
103 :     MACROBLOCK * pMB,
104 : edgomez 420 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 : Isibaar 3
110 :    
111 : chl 368 void MBTransQuantIntra2(const MBParam * pParam,
112 : edgomez 420 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 : edgomez 195
120 : chl 368
121 :     uint8_t MBTransQuantInter(const MBParam * pParam,
122 : suxen_drol 136 FRAMEINFO * frame,
123 : edgomez 195 MACROBLOCK * pMB,
124 : chl 368 const uint32_t x_pos,
125 :     const uint32_t y_pos,
126 :     int16_t data[6 * 64],
127 :     int16_t qcoeff[6 * 64]);
128 : Isibaar 3
129 :    
130 : chl 368 uint8_t MBTransQuantInter2(const MBParam * pParam,
131 : edgomez 420 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 : edgomez 195
138 : chl 368 uint8_t MBTransQuantInterBVOP(const MBParam * pParam,
139 : edgomez 420 FRAMEINFO * frame,
140 :     MACROBLOCK * pMB,
141 :     int16_t data[6 * 64],
142 :     int16_t qcoeff[6 * 64]);
143 : edgomez 195
144 : chl 368 void MBTrans(const MBParam * pParam,
145 : edgomez 420 FRAMEINFO * frame,
146 :     MACROBLOCK * pMB,
147 :     const uint32_t x_pos,
148 :     const uint32_t y_pos,
149 :     int16_t data[6 * 64]);
150 : edgomez 195
151 : chl 368 void MBfDCT(const MBParam * pParam,
152 :     FRAMEINFO * frame,
153 :     MACROBLOCK * pMB,
154 :     int16_t data[6 * 64]);
155 :    
156 : edgomez 420 uint8_t MBQuantInter(const MBParam * pParam,
157 :     const int iQuant,
158 :     int16_t data[6 * 64],
159 :     int16_t qcoeff[6 * 64]);
160 : chl 368
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 420 void MBQuantIntra(const MBParam * pParam,
168 :     FRAMEINFO * frame,
169 :     MACROBLOCK *pMB,
170 : chl 583 int16_t data[6*64],
171 :     int16_t qcoeff[6 * 64]);
172 : chl 368
173 :     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 429 void MBiDCT(int16_t data[6 * 64],
186 : edgomez 420 const uint8_t cbp);
187 : chl 368
188 :    
189 : edgomez 420 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 : chl 368
197 :    
198 :    
199 : edgomez 420 /* interlacing */
200 : h 69
201 : edgomez 420 uint32_t MBDecideFieldDCT(int16_t data[6 * 64]); /* <- decide whether to use field-based DCT for interlacing */
202 : h 69
203 : edgomez 420 void MBFrameToField(int16_t data[6 * 64]); /* de-interlace vertical Y blocks */
204 : h 69
205 :    
206 : edgomez 420 /* MBCoding.c */
207 : Isibaar 3
208 : edgomez 420 void MBSkip(Bitstream * bs); /* just the bitstream. Since MB is skipped, no info is needed */
209 : chl 347
210 :    
211 : edgomez 420 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 3
217 :     #endif

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