r602: Fix baver's code... don't insert timecode when show_tc is not set
[cinelerra_cv/mob.git] / cinelerra / device1394input.h
blob1981bfd7b45b3f72ce78acb4aaf06ad2da34756f
1 #ifndef DEVICE1394INPUT_H
2 #define DEVICE1394INPUT_H
6 #ifdef HAVE_FIREWIRE
8 #include "condition.inc"
9 #include "libdv.h"
10 #include "dv1394.h"
11 #include "mutex.inc"
12 #include <libraw1394/raw1394.h>
13 #include "thread.h"
14 #include "vframe.inc"
16 // Common 1394 output for audio and video
18 // Extracts video and audio from the single DV stream
19 class Device1394Input : public Thread
21 public:
22 Device1394Input();
23 ~Device1394Input();
25 int Device1394Input::open(int port,
26 int channel,
27 int length,
28 int channels,
29 int samplerate,
30 int bits,
31 int w,
32 int h);
33 void run();
34 void increment_counter(int *counter);
35 void decrement_counter(int *counter);
37 static int dv_iso_handler(raw1394handle_t handle,
38 int channel,
39 size_t length,
40 quadlet_t *data);
41 static bus_reset_handler_t dv_reset_handler(raw1394handle_t handle,
42 unsigned int generation);
44 // Read a video frame with timed blocking
46 int read_video(VFrame *data);
49 // Read audio with timed blocking
51 int read_audio(char *data, int samples);
53 // Storage of all frames
54 char **buffer;
55 int *buffer_valid;
56 int buffer_size;
57 int total_buffers;
58 int current_inbuffer;
60 // For extracting audio
61 dv_t *decoder;
63 // Storage of audio data
64 char *audio_buffer;
65 int audio_samples;
67 // number of next video buffer to read
68 int current_outbuffer;
69 unsigned char *input_buffer;
71 Mutex *buffer_lock;
72 Condition *video_lock;
73 Condition *audio_lock;
74 int done;
76 int fd;
77 int channel;
78 int length;
79 int channels;
80 int samplerate;
81 int bits;
82 int w;
83 int h;
84 int is_pal;
91 #endif
95 #endif