diff options
Diffstat (limited to 'libmpcodecs/vf.h')
-rw-r--r-- | libmpcodecs/vf.h | 145 |
1 files changed, 72 insertions, 73 deletions
diff --git a/libmpcodecs/vf.h b/libmpcodecs/vf.h index 11ee5eaf8e..fa58445e1e 100644 --- a/libmpcodecs/vf.h +++ b/libmpcodecs/vf.h @@ -23,6 +23,9 @@ #include "mpcommon.h" #include "stdbool.h" +#include "mpc_info.h" +#include "vfcap.h" + struct MPOpts; struct vf_instance; struct vf_priv_s; @@ -32,44 +35,39 @@ typedef struct vf_info { const char *name; const char *author; const char *comment; - int (*vf_open)(struct vf_instance *vf,char* args); + int (*vf_open)(struct vf_instance *vf, char *args); // Ptr to a struct dscribing the options - const void* opts; + const void *opts; } vf_info_t; #define NUM_NUMBERED_MPI 50 -typedef struct vf_image_context_s { - mp_image_t* static_images[2]; - mp_image_t* temp_images[1]; - mp_image_t* export_images[1]; - mp_image_t* numbered_images[NUM_NUMBERED_MPI]; +struct vf_image_context { + mp_image_t *static_images[2]; + mp_image_t *temp_images[1]; + mp_image_t *export_images[1]; + mp_image_t *numbered_images[NUM_NUMBERED_MPI]; int static_idx; -} vf_image_context_t; +}; -typedef struct vf_format_context_t { +struct vf_format_context { int have_configured; int orig_width, orig_height, orig_fmt; -} vf_format_context_t; +}; typedef struct vf_instance { - const vf_info_t* info; + const vf_info_t *info; // funcs: int (*config)(struct vf_instance *vf, - int width, int height, int d_width, int d_height, - unsigned int flags, unsigned int outfmt); - int (*control)(struct vf_instance *vf, - int request, void* data); - int (*query_format)(struct vf_instance *vf, - unsigned int fmt); - void (*get_image)(struct vf_instance *vf, - mp_image_t *mpi); - int (*put_image)(struct vf_instance *vf, - mp_image_t *mpi, double pts); - void (*start_slice)(struct vf_instance *vf, - mp_image_t *mpi); - void (*draw_slice)(struct vf_instance *vf, - unsigned char** src, int* stride, int w,int h, int x, int y); + int width, int height, int d_width, int d_height, + unsigned int flags, unsigned int outfmt); + int (*control)(struct vf_instance *vf, int request, void *data); + int (*query_format)(struct vf_instance *vf, unsigned int fmt); + void (*get_image)(struct vf_instance *vf, mp_image_t *mpi); + int (*put_image)(struct vf_instance *vf, mp_image_t *mpi, double pts); + void (*start_slice)(struct vf_instance *vf, mp_image_t *mpi); + void (*draw_slice)(struct vf_instance *vf, unsigned char **src, + int *stride, int w, int h, int x, int y); void (*uninit)(struct vf_instance *vf); int (*continue_buffered_image)(struct vf_instance *vf); @@ -78,82 +76,83 @@ typedef struct vf_instance { unsigned int default_reqs; // used by default config() // data: int w, h; - vf_image_context_t imgctx; - vf_format_context_t fmt; + struct vf_image_context imgctx; + struct vf_format_context fmt; struct vf_instance *next; mp_image_t *dmpi; - struct vf_priv_s* priv; + struct vf_priv_s *priv; struct MPOpts *opts; } vf_instance_t; -// control codes: -#include "mpc_info.h" - -typedef struct vf_seteq_s -{ +typedef struct vf_seteq { const char *item; int value; } vf_equalizer_t; -#define VFCTRL_QUERY_MAX_PP_LEVEL 4 /* test for postprocessing support (max level) */ -#define VFCTRL_SET_PP_LEVEL 5 /* set postprocessing level */ -#define VFCTRL_SET_EQUALIZER 6 /* set color options (brightness,contrast etc) */ -#define VFCTRL_GET_EQUALIZER 8 /* gset color options (brightness,contrast etc) */ +#define VFCTRL_QUERY_MAX_PP_LEVEL 4 // query max postprocessing level (if any) +#define VFCTRL_SET_PP_LEVEL 5 // set postprocessing level +#define VFCTRL_SET_EQUALIZER 6 // set color options (brightness,contrast etc) +#define VFCTRL_GET_EQUALIZER 8 // get color options (brightness,contrast etc) #define VFCTRL_DRAW_OSD 7 -#define VFCTRL_CHANGE_RECTANGLE 9 /* Change the rectangle boundaries */ -#define VFCTRL_DUPLICATE_FRAME 11 /* For encoding - encode zero-change frame */ -#define VFCTRL_SKIP_NEXT_FRAME 12 /* For encoding - drop the next frame that passes thru */ -#define VFCTRL_FLUSH_FRAMES 13 /* For encoding - flush delayed frames */ -#define VFCTRL_SCREENSHOT 14 /* Make a screenshot */ -#define VFCTRL_INIT_EOSD 15 /* Select EOSD renderer */ -#define VFCTRL_DRAW_EOSD 16 /* Render EOSD */ -#define VFCTRL_SET_DEINTERLACE 18 /* Set deinterlacing status */ -#define VFCTRL_GET_DEINTERLACE 19 /* Get deinterlacing status */ +#define VFCTRL_CHANGE_RECTANGLE 9 // vf_rectangle control +#define VFCTRL_DUPLICATE_FRAME 11 // For encoding - encode zero-change frame +#define VFCTRL_SKIP_NEXT_FRAME 12 // For encoding - drop the next frame that passes thru +#define VFCTRL_FLUSH_FRAMES 13 // For encoding - flush delayed frames +#define VFCTRL_SCREENSHOT 14 // Make a screenshot +#define VFCTRL_INIT_EOSD 15 // Select EOSD renderer +#define VFCTRL_DRAW_EOSD 16 // Render EOSD */ +#define VFCTRL_SET_DEINTERLACE 18 // Set deinterlacing status +#define VFCTRL_GET_DEINTERLACE 19 // Get deinterlacing status /* Hack to make the OSD state object available to vf_expand and vf_ass which * access OSD/subtitle state outside of normal OSD draw time. */ #define VFCTRL_SET_OSD_OBJ 20 -#define VFCTRL_REDRAW_OSD 21 /* Change user-visible OSD immediately */ -#define VFCTRL_SET_YUV_COLORSPACE 22 /* arg is struct mp_csp_details* */ -#define VFCTRL_GET_YUV_COLORSPACE 23 /* arg is struct mp_csp_details* */ - -#include "vfcap.h" +#define VFCTRL_REDRAW_OSD 21 // Change user-visible OSD immediately +#define VFCTRL_SET_YUV_COLORSPACE 22 // arg is struct mp_csp_details* +#define VFCTRL_GET_YUV_COLORSPACE 23 // arg is struct mp_csp_details* // functions: -void vf_mpi_clear(mp_image_t* mpi,int x0,int y0,int w,int h); -mp_image_t* vf_get_image(vf_instance_t* vf, unsigned int outfmt, int mp_imgtype, int mp_imgflag, int w, int h); +void vf_mpi_clear(mp_image_t *mpi, int x0, int y0, int w, int h); +mp_image_t *vf_get_image(vf_instance_t *vf, unsigned int outfmt, + int mp_imgtype, int mp_imgflag, int w, int h); -vf_instance_t* vf_open_plugin(struct MPOpts *opts, const vf_info_t* const* filter_list, vf_instance_t* next, const char *name, char **args); +vf_instance_t *vf_open_plugin(struct MPOpts *opts, + const vf_info_t * const *filter_list, vf_instance_t *next, + const char *name, char **args); struct vf_instance *vf_open_plugin_noerr(struct MPOpts *opts, - const vf_info_t * const *filter_list, - vf_instance_t *next, const char *name, - char **args, int *retcode); -vf_instance_t* vf_open_filter(struct MPOpts *opts, vf_instance_t* next, const char *name, char **args); -vf_instance_t* vf_add_before_vo(vf_instance_t **vf, char *name, char **args); -vf_instance_t* vf_open_encoder(struct MPOpts *opts, vf_instance_t* next, const char *name, char *args); - -unsigned int vf_match_csp(vf_instance_t** vfp,const unsigned int* list,unsigned int preferred); -void vf_clone_mpi_attributes(mp_image_t* dst, mp_image_t* src); + const vf_info_t *const *filter_list, vf_instance_t *next, + const char *name, char **args, int *retcode); +vf_instance_t *vf_open_filter(struct MPOpts *opts, vf_instance_t *next, + const char *name, char **args); +vf_instance_t *vf_add_before_vo(vf_instance_t **vf, char *name, char **args); +vf_instance_t *vf_open_encoder(struct MPOpts *opts, vf_instance_t *next, + const char *name, char *args); + +unsigned int vf_match_csp(vf_instance_t **vfp, const unsigned int *list, + unsigned int preferred); +void vf_clone_mpi_attributes(mp_image_t *dst, mp_image_t *src); void vf_queue_frame(vf_instance_t *vf, int (*)(vf_instance_t *)); int vf_output_queued_frame(vf_instance_t *vf); // default wrappers: int vf_next_config(struct vf_instance *vf, - int width, int height, int d_width, int d_height, - unsigned int flags, unsigned int outfmt); -int vf_next_control(struct vf_instance *vf, int request, void* data); + int width, int height, int d_width, int d_height, + unsigned int flags, unsigned int outfmt); +int vf_next_control(struct vf_instance *vf, int request, void *data); int vf_next_query_format(struct vf_instance *vf, unsigned int fmt); -int vf_next_put_image(struct vf_instance *vf,mp_image_t *mpi, double pts); -void vf_next_draw_slice (struct vf_instance *vf, unsigned char** src, int* stride, int w,int h, int x, int y); +int vf_next_put_image(struct vf_instance *vf, mp_image_t *mpi, double pts); +void vf_next_draw_slice(struct vf_instance *vf, unsigned char **src, + int *stride, int w, int h, int x, int y); struct m_obj_settings; -vf_instance_t* append_filters(vf_instance_t* last, struct m_obj_settings *vf_settings); +vf_instance_t *append_filters(vf_instance_t *last, + struct m_obj_settings *vf_settings); -void vf_uninit_filter(vf_instance_t* vf); -void vf_uninit_filter_chain(vf_instance_t* vf); +void vf_uninit_filter(vf_instance_t *vf); +void vf_uninit_filter_chain(vf_instance_t *vf); int vf_config_wrapper(struct vf_instance *vf, - int width, int height, int d_width, int d_height, - unsigned int flags, unsigned int outfmt); + int width, int height, int d_width, int d_height, + unsigned int flags, unsigned int outfmt); static inline int norm_qscale(int qscale, int type) { |