Mercurial > mplayer.hg
annotate DOCS/tech/libvo.txt @ 23951:993062afb229
Make the printoption function take the default values from the variable
names related to the flag name, with the possibility to override it if the
variable name is not the same as the flag name. This simplifies printing of
the help message and reduces the possibility of future errors.
author | ivo |
---|---|
date | Tue, 31 Jul 2007 15:10:10 +0000 |
parents | 82a108d63c2a |
children | 6e90a47a6aaf |
rev | line source |
---|---|
5586 | 1 libvo --- the library to handle video output by A'rpi, 2002.04 |
2 ============================================ | |
3 | |
4 Note: before start on this, read colorspaces.txt ! | |
5 | |
6 The constants for different pixelformats are defined in img_format.h, | |
7 their usage is mandatory. | |
8 | |
9 Each vo driver _has_ to implement these: | |
10 | |
11 preinit(): | |
12 init the video system (to support querying for supported formats) | |
13 | |
14 uninit(): | |
15 Uninit the whole system, this is on the same "level" as preinit. | |
16 | |
17 control(): | |
18 Current controls: | |
19 VOCTRL_QUERY_FORMAT - queries if a given pixelformat is supported. | |
20 It also returns various flags decsirbing the capabilities | |
21 of the driver with teh given mode. for the flags, see | |
22 file vfcaps.h ! | |
23 the most important flags, every driver must properly report | |
24 these: | |
25 0x1 - supported (with or without conversion) | |
26 0x2 - supported without conversion (define 0x1 too!) | |
27 0x100 - driver/hardware handles timing (blocking) | |
28 also SET sw/hw scaling and osd support flags, and flip, | |
6847 | 29 and accept_stride if you implement VOCTRL_DRAW_IMAGE (see bellow) |
5586 | 30 NOTE: VOCTRL_QUERY_FORMAT may be called _before_ first config() |
31 but is always called between preinit() and uninit() | |
32 VOCTRL_GET_IMAGE | |
33 libmpcodecs Direct Rendering interface | |
34 You need to update mpi (mp_image.h) structure, for example, | |
35 look at vo_x11, vo_sdl, vo_xv or mga_common. | |
6847 | 36 VOCTRL_DRAW_IMAGE |
5586 | 37 replacement for the current draw_slice/draw_frame way of |
38 passing video frames. by implementing SET_IMAGE, you'll get | |
39 image in mp_image struct instead of by calling draw_*. | |
6847 | 40 unless you return VO_TRUE for VOCTRL_DRAW_IMAGE call, the |
5586 | 41 old-style draw_* functils will be called! |
42 Note: draw_slice is still mandatory, for per-slice rendering! | |
43 VOCTRL_RESET - reset the video device | |
44 This is sent on seeking and similar and is useful if you are | |
45 using a device which prebuffers frames that need to flush them | |
46 before refilling audio/video buffers. | |
47 VOCTRL_PAUSE | |
48 VOCTRL_RESUME | |
49 VOCTRL_GUISUPPORT | |
50 return true only if driver supports co-operation with | |
51 MPlayer's GUI (not yet used by GUI) | |
6815 | 52 VOCTRL_SET_EQUALIZER |
53 set the video equalizer to the given values | |
54 two arguments are provided: item and value | |
55 item is a string, the possible values are (currently): | |
56 brightness, contrast, saturation, hue | |
57 VOCTRL_GET_EQUALIZER | |
58 get the current video equalizer values | |
59 two arguments are provided: item and value | |
11542 | 60 item is a string, the possible values are (currently): |
6815 | 61 brightness, contrast, saturation, hue |
11542 | 62 VOCTRL_ONTOP |
63 Makes the player window stay-on-top. Only supported (currently) | |
64 by drivers which use X11, except SDL, as well as directx and | |
65 gl2 under Windows. | |
16968
e9d849bf8050
add a switch, slave command, and vo control to toggle borderless window.
joey
parents:
12852
diff
changeset
|
66 VOCTRL_BORDER |
e9d849bf8050
add a switch, slave command, and vo control to toggle borderless window.
joey
parents:
12852
diff
changeset
|
67 Makes the player window borderless. Only supported by directx. |
5586 | 68 |
69 config(): | |
70 Set up the video system. You get the dimensions and flags. | |
71 width, height: size of the source image | |
72 d_width, d_height: wanted scaled/display size (it's a hint) | |
73 Flags: | |
74 0x01 - force fullscreen (-fs) | |
75 0x02 - allow mode switching (-vm) | |
76 0x04 - allow software scaling (-zoom) | |
77 0x08 - flipping (-flip) | |
78 They're defined as VOFLAG_* (see libvo/video_out.h) | |
79 | |
22897 | 80 IMPORTANT NOTE: config() may be called 0 (zero), 1 or more (2,3...) |
5586 | 81 times between preinit() and uninit() calls. You MUST handle it, and |
82 you shouldn't crash at second config() call or at uninit() without | |
83 any config() call! To make your life easier, vo_config_count is | |
84 set to the number of previous config() call, counted from preinit(). | |
85 It's set by the caller (vf_vo.c), you don't have to increase it! | |
86 So, you can check for vo_config_count>0 in uninit() when freeing | |
87 resources allocated in config() to avoid crash! | |
88 | |
10904 | 89 You should call geometry() in config() to enable user defined |
90 window size and position. The code should look as following: | |
91 --- | |
92 set x,y,w,h to the values supplied by the caller or to those you deam | |
22289
780caed72ac7
cosmetics: typo fixes, usefuLL --> useful and aswell --> as well
diego
parents:
16968
diff
changeset
|
93 useful. |
10904 | 94 call geometry(&x, &y, &w, &h, screenw, screenh) |
95 call aspect() | |
96 --- | |
97 see libvo/geometry.c for further information | |
98 | |
5586 | 99 draw_slice(): this displays YV12 pictures (3 planes, one full sized that |
100 contains brightness (Y), and 2 quarter-sized which the colour-info | |
101 (U,V). MPEG codecs (libmpeg2, opendivx) use this. This doesn't have | |
102 to display the whole frame, only update small parts of it. | |
103 | |
104 draw_frame(): this is the older interface, this displays only complete | |
105 frames, and can do only packed format (YUY2, RGB/BGR). | |
106 Win32 codecs use this (DivX, Indeo, etc). | |
6847 | 107 If you implement VOCTRL_DRAW_IMAGE, you can left draw_frame. |
5586 | 108 |
109 draw_osd(): this displays subtitles and OSD. | |
110 It's a bit tricky to use it, since it's a callback-style stuff. | |
111 It should call vo_draw_text() with screen dimension and your | |
112 draw_alpha implementation for the pixelformat (function pointer). | |
113 The vo_draw_text() checks the characters to draw, and calls | |
114 draw_alpha() for each. As a help, osd.c contains draw_alpha for | |
115 each pixelformats, use this if possible! | |
116 | |
22289
780caed72ac7
cosmetics: typo fixes, usefuLL --> useful and aswell --> as well
diego
parents:
16968
diff
changeset
|
117 NOTE: This one will be obsolete soon! But it's still useful when |
5586 | 118 you want to do tricks, like rendering osd _after_ hardware scaling |
119 (tdfxfb) or render subtitles under of the image (vo_mpegpes, sdl) | |
120 | |
121 flip_page(): this is called after each frame, this diplays the buffer for | |
12852 | 122 real. This is 'swapbuffers' when doublebuffering. |
5586 | 123 |