Mercurial > mplayer.hg
comparison vidix/vidixlib.c @ 4191:62a6135d090e
+ new features and possibility
deinterlacing
oem effects
ITU color space
forcing driver
- audio support (develop and introduce AUDIX for that)
author | nick |
---|---|
date | Wed, 16 Jan 2002 08:33:17 +0000 |
parents | b61ba6c256dd |
children | 90386125ec1f |
comparison
equal
deleted
inserted
replaced
4190:2ed90891750e | 4191:62a6135d090e |
---|---|
40 int (*init)(void); | 40 int (*init)(void); |
41 void (*destroy)(void); | 41 void (*destroy)(void); |
42 int (*frame_sel)( unsigned frame_idx ); | 42 int (*frame_sel)( unsigned frame_idx ); |
43 int (*get_eq)( vidix_video_eq_t * ); | 43 int (*get_eq)( vidix_video_eq_t * ); |
44 int (*set_eq)( const vidix_video_eq_t * ); | 44 int (*set_eq)( const vidix_video_eq_t * ); |
45 int (*get_deint)( vidix_deinterlace_t * ); | |
46 int (*set_deint)( const vidix_deinterlace_t * ); | |
45 int (*copy_frame)( const vidix_dma_t * ); | 47 int (*copy_frame)( const vidix_dma_t * ); |
46 int (*get_gkey)( vidix_grkey_t * ); | 48 int (*get_gkey)( vidix_grkey_t * ); |
47 int (*set_gkey)( const vidix_grkey_t * ); | 49 int (*set_gkey)( const vidix_grkey_t * ); |
50 int (*get_num_fx)( unsigned * ); | |
51 int (*get_fx)( vidix_oem_fx_t * ); | |
52 int (*set_fx)( const vidix_oem_fx_t * ); | |
48 }vdl_stream_t; | 53 }vdl_stream_t; |
49 | 54 |
50 #define t_vdl(p) (((vdl_stream_t *)p)) | 55 #define t_vdl(p) (((vdl_stream_t *)p)) |
51 | 56 |
52 extern unsigned vdlGetVersion( void ) | 57 extern unsigned vdlGetVersion( void ) |
66 t_vdl(stream)->frame_sel = dlsym(t_vdl(stream)->handle,"vixPlaybackFrameSelect"); | 71 t_vdl(stream)->frame_sel = dlsym(t_vdl(stream)->handle,"vixPlaybackFrameSelect"); |
67 t_vdl(stream)->get_eq = dlsym(t_vdl(stream)->handle,"vixPlaybackGetEq"); | 72 t_vdl(stream)->get_eq = dlsym(t_vdl(stream)->handle,"vixPlaybackGetEq"); |
68 t_vdl(stream)->set_eq = dlsym(t_vdl(stream)->handle,"vixPlaybackSetEq"); | 73 t_vdl(stream)->set_eq = dlsym(t_vdl(stream)->handle,"vixPlaybackSetEq"); |
69 t_vdl(stream)->get_gkey = dlsym(t_vdl(stream)->handle,"vixGetGrKeys"); | 74 t_vdl(stream)->get_gkey = dlsym(t_vdl(stream)->handle,"vixGetGrKeys"); |
70 t_vdl(stream)->set_gkey = dlsym(t_vdl(stream)->handle,"vixSetGrKeys"); | 75 t_vdl(stream)->set_gkey = dlsym(t_vdl(stream)->handle,"vixSetGrKeys"); |
76 t_vdl(stream)->get_deint = dlsym(t_vdl(stream)->handle,"vixPlaybackGetDeint"); | |
77 t_vdl(stream)->set_deint = dlsym(t_vdl(stream)->handle,"vixPlaybackSetDeint"); | |
71 t_vdl(stream)->copy_frame = dlsym(t_vdl(stream)->handle,"vixPlaybackCopyFrame"); | 78 t_vdl(stream)->copy_frame = dlsym(t_vdl(stream)->handle,"vixPlaybackCopyFrame"); |
79 t_vdl(stream)->get_num_fx = dlsym(t_vdl(stream)->handle,"vixQueryNumOemEffects"); | |
80 t_vdl(stream)->get_fx = dlsym(t_vdl(stream)->handle,"vixGetOemEffect"); | |
81 t_vdl(stream)->set_fx = dlsym(t_vdl(stream)->handle,"vixSetOemEffect"); | |
72 /* check driver viability */ | 82 /* check driver viability */ |
73 if(!( t_vdl(stream)->get_caps && t_vdl(stream)->query_fourcc && | 83 if(!( t_vdl(stream)->get_caps && t_vdl(stream)->query_fourcc && |
74 t_vdl(stream)->config_playback && t_vdl(stream)->playback_on && | 84 t_vdl(stream)->config_playback && t_vdl(stream)->playback_on && |
75 t_vdl(stream)->playback_off)) | 85 t_vdl(stream)->playback_off)) |
76 { | 86 { |
77 printf("vidixlib: some features are missed in driver\n"); | 87 printf("vidixlib: Incomplete driver: some features are missed in it.\n"); |
78 return 0; | 88 return 0; |
79 } | 89 } |
80 return 1; | 90 return 1; |
81 } | 91 } |
82 | 92 |
83 static int vdl_probe_driver(VDL_HANDLE stream,const char *path,const char *name,unsigned cap,int verbose) | 93 static int vdl_probe_driver(VDL_HANDLE stream,const char *path,const char *name,unsigned cap,int verbose) |
84 { | 94 { |
85 vidix_capability_t vid_cap; | 95 vidix_capability_t vid_cap; |
86 unsigned (*_ver)(void); | 96 unsigned (*_ver)(void); |
87 int (*_probe)(int); | 97 int (*_probe)(int,int); |
88 int (*_cap)(vidix_capability_t*); | 98 int (*_cap)(vidix_capability_t*); |
89 strcpy(drv_name,path); | 99 strcpy(drv_name,path); |
90 strcat(drv_name,name); | 100 strcat(drv_name,name); |
91 if(verbose) printf("vidixlib: PROBING: %s\n",drv_name); | 101 if(verbose) printf("vidixlib: PROBING: %s\n",drv_name); |
92 if(!(t_vdl(stream)->handle = dlopen(drv_name,RTLD_LAZY|RTLD_GLOBAL))) | 102 if(!(t_vdl(stream)->handle = dlopen(drv_name,RTLD_LAZY|RTLD_GLOBAL))) |
112 { | 122 { |
113 fatal_err: | 123 fatal_err: |
114 if(verbose) printf("vidixlib: %s has no function definition\n",drv_name); | 124 if(verbose) printf("vidixlib: %s has no function definition\n",drv_name); |
115 goto err; | 125 goto err; |
116 } | 126 } |
117 if(_probe) { if((*_probe)(verbose) != 0) goto err; } | 127 if(_probe) { if((*_probe)(verbose,PROBE_NORMAL) != 0) goto err; } |
118 else goto fatal_err; | 128 else goto fatal_err; |
119 if(_cap) { if((*_cap)(&vid_cap) != 0) goto err; } | 129 if(_cap) { if((*_cap)(&vid_cap) != 0) goto err; } |
120 else goto fatal_err; | 130 else goto fatal_err; |
121 if((vid_cap.type & cap) != cap) | 131 if((vid_cap.type & cap) != cap) |
122 { | 132 { |
154 if(!(stream = malloc(sizeof(vdl_stream_t)))) return NULL; | 164 if(!(stream = malloc(sizeof(vdl_stream_t)))) return NULL; |
155 memset(stream,0,sizeof(vdl_stream_t)); | 165 memset(stream,0,sizeof(vdl_stream_t)); |
156 if(name) | 166 if(name) |
157 { | 167 { |
158 unsigned (*ver)(void); | 168 unsigned (*ver)(void); |
159 int (*probe)(int); | 169 int (*probe)(int,int); |
160 unsigned version = 0; | 170 unsigned version = 0; |
161 strcpy(drv_name,path); | 171 strcpy(drv_name,path); |
162 strcat(drv_name,name); | 172 strcat(drv_name,name); |
163 if(!(t_vdl(stream)->handle = dlopen(drv_name,RTLD_NOW|RTLD_GLOBAL))) | 173 if(!(t_vdl(stream)->handle = dlopen(drv_name,RTLD_NOW|RTLD_GLOBAL))) |
164 { | 174 { |
173 drv_err: | 183 drv_err: |
174 if(t_vdl(stream)->handle) dlclose(t_vdl(stream)->handle); | 184 if(t_vdl(stream)->handle) dlclose(t_vdl(stream)->handle); |
175 goto err; | 185 goto err; |
176 } | 186 } |
177 probe = dlsym(t_vdl(stream)->handle,"vixProbe"); | 187 probe = dlsym(t_vdl(stream)->handle,"vixProbe"); |
178 if(probe) { if((*probe)(verbose)!=0) goto drv_err; } | 188 if(probe) { if((*probe)(verbose,PROBE_FORCE)!=0) goto drv_err; } |
179 else goto drv_err; | 189 else goto drv_err; |
180 fill: | 190 fill: |
181 if(!vdl_fill_driver(stream)) goto drv_err; | 191 if(!vdl_fill_driver(stream)) goto drv_err; |
182 goto ok; | 192 goto ok; |
183 } | 193 } |
262 | 272 |
263 int vdlSetGrKeys(VDL_HANDLE handle, const vidix_grkey_t * k) | 273 int vdlSetGrKeys(VDL_HANDLE handle, const vidix_grkey_t * k) |
264 { | 274 { |
265 return t_vdl(handle)->set_gkey ? t_vdl(handle)->set_gkey(k) : ENOSYS; | 275 return t_vdl(handle)->set_gkey ? t_vdl(handle)->set_gkey(k) : ENOSYS; |
266 } | 276 } |
277 | |
278 int vdlPlaybackGetDeint(VDL_HANDLE handle, vidix_deinterlace_t * d) | |
279 { | |
280 return t_vdl(handle)->get_deint ? t_vdl(handle)->get_deint(d) : ENOSYS; | |
281 } | |
282 | |
283 int vdlPlaybackSetDeint(VDL_HANDLE handle, const vidix_deinterlace_t * d) | |
284 { | |
285 return t_vdl(handle)->set_deint ? t_vdl(handle)->set_deint(d) : ENOSYS; | |
286 } | |
287 | |
288 int vdlQueryNumOemEffects(VDL_HANDLE handle, unsigned * number ) | |
289 { | |
290 return t_vdl(handle)->get_num_fx ? t_vdl(handle)->get_num_fx(number) : ENOSYS; | |
291 } | |
292 | |
293 int vdlGetOemEffect(VDL_HANDLE handle, vidix_oem_fx_t * f) | |
294 { | |
295 return t_vdl(handle)->get_fx ? t_vdl(handle)->get_fx(f) : ENOSYS; | |
296 } | |
297 | |
298 int vdlSetOemEffect(VDL_HANDLE handle, const vidix_oem_fx_t * f) | |
299 { | |
300 return t_vdl(handle)->set_fx ? t_vdl(handle)->set_fx(f) : ENOSYS; | |
301 } |