Mercurial > mplayer.hg
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 |
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 | 22 typedef struct vf_format_context_t { |
23 int have_configured; | |
24 int orig_width, orig_height, orig_fmt; | |
25 } vf_format_context_t; | |
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 | 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 | 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 | 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 | 58 // control codes: |
59 #include "mpc_info.h" | |
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 | 67 #define VFCTRL_QUERY_MAX_PP_LEVEL 4 /* test for postprocessing support (max level) */ |
68 #define VFCTRL_SET_PP_LEVEL 5 /* set postprocessing level */ | |
69 #define VFCTRL_SET_EQUALIZER 6 /* set color options (brightness,contrast etc) */ | |
6780 | 70 #define VFCTRL_GET_EQUALIZER 8 /* gset color options (brightness,contrast etc) */ |
5643 | 71 #define VFCTRL_DRAW_OSD 7 |
6886 | 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 | 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 | 77 #define VFCTRL_SCREENSHOT 14 /* Make a screenshot */ |
5643 | 78 |
5565
0b301fec999a
capabilities support -> automatic insertion of scale, expand, pp
arpi
parents:
5562
diff
changeset
|
79 #include "vfcap.h" |
5562 | 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 | 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 | 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 | 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 | 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 | 99 int vf_next_put_image(struct vf_instance_s* vf,mp_image_t *mpi); |
8367 | 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 | 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 | 106 void vf_uninit_filter(vf_instance_t* vf); |
107 void vf_uninit_filter_chain(vf_instance_t* vf); | |
108 | |
14878 | 109 int vf_config_wrapper(struct vf_instance_s* vf, |
110 int width, int height, int d_width, int d_height, | |
111 unsigned int flags, unsigned int outfmt); |