[svn] / branches / release-1_3-branch / xvidcore / src / decoder.h Repository:
ViewVC logotype

Annotation of /branches/release-1_3-branch/xvidcore/src/decoder.h

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1925 - (view) (download)

1 : edgomez 203 /*****************************************************************************
2 :     *
3 :     * XVID MPEG-4 VIDEO CODEC
4 : edgomez 1382 * - Decoder related header -
5 : edgomez 203 *
6 : Isibaar 1911 * Copyright(C) 2002-2010 Peter Ross <pross@xvid.org>
7 : edgomez 203 *
8 : edgomez 851 * 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 : edgomez 203 * (at your option) any later version.
12 :     *
13 :     * This program is distributed in the hope that it will be useful,
14 : edgomez 851 * but WITHOUT ANY WARRANTY ; without even the implied warranty of
15 : edgomez 203 * 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 : edgomez 851 * along with this program ; if not, write to the Free Software
20 : edgomez 203 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
21 :     *
22 : Isibaar 1911 * $Id: decoder.h,v 1.20 2010-12-18 10:13:30 Isibaar Exp $
23 : edgomez 203 *
24 :     ****************************************************************************/
25 :    
26 : Isibaar 3 #ifndef _DECODER_H_
27 :     #define _DECODER_H_
28 :    
29 :     #include "xvid.h"
30 :     #include "portab.h"
31 :     #include "global.h"
32 :     #include "image/image.h"
33 : edgomez 1382 #include "image/postprocessing.h"
34 : Isibaar 3
35 : edgomez 203 /*****************************************************************************
36 :     * Structures
37 :     ****************************************************************************/
38 : Isibaar 3
39 : edgomez 851 /* complexity estimation toggles */
40 : Isibaar 3 typedef struct
41 :     {
42 : edgomez 851 int method;
43 : Isibaar 3
44 : edgomez 851 int opaque;
45 :     int transparent;
46 :     int intra_cae;
47 :     int inter_cae;
48 :     int no_update;
49 :     int upsampling;
50 :    
51 :     int intra_blocks;
52 :     int inter_blocks;
53 :     int inter4v_blocks;
54 :     int gmc_blocks;
55 :     int not_coded_blocks;
56 :    
57 :     int dct_coefs;
58 :     int dct_lines;
59 :     int vlc_symbols;
60 :     int vlc_bits;
61 :    
62 :     int apm;
63 :     int npm;
64 :     int interpolate_mc_q;
65 :     int forw_back_mc_q;
66 :     int halfpel2;
67 :     int halfpel4;
68 :    
69 :     int sadct;
70 :     int quarterpel;
71 :     } ESTIMATION;
72 :    
73 :    
74 :     typedef struct
75 :     {
76 : edgomez 1382 /* vol bitstream */
77 : edgomez 851
78 :     int time_inc_resolution;
79 :     int fixed_time_inc;
80 :     uint32_t time_inc_bits;
81 :    
82 : Isibaar 3 uint32_t shape;
83 : Skal 1696 int ver_id;
84 : Isibaar 3 uint32_t quant_bits;
85 :     uint32_t quant_type;
86 : edgomez 1382 uint16_t *mpeg_quant_matrices;
87 : edgomez 851 int32_t quarterpel;
88 : edgomez 1382 int32_t cartoon_mode;
89 : edgomez 851 int complexity_estimation_disable;
90 :     ESTIMATION estimation;
91 : Isibaar 3
92 : edgomez 851 int interlacing;
93 : h 69 uint32_t top_field_first;
94 :     uint32_t alternate_vertical_scan;
95 :    
96 : edgomez 851 int aspect_ratio;
97 :     int par_width;
98 :     int par_height;
99 : Isibaar 3
100 : edgomez 851 int sprite_enable;
101 :     int sprite_warping_points;
102 :     int sprite_warping_accuracy;
103 :     int sprite_brightness_change;
104 :    
105 :     int newpred_enable;
106 :     int reduced_resolution_enable;
107 :    
108 : Isibaar 1883 /* The bitstream version if it's a Xvid stream */
109 : Isibaar 1055 int bs_version;
110 :    
111 : edgomez 1382 /* image */
112 : edgomez 851
113 :     int fixed_dimensions;
114 : Isibaar 3 uint32_t width;
115 :     uint32_t height;
116 :     uint32_t edged_width;
117 :     uint32_t edged_height;
118 : edgomez 195
119 : Isibaar 3 IMAGE cur;
120 : edgomez 1382 IMAGE refn[2]; /* 0 -- last I or P VOP */
121 :     /* 1 -- first I or P */
122 : edgomez 851 IMAGE tmp; /* bframe interpolation, and post processing tmp buffer */
123 :     IMAGE qtmp; /* quarter pel tmp buffer */
124 : Isibaar 3
125 : edgomez 1382 /* postprocessing */
126 :     XVID_POSTPROC postproc;
127 : Isibaar 3
128 : edgomez 1382 /* macroblock */
129 :    
130 : Isibaar 3 uint32_t mb_width;
131 :     uint32_t mb_height;
132 : edgomez 195 MACROBLOCK *mbs;
133 : Isibaar 3
134 : edgomez 1382 /*
135 :     * for B-frame & low_delay==0
136 :     * XXX: should move frame based stuff into a DECODER_FRAMEINFO struct
137 :     */
138 :     MACROBLOCK *last_mbs; /* last MB */
139 :     int last_coding_type; /* last coding type value */
140 :     int last_reduced_resolution; /* last reduced_resolution value */
141 :     int32_t frames; /* total frame number */
142 :     int32_t packed_mode; /* bframes packed bitstream? (1 = yes) */
143 : edgomez 195 int8_t scalability;
144 : edgomez 1382 VECTOR p_fmv, p_bmv; /* pred forward & backward motion vector */
145 :     int64_t time; /* for record time */
146 : edgomez 195 int64_t time_base;
147 :     int64_t last_time_base;
148 :     int64_t last_non_b_time;
149 : edgomez 1466 int32_t time_pp;
150 :     int32_t time_bp;
151 : edgomez 1382 uint32_t low_delay; /* low_delay flage (1 means no B_VOP) */
152 :     uint32_t low_delay_default; /* default value for low_delay flag */
153 : albeu 315
154 : edgomez 1382 /* for GMC: central place for all parameters */
155 :    
156 : edgomez 851 IMAGE gmc; /* gmc tmp buffer, remove for blockbased compensation */
157 :     GMC_DATA gmc_data;
158 : edgomez 1382 NEW_GMC_DATA new_gmc_data;
159 :    
160 :     xvid_image_t* out_frm; /* This is used for slice rendering */
161 :    
162 :     int * qscale; /* quantization table for decoder's stats */
163 : edgomez 1451
164 :     /* Tells if the reference image is edged or not */
165 :     int is_edged[2];
166 : Isibaar 1911
167 :     int num_threads;
168 : edgomez 195 }
169 :     DECODER;
170 : Isibaar 3
171 : edgomez 203 /*****************************************************************************
172 :     * Decoder prototypes
173 :     ****************************************************************************/
174 :    
175 : Isibaar 3 void init_decoder(uint32_t cpu_flags);
176 :    
177 : edgomez 1382 int decoder_create(xvid_dec_create_t * param);
178 : Isibaar 3 int decoder_destroy(DECODER * dec);
179 : edgomez 195 int decoder_decode(DECODER * dec,
180 : edgomez 1382 xvid_dec_frame_t * frame, xvid_dec_stats_t * stats);
181 : Isibaar 3
182 :    
183 : edgomez 203 #endif

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