⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 avfilter.h.svn-base

📁 ffmpeg最新源码
💻 SVN-BASE
📖 第 1 页 / 共 2 页
字号:
     */    int (*poll_frame)(AVFilterLink *link);    /**     * Frame request callback.  A call to this should result in at least one     * frame being output over the given link.  This should return zero on     * success, and another value on error.     *     * Output video pads only.     */    int (*request_frame)(AVFilterLink *link);    /**     * Link configuration callback.     *     * For output pads, this should set the link properties such as     * width/height.  This should NOT set the format property - that is     * negotiated between filters by the filter system using the     * query_formats() callback before this function is called.     *     * For input pads, this should check the properties of the link, and update     * the filter's internal state as necessary.     *     * For both input and output filters, this should return zero on success,     * and another value on error.     */    int (*config_props)(AVFilterLink *link);};/** Default handler for start_frame() for video inputs */void avfilter_default_start_frame(AVFilterLink *link, AVFilterPicRef *picref);/** Default handler for end_frame() for video inputs */void avfilter_default_end_frame(AVFilterLink *link);/** Default handler for config_props() for video outputs */int avfilter_default_config_output_link(AVFilterLink *link);/** Default handler for config_props() for video inputs */int avfilter_default_config_input_link (AVFilterLink *link);/** Default handler for get_video_buffer() for video inputs */AVFilterPicRef *avfilter_default_get_video_buffer(AVFilterLink *link,                                                  int perms);/** * A helper for query_formats() which sets all links to the same list of * formats. If there are no links hooked to this filter, the list of formats is * freed. */void avfilter_set_common_formats(AVFilterContext *ctx, AVFilterFormats *formats);/** Default handler for query_formats() */int avfilter_default_query_formats(AVFilterContext *ctx);/** * Filter definition.  This defines the pads a filter contains, and all the * callback functions used to interact with the filter. */typedef struct{    const char *name;         ///< filter name    int priv_size;      ///< size of private data to allocate for the filter    /**     * Filter initialization function.  Args contains the user-supplied     * parameters.  FIXME: maybe an AVOption-based system would be better?     * opaque is data provided by the code requesting creation of the filter,     * and is used to pass data to the filter.     */    int (*init)(AVFilterContext *ctx, const char *args, void *opaque);    /**     * Filter uninitialization function.  Should deallocate any memory held     * by the filter, release any picture references, etc.  This does not need     * to deallocate the AVFilterContext->priv memory itself.     */    void (*uninit)(AVFilterContext *ctx);    /**     * Query formats supported by the filter and its pads. Should set the     * in_formats for links connected to its output pads, and out_formats     * for links connected to its input pads.     *     * Should return zero on success.     */    int (*query_formats)(AVFilterContext *);    const AVFilterPad *inputs;  ///< NULL terminated list of inputs. NULL if none    const AVFilterPad *outputs; ///< NULL terminated list of outputs. NULL if none} AVFilter;/** An instance of a filter */struct AVFilterContext{    const AVClass *av_class;              ///< needed for av_log()    AVFilter *filter;               ///< the AVFilter of which this is an instance    char *name;                     ///< name of this filter instance    unsigned input_count;           ///< number of input pads    AVFilterPad   *input_pads;      ///< array of input pads    AVFilterLink **inputs;          ///< array of pointers to input links    unsigned output_count;          ///< number of output pads    AVFilterPad   *output_pads;     ///< array of output pads    AVFilterLink **outputs;         ///< array of pointers to output links    void *priv;                     ///< private data for use by the filter};/** * A link between two filters.  This contains pointers to the source and * destination filters between which this link exists, and the indexes of * the pads involved.  In addition, this link also contains the parameters * which have been negotiated and agreed upon between the filter, such as * image dimensions, format, etc */struct AVFilterLink{    AVFilterContext *src;       ///< source filter    unsigned int srcpad;        ///< index of the output pad on the source filter    AVFilterContext *dst;       ///< dest filter    unsigned int dstpad;        ///< index of the input pad on the dest filter    /** stage of the initialization of the link properties (dimensions, etc) */    enum {        AVLINK_UNINIT = 0,      ///< not started        AVLINK_STARTINIT,       ///< started, but incomplete        AVLINK_INIT             ///< complete    } init_state;    int w;                      ///< agreed upon image width    int h;                      ///< agreed upon image height    enum PixelFormat format;    ///< agreed upon image colorspace    /**     * Lists of formats supported by the input and output filters respectively.     * These lists are used for negotiating the format to actually be used,     * which will be loaded into the format member, above, when chosen.     */    AVFilterFormats *in_formats;    AVFilterFormats *out_formats;    /**     * The picture reference currently being sent across the link by the source     * filter.  This is used internally by the filter system to allow     * automatic copying of pictures which do not have sufficient permissions     * for the destination.  This should not be accessed directly by the     * filters.     */    AVFilterPicRef *srcpic;    AVFilterPicRef *cur_pic;    AVFilterPicRef *outpic;};/** * Link two filters together. * @param src    the source filter * @param srcpad index of the output pad on the source filter * @param dst    the destination filter * @param dstpad index of the input pad on the destination filter * @return       zero on success */int avfilter_link(AVFilterContext *src, unsigned srcpad,                  AVFilterContext *dst, unsigned dstpad);/** * Negotiate the colorspace, dimensions, etc of all inputs to a filter. * @param filter the filter to negotiate the properties for its inputs * @return       zero on successful negotiation */int avfilter_config_links(AVFilterContext *filter);/** * Request a picture buffer with a specific set of permissions * @param link  the output link to the filter from which the picture will *              be requested * @param perms the required access permissions * @return      A reference to the picture.  This must be unreferenced with *              avfilter_unref_pic when you are finished with it. */AVFilterPicRef *avfilter_get_video_buffer(AVFilterLink *link, int perms);/** * Request an input frame from the filter at the other end of the link. * @param link the input link * @return     zero on success */int avfilter_request_frame(AVFilterLink *link);/** * Poll a frame from the filter chain. * @param  link the input link * @return      the number of imediately available frames */int avfilter_poll_frame(AVFilterLink *link);/** * Notify the next filter of the start of a frame. * @param link   the output link the frame will be sent over * @param picref A reference to the frame about to be sent.  The data for this *               frame need only be valid once draw_slice() is called for that *               portion.  The receiving filter will free this reference when *               it no longer needs it. */void avfilter_start_frame(AVFilterLink *link, AVFilterPicRef *picref);/** * Notify the next filter that the current frame has finished * @param link the output link the frame was sent over */void avfilter_end_frame(AVFilterLink *link);/** * Send a slice to the next filter. * @param link the output link over which the frame is being sent * @param y    offset in pixels from the top of the image for this slice * @param h    height of this slice in pixels */void avfilter_draw_slice(AVFilterLink *link, int y, int h);/** Initialize the filter system.  Registers all builtin filters */void avfilter_register_all(void);/** Uninitialize the filter system.  Unregisters all filters */void avfilter_uninit(void);/** * Register a filter.  This is only needed if you plan to use * avfilter_get_by_name later to lookup the AVFilter structure by name. A * filter can still by instantiated with avfilter_open even if it is not * registered. * @param filter the filter to register */void avfilter_register(AVFilter *filter);/** * Gets a filter definition matching the given name. * @param name the filter name to find * @return     the filter definition, if any matching one is registered. *             NULL if none found. */AVFilter *avfilter_get_by_name(const char *name);/** * Create a filter instance. * @param filter    the filter to create an instance of * @param inst_name Name to give to the new instance.  Can be NULL for none. * @return          Pointer to the new instance on success.  NULL on failure. */AVFilterContext *avfilter_open(AVFilter *filter, const char *inst_name);/** * Initialize a filter. * @param filter the filter to initialize * @param args   A string of parameters to use when initializing the filter. *               The format and meaning of this string varies by filter. * @param opaque Any extra non-string data needed by the filter.  The meaning *               of this parameter varies by filter. * @return       zero on success */int avfilter_init_filter(AVFilterContext *filter, const char *args, void *opaque);/** * Destroy a filter. * @param filter the filter to destroy */void avfilter_destroy(AVFilterContext *filter);/** * Insert a filter in the middle of an existing link. * @param link the link into which the filter should be inserted * @param filt the filter to be inserted * @param in   the input pad on the filter to connect * @param out  the output pad on the filter to connect * @return     zero on success */int avfilter_insert_filter(AVFilterLink *link, AVFilterContext *filt,                           unsigned in, unsigned out);/** * Insert a new pad. * @param idx Insertion point.  Pad is inserted at the end if this point *            is beyond the end of the list of pads. * @param count Pointer to the number of pads in the list * @param padidx_off Offset within an AVFilterLink structure to the element *                   to increment when inserting a new pad causes link *                   numbering to change * @param pads Pointer to the pointer to the beginning of the list of pads * @param links Pointer to the pointer to the beginning of the list of links * @param newpad The new pad to add. A copy is made when adding. */void avfilter_insert_pad(unsigned idx, unsigned *count, size_t padidx_off,                         AVFilterPad **pads, AVFilterLink ***links,                         AVFilterPad *newpad);/** insert a new input pad for the filter */static inline void avfilter_insert_inpad(AVFilterContext *f, unsigned index,                                         AVFilterPad *p){    avfilter_insert_pad(index, &f->input_count, offsetof(AVFilterLink, dstpad),                        &f->input_pads, &f->inputs, p);}/** insert a new output pad for the filter */static inline void avfilter_insert_outpad(AVFilterContext *f, unsigned index,                                          AVFilterPad *p){    avfilter_insert_pad(index, &f->output_count, offsetof(AVFilterLink, srcpad),                        &f->output_pads, &f->outputs, p);}#endif  /* FFMPEG_AVFILTER_H */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -