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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.8 - (view) (download)

1 : edgomez 1.6 /*****************************************************************************
2 :     *
3 :     * XVID MPEG-4 VIDEO CODEC
4 :     * - 1 Pass rate controler header file -
5 :     *
6 : edgomez 1.7 * Copyright(C) 2002 Michael Militzer <isibaar@xvid.org>
7 : edgomez 1.6 *
8 : edgomez 1.8 * This file is part of XviD, a free MPEG-4 video encoder/decoder
9 : edgomez 1.6 *
10 : edgomez 1.8 * 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.6 * 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.8 * 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 :     * $Id$
54 : edgomez 1.6 *
55 :     ****************************************************************************/
56 :    
57 : Isibaar 1.1 #ifndef _RATECONTROL_H_
58 :     #define _RATECONTROL_H_
59 :    
60 :     #include "../portab.h"
61 :    
62 : edgomez 1.5 typedef struct
63 :     {
64 : edgomez 1.4 int64_t size;
65 :     int32_t count;
66 : edgomez 1.5 }
67 :     QuantInfo;
68 : Isibaar 1.1
69 : edgomez 1.4 typedef struct
70 :     {
71 :     int32_t rtn_quant;
72 :     int64_t frames;
73 :     int64_t total_size;
74 :     double framerate;
75 :     int32_t target_rate;
76 :     int16_t max_quant;
77 :     int16_t min_quant;
78 :     int64_t last_change;
79 :     int64_t quant_sum;
80 :     double quant_error[32];
81 :     double avg_framesize;
82 :     double target_framesize;
83 :     double sequence_quality;
84 :     int32_t averaging_period;
85 :     int32_t reaction_delay_factor;
86 :     int32_t buffer;
87 : edgomez 1.5 }
88 :     RateControl;
89 : Isibaar 1.1
90 : edgomez 1.5 void RateControlInit(RateControl * rate_control,
91 :     uint32_t target_rate,
92 :     uint32_t reaction_delay_factor,
93 :     uint32_t averaging_period,
94 :     uint32_t buffer,
95 :     int framerate,
96 :     int max_quant,
97 :     int min_quant);
98 :    
99 :     int RateControlGetQ(RateControl * rate_control,
100 :     int keyframe);
101 :    
102 :     void RateControlUpdate(RateControl * rate_control,
103 :     int16_t quant,
104 :     int frame_size,
105 :     int keyframe);
106 : Isibaar 1.1
107 : edgomez 1.6 #endif /* _RATECONTROL_H_ */

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