54338182babc10dbe8856186eeb4aafe15f6402e
[melted] / src / miracle / miracle_unit.h
1 /*
2 * dvunit.h -- DV Transmission Unit Header
3 * Copyright (C) 2002-2003 Ushodaya Enterprises Limited
4 * Author: Dan Dennedy <dan@dennedy.org>
5 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2 of the License, or
9 * (at your option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with this program; if not, write to the Free Software Foundation,
18 * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
19 */
20
21 #ifndef _DV_UNIT_H_
22 #define _DV_UNIT_H_
23
24 #include <pthread.h>
25 #include <libraw1394/raw1394.h>
26
27 #include <dv1394notifier.h>
28 #include <dv1394status.h>
29 #include <dvpump.h>
30 #include <dvplayer.h>
31 #include <dvinput.h>
32 #include <dverror.h>
33
34 #ifdef __cplusplus
35 extern "C"
36 {
37 #endif
38
39 typedef struct
40 {
41 int unit;
42 dv_pump pump;
43 dv_player player;
44 dv_input in;
45 int dv1394_fd;
46 int is_terminated;
47 int is_suspended;
48 pthread_t out;
49 int channel;
50 nodeid_t node_id;
51 octlet_t guid;
52 raw1394handle_t raw1394;
53 int allow_stdin;
54 int buffer_size;
55 int online;
56 dv1394_notifier notifier;
57 char *root_dir;
58 unsigned int dv1394_syt_offset;
59 unsigned int dv1394_cip_n;
60 unsigned int dv1394_cip_d;
61 unsigned int n_frames;
62 unsigned int n_fill;
63 uint8_t *mmap;
64 int mmap_pos;
65 int mmap_length;
66 } dv_unit_t, *dv_unit;
67
68 extern dv_unit dv_unit_init( octlet_t guid, int channel );
69 extern void dv_unit_allow_stdin( dv_unit unit, int flag );
70 extern void dv_unit_set_buffer_size( dv_unit unit, int size );
71 extern int dv_unit_get_buffer_size( dv_unit unit );
72 extern void dv_unit_set_n_frames( dv_unit unit, int size );
73 extern int dv_unit_get_n_frames( dv_unit unit );
74 extern void dv_unit_set_n_fill( dv_unit unit, int size );
75 extern int dv_unit_get_n_fill( dv_unit unit );
76 extern dv_error_code dv_unit_load( dv_unit unit, const char *clip, long in, long out, int flush );
77 extern dv_error_code dv_unit_insert( dv_unit unit, const char *clip, int index, long in, long out );
78 extern dv_error_code dv_unit_append( dv_unit unit, const char *clip, long in, long out );
79 extern dv_error_code dv_unit_remove( dv_unit unit, int index );
80 extern dv_error_code dv_unit_clean( dv_unit unit );
81 extern dv_error_code dv_unit_move( dv_unit unit, int src, int dest );
82 extern int dv_unit_transfer( dv_unit dest_unit, dv_unit src_unit );
83 extern void dv_unit_play( dv_unit_t *unit, int speed );
84 extern void dv_unit_terminate( dv_unit );
85 extern int dv_unit_has_terminated( dv_unit );
86 extern octlet_t dv_unit_get_guid( dv_unit unit );
87 extern int dv_unit_get_nodeid( dv_unit unit );
88 extern int dv_unit_get_channel( dv_unit unit );
89 extern int dv_unit_online( dv_unit unit );
90 extern void dv_unit_offline( dv_unit unit );
91 extern int dv_unit_is_offline( dv_unit unit );
92 extern void dv_unit_set_notifier( dv_unit, dv1394_notifier, char * );
93 extern int dv_unit_get_status( dv_unit, dv1394_status );
94 extern void dv_unit_change_position( dv_unit, int, long position );
95 extern void dv_unit_change_speed( dv_unit unit, int speed );
96 extern int dv_unit_set_clip_in( dv_unit unit, int index, long position );
97 extern int dv_unit_set_clip_out( dv_unit unit, int index, long position );
98 extern void dv_unit_set_mode( dv_unit unit, dv_player_clip_mode mode );
99 extern dv_player_clip_mode dv_unit_get_mode( dv_unit unit );
100 extern void dv_unit_set_eof_action( dv_unit unit, dv_player_eof_action mode );
101 extern dv_player_eof_action dv_unit_get_eof_action( dv_unit unit );
102 extern void dv_unit_step( dv_unit unit, int offset );
103 extern void dv_unit_close( dv_unit unit );
104 extern int dv_unit_get_port( dv_unit unit );
105 extern void dv_unit_set_dv1394_fd( dv_unit unit, int fd );
106 extern unsigned int dv_unit_get_syt_offset( dv_unit unit );
107 extern unsigned int dv_unit_get_cip_n( dv_unit unit );
108 extern unsigned int dv_unit_get_cip_d( dv_unit unit );
109 extern void dv_unit_set_syt_offset( dv_unit unit, unsigned int );
110 extern void dv_unit_set_cip_n( dv_unit unit, unsigned int );
111 extern void dv_unit_set_cip_d( dv_unit unit, unsigned int );
112 extern void dv_unit_suspend( dv_unit );
113 extern void dv_unit_restore( dv_unit );
114 extern dv_player dv_unit_get_dv_player( dv_unit );
115 extern int dv_unit_get_current_clip( dv_unit );
116
117
118 #ifdef __cplusplus
119 }
120 #endif
121
122 #endif