summaryrefslogtreecommitdiffstats
path: root/libmpcodecs/vf.h
diff options
context:
space:
mode:
authorarpi <arpi@b3059339-0415-0410-9bf9-f77b7e298cf2>2002-04-06 22:05:01 +0000
committerarpi <arpi@b3059339-0415-0410-9bf9-f77b7e298cf2>2002-04-06 22:05:01 +0000
commite24cd4d942c0e7261709b4eaca527cfc9750c619 (patch)
tree73812111226d414f6c8516c3b19658f181a4f6b0 /libmpcodecs/vf.h
parent55bafcc362e9ec4ea5883bef9e9e30469b6f7517 (diff)
downloadmpv-e24cd4d942c0e7261709b4eaca527cfc9750c619.tar.bz2
mpv-e24cd4d942c0e7261709b4eaca527cfc9750c619.tar.xz
video filter layer - written from scratch, but inspired a lot by Fredrik Kuivinen's patch
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@5508 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'libmpcodecs/vf.h')
-rw-r--r--libmpcodecs/vf.h57
1 files changed, 57 insertions, 0 deletions
diff --git a/libmpcodecs/vf.h b/libmpcodecs/vf.h
new file mode 100644
index 0000000000..1cba9f9323
--- /dev/null
+++ b/libmpcodecs/vf.h
@@ -0,0 +1,57 @@
+
+struct vf_instance_s;
+struct vf_priv_s;
+
+typedef struct vf_info_s {
+ const char *info;
+ const char *name;
+ const char *author;
+ const char *comment;
+ int (*open)(struct vf_instance_s* vf,char* args);
+} vf_info_t;
+
+typedef struct vf_image_context_s {
+ mp_image_t* static_images[2];
+ mp_image_t* temp_images[1];
+ mp_image_t* export_images[1];
+ int static_idx;
+} vf_image_context_t;
+
+typedef struct vf_instance_s {
+ vf_info_t* info;
+ // funcs:
+ int (*config)(struct vf_instance_s* vf,
+ int width, int height, int d_width, int d_height,
+ unsigned int flags, unsigned int outfmt);
+ int (*control)(struct vf_instance_s* vf,
+ int request, void* data);
+ int (*query_format)(struct vf_instance_s* vf,
+ unsigned int fmt);
+ void (*get_image)(struct vf_instance_s* vf,
+ mp_image_t *mpi);
+ void (*put_image)(struct vf_instance_s* vf,
+ mp_image_t *mpi);
+ void (*draw_slice)(struct vf_instance_s* vf,
+ unsigned char* src, int* stride, int w,int h, int x, int y);
+ void (*uninit)(struct vf_instance_s* vf);
+ // data:
+ vf_image_context_t imgctx;
+ struct vf_instance_s* next;
+ struct vf_priv_s* priv;
+} vf_instance_t;
+
+// functions:
+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_filter(vf_instance_t* next, char *name, char *args);
+
+// default wrappers:
+int vf_next_config(struct vf_instance_s* vf,
+ int width, int height, int d_width, int d_height,
+ unsigned int flags, unsigned int outfmt);
+int vf_next_control(struct vf_instance_s* vf, int request, void* data);
+int vf_next_query_format(struct vf_instance_s* vf, unsigned int fmt);
+void vf_next_put_image(struct vf_instance_s* vf,mp_image_t *mpi);
+void vf_next_uninit(struct vf_instance_s* vf);
+vf_instance_t* append_filters(vf_instance_t* last);
+
+