Mercurial > libavcodec.hg
comparison avcodec.h @ 1112:54be6aece1be libavcodec
more cosmetics so that doxygen output is readable ...
author | michaelni |
---|---|
date | Thu, 06 Mar 2003 15:56:56 +0000 |
parents | b773f9d23236 |
children | bbcb4fda2b86 |
comparison
equal
deleted
inserted
replaced
1111:54dc72414a69 | 1112:54be6aece1be |
---|---|
68 CODEC_TYPE_UNKNOWN = -1, | 68 CODEC_TYPE_UNKNOWN = -1, |
69 CODEC_TYPE_VIDEO, | 69 CODEC_TYPE_VIDEO, |
70 CODEC_TYPE_AUDIO, | 70 CODEC_TYPE_AUDIO, |
71 }; | 71 }; |
72 | 72 |
73 /** | |
74 * Pixel format. | |
75 */ | |
73 enum PixelFormat { | 76 enum PixelFormat { |
74 PIX_FMT_YUV420P, | 77 PIX_FMT_YUV420P, |
75 PIX_FMT_YUV422, | 78 PIX_FMT_YUV422, |
76 PIX_FMT_RGB24, /* 3 bytes, R is first */ | 79 PIX_FMT_RGB24, ///< 3 bytes, R is first |
77 PIX_FMT_BGR24, /* 3 bytes, B is first */ | 80 PIX_FMT_BGR24, ///< 3 bytes, B is first |
78 PIX_FMT_YUV422P, | 81 PIX_FMT_YUV422P, |
79 PIX_FMT_YUV444P, | 82 PIX_FMT_YUV444P, |
80 PIX_FMT_RGBA32, /* always stored in cpu endianness */ | 83 PIX_FMT_RGBA32, ///< always stored in cpu endianness |
81 PIX_FMT_YUV410P, | 84 PIX_FMT_YUV410P, |
82 PIX_FMT_YUV411P, | 85 PIX_FMT_YUV411P, |
83 PIX_FMT_RGB565, /* always stored in cpu endianness */ | 86 PIX_FMT_RGB565, ///< always stored in cpu endianness |
84 PIX_FMT_RGB555, /* always stored in cpu endianness, most significant bit to 1 */ | 87 PIX_FMT_RGB555, ///< always stored in cpu endianness, most significant bit to 1 |
85 PIX_FMT_GRAY8, | 88 PIX_FMT_GRAY8, |
86 PIX_FMT_MONOWHITE, /* 0 is white */ | 89 PIX_FMT_MONOWHITE, ///< 0 is white |
87 PIX_FMT_MONOBLACK, /* 0 is black */ | 90 PIX_FMT_MONOBLACK, ///< 0 is black |
88 PIX_FMT_PAL8, /* 8 bit with RGBA palette */ | 91 PIX_FMT_PAL8, ///< 8 bit with RGBA palette |
89 PIX_FMT_NB, | 92 PIX_FMT_NB, |
90 }; | 93 }; |
91 | 94 |
92 /* currently unused, may be used if 24/32 bits samples ever supported */ | 95 /* currently unused, may be used if 24/32 bits samples ever supported */ |
93 enum SampleFormat { | 96 enum SampleFormat { |
94 SAMPLE_FMT_S16 = 0, /* signed 16 bits */ | 97 SAMPLE_FMT_S16 = 0, ///< signed 16 bits |
95 }; | 98 }; |
96 | 99 |
97 /* in bytes */ | 100 /* in bytes */ |
98 #define AVCODEC_MAX_AUDIO_FRAME_SIZE 131072 | 101 #define AVCODEC_MAX_AUDIO_FRAME_SIZE 131072 |
99 | 102 |
133 /* encoding support | 136 /* encoding support |
134 these flags can be passed in AVCodecContext.flags before initing | 137 these flags can be passed in AVCodecContext.flags before initing |
135 Note: note not everything is supported yet | 138 Note: note not everything is supported yet |
136 */ | 139 */ |
137 | 140 |
138 #define CODEC_FLAG_HQ 0x0001 /* brute force MB-type decission mode (slow) */ | 141 #define CODEC_FLAG_HQ 0x0001 ///< brute force MB-type decission mode (slow) |
139 #define CODEC_FLAG_QSCALE 0x0002 /* use fixed qscale */ | 142 #define CODEC_FLAG_QSCALE 0x0002 ///< use fixed qscale |
140 #define CODEC_FLAG_4MV 0x0004 /* 4 MV per MB allowed */ | 143 #define CODEC_FLAG_4MV 0x0004 ///< 4 MV per MB allowed |
141 #define CODEC_FLAG_QPEL 0x0010 /* use qpel MC */ | 144 #define CODEC_FLAG_QPEL 0x0010 ///< use qpel MC |
142 #define CODEC_FLAG_GMC 0x0020 /* use GMC */ | 145 #define CODEC_FLAG_GMC 0x0020 ///< use GMC |
143 #define CODEC_FLAG_PART 0x0080 /* use data partitioning */ | 146 #define CODEC_FLAG_PART 0x0080 ///< use data partitioning |
144 /* parent program gurantees that the input for b-frame containing streams is not written to | 147 /* parent program gurantees that the input for b-frame containing streams is not written to |
145 for at least s->max_b_frames+1 frames, if this is not set than the input will be copied */ | 148 for at least s->max_b_frames+1 frames, if this is not set than the input will be copied */ |
146 #define CODEC_FLAG_INPUT_PRESERVED 0x0100 | 149 #define CODEC_FLAG_INPUT_PRESERVED 0x0100 |
147 #define CODEC_FLAG_PASS1 0x0200 /* use internal 2pass ratecontrol in first pass mode */ | 150 #define CODEC_FLAG_PASS1 0x0200 ///< use internal 2pass ratecontrol in first pass mode |
148 #define CODEC_FLAG_PASS2 0x0400 /* use internal 2pass ratecontrol in second pass mode */ | 151 #define CODEC_FLAG_PASS2 0x0400 ///< use internal 2pass ratecontrol in second pass mode |
149 #define CODEC_FLAG_EXTERN_HUFF 0x1000 /* use external huffman table (for mjpeg) */ | 152 #define CODEC_FLAG_EXTERN_HUFF 0x1000 ///< use external huffman table (for mjpeg) |
150 #define CODEC_FLAG_GRAY 0x2000 /* only decode/encode grayscale */ | 153 #define CODEC_FLAG_GRAY 0x2000 ///< only decode/encode grayscale |
151 #define CODEC_FLAG_EMU_EDGE 0x4000/* dont draw edges */ | 154 #define CODEC_FLAG_EMU_EDGE 0x4000///< dont draw edges |
152 #define CODEC_FLAG_PSNR 0x8000 /* error[?] variables will be set during encoding */ | 155 #define CODEC_FLAG_PSNR 0x8000 ///< error[?] variables will be set during encoding |
153 #define CODEC_FLAG_TRUNCATED 0x00010000 /* input bitstream might be truncated at a random location instead | 156 #define CODEC_FLAG_TRUNCATED 0x00010000 /** input bitstream might be truncated at a random location instead |
154 of only at frame boundaries */ | 157 of only at frame boundaries */ |
155 #define CODEC_FLAG_NORMALIZE_AQP 0x00020000 /* normalize adaptive quantization */ | 158 #define CODEC_FLAG_NORMALIZE_AQP 0x00020000 ///< normalize adaptive quantization |
156 #define CODEC_FLAG_INTERLACED_DCT 0x00040000 /* use interlaced dct */ | 159 #define CODEC_FLAG_INTERLACED_DCT 0x00040000 ///< use interlaced dct |
157 #define CODEC_FLAG_LOW_DELAY 0x00080000 /* force low delay / will fail on b frames */ | 160 #define CODEC_FLAG_LOW_DELAY 0x00080000 ///< force low delay / will fail on b frames |
158 #define CODEC_FLAG_ALT_SCAN 0x00100000 /* use alternate scan */ | 161 #define CODEC_FLAG_ALT_SCAN 0x00100000 ///< use alternate scan |
159 #define CODEC_FLAG_TRELLIS_QUANT 0x00200000 /* use trellis quantization */ | 162 #define CODEC_FLAG_TRELLIS_QUANT 0x00200000 ///< use trellis quantization |
160 #define CODEC_FLAG_GLOBAL_HEADER 0x00400000 /* place global headers in extradata instead of every keyframe */ | 163 #define CODEC_FLAG_GLOBAL_HEADER 0x00400000 ///< place global headers in extradata instead of every keyframe |
161 #define CODEC_FLAG_BITEXACT 0x00800000 /* use only bitexact stuff (except (i)dct) */ | 164 #define CODEC_FLAG_BITEXACT 0x00800000 ///< use only bitexact stuff (except (i)dct) |
162 /* Fx : Flag for h263+ extra options */ | 165 /* Fx : Flag for h263+ extra options */ |
163 #define CODEC_FLAG_H263P_AIC 0x01000000 /* Advanced intra coding */ | 166 #define CODEC_FLAG_H263P_AIC 0x01000000 ///< Advanced intra coding |
164 #define CODEC_FLAG_H263P_UMV 0x02000000 /* Unlimited motion vector */ | 167 #define CODEC_FLAG_H263P_UMV 0x02000000 ///< Unlimited motion vector |
165 /* For advanced prediction mode, we reuse the 4MV flag */ | 168 /* For advanced prediction mode, we reuse the 4MV flag */ |
166 /* Unsupported options : | 169 /* Unsupported options : |
167 * Syntax Arithmetic coding (SAC) | 170 * Syntax Arithmetic coding (SAC) |
168 * Deblocking filter internal loop | 171 * Deblocking filter internal loop |
169 * Slice structured | 172 * Slice structured |
172 * Alternative Inter * VLC | 175 * Alternative Inter * VLC |
173 * Modified Quantization */ | 176 * Modified Quantization */ |
174 /* /Fx */ | 177 /* /Fx */ |
175 /* codec capabilities */ | 178 /* codec capabilities */ |
176 | 179 |
177 #define CODEC_CAP_DRAW_HORIZ_BAND 0x0001 /* decoder can use draw_horiz_band callback */ | 180 #define CODEC_CAP_DRAW_HORIZ_BAND 0x0001 ///< decoder can use draw_horiz_band callback |
178 #define CODEC_CAP_DR1 0x0002 /* direct rendering method 1 */ | 181 #define CODEC_CAP_DR1 0x0002 ///< direct rendering method 1 |
179 /* if 'parse_only' field is true, then avcodec_parse_frame() can be | 182 /* if 'parse_only' field is true, then avcodec_parse_frame() can be |
180 used */ | 183 used */ |
181 #define CODEC_CAP_PARSE_ONLY 0x0004 | 184 #define CODEC_CAP_PARSE_ONLY 0x0004 |
182 #define CODEC_CAP_TRUNCATED 0x0008 | 185 #define CODEC_CAP_TRUNCATED 0x0008 |
183 | 186 |
187 uint8_t *data[4];\ | 190 uint8_t *data[4];\ |
188 int linesize[4];\ | 191 int linesize[4];\ |
189 /**\ | 192 /**\ |
190 * pointer to the first allocated byte of the picture. can be used in get_buffer/release_buffer\ | 193 * pointer to the first allocated byte of the picture. can be used in get_buffer/release_buffer\ |
191 * this isnt used by lavc unless the default get/release_buffer() is used\ | 194 * this isnt used by lavc unless the default get/release_buffer() is used\ |
192 * encoding: \ | 195 * - encoding: \ |
193 * decoding: \ | 196 * - decoding: \ |
194 */\ | 197 */\ |
195 uint8_t *base[4];\ | 198 uint8_t *base[4];\ |
196 /**\ | 199 /**\ |
197 * 1 -> keyframe, 0-> not\ | 200 * 1 -> keyframe, 0-> not\ |
198 * encoding: set by lavc\ | 201 * - encoding: set by lavc\ |
199 * decoding: set by lavc\ | 202 * - decoding: set by lavc\ |
200 */\ | 203 */\ |
201 int key_frame;\ | 204 int key_frame;\ |
202 \ | 205 \ |
203 /**\ | 206 /**\ |
204 * picture type of the frame, see ?_TYPE below\ | 207 * picture type of the frame, see ?_TYPE below\ |
205 * encoding: set by lavc for coded_picture (and set by user for input)\ | 208 * - encoding: set by lavc for coded_picture (and set by user for input)\ |
206 * decoding: set by lavc\ | 209 * - decoding: set by lavc\ |
207 */\ | 210 */\ |
208 int pict_type;\ | 211 int pict_type;\ |
209 \ | 212 \ |
210 /**\ | 213 /**\ |
211 * presentation timestamp in micro seconds (time when frame should be shown to user)\ | 214 * presentation timestamp in micro seconds (time when frame should be shown to user)\ |
212 * if 0 then the frame_rate will be used as reference\ | 215 * if 0 then the frame_rate will be used as reference\ |
213 * encoding: MUST be set by user\ | 216 * - encoding: MUST be set by user\ |
214 * decoding: set by lavc\ | 217 * - decoding: set by lavc\ |
215 */\ | 218 */\ |
216 long long int pts;\ | 219 long long int pts;\ |
217 \ | 220 \ |
218 /**\ | 221 /**\ |
219 * picture number in bitstream order.\ | 222 * picture number in bitstream order.\ |
220 * encoding: set by\ | 223 * - encoding: set by\ |
221 * decoding: set by lavc\ | 224 * - decoding: set by lavc\ |
222 */\ | 225 */\ |
223 int coded_picture_number;\ | 226 int coded_picture_number;\ |
224 /**\ | 227 /**\ |
225 * encoding: set by\ | |
226 * decoding: set by lavc\ | |
227 * picture number in display order.\ | 228 * picture number in display order.\ |
229 * - encoding: set by\ | |
230 * - decoding: set by lavc\ | |
228 */\ | 231 */\ |
229 int display_picture_number;\ | 232 int display_picture_number;\ |
230 \ | 233 \ |
231 /**\ | 234 /**\ |
232 * quality (between 1 (good) and 31 (bad)) \ | 235 * quality (between 1 (good) and 31 (bad)) \ |
233 * encoding: set by lavc for coded_picture (and set by user for input)\ | 236 * - encoding: set by lavc for coded_picture (and set by user for input)\ |
234 * decoding: set by lavc\ | 237 * - decoding: set by lavc\ |
235 */\ | 238 */\ |
236 float quality; \ | 239 float quality; \ |
237 \ | 240 \ |
238 /**\ | 241 /**\ |
239 * buffer age (1->was last buffer and dint change, 2->..., ...).\ | 242 * buffer age (1->was last buffer and dint change, 2->..., ...).\ |
240 * set to something large if the buffer has not been used yet \ | 243 * set to something large if the buffer has not been used yet \ |
241 * encoding: unused\ | 244 * - encoding: unused\ |
242 * decoding: MUST be set by get_buffer()\ | 245 * - decoding: MUST be set by get_buffer()\ |
243 */\ | 246 */\ |
244 int age;\ | 247 int age;\ |
245 \ | 248 \ |
246 /**\ | 249 /**\ |
247 * is this picture used as reference\ | 250 * is this picture used as reference\ |
248 * encoding: unused\ | 251 * - encoding: unused\ |
249 * decoding: set by lavc (before get_buffer() call))\ | 252 * - decoding: set by lavc (before get_buffer() call))\ |
250 */\ | 253 */\ |
251 int reference;\ | 254 int reference;\ |
252 \ | 255 \ |
253 /**\ | 256 /**\ |
254 * QP table\ | 257 * QP table\ |
255 * encoding: unused\ | 258 * - encoding: unused\ |
256 * decoding: set by lavc\ | 259 * - decoding: set by lavc\ |
257 */\ | 260 */\ |
258 int8_t *qscale_table;\ | 261 int8_t *qscale_table;\ |
259 /**\ | 262 /**\ |
260 * QP store stride\ | 263 * QP store stride\ |
261 * encoding: unused\ | 264 * - encoding: unused\ |
262 * decoding: set by lavc\ | 265 * - decoding: set by lavc\ |
263 */\ | 266 */\ |
264 int qstride;\ | 267 int qstride;\ |
265 \ | 268 \ |
266 /**\ | 269 /**\ |
267 * mbskip_table[mb]>=1 if MB didnt change\ | 270 * mbskip_table[mb]>=1 if MB didnt change\ |
268 * stride= mb_width = (width+15)>>4\ | 271 * stride= mb_width = (width+15)>>4\ |
269 * encoding: unused\ | 272 * - encoding: unused\ |
270 * decoding: set by lavc\ | 273 * - decoding: set by lavc\ |
271 */\ | 274 */\ |
272 uint8_t *mbskip_table;\ | 275 uint8_t *mbskip_table;\ |
273 \ | 276 \ |
274 /**\ | 277 /**\ |
275 * for some private data of the user\ | 278 * for some private data of the user\ |
276 * encoding: unused\ | 279 * - encoding: unused\ |
277 * decoding: set by user\ | 280 * - decoding: set by user\ |
278 */\ | 281 */\ |
279 void *opaque;\ | 282 void *opaque;\ |
280 \ | 283 \ |
281 /**\ | 284 /**\ |
282 * error\ | 285 * error\ |
283 * encoding: set by lavc if flags&CODEC_FLAG_PSNR\ | 286 * - encoding: set by lavc if flags&CODEC_FLAG_PSNR\ |
284 * decoding: unused\ | 287 * - decoding: unused\ |
285 */\ | 288 */\ |
286 uint64_t error[4];\ | 289 uint64_t error[4];\ |
287 \ | 290 \ |
288 /**\ | 291 /**\ |
289 * type of the buffer (to keep track of who has to dealloc data[*])\ | 292 * type of the buffer (to keep track of who has to dealloc data[*])\ |
290 * encoding: set by the one who allocs it\ | 293 * - encoding: set by the one who allocs it\ |
291 * decoding: set by the one who allocs it\ | 294 * - decoding: set by the one who allocs it\ |
292 * Note: user allocated (direct rendering) & internal buffers can not coexist currently\ | 295 * Note: user allocated (direct rendering) & internal buffers can not coexist currently\ |
293 */\ | 296 */\ |
294 int type;\ | 297 int type;\ |
295 \ | 298 \ |
296 /**\ | 299 /**\ |
297 * when decoding, this signal how much the picture must be delayed.\ | 300 * when decoding, this signal how much the picture must be delayed.\ |
298 * extra_delay = repeat_pict / (2*fps)\ | 301 * extra_delay = repeat_pict / (2*fps)\ |
299 * encoding: unused\ | 302 * - encoding: unused\ |
300 * decoding: set by lavc\ | 303 * - decoding: set by lavc\ |
301 */\ | 304 */\ |
302 int repeat_pict; | 305 int repeat_pict; |
303 | 306 |
304 | 307 |
305 #define FF_BUFFER_TYPE_INTERNAL 1 | 308 #define FF_BUFFER_TYPE_INTERNAL 1 |
320 /** | 323 /** |
321 * main external api structure. | 324 * main external api structure. |
322 */ | 325 */ |
323 typedef struct AVCodecContext { | 326 typedef struct AVCodecContext { |
324 /** | 327 /** |
325 * the average bitrate | 328 * the average bitrate. |
326 * encoding: set by user. unused for constant quantizer encoding | 329 * - encoding: set by user. unused for constant quantizer encoding |
327 * decoding: set by lavc. 0 or some bitrate if this info is available in the stream | 330 * - decoding: set by lavc. 0 or some bitrate if this info is available in the stream |
328 */ | 331 */ |
329 int bit_rate; | 332 int bit_rate; |
330 | 333 |
331 /** | 334 /** |
332 * number of bits the bitstream is allowed to diverge from the reference | 335 * number of bits the bitstream is allowed to diverge from the reference. |
333 * the reference can be CBR (for CBR pass1) or VBR (for pass2) | 336 * the reference can be CBR (for CBR pass1) or VBR (for pass2) |
334 * encoding: set by user. unused for constant quantizer encoding | 337 * - encoding: set by user. unused for constant quantizer encoding |
335 * decoding: unused | 338 * - decoding: unused |
336 */ | 339 */ |
337 int bit_rate_tolerance; | 340 int bit_rate_tolerance; |
338 | 341 |
339 /** | 342 /** |
340 * CODEC_FLAG_* | 343 * CODEC_FLAG_*. |
341 * encoding: set by user. | 344 * - encoding: set by user. |
342 * decoding: set by user. | 345 * - decoding: set by user. |
343 */ | 346 */ |
344 int flags; | 347 int flags; |
345 | 348 |
346 /** | 349 /** |
347 * some codecs needs additionnal format info. It is stored here | 350 * some codecs needs additionnal format info. It is stored here |
348 * encoding: set by user. | 351 * - encoding: set by user. |
349 * decoding: set by lavc. (FIXME is this ok?) | 352 * - decoding: set by lavc. (FIXME is this ok?) |
350 */ | 353 */ |
351 int sub_id; | 354 int sub_id; |
352 | 355 |
353 /** | 356 /** |
354 * motion estimation algorithm used for video coding | 357 * motion estimation algorithm used for video coding. |
355 * encoding: MUST be set by user. | 358 * - encoding: MUST be set by user. |
356 * decoding: unused | 359 * - decoding: unused |
357 */ | 360 */ |
358 int me_method; | 361 int me_method; |
359 | 362 |
360 /** | 363 /** |
361 * some codecs need / can use extra-data like huffman tables | 364 * some codecs need / can use extra-data like huffman tables. |
362 * mjpeg: huffman tables | 365 * mjpeg: huffman tables |
363 * rv10: additional flags | 366 * rv10: additional flags |
364 * mpeg4: global headers (they can be in the bitstream or here) | 367 * mpeg4: global headers (they can be in the bitstream or here) |
365 * encoding: set/allocated/freed by lavc. | 368 * - encoding: set/allocated/freed by lavc. |
366 * decoding: set/allocated/freed by user. | 369 * - decoding: set/allocated/freed by user. |
367 */ | 370 */ |
368 void *extradata; | 371 void *extradata; |
369 int extradata_size; | 372 int extradata_size; |
370 | 373 |
371 /* video only */ | 374 /* video only */ |
372 /** | 375 /** |
373 * frames per sec multiplied by FRAME_RATE_BASE | 376 * frames per sec multiplied by FRAME_RATE_BASE. |
374 * for variable fps this is the precission, so if the timestamps | 377 * for variable fps this is the precission, so if the timestamps |
375 * can be specified in msec precssion then this is 1000*FRAME_RATE_BASE | 378 * can be specified in msec precssion then this is 1000*FRAME_RATE_BASE |
376 * encoding: MUST be set by user | 379 * - encoding: MUST be set by user |
377 * decoding: set by lavc. 0 or the frame_rate if available | 380 * - decoding: set by lavc. 0 or the frame_rate if available |
378 */ | 381 */ |
379 int frame_rate; | 382 int frame_rate; |
380 | 383 |
381 /** | 384 /** |
382 * encoding: MUST be set by user. | 385 * width / height. |
383 * decoding: set by user, some codecs might override / change it during playback | 386 * - encoding: MUST be set by user. |
387 * - decoding: set by user, some codecs might override / change it during playback | |
384 */ | 388 */ |
385 int width, height; | 389 int width, height; |
386 | 390 |
387 #define FF_ASPECT_SQUARE 1 | 391 #define FF_ASPECT_SQUARE 1 |
388 #define FF_ASPECT_4_3_625 2 | 392 #define FF_ASPECT_4_3_625 2 |
390 #define FF_ASPECT_16_9_625 4 | 394 #define FF_ASPECT_16_9_625 4 |
391 #define FF_ASPECT_16_9_525 5 | 395 #define FF_ASPECT_16_9_525 5 |
392 #define FF_ASPECT_EXTENDED 15 | 396 #define FF_ASPECT_EXTENDED 15 |
393 | 397 |
394 /** | 398 /** |
395 * the number of pictures in a group of pitures, or 0 for intra_only | 399 * the number of pictures in a group of pitures, or 0 for intra_only. |
396 * encoding: set by user. | 400 * - encoding: set by user. |
397 * decoding: unused | 401 * - decoding: unused |
398 */ | 402 */ |
399 int gop_size; | 403 int gop_size; |
400 | 404 |
401 /** | 405 /** |
402 * pixel format, see PIX_FMT_xxx | 406 * pixel format, see PIX_FMT_xxx. |
403 * encoding: unused | 407 * - encoding: unused |
404 * decoding: set by lavc. | 408 * - decoding: set by lavc. |
405 */ | 409 */ |
406 enum PixelFormat pix_fmt; | 410 enum PixelFormat pix_fmt; |
407 | 411 |
408 /** | 412 /** |
409 * if non NULL, 'draw_horiz_band' is called by the libavcodec | 413 * if non NULL, 'draw_horiz_band' is called by the libavcodec |
410 * decoder to draw an horizontal band. It improve cache usage. Not | 414 * decoder to draw an horizontal band. It improve cache usage. Not |
411 * all codecs can do that. You must check the codec capabilities | 415 * all codecs can do that. You must check the codec capabilities |
412 * before | 416 * before |
413 * encoding: unused | 417 * - encoding: unused |
414 * decoding: set by user. | 418 * - decoding: set by user. |
415 */ | 419 */ |
416 void (*draw_horiz_band)(struct AVCodecContext *s, | 420 void (*draw_horiz_band)(struct AVCodecContext *s, |
417 uint8_t **src_ptr, int linesize, | 421 uint8_t **src_ptr, int linesize, |
418 int y, int width, int height); | 422 int y, int width, int height); |
419 | 423 |
420 /* audio only */ | 424 /* audio only */ |
421 int sample_rate; /* samples per sec */ | 425 int sample_rate; ///< samples per sec |
422 int channels; | 426 int channels; |
423 int sample_fmt; /* sample format, currenly unused */ | 427 int sample_fmt; ///< sample format, currenly unused |
424 | 428 |
425 /* the following data should not be initialized */ | 429 /* the following data should not be initialized */ |
426 int frame_size; /* in samples, initialized when calling 'init' */ | 430 int frame_size; ///< in samples, initialized when calling 'init' |
427 int frame_number; /* audio or video frame number */ | 431 int frame_number; ///< audio or video frame number |
428 int real_pict_num; /* returns the real picture number of | 432 int real_pict_num; ///< returns the real picture number of previous encoded frame |
429 previous encoded frame */ | |
430 | 433 |
431 /** | 434 /** |
432 * number of frames the decoded output will be delayed relative to | 435 * number of frames the decoded output will be delayed relative to |
433 * the encoded input | 436 * the encoded input. |
434 * encoding: set by lavc. | 437 * - encoding: set by lavc. |
435 * decoding: unused | 438 * - decoding: unused |
436 */ | 439 */ |
437 int delay; | 440 int delay; |
438 | 441 |
439 /* encoding parameters */ | 442 /* - encoding parameters */ |
440 float qcompress; /* amount of qscale change between easy & hard scenes (0.0-1.0)*/ | 443 float qcompress; ///< amount of qscale change between easy & hard scenes (0.0-1.0) |
441 float qblur; /* amount of qscale smoothing over time (0.0-1.0) */ | 444 float qblur; ///< amount of qscale smoothing over time (0.0-1.0) |
442 | 445 |
443 /** | 446 /** |
444 * minimum quantizer | 447 * minimum quantizer. |
445 * encoding: set by user. | 448 * - encoding: set by user. |
446 * decoding: unused | 449 * - decoding: unused |
447 */ | 450 */ |
448 int qmin; | 451 int qmin; |
449 | 452 |
450 /** | 453 /** |
451 * maximum quantizer | 454 * maximum quantizer. |
452 * encoding: set by user. | 455 * - encoding: set by user. |
453 * decoding: unused | 456 * - decoding: unused |
454 */ | 457 */ |
455 int qmax; | 458 int qmax; |
456 | 459 |
457 /** | 460 /** |
458 * maximum quantizer difference etween frames | 461 * maximum quantizer difference etween frames. |
459 * encoding: set by user. | 462 * - encoding: set by user. |
460 * decoding: unused | 463 * - decoding: unused |
461 */ | 464 */ |
462 int max_qdiff; | 465 int max_qdiff; |
463 | 466 |
464 /** | 467 /** |
465 * maximum number of b frames between non b frames | 468 * maximum number of b frames between non b frames. |
466 * note: the output will be delayed by max_b_frames+1 relative to the input | 469 * note: the output will be delayed by max_b_frames+1 relative to the input |
467 * encoding: set by user. | 470 * - encoding: set by user. |
468 * decoding: unused | 471 * - decoding: unused |
469 */ | 472 */ |
470 int max_b_frames; | 473 int max_b_frames; |
471 | 474 |
472 /** | 475 /** |
473 * qscale factor between ip and b frames | 476 * qscale factor between ip and b frames. |
474 * encoding: set by user. | 477 * - encoding: set by user. |
475 * decoding: unused | 478 * - decoding: unused |
476 */ | 479 */ |
477 float b_quant_factor; | 480 float b_quant_factor; |
478 | 481 |
479 /** obsolete FIXME remove */ | 482 /** obsolete FIXME remove */ |
480 int rc_strategy; | 483 int rc_strategy; |
481 int b_frame_strategy; | 484 int b_frame_strategy; |
482 | 485 |
483 /** | 486 /** |
484 * encoding: unused | 487 * hurry up amount. |
485 * decoding: set by user. 1-> skip b frames, 2-> skip idct/dequant too, 5-> skip everything except header | 488 * - encoding: unused |
489 * - decoding: set by user. 1-> skip b frames, 2-> skip idct/dequant too, 5-> skip everything except header | |
486 */ | 490 */ |
487 int hurry_up; | 491 int hurry_up; |
488 | 492 |
489 struct AVCodec *codec; | 493 struct AVCodec *codec; |
490 | 494 |
519 int p_count; | 523 int p_count; |
520 int skip_count; | 524 int skip_count; |
521 int misc_bits; | 525 int misc_bits; |
522 | 526 |
523 /** | 527 /** |
524 * number of bits used for the previously encoded frame | 528 * number of bits used for the previously encoded frame. |
525 * encoding: set by lavc | 529 * - encoding: set by lavc |
526 * decoding: - for audio - bits_per_sample | 530 * - decoding: - for audio - bits_per_sample |
527 */ | 531 */ |
528 int frame_bits; | 532 int frame_bits; |
529 | 533 |
530 /** | 534 /** |
531 * private data of the user, can be used to carry app specific stuff | 535 * private data of the user, can be used to carry app specific stuff. |
532 * encoding: set by user | 536 * - encoding: set by user |
533 * decoding: set by user | 537 * - decoding: set by user |
534 */ | 538 */ |
535 void *opaque; | 539 void *opaque; |
536 | 540 |
537 char codec_name[32]; | 541 char codec_name[32]; |
538 enum CodecType codec_type; /* see CODEC_TYPE_xxx */ | 542 enum CodecType codec_type; /* see CODEC_TYPE_xxx */ |
539 enum CodecID codec_id; /* see CODEC_ID_xxx */ | 543 enum CodecID codec_id; /* see CODEC_ID_xxx */ |
540 unsigned int codec_tag; /* codec tag, only used if unknown codec */ | 544 unsigned int codec_tag; ///< codec tag, only used if unknown codec |
541 | 545 |
542 /** | 546 /** |
543 * workaround bugs in encoders which sometimes cannot be detected automatically | 547 * workaround bugs in encoders which sometimes cannot be detected automatically. |
544 * encoding: unused | 548 * - encoding: unused |
545 * decoding: set by user | 549 * - decoding: set by user |
546 */ | 550 */ |
547 int workaround_bugs; | 551 int workaround_bugs; |
548 #define FF_BUG_AUTODETECT 1 //autodetection | 552 #define FF_BUG_AUTODETECT 1 ///< autodetection |
549 #define FF_BUG_OLD_MSMPEG4 2 | 553 #define FF_BUG_OLD_MSMPEG4 2 |
550 #define FF_BUG_XVID_ILACE 4 | 554 #define FF_BUG_XVID_ILACE 4 |
551 #define FF_BUG_UMP4 8 | 555 #define FF_BUG_UMP4 8 |
552 #define FF_BUG_NO_PADDING 16 | 556 #define FF_BUG_NO_PADDING 16 |
553 #define FF_BUG_AC_VLC 32 | 557 #define FF_BUG_AC_VLC 32 |
556 #define FF_BUG_QPEL_CHROMA2 256 | 560 #define FF_BUG_QPEL_CHROMA2 256 |
557 #define FF_BUG_DIRECT_BLOCKSIZE 512 | 561 #define FF_BUG_DIRECT_BLOCKSIZE 512 |
558 //#define FF_BUG_FAKE_SCALABILITY 16 //autodetection should work 100% | 562 //#define FF_BUG_FAKE_SCALABILITY 16 //autodetection should work 100% |
559 | 563 |
560 /** | 564 /** |
561 * encoding: set by user | 565 * luma single coeff elimination threshold. |
562 * decoding: unused | 566 * - encoding: set by user |
567 * - decoding: unused | |
563 */ | 568 */ |
564 int luma_elim_threshold; | 569 int luma_elim_threshold; |
565 | 570 |
566 /** | 571 /** |
567 * encoding: set by user | 572 * chroma single coeff elimination threshold. |
568 * decoding: unused | 573 * - encoding: set by user |
574 * - decoding: unused | |
569 */ | 575 */ |
570 int chroma_elim_threshold; | 576 int chroma_elim_threshold; |
571 | 577 |
572 /** | 578 /** |
573 * strictly follow the std (MPEG4, ...) | 579 * strictly follow the std (MPEG4, ...). |
574 * encoding: set by user | 580 * - encoding: set by user |
575 * decoding: unused | 581 * - decoding: unused |
576 */ | 582 */ |
577 int strict_std_compliance; | 583 int strict_std_compliance; |
578 | 584 |
579 /** | 585 /** |
580 * qscale offset between ip and b frames | 586 * qscale offset between ip and b frames. |
581 * if > 0 then the last p frame quantizer will be used (q= lastp_q*factor+offset) | 587 * if > 0 then the last p frame quantizer will be used (q= lastp_q*factor+offset) |
582 * if < 0 then normal ratecontrol will be done (q= -normal_q*factor+offset) | 588 * if < 0 then normal ratecontrol will be done (q= -normal_q*factor+offset) |
583 * encoding: set by user. | 589 * - encoding: set by user. |
584 * decoding: unused | 590 * - decoding: unused |
585 */ | 591 */ |
586 float b_quant_offset; | 592 float b_quant_offset; |
587 | 593 |
588 /** | 594 /** |
589 * error resilience higher values will detect more errors but may missdetect | 595 * error resilience higher values will detect more errors but may missdetect |
590 * some more or less valid parts as errors | 596 * some more or less valid parts as errors. |
591 * encoding: unused | 597 * - encoding: unused |
592 * decoding: set by user | 598 * - decoding: set by user |
593 */ | 599 */ |
594 int error_resilience; | 600 int error_resilience; |
595 #define FF_ER_CAREFULL 1 | 601 #define FF_ER_CAREFULL 1 |
596 #define FF_ER_COMPLIANT 2 | 602 #define FF_ER_COMPLIANT 2 |
597 #define FF_ER_AGGRESSIVE 3 | 603 #define FF_ER_AGGRESSIVE 3 |
598 #define FF_ER_VERY_AGGRESSIVE 4 | 604 #define FF_ER_VERY_AGGRESSIVE 4 |
599 | 605 |
600 /** | 606 /** |
601 * called at the beginning of each frame to get a buffer for it. | 607 * called at the beginning of each frame to get a buffer for it. |
602 * if pic.reference is set then the frame will be read later by lavc | 608 * if pic.reference is set then the frame will be read later by lavc |
603 * encoding: unused | 609 * - encoding: unused |
604 * decoding: set by lavc, user can override | 610 * - decoding: set by lavc, user can override |
605 */ | 611 */ |
606 int (*get_buffer)(struct AVCodecContext *c, AVFrame *pic); | 612 int (*get_buffer)(struct AVCodecContext *c, AVFrame *pic); |
607 | 613 |
608 /** | 614 /** |
609 * called to release buffers which where allocated with get_buffer. | 615 * called to release buffers which where allocated with get_buffer. |
610 * a released buffer can be reused in get_buffer() | 616 * a released buffer can be reused in get_buffer() |
611 * pic.data[*] must be set to NULL | 617 * pic.data[*] must be set to NULL |
612 * encoding: unused | 618 * - encoding: unused |
613 * decoding: set by lavc, user can override | 619 * - decoding: set by lavc, user can override |
614 */ | 620 */ |
615 void (*release_buffer)(struct AVCodecContext *c, AVFrame *pic); | 621 void (*release_buffer)(struct AVCodecContext *c, AVFrame *pic); |
616 | 622 |
617 /** | 623 /** |
618 * is 1 if the decoded stream contains b frames, 0 otherwise | 624 * is 1 if the decoded stream contains b frames, 0 otherwise. |
619 * encoding: unused | 625 * - encoding: unused |
620 * decoding: set by lavc | 626 * - decoding: set by lavc |
621 */ | 627 */ |
622 int has_b_frames; | 628 int has_b_frames; |
623 | 629 |
624 int block_align; /* used by some WAV based audio codecs */ | 630 int block_align; ///< used by some WAV based audio codecs |
625 | 631 |
626 int parse_only; /* decoding only: if true, only parsing is done | 632 int parse_only; /* - decoding only: if true, only parsing is done |
627 (function avcodec_parse_frame()). The frame | 633 (function avcodec_parse_frame()). The frame |
628 data is returned. Only MPEG codecs support this now. */ | 634 data is returned. Only MPEG codecs support this now. */ |
629 | 635 |
630 /** | 636 /** |
631 * 0-> h263 quant 1-> mpeg quant | 637 * 0-> h263 quant 1-> mpeg quant. |
632 * encoding: set by user. | 638 * - encoding: set by user. |
633 * decoding: unused | 639 * - decoding: unused |
634 */ | 640 */ |
635 int mpeg_quant; | 641 int mpeg_quant; |
636 | 642 |
637 /** | 643 /** |
638 * pass1 encoding statistics output buffer | 644 * pass1 encoding statistics output buffer. |
639 * encoding: set by lavc | 645 * - encoding: set by lavc |
640 * decoding: unused | 646 * - decoding: unused |
641 */ | 647 */ |
642 char *stats_out; /* encoding statistics output buffer */ | 648 char *stats_out; |
643 | 649 |
644 /** | 650 /** |
645 * pass2 encoding statistics input buffer. | 651 * pass2 encoding statistics input buffer. |
646 * concatenated stuff from stats_out of pass1 should be placed here | 652 * concatenated stuff from stats_out of pass1 should be placed here |
647 * encoding: allocated/set/freed by user | 653 * - encoding: allocated/set/freed by user |
648 * decoding: unused | 654 * - decoding: unused |
649 */ | 655 */ |
650 char *stats_in; | 656 char *stats_in; |
651 | 657 |
652 /** | 658 /** |
653 * ratecontrol qmin qmax limiting method | 659 * ratecontrol qmin qmax limiting method. |
654 * 0-> clipping, 1-> use a nice continous function to limit qscale wthin qmin/qmax | 660 * 0-> clipping, 1-> use a nice continous function to limit qscale wthin qmin/qmax |
655 * encoding: set by user. | 661 * - encoding: set by user. |
656 * decoding: unused | 662 * - decoding: unused |
657 */ | 663 */ |
658 float rc_qsquish; | 664 float rc_qsquish; |
659 | 665 |
660 float rc_qmod_amp; | 666 float rc_qmod_amp; |
661 int rc_qmod_freq; | 667 int rc_qmod_freq; |
662 | 668 |
663 /** | 669 /** |
664 * ratecontrol override, see RcOverride | 670 * ratecontrol override, see RcOverride. |
665 * encoding: allocated/set/freed by user. | 671 * - encoding: allocated/set/freed by user. |
666 * decoding: unused | 672 * - decoding: unused |
667 */ | 673 */ |
668 RcOverride *rc_override; | 674 RcOverride *rc_override; |
669 int rc_override_count; | 675 int rc_override_count; |
670 | 676 |
671 /** | 677 /** |
672 * rate control equation | 678 * rate control equation. |
673 * encoding: set by user | 679 * - encoding: set by user |
674 * decoding: unused | 680 * - decoding: unused |
675 */ | 681 */ |
676 char *rc_eq; | 682 char *rc_eq; |
677 | 683 |
678 /** | 684 /** |
679 * maximum bitrate | 685 * maximum bitrate. |
680 * encoding: set by user. | 686 * - encoding: set by user. |
681 * decoding: unused | 687 * - decoding: unused |
682 */ | 688 */ |
683 int rc_max_rate; | 689 int rc_max_rate; |
684 | 690 |
685 /** | 691 /** |
686 * minimum bitrate | 692 * minimum bitrate. |
687 * encoding: set by user. | 693 * - encoding: set by user. |
688 * decoding: unused | 694 * - decoding: unused |
689 */ | 695 */ |
690 int rc_min_rate; | 696 int rc_min_rate; |
691 | 697 |
692 /** | 698 /** |
693 * decoder bitstream buffer size | 699 * decoder bitstream buffer size. |
694 * encoding: set by user. | 700 * - encoding: set by user. |
695 * decoding: unused | 701 * - decoding: unused |
696 */ | 702 */ |
697 int rc_buffer_size; | 703 int rc_buffer_size; |
698 float rc_buffer_aggressivity; | 704 float rc_buffer_aggressivity; |
699 | 705 |
700 /** | 706 /** |
701 * qscale factor between p and i frames | 707 * qscale factor between p and i frames. |
702 * encoding: set by user. | 708 * - encoding: set by user. |
703 * decoding: unused | 709 * - decoding: unused |
704 */ | 710 */ |
705 float i_quant_factor; | 711 float i_quant_factor; |
706 | 712 |
707 /** | 713 /** |
708 * qscale offset between p and i frames | 714 * qscale offset between p and i frames. |
709 * if > 0 then the last p frame quantizer will be used (q= lastp_q*factor+offset) | 715 * if > 0 then the last p frame quantizer will be used (q= lastp_q*factor+offset) |
710 * if < 0 then normal ratecontrol will be done (q= -normal_q*factor+offset) | 716 * if < 0 then normal ratecontrol will be done (q= -normal_q*factor+offset) |
711 * encoding: set by user. | 717 * - encoding: set by user. |
712 * decoding: unused | 718 * - decoding: unused |
713 */ | 719 */ |
714 float i_quant_offset; | 720 float i_quant_offset; |
715 | 721 |
716 /** | 722 /** |
717 * initial complexity for pass1 ratecontrol | 723 * initial complexity for pass1 ratecontrol. |
718 * encoding: set by user. | 724 * - encoding: set by user. |
719 * decoding: unused | 725 * - decoding: unused |
720 */ | 726 */ |
721 float rc_initial_cplx; | 727 float rc_initial_cplx; |
722 | 728 |
723 /** | 729 /** |
724 * dct algorithm, see FF_DCT_* below | 730 * dct algorithm, see FF_DCT_* below. |
725 * encoding: set by user | 731 * - encoding: set by user |
726 * decoding: unused | 732 * - decoding: unused |
727 */ | 733 */ |
728 int dct_algo; | 734 int dct_algo; |
729 #define FF_DCT_AUTO 0 | 735 #define FF_DCT_AUTO 0 |
730 #define FF_DCT_FASTINT 1 | 736 #define FF_DCT_FASTINT 1 |
731 #define FF_DCT_INT 2 | 737 #define FF_DCT_INT 2 |
732 #define FF_DCT_MMX 3 | 738 #define FF_DCT_MMX 3 |
733 #define FF_DCT_MLIB 4 | 739 #define FF_DCT_MLIB 4 |
734 #define FF_DCT_ALTIVEC 5 | 740 #define FF_DCT_ALTIVEC 5 |
735 | 741 |
736 /** | 742 /** |
737 * luminance masking (0-> disabled) | 743 * luminance masking (0-> disabled). |
738 * encoding: set by user | 744 * - encoding: set by user |
739 * decoding: unused | 745 * - decoding: unused |
740 */ | 746 */ |
741 float lumi_masking; | 747 float lumi_masking; |
742 | 748 |
743 /** | 749 /** |
744 * temporary complexity masking (0-> disabled) | 750 * temporary complexity masking (0-> disabled). |
745 * encoding: set by user | 751 * - encoding: set by user |
746 * decoding: unused | 752 * - decoding: unused |
747 */ | 753 */ |
748 float temporal_cplx_masking; | 754 float temporal_cplx_masking; |
749 | 755 |
750 /** | 756 /** |
751 * spatial complexity masking (0-> disabled) | 757 * spatial complexity masking (0-> disabled). |
752 * encoding: set by user | 758 * - encoding: set by user |
753 * decoding: unused | 759 * - decoding: unused |
754 */ | 760 */ |
755 float spatial_cplx_masking; | 761 float spatial_cplx_masking; |
756 | 762 |
757 /** | 763 /** |
758 * p block masking (0-> disabled) | 764 * p block masking (0-> disabled). |
759 * encoding: set by user | 765 * - encoding: set by user |
760 * decoding: unused | 766 * - decoding: unused |
761 */ | 767 */ |
762 float p_masking; | 768 float p_masking; |
763 | 769 |
764 /** | 770 /** |
765 * darkness masking (0-> disabled) | 771 * darkness masking (0-> disabled). |
766 * encoding: set by user | 772 * - encoding: set by user |
767 * decoding: unused | 773 * - decoding: unused |
768 */ | 774 */ |
769 float dark_masking; | 775 float dark_masking; |
770 | 776 |
771 /** | 777 /** |
772 * fourcc (LSB first, so "ABCD" -> ('D'<<24) + ('C'<<16) + ('B'<<8) + 'A') | 778 * fourcc (LSB first, so "ABCD" -> ('D'<<24) + ('C'<<16) + ('B'<<8) + 'A'). |
773 * this is used to workaround some encoder bugs | 779 * this is used to workaround some encoder bugs |
774 * encoding: unused | 780 * - encoding: unused |
775 * decoding: set by user, will be converted to upper case by lavc during init | 781 * - decoding: set by user, will be converted to upper case by lavc during init |
776 */ | 782 */ |
777 int fourcc; | 783 int fourcc; |
778 | 784 |
779 /** | 785 /** |
780 * idct algorithm, see FF_IDCT_* below | 786 * idct algorithm, see FF_IDCT_* below. |
781 * encoding: set by user | 787 * - encoding: set by user |
782 * decoding: set by user | 788 * - decoding: set by user |
783 */ | 789 */ |
784 int idct_algo; | 790 int idct_algo; |
785 #define FF_IDCT_AUTO 0 | 791 #define FF_IDCT_AUTO 0 |
786 #define FF_IDCT_INT 1 | 792 #define FF_IDCT_INT 1 |
787 #define FF_IDCT_SIMPLE 2 | 793 #define FF_IDCT_SIMPLE 2 |
791 #define FF_IDCT_MLIB 6 | 797 #define FF_IDCT_MLIB 6 |
792 #define FF_IDCT_ARM 7 | 798 #define FF_IDCT_ARM 7 |
793 #define FF_IDCT_ALTIVEC 8 | 799 #define FF_IDCT_ALTIVEC 8 |
794 | 800 |
795 /** | 801 /** |
796 * slice count | 802 * slice count. |
797 * encoding: set by lavc | 803 * - encoding: set by lavc |
798 * decoding: set by user (or 0) | 804 * - decoding: set by user (or 0) |
799 */ | 805 */ |
800 int slice_count; | 806 int slice_count; |
801 /** | 807 /** |
802 * slice offsets in the frame in bytes | 808 * slice offsets in the frame in bytes. |
803 * encoding: set/allocated by lavc | 809 * - encoding: set/allocated by lavc |
804 * decoding: set/allocated by user (or NULL) | 810 * - decoding: set/allocated by user (or NULL) |
805 */ | 811 */ |
806 int *slice_offset; | 812 int *slice_offset; |
807 | 813 |
808 /** | 814 /** |
809 * error concealment flags | 815 * error concealment flags. |
810 * encoding: unused | 816 * - encoding: unused |
811 * decoding: set by user | 817 * - decoding: set by user |
812 */ | 818 */ |
813 int error_concealment; | 819 int error_concealment; |
814 #define FF_EC_GUESS_MVS 1 | 820 #define FF_EC_GUESS_MVS 1 |
815 #define FF_EC_DEBLOCK 2 | 821 #define FF_EC_DEBLOCK 2 |
816 | 822 |
819 * CPU features (i.e. MMX, SSE. ...) | 825 * CPU features (i.e. MMX, SSE. ...) |
820 */ | 826 */ |
821 unsigned dsp_mask; | 827 unsigned dsp_mask; |
822 | 828 |
823 /** | 829 /** |
824 * bits per sample/pixel from the demuxer (needed for huffyuv) | 830 * bits per sample/pixel from the demuxer (needed for huffyuv). |
825 * encoding: set by lavc | 831 * - encoding: set by lavc |
826 * decoding: set by user | 832 * - decoding: set by user |
827 */ | 833 */ |
828 int bits_per_sample; | 834 int bits_per_sample; |
829 | 835 |
830 /** | 836 /** |
831 * prediction method (needed for huffyuv) | 837 * prediction method (needed for huffyuv). |
832 * encoding: set by user | 838 * - encoding: set by user |
833 * decoding: unused | 839 * - decoding: unused |
834 */ | 840 */ |
835 int prediction_method; | 841 int prediction_method; |
836 #define FF_PRED_LEFT 0 | 842 #define FF_PRED_LEFT 0 |
837 #define FF_PRED_PLANE 1 | 843 #define FF_PRED_PLANE 1 |
838 #define FF_PRED_MEDIAN 2 | 844 #define FF_PRED_MEDIAN 2 |
839 | 845 |
840 /** | 846 /** |
841 * aspect ratio. (0 if unknown) | 847 * aspect ratio (0 if unknown). |
842 * encoding: set by user. | 848 * - encoding: set by user. |
843 * decoding: set by lavc. | 849 * - decoding: set by lavc. |
844 */ | 850 */ |
845 float aspect_ratio; | 851 float aspect_ratio; |
846 | 852 |
847 /** | 853 /** |
848 * the picture in the bitstream | 854 * the picture in the bitstream. |
849 * encoding: set by lavc | 855 * - encoding: set by lavc |
850 * decoding: set by lavc | 856 * - decoding: set by lavc |
851 */ | 857 */ |
852 AVFrame *coded_frame; | 858 AVFrame *coded_frame; |
853 | 859 |
854 /** | 860 /** |
855 * debug | 861 * debug. |
856 * encoding: set by user. | 862 * - encoding: set by user. |
857 * decoding: set by user. | 863 * - decoding: set by user. |
858 */ | 864 */ |
859 int debug; | 865 int debug; |
860 #define FF_DEBUG_PICT_INFO 1 | 866 #define FF_DEBUG_PICT_INFO 1 |
861 #define FF_DEBUG_RC 2 | 867 #define FF_DEBUG_RC 2 |
862 #define FF_DEBUG_BITSTREAM 4 | 868 #define FF_DEBUG_BITSTREAM 4 |
867 #define FF_DEBUG_SKIP 0x00000080 | 873 #define FF_DEBUG_SKIP 0x00000080 |
868 #define FF_DEBUG_STARTCODE 0x00000100 | 874 #define FF_DEBUG_STARTCODE 0x00000100 |
869 #define FF_DEBUG_PTS 0x00000200 | 875 #define FF_DEBUG_PTS 0x00000200 |
870 | 876 |
871 /** | 877 /** |
872 * error | 878 * error. |
873 * encoding: set by lavc if flags&CODEC_FLAG_PSNR | 879 * - encoding: set by lavc if flags&CODEC_FLAG_PSNR |
874 * decoding: unused | 880 * - decoding: unused |
875 */ | 881 */ |
876 uint64_t error[4]; | 882 uint64_t error[4]; |
877 | 883 |
878 /** | 884 /** |
879 * minimum MB quantizer | 885 * minimum MB quantizer. |
880 * encoding: set by user. | 886 * - encoding: set by user. |
881 * decoding: unused | 887 * - decoding: unused |
882 */ | 888 */ |
883 int mb_qmin; | 889 int mb_qmin; |
884 | 890 |
885 /** | 891 /** |
886 * maximum MB quantizer | 892 * maximum MB quantizer. |
887 * encoding: set by user. | 893 * - encoding: set by user. |
888 * decoding: unused | 894 * - decoding: unused |
889 */ | 895 */ |
890 int mb_qmax; | 896 int mb_qmax; |
891 | 897 |
892 /** | 898 /** |
893 * motion estimation compare function | 899 * motion estimation compare function. |
894 * encoding: set by user. | 900 * - encoding: set by user. |
895 * decoding: unused | 901 * - decoding: unused |
896 */ | 902 */ |
897 int me_cmp; | 903 int me_cmp; |
898 /** | 904 /** |
899 * subpixel motion estimation compare function | 905 * subpixel motion estimation compare function. |
900 * encoding: set by user. | 906 * - encoding: set by user. |
901 * decoding: unused | 907 * - decoding: unused |
902 */ | 908 */ |
903 int me_sub_cmp; | 909 int me_sub_cmp; |
904 /** | 910 /** |
905 * macroblock compare function (not supported yet) | 911 * macroblock compare function (not supported yet). |
906 * encoding: set by user. | 912 * - encoding: set by user. |
907 * decoding: unused | 913 * - decoding: unused |
908 */ | 914 */ |
909 int mb_cmp; | 915 int mb_cmp; |
910 #define FF_CMP_SAD 0 | 916 #define FF_CMP_SAD 0 |
911 #define FF_CMP_SSE 1 | 917 #define FF_CMP_SSE 1 |
912 #define FF_CMP_SATD 2 | 918 #define FF_CMP_SATD 2 |
916 #define FF_CMP_RD 6 | 922 #define FF_CMP_RD 6 |
917 #define FF_CMP_ZERO 7 | 923 #define FF_CMP_ZERO 7 |
918 #define FF_CMP_CHROMA 256 | 924 #define FF_CMP_CHROMA 256 |
919 | 925 |
920 /** | 926 /** |
921 * ME diamond size & shape | 927 * ME diamond size & shape. |
922 * encoding: set by user. | 928 * - encoding: set by user. |
923 * decoding: unused | 929 * - decoding: unused |
924 */ | 930 */ |
925 int dia_size; | 931 int dia_size; |
926 | 932 |
927 /** | 933 /** |
928 * amount of previous MV predictors (2a+1 x 2a+1 square) | 934 * amount of previous MV predictors (2a+1 x 2a+1 square). |
929 * encoding: set by user. | 935 * - encoding: set by user. |
930 * decoding: unused | 936 * - decoding: unused |
931 */ | 937 */ |
932 int last_predictor_count; | 938 int last_predictor_count; |
933 | 939 |
934 /** | 940 /** |
935 * pre pass for motion estimation | 941 * pre pass for motion estimation. |
936 * encoding: set by user. | 942 * - encoding: set by user. |
937 * decoding: unused | 943 * - decoding: unused |
938 */ | 944 */ |
939 int pre_me; | 945 int pre_me; |
940 | 946 |
941 /** | 947 /** |
942 * motion estimation pre pass compare function | 948 * motion estimation pre pass compare function. |
943 * encoding: set by user. | 949 * - encoding: set by user. |
944 * decoding: unused | 950 * - decoding: unused |
945 */ | 951 */ |
946 int me_pre_cmp; | 952 int me_pre_cmp; |
947 | 953 |
948 /** | 954 /** |
949 * ME pre pass diamond size & shape | 955 * ME pre pass diamond size & shape. |
950 * encoding: set by user. | 956 * - encoding: set by user. |
951 * decoding: unused | 957 * - decoding: unused |
952 */ | 958 */ |
953 int pre_dia_size; | 959 int pre_dia_size; |
954 | 960 |
955 /** | 961 /** |
956 * subpel ME quality | 962 * subpel ME quality. |
957 * encoding: set by user. | 963 * - encoding: set by user. |
958 * decoding: unused | 964 * - decoding: unused |
959 */ | 965 */ |
960 int me_subpel_quality; | 966 int me_subpel_quality; |
961 | 967 |
962 /** | 968 /** |
963 * callback to negotiate the pixelFormat | 969 * callback to negotiate the pixelFormat. |
964 * @param fmt is the list of formats which are supported by the codec, | 970 * @param fmt is the list of formats which are supported by the codec, |
965 * its terminated by -1 as 0 is a valid format, the formats are ordered by quality | 971 * its terminated by -1 as 0 is a valid format, the formats are ordered by quality |
966 * the first is allways the native one | 972 * the first is allways the native one |
967 * @return the choosen format | 973 * @return the choosen format |
968 * encoding: unused | 974 * - encoding: unused |
969 * decoding: set by user, if not set then the native format will always be choosen | 975 * - decoding: set by user, if not set then the native format will always be choosen |
970 */ | 976 */ |
971 enum PixelFormat (*get_format)(struct AVCodecContext *s, enum PixelFormat * fmt); | 977 enum PixelFormat (*get_format)(struct AVCodecContext *s, enum PixelFormat * fmt); |
972 | 978 |
973 /** | 979 /** |
974 * DTG active format information (additionnal aspect ratio | 980 * DTG active format information (additionnal aspect ratio |
975 * information only used in DVB MPEG2 transport streams). 0 if | 981 * information only used in DVB MPEG2 transport streams). 0 if |
976 * not set. | 982 * not set. |
977 * | 983 * |
978 * encoding: unused. | 984 * - encoding: unused. |
979 * decoding: set by decoder | 985 * - decoding: set by decoder |
980 */ | 986 */ |
981 int dtg_active_format; | 987 int dtg_active_format; |
982 #define FF_DTG_AFD_SAME 8 | 988 #define FF_DTG_AFD_SAME 8 |
983 #define FF_DTG_AFD_4_3 9 | 989 #define FF_DTG_AFD_4_3 9 |
984 #define FF_DTG_AFD_16_9 10 | 990 #define FF_DTG_AFD_16_9 10 |
990 int me_range; | 996 int me_range; |
991 /** | 997 /** |
992 * Maximum motion estimation search range in subpel units. | 998 * Maximum motion estimation search range in subpel units. |
993 * if 0 then no limit | 999 * if 0 then no limit |
994 * | 1000 * |
995 * encoding: set by user. | 1001 * - encoding: set by user. |
996 * decoding: unused. | 1002 * - decoding: unused. |
997 */ | 1003 */ |
998 | 1004 |
999 } AVCodecContext; | 1005 } AVCodecContext; |
1000 | 1006 |
1001 //void avcodec_getopt(AVCodecContext* avctx, const char* str, avc_config_t** config); | 1007 //void avcodec_getopt(AVCodecContext* avctx, const char* str, avc_config_t** config); |
1002 | 1008 |
1009 /** | |
1010 * AVOption. | |
1011 */ | |
1003 typedef struct AVOption { | 1012 typedef struct AVOption { |
1004 /** options' name */ | 1013 /** options' name */ |
1005 const char *name; /* if name is NULL, it indicates a link to next */ | 1014 const char *name; /* if name is NULL, it indicates a link to next */ |
1006 /** short English text help */ | 1015 /** short English text help */ |
1007 const char *help; | 1016 const char *help; |
1008 /** offset to context structure where the parsed value should be stored */ | 1017 /** offset to context structure where the parsed value should be stored */ |
1009 int offset; | 1018 int offset; |
1010 /** options' type */ | 1019 /** options' type */ |
1011 int type; | 1020 int type; |
1012 #define FF_OPT_TYPE_BOOL 1 // boolean - true,1,on (or simply presence) | 1021 #define FF_OPT_TYPE_BOOL 1 ///< boolean - true,1,on (or simply presence) |
1013 #define FF_OPT_TYPE_DOUBLE 2 // double | 1022 #define FF_OPT_TYPE_DOUBLE 2 ///< double |
1014 #define FF_OPT_TYPE_INT 3 // integer | 1023 #define FF_OPT_TYPE_INT 3 ///< integer |
1015 #define FF_OPT_TYPE_STRING 4 // string (finished with \0) | 1024 #define FF_OPT_TYPE_STRING 4 ///< string (finished with \0) |
1016 #define FF_OPT_TYPE_MASK 0x1f // mask for types - upper bits are various flags | 1025 #define FF_OPT_TYPE_MASK 0x1f ///< mask for types - upper bits are various flags |
1017 //#define FF_OPT_TYPE_EXPERT 0x20 // flag for expert option | 1026 //#define FF_OPT_TYPE_EXPERT 0x20 // flag for expert option |
1018 #define FF_OPT_TYPE_FLAG (FF_OPT_TYPE_BOOL | 0x40) | 1027 #define FF_OPT_TYPE_FLAG (FF_OPT_TYPE_BOOL | 0x40) |
1019 #define FF_OPT_TYPE_RCOVERRIDE (FF_OPT_TYPE_STRING | 0x80) | 1028 #define FF_OPT_TYPE_RCOVERRIDE (FF_OPT_TYPE_STRING | 0x80) |
1020 /** min value (min == max -> no limits) */ | 1029 /** min value (min == max -> no limits) */ |
1021 double min; | 1030 double min; |
1032 const struct AVOption *sub; /* used when name is NULL */ | 1041 const struct AVOption *sub; /* used when name is NULL */ |
1033 /* when it's NULL return to previous level (or finish reading) */ | 1042 /* when it's NULL return to previous level (or finish reading) */ |
1034 #define FF_OPT_MAX_DEPTH 10 | 1043 #define FF_OPT_MAX_DEPTH 10 |
1035 } AVOption; | 1044 } AVOption; |
1036 | 1045 |
1046 /** | |
1047 * AVCodec. | |
1048 */ | |
1037 typedef struct AVCodec { | 1049 typedef struct AVCodec { |
1038 const char *name; | 1050 const char *name; |
1039 int type; | 1051 int type; |
1040 int id; | 1052 int id; |
1041 int priv_data_size; | 1053 int priv_data_size; |
1225 * | 1237 * |
1226 * do not even think about it's usage for this moment | 1238 * do not even think about it's usage for this moment |
1227 */ | 1239 */ |
1228 | 1240 |
1229 typedef struct { | 1241 typedef struct { |
1230 // compressed size used from given memory buffer | 1242 /// compressed size used from given memory buffer |
1231 int size; | 1243 int size; |
1232 /// I/P/B frame type | 1244 /// I/P/B frame type |
1233 int frame_type; | 1245 int frame_type; |
1234 } avc_enc_result_t; | 1246 } avc_enc_result_t; |
1235 | 1247 |