1 /*****************************************************************************
2  *
3  *  XVID MPEG-4 VIDEO CODEC
4  *  - MB related header  -
5  *
6  *  Copyright(C) 2001 Michael Militzer <isibaar@xvid.org>
7  *
8  *  This program is free software ; you can redistribute it and/or modify
9  *  it under the terms of the GNU General Public License as published by
10  *  the Free Software Foundation ; either version 2 of the License, or
11  *  (at your option) any later version.
12  *
13  *  This program is distributed in the hope that it will be useful,
14  *  but WITHOUT ANY WARRANTY ; without even the implied warranty of
15  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16  *  GNU General Public License for more details.
17  *
18  *  You should have received a copy of the GNU General Public License
19  *  along with this program ; if not, write to the Free Software
20  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
21  *
22  * $Id: mbfunctions.h 1985 2011-05-18 09:02:35Z Isibaar $
23  *
24  ****************************************************************************/
25 
26 #ifndef _ENCORE_BLOCK_H
27 #define _ENCORE_BLOCK_H
28 
29 #include "../encoder.h"
30 #include "../bitstream/bitstream.h"
31 
32 
33 /** MBTransQuant.c **/
34 
35 
36 void MBTransQuantIntra(const MBParam * const pParam,
37 					const FRAMEINFO * const frame,
38 					MACROBLOCK * const pMB,
39 					const uint32_t x_pos,	/* <-- The x position of the MB to be searched */
40 					const uint32_t y_pos,	/* <-- The y position of the MB to be searched */
41 					int16_t data[6 * 64],	/* <-> the data of the MB to be coded */
42 					int16_t qcoeff[6 * 64]);	/* <-> the quantized DCT coefficients */
43 
44 uint8_t MBTransQuantInter(const MBParam * const pParam,
45 						const FRAMEINFO * const frame,
46 						MACROBLOCK * const pMB,
47 						const uint32_t x_pos,
48 						const uint32_t y_pos,
49 						int16_t data[6 * 64],
50 						int16_t qcoeff[6 * 64]);
51 
52 uint8_t MBTransQuantInterBVOP(const MBParam * pParam,
53 						  FRAMEINFO * frame,
54 						  MACROBLOCK * pMB,
55 						  const uint32_t x_pos,
56 						  const uint32_t y_pos,
57 						  int16_t data[6 * 64],
58 						  int16_t qcoeff[6 * 64]);
59 
60 
61 typedef uint32_t (MBFIELDTEST) (int16_t data[6 * 64]);	/* function pointer for field test */
62 typedef MBFIELDTEST *MBFIELDTEST_PTR;
63 
64 /* global field test pointer for xvid.c */
65 extern MBFIELDTEST_PTR MBFieldTest;
66 
67 /* field test implementations */
68 MBFIELDTEST MBFieldTest_c;
69 
70 #if defined(ARCH_IS_IA32) || defined(ARCH_IS_X86_64)
71 MBFIELDTEST MBFieldTest_mmx;
72 #endif
73 
74 void MBFrameToField(int16_t data[6 * 64]);	/* de-interlace vertical Y blocks */
75 
76 
77 /** MBCoding.c **/
78 
79 void MBCoding(const FRAMEINFO * const frame,	/* <-- the parameter for coding of the bitstream */
80 			MACROBLOCK * pMB,	/* <-- Info of the MB to be coded */
81 			int16_t qcoeff[6 * 64],	/* <-- the quantized DCT coefficients */
82 			Bitstream * bs,	/* <-> the bitstream */
83 			Statistics * pStat);	/* <-> statistical data collected for current frame */
84 
85 #endif
86