introduce basic player structs
[melted_gui] / src / omnplay.cpp
1 /*
2 * omnplay.c -- GTK+ 2 omnplay
3 * Copyright (C) 2011 Maksym Veremeyenko <verem@m1stereo.tv>
4 *
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2 of the License, or
8 * (at your option) any later version.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 *
15 * You should have received a copy of the GNU General Public License
16 * along with this program; if not, write to the Free Software Foundation,
17 * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18 */
19
20 #ifdef HAVE_CONFIG_H
21 # include <config.h>
22 #endif
23
24 #include <stdio.h>
25 #include <stdlib.h>
26 #include <string.h>
27 #include <gtk/gtk.h>
28 #include <gdk/gdkkeysyms.h>
29
30 #include "omnplay.h"
31 #include "ui.h"
32 #include "opts.h"
33
34 #include "omplrclnt.h"
35
36 static gboolean on_main_window_delete_event( GtkWidget *widget, GdkEvent *event, gpointer user_data )
37 {
38 gtk_exit(0);
39 return TRUE;
40 }
41
42
43 omnplay_instance_t* omnplay_create(int argc, char** argv)
44 {
45 int i, c;
46 omnplay_instance_t* app;
47
48 /* prepare application instance */
49 app = (omnplay_instance_t*)malloc(sizeof(omnplay_instance_t));
50 memset(app, 0, sizeof(omnplay_instance_t));
51
52 /* load parameters from command line */
53 if(!omnplay_opt(argc, argv, app) && app->players.count)
54 app->window = ui_omnplay(app);
55 else
56 omnplay_usage();
57
58 return app;
59 };
60
61
62 void omnplay_destroy(omnplay_instance_t* app)
63 {
64 free(app);
65 };
66
67
68 #if 0
69 static void test()
70 {
71 int r;
72 OmPlrClipInfo clip_info;
73 char clip_name[omPlrMaxClipDirLen];
74 OmPlrHandle omn;
75
76 /* open director */
77 r = OmPlrOpen
78 (
79 "omneon-1b.internal.m1stereo.tv",
80 "Play_11",
81 &omn
82 );
83
84 if(r)
85 fprintf(stderr, "ERROR: OmPlrOpen failed with 0x%.8X\n", r);
86 else
87 {
88 /* fetch all clips known in Omneon */
89 r = OmPlrClipGetFirst
90 (
91 omn,
92 clip_name, sizeof(clip_name)
93 );
94
95 if(r)
96 fprintf(stderr, "ERROR: OmPlrClipGetFirst failed with 0x%.8X\n", r);
97 else
98 {
99 fprintf(stderr, "OmPlrClipGetFirst=[%s]\n", clip_name);
100
101 clip_info.maxMsTracks = 0;
102 clip_info.size = sizeof(clip_info);
103 r = OmPlrClipGetInfo(omn, clip_name, &clip_info);
104
105 if(r)
106 fprintf(stderr, "ERROR: OmPlrClipGetInfo failed with 0x%.8X\n", r);
107 else
108 {
109 fprintf(stderr, "OmPlrClipGetInfo(%s)=firstFrame=%d, lastFrame=%d",
110 clip_name, clip_info.firstFrame, clip_info.lastFrame);
111 }
112 };
113
114
115 OmPlrClose(omn);
116 };
117 };
118 #endif
119
120 void omnplay_init(omnplay_instance_t* app)
121 {
122 gtk_signal_connect( GTK_OBJECT( app->window ), "destroy",
123 GTK_SIGNAL_FUNC(on_main_window_delete_event), app);
124 #if 0
125 test();
126 #endif
127 };
128
129 void omnplay_release(omnplay_instance_t* app)
130 {
131 };