Mercurial > mplayer.hg
annotate libmpcodecs/ve_divx4.c @ 18864:1629108cd5b0
Move conditional FreeType support compilation to the build system.
author | diego |
---|---|
date | Fri, 30 Jun 2006 12:41:05 +0000 |
parents | a1807995e2ab |
children |
rev | line source |
---|---|
5550 | 1 #include <stdio.h> |
2 #include <stdlib.h> | |
3 #include <string.h> | |
4 | |
17012 | 5 #include "config.h" |
6 #include "mp_msg.h" | |
5550 | 7 |
8 #include "codec-cfg.h" | |
9 #include "stream.h" | |
10 #include "demuxer.h" | |
11 #include "stheader.h" | |
12 | |
8585 | 13 #include "muxer.h" |
5550 | 14 |
5607 | 15 #include "img_format.h" |
16 #include "mp_image.h" | |
5550 | 17 #include "vf.h" |
18 | |
7332 | 19 /* About XviD VBR Library, Edouard Gomez (GomGom) said: |
20 <GomGom> header bytes == frame header bytes :-) | |
21 <GomGom> total bytes = frame bytes == texture + header | |
22 <GomGom> quant = quant returned by xvidcore | |
23 <GomGom> it's possible that xvid lowers or increases the passed quant because of lumimasking | |
24 <GomGom> kblks = blocks coded as intra blocks | |
25 <GomGom> mblks = blocks coded as predicted blocks | |
26 <GomGom> ublks = skipped blocks | |
27 <GomGom> at the moemnt le vbr lib uses total bytes, and quant | |
28 <GomGom> so it's easy to use it with divx5 (wo bframes) | |
29 <klOUg> bframes breaks what assumptions? | |
30 <GomGom> quant estimation for next frame | |
31 <GomGom> because of the bframe quant multiplier given to divx5 | |
32 <GomGom> that the vbr lib does not "know" | |
33 */ | |
34 | |
5550 | 35 //===========================================================================// |
36 | |
8032
136e7e515764
removed -pass nonsense from mencoder! it's now a suboption to -divx4opts
rfelker
parents:
7368
diff
changeset
|
37 static int pass; |
5550 | 38 extern char* passtmpfile; |
39 | |
9300
32be26de0d7c
cleanup detection of various divx4 versions/alternatives
arpi
parents:
9014
diff
changeset
|
40 #ifdef ENCORE_XVID |
32be26de0d7c
cleanup detection of various divx4 versions/alternatives
arpi
parents:
9014
diff
changeset
|
41 #include <divx4.h> |
32be26de0d7c
cleanup detection of various divx4 versions/alternatives
arpi
parents:
9014
diff
changeset
|
42 #else |
5550 | 43 #include <encore2.h> |
9300
32be26de0d7c
cleanup detection of various divx4 versions/alternatives
arpi
parents:
9014
diff
changeset
|
44 #endif |
5550 | 45 |
5854 | 46 #ifndef ENCORE_MAJOR_VERSION |
47 #define ENCORE_MAJOR_VERSION 4000 | |
48 #endif | |
49 | |
10252
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
50 #if ENCORE_MAJOR_VERSION < 5200 |
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
51 #include "divx4_vbr.h" |
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
52 #define HAVE_XVID_VBR |
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
53 #ifdef HAVE_XVID_VBR |
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
54 #include "xvid_vbr.h" |
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
55 #endif |
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
56 #endif |
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
57 |
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
58 #if ENCORE_MAJOR_VERSION >= 5200 |
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
59 SETTINGS divx4_param; |
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
60 #else |
5550 | 61 ENC_PARAM divx4_param; |
10252
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
62 #endif |
5550 | 63 int divx4_crispness; |
7332 | 64 #ifdef HAVE_XVID_VBR |
65 static int vbrpass = -1; | |
66 static int vbrdebug = 0; | |
67 #endif | |
5550 | 68 |
10594
57bdcdb061d7
Removed the historic cfgparser and switched full to the new config parser (altought some macros still remain for compatibility). As a side effect 90% of the warning messages are gone from the core. Things should be cleaner now and less confusing for newbies.
alex
parents:
10252
diff
changeset
|
69 #include "m_option.h" |
5550 | 70 |
10594
57bdcdb061d7
Removed the historic cfgparser and switched full to the new config parser (altought some macros still remain for compatibility). As a side effect 90% of the warning messages are gone from the core. Things should be cleaner now and less confusing for newbies.
alex
parents:
10252
diff
changeset
|
71 m_option_t divx4opts_conf[]={ |
8032
136e7e515764
removed -pass nonsense from mencoder! it's now a suboption to -divx4opts
rfelker
parents:
7368
diff
changeset
|
72 {"pass", &pass, CONF_TYPE_INT, CONF_RANGE,0,2, NULL}, |
5550 | 73 {"br", &divx4_param.bitrate, CONF_TYPE_INT, CONF_RANGE, 4, 24000000, NULL}, |
10252
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
74 #if ENCORE_MAJOR_VERSION < 5200 |
5550 | 75 {"rc_period", &divx4_param.rc_period, CONF_TYPE_INT, 0,0,0, NULL}, |
76 {"rc_reaction_period", &divx4_param.rc_reaction_period, CONF_TYPE_INT, 0,0,0, NULL}, | |
77 {"rc_reaction_ratio", &divx4_param.rc_reaction_ratio, CONF_TYPE_INT, 0,0,0, NULL}, | |
78 {"min_quant", &divx4_param.min_quantizer, CONF_TYPE_INT, CONF_RANGE,0,32, NULL}, | |
79 {"max_quant", &divx4_param.max_quantizer, CONF_TYPE_INT, CONF_RANGE,0,32, NULL}, | |
10252
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
80 #endif |
5550 | 81 {"key", &divx4_param.max_key_interval, CONF_TYPE_INT, CONF_MIN,0,0, NULL}, |
82 {"deinterlace", &divx4_param.deinterlace, CONF_TYPE_FLAG, 0,0,1, NULL}, | |
83 {"q", &divx4_param.quality, CONF_TYPE_INT, CONF_RANGE, 1, 5, NULL}, | |
84 {"crispness", &divx4_crispness, CONF_TYPE_INT, CONF_RANGE,0,100, NULL}, | |
5854 | 85 #if ENCORE_MAJOR_VERSION >= 5010 |
10252
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
86 #if ENCORE_MAJOR_VERSION >= 5200 |
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
87 /* rate control modes: |
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
88 0 (VBV 1-pass) |
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
89 1 (1-pass constant quality) |
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
90 2 (VBV multipass 1st-pass) |
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
91 3 (VBV multipass nth-pass) |
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
92 4 (original 1-pass) |
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
93 5 (original 1st pass) |
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
94 6 (original 2nd pass) |
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
95 7 (1-pass constant frame size) |
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
96 */ |
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
97 {"vbr", &divx4_param.vbr_mode, CONF_TYPE_INT, CONF_RANGE,0,7, NULL}, |
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
98 {"bidirect", &divx4_param.use_bidirect, CONF_TYPE_FLAG, 0,0,1, NULL}, |
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
99 {"key_frame_threshold", &divx4_param.key_frame_threshold, CONF_TYPE_INT, CONF_RANGE,1,100, NULL}, |
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
100 /* default values from the DivX Help Guide: |
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
101 bitrate size occupancy |
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
102 128000 262144 196608 (Handheld) |
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
103 768000 1048576 786432 (Portable) |
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
104 4000000 3145728 2359296 (Home Theatre) |
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
105 8000000 6291456 4718592 (High Definition) |
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
106 Do not mess with these values unless you are absolutely sure of what you are doing! |
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
107 */ |
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
108 {"vbv_bitrate", &divx4_param.vbv_bitrate, CONF_TYPE_INT, 0,0,0, NULL}, |
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
109 {"vbv_size", &divx4_param.vbv_size, CONF_TYPE_INT, 0,0,0, NULL}, |
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
110 {"vbv_occupancy", &divx4_param.vbv_occupancy, CONF_TYPE_INT, 0,0,0, NULL}, |
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
111 {"complexity", &divx4_param.complexity_modulation, CONF_TYPE_FLOAT, CONF_RANGE,0.0,1.0, NULL}, |
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
112 {"readlog", &divx4_param.log_file_read, CONF_TYPE_STRING, 0,0,1, NULL}, |
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
113 {"writelog", &divx4_param.log_file_write, CONF_TYPE_STRING, 0,0,1, NULL}, |
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
114 {"mv_file", &divx4_param.mv_file, CONF_TYPE_STRING, 0,0,1, NULL}, |
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
115 {"data_partitioning", &divx4_param.data_partitioning, CONF_TYPE_FLAG, 0,0,1, NULL}, |
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
116 {"qpel", &divx4_param.quarter_pel, CONF_TYPE_FLAG, 0,0,1, NULL}, |
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
117 {"gmc", &divx4_param.use_gmc, CONF_TYPE_FLAG, 0,0,1, NULL}, |
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
118 {"pv", &divx4_param.psychovisual, CONF_TYPE_FLAG, 0,0,1, NULL}, |
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
119 {"pv_strength_frame", &divx4_param.pv_strength_frame, CONF_TYPE_FLOAT, CONF_RANGE,0.0,1.0, NULL}, |
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
120 {"pv_strength_MB", &divx4_param.pv_strength_MB, CONF_TYPE_FLOAT, CONF_RANGE,0.0,1.0, NULL}, |
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
121 {"interlace_mode", &divx4_param.interlace_mode, CONF_TYPE_INT, CONF_RANGE,0,3, NULL}, |
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
122 {"crop", &divx4_param.enable_crop, CONF_TYPE_FLAG, 0,0,1, NULL}, |
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
123 {"resize", &divx4_param.enable_resize, CONF_TYPE_FLAG, 0,0,1, NULL}, |
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
124 {"width", &divx4_param.resize_width, CONF_TYPE_INT, 0,0,0, NULL}, |
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
125 {"height", &divx4_param.resize_height, CONF_TYPE_INT, 0,0,0, NULL}, |
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
126 {"left", &divx4_param.crop_left, CONF_TYPE_INT, 0,0,0, NULL}, |
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
127 {"right", &divx4_param.crop_right, CONF_TYPE_INT, 0,0,0, NULL}, |
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
128 {"top", &divx4_param.crop_top, CONF_TYPE_INT, 0,0,0, NULL}, |
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
129 {"bottom", &divx4_param.crop_bottom, CONF_TYPE_INT, 0,0,0, NULL}, |
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
130 {"resize_mode", &divx4_param.resize_mode, CONF_TYPE_FLAG, 0,0,1, NULL}, |
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
131 {"temporal", &divx4_param.temporal_enable, CONF_TYPE_FLAG, 0,0,1, NULL}, |
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
132 {"spatial", &divx4_param.spatial_passes, CONF_TYPE_INT, CONF_RANGE,0,3, NULL}, |
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
133 {"temporal_level", &divx4_param.temporal_level, CONF_TYPE_FLOAT, CONF_RANGE,0.0,1.0, NULL}, |
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
134 {"spatial_level", &divx4_param.spatial_level, CONF_TYPE_FLOAT, CONF_RANGE,0.0,1.0, NULL}, |
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
135 #else |
5854 | 136 {"bidirect", &divx4_param.extensions.use_bidirect, CONF_TYPE_FLAG, 0,0,1, NULL}, |
137 {"obmc", &divx4_param.extensions.obmc, CONF_TYPE_FLAG, 0,0,1, NULL}, | |
138 {"data_partitioning", &divx4_param.extensions.data_partitioning, CONF_TYPE_FLAG, 0,0,1, NULL}, | |
10252
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
139 // {"mpeg2", &divx4_param.extensions.mpeg2_quant, CONF_TYPE_FLAG, 0,0,1, NULL}, |
5854 | 140 {"qpel", &divx4_param.extensions.quarter_pel, CONF_TYPE_FLAG, 0,0,1, NULL}, |
141 {"intra_frame_threshold", &divx4_param.extensions.intra_frame_threshold, CONF_TYPE_INT, CONF_RANGE,1,100, NULL}, | |
142 {"psychovisual", &divx4_param.extensions.psychovisual, CONF_TYPE_FLAG, 0,0,1, NULL}, | |
10252
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
143 {"pv", &divx4_param.extensions.psychovisual, CONF_TYPE_FLAG, 0,0,1, NULL}, |
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
144 {"pv_strength_frame", &divx4_param.extensions.pv_strength_frame, CONF_TYPE_FLOAT, CONF_RANGE,0.0,1.0, NULL}, |
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
145 {"pv_strength_MB", &divx4_param.extensions.pv_strength_MB, CONF_TYPE_FLOAT, CONF_RANGE,0.0,1.0, NULL}, |
5854 | 146 {"testing_param", &divx4_param.extensions.testing_param, CONF_TYPE_FLAG, 0,0,1, NULL}, |
147 {"gmc", &divx4_param.extensions.use_gmc, CONF_TYPE_FLAG, 0,0,1, NULL}, | |
148 {"interlace_mode", &divx4_param.extensions.interlace_mode, CONF_TYPE_INT, CONF_RANGE,0,2, NULL}, | |
10252
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
149 {"crop", &divx4_param.extensions.enable_crop, CONF_TYPE_FLAG, 0,0,1, NULL}, |
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
150 {"resize", &divx4_param.extensions.enable_resize, CONF_TYPE_FLAG, 0,0,1, NULL}, |
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
151 {"width", &divx4_param.extensions.resize_width, CONF_TYPE_INT, 0,0,0, NULL}, |
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
152 {"height", &divx4_param.extensions.resize_height, CONF_TYPE_INT, 0,0,0, NULL}, |
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
153 {"left", &divx4_param.extensions.crop_left, CONF_TYPE_INT, 0,0,0, NULL}, |
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
154 {"right", &divx4_param.extensions.crop_right, CONF_TYPE_INT, 0,0,0, NULL}, |
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
155 {"top", &divx4_param.extensions.crop_top, CONF_TYPE_INT, 0,0,0, NULL}, |
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
156 {"bottom", &divx4_param.extensions.crop_bottom, CONF_TYPE_INT, 0,0,0, NULL}, |
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
157 {"resize_mode", &divx4_param.extensions.resize_mode, CONF_TYPE_FLAG, 0,0,1, NULL}, |
5854 | 158 {"temporal", &divx4_param.extensions.temporal_enable, CONF_TYPE_FLAG, 0,0,1, NULL}, |
10252
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
159 {"spatial", &divx4_param.extensions.spatial_passes, CONF_TYPE_INT, CONF_RANGE,0,3, NULL}, |
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
160 {"temporal_level", &divx4_param.extensions.temporal_level, CONF_TYPE_FLOAT, CONF_RANGE,0.0,1.0, NULL}, |
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
161 {"spatial_level", &divx4_param.extensions.spatial_level, CONF_TYPE_FLOAT, CONF_RANGE,0.0,1.0, NULL}, |
5854 | 162 {"mv_file", &divx4_param.extensions.mv_file, CONF_TYPE_STRING, 0,0,1, NULL}, |
163 #endif | |
10252
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
164 #endif |
7332 | 165 #ifdef HAVE_XVID_VBR |
166 {"vbrpass", &vbrpass, CONF_TYPE_INT, CONF_RANGE, 0, 2, NULL}, | |
167 {"vbrdebug", &vbrdebug, CONF_TYPE_INT, CONF_RANGE, 0, 1, NULL}, | |
168 #endif | |
5550 | 169 {"help", "TODO: divx4opts help!\n", CONF_TYPE_PRINT, CONF_NOCFG, 0, 0, NULL}, |
170 {NULL, NULL, 0, 0, 0, 0, NULL} | |
171 }; | |
172 | |
173 struct vf_priv_s { | |
8585 | 174 muxer_stream_t* mux; |
5550 | 175 ENC_RESULT enc_result; |
176 ENC_FRAME enc_frame; | |
177 void* enc_handle; | |
7332 | 178 #ifdef HAVE_XVID_VBR |
179 vbr_control_t vbr_state; | |
180 #endif | |
5550 | 181 }; |
182 | |
183 #define mux_v (vf->priv->mux) | |
184 | |
185 static int config(struct vf_instance_s* vf, | |
186 int width, int height, int d_width, int d_height, | |
187 unsigned int flags, unsigned int outfmt){ | |
188 | |
10252
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
189 #if ENCORE_MAJOR_VERSION >= 5200 |
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
190 DivXBitmapInfoHeader format; |
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
191 char profile = (char) encore(0, ENC_OPT_PROFILE, 0, 0); |
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
192 |
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
193 mp_msg(MSGT_MENCODER, MSGL_INFO, "encoder binary profile: %c\n", profile); |
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
194 |
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
195 if((pass <= 1 && (divx4_param.vbr_mode == RCMODE_VBV_MULTIPASS_NTH || |
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
196 divx4_param.vbr_mode == RCMODE_502_2PASS_2ND)) || |
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
197 (pass == 2 && (divx4_param.vbr_mode == RCMODE_VBV_1PASS || |
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
198 divx4_param.vbr_mode == RCMODE_1PASS_CONSTANT_Q || |
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
199 divx4_param.vbr_mode == RCMODE_VBV_MULTIPASS_1ST || |
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
200 divx4_param.vbr_mode == RCMODE_502_1PASS || |
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
201 divx4_param.vbr_mode == RCMODE_502_2PASS_1ST || |
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
202 divx4_param.vbr_mode == RCMODE_IMAGE_COMPRESS))) { |
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
203 mp_msg(MSGT_MENCODER, MSGL_ERR, "pass (%i) and rate control mode (%i) doesn't match, please consult encore2.h\n", |
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
204 pass, divx4_param.vbr_mode); |
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
205 abort(); |
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
206 } |
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
207 #endif |
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
208 |
5550 | 209 mux_v->bih->biWidth=width; |
210 mux_v->bih->biHeight=height; | |
10252
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
211 mux_v->bih->biSizeImage=width*height*3; |
12061 | 212 mux_v->aspect = (float)d_width/d_height; |
5550 | 213 |
214 if(!divx4_param.bitrate) divx4_param.bitrate=800000; | |
215 else if(divx4_param.bitrate<=16000) divx4_param.bitrate*=1000; | |
216 if(!divx4_param.quality) divx4_param.quality=5; // the quality of compression ( 1 - fastest, 5 - best ) | |
217 | |
10252
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
218 #if ENCORE_MAJOR_VERSION >= 5200 |
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
219 format.biSize=sizeof(DivXBitmapInfoHeader); |
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
220 format.biWidth=width; |
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
221 format.biHeight=height; |
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
222 format.biSizeImage=mux_v->bih->biSizeImage; |
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
223 if(divx4_param.vbv_bitrate > 0) { |
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
224 divx4_param.vbv_bitrate = ((divx4_param.vbv_bitrate - 1) / 400 + 1) * 400; |
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
225 divx4_param.vbv_size = ((divx4_param.vbv_size - 1) / 16384 + 1) * 16384; |
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
226 divx4_param.vbv_occupancy = ((divx4_param.vbv_occupancy - 1) / 64 + 1) * 64; |
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
227 } |
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
228 #else |
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
229 divx4_param.x_dim=width; |
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
230 divx4_param.y_dim=height; |
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
231 divx4_param.framerate=(float)mux_v->h.dwRate/mux_v->h.dwScale; |
5551 | 232 // set some usefull defaults: |
233 if(!divx4_param.min_quantizer) divx4_param.min_quantizer=2; | |
234 if(!divx4_param.max_quantizer) divx4_param.max_quantizer=31; | |
235 if(!divx4_param.rc_period) divx4_param.rc_period=2000; | |
236 if(!divx4_param.rc_reaction_period) divx4_param.rc_reaction_period=10; | |
237 if(!divx4_param.rc_reaction_ratio) divx4_param.rc_reaction_ratio=20; | |
10252
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
238 #endif |
5551 | 239 |
7332 | 240 #ifdef HAVE_XVID_VBR |
241 if (vbrpass >= 0) { | |
242 vbrSetDefaults(&vf->priv->vbr_state); | |
243 vf->priv->vbr_state.desired_bitrate = divx4_param.bitrate; | |
244 switch (vbrpass) { | |
245 case 0: | |
246 vf->priv->vbr_state.mode = VBR_MODE_1PASS; | |
247 break; | |
248 case 1: | |
249 vf->priv->vbr_state.mode = VBR_MODE_2PASS_1; | |
250 break; | |
251 case 2: | |
252 vf->priv->vbr_state.mode = VBR_MODE_2PASS_2; | |
253 break; | |
254 default: | |
255 abort(); | |
256 } | |
257 vf->priv->vbr_state.debug = vbrdebug; | |
258 if (vbrInit(&vf->priv->vbr_state) == -1) | |
259 abort(); | |
260 /* XXX - kludge to workaround some DivX encoder limitations */ | |
261 if (vf->priv->vbr_state.mode != VBR_MODE_2PASS_2) | |
262 divx4_param.min_quantizer = divx4_param.max_quantizer = vbrGetQuant(&vf->priv->vbr_state); | |
263 } | |
264 #endif | |
265 | |
10252
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
266 #if ENCORE_MAJOR_VERSION >= 5200 |
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
267 switch(outfmt){ |
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
268 case IMGFMT_YV12: { |
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
269 format.biCompression=mmioFOURCC('Y','V','1','2'); |
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
270 break; |
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
271 } |
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
272 case IMGFMT_IYUV: { |
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
273 format.biCompression=mmioFOURCC('I','Y','U','V'); |
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
274 break; |
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
275 } |
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
276 case IMGFMT_I420: { |
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
277 format.biCompression=mmioFOURCC('I','4','2','0'); |
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
278 break; |
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
279 } |
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
280 case IMGFMT_YUY2: { |
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
281 format.biCompression=mmioFOURCC('Y','U','Y','2'); |
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
282 break; |
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
283 } |
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
284 case IMGFMT_V422: { |
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
285 format.biCompression=mmioFOURCC('V','4','2','2'); |
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
286 break; |
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
287 } |
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
288 case IMGFMT_UYVY: { |
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
289 format.biCompression=mmioFOURCC('U','Y','V','Y'); |
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
290 break; |
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
291 } |
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
292 case IMGFMT_YVYU: { |
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
293 format.biCompression=mmioFOURCC('Y','V','Y','U'); |
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
294 break; |
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
295 } |
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
296 case IMGFMT_BGR24: { |
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
297 format.biCompression=0; |
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
298 format.biBitCount=24; |
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
299 break; |
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
300 } |
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
301 case IMGFMT_BGR32: { |
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
302 format.biCompression=0; |
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
303 format.biBitCount=32; |
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
304 break; |
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
305 } |
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
306 default: |
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
307 mp_msg(MSGT_MENCODER,MSGL_ERR,"divx4: unsupported picture format (%s)!\n", |
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
308 vo_format_name(outfmt)); |
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
309 return 0; |
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
310 } |
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
311 |
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
312 encore(&vf->priv->enc_handle, ENC_OPT_INIT, &format, &divx4_param); |
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
313 #else |
5550 | 314 divx4_param.handle=NULL; |
315 encore(NULL,ENC_OPT_INIT,&divx4_param,NULL); | |
316 vf->priv->enc_handle=divx4_param.handle; | |
317 switch(outfmt){ | |
318 case IMGFMT_YV12: vf->priv->enc_frame.colorspace=ENC_CSP_YV12; break; | |
319 case IMGFMT_IYUV: | |
320 case IMGFMT_I420: vf->priv->enc_frame.colorspace=ENC_CSP_I420; break; | |
321 case IMGFMT_YUY2: vf->priv->enc_frame.colorspace=ENC_CSP_YUY2; break; | |
322 case IMGFMT_UYVY: vf->priv->enc_frame.colorspace=ENC_CSP_UYVY; break; | |
323 case IMGFMT_RGB24: | |
324 case IMGFMT_BGR24: | |
325 vf->priv->enc_frame.colorspace=ENC_CSP_RGB24; break; | |
326 default: | |
327 mp_msg(MSGT_MENCODER,MSGL_ERR,"divx4: unsupported picture format (%s)!\n", | |
328 vo_format_name(outfmt)); | |
329 return 0; | |
330 } | |
331 | |
332 switch(pass){ | |
333 case 1: | |
334 if (VbrControl_init_2pass_vbr_analysis(passtmpfile, divx4_param.quality) == -1){ | |
335 mp_msg(MSGT_MENCODER,MSGL_ERR,"2pass failed: filename=%s\n", passtmpfile); | |
336 pass=0; | |
337 } | |
338 break; | |
339 case 2: | |
340 if (VbrControl_init_2pass_vbr_encoding(passtmpfile, | |
341 divx4_param.bitrate, | |
342 divx4_param.framerate, | |
343 divx4_crispness, | |
344 divx4_param.quality) == -1){ | |
345 mp_msg(MSGT_MENCODER,MSGL_ERR,"2pass failed: filename=%s\n", passtmpfile); | |
346 pass=0; | |
347 } | |
348 break; | |
349 } | |
10252
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
350 #endif |
5550 | 351 |
352 return 1; | |
353 } | |
354 | |
7332 | 355 #ifdef HAVE_XVID_VBR |
356 static void uninit(struct vf_instance_s* vf){ | |
357 if (vbrpass >= 0 && vbrFinish(&vf->priv->vbr_state) == -1) | |
358 abort(); | |
359 } | |
10252
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
360 #else |
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
361 static void uninit(struct vf_instance_s* vf){ |
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
362 encore(vf->priv->enc_handle, ENC_OPT_RELEASE, 0, 0); |
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
363 vf->priv->enc_handle = NULL; |
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
364 } |
7332 | 365 #endif |
366 | |
5550 | 367 static int control(struct vf_instance_s* vf, int request, void* data){ |
368 | |
369 return CONTROL_UNKNOWN; | |
370 } | |
371 | |
372 static int query_format(struct vf_instance_s* vf, unsigned int fmt){ | |
373 switch(fmt){ | |
374 case IMGFMT_YV12: | |
375 case IMGFMT_IYUV: | |
376 case IMGFMT_I420: | |
15212
05aa13cdf92f
replace VO and VF numeric flags with #defined identifiers
henry
parents:
14878
diff
changeset
|
377 return VFCAP_CSP_SUPPORTED | VFCAP_CSP_SUPPORTED_BY_HW; // no conversion |
5550 | 378 case IMGFMT_YUY2: |
379 case IMGFMT_UYVY: | |
15212
05aa13cdf92f
replace VO and VF numeric flags with #defined identifiers
henry
parents:
14878
diff
changeset
|
380 return VFCAP_CSP_SUPPORTED; // conversion |
5550 | 381 case IMGFMT_RGB24: |
382 case IMGFMT_BGR24: | |
15212
05aa13cdf92f
replace VO and VF numeric flags with #defined identifiers
henry
parents:
14878
diff
changeset
|
383 return VFCAP_CSP_SUPPORTED | VFCAP_FLIPPED; // conversion+flipped |
5550 | 384 } |
385 return 0; | |
386 } | |
387 | |
17906
20aca9baf5d8
passing pts through the filter layer (lets see if pts or cola comes out at the end)
michael
parents:
17487
diff
changeset
|
388 static int put_image(struct vf_instance_s* vf, mp_image_t *mpi, double pts){ |
5550 | 389 ENC_RESULT enc_result; |
390 vf->priv->enc_frame.image=mpi->planes[0]; | |
391 vf->priv->enc_frame.bitstream=mux_v->buffer; | |
392 vf->priv->enc_frame.length=mux_v->buffer_size; | |
10252
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
393 #if ENCORE_MAJOR_VERSION >= 5200 |
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
394 vf->priv->enc_frame.produce_empty_frame = 0; |
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
395 encore(vf->priv->enc_handle, ENC_OPT_ENCODE, &vf->priv->enc_frame, &enc_result); |
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
396 if(enc_result.cType == 'I') |
17487
fa17424b4c7b
change muxer_write_chunk() so that pts/dts _could_ be passed from encoder to muxer
michael
parents:
17012
diff
changeset
|
397 muxer_write_chunk(mux_v,vf->priv->enc_frame.length,0x10, MP_NOPTS_VALUE, MP_NOPTS_VALUE); |
10252
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
398 else |
17487
fa17424b4c7b
change muxer_write_chunk() so that pts/dts _could_ be passed from encoder to muxer
michael
parents:
17012
diff
changeset
|
399 muxer_write_chunk(mux_v,vf->priv->enc_frame.length,0, MP_NOPTS_VALUE, MP_NOPTS_VALUE); |
10252
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
400 #else |
5550 | 401 vf->priv->enc_frame.mvs=NULL; |
7332 | 402 #ifdef HAVE_XVID_VBR |
403 if (vbrpass >= 0) { | |
404 int quant = vbrGetQuant(&vf->priv->vbr_state); | |
405 int intra = vbrGetIntra(&vf->priv->vbr_state); | |
406 vf->priv->enc_frame.quant = quant ? quant : 1; | |
407 vf->priv->enc_frame.intra = intra; | |
408 /* XXX - kludge to workaround some DivX encoder limitations: | |
409 only pass 2 needs to call encore with VBR, and then it does | |
410 not report quantizer and intra*/ | |
411 if (vf->priv->vbr_state.mode != VBR_MODE_2PASS_2) | |
412 encore(vf->priv->enc_handle, ENC_OPT_ENCODE, &vf->priv->enc_frame, &enc_result); | |
413 else { | |
414 encore(vf->priv->enc_handle, ENC_OPT_ENCODE_VBR, &vf->priv->enc_frame, &enc_result); | |
415 enc_result.quantizer = quant; | |
416 if (intra >= 0) | |
417 enc_result.is_key_frame = intra; | |
418 } | |
419 if (vbrUpdate(&vf->priv->vbr_state, enc_result.quantizer, enc_result.is_key_frame, | |
420 (enc_result.total_bits - enc_result.texture_bits) / 8, enc_result.total_bits / 8, | |
421 0, 0, 0) == -1) | |
422 abort(); | |
423 } | |
424 else | |
425 #endif | |
5550 | 426 if(pass==2){ // handle 2-pass: |
427 vf->priv->enc_frame.quant = VbrControl_get_quant(); | |
428 vf->priv->enc_frame.intra = VbrControl_get_intra(); | |
429 encore(vf->priv->enc_handle,ENC_OPT_ENCODE_VBR,&vf->priv->enc_frame,&enc_result); | |
430 VbrControl_update_2pass_vbr_encoding(enc_result.motion_bits, | |
431 enc_result.texture_bits, | |
432 enc_result.total_bits); | |
433 } else { | |
434 vf->priv->enc_frame.quant=0; | |
435 vf->priv->enc_frame.intra=0; | |
436 encore(vf->priv->enc_handle,ENC_OPT_ENCODE,&vf->priv->enc_frame,&enc_result); | |
437 if(pass==1){ | |
438 VbrControl_update_2pass_vbr_analysis(enc_result.is_key_frame, | |
439 enc_result.motion_bits, | |
440 enc_result.texture_bits, | |
441 enc_result.total_bits, | |
442 enc_result.quantizer); | |
443 } | |
444 } | |
17487
fa17424b4c7b
change muxer_write_chunk() so that pts/dts _could_ be passed from encoder to muxer
michael
parents:
17012
diff
changeset
|
445 muxer_write_chunk(mux_v,vf->priv->enc_frame.length,enc_result.is_key_frame?0x10:0, MP_NOPTS_VALUE, MP_NOPTS_VALUE); |
10252
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
446 #endif |
7368 | 447 return 1; |
5550 | 448 } |
449 | |
450 //===========================================================================// | |
451 | |
452 static int vf_open(vf_instance_t *vf, char* args){ | |
453 vf->config=config; | |
14878 | 454 vf->default_caps=VFCAP_CONSTANT; |
5550 | 455 vf->control=control; |
456 vf->query_format=query_format; | |
457 vf->put_image=put_image; | |
10252
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
458 //#ifdef HAVE_XVID_VBR |
7332 | 459 vf->uninit = uninit; |
10252
d275152390ee
I've found some time to implement the encoding support for the new
arpi
parents:
9300
diff
changeset
|
460 //#endif |
5550 | 461 vf->priv=malloc(sizeof(struct vf_priv_s)); |
462 memset(vf->priv,0,sizeof(struct vf_priv_s)); | |
8585 | 463 vf->priv->mux=(muxer_stream_t*)args; |
5550 | 464 |
14549
acf3241be19b
Initialized BITMAPINFOHEADER to 0 to avoid problems, esp. windows has problems
reimar
parents:
12061
diff
changeset
|
465 mux_v->bih=calloc(1, sizeof(BITMAPINFOHEADER)); |
5550 | 466 mux_v->bih->biSize=sizeof(BITMAPINFOHEADER); |
467 mux_v->bih->biWidth=0; | |
468 mux_v->bih->biHeight=0; | |
469 mux_v->bih->biPlanes=1; | |
470 mux_v->bih->biBitCount=24; | |
5854 | 471 #if ENCORE_MAJOR_VERSION >= 5010 |
472 mux_v->bih->biCompression=mmioFOURCC('D','X','5','0'); | |
473 #else | |
5550 | 474 mux_v->bih->biCompression=mmioFOURCC('d','i','v','x'); |
5854 | 475 #endif |
5550 | 476 |
477 return 1; | |
478 } | |
479 | |
480 vf_info_t ve_info_divx4 = { | |
481 "divx4 encoder", | |
482 "divx4", | |
483 "A'rpi", | |
484 "for internal use by mencoder", | |
485 vf_open | |
486 }; | |
487 | |
488 //===========================================================================// |