00001 #ifndef AVCODEC_H
00002 #define AVCODEC_H
00003
00010 #ifdef __cplusplus
00011 extern "C" {
00012 #endif
00013
00014 #include "common.h"
00015 #include "rational.h"
00016 #include <sys/types.h>
00017
00018 #define FFMPEG_VERSION_INT 0x000409
00019 #define FFMPEG_VERSION "CVS"
00020 #define LIBAVCODEC_BUILD 4759
00021
00022
00023 #define LIBAVCODEC_VERSION_INT FFMPEG_VERSION_INT
00024 #define LIBAVCODEC_VERSION FFMPEG_VERSION
00025
00026 #define AV_STRINGIFY(s) AV_TOSTRING(s)
00027 #define AV_TOSTRING(s) #s
00028 #define LIBAVCODEC_IDENT "FFmpeg" LIBAVCODEC_VERSION "b" AV_STRINGIFY(LIBAVCODEC_BUILD)
00029
00030 #define AV_NOPTS_VALUE int64_t_C(0x8000000000000000)
00031 #define AV_TIME_BASE 1000000
00032 #define AV_TIME_BASE_Q (AVRational){1, AV_TIME_BASE}
00033
00034 enum CodecID {
00035 CODEC_ID_NONE,
00036 CODEC_ID_MPEG1VIDEO,
00037 CODEC_ID_MPEG2VIDEO,
00038 CODEC_ID_MPEG2VIDEO_XVMC,
00039 CODEC_ID_H261,
00040 CODEC_ID_H263,
00041 CODEC_ID_RV10,
00042 CODEC_ID_RV20,
00043 CODEC_ID_MJPEG,
00044 CODEC_ID_MJPEGB,
00045 CODEC_ID_LJPEG,
00046 CODEC_ID_SP5X,
00047 CODEC_ID_MPEG4,
00048 CODEC_ID_RAWVIDEO,
00049 CODEC_ID_MSMPEG4V1,
00050 CODEC_ID_MSMPEG4V2,
00051 CODEC_ID_MSMPEG4V3,
00052 CODEC_ID_WMV1,
00053 CODEC_ID_WMV2,
00054 CODEC_ID_H263P,
00055 CODEC_ID_H263I,
00056 CODEC_ID_FLV1,
00057 CODEC_ID_SVQ1,
00058 CODEC_ID_SVQ3,
00059 CODEC_ID_DVVIDEO,
00060 CODEC_ID_HUFFYUV,
00061 CODEC_ID_CYUV,
00062 CODEC_ID_H264,
00063 CODEC_ID_INDEO3,
00064 CODEC_ID_VP3,
00065 CODEC_ID_THEORA,
00066 CODEC_ID_ASV1,
00067 CODEC_ID_ASV2,
00068 CODEC_ID_FFV1,
00069 CODEC_ID_4XM,
00070 CODEC_ID_VCR1,
00071 CODEC_ID_CLJR,
00072 CODEC_ID_MDEC,
00073 CODEC_ID_ROQ,
00074 CODEC_ID_INTERPLAY_VIDEO,
00075 CODEC_ID_XAN_WC3,
00076 CODEC_ID_XAN_WC4,
00077 CODEC_ID_RPZA,
00078 CODEC_ID_CINEPAK,
00079 CODEC_ID_WS_VQA,
00080 CODEC_ID_MSRLE,
00081 CODEC_ID_MSVIDEO1,
00082 CODEC_ID_IDCIN,
00083 CODEC_ID_8BPS,
00084 CODEC_ID_SMC,
00085 CODEC_ID_FLIC,
00086 CODEC_ID_TRUEMOTION1,
00087 CODEC_ID_VMDVIDEO,
00088 CODEC_ID_MSZH,
00089 CODEC_ID_ZLIB,
00090 CODEC_ID_QTRLE,
00091 CODEC_ID_SNOW,
00092 CODEC_ID_TSCC,
00093 CODEC_ID_ULTI,
00094 CODEC_ID_QDRAW,
00095 CODEC_ID_VIXL,
00096 CODEC_ID_QPEG,
00097 CODEC_ID_XVID,
00098 CODEC_ID_PNG,
00099 CODEC_ID_PPM,
00100 CODEC_ID_PBM,
00101 CODEC_ID_PGM,
00102 CODEC_ID_PGMYUV,
00103 CODEC_ID_PAM,
00104 CODEC_ID_FFVHUFF,
00105 CODEC_ID_RV30,
00106 CODEC_ID_RV40,
00107 CODEC_ID_VC9,
00108 CODEC_ID_WMV3,
00109 CODEC_ID_LOCO,
00110 CODEC_ID_WNV1,
00111 CODEC_ID_AASC,
00112 CODEC_ID_INDEO2,
00113 CODEC_ID_FRAPS,
00114
00115
00116 CODEC_ID_PCM_S16LE= 0x10000,
00117 CODEC_ID_PCM_S16BE,
00118 CODEC_ID_PCM_U16LE,
00119 CODEC_ID_PCM_U16BE,
00120 CODEC_ID_PCM_S8,
00121 CODEC_ID_PCM_U8,
00122 CODEC_ID_PCM_MULAW,
00123 CODEC_ID_PCM_ALAW,
00124
00125
00126 CODEC_ID_ADPCM_IMA_QT= 0x11000,
00127 CODEC_ID_ADPCM_IMA_WAV,
00128 CODEC_ID_ADPCM_IMA_DK3,
00129 CODEC_ID_ADPCM_IMA_DK4,
00130 CODEC_ID_ADPCM_IMA_WS,
00131 CODEC_ID_ADPCM_IMA_SMJPEG,
00132 CODEC_ID_ADPCM_MS,
00133 CODEC_ID_ADPCM_4XM,
00134 CODEC_ID_ADPCM_XA,
00135 CODEC_ID_ADPCM_ADX,
00136 CODEC_ID_ADPCM_EA,
00137 CODEC_ID_ADPCM_G726,
00138 CODEC_ID_ADPCM_CT,
00139 CODEC_ID_ADPCM_SWF,
00140 CODEC_ID_ADPCM_YAMAHA,
00141
00142
00143 CODEC_ID_AMR_NB= 0x12000,
00144 CODEC_ID_AMR_WB,
00145
00146
00147 CODEC_ID_RA_144= 0x13000,
00148 CODEC_ID_RA_288,
00149
00150
00151 CODEC_ID_ROQ_DPCM= 0x14000,
00152 CODEC_ID_INTERPLAY_DPCM,
00153 CODEC_ID_XAN_DPCM,
00154 CODEC_ID_SOL_DPCM,
00155
00156 CODEC_ID_MP2= 0x15000,
00157 CODEC_ID_MP3,
00158 CODEC_ID_AAC,
00159 CODEC_ID_MPEG4AAC,
00160 CODEC_ID_AC3,
00161 CODEC_ID_DTS,
00162 CODEC_ID_VORBIS,
00163 CODEC_ID_DVAUDIO,
00164 CODEC_ID_WMAV1,
00165 CODEC_ID_WMAV2,
00166 CODEC_ID_MACE3,
00167 CODEC_ID_MACE6,
00168 CODEC_ID_VMDAUDIO,
00169 CODEC_ID_SONIC,
00170 CODEC_ID_SONIC_LS,
00171 CODEC_ID_FLAC,
00172 CODEC_ID_MP3ADU,
00173 CODEC_ID_MP3ON4,
00174 CODEC_ID_SHORTEN,
00175 CODEC_ID_ALAC,
00176 CODEC_ID_WESTWOOD_SND1,
00177 CODEC_ID_GSM,
00178
00179 CODEC_ID_OGGTHEORA= 0x16000,
00180
00181
00182 CODEC_ID_DVD_SUBTITLE= 0x17000,
00183 CODEC_ID_DVB_SUBTITLE,
00184
00185 CODEC_ID_MPEG2TS= 0x20000,
00186
00187 };
00188
00189
00190 #define CODEC_ID_MP3LAME CODEC_ID_MP3
00191
00192 enum CodecType {
00193 CODEC_TYPE_UNKNOWN = -1,
00194 CODEC_TYPE_VIDEO,
00195 CODEC_TYPE_AUDIO,
00196 CODEC_TYPE_DATA,
00197 CODEC_TYPE_SUBTITLE,
00198 };
00199
00218 enum PixelFormat {
00219 PIX_FMT_NONE= -1,
00220 PIX_FMT_YUV420P,
00221 PIX_FMT_YUV422,
00222 PIX_FMT_RGB24,
00223 PIX_FMT_BGR24,
00224 PIX_FMT_YUV422P,
00225 PIX_FMT_YUV444P,
00226 PIX_FMT_RGBA32,
00227 PIX_FMT_YUV410P,
00228 PIX_FMT_YUV411P,
00229 PIX_FMT_RGB565,
00230 PIX_FMT_RGB555,
00231 PIX_FMT_GRAY8,
00232 PIX_FMT_MONOWHITE,
00233 PIX_FMT_MONOBLACK,
00234 PIX_FMT_PAL8,
00235 PIX_FMT_YUVJ420P,
00236 PIX_FMT_YUVJ422P,
00237 PIX_FMT_YUVJ444P,
00238 PIX_FMT_XVMC_MPEG2_MC,
00239 PIX_FMT_XVMC_MPEG2_IDCT,
00240 PIX_FMT_UYVY422,
00241 PIX_FMT_UYVY411,
00242 PIX_FMT_NB,
00243 };
00244
00245
00246 enum SampleFormat {
00247 SAMPLE_FMT_S16 = 0,
00248 SAMPLE_FMT_S32,
00249 SAMPLE_FMT_FLT,
00250 SAMPLE_FMT_DBL,
00251 };
00252
00253
00254 #define AVCODEC_MAX_AUDIO_FRAME_SIZE 131072
00255
00263 #define FF_INPUT_BUFFER_PADDING_SIZE 8
00264
00269 #define FF_MIN_BUFFER_SIZE 16384
00270
00271
00272 enum Motion_Est_ID {
00273 ME_ZERO = 1,
00274 ME_FULL,
00275 ME_LOG,
00276 ME_PHODS,
00277 ME_EPZS,
00278 ME_X1
00279 };
00280
00281 enum AVRounding {
00282 AV_ROUND_ZERO = 0,
00283 AV_ROUND_INF = 1,
00284 AV_ROUND_DOWN = 2,
00285 AV_ROUND_UP = 3,
00286 AV_ROUND_NEAR_INF = 5,
00287 };
00288
00289 enum AVDiscard{
00290
00291 AVDISCARD_NONE =-16,
00292 AVDISCARD_DEFAULT= 0,
00293 AVDISCARD_NONREF = 8,
00294 AVDISCARD_BIDIR = 16,
00295 AVDISCARD_NONKEY = 32,
00296 AVDISCARD_ALL = 48,
00297 };
00298
00299 typedef struct RcOverride{
00300 int start_frame;
00301 int end_frame;
00302 int qscale;
00303 float quality_factor;
00304 } RcOverride;
00305
00306
00307 extern int motion_estimation_method;
00308
00309 #define FF_MAX_B_FRAMES 8
00310
00311
00312
00313
00314
00315
00316 #define CODEC_FLAG_QSCALE 0x0002
00317 #define CODEC_FLAG_4MV 0x0004
00318 #define CODEC_FLAG_QPEL 0x0010
00319 #define CODEC_FLAG_GMC 0x0020
00320 #define CODEC_FLAG_MV0 0x0040
00321 #define CODEC_FLAG_PART 0x0080
00322
00323
00324 #define CODEC_FLAG_INPUT_PRESERVED 0x0100
00325 #define CODEC_FLAG_PASS1 0x0200
00326 #define CODEC_FLAG_PASS2 0x0400
00327 #define CODEC_FLAG_EXTERN_HUFF 0x1000
00328 #define CODEC_FLAG_GRAY 0x2000
00329 #define CODEC_FLAG_EMU_EDGE 0x4000
00330 #define CODEC_FLAG_PSNR 0x8000
00331 #define CODEC_FLAG_TRUNCATED 0x00010000
00333 #define CODEC_FLAG_NORMALIZE_AQP 0x00020000
00334 #define CODEC_FLAG_INTERLACED_DCT 0x00040000
00335 #define CODEC_FLAG_LOW_DELAY 0x00080000
00336 #define CODEC_FLAG_ALT_SCAN 0x00100000
00337 #define CODEC_FLAG_TRELLIS_QUANT 0x00200000
00338 #define CODEC_FLAG_GLOBAL_HEADER 0x00400000
00339 #define CODEC_FLAG_BITEXACT 0x00800000
00340
00341 #define CODEC_FLAG_H263P_AIC 0x01000000
00342 #define CODEC_FLAG_AC_PRED 0x01000000
00343 #define CODEC_FLAG_H263P_UMV 0x02000000
00344 #define CODEC_FLAG_CBP_RD 0x04000000
00345 #define CODEC_FLAG_QP_RD 0x08000000
00346 #define CODEC_FLAG_H263P_AIV 0x00000008
00347 #define CODEC_FLAG_OBMC 0x00000001
00348 #define CODEC_FLAG_LOOP_FILTER 0x00000800
00349 #define CODEC_FLAG_H263P_SLICE_STRUCT 0x10000000
00350 #define CODEC_FLAG_INTERLACED_ME 0x20000000
00351 #define CODEC_FLAG_SVCD_SCAN_OFFSET 0x40000000
00352 #define CODEC_FLAG_CLOSED_GOP 0x80000000
00353 #define CODEC_FLAG2_FAST 0x00000001
00354 #define CODEC_FLAG2_STRICT_GOP 0x00000002
00355 #define CODEC_FLAG2_NO_OUTPUT 0x00000004
00356 #define CODEC_FLAG2_LOCAL_HEADER 0x00000008
00357
00358
00359
00360
00361
00362
00363
00364
00365 #define CODEC_CAP_DRAW_HORIZ_BAND 0x0001
00366
00370 #define CODEC_CAP_DR1 0x0002
00371
00372
00373 #define CODEC_CAP_PARSE_ONLY 0x0004
00374 #define CODEC_CAP_TRUNCATED 0x0008
00375
00376 #define CODEC_CAP_HWACCEL 0x0010
00377
00381 #define CODEC_CAP_DELAY 0x0020
00382
00383
00384 #define MB_TYPE_INTRA4x4 0x0001
00385 #define MB_TYPE_INTRA16x16 0x0002 //FIXME h264 specific
00386 #define MB_TYPE_INTRA_PCM 0x0004 //FIXME h264 specific
00387 #define MB_TYPE_16x16 0x0008
00388 #define MB_TYPE_16x8 0x0010
00389 #define MB_TYPE_8x16 0x0020
00390 #define MB_TYPE_8x8 0x0040
00391 #define MB_TYPE_INTERLACED 0x0080
00392 #define MB_TYPE_DIRECT2 0x0100 //FIXME
00393 #define MB_TYPE_ACPRED 0x0200
00394 #define MB_TYPE_GMC 0x0400
00395 #define MB_TYPE_SKIP 0x0800
00396 #define MB_TYPE_P0L0 0x1000
00397 #define MB_TYPE_P1L0 0x2000
00398 #define MB_TYPE_P0L1 0x4000
00399 #define MB_TYPE_P1L1 0x8000
00400 #define MB_TYPE_L0 (MB_TYPE_P0L0 | MB_TYPE_P1L0)
00401 #define MB_TYPE_L1 (MB_TYPE_P0L1 | MB_TYPE_P1L1)
00402 #define MB_TYPE_L0L1 (MB_TYPE_L0 | MB_TYPE_L1)
00403 #define MB_TYPE_QUANT 0x00010000
00404 #define MB_TYPE_CBP 0x00020000
00405
00406
00411 typedef struct AVPanScan{
00417 int id;
00418
00424 int width;
00425 int height;
00426
00432 int16_t position[3][2];
00433 }AVPanScan;
00434
00435 #define FF_COMMON_FRAME \
00436 \
00442 uint8_t *data[4];\
00443 int linesize[4];\
00444 \
00450 uint8_t *base[4];\
00451 \
00456 int key_frame;\
00457 \
00458 \
00463 int pict_type;\
00464 \
00465 \
00471 int64_t pts;\
00472 \
00473 \
00478 int coded_picture_number;\
00479 \
00484 int display_picture_number;\
00485 \
00486 \
00491 int quality; \
00492 \
00493 \
00499 int age;\
00500 \
00501 \
00506 int reference;\
00507 \
00508 \
00513 int8_t *qscale_table;\
00514 \
00519 int qstride;\
00520 \
00521 \
00527 uint8_t *mbskip_table;\
00528 \
00529 \
00541 int16_t (*motion_val[2])[2];\
00542 \
00543 \
00549 uint32_t *mb_type;\
00550 \
00551 \
00557 uint8_t motion_subsample_log2;\
00558 \
00559 \
00564 void *opaque;\
00565 \
00566 \
00571 uint64_t error[4];\
00572 \
00573 \
00579 int type;\
00580 \
00581 \
00587 int repeat_pict;\
00588 \
00589 \
00592 int qscale_type;\
00593 \
00594 \
00599 int interlaced_frame;\
00600 \
00601 \
00606 int top_field_first;\
00607 \
00608 \
00613 AVPanScan *pan_scan;\
00614 \
00615 \
00620 int palette_has_changed;\
00621 \
00622 \
00627 int buffer_hints;\
00628 \
00629 \
00634 short *dct_coeff;\
00635 \
00636 \
00641 int8_t *ref_index[2];
00642
00643 #define FF_QSCALE_TYPE_MPEG1 0
00644 #define FF_QSCALE_TYPE_MPEG2 1
00645
00646 #define FF_BUFFER_TYPE_INTERNAL 1
00647 #define FF_BUFFER_TYPE_USER 2
00648 #define FF_BUFFER_TYPE_SHARED 4
00649 #define FF_BUFFER_TYPE_COPY 8
00650
00651
00652 #define FF_I_TYPE 1 // Intra
00653 #define FF_P_TYPE 2 // Predicted
00654 #define FF_B_TYPE 3 // Bi-dir predicted
00655 #define FF_S_TYPE 4 // S(GMC)-VOP MPEG4
00656 #define FF_SI_TYPE 5
00657 #define FF_SP_TYPE 6
00658
00659 #define FF_BUFFER_HINTS_VALID 0x01 // Buffer hints value is meaningful (if 0 ignore)
00660 #define FF_BUFFER_HINTS_READABLE 0x02 // Codec will read from buffer
00661 #define FF_BUFFER_HINTS_PRESERVE 0x04 // User must not alter buffer content
00662 #define FF_BUFFER_HINTS_REUSABLE 0x08 // Codec will reuse the buffer (update)
00663
00667 typedef struct AVFrame {
00668 FF_COMMON_FRAME
00669 } AVFrame;
00670
00671 #define DEFAULT_FRAME_RATE_BASE 1001000
00672
00676 typedef struct AVCLASS AVClass;
00677 struct AVCLASS {
00678 const char* class_name;
00679 const char* (*item_name)(void*);
00680
00681
00682
00683 };
00684
00688 typedef struct AVCodecContext {
00693 AVClass *av_class;
00699 int bit_rate;
00700
00707 int bit_rate_tolerance;
00708
00714 int flags;
00715
00721 int sub_id;
00722
00728 int me_method;
00729
00740 void *extradata;
00741 int extradata_size;
00742
00743
00749 AVRational time_base;
00750
00758 int width, height;
00759
00760 #define FF_ASPECT_EXTENDED 15
00761
00767 int gop_size;
00768
00774 enum PixelFormat pix_fmt;
00775
00782 int rate_emu;
00783
00796 void (*draw_horiz_band)(struct AVCodecContext *s,
00797 const AVFrame *src, int offset[4],
00798 int y, int type, int height);
00799
00800
00801 int sample_rate;
00802 int channels;
00803
00809 enum SampleFormat sample_fmt;
00810
00811
00815 int frame_size;
00816 int frame_number;
00817 int real_pict_num;
00818
00825 int delay;
00826
00827
00828 float qcompress;
00829 float qblur;
00830
00836 int qmin;
00837
00843 int qmax;
00844
00850 int max_qdiff;
00851
00858 int max_b_frames;
00859
00865 float b_quant_factor;
00866
00868 int rc_strategy;
00869 int b_frame_strategy;
00870
00877 int hurry_up;
00878
00879 struct AVCodec *codec;
00880
00881 void *priv_data;
00882
00883
00884 int rtp_mode;
00885
00886 int rtp_payload_size;
00887
00888
00889
00890
00891
00892
00893
00894
00895
00896
00897
00898
00899
00900 void (*rtp_callback)(struct AVCodecContext *avctx, void *data, int size, int mb_nb);
00901
00902
00903 int mv_bits;
00904 int header_bits;
00905 int i_tex_bits;
00906 int p_tex_bits;
00907 int i_count;
00908 int p_count;
00909 int skip_count;
00910 int misc_bits;
00911
00917 int frame_bits;
00918
00924 void *opaque;
00925
00926 char codec_name[32];
00927 enum CodecType codec_type;
00928 enum CodecID codec_id;
00929
00936 unsigned int codec_tag;
00937
00943 int workaround_bugs;
00944 #define FF_BUG_AUTODETECT 1
00945 #define FF_BUG_OLD_MSMPEG4 2
00946 #define FF_BUG_XVID_ILACE 4
00947 #define FF_BUG_UMP4 8
00948 #define FF_BUG_NO_PADDING 16
00949 #define FF_BUG_AMV 32
00950 #define FF_BUG_AC_VLC 0
00951 #define FF_BUG_QPEL_CHROMA 64
00952 #define FF_BUG_STD_QPEL 128
00953 #define FF_BUG_QPEL_CHROMA2 256
00954 #define FF_BUG_DIRECT_BLOCKSIZE 512
00955 #define FF_BUG_EDGE 1024
00956 #define FF_BUG_HPEL_CHROMA 2048
00957 #define FF_BUG_DC_CLIP 4096
00958 #define FF_BUG_MS 8192
00959 //#define FF_BUG_FAKE_SCALABILITY 16 //autodetection should work 100%
00960
00966 int luma_elim_threshold;
00967
00973 int chroma_elim_threshold;
00974
00980 int strict_std_compliance;
00981 #define FF_COMPLIANCE_VERY_STRICT 2
00982 #define FF_COMPLIANCE_STRICT 1
00983 #define FF_COMPLIANCE_NORMAL 0
00984 #define FF_COMPLIANCE_INOFFICIAL -1
00985 #define FF_COMPLIANCE_EXPERIMENTAL -2
00986
00987
00994 float b_quant_offset;
00995
01002 int error_resilience;
01003 #define FF_ER_CAREFUL 1
01004 #define FF_ER_COMPLIANT 2
01005 #define FF_ER_AGGRESSIVE 3
01006 #define FF_ER_VERY_AGGRESSIVE 4
01007
01016 int (*get_buffer)(struct AVCodecContext *c, AVFrame *pic);
01017
01025 void (*release_buffer)(struct AVCodecContext *c, AVFrame *pic);
01026
01032 int has_b_frames;
01033
01038 int block_align;
01039
01040 int parse_only;
01041
01042
01043
01049 int mpeg_quant;
01050
01056 char *stats_out;
01057
01064 char *stats_in;
01065
01072 float rc_qsquish;
01073
01074 float rc_qmod_amp;
01075 int rc_qmod_freq;
01076
01082 RcOverride *rc_override;
01083 int rc_override_count;
01084
01090 char *rc_eq;
01091
01097 int rc_max_rate;
01098
01104 int rc_min_rate;
01105
01111 int rc_buffer_size;
01112 float rc_buffer_aggressivity;
01113
01121 float i_quant_factor;
01122
01128 float i_quant_offset;
01129
01135 float rc_initial_cplx;
01136
01142 int dct_algo;
01143 #define FF_DCT_AUTO 0
01144 #define FF_DCT_FASTINT 1
01145 #define FF_DCT_INT 2
01146 #define FF_DCT_MMX 3
01147 #define FF_DCT_MLIB 4
01148 #define FF_DCT_ALTIVEC 5
01149 #define FF_DCT_FAAN 6
01150
01156 float lumi_masking;
01157
01163 float temporal_cplx_masking;
01164
01170 float spatial_cplx_masking;
01171
01177 float p_masking;
01178
01184 float dark_masking;
01185
01186
01187
01188 int unused;
01189
01195 int idct_algo;
01196 #define FF_IDCT_AUTO 0
01197 #define FF_IDCT_INT 1
01198 #define FF_IDCT_SIMPLE 2
01199 #define FF_IDCT_SIMPLEMMX 3
01200 #define FF_IDCT_LIBMPEG2MMX 4
01201 #define FF_IDCT_PS2 5
01202 #define FF_IDCT_MLIB 6
01203 #define FF_IDCT_ARM 7
01204 #define FF_IDCT_ALTIVEC 8
01205 #define FF_IDCT_SH4 9
01206 #define FF_IDCT_SIMPLEARM 10
01207 #define FF_IDCT_H264 11
01208 #define FF_IDCT_VP3 12
01209 #define FF_IDCT_IPP 13
01210
01216 int slice_count;
01222 int *slice_offset;
01223
01229 int error_concealment;
01230 #define FF_EC_GUESS_MVS 1
01231 #define FF_EC_DEBLOCK 2
01232
01241 unsigned dsp_mask;
01242 #define FF_MM_FORCE 0x80000000
01243
01244 #ifdef HAVE_MMX
01245 #define FF_MM_MMX 0x0001
01246 #define FF_MM_3DNOW 0x0004
01247 #define FF_MM_MMXEXT 0x0002
01248 #define FF_MM_SSE 0x0008
01249 #define FF_MM_SSE2 0x0010
01250 #define FF_MM_3DNOWEXT 0x0020
01251 #endif
01252 #ifdef HAVE_IWMMXT
01253 #define FF_MM_IWMMXT 0x0100
01254 #endif
01255
01261 int bits_per_sample;
01262
01268 int prediction_method;
01269 #define FF_PRED_LEFT 0
01270 #define FF_PRED_PLANE 1
01271 #define FF_PRED_MEDIAN 2
01272
01279 AVRational sample_aspect_ratio;
01280
01286 AVFrame *coded_frame;
01287
01293 int debug;
01294 #define FF_DEBUG_PICT_INFO 1
01295 #define FF_DEBUG_RC 2
01296 #define FF_DEBUG_BITSTREAM 4
01297 #define FF_DEBUG_MB_TYPE 8
01298 #define FF_DEBUG_QP 16
01299 #define FF_DEBUG_MV 32
01300 #define FF_DEBUG_DCT_COEFF 0x00000040
01301 #define FF_DEBUG_SKIP 0x00000080
01302 #define FF_DEBUG_STARTCODE 0x00000100
01303 #define FF_DEBUG_PTS 0x00000200
01304 #define FF_DEBUG_ER 0x00000400
01305 #define FF_DEBUG_MMCO 0x00000800
01306 #define FF_DEBUG_BUGS 0x00001000
01307 #define FF_DEBUG_VIS_QP 0x00002000
01308 #define FF_DEBUG_VIS_MB_TYPE 0x00004000
01309
01315 int debug_mv;
01316 #define FF_DEBUG_VIS_MV_P_FOR 0x00000001 //visualize forward predicted MVs of P frames
01317 #define FF_DEBUG_VIS_MV_B_FOR 0x00000002 //visualize forward predicted MVs of B frames
01318 #define FF_DEBUG_VIS_MV_B_BACK 0x00000004 //visualize backward predicted MVs of B frames
01319
01325 uint64_t error[4];
01326
01332 int mb_qmin;
01333
01339 int mb_qmax;
01340
01346 int me_cmp;
01352 int me_sub_cmp;
01358 int mb_cmp;
01364 int ildct_cmp;
01365 #define FF_CMP_SAD 0
01366 #define FF_CMP_SSE 1
01367 #define FF_CMP_SATD 2
01368 #define FF_CMP_DCT 3
01369 #define FF_CMP_PSNR 4
01370 #define FF_CMP_BIT 5
01371 #define FF_CMP_RD 6
01372 #define FF_CMP_ZERO 7
01373 #define FF_CMP_VSAD 8
01374 #define FF_CMP_VSSE 9
01375 #define FF_CMP_NSSE 10
01376 #define FF_CMP_W53 11
01377 #define FF_CMP_W97 12
01378 #define FF_CMP_DCTMAX 13
01379 #define FF_CMP_CHROMA 256
01380
01386 int dia_size;
01387
01393 int last_predictor_count;
01394
01400 int pre_me;
01401
01407 int me_pre_cmp;
01408
01414 int pre_dia_size;
01415
01421 int me_subpel_quality;
01422
01432 enum PixelFormat (*get_format)(struct AVCodecContext *s, const enum PixelFormat * fmt);
01433
01442 int dtg_active_format;
01443 #define FF_DTG_AFD_SAME 8
01444 #define FF_DTG_AFD_4_3 9
01445 #define FF_DTG_AFD_16_9 10
01446 #define FF_DTG_AFD_14_9 11
01447 #define FF_DTG_AFD_4_3_SP_14_9 13
01448 #define FF_DTG_AFD_16_9_SP_14_9 14
01449 #define FF_DTG_AFD_SP_4_3 15
01450
01458 int me_range;
01459
01465 int intra_quant_bias;
01466 #define FF_DEFAULT_QUANT_BIAS 999999
01467
01473 int inter_quant_bias;
01474
01481 int color_table_id;
01482
01487 int internal_buffer_count;
01488
01493 void *internal_buffer;
01494
01495 #define FF_LAMBDA_SHIFT 7
01496 #define FF_LAMBDA_SCALE (1<<FF_LAMBDA_SHIFT)
01497 #define FF_QP2LAMBDA 118
01498 #define FF_LAMBDA_MAX (256*128-1)
01499
01500 #define FF_QUALITY_SCALE FF_LAMBDA_SCALE //FIXME maybe remove
01501
01507 int global_quality;
01508
01509 #define FF_CODER_TYPE_VLC 0
01510 #define FF_CODER_TYPE_AC 1
01511
01516 int coder_type;
01517
01523 int context_model;
01524
01530 int slice_flags;
01531 #define SLICE_FLAG_CODED_ORDER 0x0001
01532 #define SLICE_FLAG_ALLOW_FIELD 0x0002
01533 #define SLICE_FLAG_ALLOW_PLANE 0x0004
01534
01535
01540 int xvmc_acceleration;
01541
01547 int mb_decision;
01548 #define FF_MB_DECISION_SIMPLE 0
01549 #define FF_MB_DECISION_BITS 1
01550 #define FF_MB_DECISION_RD 2
01551
01552
01557 uint16_t *intra_matrix;
01558
01564 uint16_t *inter_matrix;
01565
01572 unsigned int stream_codec_tag;
01573
01580 int scenechange_threshold;
01581
01587 int lmin;
01588
01594 int lmax;
01595
01601 struct AVPaletteControl *palctrl;
01602
01608 int noise_reduction;
01609
01619 int (*reget_buffer)(struct AVCodecContext *c, AVFrame *pic);
01620
01626 int rc_initial_buffer_occupancy;
01627
01633 int inter_threshold;
01634
01640 int flags2;
01641
01647 int error_rate;
01648
01654 int antialias_algo;
01655 #define FF_AA_AUTO 0
01656 #define FF_AA_FASTINT 1 //not implemented yet
01657 #define FF_AA_INT 2
01658 #define FF_AA_FLOAT 3
01659
01664 int quantizer_noise_shaping;
01665
01672 int thread_count;
01673
01682 int (*execute)(struct AVCodecContext *c, int (*func)(struct AVCodecContext *c2, void *arg), void **arg2, int *ret, int count);
01683
01690 void *thread_opaque;
01691
01699 int me_threshold;
01700
01706 int mb_threshold;
01707
01713 int intra_dc_precision;
01714
01720 int nsse_weight;
01721
01727 int skip_top;
01728
01734 int skip_bottom;
01735
01741 int profile;
01742 #define FF_PROFILE_UNKNOWN -99
01743
01749 int level;
01750 #define FF_LEVEL_UNKNOWN -99
01751
01757 int lowres;
01758
01765 int coded_width, coded_height;
01766
01772 int frame_skip_threshold;
01773
01779 int frame_skip_factor;
01780
01786 int frame_skip_exp;
01787
01793 int frame_skip_cmp;
01794
01801 float border_masking;
01802
01808 int mb_lmin;
01809
01815 int mb_lmax;
01816
01822 int me_penalty_compensation;
01823
01829 enum AVDiscard skip_loop_filter;
01830
01836 enum AVDiscard skip_idct;
01837
01843 enum AVDiscard skip_frame;
01844 } AVCodecContext;
01845
01846
01850 typedef struct AVOption {
01852 const char *name;
01854 const char *help;
01856 int offset;
01858 int type;
01859 #define FF_OPT_TYPE_BOOL 1
01860 #define FF_OPT_TYPE_DOUBLE 2
01861 #define FF_OPT_TYPE_INT 3
01862 #define FF_OPT_TYPE_STRING 4
01863 #define FF_OPT_TYPE_MASK 0x1f
01864 //#define FF_OPT_TYPE_EXPERT 0x20 // flag for expert option
01865 #define FF_OPT_TYPE_FLAG (FF_OPT_TYPE_BOOL | 0x40)
01866 #define FF_OPT_TYPE_RCOVERRIDE (FF_OPT_TYPE_STRING | 0x80)
01867
01868 double min;
01870 double max;
01872 double defval;
01878 const char *defstr;
01879 #define FF_OPT_MAX_DEPTH 10
01880 } AVOption;
01881
01885 typedef struct AVCodec {
01886 const char *name;
01887 enum CodecType type;
01888 enum CodecID id;
01889 int priv_data_size;
01890 int (*init)(AVCodecContext *);
01891 int (*encode)(AVCodecContext *, uint8_t *buf, int buf_size, void *data);
01892 int (*close)(AVCodecContext *);
01893 int (*decode)(AVCodecContext *, void *outdata, int *outdata_size,
01894 uint8_t *buf, int buf_size);
01895 int capabilities;
01896 void *dummy;
01897 struct AVCodec *next;
01898 void (*flush)(AVCodecContext *);
01899 const AVRational *supported_framerates;
01900 const enum PixelFormat *pix_fmts;
01901 } AVCodec;
01902
01907 typedef struct AVPicture {
01908 uint8_t *data[4];
01909 int linesize[4];
01910 } AVPicture;
01911
01917 #define AVPALETTE_SIZE 1024
01918 #define AVPALETTE_COUNT 256
01919 typedef struct AVPaletteControl {
01920
01921
01922
01923 int palette_changed;
01924
01925
01926
01927
01928
01929 unsigned int palette[AVPALETTE_COUNT];
01930
01931 } AVPaletteControl;
01932
01933 typedef struct AVSubtitleRect {
01934 uint16_t x;
01935 uint16_t y;
01936 uint16_t w;
01937 uint16_t h;
01938 uint16_t nb_colors;
01939 int linesize;
01940 uint32_t *rgba_palette;
01941 uint8_t *bitmap;
01942 } AVSubtitleRect;
01943
01944 typedef struct AVSubtitle {
01945 uint16_t format;
01946 uint32_t start_display_time;
01947 uint32_t end_display_time;
01948 uint32_t num_rects;
01949 AVSubtitleRect *rects;
01950 } AVSubtitle;
01951
01952 extern AVCodec ac3_encoder;
01953 extern AVCodec mp2_encoder;
01954 extern AVCodec mp3lame_encoder;
01955 extern AVCodec oggvorbis_encoder;
01956 extern AVCodec oggtheora_encoder;
01957 extern AVCodec faac_encoder;
01958 extern AVCodec xvid_encoder;
01959 extern AVCodec mpeg1video_encoder;
01960 extern AVCodec mpeg2video_encoder;
01961 extern AVCodec h261_encoder;
01962 extern AVCodec h263_encoder;
01963 extern AVCodec h263p_encoder;
01964 extern AVCodec flv_encoder;
01965 extern AVCodec rv10_encoder;
01966 extern AVCodec rv20_encoder;
01967 extern AVCodec dvvideo_encoder;
01968 extern AVCodec mjpeg_encoder;
01969 extern AVCodec ljpeg_encoder;
01970 extern AVCodec png_encoder;
01971 extern AVCodec ppm_encoder;
01972 extern AVCodec pgm_encoder;
01973 extern AVCodec pgmyuv_encoder;
01974 extern AVCodec pbm_encoder;
01975 extern AVCodec pam_encoder;
01976 extern AVCodec mpeg4_encoder;
01977 extern AVCodec msmpeg4v1_encoder;
01978 extern AVCodec msmpeg4v2_encoder;
01979 extern AVCodec msmpeg4v3_encoder;
01980 extern AVCodec wmv1_encoder;
01981 extern AVCodec wmv2_encoder;
01982 extern AVCodec huffyuv_encoder;
01983 extern AVCodec ffvhuff_encoder;
01984 extern AVCodec h264_encoder;
01985 extern AVCodec asv1_encoder;
01986 extern AVCodec asv2_encoder;
01987 extern AVCodec vcr1_encoder;
01988 extern AVCodec ffv1_encoder;
01989 extern AVCodec snow_encoder;
01990 extern AVCodec mdec_encoder;
01991 extern AVCodec zlib_encoder;
01992 extern AVCodec sonic_encoder;
01993 extern AVCodec sonic_ls_encoder;
01994 extern AVCodec svq1_encoder;
01995 extern AVCodec x264_encoder;
01996
01997 extern AVCodec h263_decoder;
01998 extern AVCodec h261_decoder;
01999 extern AVCodec mpeg4_decoder;
02000 extern AVCodec msmpeg4v1_decoder;
02001 extern AVCodec msmpeg4v2_decoder;
02002 extern AVCodec msmpeg4v3_decoder;
02003 extern AVCodec wmv1_decoder;
02004 extern AVCodec wmv2_decoder;
02005 extern AVCodec vc9_decoder;
02006 extern AVCodec wmv3_decoder;
02007 extern AVCodec mpeg1video_decoder;
02008 extern AVCodec mpeg2video_decoder;
02009 extern AVCodec mpegvideo_decoder;
02010 extern AVCodec mpeg_xvmc_decoder;
02011 extern AVCodec h263i_decoder;
02012 extern AVCodec flv_decoder;
02013 extern AVCodec rv10_decoder;
02014 extern AVCodec rv20_decoder;
02015 extern AVCodec rv30_decoder;
02016 extern AVCodec rv40_decoder;
02017 extern AVCodec svq1_decoder;
02018 extern AVCodec svq3_decoder;
02019 extern AVCodec dvvideo_decoder;
02020 extern AVCodec wmav1_decoder;
02021 extern AVCodec wmav2_decoder;
02022 extern AVCodec mjpeg_decoder;
02023 extern AVCodec mjpegb_decoder;
02024 extern AVCodec sp5x_decoder;
02025 extern AVCodec png_decoder;
02026 extern AVCodec mp2_decoder;
02027 extern AVCodec mp3_decoder;
02028 extern AVCodec mp3adu_decoder;
02029 extern AVCodec mp3on4_decoder;
02030 extern AVCodec mace3_decoder;
02031 extern AVCodec mace6_decoder;
02032 extern AVCodec huffyuv_decoder;
02033 extern AVCodec ffvhuff_decoder;
02034 extern AVCodec oggvorbis_decoder;
02035 extern AVCodec oggtheora_decoder;
02036 extern AVCodec cyuv_decoder;
02037 extern AVCodec h264_decoder;
02038 extern AVCodec indeo3_decoder;
02039 extern AVCodec vp3_decoder;
02040 extern AVCodec theora_decoder;
02041 extern AVCodec amr_nb_decoder;
02042 extern AVCodec amr_nb_encoder;
02043 extern AVCodec amr_wb_encoder;
02044 extern AVCodec amr_wb_decoder;
02045 extern AVCodec aac_decoder;
02046 extern AVCodec mpeg4aac_decoder;
02047 extern AVCodec asv1_decoder;
02048 extern AVCodec asv2_decoder;
02049 extern AVCodec vcr1_decoder;
02050 extern AVCodec cljr_decoder;
02051 extern AVCodec ffv1_decoder;
02052 extern AVCodec snow_decoder;
02053 extern AVCodec fourxm_decoder;
02054 extern AVCodec mdec_decoder;
02055 extern AVCodec roq_decoder;
02056 extern AVCodec interplay_video_decoder;
02057 extern AVCodec xan_wc3_decoder;
02058 extern AVCodec rpza_decoder;
02059 extern AVCodec cinepak_decoder;
02060 extern AVCodec msrle_decoder;
02061 extern AVCodec msvideo1_decoder;
02062 extern AVCodec vqa_decoder;
02063 extern AVCodec idcin_decoder;
02064 extern AVCodec eightbps_decoder;
02065 extern AVCodec smc_decoder;
02066 extern AVCodec flic_decoder;
02067 extern AVCodec vmdvideo_decoder;
02068 extern AVCodec vmdaudio_decoder;
02069 extern AVCodec truemotion1_decoder;
02070 extern AVCodec mszh_decoder;
02071 extern AVCodec zlib_decoder;
02072 extern AVCodec ra_144_decoder;
02073 extern AVCodec ra_288_decoder;
02074 extern AVCodec roq_dpcm_decoder;
02075 extern AVCodec interplay_dpcm_decoder;
02076 extern AVCodec xan_dpcm_decoder;
02077 extern AVCodec sol_dpcm_decoder;
02078 extern AVCodec sonic_decoder;
02079 extern AVCodec qtrle_decoder;
02080 extern AVCodec flac_decoder;
02081 extern AVCodec tscc_decoder;
02082 extern AVCodec ulti_decoder;
02083 extern AVCodec qdraw_decoder;
02084 extern AVCodec xl_decoder;
02085 extern AVCodec qpeg_decoder;
02086 extern AVCodec shorten_decoder;
02087 extern AVCodec loco_decoder;
02088 extern AVCodec wnv1_decoder;
02089 extern AVCodec aasc_decoder;
02090 extern AVCodec alac_decoder;
02091 extern AVCodec ws_snd1_decoder;
02092 extern AVCodec indeo2_decoder;
02093 extern AVCodec vorbis_decoder;
02094 extern AVCodec fraps_decoder;
02095 extern AVCodec libgsm_encoder;
02096 extern AVCodec libgsm_decoder;
02097
02098
02099 #define PCM_CODEC(id, name) \
02100 extern AVCodec name ## _decoder; \
02101 extern AVCodec name ## _encoder
02102
02103 PCM_CODEC(CODEC_ID_PCM_S16LE, pcm_s16le);
02104 PCM_CODEC(CODEC_ID_PCM_S16BE, pcm_s16be);
02105 PCM_CODEC(CODEC_ID_PCM_U16LE, pcm_u16le);
02106 PCM_CODEC(CODEC_ID_PCM_U16BE, pcm_u16be);
02107 PCM_CODEC(CODEC_ID_PCM_S8, pcm_s8);
02108 PCM_CODEC(CODEC_ID_PCM_U8, pcm_u8);
02109 PCM_CODEC(CODEC_ID_PCM_ALAW, pcm_alaw);
02110 PCM_CODEC(CODEC_ID_PCM_MULAW, pcm_mulaw);
02111
02112
02113
02114 PCM_CODEC(CODEC_ID_ADPCM_IMA_QT, adpcm_ima_qt);
02115 PCM_CODEC(CODEC_ID_ADPCM_IMA_WAV, adpcm_ima_wav);
02116 PCM_CODEC(CODEC_ID_ADPCM_IMA_DK3, adpcm_ima_dk3);
02117 PCM_CODEC(CODEC_ID_ADPCM_IMA_DK4, adpcm_ima_dk4);
02118 PCM_CODEC(CODEC_ID_ADPCM_IMA_WS, adpcm_ima_ws);
02119 PCM_CODEC(CODEC_ID_ADPCM_SMJPEG, adpcm_ima_smjpeg);
02120 PCM_CODEC(CODEC_ID_ADPCM_MS, adpcm_ms);
02121 PCM_CODEC(CODEC_ID_ADPCM_4XM, adpcm_4xm);
02122 PCM_CODEC(CODEC_ID_ADPCM_XA, adpcm_xa);
02123 PCM_CODEC(CODEC_ID_ADPCM_ADX, adpcm_adx);
02124 PCM_CODEC(CODEC_ID_ADPCM_EA, adpcm_ea);
02125 PCM_CODEC(CODEC_ID_ADPCM_G726, adpcm_g726);
02126 PCM_CODEC(CODEC_ID_ADPCM_CT, adpcm_ct);
02127 PCM_CODEC(CODEC_ID_ADPCM_SWF, adpcm_swf);
02128 PCM_CODEC(CODEC_ID_ADPCM_YAMAHA, adpcm_yamaha);
02129
02130 #undef PCM_CODEC
02131
02132
02133 extern AVCodec rawvideo_encoder;
02134 extern AVCodec rawvideo_decoder;
02135
02136
02137 extern AVCodec ac3_decoder;
02138 extern AVCodec dts_decoder;
02139
02140
02141 extern AVCodec dvdsub_decoder;
02142 extern AVCodec dvbsub_encoder;
02143 extern AVCodec dvbsub_decoder;
02144
02145
02146
02147 struct ReSampleContext;
02148 struct AVResampleContext;
02149
02150 typedef struct ReSampleContext ReSampleContext;
02151
02152 ReSampleContext *audio_resample_init(int output_channels, int input_channels,
02153 int output_rate, int input_rate);
02154 int audio_resample(ReSampleContext *s, short *output, short *input, int nb_samples);
02155 void audio_resample_close(ReSampleContext *s);
02156
02157 struct AVResampleContext *av_resample_init(int out_rate, int in_rate, int filter_length, int log2_phase_count, int linear, double cutoff);
02158 int av_resample(struct AVResampleContext *c, short *dst, short *src, int *consumed, int src_size, int dst_size, int update_ctx);
02159 void av_resample_compensate(struct AVResampleContext *c, int sample_delta, int compensation_distance);
02160 void av_resample_close(struct AVResampleContext *c);
02161
02162
02163
02164 struct ImgReSampleContext;
02165
02166 typedef struct ImgReSampleContext ImgReSampleContext;
02167
02168 ImgReSampleContext *img_resample_init(int output_width, int output_height,
02169 int input_width, int input_height);
02170
02171 ImgReSampleContext *img_resample_full_init(int owidth, int oheight,
02172 int iwidth, int iheight,
02173 int topBand, int bottomBand,
02174 int leftBand, int rightBand,
02175 int padtop, int padbottom,
02176 int padleft, int padright);
02177
02178
02179 void img_resample(ImgReSampleContext *s,
02180 AVPicture *output, const AVPicture *input);
02181
02182 void img_resample_close(ImgReSampleContext *s);
02183
02193 int avpicture_alloc(AVPicture *picture, int pix_fmt, int width, int height);
02194
02195
02196 void avpicture_free(AVPicture *picture);
02197
02198 int avpicture_fill(AVPicture *picture, uint8_t *ptr,
02199 int pix_fmt, int width, int height);
02200 int avpicture_layout(const AVPicture* src, int pix_fmt, int width, int height,
02201 unsigned char *dest, int dest_size);
02202 int avpicture_get_size(int pix_fmt, int width, int height);
02203 void avcodec_get_chroma_sub_sample(int pix_fmt, int *h_shift, int *v_shift);
02204 const char *avcodec_get_pix_fmt_name(int pix_fmt);
02205 void avcodec_set_dimensions(AVCodecContext *s, int width, int height);
02206 enum PixelFormat avcodec_get_pix_fmt(const char* name);
02207 unsigned int avcodec_pix_fmt_to_codec_tag(enum PixelFormat p);
02208
02209 #define FF_LOSS_RESOLUTION 0x0001
02210 #define FF_LOSS_DEPTH 0x0002
02211 #define FF_LOSS_COLORSPACE 0x0004
02212 #define FF_LOSS_ALPHA 0x0008
02213 #define FF_LOSS_COLORQUANT 0x0010
02214 #define FF_LOSS_CHROMA 0x0020
02215
02216 int avcodec_get_pix_fmt_loss(int dst_pix_fmt, int src_pix_fmt,
02217 int has_alpha);
02218 int avcodec_find_best_pix_fmt(int pix_fmt_mask, int src_pix_fmt,
02219 int has_alpha, int *loss_ptr);
02220
02221 #define FF_ALPHA_TRANSP 0x0001
02222 #define FF_ALPHA_SEMI_TRANSP 0x0002
02223 int img_get_alpha_info(const AVPicture *src,
02224 int pix_fmt, int width, int height);
02225
02226
02227 int img_convert(AVPicture *dst, int dst_pix_fmt,
02228 const AVPicture *src, int pix_fmt,
02229 int width, int height);
02230
02231
02232 int avpicture_deinterlace(AVPicture *dst, const AVPicture *src,
02233 int pix_fmt, int width, int height);
02234
02235
02236
02237 extern AVCodec *first_avcodec;
02238
02239
02240 unsigned avcodec_version(void);
02241
02242 unsigned avcodec_build(void);
02243 void avcodec_init(void);
02244
02245 void register_avcodec(AVCodec *format);
02246 AVCodec *avcodec_find_encoder(enum CodecID id);
02247 AVCodec *avcodec_find_encoder_by_name(const char *name);
02248 AVCodec *avcodec_find_decoder(enum CodecID id);
02249 AVCodec *avcodec_find_decoder_by_name(const char *name);
02250 void avcodec_string(char *buf, int buf_size, AVCodecContext *enc, int encode);
02251
02252 void avcodec_get_context_defaults(AVCodecContext *s);
02253 AVCodecContext *avcodec_alloc_context(void);
02254 void avcodec_get_frame_defaults(AVFrame *pic);
02255 AVFrame *avcodec_alloc_frame(void);
02256
02257 int avcodec_default_get_buffer(AVCodecContext *s, AVFrame *pic);
02258 void avcodec_default_release_buffer(AVCodecContext *s, AVFrame *pic);
02259 int avcodec_default_reget_buffer(AVCodecContext *s, AVFrame *pic);
02260 void avcodec_align_dimensions(AVCodecContext *s, int *width, int *height);
02261 int avcodec_check_dimensions(void *av_log_ctx, unsigned int w, unsigned int h);
02262 enum PixelFormat avcodec_default_get_format(struct AVCodecContext *s, const enum PixelFormat * fmt);
02263
02264 int avcodec_thread_init(AVCodecContext *s, int thread_count);
02265 void avcodec_thread_free(AVCodecContext *s);
02266 int avcodec_thread_execute(AVCodecContext *s, int (*func)(AVCodecContext *c2, void *arg2),void **arg, int *ret, int count);
02267 int avcodec_default_execute(AVCodecContext *c, int (*func)(AVCodecContext *c2, void *arg2),void **arg, int *ret, int count);
02268
02269
02274 int avcodec_open(AVCodecContext *avctx, AVCodec *codec);
02275
02276 int avcodec_decode_audio(AVCodecContext *avctx, int16_t *samples,
02277 int *frame_size_ptr,
02278 uint8_t *buf, int buf_size);
02279 int avcodec_decode_video(AVCodecContext *avctx, AVFrame *picture,
02280 int *got_picture_ptr,
02281 uint8_t *buf, int buf_size);
02282 int avcodec_decode_subtitle(AVCodecContext *avctx, AVSubtitle *sub,
02283 int *got_sub_ptr,
02284 const uint8_t *buf, int buf_size);
02285 int avcodec_parse_frame(AVCodecContext *avctx, uint8_t **pdata,
02286 int *data_size_ptr,
02287 uint8_t *buf, int buf_size);
02288 int avcodec_encode_audio(AVCodecContext *avctx, uint8_t *buf, int buf_size,
02289 const short *samples);
02290 int avcodec_encode_video(AVCodecContext *avctx, uint8_t *buf, int buf_size,
02291 const AVFrame *pict);
02292 int avcodec_encode_subtitle(AVCodecContext *avctx, uint8_t *buf, int buf_size,
02293 const AVSubtitle *sub);
02294
02295 int avcodec_close(AVCodecContext *avctx);
02296
02297 void avcodec_register_all(void);
02298
02299 void avcodec_flush_buffers(AVCodecContext *avctx);
02300
02301 void avcodec_default_free_buffers(AVCodecContext *s);
02302
02303
02304
02308 char av_get_pict_type_char(int pict_type);
02309
02316 int av_reduce(int *dst_nom, int *dst_den, int64_t nom, int64_t den, int64_t max);
02317
02322 int64_t av_rescale(int64_t a, int64_t b, int64_t c);
02323
02328 int64_t av_rescale_rnd(int64_t a, int64_t b, int64_t c, enum AVRounding);
02329
02333 int64_t av_rescale_q(int64_t a, AVRational bq, AVRational cq);
02334
02335 double av_int2dbl(int64_t v);
02336 float av_int2flt(int32_t v);
02337 int64_t av_dbl2int(double d);
02338 int32_t av_flt2int(float d);
02339
02340
02341
02342 typedef struct AVCodecParserContext {
02343 void *priv_data;
02344 struct AVCodecParser *parser;
02345 int64_t frame_offset;
02346 int64_t cur_offset;
02347
02348 int64_t last_frame_offset;
02349
02350 int pict_type;
02351 int repeat_pict;
02352 int64_t pts;
02353 int64_t dts;
02354
02355
02356 int64_t last_pts;
02357 int64_t last_dts;
02358 int fetch_timestamp;
02359
02360 #define AV_PARSER_PTS_NB 4
02361 int cur_frame_start_index;
02362 int64_t cur_frame_offset[AV_PARSER_PTS_NB];
02363 int64_t cur_frame_pts[AV_PARSER_PTS_NB];
02364 int64_t cur_frame_dts[AV_PARSER_PTS_NB];
02365 } AVCodecParserContext;
02366
02367 typedef struct AVCodecParser {
02368 int codec_ids[5];
02369 int priv_data_size;
02370 int (*parser_init)(AVCodecParserContext *s);
02371 int (*parser_parse)(AVCodecParserContext *s,
02372 AVCodecContext *avctx,
02373 uint8_t **poutbuf, int *poutbuf_size,
02374 const uint8_t *buf, int buf_size);
02375 void (*parser_close)(AVCodecParserContext *s);
02376 int (*split)(AVCodecContext *avctx, const uint8_t *buf, int buf_size);
02377 struct AVCodecParser *next;
02378 } AVCodecParser;
02379
02380 extern AVCodecParser *av_first_parser;
02381
02382 void av_register_codec_parser(AVCodecParser *parser);
02383 AVCodecParserContext *av_parser_init(int codec_id);
02384 int av_parser_parse(AVCodecParserContext *s,
02385 AVCodecContext *avctx,
02386 uint8_t **poutbuf, int *poutbuf_size,
02387 const uint8_t *buf, int buf_size,
02388 int64_t pts, int64_t dts);
02389 int av_parser_change(AVCodecParserContext *s,
02390 AVCodecContext *avctx,
02391 uint8_t **poutbuf, int *poutbuf_size,
02392 const uint8_t *buf, int buf_size, int keyframe);
02393 void av_parser_close(AVCodecParserContext *s);
02394
02395 extern AVCodecParser mpegvideo_parser;
02396 extern AVCodecParser mpeg4video_parser;
02397 extern AVCodecParser h261_parser;
02398 extern AVCodecParser h263_parser;
02399 extern AVCodecParser h264_parser;
02400 extern AVCodecParser mjpeg_parser;
02401 extern AVCodecParser pnm_parser;
02402 extern AVCodecParser mpegaudio_parser;
02403 extern AVCodecParser ac3_parser;
02404 extern AVCodecParser dvdsub_parser;
02405 extern AVCodecParser dvbsub_parser;
02406
02407
02408 void *av_malloc(unsigned int size);
02409 void *av_mallocz(unsigned int size);
02410 void *av_realloc(void *ptr, unsigned int size);
02411 void av_free(void *ptr);
02412 char *av_strdup(const char *s);
02413 void av_freep(void *ptr);
02414 void *av_fast_realloc(void *ptr, unsigned int *size, unsigned int min_size);
02415
02416
02417 void av_free_static(void);
02418 void *av_mallocz_static(unsigned int size);
02419 void *av_realloc_static(void *ptr, unsigned int size);
02420
02421
02422 int is_adx(const unsigned char *buf,size_t bufsize);
02423
02424 void img_copy(AVPicture *dst, const AVPicture *src,
02425 int pix_fmt, int width, int height);
02426
02427
02428
02429 #include <stdarg.h>
02430
02431 #define AV_LOG_QUIET -1
02432 #define AV_LOG_ERROR 0
02433 #define AV_LOG_INFO 1
02434 #define AV_LOG_DEBUG 2
02435
02436 #ifdef __GNUC__
02437 extern void av_log(void*, int level, const char *fmt, ...) __attribute__ ((__format__ (__printf__, 3, 4)));
02438 #else
02439 extern void av_log(void*, int level, const char *fmt, ...);
02440 #endif
02441
02442 extern void av_vlog(void*, int level, const char *fmt, va_list);
02443 extern int av_log_get_level(void);
02444 extern void av_log_set_level(int);
02445 extern void av_log_set_callback(void (*)(void*, int, const char*, va_list));
02446
02447
02448 #if !defined(BE_16) || !defined(BE_32) || !defined(LE_16) || !defined(LE_32)
02449 #define BE_16(x) ((((uint8_t*)(x))[0] << 8) | ((uint8_t*)(x))[1])
02450 #define BE_32(x) ((((uint8_t*)(x))[0] << 24) | \
02451 (((uint8_t*)(x))[1] << 16) | \
02452 (((uint8_t*)(x))[2] << 8) | \
02453 ((uint8_t*)(x))[3])
02454 #define LE_16(x) ((((uint8_t*)(x))[1] << 8) | ((uint8_t*)(x))[0])
02455 #define LE_32(x) ((((uint8_t*)(x))[3] << 24) | \
02456 (((uint8_t*)(x))[2] << 16) | \
02457 (((uint8_t*)(x))[1] << 8) | \
02458 ((uint8_t*)(x))[0])
02459 #endif
02460
02461 extern unsigned int av_xiphlacing(unsigned char *s, unsigned int v);
02462
02463 #ifdef __cplusplus
02464 }
02465 #endif
02466
02467 #endif