annotate libmpcodecs/vf.h @ 16529:d320720fe74e

feel free to fix this as you see fit... i want to be sure people will not take interest in this option and look it up and try using it. just enough for those already know it and still stubborn enough to use it.
author ods15
date Mon, 19 Sep 2005 19:36:10 +0000
parents c82c0d407ec9
children f580a7755ac5
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
5507
d0d029fda134 video filter layer - written from scratch, but inspired a lot by Fredrik Kuivinen's patch
arpi
parents:
diff changeset
1
d0d029fda134 video filter layer - written from scratch, but inspired a lot by Fredrik Kuivinen's patch
arpi
parents:
diff changeset
2 struct vf_instance_s;
d0d029fda134 video filter layer - written from scratch, but inspired a lot by Fredrik Kuivinen's patch
arpi
parents:
diff changeset
3 struct vf_priv_s;
d0d029fda134 video filter layer - written from scratch, but inspired a lot by Fredrik Kuivinen's patch
arpi
parents:
diff changeset
4
d0d029fda134 video filter layer - written from scratch, but inspired a lot by Fredrik Kuivinen's patch
arpi
parents:
diff changeset
5 typedef struct vf_info_s {
d0d029fda134 video filter layer - written from scratch, but inspired a lot by Fredrik Kuivinen's patch
arpi
parents:
diff changeset
6 const char *info;
d0d029fda134 video filter layer - written from scratch, but inspired a lot by Fredrik Kuivinen's patch
arpi
parents:
diff changeset
7 const char *name;
d0d029fda134 video filter layer - written from scratch, but inspired a lot by Fredrik Kuivinen's patch
arpi
parents:
diff changeset
8 const char *author;
d0d029fda134 video filter layer - written from scratch, but inspired a lot by Fredrik Kuivinen's patch
arpi
parents:
diff changeset
9 const char *comment;
d0d029fda134 video filter layer - written from scratch, but inspired a lot by Fredrik Kuivinen's patch
arpi
parents:
diff changeset
10 int (*open)(struct vf_instance_s* vf,char* args);
9593
e9a2af584986 Add the new -vf option wich is the same as vop in reverse order.
albeu
parents: 9490
diff changeset
11 // Ptr to a struct dscribing the options
e9a2af584986 Add the new -vf option wich is the same as vop in reverse order.
albeu
parents: 9490
diff changeset
12 void* opts;
5507
d0d029fda134 video filter layer - written from scratch, but inspired a lot by Fredrik Kuivinen's patch
arpi
parents:
diff changeset
13 } vf_info_t;
d0d029fda134 video filter layer - written from scratch, but inspired a lot by Fredrik Kuivinen's patch
arpi
parents:
diff changeset
14
d0d029fda134 video filter layer - written from scratch, but inspired a lot by Fredrik Kuivinen's patch
arpi
parents:
diff changeset
15 typedef struct vf_image_context_s {
d0d029fda134 video filter layer - written from scratch, but inspired a lot by Fredrik Kuivinen's patch
arpi
parents:
diff changeset
16 mp_image_t* static_images[2];
d0d029fda134 video filter layer - written from scratch, but inspired a lot by Fredrik Kuivinen's patch
arpi
parents:
diff changeset
17 mp_image_t* temp_images[1];
d0d029fda134 video filter layer - written from scratch, but inspired a lot by Fredrik Kuivinen's patch
arpi
parents:
diff changeset
18 mp_image_t* export_images[1];
d0d029fda134 video filter layer - written from scratch, but inspired a lot by Fredrik Kuivinen's patch
arpi
parents:
diff changeset
19 int static_idx;
d0d029fda134 video filter layer - written from scratch, but inspired a lot by Fredrik Kuivinen's patch
arpi
parents:
diff changeset
20 } vf_image_context_t;
d0d029fda134 video filter layer - written from scratch, but inspired a lot by Fredrik Kuivinen's patch
arpi
parents:
diff changeset
21
14878
5723c4b2a2ea fixes for encoding of multiple files
henry
parents: 14183
diff changeset
22 typedef struct vf_format_context_t {
5723c4b2a2ea fixes for encoding of multiple files
henry
parents: 14183
diff changeset
23 int have_configured;
5723c4b2a2ea fixes for encoding of multiple files
henry
parents: 14183
diff changeset
24 int orig_width, orig_height, orig_fmt;
5723c4b2a2ea fixes for encoding of multiple files
henry
parents: 14183
diff changeset
25 } vf_format_context_t;
5723c4b2a2ea fixes for encoding of multiple files
henry
parents: 14183
diff changeset
26
5507
d0d029fda134 video filter layer - written from scratch, but inspired a lot by Fredrik Kuivinen's patch
arpi
parents:
diff changeset
27 typedef struct vf_instance_s {
d0d029fda134 video filter layer - written from scratch, but inspired a lot by Fredrik Kuivinen's patch
arpi
parents:
diff changeset
28 vf_info_t* info;
d0d029fda134 video filter layer - written from scratch, but inspired a lot by Fredrik Kuivinen's patch
arpi
parents:
diff changeset
29 // funcs:
d0d029fda134 video filter layer - written from scratch, but inspired a lot by Fredrik Kuivinen's patch
arpi
parents:
diff changeset
30 int (*config)(struct vf_instance_s* vf,
d0d029fda134 video filter layer - written from scratch, but inspired a lot by Fredrik Kuivinen's patch
arpi
parents:
diff changeset
31 int width, int height, int d_width, int d_height,
d0d029fda134 video filter layer - written from scratch, but inspired a lot by Fredrik Kuivinen's patch
arpi
parents:
diff changeset
32 unsigned int flags, unsigned int outfmt);
d0d029fda134 video filter layer - written from scratch, but inspired a lot by Fredrik Kuivinen's patch
arpi
parents:
diff changeset
33 int (*control)(struct vf_instance_s* vf,
6832
54578e5a8050 ... removed from vf's control(), sing struct for equalizer. based on patch by Jindrich Makovicka <makovick@kmlinux.fjfi.cvut.cz>
arpi
parents: 6780
diff changeset
34 int request, void* data);
5507
d0d029fda134 video filter layer - written from scratch, but inspired a lot by Fredrik Kuivinen's patch
arpi
parents:
diff changeset
35 int (*query_format)(struct vf_instance_s* vf,
d0d029fda134 video filter layer - written from scratch, but inspired a lot by Fredrik Kuivinen's patch
arpi
parents:
diff changeset
36 unsigned int fmt);
d0d029fda134 video filter layer - written from scratch, but inspired a lot by Fredrik Kuivinen's patch
arpi
parents:
diff changeset
37 void (*get_image)(struct vf_instance_s* vf,
d0d029fda134 video filter layer - written from scratch, but inspired a lot by Fredrik Kuivinen's patch
arpi
parents:
diff changeset
38 mp_image_t *mpi);
7368
a894e99c1e51 changing return type of put_image void->int
arpi
parents: 7220
diff changeset
39 int (*put_image)(struct vf_instance_s* vf,
5507
d0d029fda134 video filter layer - written from scratch, but inspired a lot by Fredrik Kuivinen's patch
arpi
parents:
diff changeset
40 mp_image_t *mpi);
9490
48ac3ce565ab start_slice() added - similar to get_image(), but is called when using slices
arpi
parents: 8367
diff changeset
41 void (*start_slice)(struct vf_instance_s* vf,
48ac3ce565ab start_slice() added - similar to get_image(), but is called when using slices
arpi
parents: 8367
diff changeset
42 mp_image_t *mpi);
5507
d0d029fda134 video filter layer - written from scratch, but inspired a lot by Fredrik Kuivinen's patch
arpi
parents:
diff changeset
43 void (*draw_slice)(struct vf_instance_s* vf,
7220
e3ecccc7e505 warning fixes by Dominik Mierzejewski <dominik@rangers.eu.org>
arpi
parents: 6886
diff changeset
44 unsigned char** src, int* stride, int w,int h, int x, int y);
5507
d0d029fda134 video filter layer - written from scratch, but inspired a lot by Fredrik Kuivinen's patch
arpi
parents:
diff changeset
45 void (*uninit)(struct vf_instance_s* vf);
5565
0b301fec999a capabilities support -> automatic insertion of scale, expand, pp
arpi
parents: 5562
diff changeset
46 // caps:
0b301fec999a capabilities support -> automatic insertion of scale, expand, pp
arpi
parents: 5562
diff changeset
47 unsigned int default_caps; // used by default query_format()
0b301fec999a capabilities support -> automatic insertion of scale, expand, pp
arpi
parents: 5562
diff changeset
48 unsigned int default_reqs; // used by default config()
5507
d0d029fda134 video filter layer - written from scratch, but inspired a lot by Fredrik Kuivinen's patch
arpi
parents:
diff changeset
49 // data:
14073
9e81af56f554 fix image dimensions at filter config time
henry
parents: 13593
diff changeset
50 int w, h;
5507
d0d029fda134 video filter layer - written from scratch, but inspired a lot by Fredrik Kuivinen's patch
arpi
parents:
diff changeset
51 vf_image_context_t imgctx;
14878
5723c4b2a2ea fixes for encoding of multiple files
henry
parents: 14183
diff changeset
52 vf_format_context_t fmt;
5507
d0d029fda134 video filter layer - written from scratch, but inspired a lot by Fredrik Kuivinen's patch
arpi
parents:
diff changeset
53 struct vf_instance_s* next;
10140
30cad6ad9dbc fix segfaults with slices. support slice rendering into a filter even
rfelker
parents: 10052
diff changeset
54 mp_image_t *dmpi;
5507
d0d029fda134 video filter layer - written from scratch, but inspired a lot by Fredrik Kuivinen's patch
arpi
parents:
diff changeset
55 struct vf_priv_s* priv;
d0d029fda134 video filter layer - written from scratch, but inspired a lot by Fredrik Kuivinen's patch
arpi
parents:
diff changeset
56 } vf_instance_t;
d0d029fda134 video filter layer - written from scratch, but inspired a lot by Fredrik Kuivinen's patch
arpi
parents:
diff changeset
57
5519
868c13f78f08 vf control codes added, autoq support
arpi
parents: 5508
diff changeset
58 // control codes:
868c13f78f08 vf control codes added, autoq support
arpi
parents: 5508
diff changeset
59 #include "mpc_info.h"
868c13f78f08 vf control codes added, autoq support
arpi
parents: 5508
diff changeset
60
6832
54578e5a8050 ... removed from vf's control(), sing struct for equalizer. based on patch by Jindrich Makovicka <makovick@kmlinux.fjfi.cvut.cz>
arpi
parents: 6780
diff changeset
61 typedef struct vf_seteq_s
54578e5a8050 ... removed from vf's control(), sing struct for equalizer. based on patch by Jindrich Makovicka <makovick@kmlinux.fjfi.cvut.cz>
arpi
parents: 6780
diff changeset
62 {
54578e5a8050 ... removed from vf's control(), sing struct for equalizer. based on patch by Jindrich Makovicka <makovick@kmlinux.fjfi.cvut.cz>
arpi
parents: 6780
diff changeset
63 char *item;
54578e5a8050 ... removed from vf's control(), sing struct for equalizer. based on patch by Jindrich Makovicka <makovick@kmlinux.fjfi.cvut.cz>
arpi
parents: 6780
diff changeset
64 int value;
54578e5a8050 ... removed from vf's control(), sing struct for equalizer. based on patch by Jindrich Makovicka <makovick@kmlinux.fjfi.cvut.cz>
arpi
parents: 6780
diff changeset
65 } vf_equalizer_t;
54578e5a8050 ... removed from vf's control(), sing struct for equalizer. based on patch by Jindrich Makovicka <makovick@kmlinux.fjfi.cvut.cz>
arpi
parents: 6780
diff changeset
66
5519
868c13f78f08 vf control codes added, autoq support
arpi
parents: 5508
diff changeset
67 #define VFCTRL_QUERY_MAX_PP_LEVEL 4 /* test for postprocessing support (max level) */
868c13f78f08 vf control codes added, autoq support
arpi
parents: 5508
diff changeset
68 #define VFCTRL_SET_PP_LEVEL 5 /* set postprocessing level */
868c13f78f08 vf control codes added, autoq support
arpi
parents: 5508
diff changeset
69 #define VFCTRL_SET_EQUALIZER 6 /* set color options (brightness,contrast etc) */
6780
5bf3ed8a17c4 equalizer reworked
alex
parents: 6081
diff changeset
70 #define VFCTRL_GET_EQUALIZER 8 /* gset color options (brightness,contrast etc) */
5643
3d9de27d9bd0 OSD handled by vf control()
arpi
parents: 5565
diff changeset
71 #define VFCTRL_DRAW_OSD 7
6886
0cc9640c2e90 Add the control VFCTRL_CHANGE_RECTANGLE
kmkaplan
parents: 6832
diff changeset
72 #define VFCTRL_CHANGE_RECTANGLE 9 /* Change the rectangle boundaries */
10052
b358b7509e1a sort of a hack, but at least this lets the framerate-increasing
rfelker
parents: 9934
diff changeset
73 #define VFCTRL_FLIP_PAGE 10 /* Tell the vo to flip pages */
12335
189cd9abb0a1 forgot this, needed for vf_harddup
rfelker
parents: 10140
diff changeset
74 #define VFCTRL_DUPLICATE_FRAME 11 /* For encoding - encode zero-change frame */
12337
6f1b4c989914 soft skipping for mencoder. rather than skipping decoding/filtering
rfelker
parents: 12335
diff changeset
75 #define VFCTRL_SKIP_NEXT_FRAME 12 /* For encoding - drop the next frame that passes thru */
13593
e2dca00374f2 add new control message, that is send after end of stream, to flush all remaining frames in the video system
iive
parents: 12337
diff changeset
76 #define VFCTRL_FLUSH_FRAMES 13 /* For encoding - flush delayed frames */
16446
c82c0d407ec9 screenshot filter
henry
parents: 14878
diff changeset
77 #define VFCTRL_SCREENSHOT 14 /* Make a screenshot */
5643
3d9de27d9bd0 OSD handled by vf control()
arpi
parents: 5565
diff changeset
78
5565
0b301fec999a capabilities support -> automatic insertion of scale, expand, pp
arpi
parents: 5562
diff changeset
79 #include "vfcap.h"
5562
e7619ffa7303 VFCAP flags added
arpi
parents: 5550
diff changeset
80
5507
d0d029fda134 video filter layer - written from scratch, but inspired a lot by Fredrik Kuivinen's patch
arpi
parents:
diff changeset
81 // functions:
5661
42e002c565cf mpi clear func
arpi
parents: 5643
diff changeset
82 void vf_mpi_clear(mp_image_t* mpi,int x0,int y0,int w,int h);
5507
d0d029fda134 video filter layer - written from scratch, but inspired a lot by Fredrik Kuivinen's patch
arpi
parents:
diff changeset
83 mp_image_t* vf_get_image(vf_instance_t* vf, unsigned int outfmt, int mp_imgtype, int mp_imgflag, int w, int h);
5550
7d1dfb59c6c0 encoders
arpi
parents: 5519
diff changeset
84
9593
e9a2af584986 Add the new -vf option wich is the same as vop in reverse order.
albeu
parents: 9490
diff changeset
85 vf_instance_t* vf_open_plugin(vf_info_t** filter_list, vf_instance_t* next, char *name, char **args);
e9a2af584986 Add the new -vf option wich is the same as vop in reverse order.
albeu
parents: 9490
diff changeset
86 vf_instance_t* vf_open_filter(vf_instance_t* next, char *name, char **args);
14183
c9ff4fe2caaf add the flip filter at the end of the filter chain.
reimar
parents: 14073
diff changeset
87 vf_instance_t* vf_add_before_vo(vf_instance_t **vf, char *name, char **args);
5550
7d1dfb59c6c0 encoders
arpi
parents: 5519
diff changeset
88 vf_instance_t* vf_open_encoder(vf_instance_t* next, char *name, char *args);
5507
d0d029fda134 video filter layer - written from scratch, but inspired a lot by Fredrik Kuivinen's patch
arpi
parents:
diff changeset
89
5565
0b301fec999a capabilities support -> automatic insertion of scale, expand, pp
arpi
parents: 5562
diff changeset
90 unsigned int vf_match_csp(vf_instance_t** vfp,unsigned int* list,unsigned int preferred);
9934
89da8ec89558 vf_clone_mpi_attributes()
michael
parents: 9593
diff changeset
91 void vf_clone_mpi_attributes(mp_image_t* dst, mp_image_t* src);
5565
0b301fec999a capabilities support -> automatic insertion of scale, expand, pp
arpi
parents: 5562
diff changeset
92
5507
d0d029fda134 video filter layer - written from scratch, but inspired a lot by Fredrik Kuivinen's patch
arpi
parents:
diff changeset
93 // default wrappers:
d0d029fda134 video filter layer - written from scratch, but inspired a lot by Fredrik Kuivinen's patch
arpi
parents:
diff changeset
94 int vf_next_config(struct vf_instance_s* vf,
d0d029fda134 video filter layer - written from scratch, but inspired a lot by Fredrik Kuivinen's patch
arpi
parents:
diff changeset
95 int width, int height, int d_width, int d_height,
d0d029fda134 video filter layer - written from scratch, but inspired a lot by Fredrik Kuivinen's patch
arpi
parents:
diff changeset
96 unsigned int flags, unsigned int outfmt);
d0d029fda134 video filter layer - written from scratch, but inspired a lot by Fredrik Kuivinen's patch
arpi
parents:
diff changeset
97 int vf_next_control(struct vf_instance_s* vf, int request, void* data);
d0d029fda134 video filter layer - written from scratch, but inspired a lot by Fredrik Kuivinen's patch
arpi
parents:
diff changeset
98 int vf_next_query_format(struct vf_instance_s* vf, unsigned int fmt);
7368
a894e99c1e51 changing return type of put_image void->int
arpi
parents: 7220
diff changeset
99 int vf_next_put_image(struct vf_instance_s* vf,mp_image_t *mpi);
8367
14af7d96df34 Fix draw_slice() in passthrough mode.
arpi
parents: 7368
diff changeset
100 void vf_next_draw_slice (struct vf_instance_s* vf, unsigned char** src, int* stride, int w,int h, int x, int y);
5550
7d1dfb59c6c0 encoders
arpi
parents: 5519
diff changeset
101
5507
d0d029fda134 video filter layer - written from scratch, but inspired a lot by Fredrik Kuivinen's patch
arpi
parents:
diff changeset
102 vf_instance_t* append_filters(vf_instance_t* last);
d0d029fda134 video filter layer - written from scratch, but inspired a lot by Fredrik Kuivinen's patch
arpi
parents:
diff changeset
103
6081
47d6a4b0f971 -vop help, patch by Julian J. M. <bandit@telecable.es>
arpi
parents: 5737
diff changeset
104 void vf_list_plugins();
47d6a4b0f971 -vop help, patch by Julian J. M. <bandit@telecable.es>
arpi
parents: 5737
diff changeset
105
5737
de47aebf654c filters uninit
arpi
parents: 5661
diff changeset
106 void vf_uninit_filter(vf_instance_t* vf);
de47aebf654c filters uninit
arpi
parents: 5661
diff changeset
107 void vf_uninit_filter_chain(vf_instance_t* vf);
de47aebf654c filters uninit
arpi
parents: 5661
diff changeset
108
14878
5723c4b2a2ea fixes for encoding of multiple files
henry
parents: 14183
diff changeset
109 int vf_config_wrapper(struct vf_instance_s* vf,
5723c4b2a2ea fixes for encoding of multiple files
henry
parents: 14183
diff changeset
110 int width, int height, int d_width, int d_height,
5723c4b2a2ea fixes for encoding of multiple files
henry
parents: 14183
diff changeset
111 unsigned int flags, unsigned int outfmt);