Skip to content
Snippets Groups Projects
avcodec.h 30.3 KiB
Newer Older
  • Learn to ignore specific revisions
  • Fabrice Bellard's avatar
    Fabrice Bellard committed
                             int *got_picture_ptr,
                             UINT8 *buf, int buf_size);
    
    int avcodec_parse_frame(AVCodecContext *avctx, UINT8 **pdata, 
                            int *data_size_ptr,
                            UINT8 *buf, int buf_size);
    
    Fabrice Bellard's avatar
    Fabrice Bellard committed
    int avcodec_encode_audio(AVCodecContext *avctx, UINT8 *buf, int buf_size, 
                             const short *samples);
    int avcodec_encode_video(AVCodecContext *avctx, UINT8 *buf, int buf_size, 
    
    Michael Niedermayer's avatar
    Michael Niedermayer committed
                             const AVVideoFrame *pict);
    
    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);
    
    
    /**
     * Interface for 0.5.0 version
     *
     * do not even think about it's usage for this moment
     */
    
    typedef struct {
        // compressed size used from given memory buffer
        int size;
        /// I/P/B frame type
        int frame_type;
    } avc_enc_result_t;
    
    /**
     * Commands
     * order can't be changed - once it was defined
     */
    typedef enum {
        // general commands
        AVC_OPEN_BY_NAME = 0xACA000,
        AVC_OPEN_BY_CODEC_ID,
        AVC_OPEN_BY_FOURCC,
        AVC_CLOSE,
    
        AVC_FLUSH,
        // pin - struct { uint8_t* src, uint_t src_size }
        // pout - struct { AVPicture* img, consumed_bytes,
        AVC_DECODE,
        // pin - struct { AVPicture* img, uint8_t* dest, uint_t dest_size }
        // pout - uint_t used_from_dest_size
        AVC_ENCODE, 
    
        // query/get video commands
        AVC_GET_VERSION = 0xACB000,
        AVC_GET_WIDTH,
        AVC_GET_HEIGHT,
        AVC_GET_DELAY,
        AVC_GET_QUANT_TABLE,
        // ...
    
        // query/get audio commands
        AVC_GET_FRAME_SIZE = 0xABC000,
    
        // maybe define some simple structure which
        // might be passed to the user - but they can't
        // contain any codec specific parts and these
        // calls are usualy necessary only few times
    
        // set video commands
        AVC_SET_WIDTH = 0xACD000,
        AVC_SET_HEIGHT,
    
        // set video encoding commands
        AVC_SET_FRAME_RATE = 0xACD800,
        AVC_SET_QUALITY,
        AVC_SET_HURRY_UP,
    
        // set audio commands
        AVC_SET_SAMPLE_RATE = 0xACE000,
        AVC_SET_CHANNELS,
    
    } avc_cmd_t;
    
    /**
     * \param handle  allocated private structure by libavcodec
     *                for initialization pass NULL - will be returned pout
     *                user is supposed to know nothing about its structure
     * \param cmd     type of operation to be performed
     * \param pint    input parameter
     * \param pout    output parameter
     *
     * \returns  command status - eventually for query command it might return
     * integer resulting value
     */
    int avcodec(void* handle, avc_cmd_t cmd, void* pin, void* pout);
    
    
    /* memory */
    
    void *av_malloc(unsigned int size);
    void *av_mallocz(unsigned int size);
    
    void av_free(void *ptr);
    void __av_freep(void **ptr);
    #define av_freep(p) __av_freep((void **)(p))
    
    /* for static data only */
    /* call av_free_static to release all staticaly allocated tables */
    void av_free_static();
    void *__av_mallocz_static(void** location, unsigned int size);
    #define av_mallocz_static(p, s) __av_mallocz_static((void **)(p), s)
    
    Fabrice Bellard's avatar
    Fabrice Bellard committed
    #endif /* AVCODEC_H */