Skip to content
Snippets Groups Projects
avcodec.h 71.6 KiB
Newer Older
  • Learn to ignore specific revisions
  • Ivan Kalvachev's avatar
    Ivan Kalvachev committed
    extern AVCodec mpegvideo_decoder;
    
    Ivan Kalvachev's avatar
    Ivan Kalvachev committed
    extern AVCodec mpeg_xvmc_decoder;
    
    Fabrice Bellard's avatar
    Fabrice Bellard committed
    extern AVCodec h263i_decoder;
    
    Fabrice Bellard's avatar
    Fabrice Bellard committed
    extern AVCodec rv10_decoder;
    
    Michael Niedermayer's avatar
    Michael Niedermayer committed
    extern AVCodec rv20_decoder;
    
    extern AVCodec rv30_decoder;
    extern AVCodec rv40_decoder;
    
    Nick Kurshev's avatar
    Nick Kurshev committed
    extern AVCodec svq1_decoder;
    
    extern AVCodec svq3_decoder;
    
    Fabrice Bellard's avatar
    Fabrice Bellard committed
    extern AVCodec dvvideo_decoder;
    
    Fabrice Bellard's avatar
    Fabrice Bellard committed
    extern AVCodec wmav1_decoder;
    extern AVCodec wmav2_decoder;
    
    extern AVCodec mjpeg_decoder;
    
    extern AVCodec mjpegb_decoder;
    
    extern AVCodec sp5x_decoder;
    
    extern AVCodec png_decoder;
    
    extern AVCodec mp2_decoder;
    
    Fabrice Bellard's avatar
    Fabrice Bellard committed
    extern AVCodec mp3_decoder;
    
    Roberto Togni's avatar
    Roberto Togni committed
    extern AVCodec mp3adu_decoder;
    
    extern AVCodec mace3_decoder;
    extern AVCodec mace6_decoder;
    
    Michael Niedermayer's avatar
    Michael Niedermayer committed
    extern AVCodec huffyuv_decoder;
    
    extern AVCodec ffvhuff_decoder;
    
    extern AVCodec oggvorbis_decoder;
    
    extern AVCodec oggtheora_decoder;
    
    extern AVCodec h264_decoder;
    
    extern AVCodec indeo3_decoder;
    
    extern AVCodec vp3_decoder;
    
    extern AVCodec amr_nb_decoder;
    
    Zdenek Kabelac's avatar
    Zdenek Kabelac committed
    extern AVCodec amr_nb_encoder;
    
    extern AVCodec amr_wb_encoder;
    extern AVCodec amr_wb_decoder;
    
    extern AVCodec aac_decoder;
    extern AVCodec mpeg4aac_decoder;
    
    Michael Niedermayer's avatar
    Michael Niedermayer committed
    extern AVCodec asv1_decoder;
    
    Michael Niedermayer's avatar
    Michael Niedermayer committed
    extern AVCodec asv2_decoder;
    
    Michael Niedermayer's avatar
    Michael Niedermayer committed
    extern AVCodec vcr1_decoder;
    
    Alex Beregszaszi's avatar
    Alex Beregszaszi committed
    extern AVCodec cljr_decoder;
    
    extern AVCodec snow_decoder;
    
    Michael Niedermayer's avatar
    Michael Niedermayer committed
    extern AVCodec fourxm_decoder;
    
    extern AVCodec roq_decoder;
    extern AVCodec interplay_video_decoder;
    
    extern AVCodec xan_wc3_decoder;
    
    extern AVCodec rpza_decoder;
    extern AVCodec cinepak_decoder;
    extern AVCodec msrle_decoder;
    extern AVCodec msvideo1_decoder;
    
    extern AVCodec vqa_decoder;
    
    extern AVCodec idcin_decoder;
    
    Roberto Togni's avatar
    Roberto Togni committed
    extern AVCodec eightbps_decoder;
    
    extern AVCodec smc_decoder;
    
    Mike Melanson's avatar
    Mike Melanson committed
    extern AVCodec flic_decoder;
    
    extern AVCodec vmdvideo_decoder;
    extern AVCodec vmdaudio_decoder;
    
    extern AVCodec truemotion1_decoder;
    
    extern AVCodec mszh_decoder;
    extern AVCodec zlib_decoder;
    
    extern AVCodec ra_144_decoder;
    extern AVCodec ra_288_decoder;
    
    extern AVCodec roq_dpcm_decoder;
    extern AVCodec interplay_dpcm_decoder;
    
    extern AVCodec xan_dpcm_decoder;
    
    extern AVCodec sol_dpcm_decoder;
    
    Michael Niedermayer's avatar
    Michael Niedermayer committed
    extern AVCodec flac_decoder;
    
    extern AVCodec ulti_decoder;
    
    extern AVCodec qpeg_decoder;
    
    extern AVCodec shorten_decoder;
    
    extern AVCodec loco_decoder;
    
    extern AVCodec wnv1_decoder;
    
    extern AVCodec ws_snd1_decoder;
    
    extern AVCodec indeo2_decoder;
    
    extern AVCodec libgsm_encoder;
    extern AVCodec libgsm_decoder;
    
    Fabrice Bellard's avatar
    Fabrice Bellard committed
    
    
    Fabrice Bellard's avatar
    Fabrice Bellard committed
    /* pcm codecs */
    #define PCM_CODEC(id, name) \
    extern AVCodec name ## _decoder; \
    
    Fabrice Bellard's avatar
    Fabrice Bellard committed
    
    PCM_CODEC(CODEC_ID_PCM_S16LE, pcm_s16le);
    PCM_CODEC(CODEC_ID_PCM_S16BE, pcm_s16be);
    PCM_CODEC(CODEC_ID_PCM_U16LE, pcm_u16le);
    PCM_CODEC(CODEC_ID_PCM_U16BE, pcm_u16be);
    PCM_CODEC(CODEC_ID_PCM_S8, pcm_s8);
    PCM_CODEC(CODEC_ID_PCM_U8, pcm_u8);
    PCM_CODEC(CODEC_ID_PCM_ALAW, pcm_alaw);
    PCM_CODEC(CODEC_ID_PCM_MULAW, pcm_mulaw);
    
    
    /* adpcm codecs */
    
    PCM_CODEC(CODEC_ID_ADPCM_IMA_QT, adpcm_ima_qt);
    PCM_CODEC(CODEC_ID_ADPCM_IMA_WAV, adpcm_ima_wav);
    
    PCM_CODEC(CODEC_ID_ADPCM_IMA_DK3, adpcm_ima_dk3);
    PCM_CODEC(CODEC_ID_ADPCM_IMA_DK4, adpcm_ima_dk4);
    
    PCM_CODEC(CODEC_ID_ADPCM_IMA_WS, adpcm_ima_ws);
    
    PCM_CODEC(CODEC_ID_ADPCM_SMJPEG, adpcm_ima_smjpeg);
    
    PCM_CODEC(CODEC_ID_ADPCM_MS, adpcm_ms);
    
    Michael Niedermayer's avatar
    Michael Niedermayer committed
    PCM_CODEC(CODEC_ID_ADPCM_4XM, adpcm_4xm);
    
    PCM_CODEC(CODEC_ID_ADPCM_XA, adpcm_xa);
    PCM_CODEC(CODEC_ID_ADPCM_ADX, adpcm_adx);
    
    PCM_CODEC(CODEC_ID_ADPCM_EA, adpcm_ea);
    
    PCM_CODEC(CODEC_ID_ADPCM_G726, adpcm_g726);
    
    PCM_CODEC(CODEC_ID_ADPCM_CT, adpcm_ct);
    
    PCM_CODEC(CODEC_ID_ADPCM_SWF, adpcm_swf);
    
    PCM_CODEC(CODEC_ID_ADPCM_YAMAHA, adpcm_yamaha);
    
    Fabrice Bellard's avatar
    Fabrice Bellard committed
    #undef PCM_CODEC
    
    /* dummy raw video codec */
    
    extern AVCodec rawvideo_encoder;
    extern AVCodec rawvideo_decoder;
    
    Fabrice Bellard's avatar
    Fabrice Bellard committed
    
    /* the following codecs use external GPL libs */
    extern AVCodec ac3_decoder;
    
    Fabrice Bellard's avatar
    Fabrice Bellard committed
    
    
    /* subtitles */
    extern AVCodec dvdsub_decoder;
    extern AVCodec dvbsub_encoder;
    
    extern AVCodec dvbsub_decoder;
    
    Fabrice Bellard's avatar
    Fabrice Bellard committed
    /* resample.c */
    
    struct ReSampleContext;
    
    Fabrice Bellard's avatar
    Fabrice Bellard committed
    
    typedef struct ReSampleContext ReSampleContext;
    
    ReSampleContext *audio_resample_init(int output_channels, int input_channels, 
                                         int output_rate, int input_rate);
    int audio_resample(ReSampleContext *s, short *output, short *input, int nb_samples);
    void audio_resample_close(ReSampleContext *s);
    
    
    struct AVResampleContext *av_resample_init(int out_rate, int in_rate, int filter_length, int log2_phase_count, int linear, double cutoff);
    
    int av_resample(struct AVResampleContext *c, short *dst, short *src, int *consumed, int src_size, int dst_size, int update_ctx);
    
    Michael Niedermayer's avatar
    Michael Niedermayer committed
    void av_resample_compensate(struct AVResampleContext *c, int sample_delta, int compensation_distance);
    
    Fabrice Bellard's avatar
    Fabrice Bellard committed
    /* YUV420 format is assumed ! */
    
    struct ImgReSampleContext;
    
    typedef struct ImgReSampleContext ImgReSampleContext;
    
    ImgReSampleContext *img_resample_init(int output_width, int output_height,
                                          int input_width, int input_height);
    
    
    ImgReSampleContext *img_resample_full_init(int owidth, int oheight,
                                          int iwidth, int iheight,
                                          int topBand, int bottomBand,
    
                                          int leftBand, int rightBand,
                                          int padtop, int padbottom,
                                          int padleft, int padright);
    
    
    Fabrice Bellard's avatar
    Fabrice Bellard committed
    void img_resample(ImgReSampleContext *s, 
    
                      AVPicture *output, const AVPicture *input);
    
    Fabrice Bellard's avatar
    Fabrice Bellard committed
    
    void img_resample_close(ImgReSampleContext *s);
    
    
    Drew Hess's avatar
    Drew Hess committed
    /**
     * Allocate memory for a picture.  Call avpicture_free to free it.
     *
     * @param picture the picture to be filled in.
     * @param pix_fmt the format of the picture.
     * @param width the width of the picture.
     * @param height the height of the picture.
     * @return 0 if successful, -1 if not.
     */
    int avpicture_alloc(AVPicture *picture, int pix_fmt, int width, int height);
    
    /* Free a picture previously allocated by avpicture_alloc. */
    void avpicture_free(AVPicture *picture);
    
    
    int avpicture_fill(AVPicture *picture, uint8_t *ptr,
    
                       int pix_fmt, int width, int height);
    
    int avpicture_layout(const AVPicture* src, int pix_fmt, int width, int height,
    
                         unsigned char *dest, int dest_size);
    
    int avpicture_get_size(int pix_fmt, int width, int height);
    
    void avcodec_get_chroma_sub_sample(int pix_fmt, int *h_shift, int *v_shift);
    const char *avcodec_get_pix_fmt_name(int pix_fmt);
    
    void avcodec_set_dimensions(AVCodecContext *s, int width, int height);
    
    enum PixelFormat avcodec_get_pix_fmt(const char* name);
    
    unsigned int avcodec_pix_fmt_to_codec_tag(enum PixelFormat p);
    
    #define FF_LOSS_RESOLUTION  0x0001 /* loss due to resolution change */
    #define FF_LOSS_DEPTH       0x0002 /* loss due to color depth change */
    #define FF_LOSS_COLORSPACE  0x0004 /* loss due to color space conversion */
    #define FF_LOSS_ALPHA       0x0008 /* loss of alpha bits */
    #define FF_LOSS_COLORQUANT  0x0010 /* loss due to color quantization */
    #define FF_LOSS_CHROMA      0x0020 /* loss of chroma (e.g. rgb to gray conversion) */
    
    int avcodec_get_pix_fmt_loss(int dst_pix_fmt, int src_pix_fmt,
                                 int has_alpha);
    int avcodec_find_best_pix_fmt(int pix_fmt_mask, int src_pix_fmt,
                                  int has_alpha, int *loss_ptr);
    
    
    #define FF_ALPHA_TRANSP       0x0001 /* image has some totally transparent pixels */
    #define FF_ALPHA_SEMI_TRANSP  0x0002 /* image has some transparent pixels */
    
    int img_get_alpha_info(const AVPicture *src,
    		       int pix_fmt, int width, int height);
    
    /* convert among pixel formats */
    int img_convert(AVPicture *dst, int dst_pix_fmt,
    
                    const AVPicture *src, int pix_fmt, 
    
                    int width, int height);
    
    /* deinterlace a picture */
    
    int avpicture_deinterlace(AVPicture *dst, const AVPicture *src,
    
    Fabrice Bellard's avatar
    Fabrice Bellard committed
                              int pix_fmt, int width, int height);
    
    /* external high level API */
    
    extern AVCodec *first_avcodec;
    
    
    Nick Kurshev's avatar
    Nick Kurshev committed
    /* returns LIBAVCODEC_VERSION_INT constant */
    
    unsigned avcodec_version(void);
    
    Nick Kurshev's avatar
    Nick Kurshev committed
    /* returns LIBAVCODEC_BUILD constant */
    
    unsigned avcodec_build(void);
    
    Fabrice Bellard's avatar
    Fabrice Bellard committed
    void avcodec_init(void);
    
    void register_avcodec(AVCodec *format);
    AVCodec *avcodec_find_encoder(enum CodecID id);
    
    AVCodec *avcodec_find_encoder_by_name(const char *name);
    
    Fabrice Bellard's avatar
    Fabrice Bellard committed
    AVCodec *avcodec_find_decoder(enum CodecID id);
    AVCodec *avcodec_find_decoder_by_name(const char *name);
    void avcodec_string(char *buf, int buf_size, AVCodecContext *enc, int encode);
    
    
    Michael Niedermayer's avatar
    Michael Niedermayer committed
    void avcodec_get_context_defaults(AVCodecContext *s);
    
    Falk Hüffner's avatar
    Falk Hüffner committed
    AVCodecContext *avcodec_alloc_context(void);
    
    Falk Hüffner's avatar
    Falk Hüffner committed
    void avcodec_get_frame_defaults(AVFrame *pic);
    
    AVFrame *avcodec_alloc_frame(void);
    
    Michael Niedermayer's avatar
    Michael Niedermayer committed
    
    
    int avcodec_default_get_buffer(AVCodecContext *s, AVFrame *pic);
    void avcodec_default_release_buffer(AVCodecContext *s, AVFrame *pic);
    
    int avcodec_default_reget_buffer(AVCodecContext *s, AVFrame *pic);
    void avcodec_align_dimensions(AVCodecContext *s, int *width, int *height);
    
    int avcodec_check_dimensions(void *av_log_ctx, unsigned int w, unsigned int h);
    
    enum PixelFormat avcodec_default_get_format(struct AVCodecContext *s, const enum PixelFormat * fmt);
    
    Michael Niedermayer's avatar
    Michael Niedermayer committed
    
    
    Michael Niedermayer's avatar
    1l  
    Michael Niedermayer committed
    int avcodec_thread_init(AVCodecContext *s, int thread_count);
    void avcodec_thread_free(AVCodecContext *s);
    int avcodec_thread_execute(AVCodecContext *s, int (*func)(AVCodecContext *c2, void *arg2),void **arg, int *ret, int count);
    
    int avcodec_default_execute(AVCodecContext *c, int (*func)(AVCodecContext *c2, void *arg2),void **arg, int *ret, int count);
    
    //FIXME func typedef
    
    
    Michael Niedermayer's avatar
    Michael Niedermayer committed
    /**
     * opens / inits the AVCodecContext.
     * not thread save!
     */
    
    Fabrice Bellard's avatar
    Fabrice Bellard committed
    int avcodec_open(AVCodecContext *avctx, AVCodec *codec);
    
    int avcodec_decode_audio(AVCodecContext *avctx, int16_t *samples, 
    
    Fabrice Bellard's avatar
    Fabrice Bellard committed
                             int *frame_size_ptr,
    
                             uint8_t *buf, int buf_size);
    
    int avcodec_decode_video(AVCodecContext *avctx, AVFrame *picture, 
    
    Fabrice Bellard's avatar
    Fabrice Bellard committed
                             int *got_picture_ptr,
    
                             uint8_t *buf, int buf_size);
    
    int avcodec_decode_subtitle(AVCodecContext *avctx, AVSubtitle *sub,
                                int *got_sub_ptr,
                                const uint8_t *buf, int buf_size);
    
    int avcodec_parse_frame(AVCodecContext *avctx, uint8_t **pdata, 
    
                            uint8_t *buf, int buf_size);
    int avcodec_encode_audio(AVCodecContext *avctx, uint8_t *buf, int buf_size, 
    
    Fabrice Bellard's avatar
    Fabrice Bellard committed
                             const short *samples);
    
    int avcodec_encode_video(AVCodecContext *avctx, uint8_t *buf, int buf_size, 
    
                             const AVFrame *pict);
    
    int avcodec_encode_subtitle(AVCodecContext *avctx, uint8_t *buf, int buf_size, 
                                const AVSubtitle *sub);
    
    Fabrice Bellard's avatar
    Fabrice Bellard committed
    
    int avcodec_close(AVCodecContext *avctx);
    
    void avcodec_register_all(void);
    
    Fabrice Bellard's avatar
    Fabrice Bellard committed
    
    
    void avcodec_flush_buffers(AVCodecContext *avctx);
    
    
    void avcodec_default_free_buffers(AVCodecContext *s);
    
    
    Michael Niedermayer's avatar
    Michael Niedermayer committed
    
    /**
     * returns a single letter to describe the picture type
     */
    char av_get_pict_type_char(int pict_type);
    
    
    /* frame parsing */
    typedef struct AVCodecParserContext {
        void *priv_data;
        struct AVCodecParser *parser;
        int64_t frame_offset; /* offset of the current frame */
        int64_t cur_offset; /* current offset 
                               (incremented by each av_parser_parse()) */
        int64_t last_frame_offset; /* offset of the last frame */
        /* video info */
        int pict_type; /* XXX: put it back in AVCodecContext */
        int repeat_pict; /* XXX: put it back in AVCodecContext */
    
        int64_t pts;     /* pts of the current frame */
        int64_t dts;     /* dts of the current frame */
    
        /* private data */
        int64_t last_pts;
        int64_t last_dts;
    
        int fetch_timestamp;
    
    
    #define AV_PARSER_PTS_NB 4
        int cur_frame_start_index;
        int64_t cur_frame_offset[AV_PARSER_PTS_NB];
        int64_t cur_frame_pts[AV_PARSER_PTS_NB];
        int64_t cur_frame_dts[AV_PARSER_PTS_NB];
    
    } AVCodecParserContext;
    
    typedef struct AVCodecParser {
    
    Michael Niedermayer's avatar
    Michael Niedermayer committed
        int codec_ids[5]; /* several codec IDs are permitted */
    
        int priv_data_size;
        int (*parser_init)(AVCodecParserContext *s);
        int (*parser_parse)(AVCodecParserContext *s, 
                            AVCodecContext *avctx,
                            uint8_t **poutbuf, int *poutbuf_size, 
                            const uint8_t *buf, int buf_size);
        void (*parser_close)(AVCodecParserContext *s);
    
        int (*split)(AVCodecContext *avctx, const uint8_t *buf, int buf_size);
    
        struct AVCodecParser *next;
    } AVCodecParser;
    
    extern AVCodecParser *av_first_parser;
    
    void av_register_codec_parser(AVCodecParser *parser);
    AVCodecParserContext *av_parser_init(int codec_id);
    int av_parser_parse(AVCodecParserContext *s, 
                        AVCodecContext *avctx,
                        uint8_t **poutbuf, int *poutbuf_size, 
    
                        const uint8_t *buf, int buf_size,
                        int64_t pts, int64_t dts);
    
    int av_parser_change(AVCodecParserContext *s,
                         AVCodecContext *avctx,
                         uint8_t **poutbuf, int *poutbuf_size, 
                         const uint8_t *buf, int buf_size, int keyframe);
    
    void av_parser_close(AVCodecParserContext *s);
    
    extern AVCodecParser mpegvideo_parser;
    extern AVCodecParser mpeg4video_parser;
    
    extern AVCodecParser h263_parser;
    extern AVCodecParser h264_parser;
    
    Michael Niedermayer's avatar
    Michael Niedermayer committed
    extern AVCodecParser mjpeg_parser;
    
    Michael Niedermayer's avatar
    Michael Niedermayer committed
    extern AVCodecParser pnm_parser;
    
    extern AVCodecParser mpegaudio_parser;
    extern AVCodecParser ac3_parser;
    
    extern AVCodecParser dvdsub_parser;
    
    extern AVCodecParser dvbsub_parser;
    
    /* memory */
    
    void *av_mallocz(unsigned int size);
    
    void *av_realloc(void *ptr, unsigned int size);
    
    void av_free(void *ptr);
    
    char *av_strdup(const char *s);
    
    void av_freep(void *ptr);
    
    void *av_fast_realloc(void *ptr, unsigned int *size, unsigned int min_size);
    
    /* for static data only */
    /* call av_free_static to release all staticaly allocated tables */
    
    void av_free_static(void);
    
    void *av_mallocz_static(unsigned int size);
    
    void *av_realloc_static(void *ptr, unsigned int size);
    
    /* add by bero : in adx.c */
    int is_adx(const unsigned char *buf,size_t bufsize);
    
    
    void img_copy(AVPicture *dst, const AVPicture *src,
                  int pix_fmt, int width, int height);
    
    
    #define AV_LOG_QUIET -1
    
    #define AV_LOG_ERROR 0
    #define AV_LOG_INFO 1
    #define AV_LOG_DEBUG 2
    
    
    extern void av_log(void*, int level, const char *fmt, ...) __attribute__ ((__format__ (__printf__, 3, 4)));
    
    #else
    extern void av_log(void*, int level, const char *fmt, ...);
    #endif
    
    
    extern void av_vlog(void*, int level, const char *fmt, va_list);
    
    extern int av_log_get_level(void);
    extern void av_log_set_level(int);
    
    extern void av_log_set_callback(void (*)(void*, int, const char*, va_list));
    
    #if !defined(BE_16) || !defined(BE_32) || !defined(LE_16) || !defined(LE_32)
    
    #define BE_16(x)  ((((uint8_t*)(x))[0] << 8) | ((uint8_t*)(x))[1])
    #define BE_32(x)  ((((uint8_t*)(x))[0] << 24) | \
                       (((uint8_t*)(x))[1] << 16) | \
                       (((uint8_t*)(x))[2] << 8) | \
                        ((uint8_t*)(x))[3])
    #define LE_16(x)  ((((uint8_t*)(x))[1] << 8) | ((uint8_t*)(x))[0])
    #define LE_32(x)  ((((uint8_t*)(x))[3] << 24) | \
                       (((uint8_t*)(x))[2] << 16) | \
                       (((uint8_t*)(x))[1] << 8) | \
                        ((uint8_t*)(x))[0])
    
    extern unsigned int av_xiphlacing(unsigned char *s, unsigned int v);
    
    
    #ifdef __cplusplus
    }
    #endif
    
    
    Fabrice Bellard's avatar
    Fabrice Bellard committed
    #endif /* AVCODEC_H */