sinek/src sinek.c,1.8,1.9
[email protected] Wed, 15 Jan 2003 00:09:01 -0800
| Newsgroups | gmane.comp.video.sinek.cvs |
|---|---|
| Message-ID | <[email protected]> |
Update of /cvsroot/sinek/sinek/src
In directory sc8-pr-cvs1:/tmp/cvs-serv17019
Modified Files:
sinek.c
Log Message:
remove a buncha stuff not needed anymore
Index: sinek.c
===================================================================
RCS file: /cvsroot/sinek/sinek/src/sinek.c,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -d -r1.8 -r1.9
--- sinek.c 3 Jan 2003 09:42:20 -0000 1.8
+++ sinek.c 15 Jan 2003 08:08:59 -0000 1.9
@@ -9,94 +9,48 @@
*/
#include "common.h"
+#include "gtkxine.h"
-#include <X11/Xlib.h>
-#include <X11/Xutil.h>
-#include <X11/cursorfont.h>
-#include <X11/extensions/XShm.h>
-#include <X11/Xatom.h>
-#include <xine.h>
-
-#ifndef XShmGetEventBase
-extern int XShmGetEventBase(Display *);
-#endif
-
-static int MyShmEvent = -1;
-
-static void frame_output_cb(void *this, int vid_w, int vid_h, double vid_pix_aspect, int *dest_x, int *dest_y, int *dest_w, int *dest_h, double *dest_pix_aspect, int *win_x, int *win_y);
-static void dest_size_cb(void *this, int vid_w, int vid_h, double vid_pix_aspect, int *dest_w, int *dest_h, double *dest_pix_aspect);
extern int translate_point(int x, int y, int *vid_x, int *vid_y);
-
-sinek_type *sinek_new(void)
-{
- sinek_type *s;
- const gchar *home;
- gchar *tmp;
-
- s = malloc(sizeof(sinek_type));
- memset(s, 0, sizeof(sinek_type));
- s->xine = xine_new();
-
- home = g_get_home_dir();
- tmp = g_strconcat(home, "/.xine/config", NULL);
- xine_config_load(s->xine, tmp);
- g_free(tmp);
-
- return s;
-}
-
-
-void sinek_delete(sinek_type *s)
-{
- if(s->xine) xine_exit(s->xine);
- free(s);
-}
-
-
-int sinek_audio_set_output(sinek_type *s)
+GtkWidget *sinek_init(void)
{
- const char *id;
- const char *const *driver_ids;
- xine_cfg_entry_t entry;
+ GtkWidget *videowin, *videoframe;
+ GtkXine *xine;
+ const char *audio, *video;
+ char *conf;
+
+ sinek.mrl = NULL;
- driver_ids = xine_list_audio_output_plugins(s->xine);
- id = xine_config_register_string(s->xine, "audio.driver", "auto", "audio driver to use", NULL, 0, NULL, NULL);
- if(sinek.audio_id) id = sinek.audio_id;
+ xine = GTK_XINE(gtk_xine_new());
+ conf = g_build_filename(g_get_home_dir(), ".xine", "config", NULL);
+ gtk_xine_config_load(xine, conf);
+ g_free(conf);
- /* try user preferred driver */
- if(strncmp(id, "auto", 4) != 0 && strncmp(id, "null", 4) != 0)
- s->ad = xine_open_audio_driver(s->xine, id, NULL);
- /* if that fails or user choosed auto, try any available driver */
- if(!s->ad && strncmp(id, "null", 4) != 0)
- {
- int i = 0;
- while(driver_ids[i])
- {
- s->ad = xine_open_audio_driver(s->xine, driver_ids[i], NULL);
- if(s->ad) break;
- i++;
- }
- }
+ /* audio stuff */
+ audio = gtk_xine_config_register_string(xine, "audio.driver", "auto");
+ audio = gtk_xine_set_audio_driver(xine, audio);
+ gtk_xine_config_set(xine, "audio.driver", audio);
- /* if that fails too or user choosed null, disable audio */
- if(!s->ad) id = "null";
+ /* video stuff */
+ videoframe = gtk_window_new(GTK_WINDOW_TOPLEVEL);
+ gtk_window_set_title(GTK_WINDOW(videoframe), "Sinek Video Output");
+ videowin = gtk_drawing_area_new();
+ gtk_container_add(GTK_CONTAINER(videoframe), videowin);
+ sinek.videowin = videoframe;
- xine_config_lookup_entry(s->xine, "audio.driver", &entry);
- entry.str_value = (char *) id;
- xine_config_update_entry(s->xine, &entry);
+ video = gtk_xine_config_register_string(xine, "video.driver", "auto");
+ video = gtk_xine_set_video_driver(xine, video, videowin);
+ gtk_xine_config_set(xine, "video.driver", video);
- sinek.stream = xine_stream_new(s->xine, s->ad, s->vd);
- if(!s->xine)
- {
- printf(_("xine init error\n"));
- return 0;
- }
+ /* post audio/video init stuff */
+ gtk_xine_load(xine, NULL);
+ gtk_xine_set_audio_channel(xine, sinek.audio_channel);
+ gtk_xine_set_spu_channel(xine, sinek.spu_channel);
- return 1;
+ return GTK_WIDGET(xine);
}
-
void sinek_video_event(sinek_type *s, void *event)
{
XEvent *ev = (XEvent *)event;
@@ -146,134 +100,4 @@
}
if(ev->type == MyShmEvent)
xine_gui_send_vo_data(sinek.stream, XINE_GUI_SEND_COMPLETION_EVENT, (void *) ev);
-}
-
-
-int sinek_video_set_output(sinek_type *s, void *display_info)
-{
- sinek_x11_type *di = (sinek_x11_type *)display_info;
- const char *id;
- const char *const *driver_ids;
- double res_h, res_v;
- x11_visual_t vis;
- xine_cfg_entry_t entry;
-
- s->display_info = di;
-
- if(XShmQueryExtension(di->display) == True)
- MyShmEvent = XShmGetEventBase(di->display) + ShmCompletion;
-
- vis.display = di->display;
- vis.screen = di->screen;
- vis.d = di->drawable;
- res_h = (DisplayWidth(vis.display, vis.screen)*1000 / DisplayWidthMM(vis.display, vis.screen));
- res_v = (DisplayHeight(vis.display, vis.screen)*1000 / DisplayHeightMM(vis.display, vis.screen));
- sinek.display_ratio = res_h / res_v;
- vis.frame_output_cb = frame_output_cb;
- vis.dest_size_cb = dest_size_cb;
- vis.user_data = (void *)s;
- if(fabs(sinek.display_ratio - 1.0) < 0.01) sinek.display_ratio = 1.0;
-
- driver_ids = xine_list_video_output_plugins(s->xine);
- id = xine_config_register_string(s->xine, "video.driver", "auto", "video driver to use", NULL, 0, NULL, NULL);
- if(sinek.video_id) id = sinek.video_id;
-
- /* try user preferred driver */
- if(strncmp(id, "auto", 4) != 0)
- s->vd = xine_open_video_driver(s->xine, id, XINE_VISUAL_TYPE_X11, (void *) &vis);
- /* if that fails or user choosed auto, try any available driver */
- if(!s->vd)
- {
- int i = 0;
- while(driver_ids[i])
- {
- s->vd = xine_open_video_driver(s->xine, driver_ids[i], XINE_VISUAL_TYPE_X11, (void *) &vis);
- if(s->vd) break;
- i++;
- }
- }
- /* if that fails too, exit with an error */
- if(!s->vd)
- {
- printf(_("Cannot load video driver.\n"));
- return 0;
- }
-
- xine_config_lookup_entry(s->xine, "video.driver", &entry);
- entry.str_value = (char *) id;
- xine_config_update_entry(s->xine, &entry);
-
- return 1;
-}
-
-
-static void frame_output_cb(void *this, int vid_w, int vid_h, double vid_pix_aspect, int *dest_x, int *dest_y, int *dest_w, int *dest_h, double *dest_pix_aspect, int *win_x, int *win_y)
-{
- sinek_x11_type *di = ((sinek_type *)this)->display_info;
-
- di->frame_w = vid_w;
- di->frame_h = vid_h;
-
- if(di->frame_out_cb)
- {
- di->frame_out_cb(di->user_data, di);
- }
- else
- {
- di->out_x = 0;
- di->out_y = 0;
- di->out_w = di->win_w;
- di->out_h = di->win_h;
- }
-
- *win_x = di->win_x;
- *win_y = di->win_y;
- *dest_x = di->out_x;
- *dest_y = di->out_y;
- *dest_w = di->out_w;
- *dest_h = di->out_h;
-}
-
-
-static void dest_size_cb(void *this, int vid_w, int vid_h, double vid_pix_aspect, int *dest_w, int *dest_h, double *dest_pix_aspect)
-{
- sinek_type *s = (sinek_type *)this;
-
- *dest_w = s->display_info->out_w;
- *dest_h = s->display_info->out_h;
-}
-
-
-int sinek_open(sinek_type *s, const char *mrl)
-{
- if(s->mrl) free(s->mrl);
- s->mrl = strdup(mrl);
- xine_open(sinek.stream, s->mrl);
- return xine_play(sinek.stream, 0, 0);
-}
-
-
-void sinek_play(sinek_type *s)
-{
- if(!s->mrl) return;
-
- if(xine_get_status(sinek.stream) != XINE_STATUS_PLAY) {
- xine_open(sinek.stream, s->mrl);
- xine_play(sinek.stream, 0, 0);
- }
- else
- xine_set_param(sinek.stream, XINE_PARAM_SPEED, XINE_SPEED_NORMAL);
-}
-
-
-void sinek_seek(sinek_type *s, unsigned long secs)
-{
- if (s->mrl && xine_get_stream_info(sinek.stream, XINE_STREAM_INFO_SEEKABLE))
- xine_play(sinek.stream, 0, secs);
-}
-
-
-void sinek_stop(sinek_type *s)
-{
- xine_stop(sinek.stream);
}
-------------------------------------------------------
This SF.NET email is sponsored by: Take your first step towards giving
your online business a competitive advantage. Test-drive a Thawte SSL
certificate - our easy online guide will show you how. Click here to get
started: http://ads.sourceforge.net/cgi-bin/redirect.pl?thaw0027en