Skip to content
Snippets Groups Projects
avcodec.h 29.6 KiB
Newer Older
  • Learn to ignore specific revisions
  •     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 */