Mercurial > mplayer.hg
annotate vidix/vidixlib.h @ 23016:a1ced37f2ee5
Add generic hash map implementation.
Reimplement both font cache and glyph cache on top of it.
author | eugeni |
---|---|
date | Fri, 20 Apr 2007 23:00:30 +0000 |
parents | d74001dbe2a6 |
children | 82216ef041e0 |
rev | line source |
---|---|
3991 | 1 /* |
2 * vidixlib.h | |
3 * VIDIXLib - Library for VIDeo Interface for *niX | |
4 * This interface is introduced as universal one to MPEG decoder, | |
5 * BES == Back End Scaler and YUV2RGB hw accelerators. | |
6 * In the future it may be expanded up to capturing and audio things. | |
7 * Main goal of this this interface imlpementation is providing DGA | |
8 * everywhere where it's possible (unlike X11 and other). | |
22902 | 9 * Copyright 2002 Nick Kurshev, 2007 Benjamin Zores |
3991 | 10 * Licence: GPL |
11 * This interface is based on v4l2, fbvid.h, mga_vid.h projects | |
12 * and personally my ideas. | |
13 * NOTE: This interface is introduces as APP interface. | |
14 * Don't use it for driver. | |
15 * It provides multistreaming. This mean that APP can handle | |
16 * several streams simultaneously. (Example: Video capturing and video | |
17 * playback or capturing, video playback, audio encoding and so on). | |
18 */ | |
19 #ifndef VIDIXLIB_H | |
20 #define VIDIXLIB_H | |
21 | |
22 #ifdef __cplusplus | |
23 extern "C" { | |
24 #endif | |
25 | |
26 #include "vidix.h" | |
27 | |
22857
77def5093daf
switch to new internal vidix API, no more dlopen/dlsym, libvidix is now a fully static library with all drivers built-in
ben
parents:
4191
diff
changeset
|
28 typedef struct VDXDriver { |
77def5093daf
switch to new internal vidix API, no more dlopen/dlsym, libvidix is now a fully static library with all drivers built-in
ben
parents:
4191
diff
changeset
|
29 const char *name; |
77def5093daf
switch to new internal vidix API, no more dlopen/dlsym, libvidix is now a fully static library with all drivers built-in
ben
parents:
4191
diff
changeset
|
30 struct VDXDriver *next; |
77def5093daf
switch to new internal vidix API, no more dlopen/dlsym, libvidix is now a fully static library with all drivers built-in
ben
parents:
4191
diff
changeset
|
31 int (* probe) (int verbose, int force); |
77def5093daf
switch to new internal vidix API, no more dlopen/dlsym, libvidix is now a fully static library with all drivers built-in
ben
parents:
4191
diff
changeset
|
32 int (* get_caps) (vidix_capability_t *cap); |
77def5093daf
switch to new internal vidix API, no more dlopen/dlsym, libvidix is now a fully static library with all drivers built-in
ben
parents:
4191
diff
changeset
|
33 int (*query_fourcc)(vidix_fourcc_t *); |
77def5093daf
switch to new internal vidix API, no more dlopen/dlsym, libvidix is now a fully static library with all drivers built-in
ben
parents:
4191
diff
changeset
|
34 int (*init)(void); |
77def5093daf
switch to new internal vidix API, no more dlopen/dlsym, libvidix is now a fully static library with all drivers built-in
ben
parents:
4191
diff
changeset
|
35 void (*destroy)(void); |
77def5093daf
switch to new internal vidix API, no more dlopen/dlsym, libvidix is now a fully static library with all drivers built-in
ben
parents:
4191
diff
changeset
|
36 int (*config_playback)(vidix_playback_t *); |
77def5093daf
switch to new internal vidix API, no more dlopen/dlsym, libvidix is now a fully static library with all drivers built-in
ben
parents:
4191
diff
changeset
|
37 int (*playback_on)( void ); |
77def5093daf
switch to new internal vidix API, no more dlopen/dlsym, libvidix is now a fully static library with all drivers built-in
ben
parents:
4191
diff
changeset
|
38 int (*playback_off)( void ); |
77def5093daf
switch to new internal vidix API, no more dlopen/dlsym, libvidix is now a fully static library with all drivers built-in
ben
parents:
4191
diff
changeset
|
39 /* Functions below can be missed in driver ;) */ |
77def5093daf
switch to new internal vidix API, no more dlopen/dlsym, libvidix is now a fully static library with all drivers built-in
ben
parents:
4191
diff
changeset
|
40 int (*frame_sel)( unsigned frame_idx ); |
77def5093daf
switch to new internal vidix API, no more dlopen/dlsym, libvidix is now a fully static library with all drivers built-in
ben
parents:
4191
diff
changeset
|
41 int (*get_eq)( vidix_video_eq_t * ); |
77def5093daf
switch to new internal vidix API, no more dlopen/dlsym, libvidix is now a fully static library with all drivers built-in
ben
parents:
4191
diff
changeset
|
42 int (*set_eq)( const vidix_video_eq_t * ); |
77def5093daf
switch to new internal vidix API, no more dlopen/dlsym, libvidix is now a fully static library with all drivers built-in
ben
parents:
4191
diff
changeset
|
43 int (*get_deint)( vidix_deinterlace_t * ); |
77def5093daf
switch to new internal vidix API, no more dlopen/dlsym, libvidix is now a fully static library with all drivers built-in
ben
parents:
4191
diff
changeset
|
44 int (*set_deint)( const vidix_deinterlace_t * ); |
77def5093daf
switch to new internal vidix API, no more dlopen/dlsym, libvidix is now a fully static library with all drivers built-in
ben
parents:
4191
diff
changeset
|
45 int (*copy_frame)( const vidix_dma_t * ); |
77def5093daf
switch to new internal vidix API, no more dlopen/dlsym, libvidix is now a fully static library with all drivers built-in
ben
parents:
4191
diff
changeset
|
46 int (*get_gkey)( vidix_grkey_t * ); |
77def5093daf
switch to new internal vidix API, no more dlopen/dlsym, libvidix is now a fully static library with all drivers built-in
ben
parents:
4191
diff
changeset
|
47 int (*set_gkey)( const vidix_grkey_t * ); |
77def5093daf
switch to new internal vidix API, no more dlopen/dlsym, libvidix is now a fully static library with all drivers built-in
ben
parents:
4191
diff
changeset
|
48 int (*get_num_fx)( unsigned * ); |
77def5093daf
switch to new internal vidix API, no more dlopen/dlsym, libvidix is now a fully static library with all drivers built-in
ben
parents:
4191
diff
changeset
|
49 int (*get_fx)( vidix_oem_fx_t * ); |
77def5093daf
switch to new internal vidix API, no more dlopen/dlsym, libvidix is now a fully static library with all drivers built-in
ben
parents:
4191
diff
changeset
|
50 int (*set_fx)( const vidix_oem_fx_t * ); |
77def5093daf
switch to new internal vidix API, no more dlopen/dlsym, libvidix is now a fully static library with all drivers built-in
ben
parents:
4191
diff
changeset
|
51 } VDXDriver; |
77def5093daf
switch to new internal vidix API, no more dlopen/dlsym, libvidix is now a fully static library with all drivers built-in
ben
parents:
4191
diff
changeset
|
52 |
77def5093daf
switch to new internal vidix API, no more dlopen/dlsym, libvidix is now a fully static library with all drivers built-in
ben
parents:
4191
diff
changeset
|
53 typedef struct VDXContext { |
77def5093daf
switch to new internal vidix API, no more dlopen/dlsym, libvidix is now a fully static library with all drivers built-in
ben
parents:
4191
diff
changeset
|
54 VDXDriver *drv; |
77def5093daf
switch to new internal vidix API, no more dlopen/dlsym, libvidix is now a fully static library with all drivers built-in
ben
parents:
4191
diff
changeset
|
55 /* might be filled in by much more info later on */ |
77def5093daf
switch to new internal vidix API, no more dlopen/dlsym, libvidix is now a fully static library with all drivers built-in
ben
parents:
4191
diff
changeset
|
56 } VDXContext; |
77def5093daf
switch to new internal vidix API, no more dlopen/dlsym, libvidix is now a fully static library with all drivers built-in
ben
parents:
4191
diff
changeset
|
57 |
22865
441582f3ed87
simplified function prototypes to avoid casts but keep external API compatibility
ben
parents:
22862
diff
changeset
|
58 typedef VDXContext * VDL_HANDLE; |
3991 | 59 |
60 /* returns library version */ | |
22862 | 61 unsigned vdlGetVersion( void ); |
3991 | 62 |
63 /* Opens corresponded video driver and returns handle | |
64 of associated stream. | |
65 path - specifies path where drivers are located. | |
66 name - specifies prefered driver name (can be NULL). | |
67 cap - specifies driver capability (TYPE_* constants). | |
3995 | 68 verbose - specifies verbose level |
3991 | 69 returns !0 if ok else NULL. |
70 */ | |
22862 | 71 VDL_HANDLE vdlOpen(const char *path,const char *name,unsigned cap,int verbose); |
3991 | 72 /* Closes stream and corresponded driver. */ |
22865
441582f3ed87
simplified function prototypes to avoid casts but keep external API compatibility
ben
parents:
22862
diff
changeset
|
73 void vdlClose(VDL_HANDLE ctx); |
3991 | 74 |
75 /* Queries driver capabilities. Return 0 if ok else errno */ | |
22862 | 76 int vdlGetCapability(VDL_HANDLE, vidix_capability_t *); |
3991 | 77 |
78 /* Queries support for given fourcc. Returns 0 if ok else errno */ | |
22862 | 79 int vdlQueryFourcc(VDL_HANDLE,vidix_fourcc_t *); |
3991 | 80 |
81 /* Returns 0 if ok else errno */ | |
22862 | 82 int vdlConfigPlayback(VDL_HANDLE, vidix_playback_t *); |
3991 | 83 |
84 /* Returns 0 if ok else errno */ | |
22862 | 85 int vdlPlaybackOn(VDL_HANDLE); |
3991 | 86 |
87 /* Returns 0 if ok else errno */ | |
22862 | 88 int vdlPlaybackOff(VDL_HANDLE); |
3991 | 89 |
90 /* Returns 0 if ok else errno */ | |
22862 | 91 int vdlPlaybackFrameSelect(VDL_HANDLE, unsigned frame_idx ); |
3991 | 92 |
93 /* Returns 0 if ok else errno */ | |
22862 | 94 int vdlGetGrKeys(VDL_HANDLE, vidix_grkey_t * ); |
4070
b61ba6c256dd
Minor interface changes: color and video keys are moved out from playback configuring
nick
parents:
3995
diff
changeset
|
95 |
b61ba6c256dd
Minor interface changes: color and video keys are moved out from playback configuring
nick
parents:
3995
diff
changeset
|
96 /* Returns 0 if ok else errno */ |
22862 | 97 int vdlSetGrKeys(VDL_HANDLE, const vidix_grkey_t * ); |
4070
b61ba6c256dd
Minor interface changes: color and video keys are moved out from playback configuring
nick
parents:
3995
diff
changeset
|
98 |
b61ba6c256dd
Minor interface changes: color and video keys are moved out from playback configuring
nick
parents:
3995
diff
changeset
|
99 /* Returns 0 if ok else errno */ |
22862 | 100 int vdlPlaybackGetEq(VDL_HANDLE, vidix_video_eq_t * ); |
3991 | 101 |
102 /* Returns 0 if ok else errno */ | |
22862 | 103 int vdlPlaybackSetEq(VDL_HANDLE, const vidix_video_eq_t * ); |
3991 | 104 |
105 /* Returns 0 if ok else errno */ | |
22862 | 106 int vdlPlaybackGetDeint(VDL_HANDLE, vidix_deinterlace_t * ); |
4191 | 107 |
108 /* Returns 0 if ok else errno */ | |
22862 | 109 int vdlPlaybackSetDeint(VDL_HANDLE, const vidix_deinterlace_t * ); |
4191 | 110 |
111 /* Returns 0 if ok else errno */ | |
22862 | 112 int vdlQueryNumOemEffects(VDL_HANDLE, unsigned * number ); |
4191 | 113 |
114 /* Returns 0 if ok else errno */ | |
22862 | 115 int vdlGetOemEffect(VDL_HANDLE, vidix_oem_fx_t * ); |
4191 | 116 |
117 /* Returns 0 if ok else errno */ | |
22862 | 118 int vdlSetOemEffect(VDL_HANDLE, const vidix_oem_fx_t * ); |
4191 | 119 |
120 | |
121 /* Returns 0 if ok else errno */ | |
22862 | 122 int vdlPlaybackCopyFrame(VDL_HANDLE, const vidix_dma_t * ); |
3991 | 123 |
124 #ifdef __cplusplus | |
125 } | |
126 #endif | |
127 | |
128 #endif |