comparison avcodec.h @ 909:8ae1e4c24e91 libavcodec

new PSNR code (now works with chroma, b frames, ...) rename *_TYPE to FF_*_TYPE for the external API allow user specified pict_type
author michaelni
date Wed, 04 Dec 2002 21:13:02 +0000
parents bbe0c99231a7
children 22cec68e6f01
comparison
equal deleted inserted replaced
908:2ac4caad5ca6 909:8ae1e4c24e91
3 3
4 #include "common.h" 4 #include "common.h"
5 5
6 #define LIBAVCODEC_VERSION_INT 0x000406 6 #define LIBAVCODEC_VERSION_INT 0x000406
7 #define LIBAVCODEC_VERSION "0.4.6" 7 #define LIBAVCODEC_VERSION "0.4.6"
8 #define LIBAVCODEC_BUILD 4642 8 #define LIBAVCODEC_BUILD 4643
9 #define LIBAVCODEC_BUILD_STR "4642" 9 #define LIBAVCODEC_BUILD_STR "4643"
10 10
11 enum CodecID { 11 enum CodecID {
12 CODEC_ID_NONE, 12 CODEC_ID_NONE,
13 CODEC_ID_MPEG1VIDEO, 13 CODEC_ID_MPEG1VIDEO,
14 CODEC_ID_H263, 14 CODEC_ID_H263,
138 #define CODEC_FLAG_PASS1 0x0200 /* use internal 2pass ratecontrol in first pass mode */ 138 #define CODEC_FLAG_PASS1 0x0200 /* use internal 2pass ratecontrol in first pass mode */
139 #define CODEC_FLAG_PASS2 0x0400 /* use internal 2pass ratecontrol in second pass mode */ 139 #define CODEC_FLAG_PASS2 0x0400 /* use internal 2pass ratecontrol in second pass mode */
140 #define CODEC_FLAG_EXTERN_HUFF 0x1000 /* use external huffman table (for mjpeg) */ 140 #define CODEC_FLAG_EXTERN_HUFF 0x1000 /* use external huffman table (for mjpeg) */
141 #define CODEC_FLAG_GRAY 0x2000 /* only decode/encode grayscale */ 141 #define CODEC_FLAG_GRAY 0x2000 /* only decode/encode grayscale */
142 #define CODEC_FLAG_EMU_EDGE 0x4000/* dont draw edges */ 142 #define CODEC_FLAG_EMU_EDGE 0x4000/* dont draw edges */
143 #define CODEC_FLAG_PSNR 0x8000 /* error[?] variables will be set during encoding */
143 #define CODEC_FLAG_TRUNCATED 0x00010000 /* input bitstream might be truncated at a random location instead 144 #define CODEC_FLAG_TRUNCATED 0x00010000 /* input bitstream might be truncated at a random location instead
144 of only at frame boundaries */ 145 of only at frame boundaries */
145 #define CODEC_FLAG_NORMALIZE_AQP 0x00020000 /* normalize adaptive quantization */ 146 #define CODEC_FLAG_NORMALIZE_AQP 0x00020000 /* normalize adaptive quantization */
146 #define CODEC_FLAG_INTERLACED_DCT 0x00040000 /* use interlaced dct */ 147 #define CODEC_FLAG_INTERLACED_DCT 0x00040000 /* use interlaced dct */
147 #define CODEC_FLAG_LOW_DELAY 0x00080000 /* force low delay / will fail on b frames */ 148 #define CODEC_FLAG_LOW_DELAY 0x00080000 /* force low delay / will fail on b frames */
250 * for some private data of the user\ 251 * for some private data of the user\
251 * encoding: unused\ 252 * encoding: unused\
252 * decoding: set by user\ 253 * decoding: set by user\
253 */\ 254 */\
254 void *opaque;\ 255 void *opaque;\
255 256 \
256 /* FIXME: these should have FF_ */ 257 /**\
257 #define I_TYPE 1 // Intra 258 * error\
258 #define P_TYPE 2 // Predicted 259 * encoding: set by lavc if flags&CODEC_FLAG_PSNR\
259 #define B_TYPE 3 // Bi-dir predicted 260 * decoding: unused\
260 #define S_TYPE 4 // S(GMC)-VOP MPEG4 261 */\
262 uint64_t error[4];\
263
264 #define FF_I_TYPE 1 // Intra
265 #define FF_P_TYPE 2 // Predicted
266 #define FF_B_TYPE 3 // Bi-dir predicted
267 #define FF_S_TYPE 4 // S(GMC)-VOP MPEG4
261 268
262 typedef struct AVVideoFrame { 269 typedef struct AVVideoFrame {
263 FF_COMMON_PICTURE 270 FF_COMMON_PICTURE
264 } AVVideoFrame; 271 } AVVideoFrame;
265 272
462 /* every time the encoder as a packet to send */ 469 /* every time the encoder as a packet to send */
463 /* Depends on the encoder if the data starts */ 470 /* Depends on the encoder if the data starts */
464 /* with a Start Code (it should) H.263 does */ 471 /* with a Start Code (it should) H.263 does */
465 void (*rtp_callback)(void *data, int size, int packet_number); 472 void (*rtp_callback)(void *data, int size, int packet_number);
466 473
467 /**
468 * if you set get_psnr to 1 then after encoding you will have the
469 * PSNR on psnr_y/cb/cr
470 * encoding: set by user (1-> on, 0-> off)
471 * decoding: unused
472 */
473 int get_psnr;
474 float psnr_y;
475 float psnr_cb;
476 float psnr_cr;
477
478 /* statistics, used for 2-pass encoding */ 474 /* statistics, used for 2-pass encoding */
479 int mv_bits; 475 int mv_bits;
480 int header_bits; 476 int header_bits;
481 int i_tex_bits; 477 int i_tex_bits;
482 int p_tex_bits; 478 int p_tex_bits;
824 #define FF_DEBUG_BITSTREAM 4 820 #define FF_DEBUG_BITSTREAM 4
825 #define FF_DEBUG_MB_TYPE 8 821 #define FF_DEBUG_MB_TYPE 8
826 #define FF_DEBUG_QP 16 822 #define FF_DEBUG_QP 16
827 #define FF_DEBUG_MV 32 823 #define FF_DEBUG_MV 32
828 #define FF_DEBUG_VIS_MV 64 824 #define FF_DEBUG_VIS_MV 64
825
826 /**
827 * error
828 * encoding: set by lavc if flags&CODEC_FLAG_PSNR
829 * decoding: unused
830 */
831 uint64_t error[4];
829 } AVCodecContext; 832 } AVCodecContext;
830 833
831 typedef struct AVCodec { 834 typedef struct AVCodec {
832 const char *name; 835 const char *name;
833 int type; 836 int type;